oh-my-design-cli 1.6.7 → 1.7.1

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 (229) hide show
  1. package/README.ko.md +17 -36
  2. package/README.md +6 -6
  3. package/agents/AGENT.md +3 -3
  4. package/agents/omd-master.md +7 -7
  5. package/agents/omd-microcopy.md +1 -1
  6. package/agents/omd-ux-researcher.md +1 -1
  7. package/data/reference-fingerprints.json +1318 -10
  8. package/package.json +1 -1
  9. package/web/references/11st/DESIGN.md +400 -0
  10. package/web/references/17live/DESIGN.md +43 -0
  11. package/web/references/29cm/DESIGN.md +41 -0
  12. package/web/references/91app/DESIGN.md +31 -0
  13. package/web/references/ably/DESIGN.md +54 -0
  14. package/web/references/airbnb/DESIGN.md +58 -0
  15. package/web/references/airtable/DESIGN.md +39 -0
  16. package/web/references/alipay/DESIGN.md +50 -0
  17. package/web/references/amazingtalker/DESIGN.md +434 -0
  18. package/web/references/appier/DESIGN.md +45 -0
  19. package/web/references/apple/DESIGN.md +47 -0
  20. package/web/references/baemin/DESIGN.md +142 -43
  21. package/web/references/banksalad/DESIGN.md +67 -0
  22. package/web/references/bilibili/DESIGN.md +45 -0
  23. package/web/references/bithumb/DESIGN.md +38 -0
  24. package/web/references/bmw/DESIGN.md +37 -0
  25. package/web/references/brandi/DESIGN.md +414 -0
  26. package/web/references/bunjang/DESIGN.md +47 -0
  27. package/web/references/cakeresume/DESIGN.md +29 -0
  28. package/web/references/cal/DESIGN.md +52 -0
  29. package/web/references/catchtable/DESIGN.md +79 -19
  30. package/web/references/cathay/DESIGN.md +432 -0
  31. package/web/references/channeltalk/DESIGN.md +48 -0
  32. package/web/references/class101/DESIGN.md +51 -0
  33. package/web/references/classting/DESIGN.md +41 -0
  34. package/web/references/classum/DESIGN.md +43 -0
  35. package/web/references/claude/DESIGN.md +157 -70
  36. package/web/references/clay/DESIGN.md +56 -0
  37. package/web/references/clickhouse/DESIGN.md +50 -0
  38. package/web/references/cloudflare/DESIGN.md +637 -0
  39. package/web/references/cohere/DESIGN.md +48 -0
  40. package/web/references/coinbase/DESIGN.md +139 -5
  41. package/web/references/coinone/DESIGN.md +39 -0
  42. package/web/references/composio/DESIGN.md +46 -0
  43. package/web/references/cookpad/DESIGN.md +37 -0
  44. package/web/references/coupang/DESIGN.md +57 -2
  45. package/web/references/cursor/DESIGN.md +44 -0
  46. package/web/references/dabang/DESIGN.md +57 -19
  47. package/web/references/dcard/DESIGN.md +57 -0
  48. package/web/references/dell/DESIGN.md +636 -0
  49. package/web/references/devsisters/DESIGN.md +29 -0
  50. package/web/references/discord/DESIGN.md +604 -0
  51. package/web/references/dji/DESIGN.md +39 -0
  52. package/web/references/drnow/DESIGN.md +52 -0
  53. package/web/references/duolingo/DESIGN.md +563 -0
  54. package/web/references/elevenlabs/DESIGN.md +39 -0
  55. package/web/references/expo/DESIGN.md +39 -0
  56. package/web/references/fastcampus/DESIGN.md +50 -0
  57. package/web/references/ferrari/DESIGN.md +47 -0
  58. package/web/references/figma/DESIGN.md +44 -0
  59. package/web/references/finda/DESIGN.md +413 -0
  60. package/web/references/flex/DESIGN.md +28 -0
  61. package/web/references/flo/DESIGN.md +43 -0
  62. package/web/references/framer/DESIGN.md +38 -0
  63. package/web/references/freee/DESIGN.md +48 -0
  64. package/web/references/fugle/DESIGN.md +41 -1
  65. package/web/references/gangnamunni/DESIGN.md +57 -1
  66. package/web/references/genie/DESIGN.md +415 -0
  67. package/web/references/github/DESIGN.md +727 -0
  68. package/web/references/gmarket/DESIGN.md +51 -0
  69. package/web/references/gogolook/DESIGN.md +25 -1
  70. package/web/references/gogoro/DESIGN.md +38 -0
  71. package/web/references/grip/DESIGN.md +39 -0
  72. package/web/references/hahow/DESIGN.md +26 -0
  73. package/web/references/hashicorp/DESIGN.md +42 -0
  74. package/web/references/hogangnono/DESIGN.md +41 -0
  75. package/web/references/hp/DESIGN.md +563 -0
  76. package/web/references/hyperconnect/DESIGN.md +393 -0
  77. package/web/references/hyundaicard/DESIGN.md +24 -0
  78. package/web/references/ibm/DESIGN.md +44 -0
  79. package/web/references/ichef/DESIGN.md +44 -0
  80. package/web/references/ikala/DESIGN.md +400 -0
  81. package/web/references/inflearn/DESIGN.md +38 -0
  82. package/web/references/intercom/DESIGN.md +38 -0
  83. package/web/references/jandi/DESIGN.md +382 -0
  84. package/web/references/jkopay/DESIGN.md +35 -1
  85. package/web/references/jobkorea/DESIGN.md +39 -0
  86. package/web/references/jumpit/DESIGN.md +37 -0
  87. package/web/references/kakao/DESIGN.md +64 -0
  88. package/web/references/kakaobank/DESIGN.md +55 -1
  89. package/web/references/kakaopay/DESIGN.md +59 -0
  90. package/web/references/kakaot/DESIGN.md +53 -0
  91. package/web/references/karrot/DESIGN.md +49 -0
  92. package/web/references/kbank/DESIGN.md +39 -0
  93. package/web/references/kdan/DESIGN.md +34 -1
  94. package/web/references/kintone/DESIGN.md +586 -0
  95. package/web/references/kkbox/DESIGN.md +22 -0
  96. package/web/references/kkday/DESIGN.md +47 -0
  97. package/web/references/kmong/DESIGN.md +427 -0
  98. package/web/references/krafton/DESIGN.md +37 -0
  99. package/web/references/kraken/DESIGN.md +44 -0
  100. package/web/references/krds/DESIGN.md +63 -0
  101. package/web/references/kream/DESIGN.md +32 -0
  102. package/web/references/kurly/DESIGN.md +38 -1
  103. package/web/references/laftel/DESIGN.md +40 -0
  104. package/web/references/lamborghini/DESIGN.md +54 -0
  105. package/web/references/layerx/DESIGN.md +615 -0
  106. package/web/references/lezhin/DESIGN.md +47 -0
  107. package/web/references/line/DESIGN.md +36 -0
  108. package/web/references/linear.app/DESIGN.md +182 -88
  109. package/web/references/loom/DESIGN.md +396 -0
  110. package/web/references/lovable/DESIGN.md +38 -0
  111. package/web/references/lunit/DESIGN.md +47 -19
  112. package/web/references/mastercard/DESIGN.md +587 -0
  113. package/web/references/meituan/DESIGN.md +42 -0
  114. package/web/references/melon/DESIGN.md +26 -0
  115. package/web/references/mercari/DESIGN.md +41 -0
  116. package/web/references/mercury/DESIGN.md +589 -0
  117. package/web/references/meta/DESIGN.md +615 -0
  118. package/web/references/millie/DESIGN.md +51 -0
  119. package/web/references/minimax/DESIGN.md +53 -0
  120. package/web/references/mintlify/DESIGN.md +45 -0
  121. package/web/references/miro/DESIGN.md +47 -0
  122. package/web/references/mistral.ai/DESIGN.md +37 -0
  123. package/web/references/momoshop/DESIGN.md +43 -0
  124. package/web/references/money-forward/DESIGN.md +42 -0
  125. package/web/references/mongodb/DESIGN.md +44 -0
  126. package/web/references/muji/DESIGN.md +605 -0
  127. package/web/references/musinsa/DESIGN.md +48 -0
  128. package/web/references/mustit/DESIGN.md +47 -1
  129. package/web/references/myrealtrip/DESIGN.md +49 -0
  130. package/web/references/naver/DESIGN.md +50 -1
  131. package/web/references/naverwebtoon/DESIGN.md +48 -0
  132. package/web/references/netflix/DESIGN.md +572 -0
  133. package/web/references/nexon/DESIGN.md +389 -0
  134. package/web/references/nhncloud/DESIGN.md +33 -0
  135. package/web/references/nike/DESIGN.md +588 -0
  136. package/web/references/note/DESIGN.md +28 -0
  137. package/web/references/notion/DESIGN.md +48 -0
  138. package/web/references/nvidia/DESIGN.md +50 -0
  139. package/web/references/ohouse/DESIGN.md +56 -0
  140. package/web/references/oliveyoung/DESIGN.md +47 -1
  141. package/web/references/ollama/DESIGN.md +40 -0
  142. package/web/references/openai/DESIGN.md +641 -0
  143. package/web/references/opencode.ai/DESIGN.md +37 -0
  144. package/web/references/payco/DESIGN.md +40 -0
  145. package/web/references/paypay/DESIGN.md +656 -0
  146. package/web/references/pchome/DESIGN.md +439 -0
  147. package/web/references/perplexity/DESIGN.md +546 -0
  148. package/web/references/piccollage/DESIGN.md +43 -0
  149. package/web/references/pinkoi/DESIGN.md +55 -0
  150. package/web/references/pinterest/DESIGN.md +44 -0
  151. package/web/references/pixiv/DESIGN.md +613 -0
  152. package/web/references/pixnet/DESIGN.md +430 -0
  153. package/web/references/posthog/DESIGN.md +50 -0
  154. package/web/references/publy/DESIGN.md +52 -0
  155. package/web/references/qanda/DESIGN.md +49 -1
  156. package/web/references/ragic/DESIGN.md +444 -0
  157. package/web/references/ramp/DESIGN.md +634 -0
  158. package/web/references/rayark/DESIGN.md +22 -0
  159. package/web/references/raycast/DESIGN.md +45 -0
  160. package/web/references/remember/DESIGN.md +44 -0
  161. package/web/references/renault/DESIGN.md +42 -0
  162. package/web/references/replicate/DESIGN.md +39 -0
  163. package/web/references/resend/DESIGN.md +44 -0
  164. package/web/references/retool/DESIGN.md +645 -0
  165. package/web/references/revolut/DESIGN.md +46 -0
  166. package/web/references/richart/DESIGN.md +465 -0
  167. package/web/references/ridi/DESIGN.md +47 -0
  168. package/web/references/riiid/DESIGN.md +32 -0
  169. package/web/references/robinhood/DESIGN.md +604 -0
  170. package/web/references/runwayml/DESIGN.md +45 -0
  171. package/web/references/sanity/DESIGN.md +50 -0
  172. package/web/references/sansan/DESIGN.md +631 -0
  173. package/web/references/sendbird/DESIGN.md +46 -0
  174. package/web/references/sentry/DESIGN.md +48 -0
  175. package/web/references/shinhancard/DESIGN.md +421 -0
  176. package/web/references/shopline/DESIGN.md +431 -0
  177. package/web/references/slack/DESIGN.md +635 -0
  178. package/web/references/smarthr/DESIGN.md +48 -0
  179. package/web/references/smartnews/DESIGN.md +29 -0
  180. package/web/references/socar/DESIGN.md +35 -0
  181. package/web/references/soomgo/DESIGN.md +326 -0
  182. package/web/references/spacex/DESIGN.md +27 -0
  183. package/web/references/spoon/DESIGN.md +46 -0
  184. package/web/references/spotify/DESIGN.md +49 -0
  185. package/web/references/starbucks/DESIGN.md +597 -0
  186. package/web/references/stripe/DESIGN.md +46 -0
  187. package/web/references/studio/DESIGN.md +602 -0
  188. package/web/references/supabase/DESIGN.md +41 -0
  189. package/web/references/superhuman/DESIGN.md +39 -0
  190. package/web/references/surveycake/DESIGN.md +442 -0
  191. package/web/references/tada/DESIGN.md +51 -0
  192. package/web/references/tesla/DESIGN.md +36 -0
  193. package/web/references/theverge/DESIGN.md +500 -0
  194. package/web/references/together.ai/DESIGN.md +33 -0
  195. package/web/references/toss/DESIGN.md +43 -0
  196. package/web/references/toss-securities/DESIGN.md +54 -19
  197. package/web/references/tossbank/DESIGN.md +57 -0
  198. package/web/references/trenbe/DESIGN.md +41 -0
  199. package/web/references/triple/DESIGN.md +47 -0
  200. package/web/references/tumblbug/DESIGN.md +48 -0
  201. package/web/references/tving/DESIGN.md +40 -0
  202. package/web/references/uber/DESIGN.md +36 -0
  203. package/web/references/ubie/DESIGN.md +615 -0
  204. package/web/references/uniqlo/DESIGN.md +575 -0
  205. package/web/references/upbit/DESIGN.md +42 -0
  206. package/web/references/upstage/DESIGN.md +38 -0
  207. package/web/references/velog/DESIGN.md +28 -0
  208. package/web/references/vercel/DESIGN.md +44 -0
  209. package/web/references/voicetube/DESIGN.md +39 -0
  210. package/web/references/voltagent/DESIGN.md +44 -0
  211. package/web/references/wadiz/DESIGN.md +71 -19
  212. package/web/references/wanted/DESIGN.md +46 -0
  213. package/web/references/warp/DESIGN.md +37 -0
  214. package/web/references/watcha/DESIGN.md +40 -0
  215. package/web/references/wavve/DESIGN.md +43 -1
  216. package/web/references/wconcept/DESIGN.md +45 -0
  217. package/web/references/webflow/DESIGN.md +49 -0
  218. package/web/references/wired/DESIGN.md +572 -0
  219. package/web/references/wise/DESIGN.md +41 -0
  220. package/web/references/x.ai/DESIGN.md +31 -0
  221. package/web/references/xiaohongshu/DESIGN.md +39 -0
  222. package/web/references/yanolja/DESIGN.md +45 -0
  223. package/web/references/yeogiotte/DESIGN.md +42 -1
  224. package/web/references/yogiyo/DESIGN.md +50 -0
  225. package/web/references/yourator/DESIGN.md +453 -0
  226. package/web/references/zapier/DESIGN.md +41 -0
  227. package/web/references/zigbang/DESIGN.md +33 -0
  228. package/web/references/zigzag/DESIGN.md +62 -0
  229. package/web/references/zozotown/DESIGN.md +578 -0
@@ -10,6 +10,52 @@ logo:
10
10
  slug: revolut
11
11
  verified: "2026-05-15"
12
12
  omd: "0.1"
13
+ tokens:
14
+ source: prose-derived
15
+ extracted: "2026-06-09"
16
+ colors:
17
+ dark: "#191c1f"
18
+ white: "#ffffff"
19
+ light-surface: "#f4f4f4"
20
+ black: "#000000"
21
+ blue: "#494fdf"
22
+ action-blue: "#4f55f1"
23
+ blue-text: "#376cd5"
24
+ danger: "#e23b4a"
25
+ deep-pink: "#e61e49"
26
+ warning: "#ec7e00"
27
+ yellow: "#b09000"
28
+ teal: "#00a87e"
29
+ light-green: "#428619"
30
+ green-text: "#006400"
31
+ light-blue: "#007bc2"
32
+ brown: "#936d62"
33
+ red-text: "#8b0000"
34
+ mid-slate: "#505a63"
35
+ cool-gray: "#8d969e"
36
+ gray-tone: "#c9c9cd"
37
+ typography:
38
+ family: { sans: "Inter", mono: "Inter" }
39
+ display-mega: { size: 136, weight: 500, lineHeight: 1.00, tracking: -2.72, use: "Stadium-scale hero (Aeonik Pro)" }
40
+ display-hero: { size: 80, weight: 500, lineHeight: 1.00, tracking: -0.8, use: "Primary hero (Aeonik Pro)" }
41
+ section: { size: 48, weight: 500, lineHeight: 1.21, tracking: -0.48, use: "Feature sections (Aeonik Pro)" }
42
+ card-title: { size: 32, weight: 500, lineHeight: 1.19, tracking: -0.32, use: "Card headings (Aeonik Pro)" }
43
+ nav: { size: 20, weight: 500, lineHeight: 1.40, use: "Navigation, buttons (Aeonik Pro)" }
44
+ body-lg: { size: 18, weight: 400, lineHeight: 1.56, tracking: -0.09, use: "Introductions (Inter)" }
45
+ body: { size: 16, weight: 400, lineHeight: 1.50, tracking: 0.24, use: "Standard reading (Inter)" }
46
+ body-semibold: { size: 16, weight: 600, lineHeight: 1.50, tracking: 0.16, use: "Emphasized body (Inter)" }
47
+ spacing: { xs: 4, sm: 8, md: 14, base: 16, lg: 24, xl: 32, xxl: 48, section: 80 }
48
+ rounded: { sm: 12, md: 20, lg: 20, full: 9999 }
49
+ shadow:
50
+ none: "none"
51
+ components:
52
+ button-primary: { type: button, bg: "#191c1f", fg: "#ffffff", radius: 9999, padding: "14px 32px", use: "Primary dark pill, hover opacity 0.85" }
53
+ button-secondary: { type: button, bg: "#f4f4f4", fg: "#000000", radius: 9999, padding: "14px 34px", use: "Secondary light pill" }
54
+ button-outlined: { type: button, bg: "transparent", fg: "#191c1f", radius: 9999, padding: "14px 32px", use: "Outlined pill, 2px solid #191c1f border" }
55
+ button-ghost: { type: button, bg: "rgba(244,244,244,0.1)", fg: "#f4f4f4", radius: 9999, padding: "14px 32px", use: "Ghost on dark, 2px solid #f4f4f4 border" }
56
+ card: { type: card, radius: 20, use: "Feature card, flat, no shadow, dark/light alternation" }
57
+ nav-top: { type: tab, fg: "#191c1f", font: "20/500", use: "Clean header, pill CTAs right-aligned" }
58
+ components_harvested: true
13
59
  ---
14
60
 
15
61
  # Design System Inspiration of Revolut
@@ -0,0 +1,465 @@
1
+ ---
2
+ id: richart
3
+ name: Richart
4
+ country: TW
5
+ category: fintech
6
+ homepage: "https://www.richart.tw"
7
+ primary_color: "#17b6c9"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=richart.com.tw&sz=128"
11
+ verified: "2026-06-08"
12
+ added: "2026-06-08"
13
+ omd: "0.1"
14
+ tokens:
15
+ source: live-extract
16
+ extracted: "2026-06-08"
17
+ note: "primary = live Richart teal #17b6c9 (.btn-primary fill); hero accent cyan #2be0ec; tagline '最能幫年輕人存到錢的銀行' (the bank that best helps young people save). www.richart.tw bot-blocks (403 FORBIDDEN); tokens extracted from apex richart.tw HTML + v3 index.css / headerfooter.css served live."
18
+ colors:
19
+ primary: "#17b6c9"
20
+ primary-hover: "#15a6b7"
21
+ primary-soft: "#64cedb"
22
+ accent-cyan: "#2be0ec"
23
+ accent-bright: "#30dde8"
24
+ accent-lime: "#dafa5f"
25
+ canvas: "#fdfdfd"
26
+ surface: "#f3f5f6"
27
+ surface-alt: "#edf0f2"
28
+ heading: "#2a3342"
29
+ ink: "#1b2028"
30
+ label: "#364053"
31
+ body: "#727d8c"
32
+ muted: "#b6bec7"
33
+ on-primary: "#fdfdfd"
34
+ hairline: "#dce0e5"
35
+ border-soft: "#c7cdd4"
36
+ teal-deep: "#001617"
37
+ warn: "#cb904c"
38
+ error: "#e75365"
39
+ typography:
40
+ family: { sans: "Noto Sans TC", display: "Montserrat" }
41
+ display-hero: { size: 60, weight: 700, lineHeight: 1.4, tracking: -2, use: "Hero headlines, big friendly statements" }
42
+ display-lg: { size: 48, weight: 700, lineHeight: 1.25, tracking: 0, use: "Section hero headlines" }
43
+ section: { size: 34, weight: 700, lineHeight: 1.3, use: "Feature section titles" }
44
+ subsection: { size: 24, weight: 500, lineHeight: 1.4, use: "Sub-section heads, card titles" }
45
+ title: { size: 18, weight: 500, lineHeight: 1.55, use: "Block titles with teal accent bar" }
46
+ body-lg: { size: 18, weight: 400, lineHeight: 1.67, use: "Lead paragraphs, intro copy" }
47
+ body: { size: 16, weight: 400, lineHeight: 1.5, use: "Standard reading text" }
48
+ button: { size: 20, weight: 500, lineHeight: 1.6, use: "Primary pill button label" }
49
+ label: { size: 14, weight: 500, lineHeight: 1.43, use: "Nav links, small labels" }
50
+ caption: { size: 12, weight: 400, lineHeight: 1.5, use: "Fine print, legal, metadata" }
51
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
52
+ rounded: { sm: 4, md: 8, lg: 16, pill: 32, full: 9999 }
53
+ shadow:
54
+ ambient: "0px 4px 12px rgba(72, 85, 108, 0.24)"
55
+ standard: "2px 2px 36px 0px rgba(54, 64, 83, 0.2)"
56
+ neumorphic: "0px 10px 44px rgba(102, 102, 102, 0.12), inset -3px -3px 10px rgba(84, 92, 101, 0.16), inset -5px -3px 12px rgba(193, 203, 221, 0.16)"
57
+ elevated: "0px 24px 60px rgba(9, 9, 10, 0.2), inset 1px 1px 8px rgba(182, 190, 199, 0.08), inset -2px -2px 10px rgba(54, 64, 83, 0.1)"
58
+ components:
59
+ button-primary: { type: button, bg: "#17b6c9", fg: "#fdfdfd", radius: 9999, font: "20/500", use: "Primary CTA pill, hover #15a6b7" }
60
+ button-primary-xl: { type: button, fg: "#fdfdfd", radius: 9999, padding: "16px 0", use: "Hero action, radial gradient #64cedb to #15a6b7, 240px wide" }
61
+ button-secondary: { type: button, bg: "transparent", fg: "#17b6c9", radius: 9999, use: "Secondary action, 2px #17b6c9 border, hover fills teal" }
62
+ card: { type: card, bg: "#fdfdfd", radius: 16, use: "Feature card, neumorphic inset shadow" }
63
+ badge-teal: { type: badge, bg: "#ecf9fa", fg: "#17b6c9", radius: 9999, use: "Teal-themed tag" }
64
+ badge-neutral: { type: badge, bg: "#f3f5f6", fg: "#727d8c", radius: 16, use: "Neutral tag" }
65
+ input: { type: input, bg: "#fdfdfd", fg: "#1b2028", radius: 8, use: "Form input, 1px #c7cdd4 border, #17b6c9 focus, #e75365 error" }
66
+ title-bar: { type: badge, bg: "#17b6c9", use: "4px x 24px vertical accent bar before block title" }
67
+ badge-disabled: { type: badge, bg: "#727d8c", fg: "rgba(253,253,253,0.5)", radius: 9999, use: "Disabled button state" }
68
+ components_harvested: true
69
+ ---
70
+
71
+ # Design System Inspiration of Richart
72
+
73
+ ## 1. Visual Theme & Atmosphere
74
+
75
+ Richart -- the digital-banking brand of Taiwan's Taishin International Bank (台新銀行) -- presents itself as the friendliest, most playful face of consumer finance on the Taiwanese web. Its self-declared promise, baked into the page `<title>`, is *"最能幫年輕人存到錢的銀行"* (the bank that best helps young people save). Everything about the surface serves that youth-targeted, save-with-a-smile mission: a near-white `#fdfdfd` canvas kept deliberately bright and airy, a single vivid teal (`#17b6c9`) doing nearly all of the interactive and brand work, and an illustration-led layout where rounded, characterful graphics carry as much narrative weight as the copy. Where Stripe reads as an engineer's instrument and a traditional bank reads as a marble lobby, Richart reads as a clean, optimistic mobile app that happens to have a marketing website.
76
+
77
+ The teal is the whole personality. `#17b6c9` is a bright, slightly green-leaning cyan-teal -- it looks like clear water, like a fresh start, like the "blue ocean" of saving money rather than the institutional navy of legacy banking. It anchors every primary call to action, the small vertical accent bars that introduce section titles, link hovers, and active states. A brighter sibling cyan (`#2be0ec`) and a soft tint (`#64cedb`) extend the family into hero gradients and decorative flourishes, and an unexpected electric lime (`#dafa5f`) appears as a youthful pop accent. The result is a palette that feels distinctly young, distinctly digital, and distinctly un-bank-like -- exactly the point for a product whose entire reason to exist is to make banking feel approachable to people in their twenties.
78
+
79
+ The geometry reinforces the friendliness. Primary buttons are full 100px pills, not Stripe's austere 4px corners; cards round at 16px; bottom sheets round at 24px. Nothing on the surface has a hard, aggressive edge. The typographic backbone is `Noto Sans TC` -- the open, humanist, exhaustively-glyphed Traditional-Chinese workhorse that renders Taiwanese copy cleanly at every weight -- paired with `Montserrat` for Latin display moments. Depth comes not from flat drop-shadows but from soft, neumorphic inset-and-outset shadow stacks (`0px 10px 44px rgba(102,102,102,0.12)` with inset highlights) that make surfaces feel like smooth, tactile pebbles. The overall atmosphere is bright, rounded, tactile, and warm -- a fintech that wants you to feel safe, not impressed.
80
+
81
+ **Key Characteristics:**
82
+ - A single dominant brand teal (`#17b6c9`) carrying CTAs, accents, links, and active states -- minimal color budget, maximal recognizability
83
+ - Bright near-white canvas (`#fdfdfd`) with cool gray surfaces (`#f3f5f6`) -- airy and optimistic, never heavy
84
+ - Full pill buttons (100px radius) and large 16px-24px card rounding -- soft, app-like, anti-institutional
85
+ - `Noto Sans TC` as the humanist Traditional-Chinese workhorse, `Montserrat` for Latin display
86
+ - Neumorphic inset+outset soft shadows (`rgba(102,102,102,0.12)` + inset highlights) -- tactile, pebble-like depth
87
+ - Hero cyan accent (`#2be0ec`) and electric lime (`#dafa5f`) as youthful pops against the calm teal base
88
+ - Slate-not-black text (`#2a3342` headings, `#727d8c` body) -- soft, never harsh
89
+ - Illustration-led storytelling over dense data -- a consumer app voice, not a developer console
90
+
91
+ ## 2. Color Palette & Roles
92
+
93
+ ### Primary
94
+ - **Richart Teal** (`#17b6c9`): The core brand color. Primary CTA fill, link hovers, active states, the 4px accent bar before section titles, secondary-button text and border. A bright, water-fresh cyan-teal that defines the brand.
95
+ - **Teal Hover** (`#15a6b7`): Darker teal for `.btn-primary:hover` and `:active` states.
96
+ - **Teal Soft** (`#64cedb`): Light teal used as the bright stop in the XL button radial gradient and decorative tints.
97
+ - **Canvas White** (`#fdfdfd`): Page background and button text on teal. An off-pure white that keeps the surface soft.
98
+
99
+ ### Accent
100
+ - **Accent Cyan** (`#2be0ec`): Bright hero cyan for gradient flourishes and decorative highlights -- the energetic edge of the teal family.
101
+ - **Accent Bright** (`#30dde8`): A second vivid cyan for gradient mids and illustration accents.
102
+ - **Accent Lime** (`#dafa5f`): Electric chartreuse pop -- a youthful, unexpected highlight used sparingly for emphasis moments.
103
+
104
+ ### Surfaces
105
+ - **Surface** (`#f3f5f6`): Cool light-gray section backgrounds and card fills.
106
+ - **Surface Alt** (`#edf0f2`): Slightly deeper gray for the bottom stop of subtle vertical surface gradients.
107
+ - **Ecofresh** (`#ecf9fa`): Pale teal-tinted surface for teal-themed cards and highlight panels.
108
+
109
+ ### Text / Neutral Scale
110
+ - **Heading** (`#2a3342`): Primary heading slate -- a dark blue-gray, never pure black, that keeps headlines soft.
111
+ - **Ink** (`#1b2028`): Darkest text, near-black with a cool undertone, for maximum-contrast labels.
112
+ - **Label** (`#364053`): Secondary headings, strong labels, emphasized body.
113
+ - **Body** (`#727d8c`): Standard body copy, descriptions, secondary text.
114
+ - **Muted** (`#b6bec7`): Disabled text, captions, the faintest readable gray.
115
+
116
+ ### Borders & Lines
117
+ - **Hairline** (`#dce0e5`): Standard divider and card-border gray.
118
+ - **Border Soft** (`#c7cdd4`): Slightly stronger border for inputs and grouped controls.
119
+
120
+ ### Deep & Status
121
+ - **Teal Deep** (`#001617`): Near-black dark teal used for immersive dark moments and high-contrast type over light surfaces.
122
+ - **Warn** (`#cb904c`): Amber for caution and notice states.
123
+ - **Error** (`#e75365`): Coral-red for validation errors and destructive actions.
124
+
125
+ ## 3. Typography Rules
126
+
127
+ ### Font Family
128
+ - **Primary**: `'Noto Sans TC'` -- the humanist Traditional-Chinese sans that renders every Taiwanese glyph cleanly across weights. Used for ~95% of all text.
129
+ - **Display / Latin**: `'Montserrat'`, falling back to `'Noto Sans TC'` -- geometric Latin display face for English headlines, the "Richart" wordmark context, and number-forward moments.
130
+ - **Stack**: `'Noto Sans TC', sans-serif` with `font-display: swap` for resilient web-font loading.
131
+
132
+ ### Hierarchy
133
+
134
+ | Role | Font | Size | Weight | Line Height | Notes |
135
+ |------|------|------|--------|-------------|-------|
136
+ | Display Hero | Noto Sans TC / Montserrat | 60px | 700 | ~1.4 | Hero headline, biggest statement |
137
+ | Display Large | Noto Sans TC | 48px | 700 | 1.25 | Section hero headlines |
138
+ | Heading XL | Noto Sans TC | 40px | 700 | 1.3 | Large feature titles |
139
+ | Section | Noto Sans TC | 34px | 700 | 1.3 | Standard feature section titles |
140
+ | Heading | Noto Sans TC | 28px | 700 | 1.4 | Sub-feature heads |
141
+ | Subsection | Noto Sans TC | 24px | 500 | 1.4 | Card titles, sub-section heads |
142
+ | Lead | Noto Sans TC | 20px | 500 | 1.6 | Emphasized lead-in, button text |
143
+ | Title (accent-bar) | Noto Sans TC | 18px | 500 | 1.55 | Block titles paired with teal bar |
144
+ | Body Large | Noto Sans TC | 18px | 400 | 1.67 | Intro paragraphs |
145
+ | Body | Noto Sans TC | 16px | 400 | 1.5 | Standard reading text |
146
+ | Label | Noto Sans TC | 14px | 500 | 1.43 | Nav links, small labels |
147
+ | Caption | Noto Sans TC | 12px | 400 | 1.5 | Fine print, legal, metadata |
148
+
149
+ ### Principles
150
+ - **One family, full coverage**: `Noto Sans TC` does nearly everything. The discipline of a single humanist family keeps the Traditional-Chinese typography even and warm across the whole page; `Montserrat` enters only for Latin display flavor.
151
+ - **Two working weights**: 400 (body) and 500 (labels, buttons, sub-heads), with 700 reserved for headlines. There is no ultra-light affectation here -- this is friendly, legible, mid-weight type, the opposite of Stripe's whisper-weight 300.
152
+ - **Generous line-height for CJK**: Body text runs at `line-height: 1.5`, lead copy at `1.67`. Traditional-Chinese characters are dense; the loose leading keeps long passages breathable.
153
+ - **Slate, not black**: Headlines are `#2a3342`, body is `#727d8c`. Nothing uses `#000000` -- the softness is deliberate and on-brand.
154
+ - **Accent-bar titles**: A signature device -- a 4px-wide, 24px-tall teal (`#17b6c9`) vertical bar sits before block titles, a tiny structural flourish that brands every section head.
155
+
156
+ ## 4. Component Stylings
157
+
158
+ ### Buttons
159
+
160
+ **Primary (pill)**
161
+ - Background: `#17b6c9`
162
+ - Text: `#fdfdfd`
163
+ - Radius: 100px (full pill)
164
+ - Font: Noto Sans TC, weight 500
165
+ - Hover / active: `#15a6b7` background
166
+ - Disabled: `#727d8c` background, `rgba(253,253,253,0.5)` text, 38px radius
167
+ - Use: Primary CTA -- "立即申辦" (apply now), "了解更多" (learn more)
168
+
169
+ **Primary XL (gradient)**
170
+ - Background: `radial-gradient(100% 256.33% at 0% 7.41%, #64cedb 0%, #15a6b7 100%)`
171
+ - Text: `#fdfdfd`
172
+ - Size: 240px wide, 16px vertical padding, 20px / line-height 32px
173
+ - Radius: 100px pill
174
+ - Hover: solid `#15a6b7` overlay fades in
175
+ - Use: Hero / headline primary action
176
+
177
+ **Secondary (outline pill)**
178
+ - Background: transparent
179
+ - Text: `#17b6c9`
180
+ - Border: `2px solid #17b6c9`
181
+ - Radius: 100px pill
182
+ - Hover: fills `#17b6c9`, text flips to `#fdfdfd`
183
+ - Use: Secondary actions alongside a primary
184
+
185
+ ### Cards & Containers
186
+ - Background: `#fdfdfd` or `#f3f5f6`
187
+ - Radius: 16px (standard), 8px (compact), 24px (bottom sheets / hero panels)
188
+ - Shadow (soft): `0px 4px 12px rgba(72, 85, 108, 0.24)`
189
+ - Shadow (neumorphic): `0px 10px 44px rgba(102, 102, 102, 0.12), inset -3px -3px 10px rgba(84, 92, 101, 0.16), inset -5px -3px 12px rgba(193, 203, 221, 0.16)`
190
+ - Subtle surface gradients: `linear-gradient(180deg, #fdfdfd 0%, #eaeef0 100%)`
191
+
192
+ ### Title Block (signature)
193
+ - A `4px × 24px` `#17b6c9` vertical bar (`.title .line`), then title text at 18px / weight 500 / `#2a3342`
194
+ - 8px gap between bar and text; the bar is the brand's miniature section-flag
195
+
196
+ ### Badges / Tags
197
+ - Teal-themed: `#ecf9fa` background with `#17b6c9` text
198
+ - Neutral: `#f3f5f6` background with `#727d8c` text
199
+ - Radius: pill or 16px
200
+
201
+ ### Inputs & Forms
202
+ - Border: `1px solid #c7cdd4`
203
+ - Radius: 8px-16px
204
+ - Focus: `#17b6c9` border / ring
205
+ - Label: `#364053`, 14px weight 500
206
+ - Text: `#1b2028`
207
+ - Placeholder: `#b6bec7`
208
+ - Error: `#e75365` border + helper text
209
+
210
+ ### Navigation
211
+ - Light header on `#fdfdfd`, "Richart" wordmark left
212
+ - Links: Noto Sans TC 14px weight 500, `#364053`, hover `#17b6c9`
213
+ - Primary teal pill CTA right-aligned
214
+ - Mobile: hamburger toggle, bottom-sheet menus rounded at 24px
215
+
216
+ ---
217
+
218
+ **Verified:** 2026-06-08 (omd-add-reference -- Tier 1 live CSS extract)
219
+ **Tier 1 sources:** https://www.richart.tw, https://www.taishinbank.com.tw (canonical homepage; bot-blocks 403 FORBIDDEN on direct fetch) reconciled with apex richart.tw live HTML + `/TSDIB_RichartWeb/static/revamp/css/v3/index.css` + `headerfooter.css` served live -- tokens `#17b6c9`, `Noto Sans TC`, 100px pill buttons, neumorphic shadows extracted directly from production CSS.
220
+ **Method note:** `www.richart.tw` returns 403 to automation; the apex `richart.tw` (same Taishin/Richart property, identical brand chrome) serves the full HTML and v3 stylesheets, from which all token values were measured verbatim.
221
+ **`.verification.md`:** `web/references/richart/.verification.md`
222
+
223
+ ## 5. Layout Principles
224
+
225
+ ### Spacing System
226
+ - Base unit: 8px
227
+ - Scale: 4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px
228
+ - Comfortable, even rhythm -- the spacing is generous and predictable, matching the friendly app voice rather than dense data layout
229
+
230
+ ### Grid & Container
231
+ - Centered single-column hero with large illustration, teal pill CTA below the headline
232
+ - Feature sections alternate text-left / illustration-right blocks
233
+ - 2-3 column card grids for product features
234
+ - Full-bleed soft-gradient section bands (`#f3f5f6` → `#edf0f2`) to segment the page
235
+
236
+ ### Whitespace Philosophy
237
+ - **Airy and optimistic**: Lots of breathing room around illustrations and headlines. The page never feels cramped -- whitespace signals calm and trust, important for a savings product.
238
+ - **Illustration as anchor**: Each section is built around a characterful illustration; copy is secondary and concise. The whitespace exists to let the illustrations breathe.
239
+ - **Soft banding**: Alternating near-white and cool-gray surface bands create gentle rhythm without hard dividers.
240
+
241
+ ### Border Radius Scale
242
+ - Compact (4px-8px): inputs, small chips
243
+ - Standard (16px): cards, panels
244
+ - Large (24px): bottom sheets, hero panels (often `24px 24px 0 0` for sheets)
245
+ - Pill (32px / 100px): buttons, tags, toggles -- the dominant rounding gesture
246
+ - Circle (50%): avatars, icon buttons
247
+
248
+ ## 6. Depth & Elevation
249
+
250
+ | Level | Treatment | Use |
251
+ |-------|-----------|-----|
252
+ | Flat (Level 0) | No shadow | Page background, inline text |
253
+ | Soft (Level 1) | `0px 4px 12px rgba(72, 85, 108, 0.24)` | Buttons at rest, small cards |
254
+ | Neumorphic (Level 2) | `0px 10px 44px rgba(102, 102, 102, 0.12), inset -3px -3px 10px rgba(84, 92, 101, 0.16), inset -5px -3px 12px rgba(193, 203, 221, 0.16)` | Feature cards, pebble surfaces |
255
+ | Standard (Level 3) | `2px 2px 36px 0px rgba(54, 64, 83, 0.2)` | Floating panels, hover lift |
256
+ | Elevated (Level 4) | `0px 24px 60px rgba(9, 9, 10, 0.2), inset 1px 1px 8px rgba(182, 190, 199, 0.08), inset -2px -2px 10px rgba(54, 64, 83, 0.1)` | Modals, bottom sheets |
257
+
258
+ **Shadow Philosophy**: Richart's depth is soft and tactile rather than crisp. Its signature is the *neumorphic* shadow stack -- an outer ambient blur (`rgba(102,102,102,0.12)`) combined with multiple inset highlight/shadow layers that make surfaces look like smooth, rounded pebbles you could pick up. The shadow colors are warm-gray slate (`rgba(54,64,83,...)`, `rgba(84,92,101,...)`) tied to the text palette, not stark black. This tactile softness is the visual analogue of the brand promise: banking that feels gentle and physical, not cold and digital.
259
+
260
+ ## 7. Do's and Don'ts
261
+
262
+ ### Do
263
+ - Use `#17b6c9` Richart teal as the single dominant brand color for CTAs, links, and accents
264
+ - Make primary buttons full pills (100px radius) -- the rounded geometry is the brand
265
+ - Use the 4px-wide teal accent bar before section titles -- it's the signature section flag
266
+ - Use `Noto Sans TC` at weights 400/500/700 with generous line-height (1.5+) for Traditional-Chinese copy
267
+ - Keep the canvas bright (`#fdfdfd`) and surfaces cool-gray (`#f3f5f6`) -- airy and optimistic
268
+ - Use neumorphic inset+outset soft shadows for cards -- tactile, pebble-like depth
269
+ - Use slate text (`#2a3342` headings, `#727d8c` body), never pure black
270
+ - Lead with friendly illustrations; keep copy concise and youth-facing
271
+
272
+ ### Don't
273
+ - Don't introduce a competing brand color -- the teal owns the system; lime/cyan are pops only
274
+ - Don't use sharp 4px corners on buttons -- Richart is pill-shaped and soft
275
+ - Don't use cold black drop-shadows -- depth is warm-gray and neumorphic
276
+ - Don't use heavy institutional navy or marble-bank aesthetics -- this is a youth app
277
+ - Don't crowd the layout -- whitespace and illustration breathing room are essential
278
+ - Don't set Traditional-Chinese body at tight line-height -- CJK density needs 1.5+
279
+ - Don't use pure `#000000` for text -- always the slate scale
280
+ - Don't make the tone formal or stiff -- the voice is warm, encouraging, peer-to-peer
281
+
282
+ ## 8. Responsive Behavior
283
+
284
+ ### Breakpoints
285
+ | Name | Width | Key Changes |
286
+ |------|-------|-------------|
287
+ | Mobile | <768px | Single column, stacked cards, bottom-sheet menus, reduced hero size |
288
+ | Tablet | 768-1024px | 2-column grids, moderate padding |
289
+ | Desktop | 1024-1280px | Full text+illustration alternating layout |
290
+ | Large | >1280px | Centered content with generous side margins |
291
+
292
+ ### Touch Targets
293
+ - Pill buttons are large and finger-friendly (16px vertical padding, 240px wide for XL)
294
+ - Nav collapses to hamburger; menus open as 24px-rounded bottom sheets
295
+ - Mobile-first: Richart is fundamentally an app brand, so the mobile surface is primary
296
+
297
+ ### Collapsing Strategy
298
+ - Hero: 60px headline → ~34-40px on mobile, illustration stacks above copy
299
+ - Text+illustration alternating rows → single stacked column on mobile
300
+ - Feature card grids: 3-col → 2-col → 1-col
301
+ - Section spacing: 64px → ~40px on mobile
302
+ - Bottom sheets (24px top radius) replace dropdowns on mobile
303
+
304
+ ### Image Behavior
305
+ - Illustrations scale fluidly and remain the anchor of each section
306
+ - Neumorphic card shadows persist at all sizes
307
+ - Hero cyan gradient simplifies on small screens
308
+
309
+ ## 9. Agent Prompt Guide
310
+
311
+ ### Quick Color Reference
312
+ - Primary CTA / brand: Richart Teal (`#17b6c9`)
313
+ - CTA Hover: Teal Hover (`#15a6b7`)
314
+ - Background: Canvas White (`#fdfdfd`)
315
+ - Surface: Cool Gray (`#f3f5f6`)
316
+ - Heading text: Slate (`#2a3342`)
317
+ - Body text: Gray-slate (`#727d8c`)
318
+ - Label text: Dark slate (`#364053`)
319
+ - Border: Hairline (`#dce0e5`)
320
+ - Accent pop: Cyan (`#2be0ec`), Lime (`#dafa5f`)
321
+ - Error: Coral (`#e75365`)
322
+
323
+ ### Example Component Prompts
324
+ - "Create a hero on `#fdfdfd` background. Headline 48px Noto Sans TC weight 700, color `#2a3342`. Subtitle 18px weight 400, line-height 1.67, `#727d8c`. Primary pill CTA: `#17b6c9` background, `#fdfdfd` text, 100px radius, 20px weight 500, 16px vertical padding. Large friendly illustration to the right."
325
+ - "Design a feature card: `#fdfdfd` background, 16px radius, neumorphic shadow `0px 10px 44px rgba(102,102,102,0.12), inset -3px -3px 10px rgba(84,92,101,0.16), inset -5px -3px 12px rgba(193,203,221,0.16)`. Title 24px Noto Sans TC weight 500 `#2a3342`, body 16px weight 400 `#727d8c` line-height 1.5."
326
+ - "Build a section title: a 4px × 24px `#17b6c9` vertical bar, then title text 18px Noto Sans TC weight 500 `#2a3342`, 8px gap."
327
+ - "Create a secondary button: transparent background, `#17b6c9` text, 2px solid `#17b6c9` border, 100px pill radius. Hover fills `#17b6c9`, text becomes `#fdfdfd`."
328
+ - "Design a navigation header: `#fdfdfd` bar, 'Richart' wordmark left, links 14px Noto Sans TC weight 500 `#364053` hover `#17b6c9`, teal pill CTA right-aligned."
329
+
330
+ ### Iteration Guide
331
+ 1. Teal `#17b6c9` is the single brand color -- resist adding competing hues
332
+ 2. Buttons are always full pills (100px) -- never sharp corners
333
+ 3. Use the 4px teal accent bar to flag section titles
334
+ 4. `Noto Sans TC` weights 400/500/700, line-height 1.5+ for CJK breathing room
335
+ 5. Slate text scale (`#2a3342` / `#364053` / `#727d8c`), never black
336
+ 6. Neumorphic soft shadows for cards; warm-gray, never black
337
+ 7. Keep it airy -- whitespace and illustration are core
338
+ 8. Lime (`#dafa5f`) and cyan (`#2be0ec`) are pops only, used sparingly
339
+
340
+ ---
341
+
342
+ ## 10. Voice & Tone
343
+
344
+ Richart's voice is warm, encouraging, and peer-to-peer -- a slightly-older friend who is good with money and genuinely wants you to save some. The tagline *"最能幫年輕人存到錢的銀行"* (the bank that best helps young people save) sets the register: it is about *you* (the young person) and a concrete, achievable benefit (saving money), not about the institution's prestige. Copy is concise, friendly, and action-oriented, written in casual Traditional Chinese that avoids the stiff formality of legacy Taiwanese banking. Where a traditional bank says "尊榮理財" (prestige wealth management), Richart says, in effect, "let's help you save".
345
+
346
+ | Context | Tone |
347
+ |---|---|
348
+ | Hero headlines | Warm, benefit-first, you-focused. Concrete promises, not prestige claims. |
349
+ | Feature copy | Concise, one idea per block, paired with an illustration that does half the explaining. |
350
+ | CTAs | Friendly imperatives -- "立即申辦" (apply now), "了解更多" (learn more). |
351
+ | Onboarding | Encouraging and reassuring, hand-holding without condescension. |
352
+ | Savings nudges | Gamified, positive reinforcement -- celebrates progress, never shames. |
353
+ | Legal / disclosure | Necessarily formal regulatory Chinese, visually de-emphasized in muted gray. |
354
+ | Errors | Plain, calm, solution-oriented -- never alarming. |
355
+
356
+ **Forbidden register.** Stiff institutional formality, prestige-banking vocabulary ("尊榮", "菁英"), fear-based or shaming money language, dense jargon. Richart never talks down to its young audience and never tries to sound like an old bank.
357
+
358
+ ## 11. Brand Narrative
359
+
360
+ Richart is the digital-banking brand launched by **Taishin International Bank (台新銀行)**, one of Taiwan's major private commercial banks, as its dedicated answer to a generation of young Taiwanese who grew up on smartphones and apps rather than bank branches. Where the parent bank carries the full apparatus of traditional retail banking, Richart was conceived as a clean, mobile-first, deposit-and-save product with a deliberately youthful identity -- its own name, its own teal, its own illustrated world, distinct from the corporate Taishin chrome.
361
+
362
+ The strategic bet is explicit in the brand's own promise: be *"最能幫年輕人存到錢的銀行"* -- the bank that best helps young people save. That reframes the bank's relationship with its customer. Instead of selling prestige or loans, Richart sells a habit (saving) and a feeling (it's easy, it's friendly, you can do it). The teal, the pills, the illustrations, and the neumorphic softness all serve that reframe: this is finance that feels like a well-designed consumer app, because for a digitally-native young user, that is the only kind of finance that feels trustworthy.
363
+
364
+ What Richart refuses: the marble-lobby gravitas of legacy banking, the cold institutional navy palette, dense form-heavy interfaces, and any tone that makes a 24-year-old feel like they're being lectured. What it embraces: a single friendly brand color, rounded pill geometry, illustration-led storytelling, encouraging copy, and the visual language of a delightful mobile app.
365
+
366
+ ## 12. Principles
367
+
368
+ 1. **One color, total recognition.** The teal `#17b6c9` does almost all the brand work. A disciplined, near-monochrome accent strategy makes Richart instantly recognizable and prevents the visual noise that erodes trust in a money product.
369
+ 2. **Soft over sharp.** Pills, 16px cards, neumorphic shadows. Every edge is rounded because rounded reads as approachable, and approachable is the entire premise.
370
+ 3. **Illustration carries meaning.** Characterful graphics are not decoration; they are the primary explanatory device. Copy supports the picture, not the other way around.
371
+ 4. **Save, don't sell.** The product's job is to build a saving habit. Design choices reinforce encouragement and progress, never pressure or prestige.
372
+ 5. **App-first, web-second.** Richart is fundamentally a mobile app brand; the website inherits the app's softness, rounding, and bottom-sheet patterns rather than imposing a desktop-bank aesthetic.
373
+ 6. **Warm neutrals, never black.** Slate text and warm-gray shadows keep even the functional layers gentle.
374
+ 7. **Breathing room as trust.** Airy whitespace signals calm and confidence -- important reassurance for someone handing a bank their savings.
375
+
376
+ ## 13. Personas
377
+
378
+ *Personas below are fictional archetypes informed by Richart's publicly stated target segment (young, digitally-native Taiwanese savers), not individual people.*
379
+
380
+ **陳怡君 (Chen Yi-Jun), 25, Taipei.** Just started her first full-time job. Has never set foot in a Taishin branch and never will -- she opened her Richart account entirely on her phone during a lunch break. She uses the auto-save feature to skim a little off every paycheck and feels a small hit of satisfaction every time the app celebrates her progress. She picked Richart over the bank her parents use because "it actually feels like it was made for people my age."
381
+
382
+ **林承恩 (Lin Cheng-En), 22, Taichung.** University senior with a part-time income. Money is tight, so a savings product that shames him or buries him in jargon would lose him instantly. Richart's encouraging, gamified nudges keep him saving NT$500 a week without it feeling like a chore. He'd churn the moment the tone turned preachy.
383
+
384
+ **黃詩涵 (Huang Shih-Han), 29, Kaohsiung.** Freelance designer with irregular income. She values that the interface is clean and the illustrations are charming -- as a designer she notices, and the polish signals competence. She keeps an emergency fund in Richart specifically because the smooth, app-like experience makes checking her balance feel calm rather than stressful.
385
+
386
+ ## 14. States
387
+
388
+ | State | Treatment |
389
+ |---|---|
390
+ | **Empty (no savings goal yet)** | Friendly illustration + one encouraging line in `#2a3342` 18px Noto Sans TC. One teal pill CTA: "建立目標" (set a goal). Inviting, never an error. |
391
+ | **Loading** | Soft skeleton blocks in `#f3f5f6` at final dimensions, gentle shimmer. Calm, never jarring. |
392
+ | **Error (form validation)** | Field-level. `#e75365` coral border + helper text below, plain calm language describing how to fix it. |
393
+ | **Error (network)** | Quiet inline banner, muted gray, with a single retry pill. Never alarming red full-screen. |
394
+ | **Success (goal reached / saved)** | Celebratory -- teal accents, positive illustration, encouraging copy. Gamified reward for the saving habit. |
395
+ | **Disabled** | `#727d8c` fill, `rgba(253,253,253,0.5)` text, 38px radius -- faded but still clearly a button. |
396
+ | **Active / selected** | `#17b6c9` fill or `#15a6b7` for pressed; teal accent bar or underline marks the active item. |
397
+
398
+ ## 15. Motion & Easing
399
+
400
+ **Durations** (extracted from live CSS):
401
+
402
+ | Token | Value | Use |
403
+ |---|---|---|
404
+ | `motion-fast` | 150ms | Quick hovers, small state flips |
405
+ | `motion-standard` | 300ms | Buttons, links, card hovers, most transitions |
406
+ | `motion-slow` | 500ms | Background/color fills, larger reveals |
407
+
408
+ **Easings** (extracted from live CSS):
409
+
410
+ | Token | Curve | Use |
411
+ |---|---|---|
412
+ | `ease-out` | `ease-out` | The default everywhere -- arriving softly |
413
+ | `ease-emphatic` | `cubic-bezier(0.77, 0.2, 0.05, 1)` | Expressive reveals, sheet transitions |
414
+ | `ease-glide` | `cubic-bezier(0, 1, 0.5, 1)` | Smooth decelerating slides |
415
+
416
+ **Signature motions.**
417
+ 1. **Button fill.** Primary buttons transition `background 0.5s` from `#17b6c9` to `#15a6b7` on hover -- a slow, smooth color fill that feels gentle rather than snappy.
418
+ 2. **Secondary fill.** Outline buttons fill from transparent to teal over 0.5s, text flipping to white -- a satisfying, watery wash.
419
+ 3. **Soft arrivals.** `transition: all 0.3s ease-out` is the page-wide default; elements settle in softly, matching the rounded, calm aesthetic.
420
+ 4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, transitions collapse to instant; the product stays fully usable with no loss of function.
421
+
422
+ ## 16. Do's and Don'ts
423
+
424
+ ### Do
425
+ - Anchor everything on Richart teal `#17b6c9`; keep the color budget tight
426
+ - Use full pill buttons and 16px+ card rounding -- softness is the brand
427
+ - Reach for neumorphic warm-gray shadows for tactile depth
428
+ - Write warm, encouraging, you-focused Traditional-Chinese copy
429
+ - Lead with friendly illustrations and keep the layout airy
430
+ - Use the 4px teal accent bar as the section-title signature
431
+ - Celebrate saving progress; gamify positively
432
+
433
+ ### Don't
434
+ - Don't add a second strong brand color or use cold institutional navy
435
+ - Don't use sharp corners, black shadows, or dense form-heavy layouts
436
+ - Don't write stiff, prestige-banking, or shaming money copy
437
+ - Don't crowd the page -- whitespace is part of the trust signal
438
+ - Don't use pure black text -- always the slate scale
439
+ - Don't tighten CJK line-height below ~1.5
440
+ - Don't make errors alarming -- keep them calm and solution-first
441
+
442
+ <!--
443
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
444
+
445
+ Token-level claims (§1–9) extracted via live CSS on 2026-06-08:
446
+ - richart.tw served HTML + /TSDIB_RichartWeb/static/revamp/css/v3/index.css and
447
+ headerfooter.css (www.richart.tw returns 403 FORBIDDEN to automation).
448
+ - Brand teal #17b6c9 (.btn-primary fill), hover #15a6b7, soft #64cedb confirmed
449
+ verbatim in .btn-primary / .btn-secondary / .btn-primary-xl rules.
450
+ - font-family 'Noto Sans TC' (55 occurrences) primary, 'Montserrat' Latin display.
451
+ - 100px pill radius on buttons; 16px/24px card rounding; neumorphic box-shadow stacks
452
+ (0px 10px 44px rgba(102,102,102,0.12) + inset highlights) measured verbatim.
453
+ - Title accent bar: .title .line { width:4px; height:24px; background-color:#17B6C9 }.
454
+ - Tagline "最能幫年輕人存到錢的銀行" from the live <title> tag.
455
+
456
+ Brand narrative (§11): Richart is the digital-banking brand of Taishin International
457
+ Bank (台新銀行), Taiwan. Youth-targeted, save-focused positioning is taken directly
458
+ from the brand's own stated promise in the page title and homepage marketing.
459
+
460
+ Personas (§13) are fictional archetypes informed by Richart's publicly stated target
461
+ segment (young, digitally-native Taiwanese savers). Names are illustrative.
462
+
463
+ Interpretive claims (neumorphic-as-tactile-trust, one-color discipline, save-don't-sell)
464
+ are editorial readings connecting the live design tokens to the brand's stated mission.
465
+ -->
@@ -10,6 +10,53 @@ logo:
10
10
  slug: "https://www.google.com/s2/favicons?domain=ridibooks.com&sz=128"
11
11
  verified: "2026-05-15"
12
12
  omd: "0.1"
13
+ tokens:
14
+ source: prose-derived
15
+ extracted: "2026-06-09"
16
+ colors:
17
+ charcoal: "#3d3d3d"
18
+ ink: "#222222"
19
+ white: "#ffffff"
20
+ blue: "#1f8ce6"
21
+ fg-secondary: "#5d5d5d"
22
+ fg-tertiary: "#9d9d9d"
23
+ fg-disabled: "#b5b5b5"
24
+ subtle: "#f9f9f9"
25
+ stroke: "#d0d0d0"
26
+ critical: "#f4361e"
27
+ positive: "#03aa5a"
28
+ highlight-cream: "#fff9ea"
29
+ sepia: "#f4ecd8"
30
+ night: "#1a1a1a"
31
+ reader-night-fg: "#d8d8d8"
32
+ disabled-bg: "#f0f0f0"
33
+ typography:
34
+ family: { sans: "Pretendard Std", mono: "SF Mono" }
35
+ display: { size: 28, weight: 700, lineHeight: 1.29, use: "Section banners, hero" }
36
+ heading-lg: { size: 22, weight: 700, lineHeight: 1.36, use: "Shelf titles" }
37
+ heading: { size: 18, weight: 700, lineHeight: 1.44, use: "Modal titles, expanded BookCard title" }
38
+ title: { size: 16, weight: 600, lineHeight: 1.38, use: "BookCard title, nav active label" }
39
+ body: { size: 16, weight: 400, lineHeight: 1.50, use: "Primary body, button label" }
40
+ body-sm: { size: 14, weight: 400, lineHeight: 1.43, use: "Author, publisher, metadata" }
41
+ caption: { size: 13, weight: 400, lineHeight: 1.38, use: "Ratings, review counts, page counts" }
42
+ caption-sm: { size: 12, weight: 400, lineHeight: 1.33, use: "Timestamps, footer chrome, badge text" }
43
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
44
+ rounded: { sm: 4, md: 8, lg: 12, full: 9999 }
45
+ shadow:
46
+ soft: "0 2px 16px rgba(0,0,0,0.03)"
47
+ standard: "0 4px 16px rgba(0,0,0,0.12), 0 0 1px rgba(0,0,0,0.08)"
48
+ modal: "0 6px 24px rgba(0,0,0,0.12), 0 0 1.5px rgba(0,0,0,0.08)"
49
+ components:
50
+ button-primary: { type: button, bg: "#3d3d3d", fg: "#f9f9f9", radius: 8, padding: "10px 16px", font: "16/400", use: "Brand solid CTA (로그인, 구독하기); pressed #222222, disabled #f0f0f0/#b5b5b5" }
51
+ button-outline: { type: button, bg: "transparent", fg: "#222222", radius: 8, use: "Neutral outline secondary, 1px #d0d0d0 border" }
52
+ sale-tag: { type: badge, bg: "#f4361e", fg: "#ffffff", radius: 4, use: "Inline price discount flag (chip, not CTA)" }
53
+ button-subscription: { type: button, bg: "#1f8ce6", fg: "#ffffff", radius: 8, use: "RIDI Select / Manta CTA" }
54
+ book-card: { type: card, bg: "#ffffff", fg: "#222222", radius: 12, padding: "4px 0", use: "Iconic cover-art tile, 2:3 cover at 4px, two-layer shadow" }
55
+ chip: { type: badge, bg: "#f9f9f9", fg: "#222222", radius: 9999, padding: "0 12px", font: "13/500", use: "Genre filter", active: "#222222 bg, #ffffff text" }
56
+ input: { type: input, bg: "#f9f9f9", fg: "#222222", radius: 8, use: "Form input, 1px #d0d0d0 border, #1f8ce6 focus ring" }
57
+ nav-top: { type: tab, bg: "#ffffff", fg: "#5d5d5d", use: "Top bar, 64px", active: "#222222 weight 700" }
58
+ subscribed-badge: { type: badge, bg: "#03aa5a", fg: "#ffffff", radius: 9999, use: "구독 중 pill on eligible cards" }
59
+ components_harvested: true
13
60
  ---
14
61
 
15
62
  # Design System Inspiration of RIDI (리디)
@@ -10,6 +10,38 @@ logo:
10
10
  slug: "https://www.google.com/s2/favicons?domain=riiid.com&sz=256"
11
11
  verified: "2026-06-03"
12
12
  omd: "0.1"
13
+ tokens:
14
+ source: prose-derived
15
+ extracted: "2026-06-09"
16
+ colors:
17
+ ink: "#14161a"
18
+ canvas: "#fcfcfc"
19
+ card: "#fafafa"
20
+ secondary: "#f1f2f4"
21
+ muted: "#e8eaed"
22
+ muted-fg: "#6c727f"
23
+ border: "#e5e7eb"
24
+ destructive: "#ef4343"
25
+ interactive-blue: "#3b82f6"
26
+ typography:
27
+ family: { sans: "Pretendard", display: "Playfair Display" }
28
+ title: { size: 48, weight: 400, use: "Page titles (Playfair Display), tracking-wide" }
29
+ section: { size: 24, weight: 600, use: "Section headers (Playfair Display)" }
30
+ body-lg: { size: 18, weight: 400, lineHeight: 1.625, use: "Long-form prose (Pretendard)" }
31
+ body: { size: 16, weight: 400, lineHeight: 1.625, use: "Body text (Pretendard)" }
32
+ nav: { size: 14, weight: 500, use: "Nav links, labels (Pretendard)" }
33
+ caption: { size: 12, weight: 400, use: "Captions (Pretendard)" }
34
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
35
+ rounded: { sm: 4, md: 6, lg: 8, full: 9999 }
36
+ shadow:
37
+ none: "none"
38
+ components:
39
+ button-primary: { type: button, bg: "#14161a", fg: "#fafafa", radius: 6, padding: "8px 16px", font: "14/500", use: "Default primary action, 40px height" }
40
+ button-outline: { type: button, bg: "#fcfcfc", fg: "#14161a", radius: 6, padding: "8px 16px", font: "14/500", use: "Secondary action, 1px #e5e7eb border" }
41
+ button-cta: { type: button, bg: "#14161a", fg: "#fafafa", radius: 6, padding: "12px 32px", font: "16/500", use: "Large CTA, 44px height" }
42
+ card: { type: card, bg: "#fafafa", fg: "#14161a", radius: 8, padding: "32px", use: "Surface card, 1px #e5e7eb border" }
43
+ nav-link: { type: tab, fg: "#6c727f", font: "14/500", use: "Navigation link", active: "#14161a text on hover" }
44
+ components_harvested: true
13
45
  ---
14
46
 
15
47
  # Riiid