oh-my-design-cli 1.8.7 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/.claude/hooks/lib/preferences-parser.cjs +1 -0
  2. package/.claude/hooks/lib/preferences-writer.cjs +1 -0
  3. package/.claude/hooks/post-edit-watch.cjs +1 -0
  4. package/.claude/hooks/session-end-foldin.cjs +1 -0
  5. package/.claude/hooks/session-state-loader.cjs +1 -0
  6. package/.claude/hooks/skill-activation.cjs +1 -0
  7. package/.claude/settings.json +10 -1
  8. package/.github/assets/logo-bg.png +0 -0
  9. package/AGENTS.md +20 -1
  10. package/CHANGELOG.md +482 -0
  11. package/MIGRATION.md +103 -0
  12. package/README.ja.md +56 -19
  13. package/README.ko.md +47 -30
  14. package/README.md +48 -30
  15. package/README.zh-TW.md +59 -22
  16. package/agents/AGENT.md +8 -7
  17. package/agents/omd-codex-image.md +1 -1
  18. package/agents/omd-critic.md +6 -7
  19. package/agents/omd-designer-review.md +1 -1
  20. package/agents/omd-final-qa.md +1 -1
  21. package/agents/omd-humanizer.md +38 -0
  22. package/agents/omd-kr-writer.md +3 -4
  23. package/agents/omd-locale-adapter.md +12 -16
  24. package/agents/omd-master.md +24 -19
  25. package/agents/omd-microcopy.md +1 -1
  26. package/agents/omd-orchestrator.md +7 -8
  27. package/agents/omd-slop-auditor.md +31 -0
  28. package/agents/omd-ux-researcher.md +1 -1
  29. package/data/reference-fingerprints.json +1995 -38
  30. package/dist/bin/oh-my-design.js +16 -8
  31. package/dist/bin/oh-my-design.js.map +1 -1
  32. package/dist/chunk-UJIHCEYF.js +99 -0
  33. package/dist/chunk-UJIHCEYF.js.map +1 -0
  34. package/dist/doctor-LDWSFM3I.js +763 -0
  35. package/dist/doctor-LDWSFM3I.js.map +1 -0
  36. package/dist/install-skills-ZZFNJ2II.js +1120 -0
  37. package/dist/install-skills-ZZFNJ2II.js.map +1 -0
  38. package/docs/CLI_QUICKSTART.md +157 -0
  39. package/package.json +25 -4
  40. package/scripts/postinstall.cjs +5 -4
  41. package/skills/claude-design/SKILL.md +38 -14
  42. package/skills/claude-design/references/claude-design-flow.md +11 -11
  43. package/skills/claude-design/references/codebase-analysis.md +5 -4
  44. package/skills/omd-final-qa/SKILL.md +1 -1
  45. package/skills/omd-harness/SKILL.md +51 -50
  46. package/skills/omd-humanize/SKILL.md +116 -0
  47. package/skills/omd-humanize/agents/openai.yaml +4 -0
  48. package/skills/omd-humanize/references/locale-playbooks.md +102 -0
  49. package/skills/omd-humanize/references/sources.md +11 -0
  50. package/skills/omd-init/SKILL.md +18 -12
  51. package/skills/omd-locale-adapter/SKILL.md +58 -91
  52. package/skills/omd-orchestrator/SKILL.md +11 -5
  53. package/skills/omd-reference-capture/SKILL.md +80 -26
  54. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
  55. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
  56. package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
  57. package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
  58. package/skills/omd-slop-audit/SKILL.md +110 -0
  59. package/skills/omd-slop-audit/agents/openai.yaml +4 -0
  60. package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
  61. package/skills/omd-slop-audit/references/sources.md +24 -0
  62. package/web/references/104/DESIGN.md +354 -0
  63. package/web/references/11st/DESIGN.md +197 -316
  64. package/web/references/29cm/DESIGN.md +297 -393
  65. package/web/references/42dot/DESIGN.md +390 -0
  66. package/web/references/8percent/DESIGN.md +438 -0
  67. package/web/references/ably/DESIGN.md +267 -572
  68. package/web/references/acer/DESIGN.md +329 -0
  69. package/web/references/airbnb/DESIGN.md +219 -557
  70. package/web/references/alipay/DESIGN.md +179 -420
  71. package/web/references/apple/DESIGN.md +224 -498
  72. package/web/references/asleep/DESIGN.md +402 -0
  73. package/web/references/au/DESIGN.md +334 -0
  74. package/web/references/autopedia/DESIGN.md +382 -0
  75. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  76. package/web/references/baemin/DESIGN.md +332 -491
  77. package/web/references/banksalad/DESIGN.md +269 -180
  78. package/web/references/barogo/DESIGN.md +416 -0
  79. package/web/references/beusable/DESIGN.md +464 -0
  80. package/web/references/bilibili/DESIGN.md +206 -374
  81. package/web/references/bmw/DESIGN.md +162 -276
  82. package/web/references/brandi/DESIGN.md +184 -325
  83. package/web/references/catchtable/DESIGN.md +219 -264
  84. package/web/references/cgv/DESIGN.md +317 -0
  85. package/web/references/channeltalk/DESIGN.md +210 -336
  86. package/web/references/china-airlines/DESIGN.md +291 -0
  87. package/web/references/cjonstyle/DESIGN.md +453 -0
  88. package/web/references/class101/DESIGN.md +168 -387
  89. package/web/references/classum/DESIGN.md +228 -203
  90. package/web/references/claude/DESIGN.md +242 -479
  91. package/web/references/clay/DESIGN.md +179 -377
  92. package/web/references/clickhouse/DESIGN.md +254 -343
  93. package/web/references/cohere/DESIGN.md +214 -324
  94. package/web/references/coinone/DESIGN.md +199 -179
  95. package/web/references/corca/DESIGN.md +414 -0
  96. package/web/references/coupang/DESIGN.md +205 -475
  97. package/web/references/cursor/DESIGN.md +240 -381
  98. package/web/references/dabang/DESIGN.md +248 -213
  99. package/web/references/dable/DESIGN.md +431 -0
  100. package/web/references/datarize/DESIGN.md +217 -330
  101. package/web/references/dealicious/DESIGN.md +402 -0
  102. package/web/references/drdiary/DESIGN.md +404 -0
  103. package/web/references/elastic/DESIGN.md +238 -0
  104. package/web/references/elevenlabs/DESIGN.md +183 -321
  105. package/web/references/eslite/DESIGN.md +257 -0
  106. package/web/references/evaair/DESIGN.md +338 -0
  107. package/web/references/expo/DESIGN.md +238 -331
  108. package/web/references/familymart-tw/DESIGN.md +254 -0
  109. package/web/references/ferrari/DESIGN.md +160 -377
  110. package/web/references/figma/DESIGN.md +197 -451
  111. package/web/references/fitpet/DESIGN.md +445 -0
  112. package/web/references/flex/DESIGN.md +170 -253
  113. package/web/references/framer/DESIGN.md +197 -340
  114. package/web/references/freee/DESIGN.md +211 -533
  115. package/web/references/friendliai/DESIGN.md +431 -0
  116. package/web/references/frip/DESIGN.md +440 -0
  117. package/web/references/gangnamunni/DESIGN.md +154 -591
  118. package/web/references/gaudiolab/DESIGN.md +414 -0
  119. package/web/references/google/DESIGN.md +290 -398
  120. package/web/references/hashicorp/DESIGN.md +273 -318
  121. package/web/references/heydealer/DESIGN.md +429 -0
  122. package/web/references/humanscape/DESIGN.md +433 -0
  123. package/web/references/hyundai/DESIGN.md +158 -368
  124. package/web/references/hyundaicard/DESIGN.md +171 -121
  125. package/web/references/ibm/DESIGN.md +227 -378
  126. package/web/references/idus/DESIGN.md +450 -0
  127. package/web/references/igaworks/DESIGN.md +437 -0
  128. package/web/references/inflearn/DESIGN.md +221 -366
  129. package/web/references/intuit/DESIGN.md +244 -0
  130. package/web/references/jandi/DESIGN.md +191 -291
  131. package/web/references/jobplanet/DESIGN.md +415 -0
  132. package/web/references/kakao/DESIGN.md +287 -475
  133. package/web/references/kakaobank/DESIGN.md +220 -521
  134. package/web/references/kakaogames/DESIGN.md +220 -0
  135. package/web/references/kakaopay/DESIGN.md +207 -526
  136. package/web/references/karrot/DESIGN.md +227 -251
  137. package/web/references/kb-kookmin/DESIGN.md +308 -0
  138. package/web/references/kbank/DESIGN.md +220 -175
  139. package/web/references/kmong/DESIGN.md +281 -356
  140. package/web/references/krds/DESIGN.md +245 -19
  141. package/web/references/kream/DESIGN.md +224 -359
  142. package/web/references/kurly/DESIGN.md +211 -533
  143. package/web/references/lamborghini/DESIGN.md +198 -360
  144. package/web/references/lguplus/DESIGN.md +259 -0
  145. package/web/references/likelion/DESIGN.md +283 -0
  146. package/web/references/line/DESIGN.md +396 -355
  147. package/web/references/linear.app/DESIGN.md +209 -562
  148. package/web/references/lotteon/DESIGN.md +386 -0
  149. package/web/references/lovable/DESIGN.md +255 -349
  150. package/web/references/makinarocks/DESIGN.md +149 -349
  151. package/web/references/maum-ai/DESIGN.md +423 -0
  152. package/web/references/medibloc/DESIGN.md +425 -0
  153. package/web/references/megabox/DESIGN.md +232 -0
  154. package/web/references/mercari/DESIGN.md +217 -434
  155. package/web/references/microsoft/DESIGN.md +234 -388
  156. package/web/references/mildang/DESIGN.md +411 -0
  157. package/web/references/millie/DESIGN.md +183 -504
  158. package/web/references/minimax/DESIGN.md +264 -322
  159. package/web/references/miricanvas/DESIGN.md +182 -355
  160. package/web/references/miro/DESIGN.md +234 -232
  161. package/web/references/mistral.ai/DESIGN.md +231 -314
  162. package/web/references/mixi/DESIGN.md +234 -0
  163. package/web/references/moin/DESIGN.md +445 -0
  164. package/web/references/mongodb/DESIGN.md +219 -316
  165. package/web/references/musinsa/DESIGN.md +184 -510
  166. package/web/references/mynavi/DESIGN.md +242 -0
  167. package/web/references/myrealtrip/DESIGN.md +169 -406
  168. package/web/references/naver/DESIGN.md +328 -499
  169. package/web/references/naverwebtoon/DESIGN.md +172 -395
  170. package/web/references/nhn/DESIGN.md +169 -346
  171. package/web/references/nhncloud/DESIGN.md +185 -123
  172. package/web/references/notion/DESIGN.md +271 -475
  173. package/web/references/nrise/DESIGN.md +417 -0
  174. package/web/references/ohouse/DESIGN.md +210 -549
  175. package/web/references/oliveyoung/DESIGN.md +217 -326
  176. package/web/references/ollama/DESIGN.md +241 -308
  177. package/web/references/onestore/DESIGN.md +248 -0
  178. package/web/references/palantir/DESIGN.md +256 -0
  179. package/web/references/panasonic/DESIGN.md +276 -0
  180. package/web/references/patternfly/DESIGN.md +259 -0
  181. package/web/references/payhere/DESIGN.md +438 -0
  182. package/web/references/pega/DESIGN.md +262 -0
  183. package/web/references/peoplefund/DESIGN.md +431 -0
  184. package/web/references/petfriends/DESIGN.md +428 -0
  185. package/web/references/pinkfong/DESIGN.md +199 -367
  186. package/web/references/pinterest/DESIGN.md +258 -308
  187. package/web/references/poya/DESIGN.md +286 -0
  188. package/web/references/pozalabs/DESIGN.md +438 -0
  189. package/web/references/protopie/DESIGN.md +419 -0
  190. package/web/references/qraft/DESIGN.md +448 -0
  191. package/web/references/quotabook/DESIGN.md +449 -0
  192. package/web/references/recruit/DESIGN.md +247 -0
  193. package/web/references/remember/DESIGN.md +202 -396
  194. package/web/references/resend/DESIGN.md +274 -348
  195. package/web/references/sakura-internet/DESIGN.md +269 -0
  196. package/web/references/samsung/DESIGN.md +157 -359
  197. package/web/references/sandoll/DESIGN.md +445 -0
  198. package/web/references/sanity/DESIGN.md +241 -375
  199. package/web/references/scatterlab/DESIGN.md +412 -0
  200. package/web/references/selectstar/DESIGN.md +439 -0
  201. package/web/references/servicenow/DESIGN.md +289 -0
  202. package/web/references/shinhanbank/DESIGN.md +161 -341
  203. package/web/references/shinhancard/DESIGN.md +208 -319
  204. package/web/references/sionic/DESIGN.md +454 -0
  205. package/web/references/sktelecom/DESIGN.md +310 -0
  206. package/web/references/socar/DESIGN.md +125 -32
  207. package/web/references/softbank/DESIGN.md +231 -0
  208. package/web/references/sony/DESIGN.md +234 -0
  209. package/web/references/soop/DESIGN.md +261 -0
  210. package/web/references/spacex/DESIGN.md +184 -323
  211. package/web/references/spotify/DESIGN.md +253 -394
  212. package/web/references/squeezebits/DESIGN.md +441 -0
  213. package/web/references/stayfolio/DESIGN.md +422 -0
  214. package/web/references/stripe/DESIGN.md +212 -491
  215. package/web/references/supabase/DESIGN.md +244 -316
  216. package/web/references/tabling/DESIGN.md +415 -0
  217. package/web/references/taishinbank/DESIGN.md +243 -0
  218. package/web/references/teamlab/DESIGN.md +240 -0
  219. package/web/references/teamsparta/DESIGN.md +472 -0
  220. package/web/references/tellingme/DESIGN.md +392 -0
  221. package/web/references/tesla/DESIGN.md +244 -427
  222. package/web/references/thsr/DESIGN.md +284 -0
  223. package/web/references/thumbtack/DESIGN.md +302 -0
  224. package/web/references/together.ai/DESIGN.md +257 -304
  225. package/web/references/toss/DESIGN.md +251 -593
  226. package/web/references/toss-securities/DESIGN.md +255 -178
  227. package/web/references/tossbank/DESIGN.md +195 -491
  228. package/web/references/toyota/DESIGN.md +238 -0
  229. package/web/references/tving/DESIGN.md +197 -245
  230. package/web/references/typed/DESIGN.md +413 -0
  231. package/web/references/uber/DESIGN.md +256 -333
  232. package/web/references/udn/DESIGN.md +250 -0
  233. package/web/references/upbit/DESIGN.md +145 -256
  234. package/web/references/upstage/DESIGN.md +211 -204
  235. package/web/references/uswds/DESIGN.md +287 -0
  236. package/web/references/vercel/DESIGN.md +236 -440
  237. package/web/references/wanted/DESIGN.md +215 -487
  238. package/web/references/wise/DESIGN.md +223 -231
  239. package/web/references/wisetracker/DESIGN.md +462 -0
  240. package/web/references/wooribank/DESIGN.md +245 -0
  241. package/web/references/yanolja/DESIGN.md +250 -419
  242. package/web/references/yeogiotte/DESIGN.md +235 -418
  243. package/web/references/zapier/DESIGN.md +256 -377
  244. package/web/references/zendesk/DESIGN.md +288 -0
  245. package/web/references/zigzag/DESIGN.md +200 -621
  246. package/dist/install-skills-7UUDOLG2.js +0 -734
  247. package/dist/install-skills-7UUDOLG2.js.map +0 -1
@@ -8,596 +8,277 @@ primary_color: "#ffeb00"
8
8
  logo:
9
9
  type: favicon
10
10
  slug: "https://t1.kakaocdn.net/kakaopay/icons/web/192-brand.png"
11
- verified: "2026-05-15"
11
+ verified: "2026-07-13"
12
12
  omd: "0.1"
13
13
  ds:
14
- name: KakaoPay Story
15
- url: "https://story.kakaopay.com/"
14
+ name: KakaoPay design story
15
+ url: "https://story.kakaopay.com/225-kakaopay-design/"
16
16
  type: brand
17
- description: "KakaoPay's design narrative blog — 3 pillars (Color · Icon · Type), the 3:1 contrast accessibility policy, and the KPDS internal design system context."
18
- og_image: "https://i0.wp.com/story.kakaopay.com/wp-content/uploads/2024/03/kakaopay_thumb.png"
17
+ description: Official KakaoPay article describing its graphic-accessibility work; it is not a public component library.
18
+ verification_v2:
19
+ schema: 2
20
+ checked: "2026-07-13"
21
+ surfaces:
22
+ - { id: marketing-main, kind: marketing, url: "https://www.kakaopay.com/main", inspected: "2026-07-13" }
23
+ - { id: design-story, kind: marketing-content, url: "https://story.kakaopay.com/225-kakaopay-design/", inspected: "2026-07-13" }
24
+ - { id: story-home, kind: marketing-content, url: "https://story.kakaopay.com/", inspected: "2026-07-13" }
25
+ - { id: corporate-service, kind: corporate-service, url: "https://www.kakaocorp.com/page/service/service/KakaoPay", inspected: "2026-07-13" }
26
+ - { id: font-resource, kind: brand-asset, url: "https://www.kakaocorp.com/page/detail/11571", inspected: "2026-07-13" }
27
+ - { id: developer-docs, kind: documentation, url: "https://developers.kakaopay.com/docs/payment/online/reference", inspected: "2026-07-13" }
28
+ sources:
29
+ - { id: marketing-main-live, kind: product-surface, url: "https://www.kakaopay.com/main", captured: "2026-07-13" }
30
+ - { id: story-live, kind: product-surface, url: "https://story.kakaopay.com/", captured: "2026-07-13" }
31
+ - { id: design-story-doc, kind: official-doc, url: "https://story.kakaopay.com/225-kakaopay-design/", captured: "2026-07-13" }
32
+ - { id: corporate-service-live, kind: product-surface, url: "https://www.kakaocorp.com/page/service/service/KakaoPay", captured: "2026-07-13" }
33
+ - { id: font-resource-doc, kind: brand-asset, url: "https://www.kakaocorp.com/page/detail/11571", captured: "2026-07-13" }
34
+ - { id: developer-docs-live, kind: official-doc, url: "https://developers.kakaopay.com/docs/payment/online/reference", captured: "2026-07-13" }
35
+ conflicts: []
36
+ claims:
37
+ "tokens.colors.ink": &corporate { surface_id: corporate-service, source_id: corporate-service-live, method: live-inspect, captured: "2026-07-13" }
38
+ "tokens.colors.text": *corporate
39
+ "tokens.colors.muted": *corporate
40
+ "tokens.colors.subtle": *corporate
41
+ "tokens.colors.canvas": *corporate
42
+ "tokens.colors.surface": *corporate
43
+ "tokens.colors.surface-soft": *corporate
44
+ "tokens.typography.family.sans": *corporate
45
+ "tokens.typography.family.display": *corporate
46
+ "tokens.typography.card-title.size": *corporate
47
+ "tokens.typography.card-title.weight": *corporate
48
+ "tokens.typography.card-title.lineHeight": *corporate
49
+ "tokens.typography.card-title.tracking": *corporate
50
+ "tokens.typography.card-title.use": *corporate
51
+ "tokens.typography.public-body.size": *corporate
52
+ "tokens.typography.public-body.weight": *corporate
53
+ "tokens.typography.public-body.lineHeight": *corporate
54
+ "tokens.typography.public-body.tracking": *corporate
55
+ "tokens.typography.public-body.use": *corporate
56
+ "tokens.typography.utility.size": *corporate
57
+ "tokens.typography.utility.weight": *corporate
58
+ "tokens.typography.utility.lineHeight": *corporate
59
+ "tokens.typography.utility.tracking": *corporate
60
+ "tokens.typography.utility.use": *corporate
61
+ "tokens.spacing.compact": *corporate
62
+ "tokens.spacing.control": *corporate
63
+ "tokens.spacing.card": *corporate
64
+ "tokens.rounded.none": *corporate
65
+ "tokens.rounded.card": *corporate
66
+ "tokens.rounded.search": *corporate
67
+ "tokens.rounded.action": *corporate
68
+ "tokens.rounded.pill": *corporate
69
+ "tokens.shadow.none": *corporate
70
+ "tokens.components.corporate-menu.type": *corporate
71
+ "tokens.components.corporate-menu.bg": *corporate
72
+ "tokens.components.corporate-menu.fg": *corporate
73
+ "tokens.components.corporate-menu.radius": *corporate
74
+ "tokens.components.corporate-menu.padding": *corporate
75
+ "tokens.components.corporate-menu.font": *corporate
76
+ "tokens.components.corporate-menu.states": *corporate
77
+ "tokens.components.corporate-menu.use": *corporate
78
+ "tokens.components.corporate-search.type": *corporate
79
+ "tokens.components.corporate-search.bg": *corporate
80
+ "tokens.components.corporate-search.fg": *corporate
81
+ "tokens.components.corporate-search.radius": *corporate
82
+ "tokens.components.corporate-search.padding": *corporate
83
+ "tokens.components.corporate-search.font": *corporate
84
+ "tokens.components.corporate-search.states": *corporate
85
+ "tokens.components.corporate-search.use": *corporate
86
+ "tokens.components.corporate-card.type": *corporate
87
+ "tokens.components.corporate-card.bg": *corporate
88
+ "tokens.components.corporate-card.fg": *corporate
89
+ "tokens.components.corporate-card.radius": *corporate
90
+ "tokens.components.corporate-card.padding": *corporate
91
+ "tokens.components.corporate-card.font": *corporate
92
+ "tokens.components.corporate-card.use": *corporate
93
+ "tokens.components.corporate-tag.type": *corporate
94
+ "tokens.components.corporate-tag.bg": *corporate
95
+ "tokens.components.corporate-tag.fg": *corporate
96
+ "tokens.components.corporate-tag.radius": *corporate
97
+ "tokens.components.corporate-tag.padding": *corporate
98
+ "tokens.components.corporate-tag.font": *corporate
99
+ "tokens.components.corporate-tag.use": *corporate
19
100
  tokens:
20
- source: prose-derived
21
- extracted: "2026-06-09"
22
- components_harvested: true
101
+ source: reconciled
102
+ extracted: "2026-07-13"
23
103
  colors:
24
- primary: "#ffeb00"
25
- ink: "#060b11"
104
+ ink: "#000000"
105
+ text: "#333333"
106
+ muted: "#666666"
107
+ subtle: "#888888"
26
108
  canvas: "#ffffff"
27
- ivory: "#fefffa"
28
- wild-willow: "#c5c17a"
29
- olive: "#7f7600"
30
- surface-footer: "#f8f9fa"
31
- surface-soft: "#f2f4f6"
32
- border: "#e5e8eb"
33
- border-subtle: "#eef0f3"
34
- body-slate: "#374151"
35
- caption-grey: "#6b7684"
36
- placeholder: "#b0b8c1"
37
- success: "#03b26c"
38
- error: "#f04452"
39
- warning: "#ffa94d"
40
- info: "#3182f6"
41
- header-ink: "#1a1d24"
42
- brand-badge-bg: "#fffbcc"
43
- on-primary: "#060b11"
109
+ surface: "#f3f3f3"
110
+ surface-soft: "#eeeeee"
44
111
  typography:
45
- family: { sans: "Noto Sans KR", mono: "Noto Sans KR" }
46
- display-hero: { size: 44, weight: 700, lineHeight: 1.20, tracking: -0.4, use: "Marketing hero" }
47
- display-large: { size: 32, weight: 700, lineHeight: 1.25, tracking: -0.3, use: "Secondary marketing headlines" }
48
- section: { size: 22, weight: 500, lineHeight: 1.45, tracking: -0.2, use: "Workhorse heading, megamenu H2" }
49
- subheading: { size: 18, weight: 500, lineHeight: 1.40, tracking: -0.1, use: "Card titles, group labels" }
50
- body-strong: { size: 16, weight: 500, lineHeight: 1.50, use: "Important paragraph copy" }
51
- body: { size: 14, weight: 400, lineHeight: 1.50, use: "Default body, Korean-web baseline" }
52
- body-light: { size: 14, weight: 300, lineHeight: 1.57, use: "Inactive nav, secondary text" }
53
- caption: { size: 13, weight: 400, lineHeight: 1.50, use: "Helper text, metadata" }
54
- small: { size: 12, weight: 400, lineHeight: 1.40, use: "Legal, fine print" }
55
- amount: { size: 24, weight: 700, lineHeight: 1.20, use: "Balance and amount display" }
56
- spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 20, xl: 24, xxl: 32, section: 64 }
57
- rounded: { sm: 8, md: 12, lg: 16, full: 9999 }
58
- shadow:
59
- subtle: "0px 1px 2px rgba(0,0,0,0.04)"
60
- soft: "0px 2px 8px rgba(0,0,0,0.04)"
61
- lifted: "0px 4px 12px rgba(0,0,0,0.08)"
62
- modal: "0px 8px 24px rgba(0,0,0,0.12)"
112
+ family: { sans: "KakaoSmall", display: "KakaoBig" }
113
+ card-title: { size: 26, weight: 700, lineHeight: 1.38, tracking: -0.6, use: "Observed corporate-service card title only." }
114
+ public-body: { size: 14, weight: 400, lineHeight: 1.5, tracking: 0, use: "Observed corporate-service list and card copy only." }
115
+ utility: { size: 12, weight: 400, lineHeight: 1.5, tracking: -0.2, use: "Observed corporate-service utility link only." }
116
+ spacing: { compact: 4, control: 16, card: 32 }
117
+ rounded: { none: 0, card: 16, search: 18, action: 24, pill: 999 }
118
+ shadow: { none: "none" }
119
+ components_harvested: true
63
120
  components:
64
- button-primary: { type: button, bg: "#060b11", fg: "#ffffff", radius: 12, padding: "14px 20px", font: "16px/500", use: "Primary functional CTA on white" }
65
- button-brand-yellow: { type: button, bg: "#ffeb00", fg: "#060b11", radius: 12, padding: "14px 20px", font: "16px/700", use: "Kakao ecosystem moment, on dark" }
66
- button-secondary: { type: button, bg: "#ffffff", fg: "#060b11", radius: 12, padding: "14px 20px", font: "16px/500", use: "Secondary paired with primary, 1px border" }
67
- button-tertiary: { type: button, bg: "#f2f4f6", fg: "#060b11", radius: 12, padding: "14px 20px", font: "16px/500", use: "Low-emphasis action" }
68
- button-link: { type: button, bg: "transparent", fg: "#3182f6", font: "14px/500", use: "Inline text link" }
69
- card-standard: { type: card, bg: "#ffffff", radius: 16, padding: "20px", use: "Service tile, summary panel" }
70
- card-soft: { type: card, bg: "#f8f9fa", radius: 16, padding: "20px", use: "Grouped content, inset panel" }
71
- card-brand: { type: card, bg: "#1a1d24", fg: "#ffffff", radius: 20, padding: "24px", use: "Yellow-on-dark brand moment" }
72
- badge-neutral: { type: badge, bg: "#f2f4f6", fg: "#374151", radius: 9999, padding: "4px 10px", font: "12px/500", use: "Neutral metadata pill" }
73
- badge-brand: { type: badge, bg: "#fffbcc", fg: "#7f7600", radius: 9999, padding: "4px 10px", font: "12px/500", use: "Brand-tinted badge" }
74
- badge-success: { type: badge, fg: "#03b26c", radius: 9999, padding: "4px 10px", font: "12px/500", use: "Success badge" }
75
- badge-error: { type: badge, fg: "#f04452", radius: 9999, padding: "4px 10px", font: "12px/500", use: "Error badge" }
76
- input-default: { type: input, bg: "#ffffff", fg: "#060b11", radius: 12, padding: "14px 16px", font: "16px/400", use: "Form field, 52px height" }
77
- tab-bar: { type: tab, bg: "#ffffff", fg: "#6b7684", font: "11px/400", active: "#060b11 icon + #060b11 label", use: "Mobile app tab bar" }
121
+ corporate-menu: { type: button, bg: "#ffffff", fg: "#000000", radius: 999, padding: "4px 16px 6px", font: "17px/400 KakaoBig", states: "hover and pressed labels observed on .item_menu; the artifact contains no interaction snapshots.", use: "surface-3::[data-omd-capture=\"1\"] on the Kakao corporate service page, not a KakaoPay payment-app control." }
122
+ corporate-search: { type: button, bg: "#eeeeee", fg: "#333333", radius: 18, padding: "0px", font: "14px/400 KakaoSmall", states: "hover and pressed labels observed on .btn_search; the artifact contains no interaction snapshots.", use: "surface-3::[data-omd-capture=\"7\"] on the Kakao corporate service page." }
123
+ corporate-card: { type: card, bg: "#f3f3f3", fg: "#333333", radius: 16, padding: "0px", font: "14px/400 KakaoSmall", use: "surface-3::div.item_card_new.item_normal_card on the Kakao corporate service page." }
124
+ corporate-tag: { type: badge, bg: "#eeeeee", fg: "#000000", radius: 34, padding: "0px 15px", font: "13px/400 KakaoBig", use: "surface-3::[data-omd-capture=\"26\"].link_tag on the Kakao corporate service page." }
78
125
  ---
79
126
 
80
127
  # Design System Inspiration of KakaoPay
81
128
 
82
129
  ## 1. Visual Theme & Atmosphere
83
130
 
84
- KakaoPay's design occupies the warm, friendly end of the Korean fintech spectrum where Toss is bold and assertively spacious, KakaoPay is soft and conversationally legible. The web home opens with a near-white canvas (`#ffffff`) and a near-black-but-warm body color (`rgb(6, 11, 17)` ≈ `#060B11`), framed by a dark nav header and a soft off-white footer (`#F8F9FA`). The Kakao-ecosystem yellow (`#FFEB00`) is present as a brand anchor — but, by explicit accessibility decision, it is *not* the primary CTA color on functional surfaces. KakaoPay's design team has publicly committed to a minimum **3:1 contrast ratio** between graphics and background, which drove the brand to retreat from saturated yellow on UI chrome and toward warmer, softer paired neutrals.
131
+ KakaoPay is a Korean financial platform whose public main site presents everyday payment, money-management, and financial services under the line “마음 놓고 금융하다.” Its official payment page describes card- and cash-free payment, including biometric verification, while the partner site describes the merchant flow from a shopper’s payment click through authentication and completion. The current public expression therefore frames finance as an everyday action rather than as a separate institutional task. [Main site](https://www.kakaopay.com/main) · [Payment service](https://www.kakaopay.com/services/life/payment?t_ch=membership&t_src=homepage) · [Partner introduction](https://partner.kakaopay.com/partner/online/introduction)
85
132
 
86
- The defining typographic choice is **Noto Sans KR** a deliberately mainstream Korean-first system font choice, set with `system-ui` and `AppleSDGothicNeo` fallbacks. KakaoPay does not deploy a proprietary display face (unlike Toss's "Toss Product Sans" or Stripe's `sohne-var`). The choice is itself the statement: this is a financial app for *everyone in Korea*, including users on older Android devices, screen readers, and low-vision configurations. The body baseline is **14px** denser than Stripe's 16px web baseline and consistent with Korean web fintech convention. Section headings sit at **22px / weight 500 / line-height 1.45 / letter-spacing `-0.2px`** a moderate, friendly authority, not display-light (Stripe) and not display-bold (Toss financial amounts). Sub-menu labels run at **14px / weight 300** (inactive) and weight 500 (active group) the weight differential is how hierarchy gets communicated, not size.
87
-
88
- What distinguishes KakaoPay visually from its closest neighbors (Toss, Kakao Bank) is the **softness of the geometry**: rounded corners and rounded line work are stated principles, and the brand explicitly rejects sharp/aggressive shapes. Where Stripe runs 4px conservative radii and Toss runs 8–16px utilitarian rounding, KakaoPay's brand philosophy leans into the "둥글고 부드러운" (rounded and soft) idiom. Combined with the warm-neutral background and 3:1-minimum contrast targeting, the impression is of a financial product that has been deliberately de-tensed — engineered to feel low-stakes the moment you open it, even when the underlying action (transferring 5,000,000원) is high-stakes.
133
+ KakaoPay’s 2024 design article makes the visual rationale unusually explicit: graphics were rebuilt for accessibility and operational reuse, replacing black-line graphics with filled forms, requiring a minimum 3:1 contrast between graphic color and adjacent background, and separating graphics into icon, 2D, and 3D levels by information priority. It characterizes the desired expression as simple and clear, warm and soft in color, and rounded and soft in line. Those are editorial and graphic-system principles, not permission to infer a private payment-app component kit. The supplied capture covers the KakaoPay story and Kakao corporate service pages; its selector-backed controls come only from the latter.
89
134
 
90
135
  **Key Characteristics:**
91
- - Noto Sans KR primary, with `system-ui` / `AppleSDGothicNeo` fallback — Korean-first, accessibility-first
92
- - 14px web body baseline; 22px / weight 500 / `-0.2px` letter-spacing for section heads
93
- - Weight 300 / 500 dual-track for hierarchy; bold (700) reserved for emphasis and reverse-on-yellow
94
- - Kakao Yellow (`#FFEB00`) as ecosystem anchor — used decoratively / on dark brand chrome, not as default CTA
95
- - Warm soft neutrals (Ivory `#FEFFFA`, Wild Willow `#C5C17A`, Olive `#7F7600`) as the supporting palette
96
- - Minimum 3:1 contrast on graphics accessibility is documented and enforced
97
- - Rounded geometry across all components (cards, buttons, icons, illustrations)
98
- - Three-tier graphic system: Icon → 2D → 3D, applied by information density
136
+
137
+ - Everyday-finance product framing on official KakaoPay marketing and merchant surfaces
138
+ - Official graphic direction: clear filled forms, warm/soft color, rounded/soft lines
139
+ - A documented 3:1 minimum graphic-to-background contrast target
140
+ - Loaded KakaoSmall and KakaoBig on the captured corporate service page
141
+ - Corporate service controls, marketing content, developer documentation, and unobserved authenticated payment flows kept separate
99
142
 
100
143
  ## 2. Color Palette & Roles
101
144
 
102
- ### Primary
103
- - **Kakao Yellow** (`#FFEB00`): The brand anchor across the Kakao ecosystem. Used for logo, hero brand moments, and yellow-on-dark CTA in promotional surfaces. **Not** the default functional-UI CTA color — accessibility rules prohibit `#FFEB00` text on white and large-area `#FFEB00` for primary buttons without paired dark text.
104
- - **Deep Ink** (`#060B11`): `rgb(6, 11, 17)` — observed body text color on live `kakaopay.com`. The KakaoPay "near-black": a deep neutral with a faint blue undertone, warmer than pure `#000`.
105
- - **Pure White** (`#ffffff`): Page background, card surfaces.
106
-
107
- ### Brand Support
108
- - **Ivory** (`#FEFFFA`): Soft off-white surface tone alternative to pure white for sections that need warmth.
109
- - **Wild Willow** (`#C5C17A`): Muted yellow-green secondary pairs with yellow as a calmer adjacent tone.
110
- - **Olive** (`#7F7600`): Deep yellow-green — used for text-on-yellow, icon strokes against light yellow backgrounds, achieving the 3:1-minimum contrast against `#FFEB00`.
111
-
112
- ### Surface Neutrals
113
- - **Surface Footer** (`#F8F9FA`): Observed footer container background the canonical "secondary surface" tone.
114
- - **Surface Soft** (`#F2F4F6`): Light grey-blue panel background for cards and grouped content.
115
- - **Border Default** (`#E5E8EB`): 1px borders on inputs, cards, dividers.
116
- - **Border Subtle** (`#EEF0F3`): Inner dividers, list separators.
117
-
118
- ### Text Scale
119
- - **Heading Ink** (`#060B11`): Primary heading and body text on light surfaces.
120
- - **Heading on Dark** (`#F8F9FA`): Heading text on dark nav / dark brand sections.
121
- - **Body Slate** (`#374151`): Secondary body / longer-form copy.
122
- - **Caption Grey** (`#6B7684`): Captions, helper text, timestamps.
123
- - **Placeholder** (`#B0B8C1`): Form placeholders, muted hint text.
124
-
125
- ### Functional
126
- - **Success Green** (`#03B26C`): Confirmation states (transaction succeeded, savings goal hit).
127
- - **Error Red** (`#F04452`): Error states, declines, validation failures.
128
- - **Warning Amber** (`#FFA94D`): Warning states, deadline reminders. Distinct from brand yellow.
129
- - **Info Blue** (`#3182F6`): Informational links and tooltips on non-brand surfaces.
130
-
131
- ### Dark Nav / Hero
132
- - **Header Ink** (`#1A1D24`): Dark nav header background — near-black with warm undertone.
133
- - **Header Text** (`#FFFFFF`): Top-level nav links on dark header.
134
- - **Header Muted** (`rgba(255,255,255,0.6)`): Inactive top-level link state.
145
+ ### Observed corporate-service chrome
146
+
147
+ - **Ink** (`#000000`): observed menu text and dark menu fill on the Kakao corporate service page.
148
+ - **Text** (`#333333`): observed corporate-service control, card, and list text.
149
+ - **Muted** (`#666666`) and **subtle** (`#888888`): observed secondary corporate-service text.
150
+ - **Canvas** (`#ffffff`): observed corporate-service menu background.
151
+ - **Surface** (`#f3f3f3`): observed corporate-service menu-hover and service-card background.
152
+ - **Surface soft** (`#eeeeee`): observed corporate-service search and tag background.
153
+
154
+ ### Official graphic guidance
155
+
156
+ The official KakaoPay design article establishes contrast and a newly made graphic palette, but the readable article does not publish hexadecimal values for a general KakaoPay product palette. The catalog’s existing `primary_color` is not promoted into the reconciled token block, and no observed corporate value is relabeled as a payment-app CTA, semantic status color, or brand-color replacement.
135
157
 
136
158
  ## 3. Typography Rules
137
159
 
138
- ### Font Family
139
- - **Primary**: `"Noto Sans KR", system-ui, AppleSDGothicNeo, sans-serif` (observed)
140
- - **Numerals**: Same family; tabular numerals not enforced via OpenType on web financial amounts rely on rendering at consistent weight (500/700) and right alignment for column legibility.
141
- - **No proprietary display face.** Korean-first accessibility is the explicit reason.
142
-
143
- ### Hierarchy
144
-
145
- | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
146
- |------|------|------|--------|-------------|----------------|-------|
147
- | Display Hero | Noto Sans KR | 40-48px | 700 | 1.20 | -0.4px | Marketing hero; bold to anchor the warm-soft canvas |
148
- | Display Large | Noto Sans KR | 32px | 700 | 1.25 | -0.3px | Secondary marketing headlines |
149
- | Section Heading | Noto Sans KR | 22px | 500 | 1.45 (31.9px) | -0.2px | Observed nav megamenu H2 — the workhorse heading |
150
- | Sub-heading | Noto Sans KR | 18px | 500 | 1.40 | -0.1px | Card titles, group labels |
151
- | Body Strong | Noto Sans KR | 16px | 500 | 1.50 | normal | Important paragraph copy |
152
- | Body | Noto Sans KR | 14px | 400 | 1.50 | normal | Observed default Korean-web fintech baseline |
153
- | Body Light | Noto Sans KR | 14px | 300 | 1.57 (21.98px) | normal | Observed inactive nav link weight — secondary text |
154
- | Group Label | Noto Sans KR | 14px | 500 | 1.21 (16.94px) | normal | Observed H3 in megamenu — group-active label |
155
- | Caption | Noto Sans KR | 13px | 400 | 1.50 | normal | Helper text, metadata |
156
- | Small | Noto Sans KR | 12px | 400 | 1.40 | normal | Legal, fine print |
157
- | Financial Amount | Noto Sans KR | 24-30px | 700 | 1.20 | normal | Balance and amount display (in app) |
158
-
159
- ### Principles
160
- - **Weight differentiates, not size.** The most common KakaoPay pattern is 14px / weight 300 paired with 14px / weight 500 — same size, different hierarchy. Reduces visual noise.
161
- - **Negative tracking only at display.** Headings ≥22px use `-0.2px` to `-0.4px`; body keeps `letter-spacing: normal`. Korean glyphs are wider than Latin and over-tightening punishes legibility.
162
- - **Korean is the first audience.** Latin strings are styled to render adequately in Noto Sans KR's Latin glyphs — KakaoPay does not switch to a Latin-optimized fallback mid-sentence.
163
- - **Two-weight density.** 300 / 500 / 700 are the load-bearing weights; 400 is the neutral default for paragraph copy. Avoid stacking weights mid-paragraph for emphasis.
164
- - **No display-light.** Unlike Stripe's signature weight-300 headlines, KakaoPay's hero/display sits at 500-700. Light weight at display sizes would read as cold, contradicting the warm-friendly tone.
160
+ ### Evidence classes
161
+
162
+ - **Live computed surface-use:** **KakaoSmall** is computed on 156 elements and **KakaoBig** on 45 elements in the supplied three-route artifact. Both have a high-confidence loaded FontFaceSet match and Kakao CDN `@font-face` sources. This verifies their use on the captured story/corporate public surfaces, not in an authenticated KakaoPay app.
163
+ - **Official distributed brand asset and license:** Kakao’s official font resource describes Kakao Big as the display-oriented face and Kakao Small as the body/caption-oriented face. It says the pair is available under OFL for personal and commercial use. This parent-company distribution evidence explains the family and licensing boundary; it is not a statement that every Kakao service uses it. [Official font resource](https://www.kakaocorp.com/page/detail/11571)
164
+ - **Declared-only:** **KakaoDigitLatin** has four declared CDN font-face sources in the artifact but no visible computed use, so it is not a UI token.
165
+ - **Declared/system fallback:** Apple SD Gothic Neo, Malgun Gothic, and 맑은 고딕 occur after the loaded Kakao families in captured declarations. They are fallback context, not KakaoPay font substitutions.
166
+ - **Unresolved:** Helvetica Neue appears in a small number of computed observations without a matching loaded FontFace or source URL. It is omitted from tokens.
167
+
168
+ ### Observed hierarchy
169
+
170
+ | Role | Family | Size | Weight | Line height | Boundary |
171
+ |------|--------|------|--------|-------------|----------|
172
+ | Corporate card title | KakaoBig | 26px | 700 | 36px | `surface-3::strong.tit_card` only |
173
+ | Corporate public body | KakaoSmall | 14px | 400 | 21px | Corporate service lists and cards only |
174
+ | Corporate utility link | KakaoSmall | 12px | 400 | 18px | Corporate service utility links only |
165
175
 
166
176
  ## 4. Component Stylings
167
177
 
168
- ### Buttons
169
-
170
- **Primary (Functional UI)**
171
- - Background: `#060B11` (Deep Ink — preferred default on white surfaces, accessibility-safe)
172
- - Text: `#FFFFFF`
173
- - Padding: 14px 20px
174
- - Radius: 12px (rounded — matches "둥글고 부드러운" principle)
175
- - Font: 16px / weight 500 / Noto Sans KR
176
- - Height: 48px (touch-friendly)
177
- - Hover: opacity 0.9 / no color shift
178
- - Use: Primary action on light surface where Kakao Yellow would fail contrast ("확인", "다음", "송금하기")
179
-
180
- **Brand Yellow (Decorative / On Dark)**
181
- - Background: `#FFEB00`
182
- - Text: `#060B11` (dark ink — required for 3:1 contrast on yellow)
183
- - Padding: 14px 20px
184
- - Radius: 12px
185
- - Font: 16px / weight 700 / Noto Sans KR
186
- - Height: 48px
187
- - Use: Kakao-ecosystem moments (Kakao login, brand promotion, marketing-page hero CTA on dark canvas). **Never** white text on yellow.
188
-
189
- **Secondary / Outline**
190
- - Background: `#FFFFFF`
191
- - Text: `#060B11`
192
- - Padding: 14px 20px
193
- - Radius: 12px
194
- - Border: `1px solid #E5E8EB`
195
- - Font: 16px / weight 500
196
- - Use: Secondary action paired with a primary CTA
197
-
198
- **Tertiary / Soft**
199
- - Background: `#F2F4F6`
200
- - Text: `#060B11`
201
- - Padding: 14px 20px
202
- - Radius: 12px
203
- - Border: none
204
- - Font: 16px / weight 500
205
- - Use: Low-emphasis action, "더보기", "취소"
206
-
207
- **Link Inline**
208
- - Background: transparent
209
- - Text: `#3182F6`
210
- - Padding: 0
211
- - Underline: on hover only
212
- - Font: 14px / weight 500
213
- - Use: Inline text link inside paragraph copy
214
-
215
- ### Cards & Containers
216
-
217
- **Standard Card**
218
- - Background: `#FFFFFF`
219
- - Border: `1px solid #EEF0F3`
220
- - Radius: 16px (rounded-soft)
221
- - Padding: 20px
222
- - Shadow: `0px 2px 8px rgba(0, 0, 0, 0.04)` (very subtle — soft elevation, not dramatic)
223
- - Use: Service tile, summary panel, content block
224
-
225
- **Soft Card** (grouped content)
226
- - Background: `#F8F9FA`
227
- - Border: none
178
+ ### Kakao corporate service page
179
+
180
+ **Menu action — observed default**
181
+ - Background: `#ffffff`
182
+ - Text: `#000000`
183
+ - Radius: 999px
184
+ - Padding: 4px 16px 6px
185
+ - Font: 17px / 400 / KakaoBig
186
+ - Hover: `#f3f3f3` background (collector label)
187
+ - Pressed: collector label observed; no separate snapshot value captured
188
+ - Use: `surface-3::[data-omd-capture="1"]` (`.item_menu`) on `www.kakaocorp.com/page/service/service/KakaoPay`; this is corporate navigation chrome.
189
+
190
+ **Search action observed default**
191
+ - Text: `#333333`
192
+ - Radius: 18px
193
+ - Padding: 0px
194
+ - Font: 14px / 400 / KakaoSmall
195
+ - Hover: `#eeeeee` background (collector label)
196
+ - Pressed: collector label observed; no separate snapshot value captured
197
+ - Use: `surface-3::[data-omd-capture="7"]` (`.btn_search`) on the same corporate service page.
198
+
199
+ **Service card — observed default**
200
+ - Background: `#f3f3f3`
201
+ - Text: `#333333`
228
202
  - Radius: 16px
229
- - Padding: 20px
230
- - Shadow: none elevation conveyed by background contrast only
231
- - Use: Inset panel, FAQ row, grouped form section
232
-
233
- **Brand Card** (yellow-on-dark moment)
234
- - Background: `#1A1D24`
235
- - Border: none
236
- - Radius: 20px
237
- - Padding: 24px
238
- - Text: `#FFFFFF` with `#FFEB00` accent for the brand-moment headline
239
- - Use: Hero promotional card, Kakao-ecosystem feature spotlight
240
-
241
- ### Badges / Tags / Pills
242
-
243
- **Neutral Badge**
244
- - Background: `#F2F4F6`
245
- - Text: `#374151`
246
- - Padding: 4px 10px
247
- - Radius: 9999px (pill — matches rounded principle)
248
- - Font: 12px / weight 500
249
-
250
- **Brand Badge**
251
- - Background: `#FFFBCC` (yellow-tinted 12% surface)
252
- - Text: `#7F7600` (Olive — clears 3:1 contrast on the tinted background)
253
- - Padding: 4px 10px
254
- - Radius: 9999px
255
- - Font: 12px / weight 500
256
-
257
- **Success Badge**
258
- - Background: `rgba(3, 178, 108, 0.12)`
259
- - Text: `#03B26C`
260
- - Padding: 4px 10px
261
- - Radius: 9999px
262
- - Font: 12px / weight 500
263
-
264
- **Error Badge**
265
- - Background: `rgba(240, 68, 82, 0.10)`
266
- - Text: `#F04452`
267
- - Padding: 4px 10px
268
- - Radius: 9999px
269
- - Font: 12px / weight 500
270
-
271
- ### Inputs & Forms
272
- - Background: `#FFFFFF`
273
- - Border: `1px solid #E5E8EB`
274
- - Radius: 12px
275
- - Padding: 14px 16px
276
- - Height: 52px
277
- - Focus: `1px solid #060B11` (no yellow ring — contrast safety)
278
- - Label: 13px / weight 500 / `#6B7684`, sits above field
279
- - Text: 16px / weight 400 / `#060B11`
280
- - Placeholder: `#B0B8C1`
281
- - Error: 1px solid `#F04452` + 13px error helper text in `#F04452` below
282
-
283
- ### Navigation
284
-
285
- **Web Header (observed)**
286
- - Background: `#1A1D24` (dark)
287
- - Height: 84px
288
- - Text: `#FFFFFF` for top-level links
289
- - Top-level link: 16px / weight 300 / line-height 84px (centered vertically by line-height)
290
- - Megamenu H2 group header: 22px / weight 500 / letter-spacing `-0.2px` / color `#F8F9FA`
291
- - Megamenu H3 sub-group label: 14px / weight 500 / 8px horizontal padding / color `#FFFFFF`
292
- - Megamenu link (inactive): 14px / weight 300 / `#060B11` on white megamenu drop
293
- - Logo position: left
294
- - No CTA in primary nav (KakaoPay app install is bottom-of-page or floating)
295
-
296
- **Mobile / App Tab Bar**
297
- - Background: `#FFFFFF`
298
- - Top border: `1px solid #EEF0F3`
299
- - Height: 56px (+ safe-area)
300
- - Tab icon: 24px, weight handled by 3-tier graphic system (Icon variant)
301
- - Active tab: `#060B11` icon + 11px / weight 500 label `#060B11`
302
- - Inactive tab: `#B0B8C1` icon + 11px / weight 400 label `#6B7684`
303
-
304
- ### Iconography (3-Tier System)
305
- - **Icon (UI tier):** 24px solid-fill monoline, `#060B11` on light / `#FFFFFF` on dark. Used for inline actions, tab bar, list rows.
306
- - **2D Graphic:** Solid-fill illustration ~80–120px, multi-color from the warm-soft palette. Used for empty states and feature cards.
307
- - **3D Graphic:** Rendered illustration ~160–240px, used for hero / onboarding only. Always paired with a single supporting sentence — never decorative.
203
+ - Padding: 0px
204
+ - Font: 14px / 400 / KakaoSmall
205
+ - Use: `surface-3::div.item_card_new.item_normal_card`, a corporate Kakao service-directory card.
206
+
207
+ **Topic tag observed default**
208
+ - Background: `#eeeeee`
209
+ - Text: `#000000`
210
+ - Radius: 34px
211
+ - Padding: 0px 15px
212
+ - Font: 13px / 400 / KakaoBig
213
+ - Use: `surface-3::[data-omd-capture="26"]` (`.link_tag`) on the corporate service page.
214
+
215
+ The collector records no interaction snapshots (`interactionCount: 0`). Hover and pressed labels above are preserved as labels rather than expanded into unobserved variants. No selector-backed KakaoPay payment-app button, input, receipt, account card, transaction row, toast, sheet, error, success, or mobile navigation component was captured.
308
216
 
309
217
  ---
218
+ **Verified:** 2026-07-13
219
+ **Tier 1 sources:** https://www.kakaopay.com/main; https://www.kakaopay.com/services/life/payment?t_ch=membership&t_src=homepage; https://story.kakaopay.com/; https://story.kakaopay.com/225-kakaopay-design/; https://www.kakaocorp.com/page/service/service/KakaoPay; https://www.kakaocorp.com/page/detail/11571; https://developers.kakaopay.com/docs/payment/online/reference
220
+ **Tier 2 sources:** https://getdesign.md/kakaopay (attempted through built-in web search; no usable record returned); https://styles.refero.design/?q=kakaopay (attempted through built-in web search; no usable style record returned)
221
+ **Conflicts unresolved:** none
310
222
 
311
- **Verified:** 2026-05-13 (CREATE Apple-tier)
312
- **Tier 1 sources:** `https://www.kakaopay.com/` (live DOM via playwright — body font `Noto Sans KR`, body color `rgb(6,11,17)`, header 84px dark, megamenu H2 22px·500·-0.2px, footer `#F8F9FA`); `https://story.kakaopay.com/225-kakaopay-design/` (official KakaoPay design blog — three pillars, 3:1 contrast commitment, Icon→2D→3D hierarchy); `https://www.kakaocorp.com/page/service/service/KakaoPay` (service taglines and IA); WebSearch corroboration on brand color `#FFEB00` + Wild Willow / Ivory / Olive supporting palette.
313
- **Tier 2 sources:** `getdesign.md/kakaopay` — verified explicitly empty ("No designs found for 'kakaopay'", 2026-05-13). `styles.refero.design/?q=kakaopay` and `?q=카카오페이` — both verified empty via playwright 2026-05-13.
314
- **Tier 2b status:** unavailable. Tier 1 (live DOM + official `story.kakaopay.com` design blog + Kakao Corp service page + brand-color aggregator) treated as authoritative per pipeline.
315
- **Conflicts unresolved:** none. Live DOM (warm-neutral + dark-ink primary, no yellow on functional CTAs) is fully consistent with the blog-stated accessibility policy (3:1 minimum, yellow retreat from primary functional UI). The yellow stays as a brand-anchor / ecosystem cue, not a CTA token.
316
- **Note on KPDS:** No public KakaoPay Design System docs site discovered. Design knowledge is published as narrative posts on `story.kakaopay.com`, not as a public token registry.
317
- **`_research.md`:** `web/references/kakaopay/_research.md`
223
+ The previous reference mixed unsupported Noto Sans KR, inferred payment-app components, semantic colors, motion, and responsive rules into public/corporate evidence. This update retains selector- and source-backed values at their own source-domain boundary.
318
224
 
319
225
  ## 5. Layout Principles
320
226
 
321
- ### Spacing System
322
- - Base unit: 4px
323
- - Common scale: 4 / 8 / 12 / 16 / 20 / 24 / 32 / 40 / 48 / 64
324
- - Section v-padding: 64px desktop / 40px mobile
325
- - Card internal padding: 20px standard, 24px featured
326
- - Form field stacking: 16px gap between fields, 8px gap between label and field
327
-
328
- ### Grid & Container
329
- - Web max content width: ~1200px
330
- - Mobile baseline: 360px (wider than Toss's 375px to accommodate older Android target)
331
- - Horizontal padding: 20px mobile / 40px tablet / centered on desktop
332
- - Megamenu drop: full-width, internal column gap 32px
333
-
334
- ### Whitespace Philosophy
335
- - **Soft density.** KakaoPay sits between Stripe's airy editorial spacing and a typical Korean banking site's information-dense tables. Lists and transaction rows are tight (52–56px rows) but section breaks are generous (64px) — the rhythm tells users *"we're in a list now"* vs *"new topic, breathe"*.
336
- - **Yellow as punctuation.** Brand yellow is reserved for moments — a hero card, a Kakao login button, an icon highlight. It never tiles. Tiling yellow would fail accessibility and lose its function as an attention anchor.
337
- - **Rounded everywhere, but not pill-everywhere.** Cards round at 16px, buttons at 12px, badges at 9999px (pill). The rounding scale is itself a hierarchy.
338
-
339
- ### Border Radius Scale
340
- - Compact (8px): Inputs, small chips, inline elements
341
- - Standard (12px): Buttons, small cards
342
- - Comfortable (16px): Standard cards, modal sheets
343
- - Large (20-24px): Featured brand cards, bottom sheets
344
- - Pill (9999px): Badges, toggle switches, floating action chips
227
+ The supplied artifact has a corporate service page, a KakaoPay story home, and a KakaoPay design article. It does not expose an authenticated product layout. The selector-backed corporate card uses 32px horizontal inner-card padding, while observed spacing values also include 4px and 16px in public controls. No payment-app grid, safe-area rule, checkout layout, or responsive breakpoint is asserted.
345
228
 
346
229
  ## 6. Depth & Elevation
347
230
 
348
- | Level | Treatment | Use |
349
- |-------|-----------|-----|
350
- | Flat (Level 0) | No shadow | Page background, inline text, footer panels |
351
- | Subtle (Level 1) | `0px 1px 2px rgba(0, 0, 0, 0.04)` | Resting card, list separation hint |
352
- | Soft (Level 2) | `0px 2px 8px rgba(0, 0, 0, 0.04)` | Standard card on white |
353
- | Lifted (Level 3) | `0px 4px 12px rgba(0, 0, 0, 0.08)` | Dropdown, popover, hover state |
354
- | Sheet (Level 4) | `0px -4px 16px rgba(0, 0, 0, 0.08)` | Bottom sheet (negative-Y shadow) |
355
- | Modal (Level 5) | `0px 8px 24px rgba(0, 0, 0, 0.12)` | Centered modal, blocking dialog |
356
-
357
- **Shadow Philosophy**: KakaoPay's shadows are explicitly *quiet*. Pure-black at very low opacity — softer than Toss (which is already restrained) and dramatically softer than Stripe's blue-tinted multi-layer system. The reasoning is the same as the typography rationale: in a payment app, dramatic depth reads as decoration, and decoration reads as untrustworthy. Elevation is communicated more through background contrast (`#F8F9FA` panel on `#FFFFFF` page) than through shadow weight.
358
-
359
- ### Background Layering
360
- - Page: `#FFFFFF`
361
- - Inset section / footer-like surface: `#F8F9FA`
362
- - Grouped soft card: `#F2F4F6`
363
- - Dark brand band: `#1A1D24` (white text on top)
231
+ The representative captured controls and card use `box-shadow: none`. No public evidence in this pass establishes a KakaoPay elevation scale, modal shadow, bottom sheet, or floating action treatment.
364
232
 
365
233
  ## 7. Do's and Don'ts
366
234
 
367
235
  ### Do
368
- - Use Noto Sans KR with system fallbacks — Korean-first, accessibility-first
369
- - Use Deep Ink (`#060B11`) for primary CTA on white surfaces (default), reserve yellow for brand moments on dark canvas
370
- - Pair Kakao Yellow (`#FFEB00`) only with Deep Ink text or Olive (`#7F7600`) iconography — never white text on yellow
371
- - Apply rounded geometry: 12px buttons, 16px cards, 9999px badges
372
- - Use weight (300 / 500) as the primary hierarchy lever — same size, different weight
373
- - Verify 3:1 minimum contrast on every graphic-on-background pairing
374
- - Use soft, single-layer shadows (`0px 2px 8px rgba(0,0,0,0.04)`) for cards
375
- - Layer surfaces using background tones (`#FFFFFF` → `#F8F9FA` → `#F2F4F6`) before reaching for shadow
376
- - Use the Icon → 2D → 3D graphic hierarchy by surface importance
236
+
237
+ - Use the official graphic direction—clear filled forms, warm/soft color, and rounded/soft lines—when a task is specifically about KakaoPay graphics.
238
+ - Check graphic/background contrast against the official 3:1 minimum described by KakaoPay.
239
+ - Keep KakaoSmall/KakaoBig claims tied to the captured public/corporate surfaces and their official distribution context.
240
+ - Preserve the provenance of the four recorded corporate controls.
377
241
 
378
242
  ### Don't
379
- - Don't put white text on `#FFEB00` — fails contrast, breaks the accessibility commitment
380
- - Don't use Kakao Yellow as the default CTA color on functional UI — it is decorative / ecosystem-anchor, not a primary-action token
381
- - Don't apply display-light weight (200/300) to headings KakaoPay's tone is friendly-warm, not editorial-cool
382
- - Don't tighten Korean text below `-0.2px` Korean glyphs need the breathing room
383
- - Don't use sharp 0–4px radii on cards or buttons contradicts the stated "둥글고 부드러운" principle
384
- - Don't use multi-layer or colored shadows — KakaoPay's elevation is single-layer soft black
385
- - Don't mix illustration tiers within one screen — pick Icon *or* 2D *or* 3D per surface, by information density
386
- - Don't use Kakao Yellow as background for body text — even with Deep Ink, large yellow surfaces fatigue the eye and crowd out information
243
+
244
+ - Do not treat corporate directory chrome as a KakaoPay authenticated payment screen.
245
+ - Do not substitute a system font and call it KakaoSmall or KakaoBig.
246
+ - Do not invent payment states, semantic colors, responsive rules, or component variants from the marketing article.
247
+ - Do not promote KakaoDigitLatin or Helvetica Neue into the UI family without visible loaded use.
387
248
 
388
249
  ## 8. Responsive Behavior
389
250
 
390
- ### Breakpoints
391
- | Name | Width | Key Changes |
392
- |------|-------|-------------|
393
- | Mobile (Primary) | <600px | 360px baseline, single column, 20px h-padding |
394
- | Tablet | 600–960px | 2-column service grid, 32px h-padding |
395
- | Desktop | 960–1280px | Full layout, megamenu, ~1200px max content width |
396
- | Large Desktop | >1280px | Centered content, generous outer margin |
397
-
398
- ### Touch Targets
399
- - Buttons: 48px (standard), 56px (primary mobile CTA)
400
- - List rows: 56px minimum (52px content + 4px padding)
401
- - Tab bar items: 56px tall + safe-area
402
- - Icon buttons: 44×44px tap target even when icon is 24px
403
-
404
- ### Collapsing Strategy
405
- - Desktop megamenu → mobile drawer (slide-in from right)
406
- - Three-column service grid → two-column → single column
407
- - Hero 3D graphic scales down to 2D variant on mobile
408
- - Bottom sheet replaces centered modal on mobile
409
- - Sticky bottom CTA bar with safe-area insets on all mobile screens
410
-
411
- ### Image Behavior
412
- - Service icons render at 24px / 32px / 40px depending on context
413
- - 2D graphics scale fluidly within a max-width box; never stretch beyond intrinsic resolution
414
- - 3D graphics are PNG with transparency; replaced with 2D variant below mobile breakpoint
415
- - Brand logo: 80px wide on desktop, 64px on mobile, never below 48px
251
+ No mobile viewport or responsive-state evidence is included in the supplied artifact. The official product and partner pages establish that payment is offered across PC, mobile web, and mobile app contexts, but they do not provide a public responsive component specification in the material reviewed here.
416
252
 
417
253
  ## 9. Agent Prompt Guide
418
254
 
419
- ### Quick Color Reference
420
- - Primary CTA (functional UI): Deep Ink (`#060B11`)
421
- - Primary CTA (brand moment / Kakao ecosystem): Kakao Yellow (`#FFEB00`) with Deep Ink text
422
- - Background: Pure White (`#FFFFFF`)
423
- - Surface Soft: `#F8F9FA`
424
- - Surface Grouped: `#F2F4F6`
425
- - Heading: `#060B11`
426
- - Body: `#374151`
427
- - Caption: `#6B7684`
428
- - Border: `#E5E8EB`
429
- - Success: `#03B26C`
430
- - Error: `#F04452`
431
- - Warning: `#FFA94D`
432
- - Info Link: `#3182F6`
433
- - Brand Dark: `#1A1D24`
434
- - Brand Accent (text on yellow): Olive `#7F7600`
435
-
436
- ### Example Component Prompts
437
- - "Create a hero card: white background, 16px radius, 24px padding, 1px solid #EEF0F3 border. Headline 22px Noto Sans KR weight 500, color #060B11, letter-spacing -0.2px. Subtitle 14px weight 300, color #6B7684. Primary CTA: #060B11 background, white text, 16px weight 500, 12px radius, 14px 20px padding, 48px height."
438
- - "Build a Kakao-login button: #FFEB00 background, #060B11 text, 16px weight 700, 12px radius, 48px height, 14px 20px padding. Logo glyph on left at 20px, 8px gap to label. Hover: opacity 0.9."
439
- - "Design a transaction row: 56px height, full-width, 16px h-padding. Left: 32px circle icon. Middle: name 14px weight 500 #060B11 + category 13px weight 300 #6B7684. Right: amount 15px weight 700, #F04452 expense / #03B26C income, right-aligned."
440
- - "Create an inset section: #F8F9FA background, 16px radius, 20px padding, no shadow. Group label 14px weight 500 #060B11. Body 14px weight 400 #374151 line-height 1.50."
441
- - "Design a brand-yellow promotional card: #1A1D24 background, 20px radius, 24px padding. Headline 24px weight 700 #FFFFFF with #FFEB00 word accent. Subtitle 14px weight 400 rgba(255,255,255,0.7). CTA: #FFEB00 bg, #060B11 text, weight 700, 12px radius."
442
-
443
- ### Iteration Guide
444
- 1. Always Noto Sans KR with system fallbacks — never substitute a Latin-first display face
445
- 2. Use weight 300 / 500 / 700 as hierarchy; weight 400 only for paragraph body
446
- 3. Primary CTA defaults to Deep Ink (`#060B11`) on white surfaces; yellow only when paired with dark text on dark canvas
447
- 4. Verify every yellow-adjacent pairing clears 3:1 contrast — this is a stated brand commitment
448
- 5. Radius: 8px inputs, 12px buttons, 16px cards, 9999px badges
449
- 6. Shadows are single-layer black at ≤0.08 opacity; never tinted, never multi-layer
450
- 7. Surface hierarchy: `#FFFFFF` → `#F8F9FA` → `#F2F4F6` → `#1A1D24` for dark brand bands
451
- 8. Pick one graphic tier per surface (Icon *or* 2D *or* 3D), do not mix
452
- 9. Korean and Latin in the same line render in Noto Sans KR; do not split families
453
-
454
- ---
255
+ Use this reference as a bounded public-surface guide. For a corporate-service-style menu, use a white `#ffffff` pill with black `#000000` text, 999px radius, 4px 16px 6px padding, and 17px KakaoBig only with the documented corporate-page provenance. For product work, keep the official graphic principles—clarity, warm/soft color, rounded/soft lines, and graphic contrast—separate from unobserved financial-app controls.
455
256
 
456
257
  ## 10. Voice & Tone
457
258
 
458
- KakaoPay speaks like a knowledgeable friend who happens to live inside KakaoTalk warm, conversational, slightly informal, never officious. Where Toss reads as "calm fiduciary" and Kakao Bank reads as "young but precise bank," KakaoPay's register is closer to *"the helpful friend who also handles your bills."* The official taglines *"마음 놓고 금융하다"* and the English *"Effortless finance"* both carry that low-friction promise: the verb is `금융하다` (to do finance) rendered casually, not `금융 서비스` (financial services) rendered formally. The voice rejects two opposite failure modes: the cold institutional Korean of legacy banks (`고객님께서는`, `~하시기 바랍니다`) and the over-friendly emoji-heavy Korean of casual messengers. KakaoPay sits at the middle: polite `~요` endings, exact numerals, no exclamation points on routine actions.
459
-
460
- | Context | Tone |
461
- |---|---|
462
- | CTAs | Imperative Korean verb form (`송금하기`, `결제하기`, `확인`, `다음`). No "Get started!" |
463
- | Success messages | Past-tense polite (`송금이 완료되었어요`, `결제가 완료되었어요`). One sentence, no emoji on money. |
464
- | Error messages | Specific + blameless + actionable. Never `오류가 발생했습니다`. |
465
- | Onboarding | Conversational `~요` endings, one idea per screen. The friend explaining, not the manual instructing. |
466
- | Financial amounts | Bare numerals with comma separators + `원`. `1,240,000원`. Never `약` (approximately) on money. |
467
- | Empty states | Explain the *why* in one warm sentence (`아직 거래내역이 없어요`), offer one action. Never `데이터가 없습니다`. |
468
- | Legal / disclosure | Korean financial-regulation formal tone — `합니다` endings. The single exception. |
469
- | Marketing copy | Casual-warm — short sentences, concrete benefits, occasional rhetorical questions. Never superlative. |
470
- | Push notification | `~요` endings, exact and useful. `오늘 카드값 결제 예정이에요. 잔액을 확인해주세요.` |
471
-
472
- **Forbidden phrases.** `오류가 발생했습니다` (vague error), `약 ~원` (approximation on money), excessive `~ㅎㅎ`/`~ㅋㅋ` (over-casual on financial context), brand-yellow emoji as ornament, `incredible` / `amazing` superlatives in English strings, `Oops!` in English errors. Toss-style declarative imperatives without `~요` are out of voice — KakaoPay is warmer than Toss by a notch.
259
+ Official public copy frames the service as “마음 놓고 금융하다” and explains payment with direct, everyday language such as paying without cards or cash. The partner surface similarly uses short, instructional statements for merchant onboarding. That supports a plain, reassuring public register; it does not establish a private in-app microcopy guide. [Main site](https://www.kakaopay.com/main) · [Partner introduction](https://partner.kakaopay.com/partner/online/introduction)
473
260
 
474
261
  ## 11. Brand Narrative
475
262
 
476
- KakaoPay (카카오페이) is operated by **Kakao Pay Corp.**, a subsidiary of **Kakao Corp.** the company behind KakaoTalk, the messaging app that effectively *is* Korean smartphone communication ([Kakao Corp service page](https://www.kakaocorp.com/page/service/service/KakaoPay)). KakaoPay launched in **2014** as a money-transfer feature inside KakaoTalk, was spun out into Kakao Pay Corp. in 2017, and **listed on KOSPI in November 2021** — at the time, the largest fintech IPO in Korean history. The product's foundational distribution advantage was the same insight that built every Kakao service: *the messenger is already open on every Korean phone — make the financial action happen where the conversation already happens.*
263
+ KakaoPay presents payment, money management, and financial services as activities that can sit inside everyday life. Its official payment page focuses on immediate payment and biometric verification, while its partner page describes a four-step online-payment journey from a merchant checkout click to completion. [Payment service](https://www.kakaopay.com/services/life/payment?t_ch=membership&t_src=homepage) · [Partner introduction](https://partner.kakaopay.com/partner/online/introduction)
477
264
 
478
- Where **Toss** was founded as an explicit rejection of legacy-bank UX (Lee Seung-gun built Viva Republica precisely because Korean banking websites required Active-X plugins and 12-digit account numbers), **KakaoPay** was founded as an extension of an existing trust relationship. Users were already in KakaoTalk; KakaoPay just added "send money in the chat." That genealogical difference shows up in the design system to this day. Toss's restraint is the restraint of an outsider proving that finance can feel light. KakaoPay's warmth is the warmth of an insider product that inherited 50M+ existing relationships from KakaoTalk — its job is to feel like a natural continuation, not a contrarian alternative.
479
-
480
- As of 2025, KakaoPay reports tens of millions of registered users and offers transfer, in-store and online payment, membership and rewards (카카오페이 머니), bill payment, investing (via Kakao Pay Securities), lending, insurance brokerage, and credit scoring — a super-app footprint comparable to Toss's. The company is publicly listed and has an established **Information Security Management System (ISMS)** certification, a Korean Financial Services Commission license, and ongoing strategic alliances (e.g., the 2025 announcement with HD Hyundai Electric for Kakao Pay Point Integration, surfaced on the Kakao Corp service page).
481
-
482
- What KakaoPay refuses: the cold institutional Korean of legacy banks, the high-contrast saturation that makes a fintech app "feel young" but punishes low-vision users, sharp aggressive geometry, and emoji-heavy over-friendliness on money-handling screens. What KakaoPay embraces: Korean-first typography (Noto Sans KR over a proprietary Latin face), three-tier graphic hierarchy (Icon → 2D → 3D), warm-soft palette in service of a stated 3:1 minimum contrast policy, and rounded geometry as a brand-level commitment.
265
+ Its design story adds a complementary rationale: accessibility and operational efficiency were explicit goals of a graphic-system redesign, and the work continues as the service evolves. That evidence supports the narrative of accessible, reusable graphic communication; it does not substantiate historical, market-share, or user-persona claims not present in these sources. [Design story](https://story.kakaopay.com/225-kakaopay-design/)
483
266
 
484
267
  ## 12. Principles
485
268
 
486
- 1. **Inclusion is the design system.** KakaoPay has stated publicly (`story.kakaopay.com/225-kakaopay-design/`) that "design for everyone" is the brand commitment — not a feature, the brand. The 3:1 minimum contrast on graphics is enforced; legacy yellow palettes that failed it were retired. Accessibility is not a layer applied at the end. It is the constraint that shapes the palette.
487
- 2. **Warmth, not formality.** The voice is `~요` polite-casual, not `~합니다` formal. The geometry is rounded, not orthogonal. The color is warm-soft (Ivory, Wild Willow, Olive) before it is bright. The friendly fintech register is intentional and differentiates KakaoPay from Toss (cool-calm) and Kakao Bank (precise-young).
488
- 3. **Yellow is anchor, not action.** Kakao Yellow `#FFEB00` is the brand's ecosystem signal — it tells users "this is part of Kakao." It is not the default CTA color on functional UI, because saturated yellow on white fails accessibility and because the primary action should be the calmest possible target. Yellow gets a moment; it does not get every button.
489
- 4. **Korean first, Korean always.** Noto Sans KR is the primary face, and Korean glyph metrics drive typographic decisions (no aggressive negative tracking, ample line-height). KakaoPay is not a Latin app that ships a Korean translation; it is a Korean app that renders Latin as a courtesy.
490
- 5. **Hierarchy by weight, not by size.** The 14px / 300 vs 14px / 500 pattern is everywhere in the live DOM. Reducing reliance on size differences keeps the page calm and lets density rise in service screens without screaming.
491
- 6. **Three tiers of graphics, picked by surface.** Icon for UI chrome, 2D for empty states and feature cards, 3D for hero and onboarding only. Mixing tiers on a single surface produces visual noise; picking the right tier is itself a design decision.
492
- 7. **Quiet shadows.** Single-layer pure-black at ≤0.08 opacity. Stacking shadows or tinting them adds decoration without earning trust. Background contrast (`#FFFFFF` → `#F8F9FA`) does the work of "elevation" wherever possible.
493
- 8. **Rounded geometry is a brand commitment.** "둥글고 부드러운 라인" is the stated principle, and it is held consistently from buttons (12px) to cards (16px) to badges (pill). Sharp 0–4px corners read as competitor brand language; KakaoPay does not borrow it.
494
- 9. **Density inside, breathing outside.** Within a list or transaction row, KakaoPay is dense (56px rows, 4px internal gaps). Between sections, KakaoPay breathes (64px). The rhythm itself is a wayfinding signal.
269
+ 1. **Graphic accessibility is a product concern.** The official article requires at least 3:1 contrast between a graphic color and adjacent background. *UI implication:* measure graphic contrast instead of assuming yellow or any other familiar brand cue will work in context.
270
+ 2. **Make graphic information clear.** KakaoPay describes replacing black-line graphics with filled forms to reduce visual collision with text. *UI implication:* preserve a clear text/graphic distinction when using the documented graphic approach.
271
+ 3. **Match visual detail to information priority.** The article differentiates icon, 2D, and 3D graphic levels. *UI implication:* do not mix tiers merely as decoration; choose the level for the information hierarchy.
272
+ 4. **Support reuse without flattening context.** The redesign consolidated more than one thousand graphics for organization-wide use. *UI implication:* retain source and context metadata when reusing an observed asset or control.
495
273
 
496
274
  ## 13. Personas
497
275
 
498
- *Personas below are fictional archetypes informed by publicly observable KakaoPay user segments (mass-market Korean smartphone users, KakaoTalk-native communicators, older users brought in through ecosystem familiarity, small-business merchants accepting KakaoPay), not individual people.*
499
-
500
- **현주 (Hyeonju), 33, Suwon.** Office worker at a mid-size company. Has had KakaoPay installed since 2018 because her university friends used the KakaoTalk chat-room split-bill feature. Sends money 4–6 times a week (lunch, coffee, monthly rent share with roommate). Has never opened a dedicated banking app to do a transfer — KakaoPay opens directly into the chat where the request came from. Expects the app to feel like a continuation of KakaoTalk, not a separate financial product.
501
-
502
- **진수 아저씨 (Mr. Jinsu), 58, Daejeon.** Runs a 김밥 (kimbap) shop with his wife. His daughter set up KakaoPay for him three years ago specifically so customers could pay by QR code without his shop needing a physical card reader. Uses KakaoPay almost exclusively for receiving payments and checking the daily ledger. Trusts the yellow logo because his customers trust the yellow logo. Would never switch to a payment provider whose brand recognition is lower than Kakao's, regardless of the fees.
503
-
504
- **서연 (Seoyeon), 24, Seoul.** University student, communications major. Has both KakaoPay and Toss installed. Uses Toss for investing (because the investing UI is denser and more powerful) and KakaoPay for daily transfers (because every chat room split-bill goes through KakaoPay). Does not see this as a contradiction — the two apps occupy different mental categories. Notices when a friend's transfer message arrives in a chat and the "Pay" button is one tap away; if she had to open Toss to respond, she'd take three times longer.
505
-
506
- **민영 어머니 (Mrs. Minyoung), 67, Busan.** Retired teacher. Her son installed KakaoPay so she could pay her grandchildren's allowance through the chat. She trusts the yellow logo because she has trusted KakaoTalk for a decade. The 3:1 minimum contrast commitment is invisible to her by design — she only notices that the buttons are large enough to read and the icons don't blur into the background. Has never used the investing surface; the app is correctly invisible to her there because the home screen doesn't push it on her.
276
+ No official persona research was reviewed in this reverify packet. The public sources identify broad audiences—people using KakaoPay for everyday payments and merchants integrating online payments—but do not support named, demographic, or behavioral personas. Those fields remain intentionally unfilled rather than fabricated.
507
277
 
508
278
  ## 14. States
509
279
 
510
- | State | Treatment |
511
- |---|---|
512
- | **Empty (no transactions yet)** | Centered 2D graphic (~120px) in warm-soft palette. One sentence in `#060B11` 16px weight 500: `아직 거래내역이 없어요.` Sub-line `#6B7684` 14px weight 400: `친구나 가족에게 송금을 시작해보세요.` One secondary outline CTA: `송금하기`. No 3D, no emoji, no exclamation. |
513
- | **Empty (filter cleared)** | Single-line `#6B7684` 14px caption: `조건에 맞는 결과가 없어요.` No graphic, no button — user adjusts the filter. |
514
- | **Loading (first paint)** | Skeleton blocks at exact final dimensions in `#F2F4F6`. 1.2s shimmer with 8% white linear-gradient. Financial amounts render as `--` until resolved — never as skeleton widths (a wide skeleton that shrinks looks like a bug). |
515
- | **Loading (pull-to-refresh)** | Top pull-down spinner using the Kakao Yellow as a wedge in a black circle (the one place yellow shows up at small sizes on white). Previous content stays visible. |
516
- | **Error (inline field)** | `#F04452` 1px border on field + 13px error helper text below in `#F04452`. One actionable sentence (`계좌번호를 다시 확인해주세요`). Never `오류가 발생했습니다`. |
517
- | **Error (toast)** | `#1A1D24` background, white 14px weight 500 text, 12px radius, 12px 16px padding. Bottom of screen, 20px inset, safe-area aware. 3s auto-dismiss. One sentence. No emoji. |
518
- | **Error (blocking screen)** | Reserved for server outage. White screen, centered 2D graphic, single sentence `#060B11` 16px weight 500. Single retry button in Deep Ink. |
519
- | **Success (routine, inline)** | Brief 300ms flash of `#FFFBCC` (yellow-tinted 12%) behind the updated row, fading to default. For toggles and small confirmations. |
520
- | **Success (money moved)** | Dedicated confirmation screen — not a toast. `#03B26C` 2D check graphic at top, exact amount in 30px weight 700 below, recipient name and timestamp, single primary CTA `확인`. Like Toss, money-moved is never a toast — but KakaoPay's confirmation is warmer (rounded 2D graphic vs Toss's clinical green checkmark). |
521
- | **Disabled** | Opacity reduced on both surface and text together. Primary buttons fade to `rgba(6, 11, 17, 0.3)`. No grey-out of borders — disabled inputs keep `#E5E8EB` border so geometry doesn't shift when re-enabled. |
522
- | **Loading inside pressed button** | Button text replaced by 3-dot white animation (or dark dots if button is yellow). Button width does not change. Press is visually committed; user cannot double-submit. |
523
- | **Skeleton** | `#F2F4F6` blocks at exact final dimensions, rounded at component radius (12 / 16 / 9999). Never on financial amounts. |
524
- | **Permission / consent** | Bottom sheet, 20px radius top corners. Title 18px weight 500. Body 14px weight 400 `#374151`. Two CTAs side-by-side: secondary `취소` (`#F2F4F6` bg) + primary `허용` (`#060B11` bg). |
280
+ The reviewed public developer reference documents API error responses and error codes, while the supplied UI artifact records no interaction snapshots. This supports neither a visual error-state specification nor payment success/loading/empty-state components. For implementation, use the endpoint’s documented error code/message contract and obtain a product-surface capture before defining visual state tokens. [Developer reference](https://developers.kakaopay.com/docs/payment/online/reference)
525
281
 
526
282
  ## 15. Motion & Easing
527
283
 
528
- **Durations** (named, not raw milliseconds):
529
-
530
- | Token | Value | Use |
531
- |---|---|---|
532
- | `motion-instant` | 0ms | Toggle commits, focus rings, selection ticks |
533
- | `motion-fast` | 150ms | Hover, focus, press overlay, small reveals |
534
- | `motion-standard` | 250ms | Default — sheet open, card expand, tab switch |
535
- | `motion-slow` | 400ms | Emphasized — success confirmation, onboarding step advance |
536
- | `motion-page` | 350ms | Top-level route transitions |
537
-
538
- **Easings**:
539
-
540
- | Token | Curve | Use |
541
- |---|---|---|
542
- | `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Arrivals — sheets, toasts, screen pushes |
543
- | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
544
- | `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1)` | Two-way transitions — collapsible cards, tab content |
545
- | `ease-soft` | `cubic-bezier(0.32, 0.72, 0.36, 1)` | KakaoPay signature — slightly slower deceleration, reads as "warm" arrival without overshoot |
546
-
547
- **Explicitly forbidden.** No spring with positive overshoot on routine UI. No bounce on payment confirmations. Bounce reads as consumer-app delight; this is money. KakaoPay reserves all "delightful" motion for the success-confirmation graphic, where the 2D check illustration may animate its strokes via SVG path-draw — never via positional overshoot.
548
-
549
- **Signature motions.**
550
-
551
- 1. **Money-moved confirmation.** The 2D check graphic draws over `motion-slow / ease-soft` with stroke-dashoffset animation (0 → full path). The exact amount slides up from `y+12px` with `motion-standard / ease-enter` simultaneously. Cross-fade is never used for money values — a flickering amount looks like an integrity bug.
552
- 2. **Bottom-sheet presentation.** Sheets rise from `y+40px` with `motion-standard / ease-soft` and synchronized backdrop fade `rgba(6,11,17,0) → rgba(6,11,17,0.5)`. Dismissal uses `motion-fast / ease-exit` — leaving is faster than arriving (consistent with Toss; the principle is universal in Korean fintech).
553
- 3. **Inline yellow flash on routine success.** Background `#FFFBCC` for 300ms, fades to default `#FFFFFF` with `ease-standard`. This is the one place Kakao Yellow appears as a transient surface tone on functional UI — it earns its brand moment, then disappears.
554
- 4. **Pull-to-refresh spinner.** The yellow wedge in a black circle rotates at `linear` 1000ms — a steady, non-springy revolution. The black-on-yellow contrast satisfies the 3:1 commitment at small sizes where solid yellow would otherwise fail.
555
- 5. **Reduce motion.** Under `prefers-reduced-motion: reduce`, all `motion-*` tokens collapse to `motion-instant`. The SVG path-draw on the success check becomes an instant full-stroke render. The pull-to-refresh spinner becomes a static yellow-on-black indicator. The app remains fully functional; no kinetic decoration is required to confirm a state.
556
-
557
- <!--
558
- OmD v0.1 Sources — Philosophy Layer (sections 10–15)
559
-
560
- Direct verification via WebFetch and playwright (2026-05-13):
561
- - https://www.kakaopay.com/ — confirms title/tagline "카카오페이 | 마음 놓고 금융하다",
562
- Noto Sans KR primary font, dark header / soft footer (#F8F9FA),
563
- service IA (생활하다 / 관리하다 / 금융하다 / 소식 / ESG), 22px·500·-0.2px
564
- section heading scale.
565
- - https://story.kakaopay.com/225-kakaopay-design/ — confirms the three stated
566
- pillars (단순하고 명확한 디자인 / 따뜻하고 부드러운 컬러 / 둥글고 부드러운 라인),
567
- the 3:1 minimum contrast policy on graphics, and the Icon → 2D → 3D
568
- three-tier graphic hierarchy. This is the load-bearing citation for §10–12.
569
- - https://www.kakaocorp.com/page/service/service/KakaoPay?lang=en —
570
- confirms the English tagline "Effortless finance", service category
571
- structure, and Kakao Corp. parent ownership.
572
-
573
- Brand color #FFEB00 + Wild Willow #C5C17A / Ivory #FEFFFA / Olive #7F7600
574
- sourced from public brand-color aggregator search (2026-05-13). Kakao Yellow
575
- is also published as #FEE500 by Kakao Corp. brand resources for the messenger;
576
- KakaoPay's specific yellow #FFEB00 is documented separately as the payment
577
- product's signature.
578
-
579
- Not independently verified via WebFetch — widely documented public facts used:
580
- - KakaoPay launched 2014 inside KakaoTalk; spun out as Kakao Pay Corp. in 2017
581
- - KOSPI listing in November 2021
582
- - Parent company: Kakao Corp.
583
-
584
- Personas (§13) are fictional archetypes informed by publicly observable
585
- KakaoPay user segments (KakaoTalk-native users, small-business merchants
586
- accepting KakaoPay QR, older users brought in via ecosystem familiarity,
587
- university-aged super-app users). Names are illustrative; they do not refer
588
- to specific individuals.
589
-
590
- Interpretive claims (e.g., "KakaoPay's warmth is the warmth of an insider
591
- product that inherited 50M+ existing relationships from KakaoTalk", "the
592
- 3:1 minimum contrast is the constraint that shapes the palette") are
593
- editorial readings connecting KakaoPay's stated principles to its design
594
- system, not direct KakaoPay statements.
595
-
596
- No public KakaoPay Design System (KPDS) documentation site was discovered
597
- as of 2026-05-13. Design knowledge is published as narrative on
598
- story.kakaopay.com, not as a public token registry. Tier 2 cross-checks
599
- (getdesign.md/kakaopay, styles.refero.design/?q=kakaopay,
600
- styles.refero.design/?q=카카오페이) all returned empty results — verified
601
- explicitly. Tier 1 (live DOM + official design blog + Kakao Corp service
602
- page + brand-color aggregator) is the sole authoritative source per pipeline.
603
- -->
284
+ No motion durations, easing curves, reduced-motion behavior, or animated payment-state evidence was captured. Motion tokens are omitted.