oh-my-design-cli 1.0.2 → 1.1.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 (99) hide show
  1. package/README.md +15 -18
  2. package/data/reference-fingerprints.json +337 -3
  3. package/data/reference-tags.md +15 -1
  4. package/package.json +2 -2
  5. package/skills/omd-init/SKILL.md +1 -1
  6. package/web/AGENTS.md +5 -0
  7. package/{references → web/references}/airbnb/DESIGN.md +158 -19
  8. package/web/references/airtable/DESIGN.md +241 -0
  9. package/{references → web/references}/apple/DESIGN.md +131 -76
  10. package/web/references/baemin/DESIGN.md +470 -0
  11. package/{references → web/references}/bmw/DESIGN.md +138 -9
  12. package/{references → web/references}/cal/DESIGN.md +173 -17
  13. package/{references → web/references}/claude/DESIGN.md +11 -1
  14. package/{references → web/references}/clay/DESIGN.md +75 -0
  15. package/{references → web/references}/clickhouse/DESIGN.md +74 -0
  16. package/{references → web/references}/cohere/DESIGN.md +75 -0
  17. package/web/references/coinbase/DESIGN.md +205 -0
  18. package/{references → web/references}/composio/DESIGN.md +74 -0
  19. package/web/references/coupang/DESIGN.md +487 -0
  20. package/{references → web/references}/cursor/DESIGN.md +74 -0
  21. package/web/references/dcard/DESIGN.md +567 -0
  22. package/{references → web/references}/elevenlabs/DESIGN.md +91 -0
  23. package/{references → web/references}/expo/DESIGN.md +72 -0
  24. package/{references → web/references}/ferrari/DESIGN.md +72 -0
  25. package/{references → web/references}/figma/DESIGN.md +124 -48
  26. package/{references → web/references}/framer/DESIGN.md +143 -16
  27. package/web/references/freee/DESIGN.md +558 -0
  28. package/{references → web/references}/hashicorp/DESIGN.md +72 -0
  29. package/{references → web/references}/ibm/DESIGN.md +68 -0
  30. package/{references → web/references}/intercom/DESIGN.md +73 -0
  31. package/web/references/kakao/DESIGN.md +490 -0
  32. package/web/references/kakaobank/DESIGN.md +533 -0
  33. package/web/references/karrot/DESIGN.md +431 -0
  34. package/web/references/kraken/DESIGN.md +219 -0
  35. package/web/references/krds/DESIGN.md +982 -0
  36. package/web/references/kurly/DESIGN.md +574 -0
  37. package/{references → web/references}/lamborghini/DESIGN.md +74 -0
  38. package/{references → web/references}/line/DESIGN.md +84 -43
  39. package/{references → web/references}/linear.app/DESIGN.md +8 -1
  40. package/{references → web/references}/lovable/DESIGN.md +73 -0
  41. package/web/references/mercari/DESIGN.md +464 -0
  42. package/{references → web/references}/minimax/DESIGN.md +72 -0
  43. package/{references → web/references}/mintlify/DESIGN.md +72 -0
  44. package/web/references/miro/DESIGN.md +252 -0
  45. package/{references → web/references}/mistral.ai/DESIGN.md +72 -0
  46. package/{references → web/references}/mongodb/DESIGN.md +72 -0
  47. package/web/references/musinsa/DESIGN.md +536 -0
  48. package/web/references/naver/DESIGN.md +518 -0
  49. package/{references → web/references}/notion/DESIGN.md +9 -1
  50. package/web/references/nvidia/DESIGN.md +491 -0
  51. package/web/references/ohouse/DESIGN.md +570 -0
  52. package/{references → web/references}/ollama/DESIGN.md +72 -0
  53. package/{references → web/references}/opencode.ai/DESIGN.md +73 -0
  54. package/web/references/pinkoi/DESIGN.md +575 -0
  55. package/{references → web/references}/pinterest/DESIGN.md +73 -0
  56. package/{references → web/references}/posthog/DESIGN.md +172 -18
  57. package/web/references/qanda/DESIGN.md +459 -0
  58. package/{references → web/references}/raycast/DESIGN.md +169 -34
  59. package/{references → web/references}/renault/DESIGN.md +72 -0
  60. package/{references → web/references}/replicate/DESIGN.md +73 -0
  61. package/{references → web/references}/resend/DESIGN.md +73 -0
  62. package/{references → web/references}/revolut/DESIGN.md +74 -0
  63. package/web/references/ridi/DESIGN.md +517 -0
  64. package/{references → web/references}/runwayml/DESIGN.md +152 -24
  65. package/{references → web/references}/sanity/DESIGN.md +72 -0
  66. package/{references → web/references}/sentry/DESIGN.md +73 -0
  67. package/web/references/spacex/DESIGN.md +379 -0
  68. package/web/references/spotify/DESIGN.md +426 -0
  69. package/{references → web/references}/stripe/DESIGN.md +44 -1
  70. package/{references → web/references}/supabase/DESIGN.md +73 -0
  71. package/{references → web/references}/superhuman/DESIGN.md +159 -17
  72. package/{references → web/references}/tesla/DESIGN.md +170 -0
  73. package/{references → web/references}/together.ai/DESIGN.md +73 -0
  74. package/{references → web/references}/toss/DESIGN.md +304 -50
  75. package/{references → web/references}/uber/DESIGN.md +73 -0
  76. package/{references → web/references}/vercel/DESIGN.md +9 -1
  77. package/{references → web/references}/voltagent/DESIGN.md +73 -0
  78. package/{references → web/references}/warp/DESIGN.md +142 -15
  79. package/web/references/webflow/DESIGN.md +253 -0
  80. package/{references → web/references}/wise/DESIGN.md +84 -0
  81. package/{references → web/references}/x.ai/DESIGN.md +85 -0
  82. package/web/references/yanolja/DESIGN.md +448 -0
  83. package/web/references/yeogiotte/DESIGN.md +424 -0
  84. package/{references → web/references}/zapier/DESIGN.md +85 -0
  85. package/references/airtable/DESIGN.md +0 -107
  86. package/references/baemin/DESIGN.md +0 -260
  87. package/references/coinbase/DESIGN.md +0 -129
  88. package/references/dcard/DESIGN.md +0 -302
  89. package/references/freee/DESIGN.md +0 -308
  90. package/references/kakao/DESIGN.md +0 -261
  91. package/references/karrot/DESIGN.md +0 -252
  92. package/references/kraken/DESIGN.md +0 -146
  93. package/references/mercari/DESIGN.md +0 -294
  94. package/references/miro/DESIGN.md +0 -108
  95. package/references/nvidia/DESIGN.md +0 -308
  96. package/references/pinkoi/DESIGN.md +0 -309
  97. package/references/spacex/DESIGN.md +0 -205
  98. package/references/spotify/DESIGN.md +0 -246
  99. package/references/webflow/DESIGN.md +0 -109
@@ -97,44 +97,107 @@ Inter is used everywhere — headings, body, buttons, captions — with extensiv
97
97
  ## 4. Component Stylings
98
98
 
99
99
  ### Buttons
100
- - **Primary Pill**: Transparent background, white text, pill shape (86px radius), multi-layer inset shadow (`rgba(255, 255, 255, 0.1) 0px 1px 0px 0px inset`). Hover: opacity 0.6
101
- - **Secondary Button**: Transparent background, white text, 6px radius, `1px solid rgba(255, 255, 255, 0.1)` border, subtle drop shadow (`rgba(0, 0, 0, 0.03) 0px 7px 3px`). Hover: opacity 0.6
102
- - **Ghost Button**: No background or border, gray text (`#6a6b6c`), 86px radius, same inset shadow. Hover: opacity 0.6, text brightens to white
103
- - **CTA (Download)**: Semi-transparent white background (`hsla(0, 0%, 100%, 0.815)`), dark text (`#18191a`), pill shape. Hover: full white background (`hsl(0, 0%, 100%)`)
104
- - **Transition**: All buttons use opacity transition for hover rather than background-color change — a signature Raycast interaction pattern
105
-
106
- ### Cards & Containers
107
- - **Standard Card**: `#101111` surface, `1px solid rgba(255, 255, 255, 0.06)` border, 12px–16px border-radius
108
- - **Elevated Card**: Ring shadow `rgb(27, 28, 30) 0px 0px 0px 1px` outer + `rgb(7, 8, 10) 0px 0px 0px 1px inset` inner — creates a double-ring containment
109
- - **Feature Card**: 16px–20px border-radius, subtle warm glow (`rgba(215, 201, 175, 0.05) 0px 0px 20px 5px`) behind hero elements
110
- - **Hover**: Cards brighten slightly via border opacity increase or subtle shadow enhancement
111
-
112
- ### Inputs & Forms
113
- - Dark input fields with `#07080a` background, `1px solid rgba(255, 255, 255, 0.08)` border, 8px border-radius
114
- - Focus state: Border brightens, blue glow (`hsla(202, 100%, 67%, 0.15)`) ring appears
115
- - Text: `#f9f9f9` input color, `#6a6b6c` placeholder
116
- - Labels: `#9c9c9d` at 14px weight 500
117
100
 
118
- ### Navigation
119
- - **Top nav**: Dark background blending with page, white text links at 16px weight 500
120
- - **Nav links**: Gray text (`#9c9c9d`) → white on hover, underline decoration on hover
121
- - **CTA button**: Semi-transparent white pill at nav end
122
- - **Mobile**: Collapses to hamburger, maintains dark theme
123
- - **Sticky**: Nav fixed at top with subtle border separator
124
-
125
- ### Image Treatment
126
- - **Product screenshots**: macOS window chrome style — rounded corners (12px), deep shadows simulating floating windows
127
- - **Full-bleed sections**: Dark screenshots blend seamlessly into the dark background
128
- - **Hero illustration**: Diagonal stripe pattern in Raycast Red — abstract, geometric, brand-defining
129
- - **App UI embeds**: Showing actual Raycast command palette and extensions — product as content
101
+ **Primary Pill**
102
+ - Background: transparent
103
+ - Text: `#ffffff`
104
+ - Radius: 86px (pill)
105
+ - Padding: 10px 16px
106
+ - Shadow: `rgba(255, 255, 255, 0.1) 0px 1px 0px 0px inset`
107
+ - Hover: opacity 0.6
108
+ - Use: Primary pill button on dark surfaces
109
+
110
+ **Secondary**
111
+ - Background: transparent
112
+ - Text: `#ffffff`
113
+ - Border: 1px solid `rgba(255, 255, 255, 0.1)`
114
+ - Radius: 6px
115
+ - Padding: 8px 14px
116
+ - Shadow: `rgba(0, 0, 0, 0.03) 0px 7px 3px`
117
+ - Hover: opacity 0.6
118
+ - Use: Secondary action
119
+
120
+ **Ghost**
121
+ - Background: transparent
122
+ - Text: `#6a6b6c`
123
+ - Radius: 86px
124
+ - Padding: 10px 16px
125
+ - Shadow: `rgba(255, 255, 255, 0.1) 0px 1px 0px 0px inset`
126
+ - Hover: opacity 0.6, text brightens to `#ffffff`
127
+ - Use: Tertiary action — gray text
128
+
129
+ **CTA Download**
130
+ - Background: `hsla(0, 0%, 100%, 0.815)`
131
+ - Text: `#18191a`
132
+ - Radius: 86px (pill)
133
+ - Padding: 10px 16px
134
+ - Hover: `hsl(0, 0%, 100%)` (full white)
135
+ - Use: Hero "Download" CTA on dark surfaces
136
+
137
+ ### Inputs
138
+
139
+ **Default**
140
+ - Background: `#07080a`
141
+ - Text: `#f9f9f9`
142
+ - Border: 1px solid `rgba(255, 255, 255, 0.08)`
143
+ - Radius: 8px
144
+ - Padding: 10px 12px
145
+ - Placeholder: `#6a6b6c`
146
+ - Focus: border brightens, blue glow `hsla(202, 100%, 67%, 0.15)` ring
147
+ - Label: `#9c9c9d` 14px / 500
148
+ - Use: Form input on dark theme
149
+
150
+ ### Cards
151
+
152
+ **Standard**
153
+ - Background: `#101111`
154
+ - Text: `#ffffff`
155
+ - Border: 1px solid `rgba(255, 255, 255, 0.06)`
156
+ - Radius: 12px
157
+ - Padding: 16px
158
+ - Use: Default dark card
159
+
160
+ **Elevated**
161
+ - Background: `#101111`
162
+ - Radius: 16px
163
+ - Padding: 20px
164
+ - Shadow: `rgb(27, 28, 30) 0px 0px 0px 1px, rgb(7, 8, 10) 0px 0px 0px 1px inset`
165
+ - Use: Double-ring elevated card
166
+
167
+ **Feature**
168
+ - Background: `#101111`
169
+ - Radius: 20px
170
+ - Padding: 24px
171
+ - Shadow: `rgba(215, 201, 175, 0.05) 0px 0px 20px 5px` (subtle warm glow)
172
+ - Use: Hero/feature card with warm glow
173
+
174
+ ### Badges
175
+
176
+ **Neutral**
177
+ - Background: `#1b1c1e`
178
+ - Text: `#ffffff`
179
+ - Radius: 6px
180
+ - Padding: 0px 6px
181
+ - Font: 14px / 500
182
+ - Use: Categorization badge — compact pill-like treatment
130
183
 
131
184
  ### Keyboard Shortcut Keys
132
- - **Key cap styling**: Gradient background (`#121212` → `#0d0d0d`), heavy multi-layer shadow (`rgba(0, 0, 0, 0.4) 0px 1.5px 0.5px 2.5px` + inset shadows), creating realistic physical key appearance
133
- - Border-radius: 4px–6px for individual keys
185
+ - Key cap: gradient `#121212` → `#0d0d0d`, multi-layer shadow `rgba(0, 0, 0, 0.4) 0px 1.5px 0.5px 2.5px` + inset shadows
186
+ - Radius: 4-6px
187
+ - Use: Realistic physical key cap rendering for Raycast shortcuts
134
188
 
135
- ### Badges & Tags
136
- - **Neutral badge**: `#1b1c1e` background, white text, 6px radius, 14px font at weight 500, `0px 6px` padding
137
- - Compact, pill-like treatment for categorization
189
+ ### Image Treatment
190
+ - Product screenshots: macOS window chrome style rounded corners (12px), deep shadows simulating floating windows
191
+ - Full-bleed sections: Dark screenshots blend seamlessly into the dark background
192
+ - Hero illustration: Diagonal stripe pattern in Raycast Red — abstract, geometric, brand-defining
193
+ - App UI embeds: actual Raycast command palette and extensions — product as content
194
+
195
+ ### Navigation
196
+ - Top nav: Dark background blending with page, white text links at 16px weight 500
197
+ - Nav links: Gray text (`#9c9c9d`) → white on hover, underline on hover
198
+ - CTA: Semi-transparent white pill at nav end
199
+ - Mobile: hamburger, dark theme preserved
200
+ - Sticky: Fixed at top with subtle border separator
138
201
 
139
202
  ## 5. Layout Principles
140
203
 
@@ -266,3 +329,75 @@ When refining existing screens generated with this design system:
266
329
  3. Ensure shadows have both outer and inset layers — single-layer shadows look flat and wrong
267
330
  4. Confirm Inter has OpenType features `calt`, `kern`, `liga`, `ss03` enabled
268
331
  5. Test that hover states use opacity transitions (0.6) not color swaps — this is a core interaction pattern
332
+
333
+ ## 10. Voice & Tone
334
+
335
+ Raycast's voice is **prosumer-confident and keyboard-first.** "Your shortcut to everything" — concise, capability-driven, never marketing-fluff. Dark prosumer canvas + warm gradients signal "Mac native, designed for power users."
336
+
337
+ | Context | Tone |
338
+ |---|---|
339
+ | CTA | Verb. "Download", "Sign up", "Get started" |
340
+ | Marketing | Capability-list. "Spotlight on steroids" framing |
341
+ | Documentation | Keyboard-shortcut-heavy, code-block-friendly |
342
+ | Error | Specific. "Extension failed to load. Check console for details." |
343
+
344
+ **Voice samples**
345
+ - Tagline: *"Your shortcut to everything"* <!-- verified: raycast.com homepage 2026-05 -->
346
+
347
+ **Forbidden phrases.** "Revolutionary launcher". Aggressive Spotlight-comparison framing.
348
+
349
+ ## 11. Brand Narrative
350
+
351
+ Raycast was founded **2020** out of **London** by ex-Facebook engineers **Thomas Paul Mann (CEO)** and **Petr Nikolaev (CTO)** — they **met working at Facebook on the same team**, sharing frustration with the clunky productivity tools they used and a desire to build a better Spotlight ([TechCrunch — Raycast $30M Series B 2024-09](https://techcrunch.com/2024/09/25/raycast-raises-30m-to-bring-its-mac-productivity-app-to-windows-and-ios/), [Ness Labs — Thomas Paul Mann interview](https://nesslabs.com/raycast-featured-tool)). Funding ladder: **first round March 18 2020** (seed) → **$15M Series A (November 2021)** led by **Accel + Coatue** ([TechCrunch — Raycast $15M 2021-11](https://techcrunch.com/2021/11/30/developer-productivity-tools-startup-raycast-raises-15m-from-accel-and-coatue/)) → **$30M / €27M Series B (Sept 25 2024)** to expand from Mac to Windows + iOS ([EU-Startups — Raycast €27M Series B 2024-09](https://www.eu-startups.com/2024/09/london-based-raycast-raises-e27-million-series-b-to-help-ios-and-windows-enhance-productivity/)) → **total $47.8M across 4 rounds from 20 investors** including **Accel, Y Combinator, Atomico** ([Tracxn — Raycast](https://tracxn.com/d/companies/raycast/__VNiI9rqA4HFcosfhPf0QoAIcecG3jJRlMCseC8jQeOw)). Mac-native productivity tool — Spotlight replacement that grew into a platform for extensions. Strong adoption among engineers, designers, and prosumers. Brand voice — keyboard-first, prosumer-aesthetic — reflects the product positioning.
352
+
353
+ ## 12. Principles
354
+
355
+ 1. **Keyboard is the interface.** *UI implication:* every action has a keyboard shortcut documented inline.
356
+ 2. **Inter with OpenType features.** `calt`, `kern`, `liga`, `ss03`. *UI implication:* don't substitute system fonts.
357
+ 3. **Hover via opacity, not color swap.** *UI implication:* preserve opacity-transition pattern.
358
+ 4. **Dark prosumer canvas.** *UI implication:* default to dark theme; light theme as secondary.
359
+ 5. **Extensions are first-class.** *UI implication:* Store + Extension nav has main-nav placement.
360
+
361
+ ## 13. Personas
362
+
363
+ *Personas are fictional archetypes informed by Raycast user segments (Mac power users, engineers, prosumer designers), not individual people.*
364
+
365
+ **Sergey Volkov, 36, Berlin.** Senior engineer, Raycast as Spotlight replacement + AI commands.
366
+
367
+ **Sofia Park, 31, Seoul.** Product designer with 30+ extensions installed.
368
+
369
+ **Marcus Webb, 41, San Francisco.** Engineering manager. Raycast Pro subscriber for AI features.
370
+
371
+ ## 14. States
372
+
373
+ | State | Treatment |
374
+ |---|---|
375
+ | **Empty (no extensions)** | "Browse the Store" CTA + featured grid |
376
+ | **Empty (search)** | "No commands found. Try different keywords." |
377
+ | **Loading (extension loading)** | Subtle skeleton with maintained dimensions |
378
+ | **Loading (AI command)** | Per-token streaming inline |
379
+ | **Error (extension)** | Specific error + reload extension button |
380
+ | **Error (auth)** | Specific cause + re-auth flow |
381
+ | **Success (executed)** | Implicit; result appears |
382
+ | **Success (extension installed)** | Subtle check + immediately available |
383
+ | **Skeleton (results)** | Dark-tone placeholders |
384
+ | **Disabled (no Pro)** | Upgrade link |
385
+ | **Loading (long task)** | Persistent progress |
386
+
387
+ ## 15. Motion & Easing
388
+
389
+ | Token | Value | Use |
390
+ |---|---|---|
391
+ | `motion-instant` | 0ms | Selection |
392
+ | `motion-fast` | 150ms | Hover opacity |
393
+ | `motion-standard` | 250ms | Modal, panel |
394
+
395
+ Standard cubic-bezier; minimal bounce. **Hover via opacity 0.6** is signature. `prefers-reduced-motion: reduce` removes hover transitions.
396
+
397
+ ---
398
+
399
+ **Verified:** 2026-05-08 (omd:migrate run 47 — Apple-tier)
400
+ **Tier 1 sources:** raycast.com home + /pro (live DOM via playwright — Primary **`#e6e6e6` Light Gray** + Charcoal `#2f3031` text 8px / 36px / 14px·**500**; banner-pill `#130d0e` Deep Black 1000px / 30px (top promo); newsletter inline 4px variant; dark-canvas Outline `rgba(255,255,255,0.05)` 12px on /pro).
401
+ **Tier 2 sources:** styles.refero.design / getdesign.md — no record.
402
+ **Tier 2 (Philosophy/founders/funding):** TechCrunch (2021-11 $15M Accel+Coatue + 2024-09 $30M Series B), EU-Startups (€27M Series B), TechFundingNews, Ness Labs (Mann interview), Tracxn ($47.8M total / 20 investors).
403
+ **Style ref:** `claude`. **Conflicts unresolved:** none. **Earlier mistake reverted:** prior footer captured nav-link mid-gray (`#9c9c9d`) — canonical Primary is **`#e6e6e6` Light Gray** 8px (the brand-defining download CTA, missed entirely).
@@ -309,3 +309,75 @@ When refining existing screens generated with this design system:
309
309
  4. Describe the desired "feel" alongside specific measurements — "assertive automotive energy" communicates the NouvelR Bold heading personality better than "font-weight: 700"
310
310
  5. Always check whether a section should be light or dark — the chessboard alternation is a core pattern
311
311
  6. Reserve Renault Yellow for ONE button per screen — if yellow appears in more than one CTA, the hierarchy collapses
312
+
313
+ ## 10. Voice & Tone
314
+
315
+ Renault's voice is **French-popular-mobility and accessible-design.** Pivot 2021+ to "accessible mobility" + Renault Yellow signature. Marketing copy emphasizes "voitures pour tous" with French aesthetic restraint.
316
+
317
+ | Context | Tone |
318
+ |---|---|
319
+ | CTA | Verb. "Découvrir", "Configurer", "Réserver" |
320
+ | Marketing | Photography + concise headlines |
321
+ | Documentation | Specs + sustainability reporting |
322
+ | Error | Polite French. "Une erreur s'est produite." |
323
+
324
+ **Voice samples**
325
+ - Marketing CTA pattern: *"더 알아보기"* / *"Découvrir"* <!-- verified: renaultgroup.com 2026-05 -->
326
+
327
+ **Forbidden phrases.** "Revolutionary mobility". Aggressive PSA-comparison framing.
328
+
329
+ ## 11. Brand Narrative
330
+
331
+ Renault was founded **1899** in **Boulogne-Billancourt, France** by three brothers — **Louis Renault**, **Marcel Renault**, and **Fernand Renault** — with the **Renault Voiturette 1CV** sold December 1898 ([Renault — Wikipedia](https://en.wikipedia.org/wiki/Renault)). Iconic French automaker. The **Renault-Nissan Alliance** was founded **1999**; **Mitsubishi joined September 2017** after Nissan acquired a controlling stake (1 year prior), forming the **Renault-Nissan-Mitsubishi Alliance** ([Renault-Nissan-Mitsubishi Alliance — Wikipedia](https://en.wikipedia.org/wiki/Renault%E2%80%93Nissan%E2%80%93Mitsubishi_Alliance)). The **2021+ "Renaulution" rebrand** under CEO **Luca de Meo** introduced **a new geometric "diamond" logo** (announced March 2021, fleet-wide rollout completed by 2024) — **the 9th iteration of the diamond shape since 1925**, designed as two intertwined black lines evoking the popular 1972 design ([Renault Group — A Renaulution for the diamond](https://www.renaultgroup.com/en/magazine/our-group-news/a-renaulution-for-the-diamond/), [Design Week — new geometric logo](https://www.designweek.co.uk/issues/15-21-march-2021/renault-new-logo/)). Renault Yellow as a signature accent + chess-board section alternation as visual rhythm.
332
+
333
+ ## 12. Principles
334
+
335
+ 1. **One Renault Yellow per screen.** *UI implication:* if yellow appears more than once in CTAs, hierarchy collapses.
336
+ 2. **Chessboard alternation.** Light ↔ dark section rhythm. *UI implication:* never flat sequences.
337
+ 3. **0px sharp radius.** *UI implication:* don't round corners — French precision.
338
+ 4. **Photography drives.** *UI implication:* hero modules photo-first.
339
+ 5. **Sustainability narrative.** *UI implication:* EV + recycling references in product surfaces.
340
+
341
+ ## 13. Personas
342
+
343
+ *Personas are fictional archetypes informed by Renault user segments (French/EU mass-market buyers, EV early adopters, fleet managers), not individual people.*
344
+
345
+ **Sophie Martin, 38, Lyon.** Family car buyer. Mégane E-Tech EV.
346
+
347
+ **Henrik Müller, 45, Berlin.** Fleet manager evaluating EV transition.
348
+
349
+ **Sofia Russo, 32, Milan.** First-time car buyer. Clio E-Tech for city driving.
350
+
351
+ ## 14. States
352
+
353
+ | State | Treatment |
354
+ |---|---|
355
+ | **Empty (configurator)** | "Configurez votre Renault" |
356
+ | **Empty (no saved)** | Model selector |
357
+ | **Loading (config)** | Real-time 3D rendering |
358
+ | **Loading (price)** | Per-option update |
359
+ | **Error (incompatible)** | Specific constraint |
360
+ | **Error (no inventory)** | "Délai de livraison: N mois" |
361
+ | **Success (saved)** | Configuration ID |
362
+ | **Success (booked)** | Dealer confirmation |
363
+ | **Skeleton (model list)** | 0px placeholders |
364
+ | **Disabled (option locked)** | Tooltip |
365
+ | **Loading (long render)** | Persistent progress |
366
+
367
+ ## 15. Motion & Easing
368
+
369
+ | Token | Value | Use |
370
+ |---|---|---|
371
+ | `motion-instant` | 0ms | Selection |
372
+ | `motion-fast` | 150ms | Hover |
373
+ | `motion-standard` | 300ms | Modal, panel |
374
+
375
+ Standard cubic-bezier; no bounce. `prefers-reduced-motion: reduce` disables auto-play.
376
+
377
+ ---
378
+
379
+ **Verified:** 2026-05-08 (omd:migrate run 48 — Apple-tier)
380
+ **Tier 1 sources:** renaultgroup.com/en home + /en/group (live DOM via playwright — Primary `#000` Black **100px full-pill** / 19×24 / **64px** / **14px·700 ALL CAPS** + Inverse `#fff` 100px (canvas-aware) + carousel 100% circular 40×40 + nav `#fff` 16px·700 ALL CAPS).
381
+ **Tier 2 sources:** styles.refero.design / getdesign.md — no record.
382
+ **Tier 2 (Philosophy/founders/Alliance/logo):** Wikipedia (Renault + RNM Alliance), Renault Group magazine (Renaulution diamond), Design Week / Autocar / It's Nice That (2021 logo rebrand).
383
+ **Style ref:** `apple` (luxury minimal). **Conflicts unresolved:** none. **Earlier mistake reverted (significant — every Primary geometry value was wrong):** Radius 0px→**100px**, padding 24→**19×24**, height 72→**64**, font 16px·400→**14px·700 ALL CAPS**. §4 material correction.
@@ -259,3 +259,76 @@ What makes Replicate distinctive is its community-powered energy. The model gall
259
259
  3. Links use dotted underline (#bbbbbb) — never solid
260
260
  4. The gradient hero is the visual anchor — make it bold
261
261
  5. Use basier-square for body, rb-freigeist-neue for display, JetBrains Mono for code
262
+
263
+ ## 10. Voice & Tone
264
+
265
+ Replicate's voice is **research-engineering-friendly and API-first.** "Run AI with an API" — capability-driven, model-versioned. Marketing copy emphasizes the running-models-without-infra value prop.
266
+
267
+ | Context | Tone |
268
+ |---|---|
269
+ | CTA | Verb. "Get started for free", "Try a model", "API access" |
270
+ | Marketing | Model-driven. "Run X model with one line of code" |
271
+ | Documentation | Code-first, copy-paste-ready |
272
+ | Error | Specific. "Model output exceeded timeout (60s). Try smaller input." |
273
+
274
+ **Voice samples**
275
+ - Tagline: *"Run AI with an API"* <!-- verified: replicate.com homepage 2026-05 -->
276
+
277
+ **Forbidden phrases.** "Revolutionary AI hosting". Generic platform claims.
278
+
279
+ ## 11. Brand Narrative
280
+
281
+ Replicate was founded **2019** by **Ben Firshman** + **Andreas Jansson** ([Y Combinator — Replicate](https://www.ycombinator.com/companies/replicate), [Sequoia Capital — Partnering with Replicate](https://sequoiacap.com/article/partnering-with-replicate-machine-learning-simplified/)). **Firshman**: created **Docker Compose** during his time at Docker; **Jansson**: built research tools and infrastructure at **Spotify** with a **PhD in ML for music**. **Zeke Sikelianos** joined as a co-founder later. The founders' mission was to improve dissemination of scientific research with friendlier ML tools, leading to **Cog** — an open-source tool for packaging ML models into production-ready containers (Rust + Axum HTTP server). **Y Combinator Winter 2020 (W20)** batch ([MLQ — Replicate Deep Dive](https://mlq.ai/startups/replicate/)). Total funding **~$57.8M** with **post-Series B valuation $350M** (investors include **Sequoia Capital**, **Heavybit**). **Late 2025**: 50,000+ public models hosted + ~100 official curated by Replicate. **Acquired by Cloudflare** (Firshman's [LinkedIn](https://www.linkedin.com/in/bfirsh/) confirms current title **Head of AI Platform at Cloudflare**). The brand sits at the intersection of OSS researcher culture + cloud convenience — "run any model with one API call."
282
+
283
+ ## 12. Principles
284
+
285
+ 1. **One API, every model.** *UI implication:* uniform input/output schema across model variants.
286
+ 2. **Open-source heritage.** Cog still public. *UI implication:* surfaces emphasize OSS roots.
287
+ 3. **Gradient hero is the anchor.** *UI implication:* hero modules use bold gradient backgrounds.
288
+ 4. **Mixed type system.** basier-square / rb-freigeist-neue / JetBrains Mono. *UI implication:* don't substitute.
289
+ 5. **Model showcase first.** *UI implication:* discover/explore is the entry point, not pricing.
290
+
291
+ ## 13. Personas
292
+
293
+ *Personas are fictional archetypes informed by Replicate user segments (ML researchers, indie AI builders, content creators), not individual people.*
294
+
295
+ **Yuki Tanaka, 30, Tokyo.** ML researcher experimenting with image models. Replicate for one-line API access without GPU setup.
296
+
297
+ **Sofia Russo, 28, Milan.** Indie AI app builder shipping multiple SaaS. Replicate as the inference layer.
298
+
299
+ **Marcus Chen, 41, San Francisco.** Senior engineer at content startup. Production replicate for image/video generation.
300
+
301
+ ## 14. States
302
+
303
+ | State | Treatment |
304
+ |---|---|
305
+ | **Empty (no API keys)** | "Generate first API key" CTA |
306
+ | **Empty (no predictions)** | "Try a model" with featured grid |
307
+ | **Loading (prediction)** | Per-step status + ETA |
308
+ | **Loading (model loading)** | Cold-start indicator |
309
+ | **Error (model)** | Specific. "Model failed: <reason>. Retry?" |
310
+ | **Error (rate limit)** | Tier limit + upgrade |
311
+ | **Success (prediction)** | Result inline + share link |
312
+ | **Success (deployment)** | Endpoint + credentials |
313
+ | **Skeleton (model grid)** | Gradient-tinted placeholders |
314
+ | **Disabled (insufficient credits)** | Add credits link |
315
+ | **Loading (long generation)** | Persistent progress |
316
+
317
+ ## 15. Motion & Easing
318
+
319
+ | Token | Value | Use |
320
+ |---|---|---|
321
+ | `motion-instant` | 0ms | Selection |
322
+ | `motion-fast` | 150ms | Hover |
323
+ | `motion-standard` | 250ms | Modal, panel |
324
+ | `motion-streaming` | continuous | Token streaming |
325
+
326
+ Standard cubic-bezier; no bounce. `prefers-reduced-motion: reduce` removes hover transitions.
327
+
328
+ ---
329
+
330
+ **Verified:** 2026-05-08 (omd:migrate run 49 — Apple-tier)
331
+ **Tier 1 sources:** replicate.com home + /explore (live DOM via playwright — Primary `#000` Black 0px sharp three-tier height (hero 54 / page 42 / mini 34) / 12-16×8-16 / 14-18px·400; **Replicate Orange-Red `#dd4425`** featured-accent on **Replicate Cream `#fffcfc`** card; Mid-Gray `#646464` nav + secondary; Charcoal `#202020` active code-tab states).
332
+ **Tier 2 sources:** styles.refero.design / getdesign.md — no record.
333
+ **Tier 2 (Philosophy/founders/Cloudflare-acquisition):** Y Combinator (W20), Sequoia Capital (Partnering with Replicate), Heavybit, MLQ Deep Dive, Latent Space podcast, LinkedIn (Firshman = Cloudflare Head of AI Platform — confirms Cloudflare acquisition), Tracxn.
334
+ **Style ref:** `stripe`. **Conflicts unresolved:** none. **Earlier addition:** 3-height tier system + Orange-Red `#dd4425` accent + Cream `#fffcfc` featured-surface + Cloudflare acquisition narrative missed by prior pass.
@@ -301,3 +301,76 @@ What makes Resend distinctive is its icy, blue-tinted border system. Instead of
301
301
  5. Multi-color accents at low opacity (12–42%) for backgrounds, full opacity for text
302
302
  6. Pill shape (9999px) for CTAs and badges, standard radius (4px–16px) for containers
303
303
  7. No shadows — use frost borders for depth against the void
304
+
305
+ ## 10. Voice & Tone
306
+
307
+ Resend's voice is **dev-focused-elegant and API-first.** "Email for developers" — concise, capability-driven. Dark void canvas + frost-border depth signal "premium developer tool."
308
+
309
+ | Context | Tone |
310
+ |---|---|
311
+ | CTA | Verb. "Get started", "Try it now", "Sign up" |
312
+ | Marketing | API-first. Code snippets dominant in marketing |
313
+ | Documentation | Code-first, framework-specific examples |
314
+ | Error | Specific. "Invalid API key. Generate new one in Settings." |
315
+
316
+ **Voice samples**
317
+ - Tagline: *"Email for developers"* <!-- verified: resend.com homepage 2026-05 -->
318
+ - Recurring promo: *"Announcing Resend Forward"* <!-- verified: resend.com homepage 2026-05 -->
319
+
320
+ **Forbidden phrases.** "Revolutionary email API". Aggressive SendGrid-comparison framing.
321
+
322
+ ## 11. Brand Narrative
323
+
324
+ Resend was incorporated **January 2023** (open-source `react.email` predecessor launched 2022) by **Bu Kinoshita** and **Zeno Rocha** ([Resend — How we got here](https://resend.com/handbook/company/how-we-got-here), [Y Combinator — Resend](https://www.ycombinator.com/companies/resend)). The pair launched **react.email** in 2022 because they were frustrated by how difficult it was to build modern email templates that worked across all email clients — that OSS distribution lever became the founder-edge for the commercial Resend product. They **immediately quit their jobs and moved to San Francisco** to join **Y Combinator's Winter 2023 (W23)** batch — **Launch HN: Resend (YC W23)** thread is publicly archived ([Hacker News — Launch HN: Resend](https://news.ycombinator.com/item?id=36309120)). After YC: **$3M seed round** ([Y Combinator/TechCrunch — Resend $3M](https://www.linkedin.com/posts/y-combinator_developer-focused-email-platform-resend-raises-activity-7087087056081866753-GaNB)). Modern email API positioned for developers — React Email components + clean DX. Strong YC + community adoption among indie SaaS builders. The brand voice tracks this positioning: minimal chrome, dark canvas, premium-developer aesthetic.
325
+
326
+ ## 12. Principles
327
+
328
+ 1. **Code is the marketing.** *UI implication:* hero shows real API code, never marketing illustration.
329
+ 2. **No shadows, frost borders.** *UI implication:* depth via translucent borders against dark void.
330
+ 3. **Pill (9999px) for CTAs and badges.** *UI implication:* primary actions pill-shaped.
331
+ 4. **Standard radius (4-16px) for containers.** *UI implication:* mixed radius is intentional.
332
+ 5. **React Email is the OSS hook.** *UI implication:* surfaces lead with React Email examples.
333
+
334
+ ## 13. Personas
335
+
336
+ *Personas are fictional archetypes informed by Resend user segments (indie SaaS founders, transactional email engineers, dev-tooling buyers), not individual people.*
337
+
338
+ **Sofia Russo, 30, Milan.** Indie SaaS founder shipping authentication emails. React Email + Resend for clean DX.
339
+
340
+ **Marcus Chen, 38, San Francisco.** Senior engineer migrating from SendGrid. Cares about deliverability + simple API.
341
+
342
+ **Priya Krishnan, 27, Bengaluru.** YC startup building B2B SaaS. Resend as the only email service their team uses.
343
+
344
+ ## 14. States
345
+
346
+ | State | Treatment |
347
+ |---|---|
348
+ | **Empty (no domains)** | "Add your first domain" CTA + DNS setup |
349
+ | **Empty (no API keys)** | "Generate first API key" CTA |
350
+ | **Loading (sending)** | Per-email status visible |
351
+ | **Loading (DNS verifying)** | Persistent badge with check button |
352
+ | **Error (DNS not verified)** | Specific record + value to add |
353
+ | **Error (rate limit)** | Tier limit + upgrade |
354
+ | **Success (sent)** | Implicit; appears in dashboard |
355
+ | **Success (domain verified)** | Subtle confirmation |
356
+ | **Skeleton (email log)** | Frost-border placeholders |
357
+ | **Disabled (no plan)** | Upgrade link |
358
+ | **Loading (long batch)** | Persistent progress |
359
+
360
+ ## 15. Motion & Easing
361
+
362
+ | Token | Value | Use |
363
+ |---|---|---|
364
+ | `motion-instant` | 0ms | Selection |
365
+ | `motion-fast` | 150ms | Hover |
366
+ | `motion-standard` | 250ms | Modal, panel |
367
+
368
+ Standard cubic-bezier; no bounce — premium register. `prefers-reduced-motion: reduce` removes hover transitions.
369
+
370
+ ---
371
+
372
+ **Verified:** 2026-05-08 (omd:migrate run 50 — Apple-tier)
373
+ **Tier 1 sources:** resend.com home + /pricing (live DOM via playwright — **Primary `#00a3ff` Resend Blue 4px** / 41px / 12×20 / 14px·**600** + Tab pill `rgba(24,25,28,0.88)` Charcoal-translucent 16px (pricing tab active) + Announcement banner 9999px translucent blue (top promo) + Outline ghost 16px + Mid-Gray `#a1a4a5` nav text).
374
+ **Tier 2 sources:** styles.refero.design / getdesign.md — no record.
375
+ **Tier 2 (Philosophy/founders):** Resend handbook (How we got here), Y Combinator (Resend W23), Hacker News (Launch HN W23), LinkedIn (YC TechCrunch $3M post), No Cap Blog (Rocha), Mintlify customer story.
376
+ **Style ref:** `stripe`. **Conflicts unresolved:** none. **Earlier mistake reverted (significant):** prior footer captured 16px tab/ghost variants only — canonical Primary is `#00a3ff` **Resend Blue 4px** (the brand-defining color, missed entirely). §4 material correction.
@@ -183,3 +183,77 @@ What distinguishes Revolut is its pill-everything button system. Every button us
183
183
  2. All buttons are pills (9999px) with generous padding
184
184
  3. Zero shadows — flat is the Revolut identity
185
185
  4. Near-black + white for marketing, semantic colors for product
186
+
187
+ ## 10. Voice & Tone
188
+
189
+ Revolut's voice is **fintech-bold and segment-aware.** "Banking & Beyond" — confident, multi-segment positioning (Personal / Business / Kids & Teens). Pill chrome (9999px) signals "modern fintech" while flat-no-shadow design signals "no-nonsense banking."
190
+
191
+ | Context | Tone |
192
+ |---|---|
193
+ | CTA | Verb. "Get started", "Try Revolut", "Sign up" |
194
+ | Marketing | Segment-targeted. Personal vs Business vs Teens copy distinct |
195
+ | Onboarding | KYC-aware. Plain-language compliance |
196
+ | Error | Specific. "Insufficient funds. Top up via bank transfer." |
197
+
198
+ **Voice samples**
199
+ - Tagline: *"Banking & Beyond"* <!-- verified: revolut.com homepage 2026-05 -->
200
+ - Segment nav: *"Personal / Business / Kids & Teens"* <!-- verified: revolut.com homepage -->
201
+
202
+ **Forbidden phrases.** "Revolutionary fintech". Aggressive crypto-bro framing.
203
+
204
+ ## 11. Brand Narrative
205
+
206
+ **Revolut Ltd was incorporated December 2013** by **Nikolay "Nik" Storonsky (CEO)** with **Vlad Yatsenko (CTO)** joining shortly after; the consumer product **launched 2015** at **Level39 fintech accelerator, Canary Wharf, London** ([Revolut — Wikipedia](https://en.wikipedia.org/wiki/Revolut), [Nik Storonsky — Wikipedia](https://en.wikipedia.org/wiki/Nik_Storonsky)). Storonsky was **the company's first investor (£300,000 of his own savings)**. **Yatsenko**: graduated with honors, worked at **Comarch (Krakow programmer)** → **UBS (London senior software developer 2010)** → brief stints at **Deutsche Bank + Credit Suisse** through 2014. Storonsky and Yatsenko are **both immigrants** ([The Vertical — immigrant founders Revolut](https://thevertical.la/development/who-are-the-immigrant-founders-behind-revolut-the-45-billion-neobank-eyeing-u-s-expansion/)). Originally a multi-currency travel card → expanded to full neobank with stocks, crypto, lending, insurance. **Valuation timeline**: $45B secondary share sale 2024 → **$75B November 2025** ([City AM — Revolut $75B](https://www.cityam.com/revolut-inside-nik-storonskys-75bn-fintech-empire-still-hunting-for-its-crown/)). **IPO timeline**: per Bloomberg April 20 2026 interview, Storonsky stated **~2 years from IPO with U.S. listing preferred**. The brand voice — bold, multi-segment, flat-design — tracks the product's evolution from single-card to financial super-app.
207
+
208
+ ## 12. Principles
209
+
210
+ 1. **Multi-segment first-class.** Personal / Business / Kids & Teens. *UI implication:* segment nav at top level.
211
+ 2. **Pill chrome 16px+.** *UI implication:* primary actions and nav use 16px pill.
212
+ 3. **Zero shadows.** *UI implication:* depth via background contrast, never shadow.
213
+ 4. **Near-black `#0e1318` + white marketing.** *UI implication:* marketing chrome stays achromatic.
214
+ 5. **Semantic colors only in product.** *UI implication:* charts + status use semantic; marketing stays neutral.
215
+
216
+ ## 13. Personas
217
+
218
+ *Personas are fictional archetypes informed by Revolut user segments (multi-currency travelers, freelancers, EU SMB, Gen Z), not individual people.*
219
+
220
+ **Catherine Liu, 32, London.** UK-based consultant traveling EU monthly. Multi-currency wallet + travel insurance.
221
+
222
+ **Marcus Müller, 38, Berlin.** Freelancer with EUR/USD income streams. Revolut Business for invoicing.
223
+
224
+ **Sofia Park, 18, Seoul.** Teens account holder traveling for university applications.
225
+
226
+ ## 14. States
227
+
228
+ | State | Treatment |
229
+ |---|---|
230
+ | **Empty (no transactions)** | "Top up to start" CTA |
231
+ | **Empty (no investments)** | "Browse stocks/crypto" link |
232
+ | **Loading (price feed)** | Last cached + stale indicator |
233
+ | **Loading (KYC)** | Persistent badge with progress |
234
+ | **Error (KYC)** | Specific reason + remediation |
235
+ | **Error (payment)** | Receipt-style failure + retry |
236
+ | **Success (transaction)** | Receipt with full details + emoji-free confirmation |
237
+ | **Success (deposit)** | Confirmation + when funds available |
238
+ | **Skeleton (account list)** | Pill placeholders |
239
+ | **Disabled (no funds)** | Top up inline link |
240
+ | **Loading (long action)** | Multi-step progress |
241
+
242
+ ## 15. Motion & Easing
243
+
244
+ | Token | Value | Use |
245
+ |---|---|---|
246
+ | `motion-instant` | 0ms | Toggle |
247
+ | `motion-fast` | 150ms | Hover |
248
+ | `motion-standard` | 250ms | Modal, panel |
249
+ | `motion-pulse` | continuous | Live price update |
250
+
251
+ Standard cubic-bezier; no bounce — fintech register. `prefers-reduced-motion: reduce` disables price pulse.
252
+
253
+ ---
254
+
255
+ **Verified:** 2026-05-08 (omd:migrate run 51 — Apple-tier)
256
+ **Tier 1 sources:** revolut.com/en-US home + /en-US/business (live DOM via playwright — **all-pill 9999px** chrome with canvas-aware Charcoal/Light pair: **Charcoal `#191c1f`** Primary (consumer light canvas) + **Light Surface `#f4f4f4`** Inverse (Business dark canvas + feature cards) + Translucent `rgba(244,244,244,0.10)` on-dark hover, all 9999px / 42px / 10×24 / 16px·**500**).
257
+ **Tier 2 sources:** styles.refero.design / getdesign.md — no record.
258
+ **Tier 2 (Philosophy/founders/valuation/IPO):** Wikipedia (Revolut + Nik Storonsky), Huxley (Yatsenko Ukrainian billionaire bio), The Vertical (immigrant founders narrative), City AM ($75B Nov 2025), MoneyWeek, Bloomberg Billionaires, FinTech Magazine.
259
+ **Style ref:** `stripe`. **Conflicts unresolved:** none. **Earlier addition:** Charcoal `#191c1f` Primary + Light Surface `#f4f4f4` Inverse + canvas-aware pair + translucent variant missed by prior pass (which captured 38px segment-nav only — canonical is 42px Primary).