oh-my-design-cli 1.6.6 → 1.7.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 (230) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +8 -8
  3. package/data/reference-fingerprints.json +1318 -10
  4. package/dist/bin/oh-my-design.js +1 -1
  5. package/dist/{install-skills-JNH66GOI.js → install-skills-YYHEC4CS.js} +5 -11
  6. package/dist/install-skills-YYHEC4CS.js.map +1 -0
  7. package/package.json +1 -1
  8. package/skills/claude-design/SKILL.md +7 -2
  9. package/web/references/11st/DESIGN.md +400 -0
  10. package/web/references/17live/DESIGN.md +43 -0
  11. package/web/references/29cm/DESIGN.md +41 -0
  12. package/web/references/91app/DESIGN.md +31 -0
  13. package/web/references/ably/DESIGN.md +54 -0
  14. package/web/references/airbnb/DESIGN.md +58 -0
  15. package/web/references/airtable/DESIGN.md +39 -0
  16. package/web/references/alipay/DESIGN.md +50 -0
  17. package/web/references/amazingtalker/DESIGN.md +434 -0
  18. package/web/references/appier/DESIGN.md +45 -0
  19. package/web/references/apple/DESIGN.md +47 -0
  20. package/web/references/baemin/DESIGN.md +142 -43
  21. package/web/references/banksalad/DESIGN.md +67 -0
  22. package/web/references/bilibili/DESIGN.md +45 -0
  23. package/web/references/bithumb/DESIGN.md +38 -0
  24. package/web/references/bmw/DESIGN.md +37 -0
  25. package/web/references/brandi/DESIGN.md +414 -0
  26. package/web/references/bunjang/DESIGN.md +47 -0
  27. package/web/references/cakeresume/DESIGN.md +29 -0
  28. package/web/references/cal/DESIGN.md +52 -0
  29. package/web/references/catchtable/DESIGN.md +79 -19
  30. package/web/references/cathay/DESIGN.md +432 -0
  31. package/web/references/channeltalk/DESIGN.md +48 -0
  32. package/web/references/class101/DESIGN.md +51 -0
  33. package/web/references/classting/DESIGN.md +41 -0
  34. package/web/references/classum/DESIGN.md +43 -0
  35. package/web/references/claude/DESIGN.md +157 -70
  36. package/web/references/clay/DESIGN.md +56 -0
  37. package/web/references/clickhouse/DESIGN.md +50 -0
  38. package/web/references/cloudflare/DESIGN.md +637 -0
  39. package/web/references/cohere/DESIGN.md +48 -0
  40. package/web/references/coinbase/DESIGN.md +139 -5
  41. package/web/references/coinone/DESIGN.md +39 -0
  42. package/web/references/composio/DESIGN.md +46 -0
  43. package/web/references/cookpad/DESIGN.md +37 -0
  44. package/web/references/coupang/DESIGN.md +57 -2
  45. package/web/references/cursor/DESIGN.md +44 -0
  46. package/web/references/dabang/DESIGN.md +57 -19
  47. package/web/references/dcard/DESIGN.md +57 -0
  48. package/web/references/dell/DESIGN.md +636 -0
  49. package/web/references/devsisters/DESIGN.md +29 -0
  50. package/web/references/discord/DESIGN.md +604 -0
  51. package/web/references/dji/DESIGN.md +39 -0
  52. package/web/references/drnow/DESIGN.md +52 -0
  53. package/web/references/duolingo/DESIGN.md +563 -0
  54. package/web/references/elevenlabs/DESIGN.md +39 -0
  55. package/web/references/expo/DESIGN.md +39 -0
  56. package/web/references/fastcampus/DESIGN.md +50 -0
  57. package/web/references/ferrari/DESIGN.md +47 -0
  58. package/web/references/figma/DESIGN.md +44 -0
  59. package/web/references/finda/DESIGN.md +413 -0
  60. package/web/references/flex/DESIGN.md +28 -0
  61. package/web/references/flo/DESIGN.md +43 -0
  62. package/web/references/framer/DESIGN.md +38 -0
  63. package/web/references/freee/DESIGN.md +48 -0
  64. package/web/references/fugle/DESIGN.md +41 -1
  65. package/web/references/gangnamunni/DESIGN.md +57 -1
  66. package/web/references/genie/DESIGN.md +415 -0
  67. package/web/references/github/DESIGN.md +727 -0
  68. package/web/references/gmarket/DESIGN.md +51 -0
  69. package/web/references/gogolook/DESIGN.md +25 -1
  70. package/web/references/gogoro/DESIGN.md +38 -0
  71. package/web/references/grip/DESIGN.md +39 -0
  72. package/web/references/hahow/DESIGN.md +26 -0
  73. package/web/references/hashicorp/DESIGN.md +42 -0
  74. package/web/references/hogangnono/DESIGN.md +41 -0
  75. package/web/references/hp/DESIGN.md +563 -0
  76. package/web/references/hyperconnect/DESIGN.md +393 -0
  77. package/web/references/hyundaicard/DESIGN.md +24 -0
  78. package/web/references/ibm/DESIGN.md +44 -0
  79. package/web/references/ichef/DESIGN.md +44 -0
  80. package/web/references/ikala/DESIGN.md +400 -0
  81. package/web/references/inflearn/DESIGN.md +38 -0
  82. package/web/references/intercom/DESIGN.md +38 -0
  83. package/web/references/jandi/DESIGN.md +382 -0
  84. package/web/references/jkopay/DESIGN.md +35 -1
  85. package/web/references/jobkorea/DESIGN.md +39 -0
  86. package/web/references/jumpit/DESIGN.md +37 -0
  87. package/web/references/kakao/DESIGN.md +64 -0
  88. package/web/references/kakaobank/DESIGN.md +55 -1
  89. package/web/references/kakaopay/DESIGN.md +59 -0
  90. package/web/references/kakaot/DESIGN.md +53 -0
  91. package/web/references/karrot/DESIGN.md +49 -0
  92. package/web/references/kbank/DESIGN.md +39 -0
  93. package/web/references/kdan/DESIGN.md +34 -1
  94. package/web/references/kintone/DESIGN.md +586 -0
  95. package/web/references/kkbox/DESIGN.md +22 -0
  96. package/web/references/kkday/DESIGN.md +47 -0
  97. package/web/references/kmong/DESIGN.md +427 -0
  98. package/web/references/krafton/DESIGN.md +37 -0
  99. package/web/references/kraken/DESIGN.md +44 -0
  100. package/web/references/krds/DESIGN.md +63 -0
  101. package/web/references/kream/DESIGN.md +32 -0
  102. package/web/references/kurly/DESIGN.md +38 -1
  103. package/web/references/laftel/DESIGN.md +40 -0
  104. package/web/references/lamborghini/DESIGN.md +54 -0
  105. package/web/references/layerx/DESIGN.md +615 -0
  106. package/web/references/lezhin/DESIGN.md +47 -0
  107. package/web/references/line/DESIGN.md +36 -0
  108. package/web/references/linear.app/DESIGN.md +182 -88
  109. package/web/references/loom/DESIGN.md +396 -0
  110. package/web/references/lovable/DESIGN.md +38 -0
  111. package/web/references/lunit/DESIGN.md +47 -19
  112. package/web/references/mastercard/DESIGN.md +587 -0
  113. package/web/references/meituan/DESIGN.md +42 -0
  114. package/web/references/melon/DESIGN.md +26 -0
  115. package/web/references/mercari/DESIGN.md +41 -0
  116. package/web/references/mercury/DESIGN.md +589 -0
  117. package/web/references/meta/DESIGN.md +615 -0
  118. package/web/references/millie/DESIGN.md +51 -0
  119. package/web/references/minimax/DESIGN.md +53 -0
  120. package/web/references/mintlify/DESIGN.md +45 -0
  121. package/web/references/miro/DESIGN.md +47 -0
  122. package/web/references/mistral.ai/DESIGN.md +37 -0
  123. package/web/references/momoshop/DESIGN.md +43 -0
  124. package/web/references/money-forward/DESIGN.md +42 -0
  125. package/web/references/mongodb/DESIGN.md +44 -0
  126. package/web/references/muji/DESIGN.md +605 -0
  127. package/web/references/musinsa/DESIGN.md +48 -0
  128. package/web/references/mustit/DESIGN.md +47 -1
  129. package/web/references/myrealtrip/DESIGN.md +49 -0
  130. package/web/references/naver/DESIGN.md +50 -1
  131. package/web/references/naverwebtoon/DESIGN.md +48 -0
  132. package/web/references/netflix/DESIGN.md +572 -0
  133. package/web/references/nexon/DESIGN.md +389 -0
  134. package/web/references/nhncloud/DESIGN.md +33 -0
  135. package/web/references/nike/DESIGN.md +588 -0
  136. package/web/references/note/DESIGN.md +28 -0
  137. package/web/references/notion/DESIGN.md +48 -0
  138. package/web/references/nvidia/DESIGN.md +50 -0
  139. package/web/references/ohouse/DESIGN.md +56 -0
  140. package/web/references/oliveyoung/DESIGN.md +47 -1
  141. package/web/references/ollama/DESIGN.md +40 -0
  142. package/web/references/openai/DESIGN.md +641 -0
  143. package/web/references/opencode.ai/DESIGN.md +37 -0
  144. package/web/references/payco/DESIGN.md +40 -0
  145. package/web/references/paypay/DESIGN.md +656 -0
  146. package/web/references/pchome/DESIGN.md +439 -0
  147. package/web/references/perplexity/DESIGN.md +546 -0
  148. package/web/references/piccollage/DESIGN.md +43 -0
  149. package/web/references/pinkoi/DESIGN.md +55 -0
  150. package/web/references/pinterest/DESIGN.md +44 -0
  151. package/web/references/pixiv/DESIGN.md +613 -0
  152. package/web/references/pixnet/DESIGN.md +430 -0
  153. package/web/references/posthog/DESIGN.md +50 -0
  154. package/web/references/publy/DESIGN.md +52 -0
  155. package/web/references/qanda/DESIGN.md +49 -1
  156. package/web/references/ragic/DESIGN.md +444 -0
  157. package/web/references/ramp/DESIGN.md +634 -0
  158. package/web/references/rayark/DESIGN.md +22 -0
  159. package/web/references/raycast/DESIGN.md +45 -0
  160. package/web/references/remember/DESIGN.md +44 -0
  161. package/web/references/renault/DESIGN.md +42 -0
  162. package/web/references/replicate/DESIGN.md +39 -0
  163. package/web/references/resend/DESIGN.md +44 -0
  164. package/web/references/retool/DESIGN.md +645 -0
  165. package/web/references/revolut/DESIGN.md +46 -0
  166. package/web/references/richart/DESIGN.md +465 -0
  167. package/web/references/ridi/DESIGN.md +47 -0
  168. package/web/references/riiid/DESIGN.md +32 -0
  169. package/web/references/robinhood/DESIGN.md +604 -0
  170. package/web/references/runwayml/DESIGN.md +45 -0
  171. package/web/references/sanity/DESIGN.md +50 -0
  172. package/web/references/sansan/DESIGN.md +631 -0
  173. package/web/references/sendbird/DESIGN.md +46 -0
  174. package/web/references/sentry/DESIGN.md +48 -0
  175. package/web/references/shinhancard/DESIGN.md +421 -0
  176. package/web/references/shopline/DESIGN.md +431 -0
  177. package/web/references/slack/DESIGN.md +635 -0
  178. package/web/references/smarthr/DESIGN.md +48 -0
  179. package/web/references/smartnews/DESIGN.md +29 -0
  180. package/web/references/socar/DESIGN.md +35 -0
  181. package/web/references/soomgo/DESIGN.md +326 -0
  182. package/web/references/spacex/DESIGN.md +27 -0
  183. package/web/references/spoon/DESIGN.md +46 -0
  184. package/web/references/spotify/DESIGN.md +49 -0
  185. package/web/references/starbucks/DESIGN.md +597 -0
  186. package/web/references/stripe/DESIGN.md +46 -0
  187. package/web/references/studio/DESIGN.md +602 -0
  188. package/web/references/supabase/DESIGN.md +41 -0
  189. package/web/references/superhuman/DESIGN.md +39 -0
  190. package/web/references/surveycake/DESIGN.md +442 -0
  191. package/web/references/tada/DESIGN.md +51 -0
  192. package/web/references/tesla/DESIGN.md +36 -0
  193. package/web/references/theverge/DESIGN.md +500 -0
  194. package/web/references/together.ai/DESIGN.md +33 -0
  195. package/web/references/toss/DESIGN.md +43 -0
  196. package/web/references/toss-securities/DESIGN.md +54 -19
  197. package/web/references/tossbank/DESIGN.md +57 -0
  198. package/web/references/trenbe/DESIGN.md +41 -0
  199. package/web/references/triple/DESIGN.md +47 -0
  200. package/web/references/tumblbug/DESIGN.md +48 -0
  201. package/web/references/tving/DESIGN.md +40 -0
  202. package/web/references/uber/DESIGN.md +36 -0
  203. package/web/references/ubie/DESIGN.md +615 -0
  204. package/web/references/uniqlo/DESIGN.md +575 -0
  205. package/web/references/upbit/DESIGN.md +42 -0
  206. package/web/references/upstage/DESIGN.md +38 -0
  207. package/web/references/velog/DESIGN.md +28 -0
  208. package/web/references/vercel/DESIGN.md +44 -0
  209. package/web/references/voicetube/DESIGN.md +39 -0
  210. package/web/references/voltagent/DESIGN.md +44 -0
  211. package/web/references/wadiz/DESIGN.md +71 -19
  212. package/web/references/wanted/DESIGN.md +46 -0
  213. package/web/references/warp/DESIGN.md +37 -0
  214. package/web/references/watcha/DESIGN.md +40 -0
  215. package/web/references/wavve/DESIGN.md +43 -1
  216. package/web/references/wconcept/DESIGN.md +45 -0
  217. package/web/references/webflow/DESIGN.md +49 -0
  218. package/web/references/wired/DESIGN.md +572 -0
  219. package/web/references/wise/DESIGN.md +41 -0
  220. package/web/references/x.ai/DESIGN.md +31 -0
  221. package/web/references/xiaohongshu/DESIGN.md +39 -0
  222. package/web/references/yanolja/DESIGN.md +45 -0
  223. package/web/references/yeogiotte/DESIGN.md +42 -1
  224. package/web/references/yogiyo/DESIGN.md +50 -0
  225. package/web/references/yourator/DESIGN.md +453 -0
  226. package/web/references/zapier/DESIGN.md +41 -0
  227. package/web/references/zigbang/DESIGN.md +33 -0
  228. package/web/references/zigzag/DESIGN.md +62 -0
  229. package/web/references/zozotown/DESIGN.md +578 -0
  230. package/dist/install-skills-JNH66GOI.js.map +0 -1
@@ -0,0 +1,641 @@
1
+ ---
2
+ id: openai
3
+ name: OpenAI
4
+ country: US
5
+ category: ai
6
+ homepage: "https://openai.com"
7
+ primary_color: "#10a37f"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=openai.com&sz=128"
11
+ verified: "2026-06-06"
12
+ added: "2026-06-06"
13
+ omd: "0.1"
14
+ tokens:
15
+ source: prose-derived
16
+ extracted: "2026-06-09"
17
+ colors:
18
+ primary: "#10a37f"
19
+ primary-hover: "#1a7f64"
20
+ primary-tint: "#d9f2ea"
21
+ canvas: "#ffffff"
22
+ ink: "#0d0d0d"
23
+ brand-black: "#000000"
24
+ error: "#ef4146"
25
+ warning: "#f5a623"
26
+ info: "#4d6bfe"
27
+ gray-50: "#f7f7f8"
28
+ gray-100: "#ececec"
29
+ gray-200: "#e5e5e5"
30
+ gray-300: "#d1d1d1"
31
+ gray-400: "#b4b4b4"
32
+ gray-500: "#9b9b9b"
33
+ gray-600: "#6e6e80"
34
+ gray-700: "#40414f"
35
+ gray-800: "#2d2d2d"
36
+ surface-base: "#212121"
37
+ surface-sunken: "#171717"
38
+ surface-raised: "#2f2f2f"
39
+ dark-border: "#3e3e42"
40
+ amber-bg: "#fdf0d5"
41
+ amber-text: "#b8770f"
42
+ typography:
43
+ family: { sans: "OpenAI Sans", mono: "SF Mono" }
44
+ display-hero: { size: 56, weight: 600, lineHeight: 1.07, tracking: "-0.02em", use: "Marketing hero, launch pages" }
45
+ display-lg: { size: 40, weight: 600, lineHeight: 1.15, tracking: "-0.02em", use: "Section headers" }
46
+ h1: { size: 32, weight: 600, lineHeight: 1.25, tracking: "-0.01em", use: "Page titles" }
47
+ h2: { size: 24, weight: 600, lineHeight: 1.33, tracking: "-0.01em", use: "Sub-sections, card titles" }
48
+ h3: { size: 20, weight: 600, lineHeight: 1.4, use: "Group labels, modal headers" }
49
+ subtitle: { size: 18, weight: 500, lineHeight: 1.56, use: "Lead paragraphs, list headers" }
50
+ body-lg: { size: 16, weight: 400, lineHeight: 1.63, use: "Marketing body, descriptions" }
51
+ body: { size: 15, weight: 400, lineHeight: 1.6, use: "Standard reading text, chat" }
52
+ body-sm: { size: 14, weight: 400, lineHeight: 1.57, use: "Secondary info, dense UI" }
53
+ caption: { size: 13, weight: 400, lineHeight: 1.38, use: "Timestamps, metadata, helper" }
54
+ code: { size: 14, weight: 400, lineHeight: 1.57, use: "Code blocks, tokens, IDs" }
55
+ spacing: { sm: 8, md: 12, base: 16, lg: 24 }
56
+ rounded: { sm: 6, md: 8, lg: 12, xl: 16, full: 9999 }
57
+ shadow:
58
+ card-hover: "0 4px 12px rgba(0,0,0,0.06)"
59
+ toast: "0 4px 16px rgba(0,0,0,0.16)"
60
+ dialog: "0 8px 32px rgba(0,0,0,0.16)"
61
+ components:
62
+ button-primary: { type: button, bg: "#0d0d0d", fg: "#ffffff", radius: 12, padding: "0 20px", font: "15px/500", use: "Default primary action" }
63
+ button-teal: { type: button, bg: "#10a37f", fg: "#ffffff", radius: 12, padding: "0 20px", font: "15px/500", use: "Brand-forward conversion CTA" }
64
+ button-secondary: { type: button, bg: "#ffffff", fg: "#0d0d0d", radius: 12, padding: "0 20px", font: "15px/500", use: "Secondary action" }
65
+ button-ghost: { type: button, bg: "transparent", fg: "#0d0d0d", radius: 8, padding: "0 12px", font: "14px/500", use: "Low-emphasis inline action" }
66
+ pill: { type: button, bg: "#ffffff", fg: "#0d0d0d", radius: 9999, padding: "8px 16px", font: "14px/400", use: "Prompt-suggestion chip, filter, model selector" }
67
+ chat-composer: { type: input, bg: "#ffffff", fg: "#0d0d0d", radius: 26, padding: "14px 18px", font: "16px/400", use: "Signature ChatGPT message input" }
68
+ form-field: { type: input, bg: "#ffffff", fg: "#0d0d0d", radius: 8, padding: "10px 12px", font: "15px/400", use: "Settings, API keys, account forms" }
69
+ card: { type: card, bg: "#ffffff", radius: 12, padding: "24px", use: "Docs cards, pricing, model cards" }
70
+ card-dark: { type: card, bg: "#2f2f2f", radius: 12, padding: "24px", use: "Cards on dark canvas" }
71
+ user-message: { type: listItem, bg: "#f7f7f8", fg: "#0d0d0d", radius: 18, padding: "10px 16px", use: "ChatGPT user turn bubble" }
72
+ badge-neutral: { type: badge, bg: "#ececec", fg: "#40414f", radius: 6, padding: "2px 8px", font: "12px/500", use: "Model labels, version tags" }
73
+ badge-teal: { type: badge, bg: "#d9f2ea", fg: "#1a7f64", radius: 6, padding: "2px 8px", font: "12px/500", use: "New, Plus, positive emphasis" }
74
+ badge-amber: { type: badge, bg: "#fdf0d5", fg: "#b8770f", radius: 6, padding: "2px 8px", font: "12px/500", use: "Preview, Rate limited, caution" }
75
+ tab-underline: { type: tab, bg: "transparent", fg: "#6e6e80", font: "15px/500", use: "Docs, settings, API reference", active: "#0d0d0d text, 2px bottom border #0d0d0d" }
76
+ segmented: { type: tab, bg: "#ececec", fg: "#6e6e80", radius: 8, font: "14px/500", use: "Mode/plan toggle", active: "#ffffff bg, #0d0d0d text" }
77
+ toast: { type: toast, bg: "#0d0d0d", fg: "#ffffff", radius: 10, padding: "12px 16px", font: "14px/400", use: "Transient confirmation (Copied, Saved)" }
78
+ dialog: { type: dialog, bg: "#ffffff", radius: 16, padding: "24px", use: "Confirmations, settings, upgrade prompts" }
79
+ toggle: { type: toggle, bg: "#10a37f", radius: 9999, use: "Boolean settings, on=teal off=#d1d1d1" }
80
+ components_harvested: true
81
+ ---
82
+
83
+ # Design System Inspiration of OpenAI
84
+
85
+ ## 1. Visual Theme & Atmosphere
86
+
87
+ OpenAI's interface is the visual argument that powerful technology should feel quiet. The canvas is uncompromising near-black-on-white (`#0d0d0d` text on `#ffffff`), with the signature teal-green (`#10a37f`) reserved almost exclusively for the moments that matter — the active state, the brand mark, a confirmation. There is no gradient theater, no glassmorphism, no drop-shadow drama. The page reads like a well-set book that happens to be interactive: generous margins, a single column of attention, type doing nearly all the expressive work.
88
+
89
+ The 2025 rebrand crystallized this with **OpenAI Sans**, a bespoke grotesque commissioned from **ABC Dinamo**, replacing the previous Klim Type Foundry pairing of **Söhne** (UI/blog) and **Signifier** (research papers). OpenAI Sans is humanist-leaning — open apertures, a warm single-story `a`, slightly squared terminals — engineered to feel approachable at body sizes and authoritative at display sizes. It ships in five weights (Light, Regular, Medium, Semibold, Bold), each with a true italic. The product surface (ChatGPT, the API platform, the marketing site) leans on Regular and Medium, escalating to Semibold/Bold only for headings.
90
+
91
+ What defines OpenAI visually is **restraint as a statement of trust**. The aesthetic refuses the neon-and-glow visual language that became shorthand for "AI." Instead it borrows from editorial design and Swiss typography: a system that recedes so the model's output is the only thing on stage. The product is dark-mode-native too — ChatGPT's default-dark surfaces (`#212121`, `#171717`) are as canonical as the light marketing pages, and the teal accent is tuned to hold contrast in both.
92
+
93
+ **Key Characteristics:**
94
+ - OpenAI Teal (`#10a37f`) as the singular brand/interactive accent — used sparingly, never decoratively
95
+ - Near-black `#0d0d0d` text on pure white `#ffffff` (light) / off-white on `#212121` (dark)
96
+ - OpenAI Sans (ABC Dinamo, 2025) as the bespoke system typeface — humanist grotesque, 5 weights
97
+ - Editorial whitespace — long line measures, generous leading, single-column reading flow
98
+ - Minimal-to-zero shadow; depth from hairline borders (`#e5e5e5`) and subtle surface tints
99
+ - Dual light/dark parity — both modes are first-class, not afterthoughts
100
+ - Soft-rounded geometry — buttons and cards at 8–12px radius, inputs often fully pill (9999px)
101
+
102
+ ## 2. Color Palette & Roles
103
+
104
+ ### Primary
105
+ - **OpenAI Teal** (`#10a37f`): Primary brand and interactive color — the logo mark, primary CTAs, active links, focus accents, success affirmations. Used with discipline; it is the only saturated hue in most layouts.
106
+ - **Teal Hover** (`#1a7f64`): Darker teal for hover/pressed states on teal-filled elements.
107
+ - **Teal Light** (`#d9f2ea`): Subtle teal-tinted backgrounds — inline success banners, selected rows.
108
+ - **Pure White** (`#ffffff`): Page background and card surface in light mode.
109
+ - **Near Black** (`#0d0d0d`): Primary text and the "black" of the wordmark. A true-feeling near-black, not pure `#000`, for softer contrast.
110
+
111
+ ### Brand (Logo / Marketing)
112
+ - **Brand Black** (`#000000`): The official monochrome logo lockup on light backgrounds.
113
+ - **Brand White** (`#ffffff`): The inverse logo on black/dark backgrounds.
114
+ - **Brand Teal** (`#10a37f`): Permitted accent for the blossom/spiral mark in select brand contexts; the primary lockup remains monochrome.
115
+
116
+ ### Semantic
117
+ - **Error Red** (`#ef4146`): Destructive actions, error states, validation failures.
118
+ - **Success Green** (`#10a37f`): Confirmation and success — reuses the brand teal (the brand color *is* the success color).
119
+ - **Warning Amber** (`#f5a623`): Caution, rate-limit warnings, pending review.
120
+ - **Info Blue** (`#4d6bfe`): Informational callouts, links in documentation contexts.
121
+
122
+ ### Neutral Scale (Light)
123
+ - **Gray 50** (`#f7f7f8`): Lightest surface — ChatGPT sidebar/light fills, code-block backgrounds.
124
+ - **Gray 100** (`#ececec`): Secondary surface, hover fills, disabled backgrounds.
125
+ - **Gray 200** (`#e5e5e5`): Default border, divider, hairline.
126
+ - **Gray 300** (`#d1d1d1`): Stronger border, input outline.
127
+ - **Gray 400** (`#b4b4b4`): Placeholder text, disabled icon.
128
+ - **Gray 500** (`#9b9b9b`): Caption / tertiary text.
129
+ - **Gray 600** (`#6e6e80`): Secondary body text, metadata (the signature OpenAI muted slate).
130
+ - **Gray 700** (`#40414f`): Emphasized secondary text.
131
+ - **Gray 800** (`#2d2d2d`): Strong labels, near-dark UI text.
132
+ - **Gray 900** (`#0d0d0d`): Primary text / near-black.
133
+
134
+ ### Dark Mode Surfaces
135
+ - **Surface Base** (`#212121`): ChatGPT main canvas in dark mode.
136
+ - **Surface Sunken** (`#171717`): Sidebar, deeper panels.
137
+ - **Surface Raised** (`#2f2f2f`): Cards, message bubbles, input bar on dark.
138
+ - **Dark Border** (`#3e3e42` / `rgba(255,255,255,0.1)`): Hairline dividers on dark surfaces.
139
+ - **Dark Text Primary** (`#ececec`): Body text on dark.
140
+ - **Dark Text Secondary** (`#b4b4b4`): Secondary text on dark.
141
+
142
+ ### Surface & Borders
143
+ - **Border Default**: `#e5e5e5` (light) / `rgba(255,255,255,0.1)` (dark).
144
+ - **Border Strong**: `#d1d1d1` (light) / `rgba(255,255,255,0.2)` (dark).
145
+ - **Overlay Scrim**: `rgba(0,0,0,0.5)` — modal backdrop, identical across modes.
146
+
147
+ ## 3. Typography Rules
148
+
149
+ ### Font Family
150
+ - **Primary**: `"OpenAI Sans", "Söhne", "Helvetica Neue", Helvetica, Arial, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`
151
+ - **Serif (research/editorial)**: `"Signifier", "Charter", Georgia, "Times New Roman", serif` — used for long-form research papers and select editorial moments.
152
+ - **Monospace (code)**: `"SF Mono", "Söhne Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace`
153
+
154
+ ### Hierarchy
155
+
156
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
157
+ |------|------|------|--------|-------------|----------------|-------|
158
+ | Display Hero | OpenAI Sans | 56px | 600 | 60px (1.07) | -0.02em | Marketing hero, launch pages |
159
+ | Display Large | OpenAI Sans | 40px | 600 | 46px (1.15) | -0.02em | Section headers |
160
+ | Heading 1 | OpenAI Sans | 32px | 600 | 40px (1.25) | -0.01em | Page titles |
161
+ | Heading 2 | OpenAI Sans | 24px | 600 | 32px (1.33) | -0.01em | Sub-sections, card titles |
162
+ | Heading 3 | OpenAI Sans | 20px | 600 | 28px (1.40) | normal | Group labels, modal headers |
163
+ | Subtitle | OpenAI Sans | 18px | 500 | 28px (1.56) | normal | Lead paragraphs, list headers |
164
+ | Body Large | OpenAI Sans | 16px | 400 | 26px (1.63) | normal | Marketing body, descriptions |
165
+ | Body | OpenAI Sans | 15px | 400 | 24px (1.60) | normal | Standard reading text, chat |
166
+ | Body Small | OpenAI Sans | 14px | 400 | 22px (1.57) | normal | Secondary info, dense UI |
167
+ | Caption | OpenAI Sans | 13px | 400 | 18px (1.38) | normal | Timestamps, metadata, helper |
168
+ | Code | SF Mono / Söhne Mono | 14px | 400 | 22px (1.57) | normal | Code blocks, tokens, IDs |
169
+
170
+ ### Principles
171
+ - **Five weights, three used**: OpenAI Sans ships Light–Bold, but UI leans on 400 (body), 500 (medium emphasis), 600 (headings). Bold and Light are accents, not workhorses.
172
+ - **Negative tracking on display**: Large headings tighten to -0.01em / -0.02em for an editorial, confident set. Body text stays at default tracking.
173
+ - **Generous leading on reading text**: Body line-height runs 1.6–1.63 — wider than typical product UI — to make model output and documentation feel calm and book-like.
174
+ - **Serif signals "research"**: Signifier serif is a semantic cue. When OpenAI wants the tone of a paper, it switches to serif body. Product UI never uses serif.
175
+ - **Mono for machine truth**: Code, API keys, token counts, and model IDs always render monospace — the typographic mark of "this is exact."
176
+
177
+ ## 4. Component Stylings
178
+
179
+ ### Buttons
180
+
181
+ OpenAI buttons are calm, soft-cornered, and high-contrast. The default action is a solid near-black (or teal for brand CTAs); secondary actions are outlined or ghost. Geometry is consistent: ~12px radius for standard buttons, full pill for compact/chip actions.
182
+
183
+ **Primary (Black)**
184
+ - Background: `#0d0d0d`
185
+ - Text: `#ffffff`
186
+ - Border: none
187
+ - Radius: 12px
188
+ - Padding: 0 20px
189
+ - Height: 48px
190
+ - Font: 15px / 500 / OpenAI Sans
191
+ - Hover: `#2d2d2d`
192
+ - Pressed: `#000000`
193
+ - Disabled: `#e5e5e5` bg / `#9b9b9b` text
194
+ - Use: The default primary action across product and marketing ("Get started", "Continue").
195
+
196
+ **Primary (Teal / Brand CTA)**
197
+ - Background: `#10a37f`
198
+ - Text: `#ffffff`
199
+ - Border: none
200
+ - Radius: 12px
201
+ - Padding: 0 20px
202
+ - Height: 48px
203
+ - Font: 15px / 500 / OpenAI Sans
204
+ - Hover: `#1a7f64`
205
+ - Use: Brand-forward conversion moments (signup, upgrade to Plus) where teal reinforces identity.
206
+
207
+ **Secondary (Outline)**
208
+ - Background: `#ffffff`
209
+ - Text: `#0d0d0d`
210
+ - Border: 1px solid `#d1d1d1`
211
+ - Radius: 12px
212
+ - Padding: 0 20px
213
+ - Height: 48px
214
+ - Font: 15px / 500 / OpenAI Sans
215
+ - Hover: `#f7f7f8` bg, border `#0d0d0d`
216
+ - Use: Secondary action paired with a primary ("Learn more", "Cancel").
217
+
218
+ **Ghost / Tertiary**
219
+ - Background: transparent
220
+ - Text: `#0d0d0d`
221
+ - Border: none
222
+ - Radius: 8px
223
+ - Padding: 0 12px
224
+ - Height: 40px
225
+ - Font: 14px / 500 / OpenAI Sans
226
+ - Hover: `#ececec` bg
227
+ - Use: Low-emphasis inline actions, toolbar buttons, menu items.
228
+
229
+ **Pill (Compact / Suggestion chip)**
230
+ - Background: `#ffffff`
231
+ - Text: `#0d0d0d`
232
+ - Border: 1px solid `#e5e5e5`
233
+ - Radius: 9999px
234
+ - Padding: 8px 16px
235
+ - Font: 14px / 400 / OpenAI Sans
236
+ - Hover: `#f7f7f8`
237
+ - Use: ChatGPT prompt-suggestion chips, filter pills, model selectors.
238
+
239
+ **Dark-mode Primary**
240
+ - Background: `#ffffff`
241
+ - Text: `#0d0d0d`
242
+ - Radius: 12px
243
+ - Height: 48px
244
+ - Font: 15px / 500
245
+ - Use: On dark surfaces, the primary inverts to a white fill with dark text for maximum contrast.
246
+
247
+ ### Inputs
248
+
249
+ OpenAI's signature input is the ChatGPT composer — a large, fully-rounded field that anchors the screen. Form inputs in the API platform use rectangular soft-cornered fields.
250
+
251
+ **Chat Composer (signature)**
252
+ - Background: `#ffffff` (light) / `#2f2f2f` (dark)
253
+ - Text: `#0d0d0d` / `#ececec`
254
+ - Border: 1px solid `#e5e5e5` / `rgba(255,255,255,0.1)`
255
+ - Radius: 26px (pill-like, near-fully-rounded)
256
+ - Padding: 14px 18px
257
+ - Font: 16px / 400 / OpenAI Sans
258
+ - Placeholder: `#9b9b9b`
259
+ - Focus: subtle border darken to `#b4b4b4`; soft `0 2px 8px rgba(0,0,0,0.08)` lift
260
+ - Use: The central message input — wide, tall, inviting, with inline send/attach icons.
261
+
262
+ **Standard Form Field**
263
+ - Background: `#ffffff`
264
+ - Text: `#0d0d0d`
265
+ - Border: 1px solid `#d1d1d1`
266
+ - Radius: 8px
267
+ - Padding: 10px 12px
268
+ - Font: 15px / 400 / OpenAI Sans
269
+ - Placeholder: `#9b9b9b`
270
+ - Focus: border `#10a37f` + `0 0 0 3px rgba(16,163,127,0.2)` ring
271
+ - Use: Settings, API keys, account forms.
272
+
273
+ **Error Field**
274
+ - Border: 1px solid `#ef4146`
275
+ - Focus ring: `0 0 0 3px rgba(239,65,70,0.2)`
276
+ - Helper text below: `#ef4146` 13px
277
+ - Use: Validation failure — paired with a single actionable error line.
278
+
279
+ ### Cards
280
+
281
+ **Standard**
282
+ - Background: `#ffffff`
283
+ - Border: 1px solid `#e5e5e5`
284
+ - Radius: 12px
285
+ - Padding: 24px
286
+ - Shadow: none (border carries the edge)
287
+ - Use: Documentation cards, pricing tiers, model cards.
288
+
289
+ **Interactive / Hover**
290
+ - Background: `#ffffff`
291
+ - Border: 1px solid `#e5e5e5`
292
+ - Radius: 12px
293
+ - Padding: 20px
294
+ - Hover: border `#0d0d0d` or subtle `0 4px 12px rgba(0,0,0,0.06)` lift
295
+ - Use: Clickable cards — model picker, example gallery, app links.
296
+
297
+ **Dark Card**
298
+ - Background: `#2f2f2f`
299
+ - Border: 1px solid `rgba(255,255,255,0.1)`
300
+ - Radius: 12px
301
+ - Padding: 24px
302
+ - Use: Cards on the dark product canvas.
303
+
304
+ ### Message Bubbles (ChatGPT)
305
+
306
+ **User Message**
307
+ - Background: `#f7f7f8` (light) / `#2f2f2f` (dark)
308
+ - Text: `#0d0d0d` / `#ececec`
309
+ - Radius: 18px
310
+ - Padding: 10px 16px
311
+ - Align: right, max-width ~70%
312
+ - Use: The user's turn.
313
+
314
+ **Assistant Message**
315
+ - Background: transparent (no bubble)
316
+ - Text: `#0d0d0d` / `#ececec`
317
+ - Padding: 4px 0
318
+ - Align: full-width, left
319
+ - Use: Model output reads as flowing document text, deliberately not boxed — reinforcing "this is content, not a chat snippet."
320
+
321
+ ### Badges
322
+
323
+ **Default (Neutral)**
324
+ - Background: `#ececec`
325
+ - Text: `#40414f`
326
+ - Border: none
327
+ - Radius: 6px
328
+ - Padding: 2px 8px
329
+ - Font: 12px / 500 / OpenAI Sans
330
+ - Use: Model labels, version tags ("GPT-4o", "Beta").
331
+
332
+ **Teal (Brand / New)**
333
+ - Background: `#d9f2ea`
334
+ - Text: `#1a7f64`
335
+ - Radius: 6px
336
+ - Padding: 2px 8px
337
+ - Font: 12px / 500
338
+ - Use: "New", "Plus", positive emphasis.
339
+
340
+ **Amber (Caution)**
341
+ - Background: `#fdf0d5`
342
+ - Text: `#b8770f`
343
+ - Radius: 6px
344
+ - Padding: 2px 8px
345
+ - Font: 12px / 500
346
+ - Use: "Preview", "Rate limited", caution states.
347
+
348
+ ### Tabs
349
+
350
+ **Underline Tabs**
351
+ - Background: transparent
352
+ - Inactive text: `#6e6e80`
353
+ - Active text: `#0d0d0d`
354
+ - Active indicator: 2px bottom border `#0d0d0d` (or `#10a37f` in brand contexts)
355
+ - Font: 15px / 500 / OpenAI Sans
356
+ - Use: Documentation, settings sections, API reference.
357
+
358
+ **Segmented**
359
+ - Track background: `#ececec`
360
+ - Radius: 8px
361
+ - Active segment: `#ffffff` bg + `#0d0d0d` text + `0 1px 3px rgba(0,0,0,0.08)`
362
+ - Inactive: `#6e6e80` text
363
+ - Font: 14px / 500
364
+ - Use: Light/dark or mode toggles, plan switching.
365
+
366
+ ### Toasts
367
+
368
+ **Default**
369
+ - Background: `#0d0d0d`
370
+ - Text: `#ffffff`
371
+ - Border: none
372
+ - Radius: 10px
373
+ - Padding: 12px 16px
374
+ - Shadow: `0 4px 16px rgba(0,0,0,0.16)`
375
+ - Font: 14px / 400 / OpenAI Sans
376
+ - Use: Transient confirmation ("Copied", "Saved"). Auto-dismiss ~3s.
377
+
378
+ ### Dialogs
379
+
380
+ **Centered Modal**
381
+ - Background: `#ffffff` (light) / `#2f2f2f` (dark)
382
+ - Border: 1px solid `#e5e5e5` / `rgba(255,255,255,0.1)`
383
+ - Radius: 16px
384
+ - Padding: 24px
385
+ - Shadow: `0 8px 32px rgba(0,0,0,0.16)`
386
+ - Backdrop: `rgba(0,0,0,0.5)`
387
+ - Use: Confirmations, settings panels, upgrade prompts.
388
+
389
+ ### Toggles
390
+
391
+ **Default**
392
+ - Track: `#10a37f` (on) / `#d1d1d1` (off)
393
+ - Radius: 9999px
394
+ - Thumb: `#ffffff` 18px circle, `0 1px 2px rgba(0,0,0,0.1)`
395
+ - Use: Boolean settings (custom instructions, data controls).
396
+
397
+ ---
398
+
399
+
400
+ **Tier 1 sources:** https://openai.com (live production site, verified via live DOM getComputedStyle).
401
+
402
+ ## 5. Layout Principles
403
+
404
+ ### Spacing System
405
+ - Base unit: 4px
406
+ - Common values: 4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px, 96px
407
+ - Marketing section vertical rhythm: 96–128px between major bands
408
+ - Product UI horizontal padding: 16–24px; marketing: centered max-width with auto margins
409
+
410
+ ### Grid & Container
411
+ - Marketing max-width: ~1200px centered, with ~24px gutters
412
+ - Reading column (docs/blog): ~720px max measure for comfortable line length
413
+ - ChatGPT conversation column: ~768px max-width centered, regardless of viewport
414
+ - 12-column grid for marketing layouts; single-column for reading and chat
415
+
416
+ ### Whitespace Philosophy
417
+ - **Whitespace is the brand.** Generous margins and long vertical rhythm signal calm confidence. Crowding reads as anxious; OpenAI never crowds.
418
+ - **One thing per band.** Marketing sections present a single idea with breathing room, not feature grids of equal weight.
419
+ - **The reading measure is sacred.** Long-form text caps at ~720px so lines stay readable — content never spans the full viewport.
420
+ - **Center the conversation.** ChatGPT pins content to a fixed central column even on ultrawide screens, keeping focus on the dialogue.
421
+
422
+ ### Border Radius Scale
423
+ - Tight (6px): Badges, tags, small chips
424
+ - Standard (8px): Form inputs, ghost buttons, segmented controls
425
+ - Comfortable (12px): Buttons, cards
426
+ - Large (16px): Modals, large panels
427
+ - XL (18–26px): Message bubbles, chat composer
428
+ - Pill (9999px): Suggestion chips, toggles, avatar rings
429
+
430
+ ## 6. Depth & Elevation
431
+
432
+ | Level | Treatment | Use |
433
+ |-------|-----------|-----|
434
+ | Flat (Level 0) | No shadow; hairline border `#e5e5e5` | Cards, page sections, default surfaces |
435
+ | Subtle (Level 1) | `0 1px 3px rgba(0,0,0,0.08)` | Active segmented control, slight lift |
436
+ | Standard (Level 2) | `0 2px 8px rgba(0,0,0,0.08)` | Composer focus, hover cards, dropdowns |
437
+ | Elevated (Level 3) | `0 4px 16px rgba(0,0,0,0.12)` | Popovers, menus, toasts |
438
+ | Modal (Level 4) | `0 8px 32px rgba(0,0,0,0.16)` | Dialogs, command palette |
439
+
440
+ **Shadow Philosophy**: OpenAI prefers **borders over shadows**. A 1px `#e5e5e5` hairline defines most edges; shadow appears only on genuinely floating elements (menus, modals, the composer on focus). Shadows are pure black at low opacity — no colored or layered glows. This editorial flatness is intentional: depth theater would undercut the calm, trustworthy tone. In dark mode, elevation is communicated through lighter surface tints (`#212121` → `#2f2f2f`) rather than shadow.
441
+
442
+ ### Blur Effects
443
+ - Sticky marketing headers use a subtle `backdrop-filter: blur(12px)` with a translucent white/dark background on scroll.
444
+ - Modal backdrops are flat scrims, not blurred, keeping the focus binary.
445
+
446
+ ## 7. Do's and Don'ts
447
+
448
+ ### Do
449
+ - Use OpenAI Teal (`#10a37f`) sparingly — for the mark, active states, and key CTAs only
450
+ - Default to near-black `#0d0d0d` on white `#ffffff`; design dark mode as a first-class peer
451
+ - Use OpenAI Sans at 400/500/600; apply slight negative tracking on large headings
452
+ - Define edges with 1px hairline borders (`#e5e5e5`) before reaching for shadow
453
+ - Cap reading text at ~720px measure with 1.6 line-height
454
+ - Center the conversation/content column even on wide viewports
455
+ - Use monospace for code, API keys, model IDs, and token counts
456
+
457
+ ### Don't
458
+ - Don't use teal as a decorative fill or background wash — it is an accent, not a theme
459
+ - Don't add gradients, glows, or neon "AI" visual clichés — restraint is the brand
460
+ - Don't box assistant output in a bubble — model text flows as a document, left-aligned
461
+ - Don't use serif for product UI — serif (Signifier) signals research/editorial only
462
+ - Don't crowd layouts; if a section feels dense, it needs more whitespace, not less
463
+ - Don't use heavy multi-layer or colored shadows — single-layer black, low opacity
464
+ - Don't let reading text span the full viewport width
465
+
466
+ ## 8. Responsive Behavior
467
+
468
+ ### Breakpoints
469
+ | Name | Width | Key Changes |
470
+ |------|-------|-------------|
471
+ | Mobile | <640px | Single column, full-width composer, collapsed sidebar (drawer) |
472
+ | Tablet | 640–1024px | Sidebar toggleable, content column ~640px |
473
+ | Desktop | 1024–1440px | Persistent sidebar, centered ~768px conversation column |
474
+ | Wide | >1440px | Content stays centered at max-width; margins grow, not content |
475
+
476
+ ### Touch Targets
477
+ - Buttons: 48px primary height, 40px ghost — both comfortably tappable
478
+ - Suggestion chips: minimum 36px height
479
+ - Composer: ~52px+ tall for easy thumb access on mobile
480
+
481
+ ### Collapsing Strategy
482
+ - ChatGPT sidebar collapses to an off-canvas drawer below tablet
483
+ - Marketing nav collapses to a hamburger menu under 768px
484
+ - Multi-column marketing grids stack to single column on mobile
485
+ - Composer pins to the bottom of the viewport on mobile with safe-area insets
486
+
487
+ ### Image Behavior
488
+ - Marketing imagery is full-bleed or contained within the 1200px grid, maintaining aspect ratio
489
+ - Model-generated images render at the conversation column width with rounded corners (12px)
490
+ - Avatars and logos: crisp at 24–40px, consistent sizing within a context
491
+
492
+ ## 9. Agent Prompt Guide
493
+
494
+ ### Quick Color Reference
495
+ - Primary CTA (default): Near Black (`#0d0d0d`)
496
+ - Primary CTA (brand): OpenAI Teal (`#10a37f`)
497
+ - CTA Hover (teal): `#1a7f64`
498
+ - Background (light): Pure White (`#ffffff`)
499
+ - Background (dark): `#212121`
500
+ - Surface Raised (dark): `#2f2f2f`
501
+ - Heading text: Near Black (`#0d0d0d`)
502
+ - Body text: Near Black (`#0d0d0d`)
503
+ - Secondary text: Slate Gray (`#6e6e80`)
504
+ - Placeholder: Gray (`#9b9b9b`)
505
+ - Border: Gray 200 (`#e5e5e5`)
506
+ - Success: Teal (`#10a37f`)
507
+ - Error: Red (`#ef4146`)
508
+ - Warning: Amber (`#f5a623`)
509
+
510
+ ### Example Component Prompts
511
+ - "Create a ChatGPT-style composer: white bg, 1px #e5e5e5 border, 26px radius, 14px/18px padding, 16px OpenAI Sans placeholder #9b9b9b. Inline send icon right. On focus: border #b4b4b4 + 0 2px 8px rgba(0,0,0,0.08)."
512
+ - "Build a primary button: #0d0d0d bg, white text, 15px weight 500, 48px height, 12px radius, 0 20px padding. Hover #2d2d2d. Disabled #e5e5e5 bg, #9b9b9b text."
513
+ - "Design a brand CTA: #10a37f bg, white text 15px weight 500, 48px height, 12px radius. Hover #1a7f64. Use for signup/upgrade only."
514
+ - "Create a model card: white bg, 1px #e5e5e5 border, 12px radius, 24px padding. Title 20px weight 600 #0d0d0d. Description 15px weight 400 #6e6e80. Hover: border #0d0d0d."
515
+ - "Design an assistant message: no bubble, transparent bg, left-aligned full-width, #0d0d0d text 15px weight 400, line-height 1.6. User message: #f7f7f8 bg, 18px radius, right-aligned, max-width 70%."
516
+ - "Build a suggestion chip: white bg, 1px #e5e5e5 border, 9999px radius, 8px/16px padding, 14px weight 400. Hover #f7f7f8."
517
+
518
+ ### Iteration Guide
519
+ 1. Always use the OpenAI Sans stack with Söhne/Helvetica fallbacks
520
+ 2. Teal `#10a37f` is an accent for mark + active + key CTA — never a background wash
521
+ 3. Default primary action is near-black `#0d0d0d`; teal is the brand-forward alternative
522
+ 4. Prefer 1px `#e5e5e5` borders over shadows for edges
523
+ 5. Body line-height 1.6, reading measure ~720px, conversation column ~768px centered
524
+ 6. Design dark mode as a peer: `#212121` base, `#2f2f2f` raised, `#ececec` text
525
+ 7. Assistant output flows as document text — never boxed in a bubble
526
+
527
+ ---
528
+
529
+ ## 10. Voice & Tone
530
+
531
+ OpenAI speaks like a thoughtful researcher who respects your intelligence: clear, plain, confident without hype. It avoids both corporate jargon and breathless "revolutionary" marketing. Sentences are short and declarative. Claims are measured — capabilities are described with their limits acknowledged. The voice is in American English, lowercase-comfortable in product microcopy, sentence case nearly everywhere (not Title Case).
532
+
533
+ | Context | Tone |
534
+ |---|---|
535
+ | CTAs | Plain imperative — "Get started", "Try ChatGPT", "Start building". Sentence case. |
536
+ | Product microcopy | Minimal, functional — "Send a message", "Regenerate", "Copy code". |
537
+ | Success states | Quiet and brief — "Copied", "Saved". No exclamation marks. |
538
+ | Error messages | Honest and specific — name what happened, offer a next step. Never blame the user. |
539
+ | Onboarding | Calm, one concept at a time. Acknowledges the tool's novelty without overhyping. |
540
+ | Capability claims | Measured — describe what the model does *and* its limitations. "may produce inaccurate information". |
541
+ | Documentation | Precise, example-first, second person ("you can…"). |
542
+
543
+ **Forbidden tone.** No hype superlatives ("game-changing", "revolutionary", "mind-blowing"), no fake urgency, no emoji in product chrome, no Title Case headings, no anthropomorphizing the model as a person with feelings. Safety and limitation language is never hidden — it is part of the honest voice.
544
+
545
+ ## 11. Brand Narrative
546
+
547
+ OpenAI was founded in **December 2015** as a nonprofit AI research lab by a group including **Sam Altman**, **Elon Musk**, **Greg Brockman**, **Ilya Sutskever**, and **Wojciech Zaremba**, with the stated mission to ensure that artificial general intelligence "benefits all of humanity." In 2019 it restructured into a "capped-profit" entity (OpenAI LP) to raise the capital needed for large-scale compute, taking a major investment from **Microsoft**.
548
+
549
+ The brand entered global consciousness with **ChatGPT**, launched November 30, 2022, which reached an estimated 100 million users within two months — among the fastest consumer-product adoptions in history. The product line spans GPT-series models, the DALL·E image models, the Whisper speech model, the API platform, and ChatGPT's consumer tiers (Free, Plus, Pro, Team, Enterprise).
550
+
551
+ The visual identity reflects the mission's gravity. Where competitors reached for the neon-gradient "sci-fi AI" aesthetic, OpenAI chose **editorial restraint**: black-on-white, a single teal accent, a custom humanist typeface, and whitespace as the dominant element. The 2025 rebrand — introducing **OpenAI Sans** by ABC Dinamo and refining the blossom/spiral mark — doubled down on this: a system that feels less like a tech product and more like a serious institution publishing serious work. The teal `#10a37f` is the one warm note in an otherwise monochrome world; it humanizes without shouting.
552
+
553
+ What OpenAI refuses: the visual hype-cycle of AI startups (glowing orbs, particle fields, purple-to-cyan gradients), the density of developer-tool dashboards, and the cuteness of consumer mascots. It occupies the space of a calm, credible authority — powerful technology presented quietly enough that you trust it.
554
+
555
+ ## 12. Principles
556
+
557
+ 1. **Restraint is trust.** The more powerful the technology, the calmer its presentation should be. Visual hype undermines credibility; quiet confidence earns it.
558
+ 2. **Whitespace is the primary material.** Generous margins and long vertical rhythm are not empty — they are the brand stating that it has nothing to hide and nothing to oversell.
559
+ 3. **Teal is a scalpel, not a brush.** `#10a37f` marks the brand and the moments of action. It never becomes a background, a wash, or decoration. Scarcity gives it meaning.
560
+ 4. **Content over chrome.** The model's output is the product. Assistant text flows as a document, not a chat bubble; UI recedes so the words are the experience.
561
+ 5. **Honesty in the type.** Monospace means "exact" (code, keys, IDs). Serif means "research." Sans means "product." The typeface is a truth signal, used consistently.
562
+ 6. **Dark and light are equals.** Both modes are designed, not derived. The accent and the hierarchy hold in both; neither is an afterthought.
563
+ 7. **Edges by hairline, not shadow.** A 1px border is the default boundary. Depth is earned only by things that genuinely float.
564
+ 8. **Plain words win.** Microcopy is functional and humble. No hype, no Title Case, no exclamation. The voice respects the reader's intelligence.
565
+
566
+ ## 13. Personas
567
+
568
+ *Personas below are fictional archetypes informed by publicly described OpenAI user segments, not individual people.*
569
+
570
+ **Maya, 29, San Francisco.** Full-stack engineer at a Series-B startup. Lives in the API platform and ChatGPT Plus. Switches between light docs and the dark playground all day. Cares that API keys and model IDs are monospace and copyable in one click, that the docs have runnable examples, and that rate-limit warnings are honest and specific. Distrusts marketing fluff; reads the model card limitations carefully before shipping.
571
+
572
+ **David, 47, Chicago.** Marketing director, non-technical, ChatGPT Plus subscriber. Uses ChatGPT daily to draft and refine copy. Values the calm, uncluttered composer — he's not intimidated by it the way he was by earlier "AI tools." Reads the model's output as if it were a document, not a chat. Notices and appreciates that the interface never shouts at him with badges and popups.
573
+
574
+ **Priya, 22, Bangalore (using the US product in English).** CS student, free-tier user, occasionally hits the upgrade prompt. Toggles dark mode always. Treats ChatGPT as a study partner and pair-programmer. The teal "New" badge and the occasional upgrade CTA are the only color she sees, and that scarcity makes them register. Expects mobile to be flawless — composer pinned to bottom, sidebar as a clean drawer.
575
+
576
+ ## 14. States
577
+
578
+ | State | Treatment |
579
+ |---|---|
580
+ | **Empty (new chat)** | Centered, calm — the wordmark or a short greeting, the composer ready, and 3–4 suggestion chips (white bg, 1px `#e5e5e5` border, pill). No illustration, no empty-state cartoon. |
581
+ | **Empty (no results)** | Single line of `#6e6e80` secondary text ("No results found"). Optional ghost button to clear filters. |
582
+ | **Loading (generating)** | The signature blinking cursor / animated dots in the assistant column as text streams in token-by-token. Content appears progressively, never as a blocking spinner over the page. |
583
+ | **Loading (page/data)** | Skeleton blocks at `#ececec` matching final layout, subtle shimmer. Used in dashboards and the platform, not in the chat stream. |
584
+ | **Streaming** | Text renders incrementally with a soft caret; a "Stop generating" ghost button appears below. The user retains control mid-stream. |
585
+ | **Error (inline field)** | `#ef4146` 1px border, helper text below in `#ef4146` 13px. One specific, blameless sentence with a next step. |
586
+ | **Error (generation failed)** | Inline message in the assistant slot — "Something went wrong" with a "Retry" ghost button. Calm, never alarmist, never a full-screen takeover for a transient failure. |
587
+ | **Error (rate limit)** | Amber-toned banner (`#fdf0d5` bg, `#b8770f` text) stating the limit and when it resets. Honest and specific, not apologetic boilerplate. |
588
+ | **Success (copy/save)** | Black toast ("Copied"), 3s auto-dismiss. No exclamation, no color celebration. |
589
+ | **Disabled** | Reduced contrast — `#e5e5e5` fill, `#9b9b9b` text. Geometry unchanged so re-enabled state is stable. |
590
+ | **Focus** | 3px teal-tinted ring `rgba(16,163,127,0.2)` on inputs; subtle border darken on the composer. Always visible for keyboard users. |
591
+ | **Selected (chat item)** | Sidebar item gets `#ececec` (light) / `#2f2f2f` (dark) fill, no border — a quiet highlight, not a colored bar. |
592
+
593
+ ## 15. Motion & Easing
594
+
595
+ **Durations:**
596
+
597
+ | Token | Value | Use |
598
+ |---|---|---|
599
+ | `motion-instant` | 0ms | Theme toggle, immediate state flips |
600
+ | `motion-fast` | 120ms | Hover, focus, button press, small fades |
601
+ | `motion-standard` | 200ms | The default — menu open, card hover lift, tab switch |
602
+ | `motion-moderate` | 300ms | Modal/sheet entrance, sidebar drawer slide |
603
+ | `motion-stream` | per-token | Text streaming cadence — paced to feel like thinking, not a typewriter gimmick |
604
+
605
+ **Easings:**
606
+
607
+ | Token | Curve | Use |
608
+ |---|---|---|
609
+ | `ease-out` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Things appearing — menus, modals, toasts |
610
+ | `ease-in` | `cubic-bezier(0.4, 0.0, 1, 1)` | Things leaving — dismissals |
611
+ | `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1)` | Two-way transitions — hovers, tab content, drawer |
612
+
613
+ **Signature motions.**
614
+
615
+ 1. **Token streaming.** The defining OpenAI motion: assistant text appears progressively as the model generates, with a soft blinking caret at the leading edge. The cadence conveys "thinking" — deliberate, not instant — and is the most recognizable interaction in the product. It is content, not decoration; it never loops or stalls artificially.
616
+ 2. **Composer focus.** On focus, the composer border darkens gently and lifts with a `0 2px 8px rgba(0,0,0,0.08)` shadow over `motion-fast`. Subtle, inviting, never bouncy.
617
+ 3. **Menu / popover.** Dropdowns and the model picker fade-and-scale in from 0.96 to 1.0 over `motion-standard` with `ease-out`, anchored to their trigger. Dismissal is faster (`motion-fast`).
618
+ 4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, all transitions collapse toward `motion-instant`, streaming text appears in larger chunks rather than per-token animation, and scale/slide effects become simple fades. The product stays fully usable.
619
+
620
+ <!--
621
+ OmD v0.1 Sources — OpenAI
622
+
623
+ Web verification (2026-06-06):
624
+ - WebSearch ("OpenAI brand color hex typography font Söhne OpenAI Sans") corroborated by
625
+ Loftlyy, Mobbin, Fonts In Use, DesignYourWay, brandpalettes.com:
626
+ · Brand palette anchored on #000000 / #FFFFFF with signature teal-green #10A37F.
627
+ · 2025 rebrand introduced OpenAI Sans (bespoke, ABC Dinamo) in 5 weights + italics,
628
+ replacing the Feb-2023 Klim Type Foundry pairing of Söhne (UI/blog) and Signifier
629
+ (research papers); earlier system used Colfax/Charter.
630
+ - https://openai.com and https://openai.com/brand/ returned HTTP 403 to WebFetch
631
+ (anti-bot); token-level UI values (ChatGPT surfaces #212121/#171717/#2f2f2f, composer
632
+ geometry, #6e6e80 muted slate, #ececec/#f7f7f8 grays) are widely documented public
633
+ product values and direct observation of the shipped ChatGPT/API surfaces, not a
634
+ sourced internal spec.
635
+
636
+ Primary color #10a37f is OpenAI's signature teal, widely catalogued as the brand accent.
637
+
638
+ Personas (§13) are fictional archetypes informed by publicly described OpenAI user
639
+ segments. Interpretive claims (e.g., "teal is a scalpel, not a brush") are editorial
640
+ readings of the design, not documented OpenAI statements.
641
+ -->