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.
- 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 +1995 -38
- 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/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/bilibili/DESIGN.md +206 -374
- package/web/references/bmw/DESIGN.md +162 -276
- package/web/references/brandi/DESIGN.md +184 -325
- 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/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 +217 -330
- 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/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/gangnamunni/DESIGN.md +154 -591
- package/web/references/gaudiolab/DESIGN.md +414 -0
- package/web/references/google/DESIGN.md +290 -398
- 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/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/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/lamborghini/DESIGN.md +198 -360
- 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 +149 -349
- 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/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/nhn/DESIGN.md +169 -346
- package/web/references/nhncloud/DESIGN.md +185 -123
- 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/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/quotabook/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/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/scatterlab/DESIGN.md +412 -0
- package/web/references/selectstar/DESIGN.md +439 -0
- package/web/references/servicenow/DESIGN.md +289 -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/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/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/wanted/DESIGN.md +215 -487
- 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
|
@@ -8,425 +8,290 @@ primary_color: "#000000"
|
|
|
8
8
|
logo:
|
|
9
9
|
type: favicon
|
|
10
10
|
slug: "https://www.google.com/s2/favicons?domain=kream.co.kr&sz=256"
|
|
11
|
-
verified: "2026-
|
|
11
|
+
verified: "2026-07-13"
|
|
12
12
|
omd: "0.1"
|
|
13
|
+
verification_v2:
|
|
14
|
+
schema: 2
|
|
15
|
+
checked: "2026-07-13"
|
|
16
|
+
surfaces:
|
|
17
|
+
- { id: home, kind: commerce-home, url: "https://kream.co.kr/", inspected: "2026-07-13" }
|
|
18
|
+
- { id: recovery, kind: commerce-recovery, url: "https://kream.co.kr/shop", inspected: "2026-07-13" }
|
|
19
|
+
- { id: search, kind: commerce-search, url: "https://kream.co.kr/search?keyword=nike", inspected: "2026-07-13" }
|
|
20
|
+
sources:
|
|
21
|
+
- { id: home-live, kind: product-surface, url: "https://kream.co.kr/", captured: "2026-07-13" }
|
|
22
|
+
- { id: recovery-live, kind: product-surface, url: "https://kream.co.kr/shop", captured: "2026-07-13" }
|
|
23
|
+
- { id: search-live, kind: product-surface, url: "https://kream.co.kr/search?keyword=nike", captured: "2026-07-13" }
|
|
24
|
+
- { id: buying-faq, kind: official-doc, url: "https://kream.co.kr/faq?category=buying&page=0", captured: "2026-07-13" }
|
|
25
|
+
- { id: authentication-policy, kind: official-doc, url: "https://kream.co.kr/auth_policy", captured: "2026-07-13" }
|
|
26
|
+
- { id: pretendard-docs, kind: official-doc, url: "https://github.com/orioncactus/pretendard/blob/main/packages/pretendard/docs/en/README.md", captured: "2026-07-13" }
|
|
27
|
+
- { id: pretendard-license, kind: license, url: "https://github.com/orioncactus/pretendard/blob/main/LICENSE", captured: "2026-07-13" }
|
|
28
|
+
conflicts: []
|
|
29
|
+
claims:
|
|
30
|
+
"tokens.colors.canvas": &home { surface_id: home, source_id: home-live, method: live-inspect, captured: "2026-07-13" }
|
|
31
|
+
"tokens.colors.primary": *home
|
|
32
|
+
"tokens.colors.foreground": *home
|
|
33
|
+
"tokens.colors.surface": *home
|
|
34
|
+
"tokens.colors.muted": &search { surface_id: search, source_id: search-live, method: live-inspect, captured: "2026-07-13" }
|
|
35
|
+
"tokens.colors.hairline": *search
|
|
36
|
+
"tokens.colors.on-primary": *home
|
|
37
|
+
"tokens.typography.family.ui": *home
|
|
38
|
+
"tokens.typography.body.size": *home
|
|
39
|
+
"tokens.typography.body.weight": *home
|
|
40
|
+
"tokens.typography.body.use": *home
|
|
41
|
+
"tokens.typography.utility.size": *search
|
|
42
|
+
"tokens.typography.utility.weight": *search
|
|
43
|
+
"tokens.typography.utility.use": *search
|
|
44
|
+
"tokens.typography.search.size": *search
|
|
45
|
+
"tokens.typography.search.weight": *search
|
|
46
|
+
"tokens.typography.search.lineHeight": *search
|
|
47
|
+
"tokens.typography.search.use": *search
|
|
48
|
+
"tokens.typography.tab-active.size": *search
|
|
49
|
+
"tokens.typography.tab-active.weight": *search
|
|
50
|
+
"tokens.typography.tab-active.use": *search
|
|
51
|
+
"tokens.spacing.xxs": *home
|
|
52
|
+
"tokens.spacing.xs": *home
|
|
53
|
+
"tokens.spacing.sm": *search
|
|
54
|
+
"tokens.spacing.md": *home
|
|
55
|
+
"tokens.spacing.lg": *home
|
|
56
|
+
"tokens.spacing.xl": *home
|
|
57
|
+
"tokens.rounded.none": *home
|
|
58
|
+
"tokens.rounded.sm": *search
|
|
59
|
+
"tokens.rounded.recovery": &recovery { surface_id: recovery, source_id: recovery-live, method: live-inspect, captured: "2026-07-13" }
|
|
60
|
+
"tokens.rounded.merchandising-panel": *home
|
|
61
|
+
"tokens.rounded.search-filter-pill": *search
|
|
62
|
+
"tokens.shadow.none": *home
|
|
13
63
|
tokens:
|
|
14
|
-
source:
|
|
15
|
-
extracted: "2026-
|
|
64
|
+
source: live-extract
|
|
65
|
+
extracted: "2026-07-13"
|
|
16
66
|
colors:
|
|
17
|
-
primary: "#222222"
|
|
18
|
-
foreground: "#000000"
|
|
19
67
|
canvas: "#ffffff"
|
|
68
|
+
primary: "#222222"
|
|
69
|
+
foreground: "#222222"
|
|
20
70
|
surface: "#f5f5f5"
|
|
21
|
-
muted: "#
|
|
22
|
-
hairline: "#
|
|
71
|
+
muted: "#4e4e4e"
|
|
72
|
+
hairline: "#f0f0f0"
|
|
23
73
|
on-primary: "#ffffff"
|
|
24
74
|
typography:
|
|
25
|
-
family: {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
none: "none"
|
|
36
|
-
components_harvested: true
|
|
37
|
-
components:
|
|
38
|
-
chip-filter: { type: badge, bg: "#f4f4f4", fg: "#222222", radius: "30px", height: "30px", padding: "0 12px", font: "13px / 400", use: "Search filter row chip (배송/카테고리/색상/사이즈/가격대)" }
|
|
39
|
-
pill-category: { type: badge, bg: "#ffffff", fg: "#222222", border: "1px solid #ebebeb", radius: "6px", height: "30px", font: "13px / 400", use: "Secondary category quick-row" }
|
|
40
|
-
shortcut-keyword: { type: listItem, bg: "#fafafa", fg: "#222222", radius: "6px", height: "48px", font: "16px / 400", use: "Popular keyword shortcut anchor" }
|
|
41
|
-
card-banner: { type: card, bg: "#f5f5f5", fg: "#222222", radius: "16px", padding: "0", font: "16px / 700", use: "Hero / merchandising banner tile (1188x475)" }
|
|
42
|
-
input-search: { type: input, bg: "transparent", fg: "#222222", radius: "0", font: "24px / 700", use: "Homepage hero search — typed keyword as headline" }
|
|
43
|
-
button-ghost: { type: button, bg: "transparent", fg: "#000000", border: "1px solid rgba(0,0,0,0.6)", radius: "8px", height: "36px", font: "13px / 300", use: "Fallback / secondary recovery action (홈으로 가기)" }
|
|
44
|
-
tab-strip: { type: tab, bg: "transparent", fg: "#222222", font: "16px / 700", active: "2px bottom border #222222", use: "Tab strip 상품/스타일/프로필 — weight + underline signals selection" }
|
|
75
|
+
family: { ui: "Pretendard Variable" }
|
|
76
|
+
body: { size: 16, weight: 400, use: "Observed default live-commerce text on home and search." }
|
|
77
|
+
utility: { size: 13, weight: 400, use: "Observed search-filter control text." }
|
|
78
|
+
search: { size: 24, weight: 700, lineHeight: 1.21, use: "Observed search input text." }
|
|
79
|
+
tab-active: { size: 16, weight: 700, use: "Observed active search-tab label." }
|
|
80
|
+
spacing: { xxs: 2, xs: 4, sm: 6, md: 8, lg: 12, xl: 24 }
|
|
81
|
+
rounded: { none: 0, sm: 6, recovery: 8, merchandising-panel: 16, search-filter-pill: 30 }
|
|
82
|
+
shadow: { none: "none" }
|
|
83
|
+
components_harvested: false
|
|
84
|
+
components: {}
|
|
45
85
|
---
|
|
46
86
|
|
|
47
87
|
# Design System Inspiration of KREAM
|
|
48
88
|
|
|
49
89
|
## 1. Visual Theme & Atmosphere
|
|
50
90
|
|
|
51
|
-
KREAM is
|
|
52
|
-
|
|
53
|
-
The defining typographic move is **Pretendard Variable** running the whole stack — body at 16px/400 on `#222`, display H1 at 32px/700, the homepage search query input itself at 24px/700 as if the user's keyword is the headline. Chrome controls drop down to 13px (chips, ghost buttons), and outside that single jump from 32px → 24px → 16px → 13px there is no other scale. The hierarchy is intentionally flat: hero banner → tabs (상품/스타일/프로필) → filter chips (배송·카테고리·성별·색상·브랜드·사이즈·가격대) → product grid.
|
|
91
|
+
KREAM is a Korean limited-edition marketplace where members can buy immediately at the lowest available sell offer or place a bid; when a match is made, the seller sends the item to KREAM for authentication before delivery. Its official FAQ also describes warehouse-held, authenticated inventory as eligible for rapid shipping. That transaction model gives the public commerce surface a particular character: a quiet white and charcoal information field that makes product imagery, price, filters, and rankings do the work rather than relying on a broad brand-color system. The current home route is a merchandising surface with campaign modules and product discovery, while the search route is the strongest evidence for the marketplace controls themselves. [Buying FAQ](https://kream.co.kr/faq?category=buying&page=0) · [Authentication standards](https://kream.co.kr/auth_policy)
|
|
54
92
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
Radius is a four-step scale and each step has a job: 16px = banner card (hero / merchandising tile), 30px = pill chip (filter toggle), 8px = pill input or ghost button (auth & fallback chrome), 6px = list-row card and category quickrow button. State chrome inherits the base radius and changes only ink and fill — never radius — so the system reads as one shape language at every density.
|
|
93
|
+
The supplied live capture shows a tightly neutral interface: `#222222` is the recurring text and border ink, `#ffffff` the canvas, `#f5f5f5` a home-surface fill, and a small search-control layer in `#4e4e4e`/`#f0f0f0`. Corners are not globally rounded: the evidence ranges from square tabs and inputs to 6px product/filter geometry, one 8px recovery action, 16px home merchandising panels, and 30px filter pills. The practical distinction is surface-specific, not a universal component kit. Marketing campaign content visible on the home route is not used as documentation or product-state evidence; the separate FAQ and authentication pages provide service context only, not UI tokens.
|
|
58
94
|
|
|
59
95
|
**Key Characteristics:**
|
|
60
|
-
- Pretendard Variable across all surfaces — one font, four weights observed (300 / 400 / 700, with system-ui fallback chain)
|
|
61
|
-
- Pure `#ffffff` page background, `#222` as primary ink (not `#000` — `#000` is reserved for display heads and the H1 token)
|
|
62
|
-
- Four-step radius scale: 16px banner / 30px chip / 8px ghost button / 6px row card — never blended
|
|
63
|
-
- ~50 CSS custom properties exposed at `:root` under `--greyscale-dark-*` and `--greyscale-white-alpha-*` — a formal grayscale token system
|
|
64
|
-
- Single observed accent: `rgb(17, 161, 151)` teal, used sparingly for price-watch signaling
|
|
65
|
-
- 30px-tall filter chips on `#f4f4f4` — the workhorse navigation primitive
|
|
66
|
-
- Search query rendered at 24px/700 in the input itself — the user's keyword becomes the page headline
|
|
67
|
-
- No shadows. No gradients. No decorative iconography in the chrome
|
|
68
|
-
- Card height is variable on home (475px banner) and fixed on listings (238px product card) — the system encodes "merchandising" vs "trading" as distinct card heights
|
|
69
|
-
- Tab strip uses 700 weight for active, 400 for inactive — color stays `#222` either way (weight, not hue, signals selection)
|
|
70
96
|
|
|
71
|
-
|
|
97
|
+
- Live commerce use of `Pretendard Variable`, verified by computed-family usage plus a loaded FontFaceSet match and 92 KREAM-hosted subset source URLs
|
|
98
|
+
- White canvas and charcoal `#222222` chrome across home, recovery, and search captures
|
|
99
|
+
- Search-route filters distinguish pill fill (`#f4f4f4`, 30px) from outlined rectangular controls (`#ffffff`, 6px)
|
|
100
|
+
- Active search tabs retain the charcoal ink and use a 2px bottom border with 700 weight
|
|
101
|
+
- No captured hover, focus, pressed, dialog, toast, loading, responsive, or other interaction state
|
|
72
102
|
|
|
73
|
-
|
|
74
|
-
- **Ink** `#222222` — body text, card titles, default control color (observed 4,763 times on home — by far the dominant chroma)
|
|
75
|
-
- **Ink Strong / Display** `#000000` — H1 display only, never on body
|
|
76
|
-
- **Page Background** `#ffffff` — global canvas
|
|
77
|
-
|
|
78
|
-
### Surface neutrals
|
|
79
|
-
- **Banner card** `#f5f5f5` — hero / merchandising tile (`rgb(245, 245, 245)`)
|
|
80
|
-
- **Fill light grey** `#f4f4f4` — filter chip default, "chip-fill" CSS var token `--greyscale-dark-4`
|
|
81
|
-
- **Surface extra light** `#fafafa` — sub-card / quickrow row (`--greyscale-dark-2`)
|
|
82
|
-
- **Border extra light** `#f0f0f0` — divider (`--greyscale-dark-6`)
|
|
83
|
-
- **Border light** `#ebebeb` — card outline (`--greyscale-dark-8`)
|
|
84
|
-
- **Border medium** `#d3d3d3` — input border, separator (`--greyscale-dark-20`)
|
|
85
|
-
|
|
86
|
-
### Greyscale ramp (CSS var names — captured live from `:root`)
|
|
87
|
-
| Token name | Hex |
|
|
88
|
-
| --- | --- |
|
|
89
|
-
| `--Greyscale-Dark-100` | `#000` |
|
|
90
|
-
| `--greyscale-dark-90-dark` | `#222` |
|
|
91
|
-
| `--Greyscale-Dark-75` | `#404040` |
|
|
92
|
-
| `--greyscale-dark-80-grey-dark` | `#333` |
|
|
93
|
-
| `--greyscale-dark-70-dark-80` | `#4e4e4e` |
|
|
94
|
-
| `--Greyscale-Dark-60` | `#616161` |
|
|
95
|
-
| `--Greyscale-Dark-50` | `#787878` |
|
|
96
|
-
| `--greyscale-dark-40-dark-50` | `#909090` |
|
|
97
|
-
| `--greyscale-dark-35-dark-40` | `#a7a7a7` |
|
|
98
|
-
| `--greyscale-dark-30-dark-30-grey-medium` | `#bbb` |
|
|
99
|
-
| `--greyscale-dark-20-border-medium-grey` | `#d3d3d3` |
|
|
100
|
-
| `--Greyscale-Dark-10` | `#e6e6e6` |
|
|
101
|
-
| `--greyscale-dark-8-border-light-grey` | `#ebebeb` |
|
|
102
|
-
| `--greyscale-dark-6-border-extra-light-grey` | `#f0f0f0` |
|
|
103
|
-
| `--greyscale-dark-4-dark-5-fill-light-grey-grey-light-brand-ect` | `#f4f4f4` |
|
|
104
|
-
| `--greyscale-dark-2-grey-extra-light` | `#fafafa` |
|
|
105
|
-
| `--greyscale-dark-0-white` | `#fff` |
|
|
106
|
-
|
|
107
|
-
Alpha siblings on black (`--greyscale-dark-alpha-*`) at 6/8/10/20/30/35/40/50/60/70/75/80/90 and on white (`--greyscale-white-alpha-*`) at 2/4/6/8/10/20/30/35/40/50/60/70/75/80/90 are also exposed — used for overlays and disabled states.
|
|
108
|
-
|
|
109
|
-
### Accent (rare)
|
|
110
|
-
- **Watch teal** `rgb(17, 161, 151)` — observed twice on home, used for price-movement / watchlist signal
|
|
111
|
-
- **Swiper system** `#007aff` — exposed as `--swiper-theme-color` but not used in product chrome (carousel library default; informational only)
|
|
112
|
-
|
|
113
|
-
### Muted ink overlays (observed)
|
|
114
|
-
- `rgba(0, 0, 0, 0.533)` — caption ink (#1)
|
|
115
|
-
- `rgba(0, 0, 0, 0.44)` — secondary caption
|
|
116
|
-
- `rgba(0, 0, 0, 0.345)` — disabled-leaning ink
|
|
117
|
-
- `rgba(34, 34, 34, 0.5)` — subtitle ink on grayscale fill
|
|
118
|
-
- `rgba(255, 255, 255, 0.804)` — overlay-on-image label
|
|
119
|
-
|
|
120
|
-
## 3. Typography
|
|
121
|
-
|
|
122
|
-
### Family
|
|
123
|
-
**Pretendard Variable** (primary) with system fallback stack:
|
|
124
|
-
```
|
|
125
|
-
"Pretendard Variable", Pretendard, -apple-system, system-ui,
|
|
126
|
-
Roboto, "Helvetica Neue", "Segoe UI",
|
|
127
|
-
"Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic",
|
|
128
|
-
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", sans-serif
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### Scale (observed live)
|
|
132
|
-
| Role | Size | Weight | Color | Use |
|
|
133
|
-
| --- | --- | --- | --- | --- |
|
|
134
|
-
| Display / H1 | 32px | 700 | `#000` | Page title |
|
|
135
|
-
| Search query (input) | 24px | 700 | `#222` | The keyword the user typed |
|
|
136
|
-
| Tab label (active) | 16px | 700 | `#222` | 상품 / 스타일 / 프로필 |
|
|
137
|
-
| Tab label (default) | 16px | 400 | `#222` | Inactive tab |
|
|
138
|
-
| Body | 16px | 400 | `#222` | Default copy |
|
|
139
|
-
| Card title | 16px | 700 | `#222` | Banner card heading |
|
|
140
|
-
| Shortcut row | 16px | 400 | `#222` | Popular keyword shortcut on `#fafafa` |
|
|
141
|
-
| Chip | 13px | 400 | `#222` | Filter chip on `#f4f4f4` |
|
|
142
|
-
| Ghost button | 13px | 300 | `#000` | 404 fallback "홈으로 가기" |
|
|
143
|
-
|
|
144
|
-
### Hierarchy rule
|
|
145
|
-
KREAM uses **weight, not size**, to signal active state across tabs and toggle controls. Body and active-tab share 16px; only weight changes (400 → 700). This is the same pattern Apple uses on iOS tab bars and is consistent across KREAM's search, exhibition, and home tab strips.
|
|
146
|
-
|
|
147
|
-
## 4. Components
|
|
148
|
-
|
|
149
|
-
### Filter chip
|
|
150
|
-
|
|
151
|
-
**Default**
|
|
152
|
-
- Background: `#f4f4f4`
|
|
153
|
-
- Text: `#222`
|
|
154
|
-
- Border: none
|
|
155
|
-
- Radius: `30px`
|
|
156
|
-
- Padding: ~`0 12px` (text-only chip, 30px height)
|
|
157
|
-
- Font: `13px / 400 / Pretendard Variable`
|
|
158
|
-
- Height: `30px`
|
|
159
|
-
- Use: search filter row (배송 / 카테고리 / 성별 / 색상 / 브랜드 / 사이즈 / 가격대) — quantitative counter (e.g. "배송0") shown trailing
|
|
160
|
-
|
|
161
|
-
**Active (selected count > 0)**
|
|
162
|
-
- Same chrome; counter number renders inline (`사이즈3`)
|
|
163
|
-
- No background change observed (relies on count text to signal)
|
|
164
|
-
|
|
165
|
-
### Category pill (quick-row)
|
|
166
|
-
|
|
167
|
-
**Default**
|
|
168
|
-
- Background: `#ffffff`
|
|
169
|
-
- Text: `#222`
|
|
170
|
-
- Border: `1px solid` (observed light grey, ~`#ebebeb`)
|
|
171
|
-
- Radius: `6px`
|
|
172
|
-
- Height: `30px`
|
|
173
|
-
- Font: `13px / 400`
|
|
174
|
-
- Use: secondary category strip below filter chips (스니커즈 / 반소매 티셔츠 / 샌들·슬리퍼 / 바람막이 / 트레이닝 자켓 …)
|
|
175
|
-
|
|
176
|
-
### Popular keyword shortcut
|
|
177
|
-
|
|
178
|
-
**Default**
|
|
179
|
-
- Background: `#fafafa`
|
|
180
|
-
- Text: `#222`
|
|
181
|
-
- Border: none
|
|
182
|
-
- Radius: `6px`
|
|
183
|
-
- Height: `48px`
|
|
184
|
-
- Font: `16px / 400`
|
|
185
|
-
- Use: "관련 인기 검색어" list anchors (air force / adidas / jordan / nike air max / nike dunk / puma)
|
|
186
|
-
|
|
187
|
-
### Hero / merchandising banner card
|
|
188
|
-
|
|
189
|
-
**Default**
|
|
190
|
-
- Background: `#f5f5f5`
|
|
191
|
-
- Text: `#222` (overlay caption)
|
|
192
|
-
- Border: none
|
|
193
|
-
- Radius: `16px`
|
|
194
|
-
- Padding: `0` (image-led, copy positioned absolutely)
|
|
195
|
-
- Width × Height: `1188 × 475` (desktop)
|
|
196
|
-
- Use: home carousel tiles, exhibition / drop merchandising
|
|
197
|
-
|
|
198
|
-
### Search input (homepage hero)
|
|
199
|
-
|
|
200
|
-
**Default**
|
|
201
|
-
- Background: `transparent`
|
|
202
|
-
- Text: `#222`
|
|
203
|
-
- Border: none (parent container has 1px bottom border, observed)
|
|
204
|
-
- Radius: `0`
|
|
205
|
-
- Font: `24px / 700` — the typed keyword is rendered as if it were the page headline
|
|
206
|
-
- Placeholder: "브랜드, 상품, 프로필, 태그 등"
|
|
207
|
-
- Use: global search at the top of `/search`
|
|
208
|
-
|
|
209
|
-
### Ghost button (fallback / secondary)
|
|
210
|
-
|
|
211
|
-
**Default**
|
|
212
|
-
- Background: `transparent`
|
|
213
|
-
- Text: `#000`
|
|
214
|
-
- Border: `1px solid rgba(0, 0, 0, 0.6)`
|
|
215
|
-
- Radius: `8px`
|
|
216
|
-
- Padding: text-padded, no fixed inset observed
|
|
217
|
-
- Font: `13px / 300`
|
|
218
|
-
- Height: `36px`
|
|
219
|
-
- Use: "홈으로 가기" on 404 and other recovery surfaces — lightweight, non-promoted action
|
|
220
|
-
|
|
221
|
-
### Tab strip
|
|
222
|
-
|
|
223
|
-
**Active tab**
|
|
224
|
-
- Background: `transparent`
|
|
225
|
-
- Text: `#222`
|
|
226
|
-
- Border: bottom `2px solid #222` (observed pattern on `상품 / 스타일 / 프로필`)
|
|
227
|
-
- Radius: `0`
|
|
228
|
-
- Font: `16px / 700`
|
|
229
|
-
- Height: `44px`
|
|
230
|
-
|
|
231
|
-
**Default tab**
|
|
232
|
-
- Background: `transparent`
|
|
233
|
-
- Text: `#222`
|
|
234
|
-
- Border: bottom `2px solid transparent`
|
|
235
|
-
- Font: `16px / 400`
|
|
236
|
-
|
|
237
|
-
Weight, not color, signals selection.
|
|
238
|
-
|
|
239
|
-
### Global header
|
|
240
|
-
|
|
241
|
-
**Default**
|
|
242
|
-
- Background: `#ffffff`
|
|
243
|
-
- Height: `130px` (CSS var `--global-header-height`)
|
|
244
|
-
- Primary nav: `HOME / STYLE / SHOP` rendered as 16px text links in `#222`
|
|
245
|
-
- Search affordance: a separate `/search` route (no inline search input in the page header on the home view)
|
|
103
|
+
## 2. Color Palette & Roles
|
|
246
104
|
|
|
247
|
-
|
|
248
|
-
**Verified:** 2026-05-14
|
|
249
|
-
**Tier 1 sources:**
|
|
250
|
-
- `https://kream.co.kr/` — live CDP `Runtime.evaluate` + `getComputedStyle` at 2026-05-14T10:55:53Z; 40 raw component samples, 50+ `--greyscale-*` CSS custom properties extracted from `:root`
|
|
251
|
-
- `https://kream.co.kr/search?keyword=nike` — live CDP capture; 43 raw component samples covering filter chips, category pills, shortcut rows, search input, tab strip
|
|
252
|
-
- `https://kream.co.kr/shop` (404 fallback) — captured ghost-button chrome
|
|
253
|
-
- See `references/kream/assets/_reference/tokens.json`, `structure.json`, `fonts.json`, `.live-inspect-proof.json`
|
|
105
|
+
### Observed live commerce surfaces
|
|
254
106
|
|
|
255
|
-
**
|
|
256
|
-
-
|
|
257
|
-
- `
|
|
107
|
+
- **Canvas** `#ffffff` — repeated background across home and search.
|
|
108
|
+
- **Primary / foreground** `#222222` — repeated text and border ink across all supplied routes.
|
|
109
|
+
- **Home merchandising surface** `#f5f5f5` — observed background on the home route; not a universal card fill.
|
|
110
|
+
- **Search-control muted ink** `#4e4e4e` — observed on both default filter-control styles.
|
|
111
|
+
- **Search-control hairline** `#f0f0f0` — observed 1px border on the outlined search filter control.
|
|
112
|
+
- **On-primary / inverse** `#ffffff` — observed text and border value in the live capture; no semantic CTA role was established.
|
|
258
113
|
|
|
259
|
-
|
|
114
|
+
The collector also saw product-content colors such as `#00cc44` and `#f15746` on the search route. It does not establish a semantic price, status, gain, or loss role, so these values are deliberately absent from machine tokens. No official public design-system page was found in this pass.
|
|
260
115
|
|
|
261
|
-
##
|
|
116
|
+
## 3. Typography Rules
|
|
262
117
|
|
|
263
|
-
|
|
264
|
-
- **Home grid**: full-width banner stack centered on a content column ~1188px wide
|
|
265
|
-
- **Banner card**: 1188×475 with 16px radius — single column on desktop
|
|
266
|
-
- **Filter chip row**: 30px-tall chips, spaced in a horizontal row, single-line on desktop
|
|
267
|
-
- **Category pill row**: 30px-tall pills, horizontal-scroll-overflow capable
|
|
268
|
-
- **Product card**: 238px height (observed in search), grid layout
|
|
269
|
-
- **Shortcut row**: 48px row height, stacked vertically as a `/fafafa` list
|
|
118
|
+
### Evidence classes
|
|
270
119
|
|
|
271
|
-
|
|
120
|
+
- **Live computed surface-use and loaded webfont:** visible text on all three supplied KREAM routes resolves first to **Pretendard Variable**. The collector records 1,026 visible uses across headings, body text, buttons, cards, inputs, list items, tabs, and badges; it also records a loaded FontFace match and 92 KREAM-hosted `woff2` subset URLs. `Pretendard Variable` is therefore the sole KREAM UI-family machine token.
|
|
121
|
+
- **Official font documentation and license:** Pretendard’s own documentation describes it as a cross-platform, multilingual neo-grotesque family with variable-font support. Its repository distributes the family under SIL Open Font License 1.1; that license permits commercial use, modification, and redistribution subject to its terms. This is font-author evidence, not KREAM brand-asset evidence. [Pretendard documentation](https://github.com/orioncactus/pretendard/blob/main/packages/pretendard/docs/en/README.md) · [License](https://github.com/orioncactus/pretendard/blob/main/LICENSE)
|
|
122
|
+
- **Declared-only assets:** the bundle declares `HelveticaNeue`, `HelveticaNeueBold`, `NotoSansCJKkr` (including Light and Bold), `Roboto-Bold`, and `Roboto-Light`/`Roboto-Medium`, with legacy KREAM-hosted source URLs but zero visible observed usage. They remain declared-only and are not rendered as KREAM UI families.
|
|
123
|
+
- **System / unresolved:** `Roboto` is classified as a system-stack entry with zero visible uses. No substitution is authorized for any declared-only or system entry.
|
|
272
124
|
|
|
273
|
-
|
|
125
|
+
### Measured hierarchy
|
|
274
126
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
127
|
+
| Role | Size | Weight | Line height | Surface boundary |
|
|
128
|
+
| --- | --- | --- | --- | --- |
|
|
129
|
+
| Default live text | 16px | 400 | normal | Repeated across home and search |
|
|
130
|
+
| Search filter control | 13px | 400 | normal | Search route only |
|
|
131
|
+
| Search input | 24px | 700 | 29px | Search route only |
|
|
132
|
+
| Active search tab | 16px | 700 | normal | Search route only |
|
|
133
|
+
| Recovery home button | 13px | 300 | 26px | Recovery route only |
|
|
134
|
+
|
|
135
|
+
## 4. Component Stylings
|
|
136
|
+
|
|
137
|
+
### Search filters
|
|
138
|
+
|
|
139
|
+
**Pill filter button — observed default**
|
|
140
|
+
- Background: #f4f4f4
|
|
141
|
+
- Text: #4e4e4e
|
|
142
|
+
- Radius: 30px
|
|
143
|
+
- Padding: 0px 8px
|
|
144
|
+
- Font: 13px / 400 / Pretendard Variable
|
|
145
|
+
- Height: 30px
|
|
146
|
+
- Use: Search-route default filter at `surface-3::[data-omd-capture="18"]` (`filter_button tint shape_pill`); 7 occurrences, no observed state transition.
|
|
147
|
+
|
|
148
|
+
**Outlined filter button — observed default**
|
|
149
|
+
- Background: #ffffff
|
|
150
|
+
- Text: #4e4e4e
|
|
151
|
+
- Border: 1px solid #f0f0f0
|
|
152
|
+
- Radius: 6px
|
|
153
|
+
- Padding: 0px 6px 0px 4px
|
|
154
|
+
- Font: 13px / 400 / Pretendard Variable
|
|
155
|
+
- Height: 30px
|
|
156
|
+
- Use: Search-route default filter at `surface-3::[data-omd-capture="25"]` (`filter_button line shape_rect`); 9 occurrences, no observed state transition.
|
|
157
|
+
|
|
158
|
+
### Search navigation
|
|
159
|
+
|
|
160
|
+
**Search tab — observed default**
|
|
161
|
+
- Text: #222222
|
|
162
|
+
- Radius: 0px
|
|
163
|
+
- Padding: 13px 0px
|
|
164
|
+
- Font: 16px / 400 / Pretendard Variable
|
|
165
|
+
- Height: 44px
|
|
166
|
+
- Use: Home and search tab elements; representative `home::[data-omd-capture="13"]` (`tab`).
|
|
167
|
+
|
|
168
|
+
**Search tab — observed active**
|
|
169
|
+
- Text: #222222
|
|
170
|
+
- Border: 2px solid #222222 on the bottom edge
|
|
171
|
+
- Radius: 0px
|
|
172
|
+
- Font: 16px / 700 / Pretendard Variable
|
|
173
|
+
- Height: 44px
|
|
174
|
+
- Use: Active search tab at `surface-3::[data-omd-capture="14"]` (`router-link-active router-link-exact-active tab active`). This is an observed route state, not a hover or pressed variant.
|
|
175
|
+
|
|
176
|
+
### Search input
|
|
177
|
+
|
|
178
|
+
**Search text input — observed default**
|
|
179
|
+
- Text: #000000
|
|
180
|
+
- Radius: 0px
|
|
181
|
+
- Padding: 0px 13px 0px 1px
|
|
182
|
+
- Font: 24px / 700 / Pretendard Variable
|
|
183
|
+
- Height: 29px
|
|
184
|
+
- Use: Search input at `surface-3::[data-omd-capture="12"]` (`input_search show_placeholder_on_focus`). No focus state was captured.
|
|
185
|
+
|
|
186
|
+
### Product discovery card
|
|
187
|
+
|
|
188
|
+
**Search product-card shell — observed default**
|
|
189
|
+
- Text: #222222
|
|
190
|
+
- Radius: 6px
|
|
191
|
+
- Padding: 0px 0px 10px
|
|
192
|
+
- Font: 16px / 400 / Pretendard Variable
|
|
193
|
+
- Use: Search-route linked card at `surface-3::[data-omd-capture="37"]` (`product_card`); captured heights vary from 319px to 340px, so no fixed-height token is asserted.
|
|
194
|
+
|
|
195
|
+
### Recovery action
|
|
196
|
+
|
|
197
|
+
**Home recovery button — observed default**
|
|
198
|
+
- Text: #000000
|
|
199
|
+
- Border: 1px solid rgba(0,0,0,0.6)
|
|
200
|
+
- Radius: 8px
|
|
201
|
+
- Font: 13px / 300 / Pretendard Variable
|
|
202
|
+
- Height: 36px
|
|
203
|
+
- Use: Recovery route action at `surface-2::[data-omd-capture="12"]` (`button-home`). Its route-local recovery context must not be generalized as a primary commerce CTA.
|
|
204
|
+
|
|
205
|
+
No hover, focus, pressed, disabled, dialog, menu, toast, error-form, responsive, or unobserved selected component variant is specified. The collector reports zero interactions and zero observed states.
|
|
278
206
|
|
|
279
|
-
|
|
207
|
+
---
|
|
208
|
+
**Verified:** 2026-07-13
|
|
209
|
+
**Tier 1 sources:** https://kream.co.kr/; https://kream.co.kr/shop; https://kream.co.kr/search?keyword=nike; https://kream.co.kr/faq?category=buying&page=0; https://kream.co.kr/auth_policy; https://github.com/orioncactus/pretendard/blob/main/packages/pretendard/docs/en/README.md; https://github.com/orioncactus/pretendard/blob/main/LICENSE
|
|
210
|
+
**Tier 2 sources:** https://getdesign.md/kream (attempted; no indexed KREAM record returned); https://styles.refero.design/?q=kream (attempted; no KREAM result returned in the public search result set)
|
|
211
|
+
**Conflicts unresolved:** none
|
|
280
212
|
|
|
281
|
-
|
|
282
|
-
- **Tab swap**: instant (no observed cross-fade in raw sample)
|
|
283
|
-
- **No long parallax, no scroll-driven hero animation** observed in viewport (1280×713)
|
|
213
|
+
## 5. Layout Principles
|
|
284
214
|
|
|
285
|
-
|
|
215
|
+
Only route-local dimensions are retained: the home collector found a 1188px-wide, 475px-high merchandising panel and the search collector found 238px-wide product-card shells with variable observed heights. The search input was 468px wide in this desktop sample. No responsive breakpoint, grid-column count, sticky behavior, or global container width is asserted from one desktop capture.
|
|
286
216
|
|
|
287
|
-
|
|
217
|
+
## 6. Depth & Elevation
|
|
288
218
|
|
|
289
|
-
|
|
219
|
+
Representative components in the supplied capture report `box-shadow: none`. No elevated card, overlay, modal, or menu elevation token is established.
|
|
290
220
|
|
|
291
|
-
|
|
221
|
+
## 7. Do's and Don'ts
|
|
292
222
|
|
|
293
|
-
|
|
223
|
+
### Do
|
|
294
224
|
|
|
295
|
-
|
|
225
|
+
- Use `Pretendard Variable` only where the recorded KREAM-loaded webfont evidence applies.
|
|
226
|
+
- Keep the observed commerce chrome white and charcoal, with search filter controls constrained to their recorded geometry and route.
|
|
227
|
+
- Preserve selector, surface, and state provenance when recreating an observed component.
|
|
228
|
+
- Treat KREAM’s official FAQ and authentication policy as service-context sources, not a design-token system.
|
|
296
229
|
|
|
297
|
-
|
|
298
|
-
- **Token system**: ~50 CSS custom properties on `:root`, namespaced `--greyscale-dark-*` (solid greys) and `--greyscale-dark-alpha-*` / `--greyscale-white-alpha-*` (alpha overlays). The naming convention encodes both numeric scale (`-0` / `-2` / `-4` / `-6` / `-8` / `-10` / `-20` / `-30` / `-40` …) and semantic role (`-fill-light-grey-grey-light-brand-ect`, `-border-extra-light-grey`) — the system was clearly designed for both designer and developer consumption.
|
|
299
|
-
- **No design system docs site published** at `design.kream.co.kr`, `kream.design`, or `kream.co.kr/design`. KREAM has no public DS hub (consistent with its parent Naver's mixed-public pattern; Naver Connect/Snow have docs, KREAM does not).
|
|
300
|
-
- **Bundle**: Swiper.js carousel library detected (`--swiper-theme-color: #007aff`).
|
|
301
|
-
- **Brand assets (logo, photography) are reference-only.** Do not redistribute. Use this DESIGN.md to inform token / radius / weight choices in derivative work; source brand-comparable photography independently.
|
|
230
|
+
### Don't
|
|
302
231
|
|
|
303
|
-
|
|
232
|
+
- Do not replace declared-only Helvetica Neue, Noto Sans, or Roboto entries with a look-alike and label it as KREAM.
|
|
233
|
+
- Do not turn product-content green or red samples into semantic status tokens.
|
|
234
|
+
- Do not generalize the recovery-route button into a primary CTA.
|
|
235
|
+
- Do not add hover, focus, pressed, disabled, loading, dialog, or mobile variants without a corresponding captured surface and state.
|
|
304
236
|
|
|
305
|
-
|
|
237
|
+
## 8. Responsive Behavior
|
|
306
238
|
|
|
307
|
-
|
|
308
|
-
- **Ranked.** "Top 100", "이번 주 급상승", "주차별 드롭 리스트". Every list is ordered, time-stamped, or relativized to a window. Nothing floats untimed.
|
|
309
|
-
- **Bilingual-native.** Korean colloquial sits unforced next to English brand names. The audience is assumed to think in both registers; the chrome does not translate.
|
|
239
|
+
The supplied collector evidence is desktop-only. No breakpoint, mobile layout, touch target, or adaptive navigation behavior is specified.
|
|
310
240
|
|
|
311
|
-
|
|
241
|
+
## 9. Agent Prompt Guide
|
|
312
242
|
|
|
313
|
-
|
|
314
|
-
| --- | --- |
|
|
315
|
-
| Lead with the number (`~50% 쿠폰`, `~33% 할인`, `3% 적립`) | Lead with an adjective (`특별한 할인`) |
|
|
316
|
-
| Time-box the offer (`이번 주`, `5월 브랜드 위크`, `오늘 구매 내일 도착`) | Leave the window open-ended |
|
|
317
|
-
| Treat English brand names as native vocabulary, no quote marks | Italicize or quote `"Nike"` |
|
|
318
|
-
| Rank the list (`Top 100`, `주차별`, `급상승`) | Float ungrouped items |
|
|
319
|
-
| Use sentence-case Korean with English brand caps where natural | Force ALL-CAPS Korean or fully title-cased English |
|
|
243
|
+
### Verified prompt boundary
|
|
320
244
|
|
|
321
|
-
|
|
245
|
+
“Create only the observed KREAM commerce elements: a white/charcoal desktop search route with Pretendard Variable; 30px `#f4f4f4` pill filters; 6px white outlined filters; a 24px/700 search input; and 44px tabs whose active state uses 700 weight plus a 2px charcoal bottom border. Do not add a branded CTA color, a substituted font, a modal/menu state, or a responsive variant.”
|
|
322
246
|
|
|
323
|
-
|
|
247
|
+
## 10. Voice & Tone
|
|
324
248
|
|
|
325
|
-
|
|
249
|
+
KREAM’s official service explanations are operational and sequential: search or select an item, buy immediately or bid, then move the matched item through inspection and delivery. The same material describes authenticated warehouse inventory as eligible for rapid shipping. This is official service language, not a complete catalog of public UI microcopy. [Buying FAQ](https://kream.co.kr/faq?category=buying&page=0)
|
|
326
250
|
|
|
327
|
-
|
|
251
|
+
| Do | Don't |
|
|
252
|
+
| --- | --- |
|
|
253
|
+
| State the transaction step and condition clearly. | Attribute unobserved checkout or error copy to KREAM. |
|
|
254
|
+
| Separate immediate purchase from a bid. | Treat campaign headlines as a system-wide voice rule. |
|
|
255
|
+
| Explain inspection and delivery as distinct stages. | Convert service-policy language into a color or component token. |
|
|
328
256
|
|
|
329
|
-
|
|
257
|
+
**Voice samples.**
|
|
330
258
|
|
|
331
|
-
|
|
259
|
+
- “즉시 구매 혹은 구매 입찰” — official buying-flow label. <!-- verified: kream.co.kr/faq?category=buying&page=0 2026-07-13 -->
|
|
260
|
+
- “검수를 진행” — official buying-flow stage. <!-- verified: kream.co.kr/faq?category=buying&page=0 2026-07-13 -->
|
|
261
|
+
- “당일 출고” — official rapid-shipping outcome for qualifying stored inventory. <!-- verified: kream.co.kr/faq?category=buying&page=0 2026-07-13 -->
|
|
332
262
|
|
|
333
|
-
|
|
263
|
+
## 11. Brand Narrative
|
|
334
264
|
|
|
335
|
-
|
|
265
|
+
KREAM describes its service as a way to buy and trade limited-edition goods that are otherwise difficult to obtain, with expert inspection intended to make the exchange safe and quick. Its official buying guidance distinguishes immediate purchase, bid-based purchase, inspection, storage, and delivery rather than reducing the marketplace to a conventional retailer. [KREAM FAQ](https://kream.co.kr/faq?list=true&page=2) · [Buying FAQ](https://kream.co.kr/faq?category=buying&page=0)
|
|
336
266
|
|
|
337
|
-
|
|
267
|
+
The current public surface reflects that service model through discovery, search filtering, product cards, and route-local recovery controls. The reference does not claim a separate KREAM brand history, rebrand, owned typeface, or public design-system program because no first-party evidence for those claims was collected in this pass.
|
|
338
268
|
|
|
339
269
|
## 12. Principles
|
|
340
270
|
|
|
341
|
-
1. **
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
2. **Time-boxing is the persuasion.**
|
|
345
|
-
*UI implication:* Every promotional surface declares a window. Build a reusable "window tag" pattern (`이번 주`, `~5/19`, `7일 한정`) — it's the recurring chrome element across home banners.
|
|
346
|
-
|
|
347
|
-
3. **Weight signals state; hue stays grayscale.**
|
|
348
|
-
*UI implication:* Active tab = `700`, default = `400`, both on `#222`. Selected chip = counter trailing the label, no fill change. Don't introduce a "selected color" — the system is designed to never need one.
|
|
349
|
-
|
|
350
|
-
4. **Radius encodes card class.**
|
|
351
|
-
*UI implication:* 16px = merchandising, 6px = trading row, 30px = filter primitive, 8px = recovery / fallback. Never blend; never use a radius unmapped to a class.
|
|
352
|
-
|
|
353
|
-
5. **Photography carries color.**
|
|
354
|
-
*UI implication:* Chrome stays grayscale; product photography against `#f5f5f5` provides all chromatic information. Don't introduce branded accent fills — they will fight the product image.
|
|
271
|
+
1. **Make the transaction path legible.** Official guidance distinguishes immediate purchase and bidding before inspection and delivery. *UI implication:* maintain clear labels for the observed route and step; do not invent transactional states.
|
|
272
|
+
2. **Keep authentication explicit.** KREAM publishes product-category authentication standards and assigns responsibility for inspection/guarantees within its policy boundary. *UI implication:* distinguish an inspection statement from a generic marketing assurance.
|
|
273
|
+
3. **Keep control evidence local.** Search filters, tabs, and recovery controls appear on different captured contexts. *UI implication:* reuse only the field values and state that were actually observed for that context.
|
|
355
274
|
|
|
356
275
|
## 13. Personas
|
|
357
276
|
|
|
358
|
-
*
|
|
277
|
+
*No first-party persona research was collected for this reference. Do not fabricate customer archetypes or demographic facts.*
|
|
359
278
|
|
|
360
|
-
-
|
|
361
|
-
-
|
|
362
|
-
- **The Luxury Verifier (F/M, 28-45).** Buys 2-4x/year, primarily watches and bags. Wants the authentication promise visible at every checkpoint. Trusts the grayscale chrome because it does not feel like a discount store.
|
|
363
|
-
- **The Gift Searcher (F/M, 25-40).** Comes through marketing campaigns (5월 브랜드 위크, 뷰티템 추천). Wants the offer window explicit and the recovery paths (홈으로 가기, recently-viewed) lightweight.
|
|
279
|
+
- [FILL IN: user-provided primary customer segment]
|
|
280
|
+
- [FILL IN: user-provided transaction or discovery task]
|
|
364
281
|
|
|
365
282
|
## 14. States
|
|
366
283
|
|
|
367
|
-
|
|
368
|
-
| --- | --- |
|
|
369
|
-
| **Empty (no results)** | `#222` ink message centered; ghost button `8px` radius `13px/300` for recovery action |
|
|
370
|
-
| **Loading (initial)** | No skeleton observed in this pass — assume `#fafafa` block placeholders matching final card height (475 / 238 / 48) |
|
|
371
|
-
| **Loading (subsequent / scroll)** | Swiper carousel handles inline; product grid likely paginates via intersection observer |
|
|
372
|
-
| **Error (404)** | Ghost button "홈으로 가기" — `36px` height, `8px` radius, `1px solid rgba(0,0,0,0.6)`, `13px/300` — the apology is small and the action is plain |
|
|
373
|
-
| **Error (network / auth)** | Not captured in this pass — likely the same ghost button pattern with route-specific copy |
|
|
374
|
-
| **Success (transaction)** | Not captured (auth-gated) — typical pattern would be a centered tile with the ranked number ("거래 체결가 ₩483,000") and a window tag |
|
|
375
|
-
| **Skeleton** | `#fafafa` fill on the card-class-shaped rectangle, no shimmer observed |
|
|
376
|
-
| **Disabled** | Inferred from alpha tokens — text on `--greyscale-dark-alpha-30` (`#00000045`), control fill keeps `#f4f4f4`, no opacity change on the chip itself |
|
|
284
|
+
Only component defaults and the route-selected search tab were captured. The following require a product-specific observation before specification:
|
|
377
285
|
|
|
378
|
-
|
|
286
|
+
| Category | Evidence status |
|
|
287
|
+
| --- | --- |
|
|
288
|
+
| Empty | [FILL IN: no observed state] |
|
|
289
|
+
| Loading | [FILL IN: no observed state] |
|
|
290
|
+
| Error | [FILL IN: recovery-route component only; no error treatment captured] |
|
|
291
|
+
| Success | [FILL IN: no observed state] |
|
|
292
|
+
| Skeleton | [FILL IN: no observed state] |
|
|
293
|
+
| Disabled | [FILL IN: no observed state] |
|
|
379
294
|
|
|
380
295
|
## 15. Motion & Easing
|
|
381
296
|
|
|
382
|
-
|
|
383
|
-
- `fast`: 150-200ms — chip selection counter update
|
|
384
|
-
- `base`: 300ms — Swiper slide (default)
|
|
385
|
-
- `slow`: 500-600ms — banner card cross-fade on auto-rotate
|
|
386
|
-
|
|
387
|
-
**Easing**
|
|
388
|
-
- `ease-out` for entering elements (banner card swap)
|
|
389
|
-
- `ease-in-out` for Swiper slide (library default)
|
|
390
|
-
- No spring physics observed
|
|
391
|
-
|
|
392
|
-
**Motion rules**
|
|
393
|
-
- **Carousel auto-rotates** but pauses on hover (Swiper default behavior).
|
|
394
|
-
- **Tab switch is instant** — no slide-in for content beneath; only the bottom border on the active label changes.
|
|
395
|
-
- **No reveal-on-scroll animation** on the home page in the captured viewport.
|
|
396
|
-
- **Counter changes (chip badge)** update without animation — the count just appears.
|
|
397
|
-
- **No motion is used to soften error states.** The 404 ghost button appears without entrance animation; the chrome treats errors as factual, not embarrassed.
|
|
398
|
-
|
|
399
|
-
The brand's motion logic mirrors its voice: minimal, factual, time-boxed. Movement happens because the carousel needs to rotate, not because the chrome wants to perform.
|
|
400
|
-
|
|
401
|
-
---
|
|
402
|
-
|
|
403
|
-
**References cited (Tier 1 + supporting):**
|
|
404
|
-
- KREAM home — `https://kream.co.kr/` (live CDP capture, 2026-05-14)
|
|
405
|
-
- KREAM search — `https://kream.co.kr/search?keyword=nike` (live CDP capture, 2026-05-14)
|
|
406
|
-
- KREAM 404 — `https://kream.co.kr/shop` (ghost-button chrome)
|
|
407
|
-
- `references/kream/assets/_reference/tokens.json` — distilled token map
|
|
408
|
-
- `references/kream/assets/_reference/structure.json` — surface IA observation
|
|
409
|
-
- `references/kream/assets/_reference/fonts.json` — type stack & scale
|
|
410
|
-
- `references/kream/assets/_reference/.live-inspect-proof.json` — 13 raw_samples + method log
|
|
411
|
-
|
|
412
|
-
**Tier 2 (verified empty 2026-05-14):**
|
|
413
|
-
- `getdesign.md/kream` — no record
|
|
414
|
-
- `styles.refero.design/?q=kream` — no match
|
|
415
|
-
|
|
416
|
-
## 16. Do's and Don'ts
|
|
417
|
-
|
|
418
|
-
### Do
|
|
419
|
-
- Keep the chrome on the grayscale ramp, using `#222` as primary ink and reserving `#000` for the H1 display token only
|
|
420
|
-
- Signal active state by weight, not hue — active tab and selected control go to `700` while inactive stays `400`, both on `#222`
|
|
421
|
-
- Map every corner radius to its card class: 16px banner/merchandising tile, 30px filter chip, 8px ghost button, 6px row/category card
|
|
422
|
-
- Let full-bleed product photography on the `#f5f5f5` banner card carry all the color, keeping all surrounding chrome neutral
|
|
423
|
-
- Lead promotional copy with the number (`~33% 할인`, `3% 적립`) and time-box every offer with a window tag (`이번 주`, `5월 브랜드 위크`)
|
|
424
|
-
- Run Pretendard Variable across the whole stack on the documented scale — 32px/700 display, 24px/700 search query, 16px body, 13px chips
|
|
425
|
-
|
|
426
|
-
### Don't
|
|
427
|
-
- Introduce a branded accent fill or selected-state color — the system is designed to never need one, and color would fight the product image
|
|
428
|
-
- Spread the lone `rgb(17, 161, 151)` watch teal beyond rare price-watch signaling, or treat the Swiper `#007aff` library default as a usable brand color
|
|
429
|
-
- Blend radii or use a corner radius unmapped to a card class (e.g. a banner that is not 16px or a filter chip that is not 30px)
|
|
430
|
-
- Add shadows, gradients, or decorative chrome iconography — the home surface deliberately has none
|
|
431
|
-
- Use size to signal active state where weight should — body and active tab both sit at 16px, so only the 400→700 weight jump should change
|
|
432
|
-
- Lead with adjectives (`특별한 할인`), leave offer windows open-ended, or quote/italicize English brand names like `"Nike"`
|
|
297
|
+
No motion, transition, or interaction state was captured. [FILL IN: product-specific motion evidence]
|