@xulthekl/team-flow 0.52.0 → 0.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/.claude/always/phase-guard.md +1 -1
  2. package/.claude-plugin/marketplace.json +1 -1
  3. package/.claude-plugin/plugin.json +2 -2
  4. package/.codex-plugin/plugin.json +1 -1
  5. package/.cursor-plugin/marketplace.json +1 -1
  6. package/.cursor-plugin/plugin.json +1 -1
  7. package/.github/plugin/marketplace.json +2 -2
  8. package/AGENTS.md +3 -3
  9. package/CHANGELOG.md +140 -0
  10. package/GEMINI.md +1 -1
  11. package/HANDOFF.md +11 -0
  12. package/INSTALL.md +1 -1
  13. package/README.md +2 -2
  14. package/agents/prototype-builder.md +6 -5
  15. package/agents/prototype-env-scout.md +4 -4
  16. package/agents/release-archivist.md +5 -4
  17. package/docs/README_en.md +1 -1
  18. package/docs/usage-guide.md +4 -1
  19. package/gemini-extension.json +1 -1
  20. package/hooks/session-start +2 -2
  21. package/llms.txt +1 -1
  22. package/package.json +1 -1
  23. package/plugin.json +2 -2
  24. package/scripts/design-system-import.mjs +238 -0
  25. package/scripts/gen-primer.mjs +143 -0
  26. package/scripts/guard/checks/arch-merged.mjs +101 -0
  27. package/scripts/guard/checks/arch-snapshot.mjs +16 -3
  28. package/scripts/guard/design-token-guard.mjs +284 -63
  29. package/scripts/guard/guard.mjs +9 -1
  30. package/scripts/lib/arch-merge.mjs +407 -47
  31. package/scripts/lib/arch-parse.mjs +304 -26
  32. package/scripts/lib/cmd-arch.mjs +29 -1
  33. package/scripts/lib/cmd-publish.mjs +53 -6
  34. package/scripts/lib/cmd-state.mjs +2 -0
  35. package/scripts/lib/ds-parse.mjs +124 -0
  36. package/scripts/lib/prototype-sync.mjs +2 -1
  37. package/scripts/lib/state-loader.mjs +10 -0
  38. package/scripts/lib/test-merge.mjs +1 -1
  39. package/scripts/team-flow.mjs +14 -1
  40. package/scripts/token-extract.mjs +257 -0
  41. package/skills/architecture-design/templates/api.md +10 -4
  42. package/skills/design-system/SKILL.md +55 -9
  43. package/skills/design-system/references/agents/design-system-architect.md +44 -7
  44. package/skills/design-system/references/creation-flow.md +39 -5
  45. package/skills/design-system/references/showcase-board-b-end.md +78 -0
  46. package/skills/design-system/references/showcase-board-c-end.md +92 -0
  47. package/skills/design-system/references/token-derivation.md +34 -9
  48. package/skills/design-system/references/variant-schema.md +14 -3
  49. package/skills/prototype/SKILL.md +16 -10
  50. package/skills/prototype/references/builder-methodology.md +62 -5
  51. package/skills/prototype/references/craft/anti-ai-slop.md +1 -1
  52. package/skills/prototype/references/craft/state-coverage.md +8 -2
  53. package/skills/prototype/references/orchestration-flow.md +12 -3
  54. package/skills/prototype/references/prototype-scaffold/assets/design-tokens.css +2 -2
  55. package/skills/prototype/references/template.html +10 -10
  56. package/skills/release-archivist/SKILL.md +50 -33
  57. package/skills/release-archivist/references/closing-procedures.md +24 -4
  58. package/skills/workflow-bootstrap/SKILL.md +41 -20
  59. package/skills/workflow-orchestrator/references/state-model.md +3 -0
  60. package/templates/design-systems/references/claude.md +315 -0
  61. package/templates/design-systems/references/linear-app.md +370 -0
  62. package/templates/design-systems/references/notion.md +312 -0
  63. package/templates/design-systems/references/posthog.md +259 -0
  64. package/templates/design-systems/references/sentry.md +265 -0
  65. package/templates/design-systems/references/stripe.md +325 -0
  66. package/templates/design-systems/references/supabase.md +258 -0
  67. package/templates/design-systems/references/vercel.md +313 -0
  68. package/templates/design-systems/registry.json +75 -0
  69. package/templates/design-systems/styles.json +576 -0
@@ -0,0 +1,312 @@
1
+ # Design System Inspired by Notion
2
+
3
+ > Category: Productivity & SaaS
4
+ > All-in-one workspace. Warm minimalism, serif headings, soft surfaces.
5
+
6
+ ## 1. Visual Theme & Atmosphere
7
+
8
+ Notion's website embodies the philosophy of the tool itself: a blank canvas that gets out of your way. The design system is built on warm neutrals rather than cold grays, creating a distinctly approachable minimalism that feels like quality paper rather than sterile glass. The page canvas is pure white (`#ffffff`) but the text isn't pure black -- it's a warm near-black (`rgba(0,0,0,0.95)`) that softens the reading experience imperceptibly. The warm gray scale (`#f6f5f4`, `#31302e`, `#615d59`, `#a39e98`) carries subtle yellow-brown undertones, giving the interface a tactile, almost analog warmth.
9
+
10
+ The custom NotionInter font (a modified Inter) is the backbone of the system. At display sizes (64px), it uses aggressive negative letter-spacing (-2.125px), creating headlines that feel compressed and precise. The weight range is broader than typical systems: 400 for body, 500 for UI elements, 600 for semi-bold labels, and 700 for display headings. OpenType features `"lnum"` (lining numerals) and `"locl"` (localized forms) are enabled on larger text, adding typographic sophistication that rewards close reading.
11
+
12
+ What makes Notion's visual language distinctive is its border philosophy. Rather than heavy borders or shadows, Notion uses ultra-thin `1px solid rgba(0,0,0,0.1)` borders -- borders that exist as whispers, barely perceptible division lines that create structure without weight. The shadow system is equally restrained: multi-layer stacks with cumulative opacity never exceeding 0.05, creating depth that's felt rather than seen.
13
+
14
+ **Key Characteristics:**
15
+ - NotionInter (modified Inter) with negative letter-spacing at display sizes (-2.125px at 64px)
16
+ - Warm neutral palette: grays carry yellow-brown undertones (`#f6f5f4` warm white, `#31302e` warm dark)
17
+ - Near-black text via `rgba(0,0,0,0.95)` -- not pure black, creating micro-warmth
18
+ - Ultra-thin borders: `1px solid rgba(0,0,0,0.1)` throughout -- whisper-weight division
19
+ - Multi-layer shadow stacks with sub-0.05 opacity for barely-there depth
20
+ - Notion Blue (`#0075de`) as the singular accent color for CTAs and interactive elements
21
+ - Pill badges (9999px radius) with tinted blue backgrounds for status indicators
22
+ - 8px base spacing unit with an organic, non-rigid scale
23
+
24
+ ## 2. Color Palette & Roles
25
+
26
+ ### Primary
27
+ - **Notion Black** (`rgba(0,0,0,0.95)` / `#000000f2`): Primary text, headings, body copy. The 95% opacity softens pure black without sacrificing readability.
28
+ - **Pure White** (`#ffffff`): Page background, card surfaces, button text on blue.
29
+ - **Notion Blue** (`#0075de`): Primary CTA, link color, interactive accent -- the only saturated color in the core UI chrome.
30
+
31
+ ### Brand Secondary
32
+ - **Deep Navy** (`#213183`): Secondary brand color, used sparingly for emphasis and dark feature sections.
33
+ - **Active Blue** (`#005bab`): Button active/pressed state -- darker variant of Notion Blue.
34
+
35
+ ### Warm Neutral Scale
36
+ - **Warm White** (`#f6f5f4`): Background surface tint, section alternation, subtle card fill. The yellow undertone is key.
37
+ - **Warm Dark** (`#31302e`): Dark surface background, dark section text. Warmer than standard grays.
38
+ - **Warm Gray 500** (`#615d59`): Secondary text, descriptions, muted labels.
39
+ - **Warm Gray 300** (`#a39e98`): Placeholder text, disabled states, caption text.
40
+
41
+ ### Semantic Accent Colors
42
+ - **Teal** (`#2a9d99`): Success states, positive indicators.
43
+ - **Green** (`#1aae39`): Confirmation, completion badges.
44
+ - **Orange** (`#dd5b00`): Warning states, attention indicators.
45
+ - **Pink** (`#ff64c8`): Decorative accent, feature highlights.
46
+ - **Purple** (`#391c57`): Premium features, deep accents.
47
+ - **Brown** (`#523410`): Earthy accent, warm feature sections.
48
+
49
+ ### Interactive
50
+ - **Link Blue** (`#0075de`): Primary link color with underline-on-hover.
51
+ - **Link Light Blue** (`#62aef0`): Lighter link variant for dark backgrounds.
52
+ - **Focus Blue** (`#097fe8`): Focus ring on interactive elements.
53
+ - **Badge Blue Bg** (`#f2f9ff`): Pill badge background, tinted blue surface.
54
+ - **Badge Blue Text** (`#097fe8`): Pill badge text, darker blue for readability.
55
+
56
+ ### Shadows & Depth
57
+ - **Card Shadow** (`rgba(0,0,0,0.04) 0px 4px 18px, rgba(0,0,0,0.027) 0px 2.025px 7.84688px, rgba(0,0,0,0.02) 0px 0.8px 2.925px, rgba(0,0,0,0.01) 0px 0.175px 1.04062px`): Multi-layer card elevation.
58
+ - **Deep Shadow** (`rgba(0,0,0,0.01) 0px 1px 3px, rgba(0,0,0,0.02) 0px 3px 7px, rgba(0,0,0,0.02) 0px 7px 15px, rgba(0,0,0,0.04) 0px 14px 28px, rgba(0,0,0,0.05) 0px 23px 52px`): Five-layer deep elevation for modals and featured content.
59
+ - **Whisper Border** (`1px solid rgba(0,0,0,0.1)`): Standard division border -- cards, dividers, sections.
60
+
61
+ ## 3. Typography Rules
62
+
63
+ ### Font Family
64
+ - **Primary**: `NotionInter`, with fallbacks: `Inter, -apple-system, system-ui, Segoe UI, Helvetica, Apple Color Emoji, Arial, Segoe UI Emoji, Segoe UI Symbol`
65
+ - **OpenType Features**: `"lnum"` (lining numerals) and `"locl"` (localized forms) enabled on display and heading text.
66
+
67
+ ### Hierarchy
68
+
69
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
70
+ |------|------|------|--------|-------------|----------------|-------|
71
+ | Display Hero | NotionInter | 64px (4.00rem) | 700 | 1.00 (tight) | -2.125px | Maximum compression, billboard headlines |
72
+ | Display Secondary | NotionInter | 54px (3.38rem) | 700 | 1.04 (tight) | -1.875px | Secondary hero, feature headlines |
73
+ | Section Heading | NotionInter | 48px (3.00rem) | 700 | 1.00 (tight) | -1.5px | Feature section titles, with `"lnum"` |
74
+ | Sub-heading Large | NotionInter | 40px (2.50rem) | 700 | 1.50 | normal | Card headings, feature sub-sections |
75
+ | Sub-heading | NotionInter | 26px (1.63rem) | 700 | 1.23 (tight) | -0.625px | Section sub-titles, content headers |
76
+ | Card Title | NotionInter | 22px (1.38rem) | 700 | 1.27 (tight) | -0.25px | Feature cards, list titles |
77
+ | Body Large | NotionInter | 20px (1.25rem) | 600 | 1.40 | -0.125px | Introductions, feature descriptions |
78
+ | Body | NotionInter | 16px (1.00rem) | 400 | 1.50 | normal | Standard reading text |
79
+ | Body Medium | NotionInter | 16px (1.00rem) | 500 | 1.50 | normal | Navigation, emphasized UI text |
80
+ | Body Semibold | NotionInter | 16px (1.00rem) | 600 | 1.50 | normal | Strong labels, active states |
81
+ | Body Bold | NotionInter | 16px (1.00rem) | 700 | 1.50 | normal | Headlines at body size |
82
+ | Nav / Button | NotionInter | 15px (0.94rem) | 600 | 1.33 | normal | Navigation links, button text |
83
+ | Caption | NotionInter | 14px (0.88rem) | 500 | 1.43 | normal | Metadata, secondary labels |
84
+ | Caption Light | NotionInter | 14px (0.88rem) | 400 | 1.43 | normal | Body captions, descriptions |
85
+ | Badge | NotionInter | 12px (0.75rem) | 600 | 1.33 | 0.125px | Pill badges, tags, status labels |
86
+ | Micro Label | NotionInter | 12px (0.75rem) | 400 | 1.33 | 0.125px | Small metadata, timestamps |
87
+
88
+ ### Principles
89
+ - **Compression at scale**: NotionInter at display sizes uses -2.125px letter-spacing at 64px, progressively relaxing to -0.625px at 26px and normal at 16px. The compression creates density at headlines while maintaining readability at body sizes.
90
+ - **Four-weight system**: 400 (body/reading), 500 (UI/interactive), 600 (emphasis/navigation), 700 (headings/display). The broader weight range compared to most systems allows nuanced hierarchy.
91
+ - **Warm scaling**: Line height tightens as size increases -- 1.50 at body (16px), 1.23-1.27 at sub-headings, 1.00-1.04 at display. This creates denser, more impactful headlines.
92
+ - **Badge micro-tracking**: The 12px badge text uses positive letter-spacing (0.125px) -- the only positive tracking in the system, creating wider, more legible small text.
93
+
94
+ ## 4. Component Stylings
95
+
96
+ ### Buttons
97
+
98
+ **Primary Blue**
99
+ - Background: `#0075de` (Notion Blue)
100
+ - Text: `#ffffff`
101
+ - Padding: 8px 16px
102
+ - Radius: 4px (subtle)
103
+ - Border: `1px solid transparent`
104
+ - Hover: background darkens to `#005bab`
105
+ - Active: scale(0.9) transform
106
+ - Focus: `2px solid` focus outline, `var(--shadow-level-200)` shadow
107
+ - Use: Primary CTA ("Get Notion free", "Try it")
108
+
109
+ **Secondary / Tertiary**
110
+ - Background: `rgba(0,0,0,0.05)` (translucent warm gray)
111
+ - Text: `#000000` (near-black)
112
+ - Padding: 8px 16px
113
+ - Radius: 4px
114
+ - Hover: text color shifts, scale(1.05)
115
+ - Active: scale(0.9) transform
116
+ - Use: Secondary actions, form submissions
117
+
118
+ **Ghost / Link Button**
119
+ - Background: transparent
120
+ - Text: `rgba(0,0,0,0.95)`
121
+ - Decoration: underline on hover
122
+ - Use: Tertiary actions, inline links
123
+
124
+ **Pill Badge Button**
125
+ - Background: `#f2f9ff` (tinted blue)
126
+ - Text: `#097fe8`
127
+ - Padding: 4px 8px
128
+ - Radius: 9999px (full pill)
129
+ - Font: 12px weight 600
130
+ - Use: Status badges, feature labels, "New" tags
131
+
132
+ ### Cards & Containers
133
+ - Background: `#ffffff`
134
+ - Border: `1px solid rgba(0,0,0,0.1)` (whisper border)
135
+ - Radius: 12px (standard cards), 16px (featured/hero cards)
136
+ - Shadow: `rgba(0,0,0,0.04) 0px 4px 18px, rgba(0,0,0,0.027) 0px 2.025px 7.84688px, rgba(0,0,0,0.02) 0px 0.8px 2.925px, rgba(0,0,0,0.01) 0px 0.175px 1.04062px`
137
+ - Hover: subtle shadow intensification
138
+ - Image cards: 12px top radius, image fills top half
139
+
140
+ ### Inputs & Forms
141
+ - Background: `#ffffff`
142
+ - Text: `rgba(0,0,0,0.9)`
143
+ - Border: `1px solid #dddddd`
144
+ - Padding: 6px
145
+ - Radius: 4px
146
+ - Focus: blue outline ring
147
+ - Placeholder: warm gray `#a39e98`
148
+
149
+ ### Navigation
150
+ - Clean horizontal nav on white, not sticky
151
+ - Brand logo left-aligned (33x34px icon + wordmark)
152
+ - Links: NotionInter 15px weight 500-600, near-black text
153
+ - Hover: color shift to `var(--color-link-primary-text-hover)`
154
+ - CTA: blue pill button ("Get Notion free") right-aligned
155
+ - Mobile: hamburger menu collapse
156
+ - Product dropdowns with multi-level categorized menus
157
+
158
+ ### Image Treatment
159
+ - Product screenshots with `1px solid rgba(0,0,0,0.1)` border
160
+ - Top-rounded images: `12px 12px 0px 0px` radius
161
+ - Dashboard/workspace preview screenshots dominate feature sections
162
+ - Warm gradient backgrounds behind hero illustrations (decorative character illustrations)
163
+
164
+ ### Distinctive Components
165
+
166
+ **Feature Cards with Illustrations**
167
+ - Large illustrative headers (The Great Wave, product UI screenshots)
168
+ - 12px radius card with whisper border
169
+ - Title at 22px weight 700, description at 16px weight 400
170
+ - Warm white (`#f6f5f4`) background variant for alternating sections
171
+
172
+ **Trust Bar / Logo Grid**
173
+ - Company logos (trusted teams section) in their brand colors
174
+ - Horizontal scroll or grid layout with team counts
175
+ - Metric display: large number + description pattern
176
+
177
+ **Metric Cards**
178
+ - Large number display (e.g., "$4,200 ROI")
179
+ - NotionInter 40px+ weight 700 for the metric
180
+ - Description below in warm gray body text
181
+ - Whisper-bordered card container
182
+
183
+ ## 5. Layout Principles
184
+
185
+ ### Spacing System
186
+ - Base unit: 8px
187
+ - Scale: 2px, 3px, 4px, 5px, 6px, 7px, 8px, 11px, 12px, 14px, 16px, 24px, 32px
188
+ - Non-rigid organic scale with fractional values (5.6px, 6.4px) for micro-adjustments
189
+
190
+ ### Grid & Container
191
+ - Max content width: approximately 1200px
192
+ - Hero: centered single-column with generous top padding (80-120px)
193
+ - Feature sections: 2-3 column grids for cards
194
+ - Full-width warm white (`#f6f5f4`) section backgrounds for alternation
195
+ - Code/dashboard screenshots as contained with whisper border
196
+
197
+ ### Whitespace Philosophy
198
+ - **Generous vertical rhythm**: 64-120px between major sections. Notion lets content breathe with vast vertical padding.
199
+ - **Warm alternation**: White sections alternate with warm white (`#f6f5f4`) sections, creating gentle visual rhythm without harsh color breaks.
200
+ - **Content-first density**: Body text blocks are compact (line-height 1.50) but surrounded by ample margin, creating islands of readable content in a sea of white space.
201
+
202
+ ### Border Radius Scale
203
+ - Micro (4px): Buttons, inputs, functional interactive elements
204
+ - Subtle (5px): Links, list items, menu items
205
+ - Standard (8px): Small cards, containers, inline elements
206
+ - Comfortable (12px): Standard cards, feature containers, image tops
207
+ - Large (16px): Hero cards, featured content, promotional blocks
208
+ - Full Pill (9999px): Badges, pills, status indicators
209
+ - Circle (100%): Tab indicators, avatars
210
+
211
+ ## 6. Depth & Elevation
212
+
213
+ | Level | Treatment | Use |
214
+ |-------|-----------|-----|
215
+ | Flat (Level 0) | No shadow, no border | Page background, text blocks |
216
+ | Whisper (Level 1) | `1px solid rgba(0,0,0,0.1)` | Standard borders, card outlines, dividers |
217
+ | Soft Card (Level 2) | 4-layer shadow stack (max opacity 0.04) | Content cards, feature blocks |
218
+ | Deep Card (Level 3) | 5-layer shadow stack (max opacity 0.05, 52px blur) | Modals, featured panels, hero elements |
219
+ | Focus (Accessibility) | `2px solid var(--focus-color)` outline | Keyboard focus on all interactive elements |
220
+
221
+ **Shadow Philosophy**: Notion's shadow system uses multiple layers with extremely low individual opacity (0.01 to 0.05) that accumulate into soft, natural-looking elevation. The 4-layer card shadow spans from 1.04px to 18px blur, creating a gradient of depth rather than a single hard shadow. The 5-layer deep shadow extends to 52px blur at 0.05 opacity, producing ambient occlusion that feels like natural light rather than computer-generated depth. This layered approach makes elements feel embedded in the page rather than floating above it.
222
+
223
+ ### Decorative Depth
224
+ - Hero section: decorative character illustrations (playful, hand-drawn style)
225
+ - Section alternation: white to warm white (`#f6f5f4`) background shifts
226
+ - No hard section borders -- separation comes from background color changes and spacing
227
+
228
+ ## 7. Responsive Behavior
229
+
230
+ ### Breakpoints
231
+ | Name | Width | Key Changes |
232
+ |------|-------|-------------|
233
+ | Mobile Small | <400px | Tight single column, minimal padding |
234
+ | Mobile | 400-600px | Standard mobile, stacked layout |
235
+ | Tablet Small | 600-768px | 2-column grids begin |
236
+ | Tablet | 768-1080px | Full card grids, expanded padding |
237
+ | Desktop Small | 1080-1200px | Standard desktop layout |
238
+ | Desktop | 1200-1440px | Full layout, maximum content width |
239
+ | Large Desktop | >1440px | Centered, generous margins |
240
+
241
+ ### Touch Targets
242
+ - Buttons use comfortable padding (8px-16px vertical)
243
+ - Navigation links at 15px with adequate spacing
244
+ - Pill badges have 8px horizontal padding for tap targets
245
+ - Mobile menu toggle uses standard hamburger button
246
+
247
+ ### Collapsing Strategy
248
+ - Hero: 64px display -> scales to 40px -> 26px on mobile, maintains proportional letter-spacing
249
+ - Navigation: horizontal links + blue CTA -> hamburger menu
250
+ - Feature cards: 3-column -> 2-column -> single column stacked
251
+ - Product screenshots: maintain aspect ratio with responsive images
252
+ - Trust bar logos: grid -> horizontal scroll on mobile
253
+ - Footer: multi-column -> stacked single column
254
+ - Section spacing: 80px+ -> 48px on mobile
255
+
256
+ ### Image Behavior
257
+ - Workspace screenshots maintain whisper border at all sizes
258
+ - Hero illustrations scale proportionally
259
+ - Product screenshots use responsive images with consistent border radius
260
+ - Full-width warm white sections maintain edge-to-edge treatment
261
+
262
+ ## 8. Accessibility & States
263
+
264
+ ### Focus System
265
+ - All interactive elements receive visible focus indicators
266
+ - Focus outline: `2px solid` with focus color + shadow level 200
267
+ - Tab navigation supported throughout all interactive components
268
+ - High contrast text: near-black on white exceeds WCAG AAA (>14:1 ratio)
269
+
270
+ ### Interactive States
271
+ - **Default**: Standard appearance with whisper borders
272
+ - **Hover**: Color shift on text, scale(1.05) on buttons, underline on links
273
+ - **Active/Pressed**: scale(0.9) transform, darker background variant
274
+ - **Focus**: Blue outline ring with shadow reinforcement
275
+ - **Disabled**: Warm gray (`#a39e98`) text, reduced opacity
276
+
277
+ ### Color Contrast
278
+ - Primary text (rgba(0,0,0,0.95)) on white: ~18:1 ratio
279
+ - Secondary text (#615d59) on white: ~5.5:1 ratio (WCAG AA)
280
+ - Blue CTA (#0075de) on white: ~4.6:1 ratio (WCAG AA for large text)
281
+ - Badge text (#097fe8) on badge bg (#f2f9ff): ~4.5:1 ratio (WCAG AA for large text)
282
+
283
+ ## 9. Agent Prompt Guide
284
+
285
+ ### Quick Color Reference
286
+ - Primary CTA: Notion Blue (`#0075de`)
287
+ - Background: Pure White (`#ffffff`)
288
+ - Alt Background: Warm White (`#f6f5f4`)
289
+ - Heading text: Near-Black (`rgba(0,0,0,0.95)`)
290
+ - Body text: Near-Black (`rgba(0,0,0,0.95)`)
291
+ - Secondary text: Warm Gray 500 (`#615d59`)
292
+ - Muted text: Warm Gray 300 (`#a39e98`)
293
+ - Border: `1px solid rgba(0,0,0,0.1)`
294
+ - Link: Notion Blue (`#0075de`)
295
+ - Focus ring: Focus Blue (`#097fe8`)
296
+
297
+ ### Example Component Prompts
298
+ - "Create a hero section on white background. Headline at 64px NotionInter weight 700, line-height 1.00, letter-spacing -2.125px, color rgba(0,0,0,0.95). Subtitle at 20px weight 600, line-height 1.40, color #615d59. Blue CTA button (#0075de, 4px radius, 8px 16px padding, white text) and ghost button (transparent bg, near-black text, underline on hover)."
299
+ - "Design a card: white background, 1px solid rgba(0,0,0,0.1) border, 12px radius. Use shadow stack: rgba(0,0,0,0.04) 0px 4px 18px, rgba(0,0,0,0.027) 0px 2.025px 7.85px, rgba(0,0,0,0.02) 0px 0.8px 2.93px, rgba(0,0,0,0.01) 0px 0.175px 1.04px. Title at 22px NotionInter weight 700, letter-spacing -0.25px. Body at 16px weight 400, color #615d59."
300
+ - "Build a pill badge: #f2f9ff background, #097fe8 text, 9999px radius, 4px 8px padding, 12px NotionInter weight 600, letter-spacing 0.125px."
301
+ - "Create navigation: white header. NotionInter 15px weight 600 for links, near-black text. Blue pill CTA 'Get Notion free' right-aligned (#0075de bg, white text, 4px radius)."
302
+ - "Design an alternating section layout: white sections alternate with warm white (#f6f5f4) sections. Each section has 64-80px vertical padding, max-width 1200px centered. Section heading at 48px weight 700, line-height 1.00, letter-spacing -1.5px."
303
+
304
+ ### Iteration Guide
305
+ 1. Always use warm neutrals -- Notion's grays have yellow-brown undertones (#f6f5f4, #31302e, #615d59, #a39e98), never blue-gray
306
+ 2. Letter-spacing scales with font size: -2.125px at 64px, -1.875px at 54px, -0.625px at 26px, normal at 16px
307
+ 3. Four weights: 400 (read), 500 (interact), 600 (emphasize), 700 (announce)
308
+ 4. Borders are whispers: 1px solid rgba(0,0,0,0.1) -- never heavier
309
+ 5. Shadows use 4-5 layers with individual opacity never exceeding 0.05
310
+ 6. The warm white (#f6f5f4) section background is essential for visual rhythm
311
+ 7. Pill badges (9999px) for status/tags, 4px radius for buttons and inputs
312
+ 8. Notion Blue (#0075de) is the only saturated color in core UI -- use it sparingly for CTAs and links
@@ -0,0 +1,259 @@
1
+ # Design System Inspired by PostHog
2
+
3
+ > Category: Backend & Data
4
+ > Product analytics. Playful hedgehog branding, developer-friendly dark UI.
5
+
6
+ ## 1. Visual Theme & Atmosphere
7
+
8
+ PostHog's website feels like a startup's internal wiki that escaped into the wild — warm, irreverent, and deliberately anti-corporate. The background isn't the expected crisp white or dark void of developer tools; it's a warm, sage-tinted cream (`#fdfdf8`) that gives every surface a handmade, paper-like quality. Colors lean into earthy olive greens and muted sage rather than the conventional blues and purples of the SaaS world. It's as if someone designed a developer analytics platform inside a cozy garden shed.
9
+
10
+ The personality is the star: hand-drawn hedgehog illustrations, quirky action figures, and playful imagery replace the stock photography and abstract gradients typical of B2B SaaS. IBM Plex Sans Variable serves as the typographic foundation — a font with genuine technical credibility (created by IBM, widely used in developer contexts) deployed here with bold weights (700, 800) on headings and generous line-heights on body text. The typography says "we're serious engineers" while everything around it says "but we don't take ourselves too seriously."
11
+
12
+ The interaction design carries the same spirit: hover states flash PostHog Orange (`#F54E00`) text — a hidden brand color that doesn't appear at rest but surprises on interaction. Dark near-black buttons (`#1e1f23`) use opacity reduction on hover rather than color shifts, and active states scale slightly. The border system uses sage-tinted grays (`#bfc1b7`) that harmonize with the olive text palette. Built on Tailwind CSS with Radix UI and shadcn/ui primitives, the technical foundation is modern and component-driven, but the visual output is stubbornly unique.
13
+
14
+ **Key Characteristics:**
15
+ - Warm sage/olive color palette instead of conventional blues — earthy and approachable
16
+ - IBM Plex Sans Variable font at bold weights (700/800) for headings with generous 1.50+ line-heights
17
+ - Hidden brand orange (`#F54E00`) that only appears on hover interactions — a delightful surprise
18
+ - Hand-drawn hedgehog illustrations and playful imagery — deliberately anti-corporate
19
+ - Sage-tinted borders (`#bfc1b7`) and backgrounds (`#eeefe9`) creating a unified warm-green system
20
+ - Dark near-black CTAs (`#1e1f23`) with opacity-based hover states
21
+ - Content-heavy editorial layout — the site reads like a magazine, not a typical landing page
22
+ - Tailwind CSS + Radix UI + shadcn/ui component architecture
23
+
24
+ ## 2. Color Palette & Roles
25
+
26
+ ### Primary
27
+ - **Olive Ink** (`#4d4f46`): Primary text color — a distinctive olive-gray that gives all text a warm, earthy tone
28
+ - **Deep Olive** (`#23251d`): Link text and high-emphasis headings — near-black with green undertone
29
+ - **PostHog Orange** (`#F54E00`): Hidden brand accent — appears only on hover states, a vibrant orange that surprises
30
+
31
+ ### Secondary & Accent
32
+ - **Amber Gold** (`#F7A501`): Secondary hover accent on dark buttons — warm gold that pairs with the orange
33
+ - **Gold Border** (`#b17816`): Special button borders — an amber-gold for featured CTAs
34
+ - **Focus Blue** (`#3b82f6`): Focus ring color (Tailwind default) — the only blue in the system, reserved for accessibility
35
+
36
+ ### Surface & Background
37
+ - **Warm Parchment** (`#fdfdf8`): Primary page background — warm near-white with yellow-green undertone
38
+ - **Sage Cream** (`#eeefe9`): Input backgrounds, secondary surfaces — light sage tint
39
+ - **Light Sage** (`#e5e7e0`): Button backgrounds, tertiary surfaces — muted sage-green
40
+ - **Warm Tan** (`#d4c9b8`): Featured button backgrounds — warm tan/khaki for emphasis
41
+ - **Hover White** (`#f4f4f4`): Universal hover background state
42
+
43
+ ### Neutrals & Text
44
+ - **Olive Ink** (`#4d4f46`): Primary body and UI text
45
+ - **Muted Olive** (`#65675e`): Secondary text, button labels on light backgrounds
46
+ - **Sage Placeholder** (`#9ea096`): Placeholder text, disabled states — warm sage-green
47
+ - **Sage Border** (`#bfc1b7`): Primary border color — olive-tinted gray for all borders
48
+ - **Light Border** (`#b6b7af`): Secondary border, toolbar borders — slightly darker sage
49
+
50
+ ### Semantic & Accent
51
+ - **PostHog Orange** (`#F54E00`): Hover text accent — signals interactivity and brand personality
52
+ - **Amber Gold** (`#F7A501`): Dark button hover accent — warmth signal
53
+ - **Focus Blue** (`#3b82f6` at 50% opacity): Keyboard focus rings — accessibility-only color
54
+ - **Dark Text** (`#111827`): High-contrast link text — near-black for important links
55
+
56
+ ### Gradient System
57
+ - No gradients on the marketing site — PostHog's visual language is deliberately flat and warm
58
+ - Depth is achieved through layered surfaces and border containment, not color transitions
59
+
60
+ ## 3. Typography Rules
61
+
62
+ ### Font Family
63
+ - **Display & Body**: `IBM Plex Sans Variable` — variable font (100–700+ weight range). Fallbacks: `IBM Plex Sans, -apple-system, system-ui, Avenir Next, Avenir, Segoe UI, Helvetica Neue, Helvetica, Ubuntu, Roboto, Noto, Arial`
64
+ - **Monospace**: `ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New` — system monospace stack
65
+ - **Code Display**: `Source Code Pro` — with fallbacks: `Menlo, Consolas, Monaco`
66
+
67
+ ### Hierarchy
68
+
69
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
70
+ |------|------|------|--------|-------------|----------------|-------|
71
+ | Display Hero | IBM Plex Sans Variable | 30px | 800 | 1.20 | -0.75px | Extra-bold, tight, maximum impact |
72
+ | Section Heading | IBM Plex Sans Variable | 36px | 700 | 1.50 | 0px | Large but generous line-height |
73
+ | Feature Heading | IBM Plex Sans Variable | 24px | 700 | 1.33 | 0px | Feature section titles |
74
+ | Card Heading | IBM Plex Sans Variable | 21.4px | 700 | 1.40 | -0.54px | Slightly unusual size (scaled) |
75
+ | Sub-heading | IBM Plex Sans Variable | 20px | 700 | 1.40 | -0.5px | Content sub-sections |
76
+ | Sub-heading Uppercase | IBM Plex Sans Variable | 20px | 700 | 1.40 | 0px | Uppercase transform for labels |
77
+ | Body Emphasis | IBM Plex Sans Variable | 19.3px | 600 | 1.56 | -0.48px | Semi-bold callout text |
78
+ | Label Uppercase | IBM Plex Sans Variable | 18px | 700 | 1.50 | 0px | Uppercase category labels |
79
+ | Body Semi | IBM Plex Sans Variable | 18px | 600 | 1.56 | 0px | Semi-bold body text |
80
+ | Body | IBM Plex Sans Variable | 16px | 400 | 1.50 | 0px | Standard reading text |
81
+ | Body Medium | IBM Plex Sans Variable | 16px | 500 | 1.50 | 0px | Medium-weight body |
82
+ | Body Relaxed | IBM Plex Sans Variable | 15px | 400 | 1.71 | 0px | Relaxed line-height for long reads |
83
+ | Nav / UI | IBM Plex Sans Variable | 15px | 600 | 1.50 | 0px | Navigation and UI labels |
84
+ | Caption | IBM Plex Sans Variable | 14px | 400–700 | 1.43 | 0px | Small text, various weights |
85
+ | Small Label | IBM Plex Sans Variable | 13px | 500–700 | 1.00–1.50 | 0px | Tags, badges, micro labels |
86
+ | Micro | IBM Plex Sans Variable | 12px | 400–700 | 1.33 | 0px | Smallest text, some uppercase |
87
+ | Code | Source Code Pro | 14px | 500 | 1.43 | 0px | Code snippets and terminal |
88
+
89
+ ### Principles
90
+ - **Bold heading dominance**: Headings use 700–800 weight — PostHog's typography is confident and assertive, not whispery
91
+ - **Generous body line-heights**: Body text at 1.50–1.71 line-height creates extremely comfortable reading — the site is content-heavy and optimized for long sessions
92
+ - **Fractional sizes**: Several sizes (21.4px, 19.3px, 13.7px) suggest a fluid/scaled type system rather than fixed stops — likely computed from Tailwind's rem scale at non-standard base
93
+ - **Uppercase as category signal**: Bold uppercase labels (18px–20px weight 700) are used for product category headings — a magazine-editorial convention
94
+ - **Selective negative tracking**: Letter-spacing tightens on display text (-0.75px at 30px) but relaxes to 0px on body — headlines compress, body breathes
95
+
96
+ ## 4. Component Stylings
97
+
98
+ ### Buttons
99
+ - **Dark Primary**: `#1e1f23` background, white text, 6px radius, `10px 12px` padding. Hover: opacity 0.7 with Amber Gold text. Active: opacity 0.8 with slight scale transform. The main CTA — dark and confident
100
+ - **Sage Light**: `#e5e7e0` background, Olive Ink (`#4d4f46`) text, 4px radius, `4px` padding. Hover: `#f4f4f4` bg with PostHog Orange text. Compact utility button
101
+ - **Warm Tan Featured**: `#d4c9b8` background, black text, no visible radius. Hover: same orange text flash. Featured/premium actions
102
+ - **Input-style**: `#eeefe9` background, Sage Placeholder (`#9ea096`) text, 4px radius, 1px `#b6b7af` border. Looks like a search/filter control
103
+ - **Near-white Ghost**: `#fdfdf8` background, Olive Ink text, 4px radius, transparent 1px border. Minimal presence
104
+ - **Hover pattern**: All buttons flash PostHog Orange (`#F54E00`) or Amber Gold (`#F7A501`) text on hover — the brand's signature interaction surprise
105
+
106
+ ### Cards & Containers
107
+ - **Bordered Card**: Warm Parchment (`#fdfdf8`) or white background, 1px `#bfc1b7` border, 4px–6px radius — clean and minimal
108
+ - **Sage Surface Card**: `#eeefe9` background for secondary content containers
109
+ - **Shadow Card**: `0px 25px 50px -12px rgba(0, 0, 0, 0.25)` — a single deep shadow for elevated content (modals, dropdowns)
110
+ - **Hover**: Orange text flash on interactive cards — consistent with button behavior
111
+
112
+ ### Inputs & Forms
113
+ - **Default**: `#eeefe9` background, `#9ea096` placeholder text, 1px `#b6b7af` border, 4px radius, `2px 0px 2px 8px` padding
114
+ - **Focus**: `#3b82f6` ring at 50% opacity (Tailwind blue focus ring)
115
+ - **Text color**: `#374151` for input values — darker than primary text for readability
116
+ - **Border variations**: Multiple border patterns — some inputs use compound borders (top, left, bottom-only)
117
+
118
+ ### Navigation
119
+ - **Top nav**: Warm background, IBM Plex Sans at 15px weight 600
120
+ - **Dropdown menus**: Rich mega-menu structure with product categories
121
+ - **Link color**: Deep Olive (`#23251d`) for nav links, underline on hover
122
+ - **CTA**: Dark Primary button (#1e1f23) in the nav — "Get started - free"
123
+ - **Mobile**: Collapses to hamburger with simplified menu
124
+
125
+ ### Image Treatment
126
+ - **Hand-drawn illustrations**: Hedgehog mascot and quirky illustrations — the signature visual element
127
+ - **Product screenshots**: UI screenshots embedded in device frames or clean containers
128
+ - **Action figures**: Playful product photography of hedgehog figurines — anti-corporate
129
+ - **Trust logos**: Enterprise logos (Airbus, GOV.UK) displayed in a muted trust bar
130
+ - **Aspect ratios**: Mixed — illustrations are irregular, screenshots are 16:9 or widescreen
131
+
132
+ ### AI Chat Widget
133
+ - Floating PostHog AI assistant with speech bubble — an interactive product demo embedded in the marketing site
134
+
135
+ ## 5. Layout Principles
136
+
137
+ ### Spacing System
138
+ - **Base unit**: 8px
139
+ - **Scale**: 2px, 4px, 6px, 8px, 10px, 12px, 16px, 18px, 24px, 32px, 34px
140
+ - **Section padding**: 32px–48px vertical between sections (compact for a content-heavy site)
141
+ - **Card padding**: 4px–12px internal (notably compact)
142
+ - **Component gaps**: 4px–8px between related elements
143
+
144
+ ### Grid & Container
145
+ - **Max width**: 1536px (largest breakpoint), with content containers likely 1200px–1280px
146
+ - **Column patterns**: Varied — single column for text content, 2-3 column grids for feature cards, asymmetric layouts for product demos
147
+ - **Breakpoints**: 13 defined — 1px, 425px, 482px, 640px, 768px, 767px, 800px, 900px, 1024px, 1076px, 1160px, 1280px, 1536px
148
+
149
+ ### Whitespace Philosophy
150
+ - **Content-dense by design**: PostHog's site is information-rich — whitespace is measured, not lavish
151
+ - **Editorial pacing**: Content sections flow like a magazine with varied layouts keeping the eye moving
152
+ - **Illustrations as breathing room**: Hand-drawn hedgehog art breaks up dense content sections naturally
153
+
154
+ ### Border Radius Scale
155
+ - **2px**: Small inline elements, tags (`span`)
156
+ - **4px**: Primary UI components — buttons, inputs, dropdowns, menu items (`button`, `div`, `combobox`)
157
+ - **6px**: Secondary containers — larger buttons, list items, card variants (`button`, `div`, `li`)
158
+ - **9999px**: Pill shape — badges, status indicators, rounded tags (`span`, `div`)
159
+
160
+ ## 6. Depth & Elevation
161
+
162
+ | Level | Treatment | Use |
163
+ |-------|-----------|-----|
164
+ | Level 0 (Flat) | No shadow, warm parchment background | Page canvas, most surfaces |
165
+ | Level 1 (Border) | `1px solid #bfc1b7` (Sage Border) | Card containment, input borders, section dividers |
166
+ | Level 2 (Compound Border) | Multiple 1px borders on different sides | Input groupings, toolbar elements |
167
+ | Level 3 (Deep Shadow) | `0px 25px 50px -12px rgba(0, 0, 0, 0.25)` | Modals, floating elements, mega-menu dropdowns |
168
+
169
+ ### Shadow Philosophy
170
+ PostHog's elevation system is remarkably minimal — only one shadow definition exists in the entire system. Depth is communicated through:
171
+ - **Border containment**: Sage-tinted borders (`#bfc1b7`) at 1px create gentle warm separation
172
+ - **Surface color shifts**: Moving from `#fdfdf8` to `#eeefe9` to `#e5e7e0` creates layered depth without shadows
173
+ - **The single shadow**: The one defined shadow (`0 25px 50px -12px`) is reserved for floating elements — modals, dropdowns, popovers. It's a deep, dramatic shadow that creates clear separation when needed
174
+
175
+ ### Decorative Depth
176
+ - **Illustration layering**: Hand-drawn hedgehog art creates visual depth naturally
177
+ - **No gradients or glow**: The flat, warm surface system relies entirely on border and surface-color differentiation
178
+ - **No glassmorphism**: Fully opaque surfaces throughout
179
+
180
+ ## 7. Do's and Don'ts
181
+
182
+ ### Do
183
+ - Use the olive/sage color family (#4d4f46, #23251d, #bfc1b7) for text and borders — the warm green undertone is essential to the brand
184
+ - Flash PostHog Orange (#F54E00) on hover states — it's the hidden brand signature
185
+ - Use IBM Plex Sans at bold weights (700/800) for headings — the font carries technical credibility
186
+ - Keep body text at generous line-heights (1.50–1.71) — the content-heavy site demands readability
187
+ - Maintain the warm parchment background (#fdfdf8) — not pure white, never cold
188
+ - Use 4px border-radius for most UI elements — keep corners subtle and functional
189
+ - Include playful, hand-drawn illustration elements — the personality is the differentiator
190
+ - Apply opacity-based hover states (0.7 opacity) on dark buttons rather than color shifts
191
+
192
+ ### Don't
193
+ - Use blue, purple, or typical tech-SaaS colors — PostHog's palette is deliberately olive/sage
194
+ - Add heavy shadows — the system uses one shadow for floating elements only; everything else uses borders
195
+ - Make the design look "polished" or "premium" in a conventional sense — PostHog's charm is its irreverent, scrappy energy
196
+ - Use tight line-heights on body text — the generous 1.50+ spacing is essential for the content-heavy layout
197
+ - Apply large border-radius (12px+) on cards — PostHog uses 4px–6px, keeping things tight and functional
198
+ - Remove the orange hover flash — it's a core interaction pattern, not decoration
199
+ - Replace illustrations with stock photography — the hand-drawn hedgehog art is the brand
200
+ - Use pure white (#ffffff) as page background — the warm sage-cream (#fdfdf8) tint is foundational
201
+
202
+ ## 8. Responsive Behavior
203
+
204
+ ### Breakpoints
205
+ | Name | Width | Key Changes |
206
+ |------|-------|-------------|
207
+ | Mobile Small | <425px | Single column, compact padding, stacked cards |
208
+ | Mobile | 425px–640px | Slight layout adjustments, larger touch targets |
209
+ | Tablet | 640px–768px | 2-column grids begin, nav partially visible |
210
+ | Tablet Large | 768px–1024px | Multi-column layouts, expanded navigation |
211
+ | Desktop | 1024px–1280px | Full layout, 3-column feature grids, expanded mega-menu |
212
+ | Large Desktop | 1280px–1536px | Max-width container, generous margins |
213
+ | Extra Large | >1536px | Centered container at max-width |
214
+
215
+ ### Touch Targets
216
+ - Buttons: 4px–6px radius with `4px–12px` padding — compact but usable
217
+ - Nav links: 15px text at weight 600 with adequate padding
218
+ - Mobile: Hamburger menu with simplified navigation
219
+ - Inputs: Generous vertical padding for thumb-friendly forms
220
+
221
+ ### Collapsing Strategy
222
+ - **Navigation**: Full mega-menu with dropdowns → hamburger menu on mobile
223
+ - **Feature grids**: 3-column → 2-column → single column stacked
224
+ - **Typography**: Display sizes reduce across breakpoints (30px → smaller)
225
+ - **Illustrations**: Scale within containers, some may hide on mobile for space
226
+ - **Section spacing**: Reduces proportionally while maintaining readability
227
+
228
+ ### Image Behavior
229
+ - Illustrations scale responsively within containers
230
+ - Product screenshots maintain aspect ratios
231
+ - Trust logos reflow into multi-row grids on mobile
232
+ - AI chat widget may reposition or simplify on small screens
233
+
234
+ ## 9. Agent Prompt Guide
235
+
236
+ ### Quick Color Reference
237
+ - Primary Text: Olive Ink (`#4d4f46`)
238
+ - Dark Text: Deep Olive (`#23251d`)
239
+ - Hover Accent: PostHog Orange (`#F54E00`)
240
+ - Dark CTA: Near-Black (`#1e1f23`)
241
+ - Button Surface: Light Sage (`#e5e7e0`)
242
+ - Page Background: Warm Parchment (`#fdfdf8`)
243
+ - Border: Sage Border (`#bfc1b7`)
244
+ - Placeholder: Sage Placeholder (`#9ea096`)
245
+
246
+ ### Example Component Prompts
247
+ - "Create a hero section on warm parchment background (#fdfdf8) with 30px IBM Plex Sans heading at weight 800, line-height 1.20, letter-spacing -0.75px, olive ink text (#4d4f46), and a dark CTA button (#1e1f23, 6px radius, white text, opacity 0.7 on hover)"
248
+ - "Design a feature card with #fdfdf8 background, 1px #bfc1b7 border, 4px radius, IBM Plex Sans heading at 20px weight 700, and 16px body text at weight 400 with 1.50 line-height in olive ink (#4d4f46)"
249
+ - "Build a navigation bar with warm background, IBM Plex Sans links at 15px weight 600 in deep olive (#23251d), underline on hover, and a dark CTA button (#1e1f23) at the right"
250
+ - "Create a button group: primary dark (#1e1f23, white text, 6px radius), secondary sage (#e5e7e0, #4d4f46 text, 4px radius), and ghost/text button — all flash #F54E00 orange text on hover"
251
+ - "Design an input field with #eeefe9 background, 1px #b6b7af border, 4px radius, #9ea096 placeholder text, focus ring in #3b82f6 at 50% opacity"
252
+
253
+ ### Iteration Guide
254
+ When refining existing screens generated with this design system:
255
+ 1. Verify the background is warm parchment (#fdfdf8) not pure white — the sage-cream warmth is essential
256
+ 2. Check that all text uses the olive family (#4d4f46, #23251d) not pure black or neutral gray
257
+ 3. Ensure hover states flash PostHog Orange (#F54E00) — if hovering feels bland, you're missing this
258
+ 4. Confirm borders use sage-tinted gray (#bfc1b7) not neutral gray — warmth runs through every element
259
+ 5. The overall tone should feel like a fun, scrappy startup wiki — never corporate-polished or sterile