oh-my-design-cli 1.8.7 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/.claude/hooks/lib/preferences-parser.cjs +1 -0
  2. package/.claude/hooks/lib/preferences-writer.cjs +1 -0
  3. package/.claude/hooks/post-edit-watch.cjs +1 -0
  4. package/.claude/hooks/session-end-foldin.cjs +1 -0
  5. package/.claude/hooks/session-state-loader.cjs +1 -0
  6. package/.claude/hooks/skill-activation.cjs +1 -0
  7. package/.claude/settings.json +10 -1
  8. package/.github/assets/logo-bg.png +0 -0
  9. package/AGENTS.md +20 -1
  10. package/CHANGELOG.md +482 -0
  11. package/MIGRATION.md +103 -0
  12. package/README.ja.md +56 -19
  13. package/README.ko.md +47 -30
  14. package/README.md +48 -30
  15. package/README.zh-TW.md +59 -22
  16. package/agents/AGENT.md +8 -7
  17. package/agents/omd-codex-image.md +1 -1
  18. package/agents/omd-critic.md +6 -7
  19. package/agents/omd-designer-review.md +1 -1
  20. package/agents/omd-final-qa.md +1 -1
  21. package/agents/omd-humanizer.md +38 -0
  22. package/agents/omd-kr-writer.md +3 -4
  23. package/agents/omd-locale-adapter.md +12 -16
  24. package/agents/omd-master.md +24 -19
  25. package/agents/omd-microcopy.md +1 -1
  26. package/agents/omd-orchestrator.md +7 -8
  27. package/agents/omd-slop-auditor.md +31 -0
  28. package/agents/omd-ux-researcher.md +1 -1
  29. package/data/reference-fingerprints.json +1995 -38
  30. package/dist/bin/oh-my-design.js +16 -8
  31. package/dist/bin/oh-my-design.js.map +1 -1
  32. package/dist/chunk-UJIHCEYF.js +99 -0
  33. package/dist/chunk-UJIHCEYF.js.map +1 -0
  34. package/dist/doctor-LDWSFM3I.js +763 -0
  35. package/dist/doctor-LDWSFM3I.js.map +1 -0
  36. package/dist/install-skills-ZZFNJ2II.js +1120 -0
  37. package/dist/install-skills-ZZFNJ2II.js.map +1 -0
  38. package/docs/CLI_QUICKSTART.md +157 -0
  39. package/package.json +25 -4
  40. package/scripts/postinstall.cjs +5 -4
  41. package/skills/claude-design/SKILL.md +38 -14
  42. package/skills/claude-design/references/claude-design-flow.md +11 -11
  43. package/skills/claude-design/references/codebase-analysis.md +5 -4
  44. package/skills/omd-final-qa/SKILL.md +1 -1
  45. package/skills/omd-harness/SKILL.md +51 -50
  46. package/skills/omd-humanize/SKILL.md +116 -0
  47. package/skills/omd-humanize/agents/openai.yaml +4 -0
  48. package/skills/omd-humanize/references/locale-playbooks.md +102 -0
  49. package/skills/omd-humanize/references/sources.md +11 -0
  50. package/skills/omd-init/SKILL.md +18 -12
  51. package/skills/omd-locale-adapter/SKILL.md +58 -91
  52. package/skills/omd-orchestrator/SKILL.md +11 -5
  53. package/skills/omd-reference-capture/SKILL.md +80 -26
  54. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
  55. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
  56. package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
  57. package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
  58. package/skills/omd-slop-audit/SKILL.md +110 -0
  59. package/skills/omd-slop-audit/agents/openai.yaml +4 -0
  60. package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
  61. package/skills/omd-slop-audit/references/sources.md +24 -0
  62. package/web/references/104/DESIGN.md +354 -0
  63. package/web/references/11st/DESIGN.md +197 -316
  64. package/web/references/29cm/DESIGN.md +297 -393
  65. package/web/references/42dot/DESIGN.md +390 -0
  66. package/web/references/8percent/DESIGN.md +438 -0
  67. package/web/references/ably/DESIGN.md +267 -572
  68. package/web/references/acer/DESIGN.md +329 -0
  69. package/web/references/airbnb/DESIGN.md +219 -557
  70. package/web/references/alipay/DESIGN.md +179 -420
  71. package/web/references/apple/DESIGN.md +224 -498
  72. package/web/references/asleep/DESIGN.md +402 -0
  73. package/web/references/au/DESIGN.md +334 -0
  74. package/web/references/autopedia/DESIGN.md +382 -0
  75. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  76. package/web/references/baemin/DESIGN.md +332 -491
  77. package/web/references/banksalad/DESIGN.md +269 -180
  78. package/web/references/barogo/DESIGN.md +416 -0
  79. package/web/references/beusable/DESIGN.md +464 -0
  80. package/web/references/bilibili/DESIGN.md +206 -374
  81. package/web/references/bmw/DESIGN.md +162 -276
  82. package/web/references/brandi/DESIGN.md +184 -325
  83. package/web/references/catchtable/DESIGN.md +219 -264
  84. package/web/references/cgv/DESIGN.md +317 -0
  85. package/web/references/channeltalk/DESIGN.md +210 -336
  86. package/web/references/china-airlines/DESIGN.md +291 -0
  87. package/web/references/cjonstyle/DESIGN.md +453 -0
  88. package/web/references/class101/DESIGN.md +168 -387
  89. package/web/references/classum/DESIGN.md +228 -203
  90. package/web/references/claude/DESIGN.md +242 -479
  91. package/web/references/clay/DESIGN.md +179 -377
  92. package/web/references/clickhouse/DESIGN.md +254 -343
  93. package/web/references/cohere/DESIGN.md +214 -324
  94. package/web/references/coinone/DESIGN.md +199 -179
  95. package/web/references/corca/DESIGN.md +414 -0
  96. package/web/references/coupang/DESIGN.md +205 -475
  97. package/web/references/cursor/DESIGN.md +240 -381
  98. package/web/references/dabang/DESIGN.md +248 -213
  99. package/web/references/dable/DESIGN.md +431 -0
  100. package/web/references/datarize/DESIGN.md +217 -330
  101. package/web/references/dealicious/DESIGN.md +402 -0
  102. package/web/references/drdiary/DESIGN.md +404 -0
  103. package/web/references/elastic/DESIGN.md +238 -0
  104. package/web/references/elevenlabs/DESIGN.md +183 -321
  105. package/web/references/eslite/DESIGN.md +257 -0
  106. package/web/references/evaair/DESIGN.md +338 -0
  107. package/web/references/expo/DESIGN.md +238 -331
  108. package/web/references/familymart-tw/DESIGN.md +254 -0
  109. package/web/references/ferrari/DESIGN.md +160 -377
  110. package/web/references/figma/DESIGN.md +197 -451
  111. package/web/references/fitpet/DESIGN.md +445 -0
  112. package/web/references/flex/DESIGN.md +170 -253
  113. package/web/references/framer/DESIGN.md +197 -340
  114. package/web/references/freee/DESIGN.md +211 -533
  115. package/web/references/friendliai/DESIGN.md +431 -0
  116. package/web/references/frip/DESIGN.md +440 -0
  117. package/web/references/gangnamunni/DESIGN.md +154 -591
  118. package/web/references/gaudiolab/DESIGN.md +414 -0
  119. package/web/references/google/DESIGN.md +290 -398
  120. package/web/references/hashicorp/DESIGN.md +273 -318
  121. package/web/references/heydealer/DESIGN.md +429 -0
  122. package/web/references/humanscape/DESIGN.md +433 -0
  123. package/web/references/hyundai/DESIGN.md +158 -368
  124. package/web/references/hyundaicard/DESIGN.md +171 -121
  125. package/web/references/ibm/DESIGN.md +227 -378
  126. package/web/references/idus/DESIGN.md +450 -0
  127. package/web/references/igaworks/DESIGN.md +437 -0
  128. package/web/references/inflearn/DESIGN.md +221 -366
  129. package/web/references/intuit/DESIGN.md +244 -0
  130. package/web/references/jandi/DESIGN.md +191 -291
  131. package/web/references/jobplanet/DESIGN.md +415 -0
  132. package/web/references/kakao/DESIGN.md +287 -475
  133. package/web/references/kakaobank/DESIGN.md +220 -521
  134. package/web/references/kakaogames/DESIGN.md +220 -0
  135. package/web/references/kakaopay/DESIGN.md +207 -526
  136. package/web/references/karrot/DESIGN.md +227 -251
  137. package/web/references/kb-kookmin/DESIGN.md +308 -0
  138. package/web/references/kbank/DESIGN.md +220 -175
  139. package/web/references/kmong/DESIGN.md +281 -356
  140. package/web/references/krds/DESIGN.md +245 -19
  141. package/web/references/kream/DESIGN.md +224 -359
  142. package/web/references/kurly/DESIGN.md +211 -533
  143. package/web/references/lamborghini/DESIGN.md +198 -360
  144. package/web/references/lguplus/DESIGN.md +259 -0
  145. package/web/references/likelion/DESIGN.md +283 -0
  146. package/web/references/line/DESIGN.md +396 -355
  147. package/web/references/linear.app/DESIGN.md +209 -562
  148. package/web/references/lotteon/DESIGN.md +386 -0
  149. package/web/references/lovable/DESIGN.md +255 -349
  150. package/web/references/makinarocks/DESIGN.md +149 -349
  151. package/web/references/maum-ai/DESIGN.md +423 -0
  152. package/web/references/medibloc/DESIGN.md +425 -0
  153. package/web/references/megabox/DESIGN.md +232 -0
  154. package/web/references/mercari/DESIGN.md +217 -434
  155. package/web/references/microsoft/DESIGN.md +234 -388
  156. package/web/references/mildang/DESIGN.md +411 -0
  157. package/web/references/millie/DESIGN.md +183 -504
  158. package/web/references/minimax/DESIGN.md +264 -322
  159. package/web/references/miricanvas/DESIGN.md +182 -355
  160. package/web/references/miro/DESIGN.md +234 -232
  161. package/web/references/mistral.ai/DESIGN.md +231 -314
  162. package/web/references/mixi/DESIGN.md +234 -0
  163. package/web/references/moin/DESIGN.md +445 -0
  164. package/web/references/mongodb/DESIGN.md +219 -316
  165. package/web/references/musinsa/DESIGN.md +184 -510
  166. package/web/references/mynavi/DESIGN.md +242 -0
  167. package/web/references/myrealtrip/DESIGN.md +169 -406
  168. package/web/references/naver/DESIGN.md +328 -499
  169. package/web/references/naverwebtoon/DESIGN.md +172 -395
  170. package/web/references/nhn/DESIGN.md +169 -346
  171. package/web/references/nhncloud/DESIGN.md +185 -123
  172. package/web/references/notion/DESIGN.md +271 -475
  173. package/web/references/nrise/DESIGN.md +417 -0
  174. package/web/references/ohouse/DESIGN.md +210 -549
  175. package/web/references/oliveyoung/DESIGN.md +217 -326
  176. package/web/references/ollama/DESIGN.md +241 -308
  177. package/web/references/onestore/DESIGN.md +248 -0
  178. package/web/references/palantir/DESIGN.md +256 -0
  179. package/web/references/panasonic/DESIGN.md +276 -0
  180. package/web/references/patternfly/DESIGN.md +259 -0
  181. package/web/references/payhere/DESIGN.md +438 -0
  182. package/web/references/pega/DESIGN.md +262 -0
  183. package/web/references/peoplefund/DESIGN.md +431 -0
  184. package/web/references/petfriends/DESIGN.md +428 -0
  185. package/web/references/pinkfong/DESIGN.md +199 -367
  186. package/web/references/pinterest/DESIGN.md +258 -308
  187. package/web/references/poya/DESIGN.md +286 -0
  188. package/web/references/pozalabs/DESIGN.md +438 -0
  189. package/web/references/protopie/DESIGN.md +419 -0
  190. package/web/references/qraft/DESIGN.md +448 -0
  191. package/web/references/quotabook/DESIGN.md +449 -0
  192. package/web/references/recruit/DESIGN.md +247 -0
  193. package/web/references/remember/DESIGN.md +202 -396
  194. package/web/references/resend/DESIGN.md +274 -348
  195. package/web/references/sakura-internet/DESIGN.md +269 -0
  196. package/web/references/samsung/DESIGN.md +157 -359
  197. package/web/references/sandoll/DESIGN.md +445 -0
  198. package/web/references/sanity/DESIGN.md +241 -375
  199. package/web/references/scatterlab/DESIGN.md +412 -0
  200. package/web/references/selectstar/DESIGN.md +439 -0
  201. package/web/references/servicenow/DESIGN.md +289 -0
  202. package/web/references/shinhanbank/DESIGN.md +161 -341
  203. package/web/references/shinhancard/DESIGN.md +208 -319
  204. package/web/references/sionic/DESIGN.md +454 -0
  205. package/web/references/sktelecom/DESIGN.md +310 -0
  206. package/web/references/socar/DESIGN.md +125 -32
  207. package/web/references/softbank/DESIGN.md +231 -0
  208. package/web/references/sony/DESIGN.md +234 -0
  209. package/web/references/soop/DESIGN.md +261 -0
  210. package/web/references/spacex/DESIGN.md +184 -323
  211. package/web/references/spotify/DESIGN.md +253 -394
  212. package/web/references/squeezebits/DESIGN.md +441 -0
  213. package/web/references/stayfolio/DESIGN.md +422 -0
  214. package/web/references/stripe/DESIGN.md +212 -491
  215. package/web/references/supabase/DESIGN.md +244 -316
  216. package/web/references/tabling/DESIGN.md +415 -0
  217. package/web/references/taishinbank/DESIGN.md +243 -0
  218. package/web/references/teamlab/DESIGN.md +240 -0
  219. package/web/references/teamsparta/DESIGN.md +472 -0
  220. package/web/references/tellingme/DESIGN.md +392 -0
  221. package/web/references/tesla/DESIGN.md +244 -427
  222. package/web/references/thsr/DESIGN.md +284 -0
  223. package/web/references/thumbtack/DESIGN.md +302 -0
  224. package/web/references/together.ai/DESIGN.md +257 -304
  225. package/web/references/toss/DESIGN.md +251 -593
  226. package/web/references/toss-securities/DESIGN.md +255 -178
  227. package/web/references/tossbank/DESIGN.md +195 -491
  228. package/web/references/toyota/DESIGN.md +238 -0
  229. package/web/references/tving/DESIGN.md +197 -245
  230. package/web/references/typed/DESIGN.md +413 -0
  231. package/web/references/uber/DESIGN.md +256 -333
  232. package/web/references/udn/DESIGN.md +250 -0
  233. package/web/references/upbit/DESIGN.md +145 -256
  234. package/web/references/upstage/DESIGN.md +211 -204
  235. package/web/references/uswds/DESIGN.md +287 -0
  236. package/web/references/vercel/DESIGN.md +236 -440
  237. package/web/references/wanted/DESIGN.md +215 -487
  238. package/web/references/wise/DESIGN.md +223 -231
  239. package/web/references/wisetracker/DESIGN.md +462 -0
  240. package/web/references/wooribank/DESIGN.md +245 -0
  241. package/web/references/yanolja/DESIGN.md +250 -419
  242. package/web/references/yeogiotte/DESIGN.md +235 -418
  243. package/web/references/zapier/DESIGN.md +256 -377
  244. package/web/references/zendesk/DESIGN.md +288 -0
  245. package/web/references/zigzag/DESIGN.md +200 -621
  246. package/dist/install-skills-7UUDOLG2.js +0 -734
  247. package/dist/install-skills-7UUDOLG2.js.map +0 -1
@@ -2,413 +2,272 @@
2
2
  id: brandi
3
3
  name: Brandi
4
4
  country: KR
5
- category: e-commerce
5
+ category: ecommerce
6
6
  homepage: "https://www.brandi.co.kr"
7
- primary_color: "#ff204b"
7
+ primary_color: "#1e1e1e"
8
8
  logo:
9
9
  type: favicon
10
10
  slug: "https://www.google.com/s2/favicons?domain=brandi.co.kr&sz=128"
11
- verified: "2026-06-09"
11
+ verified: "2026-07-13"
12
12
  added: "2026-06-09"
13
13
  omd: "0.1"
14
+ verification_v2:
15
+ schema: 2
16
+ checked: "2026-07-13"
17
+ surfaces:
18
+ - { id: home, kind: commerce-home, url: "https://www.brandi.co.kr/", inspected: "2026-07-13" }
19
+ - { id: product-a, kind: commerce-product, url: "https://www.brandi.co.kr/products/106329458", inspected: "2026-07-13" }
20
+ - { id: product-b, kind: commerce-product, url: "https://www.brandi.co.kr/products/125381184", inspected: "2026-07-13" }
21
+ sources:
22
+ - { id: home-live, kind: product-surface, url: "https://www.brandi.co.kr/", captured: "2026-07-13" }
23
+ - { id: product-a-live, kind: product-surface, url: "https://www.brandi.co.kr/products/106329458", captured: "2026-07-13" }
24
+ - { id: product-b-live, kind: product-surface, url: "https://www.brandi.co.kr/products/125381184", captured: "2026-07-13" }
25
+ - { id: spoqa-font, kind: official-doc, url: "https://github.com/spoqa/spoqa-han-sans", captured: "2026-07-13" }
26
+ - { id: noto-font, kind: official-doc, url: "https://notofonts.github.io/noto-docs/website/use/", captured: "2026-07-13" }
27
+ conflicts: []
28
+ claims:
29
+ "tokens.colors.canvas": &home { surface_id: home, source_id: home-live, method: computed-style, captured: "2026-07-13" }
30
+ "tokens.colors.ink": *home
31
+ "tokens.colors.promo-active": *home
32
+ "tokens.colors.action-direct": &product { surface_id: product-a, source_id: product-a-live, method: computed-style, captured: "2026-07-13" }
33
+ "tokens.colors.action-partner": *product
34
+ "tokens.colors.action-on": *product
35
+ "tokens.colors.option-border": *product
36
+ "tokens.colors.option-border-disabled": *product
37
+ "tokens.colors.badge-surface": *product
38
+ "tokens.colors.badge-text": *product
39
+ "tokens.typography.family.ui": *product
40
+ "tokens.typography.product-action.size": *product
41
+ "tokens.typography.product-action.weight": *product
42
+ "tokens.typography.product-action.lineHeight": *product
43
+ "tokens.typography.product-action.use": *product
44
+ "tokens.typography.option.size": *product
45
+ "tokens.typography.option.weight": *product
46
+ "tokens.typography.option.lineHeight": *product
47
+ "tokens.typography.option.use": *product
48
+ "tokens.typography.badge.size": *product
49
+ "tokens.typography.badge.weight": *product
50
+ "tokens.typography.badge.lineHeight": *product
51
+ "tokens.typography.badge.use": *product
52
+ "tokens.spacing.action-x": *product
53
+ "tokens.spacing.action-y": *product
54
+ "tokens.spacing.option-item": *product
55
+ "tokens.spacing.badge-x": *product
56
+ "tokens.spacing.badge-y-start": *product
57
+ "tokens.spacing.badge-y-end": *product
58
+ "tokens.rounded.product-action": *product
59
+ "tokens.rounded.option": *product
60
+ "tokens.rounded.option-menu": *product
61
+ "tokens.rounded.badge": *product
62
+ "tokens.components.product-badge.type": *product
63
+ "tokens.components.product-badge.bg": *product
64
+ "tokens.components.product-badge.fg": *product
65
+ "tokens.components.product-badge.radius": *product
66
+ "tokens.components.product-badge.padding": *product
67
+ "tokens.components.product-badge.font": *product
68
+ "tokens.components.product-badge.use": *product
14
69
  tokens:
15
- source: live-extract
16
- extracted: "2026-06-09"
70
+ source: reconciled
71
+ extracted: "2026-07-13"
17
72
  components_harvested: true
18
73
  colors:
19
- primary: "#ff204b"
20
- primary-hover: "#ff365d"
21
- ink: "#202429"
22
- slate: "#5f6773"
23
- muted: "#868d96"
24
- muted-alt: "#808893"
25
- placeholder: "#989ca1"
26
74
  canvas: "#ffffff"
27
- surface: "#f5f5f5"
28
- hairline: "#ebeef2"
29
- border: "#d3d7df"
30
- dark: "#313842"
31
- on-primary: "#ffffff"
75
+ ink: "#202429"
76
+ promo-active: "#ff365d"
77
+ action-direct: "#1e1e1e"
78
+ action-partner: "#00c73c"
79
+ action-on: "#ffffff"
80
+ option-border: "#e6e6e6"
81
+ option-border-disabled: "#e1e1e1"
82
+ badge-surface: "#ebeef2"
83
+ badge-text: "#808893"
32
84
  typography:
33
- family: { sans: "Spoqa Han Sans", korean: "Noto Sans KR" }
34
- h2-section: { size: 32, weight: 700, lineHeight: 1.20, use: "Section / promo headlines" }
35
- h1-page: { size: 26, weight: 400, lineHeight: 1.30, use: "Page title, BRANDI logotype" }
36
- nav-active: { size: 17, weight: 700, lineHeight: 1.41, use: "Active GNB tab (홈)" }
37
- label-bold: { size: 15, weight: 700, lineHeight: 1.40, use: "Category / section labels" }
38
- body: { size: 13, weight: 400, lineHeight: 1.50, use: "Standard reading text, body" }
39
- caption: { size: 12, weight: 400, lineHeight: 1.50, use: "Sub-links, footer, metadata" }
40
- spacing: { xs: 3, sm: 7, md: 8, base: 12, lg: 16, xl: 24, xxl: 40 }
41
- rounded: { sm: 4, md: 8, lg: 20, full: 9999 }
42
- shadow:
43
- ambient: "rgba(0,0,0,0.06) 0px 1px 4px"
44
- standard: "rgba(0,0,0,0.08) 0px 2px 8px"
45
- overlay: "rgba(32,36,41,0.8) 0px 0px 0px"
85
+ family: { ui: "Noto Sans KR" }
86
+ product-action: { size: 17, weight: 500, lineHeight: 1.0, use: "Observed direct and partner purchase links on both captured product pages." }
87
+ option: { size: 13, weight: 400, lineHeight: 1.0, use: "Observed product-option select and expanded listbox." }
88
+ badge: { size: 13, weight: 700, lineHeight: 1.0, use: "Observed product-detail badge." }
89
+ spacing: { action-x: 4, action-y: 18, option-item: 16, badge-x: 8, badge-y-start: 2, badge-y-end: 3 }
90
+ rounded: { product-action: 6, option: 6, option-menu: 6, badge: 6 }
46
91
  components:
47
- button-primary: { type: button, bg: "#ff204b", fg: "#ffffff", radius: "4px", padding: "12px 24px", font: "15px / 700", use: "Primary CTA 구매하기, 좋아요 등록, hover #ff365d" }
48
- button-pill: { type: button, bg: "#ffffff", fg: "#202429", radius: "20px", padding: "7px 12px 7px 8px", font: "13px / 400", use: "Filter / search pill, 1px #d3d7df border" }
49
- nav-tab: { type: tab, fg: "#5f6773", font: "17px / 700", padding: "12px 8px", use: "GNB tab", active: "#202429 ink + 2px bottom border #ff204b" }
50
- input-search: { type: input, bg: "#f5f5f5", fg: "#202429", radius: "4px", padding: "8px 12px", font: "13px / 400", use: "Search field, placeholder #989ca1" }
51
- product-card: { type: card, bg: "#ffffff", fg: "#202429", radius: "8px", use: "Product thumbnail card, 1px #ebeef2 hairline, standard shadow" }
52
- badge-sale: { type: badge, bg: "#ff204b", fg: "#ffffff", radius: "4px", padding: "3px 7px", font: "12px / 700", use: "Sale / discount badge, percent rate" }
53
- badge-new: { type: badge, bg: "#202429", fg: "#ffffff", radius: "4px", padding: "3px 7px", font: "12px / 700", use: "NEW / 신상 label on thumbnails" }
54
- wish-toggle: { type: toggle, bg: "#ffffff", fg: "#ff204b", radius: "9999px", padding: "8px", use: "찜 heart toggle, off #868d96, on #ff204b filled" }
55
- avatar-circle: { type: avatar, bg: "#f5f5f5", radius: "9999px", use: "Seller / profile thumbnail, circular" }
56
- toast: { type: toast, bg: "#313842", fg: "#ffffff", radius: "8px", padding: "12px 16px", font: "13px / 400", use: "Action confirmation, 장바구니 담김 등" }
92
+ product-badge: { type: badge, bg: "#ebeef2", fg: "#808893", radius: "6px", padding: "2px 8px 3px", font: "13px / 700 / Noto Sans KR", use: "Observed product-detail metadata badge." }
57
93
  ---
58
94
 
59
95
  # Design System Inspiration of Brandi
60
96
 
61
97
  ## 1. Visual Theme & Atmosphere
62
98
 
63
- Brandi (브랜디) is a Korean fashion commerce platform whose web and app surfaces read as fast, image-forward, and unapologetically commercial. The page lives on a pure white canvas (`#ffffff`) where near-black ink (`#202429`) carries almost all the type, and a single hot pink-red (`#ff204b`) does all the persuading sale prices, discount badges, active heart toggles, and the primary "구매하기" call to action. This is the visual grammar of Korean mobile fashion retail: the photography is the hero, the chrome gets out of the way, and one saturated accent color tells the eye exactly where to spend money. Nothing about the system is decorative for its own sake; every colored pixel is doing conversion work.
64
-
65
- The typographic backbone is `Spoqa Han Sans` with `Noto Sans KR` as the Korean companion — two of the most common, screen-optimized Korean web families, chosen for legibility at small sizes rather than for character. Body text runs as small as 13px (and footer links at 12px), which is dense by Western standards but standard for a Korean commerce GNB where dozens of categories, prices, and labels compete for a phone-width column. Headings jump to 26px (page titles) and 32px/700 (promo sections), creating a sharp two-tier hierarchy: tiny dense utility text, then bold large merchandising headlines, with little in between.
66
-
67
- The atmosphere is bright, tight, and high-velocity. Corners are conservative — 4px on most controls, 8px on cards, with one expressive exception: the 20px rounded search/filter pills that signal interactivity. Shadows are minimal and neutral-gray, used only to lift floating cards and overlays off the white. There is no gradient drama and no chromatic shadow play here; the brand's entire emotional charge is concentrated in that one pink-red, against a clean monochrome grid of product imagery.
99
+ Brandi is an official Korean women's fashion shopping service: the public site title calls it “여성 패션 쇼핑앱 브랜디,” and its two captured item pages concentrate the available product evidence around choosing an option and proceeding to purchase. Those public commerce surfaces are predominantly white with `#202429` text. The clearest action treatment is not the legacy pink claim: the direct purchase link is `#1e1e1e` with white text, while an adjacent green `#00c73c` link is a partner purchase path. On the home route, `#ff365d` appears on an active promotional slider item; it is therefore recorded as route-local promo evidence rather than a universal Brandi action token. The capture is desktop-only and does not establish an app, marketing, documentation, or account-area system beyond these public routes.
68
100
 
69
101
  **Key Characteristics:**
70
- - A single hot pink-red (`#ff204b`) as the entire interactive/commerce accent — sale, CTA, active heart
71
- - Pure white canvas (`#ffffff`) with near-black ink (`#202429`) high-contrast, image-forward
72
- - `Spoqa Han Sans` / `Noto Sans KR` screen-optimized Korean stack, dense 13px body
73
- - Sharp two-tier type hierarchy: 32px/700 promo headlines vs 13px utility text
74
- - Conservative 4px / 8px radius, with expressive 20px pills for search & filters
75
- - Minimal neutral-gray shadows — depth is functional, never decorative
76
- - Layered gray neutrals (`#5f6773`, `#868d96`, `#808893`) for secondary metadata
77
- - Dark slate (`#313842`) reserved for toasts and overlay surfaces
102
+ - White commerce canvas with `#202429` ink across all three captured routes
103
+ - Product-detail purchase pair: direct `#1e1e1e` and a separate green partner action
104
+ - 6px rounding on the recorded product actions, option control, listbox, and badge
105
+ - Noto Sans KR and Spoqa Han Sans are live-loaded on the captured web surfaces
106
+ - Active home promotional slider evidence is `#ff365d`, not a general CTA rule
78
107
 
79
108
  ## 2. Color Palette & Roles
80
109
 
81
- ### Primary
82
- - **Brandi Pink** (`#ff204b`): The signature. Primary CTA backgrounds, sale prices, discount badges, active heart/wish toggle, active-tab underline. The single color that carries all commercial intent.
83
- - **Pink Hover** (`#ff365d`): Lighter pink-red for hover/pressed states on primary buttons and links.
84
- - **Ink** (`#202429`): Primary text, headings, logotype, active nav label. A near-black with a faint warm-gray cast — softer than pure `#000000`.
85
-
86
- ### Neutrals
87
- - **Slate** (`#5f6773`): Secondary headings, inactive nav tabs, mid-emphasis labels.
88
- - **Muted** (`#868d96`): Captions, helper text, inactive icons, footer metadata.
89
- - **Muted Alt** (`#808893`): Alternate gray for timestamps and tertiary labels.
90
- - **Placeholder** (`#989ca1`): Input placeholder text, disabled hints.
110
+ ### Captured commerce colors
91
111
 
92
- ### Surface & Borders
93
- - **Canvas** (`#ffffff`): Page background, card surfaces, button text on pink.
94
- - **Surface** (`#f5f5f5`): Filled search fields, subtle section backgrounds, avatar placeholders.
95
- - **Hairline** (`#ebeef2`): Lightest divider card borders, list separators.
96
- - **Border** (`#d3d7df`): Standard control border pills, inputs, outlined buttons.
112
+ - **Canvas** (`#ffffff`): observed page/control background on the home and product routes.
113
+ - **Ink** (`#202429`): observed product-option, menu, and general text color.
114
+ - **Direct purchase** (`#1e1e1e`): background of `.btn-buy` on both captured product pages.
115
+ - **Partner purchase** (`#00c73c`): background of the adjacent `.btn-n-buy`; this is a route-local partner action, not a universal Brandi color.
116
+ - **On action** (`#ffffff`): observed text on both recorded purchase links.
117
+ - **Promo active** (`#ff365d`): observed only on active home slider list items.
118
+ - **Option border** (`#e6e6e6`): default product-option selector border.
119
+ - **Disabled option border** (`#e1e1e1`): observed disabled selector border.
120
+ - **Badge surface / text** (`#ebeef2` / `#808893`): product-detail badge pair.
97
121
 
98
- ### Dark
99
- - **Dark Slate** (`#313842`): Toast backgrounds, overlay surfaces, dark UI chips.
100
- - **Overlay Ink** (`rgba(32,36,41,0.8)`): Scrim over imagery — image dim layers and circular controls on photos.
122
+ No `#ff204b` live use was recorded by the supplied 2026-07-13 capture, so it is not retained as a current token.
101
123
 
102
124
  ## 3. Typography Rules
103
125
 
104
- ### Font Family
105
- - **Primary**: `Spoqa Han Sans`, with fallback `sans-serif`
106
- - **Korean / Heading companion**: `Noto Sans KR`, applied to page titles, nav, and logotype
107
- - No monospace family is used in the consumer commerce surface.
126
+ ### Font evidence classes
108
127
 
109
- ### Hierarchy
128
+ | Family | Captured use | FontFaceSet / source corroboration | Resolution |
129
+ |------|--------------|------------------------------------|------------|
130
+ | `Noto Sans KR` | 257 visible uses across home and both product pages, including headings, controls, badges, and purchase links | `loaded`, high confidence, with 124 `fonts.gstatic.com` source URLs | **Verified live webfont.** It is the sole `tokens.typography.family.ui` family. The [Noto documentation](https://notofonts.github.io/noto-docs/website/use/) describes the collection’s OFL use boundary; that licence context does not make it a Brandi-owned font. |
131
+ | `Spoqa Han Sans` | 124 visible uses across body, menu, button, badge, and list-item roles | `loaded`, high confidence, backed by the captured FontFaceSet; the artifact lists no exact source URL for this family | **Verified live surface use**, preserved as route-local typographic evidence rather than an additional UI-family token. The [Spoqa project](https://github.com/spoqa/spoqa-han-sans) distributes its family under SIL OFL and documents webfont use; do not rename the exact captured family to a newer upstream alias. |
132
+ | `Pretendard` | No visible use | 18 CDN `@font-face` sources but no computed use | **Declared-only.** It is not a Brandi UI token and is not substituted into examples. |
133
+ | `Arial` | Seven utility-button uses | System classification; no webfont source | **System-only.** Not a Brandi font claim. |
110
134
 
111
- | Role | Font | Size | Weight | Line Height | Notes |
112
- |------|------|------|--------|-------------|-------|
113
- | Section / Promo | Spoqa Han Sans | 32px | 700 | 1.20 | Merchandising headlines, event banners |
114
- | Page Title / Logo | Noto Sans KR | 26px | 400 | 1.30 | Page heads, BRANDI logotype |
115
- | Nav Active | Noto Sans KR | 17px | 700 | 1.41 | Active GNB tab (홈) |
116
- | Label Bold | Noto Sans KR | 15px | 700 | 1.40 | Category labels, section heads |
117
- | Body | Spoqa Han Sans | 13px | 400 | 1.50 | Standard reading text, list items |
118
- | Caption | Noto Sans KR | 12px | 400 | 1.50 | Sub-links, footer, metadata |
135
+ ### Observed hierarchy
119
136
 
120
- ### Principles
121
- - **Two-tier contrast**: A wide gap between bold merchandising headlines (32px/700, 26px) and dense utility text (13px/12px) — almost nothing lives in the middle. This is intentional commerce density.
122
- - **Korean-first legibility**: Both families are chosen for clean rendering of Hangul at small sizes; `Noto Sans KR` carries the heavier display and navigation roles, `Spoqa Han Sans` carries body.
123
- - **Weight as the hierarchy lever**: With a narrow size range in utility text, weight (400 vs 700) does most of the emphasis work bold labels punch out of regular-weight surroundings.
124
- - **No letter-spacing tricks**: Tracking stays at `normal` everywhere; Hangul does not benefit from the negative tracking used on Latin display type.
137
+ | Role | Font | Size | Weight | Line Height | Provenance |
138
+ |------|------|------|--------|-------------|------------|
139
+ | Product purchase link | Noto Sans KR | 17px | 500 | normal | `.btn-buy` and `.btn-n-buy` on both product pages |
140
+ | Product option / expanded menu | Spoqa Han Sans | 13px | 400 | normal | option trigger and listbox on both product pages |
141
+ | Product badge | Noto Sans KR | 13px | 700 | normal | `.badge` on both product pages |
125
142
 
126
143
  ## 4. Component Stylings
127
144
 
128
- ### Buttons
129
- **Primary CTA**
130
- - Background: `#ff204b`
131
- - Text: `#ffffff`
132
- - Padding: 12px 24px
133
- - Radius: 4px
134
- - Font: 15px / weight 700
135
- - Hover: `#ff365d`
136
- - Use: "구매하기", "좋아요 등록", primary conversion actions
137
-
138
- **Pill (search / filter)**
139
- - Background: `#ffffff`
140
- - Text: `#202429`
141
- - Padding: 7px 12px 7px 8px
142
- - Radius: 20px
143
- - Border: `1px solid #d3d7df`
144
- - Use: Search trigger, filter chips, sort toggles
145
-
146
- ### Navigation (GNB)
147
- - Horizontal tab bar on white, sticky at top
148
- - Inactive tabs: `#5f6773`, 17px
149
- - Active tab: `#202429` ink + 2px bottom border in `#ff204b`
150
- - BRANDI logotype left-aligned at 26px
151
- - Utility links (장바구니, 찜, 마이페이지) right-aligned at 13px
152
-
153
- ### Inputs & Forms
154
- - Background: `#f5f5f5` (filled) or `#ffffff` with `1px solid #d3d7df`
155
- - Radius: 4px
156
- - Text: `#202429`
157
- - Placeholder: `#989ca1`
158
- - Padding: 8px 12px
159
-
160
- ### Product Cards
161
- - Background: `#ffffff`
162
- - Border: `1px solid #ebeef2` hairline
163
- - Radius: 8px
164
- - Shadow (standard): `rgba(0,0,0,0.08) 0px 2px 8px`
165
- - Image-forward: thumbnail dominates, price + badges below
166
- - Sale price rendered in `#ff204b`; original price struck through in `#868d96`
167
-
168
- ### Badges
169
- **Sale / Discount**
170
- - Background: `#ff204b`
171
- - Text: `#ffffff`
172
- - Padding: 3px 7px
173
- - Radius: 4px
174
- - Font: 12px / weight 700
145
+ ### Product purchase action
175
146
 
176
- **NEW / 신상**
177
- - Background: `#202429`
147
+ **Direct purchase — observed default**
148
+ - Background: `#1e1e1e`
178
149
  - Text: `#ffffff`
179
- - Padding: 3px 7px
180
- - Radius: 4px
150
+ - Radius: `6px`
151
+ - Padding: `18px 4px`
152
+ - Font: `17px / 500 / Noto Sans KR`
153
+ - Use: `surface-2::[data-omd-capture="17"]` / `.btn-buy`, also observed on surface-3; direct product purchase link.
181
154
 
182
- ### Wish / Heart Toggle
183
- - Off: `#868d96` outline heart on `#ffffff`
184
- - On: `#ff204b` filled heart
185
- - Radius: 9999px (circular hit area)
186
- - Often placed over imagery with `rgba(32,36,41,0.8)` circular scrim
187
-
188
- ### Toast
189
- - Background: `#313842`
155
+ **Partner purchase observed default**
156
+ - Background: `#00c73c`
190
157
  - Text: `#ffffff`
191
- - Radius: 8px
192
- - Padding: 12px 16px
193
- - Font: 13px / 400
194
- - Use: "장바구니에 담겼습니다" and similar confirmations
158
+ - Radius: `6px`
159
+ - Padding: `18px 4px`
160
+ - Font: `17px / 500 / Noto Sans KR`
161
+ - Use: `surface-2::[data-omd-capture="18"]` / `.btn-n-buy`, also observed on surface-3; adjacent green partner purchase link.
195
162
 
196
- ---
163
+ ### Product option select
197
164
 
198
- **Verified:** 2026-06-09 (omd-add-reference — Tier 1 live inspect)
199
- **Tier 1 sources:** https://www.brandi.co.kr, https://brandi.career.greetinghr.com
165
+ **Default and observed states**
166
+ - Background: `#ffffff`
167
+ - Text: `#202429`
168
+ - Border: `1px solid #e6e6e6`
169
+ - Radius: `6px`
170
+ - Font: `13px / 400 / Spoqa Han Sans`
171
+ - Expanded: The trigger at `surface-2::[data-omd-capture="15"]` opened the recorded listbox on both product routes.
172
+ - Disabled: The disabled trigger at `surface-2::[data-omd-capture="16"]` retained white background and `#202429` text with `1px solid #e1e1e1` border.
173
+ - Use: Product-option selector. No hover, focus, pressed, validation, or selected-option styling is specified.
200
174
 
201
- ## 5. Layout Principles
175
+ ### Product option listbox
202
176
 
203
- ### Spacing System
204
- - Base unit: ~4px, with a dense practical scale: 3px, 7px, 8px, 12px, 16px, 24px, 40px
205
- - The small-end density (3-8px) reflects a mobile-first commerce grid where padding is tight to maximize product imagery per viewport.
177
+ **Expanded observed interaction state**
178
+ - Background: `#ffffff`
179
+ - Text: `#202429`
180
+ - Border: `0px 1px 1px #e6e6e6`
181
+ - Radius: `0px 0px 6px 6px`
182
+ - Padding: `0px 0px 1px`
183
+ - Font: `13px / 400 / Spoqa Han Sans`
184
+ - Expanded: `surface-2::[data-omd-interaction-capture="menu-0-0"]` / `.ui-menu` appeared after the option-trigger interaction; a 16px-padded option wrapper was observed inside it.
185
+ - Use: Product-option listbox on product pages only.
186
+
187
+ ### Product detail badge
188
+
189
+ **Default — observed product metadata badge**
190
+ - Background: `#ebeef2`
191
+ - Text: `#808893`
192
+ - Radius: `6px`
193
+ - Padding: `2px 8px 3px`
194
+ - Font: `13px / 700 / Noto Sans KR`
195
+ - Use: `surface-2::span` / `.badge`, also observed on surface-3.
206
196
 
207
- ### Grid & Container
208
- - Mobile-first single-column product feed scaling to a centered desktop column
209
- - Product grids: 2-column on mobile, 3-4 column on wider viewports
210
- - Sticky top GNB with category tabs; sticky bottom action bar on product detail (price + 구매하기)
211
- - Imagery occupies the dominant visual area; text chrome is compressed around it
197
+ ---
198
+ **Verified:** 2026-07-13
199
+ **Tier 1 sources:** https://www.brandi.co.kr/; https://www.brandi.co.kr/products/106329458; https://www.brandi.co.kr/products/125381184; https://github.com/spoqa/spoqa-han-sans; https://notofonts.github.io/noto-docs/website/use/
200
+ **Tier 2 sources:** https://getdesign.md/brandi (no indexed Brandi record found); https://styles.refero.design/?q=brandi (no Brandi result found in the public search result set)
201
+ **Conflicts unresolved:** none
212
202
 
213
- ### Whitespace Philosophy
214
- - **Density over air**: Korean commerce convention favors information density — more products visible, tighter gaps, smaller type. Whitespace is rationed, not lavished.
215
- - **Image breathing room**: The one place whitespace is generous is around hero product photography and promo banners, which get full-bleed treatment.
216
- - **Card rhythm**: Consistent hairline (`#ebeef2`) separation keeps a dense feed scannable without heavy borders.
203
+ ## 5. Layout Principles
217
204
 
218
- ### Border Radius Scale
219
- - Sharp (4px): Buttons, inputs, badges — the workhorse
220
- - Standard (8px): Cards, toasts, containers
221
- - Expressive (20px): Search/filter pills — the one playful radius
222
- - Full (9999px): Heart toggles, avatars, circular controls
205
+ The supplied evidence is a 1440×900 desktop capture. It supports only the recorded product-action spacing (`18px 4px`), option-listbox item padding (16px on the representative option wrapper), and compact badge padding. No product grid, page container, sticky bar, mobile layout, or checkout funnel rule is retained without a representative captured selector.
223
206
 
224
207
  ## 6. Depth & Elevation
225
208
 
226
- | Level | Treatment | Use |
227
- |-------|-----------|-----|
228
- | Flat (Level 0) | No shadow | Page background, inline text, feed |
229
- | Ambient (Level 1) | `rgba(0,0,0,0.06) 0px 1px 4px` | Subtle card lift, hover hint |
230
- | Standard (Level 2) | `rgba(0,0,0,0.08) 0px 2px 8px` | Product cards, floating chips |
231
- | Overlay (Level 3) | `rgba(32,36,41,0.8)` scrim | Image dim layers, sticky action bars, toasts |
232
-
233
- **Shadow Philosophy**: Brandi's elevation is deliberately quiet. Shadows are neutral gray, low-opacity, and short-throw — they exist to separate a floating card or sticky bar from the dense feed beneath, never to add atmosphere. The strongest "depth" device is not a shadow at all but the `rgba(32,36,41,0.8)` overlay scrim used to dim imagery so white text and the pink heart read cleanly on top of busy product photos. In a system where photography is the hero, depth is about legibility, not decoration.
209
+ The representative purchase links, select trigger, listbox, and badge all have `box-shadow: none`. No shadow scale or image overlay system is established by this capture.
234
210
 
235
211
  ## 7. Do's and Don'ts
236
212
 
237
213
  ### Do
238
- - Use `#ff204b` for every commercial signal — CTA, sale price, discount badge, active heart
239
- - Keep the canvas pure white (`#ffffff`) and let product photography dominate
240
- - Use `#202429` ink for primary text, not pure black it's the brand's near-black
241
- - Render sale prices in pink and strike original prices in `#868d96` gray
242
- - Use 4px radius on buttons/badges, 8px on cards, reserve 20px pills for search/filter
243
- - Keep utility text dense (12-13px) Korean commerce expects information density
244
- - Use weight 700 to create emphasis when sizes are close together
245
- - Use `Spoqa Han Sans` / `Noto Sans KR` for clean Hangul rendering at small sizes
214
+
215
+ - Keep the direct product purchase link black `#1e1e1e` with white text when reproducing the captured product-page state.
216
+ - Keep the green `#00c73c` purchase link scoped to the observed adjacent partner action.
217
+ - Use the measured 6px corners and 13px Spoqa Han Sans option text only for the recorded product-option controls.
218
+ - Preserve the observed option listbox and disabled border as distinct states with their route/selector provenance.
219
+ - Treat Noto Sans KR and Spoqa Han Sans as live font evidence; keep Pretendard declared-only.
246
220
 
247
221
  ### Don't
248
- - Don't introduce a second accent color — `#ff204b` carries all interactive intent alone
249
- - Don't use heavy or colored shadows elevation is neutral, low, and functional
250
- - Don't use pill (20px+) radius on primary CTAs sale buttons stay sharp at 4px
251
- - Don't pad generously at the expense of products-per-screen density is the convention
252
- - Don't use pure black (`#000000`) for body text `#202429` ink is the brand tone
253
- - Don't decorate; every colored element should be doing conversion or wayfinding work
254
- - Don't apply Latin-style negative letter-spacing to Hangul headlines
255
- - Don't bury the price or the 구매하기 CTA — they anchor every product surface
222
+
223
+ - Do not restore the legacy pink `#ff204b` CTA, sale badge, wish-toggle, or card system from this evidence set.
224
+ - Do not turn the home slider’s `#ff365d` into a universal product action token.
225
+ - Do not infer hover, focus, pressed, error, checkout, responsive, or app-native variants from the two recorded menu expansions.
226
+ - Do not use the green partner action as evidence of a Brandi-owned brand palette.
227
+ - Do not substitute a system font or declared-only Pretendard for the captured loaded families.
256
228
 
257
229
  ## 8. Responsive Behavior
258
230
 
259
- ### Breakpoints
260
- | Name | Width | Key Changes |
261
- |------|-------|-------------|
262
- | Mobile | <640px | Single-column feed, 2-col product grid, sticky bottom CTA |
263
- | Tablet | 640-1024px | 3-column product grid, expanded GNB |
264
- | Desktop | >1024px | Centered column, 4-column grid, full category nav |
265
-
266
- ### Touch Targets
267
- - Primary CTA at 12px 24px padding gives a comfortable tap height
268
- - Heart toggle uses a circular 9999px hit area sized for thumb taps
269
- - Nav tabs at 12px 8px padding with 17px text
270
- - Pill controls at 7px vertical padding stay tappable
271
-
272
- ### Collapsing Strategy
273
- - GNB: full category tab row → scrollable tab strip / hamburger on mobile
274
- - Product grid: 4-col → 3-col → 2-col
275
- - Product detail: inline CTA → sticky bottom action bar (price + 구매하기)
276
- - Promo headlines: 32px → reduced on mobile, weight 700 maintained
277
- - Footer links compress from multi-column to stacked accordion
278
-
279
- ### Image Behavior
280
- - Product thumbnails maintain 8px radius and `#ebeef2` hairline at all sizes
281
- - Hero/promo imagery goes full-bleed on mobile
282
- - Overlay scrim (`rgba(32,36,41,0.8)`) preserved on imagery with overlaid text/controls
231
+ No mobile viewport was supplied. The public evidence does not establish breakpoints, touch-target requirements, sticky behavior, product-grid columns, or mobile navigation rules.
283
232
 
284
233
  ## 9. Agent Prompt Guide
285
234
 
286
- ### Quick Color Reference
287
- - Primary CTA / Sale: Brandi Pink (`#ff204b`)
288
- - CTA Hover: Pink Light (`#ff365d`)
289
- - Background: Pure White (`#ffffff`)
290
- - Heading / Body ink: Near-black (`#202429`)
291
- - Secondary text: Slate (`#5f6773`)
292
- - Caption / muted: Gray (`#868d96`)
293
- - Filled field / surface: Light Gray (`#f5f5f5`)
294
- - Hairline divider: (`#ebeef2`)
295
- - Control border: (`#d3d7df`)
296
- - Toast / dark UI: Dark Slate (`#313842`)
297
-
298
- ### Example Component Prompts
299
- - "Create a product card: white background, 1px solid #ebeef2 border, 8px radius, shadow rgba(0,0,0,0.08) 0px 2px 8px. Image on top. Below: product name in #202429 at 13px Spoqa Han Sans, sale price in #ff204b 700, original price struck-through in #868d96. A #ff204b sale badge (12px/700, white text, 4px radius, 3px 7px padding) top-left over the image."
300
- - "Build a primary CTA button: #ff204b background, white text, 4px radius, 12px 24px padding, 15px weight 700, hover #ff365d. Label '구매하기'."
301
- - "Design a GNB tab bar: white sticky header, BRANDI logotype left at 26px Noto Sans KR. Tabs at 17px — inactive #5f6773, active #202429 with a 2px #ff204b bottom border."
302
- - "Create a search pill: white background, 1px solid #d3d7df border, 20px radius, 7px 12px 7px 8px padding, placeholder #989ca1 at 13px."
303
- - "Build a toast: #313842 background, white text 13px, 8px radius, 12px 16px padding. Message '장바구니에 담겼습니다'."
304
-
305
- ### Iteration Guide
306
- 1. `#ff204b` is the only accent — never add a second persuasion color
307
- 2. Ink is `#202429`, not black; captions are `#868d96`
308
- 3. Sale prices are pink, original prices are struck `#868d96` gray
309
- 4. Radius: 4px controls, 8px cards, 20px search pills, 9999px hearts/avatars
310
- 5. Keep utility text dense (12-13px) and lean on weight 700 for emphasis
311
- 6. Shadows stay neutral gray and low — use the `rgba(32,36,41,0.8)` scrim over imagery
312
- 7. Use `Spoqa Han Sans` / `Noto Sans KR`; no monospace on commerce surfaces
313
- 8. Let product photography dominate; chrome compresses around it
235
+ ### Verified prompt boundary
314
236
 
315
- ---
237
+ “Recreate only the captured Brandi product-detail controls: a `#1e1e1e` direct purchase link and adjacent `#00c73c` partner link, both white 17px/500 Noto Sans KR with 6px radius and `18px 4px` padding; a white 6px product-option select with `#e6e6e6` border and 13px Spoqa Han Sans; and its observed white expanded listbox. Do not add pink CTAs, product cards, heart toggles, hover/focus/error states, grid rules, or a mobile treatment.”
316
238
 
317
239
  ## 10. Voice & Tone
318
240
 
319
- Brandi's voice is the brisk, friendly register of Korean mobile fashion commerce direct, trend-aware, and conversion-focused, speaking to a predominantly young female shopper. Labels are short Korean imperatives and nouns: "구매하기", "좋아요", "장바구니", "찜". The tone is warm but efficient; it does not over-explain. Marketing copy leans into urgency and value ("오늘의 특가", discount rates, limited drops) without tipping into hard-sell desperation. The register is closer to a stylish friend recommending a find than a department store announcing a sale.
320
-
321
- | Context | Tone |
322
- |---|---|
323
- | Product CTAs | Short Korean imperatives. "구매하기", "좋아요 등록". |
324
- | Promo headlines | Value + urgency. Discount rate forward, time-bound framing. |
325
- | Empty states | Gently encouraging, suggests next action (browse, search). |
326
- | Error / validation | Plain, brief, non-blaming Korean. |
327
- | Confirmations | Friendly past-tense toasts: "장바구니에 담겼습니다". |
328
- | Footer / legal | Formal Korean commerce disclosure register. |
329
-
330
- **Forbidden patterns.** Over-long sentences in the dense feed. Cold, corporate phrasing that breaks the friendly register. Aggressive all-caps shouting beyond a short badge. Hard-sell desperation language. English where Korean is expected by the shopper.
241
+ The supplied capture establishes the service name and commerce labels only; it does not provide a first-party editorial voice guide or enough verified copy to derive one. [FILL IN: official voice principles or source-backed microcopy.]
331
242
 
332
243
  ## 11. Brand Narrative
333
244
 
334
- Brandi (브랜디) is a Korean fashion commerce platform operated by **Brandi, Inc.**, positioned as a women's fashion shopping app/web ("여성 패션 쇼핑앱 브랜디", per the site's own page title). It aggregates a large catalog of women's apparel and accessories from many small sellers and brands, packaging discovery, curation, and fast checkout into a mobile-first experience. Its model sits in the same Korean fashion-commerce arena as Zigzag, W Concept, and Musinsa a market where the contest is won on speed, breadth of catalog, sharp pricing, and a frictionless mobile funnel.
335
-
336
- The design system encodes that competitive logic directly. There is no luxury restraint and no editorial whitespace because those are not where this market is won. Instead the system optimizes for the one metric that matters: getting a shopper from a product image to a completed purchase as fast as possible. The single hot pink-red, the dense scannable feed, the sticky 구매하기 bar, and the conversion-coded color usage are all expressions of a fashion-commerce platform that treats the funnel as the product.
337
-
338
- What Brandi embraces: image-forward merchandising, dense high-velocity browsing, a single decisive accent color, and a friendly trend-aware voice. What it avoids: visual decoration that doesn't sell, generous whitespace that costs products-per-screen, and any chrome that competes with the photography.
245
+ Brandi’s public site identifies the service as “여성 패션 쇼핑앱 브랜디.” Its product pages show a public option-selection and purchase surface, while the site footer identifies Newnex as the hosting operator and describes its payment/intermediation boundary. These are product and legal-context facts, not authority for a broader origin story, market position, mission, or rebrand narrative. [FILL IN: first-party history, mission, or current-evolution source.]
339
246
 
340
247
  ## 12. Principles
341
248
 
342
- 1. **One color sells.** `#ff204b` is the entire persuasion palette. Restricting commercial signaling to a single saturated accent makes price, sale, and CTA instantly legible in a busy feed.
343
- 2. **Photography is the hero.** Chrome compresses around product imagery; the UI's job is to frame and never to compete.
344
- 3. **Density is a feature.** More products per screen, tighter type, rationed whitespace — Korean commerce shoppers expect to scan a lot fast.
345
- 4. **Weight over size.** With a narrow type scale, 700 weight does the emphasis work that bigger sizes would in a more spacious system.
346
- 5. **Functional depth only.** Shadows separate floating surfaces; the overlay scrim keeps text legible on imagery. Neither is decorative.
347
- 6. **The funnel is the product.** Sticky CTAs, pink prices, and frictionless paths to 구매하기 are design decisions, not afterthoughts.
348
- 7. **Korean-first legibility.** Type choices serve clean Hangul rendering at small sizes above all else.
249
+ [FILL IN: official Brandi product or design principles. The observed commerce constraints above are not presented as official principles.]
349
250
 
350
251
  ## 13. Personas
351
252
 
352
- *Personas below are fictional archetypes informed by publicly observable Korean fashion-commerce shopper segments, not individual people.*
353
-
354
- **Yujin, 24, Seoul.** University student who shops almost entirely on her phone during commutes. Scans dozens of products per minute and trusts the pink price tag to tell her instantly what's on sale. Abandons any shopping flow that takes more than a couple of taps to reach checkout. Saves looks with the heart toggle to compare later.
355
-
356
- **Subin, 29, Busan.** Office worker who buys seasonal wardrobe refreshes in batches. Compares Brandi against Zigzag and Musinsa on price and shipping speed. Cares that the product imagery is accurate and that discounts are real, not inflated-then-marked-down. The sticky 구매하기 bar means she never loses the buy button while reading reviews.
357
-
358
- **Haeun, 21, Daegu.** Trend-driven shopper who follows fashion drops. Comes for the curation and the daily specials, browses the feed like a social timeline, and responds to urgency framing on promo banners. Lives in the app's notification-driven discovery loop.
253
+ [FILL IN: first-party, source-backed stakeholder groups or research. No synthetic personas are included.]
359
254
 
360
255
  ## 14. States
361
256
 
362
- | State | Treatment |
363
- |---|---|
364
- | **Empty (wishlist / 찜 list)** | White canvas, gray `#868d96` line encouraging browsing, one `#ff204b` CTA to explore the feed. No heavy illustration. |
365
- | **Empty (search no results)** | Plain Korean message in `#5f6773` with the query echoed, suggested categories below. |
366
- | **Loading (feed)** | Gray `#f5f5f5` skeleton blocks at final card dimensions, subtle shimmer. Product image placeholders dominate. |
367
- | **Error (network)** | Brief non-blaming Korean message, a retry action in `#ff204b`. |
368
- | **Error (form validation)** | Field-level, short Korean text below the field, control border shifts to a warning tone. |
369
- | **Success (added to cart)** | `#313842` toast, white text 13px, auto-dismiss: "장바구니에 담겼습니다". |
370
- | **Active (wish toggled on)** | Heart fills `#ff204b` with a brief scale pop. |
371
- | **Disabled** | Reduced opacity on surface and text together; pink actions fade rather than turn gray to keep brand read. |
372
- | **Sold out** | `#202429` overlay label on the thumbnail, CTA disabled, price muted to `#868d96`. |
257
+ Only the product-option expanded/listbox state and the disabled option border were observed. Empty, loading, error, success, cart, wish, sold-out, and validation treatments are not specified.
373
258
 
374
259
  ## 15. Motion & Easing
375
260
 
376
- **Durations**:
377
-
378
- | Token | Value | Use |
379
- |---|---|---|
380
- | `motion-instant` | 0ms | Selection ticks, focus states |
381
- | `motion-fast` | 150ms | Hover, button press, heart toggle |
382
- | `motion-standard` | 250ms | Toast in/out, sheet, dropdown |
383
- | `motion-slow` | 350ms | Page / sticky-bar transitions |
384
-
385
- **Easings**:
386
-
387
- | Token | Curve | Use |
388
- |---|---|---|
389
- | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Toasts, sheets, sticky bars arriving |
390
- | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
391
- | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Two-way transitions |
392
-
393
- **Signature motions.**
394
-
395
- 1. **Heart toggle pop.** Tapping 찜 fills the heart `#ff204b` with a quick `motion-fast` scale bounce — the one moment of delight in an otherwise efficient interface.
396
- 2. **Toast slide-up.** Cart/wish confirmations slide up from the bottom on `motion-standard / ease-enter` as a `#313842` pill, auto-dismissing.
397
- 3. **Sticky CTA reveal.** On product detail scroll, the bottom 구매하기 bar fades/slides in on `motion-standard` so the buy action is always reachable.
398
- 4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, the heart pop and toast slide collapse to instant; the feed stays fully functional.
261
+ No motion duration, easing curve, transition, or reduced-motion behavior was captured. None is specified.
399
262
 
400
263
  ## 16. Do's and Don'ts (Summary)
401
264
 
402
265
  ### Do
403
- - Concentrate all commercial signaling in `#ff204b` — CTA, sale, active heart
404
- - Let product photography lead; keep chrome compressed and white
405
- - Use `#202429` ink and `#868d96` muted gray for the text hierarchy
406
- - Keep 4px controls / 8px cards / 20px search pills / 9999px hearts
407
- - Maintain dense, scannable utility text and a sticky path to 구매하기
266
+
267
+ - Reuse only values tied to a captured Brandi route and selector.
268
+ - Keep font, component, and interaction provenance separate by surface and state.
408
269
 
409
270
  ### Don't
410
- - Don't add a second accent color or colored/heavy shadows
411
- - Don't round primary CTAs into pills or use pure black for text
412
- - Don't trade products-per-screen for generous whitespace
413
- - Don't decorate — every colored element earns its place by selling or guiding
414
- - Don't break the friendly, brisk Korean voice with cold corporate phrasing
271
+
272
+ - Promote declared-only assets or old token values into the current product system.
273
+ - Invent checkout, account, marketing, documentation, or mobile components from these three public routes.