heraspec 0.1.13 → 0.1.14

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 (129) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +188 -119
  3. package/bin/heraspec.js +4800 -1126
  4. package/bin/heraspec.js.map +4 -4
  5. package/dist/core/templates/skills/CHANGELOG.md +117 -117
  6. package/dist/core/templates/skills/README-template.md +58 -58
  7. package/dist/core/templates/skills/README.md +38 -38
  8. package/dist/core/templates/skills/content-optimization-skill.md +104 -104
  9. package/dist/core/templates/skills/data/design-systems.csv +54 -0
  10. package/dist/core/templates/skills/data/pages-proposed.csv +21 -21
  11. package/dist/core/templates/skills/data/pages.csv +9 -9
  12. package/dist/core/templates/skills/data/typography.csv +57 -57
  13. package/dist/core/templates/skills/deploy-documentation-skill.md +408 -0
  14. package/dist/core/templates/skills/design-system-skill.md +176 -0
  15. package/dist/core/templates/skills/documents/templates/documentation-landing-page.html +63 -63
  16. package/dist/core/templates/skills/documents/templates/documentation.html +49 -49
  17. package/dist/core/templates/skills/documents/templates/landing-script.js +38 -38
  18. package/dist/core/templates/skills/documents/templates/landing-style.css +158 -158
  19. package/dist/core/templates/skills/documents/templates/script.js +56 -56
  20. package/dist/core/templates/skills/documents/templates/style.css +155 -155
  21. package/dist/core/templates/skills/documents/templates/technical-doc-template.md +16 -16
  22. package/dist/core/templates/skills/documents/templates/user-guide-template.md +16 -16
  23. package/dist/core/templates/skills/documents-skill.md +104 -104
  24. package/dist/core/templates/skills/e2e-test-skill.md +119 -119
  25. package/dist/core/templates/skills/git-embed-skill.md +57 -0
  26. package/dist/core/templates/skills/integration-test-skill.md +118 -118
  27. package/dist/core/templates/skills/knowledge/README.md +63 -0
  28. package/dist/core/templates/skills/knowledge/design-systems/airbnb/DESIGN.md +246 -0
  29. package/dist/core/templates/skills/knowledge/design-systems/airtable/DESIGN.md +89 -0
  30. package/dist/core/templates/skills/knowledge/design-systems/apple/DESIGN.md +313 -0
  31. package/dist/core/templates/skills/knowledge/design-systems/bmw/DESIGN.md +180 -0
  32. package/dist/core/templates/skills/knowledge/design-systems/cal/DESIGN.md +259 -0
  33. package/dist/core/templates/skills/knowledge/design-systems/claude/DESIGN.md +312 -0
  34. package/dist/core/templates/skills/knowledge/design-systems/clay/DESIGN.md +304 -0
  35. package/dist/core/templates/skills/knowledge/design-systems/clickhouse/DESIGN.md +281 -0
  36. package/dist/core/templates/skills/knowledge/design-systems/cohere/DESIGN.md +266 -0
  37. package/dist/core/templates/skills/knowledge/design-systems/coinbase/DESIGN.md +129 -0
  38. package/dist/core/templates/skills/knowledge/design-systems/composio/DESIGN.md +307 -0
  39. package/dist/core/templates/skills/knowledge/design-systems/cursor/DESIGN.md +309 -0
  40. package/dist/core/templates/skills/knowledge/design-systems/elevenlabs/DESIGN.md +265 -0
  41. package/dist/core/templates/skills/knowledge/design-systems/expo/DESIGN.md +281 -0
  42. package/dist/core/templates/skills/knowledge/design-systems/figma/DESIGN.md +220 -0
  43. package/dist/core/templates/skills/knowledge/design-systems/framer/DESIGN.md +246 -0
  44. package/dist/core/templates/skills/knowledge/design-systems/hashicorp/DESIGN.md +278 -0
  45. package/dist/core/templates/skills/knowledge/design-systems/ibm/DESIGN.md +332 -0
  46. package/dist/core/templates/skills/knowledge/design-systems/index.json +72 -0
  47. package/dist/core/templates/skills/knowledge/design-systems/intercom/DESIGN.md +146 -0
  48. package/dist/core/templates/skills/knowledge/design-systems/kraken/DESIGN.md +125 -0
  49. package/dist/core/templates/skills/knowledge/design-systems/linear.app/DESIGN.md +367 -0
  50. package/dist/core/templates/skills/knowledge/design-systems/lovable/DESIGN.md +298 -0
  51. package/dist/core/templates/skills/knowledge/design-systems/minimax/DESIGN.md +257 -0
  52. package/dist/core/templates/skills/knowledge/design-systems/mintlify/DESIGN.md +326 -0
  53. package/dist/core/templates/skills/knowledge/design-systems/miro/DESIGN.md +108 -0
  54. package/dist/core/templates/skills/knowledge/design-systems/mistral.ai/DESIGN.md +261 -0
  55. package/dist/core/templates/skills/knowledge/design-systems/mongodb/DESIGN.md +266 -0
  56. package/dist/core/templates/skills/knowledge/design-systems/notion/DESIGN.md +309 -0
  57. package/dist/core/templates/skills/knowledge/design-systems/nvidia/DESIGN.md +293 -0
  58. package/dist/core/templates/skills/knowledge/design-systems/ollama/DESIGN.md +267 -0
  59. package/dist/core/templates/skills/knowledge/design-systems/opencode.ai/DESIGN.md +281 -0
  60. package/dist/core/templates/skills/knowledge/design-systems/pinterest/DESIGN.md +230 -0
  61. package/dist/core/templates/skills/knowledge/design-systems/posthog/DESIGN.md +256 -0
  62. package/dist/core/templates/skills/knowledge/design-systems/raycast/DESIGN.md +268 -0
  63. package/dist/core/templates/skills/knowledge/design-systems/replicate/DESIGN.md +261 -0
  64. package/dist/core/templates/skills/knowledge/design-systems/resend/DESIGN.md +303 -0
  65. package/dist/core/templates/skills/knowledge/design-systems/revolut/DESIGN.md +185 -0
  66. package/dist/core/templates/skills/knowledge/design-systems/runwayml/DESIGN.md +244 -0
  67. package/dist/core/templates/skills/knowledge/design-systems/sanity/DESIGN.md +357 -0
  68. package/dist/core/templates/skills/knowledge/design-systems/sentry/DESIGN.md +262 -0
  69. package/dist/core/templates/skills/knowledge/design-systems/spacex/DESIGN.md +194 -0
  70. package/dist/core/templates/skills/knowledge/design-systems/spotify/DESIGN.md +246 -0
  71. package/dist/core/templates/skills/knowledge/design-systems/stripe/DESIGN.md +322 -0
  72. package/dist/core/templates/skills/knowledge/design-systems/supabase/DESIGN.md +255 -0
  73. package/dist/core/templates/skills/knowledge/design-systems/superhuman/DESIGN.md +252 -0
  74. package/dist/core/templates/skills/knowledge/design-systems/together.ai/DESIGN.md +263 -0
  75. package/dist/core/templates/skills/knowledge/design-systems/uber/DESIGN.md +295 -0
  76. package/dist/core/templates/skills/knowledge/design-systems/vercel/DESIGN.md +310 -0
  77. package/dist/core/templates/skills/knowledge/design-systems/voltagent/DESIGN.md +323 -0
  78. package/dist/core/templates/skills/knowledge/design-systems/warp/DESIGN.md +253 -0
  79. package/dist/core/templates/skills/knowledge/design-systems/webflow/DESIGN.md +92 -0
  80. package/dist/core/templates/skills/knowledge/design-systems/wise/DESIGN.md +173 -0
  81. package/dist/core/templates/skills/knowledge/design-systems/x.ai/DESIGN.md +257 -0
  82. package/dist/core/templates/skills/knowledge/design-systems/zapier/DESIGN.md +328 -0
  83. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/profile.json +27 -0
  84. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/structure.md +137 -0
  85. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/profile.json +39 -0
  86. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/structure.md +208 -0
  87. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/profile.json +51 -0
  88. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/structure.md +369 -0
  89. package/dist/core/templates/skills/knowledge/index.json +65 -0
  90. package/dist/core/templates/skills/module-codebase-skill.md +110 -110
  91. package/dist/core/templates/skills/plugin-directory-skill.md +396 -396
  92. package/dist/core/templates/skills/project-memory-skill.md +222 -0
  93. package/dist/core/templates/skills/project-memory-skill.vi.md +223 -0
  94. package/dist/core/templates/skills/scripts/CODE_EXPLANATION.md +394 -394
  95. package/dist/core/templates/skills/scripts/SEARCH_ALGORITHMS_COMPARISON.md +421 -421
  96. package/dist/core/templates/skills/scripts/SEARCH_MODES_GUIDE.md +238 -238
  97. package/dist/core/templates/skills/scripts/__pycache__/core.cpython-311.pyc +0 -0
  98. package/dist/core/templates/skills/scripts/core.py +391 -385
  99. package/dist/core/templates/skills/scripts/search.py +1 -1
  100. package/dist/core/templates/skills/smart-explore-skill.md +141 -0
  101. package/dist/core/templates/skills/sourcecode-analyzer-skill.md +210 -0
  102. package/dist/core/templates/skills/sourcecode-analyzer-skill.vi.md +210 -0
  103. package/dist/core/templates/skills/suggestion-skill.md +118 -118
  104. package/dist/core/templates/skills/templates/accessibility-checklist.md +40 -40
  105. package/dist/core/templates/skills/templates/example-prompt-full-theme.md +333 -333
  106. package/dist/core/templates/skills/templates/page-types-guide.md +338 -338
  107. package/dist/core/templates/skills/templates/pages-proposed-summary.md +273 -273
  108. package/dist/core/templates/skills/templates/pre-delivery-checklist.md +42 -42
  109. package/dist/core/templates/skills/templates/prompt-template-full-theme.md +313 -313
  110. package/dist/core/templates/skills/templates/responsive-design.md +40 -40
  111. package/dist/core/templates/skills/ui-ux-skill.md +595 -584
  112. package/dist/core/templates/skills/unit-test-skill.md +111 -111
  113. package/dist/core/templates/skills/ux-element/templates/Controller.php +50 -50
  114. package/dist/core/templates/skills/ux-element/templates/Shortcode.php +23 -23
  115. package/dist/core/templates/skills/ux-element/templates/Template.html +20 -20
  116. package/dist/core/templates/skills/ux-element/templates/Thumbnail.svg +8 -8
  117. package/dist/core/templates/skills/ux-element/templates/View.php +21 -21
  118. package/dist/core/templates/skills/ux-element-skill.md +83 -83
  119. package/dist/core/templates/skills/wordpress-plugin-check-skill.md +151 -151
  120. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-dashboard.php +47 -47
  121. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-settings.php +60 -60
  122. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-css.css +22 -22
  123. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-js.js +15 -15
  124. package/dist/core/templates/skills/wordpress-plugin-standard/templates/plugin-main.php +169 -169
  125. package/dist/core/templates/skills/wordpress-plugin-standard/templates/readme.txt +41 -41
  126. package/dist/core/templates/skills/wordpress-plugin-standard/templates/uninstall.php +21 -21
  127. package/dist/core/templates/skills/wordpress-plugin-standard-skill.md +100 -100
  128. package/dist/index.js +4068 -278
  129. package/package.json +75 -72
@@ -0,0 +1,303 @@
1
+ # Design System: Resend
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Resend's website is a dark, cinematic canvas that treats email infrastructure like a luxury product. The entire page is draped in pure black (`#000000`) with text that glows in near-white (`#f0f0f0`), creating a theater-like experience where content performs on a void stage. This isn't the typical developer-tool darkness — it's the controlled darkness of a photography gallery, where every element is lit with intention and nothing competes for attention.
6
+
7
+ The typography system is the star of the show. Three carefully chosen typefaces create a hierarchy that feels both editorial and technical: Domaine Display (a Klim Type Foundry serif) appears at massive 96px for hero headlines with barely-there line-height (1.00) and negative tracking (-0.96px), creating display text that feels like a magazine cover. ABC Favorit (by Dinamo) handles section headings with an even more aggressive letter-spacing (-2.8px at 56px), giving a compressed, engineered quality to mid-tier text. Inter takes over for body and UI, providing the clean readability that lets the display fonts shine. Commit Mono rounds out the family for code blocks.
8
+
9
+ What makes Resend distinctive is its icy, blue-tinted border system. Instead of neutral gray borders, Resend uses `rgba(214, 235, 253, 0.19)` — a frosty, slightly blue-tinted line at 19% opacity that gives every container and divider a cold, crystalline quality against the black background. Combined with pill-shaped buttons (9999px radius), multi-color accent system (orange, green, blue, yellow, red — each with its own CSS variable scale), and OpenType stylistic sets (`"ss01"`, `"ss03"`, `"ss04"`, `"ss11"`), the result is a design system that feels premium, precise, and quietly confident.
10
+
11
+ **Key Characteristics:**
12
+ - Pure black background with near-white (`#f0f0f0`) text — theatrical, gallery-like darkness
13
+ - Three-font hierarchy: Domaine Display (serif hero), ABC Favorit (geometric sections), Inter (body/UI)
14
+ - Icy blue-tinted borders: `rgba(214, 235, 253, 0.19)` — every border has a cold, crystalline shimmer
15
+ - Multi-color accent system: orange, green, blue, yellow, red — each with numbered CSS variable scales
16
+ - Pill-shaped buttons and tags (9999px radius) with transparent backgrounds
17
+ - OpenType stylistic sets (`"ss01"`, `"ss03"`, `"ss04"`, `"ss11"`) on display fonts
18
+ - Commit Mono for code — monospace as a design element, not an afterthought
19
+ - Whisper-level shadows using blue-tinted ring: `rgba(176, 199, 217, 0.145) 0px 0px 0px 1px`
20
+
21
+ ## 2. Color Palette & Roles
22
+
23
+ ### Primary
24
+ - **Void Black** (`#000000`): Page background, the defining canvas color (95% opacity via `--color-black-12`)
25
+ - **Near White** (`#f0f0f0`): Primary text, button text, high-contrast elements
26
+ - **Pure White** (`#ffffff`): `--color-white`, maximum emphasis text, link highlights
27
+
28
+ ### Accent Scale — Orange
29
+ - **Orange 4** (`#ff5900`): `--color-orange-4`, at 22% opacity — subtle warm glow
30
+ - **Orange 10** (`#ff801f`): `--color-orange-10`, primary orange accent — warm, energetic
31
+ - **Orange 11** (`#ffa057`): `--color-orange-11`, lighter orange for secondary use
32
+
33
+ ### Accent Scale — Green
34
+ - **Green 3** (`#22ff99`): `--color-green-3`, at 12% opacity — faint emerald wash
35
+ - **Green 4** (`#11ff99`): `--color-green-4`, at 18% opacity — success indicator glow
36
+
37
+ ### Accent Scale — Blue
38
+ - **Blue 4** (`#0075ff`): `--color-blue-4`, at 34% opacity — medium blue accent
39
+ - **Blue 5** (`#0081fd`): `--color-blue-5`, at 42% opacity — stronger blue
40
+ - **Blue 10** (`#3b9eff`): `--color-blue-10`, bright blue — links, interactive elements
41
+
42
+ ### Accent Scale — Other
43
+ - **Yellow 9** (`#ffc53d`): `--color-yellow-9`, warm gold for warnings or highlights
44
+ - **Red 5** (`#ff2047`): `--color-red-5`, at 34% opacity — error states, destructive actions
45
+
46
+ ### Neutral Scale
47
+ - **Silver** (`#a1a4a5`): Secondary text, muted links, descriptions
48
+ - **Dark Gray** (`#464a4d`): Tertiary text, de-emphasized content
49
+ - **Mid Gray** (`#5c5c5c`): Hover states, subtle emphasis
50
+ - **Medium Gray** (`#494949`): Quaternary text
51
+ - **Light Gray** (`#f8f8f8`): Light mode surface (if applicable)
52
+ - **Border Gray** (`#eaeaea`): Light context borders
53
+ - **Edge Gray** (`#ececec`): Subtle borders on light surfaces
54
+ - **Mist Gray** (`#dedfdf`): Light dividers
55
+ - **Soft Gray** (`#e5e6e6`): Alternate light border
56
+
57
+ ### Surface & Overlay
58
+ - **Frost Primary** (`#fcfdff`): Primary color token (slight blue tint, 94% opacity)
59
+ - **White Hover** (`rgba(255, 255, 255, 0.28)`): Button hover state on dark
60
+ - **White 60%** (`oklab(0.999994 ... / 0.577)`): Semi-transparent white for muted text
61
+ - **White 64%** (`oklab(0.999994 ... / 0.642)`): Slightly brighter semi-transparent white
62
+
63
+ ### Borders & Shadows
64
+ - **Frost Border** (`rgba(214, 235, 253, 0.19)`): The signature — icy blue-tinted borders at 19% opacity
65
+ - **Frost Border Alt** (`rgba(217, 237, 254, 0.145)`): Slightly lighter variant for list items
66
+ - **Ring Shadow** (`rgba(176, 199, 217, 0.145) 0px 0px 0px 1px`): Blue-tinted shadow-as-border
67
+ - **Focus Ring** (`rgb(0, 0, 0) 0px 0px 0px 8px`): Heavy black focus ring
68
+ - **Subtle Shadow** (`rgba(0, 0, 0, 0.1) 0px 1px 3px, rgba(0, 0, 0, 0.1) 0px 1px 2px -1px`): Minimal card elevation
69
+
70
+ ## 3. Typography Rules
71
+
72
+ ### Font Families
73
+ - **Display Serif**: `domaine` (Domaine Display by Klim Type Foundry) — hero headlines
74
+ - **Display Sans**: `aBCFavorit` (ABC Favorit by Dinamo), fallbacks: `ui-sans-serif, system-ui` — section headings
75
+ - **Body / UI**: `inter`, fallbacks: `ui-sans-serif, system-ui` — body text, buttons, navigation
76
+ - **Monospace**: `commitMono`, fallbacks: `ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas`
77
+ - **Secondary**: `Helvetica` — fallback for specific UI contexts
78
+ - **System**: `-apple-system, system-ui, Segoe UI, Roboto` — embedded content
79
+
80
+ ### Hierarchy
81
+
82
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
83
+ |------|------|------|--------|-------------|----------------|-------|
84
+ | Display Hero | domaine | 96px (6.00rem) | 400 | 1.00 (tight) | -0.96px | `"ss01", "ss04", "ss11"` |
85
+ | Display Hero Mobile | domaine | 76.8px (4.80rem) | 400 | 1.00 (tight) | -0.768px | Scaled for mobile |
86
+ | Section Heading | aBCFavorit | 56px (3.50rem) | 400 | 1.20 (tight) | -2.8px | `"ss01", "ss04", "ss11"` |
87
+ | Sub-heading | aBCFavorit | 20px (1.25rem) | 400 | 1.30 (tight) | normal | `"ss01", "ss04", "ss11"` |
88
+ | Sub-heading Compact | aBCFavorit | 16px (1.00rem) | 400 | 1.50 | -0.8px | `"ss01", "ss04", "ss11"` |
89
+ | Feature Title | inter | 24px (1.50rem) | 500 | 1.50 | normal | Section sub-headings |
90
+ | Body Large | inter | 18px (1.13rem) | 400 | 1.50 | normal | Introductions |
91
+ | Body | inter | 16px (1.00rem) | 400 | 1.50 | normal | Standard body text |
92
+ | Body Semibold | inter | 16px (1.00rem) | 600 | 1.50 | normal | Emphasis, active states |
93
+ | Nav Link | aBCFavorit | 14px (0.88rem) | 500 | 1.43 | 0.35px | `"ss01", "ss03", "ss04"` — positive tracking |
94
+ | Button / Link | inter | 14px (0.88rem) | 500–600 | 1.43 | normal | Buttons, nav, CTAs |
95
+ | Caption | inter | 14px (0.88rem) | 400 | 1.60 (relaxed) | normal | Descriptions |
96
+ | Helvetica Caption | Helvetica | 14px (0.88rem) | 400–600 | 1.00–1.71 | normal | UI elements |
97
+ | Small | inter | 12px (0.75rem) | 400–500 | 1.33 | normal | Tags, meta, fine print |
98
+ | Small Uppercase | inter | 12px (0.75rem) | 500 | 1.33 | normal | `text-transform: uppercase` |
99
+ | Small Capitalize | inter | 12px (0.75rem) | 500 | 1.33 | normal | `text-transform: capitalize` |
100
+ | Code Body | commitMono | 16px (1.00rem) | 400 | 1.50 | normal | Code blocks |
101
+ | Code Small | commitMono | 14px (0.88rem) | 400 | 1.43 | normal | Inline code |
102
+ | Code Tiny | commitMono | 12px (0.75rem) | 400 | 1.33 | normal | Small code labels |
103
+ | Heading (Helvetica) | Helvetica | 24px (1.50rem) | 400 | 1.40 | normal | Alternate heading context |
104
+
105
+ ### Principles
106
+ - **Three-font editorial hierarchy**: Domaine Display (serif, hero), ABC Favorit (geometric sans, sections), Inter (readable body). Each font has a strict role — they never cross lanes.
107
+ - **Aggressive negative tracking on display**: Domaine at -0.96px, ABC Favorit at -2.8px. The display type feels compressed, urgent, and designed — like a magazine masthead.
108
+ - **Positive tracking on nav**: ABC Favorit nav links use +0.35px letter-spacing — the only positive tracking in the system. This creates airy, spaced-out navigation text that contrasts with the compressed headings.
109
+ - **OpenType as identity**: The `"ss01"`, `"ss03"`, `"ss04"`, `"ss11"` stylistic sets are enabled on all ABC Favorit and Domaine text, activating alternate glyphs that give Resend's typography its unique character.
110
+ - **Commit Mono as design element**: The monospace font isn't hidden in code blocks — it's used prominently for code examples and technical content, treated as a first-class visual element.
111
+
112
+ ## 4. Component Stylings
113
+
114
+ ### Buttons
115
+
116
+ **Primary Transparent Pill**
117
+ - Background: transparent
118
+ - Text: `#f0f0f0`
119
+ - Padding: 5px 12px
120
+ - Radius: 9999px (full pill)
121
+ - Border: `1px solid rgba(214, 235, 253, 0.19)` (frost border)
122
+ - Hover: background `rgba(255, 255, 255, 0.28)` (white glass)
123
+ - Use: Primary CTA on dark backgrounds
124
+
125
+ **White Solid Pill**
126
+ - Background: `#ffffff`
127
+ - Text: `#000000`
128
+ - Padding: 5px 12px
129
+ - Radius: 9999px
130
+ - Use: High-contrast CTA ("Get started")
131
+
132
+ **Ghost Button**
133
+ - Background: transparent
134
+ - Text: `#f0f0f0`
135
+ - Radius: 4px
136
+ - No border
137
+ - Hover: subtle background tint
138
+ - Use: Secondary actions, tab items
139
+
140
+ ### Cards & Containers
141
+ - Background: transparent or very subtle dark tint
142
+ - Border: `1px solid rgba(214, 235, 253, 0.19)` (frost border)
143
+ - Radius: 16px (standard cards), 24px (large sections/panels)
144
+ - Shadow: `rgba(176, 199, 217, 0.145) 0px 0px 0px 1px` (ring shadow)
145
+ - Dark product screenshots and code demos as card content
146
+ - No traditional box-shadow elevation
147
+
148
+ ### Inputs & Forms
149
+ - Text: `#f0f0f0` on dark, `#000000` on light
150
+ - Radius: 4px
151
+ - Focus: shadow-based ring
152
+ - Minimal styling — inherits dark theme
153
+
154
+ ### Navigation
155
+ - Sticky dark header with frost border bottom: `1px solid rgba(214, 235, 253, 0.19)`
156
+ - "Resend" wordmark left-aligned
157
+ - ABC Favorit 14px weight 500 with +0.35px tracking for nav links
158
+ - Pill CTAs right-aligned
159
+ - Mobile: hamburger collapse
160
+
161
+ ### Image Treatment
162
+ - Product screenshots and code demos dominate content sections
163
+ - Dark-themed screenshots on dark background — seamless integration
164
+ - Rounded corners: 12px–16px on images
165
+ - Full-width sections with subtle gradient overlays
166
+
167
+ ### Distinctive Components
168
+
169
+ **Tab Navigation**
170
+ - Horizontal tabs with subtle selection indicator
171
+ - Tab items: 8px radius
172
+ - Active state with subtle background differentiation
173
+
174
+ **Code Preview Panels**
175
+ - Dark code blocks using Commit Mono
176
+ - Frost borders (`rgba(214, 235, 253, 0.19)`)
177
+ - Syntax-highlighted with multi-color accent tokens (orange, blue, green, yellow)
178
+
179
+ **Multi-color Accent Badges**
180
+ - Each product feature has its own accent color from the CSS variable scale
181
+ - Badges use the accent color at low opacity (12–42%) for background, full opacity for text
182
+
183
+ ## 5. Layout Principles
184
+
185
+ ### Spacing System
186
+ - Base unit: 8px
187
+ - Scale: 1px, 2px, 4px, 5px, 6px, 7px, 8px, 10px, 12px, 16px, 20px, 24px, 30px, 32px, 40px
188
+
189
+ ### Grid & Container
190
+ - Centered content with generous max-width
191
+ - Full-width black sections with contained inner content
192
+ - Single-column hero, expanding to feature grids below
193
+ - Code preview panels as full-width or contained showcases
194
+
195
+ ### Whitespace Philosophy
196
+ - **Cinematic black space**: The black background IS the whitespace. Generous vertical spacing (80px–120px+) between sections creates a scroll-through-darkness experience where each section emerges like a scene.
197
+ - **Tight content, vast surrounds**: Text blocks and cards are compact internally, but float in vast dark space — creating isolated "islands" of content.
198
+ - **Typography-led rhythm**: The massive display fonts (96px) create their own vertical rhythm — each headline is a visual event that anchors the surrounding space.
199
+
200
+ ### Border Radius Scale
201
+ - Sharp (4px): Buttons (ghost), inputs, small interactive elements
202
+ - Subtle (6px): Menu panels, navigation items
203
+ - Standard (8px): Tabs, content blocks
204
+ - Comfortable (10px): Accent elements
205
+ - Card (12px): Clipboard buttons, medium containers
206
+ - Large (16px): Feature cards, images, main buttons
207
+ - Section (24px): Large panels, section containers
208
+ - Pill (9999px): Primary CTAs, tags, badges
209
+
210
+ ## 6. Depth & Elevation
211
+
212
+ | Level | Treatment | Use |
213
+ |-------|-----------|-----|
214
+ | Flat (Level 0) | No shadow, transparent background | Default — most elements on dark void |
215
+ | Ring (Level 1) | `rgba(176, 199, 217, 0.145) 0px 0px 0px 1px` | Shadow-as-border for cards, containers |
216
+ | Frost Border (Level 1b) | `1px solid rgba(214, 235, 253, 0.19)` | Explicit borders — buttons, dividers, tabs |
217
+ | Subtle (Level 2) | `rgba(0, 0, 0, 0.1) 0px 1px 3px, rgba(0, 0, 0, 0.1) 0px 1px 2px -1px` | Light card elevation |
218
+ | Focus (Level 3) | `rgb(0, 0, 0) 0px 0px 0px 8px` | Heavy black focus ring — accessibility |
219
+
220
+ **Shadow Philosophy**: Resend barely uses shadows at all. On a pure black background, traditional shadows are invisible — you can't cast a shadow into the void. Instead, Resend creates depth through its signature frost borders (`rgba(214, 235, 253, 0.19)`) — thin, icy blue-tinted lines that catch light against the darkness. This creates a "glass panel floating in space" aesthetic where borders are the primary depth mechanism.
221
+
222
+ ### Decorative Depth
223
+ - Subtle warm gradient glows behind hero content (orange/amber tints)
224
+ - Product screenshots create visual depth through their own internal UI
225
+ - No gradient backgrounds — depth comes from border luminance and content contrast
226
+
227
+ ## 7. Do's and Don'ts
228
+
229
+ ### Do
230
+ - Use pure black (`#000000`) as the page background — the void is the canvas
231
+ - Apply frost borders (`rgba(214, 235, 253, 0.19)`) for all structural lines — they're the blue-tinted signature
232
+ - Use Domaine Display ONLY for hero headings (96px), ABC Favorit for section headings, Inter for everything else
233
+ - Enable OpenType `"ss01"`, `"ss04"`, `"ss11"` on Domaine and ABC Favorit text
234
+ - Apply pill radius (9999px) to primary CTAs and tags
235
+ - Use the multi-color accent scale (orange/green/blue/yellow/red) with opacity variants for context-specific highlighting
236
+ - Keep shadows at ring level (`0px 0px 0px 1px`) — on black, traditional shadows don't work
237
+ - Use +0.35px letter-spacing on ABC Favorit nav links — the only positive tracking
238
+
239
+ ### Don't
240
+ - Don't lighten the background above `#000000` — the pure black void is non-negotiable
241
+ - Don't use neutral gray borders — all borders must have the frost blue tint
242
+ - Don't apply Domaine Display to body text — it's a display-only serif
243
+ - Don't mix accent colors in the same component — each feature gets one accent color
244
+ - Don't use box-shadow for elevation on the dark background — use frost borders instead
245
+ - Don't skip the OpenType stylistic sets — they define the typographic character
246
+ - Don't use negative letter-spacing on nav links — ABC Favorit nav uses positive +0.35px
247
+ - Don't make buttons opaque on dark — transparency with frost border is the pattern
248
+
249
+ ## 8. Responsive Behavior
250
+
251
+ ### Breakpoints
252
+ | Name | Width | Key Changes |
253
+ |------|-------|-------------|
254
+ | Mobile Small | <480px | Single column, tight padding, 76.8px hero |
255
+ | Mobile | 480–600px | Standard mobile, stacked layout |
256
+ | Desktop | >600px | Full layout, 96px hero, expanded sections |
257
+
258
+ *Note: Resend uses a minimal breakpoint system — only 480px and 600px detected. The design is desktop-first with a clean mobile collapse.*
259
+
260
+ ### Touch Targets
261
+ - Pill buttons: adequate padding (5px 12px minimum)
262
+ - Tab items: 8px radius with comfortable hit areas
263
+ - Navigation links spaced with 0.35px tracking for visual separation
264
+
265
+ ### Collapsing Strategy
266
+ - Hero: Domaine 96px → 76.8px on mobile
267
+ - Navigation: horizontal → hamburger
268
+ - Feature sections: side-by-side → stacked
269
+ - Code panels: maintain width, horizontal scroll if needed
270
+ - Spacing compresses proportionally
271
+
272
+ ### Image Behavior
273
+ - Product screenshots maintain aspect ratio
274
+ - Dark screenshots blend seamlessly with dark background at all sizes
275
+ - Rounded corners (12px–16px) maintained across breakpoints
276
+
277
+ ## 9. Agent Prompt Guide
278
+
279
+ ### Quick Color Reference
280
+ - Background: Void Black (`#000000`)
281
+ - Primary text: Near White (`#f0f0f0`)
282
+ - Secondary text: Silver (`#a1a4a5`)
283
+ - Border: Frost Border (`rgba(214, 235, 253, 0.19)`)
284
+ - Orange accent: `#ff801f`
285
+ - Green accent: `#11ff99` (at 18% opacity)
286
+ - Blue accent: `#3b9eff`
287
+ - Focus ring: `rgb(0, 0, 0) 0px 0px 0px 8px`
288
+
289
+ ### Example Component Prompts
290
+ - "Create a hero section on pure black (#000000) background. Headline at 96px Domaine Display weight 400, line-height 1.00, letter-spacing -0.96px, near-white (#f0f0f0) text, OpenType 'ss01 ss04 ss11'. Subtitle at 20px ABC Favorit weight 400, line-height 1.30. Two pill buttons: white solid (#ffffff, 9999px radius) and transparent with frost border (rgba(214,235,253,0.19))."
291
+ - "Design a navigation bar: dark background with frost border bottom (1px solid rgba(214,235,253,0.19)). Nav links at 14px ABC Favorit weight 500, letter-spacing +0.35px, OpenType 'ss01 ss03 ss04'. White pill CTA right-aligned."
292
+ - "Build a feature card: transparent background, frost border (rgba(214,235,253,0.19)), 16px radius. Title at 56px ABC Favorit weight 400, letter-spacing -2.8px. Body at 16px Inter weight 400, #a1a4a5 text."
293
+ - "Create a code block using Commit Mono 16px on dark background. Frost border container (24px radius). Syntax colors: orange (#ff801f), blue (#3b9eff), green (#11ff99), yellow (#ffc53d)."
294
+ - "Design an accent badge: background #ff5900 at 22% opacity, text #ffa057, 9999px radius, 12px Inter weight 500."
295
+
296
+ ### Iteration Guide
297
+ 1. Start with pure black — everything floats in the void
298
+ 2. Frost borders (`rgba(214, 235, 253, 0.19)`) are the universal structural element — not gray, not neutral
299
+ 3. Three fonts, three roles: Domaine (hero), ABC Favorit (sections), Inter (body) — never cross
300
+ 4. OpenType stylistic sets are mandatory on display fonts — they define the character
301
+ 5. Multi-color accents at low opacity (12–42%) for backgrounds, full opacity for text
302
+ 6. Pill shape (9999px) for CTAs and badges, standard radius (4px–16px) for containers
303
+ 7. No shadows — use frost borders for depth against the void
@@ -0,0 +1,185 @@
1
+ # Design System: Revolut
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Revolut's website is fintech confidence distilled into pixels — a design system that communicates "your money is in capable hands" through massive typography, generous whitespace, and a disciplined neutral palette. The visual language is built on Aeonik Pro, a geometric grotesque that creates billboard-scale headlines at 136px with weight 500 and aggressive negative tracking (-2.72px). This isn't subtle branding; it's fintech at stadium scale.
6
+
7
+ The color system is built on a comprehensive `--rui-*` (Revolut UI) token architecture with semantic naming for every state: danger (`#e23b4a`), warning (`#ec7e00`), teal (`#00a87e`), blue (`#494fdf`), deep-pink (`#e61e49`), and more. But the marketing surface itself is remarkably restrained — near-black (`#191c1f`) and pure white (`#ffffff`) dominate, with the colorful semantic tokens reserved for the product interface, not the marketing page.
8
+
9
+ What distinguishes Revolut is its pill-everything button system. Every button uses 9999px radius — primary dark (`#191c1f`), secondary light (`#f4f4f4`), outlined (`transparent + 2px solid`), and ghost on dark (`rgba(244,244,244,0.1) + 2px solid`). The padding is generous (14px 32px–34px), creating large, confident touch targets. Combined with Inter for body text at various weights and positive letter-spacing (0.16px–0.24px), the result is a design that feels both premium and accessible — banking for the modern era.
10
+
11
+ **Key Characteristics:**
12
+ - Aeonik Pro display at 136px weight 500 — billboard-scale fintech headlines
13
+ - Near-black (`#191c1f`) + white binary with comprehensive `--rui-*` semantic tokens
14
+ - Universal pill buttons (9999px radius) with generous padding (14px 32px)
15
+ - Inter for body text with positive letter-spacing (0.16px–0.24px)
16
+ - Rich semantic color system: blue, teal, pink, yellow, green, brown, danger, warning
17
+ - Zero shadows detected — depth through color contrast only
18
+ - Tight display line-heights (1.00) with relaxed body (1.50–1.56)
19
+
20
+ ## 2. Color Palette & Roles
21
+
22
+ ### Primary
23
+ - **Revolut Dark** (`#191c1f`): Primary dark surface, button background, near-black text
24
+ - **Pure White** (`#ffffff`): `--rui-color-action-label`, primary light surface
25
+ - **Light Surface** (`#f4f4f4`): Secondary button background, subtle surface
26
+
27
+ ### Brand / Interactive
28
+ - **Revolut Blue** (`#494fdf`): `--rui-color-blue`, primary brand blue
29
+ - **Action Blue** (`#4f55f1`): `--rui-color-action-photo-header-text`, header accent
30
+ - **Blue Text** (`#376cd5`): `--website-color-blue-text`, link blue
31
+
32
+ ### Semantic
33
+ - **Danger Red** (`#e23b4a`): `--rui-color-danger`, error/destructive
34
+ - **Deep Pink** (`#e61e49`): `--rui-color-deep-pink`, critical accent
35
+ - **Warning Orange** (`#ec7e00`): `--rui-color-warning`, warning states
36
+ - **Yellow** (`#b09000`): `--rui-color-yellow`, attention
37
+ - **Teal** (`#00a87e`): `--rui-color-teal`, success/positive
38
+ - **Light Green** (`#428619`): `--rui-color-light-green`, secondary success
39
+ - **Green Text** (`#006400`): `--website-color-green-text`, green text
40
+ - **Light Blue** (`#007bc2`): `--rui-color-light-blue`, informational
41
+ - **Brown** (`#936d62`): `--rui-color-brown`, warm neutral accent
42
+ - **Red Text** (`#8b0000`): `--website-color-red-text`, dark red text
43
+
44
+ ### Neutral Scale
45
+ - **Mid Slate** (`#505a63`): Secondary text
46
+ - **Cool Gray** (`#8d969e`): Muted text, tertiary
47
+ - **Gray Tone** (`#c9c9cd`): `--rui-color-grey-tone-20`, borders/dividers
48
+
49
+ ## 3. Typography Rules
50
+
51
+ ### Font Families
52
+ - **Display**: `Aeonik Pro` — geometric grotesque, no detected fallbacks
53
+ - **Body / UI**: `Inter` — standard system sans
54
+ - **Fallback**: `Arial` for specific button contexts
55
+
56
+ ### Hierarchy
57
+
58
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
59
+ |------|------|------|--------|-------------|----------------|-------|
60
+ | Display Mega | Aeonik Pro | 136px (8.50rem) | 500 | 1.00 (tight) | -2.72px | Stadium-scale hero |
61
+ | Display Hero | Aeonik Pro | 80px (5.00rem) | 500 | 1.00 (tight) | -0.8px | Primary hero |
62
+ | Section Heading | Aeonik Pro | 48px (3.00rem) | 500 | 1.21 (tight) | -0.48px | Feature sections |
63
+ | Sub-heading | Aeonik Pro | 40px (2.50rem) | 500 | 1.20 (tight) | -0.4px | Sub-sections |
64
+ | Card Title | Aeonik Pro | 32px (2.00rem) | 500 | 1.19 (tight) | -0.32px | Card headings |
65
+ | Feature Title | Aeonik Pro | 24px (1.50rem) | 400 | 1.33 | normal | Light headings |
66
+ | Nav / UI | Aeonik Pro | 20px (1.25rem) | 500 | 1.40 | normal | Navigation, buttons |
67
+ | Body Large | Inter | 18px (1.13rem) | 400 | 1.56 | -0.09px | Introductions |
68
+ | Body | Inter | 16px (1.00rem) | 400 | 1.50 | 0.24px | Standard reading |
69
+ | Body Semibold | Inter | 16px (1.00rem) | 600 | 1.50 | 0.16px | Emphasized body |
70
+ | Body Bold Link | Inter | 16px (1.00rem) | 700 | 1.50 | 0.24px | Bold links |
71
+
72
+ ### Principles
73
+ - **Weight 500 as display default**: Aeonik Pro uses medium (500) for ALL headings — no bold. This creates authority through size and tracking, not weight.
74
+ - **Billboard tracking**: -2.72px at 136px is extremely compressed — text designed to be read at a glance, like airport signage.
75
+ - **Positive tracking on body**: Inter uses +0.16px to +0.24px, creating airy, well-spaced reading text that contrasts with the compressed headings.
76
+
77
+ ## 4. Component Stylings
78
+
79
+ ### Buttons
80
+
81
+ **Primary Dark Pill**
82
+ - Background: `#191c1f`
83
+ - Text: `#ffffff`
84
+ - Padding: 14px 32px
85
+ - Radius: 9999px (full pill)
86
+ - Hover: opacity 0.85
87
+ - Focus: `0 0 0 0.125rem` ring
88
+
89
+ **Secondary Light Pill**
90
+ - Background: `#f4f4f4`
91
+ - Text: `#000000`
92
+ - Padding: 14px 34px
93
+ - Radius: 9999px
94
+ - Hover: opacity 0.85
95
+
96
+ **Outlined Pill**
97
+ - Background: transparent
98
+ - Text: `#191c1f`
99
+ - Border: `2px solid #191c1f`
100
+ - Padding: 14px 32px
101
+ - Radius: 9999px
102
+
103
+ **Ghost on Dark**
104
+ - Background: `rgba(244, 244, 244, 0.1)`
105
+ - Text: `#f4f4f4`
106
+ - Border: `2px solid #f4f4f4`
107
+ - Padding: 14px 32px
108
+ - Radius: 9999px
109
+
110
+ ### Cards & Containers
111
+ - Radius: 12px (small), 20px (cards)
112
+ - No shadows — flat surfaces with color contrast
113
+ - Dark and light section alternation
114
+
115
+ ### Navigation
116
+ - Aeonik Pro 20px weight 500
117
+ - Clean header, hamburger toggle at 12px radius
118
+ - Pill CTAs right-aligned
119
+
120
+ ## 5. Layout Principles
121
+
122
+ ### Spacing System
123
+ - Base unit: 8px
124
+ - Scale: 4px, 6px, 8px, 14px, 16px, 20px, 24px, 32px, 40px, 48px, 80px, 88px, 120px
125
+ - Large section spacing: 80px–120px
126
+
127
+ ### Border Radius Scale
128
+ - Standard (12px): Navigation, small buttons
129
+ - Card (20px): Feature cards
130
+ - Pill (9999px): All buttons
131
+
132
+ ## 6. Depth & Elevation
133
+
134
+ | Level | Treatment | Use |
135
+ |-------|-----------|-----|
136
+ | Flat (Level 0) | No shadow | Everything — Revolut uses zero shadows |
137
+ | Focus | `0 0 0 0.125rem` ring | Accessibility focus |
138
+
139
+ **Shadow Philosophy**: Revolut uses ZERO shadows. Depth comes entirely from the dark/light section contrast and the generous whitespace between elements.
140
+
141
+ ## 7. Do's and Don'ts
142
+
143
+ ### Do
144
+ - Use Aeonik Pro weight 500 for all display headings
145
+ - Apply 9999px radius to all buttons — pill shape is universal
146
+ - Use generous button padding (14px 32px)
147
+ - Keep the palette to near-black + white for marketing surfaces
148
+ - Apply positive letter-spacing on Inter body text
149
+
150
+ ### Don't
151
+ - Don't use shadows — Revolut is flat by design
152
+ - Don't use bold (700) for Aeonik Pro headings — 500 is the weight
153
+ - Don't use small buttons — the generous padding is intentional
154
+ - Don't apply semantic colors to marketing surfaces — they're for the product
155
+
156
+ ## 8. Responsive Behavior
157
+
158
+ ### Breakpoints
159
+ | Name | Width | Key Changes |
160
+ |------|-------|-------------|
161
+ | Mobile Small | <400px | Compact, single column |
162
+ | Mobile | 400–720px | Standard mobile |
163
+ | Tablet | 720–1024px | 2-column layouts |
164
+ | Desktop | 1024–1280px | Standard desktop |
165
+ | Large | 1280–1920px | Full layout |
166
+
167
+ ## 9. Agent Prompt Guide
168
+
169
+ ### Quick Color Reference
170
+ - Dark: Revolut Dark (`#191c1f`)
171
+ - Light: White (`#ffffff`)
172
+ - Surface: Light (`#f4f4f4`)
173
+ - Blue: Revolut Blue (`#494fdf`)
174
+ - Danger: Red (`#e23b4a`)
175
+ - Success: Teal (`#00a87e`)
176
+
177
+ ### Example Component Prompts
178
+ - "Create a hero: white background. Headline at 136px Aeonik Pro weight 500, line-height 1.00, letter-spacing -2.72px, #191c1f text. Dark pill CTA (#191c1f, 9999px, 14px 32px). Outlined pill secondary (transparent, 2px solid #191c1f)."
179
+ - "Build a pill button: #191c1f background, white text, 9999px radius, 14px 32px padding, 20px Aeonik Pro weight 500. Hover: opacity 0.85."
180
+
181
+ ### Iteration Guide
182
+ 1. Aeonik Pro 500 for headings — never bold
183
+ 2. All buttons are pills (9999px) with generous padding
184
+ 3. Zero shadows — flat is the Revolut identity
185
+ 4. Near-black + white for marketing, semantic colors for product