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
@@ -9,239 +9,316 @@ primary_color: "#3182f6"
9
9
  logo:
10
10
  type: favicon
11
11
  slug: "https://www.google.com/s2/favicons?domain=tossinvest.com&sz=256"
12
- verified: "2026-05-15"
12
+ verified: "2026-07-13"
13
13
  omd: "0.1"
14
+ verification_v2:
15
+ schema: 2
16
+ checked: "2026-07-13"
17
+ surfaces:
18
+ - { id: public-wts, kind: public-web-trading, url: "https://www.tossinvest.com/?focusedProductCode=A000660", inspected: "2026-07-13" }
19
+ - { id: corporate-info, kind: corporate-marketing, url: "https://home.tossinvest.com/en/corporate-info", inspected: "2026-07-13" }
20
+ - { id: investment-marketing, kind: product-marketing, url: "https://home.tossinvest.com/en/investment-products", inspected: "2026-07-13" }
21
+ sources:
22
+ - { id: wts-live, kind: product-surface, url: "https://www.tossinvest.com/?focusedProductCode=A000660", captured: "2026-07-13" }
23
+ - { id: corporate-live, kind: official-doc, url: "https://home.tossinvest.com/en/corporate-info", captured: "2026-07-13" }
24
+ - { id: investment-live, kind: official-doc, url: "https://home.tossinvest.com/en/investment-products", captured: "2026-07-13" }
25
+ - { id: tps-design, kind: brand-asset, url: "https://toss.im/simplicity-21/sessions/3-3", captured: "2026-07-13" }
26
+ - { id: tossface-repo, kind: brand-asset, url: "https://github.com/toss/tossface", captured: "2026-07-13" }
27
+ conflicts: []
28
+ claims:
29
+ "tokens.colors.primary": &wts { surface_id: public-wts, source_id: wts-live, method: computed-style, captured: "2026-07-13" }
30
+ "tokens.colors.canvas": *wts
31
+ "tokens.colors.foreground": *wts
32
+ "tokens.colors.body": *wts
33
+ "tokens.colors.on-primary": *wts
34
+ "tokens.colors.dialog-canvas": *wts
35
+ "tokens.typography.family.sans": &font { surface_id: public-wts, source_id: wts-live, method: computed-style-and-fontfaceset-source, captured: "2026-07-13" }
36
+ "tokens.typography.compact.size": *wts
37
+ "tokens.typography.compact.weight": *wts
38
+ "tokens.typography.compact.lineHeight": *wts
39
+ "tokens.typography.compact.use": *wts
40
+ "tokens.typography.body.size": *wts
41
+ "tokens.typography.body.weight": *wts
42
+ "tokens.typography.body.lineHeight": *wts
43
+ "tokens.typography.body.use": *wts
44
+ "tokens.typography.marketing-heading.size": &marketing { surface_id: investment-marketing, source_id: investment-live, method: computed-style, captured: "2026-07-13" }
45
+ "tokens.typography.marketing-heading.weight": *marketing
46
+ "tokens.typography.marketing-heading.lineHeight": *marketing
47
+ "tokens.typography.marketing-heading.use": *marketing
48
+ "tokens.spacing.xs": *wts
49
+ "tokens.spacing.sm": *wts
50
+ "tokens.spacing.md": *wts
51
+ "tokens.spacing.lg": *marketing
52
+ "tokens.spacing.xl": *wts
53
+ "tokens.rounded.compact-control": *wts
54
+ "tokens.rounded.primary": *wts
55
+ "tokens.rounded.menu": *wts
56
+ "tokens.rounded.dialog": *wts
57
+ "tokens.rounded.marketing-pill": *marketing
58
+ "tokens.shadow.menu": *wts
59
+ "tokens.shadow.dialog": *wts
60
+ "tokens.components.wts-primary-entry.type": *wts
61
+ "tokens.components.wts-primary-entry.bg": *wts
62
+ "tokens.components.wts-primary-entry.fg": *wts
63
+ "tokens.components.wts-primary-entry.radius": *wts
64
+ "tokens.components.wts-primary-entry.padding": *wts
65
+ "tokens.components.wts-primary-entry.height": *wts
66
+ "tokens.components.wts-primary-entry.font": *wts
67
+ "tokens.components.wts-primary-entry.states": *wts
68
+ "tokens.components.wts-primary-entry.use": *wts
69
+ "tokens.components.investment-primary.type": *marketing
70
+ "tokens.components.investment-primary.bg": *marketing
71
+ "tokens.components.investment-primary.fg": *marketing
72
+ "tokens.components.investment-primary.radius": *marketing
73
+ "tokens.components.investment-primary.padding": *marketing
74
+ "tokens.components.investment-primary.height": *marketing
75
+ "tokens.components.investment-primary.font": *marketing
76
+ "tokens.components.investment-primary.states": *marketing
77
+ "tokens.components.investment-primary.use": *marketing
78
+ "tokens.components.wts-selection-dialog.type": *wts
79
+ "tokens.components.wts-selection-dialog.bg": *wts
80
+ "tokens.components.wts-selection-dialog.fg": *wts
81
+ "tokens.components.wts-selection-dialog.radius": *wts
82
+ "tokens.components.wts-selection-dialog.size": *wts
83
+ "tokens.components.wts-selection-dialog.font": *wts
84
+ "tokens.components.wts-selection-dialog.states": *wts
85
+ "tokens.components.wts-selection-dialog.use": *wts
14
86
  tokens:
15
- source: prose-derived
16
- extracted: "2026-06-09"
87
+ source: reconciled
88
+ extracted: "2026-07-13"
89
+ note: "Only the supplied public WTS and corporate/marketing capture is canonical here. Authenticated or native trading UI, documentation chrome, and declared-only fonts are separate or unresolved evidence domains."
17
90
  colors:
18
91
  primary: "#3182f6"
19
- primary-hover: "#2562b9"
20
- primary-pressed: "#29518e"
21
- brand-text: "#4391ff"
22
- positive: "#dc2e47"
23
- positive-hover: "#ad2136"
24
- positive-pressed: "#8d222f"
25
- positive-text: "#f5445a"
26
- negative: "#3182f6"
27
- negative-text: "#4391ff"
28
- canvas: "#101013"
29
- overlay: "#202025"
92
+ canvas: "#ffffff"
93
+ foreground: "#1a1f29"
94
+ body: "#4e5968"
30
95
  on-primary: "#ffffff"
96
+ dialog-canvas: "#fbfcfd"
31
97
  typography:
32
- family: { sans: "Toss Product Sans", mono: "Toss Product Sans" }
33
- section-h2: { size: 24, weight: 700, use: "Section headers" }
34
- sub-h3: { size: 19, weight: 700, use: "Sub-section headers" }
35
- nav: { size: 15, weight: 500, use: "Global nav links" }
36
- body: { size: 16, weight: 400, use: "Body and button text" }
37
- input: { size: 15, weight: 400, use: "Form field text" }
38
- memo-chip: { size: 12, weight: 600, use: "Contextual pill action" }
39
- on-cta: { size: 16, weight: 400, use: "White on tinted-fill button" }
40
- spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48 }
41
- rounded: { sm: 4, md: 8, lg: 16, full: 9999 }
98
+ family: { sans: "Toss Product Sans" }
99
+ compact: { size: 13, weight: 600, lineHeight: "20px", use: "Public WTS compact menu-trigger text" }
100
+ body: { size: 16, weight: 400, lineHeight: "23.2px", use: "Public WTS body, tab, menu, and dialog copy" }
101
+ marketing-heading: { size: 18, weight: 700, lineHeight: "28.8px", use: "Investment-product marketing H1" }
102
+ spacing: { xs: 4, sm: 8, md: 12, lg: 14, xl: 16 }
103
+ rounded: { compact-control: 7, primary: 8, menu: 12, dialog: 16, marketing-pill: 100 }
42
104
  shadow:
43
- none: "none"
105
+ menu: "0 16px 24px -2px rgba(0,0,0,0.06), 0 8px 56px rgba(0,0,0,0.1)"
106
+ dialog: "0 12px 28px -4px rgba(0,0,0,0.12), 0 8px 56px -4px rgba(0,0,0,0.1)"
44
107
  components_harvested: true
45
108
  components:
46
- button-brand: { type: button, bg: "#3182f6", fg: "#ffffff", use: "Primary CTA brand fill" }
47
- badge-positive: { type: badge, fg: "#f5445a", font: "12/600", use: "Up-tick / 매수 indicator (KR red-up)" }
48
- badge-negative: { type: badge, fg: "#4391ff", font: "12/600", use: "Down-tick / 매도 indicator (KR blue-down)" }
49
- input-field: { type: input, font: "15/400", use: "Form field on dark surface" }
109
+ wts-primary-entry: { type: button, bg: "#3182f6", fg: "#ffffff", radius: "8px", padding: "6px 12px", height: "32px", font: "14px / 600 / 16px", states: "default, focus, and pressed observed; colors and geometry remained the same in the retained samples", use: "Public WTS compact primary link-action" }
110
+ investment-primary: { type: button, bg: "#3182f6", fg: "#ffffff", radius: "100px", padding: "11px 14px", height: "40px", font: "15px / 600 / 18px", states: "default, focus, hover, and pressed observed; no distinct color change retained", use: "Investment-products marketing primary action" }
111
+ wts-selection-dialog: { type: dialog, bg: "#fbfcfd", fg: "#4e5968", radius: "16px", size: "640px x 600px", font: "16px / 400 / 23.2px", states: "dialog-open observed", use: "Public WTS selection dialog container" }
50
112
  ---
51
113
 
52
114
  # Design System Inspiration of Toss Securities (토스증권)
53
115
 
54
116
  ## 1. Visual Theme & Atmosphere
55
117
 
56
- Toss Securities is the brokerage arm inside Korea's fintech super-app, and it inherits its parent's typographic and chromatic DNA while pulling the entire surface into a deep, calm dark mode by default. The page opens not on white but on a near-black canvas page background `rgb(23, 23, 28)` over a deeper surface token `#101013` where money information feels less like banking-product chrome and more like an instrument panel: legible, quiet, technically dense, and resolutely free of decoration. Where retail-banking Toss optimises for "anyone can use this," Toss Securities optimises for "someone watching a chart wants this exact answer right now," and the visual system reflects that pivot without changing brand vocabulary.
118
+ Toss Securities positions itself as an investment platform for both beginners and experienced investors: the company says its mission is to empower everyone with investing, combining access to global markets, investment information, social participation, and expanding channels such as WTS. Its public web language turns that broad promise into a familiar Toss hierarchywhite canvas, dense dark-neutral reading text, a precise blue action color, and a single Korean-first product face—rather than turning the marketing site into a simulation of a trading terminal. The result is an inviting, information-led public entry point for a regulated investment product.
57
119
 
58
- The custom **Toss Product Sans** typeface carries over wholesale from `toss.im` same Korean-Latin optical balancing, same tabular-numeral support that makes price ticks, volume figures, and percent changes line up cleanly across rows. Body sits at 16px / 400, section headings at 24px / 700, sub-section headings at 18.72px / 700, and global navigation uses an intermediate 15px / 500 weight that quietly separates wayfinding from reading. There is no display-only accent typeface; restraint is the rule.
120
+ The supplied 2026-07-13 capture establishes three separate public domains. `www.tossinvest.com` is a public WTS surface with controls, tabs, a menu, and a dialog; `home.tossinvest.com/en/corporate-info` is corporate context; and `home.tossinvest.com/en/investment-products` is a marketing explanation of stocks, ETFs, options, and bonds. They share `#3182f6`, `#ffffff`, `#1a1f29`, `#4e5968`, and Toss Product Sans, but their component geometry is not automatically interchangeable. The compact 32px WTS action and the 40px marketing pill are recorded separately.
59
121
 
60
- What makes Toss Securities visually unique inside the Toss family is the **semantic colour inversion**: the parent product treats blue as "go / primary action," but a securities surface must carry the Korean-finance locale convention where **red means a price went up (positive)** and **blue means a price went down (negative)**. The live token tree honours this — `--tw-semantic-color-fill-positive-default: #dc2e47` (red), `--tw-semantic-color-fill-negative-default: #3182f6` (blue) — and the same Toss Blue `#3182f6` is reused as the brand CTA fill `--tw-semantic-color-fill-brand-default`. Context resolves the ambiguity: a blue rectangle next to a price tick means "this stock fell"; a blue rectangle as a button means "execute." Designers porting this language outside KR/JP/TW **must invert** the positive/negative hue assignments.
122
+ No authenticated account, native app, order-entry flow, or documentation UI was captured in this packet. The former dark-canvas, red/blue market-semantic, token-tree, and two-radius claims are therefore removed rather than carried forward from a legacy snapshot.
61
123
 
62
124
  **Key Characteristics:**
63
- - Dark-mode-first surface (`#101013` deepest, `rgb(23,23,28)` body, `#202025` overlay)
64
- - Toss Product Sans inherited from parent brand — tabular numerals for price data
65
- - KR-finance locale: `positive` = red `#dc2e47`, `negative` = blue `#3182f6` (semantic tokens, not just colour values)
66
- - Toss Blue `#3182f6` carries dual duty as brand CTA AND down-tick — context-disambiguated
67
- - Three-namespace token system on `:root`: `--tw-semantic-*` (role) / `--tw-adaptive-*` (theme-aware primitive) / `--wts-adaptive-*` (Web-Toss-Securities scale)
68
- - Zero box-shadow on production chrome depth via layered surface alpha + translucent 1px borders (`rgba(214,224,239,0.09)`)
69
- - Two-tier radius family: `8px` for cards/inputs/buttons, `32px` for contextual chips/pills
70
- - 416 CSS custom properties live on `:root` — a real internal DS, simply not published
125
+
126
+ - Light public-web canvas: `#ffffff`, `#1a1f29`, and `#4e5968`
127
+ - Shared Toss blue `#3182f6` for observed primary actions and links
128
+ - Loaded Toss Product Sans on the public WTS and investment-marketing surfaces
129
+ - Compact WTS controls at 7–8px corners; expanded menu and dialog containers at 12px and 16px
130
+ - A 100px-radius marketing pill is a marketing-specific component, not a universal product radius
131
+ - Public WTS menu and dialog were interaction-expanded; focus, hover, and pressed states are preserved only where observed
71
132
 
72
133
  ## 2. Color Palette & Roles
73
134
 
74
- ### Brand (CTA, links, active)
75
- - **Toss Blue** (`#3182f6`): `--tw-semantic-color-fill-brand-default`. Primary CTA fill, brand icon, brand link.
76
- - **Toss Blue Hover** (`#2562b9`): `--tw-semantic-color-fill-brand-defaultHover`.
77
- - **Toss Blue Pressed** (`#29518e`): `--tw-semantic-color-fill-brand-defaultPressed`.
78
- - **Brand Text** (`#4391ff`): `--tw-semantic-color-txt-brand`. Brand-coloured inline text.
79
- - **Brand Text Hover** (`#74b1f8`): `--tw-semantic-color-txt-brandHover`.
80
-
81
- ### Semantic — KR finance convention (CRITICAL)
82
- - **Positive / Up / 매수** (`#dc2e47`): `--tw-semantic-color-fill-positive-default`. RED. Used for rising prices, gain indicators, buy confirms.
83
- - **Positive Hover** (`#ad2136`): `--tw-semantic-color-fill-positive-defaultHover`.
84
- - **Positive Pressed** (`#8d222f`): `--tw-semantic-color-fill-positive-defaultPressed`.
85
- - **Positive Text** (`#f5445a`): `--tw-semantic-color-txt-positive`.
86
- - **Positive Text Hover** (`#ff7187`): `--tw-semantic-color-txt-positiveHover`.
87
- - **Positive Weak** (`rgba(219,81,87,0.2)`): `--tw-semantic-color-fill-positive-weak`. Tinted background for up-tick rows.
88
- - **Negative / Down / 매도** (`#3182f6`): `--tw-semantic-color-fill-negative-default`. BLUE. Same hex as Brand — context disambiguates.
89
- - **Negative Text** (`#4391ff`): `--tw-semantic-color-txt-negative`.
90
- - **Negative Weak** (`rgba(67,122,223,0.2)`): `--tw-semantic-color-fill-negative-weak`.
91
-
92
- > **Locale rule**: This is non-negotiable for KR/JP/TW finance UI. Porting to US/EU markets requires swapping all `positive-*` tokens to green and all `negative-*` tokens to red. Toss Securities does not ship that variant publicly; it must be authored downstream.
93
-
94
- ### Surface (dark default)
95
- - **Surface 100** (`#101013`): `--tw-semantic-color-bg-surface100`. Deepest surface — page floor.
96
- - **Body composite** (`rgb(23, 23, 28)`): rendered body background as observed via getComputedStyle.
97
- - **Overlay 300** (`#202025`): `--tw-semantic-color-bg-overlay300`. Modal/sheet overlay base.
98
- - **Panel border outer** (`rgba(214,224,239,0.09)`): `--tw-semantic-color-component-panel-borderOuter`. Translucent dividers — depth without shadow.
99
-
100
- ### Text (dark surface)
101
- - **Primary** (`rgba(242,246,255,0.9)`): `--tw-semantic-color-txt-neutral-primary`. Default reading text.
102
- - **Primary Hover** (`rgba(255,255,255,0.96)`).
103
- - **Primary Pressed** (`#FFFFFF`).
104
- - **Secondary observed** (`rgba(253,253,254,0.89)`): inline secondary text — slightly warmer alpha.
105
- - **Tertiary observed** (`rgba(242,242,255,0.47)`): disabled / muted captions.
106
- - **Body default rendered** (`rgb(195, 195, 198)`): composited body text — neutral cool grey.
107
- - **Static white** (`#FFFFFF`): `--tw-semantic-color-txt-staticWhite`. On-CTA text.
108
-
109
- ### Icon
110
- - **Icon brand** (`#3182f6`).
111
- - **Icon neutral primary** (`rgba(217,223,235,0.8)`).
112
- - **Icon positive** (`#f5445a`) — up-tick chevron.
113
- - **Icon negative** (`#4391ff`) — down-tick chevron.
135
+ - **Primary action** (`#3182f6`): observed on the public WTS compact primary action and the investment-products marketing CTA.
136
+ - **Canvas** (`#ffffff`): observed public WTS and marketing page canvas.
137
+ - **Foreground** (`#1a1f29`): observed compact WTS foreground.
138
+ - **Supporting text** (`#4e5968`): observed WTS menu, dialog, and cross-surface supporting text.
139
+ - **On primary** (`#ffffff`): observed text on `#3182f6` actions.
140
+ - **Dialog canvas** (`#fbfcfd`): observed public WTS dialog container.
114
141
 
115
- ## 3. Typography Rules
142
+ The packet does not establish a public positive/negative market-color system, dark trading canvas, error color, success color, or hover palette. Those values are intentionally absent rather than inferred from the Toss parent brand or a previous snapshot.
116
143
 
117
- ### Font Family
144
+ ## 3. Typography Rules
118
145
 
119
- **Primary**: `"Toss Product Sans", Tossface, -apple-system, system-ui, "Bazier Square", "Noto Sans KR", "Segoe UI", "Apple SD Gothic Neo", sans-serif`
146
+ ### Font evidence boundary
147
+
148
+ | Evidence class | Resolution |
149
+ |---|---|
150
+ | Official product-use | Toss’s first-party design conference describes Toss Product Sans as a typeface developed for financial numbers and symbols across mobile, desktop, and offline contexts. |
151
+ | Live computed surface-use | `Toss Product Sans` is the computed first family on the supplied public WTS and investment-marketing capture: loaded/high, 419 visible uses, backed by matching FontFaceSet records and dated `static.toss.im/tps/20260223/` sources. It is the canonical public-web UI family. |
152
+ | Official distributed brand asset | Tossface is a separate Toss-designed emoji font distributed through the official `toss/tossface` repository in TTF, OTF, WOFF, and WOFF2 formats. |
153
+ | Declared-only | Tossface has `@font-face` sources in this capture but zero visible first-family uses. It remains contextual asset information, not `tokens.typography.family.sans`. |
154
+ | System / unresolved | The computed fallback stack includes platform and Korean system faces. No fallback is promoted as a Toss Securities type token, and native-app typography was not inspected. |
155
+
156
+ ### Observed hierarchy
157
+
158
+ | Role | Size | Weight | Line height | Surface |
159
+ |---|---:|---:|---:|---|
160
+ | Compact menu trigger | 13px | 600 | 20px | Public WTS |
161
+ | Body, tab, menu, dialog | 16px | 400 | 23.2px | Public WTS |
162
+ | Investment-products H1 | 18px | 700 | 28.8px | Marketing |
163
+ | Marketing primary action | 15px | 600 | 18px | Marketing |
164
+
165
+ ## 4. Components
166
+
167
+ ### Public WTS compact primary entry
168
+
169
+ **Default / focus / pressed**
170
+ - Background: `#3182f6`
171
+ - Text: `#ffffff`
172
+ - Radius: `8px`
173
+ - Padding: `6px 12px`
174
+ - Height: `32px`
175
+ - Font: `14px / 600 / 16px Toss Product Sans`
176
+ - Focus: observed; retained color and geometry remained unchanged
177
+ - Pressed: observed; retained color and geometry remained unchanged
178
+ - Use: public WTS compact link-action at `home::[data-omd-capture="6"]`
179
+
180
+ ### Investment-products marketing primary
181
+
182
+ **Default / focus / hover / pressed**
183
+ - Background: `#3182f6`
184
+ - Text: `#ffffff`
185
+ - Radius: `100px`
186
+ - Padding: `11px 14px`
187
+ - Height: `40px`
188
+ - Font: `15px / 600 / 18px Toss Product Sans`
189
+ - Focus: observed; no distinct color change retained
190
+ - Hover: observed; no distinct color change retained
191
+ - Pressed: observed; no distinct color change retained
192
+ - Use: investment-products marketing action at `surface-3::[data-omd-capture="11"]`
193
+
194
+ ### Public WTS expanded menu
195
+
196
+ **Menu-open**
197
+ - Background: `#ffffff`
198
+ - Text: `#4e5968`
199
+ - Radius: `12px`
200
+ - Size: `160px x 204px`
201
+ - Shadow: `0 16px 24px -2px rgba(0,0,0,0.06), 0 8px 56px rgba(0,0,0,0.1)`
202
+ - Font: `16px / 400 / 23.2px Toss Product Sans`
203
+ - States: expanded and menu-open observed
204
+ - Use: public WTS menu container at `home::[data-omd-interaction-capture="menu-0-0"]`
205
+
206
+ ### Public WTS selection dialog
207
+
208
+ **Dialog-open**
209
+ - Background: `#fbfcfd`
210
+ - Text: `#4e5968`
211
+ - Radius: `16px`
212
+ - Size: `640px x 600px`
213
+ - Shadow: `0 12px 28px -4px rgba(0,0,0,0.12), 0 8px 56px -4px rgba(0,0,0,0.1)`
214
+ - Font: `16px / 400 / 23.2px Toss Product Sans`
215
+ - States: dialog-open observed
216
+ - Use: public WTS dialog container at `home::[data-omd-interaction-capture="dialog-1-0"]`
217
+
218
+ Only selectors, surfaces, and states present in the supplied raw collector evidence are described here. The capture did not establish native-order, card, toast, error, disabled, or checkout variants.
120
219
 
121
- Tossface is Toss's open-source emoji font (3500+ glyphs, parent-brand asset). Toss Product Sans is loaded via parent-domain CDN — Toss Securities does not appear to serve its own webfont copy on this surface.
220
+ ---
221
+ **Verified:** 2026-07-13
222
+ **Tier 1 sources:** https://www.tossinvest.com/?focusedProductCode=A000660 · https://home.tossinvest.com/en/corporate-info · https://home.tossinvest.com/en/investment-products · https://toss.im/simplicity-21/sessions/3-3 · https://github.com/toss/tossface
223
+ **Tier 2 sources:** https://getdesign.md/toss-securities (direct detail attempt; no importable record returned) · https://styles.refero.design/?q=Toss%20Securities (query attempt; no importable record returned)
224
+ **Conflicts unresolved:** none
122
225
 
123
- ### Hierarchy (observed live)
226
+ ## 5. Layout & Spacing
124
227
 
125
- | Role | Size | Weight | Notes |
126
- |------|------|--------|-------|
127
- | Section H2 | 24px | 700 | "지수 목록" / "실시간 차트" |
128
- | Sub-section H3 | 18.72px | 700 | "필터" / "종목 정보" |
129
- | Nav link | 15px | 500 | Global nav |
130
- | Body / button text | 16px | 400 | Body default |
131
- | Input text | 15px | 400 | Form fields |
132
- | Memo chip | 12px | 600 | Contextual pill action |
133
- | On-CTA text | 16px | 400 | White on tinted-fill button |
228
+ The observed public WTS uses compact 4px, 8px, 12px, and 16px spacing clusters; the investment-marketing CTA contributes a 14px horizontal inset. Treat this as a small observed set, not as a complete spacing scale. WTS has square-edged tabs, 7–8px compact controls, a 12px menu, and a 16px dialog; the marketing pill’s 100px radius belongs only to that action.
134
229
 
135
- ### Numeric & data treatment
136
- Tabular numerals inherit from Toss Product Sans variable-width / tabular-mode toggle. Price ticks, order-book columns, and percent changes use the tabular mode so digits align by column without `font-variant-numeric` patching at each surface.
230
+ ## 6. Iconography & Imagery
137
231
 
138
- ## 4. Iconography & Imagery
232
+ The public WTS capture shows compact control and text-led UI; the expanded menu and dialog establish interaction containers but not a reusable icon family. The investment-products page uses product imagery and explanatory marketing content. No proprietary chart, illustration, or native-app icon system is promoted from this evidence.
139
233
 
140
- - Icon weight: medium-stroke, single-tone (`--tw-semantic-color-icon-*`).
141
- - Brand icon set inherits from parent Toss icon system.
142
- - No decorative illustration on data surfaces — the price chart IS the imagery.
143
- - Marketing surfaces (homepage feed) use product screenshots of the order panel itself, recursively.
234
+ ## 7. Usage Guidelines
144
235
 
145
- ## 5. Layout & Spacing
236
+ ### Do
146
237
 
147
- - **Two-pane stock detail**: chart + price panel (left) / order panel (right rail).
148
- - **Card radius**: `8px` (cards, inputs, default buttons).
149
- - **Chip radius**: `32px` (pill controls memo, filter chips).
150
- - **Icon button radius**: `6–8px` with compact padding (`3px 6px` to `6px 8px`).
151
- - **No box-shadow** on any production chrome element sampled.
152
- - Surface depth = base `#101013` → body `rgb(23,23,28)` composite → overlay `#202025` for sheets.
153
- - Translucent `rgba(214,224,239,0.09)` 1px borders for panel separation.
238
+ - Keep public WTS compact actions distinct from the 40px marketing pill.
239
+ - Use `#3182f6` with `#ffffff` for the observed primary action pairing.
240
+ - Preserve the recorded WTS container progression: 12px menu, 16px dialog.
241
+ - Use Toss Product Sans where the verified public web family is available; label unavailable specimens rather than substituting a system face as if it were Toss Product Sans.
242
+ - Limit interaction claims to the observed WTS focus, pressed, expanded/menu-open, and dialog-open states.
154
243
 
155
- ## 6. Components
244
+ ### Don't
156
245
 
157
- ### Buttons
158
- - **Ghost (default observed)**: bg `rgba(217,217,255,0.11)` / text `#fff` or `rgba(253,253,254,0.89)` / radius `8px` / 16px text / 400 weight.
159
- - **Brand CTA (inferred from token tree, not sampled directly on this surface)**: bg `#3182f6` / text `#fff` / radius `8px`.
160
- - **Memo chip**: bg `rgba(217,217,255,0.11)` / radius `32px` / 12px / 600 / padding `0 8px`.
161
- - **Icon button**: radius `6–8px` / padding `3×6` to `6×8`.
246
+ - Reintroduce an unverified dark trading canvas or red/blue market semantics from the legacy snapshot.
247
+ - Treat the corporate or investment-marketing page as proof of authenticated or native trading UI.
248
+ - Generalize the 100px marketing pill to WTS controls.
249
+ - Promote Tossface to the UI family merely because it is declared in the stack.
250
+ - Invent disabled, error, loading, toast, card, or checkout variants not seen in the capture.
162
251
 
163
- ### Order panel (stock detail)
164
- - Panels: 차트 · 호가 · 시세 · 일반주문 · 개인·외국인·기관 · 체결가.
165
- - Order types: 일반주문 / 정규장 주문 예약.
252
+ ## 8. Accessibility & Density
166
253
 
167
- ### Navigation
168
- - Global: 홈 · 피드 · 주식 골라보기 · 내 계좌 · 내 투자.
169
- - Secondary: 관심 · 최근 본 · 실시간.
170
- - Auth: 로그인.
254
+ The public WTS samples use `#1a1f29` and `#4e5968` on light surfaces, while primary actions use `#ffffff` on `#3182f6`. The packet establishes visible selected and unselected tab/radio controls plus menu and dialog expansion, but it does not provide a full keyboard, screen-reader, contrast, disabled, error, or responsive audit. Retain the observed state distinction and perform a product-specific accessibility audit before extending it to account or order entry.
171
255
 
172
- ### Price tick (semantic)
173
- - Up → text `#f5445a` (icon `#f5445a`), weak tint `rgba(219,81,87,0.2)`.
174
- - Down → text `#4391ff` (icon `#4391ff`), weak tint `rgba(67,122,223,0.2)`.
256
+ ## 9. Voice
175
257
 
176
- ## 7. Motion & Interaction
258
+ The official corporate language is direct, inclusive, and opportunity-oriented: it frames the service around better investment experiences, access to global markets, and technology that makes investing easier. The samples below are original tone guidance, not verbatim Toss Securities copy.
177
259
 
178
- State tokens captured for all interactive roles:
260
+ - “See the choice clearly, then decide.”
261
+ - “투자를 더 쉽게, 다음 기회를 더 가깝게.”
262
+ - “One account, more ways to invest.”
179
263
 
180
- - **Brand**: default `#3182f6` → hover `#2562b9` → pressed `#29518e`.
181
- - **Positive**: default `#dc2e47` → hover `#ad2136` → pressed `#8d222f`.
182
- - **Negative**: default `#3182f6` → hover `#2562b9` → pressed `#29518e`.
183
- - **Ghost-fill family**: `*-ghostHover` / `*-ghostPressed` / `*-weakHover` / `*-weakPressed` exist for every role — fine-grained state language.
264
+ ## 10. Voice & Tone
184
265
 
185
- Motion timing tokens not captured this pass (no live transition introspection performed) — flagged for UPDATE.
266
+ | Attribute | Do | Don't |
267
+ |---|---|---|
268
+ | Inclusive | Explain options for a broad investor range. | Assume expertise or exclude beginners. |
269
+ | Direct | Name the product, market, and next action plainly. | Make a regulated choice sound effortless or guaranteed. |
270
+ | Useful | Pair a feature with the decision it supports. | Use market drama as decoration. |
186
271
 
187
- ## 8. Accessibility & Density
272
+ The examples in §9 are illustrative paraphrases only; no tagline or customer promise is reproduced as official copy.
188
273
 
189
- - Dark surface + `rgba(242,246,255,0.9)` primary text ≈ AA-passing contrast on `#101013` (~14:1).
190
- - Body composited grey `rgb(195,195,198)` on `rgb(23,23,28)` ≈ 11:1 — comfortable AA.
191
- - **Locale risk**: KR red/blue convention is opposite to most US/EU expectations. Cross-locale users may misread direction.
192
- - High data density tolerates 16px body baseline because tabular numerals stabilise column scanning.
274
+ ## 11. Brand Narrative
193
275
 
194
- ## 9. Voice (illustrative, fresh derivations not verbatim Toss copy)
276
+ Toss Securities is a Korean securities company building an investment platform around the mission “To Empower Everyone with Investing.” Its official company page describes an aim to offer better investing experiences and access to opportunities in global capital markets.
195
277
 
196
- - "Watch the tick. Move when it matters."
197
- - "차트는 정직해요. 결정은 빠르게."
198
- - "Real prices. Real depth. No theatre."
278
+ The current public company narrative expands that scope from stock trading toward an inclusive platform for beginners and experts, with investment content, a social community, broader investment products, and WTS access. Its investment-products page makes the portfolio breadth concrete through domestic and overseas stocks, ETFs, U.S. stock options, and overseas bonds.
199
279
 
200
- §10 voice samples above are tone-shape paraphrases derived from observing the calm/declarative product voice on the live surface, not lifted from Toss Securities marketing copy. Brand owns its own taglines; we do not reproduce them.
280
+ The company page also records current international expansion milestones, including a U.S. broker-dealer license in 2025. This is company context, not a claim about any uninspected product interface.
201
281
 
202
- ## 10. Personas (FILL IN — surface-inferred placeholders)
282
+ ## 12. Principles
203
283
 
204
- - **A. Active retail trader, KR 20s–30s**: opens app multiple times intraday, watches a small watchlist, executes via mobile. Wants speed and signal. `[FILL IN with sourced research]`
205
- - **B. Long-horizon individual investor, KR 30s–50s**: monthly rebalance, ETF + blue-chip focus, uses 내 계좌 dashboard primarily. `[FILL IN]`
206
- - **C. First-time investor onboarding from Toss core**: came in via Toss super-app, expects continuity of brand and trust. `[FILL IN]`
284
+ 1. **Opportunity should be broadly reachable.** The stated mission is to empower everyone with investing.
285
+ *UI implication:* explain product choices and next actions without presuming expert knowledge.
286
+ 2. **Global-market access should feel connected.** The company describes global products and WTS as access channels.
287
+ *UI implication:* make market, product, and account context explicit rather than relying on implicit navigation.
288
+ 3. **Technology should make investing easier.** The official narrative connects technology and AI with better decisions.
289
+ *UI implication:* present information as decision support, not as a promise of outcomes.
207
290
 
208
- ## 11. Anti-patterns (don't steal)
291
+ ## 13. Personas
209
292
 
210
- - **Do not** copy positive=red / negative=blue into non-KR/JP/TW locales without inversion.
211
- - **Do not** assume Toss Blue means "brand CTA" everywhere — on Securities it also means "down-tick."
212
- - **Do not** introduce box-shadow as elevation language; this system has chosen translucent borders + layered surface alphas.
213
- - **Do not** introduce a third radius tier; the system is deliberately two-tier (`8px` / `32px`).
214
- - **Do not** introduce a display-only typeface; restraint is the point.
293
+ *These are official audience-scope archetypes, not user-research findings or synthetic satisfaction scores.*
215
294
 
216
- ## 12. Reference URLs
295
+ - **Beginning investor:** the company explicitly names beginners among the people its inclusive platform should serve. Use plain explanations and visible product context.
296
+ - **Experienced investor:** the same platform is intended to include experts. Keep high-information paths available without representing unobserved native or authenticated UI as canonical.
297
+ - **Cross-market investor:** the official product range includes domestic and overseas investments. Make product and market boundaries explicit.
217
298
 
218
- - Production app: https://tossinvest.com (homepage)
219
- - Production stock surface: https://www.tossinvest.com/stocks/A005930/order (Samsung Electronics order panel)
220
- - Parent brand DS context: https://toss.im (typography + base colour origin)
221
- - Tossface (open-source emoji): https://github.com/toss/tossface
299
+ ## 14. States
222
300
 
223
- ## 13. Verification footer
301
+ | State | Evidence boundary |
302
+ |---|---|
303
+ | Focus | Public WTS compact primary and marketing primary focus samples were captured; retained colors and geometry did not change. |
304
+ | Hover | Public WTS tabs and marketing primary were captured in hover; only the retained computed values are documented. |
305
+ | Pressed | Public WTS compact primary, tabs, and marketing primary were captured pressed; no new palette is inferred. |
306
+ | Expanded / menu-open | One public WTS menu interaction was expanded and recorded. |
307
+ | Dialog-open | One public WTS dialog interaction was opened and recorded. |
308
+ | Selected / unchecked | Public WTS tab and radio-like controls exposed selected and unchecked states. |
309
+ | Disabled | Not observed; no disabled token or variant is claimed. |
310
+ | Error | Not observed; no error token or variant is claimed. |
311
+ | Loading / skeleton | Not observed; no loading or skeleton token is claimed. |
312
+ | Empty / success | Not observed; no empty or success treatment is claimed. |
224
313
 
225
- - **Tier 1 official DS**: ✗ NEGATIVE — no `design.tossinvest.com`, no `tossinvest.com/design`, no `tossinvest.com/brand` portal; GitHub org `@toss` (45+ repos, verified for `toss.im`) has zero Toss-Securities-specific design-system / Storybook / token repository; no `toss-im` or `toss-securities` GitHub org exists. Production code exposes 416 `:root` CSS custom properties across three namespaces (`--tw-semantic-*`, `--tw-adaptive-*`, `--wts-adaptive-*`) — the closest public artifact, captured directly.
226
- - **Tier 2 indexes**: not consulted (consistent with KR fintech systemic gap logged in `2026-05-13-kr10.md` and `2026-05-14-kr10.md` audits).
227
- - **Tier 3 live capture**: ✓ CDP `:9222` getComputedStyle on **two surfaces** — homepage (601 DOM samples, 416 `:root` vars) + stock order surface (`A005930/order`). 12 raw_samples retained in `.live-inspect-proof.json` (≥5 floor).
228
- - **IP guardrails**: brand assets reference-only; no verbatim Toss Securities taglines/copy reproduced; voice samples in §9 are fresh derivations; logo not redistributed; persona block in §10 explicitly marked `[FILL IN]` (no fabricated quotes).
229
- - **Flagged for UPDATE**: (a) motion timing tokens not captured this pass; (b) light-mode variant — `--tw-adaptive-*` namespace implies a theme switch but only dark default observed live; (c) personas pending public-research sourcing; (d) primary CTA visual not directly sampled (token tree confirms `#3182f6` fill but live surface served ghost-button variants on inspected paths).
314
+ ## 15. Motion & Easing
230
315
 
231
- ## 14. Do's and Don'ts
316
+ No duration, easing, or transition token was measured in the supplied evidence. The captured hover, focus, pressed, menu, and dialog snapshots establish state presence only; they do not authorize a motion scale. Keep any future motion specification separate until first-party computed transition evidence is available.
232
317
 
233
- ### Do
234
- - Build dark-mode-first, layering surfaces from deepest #101013 to body rgb(23,23,28) to overlay #202025 for sheets
235
- - Encode the KR-finance locale by using red #dc2e47 for positive/up ticks and blue #3182f6 for negative/down ticks via the positive/negative semantic tokens
236
- - Create depth with translucent rgba(214,224,239,0.09) 1px borders and layered surface alpha instead of elevation
237
- - Keep the two-tier radius scale, using 8px for cards, inputs, and buttons and 32px for pill controls like memo and filter chips
238
- - Set type from the observed hierarchy: 24px/700 section H2, 18.72px/700 sub-section H3, 15px/500 nav links, and 16px/400 body
239
- - Use Toss Product Sans tabular numerals so price ticks, order-book columns, and percent changes align by column
318
+ ## 16. Reference URLs
240
319
 
241
- ### Don't
242
- - Copy positive=red / negative=blue into non-KR/JP/TW locales without inverting positive-* to green and negative-* to red
243
- - Assume Toss Blue #3182f6 always means brand CTA, since on this surface it is also the down-tick fill and only context disambiguates
244
- - Introduce box-shadow as elevation language; this system deliberately uses translucent borders plus layered surface alphas
245
- - Add a third radius tier beyond the deliberate two-tier 8px / 32px scale
246
- - Introduce a display-only accent typeface; restraint is the rule and there is no decorative accent face
247
- - Decorate data surfaces with illustration; the price chart itself is the imagery
320
+ - Public WTS surface: https://www.tossinvest.com/?focusedProductCode=A000660
321
+ - Corporate context: https://home.tossinvest.com/en/corporate-info
322
+ - Investment-products marketing: https://home.tossinvest.com/en/investment-products
323
+ - Toss Product Sans context: https://toss.im/simplicity-21/sessions/3-3
324
+ - Tossface official repository: https://github.com/toss/tossface