oh-my-design-cli 1.6.7 → 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 (224) hide show
  1. package/README.md +6 -6
  2. package/data/reference-fingerprints.json +1318 -10
  3. package/package.json +1 -1
  4. package/web/references/11st/DESIGN.md +400 -0
  5. package/web/references/17live/DESIGN.md +43 -0
  6. package/web/references/29cm/DESIGN.md +41 -0
  7. package/web/references/91app/DESIGN.md +31 -0
  8. package/web/references/ably/DESIGN.md +54 -0
  9. package/web/references/airbnb/DESIGN.md +58 -0
  10. package/web/references/airtable/DESIGN.md +39 -0
  11. package/web/references/alipay/DESIGN.md +50 -0
  12. package/web/references/amazingtalker/DESIGN.md +434 -0
  13. package/web/references/appier/DESIGN.md +45 -0
  14. package/web/references/apple/DESIGN.md +47 -0
  15. package/web/references/baemin/DESIGN.md +142 -43
  16. package/web/references/banksalad/DESIGN.md +67 -0
  17. package/web/references/bilibili/DESIGN.md +45 -0
  18. package/web/references/bithumb/DESIGN.md +38 -0
  19. package/web/references/bmw/DESIGN.md +37 -0
  20. package/web/references/brandi/DESIGN.md +414 -0
  21. package/web/references/bunjang/DESIGN.md +47 -0
  22. package/web/references/cakeresume/DESIGN.md +29 -0
  23. package/web/references/cal/DESIGN.md +52 -0
  24. package/web/references/catchtable/DESIGN.md +79 -19
  25. package/web/references/cathay/DESIGN.md +432 -0
  26. package/web/references/channeltalk/DESIGN.md +48 -0
  27. package/web/references/class101/DESIGN.md +51 -0
  28. package/web/references/classting/DESIGN.md +41 -0
  29. package/web/references/classum/DESIGN.md +43 -0
  30. package/web/references/claude/DESIGN.md +157 -70
  31. package/web/references/clay/DESIGN.md +56 -0
  32. package/web/references/clickhouse/DESIGN.md +50 -0
  33. package/web/references/cloudflare/DESIGN.md +637 -0
  34. package/web/references/cohere/DESIGN.md +48 -0
  35. package/web/references/coinbase/DESIGN.md +139 -5
  36. package/web/references/coinone/DESIGN.md +39 -0
  37. package/web/references/composio/DESIGN.md +46 -0
  38. package/web/references/cookpad/DESIGN.md +37 -0
  39. package/web/references/coupang/DESIGN.md +57 -2
  40. package/web/references/cursor/DESIGN.md +44 -0
  41. package/web/references/dabang/DESIGN.md +57 -19
  42. package/web/references/dcard/DESIGN.md +57 -0
  43. package/web/references/dell/DESIGN.md +636 -0
  44. package/web/references/devsisters/DESIGN.md +29 -0
  45. package/web/references/discord/DESIGN.md +604 -0
  46. package/web/references/dji/DESIGN.md +39 -0
  47. package/web/references/drnow/DESIGN.md +52 -0
  48. package/web/references/duolingo/DESIGN.md +563 -0
  49. package/web/references/elevenlabs/DESIGN.md +39 -0
  50. package/web/references/expo/DESIGN.md +39 -0
  51. package/web/references/fastcampus/DESIGN.md +50 -0
  52. package/web/references/ferrari/DESIGN.md +47 -0
  53. package/web/references/figma/DESIGN.md +44 -0
  54. package/web/references/finda/DESIGN.md +413 -0
  55. package/web/references/flex/DESIGN.md +28 -0
  56. package/web/references/flo/DESIGN.md +43 -0
  57. package/web/references/framer/DESIGN.md +38 -0
  58. package/web/references/freee/DESIGN.md +48 -0
  59. package/web/references/fugle/DESIGN.md +41 -1
  60. package/web/references/gangnamunni/DESIGN.md +57 -1
  61. package/web/references/genie/DESIGN.md +415 -0
  62. package/web/references/github/DESIGN.md +727 -0
  63. package/web/references/gmarket/DESIGN.md +51 -0
  64. package/web/references/gogolook/DESIGN.md +25 -1
  65. package/web/references/gogoro/DESIGN.md +38 -0
  66. package/web/references/grip/DESIGN.md +39 -0
  67. package/web/references/hahow/DESIGN.md +26 -0
  68. package/web/references/hashicorp/DESIGN.md +42 -0
  69. package/web/references/hogangnono/DESIGN.md +41 -0
  70. package/web/references/hp/DESIGN.md +563 -0
  71. package/web/references/hyperconnect/DESIGN.md +393 -0
  72. package/web/references/hyundaicard/DESIGN.md +24 -0
  73. package/web/references/ibm/DESIGN.md +44 -0
  74. package/web/references/ichef/DESIGN.md +44 -0
  75. package/web/references/ikala/DESIGN.md +400 -0
  76. package/web/references/inflearn/DESIGN.md +38 -0
  77. package/web/references/intercom/DESIGN.md +38 -0
  78. package/web/references/jandi/DESIGN.md +382 -0
  79. package/web/references/jkopay/DESIGN.md +35 -1
  80. package/web/references/jobkorea/DESIGN.md +39 -0
  81. package/web/references/jumpit/DESIGN.md +37 -0
  82. package/web/references/kakao/DESIGN.md +64 -0
  83. package/web/references/kakaobank/DESIGN.md +55 -1
  84. package/web/references/kakaopay/DESIGN.md +59 -0
  85. package/web/references/kakaot/DESIGN.md +53 -0
  86. package/web/references/karrot/DESIGN.md +49 -0
  87. package/web/references/kbank/DESIGN.md +39 -0
  88. package/web/references/kdan/DESIGN.md +34 -1
  89. package/web/references/kintone/DESIGN.md +586 -0
  90. package/web/references/kkbox/DESIGN.md +22 -0
  91. package/web/references/kkday/DESIGN.md +47 -0
  92. package/web/references/kmong/DESIGN.md +427 -0
  93. package/web/references/krafton/DESIGN.md +37 -0
  94. package/web/references/kraken/DESIGN.md +44 -0
  95. package/web/references/krds/DESIGN.md +63 -0
  96. package/web/references/kream/DESIGN.md +32 -0
  97. package/web/references/kurly/DESIGN.md +38 -1
  98. package/web/references/laftel/DESIGN.md +40 -0
  99. package/web/references/lamborghini/DESIGN.md +54 -0
  100. package/web/references/layerx/DESIGN.md +615 -0
  101. package/web/references/lezhin/DESIGN.md +47 -0
  102. package/web/references/line/DESIGN.md +36 -0
  103. package/web/references/linear.app/DESIGN.md +182 -88
  104. package/web/references/loom/DESIGN.md +396 -0
  105. package/web/references/lovable/DESIGN.md +38 -0
  106. package/web/references/lunit/DESIGN.md +47 -19
  107. package/web/references/mastercard/DESIGN.md +587 -0
  108. package/web/references/meituan/DESIGN.md +42 -0
  109. package/web/references/melon/DESIGN.md +26 -0
  110. package/web/references/mercari/DESIGN.md +41 -0
  111. package/web/references/mercury/DESIGN.md +589 -0
  112. package/web/references/meta/DESIGN.md +615 -0
  113. package/web/references/millie/DESIGN.md +51 -0
  114. package/web/references/minimax/DESIGN.md +53 -0
  115. package/web/references/mintlify/DESIGN.md +45 -0
  116. package/web/references/miro/DESIGN.md +47 -0
  117. package/web/references/mistral.ai/DESIGN.md +37 -0
  118. package/web/references/momoshop/DESIGN.md +43 -0
  119. package/web/references/money-forward/DESIGN.md +42 -0
  120. package/web/references/mongodb/DESIGN.md +44 -0
  121. package/web/references/muji/DESIGN.md +605 -0
  122. package/web/references/musinsa/DESIGN.md +48 -0
  123. package/web/references/mustit/DESIGN.md +47 -1
  124. package/web/references/myrealtrip/DESIGN.md +49 -0
  125. package/web/references/naver/DESIGN.md +50 -1
  126. package/web/references/naverwebtoon/DESIGN.md +48 -0
  127. package/web/references/netflix/DESIGN.md +572 -0
  128. package/web/references/nexon/DESIGN.md +389 -0
  129. package/web/references/nhncloud/DESIGN.md +33 -0
  130. package/web/references/nike/DESIGN.md +588 -0
  131. package/web/references/note/DESIGN.md +28 -0
  132. package/web/references/notion/DESIGN.md +48 -0
  133. package/web/references/nvidia/DESIGN.md +50 -0
  134. package/web/references/ohouse/DESIGN.md +56 -0
  135. package/web/references/oliveyoung/DESIGN.md +47 -1
  136. package/web/references/ollama/DESIGN.md +40 -0
  137. package/web/references/openai/DESIGN.md +641 -0
  138. package/web/references/opencode.ai/DESIGN.md +37 -0
  139. package/web/references/payco/DESIGN.md +40 -0
  140. package/web/references/paypay/DESIGN.md +656 -0
  141. package/web/references/pchome/DESIGN.md +439 -0
  142. package/web/references/perplexity/DESIGN.md +546 -0
  143. package/web/references/piccollage/DESIGN.md +43 -0
  144. package/web/references/pinkoi/DESIGN.md +55 -0
  145. package/web/references/pinterest/DESIGN.md +44 -0
  146. package/web/references/pixiv/DESIGN.md +613 -0
  147. package/web/references/pixnet/DESIGN.md +430 -0
  148. package/web/references/posthog/DESIGN.md +50 -0
  149. package/web/references/publy/DESIGN.md +52 -0
  150. package/web/references/qanda/DESIGN.md +49 -1
  151. package/web/references/ragic/DESIGN.md +444 -0
  152. package/web/references/ramp/DESIGN.md +634 -0
  153. package/web/references/rayark/DESIGN.md +22 -0
  154. package/web/references/raycast/DESIGN.md +45 -0
  155. package/web/references/remember/DESIGN.md +44 -0
  156. package/web/references/renault/DESIGN.md +42 -0
  157. package/web/references/replicate/DESIGN.md +39 -0
  158. package/web/references/resend/DESIGN.md +44 -0
  159. package/web/references/retool/DESIGN.md +645 -0
  160. package/web/references/revolut/DESIGN.md +46 -0
  161. package/web/references/richart/DESIGN.md +465 -0
  162. package/web/references/ridi/DESIGN.md +47 -0
  163. package/web/references/riiid/DESIGN.md +32 -0
  164. package/web/references/robinhood/DESIGN.md +604 -0
  165. package/web/references/runwayml/DESIGN.md +45 -0
  166. package/web/references/sanity/DESIGN.md +50 -0
  167. package/web/references/sansan/DESIGN.md +631 -0
  168. package/web/references/sendbird/DESIGN.md +46 -0
  169. package/web/references/sentry/DESIGN.md +48 -0
  170. package/web/references/shinhancard/DESIGN.md +421 -0
  171. package/web/references/shopline/DESIGN.md +431 -0
  172. package/web/references/slack/DESIGN.md +635 -0
  173. package/web/references/smarthr/DESIGN.md +48 -0
  174. package/web/references/smartnews/DESIGN.md +29 -0
  175. package/web/references/socar/DESIGN.md +35 -0
  176. package/web/references/soomgo/DESIGN.md +326 -0
  177. package/web/references/spacex/DESIGN.md +27 -0
  178. package/web/references/spoon/DESIGN.md +46 -0
  179. package/web/references/spotify/DESIGN.md +49 -0
  180. package/web/references/starbucks/DESIGN.md +597 -0
  181. package/web/references/stripe/DESIGN.md +46 -0
  182. package/web/references/studio/DESIGN.md +602 -0
  183. package/web/references/supabase/DESIGN.md +41 -0
  184. package/web/references/superhuman/DESIGN.md +39 -0
  185. package/web/references/surveycake/DESIGN.md +442 -0
  186. package/web/references/tada/DESIGN.md +51 -0
  187. package/web/references/tesla/DESIGN.md +36 -0
  188. package/web/references/theverge/DESIGN.md +500 -0
  189. package/web/references/together.ai/DESIGN.md +33 -0
  190. package/web/references/toss/DESIGN.md +43 -0
  191. package/web/references/toss-securities/DESIGN.md +54 -19
  192. package/web/references/tossbank/DESIGN.md +57 -0
  193. package/web/references/trenbe/DESIGN.md +41 -0
  194. package/web/references/triple/DESIGN.md +47 -0
  195. package/web/references/tumblbug/DESIGN.md +48 -0
  196. package/web/references/tving/DESIGN.md +40 -0
  197. package/web/references/uber/DESIGN.md +36 -0
  198. package/web/references/ubie/DESIGN.md +615 -0
  199. package/web/references/uniqlo/DESIGN.md +575 -0
  200. package/web/references/upbit/DESIGN.md +42 -0
  201. package/web/references/upstage/DESIGN.md +38 -0
  202. package/web/references/velog/DESIGN.md +28 -0
  203. package/web/references/vercel/DESIGN.md +44 -0
  204. package/web/references/voicetube/DESIGN.md +39 -0
  205. package/web/references/voltagent/DESIGN.md +44 -0
  206. package/web/references/wadiz/DESIGN.md +71 -19
  207. package/web/references/wanted/DESIGN.md +46 -0
  208. package/web/references/warp/DESIGN.md +37 -0
  209. package/web/references/watcha/DESIGN.md +40 -0
  210. package/web/references/wavve/DESIGN.md +43 -1
  211. package/web/references/wconcept/DESIGN.md +45 -0
  212. package/web/references/webflow/DESIGN.md +49 -0
  213. package/web/references/wired/DESIGN.md +572 -0
  214. package/web/references/wise/DESIGN.md +41 -0
  215. package/web/references/x.ai/DESIGN.md +31 -0
  216. package/web/references/xiaohongshu/DESIGN.md +39 -0
  217. package/web/references/yanolja/DESIGN.md +45 -0
  218. package/web/references/yeogiotte/DESIGN.md +42 -1
  219. package/web/references/yogiyo/DESIGN.md +50 -0
  220. package/web/references/yourator/DESIGN.md +453 -0
  221. package/web/references/zapier/DESIGN.md +41 -0
  222. package/web/references/zigbang/DESIGN.md +33 -0
  223. package/web/references/zigzag/DESIGN.md +62 -0
  224. package/web/references/zozotown/DESIGN.md +578 -0
@@ -0,0 +1,615 @@
1
+ ---
2
+ id: ubie
3
+ name: Ubie
4
+ country: JP
5
+ category: healthcare
6
+ homepage: "https://ubie.life"
7
+ primary_color: "#3959cc"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=ubie.life&sz=128"
11
+ verified: "2026-06-06"
12
+ added: "2026-06-06"
13
+ omd: "0.1"
14
+ ds:
15
+ name: Ubie Vitals
16
+ url: "https://vitals.ubie.life"
17
+ type: system
18
+ description: Ubie's open-source design system — tokens, 25+ components, icons, and UX writing for healthcare products.
19
+ tokens:
20
+ source: prose-derived
21
+ extracted: "2026-06-09"
22
+ colors:
23
+ primary: "#3959cc"
24
+ primary-hover: "#304cad"
25
+ accent: "#27cc91"
26
+ accent-hover: "#21ad7b"
27
+ canvas: "#ffffff"
28
+ text-main: "#32353a"
29
+ text-sub: "#686a6d"
30
+ placeholder: "#96989a"
31
+ disabled: "#dcdddd"
32
+ border: "#c5c6c7"
33
+ border-light: "#dcdddd"
34
+ surface-subtle: "#fafafa"
35
+ error: "#e32e55"
36
+ error-text: "#a1213c"
37
+ error-bg: "#fceff2"
38
+ success-text: "#1c9167"
39
+ success-bg: "#e9faf4"
40
+ info-bg: "#f0f2fc"
41
+ info-border: "#8296df"
42
+ on-primary: "#ffffff"
43
+ typography:
44
+ family: { sans: "A P-OTF UD Shin Go Pr6N", mono: "Open Sans" }
45
+ heading-xl: { size: 32, weight: 700, lineHeight: 1.40, use: "Page hero, landing titles" }
46
+ heading-lg: { size: 28, weight: 700, lineHeight: 1.40, use: "Major section titles" }
47
+ heading-md: { size: 24, weight: 700, lineHeight: 1.40, use: "Section headers" }
48
+ heading-sm: { size: 20, weight: 700, lineHeight: 1.50, use: "Card titles, modal headers" }
49
+ heading-xs: { size: 16, weight: 700, lineHeight: 1.50, use: "List headers, sub-sections" }
50
+ body-lg: { size: 16, weight: 400, lineHeight: 1.70, use: "Primary reading text" }
51
+ body-md: { size: 14, weight: 400, lineHeight: 1.70, use: "Standard body, descriptions" }
52
+ note: { size: 12, weight: 400, lineHeight: 1.50, use: "Captions, helper text" }
53
+ button: { size: 16, weight: 700, lineHeight: 1.00, use: "Action labels" }
54
+ tag: { size: 12, weight: 700, lineHeight: 1.00, use: "Category chips, status keywords" }
55
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
56
+ rounded: { sm: 4, md: 8, lg: 12, full: 9999 }
57
+ shadow:
58
+ card: "0px 1px 4px rgba(22,25,31,0.08)"
59
+ interactive: "0px 2px 8px rgba(22,25,31,0.10)"
60
+ components:
61
+ button-primary: { type: button, bg: "#3959cc", fg: "#ffffff", radius: 8, padding: "12px 24px", font: "16px/700", use: "Single most important action; hover #304cad" }
62
+ button-accent: { type: button, bg: "#27cc91", fg: "#ffffff", radius: 8, padding: "12px 24px", use: "Health-forward emphasis; hover #21ad7b" }
63
+ button-secondary: { type: button, bg: "#ffffff", fg: "#3959cc", radius: 8, padding: "12px 24px", use: "Subordinate action; 1px #3959cc border; hover #f0f2fc" }
64
+ button-alert: { type: button, bg: "#e32e55", fg: "#ffffff", radius: 8, padding: "12px 24px", use: "Irreversible/risky actions" }
65
+ button-text: { type: button, bg: "transparent", fg: "#3959cc", radius: 8, padding: "8px 12px", font: "14px/700", use: "Low-emphasis inline action" }
66
+ textfield: { type: input, bg: "#ffffff", fg: "#32353a", radius: 8, padding: "12px 16px", font: "16px", use: "Standard input; 1px #c5c6c7 border, focus #3959cc" }
67
+ textfield-error: { type: input, bg: "#ffffff", fg: "#32353a", radius: 8, padding: "12px 16px", use: "Validation failure; 1px #e32e55 border, help #a1213c" }
68
+ card: { type: card, bg: "#ffffff", radius: 12, padding: "24px", use: "Symptom result / content panel; 1px #dcdddd border" }
69
+ card-interactive: { type: card, bg: "#ffffff", radius: 12, padding: "16px", use: "Tappable card; 1px #dcdddd border, hover #8296df" }
70
+ card-tinted: { type: card, bg: "#f0f2fc", radius: 8, padding: "16px", use: "Inline informational callout" }
71
+ components_harvested: true
72
+ ---
73
+
74
+ # Design System Inspiration of Ubie (ユビー)
75
+
76
+ ## 1. Visual Theme & Atmosphere
77
+
78
+ Ubie is a Japanese healthcare-AI company whose products — a consumer symptom-checker (ユビー) and clinical software for hospitals — must do something most health software fails at: feel reassuring to an anxious person and credible to a busy doctor, on the same screen. The interface answers this with a warm, optimistic clinical aesthetic. The canvas is pure white (`#ffffff`), text is a soft near-black (`#32353a`) that reads warmer than true black, and the system is anchored by two colors working in concert: a calm, trustworthy **Ubie Blue** (`#3959cc`) for interaction and a fresh, healing **Ubie Green** (`#27cc91`) that signals health, vitality, and positive progress.
79
+
80
+ The brand was rebuilt around the phrase **"あたたかさと賢さで寄り添う"** — "accompanying people with warmth and wisdom." The heart motif in the logo carries this duality: the front face expresses warmth (the human), the back expresses the supporting technology (the AI). The logo hides a detail — the human body temperature **36 degrees** is encoded in its form — a quiet promise that the product is on the patient's side. Nothing in the visual language shouts; everything is engineered to lower the cortisol of someone Googling their symptoms at 2am.
81
+
82
+ The type system uses **A P-OTF UD Shin Go Pr6N**, a Japanese Universal Design typeface chosen for legibility under stress and across vision abilities, paired with a clean Latin sans (Open Sans as the documented fallback). Accessibility is not a bolt-on: Ubie Vitals is built "so that Ubie's products reach all users," and the entire token system is published open-source.
83
+
84
+ **Key Characteristics:**
85
+ - Ubie Blue (`#3959cc`) for interaction; Ubie Green (`#27cc91`) for health/positive signals — a two-anchor system
86
+ - A P-OTF UD Shin Go (Universal Design font) for Japanese; Latin sans fallback for English
87
+ - Warm near-black text (`#32353a`) instead of pure black — softer, less clinical
88
+ - 10-step primitive scales (100→1000) across blue, green, pink, orange, purple, red, black
89
+ - Generous default line-height (170%) for calm, readable body text
90
+ - Conservative radius scale (2/4/8/12px) sized to the component, plus pill (9999px)
91
+ - 4px-based spacing grid; accessibility and UX writing are first-class token categories
92
+ - Open-source design system (Ubie Vitals) — tokens managed in JSON via Style Dictionary
93
+
94
+ ## 2. Color Palette & Roles
95
+
96
+ ### Primary
97
+ - **Ubie Blue** (`#3959cc`): `blue600`. The primary interactive color — links, primary buttons, focus, selected states, `bg.blue.inverse`. Calm institutional blue that reads trustworthy, not cold.
98
+ - **Ubie Green** (`#27cc91`): `green600`. The signature health accent — success, positive progress, `bg.green.inverse`, brand-moment highlights. Fresh, vital, reassuring.
99
+ - **Pure White** (`#ffffff`): `bg.white`. Page background and card surface.
100
+ - **Text Main** (`#32353a`): `black900`. Primary text and headings. Warm near-black with a soft undertone.
101
+
102
+ ### Brand
103
+ - **Heart Blue/Green pairing**: The logo and brand expressions pair `#3959cc` (warmth-and-trust) with `#27cc91` (health-and-care). These two are the brand's identity colors; everything else is supporting.
104
+
105
+ ### Text Scale
106
+ - **Text Main** (`#32353a`): Primary reading text, headings.
107
+ - **Text Sub** (`#686a6d`): `black600`. Secondary text, descriptions, metadata, de-emphasized links.
108
+ - **Text Placeholder** (`#96989a`): `black500`. Input placeholders.
109
+ - **Text Disabled** (`#dcdddd`): `black300`. Inactive labels.
110
+ - **Text Link** (`#3959cc`): Hyperlinks (= Ubie Blue 600).
111
+
112
+ ### Semantic
113
+ - **Success / Green** — text `#1c9167` (green800), bg `#e9faf4` (green100), inverse `#27cc91` (green600), border `#77dfba` (green400).
114
+ - **Error / Red** — text `#a1213c` (red800), bg `#fceff2` (red100), inverse `#e32e55` (red600), border `#ed7b94` (red400).
115
+ - **Warning / Orange** — text `#b57212` (orange800), bg `#fff9f0` (orange100), inverse `#ffa11a` (orange600), border `#ffc46f` (orange400).
116
+ - **Info / Blue** — text `#283f91` (blue800), bg `#f0f2fc` (blue100), inverse `#3959cc` (blue600), border `#8296df` (blue400).
117
+ - **Accent / Purple** — text `#7322a2` (purple800), bg `#f8effc` (purple100), inverse `#a230e4` (purple600), border `#c47dee` (purple400).
118
+ - **Accent / Pink** — text `#9b2350` (pink800), bg `#fcf0f5` (pink100), inverse `#da3170` (pink600), border `#e87da5` (pink400).
119
+
120
+ ### Neutral Scale (Ubie Black)
121
+ - **Black 100** (`#fafafa`): Lightest gray, `bg.black` surface fill.
122
+ - **Black 200** (`#f6f6f6`): Secondary background, subtle fills.
123
+ - **Black 300** (`#dcdddd`): Disabled text, hairline dividers.
124
+ - **Black 400** (`#c5c6c7`): `border.black` — default border color.
125
+ - **Black 500** (`#96989a`): Placeholder text, muted icons.
126
+ - **Black 600** (`#686a6d`): Sub text, secondary labels, `bg.black.inverse`.
127
+ - **Black 700** (`#55575b`): Emphasized secondary text.
128
+ - **Black 800** (`#393c41`): `text.black` strong labels.
129
+ - **Black 900** (`#32353a`): Primary text — Text Main.
130
+ - **Black 1000** (`#16191f`): Maximum-contrast text, rare emphasis.
131
+
132
+ ### Surface & Borders
133
+ - **Border Default** (`#c5c6c7`): black400. Card borders, input borders, dividers.
134
+ - **Border Light** (`#dcdddd`): black300. Subtle hairline separators.
135
+ - **Background Subtle** (`#fafafa` / `#f6f6f6`): Section fills, grouped surfaces.
136
+ - **Modal Scrim** (`rgba(0,0,0,0.5)`): `bg.modal`. Overlay behind dialogs and sheets.
137
+
138
+ ## 3. Typography Rules
139
+
140
+ ### Font Family
141
+ - **Japanese**: `"A P-OTF UD Shin Go Pr6N"` (Universal Design Shin Go), Regular = `/M`, Bold = `/DB`. Fallback: `"Noto Sans CJK JP", "Noto Sans JP"`.
142
+ - **Latin / English**: brand Latin sans; documented fallback `"Open Sans"`.
143
+ - **Full stack**: `"A P-OTF UD Shin Go Pr6N", "Open Sans", "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif`
144
+
145
+ UD Shin Go is a Universal Design face: glyphs are tuned for legibility at small sizes, for low-vision readers, and for distinguishing easily-confused characters — the correct choice for medical content read under stress.
146
+
147
+ ### Hierarchy
148
+
149
+ Ubie Vitals defines type semantically (Body / Heading / Note / Button / Tag) crossed with three line-height modes: default `170%`, `-narrow` `150%`, `-tight` `140%`. The px scale below is the standard Ubie web rendering.
150
+
151
+ | Role | Token | Size | Weight | Line Height | Notes |
152
+ |------|-------|------|--------|-------------|-------|
153
+ | Heading XL | heading-xl | 32px | DB (Bold) | 140% (tight) | Page hero, landing titles |
154
+ | Heading L | heading-lg | 28px | DB (Bold) | 140% (tight) | Major section titles |
155
+ | Heading M | heading-md | 24px | DB (Bold) | 140% (tight) | Section headers |
156
+ | Heading S | heading-sm | 20px | DB (Bold) | 150% (narrow) | Card titles, modal headers |
157
+ | Heading XS | heading-xs | 16px | DB (Bold) | 150% (narrow) | List headers, sub-sections |
158
+ | Body L | body-lg | 16px | M (Regular) | 170% | Primary reading text |
159
+ | Body M | body-md | 14px | M (Regular) | 170% | Standard body, descriptions |
160
+ | Body S | body-sm | 13px | M (Regular) | 170% | Dense body, secondary info |
161
+ | Note | note | 12px | M (Regular) | 150% (narrow) | Captions, helper text, timestamps |
162
+ | Button | button | 14–16px | DB (Bold) | 100% | Action labels — never wraps awkwardly |
163
+ | Tag | tag | 12px | DB (Bold) | 100% | Category chips, status keywords |
164
+
165
+ ### Principles
166
+ - **Two weights, used deliberately**: Regular (M) for reading, DemiBold (DB) for headings and buttons. No light, no black-weight display drama — medical content is not a fashion magazine.
167
+ - **Generous line-height by default**: Body text runs at 170%. Calm, airy paragraphs reduce cognitive load for an anxious reader. Tighten only for headings (`140%`) and chips/buttons (`100%`).
168
+ - **Universal Design legibility**: UD Shin Go is mandated for Japanese — its disambiguated glyphs are an accessibility commitment, not an aesthetic preference.
169
+ - **Buttons in DB, ~15 chars**: Action labels are bold and short. Vitals guidance: describe the action ("この内容で更新する") in roughly 15 characters or fewer; avoid bare "OK".
170
+
171
+ ## 4. Component Stylings
172
+
173
+ ### Buttons
174
+
175
+ Ubie `<Button>` is a **variant × size** component. Variants: `primary`, `accent`, `secondary`, `alert`, `text`, `textAlert`, plus `Auth*` social buttons. Sizes: `large` (default), `medium`, `small`. `block` makes it full-width. Vitals discourages the `disabled` state in favor of a `loading` prop (disabled buttons have poor contrast and unclear affordance). Verified against `vitals.ubie.life/components/button`.
176
+
177
+ **Primary**
178
+ - Background: `#3959cc` (Ubie Blue 600)
179
+ - Text: `#ffffff`
180
+ - Border: none
181
+ - Radius: 8px (md)
182
+ - Padding: 12px 24px (large)
183
+ - Font: 16px / DB (Bold) / UD Shin Go
184
+ - Hover: darken to `#304cad` (blue700)
185
+ - Use: The single most important action on a screen — one per view ("症状を確認する", "次へ")
186
+
187
+ **Accent**
188
+ - Background: `#27cc91` (Ubie Green 600)
189
+ - Text: `#ffffff`
190
+ - Border: none
191
+ - Radius: 8px
192
+ - Padding: 12px 24px
193
+ - Font: 16px / DB / UD Shin Go
194
+ - Hover: darken to `#21ad7b` (green700)
195
+ - Use: Positive, health-forward emphasis between primary and secondary — "start", "begin a check"
196
+
197
+ **Secondary**
198
+ - Background: `#ffffff`
199
+ - Text: `#3959cc`
200
+ - Border: 1px solid `#3959cc`
201
+ - Radius: 8px
202
+ - Padding: 12px 24px
203
+ - Font: 16px / DB / UD Shin Go
204
+ - Hover: bg `#f0f2fc` (blue100)
205
+ - Use: Subordinate action paired with a primary button
206
+
207
+ **Alert**
208
+ - Background: `#e32e55` (red600)
209
+ - Text: `#ffffff`
210
+ - Border: none
211
+ - Radius: 8px
212
+ - Padding: 12px 24px
213
+ - Font: 16px / DB / UD Shin Go
214
+ - Hover: darken to `#c12748` (red700)
215
+ - Use: Irreversible / risky actions (delete, cancel account)
216
+
217
+ **Text**
218
+ - Background: transparent
219
+ - Text: `#3959cc`
220
+ - Border: none
221
+ - Radius: 8px
222
+ - Padding: 8px 12px
223
+ - Font: 14px / DB / UD Shin Go
224
+ - Hover: bg `#f0f2fc` (blue100)
225
+ - Use: Low-emphasis inline action
226
+
227
+ **textAlert**
228
+ - Background: transparent
229
+ - Text: `#a1213c` (red800)
230
+ - Border: none
231
+ - Radius: 8px
232
+ - Padding: 8px 12px
233
+ - Font: 14px / DB / UD Shin Go
234
+ - Use: Low-emphasis destructive action
235
+
236
+ Size scale (height · font · padding): `large` ~48px · 16px · 12px 24px; `medium` ~40px · 14px · 10px 20px; `small` ~32px · 13px · 8px 16px. Radius follows the component-size rule (§5): 8px (md) at large, down to 4px (sm) at small. `loading` shows a spinner and blocks double-submit while preserving width.
237
+
238
+ ### Inputs
239
+
240
+ **TextField (default)**
241
+ - Background: `#ffffff`
242
+ - Text: `#32353a`
243
+ - Border: 1px solid `#c5c6c7` (black400)
244
+ - Radius: 8px
245
+ - Padding: 12px 16px
246
+ - Font: 16px / M / UD Shin Go
247
+ - Placeholder: `#96989a` (black500)
248
+ - Focus: border `#3959cc`, 2px focus ring `rgba(57,89,204,0.3)`
249
+ - Use: Standard form input
250
+
251
+ **TextField (error)**
252
+ - Background: `#ffffff`
253
+ - Text: `#32353a`
254
+ - Border: 1px solid `#e32e55` (red600)
255
+ - Radius: 8px
256
+ - Padding: 12px 16px
257
+ - Help text below in `#a1213c` (red800), 12px
258
+ - Use: Validation failure — paired with one specific corrective message
259
+
260
+ **TextField (disabled)**
261
+ - Background: `#f6f6f6` (black200)
262
+ - Text: `#96989a` (black500)
263
+ - Border: 1px solid `#dcdddd` (black300)
264
+ - Radius: 8px
265
+ - Use: Inactive input — geometry preserved if re-enabled
266
+
267
+ ### Cards
268
+
269
+ **Standard**
270
+ - Background: `#ffffff`
271
+ - Border: 1px solid `#dcdddd` (black300)
272
+ - Radius: 12px (lg)
273
+ - Padding: 24px (lg)
274
+ - Shadow: `0px 1px 4px rgba(22,25,31,0.08)`
275
+ - Use: Symptom result, content panel — the workhorse surface
276
+
277
+ **Interactive (tappable)**
278
+ - Background: `#ffffff`
279
+ - Border: 1px solid `#dcdddd`
280
+ - Radius: 12px
281
+ - Padding: 16px–24px
282
+ - Shadow: `0px 2px 8px rgba(22,25,31,0.10)`
283
+ - Hover: border `#8296df` (blue400), shadow lifts
284
+ - Use: A card that navigates — answer choices, related-condition cards
285
+
286
+ **Tinted Info**
287
+ - Background: `#f0f2fc` (blue100) / `#e9faf4` (green100)
288
+ - Border: none
289
+ - Radius: 8px (md)
290
+ - Padding: 16px
291
+ - Use: Inline informational / reassurance callout
292
+
293
+ ### Tags / Chips
294
+
295
+ Ubie `<Tag>` — short keyword for attributes or classification. Bold (DB), 12px, 100% line-height.
296
+
297
+ **Default**
298
+ - Background: `#f6f6f6` (black200)
299
+ - Text: `#55575b` (black700)
300
+ - Radius: 4px (sm) or full (9999px) for pill chips
301
+ - Padding: 2px 8px
302
+ - Font: 12px / DB / UD Shin Go
303
+
304
+ **Green (positive)**
305
+ - Background: `#e9faf4` (green100)
306
+ - Text: `#1c9167` (green800)
307
+ - Radius: 4px / full
308
+ - Padding: 2px 8px
309
+
310
+ **Red (caution)**
311
+ - Background: `#fceff2` (red100)
312
+ - Text: `#a1213c` (red800)
313
+ - Radius: 4px / full
314
+ - Padding: 2px 8px
315
+
316
+ ### Notices / Banners
317
+
318
+ **Info**
319
+ - Background: `#f0f2fc` (blue100)
320
+ - Text: `#32353a`, icon `#3959cc`
321
+ - Border-left: 4px solid `#3959cc`
322
+ - Radius: 8px
323
+ - Padding: 16px
324
+
325
+ **Success**
326
+ - Background: `#e9faf4` (green100)
327
+ - Border-left: 4px solid `#27cc91`
328
+ - Radius: 8px, Padding: 16px
329
+
330
+ **Error**
331
+ - Background: `#fceff2` (red100)
332
+ - Border-left: 4px solid `#e32e55`
333
+ - Radius: 8px, Padding: 16px
334
+
335
+ ### Modal / Dialog
336
+
337
+ - Background: `#ffffff`
338
+ - Text: `#32353a`
339
+ - Border: none
340
+ - Radius: 12px (lg)
341
+ - Padding: 24px
342
+ - Shadow: `0px 8px 24px rgba(22,25,31,0.16)`
343
+ - Scrim: `rgba(0,0,0,0.5)` (`bg.modal`)
344
+ - Use: Confirmation, secondary flow
345
+
346
+ ### Toggle / Switch
347
+
348
+ - Track: `#27cc91` (on) / `#c5c6c7` (off, black400)
349
+ - Radius: 9999px (full)
350
+ - Thumb: `#ffffff` circle with `0px 1px 2px rgba(22,25,31,0.2)`
351
+ - Use: Boolean settings, consent toggles
352
+
353
+ ---
354
+
355
+ **Verified:** 2026-06-06 (full-depth)
356
+ **Tier 1 sources:** vitals.ubie.life (Ubie Vitals — public design-system docs: primitive + semantic color tokens, typography tokens, radius, spacing, Button component); github.com/ubie-oss/design-tokens (token JSON, Style Dictionary — hex values cross-confirmed). ubiehealth.com (live brand surface — Shiba mascot, tagline "Just 3 minutes. Developed by doctors"). · https://ubie.life (live production site)
357
+ **Tier 2 sources:** speakerdeck.com/ubie/ubie-brand-guideline (brand concept "あたたかさと賢さで寄り添う", heart motif, UD Shin Go + Open Sans fallback); note.com/ubie rebranding article; X/@rhatake_jp (logo encodes 36°C body temperature).
358
+ **Notes:** Primitive hex values are authoritative (cross-checked Vitals docs ↔ token JSON, identical). Component padding/height/shadow values are reconstructed from the documented radius/spacing/typography tokens + size-rule (§5) where Vitals docs describe behavior but omit exact px; flagged as derived, not invented.
359
+
360
+ ## 5. Layout Principles
361
+
362
+ ### Spacing System
363
+ - Base unit: 4px. Tokens: `xxs` 4px, `xs` 8px, `sm` 12px, `md` 16px, `lg` 24px, `xl` 40px, `xxl` 64px.
364
+ - Scale logic: multiples of 4 up to `lg`, then 8px+ steps for clear hierarchy.
365
+ - Default content padding: 16px (md) mobile, 24px (lg) larger.
366
+ - Group related items with `xs`/`sm` (8–12px); separate functional groups with `lg`/`xl` (24–40px).
367
+
368
+ ### Grid & Container
369
+ - Mobile-first; consumer symptom-checker is primarily a phone flow.
370
+ - Single-column question flow: one decision per screen, full-width stacked cards.
371
+ - Max content width ~720px for reading surfaces; ~1080px for marketing/landing.
372
+ - Generous vertical rhythm — questions and results breathe to reduce anxiety.
373
+
374
+ ### Whitespace Philosophy
375
+ - **Calm by spacing**: For an anxious user, density reads as alarm. Ubie spaces content out and uses 170% line-height so nothing feels urgent or cramped.
376
+ - **One question per screen**: The symptom flow never stacks multiple decisions. Progressive disclosure keeps cognitive load minimal.
377
+ - **Reassurance has room**: Positive/safe results get green tinting and breathing space; the design never crowds good news.
378
+
379
+ ### Border Radius Scale
380
+ Radius is chosen by component short-side length, not by taste:
381
+ - **xs (2px)**: short side ≤ 24px — tiny chips, checkboxes.
382
+ - **sm (4px)**: short side 24–40px — small buttons, tags.
383
+ - **md (8px)**: short side > 40px — inputs, standard buttons, notices.
384
+ - **lg (12px)**: decorative / landing surfaces — cards, modals.
385
+ - **full (9999px)**: pills, toggles, avatars.
386
+
387
+ ## 6. Depth & Elevation
388
+
389
+ | Level | Treatment | Use |
390
+ |-------|-----------|-----|
391
+ | Flat (Level 0) | No shadow, optional 1px `#dcdddd` border | Page background, inline elements |
392
+ | Subtle (Level 1) | `0px 1px 4px rgba(22,25,31,0.08)` | Standard cards, list separation |
393
+ | Standard (Level 2) | `0px 2px 8px rgba(22,25,31,0.10)` | Interactive cards, hover lift |
394
+ | Elevated (Level 3) | `0px 4px 12px rgba(22,25,31,0.12)` | Dropdowns, popovers, sticky CTA |
395
+ | Modal (Level 4) | `0px 8px 24px rgba(22,25,31,0.16)` | Dialogs, bottom sheets |
396
+
397
+ **Shadow Philosophy**: Ubie's shadows are soft, low-opacity, and tinted with the warm near-black `#16191f` (black1000) rather than pure black — consistent with the warm text palette. Depth is gentle; in a healthcare context, dramatic elevation reads as alarm. Most separation is achieved with a 1px `#dcdddd` border and white space, with shadow reserved for genuinely floating or interactive surfaces. Borders before shadows; shadows before drama.
398
+
399
+ ### Surfaces
400
+ - Cards prefer a hairline border (`#dcdddd`) on white; shadow is added only when the card lifts on hover or floats above content.
401
+ - Tinted surfaces (blue100, green100) provide grouping without any shadow at all.
402
+
403
+ ## 7. Do's and Don'ts
404
+
405
+ ### Do
406
+ - Use Ubie Blue (`#3959cc`) for interaction — links, primary buttons, focus, selection.
407
+ - Use Ubie Green (`#27cc91`) for health, success, and positive progress.
408
+ - Use warm near-black (`#32353a`) for text, never pure `#000000`.
409
+ - Keep body text at 170% line-height for a calm, readable rhythm.
410
+ - Use DB (Bold) weight for headings and button labels; M (Regular) for reading.
411
+ - Choose radius by component size: 8px standard, 4px small, 12px cards/modals, pill for toggles.
412
+ - Keep one primary action per screen; pair with a secondary, never two primaries.
413
+ - Use UD Shin Go (or Universal Design fallback) for Japanese — it is an accessibility requirement.
414
+
415
+ ### Don't
416
+ - Don't use pure black for text or shadows — warm near-black keeps the brand soft.
417
+ - Don't crowd content — density reads as urgency/alarm to an anxious patient.
418
+ - Don't use red (`#e32e55`) decoratively — it is reserved for errors and irreversible actions.
419
+ - Don't rely on the `disabled` button state — prefer `loading` (Vitals guidance: disabled has poor contrast/affordance).
420
+ - Don't stack multiple decisions on one symptom-flow screen — one question per screen.
421
+ - Don't use heavy, high-opacity shadows — elevation is gentle.
422
+ - Don't write 1-word vague labels ("OK") — describe the action in ~15 chars.
423
+
424
+ ## 8. Responsive Behavior
425
+
426
+ ### Breakpoints
427
+ | Name | Width | Key Changes |
428
+ |------|-------|-------------|
429
+ | Mobile (Primary) | <640px | Single-column flow, full-width cards, 16px padding |
430
+ | Tablet | 640–1024px | Centered reading column ~720px, 24px padding |
431
+ | Desktop | >1024px | Centered content, marketing grids up to ~1080px |
432
+
433
+ ### Touch Targets
434
+ - Buttons: large ~48px, medium ~40px, small ~32px height.
435
+ - Answer-choice cards: minimum 48px tappable height with comfortable padding.
436
+ - Toggles/checkboxes: ≥44px effective hit area even when visually smaller.
437
+
438
+ ### Collapsing Strategy
439
+ - Desktop mirrors the mobile flow in a centered column — parity over reflow.
440
+ - Marketing feature grids: 3-col → 2-col → single column stacked.
441
+ - Sticky bottom CTA on mobile flows with safe-area insets.
442
+ - Multi-column forms collapse to single column under 640px.
443
+
444
+ ### Image Behavior
445
+ - Shiba mascot illustrations scale inline; used at welcoming/reassurance moments, never on error screens.
446
+ - Medical illustrations maintain aspect ratio, full-width on mobile.
447
+ - Icons from the Vitals icon set render at 16/20/24px consistent with text scale.
448
+
449
+ ## 9. Agent Prompt Guide
450
+
451
+ ### Quick Color Reference
452
+ - Primary CTA / link: Ubie Blue (`#3959cc`)
453
+ - CTA Hover: Blue 700 (`#304cad`)
454
+ - Health / Success / Accent CTA: Ubie Green (`#27cc91`)
455
+ - Background: White (`#ffffff`)
456
+ - Background Subtle: Black 100 (`#fafafa`)
457
+ - Heading / body text: Text Main (`#32353a`)
458
+ - Sub text: Text Sub (`#686a6d`)
459
+ - Placeholder: Black 500 (`#96989a`)
460
+ - Border: Black 400 (`#c5c6c7`) / Light `#dcdddd`
461
+ - Success: Green 800 text (`#1c9167`) on Green 100 (`#e9faf4`)
462
+ - Error: Red 600 (`#e32e55`)
463
+ - Warning: Orange 600 (`#ffa11a`)
464
+
465
+ ### Example Component Prompts
466
+ - "Create a symptom-result card: white bg, 1px solid #dcdddd border, 12px radius, 24px padding, shadow 0px 1px 4px rgba(22,25,31,0.08). Title 20px UD Shin Go Bold #32353a, 150% line-height. Body 14px Regular #686a6d, 170% line-height. Positive result uses a green tag: #e9faf4 bg, #1c9167 text, 4px radius."
467
+ - "Build a primary button: #3959cc bg, white text, 16px UD Shin Go Bold, 48px height, 12px 24px padding, 8px radius. Hover #304cad. Use loading spinner instead of disabled."
468
+ - "Build an accent button for 'start a symptom check': #27cc91 bg, white text, 16px Bold, 8px radius, 12px 24px padding. Hover #21ad7b."
469
+ - "Design a single-question screen: white bg, centered ~720px column, one heading (24px Bold #32353a) and a vertical stack of tappable answer cards (white, 1px #dcdddd border, 12px radius, 16px padding, hover border #8296df). 16px gap between cards."
470
+ - "Create an info notice: #f0f2fc bg, 4px left border #3959cc, 8px radius, 16px padding, 14px text #32353a with a #3959cc info icon."
471
+
472
+ ### Iteration Guide
473
+ 1. Two anchors: `#3959cc` blue is interaction, `#27cc91` green is health/positive. Don't swap their roles.
474
+ 2. Text is warm near-black `#32353a`; sub text `#686a6d`. Never pure black.
475
+ 3. Body line-height 170% — calm and airy is the brand.
476
+ 4. Weights: M (Regular) for reading, DB (Bold) for headings/buttons. No other weights.
477
+ 5. Radius by size: 2px tiny, 4px small, 8px standard, 12px cards/modals, pill for toggles.
478
+ 6. Shadows are soft and warm-toned (rgba 22,25,31); prefer borders + white space first.
479
+ 7. One question / one primary action per screen. Use `loading`, not `disabled`.
480
+
481
+ ---
482
+
483
+ ## 10. Voice & Tone
484
+
485
+ Ubie speaks like a calm, well-informed clinic receptionist who genuinely likes you: warm, plain, never alarmist, and never condescending. It is bilingual by design — Japanese is the native voice (polite ですます form, softened sentence endings like 〜ですよ on the consumer app), and English carries the same reassuring register. The job of every sentence is to lower anxiety while staying honest about medical uncertainty.
486
+
487
+ | Context | Tone |
488
+ |---|---|
489
+ | Symptom questions | Plain, one idea per screen, no jargon. "どんな症状がありますか?" Neutral, never leading. |
490
+ | Results / guidance | Honest + reassuring. States possibilities without diagnosing; always offers a clear next step. Never alarmist. |
491
+ | CTAs | Action-describing, ~15 chars, Bold. "症状を確認する", "病院をさがす". Never bare "OK". |
492
+ | Reassurance moments | Warm, brief, sometimes the Shiba mascot. "ここまでありがとうございます。" |
493
+ | Error messages | Specific + blameless + recoverable. Never "エラーが発生しました" alone. |
494
+ | Medical disclaimers | Clear, calm, non-frightening — "this is not a diagnosis," framed as empowerment not liability. |
495
+ | English (ubiehealth.com) | "Just 3 minutes. Developed by doctors." — accessible, credentialed, unhurried. |
496
+
497
+ **Forbidden register.** Alarmist phrasing about symptoms ("危険です", scare language), absolute diagnostic claims ("あなたは〜です"), shaming the user for their question, hype ("revolutionary", "AIが完全に診断"), and bare vague labels. Medical credibility comes from calm precision, never from urgency.
498
+
499
+ ## 11. Brand Narrative
500
+
501
+ Ubie (Ubie株式会社 / Ubie, inc.) was founded in **2017** by **Dr. Kota Abe (阿部吉倫)**, a practicing physician, and **Yoshinori Kuno (久野遼平)**, an engineer — the doctor-plus-engineer pairing that the entire brand encodes. The founding problem was the gap between a worried person with symptoms and the right medical care: patients don't know which department to visit, and doctors drown in repetitive intake. Ubie builds AI to bridge that gap from both sides — a consumer **symptom-checker** ("ユビー", at ubie.life / ubiehealth.com) that helps people understand symptoms and find appropriate care in about three minutes, and **clinical software** that reduces documentation load for medical staff.
502
+
503
+ The company rebranded around the mission **"愛あるテクノロジーで医療と人をつなぐ"** — "connecting medicine and people with loving technology" — and the design phrase **"あたたかさと賢さで寄り添う"** (accompanying people with warmth and wisdom). Those two words, warmth (あたたかさ) and wisdom (賢さ), are the literal axes of the visual system: green and blue, human and machine, the front and back of the heart logo. The logo encodes **36°C** — human body temperature — as a quiet signal that the product is on the patient's side, not above them.
504
+
505
+ What Ubie refuses: the cold institutional blue-gray of legacy hospital IT, the alarmism of symptom-Googling, and the false confidence of an app that pretends to diagnose. It is not a doctor-replacement; it is a guide that lowers anxiety and routes people to real care. The design must therefore be simultaneously *credible* (doctors built it, 50,000+ clinical sources, dozens of medical experts) and *gentle* (a Shiba mascot, soft warm near-black text, 170% line-height, never red unless something is truly wrong).
506
+
507
+ Ubie open-sourced its design system, **Ubie Vitals**, publishing tokens, components, accessibility guidance, and UX writing — an unusually transparent move for a healthcare company, consistent with the brand's belief that good, accessible medical UX is a public good.
508
+
509
+ ## 12. Principles
510
+
511
+ 1. **Warmth and wisdom, together.** Every surface balances the green (human, care) and blue (trust, intelligence) axes. Neither alone is the brand; the pairing is.
512
+ 2. **Calm is a feature.** For an anxious user, density and urgency are harm. Space, 170% line-height, soft shadows, and one-decision-per-screen are clinical-grade calm, not decoration.
513
+ 3. **Honest, never alarmist.** The product states possibilities and next steps; it never diagnoses, never frightens, never shames a question. Red is reserved for genuine errors.
514
+ 4. **Accessibility is the baseline.** UD Shin Go, published WCAG-minded tokens, and a discouraged `disabled` state are commitments to "reach all users," not nice-to-haves.
515
+ 5. **Blue is interaction, green is health.** `#3959cc` appears where you can tap; `#27cc91` appears where something is well, succeeded, or progressing. Roles never swap.
516
+ 6. **One decision per screen.** The symptom flow never stacks choices. Progressive disclosure keeps load minimal and the path clear.
517
+ 7. **Borders before shadows.** Separation comes from a 1px `#dcdddd` line and white space first; soft shadow is reserved for floating or interactive surfaces.
518
+ 8. **Words do the caring.** Labels describe actions, errors are blameless and recoverable, disclaimers empower rather than scare. UX writing is a first-class token category.
519
+
520
+ ## 13. Personas
521
+
522
+ *Personas below are fictional archetypes informed by publicly described Ubie user segments (worried consumers seeking care, and clinicians using Ubie's hospital software), not individual people.*
523
+
524
+ **さくら (Sakura), 34, Yokohama.** Office worker and mother of a toddler. Opens Ubie at night when her child has a fever and she can't tell whether the ER is warranted. Wants two things: to not feel stupid for asking, and to know whether to go now or wait until morning. The Shiba mascot and the unhurried, plain-Japanese questions are what keep her from panic-Googling. If the app ever sounded alarmist or used scary red text, she would close it and lie awake instead. Reads Japanese; the 170% line-height and large UD Shin Go text matter at 2am on a small screen.
525
+
526
+ **田中先生 (Dr. Tanaka), 48, regional hospital, Nagano.** Internal medicine physician seeing 40+ patients a day. Uses Ubie's clinical intake software because it pre-collects structured symptom data before the patient sits down, cutting his documentation time. He has zero patience for cute — for him the design must be fast, legible, and dense enough to scan, but he appreciates that it never overclaims AI certainty. Trusts the product partly because he knows a physician co-founded it. Would abandon any tool that produced a confident wrong "diagnosis."
527
+
528
+ **Marcus Bell, 29, London.** Uses ubiehealth.com (English) after weeks of an unexplained symptom and an over-full GP schedule. Skeptical of "AI doctor" apps. Convinced by "Developed by doctors," the cited clinical sources, and the calm refusal to diagnose — it tells him *possibilities* and *which specialist to see*, which is exactly the help he needed. Bounces instantly off any health app that feels like an ad or a hype pitch.
529
+
530
+ **みなみ (Minami), 23, Osaka.** University student, high accessibility needs (low vision). Ubie is one of the few health tools she can actually read without zooming — UD Shin Go, the contrast of `#32353a` on white, and generous spacing were built with her in mind. She is the user the open-source Vitals accessibility work exists to serve, and the reason the `disabled`-button discouragement matters: she relies on clear, perceivable affordances.
531
+
532
+ ## 14. States
533
+
534
+ | State | Treatment |
535
+ |---|---|
536
+ | **Empty (no history)** | Single calm line in Text Sub (`#686a6d`) 14px explaining the screen, plus one accent/primary CTA to begin. Often the Shiba mascot. Never "データがありません" alone. |
537
+ | **Loading (first paint)** | Skeleton blocks at `#f6f6f6` (black200) matching final layout, gentle 1.2s shimmer. Reassuring micro-copy for AI processing ("結果をまとめています…"). |
538
+ | **Loading (in button)** | `loading` prop shows a spinner replacing the label; width preserved; blocks double-submit. Preferred over `disabled`. |
539
+ | **Error (inline field)** | 1px `#e32e55` (red600) border on the input, one specific corrective sentence below in `#a1213c` (red800) 12px. Blameless and actionable. |
540
+ | **Error (banner)** | `#fceff2` (red100) bg, 4px left border `#e32e55`, `#32353a` text, one sentence + recovery action. No scare language. |
541
+ | **Success (positive result)** | Green tint: `#e9faf4` (green100) surface, `#1c9167` (green800) text/icon, `#27cc91` accent. Reassurance gets room and warmth — never crowded. |
542
+ | **Success (action saved)** | Brief toast or inline confirmation, `#27cc91` check, past-tense sentence. No exclamation, no emoji on medical surfaces. |
543
+ | **Warning (attention needed)** | `#fff9f0` (orange100) bg, 4px `#ffa11a` left border, `#b57212` (orange800) text. Calm "consider seeing a doctor" framing — not alarm. |
544
+ | **Skeleton** | `#f6f6f6` blocks at final dimensions, radius per component (4/8/12px), 8% white shimmer over ~1.2s. |
545
+ | **Disabled (discouraged)** | Avoided. When unavoidable: surface `#f6f6f6`, text `#96989a`, border `#dcdddd`. Prefer `loading` or hiding the action entirely. |
546
+ | **Focus** | 2px ring `rgba(57,89,204,0.3)` + border `#3959cc`. Always visible for keyboard users — accessibility is non-negotiable. |
547
+
548
+ ## 15. Motion & Easing
549
+
550
+ **Durations:**
551
+
552
+ | Token | Value | Use |
553
+ |---|---|---|
554
+ | `motion-instant` | 0ms | Toggle flips, checkbox state, focus rings |
555
+ | `motion-fast` | 150ms | Hover, focus, small reveals, button press |
556
+ | `motion-standard` | 250ms | Default — card expand, sheet open, tab switch |
557
+ | `motion-slow` | 350ms | Step advance in the symptom flow, result reveal |
558
+ | `motion-page` | 300ms | Top-level route transitions |
559
+
560
+ **Easings:**
561
+
562
+ | Token | Curve | Use |
563
+ |---|---|---|
564
+ | `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Things appearing — sheets, results, toasts |
565
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Things leaving — dismissals |
566
+ | `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1)` | Two-way transitions — collapsibles, tabs |
567
+ | `ease-gentle` | `cubic-bezier(0.33, 0.0, 0.2, 1)` | Reassurance moments — soft, slightly slower settle |
568
+
569
+ **Signature motions.**
570
+
571
+ 1. **Question advance.** Moving between symptom-flow steps uses a gentle horizontal slide + fade (`motion-slow / ease-gentle`). The motion is unhurried on purpose — speed would feel like pressure on an anxious user.
572
+ 2. **Result reveal.** A positive/safe result fades and rises 8px into a green-tinted card (`motion-slow / ease-enter`). Reassurance arrives calmly, never with a celebratory bounce — overshoot would feel flippant about health.
573
+ 3. **Reassurance / Shiba.** Mascot moments use soft, small-amplitude motion (a slight breathing scale, ≤2%) — warmth without distraction. Never on error screens.
574
+ 4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, all `motion-*` tokens collapse to `motion-instant`; slides become instant cross-states. The flow stays fully usable — accessibility outranks delight, always.
575
+
576
+ <!--
577
+ OmD v0.1 Sources
578
+
579
+ Direct verification (WebFetch, 2026-06-06):
580
+ - vitals.ubie.life/tokens/color/primitive — full 10-step primitive scales
581
+ (blue/green/pink/orange/purple/red/black + white). Hex values transcribed.
582
+ - vitals.ubie.life/tokens/color/semantic — text/background/border semantic tokens
583
+ (Text Main #32353a, Text Link #3959cc, bg.green.inverse #27cc91, etc.).
584
+ - vitals.ubie.life/tokens/typography — UD Shin Go Pr6N (M/DB), semantic groups
585
+ (Body/Heading/Note/Button/Tag), line-heights 170/150/140%.
586
+ - vitals.ubie.life/tokens/radius — xs2/sm4/md8/lg12/full, size-based selection rule.
587
+ - vitals.ubie.life/tokens/spacing — xxs4/xs8/sm12/md16/lg24/xl40/xxl64.
588
+ - vitals.ubie.life/components/button — variants (primary/accent/secondary/alert/
589
+ text/textAlert/Auth*), sizes, loading-over-disabled guidance, ~15-char labels.
590
+ - github.com/ubie-oss/design-tokens (raw JSON) — primitive hex cross-confirmed
591
+ identical to the Vitals docs.
592
+ - ubiehealth.com — English brand surface; tagline "Just 3 minutes. Developed by
593
+ doctors"; Shiba mascot.
594
+
595
+ Tier 2 (brand/philosophy):
596
+ - speakerdeck.com/ubie/ubie-brand-guideline — concept "あたたかさと賢さで寄り添う",
597
+ heart motif (front=warmth, back=technology), JP font + Open Sans fallback.
598
+ - note.com/ubie rebranding article — mission "愛あるテクノロジーで医療と人をつなぐ".
599
+ - X/@rhatake_jp — logo encodes 36°C body temperature.
600
+
601
+ Primary color decision: primary_color = #3959cc (Ubie Blue 600), the documented
602
+ interactive/link color (Text Link, bg.blue.inverse, primary button). Ubie Green
603
+ #27cc91 (green600) is the co-anchor health/accent color, documented as
604
+ bg.green.inverse and the accent-button fill.
605
+
606
+ Derived (not in docs, reconstructed from tokens + size rules, flagged in §4):
607
+ exact button/input/card padding, heights, and shadow rgba values. Built from the
608
+ radius (md8/lg12), spacing (sm12/md16/lg24), and typography tokens plus the
609
+ component-size radius rule; shadows use warm black1000 (#16191f) per the warm-text
610
+ palette. No hex was invented — all colors trace to verified Vitals/JSON tokens.
611
+
612
+ Personas (§13) are fictional archetypes informed by publicly described Ubie user
613
+ segments (worried consumers; clinicians using Ubie hospital software). Names are
614
+ illustrative.
615
+ -->