zugzbot 1.3.0 → 1.5.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 (784) hide show
  1. package/.opencode/agents/sdd-coder.md +5 -4
  2. package/.opencode/agents/sdd-orchestrator.md +9 -8
  3. package/.opencode/agents/sdd-spec-writer.md +3 -4
  4. package/.opencode/commands/loop.md +1 -1
  5. package/.opencode/plugins/loop-enforcer.ts +0 -1
  6. package/.opencode/plugins/sdd-bridge.ts +1 -1
  7. package/.opencode/rules/sdd-global.md +9 -5
  8. package/.opencode/scripts/lint-charts.js +1 -2
  9. package/.opencode/skills/sdd-foundation-overview/SKILL.md +3 -4
  10. package/.opencode/skills/sdd-methodology/SKILL.md +8 -10
  11. package/.opencode/skills/sdd-quickstart/SKILL.md +5 -9
  12. package/.opencode/skills/shadcn-templates/SKILL.md +71 -15
  13. package/.opencode/templates/nextjs-shadcn/components.json +2 -1
  14. package/.opencode/tools/sdd_catalog.ts +335 -20
  15. package/.opencode/tools/sdd_core.ts +8 -6
  16. package/.opencode/tools/sdd_lucide.ts +112 -0
  17. package/README.md +1 -7
  18. package/opencode.json +0 -10
  19. package/package.json +1 -3
  20. package/.opencode/oh-my-design/design-md/11st/.verification.md +0 -37
  21. package/.opencode/oh-my-design/design-md/11st/DESIGN.md +0 -400
  22. package/.opencode/oh-my-design/design-md/17live/DESIGN.md +0 -467
  23. package/.opencode/oh-my-design/design-md/29cm/DESIGN.md +0 -495
  24. package/.opencode/oh-my-design/design-md/29cm/_promo.json +0 -23
  25. package/.opencode/oh-my-design/design-md/29cm/_research.md +0 -103
  26. package/.opencode/oh-my-design/design-md/3o3/.verification.md +0 -73
  27. package/.opencode/oh-my-design/design-md/3o3/DESIGN.md +0 -454
  28. package/.opencode/oh-my-design/design-md/91app/.verification.md +0 -25
  29. package/.opencode/oh-my-design/design-md/91app/DESIGN.md +0 -182
  30. package/.opencode/oh-my-design/design-md/abema/.verification.md +0 -64
  31. package/.opencode/oh-my-design/design-md/abema/DESIGN.md +0 -535
  32. package/.opencode/oh-my-design/design-md/ably/DESIGN.md +0 -646
  33. package/.opencode/oh-my-design/design-md/ably/_promo.json +0 -18
  34. package/.opencode/oh-my-design/design-md/ably/_research.md +0 -120
  35. package/.opencode/oh-my-design/design-md/accupass/.verification.md +0 -66
  36. package/.opencode/oh-my-design/design-md/accupass/DESIGN.md +0 -494
  37. package/.opencode/oh-my-design/design-md/adobe/.verification.md +0 -63
  38. package/.opencode/oh-my-design/design-md/adobe/DESIGN.md +0 -458
  39. package/.opencode/oh-my-design/design-md/airbnb/.verification.md +0 -143
  40. package/.opencode/oh-my-design/design-md/airbnb/DESIGN.md +0 -639
  41. package/.opencode/oh-my-design/design-md/airbnb/README.md +0 -23
  42. package/.opencode/oh-my-design/design-md/airbnb/preview-dark.html +0 -234
  43. package/.opencode/oh-my-design/design-md/airbnb/preview.html +0 -233
  44. package/.opencode/oh-my-design/design-md/airtable/.verification.md +0 -136
  45. package/.opencode/oh-my-design/design-md/airtable/DESIGN.md +0 -314
  46. package/.opencode/oh-my-design/design-md/airtable/README.md +0 -23
  47. package/.opencode/oh-my-design/design-md/airtable/preview-dark.html +0 -165
  48. package/.opencode/oh-my-design/design-md/airtable/preview.html +0 -164
  49. package/.opencode/oh-my-design/design-md/alipay/DESIGN.md +0 -506
  50. package/.opencode/oh-my-design/design-md/amazingtalker/.verification.md +0 -38
  51. package/.opencode/oh-my-design/design-md/amazingtalker/DESIGN.md +0 -434
  52. package/.opencode/oh-my-design/design-md/appier/DESIGN.md +0 -465
  53. package/.opencode/oh-my-design/design-md/apple/.verification.md +0 -162
  54. package/.opencode/oh-my-design/design-md/apple/DESIGN.md +0 -613
  55. package/.opencode/oh-my-design/design-md/apple/README.md +0 -24
  56. package/.opencode/oh-my-design/design-md/apple/preview-dark.html +0 -420
  57. package/.opencode/oh-my-design/design-md/apple/preview.html +0 -414
  58. package/.opencode/oh-my-design/design-md/baemin/.verification.md +0 -132
  59. package/.opencode/oh-my-design/design-md/baemin/DESIGN.md +0 -578
  60. package/.opencode/oh-my-design/design-md/baemin/README.md +0 -19
  61. package/.opencode/oh-my-design/design-md/baemin/_research.md +0 -84
  62. package/.opencode/oh-my-design/design-md/banksalad/DESIGN.md +0 -688
  63. package/.opencode/oh-my-design/design-md/banksalad/_promo.json +0 -29
  64. package/.opencode/oh-my-design/design-md/banksalad/_research.md +0 -190
  65. package/.opencode/oh-my-design/design-md/bilibili/DESIGN.md +0 -471
  66. package/.opencode/oh-my-design/design-md/bithumb/.verification.md +0 -31
  67. package/.opencode/oh-my-design/design-md/bithumb/DESIGN.md +0 -208
  68. package/.opencode/oh-my-design/design-md/bmw/.verification.md +0 -114
  69. package/.opencode/oh-my-design/design-md/bmw/DESIGN.md +0 -360
  70. package/.opencode/oh-my-design/design-md/bmw/README.md +0 -23
  71. package/.opencode/oh-my-design/design-md/bmw/preview-dark.html +0 -211
  72. package/.opencode/oh-my-design/design-md/bmw/preview.html +0 -210
  73. package/.opencode/oh-my-design/design-md/brandi/.verification.md +0 -29
  74. package/.opencode/oh-my-design/design-md/brandi/DESIGN.md +0 -414
  75. package/.opencode/oh-my-design/design-md/bunjang/DESIGN.md +0 -374
  76. package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/.live-inspect-proof.json +0 -260
  77. package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/fonts.json +0 -33
  78. package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/logo-icon.svg +0 -10
  79. package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/structure.json +0 -131
  80. package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/tokens.json +0 -147
  81. package/.opencode/oh-my-design/design-md/cakeresume/.verification.md +0 -25
  82. package/.opencode/oh-my-design/design-md/cakeresume/DESIGN.md +0 -191
  83. package/.opencode/oh-my-design/design-md/cal/.verification.md +0 -145
  84. package/.opencode/oh-my-design/design-md/cal/DESIGN.md +0 -481
  85. package/.opencode/oh-my-design/design-md/cal/README.md +0 -23
  86. package/.opencode/oh-my-design/design-md/cal/preview-dark.html +0 -449
  87. package/.opencode/oh-my-design/design-md/cal/preview.html +0 -575
  88. package/.opencode/oh-my-design/design-md/catchtable/DESIGN.md +0 -341
  89. package/.opencode/oh-my-design/design-md/catchtable/_research.md +0 -54
  90. package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/.live-inspect-proof.json +0 -204
  91. package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/.live-inspect-raw.json +0 -22
  92. package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/fonts.json +0 -21
  93. package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/structure.json +0 -42
  94. package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/tokens.json +0 -95
  95. package/.opencode/oh-my-design/design-md/cathay/.verification.md +0 -44
  96. package/.opencode/oh-my-design/design-md/cathay/DESIGN.md +0 -432
  97. package/.opencode/oh-my-design/design-md/channeltalk/DESIGN.md +0 -422
  98. package/.opencode/oh-my-design/design-md/channeltalk/assets/_reference/.live-inspect-proof.json +0 -320
  99. package/.opencode/oh-my-design/design-md/channeltalk/assets/_reference/fonts.json +0 -53
  100. package/.opencode/oh-my-design/design-md/channeltalk/assets/_reference/structure.json +0 -47
  101. package/.opencode/oh-my-design/design-md/channeltalk/assets/_reference/tokens.json +0 -78
  102. package/.opencode/oh-my-design/design-md/class101/DESIGN.md +0 -484
  103. package/.opencode/oh-my-design/design-md/classting/.verification.md +0 -32
  104. package/.opencode/oh-my-design/design-md/classting/DESIGN.md +0 -292
  105. package/.opencode/oh-my-design/design-md/classum/DESIGN.md +0 -279
  106. package/.opencode/oh-my-design/design-md/classum/assets/_reference/.live-inspect-proof.json +0 -72
  107. package/.opencode/oh-my-design/design-md/classum/assets/_reference/fonts.json +0 -20
  108. package/.opencode/oh-my-design/design-md/classum/assets/_reference/structure.json +0 -21
  109. package/.opencode/oh-my-design/design-md/classum/assets/_reference/tokens.json +0 -56
  110. package/.opencode/oh-my-design/design-md/claude/.verification.md +0 -106
  111. package/.opencode/oh-my-design/design-md/claude/DESIGN.md +0 -561
  112. package/.opencode/oh-my-design/design-md/claude/README.md +0 -24
  113. package/.opencode/oh-my-design/design-md/claude/preview-dark.html +0 -803
  114. package/.opencode/oh-my-design/design-md/claude/preview.html +0 -826
  115. package/.opencode/oh-my-design/design-md/clay/.verification.md +0 -129
  116. package/.opencode/oh-my-design/design-md/clay/DESIGN.md +0 -454
  117. package/.opencode/oh-my-design/design-md/clay/README.md +0 -23
  118. package/.opencode/oh-my-design/design-md/clay/preview-dark.html +0 -316
  119. package/.opencode/oh-my-design/design-md/clay/preview.html +0 -315
  120. package/.opencode/oh-my-design/design-md/clickhouse/.verification.md +0 -132
  121. package/.opencode/oh-my-design/design-md/clickhouse/DESIGN.md +0 -424
  122. package/.opencode/oh-my-design/design-md/clickhouse/README.md +0 -24
  123. package/.opencode/oh-my-design/design-md/clickhouse/preview-dark.html +0 -834
  124. package/.opencode/oh-my-design/design-md/clickhouse/preview.html +0 -786
  125. package/.opencode/oh-my-design/design-md/cloudflare/.verification.md +0 -21
  126. package/.opencode/oh-my-design/design-md/cloudflare/DESIGN.md +0 -637
  127. package/.opencode/oh-my-design/design-md/cohere/.verification.md +0 -136
  128. package/.opencode/oh-my-design/design-md/cohere/DESIGN.md +0 -409
  129. package/.opencode/oh-my-design/design-md/cohere/README.md +0 -24
  130. package/.opencode/oh-my-design/design-md/cohere/preview-dark.html +0 -803
  131. package/.opencode/oh-my-design/design-md/cohere/preview.html +0 -807
  132. package/.opencode/oh-my-design/design-md/coinbase/.verification.md +0 -116
  133. package/.opencode/oh-my-design/design-md/coinbase/DESIGN.md +0 -353
  134. package/.opencode/oh-my-design/design-md/coinbase/README.md +0 -23
  135. package/.opencode/oh-my-design/design-md/coinbase/preview-dark.html +0 -164
  136. package/.opencode/oh-my-design/design-md/coinbase/preview.html +0 -163
  137. package/.opencode/oh-my-design/design-md/coinone/.verification.md +0 -38
  138. package/.opencode/oh-my-design/design-md/coinone/DESIGN.md +0 -257
  139. package/.opencode/oh-my-design/design-md/composio/.verification.md +0 -143
  140. package/.opencode/oh-my-design/design-md/composio/DESIGN.md +0 -441
  141. package/.opencode/oh-my-design/design-md/composio/README.md +0 -24
  142. package/.opencode/oh-my-design/design-md/composio/preview-dark.html +0 -958
  143. package/.opencode/oh-my-design/design-md/composio/preview.html +0 -933
  144. package/.opencode/oh-my-design/design-md/cookpad/DESIGN.md +0 -394
  145. package/.opencode/oh-my-design/design-md/coupang/.verification.md +0 -141
  146. package/.opencode/oh-my-design/design-md/coupang/DESIGN.md +0 -557
  147. package/.opencode/oh-my-design/design-md/cursor/.verification.md +0 -141
  148. package/.opencode/oh-my-design/design-md/cursor/DESIGN.md +0 -460
  149. package/.opencode/oh-my-design/design-md/cursor/README.md +0 -24
  150. package/.opencode/oh-my-design/design-md/cursor/preview-dark.html +0 -393
  151. package/.opencode/oh-my-design/design-md/cursor/preview.html +0 -383
  152. package/.opencode/oh-my-design/design-md/dabang/DESIGN.md +0 -267
  153. package/.opencode/oh-my-design/design-md/dabang/assets/_reference/.live-inspect-proof.json +0 -145
  154. package/.opencode/oh-my-design/design-md/dabang/assets/_reference/fonts.json +0 -22
  155. package/.opencode/oh-my-design/design-md/dabang/assets/_reference/raw-capture-map.json +0 -718
  156. package/.opencode/oh-my-design/design-md/dabang/assets/_reference/raw-capture.json +0 -1125
  157. package/.opencode/oh-my-design/design-md/dabang/assets/_reference/structure.json +0 -53
  158. package/.opencode/oh-my-design/design-md/dabang/assets/_reference/tokens.json +0 -130
  159. package/.opencode/oh-my-design/design-md/danawa/.verification.md +0 -60
  160. package/.opencode/oh-my-design/design-md/danawa/DESIGN.md +0 -477
  161. package/.opencode/oh-my-design/design-md/dcard/.verification.md +0 -118
  162. package/.opencode/oh-my-design/design-md/dcard/DESIGN.md +0 -633
  163. package/.opencode/oh-my-design/design-md/dcard/README.md +0 -12
  164. package/.opencode/oh-my-design/design-md/dcard/_research/forum-1440px.png +0 -0
  165. package/.opencode/oh-my-design/design-md/dcard/_research.md +0 -133
  166. package/.opencode/oh-my-design/design-md/dell/.verification.md +0 -21
  167. package/.opencode/oh-my-design/design-md/dell/DESIGN.md +0 -636
  168. package/.opencode/oh-my-design/design-md/devsisters/.verification.md +0 -32
  169. package/.opencode/oh-my-design/design-md/devsisters/DESIGN.md +0 -282
  170. package/.opencode/oh-my-design/design-md/discord/.verification.md +0 -21
  171. package/.opencode/oh-my-design/design-md/discord/DESIGN.md +0 -604
  172. package/.opencode/oh-my-design/design-md/dji/DESIGN.md +0 -454
  173. package/.opencode/oh-my-design/design-md/drnow/.verification.md +0 -41
  174. package/.opencode/oh-my-design/design-md/drnow/DESIGN.md +0 -383
  175. package/.opencode/oh-my-design/design-md/dropbox/.verification.md +0 -61
  176. package/.opencode/oh-my-design/design-md/dropbox/DESIGN.md +0 -445
  177. package/.opencode/oh-my-design/design-md/duolingo/.verification.md +0 -20
  178. package/.opencode/oh-my-design/design-md/duolingo/DESIGN.md +0 -563
  179. package/.opencode/oh-my-design/design-md/elevenlabs/.verification.md +0 -128
  180. package/.opencode/oh-my-design/design-md/elevenlabs/DESIGN.md +0 -415
  181. package/.opencode/oh-my-design/design-md/elevenlabs/README.md +0 -23
  182. package/.opencode/oh-my-design/design-md/elevenlabs/preview-dark.html +0 -252
  183. package/.opencode/oh-my-design/design-md/elevenlabs/preview.html +0 -251
  184. package/.opencode/oh-my-design/design-md/expo/.verification.md +0 -141
  185. package/.opencode/oh-my-design/design-md/expo/DESIGN.md +0 -412
  186. package/.opencode/oh-my-design/design-md/expo/README.md +0 -24
  187. package/.opencode/oh-my-design/design-md/expo/preview-dark.html +0 -533
  188. package/.opencode/oh-my-design/design-md/expo/preview.html +0 -533
  189. package/.opencode/oh-my-design/design-md/fastcampus/DESIGN.md +0 -529
  190. package/.opencode/oh-my-design/design-md/fastcampus/assets/_reference/.live-inspect-proof.json +0 -950
  191. package/.opencode/oh-my-design/design-md/fastcampus/assets/_reference/fonts.json +0 -14
  192. package/.opencode/oh-my-design/design-md/fastcampus/assets/_reference/structure.json +0 -30
  193. package/.opencode/oh-my-design/design-md/fastcampus/assets/_reference/tokens.json +0 -109
  194. package/.opencode/oh-my-design/design-md/ferrari/.verification.md +0 -119
  195. package/.opencode/oh-my-design/design-md/ferrari/DESIGN.md +0 -447
  196. package/.opencode/oh-my-design/design-md/ferrari/README.md +0 -23
  197. package/.opencode/oh-my-design/design-md/ferrari/preview-dark.html +0 -1162
  198. package/.opencode/oh-my-design/design-md/ferrari/preview.html +0 -1122
  199. package/.opencode/oh-my-design/design-md/figma/.verification.md +0 -206
  200. package/.opencode/oh-my-design/design-md/figma/DESIGN.md +0 -534
  201. package/.opencode/oh-my-design/design-md/figma/README.md +0 -24
  202. package/.opencode/oh-my-design/design-md/figma/preview-dark.html +0 -822
  203. package/.opencode/oh-my-design/design-md/figma/preview.html +0 -832
  204. package/.opencode/oh-my-design/design-md/finda/.verification.md +0 -33
  205. package/.opencode/oh-my-design/design-md/finda/DESIGN.md +0 -413
  206. package/.opencode/oh-my-design/design-md/firstory/.verification.md +0 -70
  207. package/.opencode/oh-my-design/design-md/firstory/DESIGN.md +0 -487
  208. package/.opencode/oh-my-design/design-md/flex/DESIGN.md +0 -356
  209. package/.opencode/oh-my-design/design-md/flex/_research.md +0 -49
  210. package/.opencode/oh-my-design/design-md/flex/assets/_reference/.live-inspect-proof.json +0 -192
  211. package/.opencode/oh-my-design/design-md/flex/assets/_reference/.raw-inspect.json +0 -873
  212. package/.opencode/oh-my-design/design-md/flex/assets/_reference/fonts.json +0 -17
  213. package/.opencode/oh-my-design/design-md/flex/assets/_reference/structure.json +0 -58
  214. package/.opencode/oh-my-design/design-md/flex/assets/_reference/tokens.json +0 -75
  215. package/.opencode/oh-my-design/design-md/flo/.verification.md +0 -33
  216. package/.opencode/oh-my-design/design-md/flo/DESIGN.md +0 -349
  217. package/.opencode/oh-my-design/design-md/framer/.verification.md +0 -147
  218. package/.opencode/oh-my-design/design-md/framer/DESIGN.md +0 -431
  219. package/.opencode/oh-my-design/design-md/framer/README.md +0 -23
  220. package/.opencode/oh-my-design/design-md/framer/preview-dark.html +0 -902
  221. package/.opencode/oh-my-design/design-md/framer/preview.html +0 -883
  222. package/.opencode/oh-my-design/design-md/freee/.verification.md +0 -145
  223. package/.opencode/oh-my-design/design-md/freee/DESIGN.md +0 -620
  224. package/.opencode/oh-my-design/design-md/freee/README.md +0 -12
  225. package/.opencode/oh-my-design/design-md/freee/_research/vibes-storybook-1440px.png +0 -0
  226. package/.opencode/oh-my-design/design-md/freee/_research.md +0 -116
  227. package/.opencode/oh-my-design/design-md/fugle/.verification.md +0 -40
  228. package/.opencode/oh-my-design/design-md/fugle/DESIGN.md +0 -290
  229. package/.opencode/oh-my-design/design-md/funnow/.verification.md +0 -62
  230. package/.opencode/oh-my-design/design-md/funnow/DESIGN.md +0 -431
  231. package/.opencode/oh-my-design/design-md/gangnamunni/DESIGN.md +0 -677
  232. package/.opencode/oh-my-design/design-md/gangnamunni/_promo.json +0 -26
  233. package/.opencode/oh-my-design/design-md/gangnamunni/_research.md +0 -113
  234. package/.opencode/oh-my-design/design-md/genie/.verification.md +0 -29
  235. package/.opencode/oh-my-design/design-md/genie/DESIGN.md +0 -415
  236. package/.opencode/oh-my-design/design-md/github/.verification.md +0 -21
  237. package/.opencode/oh-my-design/design-md/github/DESIGN.md +0 -727
  238. package/.opencode/oh-my-design/design-md/gmarket/DESIGN.md +0 -534
  239. package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/.live-inspect-proof.json +0 -217
  240. package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/fonts.json +0 -41
  241. package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/raw-capture-bestsellers.json +0 -1929
  242. package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/raw-capture-home.json +0 -3675
  243. package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/structure.json +0 -65
  244. package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/tokens.json +0 -210
  245. package/.opencode/oh-my-design/design-md/gogolook/.verification.md +0 -31
  246. package/.opencode/oh-my-design/design-md/gogolook/DESIGN.md +0 -155
  247. package/.opencode/oh-my-design/design-md/gogoro/DESIGN.md +0 -441
  248. package/.opencode/oh-my-design/design-md/google/.verification.md +0 -61
  249. package/.opencode/oh-my-design/design-md/google/DESIGN.md +0 -499
  250. package/.opencode/oh-my-design/design-md/greenvines/.verification.md +0 -72
  251. package/.opencode/oh-my-design/design-md/greenvines/DESIGN.md +0 -454
  252. package/.opencode/oh-my-design/design-md/greeting/.verification.md +0 -64
  253. package/.opencode/oh-my-design/design-md/greeting/DESIGN.md +0 -462
  254. package/.opencode/oh-my-design/design-md/grip/.verification.md +0 -36
  255. package/.opencode/oh-my-design/design-md/grip/DESIGN.md +0 -289
  256. package/.opencode/oh-my-design/design-md/hahow/.verification.md +0 -31
  257. package/.opencode/oh-my-design/design-md/hahow/DESIGN.md +0 -184
  258. package/.opencode/oh-my-design/design-md/hashicorp/.verification.md +0 -142
  259. package/.opencode/oh-my-design/design-md/hashicorp/DESIGN.md +0 -411
  260. package/.opencode/oh-my-design/design-md/hashicorp/README.md +0 -24
  261. package/.opencode/oh-my-design/design-md/hashicorp/preview-dark.html +0 -1202
  262. package/.opencode/oh-my-design/design-md/hashicorp/preview.html +0 -1193
  263. package/.opencode/oh-my-design/design-md/hogangnono/.verification.md +0 -33
  264. package/.opencode/oh-my-design/design-md/hogangnono/DESIGN.md +0 -349
  265. package/.opencode/oh-my-design/design-md/hp/.verification.md +0 -21
  266. package/.opencode/oh-my-design/design-md/hp/DESIGN.md +0 -563
  267. package/.opencode/oh-my-design/design-md/hyperconnect/.verification.md +0 -40
  268. package/.opencode/oh-my-design/design-md/hyperconnect/DESIGN.md +0 -393
  269. package/.opencode/oh-my-design/design-md/hyundaicard/.verification.md +0 -25
  270. package/.opencode/oh-my-design/design-md/hyundaicard/DESIGN.md +0 -201
  271. package/.opencode/oh-my-design/design-md/ibm/.verification.md +0 -102
  272. package/.opencode/oh-my-design/design-md/ibm/DESIGN.md +0 -464
  273. package/.opencode/oh-my-design/design-md/ibm/README.md +0 -24
  274. package/.opencode/oh-my-design/design-md/ibm/preview-dark.html +0 -443
  275. package/.opencode/oh-my-design/design-md/ibm/preview.html +0 -428
  276. package/.opencode/oh-my-design/design-md/ichef/DESIGN.md +0 -455
  277. package/.opencode/oh-my-design/design-md/ikala/.verification.md +0 -35
  278. package/.opencode/oh-my-design/design-md/ikala/DESIGN.md +0 -400
  279. package/.opencode/oh-my-design/design-md/imweb/.verification.md +0 -61
  280. package/.opencode/oh-my-design/design-md/imweb/DESIGN.md +0 -460
  281. package/.opencode/oh-my-design/design-md/inflearn/DESIGN.md +0 -453
  282. package/.opencode/oh-my-design/design-md/inflearn/_promo.json +0 -29
  283. package/.opencode/oh-my-design/design-md/inflearn/_research.md +0 -85
  284. package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/.live-inspect-proof-courses.json +0 -679
  285. package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/.live-inspect-proof.json +0 -448
  286. package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/fonts.json +0 -41
  287. package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/structure.json +0 -110
  288. package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/tokens.json +0 -54
  289. package/.opencode/oh-my-design/design-md/intercom/.verification.md +0 -144
  290. package/.opencode/oh-my-design/design-md/intercom/DESIGN.md +0 -271
  291. package/.opencode/oh-my-design/design-md/intercom/README.md +0 -23
  292. package/.opencode/oh-my-design/design-md/intercom/preview-dark.html +0 -185
  293. package/.opencode/oh-my-design/design-md/intercom/preview.html +0 -184
  294. package/.opencode/oh-my-design/design-md/jandi/.verification.md +0 -26
  295. package/.opencode/oh-my-design/design-md/jandi/DESIGN.md +0 -382
  296. package/.opencode/oh-my-design/design-md/jkopay/.verification.md +0 -32
  297. package/.opencode/oh-my-design/design-md/jkopay/DESIGN.md +0 -283
  298. package/.opencode/oh-my-design/design-md/jobkorea/.verification.md +0 -30
  299. package/.opencode/oh-my-design/design-md/jobkorea/DESIGN.md +0 -349
  300. package/.opencode/oh-my-design/design-md/jumpit/DESIGN.md +0 -403
  301. package/.opencode/oh-my-design/design-md/jumpit/_research.md +0 -119
  302. package/.opencode/oh-my-design/design-md/jumpit/assets/_reference/.live-inspect-proof.json +0 -182
  303. package/.opencode/oh-my-design/design-md/jumpit/assets/_reference/fonts.json +0 -20
  304. package/.opencode/oh-my-design/design-md/jumpit/assets/_reference/structure.json +0 -66
  305. package/.opencode/oh-my-design/design-md/jumpit/assets/_reference/tokens.json +0 -108
  306. package/.opencode/oh-my-design/design-md/kakao/.verification.md +0 -137
  307. package/.opencode/oh-my-design/design-md/kakao/DESIGN.md +0 -568
  308. package/.opencode/oh-my-design/design-md/kakao/README.md +0 -18
  309. package/.opencode/oh-my-design/design-md/kakao/_research.md +0 -98
  310. package/.opencode/oh-my-design/design-md/kakaobank/.verification.md +0 -133
  311. package/.opencode/oh-my-design/design-md/kakaobank/DESIGN.md +0 -602
  312. package/.opencode/oh-my-design/design-md/kakaopay/DESIGN.md +0 -603
  313. package/.opencode/oh-my-design/design-md/kakaopay/_promo.json +0 -22
  314. package/.opencode/oh-my-design/design-md/kakaopay/_research.md +0 -84
  315. package/.opencode/oh-my-design/design-md/kakaot/DESIGN.md +0 -507
  316. package/.opencode/oh-my-design/design-md/karrot/.verification.md +0 -143
  317. package/.opencode/oh-my-design/design-md/karrot/DESIGN.md +0 -494
  318. package/.opencode/oh-my-design/design-md/karrot/README.md +0 -18
  319. package/.opencode/oh-my-design/design-md/karrot/_research.md +0 -57
  320. package/.opencode/oh-my-design/design-md/kbank/DESIGN.md +0 -252
  321. package/.opencode/oh-my-design/design-md/kbank/assets/_reference/.live-inspect-proof.json +0 -215
  322. package/.opencode/oh-my-design/design-md/kbank/assets/_reference/.live-inspect-raw.json +0 -1
  323. package/.opencode/oh-my-design/design-md/kbank/assets/_reference/fonts.json +0 -20
  324. package/.opencode/oh-my-design/design-md/kbank/assets/_reference/structure.json +0 -151
  325. package/.opencode/oh-my-design/design-md/kbank/assets/_reference/tokens.json +0 -101
  326. package/.opencode/oh-my-design/design-md/kdan/.verification.md +0 -30
  327. package/.opencode/oh-my-design/design-md/kdan/DESIGN.md +0 -193
  328. package/.opencode/oh-my-design/design-md/kintone/.verification.md +0 -21
  329. package/.opencode/oh-my-design/design-md/kintone/DESIGN.md +0 -586
  330. package/.opencode/oh-my-design/design-md/kkbox/.verification.md +0 -27
  331. package/.opencode/oh-my-design/design-md/kkbox/DESIGN.md +0 -136
  332. package/.opencode/oh-my-design/design-md/kkday/DESIGN.md +0 -470
  333. package/.opencode/oh-my-design/design-md/kmong/.verification.md +0 -30
  334. package/.opencode/oh-my-design/design-md/kmong/DESIGN.md +0 -427
  335. package/.opencode/oh-my-design/design-md/krafton/.verification.md +0 -38
  336. package/.opencode/oh-my-design/design-md/krafton/DESIGN.md +0 -267
  337. package/.opencode/oh-my-design/design-md/kraken/.verification.md +0 -143
  338. package/.opencode/oh-my-design/design-md/kraken/DESIGN.md +0 -277
  339. package/.opencode/oh-my-design/design-md/kraken/README.md +0 -23
  340. package/.opencode/oh-my-design/design-md/kraken/preview-dark.html +0 -169
  341. package/.opencode/oh-my-design/design-md/kraken/preview.html +0 -168
  342. package/.opencode/oh-my-design/design-md/krds/.verification.md +0 -373
  343. package/.opencode/oh-my-design/design-md/krds/DESIGN.md +0 -1060
  344. package/.opencode/oh-my-design/design-md/kream/DESIGN.md +0 -432
  345. package/.opencode/oh-my-design/design-md/kream/assets/_reference/.live-inspect-proof.json +0 -289
  346. package/.opencode/oh-my-design/design-md/kream/assets/_reference/fonts.json +0 -26
  347. package/.opencode/oh-my-design/design-md/kream/assets/_reference/structure.json +0 -56
  348. package/.opencode/oh-my-design/design-md/kream/assets/_reference/tokens.json +0 -154
  349. package/.opencode/oh-my-design/design-md/kurly/.verification.md +0 -126
  350. package/.opencode/oh-my-design/design-md/kurly/DESIGN.md +0 -620
  351. package/.opencode/oh-my-design/design-md/laftel/.verification.md +0 -39
  352. package/.opencode/oh-my-design/design-md/laftel/DESIGN.md +0 -293
  353. package/.opencode/oh-my-design/design-md/lamborghini/.verification.md +0 -127
  354. package/.opencode/oh-my-design/design-md/lamborghini/DESIGN.md +0 -430
  355. package/.opencode/oh-my-design/design-md/lamborghini/README.md +0 -23
  356. package/.opencode/oh-my-design/design-md/lamborghini/preview-dark.html +0 -303
  357. package/.opencode/oh-my-design/design-md/lamborghini/preview.html +0 -381
  358. package/.opencode/oh-my-design/design-md/laundrygo/.verification.md +0 -60
  359. package/.opencode/oh-my-design/design-md/laundrygo/DESIGN.md +0 -434
  360. package/.opencode/oh-my-design/design-md/layerx/.verification.md +0 -21
  361. package/.opencode/oh-my-design/design-md/layerx/DESIGN.md +0 -615
  362. package/.opencode/oh-my-design/design-md/lezhin/.verification.md +0 -47
  363. package/.opencode/oh-my-design/design-md/lezhin/DESIGN.md +0 -348
  364. package/.opencode/oh-my-design/design-md/line/.verification.md +0 -137
  365. package/.opencode/oh-my-design/design-md/line/DESIGN.md +0 -467
  366. package/.opencode/oh-my-design/design-md/line/README.md +0 -12
  367. package/.opencode/oh-my-design/design-md/line/_research/home-1440px.png +0 -0
  368. package/.opencode/oh-my-design/design-md/line/_research.md +0 -65
  369. package/.opencode/oh-my-design/design-md/linear.app/.verification.md +0 -143
  370. package/.opencode/oh-my-design/design-md/linear.app/DESIGN.md +0 -642
  371. package/.opencode/oh-my-design/design-md/linear.app/README.md +0 -24
  372. package/.opencode/oh-my-design/design-md/linear.app/preview-dark.html +0 -383
  373. package/.opencode/oh-my-design/design-md/linear.app/preview.html +0 -373
  374. package/.opencode/oh-my-design/design-md/loom/.verification.md +0 -31
  375. package/.opencode/oh-my-design/design-md/loom/DESIGN.md +0 -396
  376. package/.opencode/oh-my-design/design-md/lovable/.verification.md +0 -154
  377. package/.opencode/oh-my-design/design-md/lovable/DESIGN.md +0 -423
  378. package/.opencode/oh-my-design/design-md/lovable/README.md +0 -24
  379. package/.opencode/oh-my-design/design-md/lovable/preview-dark.html +0 -349
  380. package/.opencode/oh-my-design/design-md/lovable/preview.html +0 -348
  381. package/.opencode/oh-my-design/design-md/lunit/DESIGN.md +0 -296
  382. package/.opencode/oh-my-design/design-md/lunit/assets/_reference/.live-inspect-proof.json +0 -249
  383. package/.opencode/oh-my-design/design-md/lunit/assets/_reference/fonts.json +0 -24
  384. package/.opencode/oh-my-design/design-md/lunit/assets/_reference/structure.json +0 -162
  385. package/.opencode/oh-my-design/design-md/lunit/assets/_reference/tokens.json +0 -115
  386. package/.opencode/oh-my-design/design-md/mastercard/.verification.md +0 -19
  387. package/.opencode/oh-my-design/design-md/mastercard/DESIGN.md +0 -587
  388. package/.opencode/oh-my-design/design-md/meituan/DESIGN.md +0 -466
  389. package/.opencode/oh-my-design/design-md/melon/.verification.md +0 -27
  390. package/.opencode/oh-my-design/design-md/melon/DESIGN.md +0 -179
  391. package/.opencode/oh-my-design/design-md/mercari/.verification.md +0 -155
  392. package/.opencode/oh-my-design/design-md/mercari/DESIGN.md +0 -514
  393. package/.opencode/oh-my-design/design-md/mercari/README.md +0 -12
  394. package/.opencode/oh-my-design/design-md/mercari/_research/home-1440px.png +0 -0
  395. package/.opencode/oh-my-design/design-md/mercari/_research.md +0 -137
  396. package/.opencode/oh-my-design/design-md/mercury/.verification.md +0 -21
  397. package/.opencode/oh-my-design/design-md/mercury/DESIGN.md +0 -589
  398. package/.opencode/oh-my-design/design-md/meta/.verification.md +0 -21
  399. package/.opencode/oh-my-design/design-md/meta/DESIGN.md +0 -615
  400. package/.opencode/oh-my-design/design-md/microsoft/.verification.md +0 -62
  401. package/.opencode/oh-my-design/design-md/microsoft/DESIGN.md +0 -508
  402. package/.opencode/oh-my-design/design-md/millie/DESIGN.md +0 -584
  403. package/.opencode/oh-my-design/design-md/minimax/.verification.md +0 -135
  404. package/.opencode/oh-my-design/design-md/minimax/DESIGN.md +0 -396
  405. package/.opencode/oh-my-design/design-md/minimax/README.md +0 -24
  406. package/.opencode/oh-my-design/design-md/minimax/preview-dark.html +0 -1262
  407. package/.opencode/oh-my-design/design-md/minimax/preview.html +0 -1248
  408. package/.opencode/oh-my-design/design-md/mintlify/.verification.md +0 -160
  409. package/.opencode/oh-my-design/design-md/mintlify/DESIGN.md +0 -472
  410. package/.opencode/oh-my-design/design-md/mintlify/README.md +0 -24
  411. package/.opencode/oh-my-design/design-md/mintlify/preview-dark.html +0 -409
  412. package/.opencode/oh-my-design/design-md/mintlify/preview.html +0 -398
  413. package/.opencode/oh-my-design/design-md/miricanvas/.verification.md +0 -61
  414. package/.opencode/oh-my-design/design-md/miricanvas/DESIGN.md +0 -464
  415. package/.opencode/oh-my-design/design-md/miro/.verification.md +0 -138
  416. package/.opencode/oh-my-design/design-md/miro/DESIGN.md +0 -319
  417. package/.opencode/oh-my-design/design-md/miro/README.md +0 -23
  418. package/.opencode/oh-my-design/design-md/miro/preview-dark.html +0 -174
  419. package/.opencode/oh-my-design/design-md/miro/preview.html +0 -173
  420. package/.opencode/oh-my-design/design-md/mistral.ai/.verification.md +0 -146
  421. package/.opencode/oh-my-design/design-md/mistral.ai/DESIGN.md +0 -390
  422. package/.opencode/oh-my-design/design-md/mistral.ai/README.md +0 -24
  423. package/.opencode/oh-my-design/design-md/mistral.ai/preview-dark.html +0 -806
  424. package/.opencode/oh-my-design/design-md/mistral.ai/preview.html +0 -805
  425. package/.opencode/oh-my-design/design-md/modusign/.verification.md +0 -58
  426. package/.opencode/oh-my-design/design-md/modusign/DESIGN.md +0 -524
  427. package/.opencode/oh-my-design/design-md/momoshop/.verification.md +0 -36
  428. package/.opencode/oh-my-design/design-md/momoshop/DESIGN.md +0 -322
  429. package/.opencode/oh-my-design/design-md/money-forward/DESIGN.md +0 -443
  430. package/.opencode/oh-my-design/design-md/mongodb/.verification.md +0 -145
  431. package/.opencode/oh-my-design/design-md/mongodb/DESIGN.md +0 -401
  432. package/.opencode/oh-my-design/design-md/mongodb/README.md +0 -23
  433. package/.opencode/oh-my-design/design-md/mongodb/preview-dark.html +0 -260
  434. package/.opencode/oh-my-design/design-md/mongodb/preview.html +0 -259
  435. package/.opencode/oh-my-design/design-md/muji/.verification.md +0 -20
  436. package/.opencode/oh-my-design/design-md/muji/DESIGN.md +0 -605
  437. package/.opencode/oh-my-design/design-md/musinsa/.verification.md +0 -59
  438. package/.opencode/oh-my-design/design-md/musinsa/DESIGN.md +0 -593
  439. package/.opencode/oh-my-design/design-md/mustit/.verification.md +0 -37
  440. package/.opencode/oh-my-design/design-md/mustit/DESIGN.md +0 -328
  441. package/.opencode/oh-my-design/design-md/myrealtrip/DESIGN.md +0 -494
  442. package/.opencode/oh-my-design/design-md/naver/.verification.md +0 -134
  443. package/.opencode/oh-my-design/design-md/naver/DESIGN.md +0 -582
  444. package/.opencode/oh-my-design/design-md/naverwebtoon/DESIGN.md +0 -477
  445. package/.opencode/oh-my-design/design-md/netflix/.verification.md +0 -21
  446. package/.opencode/oh-my-design/design-md/netflix/DESIGN.md +0 -572
  447. package/.opencode/oh-my-design/design-md/nexon/.verification.md +0 -27
  448. package/.opencode/oh-my-design/design-md/nexon/DESIGN.md +0 -389
  449. package/.opencode/oh-my-design/design-md/nhncloud/.verification.md +0 -23
  450. package/.opencode/oh-my-design/design-md/nhncloud/DESIGN.md +0 -207
  451. package/.opencode/oh-my-design/design-md/nike/.verification.md +0 -21
  452. package/.opencode/oh-my-design/design-md/nike/DESIGN.md +0 -588
  453. package/.opencode/oh-my-design/design-md/note/DESIGN.md +0 -346
  454. package/.opencode/oh-my-design/design-md/notion/.verification.md +0 -141
  455. package/.opencode/oh-my-design/design-md/notion/DESIGN.md +0 -557
  456. package/.opencode/oh-my-design/design-md/notion/README.md +0 -24
  457. package/.opencode/oh-my-design/design-md/notion/preview-dark.html +0 -372
  458. package/.opencode/oh-my-design/design-md/notion/preview.html +0 -364
  459. package/.opencode/oh-my-design/design-md/nvidia/.verification.md +0 -127
  460. package/.opencode/oh-my-design/design-md/nvidia/DESIGN.md +0 -550
  461. package/.opencode/oh-my-design/design-md/nvidia/README.md +0 -24
  462. package/.opencode/oh-my-design/design-md/nvidia/_research.md +0 -68
  463. package/.opencode/oh-my-design/design-md/nvidia/preview-dark.html +0 -374
  464. package/.opencode/oh-my-design/design-md/nvidia/preview.html +0 -366
  465. package/.opencode/oh-my-design/design-md/ohouse/.verification.md +0 -87
  466. package/.opencode/oh-my-design/design-md/ohouse/DESIGN.md +0 -635
  467. package/.opencode/oh-my-design/design-md/oliveyoung/DESIGN.md +0 -407
  468. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/.live-inspect-proof.json +0 -158
  469. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_best_capture.json +0 -644
  470. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_detail_capture.json +0 -447
  471. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_main.html +0 -419
  472. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_main_capture.json +0 -1126
  473. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_search_capture.json +0 -912
  474. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/fonts.json +0 -20
  475. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/structure.json +0 -91
  476. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/tokens.json +0 -79
  477. package/.opencode/oh-my-design/design-md/ollama/.verification.md +0 -138
  478. package/.opencode/oh-my-design/design-md/ollama/DESIGN.md +0 -393
  479. package/.opencode/oh-my-design/design-md/ollama/README.md +0 -24
  480. package/.opencode/oh-my-design/design-md/ollama/preview-dark.html +0 -678
  481. package/.opencode/oh-my-design/design-md/ollama/preview.html +0 -678
  482. package/.opencode/oh-my-design/design-md/omnichat/.verification.md +0 -74
  483. package/.opencode/oh-my-design/design-md/omnichat/DESIGN.md +0 -499
  484. package/.opencode/oh-my-design/design-md/openai/.verification.md +0 -21
  485. package/.opencode/oh-my-design/design-md/openai/DESIGN.md +0 -641
  486. package/.opencode/oh-my-design/design-md/opencode.ai/.verification.md +0 -136
  487. package/.opencode/oh-my-design/design-md/opencode.ai/DESIGN.md +0 -425
  488. package/.opencode/oh-my-design/design-md/opencode.ai/README.md +0 -24
  489. package/.opencode/oh-my-design/design-md/opencode.ai/preview-dark.html +0 -366
  490. package/.opencode/oh-my-design/design-md/opencode.ai/preview.html +0 -357
  491. package/.opencode/oh-my-design/design-md/payco/.verification.md +0 -28
  492. package/.opencode/oh-my-design/design-md/payco/DESIGN.md +0 -267
  493. package/.opencode/oh-my-design/design-md/paypay/.verification.md +0 -21
  494. package/.opencode/oh-my-design/design-md/paypay/DESIGN.md +0 -656
  495. package/.opencode/oh-my-design/design-md/pchome/.verification.md +0 -38
  496. package/.opencode/oh-my-design/design-md/pchome/DESIGN.md +0 -439
  497. package/.opencode/oh-my-design/design-md/perplexity/.verification.md +0 -21
  498. package/.opencode/oh-my-design/design-md/perplexity/DESIGN.md +0 -546
  499. package/.opencode/oh-my-design/design-md/piccollage/.verification.md +0 -34
  500. package/.opencode/oh-my-design/design-md/piccollage/DESIGN.md +0 -320
  501. package/.opencode/oh-my-design/design-md/pinkoi/.verification.md +0 -147
  502. package/.opencode/oh-my-design/design-md/pinkoi/DESIGN.md +0 -639
  503. package/.opencode/oh-my-design/design-md/pinkoi/README.md +0 -12
  504. package/.opencode/oh-my-design/design-md/pinkoi/_research/browse-1440px.png +0 -0
  505. package/.opencode/oh-my-design/design-md/pinkoi/_research.md +0 -167
  506. package/.opencode/oh-my-design/design-md/pinterest/.verification.md +0 -141
  507. package/.opencode/oh-my-design/design-md/pinterest/DESIGN.md +0 -366
  508. package/.opencode/oh-my-design/design-md/pinterest/README.md +0 -23
  509. package/.opencode/oh-my-design/design-md/pinterest/preview-dark.html +0 -233
  510. package/.opencode/oh-my-design/design-md/pinterest/preview.html +0 -232
  511. package/.opencode/oh-my-design/design-md/pixiv/.verification.md +0 -20
  512. package/.opencode/oh-my-design/design-md/pixiv/DESIGN.md +0 -613
  513. package/.opencode/oh-my-design/design-md/pixnet/.verification.md +0 -31
  514. package/.opencode/oh-my-design/design-md/pixnet/DESIGN.md +0 -430
  515. package/.opencode/oh-my-design/design-md/posthog/.verification.md +0 -159
  516. package/.opencode/oh-my-design/design-md/posthog/DESIGN.md +0 -480
  517. package/.opencode/oh-my-design/design-md/posthog/README.md +0 -23
  518. package/.opencode/oh-my-design/design-md/posthog/preview-dark.html +0 -699
  519. package/.opencode/oh-my-design/design-md/posthog/preview.html +0 -749
  520. package/.opencode/oh-my-design/design-md/postype/.verification.md +0 -61
  521. package/.opencode/oh-my-design/design-md/postype/DESIGN.md +0 -431
  522. package/.opencode/oh-my-design/design-md/publy/DESIGN.md +0 -563
  523. package/.opencode/oh-my-design/design-md/qanda/.verification.md +0 -121
  524. package/.opencode/oh-my-design/design-md/qanda/DESIGN.md +0 -516
  525. package/.opencode/oh-my-design/design-md/ragic/.verification.md +0 -37
  526. package/.opencode/oh-my-design/design-md/ragic/DESIGN.md +0 -444
  527. package/.opencode/oh-my-design/design-md/rakuten/.verification.md +0 -60
  528. package/.opencode/oh-my-design/design-md/rakuten/DESIGN.md +0 -440
  529. package/.opencode/oh-my-design/design-md/ramp/.verification.md +0 -21
  530. package/.opencode/oh-my-design/design-md/ramp/DESIGN.md +0 -634
  531. package/.opencode/oh-my-design/design-md/rayark/.verification.md +0 -22
  532. package/.opencode/oh-my-design/design-md/rayark/DESIGN.md +0 -154
  533. package/.opencode/oh-my-design/design-md/raycast/.verification.md +0 -138
  534. package/.opencode/oh-my-design/design-md/raycast/DESIGN.md +0 -467
  535. package/.opencode/oh-my-design/design-md/raycast/README.md +0 -23
  536. package/.opencode/oh-my-design/design-md/raycast/preview-dark.html +0 -606
  537. package/.opencode/oh-my-design/design-md/raycast/preview.html +0 -688
  538. package/.opencode/oh-my-design/design-md/remember/.verification.md +0 -135
  539. package/.opencode/oh-my-design/design-md/remember/DESIGN.md +0 -504
  540. package/.opencode/oh-my-design/design-md/remember/_promo.json +0 -27
  541. package/.opencode/oh-my-design/design-md/remember/_research.md +0 -90
  542. package/.opencode/oh-my-design/design-md/renault/.verification.md +0 -139
  543. package/.opencode/oh-my-design/design-md/renault/DESIGN.md +0 -439
  544. package/.opencode/oh-my-design/design-md/renault/README.md +0 -23
  545. package/.opencode/oh-my-design/design-md/renault/preview-dark.html +0 -406
  546. package/.opencode/oh-my-design/design-md/renault/preview.html +0 -606
  547. package/.opencode/oh-my-design/design-md/replicate/.verification.md +0 -154
  548. package/.opencode/oh-my-design/design-md/replicate/DESIGN.md +0 -387
  549. package/.opencode/oh-my-design/design-md/replicate/README.md +0 -24
  550. package/.opencode/oh-my-design/design-md/replicate/preview-dark.html +0 -828
  551. package/.opencode/oh-my-design/design-md/replicate/preview.html +0 -831
  552. package/.opencode/oh-my-design/design-md/resend/.verification.md +0 -143
  553. package/.opencode/oh-my-design/design-md/resend/DESIGN.md +0 -440
  554. package/.opencode/oh-my-design/design-md/resend/README.md +0 -23
  555. package/.opencode/oh-my-design/design-md/resend/preview-dark.html +0 -355
  556. package/.opencode/oh-my-design/design-md/resend/preview.html +0 -354
  557. package/.opencode/oh-my-design/design-md/retool/.verification.md +0 -21
  558. package/.opencode/oh-my-design/design-md/retool/DESIGN.md +0 -645
  559. package/.opencode/oh-my-design/design-md/revolut/.verification.md +0 -140
  560. package/.opencode/oh-my-design/design-md/revolut/DESIGN.md +0 -319
  561. package/.opencode/oh-my-design/design-md/revolut/README.md +0 -23
  562. package/.opencode/oh-my-design/design-md/revolut/preview-dark.html +0 -234
  563. package/.opencode/oh-my-design/design-md/revolut/preview.html +0 -233
  564. package/.opencode/oh-my-design/design-md/richart/.verification.md +0 -41
  565. package/.opencode/oh-my-design/design-md/richart/DESIGN.md +0 -465
  566. package/.opencode/oh-my-design/design-md/ridi/.verification.md +0 -108
  567. package/.opencode/oh-my-design/design-md/ridi/DESIGN.md +0 -573
  568. package/.opencode/oh-my-design/design-md/riiid/.verification.md +0 -33
  569. package/.opencode/oh-my-design/design-md/riiid/DESIGN.md +0 -260
  570. package/.opencode/oh-my-design/design-md/ringle/.verification.md +0 -53
  571. package/.opencode/oh-my-design/design-md/ringle/DESIGN.md +0 -444
  572. package/.opencode/oh-my-design/design-md/robinhood/.verification.md +0 -21
  573. package/.opencode/oh-my-design/design-md/robinhood/DESIGN.md +0 -604
  574. package/.opencode/oh-my-design/design-md/runwayml/.verification.md +0 -141
  575. package/.opencode/oh-my-design/design-md/runwayml/DESIGN.md +0 -431
  576. package/.opencode/oh-my-design/design-md/runwayml/README.md +0 -24
  577. package/.opencode/oh-my-design/design-md/runwayml/preview-dark.html +0 -664
  578. package/.opencode/oh-my-design/design-md/runwayml/preview.html +0 -665
  579. package/.opencode/oh-my-design/design-md/salesforce/.verification.md +0 -66
  580. package/.opencode/oh-my-design/design-md/salesforce/DESIGN.md +0 -473
  581. package/.opencode/oh-my-design/design-md/sanity/.verification.md +0 -174
  582. package/.opencode/oh-my-design/design-md/sanity/DESIGN.md +0 -499
  583. package/.opencode/oh-my-design/design-md/sanity/README.md +0 -24
  584. package/.opencode/oh-my-design/design-md/sanity/preview-dark.html +0 -990
  585. package/.opencode/oh-my-design/design-md/sanity/preview.html +0 -1135
  586. package/.opencode/oh-my-design/design-md/sansan/.verification.md +0 -21
  587. package/.opencode/oh-my-design/design-md/sansan/DESIGN.md +0 -631
  588. package/.opencode/oh-my-design/design-md/sendbird/.verification.md +0 -67
  589. package/.opencode/oh-my-design/design-md/sendbird/DESIGN.md +0 -331
  590. package/.opencode/oh-my-design/design-md/sentry/.verification.md +0 -157
  591. package/.opencode/oh-my-design/design-md/sentry/DESIGN.md +0 -397
  592. package/.opencode/oh-my-design/design-md/sentry/README.md +0 -24
  593. package/.opencode/oh-my-design/design-md/sentry/preview-dark.html +0 -626
  594. package/.opencode/oh-my-design/design-md/sentry/preview.html +0 -951
  595. package/.opencode/oh-my-design/design-md/shinhancard/.verification.md +0 -31
  596. package/.opencode/oh-my-design/design-md/shinhancard/DESIGN.md +0 -421
  597. package/.opencode/oh-my-design/design-md/shopline/.verification.md +0 -34
  598. package/.opencode/oh-my-design/design-md/shopline/DESIGN.md +0 -431
  599. package/.opencode/oh-my-design/design-md/slack/.verification.md +0 -21
  600. package/.opencode/oh-my-design/design-md/slack/DESIGN.md +0 -635
  601. package/.opencode/oh-my-design/design-md/smarthr/DESIGN.md +0 -452
  602. package/.opencode/oh-my-design/design-md/smartnews/DESIGN.md +0 -360
  603. package/.opencode/oh-my-design/design-md/socar/DESIGN.md +0 -438
  604. package/.opencode/oh-my-design/design-md/socar/_promo.json +0 -28
  605. package/.opencode/oh-my-design/design-md/socar/_research.md +0 -55
  606. package/.opencode/oh-my-design/design-md/soomgo/.verification.md +0 -27
  607. package/.opencode/oh-my-design/design-md/soomgo/DESIGN.md +0 -326
  608. package/.opencode/oh-my-design/design-md/spacex/.verification.md +0 -132
  609. package/.opencode/oh-my-design/design-md/spacex/DESIGN.md +0 -415
  610. package/.opencode/oh-my-design/design-md/spacex/README.md +0 -23
  611. package/.opencode/oh-my-design/design-md/spacex/_research.md +0 -69
  612. package/.opencode/oh-my-design/design-md/spacex/preview-dark.html +0 -221
  613. package/.opencode/oh-my-design/design-md/spacex/preview.html +0 -220
  614. package/.opencode/oh-my-design/design-md/spoon/DESIGN.md +0 -492
  615. package/.opencode/oh-my-design/design-md/spotify/.verification.md +0 -128
  616. package/.opencode/oh-my-design/design-md/spotify/DESIGN.md +0 -489
  617. package/.opencode/oh-my-design/design-md/spotify/README.md +0 -23
  618. package/.opencode/oh-my-design/design-md/spotify/preview-dark.html +0 -231
  619. package/.opencode/oh-my-design/design-md/spotify/preview.html +0 -230
  620. package/.opencode/oh-my-design/design-md/starbucks/.verification.md +0 -21
  621. package/.opencode/oh-my-design/design-md/starbucks/DESIGN.md +0 -597
  622. package/.opencode/oh-my-design/design-md/stores/.verification.md +0 -61
  623. package/.opencode/oh-my-design/design-md/stores/DESIGN.md +0 -447
  624. package/.opencode/oh-my-design/design-md/stripe/.verification.md +0 -140
  625. package/.opencode/oh-my-design/design-md/stripe/DESIGN.md +0 -571
  626. package/.opencode/oh-my-design/design-md/stripe/README.md +0 -24
  627. package/.opencode/oh-my-design/design-md/stripe/preview-dark.html +0 -428
  628. package/.opencode/oh-my-design/design-md/stripe/preview.html +0 -419
  629. package/.opencode/oh-my-design/design-md/studio/.verification.md +0 -21
  630. package/.opencode/oh-my-design/design-md/studio/DESIGN.md +0 -602
  631. package/.opencode/oh-my-design/design-md/supabase/.verification.md +0 -145
  632. package/.opencode/oh-my-design/design-md/supabase/DESIGN.md +0 -389
  633. package/.opencode/oh-my-design/design-md/supabase/README.md +0 -24
  634. package/.opencode/oh-my-design/design-md/supabase/preview-dark.html +0 -977
  635. package/.opencode/oh-my-design/design-md/supabase/preview.html +0 -955
  636. package/.opencode/oh-my-design/design-md/superhuman/.verification.md +0 -184
  637. package/.opencode/oh-my-design/design-md/superhuman/DESIGN.md +0 -453
  638. package/.opencode/oh-my-design/design-md/superhuman/README.md +0 -23
  639. package/.opencode/oh-my-design/design-md/superhuman/preview-dark.html +0 -973
  640. package/.opencode/oh-my-design/design-md/superhuman/preview.html +0 -951
  641. package/.opencode/oh-my-design/design-md/surveycake/.verification.md +0 -31
  642. package/.opencode/oh-my-design/design-md/surveycake/DESIGN.md +0 -442
  643. package/.opencode/oh-my-design/design-md/tada/DESIGN.md +0 -579
  644. package/.opencode/oh-my-design/design-md/teamblind/.verification.md +0 -76
  645. package/.opencode/oh-my-design/design-md/teamblind/DESIGN.md +0 -497
  646. package/.opencode/oh-my-design/design-md/tesla/.verification.md +0 -149
  647. package/.opencode/oh-my-design/design-md/tesla/DESIGN.md +0 -501
  648. package/.opencode/oh-my-design/design-md/tesla/README.md +0 -23
  649. package/.opencode/oh-my-design/design-md/tesla/_research.md +0 -70
  650. package/.opencode/oh-my-design/design-md/tesla/preview-dark.html +0 -947
  651. package/.opencode/oh-my-design/design-md/tesla/preview.html +0 -925
  652. package/.opencode/oh-my-design/design-md/theverge/.verification.md +0 -21
  653. package/.opencode/oh-my-design/design-md/theverge/DESIGN.md +0 -500
  654. package/.opencode/oh-my-design/design-md/timee/.verification.md +0 -67
  655. package/.opencode/oh-my-design/design-md/timee/DESIGN.md +0 -444
  656. package/.opencode/oh-my-design/design-md/together.ai/.verification.md +0 -145
  657. package/.opencode/oh-my-design/design-md/together.ai/DESIGN.md +0 -389
  658. package/.opencode/oh-my-design/design-md/together.ai/README.md +0 -24
  659. package/.opencode/oh-my-design/design-md/together.ai/preview-dark.html +0 -892
  660. package/.opencode/oh-my-design/design-md/together.ai/preview.html +0 -897
  661. package/.opencode/oh-my-design/design-md/toss/.verification.md +0 -120
  662. package/.opencode/oh-my-design/design-md/toss/DESIGN.md +0 -698
  663. package/.opencode/oh-my-design/design-md/toss/README.md +0 -19
  664. package/.opencode/oh-my-design/design-md/toss-securities/DESIGN.md +0 -247
  665. package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/.live-inspect-proof.json +0 -126
  666. package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/.live-inspect-raw.json +0 -619
  667. package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/.live-inspect-stock.json +0 -525
  668. package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/fonts.json +0 -24
  669. package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/structure.json +0 -35
  670. package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/tokens.json +0 -87
  671. package/.opencode/oh-my-design/design-md/tossbank/DESIGN.md +0 -576
  672. package/.opencode/oh-my-design/design-md/trenbe/.verification.md +0 -32
  673. package/.opencode/oh-my-design/design-md/trenbe/DESIGN.md +0 -293
  674. package/.opencode/oh-my-design/design-md/triple/DESIGN.md +0 -481
  675. package/.opencode/oh-my-design/design-md/tumblbug/DESIGN.md +0 -578
  676. package/.opencode/oh-my-design/design-md/tving/DESIGN.md +0 -317
  677. package/.opencode/oh-my-design/design-md/tving/assets/_reference/.live-inspect-proof.json +0 -131
  678. package/.opencode/oh-my-design/design-md/tving/assets/_reference/LICENSE-NOTE.md +0 -37
  679. package/.opencode/oh-my-design/design-md/tving/assets/_reference/attribution.md +0 -52
  680. package/.opencode/oh-my-design/design-md/tving/assets/_reference/fonts.json +0 -31
  681. package/.opencode/oh-my-design/design-md/tving/assets/_reference/screenshots/hero-desktop.png +0 -0
  682. package/.opencode/oh-my-design/design-md/tving/assets/_reference/structure.json +0 -55
  683. package/.opencode/oh-my-design/design-md/tving/assets/_reference/tokens.json +0 -115
  684. package/.opencode/oh-my-design/design-md/uber/.verification.md +0 -128
  685. package/.opencode/oh-my-design/design-md/uber/DESIGN.md +0 -423
  686. package/.opencode/oh-my-design/design-md/uber/README.md +0 -24
  687. package/.opencode/oh-my-design/design-md/uber/preview-dark.html +0 -1120
  688. package/.opencode/oh-my-design/design-md/uber/preview.html +0 -1119
  689. package/.opencode/oh-my-design/design-md/ubie/.verification.md +0 -21
  690. package/.opencode/oh-my-design/design-md/ubie/DESIGN.md +0 -615
  691. package/.opencode/oh-my-design/design-md/uniqlo/.verification.md +0 -21
  692. package/.opencode/oh-my-design/design-md/uniqlo/DESIGN.md +0 -575
  693. package/.opencode/oh-my-design/design-md/upbit/DESIGN.md +0 -337
  694. package/.opencode/oh-my-design/design-md/upbit/_research.md +0 -83
  695. package/.opencode/oh-my-design/design-md/upbit/assets/_reference/.live-inspect-proof.json +0 -263
  696. package/.opencode/oh-my-design/design-md/upbit/assets/_reference/fonts.json +0 -18
  697. package/.opencode/oh-my-design/design-md/upbit/assets/_reference/raw-capture-exchange.json +0 -1901
  698. package/.opencode/oh-my-design/design-md/upbit/assets/_reference/raw-capture.json +0 -1121
  699. package/.opencode/oh-my-design/design-md/upbit/assets/_reference/structure.json +0 -52
  700. package/.opencode/oh-my-design/design-md/upbit/assets/_reference/tokens.json +0 -169
  701. package/.opencode/oh-my-design/design-md/upstage/DESIGN.md +0 -270
  702. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/.live-inspect-proof.json +0 -157
  703. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_brand-resource-center.json +0 -44
  704. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_curated-samples.json +0 -310
  705. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_raw-capture.json +0 -1560
  706. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_root-vars.json +0 -76
  707. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_structure-raw.json +0 -298
  708. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/fonts.json +0 -35
  709. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/structure.json +0 -72
  710. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/tokens.json +0 -183
  711. package/.opencode/oh-my-design/design-md/velog/.verification.md +0 -26
  712. package/.opencode/oh-my-design/design-md/velog/DESIGN.md +0 -196
  713. package/.opencode/oh-my-design/design-md/vercel/.verification.md +0 -134
  714. package/.opencode/oh-my-design/design-md/vercel/DESIGN.md +0 -523
  715. package/.opencode/oh-my-design/design-md/vercel/README.md +0 -24
  716. package/.opencode/oh-my-design/design-md/vercel/preview-dark.html +0 -368
  717. package/.opencode/oh-my-design/design-md/vercel/preview.html +0 -367
  718. package/.opencode/oh-my-design/design-md/voicetube/.verification.md +0 -34
  719. package/.opencode/oh-my-design/design-md/voicetube/DESIGN.md +0 -266
  720. package/.opencode/oh-my-design/design-md/voltagent/.verification.md +0 -159
  721. package/.opencode/oh-my-design/design-md/voltagent/DESIGN.md +0 -454
  722. package/.opencode/oh-my-design/design-md/voltagent/README.md +0 -24
  723. package/.opencode/oh-my-design/design-md/voltagent/preview-dark.html +0 -487
  724. package/.opencode/oh-my-design/design-md/voltagent/preview.html +0 -766
  725. package/.opencode/oh-my-design/design-md/wadiz/DESIGN.md +0 -415
  726. package/.opencode/oh-my-design/design-md/wadiz/assets/_reference/.live-inspect-proof.json +0 -137
  727. package/.opencode/oh-my-design/design-md/wadiz/assets/_reference/fonts.json +0 -17
  728. package/.opencode/oh-my-design/design-md/wadiz/assets/_reference/structure.json +0 -35
  729. package/.opencode/oh-my-design/design-md/wadiz/assets/_reference/tokens.json +0 -80
  730. package/.opencode/oh-my-design/design-md/wanted/DESIGN.md +0 -575
  731. package/.opencode/oh-my-design/design-md/wanted/_promo.json +0 -31
  732. package/.opencode/oh-my-design/design-md/wanted/_research.md +0 -119
  733. package/.opencode/oh-my-design/design-md/wantedly/.verification.md +0 -53
  734. package/.opencode/oh-my-design/design-md/wantedly/DESIGN.md +0 -437
  735. package/.opencode/oh-my-design/design-md/warp/.verification.md +0 -156
  736. package/.opencode/oh-my-design/design-md/warp/DESIGN.md +0 -431
  737. package/.opencode/oh-my-design/design-md/warp/README.md +0 -23
  738. package/.opencode/oh-my-design/design-md/warp/preview-dark.html +0 -500
  739. package/.opencode/oh-my-design/design-md/warp/preview.html +0 -533
  740. package/.opencode/oh-my-design/design-md/watcha/DESIGN.md +0 -465
  741. package/.opencode/oh-my-design/design-md/wavve/DESIGN.md +0 -480
  742. package/.opencode/oh-my-design/design-md/wconcept/DESIGN.md +0 -556
  743. package/.opencode/oh-my-design/design-md/webflow/.verification.md +0 -151
  744. package/.opencode/oh-my-design/design-md/webflow/DESIGN.md +0 -330
  745. package/.opencode/oh-my-design/design-md/webflow/README.md +0 -23
  746. package/.opencode/oh-my-design/design-md/webflow/preview-dark.html +0 -147
  747. package/.opencode/oh-my-design/design-md/webflow/preview.html +0 -146
  748. package/.opencode/oh-my-design/design-md/wired/.verification.md +0 -21
  749. package/.opencode/oh-my-design/design-md/wired/DESIGN.md +0 -572
  750. package/.opencode/oh-my-design/design-md/wise/.verification.md +0 -141
  751. package/.opencode/oh-my-design/design-md/wise/DESIGN.md +0 -317
  752. package/.opencode/oh-my-design/design-md/wise/README.md +0 -23
  753. package/.opencode/oh-my-design/design-md/wise/preview-dark.html +0 -230
  754. package/.opencode/oh-my-design/design-md/wise/preview.html +0 -229
  755. package/.opencode/oh-my-design/design-md/x.ai/.verification.md +0 -140
  756. package/.opencode/oh-my-design/design-md/x.ai/DESIGN.md +0 -397
  757. package/.opencode/oh-my-design/design-md/x.ai/README.md +0 -24
  758. package/.opencode/oh-my-design/design-md/x.ai/preview-dark.html +0 -356
  759. package/.opencode/oh-my-design/design-md/x.ai/preview.html +0 -407
  760. package/.opencode/oh-my-design/design-md/xiaohongshu/DESIGN.md +0 -462
  761. package/.opencode/oh-my-design/design-md/yanolja/.verification.md +0 -83
  762. package/.opencode/oh-my-design/design-md/yanolja/DESIGN.md +0 -508
  763. package/.opencode/oh-my-design/design-md/yeogiotte/.verification.md +0 -210
  764. package/.opencode/oh-my-design/design-md/yeogiotte/DESIGN.md +0 -500
  765. package/.opencode/oh-my-design/design-md/yogiyo/DESIGN.md +0 -515
  766. package/.opencode/oh-my-design/design-md/yourator/.verification.md +0 -39
  767. package/.opencode/oh-my-design/design-md/yourator/DESIGN.md +0 -453
  768. package/.opencode/oh-my-design/design-md/zapier/.verification.md +0 -156
  769. package/.opencode/oh-my-design/design-md/zapier/DESIGN.md +0 -474
  770. package/.opencode/oh-my-design/design-md/zapier/README.md +0 -24
  771. package/.opencode/oh-my-design/design-md/zapier/preview-dark.html +0 -380
  772. package/.opencode/oh-my-design/design-md/zapier/preview.html +0 -372
  773. package/.opencode/oh-my-design/design-md/zigbang/DESIGN.md +0 -500
  774. package/.opencode/oh-my-design/design-md/zigbang/_promo.json +0 -16
  775. package/.opencode/oh-my-design/design-md/zigbang/_research.md +0 -101
  776. package/.opencode/oh-my-design/design-md/zigzag/DESIGN.md +0 -695
  777. package/.opencode/oh-my-design/design-md/zigzag/_promo.json +0 -23
  778. package/.opencode/oh-my-design/design-md/zigzag/_research.md +0 -64
  779. package/.opencode/oh-my-design/design-md/zozotown/.verification.md +0 -20
  780. package/.opencode/oh-my-design/design-md/zozotown/DESIGN.md +0 -578
  781. package/.opencode/oh-my-design/packages/mcp/dist/index.mjs +0 -21685
  782. package/.opencode/oh-my-design/packages/mcp/dist/index.mjs.map +0 -1
  783. package/.opencode/tools/extract-design-pattern.py +0 -182
  784. package/.opencode/tools/sdd_design.ts +0 -303
@@ -1,688 +0,0 @@
1
- ---
2
- id: banksalad
3
- name: Banksalad
4
- country: KR
5
- category: fintech
6
- homepage: "https://www.banksalad.com"
7
- primary_color: "#04c584"
8
- logo:
9
- type: favicon
10
- slug: "https://www.google.com/s2/favicons?domain=banksalad.com&sz=256"
11
- verified: "2026-05-15"
12
- omd: "0.1"
13
- ds:
14
- name: Banksalad GitHub
15
- url: "https://github.com/banksalad"
16
- type: brand
17
- description: Banksalad's public GitHub org including styleguide repos and BPL (Banksalad Product Library) reference material.
18
- og_image: "https://avatars.githubusercontent.com/u/71009899?s=280&v=4"
19
- tokens:
20
- source: prose-derived
21
- extracted: "2026-06-08"
22
- colors:
23
- primary: "#04c584"
24
- primary-hover: "#10df99"
25
- brand: "#04c584"
26
- canvas: "#ffffff"
27
- foreground: "#2b2b2b"
28
- muted: "#7b7b7b"
29
- on-primary: "#ffffff"
30
- surface-alt: "#fbfbfb"
31
- surface-neutral: "#f5f5f5"
32
- body: "#434444"
33
- placeholder: "#999999"
34
- disabled: "#acacac"
35
- hairline: "#e1e1e1"
36
- mint-tint: "#f3fdfa"
37
- error: "#fe493d"
38
- error-soft: "#ff8a84"
39
- warning: "#fd8700"
40
- warning-deep: "#f56200"
41
- info: "#0099ff"
42
- success: "#04c584"
43
- chart-1: "#34464b"
44
- chart-2: "#5c818a"
45
- chart-3: "#1c6c73"
46
- chart-4: "#a7c7cf"
47
- typography:
48
- family: { sans: "Pretendard", display: "BM JUA" }
49
- hero-display: { size: 52, weight: 700, lineHeight: 1.23, tracking: -1, use: "Largest landing headline; sometimes Jua" }
50
- display-lg: { size: 48, weight: 700, lineHeight: 1.2, tracking: -1, use: "Secondary hero" }
51
- display: { size: 44, weight: 700, lineHeight: 1.25, tracking: -1, use: "Section-opening figures (balances, scores)" }
52
- section-heading: { size: 36, weight: 700, lineHeight: 1.3, tracking: -0.5, use: "Marketing section titles" }
53
- h1: { size: 28, weight: 700, lineHeight: 1.14, use: "In-app section titles" }
54
- h2: { size: 24, weight: 700, lineHeight: 1.17, use: "Card titles, panel headings" }
55
- h3: { size: 20, weight: 700, lineHeight: 1.2, use: "Sub-card headings" }
56
- subhead: { size: 18, weight: 700, lineHeight: 1.3, use: "Featured-button text, key callouts" }
57
- body-lg: { size: 16, weight: 500, lineHeight: 1.5, use: "Standard reading text on data screens" }
58
- body: { size: 14, weight: 500, lineHeight: 1.34, use: "Default body text; 500 not 400" }
59
- body-tight: { size: 13, weight: 500, lineHeight: 1.34, use: "Compact labels" }
60
- caption: { size: 12, weight: 500, lineHeight: 1.34, use: "Metadata, helper text" }
61
- caption-sm: { size: 10, weight: 500, lineHeight: 1, use: "Disclosures, smallest labels" }
62
- button: { size: 16, weight: 700, lineHeight: 1, tracking: -1, use: "All CTAs are 700" }
63
- financial-amount: { size: 24, weight: 700, lineHeight: 1, use: "Comma-grouped, won unit follows in 500" }
64
- spacing: { xs: 4, sm: 8, md: 16, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
65
- rounded: { sm: 2, md: 4, lg: 8, full: 9999 }
66
- shadow:
67
- soft: "rgba(0,0,0,0.08) 0px 1px 1px 0px"
68
- standard: "rgba(0,0,0,0.12) 0px 2px 5px 0px"
69
- elevated: "rgba(0,0,0,0.15) 0px 4px 9px 0px"
70
- modal: "rgba(0,0,0,0.19) 0px 17px 50px 0px"
71
- components_harvested: true
72
- components:
73
- button-primary: { type: button, bg: "#04c584", fg: "#ffffff", radius: "2px", height: "42px", padding: "12px 24px", font: "16px / 700", hover: "bg #10df99 (lightens)", use: "Primary CTA on data/transactional flows" }
74
- button-primary-large: { type: button, bg: "#04c584", fg: "#ffffff", radius: "2px", height: "56px", padding: "16px 32px", font: "18px / 700", hover: "bg #10df99", use: "Hero CTA on landing surfaces" }
75
- button-ghost: { type: button, bg: "#ffffff", fg: "#04c584", border: "1px solid #04c584", radius: "2px", padding: "12px 24px", font: "16px / 700", hover: "bg #f3fdfa mint tint", use: "Secondary action paired with primary" }
76
- button-neutral: { type: button, bg: "#f5f5f5", fg: "#434444", radius: "2px", padding: "12px 24px", font: "16px / 700", hover: "bg #e1e1e1", use: "Cancel / dismiss" }
77
- button-disabled: { type: button, bg: "#e1e1e1", fg: "#acacac", radius: "2px", font: "16px / 700", use: "Disabled state" }
78
- input-text: { type: input, bg: "#ffffff", fg: "#434444", border: "1px solid #e1e1e1", radius: "2px", height: "48px", padding: "0 16px", font: "16px / 500", focus: "border #10df99 + bg #f3fdfa", use: "Default text input" }
79
- input-amount: { type: input, bg: "#ffffff", fg: "#2b2b2b", border: "2px solid #f5f5f5", radius: "2px", height: "56px", padding: "0 16px", font: "22px / 700", focus: "border #10df99 + bg #f3fdfa", use: "Won-amount input, right-aligned, money as heading" }
80
- card-data: { type: card, bg: "#ffffff", border: "1px solid #e1e1e1", radius: "2px", padding: "20px 24px", shadow: "rgba(0,0,0,0.12) 0px 2px 5px 0px", use: "Recommendation/transaction/summary cards" }
81
- card-highlight: { type: card, bg: "#f3fdfa", border: "1px solid #10df99", radius: "2px", padding: "20px 24px", use: "Selected/recommended-pick in comparison lists" }
82
- status-pill: { type: badge, bg: "#f3fdfa", fg: "#04c584", radius: "41px", padding: "4px 10px", font: "12px / 500", use: "Filter chips on recommendation pages" }
83
- badge-warning: { type: badge, bg: "#ffffff", fg: "#f56200", border: "1px solid #fd8700", radius: "2px", padding: "2px 8px", font: "12px / 700", use: "Rate-warning, expiry indicators" }
84
- badge-negative: { type: badge, bg: "#ffffff", fg: "#fe493d", border: "1px solid #fe493d", radius: "2px", padding: "2px 8px", font: "12px / 700", use: "Overdue, declined indicators" }
85
- table-row: { type: listItem, bg: "#ffffff", fg: "#434444", border: "1px solid #e1e1e1 bottom", padding: "12px 16px", font: "14px / 500", use: "Transaction rows; alternates #fbfbfb, amounts right-aligned 14px/700 #2b2b2b positive #fe493d negative" }
86
- ---
87
-
88
- # Design System Inspiration of Banksalad
89
-
90
- ## 1. Visual Theme & Atmosphere
91
-
92
- Banksalad (뱅크샐러드) is the design language of a **trustworthy financial advisor that runs on data, not optimism**. Where Toss flattens money into one cheerful gesture and KakaoPay wraps it in Kakao yellow, Banksalad insists that *more information, clearly presented*, is the actual brand promise. The home page opens on a white canvas (`#ffffff`/`#fbfbfb`) with warm near-black text (`#2b2b2b` for headings, `#434444` for body — never pure `#000`), anchored by a saturated mint-green `#04c584` that does all the interactive work. The green is specifically a **salad-leaf green** (the brand name is literally "Bank + Salad" — financial data freshly tossed for you), warmer than Spotify's `#1db954` and far brighter than the corporate teal that legacy Korean banks default to.
93
-
94
- The single most distinctive geometric choice is the radius scale. The CSS bundle contains **81 occurrences of `border-radius: 2px`** and only 5 of 8px and 3 of 4px. Banksalad is **almost-flat**: 2px is just enough to take the harshness off a corner without softening anything into "app-friendly" plumpness. This is a deliberate rejection of the Toss/Kakao consumer-app idiom (12–16px). It tells the user: this is data, not a toy. The tabular density follows from the same conviction — cards pack rows of numbers tightly, and the 700-weight Pretendard digits never apologize for taking up space.
95
-
96
- Typography pairs **Pretendard** (the de-facto Korean modern sans, designed by Kil Hyun-jin, weight-axis variable) with **BM JUA** ("배민 주아체", Battle Grounds Jua — a rounded, friendly Korean display face) as an accent. Pretendard does 99% of the work; Jua appears only for marketing/landing display moments where Banksalad wants to feel warm rather than clinical. The default weight is **700** (160 of 304 weight declarations) — Banksalad numbers and headings are confident and chunky, with 500 as the secondary "emphasis on body" weight. Light weights (300) appear ~26 times — only for the largest hero numerals where the size carries the authority.
97
-
98
- **Key Characteristics:**
99
- - Pretendard + Apple SD Gothic Neo + Noto Sans KR font stack — Korean-native typography first
100
- - "BM JUA" as accent display font for landing/promotional moments only
101
- - Signature green `#04c584` (mint, salad-leaf) for all interactive moments
102
- - Hover/focus green `#10df99` (one shade brighter) — interaction makes things *lighter*, not darker
103
- - 2px radius dominance — the brand reads as data-tool, not consumer-app
104
- - Warm near-black `#2b2b2b`/`#434444` for type instead of `#000000`
105
- - Mint focus tint `#f3fdfa` on input backgrounds — the only branded background tint in the system
106
- - 700 weight as default for headings and financial figures; 500 for body emphasis
107
- - Subtle single-layer shadows `0 2px 5px rgba(0,0,0,.12)` — never colored, never theatrical
108
- - Teal-gray data palette (`#34464b`/`#5c818a`/`#1c6c73`/`#a7c7cf`) for chart series — cool, advisor-grade
109
-
110
- ## 2. Color Palette & Roles
111
-
112
- ### Primary
113
- - **Salad Green** (`#04c584`): Primary brand color, CTA backgrounds, links, accent rules, financial-status accents. Mint with a touch of grass — readable on white, energetic but not playful.
114
- - **Hover Green** (`#10df99`): Brighter mint applied on hover, focus border, and the resting state of less-prominent CTAs. Banksalad lightens to indicate interaction (opposite of the conventional darken-on-hover pattern).
115
- - **Mint Tint** (`#f3fdfa`): Focus background on inputs, success surface fill. The only branded tint in the system.
116
-
117
- ### Heading & Body
118
- - **Heading** (`#2b2b2b`): Warm near-black for headlines, prominent labels, and financial amounts. Never `#000`.
119
- - **Body** (`#434444`): Standard reading text. Filled-input text color.
120
- - **Body Light** (`#7b7b7b`): Captions, secondary descriptions.
121
- - **Placeholder** (`#999999`): Input placeholders, muted metadata.
122
- - **Disabled** (`#acacac` / `#c0c0c0`): Disabled text and icons.
123
-
124
- ### Surface & Border
125
- - **Page** (`#ffffff`): Default canvas.
126
- - **Surface Light** (`#fbfbfb`): Soft surface alternation, panel fills.
127
- - **Surface Neutral** (`#f5f5f5`): Dividers, separator backgrounds, content shelf fills (most-used neutral after green).
128
- - **Border Input** (`#e1e1e1`): Default input border, divider line.
129
- - **Surface Mint** (`#f3fdfa`): Success-state surface fill.
130
-
131
- ### Data / Chart Palette (teal-slate family)
132
- - **Deep Slate** (`#0b0c0c`): Maximum-depth axis labels.
133
- - **Teal-Slate 900** (`#333a44`): Primary chart series.
134
- - **Teal-Slate 800** (`#34464b`): Secondary chart series, table headers.
135
- - **Teal-Slate 700** (`#436068`): Tertiary chart.
136
- - **Teal 600** (`#1c6c73`): Highlighted data point.
137
- - **Teal-Gray 500** (`#5c818a`): Subdued data, legend.
138
- - **Teal 400** (`#318b93`): Mid-range fills.
139
- - **Pale Teal** (`#a7c7cf`): Background fills for chart bands.
140
-
141
- The teal-slate family is intentionally **cooler than the brand green**, so that chart series read as neutral data rather than as branded surfaces. Banksalad's green is for interaction; teal-slate is for information.
142
-
143
- ### Semantic
144
- - **Error Red** (`#fe493d`): Strong error states, blocking validation.
145
- - **Error Soft** (`#ff8a84`): Light error tint, secondary error indicators.
146
- - **Warning Orange** (`#fd8700`): Warning emphasis (rate spikes, expiry).
147
- - **Warning Deep** (`#f56200`): Highest-severity warning.
148
- - **Warning Light** (`#ff9900`): Soft warning highlights.
149
- - **Info Blue** (`#0099ff`): External links, info notices (used sparingly — green is the default link color).
150
- - **Success Green** (`#04c584` / `#10df99` / `#13bd7e`): Success uses brand green; there is no separate success hue.
151
-
152
- ## 3. Typography Rules
153
-
154
- ### Font Family
155
- - **Primary**: `Pretendard, -apple-system, BlinkMacSystemFont, system-ui, "Segoe UI", Roboto, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif`
156
- - **Display Accent**: `"BM JUA", sans-serif` — reserved for marketing-landing headlines where a warm, rounded Korean voice is wanted (rare; default to Pretendard)
157
- - Variable-axis Pretendard supplies 300/400/500/700/800/900 weights as needed; subset woff2 files for ExtraBold (800), Bold (700), Medium (500), Regular (400) are preloaded on the home page
158
-
159
- ### Hierarchy
160
-
161
- | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
162
- |---|---|---|---|---|---|---|
163
- | Hero Display | Pretendard | 52px | 700 | 64px (1.23) | -1px | Largest landing headline; sometimes Jua for marketing warmth |
164
- | Display Large | Pretendard | 48px | 700 | 1.2 | -1px | Secondary hero |
165
- | Display | Pretendard | 38–44px | 700 | 1.25 | -1px | Section-opening figures (balances, scores) |
166
- | Section Heading | Pretendard | 32–36px | 700 | 1.3 | -0.5px | Marketing section titles |
167
- | Heading 1 | Pretendard | 28px | 700 | 32px | normal | In-app section titles |
168
- | Heading 2 | Pretendard | 22–24px | 700 | 28px | normal | Card titles, panel headings |
169
- | Heading 3 | Pretendard | 20px | 700 | 24px | normal | Sub-card headings |
170
- | Subhead | Pretendard | 18px | 700 | 1.3 | normal | Featured-button text, key callouts |
171
- | Body Large | Pretendard | 16px | 500 | 1.5 | normal | Standard reading text on data screens (700 for emphasis) |
172
- | Body | Pretendard | 14px | 500 | 1.34 | normal | Default body text; 500 weight, not 400 |
173
- | Body Tight | Pretendard | 13px | 500 | 1.34 | normal | Compact labels |
174
- | Caption | Pretendard | 12px | 500 | 1.34 | normal | Metadata, helper text |
175
- | Caption Small | Pretendard | 10px | 500 | 1 | normal | Disclosures, smallest labels |
176
- | Button | Pretendard | 16–18px | 700 | tight | -1px on display CTAs | All CTAs are 700 |
177
- | Financial Amount | Pretendard | 20–36px | 700 | 1 | normal | Always 700, comma-grouped, won unit follows in 500 |
178
-
179
- ### Principles
180
- - **700 is the default for everything that matters.** Headings, CTAs, and financial amounts. 500 is for body text. 400 is rare. There is no "400 headline" in Banksalad.
181
- - **Pretendard everywhere.** Banksalad does not mix sans families. Jua is a *single* exception, only for warm marketing display.
182
- - **Korean and Latin are co-equal.** Pretendard's optical metrics align Korean (한글) and Latin in the same line; never assume English is primary.
183
- - **Tight letter-spacing at display.** Hero headlines and 18px+ CTAs use `-1px` tracking to compress for density.
184
- - **Numerals as headings.** Financial amounts at 20–36px / 700 are treated as headings, not body — they get the same hierarchical weight as page titles.
185
- - **Lightweight body is forbidden.** 300 only appears on display sizes where the size itself carries hierarchy (52px hero numerals); never on body text.
186
-
187
- ## 4. Component Stylings
188
-
189
- ### Buttons
190
-
191
- **Primary CTA (Salad Green)**
192
- - Background: `#04c584`
193
- - Text: `#ffffff`
194
- - Border: none
195
- - Radius: 2px
196
- - Padding: 12px 24px
197
- - Height: 42px (line-height-driven)
198
- - Font: 16px / 700 / Pretendard
199
- - Hover: background `#10df99` (lightens — opposite of convention)
200
- - Use: Primary CTA on data tables, recommendation rows, transactional flows ("내 카드 추천 받기", "신청하기")
201
-
202
- **Primary CTA — Large Display**
203
- - Background: `#04c584`
204
- - Text: `#ffffff`
205
- - Border: none
206
- - Radius: 2px
207
- - Padding: 16px 32px
208
- - Height: 56px
209
- - Font: 18px / 700 / Pretendard
210
- - Letter-spacing: -1px
211
- - Hover: `#10df99`
212
- - Use: Hero CTA on landing surfaces ("앱 다운로드", "지금 시작하기")
213
-
214
- **Primary CTA — Hover-Inverted (Retry)**
215
- - Background: `#10df99` (default lighter)
216
- - Text: `#ffffff`
217
- - Border: none
218
- - Radius: 2px
219
- - Padding: 10px 20px
220
- - Font: 14px / 500 / Pretendard
221
- - Hover: background `#04c584` (darkens — the one place Banksalad uses the darken pattern)
222
- - Use: Secondary retry / "다시 시도" actions where the resting state is a softer mint
223
-
224
- **Ghost / Outlined**
225
- - Background: `#ffffff`
226
- - Text: `#04c584`
227
- - Border: 1px solid `#04c584`
228
- - Radius: 2px
229
- - Padding: 12px 24px
230
- - Font: 16px / 700 / Pretendard
231
- - Hover: background `#f3fdfa` (mint tint)
232
- - Use: Secondary actions paired with a Primary CTA
233
-
234
- **Neutral / Cancel**
235
- - Background: `#f5f5f5`
236
- - Text: `#434444`
237
- - Border: none
238
- - Radius: 2px
239
- - Padding: 12px 24px
240
- - Font: 16px / 700 / Pretendard
241
- - Hover: background `#e1e1e1`
242
- - Use: Cancel / "취소" / dismiss actions
243
-
244
- **Disabled**
245
- - Background: `#e1e1e1`
246
- - Text: `#acacac`
247
- - Border: none
248
- - Radius: 2px
249
- - Font: 16px / 700 / Pretendard
250
- - Use: Disabled state (form incomplete, retry cooling down)
251
-
252
- **Link Button (Inline Text Link)**
253
- - Background: transparent
254
- - Text: `#04c584`
255
- - Border: none
256
- - Padding: 0
257
- - Font: 14px / 500 / Pretendard
258
- - Hover: text-decoration: underline
259
- - Use: Inline links within content ("자세히 보기"), table-row jump links
260
-
261
- ### Cards & Containers
262
-
263
- **Data Card (Default)**
264
- - Background: `#ffffff`
265
- - Border: 1px solid `#e1e1e1` (some surfaces use no border + shadow only)
266
- - Radius: 2px
267
- - Padding: 20px 24px
268
- - Shadow: `0 2px 5px rgba(0, 0, 0, 0.12)`
269
- - Use: Recommendation rows, transaction cards, account summary blocks
270
-
271
- **Card — Soft Variant**
272
- - Background: `#fbfbfb`
273
- - Border: none
274
- - Radius: 8px
275
- - Padding: 24px
276
- - Shadow: `0 2px 8px rgba(0, 0, 0, 0.1)`
277
- - Use: Marketing/landing feature cards (the rare 8px-radius case)
278
-
279
- **Card — Highlight (Selected)**
280
- - Background: `#f3fdfa`
281
- - Border: 1px solid `#10df99`
282
- - Radius: 2px
283
- - Padding: 20px 24px
284
- - Use: Selected state in product comparison lists (cards/loans), recommended-pick highlight
285
-
286
- ### Inputs & Forms
287
-
288
- **Text Input (Default)**
289
- - Background: `#ffffff`
290
- - Text: `#999999` (placeholder) / `#434444` (filled)
291
- - Border: 1px solid `#e1e1e1`
292
- - Radius: 2px
293
- - Padding: 0 16px
294
- - Height: 48px
295
- - Font: 16px / 500 / Pretendard
296
-
297
- **Text Input — Focus**
298
- - Background: `#f3fdfa`
299
- - Text: `#434444`
300
- - Border: 1px solid `#10df99`
301
- - Radius: 2px
302
- - Use: Active typing state — the mint tint is the only branded background fill in the system
303
-
304
- **Text Input — Error**
305
- - Background: `#ffffff`
306
- - Text: `#434444`
307
- - Border: 1px solid `#fe493d`
308
- - Radius: 2px
309
- - Error message below: 12px / 500 / `#fe493d`
310
- - Use: Validation failure state
311
-
312
- **Amount Input (Financial)**
313
- - Background: `#ffffff`
314
- - Text: `#2b2b2b`
315
- - Border: 2px solid `#f5f5f5`
316
- - Radius: 2px
317
- - Padding: 0 16px
318
- - Height: 56px
319
- - Font: 22px / 700 / Pretendard (right-aligned)
320
- - Use: Specialized input for entering won amounts — heavier border (2px), bigger type, right-aligned, 700 weight; treats money input as a heading not a form field
321
-
322
- ### Badges & Tags
323
-
324
- **Status Pill (Brand)**
325
- - Background: `#f3fdfa`
326
- - Text: `#04c584`
327
- - Border: none
328
- - Radius: 41px (rare pill — used only on tag chips, not buttons)
329
- - Padding: 4px 10px
330
- - Font: 12px / 500 / Pretendard
331
- - Use: Filter chips ("연회비 없음", "주유 할인") on card-recommendation pages
332
-
333
- **Status Badge (Warning)**
334
- - Background: `#ffffff`
335
- - Text: `#f56200`
336
- - Border: 1px solid `#fd8700`
337
- - Radius: 2px
338
- - Padding: 2px 8px
339
- - Font: 12px / 700 / Pretendard
340
- - Use: Rate-warning, expiry, attention-needed indicators
341
-
342
- **Status Badge (Negative)**
343
- - Background: `#ffffff`
344
- - Text: `#fe493d`
345
- - Border: 1px solid `#fe493d`
346
- - Radius: 2px
347
- - Padding: 2px 8px
348
- - Font: 12px / 700 / Pretendard
349
- - Use: Overdue, declined, blocking-issue indicators
350
-
351
- ### Tables (Financial Data)
352
-
353
- **Table Header Row**
354
- - Background: `#f5f5f5`
355
- - Text: `#7b7b7b`
356
- - Border-bottom: 1px solid `#e1e1e1`
357
- - Padding: 12px 16px
358
- - Font: 13px / 700 / Pretendard / uppercase letter-spacing 0.05em
359
- - Use: Column headers on transaction lists, fee schedules
360
-
361
- **Table Body Row**
362
- - Background: `#ffffff` (alternates with `#fbfbfb` on dense tables)
363
- - Text: `#434444`
364
- - Border-bottom: 1px solid `#e1e1e1`
365
- - Padding: 12px 16px
366
- - Font: 14px / 500 / Pretendard
367
- - Amounts right-aligned: 14px / 700 / `#2b2b2b` (positive) or `#fe493d` (negative)
368
- - Use: Transaction rows, line-item displays
369
-
370
- ### Charts & Data Viz
371
-
372
- **Chart Series Tokens**
373
- - Series 1: `#34464b` (primary)
374
- - Series 2: `#5c818a` (secondary)
375
- - Series 3: `#1c6c73` (tertiary)
376
- - Series 4: `#a7c7cf` (quaternary / pale)
377
- - Highlight: `#04c584` (always reserved for "your value" / user's own data point)
378
- - Negative: `#fe493d`
379
- - Positive trend: `#04c584`
380
-
381
- **Axis & Gridlines**
382
- - Axis label: 10–12px / 500 / `#7b7b7b`
383
- - Gridline: 1px dashed `#e1e1e1`
384
- - Background: `#ffffff` or `#fbfbfb`
385
-
386
- ### Navigation
387
-
388
- - Header: sticky white (`#ffffff`), no shadow at rest, 1px bottom border `#f5f5f5`
389
- - Logo: left, ~24–28px tall, brand wordmark in `#04c584` (or `#2b2b2b` mono variant)
390
- - Nav links: 14px / 500 / Pretendard / `#434444`, hover `#04c584`
391
- - Sign-in CTA: white background, `#2b2b2b` text, 1px solid `#d8dfe6` border, 16px radius, 6px 14px padding, 14px / 400 (the home-page header uses a softer 16px radius for the auth pill — exception to the 2px default; this is the only 16px-radius live observation in the captured DOM)
392
-
393
- ### Shadows
394
-
395
- | Level | Treatment | Use |
396
- |---|---|---|
397
- | Flat | none | Page background, inline elements |
398
- | Soft (L1) | `0 1px 1px rgba(0,0,0,.08)` | Subtle row separators |
399
- | Standard (L2) | `0 2px 5px rgba(0,0,0,.12)` | Default cards — most common (~38 occurrences) |
400
- | Elevated (L3) | `0 4px 9px rgba(0,0,0,.15)` | Dropdowns, popovers |
401
- | Deep (L4) | `0px 2px 8px rgba(0,0,0,.1)` | Floating panels |
402
- | Modal (L5) | `0 17px 50px rgba(0,0,0,.19)` | Modal dialogs |
403
- | Inset | `inset 0 1px 1px rgba(0,0,0,.12)` | Pressed-button / depressed input feel |
404
-
405
- ---
406
-
407
- **Verified:** 2026-05-13 (omd:add-reference CREATE mode)
408
- **Tier 1 sources:** banksalad.com home (live HTML — Pretendard + Jua preload, 16px-radius sign-in pill via playwright DOM); webview-cdn.banksalad.com/.../v2.5c10981711a65fe446400c6ecec36a221b1c3e9e.bundle.css (865 KB CSS bundle — 81× `border-radius: 2px`, primary CTA `#04c584` rule, input focus `#10df99`/`#f3fdfa`, full color-frequency map); blog.banksalad.com/tech/banksalad-product-language-ios/ (BPL principle quote); github.com/banksalad (styleguide org confirmed).
409
- **Tier 2 sources:** getdesign.md/banksalad — **no record** ("No designs found for 'banksalad'"). styles.refero.design/?q=banksalad — **no record** (search returns no banksalad cards). Tier 2 unavailable; Tier 1 treated as authoritative.
410
- **Conflicts unresolved:** none. (Single playwright DOM observation of 16px-radius on the sign-in header pill is documented as an exception in §4 Navigation rather than treated as a token-system conflict — the bundle's overwhelming 81× 2px frequency is the system default.)
411
- **Earlier gap:** none — this is CREATE.
412
-
413
- ## 5. Layout Principles
414
-
415
- ### Spacing System
416
- - Base unit: 4px
417
- - Scale: 4px, 8px, 12px, 16px, 20px, 24px, 32px, 40px, 48px, 64px
418
- - Card internal padding: 20px / 24px (slightly tighter than Toss's 20px-horizontal default — Banksalad packs more data)
419
- - Table-row vertical padding: 12px (denser than consumer apps)
420
-
421
- ### Grid & Container
422
- - Marketing/landing: max content width ~1080–1200px, centered
423
- - App / data surfaces: full-width with 16–24px gutters; tables go edge-to-edge on mobile
424
- - Card-recommendation lists: single-column on mobile, 2–3 column grid on desktop
425
- - Charts: full-width within their card container, never bleed outside
426
-
427
- ### Whitespace Philosophy
428
- - **Density is the brand.** Where Toss says "breathing room for money", Banksalad says "more facts visible without scrolling". A balance, a comparison rate, an interest rate, and three filter chips can coexist in one card.
429
- - **Section rhythm by surface fill.** White (`#ffffff`) and off-white (`#fbfbfb`) sections alternate quietly — not for drama, but to chunk dense data into scannable bands.
430
- - **Tight gaps inside, generous gaps outside.** Inside a comparison card, rows sit on 12px vertical gaps. Between cards, 24–32px. The hierarchy of grouping is communicated through gap-size alone.
431
-
432
- ### Border Radius Scale
433
- - **2px (dominant — 81 occurrences in CSS)**: Buttons, inputs, cards, badges, banners. The signature.
434
- - 4px: Small badges, inline pills.
435
- - 8px: Soft marketing cards (rare).
436
- - 10–12px: Promotional banner corners (rare).
437
- - 30–41px: Filter pills, tag chips, avatar circles.
438
- - 50%: Avatars, icon backdrops.
439
-
440
- Banksalad's 2px is a typographic-engineering commitment: pixel rounding sharp enough to look engineered, soft enough to not draw blood. Any radius ≥ 12px feels Toss-ish and is reserved for explicitly marketing-warmth contexts.
441
-
442
- ## 6. Depth & Elevation
443
-
444
- | Level | Treatment | Use |
445
- |---|---|---|
446
- | Flat (L0) | No shadow | Page background, inline elements |
447
- | Soft (L1) | `0 1px 1px rgba(0,0,0,.08)` | Subtle row lift, list-item separators |
448
- | Standard (L2) | `0 2px 5px rgba(0,0,0,.12)` | Default cards — by far the most common (~38 occurrences) |
449
- | Elevated (L3) | `0 4px 9px rgba(0,0,0,.15)` | Dropdowns, hover-elevated cards |
450
- | Deep (L4) | `0px 2px 8px rgba(0,0,0,.1)` | Floating action panels |
451
- | Modal (L5) | `0 17px 50px rgba(0,0,0,.19)` | Dialog modals, account-switch overlays |
452
- | Inset (L-1) | `inset 0 1px 1px rgba(0,0,0,.12)` | Pressed button state, depressed input visual |
453
- | Halo | `0 0 2px rgba(0,0,0,.26)` | Thin outline on overlay menus and popovers |
454
-
455
- **Shadow Philosophy.** Shadows are **always neutral and single-layer.** No colored shadows, no parallax stacks. Where Stripe brands its shadows in navy and Toss uses near-zero shadows for clinical clarity, Banksalad sits between — visible enough that cards lift off the surface, restrained enough that the data inside is what the eye lands on. The signature `0 2px 5px rgba(0,0,0,.12)` is a small, low-cost lift used 38× in the bundle.
456
-
457
- ## 7. Do's and Don'ts
458
-
459
- ### Do
460
- - Use `#04c584` for every interactive moment — CTAs, links, focus accents, "your data point" on charts
461
- - Use `#10df99` for hover (it's *brighter* than `#04c584` — Banksalad lightens on interaction)
462
- - Use `#f3fdfa` mint tint on input focus background — the only branded surface tint in the system
463
- - Keep border-radius at 2px for buttons, inputs, cards, badges — the system's geometric signature
464
- - Use Pretendard with the full Korean fallback stack; 700 as default weight for headings and CTAs
465
- - Use `#2b2b2b`/`#434444` warm near-blacks for type instead of `#000000`
466
- - Use the teal-slate family (`#34464b`/`#5c818a`/`#1c6c73`/`#a7c7cf`) for chart series — cooler than brand green by design
467
- - Use `#04c584` only for "your value" on a chart — never as a generic data fill
468
- - Right-align financial amounts in tables; use 700 weight for amounts even at 14px
469
- - Use comma-separated won amounts with the currency unit in 500 weight (`12,400,000원`)
470
-
471
- ### Don't
472
- - Don't use Toss's 12px+ rounded corners — Banksalad is 2px; 8px is the soft-marketing exception
473
- - Don't use Kakao yellow, KakaoPay yellow, or any warm accent for primary interaction — green is the sole interactive hue
474
- - Don't use BM JUA inside the app — Jua is for marketing-landing display moments only
475
- - Don't use weight 400 for body — Banksalad's body weight is 500
476
- - Don't apply colored shadows (blue, green, branded) — shadows are always neutral black
477
- - Don't pad financial cards generously like Toss — Banksalad packs density; data is the aesthetic
478
- - Don't approximate currency amounts (`약 120만원`) on primary financial surfaces — bare numerals with commas only
479
- - Don't use `#0099ff` info-blue for default links — green is the default link color; blue is reserved for *external* references
480
- - Don't use Pretendard 300 on body — light weights only at hero display sizes (52px+)
481
- - Don't sprinkle the brand green on chart series — green is for interaction, teal-slate is for data
482
-
483
- ## 8. Responsive Behavior
484
-
485
- ### Breakpoints
486
- | Name | Width | Key Changes |
487
- |---|---|---|
488
- | Mobile | <600px | Single column, full-width tables (horizontal scroll if needed), 16px gutters |
489
- | Tablet | 600–1024px | 2-column card grids, 20px gutters |
490
- | Desktop | 1024–1280px | Full marketing layout, 3-column feature grids |
491
- | Large | >1280px | Centered content max-width ~1200px |
492
-
493
- ### Touch Targets
494
- - Buttons minimum 42px height (default), 56px for hero display CTAs
495
- - Table rows minimum 44px (slightly denser than 48px standard — Banksalad accepts a tighter tap)
496
- - Filter pill chips: 28–32px height
497
- - Input minimum 48px height; amount-input 56px
498
-
499
- ### Collapsing Strategy
500
- - Hero: 52px → 36px on mobile, weight 700 maintained
501
- - Marketing 3-col feature grids → 2-col → single column
502
- - Comparison tables: maintain table form on tablet, switch to stacked cards on mobile (each row becomes a card with key/value pairs)
503
- - Charts: full-width, maintain aspect ratio, axis-label font drops 12px → 10px on mobile
504
- - Filter chip rows: horizontal scroll (no wrap) on mobile to preserve the chip rhythm
505
-
506
- ### Image Behavior
507
- - Card/product logos: 24–40px, consistent square framing within rows
508
- - Chart screenshots in marketing: full-width on mobile, 2-col on desktop
509
- - Decorative illustrations: rare; when used, locked to a single accent illustration per landing surface (no illustration overload — data is the visual)
510
-
511
- ## 9. Agent Prompt Guide
512
-
513
- ### Quick Color Reference
514
- - Primary CTA: Salad Green (`#04c584`)
515
- - Hover: Hover Green (`#10df99`)
516
- - Page background: White (`#ffffff`)
517
- - Surface alt: Off-white (`#fbfbfb`)
518
- - Neutral surface: (`#f5f5f5`)
519
- - Heading text: Warm near-black (`#2b2b2b`)
520
- - Body text: (`#434444`)
521
- - Caption: (`#7b7b7b`)
522
- - Placeholder: (`#999999`)
523
- - Border: (`#e1e1e1`)
524
- - Focus background tint: Mint (`#f3fdfa`)
525
- - Chart series: `#34464b` / `#5c818a` / `#1c6c73` / `#a7c7cf`
526
- - Error: `#fe493d`
527
- - Warning: `#fd8700` / `#f56200`
528
-
529
- ### Example Component Prompts
530
- - "Create a Banksalad-style primary CTA: `#04c584` background, white text, 2px border-radius (not 12px), 700-weight Pretendard at 16px, 12px 24px padding, 42px height. Hover lightens to `#10df99`."
531
- - "Design a card-recommendation row: white background, 1px solid `#e1e1e1` border, 2px radius, 20px 24px padding, shadow `0 2px 5px rgba(0,0,0,.12)`. Card logo 32px left, title 16px/700 `#2b2b2b`, three filter chips below (`#f3fdfa` bg, `#04c584` text, 41px radius, 12px/500), annual-fee figure right-aligned 18px/700 with '원' suffix in 500."
532
- - "Build a focused amount input: 2px border `#f5f5f5`, on focus border `#10df99` and background `#f3fdfa`. Text 22px/700 right-aligned, `#2b2b2b`, won unit in 500 weight following the digits."
533
- - "Create a data chart: white background, axis labels 10px/500 `#7b7b7b`, gridlines 1px dashed `#e1e1e1`. Series 1 `#34464b`, series 2 `#5c818a`, series 3 `#1c6c73`. User's own data point in `#04c584` to make 'your value' pop against neutral teal-slate."
534
- - "Design a transaction table row: alternating `#ffffff` / `#fbfbfb` background, 12px 16px padding, 1px solid `#e1e1e1` bottom border. Date column 14px/500 `#7b7b7b`, merchant 14px/500 `#434444`, amount right-aligned 14px/700 — `#2b2b2b` for positive, `#fe493d` for negative."
535
-
536
- ### Iteration Guide
537
- 1. **Default radius is 2px.** If the AI produces 12px or 16px corners, reject — that's Toss, not Banksalad.
538
- 2. **Default weight is 700 for anything important.** Headings, CTAs, financial amounts. 500 for body. Never 400 for body.
539
- 3. **Green is for interaction only.** Never use `#04c584` as a generic background fill or decorative element. It always means: the user can tap this, or this is the user's own data.
540
- 4. **Hover lightens.** `#04c584` → `#10df99` on hover (the opposite of conventional darken-on-hover). This is a signature.
541
- 5. **Shadows are neutral and single-layer.** `0 2px 5px rgba(0,0,0,.12)` is the workhorse. No colored shadows.
542
- 6. **Chart series are teal-slate, not green.** `#34464b` / `#5c818a` / `#1c6c73` / `#a7c7cf`. Reserve green for the user's own data point.
543
- 7. **Pretendard is non-negotiable.** Always include the full Korean fallback stack. Jua only for marketing display.
544
-
545
- ---
546
-
547
- ## 10. Voice & Tone
548
-
549
- Banksalad speaks like a **trustworthy financial advisor who happens to read the regulations carefully** — calm, factual, slightly older-feeling than Toss, never the "friend with money" voice that consumer-app fintech defaults to. Where Toss says *"송금 완료"*, Banksalad says *"내 신용점수가 5점 올랐어요. 이번 달 카드 결제 이력이 안정적이었기 때문이에요."* The voice explains *why* the number changed, not just that it changed. Korean is the primary register; English UI strings are translations, not parity.
550
-
551
- | Context | Tone |
552
- |---|---|
553
- | CTAs | Imperative, concrete outcome. `내 카드 찾기`, `대출 한도 확인하기`, `신청하기`. Never `시작하기 →` with an arrow flourish. |
554
- | Section headlines | Statement of fact, not a hook. `이번 달 지출 분석` not `이번 달, 얼마나 썼는지 보러 갈까요?`. |
555
- | Recommendations | Justified. Every recommended card or loan has a one-sentence reason next to it (`연 30만원 이상 절약될 수 있어요`). Never a bare ranked list. |
556
- | Financial figures | Bare numerals with commas. `1,240,000원`. Approximations (`약 124만원`) are forbidden on primary surfaces. |
557
- | Success messages | One-line confirmation + the relevant figure. `신용점수가 855점으로 올랐어요.` No emoji, no exclamation. |
558
- | Error / validation | Specific cause + one-line action. `주민등록번호가 일치하지 않아요. 다시 확인해주세요.` Never `오류가 발생했습니다`. |
559
- | Empty states | Explain the *why*, then suggest one next step. `아직 연동된 카드가 없어요. 카드를 연동하면 자동으로 지출 분석이 시작돼요.` |
560
- | Legal / disclosure | Formal `~합니다` endings. Pinned at the bottom of recommendation cards. Treated as part of the product, not a footer afterthought. |
561
- | Health-asset (DNA, screening) | Same calm advisor voice as finance. No marketing exuberance about "discovering your DNA". Just `이번 검사로 18가지 항목을 확인할 수 있어요`. |
562
-
563
- **Forbidden phrases.** `오류가 발생했습니다`, `Oops`, `간단하게`, `최고의 ~`, `놓치지 마세요`, exclamation marks on routine CTAs, emoji on financial surfaces, approximations on money (`약 ~원`), `놀라운 절약` / "amazing savings" / superlative-driven recommendations. Banksalad's voice is the opposite of clickbait — the user came here to think about money, and the product should respect the seriousness of that intent.
564
-
565
- ## 11. Brand Narrative
566
-
567
- Banksalad is the consumer brand of **Rainist (레이니스트)**, founded in **2012 by Kim Tae-hoon (김태훈)** — a Sogang University graduate who started the company inside the Smilegate game-studio incubator and whose **founding team manually classified 16 hours a day of Korean financial-product data to build the first comparison database** ([Hankyung 2019-03-12](https://www.hankyung.com/article/2019031275551)). The founding rejection was specific: every legacy Korean financial portal in 2012 (Bankrate-style aggregators, bank-run comparison pages) presented credit cards and loans in alphabetical lists optimized for the issuer, not the user. Kim Tae-hoon's stated thesis was *"정보 비대칭성을 해소해 누구나 똑똑해지는 세상을 만들겠다"* — "resolve information asymmetry so anyone can become smart [about their own money]" (founder interviews, Korean press 2018–2019). The product's design language follows directly from that thesis: **more facts, clearly tiered, with the reason next to every recommendation.**
568
-
569
- Banksalad's monthly active users tripled to **1.5M in early 2019** ([Korea Herald 2019-02-22](http://www.koreaherald.com/view.php?ud=20190222000548)). The company raised a **₩45B ($37M USD) Series C at a ₩300B ($247M) valuation in 2019** ([Korea Herald 2019-08-28](https://www.koreaherald.com/article/2087712)) and has raised **$169.96M cumulatively** to date (PitchBook). Today the product spans credit-card recommendation, personal loans, mortgages, deposits/savings, and — uniquely — **a free DNA-based health-screening service** that extends the "manage your assets" framing from financial assets to health assets. The home-page tagline as of 2026-05-13 reads *"뱅크샐러드 \| 금융을 넘어 건강 자산까지"* ("Banksalad — from finance to health assets"), making that extension the brand's current positioning.
570
-
571
- The design system is internally called **BPL — Banksalad Product Language**, documented on the official tech blog ([blog.banksalad.com/tech/banksalad-product-language-ios](https://blog.banksalad.com/tech/banksalad-product-language-ios/)). BPL's most-quoted principle is *"Communication cost is most expensive. Code and Show first, argue after that."* BPL is implemented on iOS with LayoutDrivenUI + RxSwift, on Android in Kotlin, on Web through the CSS bundle this DESIGN.md was extracted from. The system explicitly avoids premature component abstraction — similar components stay independent, matching how designers structure their Figma libraries. The mint-green (`#04c584`), the 2px radius, the Pretendard 700 default, the teal-slate chart palette — all are BPL primitives.
572
-
573
- What Banksalad refuses: the cheerful consumer-app voice of Toss and KakaoPay (banksalad explains; it does not delight), the institutional-indigo of legacy Korean banks (which is why it picked green, not blue), the playful illustration of Kakao-family products (Banksalad does not use mascot characters), and the data-density of Bloomberg-terminal aesthetics (the tables are dense but the type is human-readable). Banksalad sits in a narrow middle: serious enough to be an advisor, modern enough to be the app a 26-year-old opens between subway stops.
574
-
575
- ## 12. Principles
576
-
577
- 1. **Show the number, then show the reason.** Every recommended card, loan, or asset comes with a one-sentence justification next to the figure. A ranked list without reasons is a violation of the brand. UI implication: every recommendation card must have a "justification line" slot in its component contract.
578
- 2. **Density is trust.** Where consumer-app fintech treats whitespace as luxury, Banksalad treats density as competence. A user who can see four comparison rows at once is being respected as a researcher. UI implication: card padding 20–24px, not 32px+. Tables ship as tables, not as stacked single-rows.
579
- 3. **Green is interaction, not decoration.** `#04c584` only appears where the user can act (CTA, link, focus, selection) or where the user's own data is shown ("your value" on a chart, "your score"). Never on a decorative gradient, never as a page-section background. UI implication: never use brand green as a fill that does not change on hover.
580
- 4. **2px is a philosophical commitment.** The sharp corner reads as data-tool; Toss/Kakao's 12–16px reads as consumer-toy. Banksalad chooses to look engineered. UI implication: do not import any consumer-app card with rounded corners as-is; re-corner to 2px.
581
- 5. **Numerals are headings.** Financial amounts at 20px+ are styled with the same hierarchical weight (700) as page titles. Money is information of the highest priority — it gets the typographic treatment of a heading, never of body. UI implication: amounts use heading-class typography tokens.
582
- 6. **The reason for the recommendation is part of the product.** Disclaimers, comparison criteria, and rate sources are not legal footers — they are pinned inside the recommendation card, in the same visual frame as the recommendation itself. UI implication: every recommendation component reserves a `disclosure` slot that is always rendered, not collapsed-by-default.
583
- 7. **Korean and Latin numerals must align.** Pretendard's optical alignment between 한글 and Latin numerals is non-negotiable — a column of `1,240,000원` and `$1,240` should read as one column, not two scripts arguing. UI implication: never substitute a Latin-only font for numeric display; Pretendard handles both.
584
- 8. **Charts use teal-slate, not brand green, for the field.** Reserving green for the user's own value makes the user's position immediately legible against neutral series. UI implication: chart `seriesColors` defaults to `[#34464b, #5c818a, #1c6c73, #a7c7cf]`; user's series defaults to `#04c584`.
585
- 9. **Approximations are a betrayal.** `약 ~원` on a primary money surface tells the user the product does not actually know the number. Banksalad's brand promise is information clarity; rounded figures are forbidden where the precise figure exists. UI implication: financial-amount components do not accept a `round: true` flag.
586
-
587
- ## 13. Personas
588
-
589
- *Personas below are fictional archetypes informed by publicly observable Banksalad user segments (Korean millennials managing credit-card portfolios, freelancers comparing loan products, mid-life users tracking health-and-finance side by side), not individual people.*
590
-
591
- **박지혜 (Park Ji-hye), 31, Seoul.** Senior designer at a Seoul-based scaleup. Opens Banksalad once a week to scan her credit-card spend-by-category report. Switches cards every 18 months based on whichever one Banksalad's recommendation engine surfaces with the best annual-savings figure for her actual usage pattern — *not* the one with the flashiest sign-up bonus. Reads the one-sentence justification under every recommendation before tapping; would close the app permanently if it ever shipped a "best card 🔥" list without reasons.
592
-
593
- **김상민 (Mr. Kim), 47, Daegu.** Self-employed, runs a small import business. Uses Banksalad primarily for comparing business-friendly credit cards and tracking interest-rate movements on his three commercial loans. Trusts the product because the rate comparison shows the source date and the underlying assumption (`연 환산 기준`). Pays attention to the disclosure text inside each recommendation card — would lose trust immediately if a recommendation appeared without its rate basis.
594
-
595
- **이수연 (Lee Su-yeon), 28, Seongnam.** UX researcher. Uses Banksalad for two unrelated reasons: monthly spend analysis, and the free DNA-based health screening. Finds the same voice across both surfaces (calm, factual, advisor-tone) reassuring — it makes the health-screening feel like an extension of "manage your assets" rather than a sudden pivot. Compares Banksalad's spend analysis to Toss's and prefers Banksalad's because *"Toss는 다 정리되어 있고 깔끔한데, 뱅크샐러드는 왜 그런지를 알려줘요"* (illustrative paraphrase) — Toss tidies, Banksalad explains.
596
-
597
- **조현우 (Cho Hyun-woo), 39, Busan.** Mid-career operations manager. Reviews Banksalad's monthly credit-report widget — has been watching his credit score climb from 820 to 868 over 14 months. Doesn't tap CTAs; uses Banksalad strictly as a dashboard. Trusts the green `#04c584` "your score" indicator on the score-trend chart because it always shows him *his* position against the teal-slate distribution of the population — the green-vs-teal distinction tells him at a glance which data is about him.
598
-
599
- ## 14. States
600
-
601
- | State | Treatment |
602
- |---|---|
603
- | **Empty (no linked accounts)** | White canvas. Single short paragraph in `#434444` body text explaining why the screen is empty (`아직 연동된 카드가 없어요. 카드를 연동하면 자동으로 지출 분석이 시작돼요.`). One primary CTA in Salad Green (`#04c584`, 2px radius). No illustration. |
604
- | **Empty (filter cleared)** | Single line of `#7b7b7b` caption (`조건에 맞는 결과가 없어요. 필터를 조정해주세요.`). No CTA — user adjusts filters themselves. |
605
- | **Empty (no transactions this period)** | Two-line message in `#434444` explaining the filter scope (`선택한 기간에 거래 내역이 없어요. 다른 기간을 선택하거나 카드 연동을 확인해보세요.`). |
606
- | **Loading (first paint)** | Skeleton blocks at `#f5f5f5` matching the final layout exactly. Financial amounts render as `--원` placeholders rather than skeleton bars — a skeleton bar that resolves to a number is disorienting; `--` is honest. 1s shimmer with 8% white highlight using a `linear-gradient` sweep. |
607
- | **Loading (refresh / in-place)** | Subtle `#04c584` 2px progress bar at top of the section. Previous values stay visible. Never block the table during refresh. |
608
- | **Error (inline field)** | `#fe493d` 1px border on the input, 12px error text below in `#fe493d` weight 500. One actionable sentence (`주민등록번호가 일치하지 않아요. 다시 확인해주세요.`). |
609
- | **Error (recommendation fetch failed)** | Inline banner inside the recommendation card area. `#fe493d` left border, white background, 14px `#434444` text explaining what failed + a `다시 시도하기` button in the retry-button style (`#10df99` resting → `#04c584` on hover). Never a generic toast. |
610
- | **Error (data freshness warning)** | Soft warning banner with `#fd8700` left accent bar, white background, 13px `#7b7b7b` text noting the data is N hours stale. Non-blocking — the user can still see the (possibly stale) figures. |
611
- | **Success (action confirmed)** | Inline confirmation row in `#f3fdfa` mint-tint background, `#04c584` 16px / 700 confirmation text, the relevant figure in 22px / 700 `#2b2b2b` below. No toast for important actions — they get their own confirmation surface. |
612
- | **Success (passive update)** | 3s auto-dismiss toast at top-right. `#2b2b2b` background (NOT brand green — green is reserved for interactive surfaces), white 14px / 500 text, 2px radius, shadow `0 2px 5px rgba(0,0,0,.12)`. No emoji. |
613
- | **Skeleton** | `#f5f5f5` blocks at exact final dimensions, 2px radius matching the component being loaded. 1s shimmer. Financial-amount slots show `--원`, not a bar. |
614
- | **Disabled** | Background `#e1e1e1`, text `#acacac`, 2px radius preserved. Cursor `not-allowed`. The geometry stays identical to the enabled state so re-enabling does not shift layout. |
615
- | **Pressed (button)** | Inset shadow `inset 0 1px 1px rgba(0,0,0,.12)` + background shifts by ~5% darker for the press duration. Returns instantly on release (no spring). |
616
-
617
- ## 15. Motion & Easing
618
-
619
- **Durations:**
620
-
621
- | Token | Value | Use |
622
- |---|---|---|
623
- | `motion-instant` | 0ms | State commits, checkbox flips, focus ring appearance |
624
- | `motion-fast` | 150ms | Hover, focus, button press overlays, inline value updates |
625
- | `motion-standard` | 250ms | Card expand, dropdown open, tab content switch, modal open |
626
- | `motion-slow` | 400ms | Page-level transitions, recommendation-card reveal animation |
627
- | `motion-data` | 600ms | Chart series draw-in, score-bar count-up — slower because the user needs time to read the number |
628
-
629
- **Easings:**
630
-
631
- | Token | Curve | Use |
632
- |---|---|---|
633
- | `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Arriving — modals, dropdowns, sheets |
634
- | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
635
- | `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1)` | Two-way transitions, chart draw-in |
636
- | `ease-data` | `cubic-bezier(0.25, 0.46, 0.45, 0.94)` | Score count-up, chart series — eases out gradually so the final value is the calm resting state |
637
-
638
- **Explicitly forbidden.** No spring overshoot anywhere. No bounce. No `cubic-bezier` with a middle control above `1.0`. Banksalad's voice is *advisor*, not *delighter* — spring-easing reads as a consumer app celebrating a transaction, which is the opposite of the brand promise. Where Toss licenses spring easing only for the money-moved checkmark, Banksalad does not license it at all.
639
-
640
- **Signature motions.**
641
-
642
- 1. **Score count-up.** When a credit-score or asset-total updates, the number animates from the previous value to the new value across `motion-data` (600ms) with `ease-data`. The duration is deliberately slow — the user is supposed to read the change, not see it flash. The Korean numeric separators (`,`) re-flow correctly during the count.
643
- 2. **Chart series draw-in.** Time-series charts draw left-to-right in `motion-data` with `ease-standard`. The user's own series (`#04c584`) is drawn *last*, so the eye lands on the user's own data after the surrounding distribution has been established.
644
- 3. **Recommendation card reveal.** When a fresh recommendation set loads, cards fade in with `motion-standard / ease-enter` from `opacity: 0; translateY(4px)`. Translate is intentionally small (4px, not 20px) — the cards arrive, they do not fly in.
645
- 4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, all `motion-*` tokens collapse to `motion-instant`. Score count-ups become instant value swaps. Chart draw-ins render their final state immediately. Banksalad remains fully usable; nothing in the product is information-dependent on motion.
646
-
647
- <!--
648
- OmD v0.1 Sources — Philosophy Layer (sections 10–15)
649
-
650
- Direct verification via WebFetch + curl (2026-05-13):
651
- - https://www.banksalad.com/ — confirms current tagline "뱅크샐러드 | 금융을 넘어 건강 자산까지"
652
- and the Pretendard + BM JUA font stack via preload <link> tags.
653
- - https://webview-cdn.banksalad.com/banksalad-web/static/dist/v2.5c10981711a65fe446400c6ecec36a221b1c3e9e.bundle.css
654
- (865 KB) — all token-level claims (#04c584 primary green, 2px dominant radius,
655
- Pretendard with full Korean fallback, 700 default weight, 0 2px 5px rgba(0,0,0,.12)
656
- standard shadow, input focus border #10df99 / background #f3fdfa).
657
- - https://blog.banksalad.com/tech/banksalad-product-language-ios/ — confirms
658
- the design system is internally called "BPL" (Banksalad Product Language)
659
- and the quoted principle "Communication cost is most expensive. Code and Show
660
- first, argue after that."
661
- - https://github.com/banksalad — confirms the official org and the
662
- banksalad/styleguide public repo.
663
-
664
- Brand facts via WebSearch (2026-05-13):
665
- - Hankyung 2019-03-12 — manual 16-hour/day data classification origin
666
- - Korea Herald 2019-02-22 — 1.5M MAU early 2019
667
- - Korea Herald 2019-08-28 — ₩45B Series C at ₩300B valuation
668
- - PitchBook — $169.96M total raised
669
-
670
- Founder mission quote "정보 비대칭성을 해소해 누구나 똑똑해지는 세상을 만들겠다"
671
- is attributed to Kim Tae-hoon per multiple Korean press interviews summarized
672
- in the WebSearch result; the exact phrasing is widely cited in Korean fintech
673
- coverage of Banksalad.
674
-
675
- Personas (§13) are fictional archetypes informed by publicly described
676
- Banksalad user segments (Korean millennials managing credit-card spend,
677
- self-employed users comparing rates, UX researchers using the health-asset
678
- extension, mid-career users using Banksalad as a passive dashboard). Names
679
- are illustrative; they do not refer to real people. Yi Su-yeon's paraphrase
680
- of Toss-vs-Banksalad voice in §13 is explicitly marked illustrative.
681
-
682
- Interpretive claims (e.g., "2px is a philosophical commitment", "green is for
683
- interaction, not decoration", "approximations are a betrayal") are editorial
684
- readings of BPL's observable design choices, not directly sourced Banksalad
685
- statements. They are anchored in the principle quote from BPL_iOS
686
- ("Communication cost is most expensive...") and the founder's mission
687
- ("resolve information asymmetry").
688
- -->