oh-my-design-cli 1.6.6 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +8 -8
  3. package/data/reference-fingerprints.json +1318 -10
  4. package/dist/bin/oh-my-design.js +1 -1
  5. package/dist/{install-skills-JNH66GOI.js → install-skills-YYHEC4CS.js} +5 -11
  6. package/dist/install-skills-YYHEC4CS.js.map +1 -0
  7. package/package.json +1 -1
  8. package/skills/claude-design/SKILL.md +7 -2
  9. package/web/references/11st/DESIGN.md +400 -0
  10. package/web/references/17live/DESIGN.md +43 -0
  11. package/web/references/29cm/DESIGN.md +41 -0
  12. package/web/references/91app/DESIGN.md +31 -0
  13. package/web/references/ably/DESIGN.md +54 -0
  14. package/web/references/airbnb/DESIGN.md +58 -0
  15. package/web/references/airtable/DESIGN.md +39 -0
  16. package/web/references/alipay/DESIGN.md +50 -0
  17. package/web/references/amazingtalker/DESIGN.md +434 -0
  18. package/web/references/appier/DESIGN.md +45 -0
  19. package/web/references/apple/DESIGN.md +47 -0
  20. package/web/references/baemin/DESIGN.md +142 -43
  21. package/web/references/banksalad/DESIGN.md +67 -0
  22. package/web/references/bilibili/DESIGN.md +45 -0
  23. package/web/references/bithumb/DESIGN.md +38 -0
  24. package/web/references/bmw/DESIGN.md +37 -0
  25. package/web/references/brandi/DESIGN.md +414 -0
  26. package/web/references/bunjang/DESIGN.md +47 -0
  27. package/web/references/cakeresume/DESIGN.md +29 -0
  28. package/web/references/cal/DESIGN.md +52 -0
  29. package/web/references/catchtable/DESIGN.md +79 -19
  30. package/web/references/cathay/DESIGN.md +432 -0
  31. package/web/references/channeltalk/DESIGN.md +48 -0
  32. package/web/references/class101/DESIGN.md +51 -0
  33. package/web/references/classting/DESIGN.md +41 -0
  34. package/web/references/classum/DESIGN.md +43 -0
  35. package/web/references/claude/DESIGN.md +157 -70
  36. package/web/references/clay/DESIGN.md +56 -0
  37. package/web/references/clickhouse/DESIGN.md +50 -0
  38. package/web/references/cloudflare/DESIGN.md +637 -0
  39. package/web/references/cohere/DESIGN.md +48 -0
  40. package/web/references/coinbase/DESIGN.md +139 -5
  41. package/web/references/coinone/DESIGN.md +39 -0
  42. package/web/references/composio/DESIGN.md +46 -0
  43. package/web/references/cookpad/DESIGN.md +37 -0
  44. package/web/references/coupang/DESIGN.md +57 -2
  45. package/web/references/cursor/DESIGN.md +44 -0
  46. package/web/references/dabang/DESIGN.md +57 -19
  47. package/web/references/dcard/DESIGN.md +57 -0
  48. package/web/references/dell/DESIGN.md +636 -0
  49. package/web/references/devsisters/DESIGN.md +29 -0
  50. package/web/references/discord/DESIGN.md +604 -0
  51. package/web/references/dji/DESIGN.md +39 -0
  52. package/web/references/drnow/DESIGN.md +52 -0
  53. package/web/references/duolingo/DESIGN.md +563 -0
  54. package/web/references/elevenlabs/DESIGN.md +39 -0
  55. package/web/references/expo/DESIGN.md +39 -0
  56. package/web/references/fastcampus/DESIGN.md +50 -0
  57. package/web/references/ferrari/DESIGN.md +47 -0
  58. package/web/references/figma/DESIGN.md +44 -0
  59. package/web/references/finda/DESIGN.md +413 -0
  60. package/web/references/flex/DESIGN.md +28 -0
  61. package/web/references/flo/DESIGN.md +43 -0
  62. package/web/references/framer/DESIGN.md +38 -0
  63. package/web/references/freee/DESIGN.md +48 -0
  64. package/web/references/fugle/DESIGN.md +41 -1
  65. package/web/references/gangnamunni/DESIGN.md +57 -1
  66. package/web/references/genie/DESIGN.md +415 -0
  67. package/web/references/github/DESIGN.md +727 -0
  68. package/web/references/gmarket/DESIGN.md +51 -0
  69. package/web/references/gogolook/DESIGN.md +25 -1
  70. package/web/references/gogoro/DESIGN.md +38 -0
  71. package/web/references/grip/DESIGN.md +39 -0
  72. package/web/references/hahow/DESIGN.md +26 -0
  73. package/web/references/hashicorp/DESIGN.md +42 -0
  74. package/web/references/hogangnono/DESIGN.md +41 -0
  75. package/web/references/hp/DESIGN.md +563 -0
  76. package/web/references/hyperconnect/DESIGN.md +393 -0
  77. package/web/references/hyundaicard/DESIGN.md +24 -0
  78. package/web/references/ibm/DESIGN.md +44 -0
  79. package/web/references/ichef/DESIGN.md +44 -0
  80. package/web/references/ikala/DESIGN.md +400 -0
  81. package/web/references/inflearn/DESIGN.md +38 -0
  82. package/web/references/intercom/DESIGN.md +38 -0
  83. package/web/references/jandi/DESIGN.md +382 -0
  84. package/web/references/jkopay/DESIGN.md +35 -1
  85. package/web/references/jobkorea/DESIGN.md +39 -0
  86. package/web/references/jumpit/DESIGN.md +37 -0
  87. package/web/references/kakao/DESIGN.md +64 -0
  88. package/web/references/kakaobank/DESIGN.md +55 -1
  89. package/web/references/kakaopay/DESIGN.md +59 -0
  90. package/web/references/kakaot/DESIGN.md +53 -0
  91. package/web/references/karrot/DESIGN.md +49 -0
  92. package/web/references/kbank/DESIGN.md +39 -0
  93. package/web/references/kdan/DESIGN.md +34 -1
  94. package/web/references/kintone/DESIGN.md +586 -0
  95. package/web/references/kkbox/DESIGN.md +22 -0
  96. package/web/references/kkday/DESIGN.md +47 -0
  97. package/web/references/kmong/DESIGN.md +427 -0
  98. package/web/references/krafton/DESIGN.md +37 -0
  99. package/web/references/kraken/DESIGN.md +44 -0
  100. package/web/references/krds/DESIGN.md +63 -0
  101. package/web/references/kream/DESIGN.md +32 -0
  102. package/web/references/kurly/DESIGN.md +38 -1
  103. package/web/references/laftel/DESIGN.md +40 -0
  104. package/web/references/lamborghini/DESIGN.md +54 -0
  105. package/web/references/layerx/DESIGN.md +615 -0
  106. package/web/references/lezhin/DESIGN.md +47 -0
  107. package/web/references/line/DESIGN.md +36 -0
  108. package/web/references/linear.app/DESIGN.md +182 -88
  109. package/web/references/loom/DESIGN.md +396 -0
  110. package/web/references/lovable/DESIGN.md +38 -0
  111. package/web/references/lunit/DESIGN.md +47 -19
  112. package/web/references/mastercard/DESIGN.md +587 -0
  113. package/web/references/meituan/DESIGN.md +42 -0
  114. package/web/references/melon/DESIGN.md +26 -0
  115. package/web/references/mercari/DESIGN.md +41 -0
  116. package/web/references/mercury/DESIGN.md +589 -0
  117. package/web/references/meta/DESIGN.md +615 -0
  118. package/web/references/millie/DESIGN.md +51 -0
  119. package/web/references/minimax/DESIGN.md +53 -0
  120. package/web/references/mintlify/DESIGN.md +45 -0
  121. package/web/references/miro/DESIGN.md +47 -0
  122. package/web/references/mistral.ai/DESIGN.md +37 -0
  123. package/web/references/momoshop/DESIGN.md +43 -0
  124. package/web/references/money-forward/DESIGN.md +42 -0
  125. package/web/references/mongodb/DESIGN.md +44 -0
  126. package/web/references/muji/DESIGN.md +605 -0
  127. package/web/references/musinsa/DESIGN.md +48 -0
  128. package/web/references/mustit/DESIGN.md +47 -1
  129. package/web/references/myrealtrip/DESIGN.md +49 -0
  130. package/web/references/naver/DESIGN.md +50 -1
  131. package/web/references/naverwebtoon/DESIGN.md +48 -0
  132. package/web/references/netflix/DESIGN.md +572 -0
  133. package/web/references/nexon/DESIGN.md +389 -0
  134. package/web/references/nhncloud/DESIGN.md +33 -0
  135. package/web/references/nike/DESIGN.md +588 -0
  136. package/web/references/note/DESIGN.md +28 -0
  137. package/web/references/notion/DESIGN.md +48 -0
  138. package/web/references/nvidia/DESIGN.md +50 -0
  139. package/web/references/ohouse/DESIGN.md +56 -0
  140. package/web/references/oliveyoung/DESIGN.md +47 -1
  141. package/web/references/ollama/DESIGN.md +40 -0
  142. package/web/references/openai/DESIGN.md +641 -0
  143. package/web/references/opencode.ai/DESIGN.md +37 -0
  144. package/web/references/payco/DESIGN.md +40 -0
  145. package/web/references/paypay/DESIGN.md +656 -0
  146. package/web/references/pchome/DESIGN.md +439 -0
  147. package/web/references/perplexity/DESIGN.md +546 -0
  148. package/web/references/piccollage/DESIGN.md +43 -0
  149. package/web/references/pinkoi/DESIGN.md +55 -0
  150. package/web/references/pinterest/DESIGN.md +44 -0
  151. package/web/references/pixiv/DESIGN.md +613 -0
  152. package/web/references/pixnet/DESIGN.md +430 -0
  153. package/web/references/posthog/DESIGN.md +50 -0
  154. package/web/references/publy/DESIGN.md +52 -0
  155. package/web/references/qanda/DESIGN.md +49 -1
  156. package/web/references/ragic/DESIGN.md +444 -0
  157. package/web/references/ramp/DESIGN.md +634 -0
  158. package/web/references/rayark/DESIGN.md +22 -0
  159. package/web/references/raycast/DESIGN.md +45 -0
  160. package/web/references/remember/DESIGN.md +44 -0
  161. package/web/references/renault/DESIGN.md +42 -0
  162. package/web/references/replicate/DESIGN.md +39 -0
  163. package/web/references/resend/DESIGN.md +44 -0
  164. package/web/references/retool/DESIGN.md +645 -0
  165. package/web/references/revolut/DESIGN.md +46 -0
  166. package/web/references/richart/DESIGN.md +465 -0
  167. package/web/references/ridi/DESIGN.md +47 -0
  168. package/web/references/riiid/DESIGN.md +32 -0
  169. package/web/references/robinhood/DESIGN.md +604 -0
  170. package/web/references/runwayml/DESIGN.md +45 -0
  171. package/web/references/sanity/DESIGN.md +50 -0
  172. package/web/references/sansan/DESIGN.md +631 -0
  173. package/web/references/sendbird/DESIGN.md +46 -0
  174. package/web/references/sentry/DESIGN.md +48 -0
  175. package/web/references/shinhancard/DESIGN.md +421 -0
  176. package/web/references/shopline/DESIGN.md +431 -0
  177. package/web/references/slack/DESIGN.md +635 -0
  178. package/web/references/smarthr/DESIGN.md +48 -0
  179. package/web/references/smartnews/DESIGN.md +29 -0
  180. package/web/references/socar/DESIGN.md +35 -0
  181. package/web/references/soomgo/DESIGN.md +326 -0
  182. package/web/references/spacex/DESIGN.md +27 -0
  183. package/web/references/spoon/DESIGN.md +46 -0
  184. package/web/references/spotify/DESIGN.md +49 -0
  185. package/web/references/starbucks/DESIGN.md +597 -0
  186. package/web/references/stripe/DESIGN.md +46 -0
  187. package/web/references/studio/DESIGN.md +602 -0
  188. package/web/references/supabase/DESIGN.md +41 -0
  189. package/web/references/superhuman/DESIGN.md +39 -0
  190. package/web/references/surveycake/DESIGN.md +442 -0
  191. package/web/references/tada/DESIGN.md +51 -0
  192. package/web/references/tesla/DESIGN.md +36 -0
  193. package/web/references/theverge/DESIGN.md +500 -0
  194. package/web/references/together.ai/DESIGN.md +33 -0
  195. package/web/references/toss/DESIGN.md +43 -0
  196. package/web/references/toss-securities/DESIGN.md +54 -19
  197. package/web/references/tossbank/DESIGN.md +57 -0
  198. package/web/references/trenbe/DESIGN.md +41 -0
  199. package/web/references/triple/DESIGN.md +47 -0
  200. package/web/references/tumblbug/DESIGN.md +48 -0
  201. package/web/references/tving/DESIGN.md +40 -0
  202. package/web/references/uber/DESIGN.md +36 -0
  203. package/web/references/ubie/DESIGN.md +615 -0
  204. package/web/references/uniqlo/DESIGN.md +575 -0
  205. package/web/references/upbit/DESIGN.md +42 -0
  206. package/web/references/upstage/DESIGN.md +38 -0
  207. package/web/references/velog/DESIGN.md +28 -0
  208. package/web/references/vercel/DESIGN.md +44 -0
  209. package/web/references/voicetube/DESIGN.md +39 -0
  210. package/web/references/voltagent/DESIGN.md +44 -0
  211. package/web/references/wadiz/DESIGN.md +71 -19
  212. package/web/references/wanted/DESIGN.md +46 -0
  213. package/web/references/warp/DESIGN.md +37 -0
  214. package/web/references/watcha/DESIGN.md +40 -0
  215. package/web/references/wavve/DESIGN.md +43 -1
  216. package/web/references/wconcept/DESIGN.md +45 -0
  217. package/web/references/webflow/DESIGN.md +49 -0
  218. package/web/references/wired/DESIGN.md +572 -0
  219. package/web/references/wise/DESIGN.md +41 -0
  220. package/web/references/x.ai/DESIGN.md +31 -0
  221. package/web/references/xiaohongshu/DESIGN.md +39 -0
  222. package/web/references/yanolja/DESIGN.md +45 -0
  223. package/web/references/yeogiotte/DESIGN.md +42 -1
  224. package/web/references/yogiyo/DESIGN.md +50 -0
  225. package/web/references/yourator/DESIGN.md +453 -0
  226. package/web/references/zapier/DESIGN.md +41 -0
  227. package/web/references/zigbang/DESIGN.md +33 -0
  228. package/web/references/zigzag/DESIGN.md +62 -0
  229. package/web/references/zozotown/DESIGN.md +578 -0
  230. package/dist/install-skills-JNH66GOI.js.map +0 -1
@@ -15,6 +15,52 @@ ds:
15
15
  url: "https://sendbird.com/docs/chat/uikit/v3/react/overview"
16
16
  type: system
17
17
  description: Sendbird's official chat UIKit — a documented, token-driven conversation-UI system (React, iOS, Android, React Native) with named color sets, message components, and themeable light/dark resources.
18
+ tokens:
19
+ source: prose-derived
20
+ extracted: "2026-06-09"
21
+ colors:
22
+ primary: "#742DDD"
23
+ primary-hover: "#6211C8"
24
+ primary-active: "#491389"
25
+ brand: "#742DDD"
26
+ canvas: "#FFFFFF"
27
+ foreground: "#0D0D0D"
28
+ body: "#424242"
29
+ muted: "#EEEEEE"
30
+ on-primary: "#FFFFFF"
31
+ success: "#259C72"
32
+ error: "#DE360B"
33
+ info: "#ADC9FF"
34
+ surface: "#F2F3F7"
35
+ hairline: "#E3E5EF"
36
+ border-light: "#D1D1D1"
37
+ ink-dark: "#0D0D0D"
38
+ typography:
39
+ family: { sans: "Helvetica Now Text", mono: "system-ui" }
40
+ display-serif: { size: 72, weight: 500, use: "Marketing hero headline (serif)" }
41
+ body-lg: { size: 18, weight: 400, use: "Marketing body text" }
42
+ nav: { size: 16, weight: 500, use: "Marketing nav links" }
43
+ body: { size: 14, weight: 400, use: "UIKit message text and labels" }
44
+ label: { size: 14, weight: 600, use: "UIKit labels, button text" }
45
+ cta: { size: 13, weight: 600, use: "Marketing pill CTA text" }
46
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32 }
47
+ rounded: { sm: 4, md: 8, lg: 24, full: 9999 }
48
+ shadow:
49
+ focus-ring: "0 0 0 1px #742DDD"
50
+ scrim: "rgba(0,0,0,0.55)"
51
+ components_harvested: true
52
+ components:
53
+ button-primary: { type: button, bg: "#742DDD", fg: "#FFFFFF", radius: "4px", height: "40px", padding: "10px 16px", font: "14px / 600", hover: "#6211C8", active: "#491389", use: "UIKit primary action (send, confirm)" }
54
+ button-secondary: { type: button, bg: "transparent", fg: "#742DDD", border: "1px solid #742DDD", radius: "4px", active: "rgba(0,0,0,0.04)", use: "UIKit ghost alternative beside primary" }
55
+ button-danger: { type: button, bg: "#DE360B", fg: "#FFFFFF", radius: "4px", hover: "#BF0711", active: "#9D091E", use: "UIKit destructive action" }
56
+ button-disabled: { type: button, bg: "#E0E0E0", fg: "rgba(0,0,0,0.38)", radius: "4px", disabled: "non-interactive", use: "UIKit blocked action" }
57
+ input: { type: input, bg: "#FFFFFF", fg: "rgba(0,0,0,0.87)", border: "1px solid rgba(0,0,0,0.12)", radius: "4px", padding: "7px 12px", font: "14px / 400", focus: "border #742DDD + 0 0 0 1px #742DDD", use: "UIKit text field" }
58
+ bubble-outgoing: { type: listItem, bg: "#742DDD", fg: "#FFFFFF", use: "Outgoing message bubble, right-aligned, max 400px" }
59
+ bubble-incoming: { type: listItem, bg: "#EEEEEE", fg: "rgba(0,0,0,0.87)", use: "Incoming message bubble, left-aligned, 40px avatar" }
60
+ cta-dark-pill: { type: button, bg: "#0D0D0D", fg: "#FFFFFF", border: "1px solid #0D0D0D", radius: "24px", height: "42px", padding: "12px 10px", font: "13px / 600", use: "Marketing highest-emphasis CTA" }
61
+ cta-outline-pill: { type: button, bg: "#FFFFFF", fg: "#0D0D0D", border: "1px solid #0D0D0D", radius: "24px", height: "42px", padding: "12px 10px", font: "13px / 600", use: "Marketing secondary CTA" }
62
+ chip: { type: badge, bg: "#F2F3F7", fg: "#0D0D0D", border: "1px solid #E3E5EF", radius: "8px", height: "50px", padding: "8px 12px", font: "18px / 400", use: "Marketing neutral selector / utility control" }
63
+ input-newsletter: { type: input, bg: "#FFFFFF", fg: "#424242", border: "1px solid #D1D1D1", radius: "50px", padding: "6px 35px", font: "12.8px / 400", use: "Marketing pill email capture" }
18
64
  ---
19
65
  # Design System Inspiration of Sendbird
20
66
 
@@ -10,6 +10,54 @@ logo:
10
10
  slug: sentry
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
+ primary: "#79628c"
18
+ primary-hover: "#6a5fc1"
19
+ brand: "#362d59"
20
+ canvas: "#1f1633"
21
+ canvas-deep: "#150f23"
22
+ foreground: "#ffffff"
23
+ muted: "#e5e7eb"
24
+ on-primary: "#ffffff"
25
+ accent-lime: "#c2ef4e"
26
+ accent-coral: "#ffb287"
27
+ accent-pink: "#fa7faa"
28
+ accent-violet: "#422082"
29
+ hairline: "#cfcfdb"
30
+ border-dark: "#362d59"
31
+ code-yellow: "#dcdcaa"
32
+ typography:
33
+ family: { sans: "Rubik", mono: "Monaco" }
34
+ display-hero: { size: 88, weight: 700, lineHeight: 1.20, use: "Hero headlines (Dammit Sans), brand voice" }
35
+ display-secondary: { size: 60, weight: 500, lineHeight: 1.10, use: "Secondary hero text (Dammit Sans)" }
36
+ section: { size: 30, weight: 400, lineHeight: 1.20, use: "Major section titles" }
37
+ subheading: { size: 27, weight: 500, lineHeight: 1.25, use: "Feature section headers" }
38
+ card-title: { size: 24, weight: 500, lineHeight: 1.25, use: "Card and block headings" }
39
+ feature-title: { size: 20, weight: 600, lineHeight: 1.25, use: "Emphasized feature names" }
40
+ body: { size: 16, weight: 400, lineHeight: 1.50, use: "Standard body text" }
41
+ nav-label: { size: 15, weight: 500, lineHeight: 1.40, use: "Navigation links" }
42
+ button: { size: 14, weight: 700, lineHeight: 1.20, tracking: 0.2, use: "Uppercase button label" }
43
+ caption: { size: 12, weight: 600, lineHeight: 2.00, use: "Subtle annotations" }
44
+ code: { size: 16, weight: 400, lineHeight: 1.50, use: "Code blocks (Monaco)" }
45
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 40 }
46
+ rounded: { sm: 6, md: 8, lg: 13, full: 9999 }
47
+ shadow:
48
+ surface: "rgba(0,0,0,0.08) 0px 2px 8px"
49
+ elevated: "rgba(0,0,0,0.1) 0px 10px 15px -3px"
50
+ prominent: "rgba(0,0,0,0.18) 0px 0.5rem 1.5rem"
51
+ inset: "rgba(0,0,0,0.1) 0px 1px 3px 0px inset"
52
+ ambient: "rgba(22,15,36,0.9) 0px 4px 4px 9px"
53
+ components_harvested: true
54
+ components:
55
+ button-primary: { type: button, bg: "#79628c", fg: "#ffffff", border: "1px solid #362d59", radius: "13px", font: "14px / 700", shadow: "rgba(0,0,0,0.1) 0px 1px 3px 0px inset", hover: "rgba(0,0,0,0.18) 0px 0.5rem 1.5rem", use: "Primary muted-purple action, uppercase" }
56
+ button-glass: { type: button, bg: "rgba(255,255,255,0.18)", fg: "#ffffff", radius: "12px", padding: "8px", shadow: "rgba(0,0,0,0.08) 0px 2px 8px", hover: "rgba(54,22,107,0.14)", use: "Secondary action on dark surfaces" }
57
+ button-white: { type: button, bg: "#ffffff", fg: "#1f1633", radius: "8px", padding: "12px 16px", hover: "bg #6a5fc1, text #ffffff", focus: "bg #ffb287, outline #6a5fc1", use: "High-visibility CTA on dark" }
58
+ button-violet: { type: button, bg: "#422082", fg: "#ffffff", radius: "8px", padding: "8px 16px", use: "Select / dropdown" }
59
+ input: { type: input, bg: "#ffffff", fg: "#1f1633", border: "1px solid #cfcfdb", radius: "6px", padding: "8px 12px", focus: "rgba(0,0,0,0.15) 0px 2px 10px inset", use: "Text input" }
60
+ card: { type: card, radius: "12px", shadow: "rgba(0,0,0,0.1) 0px 10px 15px -3px", use: "Glass / dark purple surface, backdrop blur(18px)" }
13
61
  ---
14
62
 
15
63
  # Design System Inspiration of Sentry
@@ -0,0 +1,421 @@
1
+ ---
2
+ id: shinhancard
3
+ name: Shinhan Card
4
+ country: KR
5
+ category: fintech
6
+ homepage: "https://www.shinhancard.com"
7
+ primary_color: "#005df9"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=shinhancard.com&sz=128"
11
+ verified: "2026-06-09"
12
+ added: "2026-06-09"
13
+ omd: "0.1"
14
+ tokens:
15
+ source: live-extract
16
+ extracted: "2026-06-09"
17
+ components_harvested: true
18
+ colors:
19
+ primary: "#005df9"
20
+ indigo: "#6268ff"
21
+ canvas: "#ffffff"
22
+ surface: "#f8f9fc"
23
+ surface-blue: "#f0f4fa"
24
+ surface-indigo: "#ebf0ff"
25
+ heading: "#101828"
26
+ slate: "#344054"
27
+ body: "#475467"
28
+ muted: "#667085"
29
+ muted-light: "#818da2"
30
+ border: "#e4e7ec"
31
+ border-strong: "#d0d5dd"
32
+ on-primary: "#ffffff"
33
+ danger: "#f44f4f"
34
+ danger-bg: "#fff6f5"
35
+ typography:
36
+ family: { sans: "Digital One Shinhan" }
37
+ display: { size: 32, weight: 900, lineHeight: 1.20, tracking: -0.64, use: "Hero / main visual headline" }
38
+ h1: { size: 28, weight: 700, lineHeight: 1.30, tracking: -0.28, use: "Page title" }
39
+ section: { size: 21, weight: 700, lineHeight: 1.30, tracking: -0.28, use: "Section heading" }
40
+ body-input: { size: 16, weight: 500, lineHeight: 1.69, tracking: -0.32, use: "Form input, emphasized body" }
41
+ body: { size: 14, weight: 400, lineHeight: 1.71, tracking: -0.28, use: "Standard reading text, nav links" }
42
+ caption: { size: 12, weight: 400, lineHeight: 1.50, use: "Metadata, fine print, timestamps" }
43
+ spacing: { xs: 2, sm: 8, md: 12, base: 16, lg: 20, xl: 24, xxl: 32, section: 48 }
44
+ rounded: { sm: 8, md: 12, lg: 16, full: 9999 }
45
+ shadow:
46
+ hairline: "#e4e7ec 0px 0px 0px 1px"
47
+ inset-line: "#d0d5dd 0px -1px 0px 0px inset"
48
+ components:
49
+ button-primary: { type: button, bg: "#005df9", fg: "#ffffff", radius: "16px", padding: "2px 12px", font: "14px / 400", use: "Primary CTA — 로그인, SOL페이 다운로드 (shc-btn theme-primary)" }
50
+ button-tertiary: { type: button, bg: "#f0f4fa", fg: "#101828", radius: "12px", padding: "2px 8px", font: "14px / 400", use: "Tertiary action — 마이페이지, 내 정보관리 (shc-btn theme-tertiary)" }
51
+ button-indigo: { type: button, bg: "#6268ff", fg: "#ffffff", radius: "12px", padding: "2px 8px", font: "14px / 400", use: "Secondary accent action / promo" }
52
+ card: { type: card, bg: "#f8f9fc", fg: "#101828", radius: "16px", padding: "24px", font: "14px / 400", use: "Product / loan entry card, hairline #e4e7ec ring" }
53
+ card-indigo: { type: card, bg: "#ebf0ff", fg: "#101828", radius: "16px", padding: "24px", use: "Highlighted promo card on indigo tint" }
54
+ input-text: { type: input, bg: "#ffffff", fg: "#101828", radius: "8px", font: "16px / 500", use: "Search / form input, 1px #d0d5dd border, focus #005df9" }
55
+ badge-danger: { type: badge, bg: "#fff6f5", fg: "#f44f4f", radius: "8px", padding: "2px 8px", font: "12px / 400", use: "Alert / required / error badge" }
56
+ tab: { type: tab, bg: "#ffffff", fg: "#667085", radius: "0px", font: "14px / 400", active: "2px bottom border #005df9, fg #101828", use: "Main navigation / content tabs" }
57
+ list-item: { type: listItem, bg: "#ffffff", fg: "#344054", radius: "12px", padding: "0px 12px", font: "14px / 400", use: "Menu / quick-link list row, #e4e7ec divider" }
58
+ toggle: { type: toggle, bg: "#005df9", fg: "#ffffff", radius: "9999px", use: "On-state switch / segmented selector" }
59
+ ---
60
+
61
+ # Design System Inspiration of Shinhan Card
62
+
63
+ ## 1. Visual Theme & Atmosphere
64
+
65
+ Shinhan Card's website reads as the digital face of a major Korean financial institution that has been deliberately modernized for a mobile-first, super-app era. The page opens on a clean white canvas (`#ffffff`) layered with soft off-white and pale-blue surfaces (`#f8f9fc`, `#f0f4fa`), anchored by a single confident interactive blue (`#005df9`) that carries every primary call to action. Where legacy bank sites lean on dense navy chrome and stock imagery, Shinhan Card opts for generous rounded cards, airy spacing, and a restrained two-tone neutral scale that lets the blue do all the signalling. The result feels trustworthy and institutional, yet light and consumer-friendly — closer to a fintech app than a traditional card-issuer portal.
66
+
67
+ The defining typographic element is the proprietary `Digital One Shinhan` typeface, set across the entire system from 32px hero display down to 12px fine print. It runs with consistently tight negative letter-spacing (around -0.28px at body sizes, widening to -0.64px at display) that packs Korean and Latin glyphs into dense, engineered lines. Body text sits at a comfortable 14px with a generous 24px line-height, giving the dense Hangul a calm, readable rhythm. Headlines escalate in weight rather than only in size — 700 for page and section titles, jumping to 900 for the hero — so hierarchy is felt through ink density as much as scale.
68
+
69
+ What distinguishes Shinhan Card is its use of barely-there elevation. Instead of drop shadows, surfaces are separated by a 1px hairline ring (`#e4e7ec 0px 0px 0px 1px`) and an inset bottom line (`#d0d5dd 0px -1px 0px 0px inset`). Depth is communicated through tinted surface stacking — white over `#f8f9fc` over `#f0f4fa` over `#ebf0ff` — rather than blur. This flat, paper-layered aesthetic keeps the interface feeling crisp and document-grade, appropriate for a product where users scan statements, balances, and transactions.
70
+
71
+ **Key Characteristics:**
72
+ - Proprietary `Digital One Shinhan` typeface across the entire system
73
+ - Single interactive blue (`#005df9`) as the sole primary-action color
74
+ - Weight-driven hierarchy: 400 body, 700 titles, 900 hero
75
+ - Tinted surface stacking (`#ffffff` / `#f8f9fc` / `#f0f4fa` / `#ebf0ff`) instead of drop shadows
76
+ - Hairline `#e4e7ec` rings and inset `#d0d5dd` lines for separation
77
+ - Generous rounded geometry — 8px / 12px / 16px radius family
78
+ - Tight negative tracking (-0.28px body, -0.64px display) for dense Korean text
79
+ - Indigo (`#6268ff`) as a secondary accent for promotional moments
80
+
81
+ ## 2. Color Palette & Roles
82
+
83
+ ### Primary
84
+ - **Shinhan Blue** (`#005df9`): Primary brand color, CTA backgrounds, link text, active tab indicator, focus rings. A saturated, slightly electric blue that anchors the entire system.
85
+ - **Ink** (`#101828`): Primary heading and high-emphasis text color. A near-black navy that adds warmth and depth over pure black.
86
+ - **Pure White** (`#ffffff`): Page background, card surfaces, button text on the blue.
87
+
88
+ ### Accent
89
+ - **Indigo** (`#6268ff`): Secondary accent for promotional cards and decorative highlights, paired with its tint surface.
90
+ - **Surface Indigo** (`#ebf0ff`): Pale indigo tint for highlighted promo cards and feature callouts.
91
+
92
+ ### Neutral Scale
93
+ - **Slate** (`#344054`): Strong body text, list rows, secondary headings.
94
+ - **Body** (`#475467`): Standard secondary text, descriptions.
95
+ - **Muted** (`#667085`): Tertiary text, inactive tab labels, captions.
96
+ - **Muted Light** (`#818da2`): Disabled text, placeholders, axis labels.
97
+
98
+ ### Surfaces & Borders
99
+ - **Surface** (`#f8f9fc`): Default card and panel background.
100
+ - **Surface Blue** (`#f0f4fa`): Tertiary button background, subtle filled chips.
101
+ - **Border** (`#e4e7ec`): Standard hairline border, dividers, card rings.
102
+ - **Border Strong** (`#d0d5dd`): Input borders, inset separator lines.
103
+
104
+ ### Feedback
105
+ - **Danger** (`#f44f4f`): Error text, alert badges, required-field markers.
106
+ - **Danger BG** (`#fff6f5`): Tinted surface behind danger badges and inline errors.
107
+
108
+ ## 3. Typography Rules
109
+
110
+ ### Font Family
111
+ - **Primary**: `Digital One Shinhan`, with system fallback stack: `-apple-system, system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif`
112
+ - The proprietary face covers both Hangul and Latin and is used at every level — there is no separate display or mono family on the marketing surface.
113
+
114
+ ### Hierarchy
115
+
116
+ | Role | Size | Weight | Line Height | Letter Spacing | Notes |
117
+ |------|------|--------|-------------|----------------|-------|
118
+ | Display / Hero | 32px (2.00rem) | 900 | 1.20 | -0.64px | Main visual headline, maximum density |
119
+ | Page Title (h1) | 28px (1.75rem) | 700 | 1.30 | -0.28px | Top-level page title |
120
+ | Section (h2) | 21px (1.31rem) | 700 | 1.30 | -0.28px | Section / card-group heading |
121
+ | Body Emphasized / Input | 16px (1.00rem) | 500 | 1.69 | -0.32px | Form input, emphasized body |
122
+ | Body | 14px (0.88rem) | 400 | 1.71 | -0.28px | Standard reading text, nav links |
123
+ | Caption | 12px (0.75rem) | 400 | 1.50 | normal | Metadata, fine print, timestamps |
124
+
125
+ ### Principles
126
+ - **Weight as hierarchy**: Distinction comes primarily from weight escalation (400 → 700 → 900), not only size. The hero's 900 weight is the heaviest moment in the system.
127
+ - **Tight tracking for Hangul density**: Negative letter-spacing (-0.28px body, -0.64px display) keeps dense Korean lines compact and engineered.
128
+ - **Generous line-height on body**: 14px body runs at a 24px line box (~1.71) so dense Hangul stays calm and scannable.
129
+ - **One family, all levels**: `Digital One Shinhan` carries the entire system, reinforcing brand consistency from hero to fine print.
130
+
131
+ ## 4. Component Stylings
132
+
133
+ ### Buttons
134
+
135
+ **Primary** (`shc-btn theme-primary`)
136
+ - Background: `#005df9`
137
+ - Text: `#ffffff`
138
+ - Padding: 2px 12px (size-xl), 2px 8px (size-lg)
139
+ - Radius: 16px (xl), 12px (lg)
140
+ - Font: 14px `Digital One Shinhan` weight 400
141
+ - Use: Primary CTA — "로그인", "신한 SOL페이 다운로드"
142
+
143
+ **Tertiary** (`shc-btn theme-tertiary`)
144
+ - Background: `#f0f4fa`
145
+ - Text: `#101828`
146
+ - Padding: 2px 8px
147
+ - Radius: 12px
148
+ - Use: Secondary actions — "마이페이지", "내 정보관리"
149
+
150
+ **Indigo Accent**
151
+ - Background: `#6268ff`
152
+ - Text: `#ffffff`
153
+ - Radius: 12px
154
+ - Use: Promotional / accent CTAs paired with `#ebf0ff` surfaces
155
+
156
+ ### Cards & Containers
157
+ - Background: `#f8f9fc` (standard) or `#ebf0ff` (promo highlight)
158
+ - Text: `#101828`
159
+ - Radius: 16px
160
+ - Padding: 24px
161
+ - Separation: 1px hairline ring `#e4e7ec 0px 0px 0px 1px`, no drop shadow
162
+ - Use: Loan/product entry cards, feature tiles
163
+
164
+ ### Inputs & Forms
165
+ - Background: `#ffffff`
166
+ - Border: `1px solid #d0d5dd`
167
+ - Radius: 8px
168
+ - Text: `#101828`, 16px weight 500
169
+ - Placeholder: `#818da2`
170
+ - Focus: `#005df9` border / ring
171
+
172
+ ### Badges
173
+ **Danger / Alert**
174
+ - Background: `#fff6f5`
175
+ - Text: `#f44f4f`
176
+ - Padding: 2px 8px
177
+ - Radius: 8px
178
+ - Font: 12px weight 400
179
+
180
+ ### Tabs / Navigation
181
+ - Inactive: `#667085` text, transparent background
182
+ - Active: `#101828` text with 2px bottom border `#005df9`
183
+ - Font: 14px weight 400
184
+ - Sticky header on white with hairline `#e4e7ec` divider
185
+
186
+ ### List Items
187
+ - Background: `#ffffff`
188
+ - Text: `#344054`
189
+ - Radius: 12px
190
+ - Padding: 0px 12px
191
+ - Divider: 1px `#e4e7ec` between rows
192
+
193
+ ---
194
+
195
+ **Verified:** 2026-06-09 (omd-add-reference live inspect)
196
+ **Tier 1 sources:** https://www.shinhancard.com, https://www.shinhancard.com/pconts/html/main.html
197
+
198
+ ## 5. Layout Principles
199
+
200
+ ### Spacing System
201
+ - Base unit: 8px
202
+ - Scale: 2px, 8px, 12px, 16px, 20px, 24px, 32px, 48px
203
+ - Notable: Tight inner button padding (2px vertical) contrasts with generous 24px card padding — chrome is dense, content surfaces are airy.
204
+
205
+ ### Grid & Container
206
+ - Centered main column with full-width tinted section bands
207
+ - Product/loan entries arranged as multi-column rounded card grids
208
+ - Sticky top header with GNB navigation; footer carries customer-center numbers and legal links over `#ffffff`
209
+ - Quick-link rows and statement-style lists use full-width `#ffffff` rows with hairline dividers
210
+
211
+ ### Whitespace Philosophy
212
+ - **Paper-layered depth**: Sections are distinguished by tinted surfaces (`#f8f9fc`, `#f0f4fa`, `#ebf0ff`) stacked over white, not by shadows.
213
+ - **Airy cards, dense data**: Marketing cards get 24px padding while transactional list rows pack tightly for scanning statements.
214
+ - **Rounded calm**: Consistent 12–16px radius across cards and buttons softens the institutional density.
215
+
216
+ ### Border Radius Scale
217
+ - Small (8px): Inputs, badges, small chips
218
+ - Standard (12px): Buttons, list rows, the workhorse radius
219
+ - Large (16px): Cards, product tiles, large CTAs
220
+ - Full (9999px): Toggles, pill selectors
221
+
222
+ ## 6. Depth & Elevation
223
+
224
+ | Level | Treatment | Use |
225
+ |-------|-----------|-----|
226
+ | Flat (Level 0) | No shadow | Page background, inline text |
227
+ | Hairline (Level 1) | `#e4e7ec 0px 0px 0px 1px` ring | Cards, panels, content tiles |
228
+ | Inset Line (Level 2) | `#d0d5dd 0px -1px 0px 0px inset` | Sticky headers, list-row bottoms, input bases |
229
+ | Surface Tint (Level 3) | `#f8f9fc` / `#f0f4fa` / `#ebf0ff` stacking | Section separation without blur |
230
+ | Focus Ring | `#005df9` outline | Keyboard focus, active input |
231
+
232
+ **Shadow Philosophy**: Shinhan Card almost entirely avoids blurred drop shadows. Elevation is communicated through crisp 1px hairline rings (`#e4e7ec`) and inset bottom lines (`#d0d5dd`), reinforced by tinted-surface stacking. This produces a document-grade, paper-layered feel appropriate for a financial product where clarity and precision outrank decorative depth.
233
+
234
+ ## 7. Do's and Don'ts
235
+
236
+ ### Do
237
+ - Use `#005df9` as the single primary-action and link color
238
+ - Separate surfaces with hairline `#e4e7ec` rings and tinted stacking rather than drop shadows
239
+ - Use `#101828` (ink navy) for headings instead of pure black
240
+ - Escalate weight (400 → 700 → 900) to build hierarchy
241
+ - Keep radii in the 8–16px family for cards and buttons
242
+ - Apply tight negative tracking (-0.28px) on dense Korean body text
243
+ - Use `Digital One Shinhan` at every level for brand consistency
244
+
245
+ ### Don't
246
+ - Don't introduce a second primary CTA color — blue carries all primary actions
247
+ - Don't use heavy blurred drop shadows — hairlines and inset lines are the language
248
+ - Don't use pure black (`#000000`) for headings — always `#101828`
249
+ - Don't use pill/fully-rounded shapes on cards — those are reserved for toggles
250
+ - Don't crowd cards — keep the airy 24px padding
251
+ - Don't use the indigo (`#6268ff`) accent for standard primary CTAs — it is promotional
252
+ - Don't apply positive letter-spacing on Hangul body text
253
+
254
+ ## 8. Responsive Behavior
255
+
256
+ ### Breakpoints
257
+ | Name | Width | Key Changes |
258
+ |------|-------|-------------|
259
+ | Mobile | <640px | Single column, stacked cards, larger tap targets |
260
+ | Tablet | 640–1024px | 2-column card grids, moderate padding |
261
+ | Desktop | 1024–1280px | Full multi-column product grids |
262
+ | Large Desktop | >1280px | Centered content with generous side margins |
263
+
264
+ ### Touch Targets
265
+ - Buttons keep comfortable horizontal padding (8–12px) with full-height tap zones
266
+ - Navigation links at 14px with adequate row spacing
267
+ - Cards span full width on mobile for easy tapping
268
+ - `pc-only` list rows collapse out of the mobile layout
269
+
270
+ ### Collapsing Strategy
271
+ - Hero: 32px display compresses on mobile, weight 900 maintained
272
+ - Navigation: horizontal GNB → hamburger / drawer on mobile
273
+ - Product cards: multi-column → 2-column → single column stacked
274
+ - Statement/list rows: maintain full-width hairline-divided layout
275
+ - Section spacing: 48px → reduced on mobile
276
+
277
+ ### Image Behavior
278
+ - Card thumbnails maintain 16px radius at all sizes
279
+ - Tinted section bands persist full-width across breakpoints
280
+ - Promo cards keep their `#ebf0ff` surface and indigo accent on mobile
281
+
282
+ ## 9. Agent Prompt Guide
283
+
284
+ ### Quick Color Reference
285
+ - Primary CTA: Shinhan Blue (`#005df9`)
286
+ - Background: Pure White (`#ffffff`)
287
+ - Card surface: Off-white (`#f8f9fc`)
288
+ - Promo surface: Surface Indigo (`#ebf0ff`)
289
+ - Heading text: Ink (`#101828`)
290
+ - Body text: Body (`#475467`)
291
+ - Muted text: Muted (`#667085`)
292
+ - Border: Hairline (`#e4e7ec`)
293
+ - Link: Shinhan Blue (`#005df9`)
294
+ - Accent: Indigo (`#6268ff`)
295
+ - Error: Danger (`#f44f4f`)
296
+
297
+ ### Example Component Prompts
298
+ - "Create a hero on white. Headline at 32px Digital One Shinhan weight 900, line-height 1.20, letter-spacing -0.64px, color #101828. Subtitle 16px weight 500, color #475467. Primary blue CTA (#005df9 bg, #ffffff text, 16px radius, 2px 12px padding) and tertiary button (#f0f4fa bg, #101828 text, 12px radius)."
299
+ - "Design a product card: #f8f9fc background, 16px radius, 24px padding, 1px hairline ring #e4e7ec, no drop shadow. Title 21px weight 700 #101828, body 14px weight 400 #475467."
300
+ - "Build a danger badge: #fff6f5 background, #f44f4f text, 8px radius, 2px 8px padding, 12px weight 400."
301
+ - "Create tabs: inactive #667085 14px labels, active #101828 with 2px bottom border #005df9. Sticky white header with hairline #e4e7ec divider."
302
+ - "Design an input: white background, 1px solid #d0d5dd border, 8px radius, 16px weight 500 #101828 text, #818da2 placeholder, focus border #005df9."
303
+
304
+ ### Iteration Guide
305
+ 1. Blue (`#005df9`) is the only primary-action color — never add a second
306
+ 2. Weight escalation (400 / 700 / 900) builds hierarchy before size
307
+ 3. Separate surfaces with hairline rings + tinted stacking, never heavy shadows
308
+ 4. Heading color is `#101828`, body `#475467`, muted `#667085`
309
+ 5. Radius family: 8px inputs, 12px buttons/rows, 16px cards, 9999px toggles
310
+ 6. Apply -0.28px tracking on body, -0.64px on display
311
+ 7. Indigo (`#6268ff`) and `#ebf0ff` are promotional only — not standard CTAs
312
+
313
+ ---
314
+
315
+ ## 10. Voice & Tone
316
+
317
+ Shinhan Card's voice is that of a trusted, polished Korean financial partner — reassuring, clear, and service-oriented, without the stiffness of a legacy bank. Korean copy favors polite, customer-respecting registers and concrete benefit framing ("목돈이 필요할 때", "카드값이 부담될 때") that meets the user at a moment of need. Labels are plain and functional ("로그인", "마이페이지", "이용대금명세서"), prioritizing comprehension over cleverness. The tone is calm and competent: a major card issuer that wants the digital experience to feel as dependable as its physical card.
318
+
319
+ | Context | Tone |
320
+ |---|---|
321
+ | Hero / promo headlines | Benefit-first, situational. Speaks to a user's moment of need. |
322
+ | Product descriptions | Concrete and plain. Names the product and the situation it solves. |
323
+ | CTAs | Functional imperatives. "로그인", "다운로드", "신청하기". |
324
+ | Form / error messages | Polite, specific, guiding. Explains what to fix. |
325
+ | Navigation / menu | Noun-based, scannable. Mirrors banking task vocabulary. |
326
+ | Legal / disclosure | Formal, regulatory-grade Korean. |
327
+ | Customer center | Warm, accessible. Phone numbers surfaced prominently. |
328
+
329
+ **Forbidden phrases.** Hype superlatives ("혁신적인", "최고의" without basis), exclamation-heavy marketing, emoji on transactional surfaces, and vague benefit claims without a concrete product. The register stays trustworthy and service-grade.
330
+
331
+ ## 11. Brand Narrative
332
+
333
+ Shinhan Card is one of Korea's largest credit-card and consumer-finance companies, part of the Shinhan Financial Group, one of the country's leading financial conglomerates. As a major issuer, its remit spans credit and check cards, card loans (장기/단기카드대출), installment finance, and an expanding digital-payments footprint anchored by the SOL Pay app. The website positions Shinhan Card not merely as a card portal but as a financial-services super-app gateway — surfacing loans, statements, payments, and account management from a single, modernized hub.
334
+
335
+ The design reflects a deliberate modernization of the institutional banking experience. Rather than the dense navy chrome and corporate imagery typical of legacy financial portals, Shinhan Card adopts a light, rounded, fintech-adjacent aesthetic: white canvases, tinted surface layering, a single confident blue, and the proprietary `Digital One Shinhan` typeface that ties every touchpoint — web, app, card, and signage — to one coherent brand voice. This is a company signalling that it takes both trust and modern usability seriously.
336
+
337
+ What Shinhan Card embraces: clarity over decoration, a single anchoring brand blue, paper-layered depth that reads as document-grade precision, and benefit-first copy that meets users at moments of financial need. What it avoids: heavy shadows, cluttered legacy chrome, and hype-driven marketing that would undercut a financial institution's credibility.
338
+
339
+ ## 12. Principles
340
+
341
+ 1. **Trust through clarity.** Every surface prioritizes legibility and scannability — appropriate for a product where users read balances, statements, and terms. Decoration never competes with comprehension.
342
+ 2. **One anchoring blue.** `#005df9` carries all primary intent. A single, confident interactive color keeps the system disciplined and the brand instantly recognizable.
343
+ 3. **Weight, not noise.** Hierarchy is built through weight escalation (400 → 700 → 900), letting the neutral palette stay calm while importance is still unmistakable.
344
+ 4. **Paper, not blur.** Elevation is hairline rings and tinted stacking, not drop shadows. The interface should feel like a crisp, well-organized document.
345
+ 5. **One typeface, one voice.** `Digital One Shinhan` across every level unifies web, app, and physical brand into a single identity.
346
+ 6. **Meet the moment of need.** Copy is benefit-first and situational, addressing the user's financial context directly rather than abstractly.
347
+ 7. **Modern, but dependable.** Rounded geometry and airy spacing modernize the experience without sacrificing the steadiness a major financial institution must project.
348
+
349
+ ## 13. Personas
350
+
351
+ *Personas below are fictional archetypes informed by publicly observable Shinhan Card user segments (everyday cardholders, loan/credit users, mobile-payment adopters, and SMB owners), not individual people.*
352
+
353
+ **Ji-woo Park, 29, Seoul.** Office worker who manages nearly everything through the SOL Pay app. Checks her statement weekly and values being able to see her 이용대금명세서 and reward points at a glance. Trusts Shinhan Card because the digital experience feels as reliable as the physical card, and the clean layout makes scanning transactions effortless.
354
+
355
+ **Min-seok Kang, 41, Incheon.** Needs a short-term card loan to cover a cash-flow gap (단기카드대출). Appreciates that the site surfaces loan options with plain, situational labels ("소액 현금이 필요할 때") rather than burying them in jargon. Wants clear terms and a frictionless application — and distrusts financial sites that feel cluttered or pushy.
356
+
357
+ **Hye-jin Lim, 35, Busan.** Small-business owner exploring 개인사업자대출 and installment options. Works daily across statements and payment schedules. Values the dense, scannable list rows and the consistency between the web portal and the app. Would be frustrated by any redesign that added decoration at the expense of data density.
358
+
359
+ **Seung-ho Yoon, 52, Daegu.** Long-time cardholder who primarily uses the web portal and customer center. Relies on the prominently displayed 고객센터 number and the formal, regulatory-grade disclosure copy to feel confident. Trusts the modernized look precisely because it still reads as a serious financial institution, not a flashy startup.
360
+
361
+ ## 14. States
362
+
363
+ | State | Treatment |
364
+ |---|---|
365
+ | **Empty (no transactions)** | White canvas. Single line in Muted (`#667085`) at 14px explaining no activity yet. One Shinhan Blue CTA. No illustration clutter. |
366
+ | **Empty (no results)** | Muted (`#667085`) single line. Filter/search summary stays visible so the user can adjust. |
367
+ | **Loading** | Skeleton blocks in Border (`#e4e7ec`) at final dimensions, paper-flat with subtle shimmer. No spinner overlays on content. |
368
+ | **Error (form validation)** | Field-level. Danger (`#f44f4f`) text + `#fff6f5` tinted background. Message names what is invalid and how to fix it. |
369
+ | **Error (request failed)** | Inline banner in Danger tone. Plain-Korean explanation plus a retry or customer-center path. No generic "오류가 발생했습니다" alone. |
370
+ | **Success (action saved)** | Brief inline confirmation in Ink (`#101828`); blue accent on the affected row. Calm, no exclamation, no emoji. |
371
+ | **Disabled** | Surface and text fade together; primary blue becomes a muted tint rather than switching to gray, preserving brand read. |
372
+ | **Focus** | `#005df9` ring/border on inputs and interactive elements for clear keyboard navigation. |
373
+ | **Active tab** | `#101828` label with 2px `#005df9` bottom border. |
374
+
375
+ ## 15. Motion & Easing
376
+
377
+ **Durations**:
378
+
379
+ | Token | Value | Use |
380
+ |---|---|---|
381
+ | `motion-instant` | 0ms | State commits, selection, focus rings |
382
+ | `motion-fast` | 150ms | Hover, button press, tab switch |
383
+ | `motion-standard` | 250ms | Drawer, modal, dropdown, accordion |
384
+ | `motion-slow` | 350ms | Page-level transitions, hero reveals |
385
+
386
+ **Easings**:
387
+
388
+ | Token | Curve | Use |
389
+ |---|---|---|
390
+ | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Arriving — sheets, drawers, dropdowns |
391
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
392
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Two-way transitions |
393
+
394
+ **Explicitly forbidden.** No bounce, no overshoot, no playful spring on transactional surfaces. A financial institution's motion is steady and predictable; motion exists to clarify continuity (which panel opened, which tab is active), never to delight at the cost of trust.
395
+
396
+ **Signature motions.**
397
+
398
+ 1. **Tab indicator slide.** The `#005df9` 2px bottom border slides between tabs using `motion-fast / ease-standard`, signalling the active section without abrupt jumps.
399
+ 2. **Drawer / GNB reveal.** Mobile navigation slides in with `motion-standard / ease-enter`; surfaces fade their hairline rings into place rather than dropping shadows.
400
+ 3. **Surface tint transition.** Section bands crossfade their tinted backgrounds (`#f8f9fc` ↔ `#ebf0ff`) on scroll-into-view with `motion-slow`, keeping the paper-layered feel calm.
401
+ 4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, all `motion-*` tokens collapse to `motion-instant`. Tabs and drawers commit immediately; the portal stays fully functional.
402
+
403
+ ## 16. Do's and Don'ts
404
+
405
+ ### Do
406
+ - Anchor every primary action and link in Shinhan Blue (`#005df9`)
407
+ - Build hierarchy with weight (400 / 700 / 900) before reaching for size
408
+ - Use hairline `#e4e7ec` rings and tinted surface stacking for separation
409
+ - Keep `Digital One Shinhan` across all levels for a unified brand voice
410
+ - Hold radii in the 8 / 12 / 16px family; reserve 9999px for toggles
411
+ - Write benefit-first, situational Korean copy that meets the user's need
412
+ - Use Ink (`#101828`) for headings, never pure black
413
+
414
+ ### Don't
415
+ - Don't add a second primary CTA color alongside the blue
416
+ - Don't apply heavy blurred drop shadows — hairlines and inset lines are the depth language
417
+ - Don't use the indigo (`#6268ff`) accent for standard primary CTAs
418
+ - Don't crowd cards — preserve the airy 24px padding
419
+ - Don't use fully-rounded pill shapes on cards or content tiles
420
+ - Don't lean on hype superlatives or emoji on transactional surfaces
421
+ - Don't apply positive letter-spacing to dense Korean body text