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.
- package/.claude/hooks/lib/preferences-parser.cjs +1 -0
- package/.claude/hooks/lib/preferences-writer.cjs +1 -0
- package/.claude/hooks/post-edit-watch.cjs +1 -0
- package/.claude/hooks/session-end-foldin.cjs +1 -0
- package/.claude/hooks/session-state-loader.cjs +1 -0
- package/.claude/hooks/skill-activation.cjs +1 -0
- package/.claude/settings.json +10 -1
- package/.github/assets/logo-bg.png +0 -0
- package/AGENTS.md +20 -1
- package/CHANGELOG.md +482 -0
- package/MIGRATION.md +103 -0
- package/README.ja.md +56 -19
- package/README.ko.md +47 -30
- package/README.md +48 -30
- package/README.zh-TW.md +59 -22
- package/agents/AGENT.md +8 -7
- package/agents/omd-codex-image.md +1 -1
- package/agents/omd-critic.md +6 -7
- package/agents/omd-designer-review.md +1 -1
- package/agents/omd-final-qa.md +1 -1
- package/agents/omd-humanizer.md +38 -0
- package/agents/omd-kr-writer.md +3 -4
- package/agents/omd-locale-adapter.md +12 -16
- package/agents/omd-master.md +24 -19
- package/agents/omd-microcopy.md +1 -1
- package/agents/omd-orchestrator.md +7 -8
- package/agents/omd-slop-auditor.md +31 -0
- package/agents/omd-ux-researcher.md +1 -1
- package/data/reference-fingerprints.json +2761 -85
- package/dist/bin/oh-my-design.js +16 -8
- package/dist/bin/oh-my-design.js.map +1 -1
- package/dist/chunk-UJIHCEYF.js +99 -0
- package/dist/chunk-UJIHCEYF.js.map +1 -0
- package/dist/doctor-LDWSFM3I.js +763 -0
- package/dist/doctor-LDWSFM3I.js.map +1 -0
- package/dist/install-skills-ZZFNJ2II.js +1120 -0
- package/dist/install-skills-ZZFNJ2II.js.map +1 -0
- package/docs/CLI_QUICKSTART.md +157 -0
- package/package.json +25 -4
- package/scripts/postinstall.cjs +5 -4
- package/skills/claude-design/SKILL.md +38 -14
- package/skills/claude-design/references/claude-design-flow.md +11 -11
- package/skills/claude-design/references/codebase-analysis.md +5 -4
- package/skills/omd-final-qa/SKILL.md +1 -1
- package/skills/omd-harness/SKILL.md +51 -50
- package/skills/omd-humanize/SKILL.md +116 -0
- package/skills/omd-humanize/agents/openai.yaml +4 -0
- package/skills/omd-humanize/references/locale-playbooks.md +102 -0
- package/skills/omd-humanize/references/sources.md +11 -0
- package/skills/omd-init/SKILL.md +18 -12
- package/skills/omd-locale-adapter/SKILL.md +58 -91
- package/skills/omd-orchestrator/SKILL.md +11 -5
- package/skills/omd-reference-capture/SKILL.md +80 -26
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
- package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
- package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
- package/skills/omd-slop-audit/SKILL.md +110 -0
- package/skills/omd-slop-audit/agents/openai.yaml +4 -0
- package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
- package/skills/omd-slop-audit/references/sources.md +24 -0
- package/web/references/104/DESIGN.md +354 -0
- package/web/references/11st/DESIGN.md +197 -316
- package/web/references/29cm/DESIGN.md +297 -393
- package/web/references/42dot/DESIGN.md +390 -0
- package/web/references/8percent/DESIGN.md +438 -0
- package/web/references/ably/DESIGN.md +267 -572
- package/web/references/acer/DESIGN.md +329 -0
- package/web/references/airbnb/DESIGN.md +219 -557
- package/web/references/airbridge/DESIGN.md +451 -0
- package/web/references/alipay/DESIGN.md +179 -420
- package/web/references/apple/DESIGN.md +224 -498
- package/web/references/asleep/DESIGN.md +402 -0
- package/web/references/au/DESIGN.md +334 -0
- package/web/references/autopedia/DESIGN.md +382 -0
- package/web/references/aws-cloudscape/DESIGN.md +241 -0
- package/web/references/baemin/DESIGN.md +332 -491
- package/web/references/banksalad/DESIGN.md +269 -180
- package/web/references/barogo/DESIGN.md +416 -0
- package/web/references/beusable/DESIGN.md +464 -0
- package/web/references/bigin/DESIGN.md +454 -0
- package/web/references/bilibili/DESIGN.md +206 -374
- package/web/references/bmw/DESIGN.md +162 -276
- package/web/references/brandi/DESIGN.md +184 -325
- package/web/references/buzzvil/DESIGN.md +457 -0
- package/web/references/cafe24/DESIGN.md +472 -0
- package/web/references/catchtable/DESIGN.md +219 -264
- package/web/references/cgv/DESIGN.md +317 -0
- package/web/references/channeltalk/DESIGN.md +210 -336
- package/web/references/china-airlines/DESIGN.md +291 -0
- package/web/references/cjonstyle/DESIGN.md +453 -0
- package/web/references/class101/DESIGN.md +168 -387
- package/web/references/classum/DESIGN.md +228 -203
- package/web/references/claude/DESIGN.md +242 -479
- package/web/references/clay/DESIGN.md +179 -377
- package/web/references/clickhouse/DESIGN.md +254 -343
- package/web/references/codeit/DESIGN.md +470 -0
- package/web/references/cohere/DESIGN.md +214 -324
- package/web/references/coinone/DESIGN.md +199 -179
- package/web/references/corca/DESIGN.md +414 -0
- package/web/references/coupang/DESIGN.md +205 -475
- package/web/references/cursor/DESIGN.md +240 -381
- package/web/references/dabang/DESIGN.md +248 -213
- package/web/references/dable/DESIGN.md +431 -0
- package/web/references/datarize/DESIGN.md +338 -0
- package/web/references/dealicious/DESIGN.md +402 -0
- package/web/references/drdiary/DESIGN.md +404 -0
- package/web/references/elastic/DESIGN.md +238 -0
- package/web/references/elevenlabs/DESIGN.md +183 -321
- package/web/references/elice/DESIGN.md +445 -0
- package/web/references/eslite/DESIGN.md +257 -0
- package/web/references/evaair/DESIGN.md +338 -0
- package/web/references/expo/DESIGN.md +238 -331
- package/web/references/familymart-tw/DESIGN.md +254 -0
- package/web/references/ferrari/DESIGN.md +160 -377
- package/web/references/figma/DESIGN.md +197 -451
- package/web/references/fitpet/DESIGN.md +445 -0
- package/web/references/flex/DESIGN.md +170 -253
- package/web/references/framer/DESIGN.md +197 -340
- package/web/references/freee/DESIGN.md +211 -533
- package/web/references/friendliai/DESIGN.md +431 -0
- package/web/references/frip/DESIGN.md +440 -0
- package/web/references/furiosaai/DESIGN.md +450 -0
- package/web/references/gangnamunni/DESIGN.md +154 -591
- package/web/references/gaudiolab/DESIGN.md +414 -0
- package/web/references/google/DESIGN.md +290 -398
- package/web/references/goorm/DESIGN.md +470 -0
- package/web/references/greencar/DESIGN.md +420 -0
- package/web/references/hackle/DESIGN.md +472 -0
- package/web/references/hashicorp/DESIGN.md +273 -318
- package/web/references/heydealer/DESIGN.md +429 -0
- package/web/references/humanscape/DESIGN.md +433 -0
- package/web/references/hwahae/DESIGN.md +453 -0
- package/web/references/hyundai/DESIGN.md +158 -368
- package/web/references/hyundaicard/DESIGN.md +171 -121
- package/web/references/ibm/DESIGN.md +227 -378
- package/web/references/idus/DESIGN.md +450 -0
- package/web/references/igaworks/DESIGN.md +437 -0
- package/web/references/inflearn/DESIGN.md +221 -366
- package/web/references/intuit/DESIGN.md +244 -0
- package/web/references/jandi/DESIGN.md +191 -291
- package/web/references/jobplanet/DESIGN.md +415 -0
- package/web/references/kakao/DESIGN.md +287 -475
- package/web/references/kakaobank/DESIGN.md +220 -521
- package/web/references/kakaogames/DESIGN.md +220 -0
- package/web/references/kakaopay/DESIGN.md +207 -526
- package/web/references/karrot/DESIGN.md +227 -251
- package/web/references/kb-kookmin/DESIGN.md +308 -0
- package/web/references/kbank/DESIGN.md +220 -175
- package/web/references/kcd/DESIGN.md +432 -0
- package/web/references/kmong/DESIGN.md +281 -356
- package/web/references/krds/DESIGN.md +245 -19
- package/web/references/kream/DESIGN.md +224 -359
- package/web/references/kurly/DESIGN.md +211 -533
- package/web/references/kyobobook/DESIGN.md +445 -0
- package/web/references/lablup/DESIGN.md +474 -0
- package/web/references/lamborghini/DESIGN.md +198 -360
- package/web/references/lemonbase/DESIGN.md +452 -0
- package/web/references/lguplus/DESIGN.md +259 -0
- package/web/references/likelion/DESIGN.md +283 -0
- package/web/references/line/DESIGN.md +396 -355
- package/web/references/linear.app/DESIGN.md +209 -562
- package/web/references/lotteon/DESIGN.md +386 -0
- package/web/references/lovable/DESIGN.md +255 -349
- package/web/references/makinarocks/DESIGN.md +242 -0
- package/web/references/maum-ai/DESIGN.md +423 -0
- package/web/references/medibloc/DESIGN.md +425 -0
- package/web/references/megabox/DESIGN.md +232 -0
- package/web/references/mercari/DESIGN.md +217 -434
- package/web/references/microsoft/DESIGN.md +234 -388
- package/web/references/mildang/DESIGN.md +411 -0
- package/web/references/millie/DESIGN.md +183 -504
- package/web/references/minimax/DESIGN.md +264 -322
- package/web/references/miricanvas/DESIGN.md +182 -355
- package/web/references/miro/DESIGN.md +234 -232
- package/web/references/mistral.ai/DESIGN.md +231 -314
- package/web/references/mixi/DESIGN.md +234 -0
- package/web/references/moin/DESIGN.md +445 -0
- package/web/references/mongodb/DESIGN.md +219 -316
- package/web/references/moreh/DESIGN.md +437 -0
- package/web/references/musinsa/DESIGN.md +184 -510
- package/web/references/mynavi/DESIGN.md +242 -0
- package/web/references/myrealtrip/DESIGN.md +169 -406
- package/web/references/naver/DESIGN.md +328 -499
- package/web/references/naverwebtoon/DESIGN.md +172 -395
- package/web/references/neosapience/DESIGN.md +441 -0
- package/web/references/nhn/DESIGN.md +169 -346
- package/web/references/nhncloud/DESIGN.md +185 -123
- package/web/references/nota/DESIGN.md +451 -0
- package/web/references/notion/DESIGN.md +271 -475
- package/web/references/nrise/DESIGN.md +417 -0
- package/web/references/ohouse/DESIGN.md +210 -549
- package/web/references/oliveyoung/DESIGN.md +217 -326
- package/web/references/ollama/DESIGN.md +241 -308
- package/web/references/onestore/DESIGN.md +248 -0
- package/web/references/palantir/DESIGN.md +256 -0
- package/web/references/panasonic/DESIGN.md +276 -0
- package/web/references/patternfly/DESIGN.md +259 -0
- package/web/references/payhere/DESIGN.md +438 -0
- package/web/references/pega/DESIGN.md +262 -0
- package/web/references/peoplefund/DESIGN.md +431 -0
- package/web/references/petfriends/DESIGN.md +428 -0
- package/web/references/pinkfong/DESIGN.md +199 -367
- package/web/references/pinterest/DESIGN.md +258 -308
- package/web/references/portone/DESIGN.md +446 -0
- package/web/references/poya/DESIGN.md +286 -0
- package/web/references/pozalabs/DESIGN.md +438 -0
- package/web/references/protopie/DESIGN.md +419 -0
- package/web/references/qraft/DESIGN.md +448 -0
- package/web/references/queenit/DESIGN.md +432 -0
- package/web/references/quotabook/DESIGN.md +449 -0
- package/web/references/rebellions/DESIGN.md +449 -0
- package/web/references/recruit/DESIGN.md +247 -0
- package/web/references/remember/DESIGN.md +202 -396
- package/web/references/resend/DESIGN.md +274 -348
- package/web/references/returnzero/DESIGN.md +460 -0
- package/web/references/sakura-internet/DESIGN.md +269 -0
- package/web/references/samsung/DESIGN.md +157 -359
- package/web/references/sandoll/DESIGN.md +445 -0
- package/web/references/sanity/DESIGN.md +241 -375
- package/web/references/saramin/DESIGN.md +465 -0
- package/web/references/scatterlab/DESIGN.md +412 -0
- package/web/references/selectstar/DESIGN.md +439 -0
- package/web/references/servicenow/DESIGN.md +289 -0
- package/web/references/shiftee/DESIGN.md +468 -0
- package/web/references/shinhanbank/DESIGN.md +161 -341
- package/web/references/shinhancard/DESIGN.md +208 -319
- package/web/references/sionic/DESIGN.md +454 -0
- package/web/references/sktelecom/DESIGN.md +310 -0
- package/web/references/socar/DESIGN.md +125 -32
- package/web/references/softbank/DESIGN.md +231 -0
- package/web/references/solapi/DESIGN.md +483 -0
- package/web/references/sony/DESIGN.md +234 -0
- package/web/references/soop/DESIGN.md +261 -0
- package/web/references/spacex/DESIGN.md +184 -323
- package/web/references/spotify/DESIGN.md +253 -394
- package/web/references/squeezebits/DESIGN.md +441 -0
- package/web/references/stayfolio/DESIGN.md +422 -0
- package/web/references/stripe/DESIGN.md +212 -491
- package/web/references/supabase/DESIGN.md +244 -316
- package/web/references/supertone/DESIGN.md +413 -0
- package/web/references/tabling/DESIGN.md +415 -0
- package/web/references/taishinbank/DESIGN.md +243 -0
- package/web/references/teamlab/DESIGN.md +240 -0
- package/web/references/teamsparta/DESIGN.md +472 -0
- package/web/references/tellingme/DESIGN.md +392 -0
- package/web/references/tesla/DESIGN.md +244 -427
- package/web/references/thsr/DESIGN.md +284 -0
- package/web/references/thumbtack/DESIGN.md +302 -0
- package/web/references/together.ai/DESIGN.md +257 -304
- package/web/references/toss/DESIGN.md +251 -593
- package/web/references/toss-securities/DESIGN.md +255 -178
- package/web/references/tossbank/DESIGN.md +195 -491
- package/web/references/toyota/DESIGN.md +238 -0
- package/web/references/tving/DESIGN.md +197 -245
- package/web/references/typed/DESIGN.md +413 -0
- package/web/references/uber/DESIGN.md +256 -333
- package/web/references/udn/DESIGN.md +250 -0
- package/web/references/upbit/DESIGN.md +145 -256
- package/web/references/upstage/DESIGN.md +211 -204
- package/web/references/uswds/DESIGN.md +287 -0
- package/web/references/vercel/DESIGN.md +236 -440
- package/web/references/vuno/DESIGN.md +413 -0
- package/web/references/wanted/DESIGN.md +215 -487
- package/web/references/weverse/DESIGN.md +437 -0
- package/web/references/wise/DESIGN.md +223 -231
- package/web/references/wisetracker/DESIGN.md +462 -0
- package/web/references/wooribank/DESIGN.md +245 -0
- package/web/references/yanolja/DESIGN.md +250 -419
- package/web/references/yeogiotte/DESIGN.md +235 -418
- package/web/references/zapier/DESIGN.md +256 -377
- package/web/references/zendesk/DESIGN.md +288 -0
- package/web/references/zigzag/DESIGN.md +200 -621
- package/dist/install-skills-7UUDOLG2.js +0 -734
- 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:
|
|
5
|
+
category: ecommerce
|
|
6
6
|
homepage: "https://www.brandi.co.kr"
|
|
7
|
-
primary_color: "#
|
|
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-
|
|
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:
|
|
16
|
-
extracted: "2026-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
on
|
|
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: {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
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
|
-
###
|
|
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
|
-
|
|
93
|
-
- **
|
|
94
|
-
- **
|
|
95
|
-
- **
|
|
96
|
-
- **
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
-
###
|
|
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
|
-
**
|
|
177
|
-
- Background: `#
|
|
147
|
+
**Direct purchase — observed default**
|
|
148
|
+
- Background: `#1e1e1e`
|
|
178
149
|
- Text: `#ffffff`
|
|
179
|
-
-
|
|
180
|
-
-
|
|
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
|
-
|
|
183
|
-
-
|
|
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:
|
|
192
|
-
- Padding:
|
|
193
|
-
- Font:
|
|
194
|
-
- Use: "
|
|
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
|
-
**
|
|
199
|
-
|
|
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
|
-
|
|
175
|
+
### Product option listbox
|
|
202
176
|
|
|
203
|
-
|
|
204
|
-
-
|
|
205
|
-
-
|
|
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
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
239
|
-
- Keep the
|
|
240
|
-
-
|
|
241
|
-
-
|
|
242
|
-
-
|
|
243
|
-
-
|
|
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
|
-
|
|
249
|
-
-
|
|
250
|
-
-
|
|
251
|
-
-
|
|
252
|
-
-
|
|
253
|
-
-
|
|
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
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
404
|
-
-
|
|
405
|
-
-
|
|
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
|
-
|
|
411
|
-
-
|
|
412
|
-
-
|
|
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.
|