oh-my-design-cli 1.8.6 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/.claude/hooks/lib/preferences-parser.cjs +1 -0
  2. package/.claude/hooks/lib/preferences-writer.cjs +1 -0
  3. package/.claude/hooks/post-edit-watch.cjs +1 -0
  4. package/.claude/hooks/session-end-foldin.cjs +1 -0
  5. package/.claude/hooks/session-state-loader.cjs +1 -0
  6. package/.claude/hooks/skill-activation.cjs +1 -0
  7. package/.claude/settings.json +10 -1
  8. package/.github/assets/logo-bg.png +0 -0
  9. package/AGENTS.md +20 -1
  10. package/CHANGELOG.md +482 -0
  11. package/MIGRATION.md +103 -0
  12. package/README.ja.md +56 -19
  13. package/README.ko.md +47 -30
  14. package/README.md +48 -30
  15. package/README.zh-TW.md +59 -22
  16. package/agents/AGENT.md +8 -7
  17. package/agents/omd-codex-image.md +1 -1
  18. package/agents/omd-critic.md +6 -7
  19. package/agents/omd-designer-review.md +1 -1
  20. package/agents/omd-final-qa.md +1 -1
  21. package/agents/omd-humanizer.md +38 -0
  22. package/agents/omd-kr-writer.md +3 -4
  23. package/agents/omd-locale-adapter.md +12 -16
  24. package/agents/omd-master.md +24 -19
  25. package/agents/omd-microcopy.md +1 -1
  26. package/agents/omd-orchestrator.md +7 -8
  27. package/agents/omd-slop-auditor.md +31 -0
  28. package/agents/omd-ux-researcher.md +1 -1
  29. package/data/reference-fingerprints.json +2761 -85
  30. package/dist/bin/oh-my-design.js +16 -8
  31. package/dist/bin/oh-my-design.js.map +1 -1
  32. package/dist/chunk-UJIHCEYF.js +99 -0
  33. package/dist/chunk-UJIHCEYF.js.map +1 -0
  34. package/dist/doctor-LDWSFM3I.js +763 -0
  35. package/dist/doctor-LDWSFM3I.js.map +1 -0
  36. package/dist/install-skills-ZZFNJ2II.js +1120 -0
  37. package/dist/install-skills-ZZFNJ2II.js.map +1 -0
  38. package/docs/CLI_QUICKSTART.md +157 -0
  39. package/package.json +25 -4
  40. package/scripts/postinstall.cjs +5 -4
  41. package/skills/claude-design/SKILL.md +38 -14
  42. package/skills/claude-design/references/claude-design-flow.md +11 -11
  43. package/skills/claude-design/references/codebase-analysis.md +5 -4
  44. package/skills/omd-final-qa/SKILL.md +1 -1
  45. package/skills/omd-harness/SKILL.md +51 -50
  46. package/skills/omd-humanize/SKILL.md +116 -0
  47. package/skills/omd-humanize/agents/openai.yaml +4 -0
  48. package/skills/omd-humanize/references/locale-playbooks.md +102 -0
  49. package/skills/omd-humanize/references/sources.md +11 -0
  50. package/skills/omd-init/SKILL.md +18 -12
  51. package/skills/omd-locale-adapter/SKILL.md +58 -91
  52. package/skills/omd-orchestrator/SKILL.md +11 -5
  53. package/skills/omd-reference-capture/SKILL.md +80 -26
  54. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
  55. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
  56. package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
  57. package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
  58. package/skills/omd-slop-audit/SKILL.md +110 -0
  59. package/skills/omd-slop-audit/agents/openai.yaml +4 -0
  60. package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
  61. package/skills/omd-slop-audit/references/sources.md +24 -0
  62. package/web/references/104/DESIGN.md +354 -0
  63. package/web/references/11st/DESIGN.md +197 -316
  64. package/web/references/29cm/DESIGN.md +297 -393
  65. package/web/references/42dot/DESIGN.md +390 -0
  66. package/web/references/8percent/DESIGN.md +438 -0
  67. package/web/references/ably/DESIGN.md +267 -572
  68. package/web/references/acer/DESIGN.md +329 -0
  69. package/web/references/airbnb/DESIGN.md +219 -557
  70. package/web/references/airbridge/DESIGN.md +451 -0
  71. package/web/references/alipay/DESIGN.md +179 -420
  72. package/web/references/apple/DESIGN.md +224 -498
  73. package/web/references/asleep/DESIGN.md +402 -0
  74. package/web/references/au/DESIGN.md +334 -0
  75. package/web/references/autopedia/DESIGN.md +382 -0
  76. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  77. package/web/references/baemin/DESIGN.md +332 -491
  78. package/web/references/banksalad/DESIGN.md +269 -180
  79. package/web/references/barogo/DESIGN.md +416 -0
  80. package/web/references/beusable/DESIGN.md +464 -0
  81. package/web/references/bigin/DESIGN.md +454 -0
  82. package/web/references/bilibili/DESIGN.md +206 -374
  83. package/web/references/bmw/DESIGN.md +162 -276
  84. package/web/references/brandi/DESIGN.md +184 -325
  85. package/web/references/buzzvil/DESIGN.md +457 -0
  86. package/web/references/cafe24/DESIGN.md +472 -0
  87. package/web/references/catchtable/DESIGN.md +219 -264
  88. package/web/references/cgv/DESIGN.md +317 -0
  89. package/web/references/channeltalk/DESIGN.md +210 -336
  90. package/web/references/china-airlines/DESIGN.md +291 -0
  91. package/web/references/cjonstyle/DESIGN.md +453 -0
  92. package/web/references/class101/DESIGN.md +168 -387
  93. package/web/references/classum/DESIGN.md +228 -203
  94. package/web/references/claude/DESIGN.md +242 -479
  95. package/web/references/clay/DESIGN.md +179 -377
  96. package/web/references/clickhouse/DESIGN.md +254 -343
  97. package/web/references/codeit/DESIGN.md +470 -0
  98. package/web/references/cohere/DESIGN.md +214 -324
  99. package/web/references/coinone/DESIGN.md +199 -179
  100. package/web/references/corca/DESIGN.md +414 -0
  101. package/web/references/coupang/DESIGN.md +205 -475
  102. package/web/references/cursor/DESIGN.md +240 -381
  103. package/web/references/dabang/DESIGN.md +248 -213
  104. package/web/references/dable/DESIGN.md +431 -0
  105. package/web/references/datarize/DESIGN.md +338 -0
  106. package/web/references/dealicious/DESIGN.md +402 -0
  107. package/web/references/drdiary/DESIGN.md +404 -0
  108. package/web/references/elastic/DESIGN.md +238 -0
  109. package/web/references/elevenlabs/DESIGN.md +183 -321
  110. package/web/references/elice/DESIGN.md +445 -0
  111. package/web/references/eslite/DESIGN.md +257 -0
  112. package/web/references/evaair/DESIGN.md +338 -0
  113. package/web/references/expo/DESIGN.md +238 -331
  114. package/web/references/familymart-tw/DESIGN.md +254 -0
  115. package/web/references/ferrari/DESIGN.md +160 -377
  116. package/web/references/figma/DESIGN.md +197 -451
  117. package/web/references/fitpet/DESIGN.md +445 -0
  118. package/web/references/flex/DESIGN.md +170 -253
  119. package/web/references/framer/DESIGN.md +197 -340
  120. package/web/references/freee/DESIGN.md +211 -533
  121. package/web/references/friendliai/DESIGN.md +431 -0
  122. package/web/references/frip/DESIGN.md +440 -0
  123. package/web/references/furiosaai/DESIGN.md +450 -0
  124. package/web/references/gangnamunni/DESIGN.md +154 -591
  125. package/web/references/gaudiolab/DESIGN.md +414 -0
  126. package/web/references/google/DESIGN.md +290 -398
  127. package/web/references/goorm/DESIGN.md +470 -0
  128. package/web/references/greencar/DESIGN.md +420 -0
  129. package/web/references/hackle/DESIGN.md +472 -0
  130. package/web/references/hashicorp/DESIGN.md +273 -318
  131. package/web/references/heydealer/DESIGN.md +429 -0
  132. package/web/references/humanscape/DESIGN.md +433 -0
  133. package/web/references/hwahae/DESIGN.md +453 -0
  134. package/web/references/hyundai/DESIGN.md +158 -368
  135. package/web/references/hyundaicard/DESIGN.md +171 -121
  136. package/web/references/ibm/DESIGN.md +227 -378
  137. package/web/references/idus/DESIGN.md +450 -0
  138. package/web/references/igaworks/DESIGN.md +437 -0
  139. package/web/references/inflearn/DESIGN.md +221 -366
  140. package/web/references/intuit/DESIGN.md +244 -0
  141. package/web/references/jandi/DESIGN.md +191 -291
  142. package/web/references/jobplanet/DESIGN.md +415 -0
  143. package/web/references/kakao/DESIGN.md +287 -475
  144. package/web/references/kakaobank/DESIGN.md +220 -521
  145. package/web/references/kakaogames/DESIGN.md +220 -0
  146. package/web/references/kakaopay/DESIGN.md +207 -526
  147. package/web/references/karrot/DESIGN.md +227 -251
  148. package/web/references/kb-kookmin/DESIGN.md +308 -0
  149. package/web/references/kbank/DESIGN.md +220 -175
  150. package/web/references/kcd/DESIGN.md +432 -0
  151. package/web/references/kmong/DESIGN.md +281 -356
  152. package/web/references/krds/DESIGN.md +245 -19
  153. package/web/references/kream/DESIGN.md +224 -359
  154. package/web/references/kurly/DESIGN.md +211 -533
  155. package/web/references/kyobobook/DESIGN.md +445 -0
  156. package/web/references/lablup/DESIGN.md +474 -0
  157. package/web/references/lamborghini/DESIGN.md +198 -360
  158. package/web/references/lemonbase/DESIGN.md +452 -0
  159. package/web/references/lguplus/DESIGN.md +259 -0
  160. package/web/references/likelion/DESIGN.md +283 -0
  161. package/web/references/line/DESIGN.md +396 -355
  162. package/web/references/linear.app/DESIGN.md +209 -562
  163. package/web/references/lotteon/DESIGN.md +386 -0
  164. package/web/references/lovable/DESIGN.md +255 -349
  165. package/web/references/makinarocks/DESIGN.md +242 -0
  166. package/web/references/maum-ai/DESIGN.md +423 -0
  167. package/web/references/medibloc/DESIGN.md +425 -0
  168. package/web/references/megabox/DESIGN.md +232 -0
  169. package/web/references/mercari/DESIGN.md +217 -434
  170. package/web/references/microsoft/DESIGN.md +234 -388
  171. package/web/references/mildang/DESIGN.md +411 -0
  172. package/web/references/millie/DESIGN.md +183 -504
  173. package/web/references/minimax/DESIGN.md +264 -322
  174. package/web/references/miricanvas/DESIGN.md +182 -355
  175. package/web/references/miro/DESIGN.md +234 -232
  176. package/web/references/mistral.ai/DESIGN.md +231 -314
  177. package/web/references/mixi/DESIGN.md +234 -0
  178. package/web/references/moin/DESIGN.md +445 -0
  179. package/web/references/mongodb/DESIGN.md +219 -316
  180. package/web/references/moreh/DESIGN.md +437 -0
  181. package/web/references/musinsa/DESIGN.md +184 -510
  182. package/web/references/mynavi/DESIGN.md +242 -0
  183. package/web/references/myrealtrip/DESIGN.md +169 -406
  184. package/web/references/naver/DESIGN.md +328 -499
  185. package/web/references/naverwebtoon/DESIGN.md +172 -395
  186. package/web/references/neosapience/DESIGN.md +441 -0
  187. package/web/references/nhn/DESIGN.md +169 -346
  188. package/web/references/nhncloud/DESIGN.md +185 -123
  189. package/web/references/nota/DESIGN.md +451 -0
  190. package/web/references/notion/DESIGN.md +271 -475
  191. package/web/references/nrise/DESIGN.md +417 -0
  192. package/web/references/ohouse/DESIGN.md +210 -549
  193. package/web/references/oliveyoung/DESIGN.md +217 -326
  194. package/web/references/ollama/DESIGN.md +241 -308
  195. package/web/references/onestore/DESIGN.md +248 -0
  196. package/web/references/palantir/DESIGN.md +256 -0
  197. package/web/references/panasonic/DESIGN.md +276 -0
  198. package/web/references/patternfly/DESIGN.md +259 -0
  199. package/web/references/payhere/DESIGN.md +438 -0
  200. package/web/references/pega/DESIGN.md +262 -0
  201. package/web/references/peoplefund/DESIGN.md +431 -0
  202. package/web/references/petfriends/DESIGN.md +428 -0
  203. package/web/references/pinkfong/DESIGN.md +199 -367
  204. package/web/references/pinterest/DESIGN.md +258 -308
  205. package/web/references/portone/DESIGN.md +446 -0
  206. package/web/references/poya/DESIGN.md +286 -0
  207. package/web/references/pozalabs/DESIGN.md +438 -0
  208. package/web/references/protopie/DESIGN.md +419 -0
  209. package/web/references/qraft/DESIGN.md +448 -0
  210. package/web/references/queenit/DESIGN.md +432 -0
  211. package/web/references/quotabook/DESIGN.md +449 -0
  212. package/web/references/rebellions/DESIGN.md +449 -0
  213. package/web/references/recruit/DESIGN.md +247 -0
  214. package/web/references/remember/DESIGN.md +202 -396
  215. package/web/references/resend/DESIGN.md +274 -348
  216. package/web/references/returnzero/DESIGN.md +460 -0
  217. package/web/references/sakura-internet/DESIGN.md +269 -0
  218. package/web/references/samsung/DESIGN.md +157 -359
  219. package/web/references/sandoll/DESIGN.md +445 -0
  220. package/web/references/sanity/DESIGN.md +241 -375
  221. package/web/references/saramin/DESIGN.md +465 -0
  222. package/web/references/scatterlab/DESIGN.md +412 -0
  223. package/web/references/selectstar/DESIGN.md +439 -0
  224. package/web/references/servicenow/DESIGN.md +289 -0
  225. package/web/references/shiftee/DESIGN.md +468 -0
  226. package/web/references/shinhanbank/DESIGN.md +161 -341
  227. package/web/references/shinhancard/DESIGN.md +208 -319
  228. package/web/references/sionic/DESIGN.md +454 -0
  229. package/web/references/sktelecom/DESIGN.md +310 -0
  230. package/web/references/socar/DESIGN.md +125 -32
  231. package/web/references/softbank/DESIGN.md +231 -0
  232. package/web/references/solapi/DESIGN.md +483 -0
  233. package/web/references/sony/DESIGN.md +234 -0
  234. package/web/references/soop/DESIGN.md +261 -0
  235. package/web/references/spacex/DESIGN.md +184 -323
  236. package/web/references/spotify/DESIGN.md +253 -394
  237. package/web/references/squeezebits/DESIGN.md +441 -0
  238. package/web/references/stayfolio/DESIGN.md +422 -0
  239. package/web/references/stripe/DESIGN.md +212 -491
  240. package/web/references/supabase/DESIGN.md +244 -316
  241. package/web/references/supertone/DESIGN.md +413 -0
  242. package/web/references/tabling/DESIGN.md +415 -0
  243. package/web/references/taishinbank/DESIGN.md +243 -0
  244. package/web/references/teamlab/DESIGN.md +240 -0
  245. package/web/references/teamsparta/DESIGN.md +472 -0
  246. package/web/references/tellingme/DESIGN.md +392 -0
  247. package/web/references/tesla/DESIGN.md +244 -427
  248. package/web/references/thsr/DESIGN.md +284 -0
  249. package/web/references/thumbtack/DESIGN.md +302 -0
  250. package/web/references/together.ai/DESIGN.md +257 -304
  251. package/web/references/toss/DESIGN.md +251 -593
  252. package/web/references/toss-securities/DESIGN.md +255 -178
  253. package/web/references/tossbank/DESIGN.md +195 -491
  254. package/web/references/toyota/DESIGN.md +238 -0
  255. package/web/references/tving/DESIGN.md +197 -245
  256. package/web/references/typed/DESIGN.md +413 -0
  257. package/web/references/uber/DESIGN.md +256 -333
  258. package/web/references/udn/DESIGN.md +250 -0
  259. package/web/references/upbit/DESIGN.md +145 -256
  260. package/web/references/upstage/DESIGN.md +211 -204
  261. package/web/references/uswds/DESIGN.md +287 -0
  262. package/web/references/vercel/DESIGN.md +236 -440
  263. package/web/references/vuno/DESIGN.md +413 -0
  264. package/web/references/wanted/DESIGN.md +215 -487
  265. package/web/references/weverse/DESIGN.md +437 -0
  266. package/web/references/wise/DESIGN.md +223 -231
  267. package/web/references/wisetracker/DESIGN.md +462 -0
  268. package/web/references/wooribank/DESIGN.md +245 -0
  269. package/web/references/yanolja/DESIGN.md +250 -419
  270. package/web/references/yeogiotte/DESIGN.md +235 -418
  271. package/web/references/zapier/DESIGN.md +256 -377
  272. package/web/references/zendesk/DESIGN.md +288 -0
  273. package/web/references/zigzag/DESIGN.md +200 -621
  274. package/dist/install-skills-7UUDOLG2.js +0 -734
  275. package/dist/install-skills-7UUDOLG2.js.map +0 -1
@@ -8,316 +8,295 @@ primary_color: "#ff7e36"
8
8
  logo:
9
9
  type: github
10
10
  slug: daangn
11
- verified: "2026-05-15"
11
+ verified: "2026-07-11"
12
12
  omd: "0.1"
13
13
  ds:
14
14
  name: SEED Design
15
- url: "https://seed-design.io"
15
+ url: "https://v2.seed-design.io"
16
16
  type: system
17
17
  description: Karrot (Daangn)'s open-source design system for marketplace apps.
18
+ verification_v2:
19
+ schema: 2
20
+ checked: "2026-07-11"
21
+ surfaces:
22
+ - { id: marketing-home, kind: marketing, url: "https://www.karrotmarket.com/", inspected: "2026-07-11" }
23
+ - { id: marketing-about, kind: marketing, url: "https://www.karrotmarket.com/about/", inspected: "2026-07-11" }
24
+ - { id: seed-system, kind: design-system, url: "https://v2.seed-design.io/", inspected: "2026-07-11" }
25
+ sources:
26
+ - { id: karrot-live, kind: product-surface, url: "https://www.karrotmarket.com/", captured: "2026-07-11" }
27
+ - { id: seed-source, kind: official-doc, url: "https://github.com/daangn/seed-design/blob/fb4459e90f84e049112395964319b163f980b821/packages/stylesheet/global.css", captured: "2026-07-11" }
28
+ - { id: seed-typography, kind: official-doc, url: "https://v2.seed-design.io/foundation/typography/", captured: "2026-07-11" }
29
+ - { id: seed-box-button, kind: official-doc, url: "https://v2.seed-design.io/component/box-button/usage/", captured: "2026-07-11" }
30
+ - { id: seed-text-field, kind: official-doc, url: "https://v2.seed-design.io/component/text-field/usage/", captured: "2026-07-11" }
31
+ - { id: seed-tabs, kind: official-doc, url: "https://v2.seed-design.io/component/tabs/usage/", captured: "2026-07-11" }
32
+ - { id: seed-snackbar, kind: official-doc, url: "https://v2.seed-design.io/component/snackbar/usage/", captured: "2026-07-11" }
33
+ claims:
34
+ "tokens.colors.primary": &seed_color { surface_id: seed-system, source_id: seed-source, method: official-source, captured: "2026-07-11" }
35
+ "tokens.colors.primary-hover": *seed_color
36
+ "tokens.colors.primary-pressed": *seed_color
37
+ "tokens.colors.canvas": *seed_color
38
+ "tokens.colors.background": *seed_color
39
+ "tokens.colors.surface": *seed_color
40
+ "tokens.colors.foreground": *seed_color
41
+ "tokens.colors.muted": *seed_color
42
+ "tokens.colors.on-primary": *seed_color
43
+ "tokens.colors.hairline": *seed_color
44
+ "tokens.colors.brand-tint": *seed_color
45
+ "tokens.colors.error": *seed_color
46
+ "tokens.colors.info": *seed_color
47
+ "tokens.colors.success": *seed_color
48
+ "tokens.colors.marketing": &karrot_live { surface_id: marketing-home, source_id: karrot-live, method: computed-style, captured: "2026-07-11" }
49
+ "tokens.typography.family.sans": *karrot_live
50
+ "tokens.typography.h1.size": &seed_type { surface_id: seed-system, source_id: seed-typography, method: official-doc, captured: "2026-07-11" }
51
+ "tokens.typography.h1.weight": *seed_type
52
+ "tokens.typography.h1.lineHeight": *seed_type
53
+ "tokens.typography.h2.size": *seed_type
54
+ "tokens.typography.h2.weight": *seed_type
55
+ "tokens.typography.h2.lineHeight": *seed_type
56
+ "tokens.typography.h3.size": *seed_type
57
+ "tokens.typography.h3.weight": *seed_type
58
+ "tokens.typography.h3.lineHeight": *seed_type
59
+ "tokens.typography.title.size": *seed_type
60
+ "tokens.typography.title.weight": *seed_type
61
+ "tokens.typography.title.lineHeight": *seed_type
62
+ "tokens.typography.body.size": *seed_type
63
+ "tokens.typography.body.weight": *seed_type
64
+ "tokens.typography.body.lineHeight": *seed_type
65
+ "tokens.typography.body-small.size": *seed_type
66
+ "tokens.typography.body-small.weight": *seed_type
67
+ "tokens.typography.body-small.lineHeight": *seed_type
68
+ "tokens.spacing.sm": *karrot_live
69
+ "tokens.spacing.md": *karrot_live
70
+ "tokens.spacing.lg": *karrot_live
71
+ "tokens.spacing.xl": *karrot_live
72
+ "tokens.spacing.section": *karrot_live
73
+ "tokens.rounded.sm": *karrot_live
74
+ "tokens.rounded.md": *karrot_live
75
+ "tokens.rounded.full": *karrot_live
76
+ "tokens.components.marketing-primary.type": *karrot_live
77
+ "tokens.components.marketing-primary.bg": *karrot_live
78
+ "tokens.components.marketing-primary.fg": *karrot_live
79
+ "tokens.components.marketing-primary.radius": *karrot_live
80
+ "tokens.components.marketing-primary.height": *karrot_live
81
+ "tokens.components.marketing-primary.padding": *karrot_live
82
+ "tokens.components.marketing-primary.font": *karrot_live
83
+ "tokens.components.marketing-primary.states": *karrot_live
84
+ "tokens.components.marketing-primary.use": *karrot_live
85
+ "tokens.components.box-button.type": &seed_box { surface_id: seed-system, source_id: seed-box-button, method: official-doc, captured: "2026-07-11" }
86
+ "tokens.components.box-button.states": *seed_box
87
+ "tokens.components.box-button.use": *seed_box
88
+ "tokens.components.text-field.type": &seed_field { surface_id: seed-system, source_id: seed-text-field, method: official-doc, captured: "2026-07-11" }
89
+ "tokens.components.text-field.states": *seed_field
90
+ "tokens.components.text-field.use": *seed_field
91
+ "tokens.components.tabs.type": &seed_tabs_claim { surface_id: seed-system, source_id: seed-tabs, method: official-doc, captured: "2026-07-11" }
92
+ "tokens.components.tabs.states": *seed_tabs_claim
93
+ "tokens.components.tabs.use": *seed_tabs_claim
94
+ "tokens.components.snackbar.type": &seed_snackbar_claim { surface_id: seed-system, source_id: seed-snackbar, method: official-doc, captured: "2026-07-11" }
95
+ "tokens.components.snackbar.states": *seed_snackbar_claim
96
+ "tokens.components.snackbar.use": *seed_snackbar_claim
97
+ conflicts: []
18
98
  tokens:
19
- source: prose-derived
20
- extracted: "2026-06-09"
99
+ source: reconciled
100
+ extracted: "2026-07-11"
21
101
  colors:
22
- primary: "#ff6600"
23
- primary-hover: "#e14d00"
24
- brand: "#ff6600"
102
+ primary: "#ff6f0f"
103
+ primary-hover: "#ff9e66"
104
+ primary-pressed: "#ff9e66"
105
+ marketing: "#ff6600"
25
106
  canvas: "#ffffff"
26
- foreground: "#1a1c20"
107
+ background: "#f2f3f6"
108
+ surface: "#f7f8fa"
109
+ foreground: "#212124"
27
110
  muted: "#868b94"
28
111
  on-primary: "#ffffff"
29
- surface: "#f7f8f9"
30
- surface-fill: "#f3f4f5"
31
- hairline: "#dcdee3"
32
- body: "#555d6d"
33
- placeholder: "#b0b3ba"
34
- brand-tint: "#fff2ec"
35
- error: "#fa342c"
36
- info: "#217cf9"
37
- success: "#079171"
38
- warning: "#9b7821"
39
- focus: "#5e98fe"
112
+ hairline: "#eaebee"
113
+ brand-tint: "#fff5f0"
114
+ error: "#fa2314"
115
+ info: "#009ceb"
116
+ success: "#1aa174"
40
117
  typography:
41
- family: { sans: "Pretendard Variable", mono: "SF Mono" }
42
- display-xl: { size: 26, weight: 700, lineHeight: 35, tracking: "0em", use: "Hero headlines, splash screens" }
43
- display-large: { size: 24, weight: 700, lineHeight: 32, tracking: "0em", use: "Section headers" }
44
- heading-large: { size: 20, weight: 700, lineHeight: 27, tracking: "0em", use: "Card headings, sub-sections" }
45
- heading: { size: 18, weight: 700, lineHeight: 24, tracking: "0em", use: "List section headers" }
46
- title: { size: 16, weight: 500, lineHeight: 22, tracking: "0em", use: "Navigation, standard titles" }
47
- body: { size: 14, weight: 400, lineHeight: 19, tracking: "0em", use: "Standard reading text, listings" }
48
- body-small: { size: 13, weight: 400, lineHeight: 18, tracking: "0em", use: "Secondary text, metadata" }
49
- caption: { size: 12, weight: 400, lineHeight: 16, tracking: "0em", use: "Timestamps, small labels" }
50
- caption-small: { size: 11, weight: 400, lineHeight: 15, tracking: "0em", use: "Fine print, badges" }
51
- spacing: { xs: 2, sm: 4, md: 8, base: 16, lg: 20, xl: 24, xxl: 32, section: 64 }
52
- rounded: { sm: 8, md: 12, lg: 16, full: 9999 }
53
- shadow:
54
- s1: "0px 1px 4px rgba(0,0,0,0.08)"
55
- s2: "0px 2px 10px rgba(0,0,0,0.10)"
56
- s3: "0px 4px 16px rgba(0,0,0,0.12)"
118
+ family: { sans: "System" }
119
+ h1: { size: 48, weight: 700, lineHeight: "135%" }
120
+ h2: { size: 42, weight: 700, lineHeight: "135%" }
121
+ h3: { size: 34, weight: 700, lineHeight: "135%" }
122
+ title: { size: 24, weight: 700, lineHeight: "135%" }
123
+ body: { size: 16, weight: 400, lineHeight: "150%" }
124
+ body-small: { size: 14, weight: 400, lineHeight: "150%" }
125
+ spacing: { sm: 4, md: 8, lg: 12, xl: 16, section: 64 }
126
+ rounded: { sm: 6, md: 8, full: 9999 }
57
127
  components_harvested: true
58
128
  components:
59
- button-primary: { type: button, bg: "#ff6600", fg: "#ffffff", radius: "12px", height: "52px", font: "16px / 700", states: "pressed #e14d00", disabled: "bg #f3f4f5 fg #d1d3d8", use: "Primary CTA 판매하기 / 채팅하기" }
60
- button-neutral: { type: button, bg: "#f3f4f5", fg: "#1a1c20", radius: "8px", states: "pressed #eeeff1", use: "Tertiary actions, filters" }
61
- button-outline: { type: button, bg: "transparent", fg: "#1a1c20", border: "1px solid #dcdee3", radius: "8px", states: "pressed #f7f8f9", use: "Cancel, dismiss, low-emphasis" }
62
- button-critical: { type: button, bg: "#fa342c", fg: "#ffffff", radius: "8px", use: "Destructive 삭제 / 신고" }
63
- card: { type: card, bg: "#ffffff", border: "1px solid rgba(0,0,0,0.08)", radius: "8px", shadow: "0px 2px 10px rgba(0,0,0,0.10)", use: "Standard listing card" }
64
- chip: { type: badge, bg: "#f3f4f5", fg: "#1a1c20", radius: "9999px", height: "32px", padding: "0 12px", font: "13px / 500", active: "bg #1a1c20 fg #ffffff", use: "Filter chips, tags" }
65
- input: { type: input, bg: "#f7f8f9", fg: "#1a1c20", border: "1px solid #dcdee3", radius: "8px", focus: "2px solid #5e98fe", states: "error border #fa342c", use: "Text input, placeholder #b0b3ba" }
66
- tab-bottom: { type: tab, bg: "#ffffff", fg: "#868b94", border: "subtle top border", active: "Karrot Orange icon + label", use: "Bottom tab bar nav" }
129
+ marketing-primary: { type: button, bg: "#ff6600", fg: "#ffffff", radius: "9999px", height: "36px", padding: "4px 12px", font: "14px / 500", states: "default on two public surfaces; hover not captured", use: "Karrot marketing-site CTA" }
130
+ box-button: { type: button, states: "primary, primary-low, secondary, danger, disabled, hover, keyboard", use: "SEED action with five documented sizes" }
131
+ text-field: { type: input, states: "outlined, underlined, focused, disabled, readonly, required, invalid", use: "SEED single-line form field" }
132
+ tabs: { type: tab, states: "selected, disabled, focus", use: "SEED category switching with indicator" }
133
+ snackbar: { type: toast, states: "default, success, warning, action focus", use: "SEED transient action feedback" }
67
134
  ---
68
135
 
69
136
  # Design System Inspiration of Karrot (당근)
70
137
 
71
138
  ## 1. Visual Theme & Atmosphere
72
139
 
73
- Karrot's interface is the digital equivalent of a friendly neighborhood bulletin board -- warm, approachable, and built for trust between strangers. The page opens on a clean white canvas (`#ffffff`) with warm near-black headings (`#1a1c20`) and the unmistakable Karrot Orange (`#ff6600`) that serves as the singular brand accent. This isn't the corporate orange of enterprise dashboards; it's the vivid, saturated orange of a fresh carrot -- energetic, trustworthy, and unmistakably local.
140
+ Karrot is a hyperlocal platform built around the idea that technology should make neighborhood relationships feel more human, not more anonymous. Its design keeps community content dominant through warm orange accents, calm neutrals, direct language, and light interface chrome. Two related but non-identical public surfaces express that identity: the current SEED v2 product system defines semantic Primary as carrot-500 (`#ff6f0f`), while the public Karrot marketing site renders its CTA orange as `#ff6600`. Keeping those values separate preserves both product-system truth and the recognizable warmth of the brand.
74
141
 
75
- The design system, called **Seed Design**, is one of the most mature open-source systems in Korean tech. It operates on a strict 4px grid with a three-tier token architecture (palette semantic → component) that ensures every measurement is intentional. Typography relies entirely on the platform's native font stack rather than a custom typeface -- Pretendard on web, system fonts on native -- putting community content first. The overall aesthetic is warm neutral: soft grays, generous whitespace, and that singular orange accent. Where Stripe uses shadows as brand expression, Karrot uses shadows as pure function -- minimal, neutral, and warm.
142
+ SEED is the canonical source for product-system colors, type roles, and component behavior. The public marketing pages are evidence for the web font stack and marketing CTA geometry only. Both use warm neutrals, direct hierarchy, and restrained ornament so neighborhood content remains dominant.
76
143
 
77
144
  **Key Characteristics:**
78
- - Karrot Orange (`#ff6600`) as the singular brand accent -- warm, energetic, unmistakable
79
- - System font stack (Pretendard / Apple SD Gothic Neo) -- content takes center stage, no custom typeface
80
- - 4px base grid with precise spacing from 2px (x0.5) to 64px (x16)
81
- - Three-tier token system: palette semantic component for systematic theming
82
- - Full dark mode via semantic token remapping (not simple inversion)
83
- - 11-step gray scale (gray-00 through gray-1000) for nuanced depth
84
- - Three-level shadow system with separate light/dark mode intensities
85
- - Mobile-first at 375px baseline with `clamp()`-based accessibility font scaling
145
+ - SEED semantic Primary: `#ff6f0f`; current marketing CTA: `#ff6600`
146
+ - System-first web typography; `Pretendard Variable` is declared as a fallback but was not the computed first family in the inspected pages
147
+ - Official SEED semantic roles backed by the open-source `global.css`
148
+ - Components documented as behavior/state contracts, with marketing geometry kept surface-specific
86
149
 
87
150
  ## 2. Color Palette & Roles
88
151
 
89
- ### Primary
90
- - **Karrot Orange** (`#ff6600`): `$color.palette.carrot-600`. Primary CTA, active states, brand solid backgrounds. The iconic orange that defines every Karrot touchpoint.
91
- - **Deep Orange** (`#e14d00`): `$color.palette.carrot-700`. Pressed/hover state for brand elements, dark mode brand solid.
92
- - **Near Black** (`#1a1c20`): `$color.palette.gray-1000`, `fg-neutral`. Primary heading and text color. Warm near-black that avoids harshness.
93
- - **Pure White** (`#ffffff`): `$color.palette.gray-00`, `bg-layer-default`. Page background, card surfaces.
94
-
95
- ### Brand Tints
96
- - **Orange Tint** (`#fff2ec`): `$color.palette.carrot-100`. Brand weak background, subtle orange-tinted surfaces.
97
- - **Orange Light** (`#ffb999`): `$color.palette.carrot-400`. Medium brand tint, progress indicators.
98
- - **Orange Deep** (`#b93901`): `$color.palette.carrot-800`. Deep orange for emphasis in dark contexts.
99
-
100
- ### Semantic
101
- - **Critical Red** (`#fa342c`): `fg-critical`. Error foreground, destructive action labels.
102
- - **Informative Blue** (`#217cf9`): `fg-informative`. Links, informational highlights.
103
- - **Positive Green** (`#079171`): `fg-positive`. Success states, confirmation indicators.
104
- - **Warning Yellow** (`#9b7821`): `fg-warning`. Caution labels, attention-needed states.
105
- - **Focus Blue** (`#5e98fe`): `stroke-focus-ring`. Keyboard focus ring on interactive elements.
106
-
107
- ### Neutral Scale
108
- - **Gray 100** (`#f7f8f9`): `bg-layer-fill`. Subtle background fill.
109
- - **Gray 200** (`#f3f4f5`): `bg-layer-basement`, `bg-disabled`. Secondary surfaces.
110
- - **Gray 400** (`#dcdee3`): `stroke-neutral-weak`. Standard borders, dividers.
111
- - **Gray 600** (`#b0b3ba`): `fg-placeholder`. Placeholder text, muted icons.
112
- - **Gray 700** (`#868b94`): `fg-neutral-subtle`. Captions, tertiary text.
113
- - **Gray 800** (`#555d6d`): `fg-neutral-muted`. Secondary body text.
114
-
115
- ### Surface & Borders
116
- - **Border Subtle** (`rgba(0,0,0,0.08)`): `stroke-neutral-subtle`. Soft card borders, barely-there separation.
117
- - **Border Muted** (`rgba(0,0,0,0.12)`): `stroke-neutral-muted`. Moderate borders for definition.
118
- - **Overlay** (`rgba(0,0,0,0.7)`): `bg-overlay`. Modal/sheet backdrop.
119
- - **Overlay Muted** (`rgba(0,0,0,0.5)`): `bg-overlay-muted`. Bottom sheet scrims.
152
+ ### SEED v2 product semantics
153
+ - **Primary** (`#ff6f0f`): `--seed-semantic-color-primary`, mapped to carrot-500.
154
+ - **Primary Hover / Pressed** (`#ff9e66`): current light-theme state mapping.
155
+ - **Canvas** (`#ffffff`): gray-00 and `paper-default`.
156
+ - **Background** (`#f2f3f6`): gray-100 and `paper-background`.
157
+ - **Surface** (`#f7f8fa`): gray-50 and `paper-contents`.
158
+ - **Foreground** (`#212124`): gray-900 and `ink-text`.
159
+ - **Muted** (`#868b94`): gray-600 and `ink-text-low`.
160
+ - **Hairline** (`#eaebee`): gray-200 and `divider-2`.
161
+ - **Brand Tint** (`#fff5f0`): carrot-50 and `paper-accent`.
162
+ - **Danger** (`#fa2314`): red-600.
163
+ - **Accent / Info** (`#009ceb`): blue-500.
164
+ - **Success** (`#1aa174`): green-500.
165
+
166
+ ### Marketing web exception
167
+ - **Marketing CTA** (`#ff6600`): computed background on both inspected Karrot public pages. Do not label it carrot-500 or substitute it for SEED Primary.
120
168
 
121
169
  ## 3. Typography Rules
122
170
 
123
171
  ### Font Family
124
- - **Primary**: `"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", Roboto, "Noto Sans KR", sans-serif`
125
- - **Monospace**: `"SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace`
126
- - **Design Principle**: No custom brand typeface. Karrot intentionally uses the user's system font so community content feels native and personal, not branded.
172
+ - **Observed web UI**: `System`. The computed first family was `-apple-system` across 420 visible elements.
173
+ - **Declared fallback**: `Pretendard Variable` appeared in the stack and FontFace declarations but had no visible first-family usage in this capture.
174
+ - **Monospace**: no canonical UI monospace claim; do not invent one.
127
175
 
128
176
  ### Hierarchy
129
177
 
130
178
  | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
131
179
  |------|------|------|--------|-------------|----------------|-------|
132
- | Display XL | System | 26px (t10) | 700 | 35px | 0em | Hero headlines, splash screens |
133
- | Display Large | System | 24px (t9) | 700 | 32px | 0em | Section headers |
134
- | Heading Large | System | 20px (t7) | 700 | 27px | 0em | Card headings, sub-sections |
135
- | Heading | System | 18px (t6) | 700 | 24px | 0em | List section headers |
136
- | Title | System | 16px (t5) | 500 | 22px | 0em | Navigation, standard titles |
137
- | Body | System | 14px (t4) | 400 | 19px | 0em | Standard reading text, listings |
138
- | Body Small | System | 13px (t3) | 400 | 18px | 0em | Secondary text, metadata |
139
- | Caption | System | 12px (t2) | 400 | 16px | 0em | Timestamps, small labels |
140
- | Caption Small | System | 11px (t1) | 400 | 15px | 0em | Fine print, badges |
180
+ | H1 | System | 48px | 700 | 135% | 0 | SEED semantic h1 |
181
+ | H2 | System | 42px | 700 | 135% | 0 | SEED semantic h2 |
182
+ | H3 | System | 34px | 700 | 135% | 0 | SEED semantic h3 |
183
+ | Title 1 Bold | System | 24px | 700 | 135% | 0 | Section or chapter title |
184
+ | Body L1 | System | 16px | 400 | 150% | -0.02em on web | Long-form body |
185
+ | Body L2 | System | 14px | 400 | 150% | -0.02em on web | Compact body |
141
186
 
142
187
  ### Principles
143
- - **Three weights only**: Regular (400), Medium (500), Bold (700). No light or extra-bold -- the system is intentionally constrained.
144
- - **Platform-aware tracking**: iOS uses 0em throughout; Android uses tighter tracking (-0.02em to -0.04em) for system font metrics.
145
- - **Compact type scale**: 11px to 26px in 10 steps with no display sizes above 26px -- mobile-first, content-density over typographic drama.
146
- - **Accessibility scaling**: All sizes use `clamp()` with `--seed-font-size-multiplier`, supporting 80% to 150% of base size.
188
+ - Official SEED exposes regular and bold semantic weights; do not infer a broad custom weight scale.
189
+ - Web tracking differs by role: headings remain neutral while body roles use narrow tracking.
190
+ - The previous 26px maximum was an old snapshot and is no longer canonical.
191
+
192
+ | Evidence class | Karrot status |
193
+ |---|---|
194
+ | **Official product-use** | SEED v2 defines product typography roles around platform/system families rather than a branded display face |
195
+ | **Live surface-use** | `-apple-system` was the visible first family across the inspected Karrot marketing surfaces |
196
+ | **Official distributed asset** | SEED design tokens and components are published openly; no separate public Karrot typeface asset is asserted |
197
+ | **Declared-only** | Pretendard Variable appeared in public stacks and FontFace declarations without visible first-family use in this capture |
198
+ | **Unresolved** | Exact native-app runtime family resolution outside the published SEED semantic roles |
147
199
 
148
200
  ## 4. Component Stylings
149
201
 
150
- ### Buttons
202
+ ### Marketing Web
151
203
 
152
- **Brand Solid (Primary CTA)**
153
- - Background: `#ff6600` (carrot-600)
204
+ **Primary CTA**
205
+ - Background: `#ff6600`
154
206
  - Text: `#ffffff`
155
- - Radius: 12px (large), 8px (medium/small), 9999px (xsmall pill)
156
- - Min-height: 52px (large), 40px (medium), 36px (small), 32px (xsmall)
157
- - Font: 16px weight 700 (large), 14px weight 700 (medium/small)
158
- - Pressed: `#e14d00` (carrot-700)
159
- - Disabled: `#f3f4f5` background, `#d1d3d8` text
160
- - Use: Primary actions ("판매하기", "채팅하기")
161
-
162
- **Neutral Weak**
163
- - Background: `#f3f4f5` (gray-200)
164
- - Text: `#1a1c20` (gray-1000)
165
- - Pressed: `#eeeff1` (gray-300)
166
- - Use: Tertiary actions, filters
167
-
168
- **Neutral Outline**
169
- - Background: transparent
170
- - Text: `#1a1c20` (gray-1000)
171
- - Border: 1px solid `#dcdee3` (gray-400)
172
- - Pressed: `#f7f8f9` background
173
- - Use: Cancel, dismiss, low-emphasis
174
-
175
- **Critical Solid**
176
- - Background: `#fa342c` (red-700)
177
- - Text: `#ffffff`
178
- - Use: Destructive actions ("삭제", "신고")
179
-
180
- ### Cards & Containers
181
- - Background: `#ffffff` (bg-layer-default)
182
- - Border: 1px solid `rgba(0,0,0,0.08)` (stroke-neutral-subtle) or no border with shadow
183
- - Radius: 8px (standard), 12px (featured), 16px (large cards)
184
- - Shadow: `0px 2px 10px rgba(0,0,0,0.1)` (s2) for standard cards
185
-
186
- ### Chips & Tags
187
- - Background: `#f3f4f5` (gray-200), Selected: `#1a1c20` (gray-1000) with white text
188
- - Radius: 9999px (pill)
189
- - Height: 32px, Padding: 0 12px, Font: 13px weight 500
190
-
191
- ### Inputs & Forms
192
- - Background: `#f7f8f9` (gray-100)
193
- - Border: 1px solid `#dcdee3` (gray-400)
194
- - Radius: 8px
195
- - Focus: 2px solid `#5e98fe` (blue-600) focus ring
196
- - Text: `#1a1c20`, Placeholder: `#b0b3ba` (gray-600)
197
- - Error border: `#fa342c` (red-700)
198
-
199
- ### Navigation
200
- - Bottom tab bar: white background, subtle top border
201
- - Active tab: Karrot Orange icon + label, Inactive: `#868b94` (gray-700)
202
- - App bar: white, centered title (16px weight 700), optional back arrow
207
+ - Radius: 9999px
208
+ - Padding: 4px 12px
209
+ - Height: 36px
210
+ - Font: 14px / 500 / System
211
+ - States: default observed on two public surfaces; hover not captured
212
+ - Use: Header-level marketing action
213
+
214
+ ### SEED Product Components
215
+
216
+ **Box Button**
217
+ - States: primary, primary-low, secondary, danger, disabled, hover, keyboard
218
+ - Use: Action component with xsmall through xlarge sizes; medium is the documented default
219
+
220
+ **Text Field**
221
+ - States: outlined, underlined, focused, disabled, readonly, required, invalid
222
+ - Use: Single-line form input with label, description, error message, and optional prefix/suffix
223
+
224
+ **Tabs**
225
+ - States: selected, disabled, focus
226
+ - Use: Hug or fill category navigation with a current-selection indicator
227
+
228
+ **Snackbar**
229
+ - States: default, success, warning, action focus
230
+ - Use: Brief action feedback with at most one related action
203
231
 
204
232
  ## 5. Layout Principles
205
233
 
206
234
  ### Spacing System
207
235
  - Base unit: 4px
208
- - Scale: 2px (x0.5), 4px (x1), 6px (x1.5), 8px (x2), 12px (x3), 16px (x4), 20px (x5), 24px (x6), 32px (x8), 40px (x10), 56px (x14), 64px (x16)
209
- - Global gutter: 16px (x4) on each side
210
- - Component default vertical: 12px (x3)
236
+ - Observed public-web clusters: 4px, 8px, 12px, 16px, and 64px
237
+ - Treat larger marketing gaps as surface composition, not universal product tokens
211
238
 
212
239
  ### Grid & Container
213
- - Mobile: full-width with 16px horizontal gutter
214
- - Content max-width: 640px for web
215
- - Listing cards: full-width with 16px horizontal padding
216
- - Card grid: 2-column on tablet, single column on mobile
240
+ - Marketing pages use responsive full-width sections and a centered content column.
241
+ - SEED components define their own layout constraints; for example, Box Button keeps a 16px mobile edge inset.
217
242
 
218
243
  ### Whitespace Philosophy
219
- - **Content-dense, chrome-light**: Users scan many listings quickly. Spacing breathes but keeps 3-4 items per viewport.
220
- - **Consistent gutter**: The 16px global gutter is sacred -- every screen edge, every card inset returns to this rhythm.
221
- - **Grouped by proximity**: Related items use 4-8px gaps; distinct sections use 16-24px gaps.
244
+ - Keep content dominant and chrome quiet.
245
+ - Use the observed 4/8/12/16 rhythm locally; do not extrapolate undocumented marketplace grid rules from the marketing site.
222
246
 
223
247
  ### Border Radius Scale
224
- - Micro (2px): Progress bars, inline indicators
225
- - Standard (8px): Buttons, inputs, standard cards
226
- - Comfortable (12px): Large buttons, featured cards
227
- - Large (16px): Image frames, prominent cards
228
- - Sheet (20px): Bottom sheet top corners
229
- - Dialog (24px): Modal dialogs
230
- - Pill (9999px): Chips, avatars, xsmall buttons
248
+ - Small: 6px, observed on a public CTA.
249
+ - Medium: 8px, observed on a public CTA.
250
+ - Full: 9999px, dominant public-web button geometry.
251
+ - Component-specific radii from SEED must be taken from that component's current style page, not inferred from this marketing scale.
231
252
 
232
253
  ## 6. Depth & Elevation
233
254
 
234
- | Level | Treatment | Use |
235
- |-------|-----------|-----|
236
- | Flat (Level 0) | No shadow | Page background, inline elements |
237
- | Subtle (s1) | `0px 1px 4px rgba(0,0,0,0.08)` | Slight lift, list item hover |
238
- | Standard (s2) | `0px 2px 10px rgba(0,0,0,0.10)` | Cards, dropdowns, popovers |
239
- | Prominent (s3) | `0px 4px 16px rgba(0,0,0,0.12)` | Floating action button, bottom sheets, modals |
240
-
241
- **Shadow Philosophy**: Only three levels -- enough for clear layering without visual clutter. Shadows use pure black with varying opacity (no brand-tinted shadows), keeping the system neutral so the orange accent remains the sole source of warmth. In dark mode, opacities increase dramatically (s1: 0.50, s2: 0.68, s3: 0.80) to remain perceptible on dark surfaces.
255
+ The inspected public controls were flat and reported `box-shadow: none`. No universal shadow tokens are published in the canonical frontmatter until current component-style sources are captured claim by claim.
242
256
 
243
257
  ## 7. Do's and Don'ts
244
258
 
245
259
  ### Do
246
- - Use Karrot Orange (`#ff6600`) as the singular brand accent -- it should feel special, not overwhelming
247
- - Stick to the 4px spacing grid -- every measurement should be a multiple of 4px
248
- - Use semantic tokens (`fg-neutral`, `bg-layer-default`) over raw palette values in component code
249
- - Keep border-radius between 8px-12px for standard elements, pills (9999px) only for chips/avatars
250
- - Use the system font stack -- Pretendard on web, system fonts on native
251
- - Apply dark mode via semantic token remapping, not opacity tricks
252
- - Maintain the 16px global gutter on all screen edges
260
+ - Use SEED Primary `#ff6f0f` for product-system work.
261
+ - Use the system font result unless a target product surface proves another first family.
262
+ - Follow each SEED component's documented states and accessibility behavior.
263
+ - Keep marketing `#ff6600` explicitly scoped to the observed public website.
253
264
 
254
265
  ### Don't
255
- - Don't overuse orange -- it's for primary CTAs and brand moments only, not backgrounds or borders
256
- - Don't use shadows heavier than s3 -- the system intentionally avoids dramatic elevation
257
- - Don't introduce additional brand colors -- Karrot is a one-accent-color system
258
- - Don't exceed 26px for text sizes -- this is a mobile-first system with a compact type scale
259
- - Don't use pure black (`#000000`) for text -- use gray-1000 (`#1a1c20`) for warmth
260
- - Don't mix palette tokens and semantic tokens in the same component
261
- - Don't skip the `clamp()` wrapper on font sizes -- accessibility scaling is non-negotiable
266
+ - Don't relabel marketing `#ff6600` as SEED carrot-500.
267
+ - Don't treat a declared Pretendard face as proof of visible use.
268
+ - Don't reuse the retired 26px maximum; current SEED heading roles reach 48px.
269
+ - Don't invent marketplace cards, sheets, or native-app geometry from a marketing snapshot.
262
270
 
263
271
  ## 8. Responsive Behavior
264
272
 
265
- ### Breakpoints
266
- | Name | Width | Key Changes |
267
- |------|-------|-------------|
268
- | Mobile | <480px | Full-width cards, single column, 16px gutter |
269
- | Tablet | 480-768px | 2-column listing grid, expanded cards |
270
- | Desktop (Web) | >768px | Max-width 640px content, centered layout |
271
-
272
- ### Touch Targets
273
- - Buttons: 52px (large), 40px (medium), 36px (small), 32px (xsmall)
274
- - Tab bar items: 48px height with centered icon + label
275
- - List items: minimum 56px row height
276
- - Chips: 32px height minimum
277
-
278
- ### Collapsing Strategy
279
- - Listing grid: 2-column → single column below 480px
280
- - Bottom tab bar persists across all sizes
281
- - Bottom CTA: sticky full-width button + safe area padding
282
- - Image carousels: horizontal scroll with page indicators
283
-
284
- ### Image Behavior
285
- - Listing thumbnails: 1:1 aspect ratio, 8px radius
286
- - Profile avatars: circular (9999px), 36-48px diameter
287
- - Full-width hero images: edge-to-edge, no radius
273
+ ### Observed and documented behavior
274
+ - Public marketing controls render as compact 36px pills in the header and larger 40–48px CTAs deeper in the page.
275
+ - SEED Box Button documents five sizes and requires a 16px mobile edge inset.
276
+ - SEED Tabs supports `hug` and `fill`; fill is limited to five stable top-level items, while hug is recommended for six or more or variable categories.
277
+ - Text Field labels and descriptions may wrap; the input value itself remains one line and clips horizontally.
288
278
 
289
279
  ## 9. Agent Prompt Guide
290
280
 
291
281
  ### Quick Color Reference
292
- - Primary CTA: Karrot Orange (`#ff6600`)
293
- - CTA Pressed: Deep Orange (`#e14d00`)
294
- - Background: Pure White (`#ffffff`)
295
- - Heading text: Near Black (`#1a1c20`)
296
- - Body text: Dark Gray (`#555d6d`)
297
- - Caption text: Medium Gray (`#868b94`)
298
- - Placeholder: Light Gray (`#b0b3ba`)
299
- - Border: Soft Gray (`#dcdee3`)
300
- - Disabled bg: Light Fill (`#f3f4f5`)
301
- - Error: Red (`#fa342c`)
302
- - Success: Green (`#079171`)
303
- - Info: Blue (`#217cf9`)
304
- - Focus ring: Blue (`#5e98fe`)
282
+ - Product Primary: `#ff6f0f`
283
+ - Product Hover / Pressed: `#ff9e66`
284
+ - Marketing CTA only: `#ff6600`
285
+ - Canvas: `#ffffff`; Background: `#f2f3f6`; Surface: `#f7f8fa`
286
+ - Foreground: `#212124`; Muted: `#868b94`; Hairline: `#eaebee`
287
+ - Danger: `#fa2314`; Accent: `#009ceb`; Success: `#1aa174`
305
288
 
306
289
  ### Example Component Prompts
307
- - "Create a listing card: white background, 1px solid rgba(0,0,0,0.08) border, 8px radius. Horizontal layout with 1:1 thumbnail (8px radius) left. Title 16px weight 400, #1a1c20. Price 16px weight 700, #1a1c20. Location + time 13px weight 400, #868b94."
308
- - "Build a primary CTA button: #ff6600 background, white text, 16px weight 700, min-height 52px, 12px radius, full-width. Pressed: #e14d00. Disabled: #f3f4f5 bg, #d1d3d8 text."
309
- - "Design a filter chip bar: horizontal scroll, 8px gap. Each chip: #f3f4f5 bg, #1a1c20 text, 13px weight 500, 32px height, 9999px radius, 12px h-padding. Selected: #1a1c20 bg, #ffffff text."
310
- - "Create a bottom sheet: white bg, 20px top-left/right radius, shadow 0px 4px 16px rgba(0,0,0,0.12). Handle: 36px wide, 4px height, #dcdee3, centered. Content: 16px h-padding."
311
- - "Design a navigation bar: white bg, sticky top, 1px bottom border rgba(0,0,0,0.08). Centered title 16px weight 700, #1a1c20. Left: back arrow icon #1a1c20. Right: optional action icon. Height 56px."
290
+ - "Build a SEED primary action using semantic Primary `#ff6f0f`; use the Box Button's documented size and state contract rather than inventing geometry."
291
+ - "Build a Karrot marketing header CTA with observed `#ff6600`, white text, 14px/500 System type, 36px height, and full-pill radius."
292
+ - "Create a SEED text field with outlined and underlined variants, explicit label, error message, focused, readonly, required, invalid, and disabled states."
312
293
 
313
294
  ### Iteration Guide
314
- 1. Primary color is `#ff6600` only -- no secondary brand hue exists
315
- 2. All spacing snaps to 4px grid: 4, 8, 12, 16, 20, 24, 32, 40, 48, 56, 64
316
- 3. Border-radius defaults: 8px buttons/inputs, 12px cards, 9999px chips/avatars
317
- 4. Gray-1000 (`#1a1c20`) for headings, gray-800 (`#555d6d`) for body, gray-700 (`#868b94`) for captions
318
- 5. Shadows are minimal: s1 for hover, s2 for cards, s3 for floating elements only
319
- 6. Mobile-first: design at 375px width, 16px gutter, then scale up
320
- 7. System font stack -- never embed a custom font for Karrot
295
+ 1. Choose the target surface first: SEED product system or Karrot marketing web.
296
+ 2. Keep `#ff6f0f` and `#ff6600` distinct.
297
+ 3. Start with System typography; Pretendard remains a fallback until target-surface use is proved.
298
+ 4. Use only the 4/8/12/16/64 spacing observations as canonical shared values.
299
+ 5. Source component behavior from the current SEED page for that component.
321
300
 
322
301
  ---
323
302
 
@@ -369,15 +348,12 @@ What Karrot refuses: the anonymity of nationwide marketplaces (eBay, Coupang), t
369
348
 
370
349
  ## 13. Personas
371
350
 
372
- *Personas are fictional archetypes informed by publicly described Karrot user segments, not individual people.*
373
-
374
- **지우 (Jiwoo), 31, Seoul.** New mother in 망원동. Uses Karrot 3–4 times a week — mostly to sell outgrown baby gear and pick up a stroller from someone two blocks away. Expects the app to open on the local listings feed in <1s and remember her neighborhood without re-asking. Will walk 10 minutes for a good deal; won't drive 20.
351
+ These are official product and stakeholder contexts, not invented demographic personas.
375
352
 
376
- **민호 (Minho), 26, Busan.** Graduate student. Treats Karrot as a free Craigslist replacement for textbooks, a desk lamp, and the occasional IKEA handoff. Reads every listing's neighborhood tag before the title — if it's outside 동구, he scrolls past. Prefers chat over calls; never gives out his phone number.
377
-
378
- **Sarah, 34, Toronto.** Just moved to Leslieville from Manhattan. Installed Karrot after a neighbor mentioned it because Facebook Marketplace *"felt like strangers on the internet, and this feels like people on my street."* Expects English-first UI, imperial units, and the ability to set the pickup spot to a coffee shop without drama.
379
-
380
- **이선생님 (Mr. Lee), 58, Daegu.** Retired, primary Karrot user is his spouse who shares the account. Uses it for *동네생활* community posts ("who has a working lawnmower I can borrow") more than buying and selling. Trust in face-to-face transactions is his whole reason for tolerating an app at all.
353
+ - **A neighbor buying or selling nearby:** needs location, distance, conversation, and handoff expectations to stay visible without marketplace-style complexity.
354
+ - **A local resident sharing information or help:** needs plain community language and enough neighborhood context to judge relevance and trust.
355
+ - **A local business connecting with nearby customers:** needs technology translated into familiar, human communication rather than enterprise marketing language.
356
+ - **A person entering a new neighborhood:** needs recognizable local cues and low-pressure participation before the product asks for deeper commitment.
381
357
 
382
358
  ## 14. States
383
359
 
@@ -485,10 +461,10 @@ Interpretive claims (editorial, not documented Karrot statements):
485
461
 
486
462
  ---
487
463
 
488
- **Verified:** 2026-05-08 (omd:migrate run 30 Apple-tier)
489
- **Tier 1 sources:** daangn.com/kr (consumer hyperlocal Karrot Orange `#ff6600` 4px / 32px / 14px·600 Primary + neighborhood-pill `#f3f4f5` 9999px / 40px / 16px·400 + skip-nav split-radius `0 0 4px 4px` `#2a3038`); about.daangn.com (corporate Deep Charcoal `#1a1c20` 999px / 50px / 16px·400 brand-led pill).
490
- **Tier 2 sources:** styles.refero.design / getdesign.md no record.
464
+ **Verified:** 2026-07-11 (CAP0 evidence v1 + SEED v2 source reconciliation)
465
+ **Tier 1 sources:** https://www.karrotmarket.com/ (marketing live DOM); https://www.karrotmarket.com/about/ (second public surface); https://v2.seed-design.io/foundation/color/palette/ and https://v2.seed-design.io/foundation/typography/ (official SEED); https://github.com/daangn/seed-design/blob/fb4459e90f84e049112395964319b163f980b821/packages/stylesheet/global.css (official token source).
466
+ **Tier 2 sources:** https://getdesign.md/karrot and https://styles.refero.design/?q=Karrot were attempted; neither yielded an importable Karrot claim in this run.
491
467
  **Tier 2 (Philosophy/founders):** Crunchbase (Karrot + Kim Jae-hyun + Kim Yong-hyun profiles), KED Global ($180M unicorn 2021), Korea Herald (Canada 2M), ZoomInfo (HQ Gangnam), KoreaTechDesk.
492
468
  **Style ref:** `toss` (KR neighbor tone, retained).
493
- **Conflicts unresolved:** none. **Earlier mistake reverted:** prior footer captured only consumer chrome; corporate about.daangn.com is a separate Deep Charcoal `#1a1c20` 999px pill system that should be documented as a second canonical track.
494
-
469
+ **Conflicts unresolved:** none
470
+ **Resolved drift:** current SEED product Primary is `#ff6f0f`; current marketing-web CTA `#ff6600` is retained as a separate surface token. The prior 26px maximum and exact Pretendard/SF Mono claims were removed.