oh-my-design-cli 1.8.7 → 1.9.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 (247) hide show
  1. package/.claude/hooks/lib/preferences-parser.cjs +1 -0
  2. package/.claude/hooks/lib/preferences-writer.cjs +1 -0
  3. package/.claude/hooks/post-edit-watch.cjs +1 -0
  4. package/.claude/hooks/session-end-foldin.cjs +1 -0
  5. package/.claude/hooks/session-state-loader.cjs +1 -0
  6. package/.claude/hooks/skill-activation.cjs +1 -0
  7. package/.claude/settings.json +10 -1
  8. package/.github/assets/logo-bg.png +0 -0
  9. package/AGENTS.md +20 -1
  10. package/CHANGELOG.md +482 -0
  11. package/MIGRATION.md +103 -0
  12. package/README.ja.md +56 -19
  13. package/README.ko.md +47 -30
  14. package/README.md +48 -30
  15. package/README.zh-TW.md +59 -22
  16. package/agents/AGENT.md +8 -7
  17. package/agents/omd-codex-image.md +1 -1
  18. package/agents/omd-critic.md +6 -7
  19. package/agents/omd-designer-review.md +1 -1
  20. package/agents/omd-final-qa.md +1 -1
  21. package/agents/omd-humanizer.md +38 -0
  22. package/agents/omd-kr-writer.md +3 -4
  23. package/agents/omd-locale-adapter.md +12 -16
  24. package/agents/omd-master.md +24 -19
  25. package/agents/omd-microcopy.md +1 -1
  26. package/agents/omd-orchestrator.md +7 -8
  27. package/agents/omd-slop-auditor.md +31 -0
  28. package/agents/omd-ux-researcher.md +1 -1
  29. package/data/reference-fingerprints.json +1995 -38
  30. package/dist/bin/oh-my-design.js +16 -8
  31. package/dist/bin/oh-my-design.js.map +1 -1
  32. package/dist/chunk-UJIHCEYF.js +99 -0
  33. package/dist/chunk-UJIHCEYF.js.map +1 -0
  34. package/dist/doctor-LDWSFM3I.js +763 -0
  35. package/dist/doctor-LDWSFM3I.js.map +1 -0
  36. package/dist/install-skills-ZZFNJ2II.js +1120 -0
  37. package/dist/install-skills-ZZFNJ2II.js.map +1 -0
  38. package/docs/CLI_QUICKSTART.md +157 -0
  39. package/package.json +25 -4
  40. package/scripts/postinstall.cjs +5 -4
  41. package/skills/claude-design/SKILL.md +38 -14
  42. package/skills/claude-design/references/claude-design-flow.md +11 -11
  43. package/skills/claude-design/references/codebase-analysis.md +5 -4
  44. package/skills/omd-final-qa/SKILL.md +1 -1
  45. package/skills/omd-harness/SKILL.md +51 -50
  46. package/skills/omd-humanize/SKILL.md +116 -0
  47. package/skills/omd-humanize/agents/openai.yaml +4 -0
  48. package/skills/omd-humanize/references/locale-playbooks.md +102 -0
  49. package/skills/omd-humanize/references/sources.md +11 -0
  50. package/skills/omd-init/SKILL.md +18 -12
  51. package/skills/omd-locale-adapter/SKILL.md +58 -91
  52. package/skills/omd-orchestrator/SKILL.md +11 -5
  53. package/skills/omd-reference-capture/SKILL.md +80 -26
  54. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
  55. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
  56. package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
  57. package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
  58. package/skills/omd-slop-audit/SKILL.md +110 -0
  59. package/skills/omd-slop-audit/agents/openai.yaml +4 -0
  60. package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
  61. package/skills/omd-slop-audit/references/sources.md +24 -0
  62. package/web/references/104/DESIGN.md +354 -0
  63. package/web/references/11st/DESIGN.md +197 -316
  64. package/web/references/29cm/DESIGN.md +297 -393
  65. package/web/references/42dot/DESIGN.md +390 -0
  66. package/web/references/8percent/DESIGN.md +438 -0
  67. package/web/references/ably/DESIGN.md +267 -572
  68. package/web/references/acer/DESIGN.md +329 -0
  69. package/web/references/airbnb/DESIGN.md +219 -557
  70. package/web/references/alipay/DESIGN.md +179 -420
  71. package/web/references/apple/DESIGN.md +224 -498
  72. package/web/references/asleep/DESIGN.md +402 -0
  73. package/web/references/au/DESIGN.md +334 -0
  74. package/web/references/autopedia/DESIGN.md +382 -0
  75. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  76. package/web/references/baemin/DESIGN.md +332 -491
  77. package/web/references/banksalad/DESIGN.md +269 -180
  78. package/web/references/barogo/DESIGN.md +416 -0
  79. package/web/references/beusable/DESIGN.md +464 -0
  80. package/web/references/bilibili/DESIGN.md +206 -374
  81. package/web/references/bmw/DESIGN.md +162 -276
  82. package/web/references/brandi/DESIGN.md +184 -325
  83. package/web/references/catchtable/DESIGN.md +219 -264
  84. package/web/references/cgv/DESIGN.md +317 -0
  85. package/web/references/channeltalk/DESIGN.md +210 -336
  86. package/web/references/china-airlines/DESIGN.md +291 -0
  87. package/web/references/cjonstyle/DESIGN.md +453 -0
  88. package/web/references/class101/DESIGN.md +168 -387
  89. package/web/references/classum/DESIGN.md +228 -203
  90. package/web/references/claude/DESIGN.md +242 -479
  91. package/web/references/clay/DESIGN.md +179 -377
  92. package/web/references/clickhouse/DESIGN.md +254 -343
  93. package/web/references/cohere/DESIGN.md +214 -324
  94. package/web/references/coinone/DESIGN.md +199 -179
  95. package/web/references/corca/DESIGN.md +414 -0
  96. package/web/references/coupang/DESIGN.md +205 -475
  97. package/web/references/cursor/DESIGN.md +240 -381
  98. package/web/references/dabang/DESIGN.md +248 -213
  99. package/web/references/dable/DESIGN.md +431 -0
  100. package/web/references/datarize/DESIGN.md +217 -330
  101. package/web/references/dealicious/DESIGN.md +402 -0
  102. package/web/references/drdiary/DESIGN.md +404 -0
  103. package/web/references/elastic/DESIGN.md +238 -0
  104. package/web/references/elevenlabs/DESIGN.md +183 -321
  105. package/web/references/eslite/DESIGN.md +257 -0
  106. package/web/references/evaair/DESIGN.md +338 -0
  107. package/web/references/expo/DESIGN.md +238 -331
  108. package/web/references/familymart-tw/DESIGN.md +254 -0
  109. package/web/references/ferrari/DESIGN.md +160 -377
  110. package/web/references/figma/DESIGN.md +197 -451
  111. package/web/references/fitpet/DESIGN.md +445 -0
  112. package/web/references/flex/DESIGN.md +170 -253
  113. package/web/references/framer/DESIGN.md +197 -340
  114. package/web/references/freee/DESIGN.md +211 -533
  115. package/web/references/friendliai/DESIGN.md +431 -0
  116. package/web/references/frip/DESIGN.md +440 -0
  117. package/web/references/gangnamunni/DESIGN.md +154 -591
  118. package/web/references/gaudiolab/DESIGN.md +414 -0
  119. package/web/references/google/DESIGN.md +290 -398
  120. package/web/references/hashicorp/DESIGN.md +273 -318
  121. package/web/references/heydealer/DESIGN.md +429 -0
  122. package/web/references/humanscape/DESIGN.md +433 -0
  123. package/web/references/hyundai/DESIGN.md +158 -368
  124. package/web/references/hyundaicard/DESIGN.md +171 -121
  125. package/web/references/ibm/DESIGN.md +227 -378
  126. package/web/references/idus/DESIGN.md +450 -0
  127. package/web/references/igaworks/DESIGN.md +437 -0
  128. package/web/references/inflearn/DESIGN.md +221 -366
  129. package/web/references/intuit/DESIGN.md +244 -0
  130. package/web/references/jandi/DESIGN.md +191 -291
  131. package/web/references/jobplanet/DESIGN.md +415 -0
  132. package/web/references/kakao/DESIGN.md +287 -475
  133. package/web/references/kakaobank/DESIGN.md +220 -521
  134. package/web/references/kakaogames/DESIGN.md +220 -0
  135. package/web/references/kakaopay/DESIGN.md +207 -526
  136. package/web/references/karrot/DESIGN.md +227 -251
  137. package/web/references/kb-kookmin/DESIGN.md +308 -0
  138. package/web/references/kbank/DESIGN.md +220 -175
  139. package/web/references/kmong/DESIGN.md +281 -356
  140. package/web/references/krds/DESIGN.md +245 -19
  141. package/web/references/kream/DESIGN.md +224 -359
  142. package/web/references/kurly/DESIGN.md +211 -533
  143. package/web/references/lamborghini/DESIGN.md +198 -360
  144. package/web/references/lguplus/DESIGN.md +259 -0
  145. package/web/references/likelion/DESIGN.md +283 -0
  146. package/web/references/line/DESIGN.md +396 -355
  147. package/web/references/linear.app/DESIGN.md +209 -562
  148. package/web/references/lotteon/DESIGN.md +386 -0
  149. package/web/references/lovable/DESIGN.md +255 -349
  150. package/web/references/makinarocks/DESIGN.md +149 -349
  151. package/web/references/maum-ai/DESIGN.md +423 -0
  152. package/web/references/medibloc/DESIGN.md +425 -0
  153. package/web/references/megabox/DESIGN.md +232 -0
  154. package/web/references/mercari/DESIGN.md +217 -434
  155. package/web/references/microsoft/DESIGN.md +234 -388
  156. package/web/references/mildang/DESIGN.md +411 -0
  157. package/web/references/millie/DESIGN.md +183 -504
  158. package/web/references/minimax/DESIGN.md +264 -322
  159. package/web/references/miricanvas/DESIGN.md +182 -355
  160. package/web/references/miro/DESIGN.md +234 -232
  161. package/web/references/mistral.ai/DESIGN.md +231 -314
  162. package/web/references/mixi/DESIGN.md +234 -0
  163. package/web/references/moin/DESIGN.md +445 -0
  164. package/web/references/mongodb/DESIGN.md +219 -316
  165. package/web/references/musinsa/DESIGN.md +184 -510
  166. package/web/references/mynavi/DESIGN.md +242 -0
  167. package/web/references/myrealtrip/DESIGN.md +169 -406
  168. package/web/references/naver/DESIGN.md +328 -499
  169. package/web/references/naverwebtoon/DESIGN.md +172 -395
  170. package/web/references/nhn/DESIGN.md +169 -346
  171. package/web/references/nhncloud/DESIGN.md +185 -123
  172. package/web/references/notion/DESIGN.md +271 -475
  173. package/web/references/nrise/DESIGN.md +417 -0
  174. package/web/references/ohouse/DESIGN.md +210 -549
  175. package/web/references/oliveyoung/DESIGN.md +217 -326
  176. package/web/references/ollama/DESIGN.md +241 -308
  177. package/web/references/onestore/DESIGN.md +248 -0
  178. package/web/references/palantir/DESIGN.md +256 -0
  179. package/web/references/panasonic/DESIGN.md +276 -0
  180. package/web/references/patternfly/DESIGN.md +259 -0
  181. package/web/references/payhere/DESIGN.md +438 -0
  182. package/web/references/pega/DESIGN.md +262 -0
  183. package/web/references/peoplefund/DESIGN.md +431 -0
  184. package/web/references/petfriends/DESIGN.md +428 -0
  185. package/web/references/pinkfong/DESIGN.md +199 -367
  186. package/web/references/pinterest/DESIGN.md +258 -308
  187. package/web/references/poya/DESIGN.md +286 -0
  188. package/web/references/pozalabs/DESIGN.md +438 -0
  189. package/web/references/protopie/DESIGN.md +419 -0
  190. package/web/references/qraft/DESIGN.md +448 -0
  191. package/web/references/quotabook/DESIGN.md +449 -0
  192. package/web/references/recruit/DESIGN.md +247 -0
  193. package/web/references/remember/DESIGN.md +202 -396
  194. package/web/references/resend/DESIGN.md +274 -348
  195. package/web/references/sakura-internet/DESIGN.md +269 -0
  196. package/web/references/samsung/DESIGN.md +157 -359
  197. package/web/references/sandoll/DESIGN.md +445 -0
  198. package/web/references/sanity/DESIGN.md +241 -375
  199. package/web/references/scatterlab/DESIGN.md +412 -0
  200. package/web/references/selectstar/DESIGN.md +439 -0
  201. package/web/references/servicenow/DESIGN.md +289 -0
  202. package/web/references/shinhanbank/DESIGN.md +161 -341
  203. package/web/references/shinhancard/DESIGN.md +208 -319
  204. package/web/references/sionic/DESIGN.md +454 -0
  205. package/web/references/sktelecom/DESIGN.md +310 -0
  206. package/web/references/socar/DESIGN.md +125 -32
  207. package/web/references/softbank/DESIGN.md +231 -0
  208. package/web/references/sony/DESIGN.md +234 -0
  209. package/web/references/soop/DESIGN.md +261 -0
  210. package/web/references/spacex/DESIGN.md +184 -323
  211. package/web/references/spotify/DESIGN.md +253 -394
  212. package/web/references/squeezebits/DESIGN.md +441 -0
  213. package/web/references/stayfolio/DESIGN.md +422 -0
  214. package/web/references/stripe/DESIGN.md +212 -491
  215. package/web/references/supabase/DESIGN.md +244 -316
  216. package/web/references/tabling/DESIGN.md +415 -0
  217. package/web/references/taishinbank/DESIGN.md +243 -0
  218. package/web/references/teamlab/DESIGN.md +240 -0
  219. package/web/references/teamsparta/DESIGN.md +472 -0
  220. package/web/references/tellingme/DESIGN.md +392 -0
  221. package/web/references/tesla/DESIGN.md +244 -427
  222. package/web/references/thsr/DESIGN.md +284 -0
  223. package/web/references/thumbtack/DESIGN.md +302 -0
  224. package/web/references/together.ai/DESIGN.md +257 -304
  225. package/web/references/toss/DESIGN.md +251 -593
  226. package/web/references/toss-securities/DESIGN.md +255 -178
  227. package/web/references/tossbank/DESIGN.md +195 -491
  228. package/web/references/toyota/DESIGN.md +238 -0
  229. package/web/references/tving/DESIGN.md +197 -245
  230. package/web/references/typed/DESIGN.md +413 -0
  231. package/web/references/uber/DESIGN.md +256 -333
  232. package/web/references/udn/DESIGN.md +250 -0
  233. package/web/references/upbit/DESIGN.md +145 -256
  234. package/web/references/upstage/DESIGN.md +211 -204
  235. package/web/references/uswds/DESIGN.md +287 -0
  236. package/web/references/vercel/DESIGN.md +236 -440
  237. package/web/references/wanted/DESIGN.md +215 -487
  238. package/web/references/wise/DESIGN.md +223 -231
  239. package/web/references/wisetracker/DESIGN.md +462 -0
  240. package/web/references/wooribank/DESIGN.md +245 -0
  241. package/web/references/yanolja/DESIGN.md +250 -419
  242. package/web/references/yeogiotte/DESIGN.md +235 -418
  243. package/web/references/zapier/DESIGN.md +256 -377
  244. package/web/references/zendesk/DESIGN.md +288 -0
  245. package/web/references/zigzag/DESIGN.md +200 -621
  246. package/dist/install-skills-7UUDOLG2.js +0 -734
  247. package/dist/install-skills-7UUDOLG2.js.map +0 -1
@@ -5,266 +5,273 @@ display_name_kr: 업스테이지
5
5
  country: KR
6
6
  category: ai
7
7
  homepage: "https://www.upstage.ai"
8
- primary_color: "#d2ff95"
8
+ primary_color: "#5b52ff"
9
9
  logo:
10
10
  type: favicon
11
11
  slug: "https://www.google.com/s2/favicons?domain=upstage.ai&sz=256"
12
- verified: "2026-05-15"
12
+ verified: "2026-07-13"
13
13
  omd: "0.1"
14
14
  ds:
15
15
  name: Upstage Brand Resource Center
16
16
  url: "https://www.upstage.ai/resources/brand-resource-center"
17
17
  type: brand
18
- description: "Upstage's brand resource hub logo / symbol assets + IP rights statement. Token spec lives only in production CSS (Geist + Espeak proprietary face + violet #5B52FF × plum #3C043B + Solar accent #D2FF95)."
18
+ description: "Official distribution point for Upstage logo, product-logo, media-kit, and leadership assets; it does not publish a UI token specification."
19
19
  og_image: "https://cdn.prod.website-files.com/6743d5190bb2b52f38e99e37/680a25ee07a17eed6deeff74_OG.avif"
20
+ verification_v2:
21
+ schema: 2
22
+ checked: "2026-07-13"
23
+ surfaces:
24
+ - { id: home, kind: marketing, url: "https://www.upstage.ai/", inspected: "2026-07-13" }
25
+ - { id: api-pricing, kind: public-pricing, url: "https://www.upstage.ai/pricing/api", inspected: "2026-07-13" }
26
+ sources:
27
+ - { id: home-live, kind: product-surface, url: "https://www.upstage.ai/", captured: "2026-07-13" }
28
+ - { id: api-pricing-live, kind: product-surface, url: "https://www.upstage.ai/pricing/api", captured: "2026-07-13" }
29
+ - { id: about-context, kind: official-doc, url: "https://www.upstage.ai/about", captured: "2026-07-13" }
30
+ - { id: studio-context, kind: official-doc, url: "https://www.upstage.ai/products/studio", captured: "2026-07-13" }
31
+ - { id: brand-assets, kind: brand-asset, url: "https://www.upstage.ai/resources/brand-resource-center", captured: "2026-07-13" }
32
+ - { id: geist-license, kind: license, url: "https://github.com/vercel/geist-font", captured: "2026-07-13" }
33
+ conflicts: []
34
+ claims:
35
+ "tokens.colors.canvas": &home { surface_id: home, source_id: home-live, method: live-inspect, captured: "2026-07-13" }
36
+ "tokens.colors.ink": *home
37
+ "tokens.colors.text": *home
38
+ "tokens.colors.text-subtle": *home
39
+ "tokens.colors.action-violet": *home
40
+ "tokens.colors.card-border": &pricing { surface_id: api-pricing, source_id: api-pricing-live, method: live-inspect, captured: "2026-07-13" }
41
+ "tokens.typography.family.ui": *home
42
+ "tokens.typography.family.marketing-display": *home
43
+ "tokens.typography.marketing-display.size": *home
44
+ "tokens.typography.marketing-display.weight": *home
45
+ "tokens.typography.marketing-display.lineHeight": *home
46
+ "tokens.typography.marketing-display.use": *home
47
+ "tokens.typography.section-heading.size": *home
48
+ "tokens.typography.section-heading.weight": *home
49
+ "tokens.typography.section-heading.lineHeight": *home
50
+ "tokens.typography.section-heading.use": *home
51
+ "tokens.typography.body.size": *home
52
+ "tokens.typography.body.weight": *home
53
+ "tokens.typography.body.lineHeight": *home
54
+ "tokens.typography.body.use": *home
55
+ "tokens.typography.action.size": *home
56
+ "tokens.typography.action.weight": *home
57
+ "tokens.typography.action.lineHeight": *home
58
+ "tokens.typography.action.use": *home
59
+ "tokens.spacing.action-y": *home
60
+ "tokens.spacing.action-x": *home
61
+ "tokens.spacing.card": *pricing
62
+ "tokens.spacing.card-end": *pricing
63
+ "tokens.rounded.action": *home
64
+ "tokens.rounded.card": *pricing
65
+ "tokens.components.api-pricing-card.type": *pricing
66
+ "tokens.components.api-pricing-card.bg": *pricing
67
+ "tokens.components.api-pricing-card.border": *pricing
68
+ "tokens.components.api-pricing-card.radius": *pricing
69
+ "tokens.components.api-pricing-card.padding": *pricing
70
+ "tokens.components.api-pricing-card.use": *pricing
20
71
  tokens:
21
- source: prose-derived
22
- extracted: "2026-06-09"
72
+ source: reconciled
73
+ extracted: "2026-07-13"
74
+ components_harvested: true
23
75
  colors:
24
- primary: "#5b52ff"
25
- primary-hover: "#1e116e"
26
- primary-deep: "#281ca5"
27
- accent: "#d2ff95"
28
- body: "#70757f"
29
- heading: "#0a0d14"
30
- muted: "#6e7191"
31
76
  canvas: "#ffffff"
32
- subtle: "#f9fafb"
33
- footer: "#191722"
34
- plum: "#3c043b"
35
- lavender: "#f0ecfd"
36
- purple-100: "#dde3ff"
37
- border: "#eeeeee"
38
- border-subtle: "#f7f7fc"
39
- on-primary: "#ffffff"
77
+ ink: "#0a0d14"
78
+ text: "#52525b"
79
+ text-subtle: "#525866"
80
+ action-violet: "#5b52ff"
81
+ card-border: "#cdd0d5"
40
82
  typography:
41
- family: { sans: "Geist", mono: "monospace" }
42
- hero-h1: { size: 58, weight: 600, use: "Hero headline (Espeak face)" }
43
- section-h2: { size: 40, weight: 600, use: "Section headings" }
44
- body-lg: { size: 18, weight: 400, use: "Dominant body size" }
45
- body: { size: 16, weight: 400, use: "Standard body" }
46
- button: { size: 16, weight: 500, use: "Button + nav labels" }
47
- caption: { size: 14, weight: 400, use: "Small / caption" }
48
- micro: { size: 12, weight: 400, use: "Legal / micro" }
49
- spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
50
- rounded: { sm: 8, md: 8, lg: 8, full: 9999 }
51
- shadow:
52
- none: "none"
83
+ family: { ui: "Geist", marketing-display: "Espeak" }
84
+ marketing-display: { size: 64, weight: 600, lineHeight: 1.10, use: "Public home marketing hero only" }
85
+ section-heading: { size: 48, weight: 500, lineHeight: 1.15, use: "Public marketing section headings" }
86
+ body: { size: 18, weight: 400, lineHeight: 1.60, use: "Public home and API-pricing body copy" }
87
+ action: { size: 16, weight: 500, lineHeight: 1.50, use: "Public CTA controls" }
88
+ spacing: { action-y: 12, action-x: 18, card: 32, card-end: 96 }
89
+ rounded: { action: 8, card: 8 }
53
90
  components:
54
- button-primary: { type: button, bg: "#5b52ff", fg: "#ffffff", radius: 8, font: "16px/500", use: "Try now persistent nav CTA" }
55
- card: { type: card, bg: "transparent", fg: "#70757f", radius: 8, use: "Product/solution/customer card; no shadow, inline Learn more link" }
56
- nav: { type: tab, bg: "transparent", fg: "#0a0d14", radius: 8, use: "Transparent over hero, white below; 5 categories + Try now CTA" }
57
- components_harvested: true
91
+ api-pricing-card: { type: card, bg: "#ffffff", border: "1px solid #cdd0d5", radius: "8px", padding: "32px 96px 32px 32px", use: "API pricing model card observed on the public pricing surface" }
58
92
  ---
59
93
 
60
- # Upstage — DESIGN.md
94
+ # Upstage — Design Reference
61
95
 
62
- > Reference research only. Brand assets, logo, and the proprietary Espeak display face are property of Upstage Co., Ltd. (주식회사 업스테이지). No verbatim taglines, marketing copy, or asset binaries are reproduced. Token values quoted below are factual CSS custom property values observed via live runtime inspection of the public `www.upstage.ai` surface, under analytical fair-use.
96
+ > **Enterprise AI for document-heavy work.** (Current public-surface reference, observed 2026-07-13)
63
97
 
64
98
  ## 1. Visual Theme & Atmosphere
65
99
 
66
- Upstage looks like an enterprise AI company that decided to spend its visual budget on **one purple, one display face, and one rotating word** — and then on absolutely nothing else. The home surface ships in a deep plum hero canvas (`#3C043B`, exposed as `--colors--grey-background`), pairs it with a near-mint Solar accent (`#D2FF95`, a vivid mid-step of the `--colors--green-yellow-*` ladder), and reserves a single interactive violet (`#5B52FF`, observed 55 times across CTAs and links) as the only chromatic gesture that ever does work. The page is built on Webflow, layers Untitled UI and Spark Library tokens underneath an Upstage-namespaced override layer (74 `--*` custom properties on `:root`), and exposes the seams honestly — `_sub---untitled-ui--*`, `_sub---spark-library--*`, and `_sub---elements-webflow-library--*` all coexist on the document root, with the `--colors--*` and `--style--*` prefixes representing the brand's actual decisions. Type is even more disciplined: **Geist** runs 869 of ~930 sampled text elements (~93%), a single custom display face called **Espeak** lights up the hero H1 at 57.6px / weight 600, and the variable industry word inside the hero (`Insurance`, `Healthcare`, `Manufacturing`, `Financial Services`) shifts to a humble **monospace** mid-sentence a typographic gesture that says *this slot is configurable* without spending a single color or weight to mark it. Radius is binary (797 elements at 0px, 134 at 8px, nothing meaningful between), elevation is effectively zero (the underlying Webflow library exposes one 10%-alpha shadow token, almost never applied), and rhythm comes from surface-color shifts band to band plum hero → white product band → dark industry grid → white customer band → dark deployment matrix → near-black footer (`#191722`, slightly violet-tinted, not pure black). The atmosphere reads *competent, technical, restrained* the visual equivalent of an enterprise pitch deck that knows it doesn't need to shout.
67
-
68
- **Atmospheric anchors**:
69
- - **Plum-violet axis, not blue.** Where most enterprise AI brands default to a corporate blue, Upstage commits to violet primary (`#5B52FF`) on a plum canvas (`#3C043B`) — distinguishable in a sea of cobalt competitors.
70
- - **Solar yellow-green as scarcity asset.** `#D2FF95` appears only adjacent to the Solar product narrative — never as a default button surface or section background.
71
- - **One body family, one display face, one swap.** 93% Geist coverage + Espeak-only hero + monospace industry word = three families, three jobs, no overlap.
72
- - **Type-as-imagery on industry cards.** Each high-stakes industry (Insurance / Healthcare / Manufacturing / Financial Services) presents as a giant industry word on a dark surface — no stock photography, no industry icons.
73
- - **Binary geometry.** Sharp (0px) for sections, cards, hero, footer; soft (8px) only for pressable controls and a few content chips. Nothing in between.
74
-
75
- ## 2. Color System
76
-
77
- ### Brand
78
- | Token | Hex | Live source | Role |
79
- |---|---|---|---|
80
- | Upstage Violet (primary) | `#5B52FF` | live computed `rgb(91,82,255)` on `.button.is-secondary` × 2 sampled CTAs; 55 element occurrences | Interactive foreground; link; secondary-button text; filled-primary button background variant |
81
- | Violet pressed | `#1E116E` | `--_sub---spark-library--foreground-interactive-hover` | Hover / pressed state of primary |
82
- | Violet deep | `#281CA5` | `--elements-webflow-library--secondary--color-1` | Emphasis / filled-button alt |
83
- | Solar yellow-green | `#D2FF95` | mid-step of `--colors--green-yellow-*` (50 = `#f6ffe5`); live-observed as decorative accent | **Single-use chromatic accent** tied to the Solar product narrative |
84
-
85
- ### Ink (text)
86
- | Token | Hex | Frequency in DOM | Role |
87
- |---|---|---|---|
88
- | Body gray | `#70757F` | **428 elements (dominant text color)** | Default body, paragraph, muted subhead |
89
- | Near-black | `#0A0D14` | 58 elements | Headings on light surfaces |
90
- | Muted purple-gray | `#6E7191` | 20 elements | Secondary muted / footnote |
91
- | White | `#FFFFFF` | 213 elements | Text & UI on dark surfaces |
92
- | White @50% | `rgba(255,255,255,0.5)` | 14 elements | Muted secondary copy on dark hero |
93
-
94
- ### Surface
95
- | Token | Hex | Role |
96
- |---|---|---|
97
- | Page white | `#FFFFFF` | Default page background |
98
- | Subtle band | `#F9FAFB` | `--colors--base--subtle` — light section break |
99
- | Footer near-black | `#191722` | Footer band — *intentionally violet-tinted, not pure `#000`* |
100
- | Plum decorative | `#3C043B` | `--colors--grey-background` — hero canvas. **Non-obvious choice**: a deep plum named as "grey" in the token system. |
101
- | Lavender interactive | `#F0ECFD` | `--_sub---spark-library--background--interactive` — active/hover surface |
102
- | Purple-100 | `#DDE3FF` | `--colors--purple-100` — cool tint for chips / info |
103
-
104
- ### Border
105
- | Token | Hex | Role |
106
- |---|---|---|
107
- | Default hairline | `#EEEEEE` | `--border-color--border-primary` |
108
- | Neutral subtle | `#F7F7FC` | `--_sub---elements-webflow-library--neutral--200` |
109
-
110
- ### Ladders observed (under-layer)
111
- Untitled UI primary scale (`#fcfaff 25 / #f9f5ff 50 / #f4ebff 100 / #d6bbfb 300 / #6941c6 700`) and Untitled UI gray scale (`#eaecf0 200 / #475467 600 / #101828 900`) sit underneath the Upstage-namespaced surface tokens. Treat them as inherited primitives, not Upstage decisions.
112
-
113
- ## 3. Typography
114
-
115
- | Slot | Family | Size / Weight | Live evidence |
116
- |---|---|---|---|
117
- | Hero H1 | **Espeak**, Arial, sans-serif | 57.6px / 600 | 3 sampled hero phrases |
118
- | Hero H1 industry swap word | **monospace** (browser default) | 48px / 600 | 4 industry-word swaps |
119
- | Section H2 | Geist | ~36-48px / 600 | "High-performance AI built by experts" et al. |
120
- | Body large | Geist | 18px / 400 | **603 elements (dominant body size)** |
121
- | Body | Geist | 16px / 400 | 115 elements |
122
- | Button | Geist | 16-18px / 500 | `.button.is-secondary` + inline arrow CTA |
123
- | Caption / small | Geist | 14px / 400 | 30 elements |
124
- | Micro / legal | Geist | 12px / 400 | 23 elements |
125
-
126
- **Weight discipline** (observed): 400 = 786 elements, 500 = 129 (buttons + nav + emphasised body), 600 = 15 (all headings), 700 = 8 (stat/proof labels). **Six weights are not the system — four are.**
127
-
128
- **Critical voice rule on type**: the hero rotates `Insurance / Finance / Healthcare / Manufacturing` by changing the *font family* mid-sentence (Espeak → monospace), not the color or weight. Any port that wants to reproduce this rotating-vertical hero must keep the typographic shift as the variable-slot signal.
129
-
130
- ## 4. Radius & Geometry
131
-
132
- | Value | Frequency | Role |
133
- |---|---|---|
134
- | `0px` | 797 elements | Sections, cards, hero, footer, images |
135
- | `8px` | 134 elements | Buttons, content chips, hero secondary surfaces |
136
- | `100%` | 5 elements | Avatar / icon circles |
137
- | `100px` | 1 element | Single pill |
138
- | `50%` | 1 element | One round element |
139
-
140
- **Binary rule**: Upstage's geometry encodes pressability. Sharp = layout. 8px = "you can click this." Nothing in between, no `4px / 12px / 16px` middle terms. Token: `--style--radius-8px: 8px`.
100
+ Upstage is a Korean AI company building language models and document-processing engines for work. Its public site frames the offer through Solar models, document intelligence, and Studio workflows for high-stakes industries, rather than as a generic consumer chatbot. The current public expression is a compact, white-led enterprise marketing system: dark `#0A0D14` headings, `#52525B` long-form copy, and `#5B52FF` conversion actions organise the page. The hero is the conspicuous exception: a loaded **Espeak** face appears only in the public home’s large display treatment, while loaded **Geist** carries the rest of the observed marketing and public pricing content. The design’s rhythm comes from restrained, square-to-8px geometry and repeated direct actions, not from a broad decorative palette. Upstage’s own About and Studio pages connect this visual restraint to a practical proposition: making document-heavy workflows more controllable, traceable, and useful for enterprises.
141
101
 
142
- ## 5. Elevation
102
+ What is distinctive in the evidence:
103
+
104
+ - **A narrow violet action lane.** `#5B52FF` appears on observed filled and outlined calls to action; it is not promoted as a general semantic/status palette.
105
+ - **Marketing display has a bounded job.** Espeak is loaded for the home hero, while Geist is the repeatedly resolved public UI/content family.
106
+ - **Public pricing is calmer than the hero.** The API-pricing surface uses white model cards, `#CDD0D5` borders, and `#525866` supporting text.
107
+ - **Geometry is mostly flat.** Buttons and observed cards use 8px corners; the supplied samples show no general card-shadow system.
108
+
109
+ ## 2. Layout & Grid
110
+
111
+ - **Public action scale:** the repeated home filled and outlined action controls use 12px 18px padding; the compact outlined action uses 10px 16px.
112
+ - **Public pricing card:** the captured API-pricing model card uses `32px 96px 32px 32px` padding and a 24px internal gap.
113
+ - **Observed rhythm:** 8, 12, 16, 24, 32, 40, 96, and 128px occur in the collector’s spacing aggregation. This is a frequency record, not a claimed universal spacing scale.
114
+ - **Boundary:** no responsive breakpoint, desktop container maximum, or logged-in application layout is promoted from the supplied capture.
143
115
 
144
- Effectively **zero box-shadow** on observed elements. The underlying Webflow library exposes `--_sub---elements-webflow-library--general--shadow-03: #14142b1a` (violet-black 10%), but production almost never invokes it. Depth = surface-color contrast (plum → white → dark → near-black) + hairline borders. *Do not import drop-shadow card patterns from neighbour systems if porting this brand — Upstage doesn't ship them.*
116
+ ## 3. Color & Typography
145
117
 
146
- ## 6. Spacing & Layout
118
+ ### Color tokens
147
119
 
148
- - **Canvas**: 1280px desktop sweet spot; `--style--max-full-width: 100vw`.
149
- - **No `--space-*` ladder** exposed on `:root`. Section vertical rhythm appears to use ~64-96px band gaps with 16/24/32 internal step (Webflow class-driven, not token-driven).
150
- - **Hero alignment**: left-aligned starting ~10% from canvas edge, not centered.
151
- - **Vertical rhythm = surface flips**: each H2 section change is also a background-color change. The rhythm is *chromatic*, not numerical.
120
+ - `#FFFFFF` observed page/card canvas
121
+ - `#0A0D14` observed dark heading/ink
122
+ - `#52525B` dominant observed public body-copy tone
123
+ - `#525866` observed pricing-surface supporting-copy tone
124
+ - `#5B52FF` — observed public action foreground/background and catalog primary color
125
+ - `#CDD0D5` — observed API-pricing card border
152
126
 
153
- ## 7. Interactive Components
127
+ The collector also sees isolated browser/default-like blue and red values. They are not assigned a brand or product role because the raw public capture does not establish one.
154
128
 
155
- ### Primary CTA — multiple variants, one violet
156
- 1. **`Try now`** — persistent top-right of nav. Filled violet `#5B52FF` background, white text, 8px radius, weight 500.
157
- 2. **`Try demo`** — hero inline arrow. Transparent background, white text, `→` arrow glyph, 18px / 500.
158
- 3. **`Learn more →`** — repeated inline across every product / solution card. Text-color inherits section surface (white on dark, violet on light), 18px / 500, no chrome.
159
- 4. **`.button.is-secondary`** (e.g. *Developer Console*, *Learn more* on solution cards) — white pill surface, violet text `#5B52FF`, 8px radius, weight 500. 16px.
129
+ ### Typography evidence classes
160
130
 
161
- ### Nav (top)
162
- Transparent over hero, white below. Five primary categories (Products / Solutions / Resources / Company / Pricing) + persistent `Try now` filled CTA on the right.
131
+ - **Live public UI/content use — Geist.** The collector records `Geist` as loaded/high confidence, with 626 visible uses across body, actions, navigation-like controls, cards, tabs, and headings, backed by five Google Fonts source URLs. It is the sole general UI-family token. The official Geist project identifies the family and publishes it under SIL Open Font License 1.1; that licence describes the font software, not an Upstage visual-identity licence.
132
+ - **Live public marketing-display use Espeak.** The collector records `Espeak` as loaded/high confidence for five visible `h1` uses and two Upstage-hosted WOFF2 sources. The observed home hero reaches 64px/600/70.4px. This is a marketing-display token only, not evidence for an authenticated product UI. No public first-party licence terms for the face were found in this update; Upstage’s Brand Resource Center says brand assets and associated intellectual-property rights belong to Upstage.
133
+ - **System-resolved values.** `system-ui` (three observed uses) and `monospace` (one observed hero use) are operating-system families, not Upstage font assets or substitute specimens.
134
+ - **Declared-only assets.** Archivo, Inter, Montserrat, Noto Sans JP, and Noto Sans KR have `@font-face` declarations in the bundle but zero observed visible uses. They stay declared-only and are not machine UI-family tokens.
135
+ - **Measured public styles.** The capture records 48px/500 section headings, 18px/400 body text at 28.8px line height, and 16px/500 actions at 24px line height. These remain public-surface measurements, not a complete product type scale.
163
136
 
164
- ### Card
165
- Product / solution / customer cards: 8px radius, transparent background, `#70757F` body paragraph, no drop shadow, inline `Learn more →` link as the only interactive affordance.
137
+ ## 4. Components
166
138
 
167
- ### Industry card (signature)
168
- Giant industry word (`Insurance` / `Healthcare` / `Manufacturing` / `Financial Services`) at 48px+ as the entire card front. **Typography is the imagery.**
139
+ ### Public primary action
169
140
 
170
- ## 8. Motion (partially captured)
141
+ **Default**
142
+ - Background: `#5B52FF`
143
+ - Text: `#FFFFFF`
144
+ - Border: `1px solid #5B52FF`
145
+ - Radius: `8px`
146
+ - Padding: `12px 18px`
147
+ - Font: `16px / 500`
148
+ - Use: public filled conversion action on the home surface; evidence `home::[data-omd-capture="7"]`
171
149
 
172
- CDP single-pass did not extract transition durations or cubic-bezier curves. Inferred from observed `--_sub---spark-library--background--interactive: #F0ECFD` hover surface: standard Webflow ~150-200ms ease for interactive state changes. **Flagged for UPDATE pass** — exact motion tokens not authoritative here.
150
+ ### Public secondary action
173
151
 
174
- ## 9. Accessibility (observed)
152
+ **Default**
153
+ - Background: `#FFFFFF`
154
+ - Text: `#5B52FF`
155
+ - Border: `1px solid #5B52FF`
156
+ - Radius: `8px`
157
+ - Padding: `12px 18px`
158
+ - Font: `16px / 500`
159
+ - Use: public outlined conversion action on the home surface; evidence `home::[data-omd-capture="8"]`
175
160
 
176
- - **Body gray `#70757F` on white** ≈ 4.6:1 — passes WCAG AA for normal text (≥4.5:1).
177
- - **Violet `#5B52FF` on white** (secondary-button text) ≈ 5.2:1 — passes AA comfortably.
178
- - **White on plum `#3C043B`** = ≥10:1 — strong pass for hero copy.
179
- - **White @ 50% on plum hero** = ≈5:1 — at AA edge; acceptable for ≥18px text but borderline for finer hero subhead at smaller weights. Flagged as observed-as-shipped trade-off, not a guideline.
180
- - **No landmark / role inventory verified** in this CDP pass — `<header>`, `<footer>`, `<nav>` are used semantically (positive), but a deeper axe-style audit is out of scope.
161
+ ### API pricing card
181
162
 
182
- ## 10. Voice & Microcopy (analyst characterisation, no verbatim copy)
163
+ **Default**
164
+ - Background: `#FFFFFF`
165
+ - Text: `#52525B`
166
+ - Border: `1px solid #CDD0D5`
167
+ - Radius: `8px`
168
+ - Padding: `32px 96px 32px 32px`
169
+ - Font: `18px / 400`
170
+ - Use: public API-pricing model card; evidence `surface-2::#solar-pro-3`
183
171
 
184
- Upstage's marketing voice is **declarative, enterprise-confident, lightly punchy**. Sentences are short. Heroes state a verb-object intent rather than a feature list. Industry callouts are single nouns (`Insurance`, `Healthcare`) — the brand trusts the reader to fill in the relevance. Section H2s read as engineering-credible category claims ("High-performance AI built by experts", "Flexible deployment, enterprise-ready anywhere") — proof-of-capability framing, not benefit framing.
172
+ ### Public model tab
185
173
 
186
- **Tone vector**: technically grounded · enterprise-formal · zero-hype · pragmatic-bilingual (Korean root, English-first marketing).
174
+ **Current item as captured**
175
+ - Background: `#FFFFFF`
176
+ - Text: `#0A0D14`
177
+ - Border: `1px solid #E2E4E9`
178
+ - Radius: `8px`
179
+ - Padding: `8px 16px`
180
+ - Font: `18px / 500`
181
+ - Use: currently selected model tab on public API pricing; evidence `surface-2::[data-omd-capture="5"]`, class `w--current`
182
+
183
+ Only static defaults/current markup are recorded. The bundle has `interactionCount: 0` and no interaction records, so hover, focus, pressed, disabled, menu, dialog, form, and tab-transition variants are intentionally omitted. Raw selector fragments marked `state-pressed` are not promoted because the summary does not corroborate an interaction run.
184
+
185
+ ---
186
+ **Verified:** 2026-07-13
187
+ **Tier 1 sources:** `https://www.upstage.ai/` (public marketing), `https://www.upstage.ai/pricing/api` (public API-pricing), `https://www.upstage.ai/about` (corporate context), `https://www.upstage.ai/products/studio` (public product context), `https://www.upstage.ai/resources/brand-resource-center` (official brand-asset ownership), `https://github.com/vercel/geist-font` (official Geist family and SIL OFL 1.1 licence)
188
+ **Tier 2 sources:** `https://getdesign.md/upstage` (attempted; built-in web open safe-open failure), `https://styles.refero.design/?q=upstage` (attempted; built-in web open safe-open failure), web search for both catalog names (no Upstage record returned)
189
+ **Conflicts unresolved:** none
190
+
191
+ The prior `#3C043B` plum / `#D2FF95` Solar-accent palette, 2025 font counts, generic card claim, inferred motion timing, and unbounded product claims are not supported by the supplied 2026 capture and were removed rather than carried forward.
192
+
193
+ ## 5. Elevation
187
194
 
188
- **Fresh OmD-derivation alternatives** (not Upstage copy illustrative shape-only):
189
- - *Build the AI. Ship the workflow. We bring the model.*
190
- - *Enterprise-grade Solar. Deploy where your data lives.*
191
- - *One model. Four industries. Production-ready.*
195
+ The observed filled/outlined actions and API-pricing cards have `box-shadow: none`. A currently selected public pricing tab has a local `0px 2px 3px rgba(0,0,0,0.06)` shadow, but it is not promoted as a general elevation token or a tab-interaction rule.
192
196
 
193
- **Do NOT reproduce** any verbatim Upstage hero, button label, or proof statement in derivative work — voice is the shape only.
197
+ ## 6. Imagery & Illustration
194
198
 
195
- ## 11. Brand Narrative (factual)
199
+ - The public home and product pages use product screenshots and workflow/process imagery to explain document intelligence, Solar, and Studio. They are marketing evidence, not a reusable application-image component specification.
200
+ - The Brand Resource Center distributes logo, product-logo, media-kit, and leadership assets. Its ownership statement is an asset/IP boundary, not permission to reproduce those binaries.
201
+ - No repeated crop ratio, overlay rule, illustration style, or image-frame token is established by the supplied capture.
196
202
 
197
- Upstage Co., Ltd. (주식회사 업스테이지) is a Korean LLM and enterprise AI company headquartered in Gangnam, Seoul, with offices at the Korea Science and Technology Center (한국과학기술회관 2관, 스파크플러스 강남5호점 812-817호, 22 Teheran-ro 7-gil, Gangnam-gu). CEO is **Sunghun Kim (김성훈)**. Business Registration No. 830-88-01918. The company's flagship is the **Solar** family of LLMs (Solar Pro 3 / Pro 2 / Mini) and the **Syn Pro** Japanese-locally-trained LLM. Product surface includes **Document Parse** (PDF/scan → structured), **Information Extract** (key-value structuring), **Studio** (build/deploy agents), **AI Space**, and the **Upstage Marketplace**. Deployment matrix spans API, on-premise, and marketplace channels. Stated industry focus: insurance, healthcare, manufacturing, financial services. Source: live capture of the home + footer + brand-resource-center surfaces on 2026-05-15.
203
+ ## 7. Iconography
198
204
 
199
- Founding-year, total-funding, headcount, and investor list **not verified in this pass** public profiles (Crunchbase / TheVC) were not consulted to keep scope tight. Flagged for UPDATE.
205
+ The capture identifies ordinary links, buttons, and product imagery but no named icon library, icon-stroke rule, or reusable icon-size scale. No icon token is inferred.
200
206
 
201
- ## 12. Personas (inferred — verify before reuse)
207
+ ## 8. Motion
202
208
 
203
- These are reasoned inferences from the surface IA and proof bands, not user research:
209
+ No duration, easing, transition, scroll, or interaction sequence was captured. Motion is intentionally undocumented instead of inferred from Webflow classes or from the static pricing-tab markup.
204
210
 
205
- - **Enterprise IT decision-maker** — insurance/healthcare/manufacturing CIO or VP of Engineering. Comes in via the Solutions tab, leaves via *Contact us* or *Try demo*. Cares about: deployment options (on-prem vs API), customer logos, compliance posture.
206
- - **AI/ML engineer** — practitioner evaluating Solar models for production. Comes in via Products → Solar Pro 3 → Developer Console, leaves via Documentation. Cares about: benchmark numbers, pricing per token, latency, fine-tuning paths.
207
- - **Procurement / partnership lead** — coming in via Partners / Public tenders. Cares about: business credentials (KR business-info disclosure), Newsroom signals, certifications.
211
+ ## 9. Accessibility
208
212
 
209
- `[FILL IN]` named personas, demographics, and motivations require Upstage-internal data left as placeholders.
213
+ - `#0A0D14` on `#FFFFFF` and `#5B52FF` on `#FFFFFF` are observed public text/action pairings; implementations should test each exact size and weight rather than treating this reference as an accessibility audit.
214
+ - The supplied capture does not establish focus-visible, keyboard, disabled, error, dialog, or menu states. Provide accessible behavior in an implementation without claiming it is an observed Upstage state.
215
+ - Geist has live FontFaceSet/source corroboration. Espeak is live only in the observed marketing hero; declared-only and system families must not be rendered as Upstage UI-family substitutes.
210
216
 
211
- ## 13. Anti-Patterns (what NOT to import)
217
+ ## 10. Voice & Tone
212
218
 
213
- 1. **Do not introduce a third type family**. Geist + Espeak + monospace-swap is the entire system. A fourth face breaks the rotating-word gesture.
214
- 2. **Do not import drop-shadow card chrome.** Upstage achieves depth via surface-color contrast and hairline borders. Adding `box-shadow: 0 8px 24px rgba(0,0,0,0.08)` will read as a different system entirely.
215
- 3. **Do not soften the binary radius.** Adding `4px` / `12px` / `16px` middle terms erases the layout-vs-pressable distinction.
216
- 4. **Do not over-saturate the Solar yellow-green.** `#D2FF95` works *because* it appears once, near the Solar narrative. Repeating it as a default highlight color cheapens it.
217
- 5. **Do not default to blue.** Cobalt primary is the enterprise-AI cliche Upstage is consciously avoiding. If porting, stay on the violet-plum axis or pick a different non-blue.
218
- 6. **Do not center-align the hero.** Left-aligned hero with the typographic-swap industry word is the brand-defining composition.
219
+ **Voice adjectives:** precise · enterprise-ready · workflow-oriented
219
220
 
220
- ## 14. References & Citations
221
+ | Do | Don't |
222
+ |---|---|
223
+ | Start from a document-heavy or high-stakes workflow. | Lead with an abstract AI-superlative detached from work. |
224
+ | Connect a model or agent to control, traceability, and deployment context. | Claim a capability without describing its operational setting. |
225
+ | Use concise, direct conversion labels. | Inflate marketing copy with invented benchmark or customer claims. |
226
+ | Separate public product promises from unobserved logged-in UI behavior. | Treat a marketing page as proof of a complete product design system. |
221
227
 
222
- - **Live capture, home**: `https://www.upstage.ai/` — 44 curated DOM samples, 930+ element frequency sweep, 74 `:root` CSS custom properties, viewport 1280×713 dpr=1, captured 2026-05-15. Method: Chrome DevTools Protocol :9222 / `Runtime.evaluate getComputedStyle`. Browser: Chrome/148.0.7778.97. Raw artifacts in `references/upstage/assets/_reference/_root-vars.json`, `_raw-capture.json`, `_curated-samples.json`, `_structure-raw.json`.
223
- - **Live capture, Tier-1 brand surface**: `https://www.upstage.ai/resources/brand-resource-center` — HTTP 200, H1 "Brand Resource Center", categories Brand Identity / Product Identity / Media kit / Our leadership, asset distribution only (no token specs). Captured 2026-05-15. Artifact: `_brand-resource-center.json`.
224
- - **Tier-1 negative**: `design.upstage.ai`, `brand.upstage.ai`, `www.upstage.ai/brand`, `www.upstage.ai/brand-resources` — all 000/404 (verified 2026-05-15 via curl).
225
- - **Tier-1 codebase negative**: `github.com/UpstageAI` — 12 public repos, all AI/research/cookbook (`UpstageAI/cookbook`, `UpstageAI/Gym`, `UpstageAI/mcp-upstage`, `UpstageAI/opencode`, `UpstageAI/solar-prompt-cookbook`, `UpstageAI/vllm`, …). **Zero design-system / Storybook / token-library repo** as of 2026-05-15.
226
- - **Tier-2 indexes**: `getdesign.md/upstage` → 200 but no curated entry; `styles.refero.design/?q=upstage` → 200 search shell, no result cards. Both verified 2026-05-15.
227
- - **Business factual**: `https://www.upstage.ai/resources/brand-resource-center` footer block — KR-mandated business-information disclosure (CEO, registration number, address) reproduced as factual reference, not promotional.
228
+ These are source-derived communication characteristics, not permission to reuse Upstage copy verbatim.
228
229
 
229
- ## 15. Verification Footer
230
+ ## 11. Brand Narrative
230
231
 
231
- **Verification date**: 2026-05-15
232
- **Verification method**: live CDP :9222 + Tier 1/2 URL probes + GitHub org enumeration
233
- **Live-inspect proof**: `references/upstage/assets/_reference/.live-inspect-proof.json` (8 raw_samples, ≥5 required floor)
234
- **Confidence per section**:
235
- - §1 Visual theme & §2 Color & §3 Typography & §4 Radius & §5 Elevation & §7 Interactive: **High** (live computed-style evidence)
236
- - §6 Spacing: **Medium** (no `--space-*` ladder exposed; observations are visual not token-derived)
237
- - §8 Motion: **Low** — single-pass CDP did not capture transition tokens; flagged UPDATE
238
- - §9 A11y: **Medium** — contrast computed, but no landmark/role audit run
239
- - §10 Voice: **High** (analyst characterisation only — no verbatim reproduction)
240
- - §11 Brand narrative: **High** for HQ / CEO / registration / product names (sourced from public footer); **Low** for funding/headcount/founding-year (not verified this pass)
241
- - §12 Personas: **Low** (inferred — `[FILL IN]` required before product reuse)
242
- - §13 Anti-patterns: **High** (derived from live evidence)
232
+ Upstage’s first-party About page says the company was founded in 2020 and builds intelligence for the future of work through language models and document-processing engines. Its founding story explains the name as helping companies move “up” to the stage of AI and describes the initial motivation as making advanced AI practical for organizations with data and IT teams. The current public site presents Solar, Document Parse, Information Extract, Studio, and AI Space, with industry framing for insurance, healthcare, manufacturing, and financial services.
243
233
 
244
- **Flags (carry into audit row)**:
245
- 1. Tier-1 official DS = **partial-positive** (asset distribution surface exists; token specification does not).
246
- 2. Tier-2 indexes both empty for `upstage` — consistent with the systemic KR-coverage gap.
247
- 3. Espeak display face is a proprietary commissioned typeface — reference-only; substitute with a tonally similar open display in any derivative work.
248
- 4. Solar yellow-green `#D2FF95` is a single-use chromatic accent — repeating it broadly will read as a different brand.
249
- 5. The rotating-industry hero word ships as a **typographic shift (monospace mid-sentence)**, not a color or weight shift — preserve that gesture or the hero composition breaks.
250
- 6. Motion tokens and component-state coverage incomplete — UPDATE pass recommended on a product detail page (e.g. `/products/solar-pro-3`) and Documentation surface.
234
+ The current evolution is toward document workflows that can be designed, deployed, and operated with visibility, control, governance, review, and traceability. Studio’s public page makes that product direction explicit while the About page supplies company context. Neither page is treated as evidence for private application visual tokens.
251
235
 
252
- **IP guardrails confirmed**: brand assets reference-only (logos / Espeak face not redistributed); no verbatim Upstage marketing copy quoted; §10 voice samples are fresh OmD-derived shape-only alternatives; KR business-information block reproduced as factual disclosure, not promotion.
236
+ ## 12. Principles
237
+
238
+ 1. **Make work context explicit.** Frame the value around documents, operational control, and the environment where a model is deployed. *UI implication:* keep public claims tied to an identifiable workflow rather than generic capability badges.
239
+ 2. **Reserve violet for conversion.** `#5B52FF` is observed on the public action treatments. *UI implication:* do not expand it into unsupported product status meanings.
240
+ 3. **Use typography by source domain.** Geist is the loaded public UI/content family; Espeak is the bounded marketing display face. *UI implication:* do not use the hero face as a general product-app default.
241
+ 4. **Preserve evidence boundaries.** Marketing, public pricing, corporate narrative, asset distribution, and unobserved documentation/app surfaces have different evidentiary roles. *UI implication:* do not merge their claims into a fictional unified component library.
242
+
243
+ ## 13. Personas
244
+
245
+ Upstage’s public pages identify stakeholder groups without supplying formal user research or demographics. This reference preserves only those named functional contexts:
246
+
247
+ - **Document-workflow teams:** use Studio to design, deploy, and operate document-oriented agents with review and governance.
248
+ - **Enterprise technology and operations leaders:** evaluate deployment, traceability, security, and controlled access in high-stakes workflows.
249
+ - **AI/API builders:** evaluate Solar and document-intelligence services through public pricing and developer-oriented conversion paths.
250
+
251
+ No fictional names, demographic details, or unverified motivations are added.
252
+
253
+ ## 14. States
254
+
255
+ No loading, empty, success, error, disabled, focus, or validation state is documented. The API-pricing capture contains a static current tab and inactive tab markup, but the zero-interaction bundle does not establish behavior or transitions; it is therefore not a behavioral state specification.
256
+
257
+ ## 15. Motion & Easing
258
+
259
+ No motion or easing values were captured. Preserve that absence rather than assigning default curves or durations.
253
260
 
254
261
  ## 16. Do's and Don'ts
255
262
 
256
263
  ### Do
257
- - Reserve interactive violet #5B52FF as the only chromatic gesture that does work — links, CTAs, and secondary-button text, the way it appears across its 55 sampled occurrences
258
- - Anchor the brand on the plum canvas #3C043B (the '--colors--grey-background' hero) paired with violet primary, staying on the violet-plum axis instead of any cobalt default
259
- - Build vertical rhythm from surface-color flips band to band (plum hero to white product band to dark industry grid to near-black footer #191722), not from drop shadows or a numeric spacing ladder
260
- - Keep type to the three-family, three-job system: Geist for ~93% of body and headings, Espeak only on the hero H1 at 57.6px/600, and a monospace mid-sentence swap for the rotating industry word
261
- - Encode the binary radius literally 0px for sections, cards, hero, and footer; 8px ('--style--radius-8px') only for pressable controls and content chips
262
- - Set body copy in Geist gray #70757F (the dominant 428-element text color) at 18px/400, the way most paragraph text ships
264
+
265
+ - Use the observed white / dark-ink public-surface foundation with `#5B52FF` reserved for conversion actions.
266
+ - Keep Geist as the loaded general public UI/content family and confine Espeak to the verified public marketing-display context.
267
+ - Use the 8px action/card geometry only where the public evidence establishes it.
268
+ - Keep public pricing-card claims separate from marketing, corporate, documentation, and logged-in product UI claims.
269
+ - Retain selector and surface provenance when reusing a documented component pattern.
263
270
 
264
271
  ### Don't
265
- - Spread the Solar yellow-green #D2FF95 broadly — keep it as a single-use accent adjacent to the Solar product narrative, never a default button surface or section background
266
- - Introduce a fourth type family beyond Geist, Espeak, and the monospace swap, which would break the rotating-word gesture
267
- - Soften the binary geometry with 4px, 12px, or 16px middle radii, which erases the layout-versus-pressable distinction
268
- - Import drop-shadow card chrome like 'box-shadow: 0 8px 24px rgba(0,0,0,0.08)' Upstage ships effectively zero elevation and builds depth from surface contrast and #EEEEEE hairlines
269
- - Default to a corporate blue primary, the enterprise-AI cliche Upstage consciously avoids in favor of the violet-plum axis
270
- - Center-align the hero or signal the rotating industry word with color or weight — keep it left-aligned with the typographic monospace shift as the variable-slot cue
272
+
273
+ - Reintroduce the prior plum or Solar-lime palette as a current token without fresh source evidence.
274
+ - Present Archivo, Inter, Montserrat, Noto Sans JP/KR, `system-ui`, or `monospace` as an Upstage UI-family token.
275
+ - Invent hover, focus, pressed, disabled, dialog, or form variants from the uncorroborated state fragments.
276
+ - Treat the Brand Resource Center’s asset ownership notice as a licence to redistribute logos, photographs, or the Espeak face.
277
+ - Infer an authenticated product design system from these public surfaces.