@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,265 @@
1
+ # Design System Inspired by Sentry
2
+
3
+ > Category: Backend & Data
4
+ > Error monitoring. Dark dashboard, data-dense, pink-purple accent.
5
+
6
+ ## 1. Visual Theme & Atmosphere
7
+
8
+ Sentry's website is a dark-mode-first developer tool interface that speaks the language of code editors and terminal windows. The entire aesthetic is rooted in deep purple-black backgrounds (`#1f1633`, `#150f23`) that evoke the late-night debugging sessions Sentry was built for. Against this inky canvas, a carefully curated set of purples, pinks, and a distinctive lime-green accent (`#c2ef4e`) create a visual system that feels simultaneously technical and vibrant.
9
+
10
+ The typography pairing is deliberate: "Dammit Sans" appears at hero scale (88px, weight 700) as a display font with personality and attitude that matches Sentry's irreverent brand voice ("Code breaks. Fix it faster."), while Rubik serves as the workhorse UI font across all functional text — headings, body, buttons, captions, and navigation. Monaco provides the monospace layer for code snippets and technical content, completing the developer-tool trinity.
11
+
12
+ What makes Sentry distinctive is its embrace of the "dark IDE" aesthetic without feeling cold or sterile. Warm purple tones replace the typical cool grays of developer tools, and bold illustrative elements (3D characters, colorful product screenshots) punctuate the dark canvas. The button system uses a signature muted purple (`#79628c`) with inset shadows that creates a tactile, almost physical quality — buttons feel like they could be pressed into the surface.
13
+
14
+ **Key Characteristics:**
15
+ - Dark purple-black backgrounds (`#1f1633`, `#150f23`) — never pure black
16
+ - Warm purple accent spectrum: from deep (`#362d59`) through mid (`#79628c`, `#6a5fc1`) to vibrant (`#422082`)
17
+ - Lime-green accent (`#c2ef4e`) for high-visibility CTAs and highlights
18
+ - Pink/coral accents (`#ffb287`, `#fa7faa`) for focus states and secondary highlights
19
+ - "Dammit Sans" display font for brand personality at hero scale
20
+ - Rubik as primary UI font with uppercase letter-spaced labels
21
+ - Monaco monospace for code elements
22
+ - Inset shadows on buttons creating tactile depth
23
+ - Frosted glass effects with `blur(18px) saturate(180%)`
24
+
25
+ ## 2. Color Palette & Roles
26
+
27
+ ### Primary Brand
28
+ - **Deep Purple** (`#1f1633`): Primary background, the defining color of the brand
29
+ - **Darker Purple** (`#150f23`): Deeper sections, footer, secondary backgrounds
30
+ - **Border Purple** (`#362d59`): Borders, dividers, subtle structural lines
31
+
32
+ ### Accent Colors
33
+ - **Sentry Purple** (`#6a5fc1`): Primary interactive color — links, hover states, focus rings
34
+ - **Muted Purple** (`#79628c`): Button backgrounds, secondary interactive elements
35
+ - **Deep Violet** (`#422082`): Select dropdowns, active states, high-emphasis surfaces
36
+ - **Lime Green** (`#c2ef4e`): High-visibility accent, special links, badge highlights
37
+ - **Coral** (`#ffb287`): Focus state backgrounds, warm accent
38
+ - **Pink** (`#fa7faa`): Focus outlines, decorative accents
39
+
40
+ ### Text Colors
41
+ - **Pure White** (`#ffffff`): Primary text on dark backgrounds
42
+ - **Light Gray** (`#e5e7eb`): Secondary text, muted content
43
+ - **Code Yellow** (`#dcdcaa`): Syntax highlighting, code tokens
44
+
45
+ ### Surface & Overlay
46
+ - **Glass White** (`rgba(255, 255, 255, 0.18)`): Frosted glass button backgrounds
47
+ - **Glass Dark** (`rgba(54, 22, 107, 0.14)`): Hover overlay on glass elements
48
+ - **Input White** (`#ffffff`): Form input backgrounds (light context)
49
+ - **Input Border** (`#cfcfdb`): Form field borders
50
+
51
+ ### Shadows
52
+ - **Ambient Glow** (`rgba(22, 15, 36, 0.9) 0px 4px 4px 9px`): Deep purple ambient shadow
53
+ - **Button Hover** (`rgba(0, 0, 0, 0.18) 0px 0.5rem 1.5rem`): Elevated hover state
54
+ - **Card Shadow** (`rgba(0, 0, 0, 0.1) 0px 10px 15px -3px`): Standard card elevation
55
+ - **Inset Button** (`rgba(0, 0, 0, 0.1) 0px 1px 3px 0px inset`): Tactile pressed effect
56
+
57
+ ## 3. Typography Rules
58
+
59
+ ### Font Families
60
+ - **Display**: `Dammit Sans` — brand personality font for hero headings
61
+ - **Primary UI**: `Rubik`, with fallbacks: `-apple-system, system-ui, Segoe UI, Helvetica, Arial`
62
+ - **Monospace**: `Monaco`, with fallbacks: `Menlo, Ubuntu Mono`
63
+
64
+ ### Hierarchy
65
+
66
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
67
+ |------|------|------|--------|-------------|----------------|-------|
68
+ | Display Hero | Dammit Sans | 88px (5.50rem) | 700 | 1.20 (tight) | normal | Maximum impact, brand voice |
69
+ | Display Secondary | Dammit Sans | 60px (3.75rem) | 500 | 1.10 (tight) | normal | Secondary hero text |
70
+ | Section Heading | Rubik | 30px (1.88rem) | 400 | 1.20 (tight) | normal | Major section titles |
71
+ | Sub-heading | Rubik | 27px (1.69rem) | 500 | 1.25 (tight) | normal | Feature section headers |
72
+ | Card Title | Rubik | 24px (1.50rem) | 500 | 1.25 (tight) | normal | Card and block headings |
73
+ | Feature Title | Rubik | 20px (1.25rem) | 600 | 1.25 (tight) | normal | Emphasized feature names |
74
+ | Body | Rubik | 16px (1.00rem) | 400 | 1.50 | normal | Standard body text |
75
+ | Body Emphasis | Rubik | 16px (1.00rem) | 500–600 | 1.50 | normal | Bold body, nav items |
76
+ | Nav Label | Rubik | 15px (0.94rem) | 500 | 1.40 | normal | Navigation links |
77
+ | Uppercase Label | Rubik | 15px (0.94rem) | 500 | 1.25 (tight) | normal | `text-transform: uppercase` |
78
+ | Button Text | Rubik | 14px (0.88rem) | 500–700 | 1.14–1.29 (tight) | 0.2px | `text-transform: uppercase` |
79
+ | Caption | Rubik | 14px (0.88rem) | 500–700 | 1.00–1.43 | 0.2px | Often uppercase |
80
+ | Small Caption | Rubik | 12px (0.75rem) | 600 | 2.00 (relaxed) | normal | Subtle annotations |
81
+ | Micro Label | Rubik | 10px (0.63rem) | 600 | 1.80 (relaxed) | 0.25px | `text-transform: uppercase` |
82
+ | Code | Monaco | 16px (1.00rem) | 400–700 | 1.50 | normal | Code blocks, technical text |
83
+
84
+ ### Principles
85
+ - **Dual personality**: Dammit Sans brings irreverent brand character at display scale; Rubik provides clean professionalism for everything functional.
86
+ - **Uppercase as system**: Buttons, captions, labels, and micro-text all use `text-transform: uppercase` with subtle letter-spacing (0.2px–0.25px), creating a systematic "technical label" pattern throughout.
87
+ - **Weight stratification**: Rubik uses 400 (body), 500 (emphasis/nav), 600 (titles/strong), 700 (buttons/CTAs) — a clean four-tier weight system.
88
+ - **Tight headings, relaxed body**: All headings use 1.10–1.25 line-height; body uses 1.50; small captions expand to 2.00 for readability at tiny sizes.
89
+
90
+ ## 4. Component Stylings
91
+
92
+ ### Buttons
93
+
94
+ **Primary Muted Purple**
95
+ - Background: `#79628c` (rgb(121, 98, 140))
96
+ - Text: `#ffffff`, uppercase, 14px, weight 500–700, letter-spacing 0.2px
97
+ - Border: `1px solid #584674`
98
+ - Radius: 13px
99
+ - Shadow: `rgba(0, 0, 0, 0.1) 0px 1px 3px 0px inset` (tactile inset)
100
+ - Hover: elevated shadow `rgba(0, 0, 0, 0.18) 0px 0.5rem 1.5rem`
101
+
102
+ **Glass White**
103
+ - Background: `rgba(255, 255, 255, 0.18)` (frosted glass)
104
+ - Text: `#ffffff`
105
+ - Padding: 8px
106
+ - Radius: 12px (left-aligned variant: `12px 0px 0px 12px`)
107
+ - Shadow: `rgba(0, 0, 0, 0.08) 0px 2px 8px`
108
+ - Hover background: `rgba(54, 22, 107, 0.14)`
109
+ - Use: Secondary actions on dark surfaces
110
+
111
+ **White Solid**
112
+ - Background: `#ffffff`
113
+ - Text: `#1f1633`
114
+ - Padding: 12px 16px
115
+ - Radius: 8px
116
+ - Hover: background transitions to `#6a5fc1`, text to white
117
+ - Focus: background `#ffb287` (coral), outline `rgb(106, 95, 193) solid 0.125rem`
118
+ - Use: High-visibility CTA on dark backgrounds
119
+
120
+ **Deep Violet (Select/Dropdown)**
121
+ - Background: `#422082`
122
+ - Text: `#ffffff`
123
+ - Padding: 8px 16px
124
+ - Radius: 8px
125
+
126
+ ### Inputs
127
+
128
+ **Text Input**
129
+ - Background: `#ffffff`
130
+ - Text: `#1f1633`
131
+ - Border: `1px solid #cfcfdb`
132
+ - Padding: 8px 12px
133
+ - Radius: 6px
134
+ - Focus: border-color stays `#cfcfdb`, shadow `rgba(0, 0, 0, 0.15) 0px 2px 10px inset`
135
+
136
+ ### Links
137
+ - **Default on dark**: `#ffffff`, underline decoration
138
+ - **Hover**: color transitions to `#6a5fc1` (Sentry Purple)
139
+ - **Purple links**: `#6a5fc1` default, hover underline
140
+ - **Lime accent links**: `#c2ef4e` default, hover to `#6a5fc1`
141
+ - **Dark context links**: `#362d59`, hover to `#ffffff`
142
+
143
+ ### Cards & Containers
144
+ - Background: semi-transparent or dark purple surfaces
145
+ - Radius: 8px–12px
146
+ - Shadow: `rgba(0, 0, 0, 0.1) 0px 10px 15px -3px`
147
+ - Backdrop filter: `blur(18px) saturate(180%)` for glass effects
148
+
149
+ ### Navigation
150
+ - Dark transparent header over hero content
151
+ - Rubik 15px weight 500 for nav links
152
+ - White text, hover to Sentry Purple (`#6a5fc1`)
153
+ - Uppercase labels with 0.2px letter-spacing for categories
154
+ - Mobile: hamburger menu, full-width expanded
155
+
156
+ ## 5. Layout Principles
157
+
158
+ ### Spacing System
159
+ - Base unit: 8px
160
+ - Scale: 1px, 2px, 4px, 5px, 6px, 8px, 12px, 16px, 24px, 32px, 40px, 44px, 45px, 47px
161
+
162
+ ### Grid & Container
163
+ - Max content width: 1152px (XL breakpoint)
164
+ - Responsive padding: 2rem (mobile) → 4rem (tablet+)
165
+ - Content centered within container
166
+ - Full-width dark sections with contained inner content
167
+
168
+ ### Breakpoints
169
+ | Name | Width | Key Changes |
170
+ |------|-------|-------------|
171
+ | Mobile | < 576px | Single column, stacked layout |
172
+ | Small Tablet | 576–640px | Minor width adjustments |
173
+ | Tablet | 640–768px | 2-column begins |
174
+ | Small Desktop | 768–992px | Full nav visible |
175
+ | Desktop | 992–1152px | Standard layout |
176
+ | Large Desktop | 1152–1440px | Max-width content |
177
+
178
+ ### Whitespace Philosophy
179
+ - **Dark breathing room**: Generous vertical spacing between sections (64px–80px+) lets the dark background serve as a visual rest.
180
+ - **Content islands**: Feature sections are self-contained blocks floating in the dark purple sea, each with its own internal spacing rhythm.
181
+ - **Asymmetric padding**: Buttons use asymmetric padding patterns (12px 16px, 8px 12px) that feel organic rather than rigid.
182
+
183
+ ### Border Radius Scale
184
+ - Minimal (6px): Form inputs, small interactive elements
185
+ - Standard (8px): Buttons, cards, containers
186
+ - Comfortable (10px–12px): Larger containers, glass panels
187
+ - Rounded (13px): Primary muted buttons
188
+ - Pill (18px): Image containers, badges
189
+
190
+ ## 6. Depth & Elevation
191
+
192
+ | Level | Treatment | Use |
193
+ |-------|-----------|-----|
194
+ | Sunken (Level -1) | Inset shadow `rgba(0, 0, 0, 0.1) 0px 1px 3px inset` | Primary buttons (tactile pressed feel) |
195
+ | Flat (Level 0) | No shadow | Default surfaces, dark backgrounds |
196
+ | Surface (Level 1) | `rgba(0, 0, 0, 0.08) 0px 2px 8px` | Glass buttons, subtle cards |
197
+ | Elevated (Level 2) | `rgba(0, 0, 0, 0.1) 0px 10px 15px -3px` | Cards, floating panels |
198
+ | Prominent (Level 3) | `rgba(0, 0, 0, 0.18) 0px 0.5rem 1.5rem` | Hover states, modals |
199
+ | Ambient (Level 4) | `rgba(22, 15, 36, 0.9) 0px 4px 4px 9px` | Deep purple ambient glow around hero |
200
+
201
+ **Shadow Philosophy**: Sentry uses a unique combination of inset shadows (buttons feel pressed INTO the surface) and ambient glows (content radiates from the dark background). The deep purple ambient shadow (`rgba(22, 15, 36, 0.9)`) is the signature — it creates a bioluminescent quality where content seems to emit its own purple-tinted light.
202
+
203
+ ## 7. Do's and Don'ts
204
+
205
+ ### Do
206
+ - Use deep purple backgrounds (`#1f1633`, `#150f23`) — never pure black (`#000000`)
207
+ - Apply inset shadows on primary buttons for the tactile pressed effect
208
+ - Use Dammit Sans ONLY for hero/display headings — Rubik for everything else
209
+ - Apply `text-transform: uppercase` with `letter-spacing: 0.2px` on buttons and labels
210
+ - Use the lime-green accent (`#c2ef4e`) sparingly for maximum impact
211
+ - Employ frosted glass effects (`blur(18px) saturate(180%)`) for layered surfaces
212
+ - Maintain the warm purple shadow tones — shadows should feel purple-tinted, not neutral gray
213
+ - Use Rubik's 4-tier weight system: 400 (body), 500 (nav/emphasis), 600 (titles), 700 (CTAs)
214
+
215
+ ### Don't
216
+ - Don't use pure black (`#000000`) for backgrounds — always use the warm purple-blacks
217
+ - Don't apply Dammit Sans to body text or UI elements — it's display-only
218
+ - Don't use standard gray (`#666`, `#999`) for borders — use purple-tinted grays (`#362d59`, `#584674`)
219
+ - Don't drop the uppercase treatment on buttons — it's a system-wide pattern
220
+ - Don't use sharp corners (0px radius) — minimum 6px for all interactive elements
221
+ - Don't mix the lime-green accent with the coral/pink accents in the same component
222
+ - Don't use flat (non-inset) shadows on primary buttons — the tactile quality is signature
223
+ - Don't forget letter-spacing on uppercase text — 0.2px minimum
224
+
225
+ ## 8. Responsive Behavior
226
+
227
+ ### Breakpoints
228
+ | Name | Width | Key Changes |
229
+ |------|-------|-------------|
230
+ | Mobile | <576px | Single column, hamburger nav, stacked CTAs |
231
+ | Tablet | 576–768px | 2-column feature grids begin |
232
+ | Small Desktop | 768–992px | Full navigation, side-by-side layouts |
233
+ | Desktop | 992–1152px | Max-width container, full layout |
234
+ | Large | >1152px | Content max-width maintained, generous margins |
235
+
236
+ ### Collapsing Strategy
237
+ - Hero text: 88px Dammit Sans → 60px → mobile scales
238
+ - Navigation: horizontal → hamburger with slide-out
239
+ - Feature sections: side-by-side → stacked cards
240
+ - Buttons: inline → full-width stacked on mobile
241
+ - Container padding: 4rem → 2rem
242
+
243
+ ## 9. Agent Prompt Guide
244
+
245
+ ### Quick Color Reference
246
+ - Background: `#1f1633` (primary), `#150f23` (deeper)
247
+ - Text: `#ffffff` (primary), `#e5e7eb` (secondary)
248
+ - Interactive: `#6a5fc1` (links/hover), `#79628c` (buttons)
249
+ - Accent: `#c2ef4e` (lime highlight), `#ffb287` (coral focus)
250
+ - Border: `#362d59` (dark), `#cfcfdb` (light context)
251
+
252
+ ### Example Component Prompts
253
+ - "Create a hero section on deep purple background (#1f1633). Headline at 88px Dammit Sans weight 700, line-height 1.20, white text. Sub-text at 16px Rubik weight 400, line-height 1.50. White solid CTA button (8px radius, 12px 16px padding), hover transitions to #6a5fc1."
254
+ - "Design a navigation bar: transparent over dark background. Rubik 15px weight 500, white text. Uppercase category labels with 0.2px letter-spacing. Hover color #6a5fc1."
255
+ - "Build a primary button: background #79628c, border 1px solid #584674, inset shadow rgba(0,0,0,0.1) 0px 1px 3px, white uppercase text at 14px Rubik weight 700, letter-spacing 0.2px, radius 13px. Hover: shadow rgba(0,0,0,0.18) 0px 0.5rem 1.5rem."
256
+ - "Create a glass card panel: background rgba(255,255,255,0.18), backdrop-filter blur(18px) saturate(180%), radius 12px. White text content inside."
257
+ - "Design a feature section: #150f23 background, 24px Rubik weight 500 heading, 16px Rubik weight 400 body text. 14px uppercase lime-green (#c2ef4e) label above heading."
258
+
259
+ ### Iteration Guide
260
+ 1. Always start with the dark purple background — the color palette is built FOR dark mode
261
+ 2. Use inset shadows on buttons, ambient purple glows on hero sections
262
+ 3. Uppercase + letter-spacing is the systematic pattern for labels, buttons, and captions
263
+ 4. Lime green (#c2ef4e) is the "pop" color — use once per section maximum
264
+ 5. Frosted glass for overlaid panels, solid purple for primary surfaces
265
+ 6. Rubik handles 90% of typography — Dammit Sans is hero-only
@@ -0,0 +1,325 @@
1
+ # Design System Inspired by Stripe
2
+
3
+ > Category: Fintech & Crypto
4
+ > Payment infrastructure. Signature purple gradients, weight-300 elegance.
5
+
6
+ ## 1. Visual Theme & Atmosphere
7
+
8
+ Stripe's website is the gold standard of fintech design -- a system that manages to feel simultaneously technical and luxurious, precise and warm. The page opens on a clean white canvas (`#ffffff`) with deep navy headings (`#061b31`) and a signature purple (`#533afd`) that functions as both brand anchor and interactive accent. This isn't the cold, clinical purple of enterprise software; it's a rich, saturated violet that reads as confident and premium. The overall impression is of a financial institution redesigned by a world-class type foundry.
9
+
10
+ The custom `sohne-var` variable font is the defining element of Stripe's visual identity. Every text element enables the OpenType `"ss01"` stylistic set, which modifies character shapes for a distinctly geometric, modern feel. At display sizes (48px-56px), sohne-var runs at weight 300 -- an extraordinarily light weight for headlines that creates an ethereal, almost whispered authority. This is the opposite of the "bold hero headline" convention; Stripe's headlines feel like they don't need to shout. The negative letter-spacing (-1.4px at 56px, -0.96px at 48px) tightens the text into dense, engineered blocks. At smaller sizes, the system also uses weight 300 with proportionally reduced tracking, and tabular numerals via `"tnum"` for financial data display.
11
+
12
+ What truly distinguishes Stripe is its shadow system. Rather than the flat or single-layer approach of most sites, Stripe uses multi-layer, blue-tinted shadows: the signature `rgba(50,50,93,0.25)` combined with `rgba(0,0,0,0.1)` creates shadows with a cool, almost atmospheric depth -- like elements are floating in a twilight sky. The blue-gray undertone of the primary shadow color (50,50,93) ties directly to the navy-purple brand palette, making even elevation feel on-brand.
13
+
14
+ **Key Characteristics:**
15
+ - sohne-var with OpenType `"ss01"` on all text -- a custom stylistic set that defines the brand's letterforms
16
+ - Weight 300 as the signature headline weight -- light, confident, anti-convention
17
+ - Negative letter-spacing at display sizes (-1.4px at 56px, progressive relaxation downward)
18
+ - Blue-tinted multi-layer shadows using `rgba(50,50,93,0.25)` -- elevation that feels brand-colored
19
+ - Deep navy (`#061b31`) headings instead of black -- warm, premium, financial-grade
20
+ - Conservative border-radius (4px-8px) -- nothing pill-shaped, nothing harsh
21
+ - Ruby (`#ea2261`) and magenta (`#f96bee`) accents for gradient and decorative elements
22
+ - `SourceCodePro` as the monospace companion for code and technical labels
23
+
24
+ ## 2. Color Palette & Roles
25
+
26
+ ### Primary
27
+ - **Stripe Purple** (`#533afd`): Primary brand color, CTA backgrounds, link text, interactive highlights. A saturated blue-violet that anchors the entire system.
28
+ - **Deep Navy** (`#061b31`): `--hds-color-heading-solid`. Primary heading color. Not black, not gray -- a very dark blue that adds warmth and depth to text.
29
+ - **Pure White** (`#ffffff`): Page background, card surfaces, button text on dark backgrounds.
30
+
31
+ ### Brand & Dark
32
+ - **Brand Dark** (`#1c1e54`): `--hds-color-util-brand-900`. Deep indigo for dark sections, footer backgrounds, and immersive brand moments.
33
+ - **Dark Navy** (`#0d253d`): `--hds-color-core-neutral-975`. The darkest neutral -- almost-black with a blue undertone for maximum depth without harshness.
34
+
35
+ ### Accent Colors
36
+ - **Ruby** (`#ea2261`): `--hds-color-accentColorMode-ruby-icon-solid`. Warm red-pink for icons, alerts, and accent elements.
37
+ - **Magenta** (`#f96bee`): `--hds-color-accentColorMode-magenta-icon-gradientMiddle`. Vivid pink-purple for gradients and decorative highlights.
38
+ - **Magenta Light** (`#ffd7ef`): `--hds-color-util-accent-magenta-100`. Tinted surface for magenta-themed cards and badges.
39
+
40
+ ### Interactive
41
+ - **Primary Purple** (`#533afd`): Primary link color, active states, selected elements.
42
+ - **Purple Hover** (`#4434d4`): Darker purple for hover states on primary elements.
43
+ - **Purple Deep** (`#2e2b8c`): `--hds-color-button-ui-iconHover`. Dark purple for icon hover states.
44
+ - **Purple Light** (`#b9b9f9`): `--hds-color-action-bg-subduedHover`. Soft lavender for subdued hover backgrounds.
45
+ - **Purple Mid** (`#665efd`): `--hds-color-input-selector-text-range`. Range selector and input highlight color.
46
+
47
+ ### Neutral Scale
48
+ - **Heading** (`#061b31`): Primary headings, nav text, strong labels.
49
+ - **Label** (`#273951`): `--hds-color-input-text-label`. Form labels, secondary headings.
50
+ - **Body** (`#64748d`): Secondary text, descriptions, captions.
51
+ - **Success Green** (`#15be53`): Status badges, success indicators (with 0.2-0.4 alpha for backgrounds/borders).
52
+ - **Success Text** (`#108c3d`): Success badge text color.
53
+ - **Lemon** (`#9b6829`): `--hds-color-core-lemon-500`. Warning and highlight accent.
54
+
55
+ ### Surface & Borders
56
+ - **Border Default** (`#e5edf5`): Standard border color for cards, dividers, and containers.
57
+ - **Border Purple** (`#b9b9f9`): Active/selected state borders on buttons and inputs.
58
+ - **Border Soft Purple** (`#d6d9fc`): Subtle purple-tinted borders for secondary elements.
59
+ - **Border Magenta** (`#ffd7ef`): Pink-tinted borders for magenta-themed elements.
60
+ - **Border Dashed** (`#362baa`): Dashed borders for drop zones and placeholder elements.
61
+
62
+ ### Shadow Colors
63
+ - **Shadow Blue** (`rgba(50,50,93,0.25)`): The signature -- blue-tinted primary shadow color.
64
+ - **Shadow Dark Blue** (`rgba(3,3,39,0.25)`): Deeper blue shadow for elevated elements.
65
+ - **Shadow Black** (`rgba(0,0,0,0.1)`): Secondary shadow layer for depth reinforcement.
66
+ - **Shadow Ambient** (`rgba(23,23,23,0.08)`): Soft ambient shadow for subtle elevation.
67
+ - **Shadow Soft** (`rgba(23,23,23,0.06)`): Minimal ambient shadow for light lift.
68
+
69
+ ## 3. Typography Rules
70
+
71
+ ### Font Family
72
+ - **Primary**: `sohne-var`, with fallback: `SF Pro Display`
73
+ - **Monospace**: `SourceCodePro`, with fallback: `SFMono-Regular`
74
+ - **OpenType Features**: `"ss01"` enabled globally on all sohne-var text; `"tnum"` for tabular numbers on financial data and captions.
75
+
76
+ ### Hierarchy
77
+
78
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Features | Notes |
79
+ |------|------|------|--------|-------------|----------------|----------|-------|
80
+ | Display Hero | sohne-var | 56px (3.50rem) | 300 | 1.03 (tight) | -1.4px | ss01 | Maximum size, whisper-weight authority |
81
+ | Display Large | sohne-var | 48px (3.00rem) | 300 | 1.15 (tight) | -0.96px | ss01 | Secondary hero headlines |
82
+ | Section Heading | sohne-var | 32px (2.00rem) | 300 | 1.10 (tight) | -0.64px | ss01 | Feature section titles |
83
+ | Sub-heading Large | sohne-var | 26px (1.63rem) | 300 | 1.12 (tight) | -0.26px | ss01 | Card headings, sub-sections |
84
+ | Sub-heading | sohne-var | 22px (1.38rem) | 300 | 1.10 (tight) | -0.22px | ss01 | Smaller section heads |
85
+ | Body Large | sohne-var | 18px (1.13rem) | 300 | 1.40 | normal | ss01 | Feature descriptions, intro text |
86
+ | Body | sohne-var | 16px (1.00rem) | 300-400 | 1.40 | normal | ss01 | Standard reading text |
87
+ | Button | sohne-var | 16px (1.00rem) | 400 | 1.00 (tight) | normal | ss01 | Primary button text |
88
+ | Button Small | sohne-var | 14px (0.88rem) | 400 | 1.00 (tight) | normal | ss01 | Secondary/compact buttons |
89
+ | Link | sohne-var | 14px (0.88rem) | 400 | 1.00 (tight) | normal | ss01 | Navigation links |
90
+ | Caption | sohne-var | 13px (0.81rem) | 400 | normal | normal | ss01 | Small labels, metadata |
91
+ | Caption Small | sohne-var | 12px (0.75rem) | 300-400 | 1.33-1.45 | normal | ss01 | Fine print, timestamps |
92
+ | Caption Tabular | sohne-var | 12px (0.75rem) | 300-400 | 1.33 | -0.36px | tnum | Financial data, numbers |
93
+ | Micro | sohne-var | 10px (0.63rem) | 300 | 1.15 (tight) | 0.1px | ss01 | Tiny labels, axis markers |
94
+ | Micro Tabular | sohne-var | 10px (0.63rem) | 300 | 1.15 (tight) | -0.3px | tnum | Chart data, small numbers |
95
+ | Nano | sohne-var | 8px (0.50rem) | 300 | 1.07 (tight) | normal | ss01 | Smallest labels |
96
+ | Code Body | SourceCodePro | 12px (0.75rem) | 500 | 2.00 (relaxed) | normal | -- | Code blocks, syntax |
97
+ | Code Bold | SourceCodePro | 12px (0.75rem) | 700 | 2.00 (relaxed) | normal | -- | Bold code, keywords |
98
+ | Code Label | SourceCodePro | 12px (0.75rem) | 500 | 2.00 (relaxed) | normal | uppercase | Technical labels |
99
+ | Code Micro | SourceCodePro | 9px (0.56rem) | 500 | 1.00 (tight) | normal | ss01 | Tiny code annotations |
100
+
101
+ ### Principles
102
+ - **Light weight as signature**: Weight 300 at display sizes is Stripe's most distinctive typographic choice. Where others use 600-700 to command attention, Stripe uses lightness as luxury -- the text is so confident it doesn't need weight to be authoritative.
103
+ - **ss01 everywhere**: The `"ss01"` stylistic set is non-negotiable. It modifies specific glyphs (likely alternate `a`, `g`, `l` forms) to create a more geometric, contemporary feel across all sohne-var text.
104
+ - **Two OpenType modes**: `"ss01"` for display/body text, `"tnum"` for tabular numerals in financial data. These never overlap -- a number in a paragraph uses ss01, a number in a data table uses tnum.
105
+ - **Progressive tracking**: Letter-spacing tightens proportionally with size: -1.4px at 56px, -0.96px at 48px, -0.64px at 32px, -0.26px at 26px, normal at 16px and below.
106
+ - **Two-weight simplicity**: Primarily 300 (body and headings) and 400 (UI/buttons). No bold (700) in the primary font -- SourceCodePro uses 500/700 for code contrast.
107
+
108
+ ## 4. Component Stylings
109
+
110
+ ### Buttons
111
+
112
+ **Primary Purple**
113
+ - Background: `#533afd`
114
+ - Text: `#ffffff`
115
+ - Padding: 8px 16px
116
+ - Radius: 4px
117
+ - Font: 16px sohne-var weight 400, `"ss01"`
118
+ - Hover: `#4434d4` background
119
+ - Use: Primary CTA ("Start now", "Contact sales")
120
+
121
+ **Ghost / Outlined**
122
+ - Background: transparent
123
+ - Text: `#533afd`
124
+ - Padding: 8px 16px
125
+ - Radius: 4px
126
+ - Border: `1px solid #b9b9f9`
127
+ - Font: 16px sohne-var weight 400, `"ss01"`
128
+ - Hover: background shifts to `rgba(83,58,253,0.05)`
129
+ - Use: Secondary actions
130
+
131
+ **Transparent Info**
132
+ - Background: transparent
133
+ - Text: `#2874ad`
134
+ - Padding: 8px 16px
135
+ - Radius: 4px
136
+ - Border: `1px solid rgba(43,145,223,0.2)`
137
+ - Use: Tertiary/info-level actions
138
+
139
+ **Neutral Ghost**
140
+ - Background: transparent (`rgba(255,255,255,0)`)
141
+ - Text: `rgba(16,16,16,0.3)`
142
+ - Padding: 8px 16px
143
+ - Radius: 4px
144
+ - Outline: `1px solid rgb(212,222,233)`
145
+ - Use: Disabled or muted actions
146
+
147
+ ### Cards & Containers
148
+ - Background: `#ffffff`
149
+ - Border: `1px solid #e5edf5` (standard) or `1px solid #061b31` (dark accent)
150
+ - Radius: 4px (tight), 5px (standard), 6px (comfortable), 8px (featured)
151
+ - Shadow (standard): `rgba(50,50,93,0.25) 0px 30px 45px -30px, rgba(0,0,0,0.1) 0px 18px 36px -18px`
152
+ - Shadow (ambient): `rgba(23,23,23,0.08) 0px 15px 35px 0px`
153
+ - Hover: shadow intensifies, often adding the blue-tinted layer
154
+
155
+ ### Badges / Tags / Pills
156
+ **Neutral Pill**
157
+ - Background: `#ffffff`
158
+ - Text: `#000000`
159
+ - Padding: 0px 6px
160
+ - Radius: 4px
161
+ - Border: `1px solid #f6f9fc`
162
+ - Font: 11px weight 400
163
+
164
+ **Success Badge**
165
+ - Background: `rgba(21,190,83,0.2)`
166
+ - Text: `#108c3d`
167
+ - Padding: 1px 6px
168
+ - Radius: 4px
169
+ - Border: `1px solid rgba(21,190,83,0.4)`
170
+ - Font: 10px weight 300
171
+
172
+ ### Inputs & Forms
173
+ - Border: `1px solid #e5edf5`
174
+ - Radius: 4px
175
+ - Focus: `1px solid #533afd` or purple ring
176
+ - Label: `#273951`, 14px sohne-var
177
+ - Text: `#061b31`
178
+ - Placeholder: `#64748d`
179
+
180
+ ### Navigation
181
+ - Clean horizontal nav on white, sticky with blur backdrop
182
+ - Brand logotype left-aligned
183
+ - Links: sohne-var 14px weight 400, `#061b31` text with `"ss01"`
184
+ - Radius: 6px on nav container
185
+ - CTA: purple button right-aligned ("Sign in", "Start now")
186
+ - Mobile: hamburger toggle with 6px radius
187
+
188
+ ### Decorative Elements
189
+ **Dashed Borders**
190
+ - `1px dashed #362baa` (purple) for placeholder/drop zones
191
+ - `1px dashed #ffd7ef` (magenta) for magenta-themed decorative borders
192
+
193
+ **Gradient Accents**
194
+ - Ruby-to-magenta gradients (`#ea2261` to `#f96bee`) for hero decorations
195
+ - Brand dark sections use `#1c1e54` backgrounds with white text
196
+
197
+ ## 5. Layout Principles
198
+
199
+ ### Spacing System
200
+ - Base unit: 8px
201
+ - Scale: 1px, 2px, 4px, 6px, 8px, 10px, 11px, 12px, 14px, 16px, 18px, 20px
202
+ - Notable: The scale is dense at the small end (every 2px from 4-12), reflecting Stripe's precision-oriented UI for financial data
203
+
204
+ ### Grid & Container
205
+ - Max content width: approximately 1080px
206
+ - Hero: centered single-column with generous padding, lightweight headlines
207
+ - Feature sections: 2-3 column grids for feature cards
208
+ - Full-width dark sections with `#1c1e54` background for brand immersion
209
+ - Code/dashboard previews as contained cards with blue-tinted shadows
210
+
211
+ ### Whitespace Philosophy
212
+ - **Precision spacing**: Unlike the vast emptiness of minimalist systems, Stripe uses measured, purposeful whitespace. Every gap is a deliberate typographic choice.
213
+ - **Dense data, generous chrome**: Financial data displays (tables, charts) are tightly packed, but the UI chrome around them is generously spaced. This creates a sense of controlled density -- like a well-organized spreadsheet in a beautiful frame.
214
+ - **Section rhythm**: White sections alternate with dark brand sections (`#1c1e54`), creating a dramatic light/dark cadence that prevents monotony without introducing arbitrary color.
215
+
216
+ ### Border Radius Scale
217
+ - Micro (1px): Fine-grained elements, subtle rounding
218
+ - Standard (4px): Buttons, inputs, badges, cards -- the workhorse
219
+ - Comfortable (5px): Standard card containers
220
+ - Relaxed (6px): Navigation, larger interactive elements
221
+ - Large (8px): Featured cards, hero elements
222
+ - Compound: `0px 0px 6px 6px` for bottom-rounded containers (tab panels, dropdown footers)
223
+
224
+ ## 6. Depth & Elevation
225
+
226
+ | Level | Treatment | Use |
227
+ |-------|-----------|-----|
228
+ | Flat (Level 0) | No shadow | Page background, inline text |
229
+ | Ambient (Level 1) | `rgba(23,23,23,0.06) 0px 3px 6px` | Subtle card lift, hover hints |
230
+ | Standard (Level 2) | `rgba(23,23,23,0.08) 0px 15px 35px` | Standard cards, content panels |
231
+ | Elevated (Level 3) | `rgba(50,50,93,0.25) 0px 30px 45px -30px, rgba(0,0,0,0.1) 0px 18px 36px -18px` | Featured cards, dropdowns, popovers |
232
+ | Deep (Level 4) | `rgba(3,3,39,0.25) 0px 14px 21px -14px, rgba(0,0,0,0.1) 0px 8px 17px -8px` | Modals, floating panels |
233
+ | Ring (Accessibility) | `2px solid #533afd` outline | Keyboard focus ring |
234
+
235
+ **Shadow Philosophy**: Stripe's shadow system is built on a principle of chromatic depth. Where most design systems use neutral gray or black shadows, Stripe's primary shadow color (`rgba(50,50,93,0.25)`) is a deep blue-gray that echoes the brand's navy palette. This creates shadows that don't just add depth -- they add brand atmosphere. The multi-layer approach pairs this blue-tinted shadow with a pure black secondary layer (`rgba(0,0,0,0.1)`) at a different offset, creating a parallax-like depth where the branded shadow sits farther from the element and the neutral shadow sits closer. The negative spread values (-30px, -18px) ensure shadows don't extend beyond the element's footprint horizontally, keeping elevation vertical and controlled.
236
+
237
+ ### Decorative Depth
238
+ - Dark brand sections (`#1c1e54`) create immersive depth through background color contrast
239
+ - Gradient overlays with ruby-to-magenta transitions for hero decorations
240
+ - Shadow color `rgba(0,55,112,0.08)` (`--hds-color-shadow-sm-top`) for top-edge shadows on sticky elements
241
+
242
+ ## 7. Do's and Don'ts
243
+
244
+ ### Do
245
+ - Use sohne-var with `"ss01"` on every text element -- the stylistic set IS the brand
246
+ - Use weight 300 for all headlines and body text -- lightness is the signature
247
+ - Apply blue-tinted shadows (`rgba(50,50,93,0.25)`) for all elevated elements
248
+ - Use `#061b31` (deep navy) for headings instead of `#000000` -- the warmth matters
249
+ - Keep border-radius between 4px-8px -- conservative rounding is intentional
250
+ - Use `"tnum"` for any tabular/financial number display
251
+ - Layer shadows: blue-tinted far + neutral close for depth parallax
252
+ - Use `#533afd` purple as the primary interactive/CTA color
253
+
254
+ ### Don't
255
+ - Don't use weight 600-700 for sohne-var headlines -- weight 300 is the brand voice
256
+ - Don't use large border-radius (12px+, pill shapes) on cards or buttons -- Stripe is conservative
257
+ - Don't use neutral gray shadows -- always tint with blue (`rgba(50,50,93,...)`)
258
+ - Don't skip `"ss01"` on any sohne-var text -- the alternate glyphs define the personality
259
+ - Don't use pure black (`#000000`) for headings -- always `#061b31` deep navy
260
+ - Don't use warm accent colors (orange, yellow) for interactive elements -- purple is primary
261
+ - Don't apply positive letter-spacing at display sizes -- Stripe tracks tight
262
+ - Don't use the magenta/ruby accents for buttons or links -- they're decorative/gradient only
263
+
264
+ ## 8. Responsive Behavior
265
+
266
+ ### Breakpoints
267
+ | Name | Width | Key Changes |
268
+ |------|-------|-------------|
269
+ | Mobile | <640px | Single column, reduced heading sizes, stacked cards |
270
+ | Tablet | 640-1024px | 2-column grids, moderate padding |
271
+ | Desktop | 1024-1280px | Full layout, 3-column feature grids |
272
+ | Large Desktop | >1280px | Centered content with generous margins |
273
+
274
+ ### Touch Targets
275
+ - Buttons use comfortable padding (8px-16px vertical)
276
+ - Navigation links at 14px with adequate spacing
277
+ - Badges have 6px horizontal padding minimum for tap targets
278
+ - Mobile nav toggle with 6px radius button
279
+
280
+ ### Collapsing Strategy
281
+ - Hero: 56px display -> 32px on mobile, weight 300 maintained
282
+ - Navigation: horizontal links + CTAs -> hamburger toggle
283
+ - Feature cards: 3-column -> 2-column -> single column stacked
284
+ - Dark brand sections: maintain full-width treatment, reduce internal padding
285
+ - Financial data tables: horizontal scroll on mobile
286
+ - Section spacing: 64px+ -> 40px on mobile
287
+ - Typography scale compresses: 56px -> 48px -> 32px hero sizes across breakpoints
288
+
289
+ ### Image Behavior
290
+ - Dashboard/product screenshots maintain blue-tinted shadow at all sizes
291
+ - Hero gradient decorations simplify on mobile
292
+ - Code blocks maintain `SourceCodePro` treatment, may horizontally scroll
293
+ - Card images maintain consistent 4px-6px border-radius
294
+
295
+ ## 9. Agent Prompt Guide
296
+
297
+ ### Quick Color Reference
298
+ - Primary CTA: Stripe Purple (`#533afd`)
299
+ - CTA Hover: Purple Dark (`#4434d4`)
300
+ - Background: Pure White (`#ffffff`)
301
+ - Heading text: Deep Navy (`#061b31`)
302
+ - Body text: Slate (`#64748d`)
303
+ - Label text: Dark Slate (`#273951`)
304
+ - Border: Soft Blue (`#e5edf5`)
305
+ - Link: Stripe Purple (`#533afd`)
306
+ - Dark section: Brand Dark (`#1c1e54`)
307
+ - Success: Green (`#15be53`)
308
+ - Accent decorative: Ruby (`#ea2261`), Magenta (`#f96bee`)
309
+
310
+ ### Example Component Prompts
311
+ - "Create a hero section on white background. Headline at 48px sohne-var weight 300, line-height 1.15, letter-spacing -0.96px, color #061b31, font-feature-settings 'ss01'. Subtitle at 18px weight 300, line-height 1.40, color #64748d. Purple CTA button (#533afd, 4px radius, 8px 16px padding, white text) and ghost button (transparent, 1px solid #b9b9f9, #533afd text, 4px radius)."
312
+ - "Design a card: white background, 1px solid #e5edf5 border, 6px radius. Shadow: rgba(50,50,93,0.25) 0px 30px 45px -30px, rgba(0,0,0,0.1) 0px 18px 36px -18px. Title at 22px sohne-var weight 300, letter-spacing -0.22px, color #061b31, 'ss01'. Body at 16px weight 300, #64748d."
313
+ - "Build a success badge: rgba(21,190,83,0.2) background, #108c3d text, 4px radius, 1px 6px padding, 10px sohne-var weight 300, border 1px solid rgba(21,190,83,0.4)."
314
+ - "Create navigation: white sticky header with backdrop-filter blur(12px). sohne-var 14px weight 400 for links, #061b31 text, 'ss01'. Purple CTA 'Start now' right-aligned (#533afd bg, white text, 4px radius). Nav container 6px radius."
315
+ - "Design a dark brand section: #1c1e54 background, white text. Headline 32px sohne-var weight 300, letter-spacing -0.64px, 'ss01'. Body 16px weight 300, rgba(255,255,255,0.7). Cards inside use rgba(255,255,255,0.1) border with 6px radius."
316
+
317
+ ### Iteration Guide
318
+ 1. Always enable `font-feature-settings: "ss01"` on sohne-var text -- this is the brand's typographic DNA
319
+ 2. Weight 300 is the default; use 400 only for buttons/links/navigation
320
+ 3. Shadow formula: `rgba(50,50,93,0.25) 0px Y1 B1 -S1, rgba(0,0,0,0.1) 0px Y2 B2 -S2` where Y1/B1 are larger (far shadow) and Y2/B2 are smaller (near shadow)
321
+ 4. Heading color is `#061b31` (deep navy), body is `#64748d` (slate), labels are `#273951` (dark slate)
322
+ 5. Border-radius stays in the 4px-8px range -- never use pill shapes or large rounding
323
+ 6. Use `"tnum"` for any numbers in tables, charts, or financial displays
324
+ 7. Dark sections use `#1c1e54` -- not black, not gray, but a deep branded indigo
325
+ 8. SourceCodePro for code at 12px/500 with 2.00 line-height (very generous for readability)