oh-my-design-cli 1.3.9 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/README.ja.md +8 -8
  2. package/README.ko.md +7 -7
  3. package/README.md +50 -16
  4. package/README.zh-TW.md +8 -8
  5. package/agents/omd-asset-curator.md +2 -7
  6. package/agents/omd-codex-image.md +49 -0
  7. package/agents/omd-designer-review.md +38 -0
  8. package/agents/omd-final-qa.md +40 -0
  9. package/agents/omd-kr-writer.md +35 -0
  10. package/agents/omd-locale-adapter.md +32 -0
  11. package/agents/omd-master.md +3 -13
  12. package/agents/omd-orchestrator.md +34 -0
  13. package/data/reference-audits/2026-05-14-kr10.md +72 -0
  14. package/data/reference-audits/2026-05-15-kr10.md +124 -0
  15. package/data/reference-fingerprints.json +1409 -254
  16. package/data/research/2026-05-18-agent-landscape.md +69 -0
  17. package/data/research/2026-05-18-kr-style-presets.md +572 -0
  18. package/dist/bin/oh-my-design.js +6 -3
  19. package/dist/bin/oh-my-design.js.map +1 -1
  20. package/dist/{install-skills-MVXVXYAY.js → install-skills-IETT2TBJ.js} +91 -8
  21. package/dist/install-skills-IETT2TBJ.js.map +1 -0
  22. package/package.json +7 -1
  23. package/skills/omd-apply/SKILL.md +0 -1
  24. package/skills/omd-codex-image/SKILL.md +162 -0
  25. package/skills/omd-designer-review/SKILL.md +146 -0
  26. package/skills/omd-final-qa/SKILL.md +153 -0
  27. package/skills/omd-kr-writer/SKILL.md +229 -0
  28. package/skills/omd-locale-adapter/SKILL.md +124 -0
  29. package/skills/omd-orchestrator/SKILL.md +124 -0
  30. package/web/references/17live/DESIGN.md +424 -0
  31. package/web/references/29cm/DESIGN.md +11 -2
  32. package/web/references/ably/DESIGN.md +12 -2
  33. package/web/references/airbnb/DESIGN.md +17 -2
  34. package/web/references/airtable/DESIGN.md +20 -0
  35. package/web/references/alipay/DESIGN.md +456 -0
  36. package/web/references/appier/DESIGN.md +420 -0
  37. package/web/references/apple/DESIGN.md +17 -2
  38. package/web/references/baemin/DESIGN.md +11 -2
  39. package/web/references/banksalad/DESIGN.md +17 -2
  40. package/web/references/bilibili/DESIGN.md +426 -0
  41. package/web/references/bmw/DESIGN.md +14 -0
  42. package/web/references/bunjang/DESIGN.md +308 -0
  43. package/web/references/cal/DESIGN.md +14 -0
  44. package/web/references/catchtable/DESIGN.md +262 -0
  45. package/web/references/channeltalk/DESIGN.md +374 -0
  46. package/web/references/class101/DESIGN.md +433 -0
  47. package/web/references/classum/DESIGN.md +217 -0
  48. package/web/references/claude/DESIGN.md +11 -2
  49. package/web/references/clay/DESIGN.md +19 -0
  50. package/web/references/clickhouse/DESIGN.md +19 -0
  51. package/web/references/cohere/DESIGN.md +20 -0
  52. package/web/references/coinbase/DESIGN.md +14 -0
  53. package/web/references/composio/DESIGN.md +14 -0
  54. package/web/references/cookpad/DESIGN.md +357 -0
  55. package/web/references/coupang/DESIGN.md +17 -2
  56. package/web/references/cursor/DESIGN.md +20 -0
  57. package/web/references/dabang/DESIGN.md +210 -0
  58. package/web/references/dcard/DESIGN.md +11 -2
  59. package/web/references/dji/DESIGN.md +416 -0
  60. package/web/references/elevenlabs/DESIGN.md +20 -0
  61. package/web/references/expo/DESIGN.md +20 -0
  62. package/web/references/fastcampus/DESIGN.md +460 -0
  63. package/web/references/ferrari/DESIGN.md +14 -0
  64. package/web/references/figma/DESIGN.md +17 -2
  65. package/web/references/flex/DESIGN.md +309 -0
  66. package/web/references/framer/DESIGN.md +20 -0
  67. package/web/references/freee/DESIGN.md +16 -2
  68. package/web/references/gangnamunni/DESIGN.md +18 -2
  69. package/web/references/gmarket/DESIGN.md +464 -0
  70. package/web/references/gogoro/DESIGN.md +403 -0
  71. package/web/references/hashicorp/DESIGN.md +19 -0
  72. package/web/references/ibm/DESIGN.md +20 -0
  73. package/web/references/ichef/DESIGN.md +411 -0
  74. package/web/references/inflearn/DESIGN.md +396 -0
  75. package/web/references/intercom/DESIGN.md +14 -0
  76. package/web/references/jumpit/DESIGN.md +366 -0
  77. package/web/references/kakao/DESIGN.md +14 -0
  78. package/web/references/kakaobank/DESIGN.md +17 -2
  79. package/web/references/kakaopay/DESIGN.md +17 -2
  80. package/web/references/kakaot/DESIGN.md +454 -0
  81. package/web/references/karrot/DESIGN.md +16 -2
  82. package/web/references/kbank/DESIGN.md +195 -0
  83. package/web/references/kkday/DESIGN.md +423 -0
  84. package/web/references/kraken/DESIGN.md +14 -0
  85. package/web/references/krds/DESIGN.md +17 -2
  86. package/web/references/kream/DESIGN.md +382 -0
  87. package/web/references/kurly/DESIGN.md +11 -2
  88. package/web/references/lamborghini/DESIGN.md +14 -0
  89. package/web/references/line/DESIGN.md +17 -2
  90. package/web/references/linear.app/DESIGN.md +17 -2
  91. package/web/references/lovable/DESIGN.md +14 -0
  92. package/web/references/lunit/DESIGN.md +249 -0
  93. package/web/references/meituan/DESIGN.md +424 -0
  94. package/web/references/mercari/DESIGN.md +11 -2
  95. package/web/references/millie/DESIGN.md +533 -0
  96. package/web/references/minimax/DESIGN.md +14 -0
  97. package/web/references/mintlify/DESIGN.md +14 -0
  98. package/web/references/miro/DESIGN.md +20 -0
  99. package/web/references/mistral.ai/DESIGN.md +20 -0
  100. package/web/references/money-forward/DESIGN.md +401 -0
  101. package/web/references/mongodb/DESIGN.md +19 -0
  102. package/web/references/musinsa/DESIGN.md +11 -2
  103. package/web/references/myrealtrip/DESIGN.md +445 -0
  104. package/web/references/naver/DESIGN.md +17 -2
  105. package/web/references/naverwebtoon/DESIGN.md +429 -0
  106. package/web/references/note/DESIGN.md +318 -0
  107. package/web/references/notion/DESIGN.md +11 -2
  108. package/web/references/nvidia/DESIGN.md +11 -2
  109. package/web/references/ohouse/DESIGN.md +11 -2
  110. package/web/references/oliveyoung/DESIGN.md +342 -0
  111. package/web/references/ollama/DESIGN.md +14 -0
  112. package/web/references/opencode.ai/DESIGN.md +20 -0
  113. package/web/references/pinkoi/DESIGN.md +11 -2
  114. package/web/references/pinterest/DESIGN.md +19 -0
  115. package/web/references/posthog/DESIGN.md +20 -0
  116. package/web/references/publy/DESIGN.md +511 -0
  117. package/web/references/qanda/DESIGN.md +11 -2
  118. package/web/references/raycast/DESIGN.md +19 -0
  119. package/web/references/remember/DESIGN.md +17 -2
  120. package/web/references/renault/DESIGN.md +14 -0
  121. package/web/references/replicate/DESIGN.md +14 -0
  122. package/web/references/resend/DESIGN.md +20 -0
  123. package/web/references/revolut/DESIGN.md +14 -0
  124. package/web/references/ridi/DESIGN.md +11 -2
  125. package/web/references/runwayml/DESIGN.md +14 -0
  126. package/web/references/sanity/DESIGN.md +20 -0
  127. package/web/references/sentry/DESIGN.md +14 -0
  128. package/web/references/smarthr/DESIGN.md +404 -0
  129. package/web/references/smartnews/DESIGN.md +331 -0
  130. package/web/references/socar/DESIGN.md +17 -2
  131. package/web/references/spacex/DESIGN.md +11 -2
  132. package/web/references/spoon/DESIGN.md +446 -0
  133. package/web/references/spotify/DESIGN.md +14 -0
  134. package/web/references/stripe/DESIGN.md +11 -2
  135. package/web/references/supabase/DESIGN.md +20 -0
  136. package/web/references/superhuman/DESIGN.md +20 -0
  137. package/web/references/tada/DESIGN.md +528 -0
  138. package/web/references/tesla/DESIGN.md +11 -2
  139. package/web/references/together.ai/DESIGN.md +20 -0
  140. package/web/references/toss/DESIGN.md +16 -2
  141. package/web/references/toss-securities/DESIGN.md +193 -0
  142. package/web/references/tossbank/DESIGN.md +519 -0
  143. package/web/references/triple/DESIGN.md +434 -0
  144. package/web/references/tumblbug/DESIGN.md +530 -0
  145. package/web/references/tving/DESIGN.md +259 -0
  146. package/web/references/uber/DESIGN.md +19 -0
  147. package/web/references/upbit/DESIGN.md +276 -0
  148. package/web/references/upstage/DESIGN.md +214 -0
  149. package/web/references/vercel/DESIGN.md +17 -2
  150. package/web/references/voltagent/DESIGN.md +14 -0
  151. package/web/references/wadiz/DESIGN.md +344 -0
  152. package/web/references/wanted/DESIGN.md +16 -2
  153. package/web/references/warp/DESIGN.md +14 -0
  154. package/web/references/watcha/DESIGN.md +425 -0
  155. package/web/references/wavve/DESIGN.md +438 -0
  156. package/web/references/wconcept/DESIGN.md +511 -0
  157. package/web/references/webflow/DESIGN.md +14 -0
  158. package/web/references/wise/DESIGN.md +19 -0
  159. package/web/references/x.ai/DESIGN.md +14 -0
  160. package/web/references/xiaohongshu/DESIGN.md +423 -0
  161. package/web/references/yanolja/DESIGN.md +17 -2
  162. package/web/references/yeogiotte/DESIGN.md +18 -2
  163. package/web/references/yogiyo/DESIGN.md +465 -0
  164. package/web/references/zapier/DESIGN.md +20 -0
  165. package/web/references/zigbang/DESIGN.md +12 -2
  166. package/web/references/zigzag/DESIGN.md +17 -2
  167. package/agents/omd-3d-blender.md +0 -269
  168. package/dist/install-skills-MVXVXYAY.js.map +0 -1
@@ -0,0 +1,519 @@
1
+ ---
2
+ id: tossbank
3
+ name: Toss Bank
4
+ country: KR
5
+ category: fintech
6
+ homepage: "https://www.tossbank.com"
7
+ primary_color: "#0064FF"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=tossbank.com&sz=128"
11
+ verified: "2026-05-27"
12
+ omd: "0.1"
13
+ ---
14
+
15
+ # Design System Inspiration of Toss Bank (토스뱅크)
16
+
17
+ ## 1. Visual Theme & Atmosphere
18
+
19
+ Toss Bank is the licensed internet-only bank inside the Toss universe — the moment the calm, blue-accented Toss design language stops being a money-transfer convenience and becomes an actual chartered bank holding your deposits. Where the parent Toss app feels like a friend who happens to handle money, Toss Bank carries a slightly heavier responsibility: this is a *bank*, regulated, FSS-supervised, holding real balances and issuing real cards. The design resolves that tension by doubling down on the same calm-confident minimalism rather than reaching for institutional gravitas. The canvas is clean white (`#ffffff`), headings are a warm near-black charcoal (`#191f28`), and a single confident blue does all the interactive work. The atmosphere is "trustworthy because it's clear, not because it's stern."
20
+
21
+ The brand color is the official Toss blue `#0064FF` (Pantone 2175 C) — the same cerulean that anchors the entire Viva Republica family. On marketing and brand surfaces it appears as that saturated `#0064FF`; in the running product UI, interactive elements lean on the slightly softer, more legible `#3182f6` (blue500) inherited from the shared Toss design language. This brand-vs-UI blue split is deliberate and load-bearing: `#0064FF` is the logo and the promise, `#3182f6` is the tappable surface. The optimism of the color is the entire thesis — money at a bank can feel light, not bureaucratic.
22
+
23
+ Typography is **Toss Product Sans**, the custom typeface developed with Sandoll and Leedotype for financial contexts, where numerals and Latin characters are optically balanced against Korean hangul and financial symbols (`%`, comma separators, `±`) are tuned for small-size legibility. Toss Bank leans hard on tabular (fixed-width) numerals — a bank is, at its core, a column of numbers, and those numbers must never jitter.
24
+
25
+ **Key Characteristics:**
26
+ - Toss brand blue `#0064FF` (Pantone 2175 C) for logo/marketing; UI blue `#3182f6` for interactive surfaces
27
+ - Clean white canvas (`#ffffff`) with warm charcoal text (`#191f28`) — trust through clarity, not weight
28
+ - Toss Product Sans with Korean-Latin optical balancing and tabular numerals for balances and rates
29
+ - Minimal, single-layer black shadows — visual noise reads as a credibility tax in banking
30
+ - "이자 every day" product story: interest accruing daily is a recurring hero motif
31
+ - 375px mobile-first baseline; spacious summary screens, dense detail screens
32
+ - Blue is interaction, never decoration — illustrations and ornaments stay neutral
33
+
34
+ ## 2. Color Palette & Roles
35
+
36
+ Toss Bank reuses the shared Toss design-language palette. Brand-tier `#0064FF` is verified from the official Toss brand resource center (brand.toss.im, Pantone 2175 C); UI-tier blues follow the documented Toss Product/TDS scale.
37
+
38
+ ### Brand (Logo / Marketing)
39
+ - **Toss Brand Blue** (`#0064FF`): Pantone 2175 C. Logo lockup, marketing hero blocks, app icon. The promise color.
40
+ - **Brand Gray** (`#202632`): Secondary brand color (Pantone 433 C). Corporate, legal, and footer contexts.
41
+
42
+ ### Primary (UI Interactive)
43
+ - **Toss Blue** (`#3182f6`): `blue500`. Primary interactive color — CTAs, links, active states, selection. The workhorse of every tappable element in-product.
44
+ - **Blue Hover** (`#2272eb`): `blue600`. Hover / pressed state for blue500 elements.
45
+ - **Blue Light** (`#e8f3ff`): `blue50`. Informational backgrounds, subtle blue-tinted surfaces, "이자 받기" highlight blocks.
46
+
47
+ ### Surfaces
48
+ - **Pure White** (`#ffffff`): Page background, card surfaces.
49
+ - **Grey 50** (`#f9fafb`): Lightest gray surface, section backgrounds.
50
+ - **Grey 100** (`#f2f4f6`): Secondary background, card fills, disabled surfaces, skeleton blocks.
51
+
52
+ ### Text
53
+ - **Dark Charcoal** (`#191f28`): `grey900`. Primary headings, balances, strongest text. Warm near-black.
54
+ - **Grey 800** (`#333d4b`): Strong labels, navigation text.
55
+ - **Grey 700** (`#4e5968`): Emphasized body text, sub-headings.
56
+ - **Grey 600** (`#6b7684`): Body text, descriptions, metadata.
57
+ - **Grey 500** (`#8b95a1`): Caption text, secondary labels.
58
+ - **Grey 400** (`#b0b8c1`): Placeholder text, disabled icon fills.
59
+
60
+ ### Borders
61
+ - **Border Default** (`#e5e8eb`): grey200. Standard card borders, dividers, input outlines.
62
+ - **Border Strong** (`#d1d6db`): grey300. Emphasized borders, active input outlines.
63
+
64
+ ### Semantic
65
+ - **Error Red** (`#f04452`): `red500`. Errors, destructive actions, negative balance/expense indicators.
66
+ - **Success Green** (`#03b26c`): `green500`. Positive indicators, interest earned, confirmations.
67
+ - **Warning Orange** (`#fe9800`): `orange500`. Pending states, attention-needed.
68
+ - **Caution Yellow** (`#ffc342`): `yellow500`. Soft warnings, highlight moments.
69
+
70
+ ## 3. Typography Rules
71
+
72
+ ### Font Family
73
+ - **Primary**: `"Toss Product Sans", "Tossface", "SF Pro KR", "SF Pro Display", -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", Roboto, "Noto Sans KR", sans-serif`
74
+ - **Monospace**: `"SF Mono", SFMono-Regular, Menlo, Consolas, monospace`
75
+ - **Emoji**: `Tossface` — Toss's custom emoji font, decorative only, never on balance-handling screens
76
+
77
+ ### Hierarchy
78
+
79
+ | Role | Font | Size | Weight | Line Height | Notes |
80
+ |------|------|------|--------|-------------|-------|
81
+ | Display Hero | Toss Product Sans | 30px | 700 | 40px (1.33) | Onboarding, hero moments |
82
+ | Display Large | Toss Product Sans | 26px | 700 | 36px (1.38) | Section headers, key metrics |
83
+ | Heading Large | Toss Product Sans | 22px | 700 | 30px (1.36) | Feature titles, modal headers |
84
+ | Heading | Toss Product Sans | 20px | 600 | 28px (1.40) | Card headings, sub-sections |
85
+ | Subtitle | Toss Product Sans | 16px | 600 | 24px (1.50) | List headers, nav titles |
86
+ | Body Large | Toss Product Sans | 16px | 400 | 24px (1.50) | Descriptions, explanations |
87
+ | Body | Toss Product Sans | 14px | 400 | 22px (1.57) | Standard reading text |
88
+ | Caption | Toss Product Sans | 12px | 400 | 18px (1.50) | Timestamps, fine print, rate disclaimers |
89
+ | Balance Display | Toss Product Sans | 30px+ | 700 | tight | Account balance — tabular numerals |
90
+
91
+ ### Principles
92
+ - **Three weights from eight**: ships 300–950, UI uses 400 (body), 600 (emphasis), 700 (balances + headings).
93
+ - **Tabular numerals for money**: balances, interest rates, transaction amounts all use fixed-width digits so columns never shift.
94
+ - **Korean-Latin optical balance**: hangul and Latin/numerals independently weighted so mixed text reads harmoniously.
95
+ - **Rate legibility**: `%` and decimal points (interest is sold in 0.1% increments) get enhanced small-size clarity.
96
+
97
+ ## 4. Component Stylings
98
+
99
+ ### Buttons
100
+
101
+ Toss Bank reuses the TDS `<Button>` system — variant × color × size, default `xlarge` (56px). Geometry follows the shared Toss Product Sans / TDS Mobile scale.
102
+
103
+ **Fill / Primary**
104
+ - Background: `#3182f6`
105
+ - Text: `#ffffff`
106
+ - Border: none
107
+ - Radius: 16px
108
+ - Padding: 0 20px
109
+ - Font: 17px / 600 / Toss Product Sans
110
+ - Pressed: dim overlay via `--button-pressed-opacity`
111
+ - Disabled: bg opacity scaled by `--button-disabled-opacity-color`
112
+ - Use: Primary CTA (계좌 만들기, 이자 받기, 송금하기) — 56px tall
113
+
114
+ **Fill / Dark**
115
+ - Background: `#4e5968`
116
+ - Text: `#ffffff`
117
+ - Border: none
118
+ - Radius: 16px
119
+ - Padding: 0 20px
120
+ - Font: 17px / 600 / Toss Product Sans
121
+ - Use: Strong neutral action (설정 저장, 본인인증 진행)
122
+
123
+ **Fill / Danger**
124
+ - Background: `#f04452`
125
+ - Text: `#ffffff`
126
+ - Border: none
127
+ - Radius: 16px
128
+ - Padding: 0 20px
129
+ - Font: 17px / 600 / Toss Product Sans
130
+ - Use: Destructive confirmation (계좌 해지, 카드 분실신고)
131
+
132
+ **Weak / Primary**
133
+ - Background: `rgba(100, 168, 255, 0.15)`
134
+ - Text: `#2272eb`
135
+ - Border: none
136
+ - Radius: 16px
137
+ - Padding: 0 20px
138
+ - Font: 17px / 600 / Toss Product Sans
139
+ - Use: Secondary action paired with Fill / Primary on the same screen
140
+
141
+ **Weak / Dark**
142
+ - Background: `rgba(2, 32, 71, 0.05)`
143
+ - Text: `#4e5968`
144
+ - Border: none
145
+ - Radius: 16px
146
+ - Padding: 0 20px
147
+ - Font: 17px / 600 / Toss Product Sans
148
+ - Use: Cancel / neutral secondary (취소, 닫기, 나중에 하기)
149
+
150
+ Size scale (height · font · radius): `small` 32px · 13px/600 · 8px; `medium` 38px · 15px/600 · 10px; `large` 48px · 17px/600 · 14px; `xlarge` (default) 56px · 17px/600 · 16px. Display modes: `inline`, `block`, `full`.
151
+
152
+ ### Inputs
153
+
154
+ Toss Bank reuses TDS `<TextField>` (`box` default, plus `line` / `big` / `hero`). `SecureKeypad` (randomised-position PIN) and `SplitTextField` (OTP / 인증번호) are first-class for the banking flows.
155
+
156
+ **Box (default)**
157
+ - Background: `rgba(0, 23, 51, 0.02)`
158
+ - Text: `#333d4b`
159
+ - Border: 1px solid `rgba(2, 32, 71, 0.05)`
160
+ - Radius: 14px
161
+ - Padding: 14px 16px
162
+ - Font: 17px / 400 / Toss Product Sans
163
+ - Placeholder: `#b0b8c1`
164
+ - Focus: border `#3182f6`
165
+ - Use: Standard form input — account name, memo
166
+
167
+ **Hero (amount entry)**
168
+ - Background: transparent
169
+ - Text: `#333d4b`
170
+ - Border: 1px solid `#e5e8eb` (bottom only)
171
+ - Radius: 0px
172
+ - Padding: 0px 0px 4px
173
+ - Font: 30px / 600 / Toss Product Sans
174
+ - Use: Large transfer/deposit amount entry — tabular numerals
175
+
176
+ **Error**
177
+ - Background: `rgba(0, 23, 51, 0.02)`
178
+ - Text: `#333d4b`
179
+ - Border: 1px solid `#f04452`
180
+ - Radius: 14px
181
+ - Padding: 14px 16px
182
+ - Font: 17px / 400 / Toss Product Sans
183
+ - Use: `hasError` state — paired with inline help in `#f04452`
184
+
185
+ ### Cards
186
+
187
+ **Account / Balance Card**
188
+ - Background: `#ffffff`
189
+ - Border: none
190
+ - Radius: 16px
191
+ - Padding: 24px
192
+ - Shadow: `0px 2px 8px rgba(0,0,0,0.08)`
193
+ - Use: The hero surface — account name, balance (30px/700, tabular), "이자 매일 받기" affordance
194
+
195
+ **Standard Card**
196
+ - Background: `#ffffff`
197
+ - Border: none
198
+ - Radius: 12px
199
+ - Padding: 20px
200
+ - Shadow: `0px 2px 8px rgba(0,0,0,0.08)`
201
+ - Use: Transaction summary, product cards
202
+
203
+ **Compact (list row)**
204
+ - Background: `#ffffff`
205
+ - Border: 1px solid `#e5e8eb`
206
+ - Radius: 8px
207
+ - Padding: 12px
208
+ - Shadow: none
209
+ - Use: Transaction list rows where a soft 1px edge replaces shadow
210
+
211
+ ### Badges
212
+
213
+ **Fill / Blue**
214
+ - Background: `#3182f6`
215
+ - Text: `#ffffff`
216
+ - Border: none
217
+ - Radius: 12px
218
+ - Padding: 3px 7px
219
+ - Font: 13px / 700 / Toss Product Sans
220
+ - Use: Status emphasis ("NEW", "한도 상향")
221
+
222
+ **Weak / Green**
223
+ - Background: `rgba(34, 197, 94, 0.15)`
224
+ - Text: `#16a34a`
225
+ - Border: none
226
+ - Radius: 12px
227
+ - Padding: 3px 7px
228
+ - Font: 13px / 700 / Toss Product Sans
229
+ - Use: Interest-earned / completed state (입금 완료)
230
+
231
+ **Weak / Elephant**
232
+ - Background: `rgba(2, 32, 71, 0.05)`
233
+ - Text: `#4e5968`
234
+ - Border: none
235
+ - Radius: 12px
236
+ - Padding: 3px 7px
237
+ - Font: 13px / 700 / Toss Product Sans
238
+ - Use: Neutral metadata badge (적금, 입출금)
239
+
240
+ ### Tabs
241
+
242
+ **Bottom Tab (Active)**
243
+ - Background: `#ffffff`
244
+ - Text: `#191f28`
245
+ - Border: 1px solid `#e5e8eb` (top border only)
246
+ - Active: `#3182f6` icon + label
247
+ - Font: 11px / 500 / Toss Product Sans
248
+ - Use: Bottom navigation — fixed white, no shadow
249
+
250
+ **Segmented**
251
+ - Background: `#f2f4f6`
252
+ - Text: `#8b95a1`
253
+ - Border: none
254
+ - Radius: 12px
255
+ - Padding: 8px 16px
256
+ - Active: `#ffffff` bg + `#191f28` text + `0px 2px 4px rgba(0,0,0,0.06)` shadow
257
+ - Font: 14px / 600 / Toss Product Sans
258
+ - Use: 입금/출금 내역 switching, 월/주 전환
259
+
260
+ ### Toasts
261
+
262
+ **Default**
263
+ - Background: `#191f28`
264
+ - Text: `#ffffff`
265
+ - Border: none
266
+ - Radius: 8px
267
+ - Padding: 12px 16px
268
+ - Shadow: `0px 4px 12px rgba(0,0,0,0.12)`
269
+ - Font: 14px / 500 / Toss Product Sans
270
+ - Use: Transient feedback ("복사되었어요"). Money-moved success is a dedicated screen, never a toast.
271
+
272
+ ### Dialogs
273
+
274
+ **Bottom Sheet**
275
+ - Background: `#ffffff`
276
+ - Text: `#191f28`
277
+ - Border: none
278
+ - Radius: 16px (top corners only)
279
+ - Padding: 24px 20px
280
+ - Shadow: `0px -4px 12px rgba(0,0,0,0.08)`
281
+ - Use: Selection, picker, secondary form (account picker, 송금 확인)
282
+
283
+ ### Toggles
284
+
285
+ **Default**
286
+ - Background: `#3182f6` (on) / `#d1d6db` (off)
287
+ - Border: none
288
+ - Radius: 9999px
289
+ - Thumb: `#ffffff` 18px circle, `0px 1px 2px rgba(0,0,0,0.1)` shadow
290
+ - Use: 매일 이자 받기 자동화, 알림 설정
291
+
292
+ ---
293
+
294
+ **Verified:** 2026-05-27
295
+ **Tier 1 sources:** tossbank.com (live WebFetch — confirmed clean white canvas, minimal text-link CTAs `자세히 보기`, benefit-driven Korean copy `이자 2배 쌓여요`, "Forbes 국내 은행 1위" positioning); brand.toss.im (Toss brand resource center — `#0064FF` Pantone 2175 C confirmed). Component geometry inherited from the documented TDS Mobile / Toss Product Sans design language (shared across the Viva Republica family).
296
+ **Tier 2 sources:** getdesign.md/tossbank — not checked. styles.refero.design — not checked.
297
+ **Conflicts unresolved:** Brand blue `#0064FF` (logo/marketing, verified) vs. UI blue `#3182f6` (in-product interactive, inherited from shared Toss design language) — treated as distinct surfaces per Toss brand-vs-UI-blue precedent.
298
+
299
+ ## 5. Layout Principles
300
+
301
+ ### Spacing System
302
+ - Base unit: 8px
303
+ - Common values: 4, 8, 12, 16, 20, 24, 32, 40, 48
304
+ - Horizontal padding: 20px (slightly wider than typical 16px)
305
+ - Financial data grids: tighter 4px internal spacing
306
+
307
+ ### Grid & Container
308
+ - Design baseline: 375px mobile width
309
+ - Content: full-width with 20px horizontal padding
310
+ - Single-column, mobile-first — no explicit multi-column grid
311
+ - Transaction lists: full-width rows, amounts right-aligned
312
+
313
+ ### Whitespace Philosophy
314
+ - **Breathing room for money.** A balance at 30px with 32px margins communicates security through spaciousness.
315
+ - **Progressive density.** Summary screens are spacious; detail / transaction screens are dense.
316
+ - **Grouped by function.** Deposit / transfer / card actions separated by 24px+; related data within a group uses 8–12px gaps.
317
+
318
+ ### Border Radius Scale
319
+ - Compact (8px): inputs, small buttons, compact cards
320
+ - Comfortable (12px): standard cards, dialog corners
321
+ - Large (16px): account cards, buttons, bottom-sheet top corners
322
+ - Pill (9999px): toggles, chips
323
+
324
+ ## 6. Depth & Elevation
325
+
326
+ | Level | Treatment | Use |
327
+ |-------|-----------|-----|
328
+ | Flat (0) | No shadow | Page background, inline elements |
329
+ | Subtle (1) | `0px 1px 3px rgba(0,0,0,0.06)` | List item separation |
330
+ | Standard (2) | `0px 2px 8px rgba(0,0,0,0.08)` | Cards, account/balance panels |
331
+ | Elevated (3) | `0px 4px 12px rgba(0,0,0,0.12)` | Dropdowns, floating buttons |
332
+ | Modal (4) | `0px 8px 24px rgba(0,0,0,0.16)` | Bottom sheets, dialogs |
333
+
334
+ **Shadow philosophy.** Single-layer, pure black, low opacity. No colored shadows. In a chartered bank's UI, visual noise undermines trust — elevation is communicated through subtle opacity, not drama. Restraint *is* the brand statement.
335
+
336
+ ## 7. Do's and Don'ts
337
+
338
+ ### Do
339
+ - Use UI blue `#3182f6` for every interactive element; reserve `#0064FF` for logo/marketing
340
+ - Use tabular numerals for all balances, rates, and transaction amounts
341
+ - Use 700 weight for balances and headings, 400 for body, 600 for emphasis
342
+ - Show interest earned / income in green (`#03b26c`), expenses in red (`#f04452`)
343
+ - Use blue50 (`#e8f3ff`) for "이자 받기" and informational highlight blocks
344
+ - Keep money-moved confirmation as a dedicated screen, never a toast
345
+
346
+ ### Don't
347
+ - Don't confuse brand blue `#0064FF` with UI blue `#3182f6`
348
+ - Don't use heavy or colored shadows — depth comes from layering, not drama
349
+ - Don't use bold (700) for body text — reserved for headings and amounts
350
+ - Don't approximate money (`약 120만원`) on primary surfaces — exact numerals only
351
+ - Don't decorate financial data displays — clarity is the aesthetic
352
+ - Don't introduce a second saturated accent hue; blue is the sole interactive color
353
+
354
+ ## 8. Responsive Behavior
355
+
356
+ ### Breakpoints
357
+ | Name | Width | Key Changes |
358
+ |------|-------|-------------|
359
+ | Mobile (Primary) | <480px | Full fidelity, 375px baseline |
360
+ | Tablet | 480–768px | Expanded cards, optional side margins |
361
+ | Desktop (Web) | >768px | Centered column, max-width ~480px for mobile-web parity |
362
+
363
+ ### Touch Targets
364
+ - Buttons: xlarge ~56px, large ~48px, medium ~38px
365
+ - List rows: minimum 52px height for financial actions
366
+ - SecureKeypad: large 56–64px targets
367
+
368
+ ### Collapsing Strategy
369
+ - Desktop web mirrors mobile in a centered column
370
+ - Bottom sheet → centered modal on larger screens
371
+ - Sticky bottom CTA bar with safe-area insets
372
+
373
+ ### Image Behavior
374
+ - Card art / product imagery: consistent sizing within context
375
+ - Charts (interest history): full-width, responsive, aspect-ratio preserved
376
+
377
+ ## 9. Agent Prompt Guide
378
+
379
+ ### Quick Color Reference
380
+ - Primary CTA: UI Blue `#3182f6` (hover `#2272eb`)
381
+ - Brand / logo only: `#0064FF`
382
+ - Background: White `#ffffff`; surface `#f2f4f6`
383
+ - Heading: Charcoal `#191f28`; body `#6b7684`; caption `#8b95a1`
384
+ - Placeholder: `#b0b8c1`; border `#e5e8eb`
385
+ - Success/interest: Green `#03b26c`; error/expense: Red `#f04452`
386
+
387
+ ### Example Component Prompts
388
+ - "Create a Toss Bank account card: white bg, 16px radius, 24px padding, shadow 0px 2px 8px rgba(0,0,0,0.08). Account name 14px/400 #8b95a1, balance 30px/700 #191f28 tabular numerals + '원' 20px/400. A blue50 (#e8f3ff) pill below reading '이자 받기' in #2272eb."
389
+ - "Build a send-money button: #3182f6 bg, white 17px/600 text, 56px tall, 16px radius, full-width. Pressed: dim overlay. Disabled: opacity drop."
390
+ - "Design a transaction row: full-width, 16px h-padding, 52px min-height. Left: 32px circle icon + counterparty (14px/600 #191f28) + category (12px/400 #8b95a1). Right: amount 14px/600, #f04452 expense / #03b26c income, tabular."
391
+ - "Create a SecureKeypad-style PIN entry: randomised digit grid, 6 dots above, each key 56px, 14px digit #191f28."
392
+
393
+ ### Iteration Guide
394
+ 1. Full Toss Product Sans stack with Korean fallbacks
395
+ 2. Interactive = `#3182f6`; brand `#0064FF` is logo/marketing only
396
+ 3. Money = 700 weight, tabular numerals, right-aligned in lists
397
+ 4. Radius: 8px inputs, 12px cards, 16px account cards/sheets, pill toggles
398
+ 5. Single-layer pure-black shadows, no tints
399
+ 6. Mobile-first 375px, 20px h-padding
400
+
401
+ ---
402
+
403
+ ## 10. Voice & Tone
404
+
405
+ Toss Bank speaks like Toss — calm, unhurried, zero jargon — but with one extra ounce of fiduciary care, because it actually holds your deposits. The default register is soft-polite `해요체` (`이자가 매일 쌓여요`, `계좌가 만들어졌어요`), the friendly-but-respectful Korean ending, never the cold `~습니다` corporate voice except in regulated disclosure. Korean is the unquestioned primary voice; English appears only in product names. Sentences end in periods; buttons do not. No emoji on money-handling screens.
406
+
407
+ | Context | Tone |
408
+ |---|---|
409
+ | CTAs | Imperative short Korean verb (`계좌 만들기`, `이자 받기`, `송금하기`, `확인`). |
410
+ | Success toasts | Past-tense single sentence, soft ending (`송금이 완료되었어요`). No emoji. |
411
+ | Interest moments | Warm, concrete (`오늘 이자 23원이 쌓였어요`). Exact numerals, never rounded. |
412
+ | Error messages | Specific + blameless + actionable. Never `문제가 발생했습니다`. |
413
+ | Onboarding | Second-person, one idea per screen, no bullet lists. |
414
+ | Balances | Bare numerals with comma separators + 원. `1,240,000원`, never `₩1.24M`. |
415
+ | Legal / disclosure | Formal `합니다` register — the single exception. FSS-required rate and risk copy. |
416
+
417
+ **Forbidden phrases.** `불편을 드려 죄송합니다`, `Oops`, `죄송하지만`, `약 ~원` (approximation on money), rounded currency (`약 120만원`) on primary surfaces, English-first strings on Korean surfaces.
418
+
419
+ **Voice samples.**
420
+ - `이자 2배 쌓여요` — benefit-led product copy. <!-- verified: tossbank.com via WebFetch 2026-05-27 -->
421
+ - `포브스 선정 국내 은행 1위` — trust/credential positioning. <!-- verified: tossbank.com via WebFetch 2026-05-27 -->
422
+ - `오늘 이자 23원이 쌓였어요` — illustrative daily-interest moment. <!-- illustrative: follows Toss Bank's documented daily-interest product; not verified verbatim -->
423
+ - `계좌가 만들어졌어요` — illustrative account-created confirmation. <!-- illustrative: not verified as live copy -->
424
+
425
+ ## 11. Brand Narrative
426
+
427
+ Toss Bank (토스뱅크) is the internet-only bank of **Viva Republica** (비바리퍼블리카), the company behind Toss, founded by **Lee Seung-gun (이승건)**. It received its banking license and launched in **October 2021** as Korea's third internet-only bank, after Kakao Bank and K Bank. Where the Toss app had spent years making money *move* easily, Toss Bank set out to make a chartered bank *feel* easy — challenging the legacy KB / Shinhan / Woori / Hana incumbents not on rates alone but on the entire experience of holding an account.
428
+
429
+ The signature product story is **daily interest** — `이자 매일 받기` — where interest accrues and can be claimed each day rather than at term's end. It is a financial-product feature, but it's also a design thesis: it turns a passive, invisible bank balance into something you check, tap, and feel good about every morning. The blue `#0064FF` optimism carries straight through: a bank does not have to feel like filing taxes.
430
+
431
+ What Toss Bank refuses: the institutional-indigo seriousness of legacy banking (Active-X plug-ins, 12-digit account numbers, forms that look like government paperwork), and equally the cartoonish playfulness of some consumer fintech. It occupies the same narrow middle as Toss — calm but optimistic, regulated but light. Every ornamental move costs clarity, and clarity is the trust.
432
+
433
+ ## 12. Principles
434
+
435
+ 1. **Clarity is the trust signal.** A bank earns confidence by being legible, not stern. *UI implication:* white canvas, single-layer shadows, one interactive hue. If a screen looks "serious" through visual weight, simplify it instead.
436
+ 2. **Numbers are typography.** Balances, rates, and amounts use 700 weight and tabular numerals with display-heading care. *UI implication:* never let a balance jitter between values or inherit body weight; right-align amounts in lists.
437
+ 3. **Blue is interaction, not decoration.** UI `#3182f6` appears only where the user can tap. *UI implication:* illustrations, borders, and headers stay neutral; brand `#0064FF` is logo/marketing only.
438
+ 4. **Exactness over approximation.** Money is never `약` (about). *UI implication:* show exact won amounts with comma separators; rounding is forbidden on primary surfaces.
439
+ 5. **One action per screen.** Two primary buttons means two screens. *UI implication:* secondary actions are fine; two primaries are never.
440
+ 6. **Daily delight, regulated honesty.** The daily-interest warmth lives beside FSS-required disclosure in formal `합니다`. *UI implication:* keep the two registers visually separate — warm `해요체` for product, formal for legal.
441
+
442
+ ## 13. Personas
443
+
444
+ *Personas are fictional archetypes informed by publicly described Korean internet-bank user segments, not individual people.*
445
+
446
+ **현우 (Hyun-woo), 31, Seoul.** Product designer at a startup. Moved his salary account to Toss Bank for the daily interest and checks the `이자 받기` tap each morning like a tiny game. Expects the balance to paint in under 1s and the app to never make him feel like he's at a bank counter.
447
+
448
+ **김여사 (Mrs. Kim), 58, Daejeon.** Runs a small flower shop. Her son set up Toss Bank for her. Uses it to receive customer transfers and pay suppliers. Trusts it because the numbers are big, clear, and exact — and because it never shows her anything that looks like a confusing form.
449
+
450
+ **서연 (Seo-yeon), 24, Gwangju.** First job, first real savings. Opened her account entirely on her phone in minutes. Treats the daily-interest screen as a habit and tells friends "it actually feels good to check your bank app," which she'd never say about a legacy bank.
451
+
452
+ ## 14. States
453
+
454
+ | State | Treatment |
455
+ |---|---|
456
+ | **Empty (no transactions)** | Single `grey700` line explaining why (`아직 거래내역이 없어요`) + one secondary action (blue50 bg, blue500 text). Never an illustration, never `데이터가 없습니다`. |
457
+ | **Empty (filter cleared)** | Single `grey500` caption (`조건에 맞는 내역이 없어요`). No button. |
458
+ | **Loading (first paint)** | Skeleton blocks at `#f2f4f6` matching final layout. Balances render as `--`, never as skeleton blocks. |
459
+ | **Loading (refresh)** | Top pull-down spinner in blue500. No overlay; previous values stay visible. |
460
+ | **Error (inline field)** | `#f04452` 2px border + red500 13px error text below. One actionable sentence (`계좌번호를 다시 확인해주세요`). |
461
+ | **Error (toast)** | `#191f28` bg, white 14px/400, 3s auto-dismiss, one sentence, bottom 20px inset. |
462
+ | **Error (screen-blocking)** | Server outage only. White screen, centered `grey900` 16px/600 line + retry in blue500. No illustration. |
463
+ | **Success (money moved)** | Dedicated screen, not a toast. `#03b26c` checkmark top-center, exact amount 30px/700, recipient + timestamp, single `확인`. |
464
+ | **Success (interest claimed)** | Brief blue50 flash behind the balance + `오늘 이자 N원이 쌓였어요` toast. |
465
+ | **Skeleton** | `#f2f4f6` blocks at exact final dimensions, ~1.2s shimmer with 8% white highlight, component-radius rounding. Never on balances (show `--`). |
466
+ | **Disabled** | Button opacity drops per `--button-disabled-opacity-color`; input borders stay `grey200` so geometry is stable. |
467
+
468
+ ## 15. Motion & Easing
469
+
470
+ Toss Bank's motion is calm and precise — money should never appear to flicker or bounce.
471
+
472
+ **Durations:**
473
+
474
+ | Token | Value | Use |
475
+ |---|---|---|
476
+ | `motion-instant` | 0ms | Toggle flips, checkbox states |
477
+ | `motion-fast` | 150ms | Hover, focus, button press overlay |
478
+ | `motion-standard` | 250ms | Default — sheet open, card expand, tab switch |
479
+ | `motion-slow` | 400ms | Emphasized — success checkmark, onboarding advance |
480
+ | `motion-page` | 350ms | Full-screen route transitions |
481
+
482
+ **Easings:**
483
+
484
+ | Token | Curve | Use |
485
+ |---|---|---|
486
+ | `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Sheets, toasts, screen pushes appearing |
487
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals, pops |
488
+ | `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1)` | Two-way transitions |
489
+ | `ease-spring` | `cubic-bezier(0.34, 1.56, 0.64, 1)` | Reserved — money-moved / interest-claimed checkmark only |
490
+
491
+ **Signature motions.**
492
+ 1. **Balance update.** The old number slides up 20px and fades (`motion-fast / ease-exit`); the new number slides in from below (`motion-standard / ease-enter`). Never cross-fade money — flicker reads as a bug.
493
+ 2. **Daily-interest claim.** Tapping `이자 받기` triggers a brief blue50 flash behind the balance and a small spring-eased number tick-up — the one routine place a touch of delight is licensed.
494
+ 3. **Success checkmark.** Money-moved confirmation draws the checkmark over `motion-slow` with `ease-spring`. The only standard spring outside interest.
495
+ 4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, all tokens collapse to instant; cross-fades replace slides. No exceptions.
496
+
497
+ <!--
498
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
499
+
500
+ Tier 1 (UI tokens, §1–9): tossbank.com live WebFetch 2026-05-27 (clean white
501
+ canvas, minimal text-link CTAs, benefit Korean copy `이자 2배 쌓여요`, Forbes
502
+ top-bank positioning). Brand blue `#0064FF` Pantone 2175 C confirmed via
503
+ brand.toss.im. Component geometry inherited from the shared documented TDS
504
+ Mobile / Toss Product Sans design language used across the Viva Republica
505
+ family; not independently re-inspected on tossbank.com surfaces.
506
+
507
+ Tier 2 (founding/narrative): Toss Bank launched Oct 2021 as Korea's third
508
+ internet-only bank under Viva Republica (이승건). Daily-interest (`이자 매일
509
+ 받기`) is its signature documented product. Legacy-bank context (KB/Shinhan/
510
+ Woori/Hana) is general industry knowledge.
511
+
512
+ Voice samples: `이자 2배 쌓여요`, `포브스 선정 국내 은행 1위` verified live.
513
+ `오늘 이자 23원이 쌓였어요`, `계좌가 만들어졌어요`, `송금이 완료되었어요`
514
+ are ILLUSTRATIVE patterns following Toss Bank's `해요체` register and daily-
515
+ interest product; not confirmed verbatim.
516
+
517
+ Personas (§13) are fictional archetypes. Any resemblance to specific users is
518
+ unintended.
519
+ -->