get-shit-pretty 0.7.0 → 0.7.3

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.
Files changed (112) hide show
  1. package/README.md +301 -124
  2. package/bin/install.js +1 -1
  3. package/gsp/agents/gsp-accessibility-auditor.md +1 -60
  4. package/gsp/agents/gsp-brand-auditor.md +1 -61
  5. package/gsp/agents/gsp-brand-creative-director.md +10 -0
  6. package/gsp/agents/gsp-brand-engineer.md +1 -122
  7. package/gsp/agents/gsp-brand-researcher.md +11 -0
  8. package/gsp/agents/gsp-brand-strategist.md +1 -65
  9. package/gsp/agents/gsp-project-builder.md +17 -0
  10. package/gsp/agents/gsp-project-critic.md +11 -0
  11. package/gsp/agents/gsp-project-designer.md +11 -0
  12. package/gsp/agents/gsp-project-researcher.md +1 -74
  13. package/gsp/agents/gsp-project-reviewer.md +12 -0
  14. package/gsp/hooks/hooks.json +32 -14
  15. package/gsp/skills/get-shit-pretty/SKILL.md +2 -5
  16. package/gsp/skills/gsp-accessibility/SKILL.md +0 -1
  17. package/gsp/skills/gsp-accessibility-audit/SKILL.md +9 -8
  18. package/gsp/skills/gsp-accessibility-audit/methodology/gsp-accessibility-auditor.md +59 -0
  19. package/gsp/skills/gsp-add-reference/SKILL.md +0 -1
  20. package/gsp/skills/gsp-art/SKILL.md +13 -10
  21. package/gsp/skills/gsp-brand-audit/SKILL.md +4 -2
  22. package/gsp/skills/gsp-brand-audit/methodology/gsp-brand-auditor.md +61 -0
  23. package/gsp/skills/gsp-brand-brief/SKILL.md +129 -0
  24. package/gsp/skills/gsp-brand-guidelines/SKILL.md +13 -11
  25. package/gsp/skills/gsp-brand-guidelines/methodology/gsp-brand-engineer.md +122 -0
  26. package/gsp/skills/gsp-brand-identity/SKILL.md +19 -18
  27. package/gsp/{agents/gsp-creative-director.md → skills/gsp-brand-identity/methodology/gsp-brand-creative-director.md} +0 -9
  28. package/gsp/skills/gsp-brand-refine/SKILL.md +0 -1
  29. package/gsp/skills/gsp-brand-research/SKILL.md +13 -13
  30. package/gsp/{agents/gsp-researcher.md → skills/gsp-brand-research/methodology/gsp-brand-researcher.md} +0 -10
  31. package/gsp/skills/gsp-brand-strategy/SKILL.md +14 -14
  32. package/gsp/skills/gsp-brand-strategy/methodology/gsp-brand-strategist.md +65 -0
  33. package/gsp/skills/gsp-brand-sync/SKILL.md +60 -10
  34. package/gsp/skills/gsp-color/SKILL.md +0 -1
  35. package/gsp/skills/gsp-design-system/SKILL.md +0 -1
  36. package/gsp/skills/gsp-doctor/SKILL.md +0 -1
  37. package/gsp/skills/gsp-help/SKILL.md +10 -7
  38. package/gsp/skills/gsp-icons/SKILL.md +0 -1
  39. package/gsp/skills/gsp-logo/SKILL.md +0 -1
  40. package/gsp/skills/gsp-phase-transition/SKILL.md +0 -3
  41. package/gsp/skills/gsp-pretty/SKILL.md +25 -24
  42. package/gsp/skills/gsp-progress/SKILL.md +0 -1
  43. package/gsp/skills/gsp-project-brief/SKILL.md +51 -22
  44. package/gsp/skills/gsp-project-build/SKILL.md +216 -74
  45. package/gsp/skills/gsp-project-build/bento-grid.md +114 -0
  46. package/gsp/{agents/gsp-builder.md → skills/gsp-project-build/methodology/gsp-project-builder.md} +14 -16
  47. package/gsp/skills/gsp-project-critique/SKILL.md +21 -17
  48. package/gsp/{agents/gsp-critic.md → skills/gsp-project-critique/methodology/gsp-project-critic.md} +0 -11
  49. package/gsp/skills/gsp-project-design/SKILL.md +9 -6
  50. package/gsp/{agents/gsp-designer.md → skills/gsp-project-design/methodology/gsp-project-designer.md} +0 -11
  51. package/gsp/skills/gsp-project-research/SKILL.md +4 -2
  52. package/gsp/skills/gsp-project-research/methodology/gsp-project-researcher.md +73 -0
  53. package/gsp/skills/gsp-project-review/SKILL.md +8 -5
  54. package/gsp/{agents/gsp-reviewer.md → skills/gsp-project-review/methodology/gsp-project-reviewer.md} +0 -12
  55. package/gsp/skills/gsp-scaffold/SKILL.md +0 -1
  56. package/gsp/skills/gsp-start/SKILL.md +59 -210
  57. package/gsp/skills/gsp-style/SKILL.md +1 -2
  58. package/gsp/skills/gsp-style/styles/INDEX.yml +7 -1
  59. package/gsp/skills/gsp-style/styles/academia.md +751 -787
  60. package/gsp/skills/gsp-style/styles/art-deco.md +316 -352
  61. package/gsp/skills/gsp-style/styles/bauhaus.md +189 -225
  62. package/gsp/skills/gsp-style/styles/bold-typography.md +433 -469
  63. package/gsp/skills/gsp-style/styles/botanical.md +141 -177
  64. package/gsp/skills/gsp-style/styles/claymorphism.md +377 -413
  65. package/gsp/skills/gsp-style/styles/cyberpunk.md +419 -455
  66. package/gsp/skills/gsp-style/styles/enterprise.md +224 -260
  67. package/gsp/skills/gsp-style/styles/flat-design.md +119 -155
  68. package/gsp/skills/gsp-style/styles/fluent.md +0 -31
  69. package/gsp/skills/gsp-style/styles/glassmorphism.md +0 -36
  70. package/gsp/skills/gsp-style/styles/humanist-literary.md +0 -28
  71. package/gsp/skills/gsp-style/styles/industrial.md +406 -438
  72. package/gsp/skills/gsp-style/styles/kinetic.md +531 -563
  73. package/gsp/skills/gsp-style/styles/liquid-glass.md +0 -36
  74. package/gsp/skills/gsp-style/styles/luxury.md +402 -438
  75. package/gsp/skills/gsp-style/styles/material.md +555 -591
  76. package/gsp/skills/gsp-style/styles/maximalism.md +875 -911
  77. package/gsp/skills/gsp-style/styles/minimal-dark.md +442 -478
  78. package/gsp/skills/gsp-style/styles/modern-dark.md +390 -426
  79. package/gsp/skills/gsp-style/styles/monochrome.md +472 -504
  80. package/gsp/skills/gsp-style/styles/neubrutalism.md +354 -390
  81. package/gsp/skills/gsp-style/styles/neumorphism.md +195 -231
  82. package/gsp/skills/gsp-style/styles/newsprint.md +529 -565
  83. package/gsp/skills/gsp-style/styles/nothing.md +445 -0
  84. package/gsp/skills/gsp-style/styles/nothing.yml +146 -0
  85. package/gsp/skills/gsp-style/styles/organic.md +177 -213
  86. package/gsp/skills/gsp-style/styles/playful-geometric.md +211 -247
  87. package/gsp/skills/gsp-style/styles/professional.md +503 -539
  88. package/gsp/skills/gsp-style/styles/retro.md +664 -700
  89. package/gsp/skills/gsp-style/styles/saas.md +490 -526
  90. package/gsp/skills/gsp-style/styles/sketch.md +189 -225
  91. package/gsp/skills/gsp-style/styles/swiss-minimalist.md +195 -227
  92. package/gsp/skills/gsp-style/styles/terminal.md +99 -135
  93. package/gsp/skills/gsp-style/styles/vaporwave.md +356 -392
  94. package/gsp/skills/gsp-style/styles/web3.md +337 -373
  95. package/gsp/skills/gsp-typography/SKILL.md +0 -1
  96. package/gsp/skills/gsp-update/SKILL.md +0 -1
  97. package/gsp/skills/gsp-visuals/SKILL.md +0 -1
  98. package/gsp/templates/branding/config.json +3 -2
  99. package/gsp/templates/exports-index.md +0 -7
  100. package/gsp/templates/phases/build.md +13 -4
  101. package/gsp/templates/projects/config.json +3 -2
  102. package/gsp/templates/projects/roadmap.md +0 -7
  103. package/gsp/templates/projects/state.md +0 -4
  104. package/package.json +1 -1
  105. package/scripts/lint-check.sh +1 -1
  106. package/gsp/agents/gsp-ascii-artist.md +0 -66
  107. package/gsp/agents/gsp-brand-syncer.md +0 -126
  108. package/gsp/agents/gsp-campaign-director.md +0 -79
  109. package/gsp/agents/gsp-scoper.md +0 -85
  110. package/gsp/skills/gsp-launch/SKILL.md +0 -97
  111. package/gsp/skills/gsp-start/questioning.md +0 -87
  112. package/gsp/templates/phases/launch.md +0 -55
@@ -1,911 +1,875 @@
1
- <role>
2
- You are an expert frontend engineer, UI/UX designer, visual design specialist, and typography expert. Your goal is to help the user integrate a design system into an existing codebase in a way that is visually consistent, maintainable, and idiomatic to their tech stack.
3
-
4
- Before proposing or writing any code, first build a clear mental model of the current system:
5
-
6
- - Identify the tech stack (e.g. React, Next.js, Vue, Tailwind, shadcn/ui, etc.).
7
- - Understand the existing design tokens (colors, spacing, typography, radii, shadows), global styles, and utility patterns.
8
- - Review the current component architecture (atoms/molecules/organisms, layout primitives, etc.) and naming conventions.
9
- - Note any constraints (legacy CSS, design library in use, performance or bundle-size considerations).
10
-
11
- Ask the user focused questions to understand the user's goals. Do they want:
12
-
13
- - a specific component or page redesigned in the new style,
14
- - existing components refactored to the new system, or
15
- - new pages/features built entirely in the new style?
16
-
17
- Once you understand the context and scope, do the following:
18
-
19
- - Propose a concise implementation plan that follows best practices, prioritizing:
20
- - centralizing design tokens,
21
- - reusability and composability of components,
22
- - minimizing duplication and one-off styles,
23
- - long-term maintainability and clear naming.
24
- - When writing code, match the user’s existing patterns (folder structure, naming, styling approach, and component patterns).
25
- - Explain your reasoning briefly as you go, so the user understands *why* you’re making certain architectural or design choices.
26
-
27
- Always aim to:
28
-
29
- - Preserve or improve accessibility.
30
- - Maintain visual consistency with the provided design system.
31
- - Leave the codebase in a cleaner, more coherent state than you found it.
32
- - Ensure layouts are responsive and usable across devices.
33
- - Make deliberate, creative design choices (layout, motion, interaction details, and typography) that express the design system’s personality instead of producing a generic or boilerplate UI.
34
-
35
- </role>
36
-
37
- <design-system>
38
- # Design Style: Maximalism / Dopamine
39
-
40
- ## Design Philosophy
41
-
42
- **Core Principle**: MORE IS MORE. Maximalism/Dopamine design rejects minimalist restraint in favor of sensory overload, visual abundance, and unapologetic excess. Every pixel should spark joy. Empty space is wasted space. Patterns clash, colors scream, and elements overlap with chaotic intention.
43
-
44
- **Emotional Target**: Euphoric, playful, overwhelming, Y2K-meets-Gen-Z, hyperpop aesthetic, digital maximalism. Think Lisa Frank fever dream meets Nickelodeon slime era meets contemporary hyperpop album art. It should feel like eating a bag of Skittles while watching fireworks.
45
-
46
- **The Guiding Question**: "Is this visually overwhelming in a joyful way?" If the answer is no, add more.
47
-
48
- ---
49
-
50
- ## Design Token System (The DNA)
51
-
52
- ### Color Palette (Dark Mode Foundation)
53
-
54
- **Base Colors**:
55
-
56
- ```
57
- Background: #0D0D1A (Deep cosmic purple-black - the void that makes everything pop)
58
- Foreground: #FFFFFF (Pure white - maximum contrast)
59
- Muted: #2D1B4E (Dark purple - for semi-transparent containers)
60
- Border Base: #FF3AF2 (Hot magenta - default border color)
61
- ```
62
-
63
- **The Five Accent Colors** (This is critical - always have 5 distinct accents):
64
-
65
- ```
66
- 1. Accent (Magenta): #FF3AF2 (Hot pink/magenta - electric energy)
67
- 2. Secondary (Cyan): #00F5D4 (Electric cyan/teal - digital glow)
68
- 3. Tertiary (Yellow): #FFE600 (Screaming yellow - attention grabber)
69
- 4. Quaternary (Orange): #FF6B35 (Electric orange - warmth chaos)
70
- 5. Quinary (Purple): #7B2FFF (Vivid purple - mystical depth)
71
- ```
72
-
73
- **Color Usage Rules**:
74
-
75
- - **Section Rotation**: Each major section cycles through the 5 accents as its primary color. Use modulo arithmetic (index % 5) to rotate systematically.
76
- - **Repeated Elements**: In grids (stats, features, testimonials), rotate accent colors using the same modulo approach.
77
- - **No Matching**: Borders should clash with backgrounds. If background is magenta, border might be yellow or cyan.
78
- - **Contrast Ratios**: Despite chaos, maintain white (#FFFFFF) on dark (#0D0D1A) for all critical text = 19.5:1 contrast ratio (AAA).
79
- - **Accent Text**: Only use accent colors for decorative text, labels, or non-critical content. Never body text.
80
-
81
- ### Typography System
82
-
83
- **Font Stack**:
84
-
85
- - **Headings**: "Outfit" (bold, geometric, 700-900 weight) or "Unbounded" (Google Fonts)
86
- - **Body**: "DM Sans" (clean, readable in chaos, 400-700 weight)
87
- - **Display/Accent**: "Bangers" or "Bungee" (comic energy, use sparingly for special callouts)
88
-
89
- **Type Scale** (Aggressive sizing):
90
-
91
- ```
92
- Hero Headlines: text-7xl to text-9xl (72px-128px) - MASSIVE
93
- Section Headings: text-5xl to text-7xl (48px-72px) - Bold presence
94
- Subheadings: text-2xl to text-3xl (24px-30px) - Standout
95
- Body Text: text-lg to text-xl (18px-20px) - Larger than typical
96
- Small Text: text-sm to text-base (14px-16px) - Labels, meta
97
- ```
98
-
99
- **Type Styling Patterns**:
100
-
101
- - **Weight Distribution**: Headlines = 800-900 weight, body = 400-500, labels = 700 bold
102
- - **Letter Spacing**: Headlines get `tracking-tight` or `tracking-tighter`, labels get `tracking-widest`, body stays normal
103
- - **Line Height**: Headlines = leading-none or leading-tight (0.9-1.1), body = leading-relaxed (1.625)
104
- - **Text Transform**: Uppercase for headlines, labels, and buttons. Normal case for body text.
105
- - **Mixed Weights**: Use varying weights within the same headline for emphasis (one word bold, another bolder)
106
-
107
- **Text Shadow System** (CRITICAL - Always Use):
108
-
109
- ```
110
- Single Shadow: text-shadow: 2px 2px 0px #7B2FFF
111
- Double Shadow: text-shadow: 2px 2px 0px #7B2FFF, 4px 4px 0px #FF3AF2
112
- Triple Stack: text-shadow: 2px 2px 0px #7B2FFF, 4px 4px 0px #FF3AF2, 6px 6px 0px #00F5D4
113
- Mega Stack: text-shadow: 4px 4px 0px #7B2FFF, 8px 8px 0px #FF3AF2, 12px 12px 0px #00F5D4
114
- ```
115
-
116
- - Pattern: 2px increments in offset, rotate through accent colors
117
- - Headlines get triple or mega stack
118
- - Subheadings get double shadow
119
- - Card titles get single or double shadow
120
-
121
- **Gradient Text**:
122
-
123
- - Use on 20-30% of headlines for variety
124
- - Pattern: `background: linear-gradient(90deg, #FF3AF2, #00F5D4, #FFE600, #FF3AF2)`
125
- - Make background-size 200-300% and animate with gradient shift
126
- - Apply with `background-clip: text` and `-webkit-text-fill-color: transparent`
127
-
128
- ### Border & Radius System
129
-
130
- **Border Widths** (Go bold):
131
-
132
- ```
133
- Standard: border-4 (4px - most common)
134
- Heavy: border-8 (8px - section dividers, featured elements)
135
- Subtle: border-2 (2px - inner dividers only)
136
- ```
137
-
138
- **Border Styles** (Mix deliberately):
139
-
140
- - **Solid**: Default for most containers and cards
141
- - **Dashed**: Use on 30% of borders for variety (`border-dashed`)
142
- - **Dotted**: Rare, for small decorative elements
143
- - **Double**: Occasional use for special containers (`border-double`)
144
- - **Critical Rule**: Within a single section, use 2-3 different border styles intentionally
145
-
146
- **Border Radius Values**:
147
-
148
- ```
149
- Buttons: rounded-full (9999px - pill shape)
150
- Cards: rounded-3xl (24px - generous curves)
151
- Containers: rounded-2xl (16px - moderate curves)
152
- Sharp Accent: rounded-none (0px - use sparingly for contrast)
153
- Mixed: Use different radii on different corners for asymmetry
154
- ```
155
-
156
- **Border Color Strategy**:
157
-
158
- - Primary: Accent color that clashes with background
159
- - Never: Neutral or muted borders
160
- - Technique: If background uses accent-1, border uses accent-2 or accent-3
161
-
162
- ### Shadow & Glow System (Multi-Layered)
163
-
164
- **Glow Shadows** (Colored, soft, luminous):
165
-
166
- ```
167
- Base Glow:
168
- box-shadow: 0 0 20px rgba(255, 58, 242, 0.5),
169
- 0 0 40px rgba(0, 245, 212, 0.3);
170
-
171
- Large Glow:
172
- box-shadow: 0 0 40px rgba(255, 58, 242, 0.6),
173
- 0 0 80px rgba(255, 230, 0, 0.4),
174
- 0 0 120px rgba(123, 47, 255, 0.3);
175
- ```
176
-
177
- - Use on: Buttons, icons, featured elements
178
- - Hover: Increase opacity by 0.1-0.2 and spread by 50%
179
- - Combine 2-3 colors for richer glow
180
-
181
- **Hard Shadows** (Offset, flat, stacked):
182
-
183
- ```
184
- Double Stack:
185
- box-shadow: 8px 8px 0 #FFE600,
186
- 16px 16px 0 #FF3AF2;
187
-
188
- Triple Stack:
189
- box-shadow: 12px 12px 0 #00F5D4,
190
- 24px 24px 0 #FF3AF2,
191
- 36px 36px 0 #FFE600;
192
- ```
193
-
194
- - Pattern: Each layer doubles the offset (8→16→24 or 12→24→36)
195
- - Colors: Rotate through different accents per layer
196
- - Use on: Cards, containers, prominent buttons
197
- - Hover: Increase offsets by 2-4px to simulate lift
198
-
199
- **Shadow Mixing**:
200
-
201
- - Combine glow + hard shadows on hero elements
202
- - Example: `box-shadow: 0 0 30px rgba(255,58,242,0.6), 8px 8px 0 #FFE600, 16px 16px 0 #FF3AF2`
203
-
204
- ### Texture & Pattern System (MANDATORY Layering)
205
-
206
- **Pattern Types** (Always layer 2-3 minimum):
207
-
208
- 1. **Dot Grid**:
209
-
210
- ```css
211
- background-image: radial-gradient(circle, #FF3AF2 1px, transparent 1px);
212
- background-size: 20px 20px;
213
- ```
214
-
215
- - Vary dot size (1px-2px) and spacing (20px-40px)
216
- - Use different accent colors per section
217
-
218
- 2. **Diagonal Stripes**:
219
-
220
- ```css
221
- background-image: repeating-linear-gradient(
222
- 45deg,
223
- transparent,
224
- transparent 10px,
225
- rgba(255, 230, 0, 0.08) 10px,
226
- rgba(255, 230, 0, 0.08) 20px
227
- );
228
- ```
229
-
230
- - Keep opacity low (0.05-0.1) to avoid overwhelming
231
- - Vary stripe width (10-20px) and angle (30deg-60deg)
232
-
233
- 3. **Checkerboard**:
234
-
235
- ```css
236
- background-image: conic-gradient(
237
- from 90deg at 1px 1px,
238
- transparent 90deg,
239
- rgba(0, 245, 212, 0.05) 0
240
- );
241
- background-size: 40px 40px;
242
- ```
243
-
244
- - Use subtle opacity (0.03-0.07)
245
- - Vary grid size (30px-50px)
246
-
247
- 4. **Gradient Mesh** (Radial overlaps):
248
-
249
- ```css
250
- background:
251
- radial-gradient(ellipse at 20% 30%, rgba(255,58,242,0.15) 0%, transparent 50%),
252
- radial-gradient(ellipse at 80% 70%, rgba(0,245,212,0.15) 0%, transparent 50%),
253
- radial-gradient(ellipse at 50% 50%, rgba(123,47,255,0.1) 0%, transparent 60%);
254
- ```
255
-
256
- - Place ellipses at different positions
257
- - Use 2-4 overlapping gradients
258
- - Keep opacity low (0.1-0.2)
259
-
260
- **Pattern Layering Strategy**:
261
-
262
- - **Global Base**: 2 fixed patterns on entire page (dots + stripes)
263
- - **Section Specific**: Each major section adds 1-2 unique patterns
264
- - **Implementation**: Use pseudo-elements (::before, ::after) with `pointer-events: none`
265
- - **Blend Modes**: Apply `mix-blend-mode: overlay` or `screen` on some layers for deeper integration
266
- - **Opacity Range**: 0.05-0.3 per pattern (multiply for stacking)
267
-
268
- ---
269
-
270
- ## Component Styling Principles
271
-
272
- ### Buttons
273
-
274
- **Primary Button** (Maximum Impact):
275
-
276
- - Background: Gradient across 3 accents `bg-gradient-to-r from-[#FF3AF2] via-[#7B2FFF] to-[#00F5D4]`
277
- - Border: `border-4 border-[#FFE600]` (clashing yellow)
278
- - Radius: `rounded-full`
279
- - Shadow: Combine glow + hard shadow
280
- - Text: `font-black uppercase tracking-widest`
281
- - Size: `h-14 px-10` (default), `h-16 px-12` (large)
282
- - Hover: Scale to 110%, intensify shadow (increase opacity by 0.2), shift gradient position
283
- - Active: Scale to 95%, reduce shadow
284
- - Focus: Double ring `ring-4 ring-[color-1] ring-offset-4 ring-offset-[color-2]`
285
-
286
- **Secondary Button** (Inverse treatment):
287
-
288
- - Background: Transparent
289
- - Border: `border-4 border-dashed border-[accent-color]`
290
- - Hover: Fill with solid accent color, border becomes solid, scale to 105%
291
- - Text maintains contrast throughout
292
-
293
- **Outline Button** (Stacked shadow style):
294
-
295
- - Background: Semi-transparent `bg-max-muted/50`
296
- - Border: `border-4 border-[accent]`
297
- - Shadow: Hard stacked shadow (8px/8px, 16px/16px)
298
- - Hover: Translate by negative shadow offset, increase shadow depth
299
- - Active: Translate to zero, remove shadow (pressed effect)
300
-
301
- **Ghost Button** (Subtle but playful):
302
-
303
- - Underline decoration with gradient
304
- - Hover: Reveal background pattern or light fill
305
- - Scale to 105% on hover
306
-
307
- ### Cards & Containers
308
-
309
- **Base Card Structure**:
310
-
311
- - Background: Semi-transparent `bg-[#2D1B4E]/80` with `backdrop-blur-sm`
312
- - Border: `border-4` in accent color (rotate per card)
313
- - Radius: `rounded-3xl` (24px)
314
- - Shadow: Hard stacked shadow (8px/8px + 16px/16px in two colors)
315
- - Padding: `p-8` to `p-12` (generous internal space)
316
-
317
- **Asymmetry Techniques**:
318
-
319
- - Use `clip-path` to cut one corner: `polygon(0 0, 100% 0, 100% calc(100% - 24px), calc(100% - 24px) 100%, 0 100%)`
320
- - Rotate slightly: `rotate-1` or `rotate-2`
321
- - Offset position: Apply negative margins `-mt-4` or `-ml-2`
322
-
323
- **Card Hover States**:
324
-
325
- - Rotate more: `hover:rotate-2` (increase from base rotation)
326
- - Scale up: `hover:scale-[1.02]`
327
- - Shadow shift: Increase shadow offset by 2-4px and add third color
328
- - Transition: `transition-all duration-300 ease-out`
329
-
330
- **Card Internal Structure**:
331
-
332
- - Header: Border bottom `border-b-4 border-dashed` in different accent, background tint optional
333
- - Content: Standard padding `p-6`
334
- - Title: Text shadow, uppercase, font-black, text-2xl
335
- - Description: Slightly muted text `text-white/80`
336
-
337
- **Pattern Overlay on Cards**:
338
-
339
- - Add pattern as background or ::before pseudo-element
340
- - Keep opacity very low (0.1-0.2) so content remains readable
341
- - Rotate pattern type per card for variety
342
-
343
- ### Form Inputs
344
-
345
- **Input Fields**:
346
-
347
- - Background: Semi-transparent `bg-[#2D1B4E]/50` with `backdrop-blur-sm`
348
- - Border: `border-4 border-[accent]` - thick and colored
349
- - Radius: `rounded-full` for single-line inputs, `rounded-2xl` for textareas
350
- - Padding: `px-6 py-4` - generous for comfort
351
- - Text: `text-lg font-bold text-white`
352
- - Placeholder: `text-white/40` - visible but subtle
353
-
354
- **Focus States** (Double Ring System):
355
-
356
- - Border color shifts: `focus:border-[accent-2]` (different from default)
357
- - Inner glow: `focus:shadow-[0_0_20px_rgba(color,0.5)]`
358
- - Ring system: `focus:ring-4 focus:ring-[color-1]/30 focus:ring-offset-2 focus:ring-offset-[color-2]`
359
- - Background intensifies: `focus:bg-[#2D1B4E]` (less transparent)
360
- - Transition: `transition-all duration-300`
361
-
362
- **Labels**:
363
-
364
- - Position: Floating above input or inline
365
- - Style: Display font, accent color, small rotation `rotate-1`
366
- - Animation: Can pulse or glow on focus
367
-
368
- ### Interactive States (Universal Patterns)
369
-
370
- **Hover**:
371
-
372
- - Always combine 2-3 changes: scale + color + shadow
373
- - Scale: 102%-110% depending on element size
374
- - Color: Shift border/background to different accent
375
- - Shadow: Increase intensity (higher opacity, larger spread, or more layers)
376
- - Duration: 300ms for most, 200ms for small elements
377
-
378
- **Active/Pressed**:
379
-
380
- - Scale down: 95%-98%
381
- - Shadow reduction: Remove layers or reduce offset
382
- - Slight translate: Move in direction of shadow to simulate press
383
-
384
- **Focus** (Accessibility Critical):
385
-
386
- - Double ring system always: `ring-4 ring-[color-1] ring-offset-4 ring-offset-[color-2]`
387
- - Use contrasting accent colors for rings
388
- - Ensure total ring thickness (ring + offset) is 8px minimum
389
- - Never rely only on color - include outline style change too
390
- - Consider `outline-dashed` for extra visibility
391
-
392
- **Disabled**:
393
-
394
- - Opacity: 50%
395
- - Cursor: `cursor-not-allowed`
396
- - Remove all hover/active states
397
- - Maintain border visibility but reduce color saturation
398
-
399
- ---
400
-
401
- ## Layout Principles
402
-
403
- **Spacing System** (Generous but dense):
404
-
405
- - **Base Unit**: 4px (Tailwind's default)
406
- - **Section Padding**: `py-24` to `py-32` (96px-128px vertical) - generous breathing room between sections
407
- - **Container Padding**: `px-6` (mobile) to `px-8` (desktop) - consistent horizontal margins
408
- - **Internal Spacing**: `gap-6` to `gap-12` in grids - varies deliberately
409
- - **Card Padding**: `p-8` to `p-12` - comfortable internal space
410
- - **Element Gaps**: `space-y-4` to `space-y-6` for stacked content
411
-
412
- **Dense Packing Strategy**:
413
-
414
- - Elements should feel close but not cramped
415
- - Use negative margins strategically: `-mt-8`, `-ml-4` to create overlap
416
- - Stack cards with slight offset for depth
417
-
418
- **Grid Usage** (Broken Grid Philosophy):
419
-
420
- - **Never Perfect**: Avoid symmetrical, evenly-spaced grids
421
- - **Variable Columns**: Use `grid-cols-1 md:grid-cols-2 lg:grid-cols-3` but break with `col-span-2` mixed with `col-span-1`
422
- - **Vertical Offset**: Apply `translate-y-8` or `md:translate-y-12` to every other item (use modulo: `i % 2 === 1`)
423
- - **Varying Heights**: Let content dictate height naturally, don't force equal heights
424
- - **Gap Variance**: Use different gap sizes within same section (`gap-4` then `gap-8`)
425
-
426
- **Max Width Strategy**:
427
-
428
- - **Container**: `max-w-7xl` (1280px) for most sections
429
- - **Full Bleed**: Hero and some feature sections use `max-w-none` or `max-w-screen`
430
- - **Narrow Content**: Reading content uses `max-w-3xl` (768px)
431
-
432
- **Z-Index Layering** (Critical for overlap):
433
-
434
- ```
435
- Background patterns: z-0
436
- Content base: z-10
437
- Overlapping cards: z-20
438
- Floating decorations: z-30
439
- Modals/overlays: z-40
440
- Fixed header: z-50
441
- ```
442
-
443
- - Use relative positioning on parent to establish context
444
- - Apply negative margins + higher z-index to create intentional overlap
445
-
446
- ---
447
-
448
- ## The "Bold Factor" (Non-Generic Signatures)
449
-
450
- These are the **mandatory** elements that make Maximalism unmistakable:
451
-
452
- ### 1. Floating Decorative Shapes
453
-
454
- - **What**: Scattered SVG icons (stars, sparkles, circles, squares) and emoji throughout layout
455
- - **Placement**: Absolute positioned with specific coordinates (`top-[10%] left-[5%]`)
456
- - **Sizes**: Variable from `h-6 w-6` to `h-24 w-24` - intentionally inconsistent
457
- - **Styling**: Filled with accent colors, often with animation
458
- - **Animation**: Apply float, wiggle, spin-slow, or bounce-subtle
459
- - **Density**: 5-10 shapes per full-height section minimum
460
- - **Implementation**: Create reusable component, position absolutely within relative parent
461
-
462
- ### 2. Massive Background Typography
463
-
464
- - **What**: Oversized text behind content, partially visible, bleeding off edges
465
- - **Size**: `text-[12rem]` to `text-[20rem]` - deliberately too large for viewport
466
- - **Styling**: `opacity-20`, semi-transparent accent color or muted
467
- - **Positioning**: Absolute, centered with transform, or bleeding from edge
468
- - **Content**: Single impactful word (WOW, YES, GO, etc.) or repeated pattern
469
- - **Purpose**: Adds depth and reinforces maximalist chaos
470
-
471
- ### 3. Pattern-on-Pattern Layering
472
-
473
- - **Minimum**: Every section must have at least 2 overlapping patterns
474
- - **Common Combo**: Dots over stripes, checker over gradient, mesh over dots
475
- - **Global + Local**: Fixed global patterns (2) + section-specific patterns (1-2)
476
- - **Visibility**: Keep individual pattern opacity low (0.05-0.15) but layer for cumulative effect
477
- - **Variety**: Rotate pattern types across sections (hero = mesh+dots, features = stripes+checker, etc.)
478
-
479
- ### 4. Systematic Color Rotation
480
-
481
- - **Rule**: Each major section highlights a different accent color from the five
482
- - **Pattern**: Hero = Magenta, Stats = (all 5), Features = Cyan, Benefits = Orange, etc.
483
- - **Repeated Elements**: In grids, cycle through colors using index modulo 5
484
- - **Implementation**: Store colors in array, access via `colors[index % colors.length]`
485
- - **Consistency**: Same color doesn't dominate consecutive sections
486
-
487
- ### 5. Clashing Border Colors
488
-
489
- - **Never Match**: Border color should clash with background color
490
- - **Examples**:
491
- - Magenta background → Yellow border
492
- - Cyan background Orange border
493
- - Yellow background → Magenta border
494
- - **Contrast**: Choose colors from opposite sides of the palette
495
- - **Thickness**: Always `border-4` or `border-8` - make the clash visible
496
-
497
- ### 6. Multi-Layered Shadows
498
-
499
- - **Never Single**: Every elevated element has 2-3 shadow layers minimum
500
- - **Types**: Combine glow shadows (soft, colored) with hard shadows (offset, flat)
501
- - **Colors**: Each shadow layer uses different accent color
502
- - **Progression**: Hard shadows increase offset in 2x increments (8px → 16px → 32px)
503
- - **Hover**: Add layer or increase intensity, never just change color
504
-
505
- ### 7. Asymmetric Element Positioning
506
-
507
- - **No Perfect Alignment**: Elements in same row sit at different vertical positions
508
- - **Technique**: Apply `translate-y-8` or `-translate-y-4` to alternate items
509
- - **Rotation**: Mix `rotate-1`, `rotate-2`, `-rotate-1` across cards
510
- - **Skew**: Occasional `skew-x-2` on containers
511
- - **Overlap**: Use negative margins to make elements overlap section boundaries
512
-
513
- ### 8. Mixed Border Styles Within Sections
514
-
515
- - **Rule**: Same section uses 2-3 different border styles
516
- - **Mix**: Solid borders on some cards, dashed on others, dotted on accents
517
- - **Example**: Feature cards with solid borders, icon containers with dashed, section divider with double
518
- - **Purpose**: Adds to controlled chaos aesthetic
519
-
520
- ### 9. Emoji as Decorative Elements
521
-
522
- - **Usage**: Scatter throughout (🚀✨💫🎯💬⚡💰🔥❓)
523
- - **Size**: Large `text-6xl` to `text-7xl`
524
- - **Animation**: Apply bounce, float, wiggle
525
- - **Placement**: Section headers, decorative accents, floating elements
526
- - **Frequency**: 1-2 per major section
527
-
528
- ### 10. Animated Gradient Text
529
-
530
- - **What**: Headlines with animated multi-color gradient backgrounds
531
- - **Colors**: 3-4 accent colors in linear gradient
532
- - **Animation**: Background position shifts continuously (4s duration)
533
- - **Usage**: 20-30% of major headlines
534
- - **Implementation**: `background-clip: text`, `-webkit-text-fill-color: transparent`, animate `background-position`
535
-
536
- ---
537
-
538
- ## Animation & Motion
539
-
540
- **Motion Philosophy**: Bouncy, playful, attention-grabbing. Nothing should feel static or stiff.
541
-
542
- **Timing Relationships**:
543
-
544
- ```
545
- Ultra Fast: 100-200ms (Small interactions, icon rotations)
546
- Fast: 200-300ms (Hover states, button presses)
547
- Standard: 300-500ms (Card transitions, layout shifts)
548
- Slow: 1-2s (Wiggle, pulse, bounce animations)
549
- Very Slow: 4-8s (Float, gradient shift)
550
- Ultra Slow: 20s (Spin, background rotation)
551
- ```
552
-
553
- **Easing Functions**:
554
-
555
- - Default: `ease-out` (quick start, gentle end)
556
- - Bouncy: `cubic-bezier(0.68, -0.55, 0.265, 1.55)` (overshoot effect)
557
- - Smooth: `ease-in-out` (gradual both ends)
558
-
559
- **Keyframe Animations**:
560
-
561
- 1. **Float** (Gentle vertical movement):
562
-
563
- ```css
564
- @keyframes float {
565
- 0%, 100% { transform: translateY(0) rotate(0deg); }
566
- 50% { transform: translateY(-20px) rotate(5deg); }
567
- }
568
- Duration: 6s ease-in-out infinite
569
- ```
570
-
571
- 2. **Float Reverse** (Upward movement):
572
-
573
- ```css
574
- @keyframes float-reverse {
575
- 0%, 100% { transform: translateY(0) rotate(0deg); }
576
- 50% { transform: translateY(20px) rotate(-5deg); }
577
- }
578
- Duration: 5s ease-in-out infinite
579
- ```
580
-
581
- 3. **Pulse Glow** (Shadow intensity variation):
582
-
583
- ```css
584
- @keyframes pulse-glow {
585
- 0%, 100% { box-shadow: 0 0 20px rgba(255, 58, 242, 0.5); }
586
- 50% { box-shadow: 0 0 40px rgba(255, 58, 242, 0.8), 0 0 60px rgba(0, 245, 212, 0.5); }
587
- }
588
- Duration: 2s ease-in-out infinite
589
- ```
590
-
591
- 4. **Gradient Shift** (Background position animation):
592
-
593
- ```css
594
- @keyframes gradient-shift {
595
- 0% { background-position: 0% 50%; }
596
- 50% { background-position: 100% 50%; }
597
- 100% { background-position: 0% 50%; }
598
- }
599
- Duration: 4s ease infinite
600
- Requirement: Set background-size to 200-300%
601
- ```
602
-
603
- 5. **Spin Slow** (Continuous rotation):
604
-
605
- ```css
606
- @keyframes spin-slow {
607
- from { transform: rotate(0deg); }
608
- to { transform: rotate(360deg); }
609
- }
610
- Duration: 20s linear infinite
611
- ```
612
-
613
- 6. **Wiggle** (Back-and-forth rotation):
614
-
615
- ```css
616
- @keyframes wiggle {
617
- 0%, 100% { transform: rotate(-3deg); }
618
- 50% { transform: rotate(3deg); }
619
- }
620
- Duration: 1s ease-in-out infinite
621
- ```
622
-
623
- 7. **Bounce Subtle** (Vertical bounce):
624
-
625
- ```css
626
- @keyframes bounce-subtle {
627
- 0%, 100% { transform: translateY(0); }
628
- 50% { transform: translateY(-10px); }
629
- }
630
- Duration: 2s ease-in-out infinite
631
- ```
632
-
633
- **Animation Assignment**:
634
-
635
- - **Floating Shapes**: Float, float-reverse, or float-slow
636
- - **Key CTAs**: Pulse-glow
637
- - **Gradient Text/Backgrounds**: Gradient-shift
638
- - **Decorative Rings/Borders**: Spin-slow
639
- - **Emoji/Icons**: Wiggle or bounce-subtle
640
- - **Hero Elements**: Combination (float + pulse-glow)
641
-
642
- **Performance Optimization**:
643
-
644
- - Use `transform` and `opacity` only (GPU accelerated)
645
- - Add `will-change: transform` to animated elements
646
- - Avoid animating width, height, or color directly
647
-
648
- **Reduced Motion**:
649
-
650
- - Respect `prefers-reduced-motion: reduce`
651
- - Disable keyframe animations
652
- - Keep hover/active transitions but reduce duration to 150ms
653
- - Maintain all visual styles, only remove continuous motion
654
-
655
- ---
656
-
657
- ## Anti-Patterns (What to Avoid)
658
-
659
- These choices would **break** the Maximalism aesthetic:
660
-
661
- ### 1. ❌ Neutral or Muted Borders
662
-
663
- - **Wrong**: `border-gray-300` or `border-white/20`
664
- - **Right**: `border-[#FF3AF2]` or `border-[#FFE600]`
665
- - **Why**: Borders must be vibrant accent colors that pop
666
-
667
- ### 2. ❌ Single-Layer Shadows
668
-
669
- - **Wrong**: `shadow-lg` or single color shadow
670
- - **Right**: Stacked colored shadows (glow + hard, or hard + hard)
671
- - **Why**: Depth comes from layering, not softness
672
-
673
- ### 3. ❌ Perfectly Aligned Grids
674
-
675
- - **Wrong**: Symmetrical grid with equal spacing and heights
676
- - **Right**: Broken grid with vertical offsets, rotations, and varying sizes
677
- - **Why**: Maximalism embraces controlled chaos
678
-
679
- ### 4. ❌ Empty Background Sections
680
-
681
- - **Wrong**: Solid color background with no patterns or texture
682
- - **Right**: 2-3 layered patterns (dots, stripes, mesh)
683
- - **Why**: Empty space is wasted space in maximalism
684
-
685
- ### 5. ❌ Subtle or Small Typography
686
-
687
- - **Wrong**: `text-base` or `text-lg` for headlines
688
- - **Right**: `text-5xl` to `text-9xl` for headlines
689
- - **Why**: Maximalism is loud and unapologetic
690
-
691
- ### 6. ❌ Monochromatic Color Schemes
692
-
693
- - **Wrong**: Using one accent color throughout
694
- - **Right**: Rotating through all 5 accent colors systematically
695
- - **Why**: More colors = more dopamine
696
-
697
- ### 7. ❌ Minimal or No Hover States
698
-
699
- - **Wrong**: Only color change on hover
700
- - **Right**: Scale + rotate + shadow change combined
701
- - **Why**: Interactions should feel joyful and exaggerated
702
-
703
- ### 8. Thin Borders (1-2px)
704
-
705
- - **Wrong**: `border` or `border-2`
706
- - **Right**: `border-4` or `border-8`
707
- - **Why**: Borders are a design statement, not an afterthought
708
-
709
- ### 9. ❌ Restrained Button Styles
710
-
711
- - **Wrong**: Simple solid color button with subtle shadow
712
- - **Right**: Gradient background, clashing border, stacked shadow, scale on hover
713
- - **Why**: CTAs should demand attention
714
-
715
- ### 10. No Text Shadows on Headlines
716
-
717
- - **Wrong**: Flat text with no shadow
718
- - **Right**: 2-3 layer text shadow in different accent colors
719
- - **Why**: Depth and dimension make text pop
720
-
721
- ### 11. ❌ Matching Border and Background Colors
722
-
723
- - **Wrong**: Magenta background with magenta border
724
- - **Right**: Magenta background with yellow or cyan border
725
- - **Why**: Clashing creates visual interest
726
-
727
- ### 12. ❌ Static Elements (No Animation)
728
-
729
- - **Wrong**: All elements static with only CSS transitions
730
- - **Right**: 30-40% of elements have continuous animation (float, wiggle, pulse)
731
- - **Why**: Motion adds life and energy
732
-
733
- ---
734
-
735
- ## Accessibility & Best Practices
736
-
737
- **Color Contrast** (Non-Negotiable):
738
-
739
- - **Text Contrast**: White (#FFFFFF) on dark (#0D0D1A) maintains 19.5:1 ratio (AAA)
740
- - **Accent Color Usage**: Never use accent colors for body text or critical information
741
- - **Readable Backgrounds**: When text sits on accent color backgrounds, ensure:
742
- - White text on dark accents (magenta, purple, cyan with sufficient darkness)
743
- - Dark text (#0D0D1A) on light accents (yellow, light cyan)
744
- - **Testing**: Use contrast checker to verify all text meets WCAG AA minimum (4.5:1 for normal text, 3:1 for large text)
745
-
746
- **Focus States** (Maximum Visibility):
747
-
748
- - **Double Ring System**: `ring-4 ring-[color-1] ring-offset-4 ring-offset-[color-2]`
749
- - **Color Contrast**: Ring colors should contrast with both element and background
750
- - **Total Thickness**: 8px minimum (ring + offset combined)
751
- - **Additional Indicators**: Combine color change with outline style (`outline-dashed`)
752
- - **Never**: Rely on color alone - always include structural change
753
- - **Keyboard Navigation**: All interactive elements must be keyboard accessible
754
-
755
- **Motion Sensitivity** (Respect User Preferences):
756
-
757
- ```css
758
- @media (prefers-reduced-motion: reduce) {
759
- * {
760
- animation-duration: 0.01ms !important;
761
- animation-iteration-count: 1 !important;
762
- transition-duration: 0.15s !important;
763
- }
764
- }
765
- ```
766
-
767
- - Disable all keyframe animations (float, pulse, spin)
768
- - Reduce transition durations to minimal (150ms)
769
- - Keep hover/active states but without exaggerated motion
770
- - Maintain all visual styles (colors, borders, shadows)
771
-
772
- **Screen Reader Considerations**:
773
-
774
- - Decorative emoji and floating shapes should have `aria-hidden="true"`
775
- - Pattern overlays should be CSS-only, not content
776
- - Ensure semantic HTML structure (proper heading hierarchy)
777
- - All interactive elements need accessible labels
778
-
779
- **Performance**:
780
-
781
- - Use `transform` and `opacity` for animations (GPU accelerated)
782
- - Add `will-change: transform` sparingly on animated elements
783
- - Patterns via CSS gradients preferred over images
784
- - Consider `backdrop-filter` support and provide fallback
785
-
786
- **Touch Targets**:
787
-
788
- - Minimum size: 44x44px for all interactive elements
789
- - Buttons default to `h-14` (56px) - well above minimum
790
- - Ensure adequate spacing between touch targets (8px minimum gap)
791
-
792
- ---
793
-
794
- ## Layout & Spacing Rhythm
795
-
796
- **Vertical Rhythm** (Section Flow):
797
-
798
- ```
799
- Section Padding: py-24 to py-32 (96px-128px between sections)
800
- Section Inner Margin: mb-16 to mb-20 (64px-80px between title and content)
801
- Content Groupings: space-y-8 to space-y-12 (32px-48px between content blocks)
802
- Element Stacks: space-y-4 to space-y-6 (16px-24px between elements)
803
- ```
804
-
805
- **Horizontal Rhythm**:
806
-
807
- ```
808
- Container Padding: px-6 (mobile), px-8 (desktop)
809
- Grid Gaps: gap-6 to gap-12 (varies deliberately)
810
- Card Padding: p-8 to p-12
811
- Button Padding: px-10 to px-12
812
- Input Padding: px-6
813
- ```
814
-
815
- **Responsive Breakpoints**:
816
-
817
- - **Mobile** (`< 768px`):
818
-
819
- - Stack all grids vertically
820
- - Maintain pattern density (reduce to 1-2 patterns, not zero)
821
- - Keep accent colors and borders (don't simplify)
822
- - Scale down typography but stay bold (text-4xl minimum for hero)
823
- - Reduce floating shapes (5-6 instead of 10-12)
824
- - Maintain rotation and offset effects
825
- - **Tablet** (`768px - 1024px`):
826
-
827
- - 2-column grids where desktop has 3
828
- - Full pattern treatment returns
829
- - All animations active
830
- - **Desktop** (`> 1024px`):
831
-
832
- - Full 3-4 column grids
833
- - Maximum pattern density
834
- - All decorative elements visible
835
-
836
- **Critical Rule for Mobile**: Do NOT simplify to "clean minimalism" on mobile. Keep the chaos, just stack it vertically.
837
-
838
- ---
839
-
840
- ## Iconography Guidelines
841
-
842
- **Icon Source**: Lucide React (or similar open-source icon set)
843
-
844
- **Icon Sizing**:
845
-
846
- ```
847
- Small: h-5 w-5 (20px)
848
- Default: h-10 w-10 (40px)
849
- Large: h-16 w-16 (64px)
850
- Decorative: h-24 w-24 (96px)
851
- ```
852
-
853
- **Icon Styling**:
854
-
855
- - **Stroke Width**: Thick `stroke-[2.5px]` to `stroke-[3px]` for visibility
856
- - **Colors**: Always accent colors, never muted
857
- - **Containers**: Wrap in colored shapes:
858
- - Circle: `rounded-full`
859
- - Square: `rounded-xl`
860
- - Border: `border-4 border-[accent]`
861
- - Background: Semi-transparent accent `bg-[accent]/20`
862
- - **Animation**: Icons can rotate, bounce, or pulse on hover
863
-
864
- **Icon Placement**:
865
-
866
- - Feature cards: Large icon at top
867
- - Buttons: Small icon inline with text
868
- - Floating decorations: Variety of sizes, absolute positioned
869
- - Navigation: Medium size, colored on hover
870
-
871
- ---
872
-
873
- ## Implementation Notes
874
-
875
- **Technology Assumptions**:
876
-
877
- - **CSS Framework**: Tailwind CSS v4 (uses arbitrary values `[]` syntax)
878
- - **Animations**: CSS keyframes defined in stylesheet, applied via utility classes
879
- - **Patterns**: CSS gradient backgrounds, not images
880
- - **Components**: Built with component variants (CVA) for consistency
881
- - **Icons**: Lucide React or similar SVG icon library
882
-
883
- **Configuration File Structure**:
884
-
885
- ```typescript
886
- export const config = {
887
- colors: { background, foreground, muted, accent, secondary, tertiary, quaternary, quinary, border },
888
- fonts: { heading, body, display },
889
- radius: { base, button, card },
890
- shadows: { glow, glowLg, multi, multiLg }
891
- }
892
- ```
893
-
894
- **Reusable Patterns**:
895
-
896
- - Create utility classes for patterns (`.pattern-dots`, `.pattern-stripes`, `.pattern-checker`, `.pattern-mesh`)
897
- - Create shadow utilities (`.shadow-multi`, `.shadow-multi-lg`, `.glow-accent`, `.glow-accent-lg`)
898
- - Create animation classes (`.animate-float`, `.animate-pulse-glow`, etc.)
899
- - Store color array for rotation: `['accent', 'secondary', 'tertiary', 'quaternary', 'quinary']`
900
-
901
- **Component Approach**:
902
-
903
- - Build Button with 4 variants (default, secondary, outline, ghost)
904
- - Build Card with composable parts (Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter)
905
- - Build Input with built-in focus states
906
- - All components use `cn()` utility for class merging
907
-
908
- ---
909
-
910
- **Final Reminder**: If it looks "too much" — it's probably just right. Maximalism is about abundance, joy, and visual stimulation. The design should make people FEEL something immediately. Restraint is not welcome here. Every element is an opportunity for color, pattern, shadow, animation, and delight.
911
- `</design-system>`
1
+ <design-system>
2
+ # Design Style: Maximalism / Dopamine
3
+
4
+ ## Design Philosophy
5
+
6
+ **Core Principle**: MORE IS MORE. Maximalism/Dopamine design rejects minimalist restraint in favor of sensory overload, visual abundance, and unapologetic excess. Every pixel should spark joy. Empty space is wasted space. Patterns clash, colors scream, and elements overlap with chaotic intention.
7
+
8
+ **Emotional Target**: Euphoric, playful, overwhelming, Y2K-meets-Gen-Z, hyperpop aesthetic, digital maximalism. Think Lisa Frank fever dream meets Nickelodeon slime era meets contemporary hyperpop album art. It should feel like eating a bag of Skittles while watching fireworks.
9
+
10
+ **The Guiding Question**: "Is this visually overwhelming in a joyful way?" If the answer is no, add more.
11
+
12
+ ---
13
+
14
+ ## Design Token System (The DNA)
15
+
16
+ ### Color Palette (Dark Mode Foundation)
17
+
18
+ **Base Colors**:
19
+
20
+ ```
21
+ Background: #0D0D1A (Deep cosmic purple-black - the void that makes everything pop)
22
+ Foreground: #FFFFFF (Pure white - maximum contrast)
23
+ Muted: #2D1B4E (Dark purple - for semi-transparent containers)
24
+ Border Base: #FF3AF2 (Hot magenta - default border color)
25
+ ```
26
+
27
+ **The Five Accent Colors** (This is critical - always have 5 distinct accents):
28
+
29
+ ```
30
+ 1. Accent (Magenta): #FF3AF2 (Hot pink/magenta - electric energy)
31
+ 2. Secondary (Cyan): #00F5D4 (Electric cyan/teal - digital glow)
32
+ 3. Tertiary (Yellow): #FFE600 (Screaming yellow - attention grabber)
33
+ 4. Quaternary (Orange): #FF6B35 (Electric orange - warmth chaos)
34
+ 5. Quinary (Purple): #7B2FFF (Vivid purple - mystical depth)
35
+ ```
36
+
37
+ **Color Usage Rules**:
38
+
39
+ - **Section Rotation**: Each major section cycles through the 5 accents as its primary color. Use modulo arithmetic (index % 5) to rotate systematically.
40
+ - **Repeated Elements**: In grids (stats, features, testimonials), rotate accent colors using the same modulo approach.
41
+ - **No Matching**: Borders should clash with backgrounds. If background is magenta, border might be yellow or cyan.
42
+ - **Contrast Ratios**: Despite chaos, maintain white (#FFFFFF) on dark (#0D0D1A) for all critical text = 19.5:1 contrast ratio (AAA).
43
+ - **Accent Text**: Only use accent colors for decorative text, labels, or non-critical content. Never body text.
44
+
45
+ ### Typography System
46
+
47
+ **Font Stack**:
48
+
49
+ - **Headings**: "Outfit" (bold, geometric, 700-900 weight) or "Unbounded" (Google Fonts)
50
+ - **Body**: "DM Sans" (clean, readable in chaos, 400-700 weight)
51
+ - **Display/Accent**: "Bangers" or "Bungee" (comic energy, use sparingly for special callouts)
52
+
53
+ **Type Scale** (Aggressive sizing):
54
+
55
+ ```
56
+ Hero Headlines: text-7xl to text-9xl (72px-128px) - MASSIVE
57
+ Section Headings: text-5xl to text-7xl (48px-72px) - Bold presence
58
+ Subheadings: text-2xl to text-3xl (24px-30px) - Standout
59
+ Body Text: text-lg to text-xl (18px-20px) - Larger than typical
60
+ Small Text: text-sm to text-base (14px-16px) - Labels, meta
61
+ ```
62
+
63
+ **Type Styling Patterns**:
64
+
65
+ - **Weight Distribution**: Headlines = 800-900 weight, body = 400-500, labels = 700 bold
66
+ - **Letter Spacing**: Headlines get `tracking-tight` or `tracking-tighter`, labels get `tracking-widest`, body stays normal
67
+ - **Line Height**: Headlines = leading-none or leading-tight (0.9-1.1), body = leading-relaxed (1.625)
68
+ - **Text Transform**: Uppercase for headlines, labels, and buttons. Normal case for body text.
69
+ - **Mixed Weights**: Use varying weights within the same headline for emphasis (one word bold, another bolder)
70
+
71
+ **Text Shadow System** (CRITICAL - Always Use):
72
+
73
+ ```
74
+ Single Shadow: text-shadow: 2px 2px 0px #7B2FFF
75
+ Double Shadow: text-shadow: 2px 2px 0px #7B2FFF, 4px 4px 0px #FF3AF2
76
+ Triple Stack: text-shadow: 2px 2px 0px #7B2FFF, 4px 4px 0px #FF3AF2, 6px 6px 0px #00F5D4
77
+ Mega Stack: text-shadow: 4px 4px 0px #7B2FFF, 8px 8px 0px #FF3AF2, 12px 12px 0px #00F5D4
78
+ ```
79
+
80
+ - Pattern: 2px increments in offset, rotate through accent colors
81
+ - Headlines get triple or mega stack
82
+ - Subheadings get double shadow
83
+ - Card titles get single or double shadow
84
+
85
+ **Gradient Text**:
86
+
87
+ - Use on 20-30% of headlines for variety
88
+ - Pattern: `background: linear-gradient(90deg, #FF3AF2, #00F5D4, #FFE600, #FF3AF2)`
89
+ - Make background-size 200-300% and animate with gradient shift
90
+ - Apply with `background-clip: text` and `-webkit-text-fill-color: transparent`
91
+
92
+ ### Border & Radius System
93
+
94
+ **Border Widths** (Go bold):
95
+
96
+ ```
97
+ Standard: border-4 (4px - most common)
98
+ Heavy: border-8 (8px - section dividers, featured elements)
99
+ Subtle: border-2 (2px - inner dividers only)
100
+ ```
101
+
102
+ **Border Styles** (Mix deliberately):
103
+
104
+ - **Solid**: Default for most containers and cards
105
+ - **Dashed**: Use on 30% of borders for variety (`border-dashed`)
106
+ - **Dotted**: Rare, for small decorative elements
107
+ - **Double**: Occasional use for special containers (`border-double`)
108
+ - **Critical Rule**: Within a single section, use 2-3 different border styles intentionally
109
+
110
+ **Border Radius Values**:
111
+
112
+ ```
113
+ Buttons: rounded-full (9999px - pill shape)
114
+ Cards: rounded-3xl (24px - generous curves)
115
+ Containers: rounded-2xl (16px - moderate curves)
116
+ Sharp Accent: rounded-none (0px - use sparingly for contrast)
117
+ Mixed: Use different radii on different corners for asymmetry
118
+ ```
119
+
120
+ **Border Color Strategy**:
121
+
122
+ - Primary: Accent color that clashes with background
123
+ - Never: Neutral or muted borders
124
+ - Technique: If background uses accent-1, border uses accent-2 or accent-3
125
+
126
+ ### Shadow & Glow System (Multi-Layered)
127
+
128
+ **Glow Shadows** (Colored, soft, luminous):
129
+
130
+ ```
131
+ Base Glow:
132
+ box-shadow: 0 0 20px rgba(255, 58, 242, 0.5),
133
+ 0 0 40px rgba(0, 245, 212, 0.3);
134
+
135
+ Large Glow:
136
+ box-shadow: 0 0 40px rgba(255, 58, 242, 0.6),
137
+ 0 0 80px rgba(255, 230, 0, 0.4),
138
+ 0 0 120px rgba(123, 47, 255, 0.3);
139
+ ```
140
+
141
+ - Use on: Buttons, icons, featured elements
142
+ - Hover: Increase opacity by 0.1-0.2 and spread by 50%
143
+ - Combine 2-3 colors for richer glow
144
+
145
+ **Hard Shadows** (Offset, flat, stacked):
146
+
147
+ ```
148
+ Double Stack:
149
+ box-shadow: 8px 8px 0 #FFE600,
150
+ 16px 16px 0 #FF3AF2;
151
+
152
+ Triple Stack:
153
+ box-shadow: 12px 12px 0 #00F5D4,
154
+ 24px 24px 0 #FF3AF2,
155
+ 36px 36px 0 #FFE600;
156
+ ```
157
+
158
+ - Pattern: Each layer doubles the offset (8→16→24 or 12→24→36)
159
+ - Colors: Rotate through different accents per layer
160
+ - Use on: Cards, containers, prominent buttons
161
+ - Hover: Increase offsets by 2-4px to simulate lift
162
+
163
+ **Shadow Mixing**:
164
+
165
+ - Combine glow + hard shadows on hero elements
166
+ - Example: `box-shadow: 0 0 30px rgba(255,58,242,0.6), 8px 8px 0 #FFE600, 16px 16px 0 #FF3AF2`
167
+
168
+ ### Texture & Pattern System (MANDATORY Layering)
169
+
170
+ **Pattern Types** (Always layer 2-3 minimum):
171
+
172
+ 1. **Dot Grid**:
173
+
174
+ ```css
175
+ background-image: radial-gradient(circle, #FF3AF2 1px, transparent 1px);
176
+ background-size: 20px 20px;
177
+ ```
178
+
179
+ - Vary dot size (1px-2px) and spacing (20px-40px)
180
+ - Use different accent colors per section
181
+
182
+ 2. **Diagonal Stripes**:
183
+
184
+ ```css
185
+ background-image: repeating-linear-gradient(
186
+ 45deg,
187
+ transparent,
188
+ transparent 10px,
189
+ rgba(255, 230, 0, 0.08) 10px,
190
+ rgba(255, 230, 0, 0.08) 20px
191
+ );
192
+ ```
193
+
194
+ - Keep opacity low (0.05-0.1) to avoid overwhelming
195
+ - Vary stripe width (10-20px) and angle (30deg-60deg)
196
+
197
+ 3. **Checkerboard**:
198
+
199
+ ```css
200
+ background-image: conic-gradient(
201
+ from 90deg at 1px 1px,
202
+ transparent 90deg,
203
+ rgba(0, 245, 212, 0.05) 0
204
+ );
205
+ background-size: 40px 40px;
206
+ ```
207
+
208
+ - Use subtle opacity (0.03-0.07)
209
+ - Vary grid size (30px-50px)
210
+
211
+ 4. **Gradient Mesh** (Radial overlaps):
212
+
213
+ ```css
214
+ background:
215
+ radial-gradient(ellipse at 20% 30%, rgba(255,58,242,0.15) 0%, transparent 50%),
216
+ radial-gradient(ellipse at 80% 70%, rgba(0,245,212,0.15) 0%, transparent 50%),
217
+ radial-gradient(ellipse at 50% 50%, rgba(123,47,255,0.1) 0%, transparent 60%);
218
+ ```
219
+
220
+ - Place ellipses at different positions
221
+ - Use 2-4 overlapping gradients
222
+ - Keep opacity low (0.1-0.2)
223
+
224
+ **Pattern Layering Strategy**:
225
+
226
+ - **Global Base**: 2 fixed patterns on entire page (dots + stripes)
227
+ - **Section Specific**: Each major section adds 1-2 unique patterns
228
+ - **Implementation**: Use pseudo-elements (::before, ::after) with `pointer-events: none`
229
+ - **Blend Modes**: Apply `mix-blend-mode: overlay` or `screen` on some layers for deeper integration
230
+ - **Opacity Range**: 0.05-0.3 per pattern (multiply for stacking)
231
+
232
+ ---
233
+
234
+ ## Component Styling Principles
235
+
236
+ ### Buttons
237
+
238
+ **Primary Button** (Maximum Impact):
239
+
240
+ - Background: Gradient across 3 accents `bg-gradient-to-r from-[#FF3AF2] via-[#7B2FFF] to-[#00F5D4]`
241
+ - Border: `border-4 border-[#FFE600]` (clashing yellow)
242
+ - Radius: `rounded-full`
243
+ - Shadow: Combine glow + hard shadow
244
+ - Text: `font-black uppercase tracking-widest`
245
+ - Size: `h-14 px-10` (default), `h-16 px-12` (large)
246
+ - Hover: Scale to 110%, intensify shadow (increase opacity by 0.2), shift gradient position
247
+ - Active: Scale to 95%, reduce shadow
248
+ - Focus: Double ring `ring-4 ring-[color-1] ring-offset-4 ring-offset-[color-2]`
249
+
250
+ **Secondary Button** (Inverse treatment):
251
+
252
+ - Background: Transparent
253
+ - Border: `border-4 border-dashed border-[accent-color]`
254
+ - Hover: Fill with solid accent color, border becomes solid, scale to 105%
255
+ - Text maintains contrast throughout
256
+
257
+ **Outline Button** (Stacked shadow style):
258
+
259
+ - Background: Semi-transparent `bg-max-muted/50`
260
+ - Border: `border-4 border-[accent]`
261
+ - Shadow: Hard stacked shadow (8px/8px, 16px/16px)
262
+ - Hover: Translate by negative shadow offset, increase shadow depth
263
+ - Active: Translate to zero, remove shadow (pressed effect)
264
+
265
+ **Ghost Button** (Subtle but playful):
266
+
267
+ - Underline decoration with gradient
268
+ - Hover: Reveal background pattern or light fill
269
+ - Scale to 105% on hover
270
+
271
+ ### Cards & Containers
272
+
273
+ **Base Card Structure**:
274
+
275
+ - Background: Semi-transparent `bg-[#2D1B4E]/80` with `backdrop-blur-sm`
276
+ - Border: `border-4` in accent color (rotate per card)
277
+ - Radius: `rounded-3xl` (24px)
278
+ - Shadow: Hard stacked shadow (8px/8px + 16px/16px in two colors)
279
+ - Padding: `p-8` to `p-12` (generous internal space)
280
+
281
+ **Asymmetry Techniques**:
282
+
283
+ - Use `clip-path` to cut one corner: `polygon(0 0, 100% 0, 100% calc(100% - 24px), calc(100% - 24px) 100%, 0 100%)`
284
+ - Rotate slightly: `rotate-1` or `rotate-2`
285
+ - Offset position: Apply negative margins `-mt-4` or `-ml-2`
286
+
287
+ **Card Hover States**:
288
+
289
+ - Rotate more: `hover:rotate-2` (increase from base rotation)
290
+ - Scale up: `hover:scale-[1.02]`
291
+ - Shadow shift: Increase shadow offset by 2-4px and add third color
292
+ - Transition: `transition-all duration-300 ease-out`
293
+
294
+ **Card Internal Structure**:
295
+
296
+ - Header: Border bottom `border-b-4 border-dashed` in different accent, background tint optional
297
+ - Content: Standard padding `p-6`
298
+ - Title: Text shadow, uppercase, font-black, text-2xl
299
+ - Description: Slightly muted text `text-white/80`
300
+
301
+ **Pattern Overlay on Cards**:
302
+
303
+ - Add pattern as background or ::before pseudo-element
304
+ - Keep opacity very low (0.1-0.2) so content remains readable
305
+ - Rotate pattern type per card for variety
306
+
307
+ ### Form Inputs
308
+
309
+ **Input Fields**:
310
+
311
+ - Background: Semi-transparent `bg-[#2D1B4E]/50` with `backdrop-blur-sm`
312
+ - Border: `border-4 border-[accent]` - thick and colored
313
+ - Radius: `rounded-full` for single-line inputs, `rounded-2xl` for textareas
314
+ - Padding: `px-6 py-4` - generous for comfort
315
+ - Text: `text-lg font-bold text-white`
316
+ - Placeholder: `text-white/40` - visible but subtle
317
+
318
+ **Focus States** (Double Ring System):
319
+
320
+ - Border color shifts: `focus:border-[accent-2]` (different from default)
321
+ - Inner glow: `focus:shadow-[0_0_20px_rgba(color,0.5)]`
322
+ - Ring system: `focus:ring-4 focus:ring-[color-1]/30 focus:ring-offset-2 focus:ring-offset-[color-2]`
323
+ - Background intensifies: `focus:bg-[#2D1B4E]` (less transparent)
324
+ - Transition: `transition-all duration-300`
325
+
326
+ **Labels**:
327
+
328
+ - Position: Floating above input or inline
329
+ - Style: Display font, accent color, small rotation `rotate-1`
330
+ - Animation: Can pulse or glow on focus
331
+
332
+ ### Interactive States (Universal Patterns)
333
+
334
+ **Hover**:
335
+
336
+ - Always combine 2-3 changes: scale + color + shadow
337
+ - Scale: 102%-110% depending on element size
338
+ - Color: Shift border/background to different accent
339
+ - Shadow: Increase intensity (higher opacity, larger spread, or more layers)
340
+ - Duration: 300ms for most, 200ms for small elements
341
+
342
+ **Active/Pressed**:
343
+
344
+ - Scale down: 95%-98%
345
+ - Shadow reduction: Remove layers or reduce offset
346
+ - Slight translate: Move in direction of shadow to simulate press
347
+
348
+ **Focus** (Accessibility Critical):
349
+
350
+ - Double ring system always: `ring-4 ring-[color-1] ring-offset-4 ring-offset-[color-2]`
351
+ - Use contrasting accent colors for rings
352
+ - Ensure total ring thickness (ring + offset) is 8px minimum
353
+ - Never rely only on color - include outline style change too
354
+ - Consider `outline-dashed` for extra visibility
355
+
356
+ **Disabled**:
357
+
358
+ - Opacity: 50%
359
+ - Cursor: `cursor-not-allowed`
360
+ - Remove all hover/active states
361
+ - Maintain border visibility but reduce color saturation
362
+
363
+ ---
364
+
365
+ ## Layout Principles
366
+
367
+ **Spacing System** (Generous but dense):
368
+
369
+ - **Base Unit**: 4px (Tailwind's default)
370
+ - **Section Padding**: `py-24` to `py-32` (96px-128px vertical) - generous breathing room between sections
371
+ - **Container Padding**: `px-6` (mobile) to `px-8` (desktop) - consistent horizontal margins
372
+ - **Internal Spacing**: `gap-6` to `gap-12` in grids - varies deliberately
373
+ - **Card Padding**: `p-8` to `p-12` - comfortable internal space
374
+ - **Element Gaps**: `space-y-4` to `space-y-6` for stacked content
375
+
376
+ **Dense Packing Strategy**:
377
+
378
+ - Elements should feel close but not cramped
379
+ - Use negative margins strategically: `-mt-8`, `-ml-4` to create overlap
380
+ - Stack cards with slight offset for depth
381
+
382
+ **Grid Usage** (Broken Grid Philosophy):
383
+
384
+ - **Never Perfect**: Avoid symmetrical, evenly-spaced grids
385
+ - **Variable Columns**: Use `grid-cols-1 md:grid-cols-2 lg:grid-cols-3` but break with `col-span-2` mixed with `col-span-1`
386
+ - **Vertical Offset**: Apply `translate-y-8` or `md:translate-y-12` to every other item (use modulo: `i % 2 === 1`)
387
+ - **Varying Heights**: Let content dictate height naturally, don't force equal heights
388
+ - **Gap Variance**: Use different gap sizes within same section (`gap-4` then `gap-8`)
389
+
390
+ **Max Width Strategy**:
391
+
392
+ - **Container**: `max-w-7xl` (1280px) for most sections
393
+ - **Full Bleed**: Hero and some feature sections use `max-w-none` or `max-w-screen`
394
+ - **Narrow Content**: Reading content uses `max-w-3xl` (768px)
395
+
396
+ **Z-Index Layering** (Critical for overlap):
397
+
398
+ ```
399
+ Background patterns: z-0
400
+ Content base: z-10
401
+ Overlapping cards: z-20
402
+ Floating decorations: z-30
403
+ Modals/overlays: z-40
404
+ Fixed header: z-50
405
+ ```
406
+
407
+ - Use relative positioning on parent to establish context
408
+ - Apply negative margins + higher z-index to create intentional overlap
409
+
410
+ ---
411
+
412
+ ## The "Bold Factor" (Non-Generic Signatures)
413
+
414
+ These are the **mandatory** elements that make Maximalism unmistakable:
415
+
416
+ ### 1. Floating Decorative Shapes
417
+
418
+ - **What**: Scattered SVG icons (stars, sparkles, circles, squares) and emoji throughout layout
419
+ - **Placement**: Absolute positioned with specific coordinates (`top-[10%] left-[5%]`)
420
+ - **Sizes**: Variable from `h-6 w-6` to `h-24 w-24` - intentionally inconsistent
421
+ - **Styling**: Filled with accent colors, often with animation
422
+ - **Animation**: Apply float, wiggle, spin-slow, or bounce-subtle
423
+ - **Density**: 5-10 shapes per full-height section minimum
424
+ - **Implementation**: Create reusable component, position absolutely within relative parent
425
+
426
+ ### 2. Massive Background Typography
427
+
428
+ - **What**: Oversized text behind content, partially visible, bleeding off edges
429
+ - **Size**: `text-[12rem]` to `text-[20rem]` - deliberately too large for viewport
430
+ - **Styling**: `opacity-20`, semi-transparent accent color or muted
431
+ - **Positioning**: Absolute, centered with transform, or bleeding from edge
432
+ - **Content**: Single impactful word (WOW, YES, GO, etc.) or repeated pattern
433
+ - **Purpose**: Adds depth and reinforces maximalist chaos
434
+
435
+ ### 3. Pattern-on-Pattern Layering
436
+
437
+ - **Minimum**: Every section must have at least 2 overlapping patterns
438
+ - **Common Combo**: Dots over stripes, checker over gradient, mesh over dots
439
+ - **Global + Local**: Fixed global patterns (2) + section-specific patterns (1-2)
440
+ - **Visibility**: Keep individual pattern opacity low (0.05-0.15) but layer for cumulative effect
441
+ - **Variety**: Rotate pattern types across sections (hero = mesh+dots, features = stripes+checker, etc.)
442
+
443
+ ### 4. Systematic Color Rotation
444
+
445
+ - **Rule**: Each major section highlights a different accent color from the five
446
+ - **Pattern**: Hero = Magenta, Stats = (all 5), Features = Cyan, Benefits = Orange, etc.
447
+ - **Repeated Elements**: In grids, cycle through colors using index modulo 5
448
+ - **Implementation**: Store colors in array, access via `colors[index % colors.length]`
449
+ - **Consistency**: Same color doesn't dominate consecutive sections
450
+
451
+ ### 5. Clashing Border Colors
452
+
453
+ - **Never Match**: Border color should clash with background color
454
+ - **Examples**:
455
+ - Magenta background Yellow border
456
+ - Cyan background Orange border
457
+ - Yellow background Magenta border
458
+ - **Contrast**: Choose colors from opposite sides of the palette
459
+ - **Thickness**: Always `border-4` or `border-8` - make the clash visible
460
+
461
+ ### 6. Multi-Layered Shadows
462
+
463
+ - **Never Single**: Every elevated element has 2-3 shadow layers minimum
464
+ - **Types**: Combine glow shadows (soft, colored) with hard shadows (offset, flat)
465
+ - **Colors**: Each shadow layer uses different accent color
466
+ - **Progression**: Hard shadows increase offset in 2x increments (8px → 16px → 32px)
467
+ - **Hover**: Add layer or increase intensity, never just change color
468
+
469
+ ### 7. Asymmetric Element Positioning
470
+
471
+ - **No Perfect Alignment**: Elements in same row sit at different vertical positions
472
+ - **Technique**: Apply `translate-y-8` or `-translate-y-4` to alternate items
473
+ - **Rotation**: Mix `rotate-1`, `rotate-2`, `-rotate-1` across cards
474
+ - **Skew**: Occasional `skew-x-2` on containers
475
+ - **Overlap**: Use negative margins to make elements overlap section boundaries
476
+
477
+ ### 8. Mixed Border Styles Within Sections
478
+
479
+ - **Rule**: Same section uses 2-3 different border styles
480
+ - **Mix**: Solid borders on some cards, dashed on others, dotted on accents
481
+ - **Example**: Feature cards with solid borders, icon containers with dashed, section divider with double
482
+ - **Purpose**: Adds to controlled chaos aesthetic
483
+
484
+ ### 9. Emoji as Decorative Elements
485
+
486
+ - **Usage**: Scatter throughout (🚀✨💫🎯💬⚡💰🔥❓)
487
+ - **Size**: Large `text-6xl` to `text-7xl`
488
+ - **Animation**: Apply bounce, float, wiggle
489
+ - **Placement**: Section headers, decorative accents, floating elements
490
+ - **Frequency**: 1-2 per major section
491
+
492
+ ### 10. Animated Gradient Text
493
+
494
+ - **What**: Headlines with animated multi-color gradient backgrounds
495
+ - **Colors**: 3-4 accent colors in linear gradient
496
+ - **Animation**: Background position shifts continuously (4s duration)
497
+ - **Usage**: 20-30% of major headlines
498
+ - **Implementation**: `background-clip: text`, `-webkit-text-fill-color: transparent`, animate `background-position`
499
+
500
+ ---
501
+
502
+ ## Animation & Motion
503
+
504
+ **Motion Philosophy**: Bouncy, playful, attention-grabbing. Nothing should feel static or stiff.
505
+
506
+ **Timing Relationships**:
507
+
508
+ ```
509
+ Ultra Fast: 100-200ms (Small interactions, icon rotations)
510
+ Fast: 200-300ms (Hover states, button presses)
511
+ Standard: 300-500ms (Card transitions, layout shifts)
512
+ Slow: 1-2s (Wiggle, pulse, bounce animations)
513
+ Very Slow: 4-8s (Float, gradient shift)
514
+ Ultra Slow: 20s (Spin, background rotation)
515
+ ```
516
+
517
+ **Easing Functions**:
518
+
519
+ - Default: `ease-out` (quick start, gentle end)
520
+ - Bouncy: `cubic-bezier(0.68, -0.55, 0.265, 1.55)` (overshoot effect)
521
+ - Smooth: `ease-in-out` (gradual both ends)
522
+
523
+ **Keyframe Animations**:
524
+
525
+ 1. **Float** (Gentle vertical movement):
526
+
527
+ ```css
528
+ @keyframes float {
529
+ 0%, 100% { transform: translateY(0) rotate(0deg); }
530
+ 50% { transform: translateY(-20px) rotate(5deg); }
531
+ }
532
+ Duration: 6s ease-in-out infinite
533
+ ```
534
+
535
+ 2. **Float Reverse** (Upward movement):
536
+
537
+ ```css
538
+ @keyframes float-reverse {
539
+ 0%, 100% { transform: translateY(0) rotate(0deg); }
540
+ 50% { transform: translateY(20px) rotate(-5deg); }
541
+ }
542
+ Duration: 5s ease-in-out infinite
543
+ ```
544
+
545
+ 3. **Pulse Glow** (Shadow intensity variation):
546
+
547
+ ```css
548
+ @keyframes pulse-glow {
549
+ 0%, 100% { box-shadow: 0 0 20px rgba(255, 58, 242, 0.5); }
550
+ 50% { box-shadow: 0 0 40px rgba(255, 58, 242, 0.8), 0 0 60px rgba(0, 245, 212, 0.5); }
551
+ }
552
+ Duration: 2s ease-in-out infinite
553
+ ```
554
+
555
+ 4. **Gradient Shift** (Background position animation):
556
+
557
+ ```css
558
+ @keyframes gradient-shift {
559
+ 0% { background-position: 0% 50%; }
560
+ 50% { background-position: 100% 50%; }
561
+ 100% { background-position: 0% 50%; }
562
+ }
563
+ Duration: 4s ease infinite
564
+ Requirement: Set background-size to 200-300%
565
+ ```
566
+
567
+ 5. **Spin Slow** (Continuous rotation):
568
+
569
+ ```css
570
+ @keyframes spin-slow {
571
+ from { transform: rotate(0deg); }
572
+ to { transform: rotate(360deg); }
573
+ }
574
+ Duration: 20s linear infinite
575
+ ```
576
+
577
+ 6. **Wiggle** (Back-and-forth rotation):
578
+
579
+ ```css
580
+ @keyframes wiggle {
581
+ 0%, 100% { transform: rotate(-3deg); }
582
+ 50% { transform: rotate(3deg); }
583
+ }
584
+ Duration: 1s ease-in-out infinite
585
+ ```
586
+
587
+ 7. **Bounce Subtle** (Vertical bounce):
588
+
589
+ ```css
590
+ @keyframes bounce-subtle {
591
+ 0%, 100% { transform: translateY(0); }
592
+ 50% { transform: translateY(-10px); }
593
+ }
594
+ Duration: 2s ease-in-out infinite
595
+ ```
596
+
597
+ **Animation Assignment**:
598
+
599
+ - **Floating Shapes**: Float, float-reverse, or float-slow
600
+ - **Key CTAs**: Pulse-glow
601
+ - **Gradient Text/Backgrounds**: Gradient-shift
602
+ - **Decorative Rings/Borders**: Spin-slow
603
+ - **Emoji/Icons**: Wiggle or bounce-subtle
604
+ - **Hero Elements**: Combination (float + pulse-glow)
605
+
606
+ **Performance Optimization**:
607
+
608
+ - Use `transform` and `opacity` only (GPU accelerated)
609
+ - Add `will-change: transform` to animated elements
610
+ - Avoid animating width, height, or color directly
611
+
612
+ **Reduced Motion**:
613
+
614
+ - Respect `prefers-reduced-motion: reduce`
615
+ - Disable keyframe animations
616
+ - Keep hover/active transitions but reduce duration to 150ms
617
+ - Maintain all visual styles, only remove continuous motion
618
+
619
+ ---
620
+
621
+ ## Anti-Patterns (What to Avoid)
622
+
623
+ These choices would **break** the Maximalism aesthetic:
624
+
625
+ ### 1. ❌ Neutral or Muted Borders
626
+
627
+ - **Wrong**: `border-gray-300` or `border-white/20`
628
+ - **Right**: `border-[#FF3AF2]` or `border-[#FFE600]`
629
+ - **Why**: Borders must be vibrant accent colors that pop
630
+
631
+ ### 2. ❌ Single-Layer Shadows
632
+
633
+ - **Wrong**: `shadow-lg` or single color shadow
634
+ - **Right**: Stacked colored shadows (glow + hard, or hard + hard)
635
+ - **Why**: Depth comes from layering, not softness
636
+
637
+ ### 3. Perfectly Aligned Grids
638
+
639
+ - **Wrong**: Symmetrical grid with equal spacing and heights
640
+ - **Right**: Broken grid with vertical offsets, rotations, and varying sizes
641
+ - **Why**: Maximalism embraces controlled chaos
642
+
643
+ ### 4. ❌ Empty Background Sections
644
+
645
+ - **Wrong**: Solid color background with no patterns or texture
646
+ - **Right**: 2-3 layered patterns (dots, stripes, mesh)
647
+ - **Why**: Empty space is wasted space in maximalism
648
+
649
+ ### 5. ❌ Subtle or Small Typography
650
+
651
+ - **Wrong**: `text-base` or `text-lg` for headlines
652
+ - **Right**: `text-5xl` to `text-9xl` for headlines
653
+ - **Why**: Maximalism is loud and unapologetic
654
+
655
+ ### 6. ❌ Monochromatic Color Schemes
656
+
657
+ - **Wrong**: Using one accent color throughout
658
+ - **Right**: Rotating through all 5 accent colors systematically
659
+ - **Why**: More colors = more dopamine
660
+
661
+ ### 7. ❌ Minimal or No Hover States
662
+
663
+ - **Wrong**: Only color change on hover
664
+ - **Right**: Scale + rotate + shadow change combined
665
+ - **Why**: Interactions should feel joyful and exaggerated
666
+
667
+ ### 8. ❌ Thin Borders (1-2px)
668
+
669
+ - **Wrong**: `border` or `border-2`
670
+ - **Right**: `border-4` or `border-8`
671
+ - **Why**: Borders are a design statement, not an afterthought
672
+
673
+ ### 9. ❌ Restrained Button Styles
674
+
675
+ - **Wrong**: Simple solid color button with subtle shadow
676
+ - **Right**: Gradient background, clashing border, stacked shadow, scale on hover
677
+ - **Why**: CTAs should demand attention
678
+
679
+ ### 10. ❌ No Text Shadows on Headlines
680
+
681
+ - **Wrong**: Flat text with no shadow
682
+ - **Right**: 2-3 layer text shadow in different accent colors
683
+ - **Why**: Depth and dimension make text pop
684
+
685
+ ### 11. ❌ Matching Border and Background Colors
686
+
687
+ - **Wrong**: Magenta background with magenta border
688
+ - **Right**: Magenta background with yellow or cyan border
689
+ - **Why**: Clashing creates visual interest
690
+
691
+ ### 12. ❌ Static Elements (No Animation)
692
+
693
+ - **Wrong**: All elements static with only CSS transitions
694
+ - **Right**: 30-40% of elements have continuous animation (float, wiggle, pulse)
695
+ - **Why**: Motion adds life and energy
696
+
697
+ ---
698
+
699
+ ## Accessibility & Best Practices
700
+
701
+ **Color Contrast** (Non-Negotiable):
702
+
703
+ - **Text Contrast**: White (#FFFFFF) on dark (#0D0D1A) maintains 19.5:1 ratio (AAA)
704
+ - **Accent Color Usage**: Never use accent colors for body text or critical information
705
+ - **Readable Backgrounds**: When text sits on accent color backgrounds, ensure:
706
+ - White text on dark accents (magenta, purple, cyan with sufficient darkness)
707
+ - Dark text (#0D0D1A) on light accents (yellow, light cyan)
708
+ - **Testing**: Use contrast checker to verify all text meets WCAG AA minimum (4.5:1 for normal text, 3:1 for large text)
709
+
710
+ **Focus States** (Maximum Visibility):
711
+
712
+ - **Double Ring System**: `ring-4 ring-[color-1] ring-offset-4 ring-offset-[color-2]`
713
+ - **Color Contrast**: Ring colors should contrast with both element and background
714
+ - **Total Thickness**: 8px minimum (ring + offset combined)
715
+ - **Additional Indicators**: Combine color change with outline style (`outline-dashed`)
716
+ - **Never**: Rely on color alone - always include structural change
717
+ - **Keyboard Navigation**: All interactive elements must be keyboard accessible
718
+
719
+ **Motion Sensitivity** (Respect User Preferences):
720
+
721
+ ```css
722
+ @media (prefers-reduced-motion: reduce) {
723
+ * {
724
+ animation-duration: 0.01ms !important;
725
+ animation-iteration-count: 1 !important;
726
+ transition-duration: 0.15s !important;
727
+ }
728
+ }
729
+ ```
730
+
731
+ - Disable all keyframe animations (float, pulse, spin)
732
+ - Reduce transition durations to minimal (150ms)
733
+ - Keep hover/active states but without exaggerated motion
734
+ - Maintain all visual styles (colors, borders, shadows)
735
+
736
+ **Screen Reader Considerations**:
737
+
738
+ - Decorative emoji and floating shapes should have `aria-hidden="true"`
739
+ - Pattern overlays should be CSS-only, not content
740
+ - Ensure semantic HTML structure (proper heading hierarchy)
741
+ - All interactive elements need accessible labels
742
+
743
+ **Performance**:
744
+
745
+ - Use `transform` and `opacity` for animations (GPU accelerated)
746
+ - Add `will-change: transform` sparingly on animated elements
747
+ - Patterns via CSS gradients preferred over images
748
+ - Consider `backdrop-filter` support and provide fallback
749
+
750
+ **Touch Targets**:
751
+
752
+ - Minimum size: 44x44px for all interactive elements
753
+ - Buttons default to `h-14` (56px) - well above minimum
754
+ - Ensure adequate spacing between touch targets (8px minimum gap)
755
+
756
+ ---
757
+
758
+ ## Layout & Spacing Rhythm
759
+
760
+ **Vertical Rhythm** (Section Flow):
761
+
762
+ ```
763
+ Section Padding: py-24 to py-32 (96px-128px between sections)
764
+ Section Inner Margin: mb-16 to mb-20 (64px-80px between title and content)
765
+ Content Groupings: space-y-8 to space-y-12 (32px-48px between content blocks)
766
+ Element Stacks: space-y-4 to space-y-6 (16px-24px between elements)
767
+ ```
768
+
769
+ **Horizontal Rhythm**:
770
+
771
+ ```
772
+ Container Padding: px-6 (mobile), px-8 (desktop)
773
+ Grid Gaps: gap-6 to gap-12 (varies deliberately)
774
+ Card Padding: p-8 to p-12
775
+ Button Padding: px-10 to px-12
776
+ Input Padding: px-6
777
+ ```
778
+
779
+ **Responsive Breakpoints**:
780
+
781
+ - **Mobile** (`< 768px`):
782
+
783
+ - Stack all grids vertically
784
+ - Maintain pattern density (reduce to 1-2 patterns, not zero)
785
+ - Keep accent colors and borders (don't simplify)
786
+ - Scale down typography but stay bold (text-4xl minimum for hero)
787
+ - Reduce floating shapes (5-6 instead of 10-12)
788
+ - Maintain rotation and offset effects
789
+ - **Tablet** (`768px - 1024px`):
790
+
791
+ - 2-column grids where desktop has 3
792
+ - Full pattern treatment returns
793
+ - All animations active
794
+ - **Desktop** (`> 1024px`):
795
+
796
+ - Full 3-4 column grids
797
+ - Maximum pattern density
798
+ - All decorative elements visible
799
+
800
+ **Critical Rule for Mobile**: Do NOT simplify to "clean minimalism" on mobile. Keep the chaos, just stack it vertically.
801
+
802
+ ---
803
+
804
+ ## Iconography Guidelines
805
+
806
+ **Icon Source**: Lucide React (or similar open-source icon set)
807
+
808
+ **Icon Sizing**:
809
+
810
+ ```
811
+ Small: h-5 w-5 (20px)
812
+ Default: h-10 w-10 (40px)
813
+ Large: h-16 w-16 (64px)
814
+ Decorative: h-24 w-24 (96px)
815
+ ```
816
+
817
+ **Icon Styling**:
818
+
819
+ - **Stroke Width**: Thick `stroke-[2.5px]` to `stroke-[3px]` for visibility
820
+ - **Colors**: Always accent colors, never muted
821
+ - **Containers**: Wrap in colored shapes:
822
+ - Circle: `rounded-full`
823
+ - Square: `rounded-xl`
824
+ - Border: `border-4 border-[accent]`
825
+ - Background: Semi-transparent accent `bg-[accent]/20`
826
+ - **Animation**: Icons can rotate, bounce, or pulse on hover
827
+
828
+ **Icon Placement**:
829
+
830
+ - Feature cards: Large icon at top
831
+ - Buttons: Small icon inline with text
832
+ - Floating decorations: Variety of sizes, absolute positioned
833
+ - Navigation: Medium size, colored on hover
834
+
835
+ ---
836
+
837
+ ## Implementation Notes
838
+
839
+ **Technology Assumptions**:
840
+
841
+ - **CSS Framework**: Tailwind CSS v4 (uses arbitrary values `[]` syntax)
842
+ - **Animations**: CSS keyframes defined in stylesheet, applied via utility classes
843
+ - **Patterns**: CSS gradient backgrounds, not images
844
+ - **Components**: Built with component variants (CVA) for consistency
845
+ - **Icons**: Lucide React or similar SVG icon library
846
+
847
+ **Configuration File Structure**:
848
+
849
+ ```typescript
850
+ export const config = {
851
+ colors: { background, foreground, muted, accent, secondary, tertiary, quaternary, quinary, border },
852
+ fonts: { heading, body, display },
853
+ radius: { base, button, card },
854
+ shadows: { glow, glowLg, multi, multiLg }
855
+ }
856
+ ```
857
+
858
+ **Reusable Patterns**:
859
+
860
+ - Create utility classes for patterns (`.pattern-dots`, `.pattern-stripes`, `.pattern-checker`, `.pattern-mesh`)
861
+ - Create shadow utilities (`.shadow-multi`, `.shadow-multi-lg`, `.glow-accent`, `.glow-accent-lg`)
862
+ - Create animation classes (`.animate-float`, `.animate-pulse-glow`, etc.)
863
+ - Store color array for rotation: `['accent', 'secondary', 'tertiary', 'quaternary', 'quinary']`
864
+
865
+ **Component Approach**:
866
+
867
+ - Build Button with 4 variants (default, secondary, outline, ghost)
868
+ - Build Card with composable parts (Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter)
869
+ - Build Input with built-in focus states
870
+ - All components use `cn()` utility for class merging
871
+
872
+ ---
873
+
874
+ **Final Reminder**: If it looks "too much" — it's probably just right. Maximalism is about abundance, joy, and visual stimulation. The design should make people FEEL something immediately. Restraint is not welcome here. Every element is an opportunity for color, pattern, shadow, animation, and delight.
875
+ `</design-system>`