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.
- package/README.md +301 -124
- package/bin/install.js +1 -1
- 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 +32 -14
- 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 +19 -18
- 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 +10 -7
- 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 +216 -74
- package/gsp/skills/gsp-project-build/bento-grid.md +114 -0
- package/gsp/{agents/gsp-builder.md → skills/gsp-project-build/methodology/gsp-project-builder.md} +14 -16
- package/gsp/skills/gsp-project-critique/SKILL.md +21 -17
- 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/INDEX.yml +7 -1
- 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/nothing.md +445 -0
- package/gsp/skills/gsp-style/styles/nothing.yml +146 -0
- 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 +3 -2
- package/gsp/templates/exports-index.md +0 -7
- package/gsp/templates/phases/build.md +13 -4
- package/gsp/templates/projects/config.json +3 -2
- 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,213 +1,177 @@
|
|
|
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
|
-
* **Entrance/Exit**: Details accordion uses native `open:` state with chevron rotation
|
|
179
|
-
* **Image Overlays**: Fade overlays on hover (blog cards) using `group-hover:bg-transparent`
|
|
180
|
-
* **No Harsh Snaps**: All transitions eased, duration 300-700ms range for organic feel
|
|
181
|
-
|
|
182
|
-
## 7. Icons (Lucide React)
|
|
183
|
-
|
|
184
|
-
* **Style**: Default stroke width (2px)
|
|
185
|
-
* **Color**: Moss Green (#5D7052) as default, white on dark backgrounds
|
|
186
|
-
* **Containers**: Icons sit in `h-14 w-14` rounded-2xl containers with `bg-[#5D7052]/10` background
|
|
187
|
-
* **Hover Effect**: Container fills completely to solid moss green while icon switches to white
|
|
188
|
-
* **Sizing**: 28px (size={28}) for feature icons, 24px for benefit checkmarks, responsive sizing for navigation
|
|
189
|
-
* **Usage**: Social icons in footer, feature icons, benefit checkmarks, navigation menu toggle, arrows in CTAs
|
|
190
|
-
|
|
191
|
-
## 8. Accessibility
|
|
192
|
-
|
|
193
|
-
* **Contrast Ratios**:
|
|
194
|
-
* Primary text (#2C2C24) on background (#FDFCF8): 14.5:1 (AAA)
|
|
195
|
-
* Moss (#5D7052) on background: 6.2:1 (AA)
|
|
196
|
-
* Muted text (#78786C) on background: 4.8:1 (AA)
|
|
197
|
-
* **Focus States**: `focus-visible:ring-2 ring-[#5D7052] ring-offset-2` provides clear, soft focus indicator
|
|
198
|
-
* **Touch Targets**: All interactive elements meet 44px minimum (buttons h-12 = 48px)
|
|
199
|
-
* **Semantic HTML**: Proper heading hierarchy, nav landmarks, alt text for images, aria-labels where needed
|
|
200
|
-
* **Keyboard Navigation**: All interactive elements keyboard accessible, details/summary for FAQ accordion
|
|
201
|
-
|
|
202
|
-
## 9. Responsive Strategy
|
|
203
|
-
|
|
204
|
-
* **Mobile-First Approach**: Base styles mobile-optimized, enhanced at breakpoints
|
|
205
|
-
* **Breakpoint Usage**:
|
|
206
|
-
* `sm:` (640px): Horizontal padding increases, some flex-row layouts
|
|
207
|
-
* `md:` (768px): Major grid transitions (2-3 columns), nav reveals desktop version
|
|
208
|
-
* `lg:` (1024px): 3-column grids, 2-column hero/benefits layouts
|
|
209
|
-
* **Typography Scaling**: Hero headline `text-5xl md:text-7xl`, sections `text-4xl md:text-5xl`
|
|
210
|
-
* **Stack Behavior**: All grids collapse to single column on mobile, flex layouts switch to `flex-col`
|
|
211
|
-
* **Navigation**: Mobile uses hamburger menu with slide-out panel, desktop inline nav
|
|
212
|
-
* **Blob Simplification**: Blobs remain but overflow hidden on mobile to prevent layout issues
|
|
213
|
-
`</design-system>`
|
|
1
|
+
<design-system>
|
|
2
|
+
# Design Style: Organic / Natural
|
|
3
|
+
|
|
4
|
+
## 1. Design Philosophy
|
|
5
|
+
|
|
6
|
+
This style embraces **wabi-sabi**—the acceptance of transience and imperfection. It rejects the cold precision of digital interfaces in favor of **warmth, softness, and natural connection**. It feels **tactile, grounded, and calming**.
|
|
7
|
+
|
|
8
|
+
### Visual DNA
|
|
9
|
+
|
|
10
|
+
* **Core Signature**: Soft, amorphous blob shapes with varied organic border radii (using complex percentages like `60% 40% 30% 70% / 60% 30% 70% 40%`)
|
|
11
|
+
* **Texture is Essential**: Global grain/noise texture overlay at 3-4% opacity with multiply blend mode creates paper-like quality
|
|
12
|
+
* **Color Psychology**: Earth-drawn palette evokes forest floors, clay pottery, unbleached paper, dried grass, and river stones
|
|
13
|
+
* **Shadow Philosophy**: Soft, diffused shadows with natural color tints (moss green, clay orange) instead of pure black
|
|
14
|
+
* **Typography Emotion**: Fraunces serif brings old-world warmth with modern softness; Nunito's rounded terminals echo organic shapes
|
|
15
|
+
|
|
16
|
+
### Design Principles
|
|
17
|
+
|
|
18
|
+
* **Vibe**: Peaceful, sustainable, handcrafted, authentic, rooted, welcoming, human
|
|
19
|
+
* **Core Tenet**: "There are no straight lines in nature." Avoid sharp 90-degree angles. Everything should feel eroded by wind or water, or shaped by hand.
|
|
20
|
+
* **Rhythm**: Generous whitespace creates breathing room. Staggered grids and varied border radii prevent mechanical uniformity.
|
|
21
|
+
* **Interaction**: Gentle, natural motion—elements scale and lift on hover like picking up a river stone. No harsh snaps.
|
|
22
|
+
* **Asymmetry**: Intentional imperfection through rotated images, offset elements, and varied card shapes creates organic authenticity
|
|
23
|
+
* **Depth**: Multiple z-layers with blurred blobs, translucent overlays, and soft shadows create atmospheric depth without harsh contrast
|
|
24
|
+
|
|
25
|
+
## 2. Design Token System (The DNA)
|
|
26
|
+
|
|
27
|
+
### Colors (Single Palette - Light Mode)
|
|
28
|
+
|
|
29
|
+
A palette drawn from the forest floor, clay, and unbleached paper.
|
|
30
|
+
|
|
31
|
+
* `background`: `#FDFCF8` (Off-white, Rice Paper)
|
|
32
|
+
* `foreground`: `#2C2C24` (Deep Loam / Charcoal)
|
|
33
|
+
* `primary`: `#5D7052` (Moss Green)
|
|
34
|
+
* `primary-foreground`: `#F3F4F1` (Pale Mist)
|
|
35
|
+
* `secondary`: `#C18C5D` (Terracotta / Clay)
|
|
36
|
+
* `secondary-foreground`: `#FFFFFF` (White)
|
|
37
|
+
* `accent`: `#E6DCCD` (Sand / Beige)
|
|
38
|
+
* `accent-foreground`: `#4A4A40` (Bark)
|
|
39
|
+
* `muted`: `#F0EBE5` (Stone)
|
|
40
|
+
* `muted-foreground`: `#78786C` (Dried Grass)
|
|
41
|
+
* `border`: `#DED8CF` (Raw Timber)
|
|
42
|
+
* `destructive`: `#A85448` (Burnt Sienna)
|
|
43
|
+
|
|
44
|
+
### Typography
|
|
45
|
+
|
|
46
|
+
Combining a characterful serif with a clean, rounded sans-serif.
|
|
47
|
+
|
|
48
|
+
* **Headings**: **'Fraunces'** (Google Font). A variable font with "soft" axes. It has a distinct, old-style warmth but feels modern. Use weights 600-800.
|
|
49
|
+
* **Body**: **'Nunito'** or **'Quicksand'**. Rounded terminals are essential to match the organic shapes.
|
|
50
|
+
* **Scale**: Moderate, not aggressive. 1.25 scale.
|
|
51
|
+
|
|
52
|
+
### Radius & Shapes
|
|
53
|
+
|
|
54
|
+
* **Standard Radius**: `rounded-2xl` (16px) or `rounded-3xl` (24px).
|
|
55
|
+
* **Organic Shapes**: Use custom classes or inline styles for specific elements to create blob shapes.
|
|
56
|
+
* Example: `border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;`
|
|
57
|
+
* **Borders**: Soft, sometimes slightly imperfect (simulated via double borders or slightly transparent thick borders).
|
|
58
|
+
|
|
59
|
+
### Shadows & Effects
|
|
60
|
+
|
|
61
|
+
* **Shadows**: Soft, diffused, colored shadows. Never pure black.
|
|
62
|
+
* `shadow-soft`: `0 4px 20px -2px rgba(93, 112, 82, 0.15)` (Moss tinted)
|
|
63
|
+
* `shadow-float`: `0 10px 40px -10px rgba(193, 140, 93, 0.2)` (Clay tinted)
|
|
64
|
+
* **Textures**: **CRITICAL**. The background should have a subtle noise or paper grain overlay.
|
|
65
|
+
* Implementation: Use a fixed pseudo-element on the body or main container with a base64 noise pattern set to `mix-blend-mode: multiply` and very low opacity (3-5%).
|
|
66
|
+
|
|
67
|
+
## 3. Component Stylings
|
|
68
|
+
|
|
69
|
+
### Buttons
|
|
70
|
+
|
|
71
|
+
* **Shape**: Fully rounded pills (`rounded-full`) for all variants
|
|
72
|
+
* **Primary**: Moss Green (#5D7052) background with Pale Mist (#F3F4F1) text. Soft colored shadow: `shadow-[0_4px_20px_-2px_rgba(93,112,82,0.15)]`
|
|
73
|
+
* **Outline**: 2px Terracotta (#C18C5D) border, transparent background, Terracotta text
|
|
74
|
+
* **Ghost**: Transparent with Moss Green text, hover fills with Moss/10 background
|
|
75
|
+
* **Interaction**: `hover:scale-105` with deepened shadow `hover:shadow-[0_6px_24px_-4px_rgba(93,112,82,0.25)]`. Active state: `active:scale-95` for tactile feedback
|
|
76
|
+
* **Sizes**: Default h-12, sm h-10, lg h-14. Generous horizontal padding (px-8 to px-10)
|
|
77
|
+
* **Typography**: Bold weight, base to lg sizing
|
|
78
|
+
|
|
79
|
+
### Cards / Containers
|
|
80
|
+
|
|
81
|
+
* **Background**: Extremely light beige (#FEFEFA) over off-white page background
|
|
82
|
+
* **Border**: Soft timber border (#DED8CF) at 50% opacity: `border-[#DED8CF]/50`
|
|
83
|
+
* **Shape**: `rounded-[2rem]` base with asymmetric variations using custom values like `rounded-tl-[4rem]` on specific corners
|
|
84
|
+
* **Shadows**: Moss-tinted soft shadow: `shadow-[0_4px_20px_-2px_rgba(93,112,82,0.15)]`
|
|
85
|
+
* **Texture**: Fixed noise overlay layer at 3% opacity with multiply blend mode
|
|
86
|
+
* **Interaction**: Feature cards lift with `hover:-translate-y-1` and shadow deepens to `hover:shadow-[0_20px_40px_-10px_rgba(93,112,82,0.15)]`
|
|
87
|
+
|
|
88
|
+
### Inputs
|
|
89
|
+
|
|
90
|
+
* **Shape**: Pill-shaped with `rounded-full`
|
|
91
|
+
* **Border**: Timber border (#DED8CF)
|
|
92
|
+
* **Background**: `bg-white/50` (semi-transparent) revealing page grain texture beneath
|
|
93
|
+
* **Focus State**: `focus-visible:ring-2 ring-[#5D7052]/30` with `ring-offset-2` for soft, natural glow (not sharp outline)
|
|
94
|
+
* **Typography**: Sans-serif body font, text-sm
|
|
95
|
+
* **Height**: h-12 for comfortable touch target
|
|
96
|
+
|
|
97
|
+
### Navigation
|
|
98
|
+
|
|
99
|
+
* **Style**: Sticky floating pill (`sticky top-4`) with glassmorphism
|
|
100
|
+
* **Background**: `bg-white/70` with `backdrop-blur-md` for frosted effect
|
|
101
|
+
* **Border**: Soft timber border at 50% opacity with subtle shadow
|
|
102
|
+
* **Shape**: `rounded-full`
|
|
103
|
+
* **Logo**: Circular moss green container with white icon
|
|
104
|
+
* **Mobile**: Full menu dropdown with organic rounded borders (`rounded-[2rem]`)
|
|
105
|
+
|
|
106
|
+
## 4. Layout & Spacing
|
|
107
|
+
|
|
108
|
+
* **Container Widths**: Vary by section for visual rhythm
|
|
109
|
+
* Primary content: `max-w-7xl` (hero, features, blog, pricing)
|
|
110
|
+
* Focused content: `max-w-6xl` (how it works, FAQ)
|
|
111
|
+
* Intimate content: `max-w-5xl` (final CTA)
|
|
112
|
+
* Text-heavy sections: `max-w-4xl` (hero inner), `max-w-2xl` (product detail text)
|
|
113
|
+
* **Section Padding**: Consistent `py-32` vertical spacing with `px-4 sm:px-6 lg:px-8` horizontal
|
|
114
|
+
* **Grid Patterns**:
|
|
115
|
+
* Stats: `grid-cols-2 md:grid-cols-4`
|
|
116
|
+
* Features/Blog/Testimonials: `md:grid-cols-3` (or `md:grid-cols-2 lg:grid-cols-3`)
|
|
117
|
+
* Two-column layouts: `lg:grid-cols-2`
|
|
118
|
+
* Grid gaps: Consistent `gap-8` with optional `md:gap-12` for stats
|
|
119
|
+
* **Whitespace Philosophy**: Use generous gaps (gap-8, gap-12, gap-16) to let design breathe. Space is a design element, not empty canvas.
|
|
120
|
+
|
|
121
|
+
## 5. Non-Genericness (The Bold Factors)
|
|
122
|
+
|
|
123
|
+
* **Blob Backgrounds**: Large absolute-positioned blobs with `blur-3xl` create ambient color washes. Multiple shapes (via shapeIndex prop) with varied organic border radii. Used in Hero (2 blobs), Product Detail, Features, and Final CTA sections.
|
|
124
|
+
* **Rotated Image Frames**: Product detail image rotated `-2deg` with thick 4px white border creates handcrafted photo feel
|
|
125
|
+
* **Organic Image Masks**: Benefits section image uses complex blob border-radius: `rounded-[30%_70%_70%_30%_/_30%_30%_70%_70%]`
|
|
126
|
+
* **Asymmetric Card Radii**: Feature cards cycle through 6 different border-radius patterns, mixing large corner curves (4rem, 5rem) with standard (2rem)
|
|
127
|
+
* **Curved SVG Connectors**: How It Works uses hand-drawn looking curved dashed SVG path instead of straight lines
|
|
128
|
+
* **Hover Micro-rotations**: Testimonial cards subtly rotate on hover (`hover:rotate-1`) mimicking picking up a physical card
|
|
129
|
+
* **Varied Section Backgrounds**: Alternating between off-white, stone tint (#F0EBE5/30), sand (#E6DCCD/30), moss green (#5D7052), and terracotta (#C18C5D)
|
|
130
|
+
* **Dual Texture Layers**: Global grain texture PLUS section-specific noise overlays and blob backgrounds create rich depth
|
|
131
|
+
|
|
132
|
+
## 6. Effects & Animation
|
|
133
|
+
|
|
134
|
+
* **Transition Philosophy**: Natural, gentle motion. Use `transition-all duration-300` or `duration-500` for smooth changes
|
|
135
|
+
* **Hover Animations**:
|
|
136
|
+
* Buttons: `hover:scale-105` with shadow increase
|
|
137
|
+
* Cards: `hover:-translate-y-1` (lift) or `hover:rotate-1` (subtle tilt)
|
|
138
|
+
* Stats: `group-hover:scale-110` on numbers
|
|
139
|
+
* Images: `hover:scale-105` with 700ms duration for slow reveal
|
|
140
|
+
* Icon containers: Background color fill transition
|
|
141
|
+
* **Active States**: `active:scale-95` on buttons for tactile press feedback
|
|
142
|
+
* **Entrance/Exit**: Details accordion uses native `open:` state with chevron rotation
|
|
143
|
+
* **Image Overlays**: Fade overlays on hover (blog cards) using `group-hover:bg-transparent`
|
|
144
|
+
* **No Harsh Snaps**: All transitions eased, duration 300-700ms range for organic feel
|
|
145
|
+
|
|
146
|
+
## 7. Icons (Lucide React)
|
|
147
|
+
|
|
148
|
+
* **Style**: Default stroke width (2px)
|
|
149
|
+
* **Color**: Moss Green (#5D7052) as default, white on dark backgrounds
|
|
150
|
+
* **Containers**: Icons sit in `h-14 w-14` rounded-2xl containers with `bg-[#5D7052]/10` background
|
|
151
|
+
* **Hover Effect**: Container fills completely to solid moss green while icon switches to white
|
|
152
|
+
* **Sizing**: 28px (size={28}) for feature icons, 24px for benefit checkmarks, responsive sizing for navigation
|
|
153
|
+
* **Usage**: Social icons in footer, feature icons, benefit checkmarks, navigation menu toggle, arrows in CTAs
|
|
154
|
+
|
|
155
|
+
## 8. Accessibility
|
|
156
|
+
|
|
157
|
+
* **Contrast Ratios**:
|
|
158
|
+
* Primary text (#2C2C24) on background (#FDFCF8): 14.5:1 (AAA)
|
|
159
|
+
* Moss (#5D7052) on background: 6.2:1 (AA)
|
|
160
|
+
* Muted text (#78786C) on background: 4.8:1 (AA)
|
|
161
|
+
* **Focus States**: `focus-visible:ring-2 ring-[#5D7052] ring-offset-2` provides clear, soft focus indicator
|
|
162
|
+
* **Touch Targets**: All interactive elements meet 44px minimum (buttons h-12 = 48px)
|
|
163
|
+
* **Semantic HTML**: Proper heading hierarchy, nav landmarks, alt text for images, aria-labels where needed
|
|
164
|
+
* **Keyboard Navigation**: All interactive elements keyboard accessible, details/summary for FAQ accordion
|
|
165
|
+
|
|
166
|
+
## 9. Responsive Strategy
|
|
167
|
+
|
|
168
|
+
* **Mobile-First Approach**: Base styles mobile-optimized, enhanced at breakpoints
|
|
169
|
+
* **Breakpoint Usage**:
|
|
170
|
+
* `sm:` (640px): Horizontal padding increases, some flex-row layouts
|
|
171
|
+
* `md:` (768px): Major grid transitions (2-3 columns), nav reveals desktop version
|
|
172
|
+
* `lg:` (1024px): 3-column grids, 2-column hero/benefits layouts
|
|
173
|
+
* **Typography Scaling**: Hero headline `text-5xl md:text-7xl`, sections `text-4xl md:text-5xl`
|
|
174
|
+
* **Stack Behavior**: All grids collapse to single column on mobile, flex layouts switch to `flex-col`
|
|
175
|
+
* **Navigation**: Mobile uses hamburger menu with slide-out panel, desktop inline nav
|
|
176
|
+
* **Blob Simplification**: Blobs remain but overflow hidden on mobile to prevent layout issues
|
|
177
|
+
`</design-system>`
|