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,613 +8,291 @@ primary_color: "#5f0080"
|
|
|
8
8
|
logo:
|
|
9
9
|
type: favicon
|
|
10
10
|
slug: "https://res.kurly.com/icons/favicon-128x128.png"
|
|
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://www.kurly.com/main", inspected: "2026-07-13" }
|
|
18
|
+
- { id: category-list, kind: commerce-category, url: "https://www.kurly.com/shopping/categories/list", inspected: "2026-07-13" }
|
|
19
|
+
- { id: new-products, kind: commerce-collection, url: "https://www.kurly.com/collections/market-newproduct", inspected: "2026-07-13" }
|
|
20
|
+
sources:
|
|
21
|
+
- { id: home-live, kind: product-surface, url: "https://www.kurly.com/main", captured: "2026-07-13" }
|
|
22
|
+
- { id: category-live, kind: product-surface, url: "https://www.kurly.com/shopping/categories/list", captured: "2026-07-13" }
|
|
23
|
+
- { id: collection-live, kind: product-surface, url: "https://www.kurly.com/collections/market-newproduct", captured: "2026-07-13" }
|
|
24
|
+
- { id: kurly-introduce, kind: official-doc, url: "https://www.kurly.com/introduce", captured: "2026-07-13" }
|
|
25
|
+
- { id: kurly-company, kind: official-doc, url: "https://newsroom.kurlycorp.com/%ED%9A%8C%EC%82%AC%EC%86%8C%EA%B0%9C/", captured: "2026-07-13" }
|
|
26
|
+
- { id: pretendard-license, kind: license, url: "https://github.com/orioncactus/pretendard/blob/main/LICENSE", captured: "2026-07-13" }
|
|
27
|
+
claims:
|
|
28
|
+
"tokens.colors.primary": &home_live { surface_id: home, source_id: home-live, method: computed-style, captured: "2026-07-13" }
|
|
29
|
+
"tokens.colors.canvas": *home_live
|
|
30
|
+
"tokens.colors.foreground": *home_live
|
|
31
|
+
"tokens.colors.body": *home_live
|
|
32
|
+
"tokens.colors.muted": *home_live
|
|
33
|
+
"tokens.colors.border": &collection_live { surface_id: new-products, source_id: collection-live, method: computed-style, captured: "2026-07-13" }
|
|
34
|
+
"tokens.colors.control-background": *collection_live
|
|
35
|
+
"tokens.colors.control-muted": *collection_live
|
|
36
|
+
"tokens.typography.family.sans": *home_live
|
|
37
|
+
"tokens.typography.utility.size": *home_live
|
|
38
|
+
"tokens.typography.utility.weight": *home_live
|
|
39
|
+
"tokens.typography.utility.lineHeight": *home_live
|
|
40
|
+
"tokens.typography.utility.use": *home_live
|
|
41
|
+
"tokens.typography.category-tab.size": *home_live
|
|
42
|
+
"tokens.typography.category-tab.weight": *home_live
|
|
43
|
+
"tokens.typography.category-tab.lineHeight": *home_live
|
|
44
|
+
"tokens.typography.category-tab.use": *home_live
|
|
45
|
+
"tokens.typography.input.size": *home_live
|
|
46
|
+
"tokens.typography.input.weight": *home_live
|
|
47
|
+
"tokens.typography.input.lineHeight": *home_live
|
|
48
|
+
"tokens.typography.input.use": *home_live
|
|
49
|
+
"tokens.spacing.xxs": *home_live
|
|
50
|
+
"tokens.spacing.xs": *home_live
|
|
51
|
+
"tokens.spacing.sm": *home_live
|
|
52
|
+
"tokens.spacing.md": *home_live
|
|
53
|
+
"tokens.rounded.sm": *collection_live
|
|
54
|
+
"tokens.rounded.xs": *collection_live
|
|
55
|
+
"tokens.shadow.none": *collection_live
|
|
56
|
+
"tokens.components.category-tab.type": *home_live
|
|
57
|
+
"tokens.components.category-tab.fg": *home_live
|
|
58
|
+
"tokens.components.category-tab.font": *home_live
|
|
59
|
+
"tokens.components.category-tab.states": *home_live
|
|
60
|
+
"tokens.components.category-tab.use": *home_live
|
|
61
|
+
"tokens.components.form-input.type": *home_live
|
|
62
|
+
"tokens.components.form-input.bg": *home_live
|
|
63
|
+
"tokens.components.form-input.fg": *home_live
|
|
64
|
+
"tokens.components.form-input.font": *home_live
|
|
65
|
+
"tokens.components.form-input.error": *home_live
|
|
66
|
+
"tokens.components.form-input.use": *home_live
|
|
67
|
+
"tokens.components.product-list-article.type": *collection_live
|
|
68
|
+
"tokens.components.product-list-article.fg": *collection_live
|
|
69
|
+
"tokens.components.product-list-article.radius": *collection_live
|
|
70
|
+
"tokens.components.product-list-article.font": *collection_live
|
|
71
|
+
"tokens.components.product-list-article.use": *collection_live
|
|
72
|
+
conflicts: []
|
|
13
73
|
tokens:
|
|
14
|
-
source:
|
|
15
|
-
extracted: "2026-
|
|
16
|
-
|
|
17
|
-
note: "deterministic picks (#bd76ff tint, #1a73e8 Google embed) rejected; canonical = Kurly Purple purple-900"
|
|
74
|
+
source: live-extract
|
|
75
|
+
extracted: "2026-07-13"
|
|
76
|
+
note: "Only values represented in the supplied three-surface collector artifact are canonical. Brand/corporate material and declared-only font assets remain narrative evidence."
|
|
18
77
|
colors:
|
|
19
78
|
primary: "#5f0080"
|
|
20
|
-
purple-800: "#672091"
|
|
21
|
-
purple-700: "#7e3ab0"
|
|
22
|
-
purple-500: "#9a60ca"
|
|
23
|
-
purple-100: "#e8dbf3"
|
|
24
|
-
purple-50: "#f5effa"
|
|
25
79
|
canvas: "#ffffff"
|
|
26
|
-
foreground: "#
|
|
27
|
-
body: "#
|
|
28
|
-
muted: "#
|
|
29
|
-
|
|
80
|
+
foreground: "#333333"
|
|
81
|
+
body: "#464c52"
|
|
82
|
+
muted: "#999999"
|
|
83
|
+
border: "#dfe4eb"
|
|
84
|
+
control-background: "#f7f7f7"
|
|
85
|
+
control-muted: "#b5b5b5"
|
|
30
86
|
typography:
|
|
31
|
-
family: { sans: "
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
spacing: { xxs: 2, xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
|
|
40
|
-
rounded: { sm: 4, md: 8, lg: 16, full: 9999 }
|
|
41
|
-
shadow:
|
|
42
|
-
subtle: "0px 2px 2px 0px rgba(0,0,0,0.03)"
|
|
43
|
-
card-hover: "0px 0px 4px 0px rgba(0,0,0,0.15)"
|
|
44
|
-
floating: "2px 2px 10px 0px rgba(0,0,0,0.10)"
|
|
87
|
+
family: { sans: "Pretendard" }
|
|
88
|
+
utility: { size: 14, weight: 400, lineHeight: "14px", use: "Repeated visible text and button default in the supplied desktop commerce capture." }
|
|
89
|
+
category-tab: { size: 18, weight: 400, lineHeight: "23.94px", use: "Inactive category tab in the home and new-products surfaces; selected and hover/pressed samples are separately observed." }
|
|
90
|
+
input: { size: 16, weight: 400, lineHeight: "20px", use: "Captured form input, including the collector's error-state sample." }
|
|
91
|
+
spacing: { xxs: 2, xs: 4, sm: 8, md: 16 }
|
|
92
|
+
rounded: { xs: 2, sm: 4 }
|
|
93
|
+
shadow: { none: "none" }
|
|
94
|
+
components_harvested: true
|
|
45
95
|
components:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
card: { type: card, bg: "#ffffff", radius: "4px", padding: "12px 4px", shadow: "none", hover: "0px 0px 4px rgba(0,0,0,0.15)", use: "Category list, search results, recommendation rails" }
|
|
96
|
+
category-tab: { type: button, fg: "#b5b5b5", font: "18px / 400 / Pretendard", states: "Selected tab is #5f0080 at 18px / 500; the captured inactive tab changed to #5f0080 at both hover and pressed.", use: "Category control at home::[data-omd-capture=\"7\"] and surface-3::[data-omd-capture=\"7\"]." }
|
|
97
|
+
form-input: { type: input, bg: "#ffffff", fg: "#333333", font: "16px / 400 / Pretendard", error: "Error state was captured at home::[data-omd-interaction-capture=\"form-error-0-0\"] and surface-3::[data-omd-interaction-capture=\"form-error-0-0\"]; sampled computed values matched the retained default sample.", use: "Captured form input only; no focus, disabled, or success variant is specified." }
|
|
98
|
+
product-list-article: { type: card, fg: "#333333", radius: "0px", font: "14px / 400 / Pretendard", use: "Article wrapper in the new-products product list at surface-3::article; 249px sampled width, with no card surface or hover variant observed." }
|
|
50
99
|
---
|
|
51
100
|
|
|
52
101
|
# Design System Inspiration of Kurly (컬리 / 마켓컬리)
|
|
53
102
|
|
|
54
103
|
## 1. Visual Theme & Atmosphere
|
|
55
104
|
|
|
56
|
-
Kurly
|
|
57
|
-
|
|
58
|
-
The system, internally referenced in compiled CSS as **KPDS (Kurly Product Design System)**, treats purple the way a fine-dining restaurant treats truffle: a small amount, deployed with intention. Typography is **Pretendard** -- Korea's de-facto product sans -- never a custom display face, because the photography of the food *is* the brand expression and the type's job is to step out of its way. The overall aesthetic is editorial-magazine-meets-grocery: dense product grids on cream/white, generous photographic real estate, restrained chrome, and the same purple repeated just often enough that the eye learns to associate it with "Kurly promised this."
|
|
105
|
+
Kurly is a Korean commerce company whose retail service began in 2015 around curated food and controlled-temperature delivery; its official introduction says that selection, delivery quality, fair pricing, customer care, and sustainable distribution are central to the service. The current public shopping surfaces in this reference show a compact commerce language rather than a published universal product design system: white backgrounds, charcoal text, fine light borders, a restrained deep-purple active accent, and a loaded Pretendard webfont. The recognizable purple is present in category selection and active text/border treatments, while the product-list article wrappers themselves remain visually flat. That separation matters: Kurly’s corporate story and its current shopping UI are related, but neither the corporate brand material nor marketing language is used here to fill unobserved commerce tokens. [Kurly introduction](https://www.kurly.com/introduce) and [company profile](https://newsroom.kurlycorp.com/%ED%9A%8C%EC%82%AC%EC%86%8C%EA%B0%9C/) provide the business context; the three supplied live surfaces provide the UI values.
|
|
59
106
|
|
|
60
107
|
**Key Characteristics:**
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
- Whitespace-generous "보다 나은 삶" (better life) tone -- never crowded, never carnival
|
|
67
|
-
- Dawn-delivery `샛별배송` badge as a recurring brand moment in purple
|
|
68
|
-
- Mobile-first commerce density: 2-column product grid below 768px, 4-column on desktop
|
|
108
|
+
|
|
109
|
+
- Current captured commerce surfaces use `#ffffff`, `#333333`, and a deep `#5f0080` active accent.
|
|
110
|
+
- Pretendard is computed on 761 visible samples and corroborated by loaded Kurly-hosted FontFace sources.
|
|
111
|
+
- The retained component evidence is deliberately surface-specific: category tabs, a form-input error sample, and flat product-list articles.
|
|
112
|
+
- The supplied artifact contains desktop captures only; responsive rules, mobile navigation, checkout, and product-detail UI are not specified.
|
|
69
113
|
|
|
70
114
|
## 2. Color Palette & Roles
|
|
71
115
|
|
|
72
|
-
###
|
|
73
|
-
|
|
74
|
-
- **
|
|
75
|
-
- **
|
|
76
|
-
- **
|
|
77
|
-
- **
|
|
78
|
-
- **
|
|
79
|
-
- **
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
- **Ink 500** (`#464c52`): Sub-body, descriptions.
|
|
86
|
-
- **Ink 400** (`#565e67`): Caption, metadata.
|
|
87
|
-
- **Ink 300** (`#848f9a`): Disabled labels, placeholder.
|
|
88
|
-
|
|
89
|
-
### Surface & Border
|
|
90
|
-
- **Pure White** (`#ffffff`): Page background, card surface.
|
|
91
|
-
- **Cream Fill** (`#f2f5f8`): KPDS `gray-100`. Section background, search bar fill, neutral chip fill.
|
|
92
|
-
- **Hairline Soft** (`#eceff3`): KPDS `gray-200`. Subtle separators.
|
|
93
|
-
- **Hairline Default** (`#dfe4eb`): KPDS `gray-300`. Standard 1px borders.
|
|
94
|
-
- **Hairline Strong** (`#cbd1d7`): KPDS `gray-400`. Definitive borders, input outlines.
|
|
95
|
-
- **Mute Border** (`#bcc4cc`): KPDS `gray-500`. Pressed border on outline buttons.
|
|
96
|
-
|
|
97
|
-
### Semantic
|
|
98
|
-
- **Sale Red** (`#e22d2e`): KPDS `red-700`. Discount %, error foreground, `세일` badge.
|
|
99
|
-
- **Sale Red Deep** (`#d81b1c`): Pressed sale-red.
|
|
100
|
-
- **Sale Red Tint** (`#fbe4e4`): Discount ribbon background, error inline tint.
|
|
101
|
-
- **Coral** (`#fa622f`): KPDS `orange-700`. Limited-time offers, "오늘만" promotional color (used sparingly to avoid competing with purple).
|
|
102
|
-
- **Coral Tint** (`#feebe4`): Promotional background.
|
|
103
|
-
- **Success Green** (`#029568`): KPDS `green-600`. Success toasts, fresh/organic indicators.
|
|
104
|
-
- **Info Blue** (`#216ba5`): Hyperlinks, informational states.
|
|
105
|
-
|
|
106
|
-
### Promotional Purple (Bright)
|
|
107
|
-
- **Bright Purple** (`#bd76ff`): KPDS `purple-bright-300`. Promotional accent (mobile pill highlights, "Beauty Kurly" sub-brand) -- distinct from `#5f0080` by intent: deep purple = trust, bright purple = play.
|
|
108
|
-
- **Bright Purple Soft** (`#f6edff`): Promotional background tint.
|
|
116
|
+
### Observed live product surfaces
|
|
117
|
+
|
|
118
|
+
- **Active accent** (`#5f0080`): repeated computed text and border value across the home, category-list, and new-products surfaces; selected category-tab and hover/pressed tab samples use it.
|
|
119
|
+
- **Canvas** (`#ffffff`): repeated page/control background in the supplied product surfaces.
|
|
120
|
+
- **Foreground** (`#333333`): dominant computed text value in all three captured product surfaces.
|
|
121
|
+
- **Body emphasis** (`#464c52`): observed text value in home and new-products samples.
|
|
122
|
+
- **Muted control text** (`#b5b5b5`) and **muted text** (`#999999`): observed inactive/secondary text values; no wider semantic role is inferred.
|
|
123
|
+
- **Control border** (`#dfe4eb`): observed 1px border on repeated 36px new-products list controls.
|
|
124
|
+
- **Control fill** (`#f7f7f7`): observed on compact product-list controls in the new-products surface.
|
|
125
|
+
|
|
126
|
+
### Boundary
|
|
127
|
+
|
|
128
|
+
The supplied current capture does not establish the former purple ramps, cream bands, promotional colors, sale/error colors, or a filled purple commerce CTA. Those values are omitted from canonical tokens rather than inferred from legacy prose, logos, corporate material, or adjacent surfaces.
|
|
109
129
|
|
|
110
130
|
## 3. Typography Rules
|
|
111
131
|
|
|
112
|
-
###
|
|
113
|
-
|
|
114
|
-
- **
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
|
122
|
-
|
|
123
|
-
|
|
|
124
|
-
|
|
|
125
|
-
|
|
|
126
|
-
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
| Caption 13 | 13px | 400 | Metadata, brand line on product card |
|
|
130
|
-
| Caption 12 | 12px | 400 | Timestamps, fine print |
|
|
131
|
-
| Micro 10 | 10px | 600 | Badge text (`샛별배송`, `Kurly Only`) |
|
|
132
|
-
|
|
133
|
-
### Weights
|
|
134
|
-
- **400 Regular**: Body, captions, descriptions.
|
|
135
|
-
- **600 SemiBold**: Titles, button labels, pricing emphasis.
|
|
136
|
-
- **700 Bold**: Headlines, hero copy, the price-with-discount stack.
|
|
137
|
-
|
|
138
|
-
### Principles
|
|
139
|
-
- **Three weights only.** Pretendard offers more; Kurly uses 400/600/700 across the entire system to keep the editorial-grocery rhythm steady.
|
|
140
|
-
- **Price typography is its own register.** Discount percentage in `Sale Red #e22d2e` 18-20px / 700, original price in `Ink 300` 13px / 400 with strikethrough, final price in `Ink 800 #222` 18-20px / 700. The triple-stack repeats on every product card.
|
|
141
|
-
- **No italics in body.** Italics appear only inside long-form magazine content (recipe stories, supplier features), never in commerce chrome.
|
|
142
|
-
- **Korean-first metrics.** Sizes are tuned for Korean glyph density; line-height runs slightly tighter (1.4-1.5x) than equivalent Latin-only systems.
|
|
132
|
+
### Evidence classes
|
|
133
|
+
|
|
134
|
+
- **Live computed surface-use:** all 761 retained uses resolve first to **Pretendard** across body, button, card, heading, input, list-item, and text roles. The collector also records 18 Kurly-hosted Pretendard subset files as loaded FontFace sources, so `Pretendard` is the current UI-family token.
|
|
135
|
+
- **Font source and license:** the webfont files are served from `res.kurly.com`; the typeface project publishes its license as SIL Open Font License 1.1. This establishes the reusable typeface license, not a Kurly-owned brand-font asset. [Pretendard license](https://github.com/orioncactus/pretendard/blob/main/LICENSE)
|
|
136
|
+
- **Declared-only:** `Noto Sans KR` has declared source files in the artifact but no visible computed use. It is not promoted to the UI family. `swiper-icons` is likewise declared-only icon-font infrastructure.
|
|
137
|
+
- **System fallbacks:** the computed family includes platform and system fallbacks after Pretendard. They remain fallbacks and are not presented as Kurly typography.
|
|
138
|
+
|
|
139
|
+
### Observed hierarchy
|
|
140
|
+
|
|
141
|
+
| Role | Size | Weight | Line height | Provenance |
|
|
142
|
+
|------|------|--------|-------------|------------|
|
|
143
|
+
| Utility/default | 14px | 400 | 14px | Repeated visible text and buttons in all captured product surfaces |
|
|
144
|
+
| Category tab, inactive | 18px | 400 | 23.94px | `home::[data-omd-capture="7"]` and matching `surface-3` control |
|
|
145
|
+
| Category tab, selected/hover/pressed | 18px | 500 | 23.94px | selected `data-omd-capture="6"`; hover/pressed state capture for `"7"` |
|
|
146
|
+
| Form input | 16px | 400 | 20px | retained input/error sample |
|
|
147
|
+
|
|
148
|
+
Do not substitute Noto Sans KR or a system font and call it Kurly’s active UI family; the July capture directly corroborates Pretendard instead.
|
|
143
149
|
|
|
144
150
|
## 4. Component Stylings
|
|
145
151
|
|
|
146
|
-
###
|
|
152
|
+
### Category navigation
|
|
147
153
|
|
|
148
|
-
**
|
|
149
|
-
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
-
|
|
153
|
-
-
|
|
154
|
-
-
|
|
155
|
-
- Disabled: `#dfe4eb` background, `#848f9a` text
|
|
156
|
-
- Use: Primary commerce CTAs (`구매하기`, `장바구니 담기`, `주문하기`)
|
|
154
|
+
**Category tab — inactive, selected, and observed interaction states**
|
|
155
|
+
- Text: `#b5b5b5` inactive; `#5f0080` selected
|
|
156
|
+
- Radius: 0px
|
|
157
|
+
- Font: 18px / 400 inactive; 18px / 500 selected
|
|
158
|
+
- Hover: `#5f0080` text at 18px / 500 on `home::[data-omd-capture="7"]::state-hover`
|
|
159
|
+
- Pressed: `#5f0080` text at 18px / 500 on `home::[data-omd-capture="7"]::state-pressed`
|
|
160
|
+
- Use: Category control at `home::[data-omd-capture="6"]` / `"7"` and corresponding new-products controls; the selected tab is the active purple state.
|
|
157
161
|
|
|
158
|
-
|
|
159
|
-
- Background: `#ffffff`
|
|
160
|
-
- Text: `#5f0080`
|
|
161
|
-
- Border: 1px solid `#5f0080`
|
|
162
|
-
- Radius: 6px
|
|
163
|
-
- Padding: 12px 20px
|
|
164
|
-
- Font: 14px / 600 / Pretendard
|
|
165
|
-
- Pressed: `#f5effa` background
|
|
166
|
-
- Use: Secondary actions (`바로 구매`, `옵션 변경`)
|
|
167
|
-
|
|
168
|
-
**Neutral (Cream Fill)**
|
|
169
|
-
- Background: `#f2f5f8`
|
|
170
|
-
- Text: `#222`
|
|
171
|
-
- Border: 1px solid `#dfe4eb`
|
|
172
|
-
- Radius: 6px
|
|
173
|
-
- Padding: 12px 20px
|
|
174
|
-
- Font: 14px / 600 / Pretendard
|
|
175
|
-
- Pressed: `#eceff3` background
|
|
176
|
-
- Use: Tertiary actions (`취소`, `더보기`, filter open)
|
|
177
|
-
|
|
178
|
-
**Ghost / Text Link**
|
|
179
|
-
- Background: transparent
|
|
180
|
-
- Text: `#5f0080`
|
|
181
|
-
- Radius: 0
|
|
182
|
-
- Padding: 4px 8px
|
|
183
|
-
- Font: 14px / 600 / Pretendard with right-chevron glyph
|
|
184
|
-
- Use: Inline navigation (`전체보기 >`, `더 알아보기 >`)
|
|
185
|
-
|
|
186
|
-
**Critical (Sale / Destructive)**
|
|
187
|
-
- Background: `#e22d2e`
|
|
188
|
-
- Text: `#ffffff`
|
|
189
|
-
- Radius: 6px
|
|
190
|
-
- Padding: 12px 20px
|
|
191
|
-
- Font: 14px / 600 / Pretendard
|
|
192
|
-
- Pressed: `#d81b1c`
|
|
193
|
-
- Use: Last-chance sale CTAs, destructive confirms (`삭제`)
|
|
194
|
-
|
|
195
|
-
### Inputs
|
|
196
|
-
|
|
197
|
-
**Default**
|
|
198
|
-
- Background: `#ffffff`
|
|
199
|
-
- Border: 1px solid `#dfe4eb`
|
|
200
|
-
- Radius: 6px
|
|
201
|
-
- Padding: 12px 16px
|
|
202
|
-
- Font: 16px / 400 / Pretendard, text `#222`
|
|
203
|
-
- Placeholder: `#848f9a`
|
|
204
|
-
- Focus: 1px solid `#5f0080` (no glow ring -- editorial restraint)
|
|
205
|
-
- Disabled: `#f2f5f8` background, `#a7b2bc` text
|
|
206
|
-
- Use: Standard text fields (login, address, search-modal)
|
|
207
|
-
|
|
208
|
-
**Search Bar (Header)**
|
|
209
|
-
- Background: `#f2f5f8`
|
|
210
|
-
- Border: none
|
|
211
|
-
- Radius: 6px
|
|
212
|
-
- Padding: 10px 16px (left), 10px 44px (right -- search icon slot)
|
|
213
|
-
- Font: 14px / 400 / Pretendard
|
|
214
|
-
- Placeholder: `검색어를 입력해주세요` in `#848f9a`
|
|
215
|
-
- Active: focus underline `#5f0080` 1px on bottom edge
|
|
216
|
-
- Use: Persistent top-of-page search
|
|
162
|
+
### Form input
|
|
217
163
|
|
|
218
|
-
**
|
|
164
|
+
**Captured input — default and error sample**
|
|
219
165
|
- Background: `#ffffff`
|
|
220
|
-
-
|
|
221
|
-
- Radius:
|
|
222
|
-
-
|
|
223
|
-
-
|
|
224
|
-
- Use:
|
|
166
|
+
- Text: `#333333`
|
|
167
|
+
- Radius: 0px
|
|
168
|
+
- Font: 16px / 400 / Pretendard
|
|
169
|
+
- Error: Captured at `home::[data-omd-interaction-capture="form-error-0-0"]` and `surface-3::[data-omd-interaction-capture="form-error-0-0"]`; retained computed background, text, border, and radius matched the default sample.
|
|
170
|
+
- Use: A captured form input only; focus, disabled, success, and validation-copy variants were not observed.
|
|
225
171
|
|
|
226
|
-
###
|
|
172
|
+
### Product-list controls
|
|
227
173
|
|
|
228
|
-
**
|
|
229
|
-
- Background: `#ffffff`
|
|
230
|
-
- Border: none (separated by 16px gap on cream `#f2f5f8` page or 16px gap on white)
|
|
231
|
-
- Radius: 4px on image (top), 0 on text block
|
|
232
|
-
- Padding: 0 (image bleeds), 12px 4px (text block)
|
|
233
|
-
- Shadow: none in default state, `0px 0px 4px rgba(0,0,0,0.15)` on hover (KPDS shadow-2)
|
|
234
|
-
- Image: 1:1 aspect ratio, lazy-loaded WebP
|
|
235
|
-
- Title: 14px / 400 / `#222`, max 2 lines with ellipsis
|
|
236
|
-
- Brand line: 12px / 400 / `#848f9a`, max 1 line
|
|
237
|
-
- Price stack: discount % `#e22d2e` 16px / 700 + final price `#222` 16px / 700 + original price `#a7b2bc` 13px / 400 strikethrough
|
|
238
|
-
- Badges: `샛별배송` purple chip top-left of image area
|
|
239
|
-
- Use: Category list, search results, recommendation rails
|
|
240
|
-
|
|
241
|
-
**Editorial Banner Card**
|
|
242
|
-
- Background: `#ffffff` or photographic full-bleed
|
|
243
|
-
- Radius: 8px
|
|
244
|
-
- Padding: 24px when copy is overlaid on white panel; 0 when full-bleed photo with caption below
|
|
245
|
-
- Shadow: none (banners earn weight from photography, not chrome)
|
|
246
|
-
- Use: Magazine-style storytelling tiles (`Kurly's Pick`, `오늘의 레시피`)
|
|
247
|
-
|
|
248
|
-
**Modal / Dialog**
|
|
174
|
+
**Repeated list control — observed default**
|
|
249
175
|
- Background: `#ffffff`
|
|
250
|
-
-
|
|
251
|
-
-
|
|
252
|
-
- Shadow: `0px 0px 30px rgba(0,0,0,0.25)` (KPDS shadow-elevated)
|
|
253
|
-
- Max-width: 480px
|
|
254
|
-
- Title: 20px / 700 / `#222`, body: 14px / 400 / `#393d41`
|
|
255
|
-
- Use: Confirmation dialogs, address-edit, coupon-apply
|
|
256
|
-
|
|
257
|
-
### Badges
|
|
258
|
-
|
|
259
|
-
**샛별배송 (Dawn Delivery)**
|
|
260
|
-
- Background: `#5f0080`
|
|
261
|
-
- Text: `#ffffff`
|
|
176
|
+
- Text: `#333333`
|
|
177
|
+
- Border: 1px solid `#dfe4eb`
|
|
262
178
|
- Radius: 4px
|
|
263
|
-
-
|
|
264
|
-
-
|
|
265
|
-
- Use: Top-left overlay on product card image; signals dawn-delivery eligibility
|
|
179
|
+
- Font: 14px / 400 / Pretendard
|
|
180
|
+
- Use: Repeated 249px by 36px button at `surface-3::[data-omd-capture="148"]`; default state only.
|
|
266
181
|
|
|
267
|
-
**
|
|
268
|
-
- Background: `#
|
|
269
|
-
- Text: `#
|
|
270
|
-
-
|
|
271
|
-
-
|
|
272
|
-
-
|
|
273
|
-
-
|
|
274
|
-
- Use: Exclusive-to-Kurly product indicator
|
|
182
|
+
**Compact product-list control — observed default**
|
|
183
|
+
- Background: `#f7f7f7`
|
|
184
|
+
- Text: `#b5b5b5`
|
|
185
|
+
- Radius: 2px
|
|
186
|
+
- Padding: 2px 0px 3px
|
|
187
|
+
- Font: 13px / 400 / Pretendard
|
|
188
|
+
- Use: Compact 22px control at `surface-3::[data-omd-capture="60"]`; default state only.
|
|
275
189
|
|
|
276
|
-
|
|
277
|
-
- Background: `#e22d2e`
|
|
278
|
-
- Text: `#ffffff`
|
|
279
|
-
- Radius: 4px
|
|
280
|
-
- Padding: 4px 6px
|
|
281
|
-
- Font: 11px / 700
|
|
282
|
-
- Use: Time-bound discount overlays on hero rails
|
|
283
|
-
|
|
284
|
-
**Soldout**
|
|
285
|
-
- Background: rgba(0,0,0,0.5) full-image overlay
|
|
286
|
-
- Text: `#ffffff` 14px / 700 centered (`일시품절`)
|
|
287
|
-
- Radius: matches parent card image radius
|
|
288
|
-
- Use: Out-of-stock product card state
|
|
289
|
-
|
|
290
|
-
**Neutral Tag**
|
|
291
|
-
- Background: `#f2f5f8`
|
|
292
|
-
- Text: `#393d41`
|
|
293
|
-
- Radius: 4px
|
|
294
|
-
- Padding: 4px 8px
|
|
295
|
-
- Font: 12px / 400
|
|
296
|
-
- Use: Category chips, filter chips (inactive)
|
|
190
|
+
### Product-list article
|
|
297
191
|
|
|
298
|
-
**
|
|
299
|
-
-
|
|
300
|
-
-
|
|
301
|
-
-
|
|
302
|
-
-
|
|
303
|
-
- Font: 12px / 600
|
|
304
|
-
- Use: Active filter selection in category browse
|
|
192
|
+
**Article wrapper — observed default**
|
|
193
|
+
- Text: `#333333`
|
|
194
|
+
- Radius: 0px
|
|
195
|
+
- Font: 14px / 400 / Pretendard
|
|
196
|
+
- Use: `surface-3::article` wrapper; representative sample is 249px wide. It has a transparent computed background, no border, no shadow, and no observed hover variant.
|
|
305
197
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
198
|
+
No filled purple purchase CTA, badge, modal, checkout control, product-card image treatment, responsive variant, or additional interaction state is specified: the supplied capture does not give that selector/state provenance.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
**Verified:** 2026-07-13
|
|
202
|
+
**Tier 1 sources:** https://www.kurly.com/main; https://www.kurly.com/shopping/categories/list; https://www.kurly.com/collections/market-newproduct; https://www.kurly.com/introduce; https://newsroom.kurlycorp.com/%ED%9A%8C%EC%82%AC%EC%86%8C%EA%B0%9C/
|
|
203
|
+
**Tier 2 sources:** https://getdesign.md/kurly (attempted; no Kurly record returned in public search); https://styles.refero.design/?q=kurly (attempted; no Kurly style record returned in public search)
|
|
204
|
+
**Conflicts unresolved:** none
|
|
310
205
|
|
|
311
206
|
## 5. Layout Principles
|
|
312
207
|
|
|
313
|
-
|
|
314
|
-
-
|
|
315
|
-
-
|
|
316
|
-
- Page horizontal gutter: 16px (mobile), 24px (tablet), 40px (desktop)
|
|
317
|
-
- Section vertical rhythm: 64px between major content sections, 32px between sub-sections
|
|
318
|
-
|
|
319
|
-
### Grid & Container
|
|
320
|
-
- Mobile: 2-column product grid, 8px gap
|
|
321
|
-
- Tablet: 3-column product grid, 12px gap
|
|
322
|
-
- Desktop: 4-column product grid, 16px gap, 1050px content max-width centered with editorial whitespace flanking
|
|
323
|
-
- Header GNB: full-bleed white, 1050px content cluster centered
|
|
324
|
-
|
|
325
|
-
### Whitespace Philosophy
|
|
326
|
-
- **Photography-forward, chrome-light.** Product images are the heroes; cards have no borders, hairlines stay quiet, shadows appear only on hover.
|
|
327
|
-
- **Cream rests, white acts.** Page bands alternate `#f2f5f8` (rest sections, footers) and `#ffffff` (active product grids) so the eye gets pause between commerce density.
|
|
328
|
-
- **Generous gutters in marketing, tight grids in commerce.** A `Kurly's Pick` editorial banner breathes at 64-96px vertical; a category grid tightens to 16-24px.
|
|
329
|
-
|
|
330
|
-
### Border Radius Scale
|
|
331
|
-
- Small (4px): Product card image, badges, chips, filter pills, search bar
|
|
332
|
-
- Medium (6px): Buttons, inputs, quantity stepper
|
|
333
|
-
- Large (8px): Editorial banners, content tiles
|
|
334
|
-
- XL (12px): Modals, sheets, large feature cards
|
|
208
|
+
- The supplied evidence is a 1440px desktop capture, not a responsive specification.
|
|
209
|
+
- Repeated new-products article wrappers measure 249px wide; that observation does not establish a site-wide grid, column count, gutter, or breakpoint.
|
|
210
|
+
- Keep product-list wrappers flat until a specific elevated/card treatment is observed on the relevant surface.
|
|
335
211
|
|
|
336
212
|
## 6. Depth & Elevation
|
|
337
213
|
|
|
338
|
-
|
|
339
|
-
|-------|-----------|-----|
|
|
340
|
-
| Flat (Level 0) | No shadow | Default product cards, page sections |
|
|
341
|
-
| Subtle | `0px 2px 2px 0px rgba(0,0,0,0.03)` | Sticky headers, gentle separation |
|
|
342
|
-
| Card-Hover | `0px 0px 4px 0px rgba(0,0,0,0.15)` | Product card on hover |
|
|
343
|
-
| Floating | `2px 2px 10px 0px rgba(0,0,0,0.10)` | Dropdown, popover, tooltip |
|
|
344
|
-
| Elevated | `0px 0px 30px 0px rgba(0,0,0,0.25)` | Modal dialogs, full-screen sheet entries |
|
|
345
|
-
| Overlay-Heavy | `0px 4px 10px 0px rgba(0,0,0,0.40)` | Image lightbox, full-takeover overlays |
|
|
346
|
-
|
|
347
|
-
**Shadow Philosophy.** Kurly shadows are pure black with low opacity — never purple-tinted. The brand wants the purple to feel like one warm, deliberate object on the page; tinting shadows would dilute that singular role. Default cards stay flat; elevation appears only at meaningful interaction (hover, modal entry). The system has 6 named shadows but 4 of them are reserved for floating/modal contexts — most surfaces are flat.
|
|
214
|
+
The retained representative category tabs, repeated product-list controls, and product-list article wrappers all compute to `box-shadow: none`. No elevation scale, modal shadow, sticky-header shadow, or hover shadow is specified from this artifact.
|
|
348
215
|
|
|
349
216
|
## 7. Do's and Don'ts
|
|
350
217
|
|
|
351
218
|
### Do
|
|
352
|
-
|
|
353
|
-
-
|
|
354
|
-
-
|
|
355
|
-
-
|
|
356
|
-
-
|
|
357
|
-
- Rest the page on cream sections between commerce-dense white grids
|
|
358
|
-
- Reserve the bright purple `#bd76ff` for promotional sub-brand moments only (Beauty Kurly)
|
|
219
|
+
|
|
220
|
+
- Use `#5f0080` for the observed active category treatment, not as a presumed universal fill.
|
|
221
|
+
- Use Pretendard where this reference needs the captured product-surface UI family.
|
|
222
|
+
- Keep the observed new-products article wrapper flat unless another surface supplies a measured treatment.
|
|
223
|
+
- Preserve the selector and state boundaries for category-tab hover/pressed and form-input error evidence.
|
|
359
224
|
|
|
360
225
|
### Don't
|
|
361
|
-
|
|
362
|
-
- Don't
|
|
363
|
-
- Don't
|
|
364
|
-
- Don't
|
|
365
|
-
- Don't
|
|
366
|
-
- Don't borrow Coupang/SSG visual cues (heavy red, dense ribbons) — Kurly is editorial, not arcade
|
|
367
|
-
- Don't use pure black `#000` for text — `#222` (ink-800) keeps the page from going clinical
|
|
226
|
+
|
|
227
|
+
- Don't restore legacy purple ramps, cream fills, sale colors, filled purchase CTAs, or badges without current product-surface provenance.
|
|
228
|
+
- Don't turn declared-only Noto Sans KR or system fallbacks into Kurly’s UI-family token.
|
|
229
|
+
- Don't use corporate/newsroom brand narrative as an authority for commerce component geometry or color values.
|
|
230
|
+
- Don't invent responsive, checkout, modal, or additional form states from the three desktop captures.
|
|
368
231
|
|
|
369
232
|
## 8. Responsive Behavior
|
|
370
233
|
|
|
371
|
-
|
|
372
|
-
| Name | Width | Key Changes |
|
|
373
|
-
|------|-------|-------------|
|
|
374
|
-
| Mobile | <768px | 2-col product grid, 56px GNB, bottom tab bar |
|
|
375
|
-
| Tablet | 768-1024px | 3-col product grid, GNB compresses category dropdowns |
|
|
376
|
-
| Desktop | >1024px | 4-col grid, full GNB, 1050px content centered, editorial flanks |
|
|
377
|
-
|
|
378
|
-
### Touch Targets
|
|
379
|
-
- Buttons: 48px (lg), 44px (md), 36px (sm) — all comfortably above 44px AAA
|
|
380
|
-
- Tab bar items: 56px height with stacked icon + label
|
|
381
|
-
- Product card tap target: full card area (image + text block)
|
|
382
|
-
- Quantity stepper: 36px height, 32px wide segments
|
|
383
|
-
|
|
384
|
-
### Collapsing Strategy
|
|
385
|
-
- Product grid: 4 → 3 → 2 columns as viewport narrows
|
|
386
|
-
- GNB top: full menu on desktop → hamburger drawer on mobile
|
|
387
|
-
- Bottom CTA on PDP: sticky full-width on mobile, inline column on desktop
|
|
388
|
-
- Editorial banners: side-by-side on desktop → stacked single column on mobile
|
|
389
|
-
|
|
390
|
-
### Image Behavior
|
|
391
|
-
- Product thumbnail: 1:1 ratio, 4px top corner radius, WebP / JPEG fallback, lazy-loaded
|
|
392
|
-
- Hero banner: 16:9 on desktop, 4:3 on mobile
|
|
393
|
-
- Full-bleed editorial: edge-to-edge, no radius
|
|
234
|
+
No mobile viewport or responsive-state capture was supplied. Breakpoints, column changes, touch-target requirements, and mobile navigation are intentionally unspecified.
|
|
394
235
|
|
|
395
236
|
## 9. Agent Prompt Guide
|
|
396
237
|
|
|
397
|
-
|
|
398
|
-
-
|
|
399
|
-
-
|
|
400
|
-
- Background: White (`#ffffff`) / Cream (`#f2f5f8`)
|
|
401
|
-
- Heading: Ink (`#222`)
|
|
402
|
-
- Body: Dark Gray (`#393d41`)
|
|
403
|
-
- Caption: Mid Gray (`#565e67`)
|
|
404
|
-
- Placeholder/Disabled: Light Gray (`#848f9a`)
|
|
405
|
-
- Border: Hairline (`#dfe4eb`)
|
|
406
|
-
- Sale Red: (`#e22d2e`)
|
|
407
|
-
- Success: (`#029568`)
|
|
408
|
-
- Bright Purple (promo): (`#bd76ff`)
|
|
409
|
-
|
|
410
|
-
### Example Component Prompts
|
|
411
|
-
- "Create a Kurly product card: white bg, no border, 1:1 image with 4px top radius. `샛별배송` purple badge top-left of image. Below image: brand line 12px #848f9a, title 14px #222 max 2 lines, price triple-stack (discount % #e22d2e 16px/700, final price #222 16px/700, original price #a7b2bc 13px/400 strikethrough). Card-hover shadow 0px 0px 4px rgba(0,0,0,0.15)."
|
|
412
|
-
- "Build a primary CTA: #5f0080 bg, white text, 16px weight 600 Pretendard, 6px radius, 16px 24px padding, full-width on mobile. Pressed: #672091. Disabled: #dfe4eb bg, #848f9a text."
|
|
413
|
-
- "Design a search bar: #f2f5f8 bg, no border, 6px radius, 14px Pretendard placeholder #848f9a. Search icon right-padding 44px slot. Focus underline #5f0080 1px on bottom edge."
|
|
414
|
-
- "Create a 샛별배송 badge: #5f0080 bg, white text 11px weight 700, 4px radius, 4px 8px padding. Place top-left over product image with 8px inset."
|
|
415
|
-
- "Build an editorial banner card: full-bleed photographic top, white panel below with 24px padding, 8px radius corners, no shadow. Title 24px/700 #222, supporting line 14px/400 #393d41, ghost CTA `더 알아보기 >` in #5f0080."
|
|
416
|
-
|
|
417
|
-
### Iteration Guide
|
|
418
|
-
1. Primary purple is `#5f0080` — only this hex for brand mark and primary CTA
|
|
419
|
-
2. Pair with white `#ffffff` and cream `#f2f5f8`; never tint hero backgrounds purple
|
|
420
|
-
3. Pretendard at 400 / 600 / 700 only — no italics in commerce chrome
|
|
421
|
-
4. Border-radius defaults: 4px (cards/badges), 6px (buttons/inputs), 8-12px (banners/modals)
|
|
422
|
-
5. Shadows are neutral black, low opacity, used only at hover and elevation
|
|
423
|
-
6. Price triple-stack is sacred: red % + ink final + gray original (strikethrough)
|
|
424
|
-
7. `샛별배송` purple badge is the brand's most repeated micro-component — recognize it as a brand moment
|
|
425
|
-
|
|
426
|
-
---
|
|
238
|
+
- "Create a captured Kurly category tab: inactive text `#b5b5b5`, selected text `#5f0080`; 18px Pretendard, 0px radius. The observed inactive tab becomes `#5f0080` at 18px/500 on hover and pressed."
|
|
239
|
+
- "Create the observed new-products list control: white background, `#333333` text, 1px `#dfe4eb` border, 4px radius, 14px/400 Pretendard. Do not add a hover state."
|
|
240
|
+
- "Use a flat, transparent product-list article wrapper with `#333333` 14px/400 Pretendard; do not infer a card background, shadow, or product-image treatment."
|
|
427
241
|
|
|
428
242
|
## 10. Voice & Tone
|
|
429
243
|
|
|
430
|
-
Kurly
|
|
431
|
-
|
|
432
|
-
| Context | Tone |
|
|
433
|
-
|---|---|
|
|
434
|
-
| CTAs | Verb-first Korean (`구매하기`, `장바구니 담기`, `샛별배송으로 받기`) — never exclamatory, never `Click here!` |
|
|
435
|
-
| Empty states | One quiet sentence naming why it's empty + one low-key action. Never `데이터가 없습니다`. |
|
|
436
|
-
| Error messages | Specific and blameless. `다시 시도해 주세요` over `오류가 발생했습니다`. |
|
|
437
|
-
| Success toasts | Past-tense single sentence (`장바구니에 담겼어요`). No exclamation marks. |
|
|
438
|
-
| Product descriptions | Editorial — supplier name, region, harvest method first. Marketing claims (`최고의`, `프리미엄`) only when sourced. |
|
|
439
|
-
| Promotional banners | Restrained even in sales. `오늘만 이 가격` rather than `MEGA SALE!!!`. |
|
|
440
|
-
| Trust & delivery copy | Calm and operational. `내일 아침 7시 전 도착` is more powerful than `초고속 배송`. |
|
|
441
|
-
| Onboarding | One screen, one promise (dawn delivery), one CTA. No carousel of features. |
|
|
244
|
+
Kurly’s first-party introduction frames the service around careful selection, delivery quality, price, customer care, and sustainable distribution. The official company profile names `Something Better`, tenacity, integrity, diversity, and sustainability as its values. This supports a practical, discriminating, and responsible voice in company material; it does not establish unobserved storefront microcopy rules.
|
|
442
245
|
|
|
443
|
-
|
|
246
|
+
| Context | First-party-supported direction |
|
|
247
|
+
|---------|-------------------------------|
|
|
248
|
+
| Product selection | Explain the standard or quality rationale clearly. |
|
|
249
|
+
| Delivery | State timing and product-condition information plainly. |
|
|
250
|
+
| Producer/partner story | Credit the producer and describe the relevant value chain. |
|
|
251
|
+
| Sustainability | Describe the specific practice or impact rather than generic “eco” claims. |
|
|
444
252
|
|
|
445
|
-
**
|
|
253
|
+
**Official language samples.**
|
|
446
254
|
|
|
447
|
-
- `Better
|
|
448
|
-
-
|
|
449
|
-
-
|
|
450
|
-
- `샛별배송` — brand-defining badge for dawn delivery (delivered by 7am for orders by 11pm). <!-- verified: kurly.com brand surfaces, 2026-05 -->
|
|
451
|
-
- `장바구니에 담겼어요` — illustrative success-toast pattern in Kurly register. <!-- illustrative: not verified as live Kurly copy -->
|
|
452
|
-
- `오늘만 이 가격` — illustrative restrained promotion line in Kurly register. <!-- illustrative: not verified as live Kurly copy -->
|
|
453
|
-
- `내일의 장보기, 오늘 끝.` — illustrative tagline pattern in Kurly register (dawn-delivery promise). <!-- illustrative: not verified as live Kurly copy -->
|
|
255
|
+
- `Something Better` — company value label. <!-- source: newsroom.kurlycorp.com company profile -->
|
|
256
|
+
- `나와 내 가족이 사고 싶은 상품을 판매합니다.` — official service principle. <!-- source: kurly.com/introduce -->
|
|
257
|
+
- `더 나은 삶을 위한 유통 혁신` — company-profile framing. <!-- source: newsroom.kurlycorp.com company profile -->
|
|
454
258
|
|
|
455
259
|
## 11. Brand Narrative
|
|
456
260
|
|
|
457
|
-
Kurly
|
|
458
|
-
|
|
459
|
-
The product is built around a single idea: **샛별배송 (saetbyeol-baesong, "morning star delivery")** — order by 11pm, your fresh groceries arrive by 7am the next morning, full cold chain maintained from farm to apartment door. This was unprecedented in Korea when Kurly launched it; the entire e-grocery industry has since copied the model. Around that operational spine sits a deliberately editorial commerce surface: 1:1 product photography, magazine-style supplier features, restrained chrome, and one deep purple (`#5f0080`) repeated just often enough to brand the promise. The visual decision tracks the founder's positioning bet — Korean grocery shoppers (especially dual-income working couples in Seoul/Pangyo/Gangnam) would pay a premium *if* the product, the photography, and the trust narrative all signaled "curated." So everything signals curated, including the type-on-cream restraint and the absence of promotional carnival ([KED Global — dawn delivery pioneer](https://www.kedglobal.com/e-commerce/newsView/ked202412200010), [Marketline — Kurly pioneering dawn delivery](https://www.marketline.com/blog/kurly-pioneering-dawn-delivery-service-market-in-south-korea/)).
|
|
261
|
+
Kurly’s official materials say that the company began its consumer service in 2015 and built it around carefully chosen products and a cold-chain delivery approach. The current company profile identifies Market Kurly and Beauty Kurly as services and describes the broader purpose as distribution innovation for a better life. [Company profile](https://newsroom.kurlycorp.com/%ED%9A%8C%EC%82%AC%EC%86%8C%EA%B0%9C/)
|
|
460
262
|
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
What Kurly refuses: the gameshow ribbons of Coupang, the SuperSale carnival of 11st, the celebrity-endorsement pile-on of legacy home shopping, and the aggressive "타임딜" countdown psychology of generic Korean e-commerce. The brand's entire claim is that **time-pressed working professionals would rather have one curated thing tomorrow at 7am than ten cheap things this afternoon** — and the design system is the visible argument for that bet. Purple is scarce because trust has to be scarce to be legible; photography is generous because the product is the brand; chrome is quiet because the product is loud enough.
|
|
263
|
+
Its own introduction connects the service proposition to product selection, delivery quality, fair pricing, customer care, and sustainable distribution. That narrative is useful context for a reference user, but it does not convert corporate claims into component tokens or make unobserved commerce behaviors factual. [Kurly introduction](https://www.kurly.com/introduce)
|
|
464
264
|
|
|
465
265
|
## 12. Principles
|
|
466
266
|
|
|
467
|
-
1. **
|
|
468
|
-
2. **
|
|
469
|
-
3. **
|
|
470
|
-
4. **
|
|
471
|
-
5. **Pretendard, three weights, no italics.** 400 / 600 / 700 across the entire system. *UI implication:* if a comp introduces a fourth weight or italic body copy, it has drifted off-system; reject or re-scope.
|
|
472
|
-
6. **`샛별배송` is sacred chrome.** The dawn-delivery badge is the most-repeated brand component on the surface — it carries the operational promise that justifies the premium. *UI implication:* never restyle it for "balance"; it is intentionally the most purple thing on the card.
|
|
473
|
-
7. **Restraint over carnival in promotion.** Sale messaging is bounded — `오늘만 이 가격` rather than countdown timers and screen-shake animations. *UI implication:* no flashing, no screen-fill takeovers, no exclamation chains. If a promo design borrows Coupang's energy, it has betrayed the brand.
|
|
474
|
-
8. **One operational promise, surfaced everywhere.** Every page, every flow, every empty state can answer: *will it be there by 7am?* — yes, no, or by-when. *UI implication:* delivery context is a default, not a detail-screen reveal. Cards, cart, checkout, confirmation all surface the dawn-delivery slot.
|
|
267
|
+
1. **Something Better.** The company says it pursues better things and better ways. *UI implication:* make a product or delivery claim specific and traceable to its supporting evidence.
|
|
268
|
+
2. **Integrity.** The company describes acting on trust and sincere communication. *UI implication:* do not conceal an evidence boundary behind a plausible UI token.
|
|
269
|
+
3. **Diversity.** The company says it respects different preferences and choices. *UI implication:* do not collapse separate product, marketing, and corporate surfaces into one fictional system.
|
|
270
|
+
4. **Sustainability.** Kurly connects sustainability to customers, producers, partners, and the distribution ecosystem. *UI implication:* represent a sustainability claim only when the source identifies the practice or impact.
|
|
475
271
|
|
|
476
272
|
## 13. Personas
|
|
477
273
|
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
**서연 (Seoyeon), 34, 강남구.** Marketing director at a Korean conglomerate, husband works in finance, one toddler in daycare. Opens Kurly between 10:30pm and 11:00pm three nights a week — past the cutoff and the morning is broken. Buys organic eggs, French butter, the Sunday roast, the pediatrician-recommended baby food. Doesn't comparison-shop on price; comparison-shops on supplier and harvest date. Will pay 30% premium for the right strawberries.
|
|
274
|
+
Kurly’s first-party material identifies stakeholder groups rather than providing customer personas: customers and families, producers, partners, shareholders, and employees. No demographic archetypes, purchase behavior, or individual personas were collected for this reference, so they are not fabricated here.
|
|
481
275
|
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
**지은 (Jieun), 28, 마포구.** Single, works in tech PR, lives alone, cooks for one. Discovered Kurly through Beauty Kurly first — Korean K-beauty editorial commerce — then converted to grocery. Buys small portions, premium snacks, niche imported pantry items (Italian anchovies, Japanese soy sauce, French chocolate). The dawn-delivery promise matters less than the curation: she trusts the merchandiser more than she trusts herself.
|
|
485
|
-
|
|
486
|
-
**Mr. & Mrs. Choi, 61, 잠실.** Empty-nesters, both retired professionals. Daughter set up the account during COVID; they kept using it because the produce quality is consistent and the customer-service tone is calm. Order weekly, primarily fresh fish, hanwoo beef, premium fruit boxes for grandchildren visits. Don't engage with promotions — engage with reliability.
|
|
276
|
+
- [FILL IN: user-provided primary customer segment and task]
|
|
277
|
+
- [FILL IN: user-provided producer or partner workflow, if the target surface serves one]
|
|
487
278
|
|
|
488
279
|
## 14. States
|
|
489
280
|
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
|
493
|
-
|
|
494
|
-
|
|
|
495
|
-
|
|
|
496
|
-
|
|
|
497
|
-
|
|
|
498
|
-
|
|
|
499
|
-
|
|
|
500
|
-
|
|
|
501
|
-
|
|
|
502
|
-
|
|
|
503
|
-
|
|
|
504
|
-
| **Soldout** | Full-image overlay `rgba(0,0,0,0.5)` with white `일시품절` 14px / 700 centered. Card stays clickable for re-stock notification opt-in. |
|
|
505
|
-
| **Disabled** | Button background `#dfe4eb`, text `#848f9a`. No color inversion. Geometry stays identical so re-enable is frame-stable. |
|
|
281
|
+
The collector recorded category-tab hover and pressed samples and a form-input error sample only. All other product states need direct surface evidence before specification.
|
|
282
|
+
|
|
283
|
+
| Category | Evidence status |
|
|
284
|
+
|----------|-----------------|
|
|
285
|
+
| Default category tab | Inactive and selected values captured |
|
|
286
|
+
| Hover | Captured for one inactive category tab |
|
|
287
|
+
| Pressed | Captured for one inactive category tab |
|
|
288
|
+
| Error | Captured for a form input; retained computed values matched the default sample |
|
|
289
|
+
| Empty | [FILL IN: no observed state] |
|
|
290
|
+
| Loading | [FILL IN: no observed state] |
|
|
291
|
+
| Success | [FILL IN: no observed state] |
|
|
292
|
+
| Skeleton | [FILL IN: no observed state] |
|
|
293
|
+
| Disabled | [FILL IN: no observed state] |
|
|
294
|
+
| Focus | [FILL IN: no observed state] |
|
|
506
295
|
|
|
507
296
|
## 15. Motion & Easing
|
|
508
297
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
| Token | Value | Use |
|
|
512
|
-
|---|---|---|
|
|
513
|
-
| `motion-instant` | 0ms | Toggle flips, checkbox state, filter chip select |
|
|
514
|
-
| `motion-fast` | 150ms | Hover lift, button press, inline cart-flash success |
|
|
515
|
-
| `motion-standard` | 250ms | The default — card hover-shadow appearance, dropdown reveal, tab swap |
|
|
516
|
-
| `motion-slow` | 350ms | Modal entry, full-sheet presentation, image lightbox |
|
|
517
|
-
| `motion-page` | 300ms | Route transitions on PDP entry/exit |
|
|
518
|
-
|
|
519
|
-
**Easings:**
|
|
520
|
-
|
|
521
|
-
| Token | Curve | Use |
|
|
522
|
-
|---|---|---|
|
|
523
|
-
| `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Sheets, modals, toasts, cards-on-hover |
|
|
524
|
-
| `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals, modal close, toast auto-fade |
|
|
525
|
-
| `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1)` | Two-way transitions — expandable accordion, tab content swap |
|
|
526
|
-
|
|
527
|
-
**Spring stance.** Spring and overshoot easings are forbidden across Kurly commerce surfaces. The brand sells trust and dawn-delivery reliability to time-pressed professionals; bouncy motion reads as toy-like and undermines the editorial restraint that justifies the premium price point. The licensed exceptions are (a) the native-platform pull-to-refresh on the mobile app (inherits OS spring) and (b) image carousel snap on PDP galleries (inherits browser-native scroll-snap). Every other transition uses `ease-enter`, `ease-exit`, or `ease-standard`.
|
|
528
|
-
|
|
529
|
-
**Signature motions.**
|
|
530
|
-
|
|
531
|
-
1. **Product card hover-lift.** On desktop hover, card raises with shadow `0px 0px 4px rgba(0,0,0,0.15)` over `motion-fast / ease-enter`. No scale change — the photography stays exactly the same size; only the shadow appears. The restraint is the brand.
|
|
532
|
-
2. **Cart-add flash.** When a product is added, the cart icon's background pulses to `#f5effa` (purple-50) over `motion-fast`, then fades back to default. A bottom toast (`장바구니에 담겼어요`) rises with `motion-standard / ease-enter` and dismisses with `motion-fast / ease-exit`.
|
|
533
|
-
3. **Modal entry.** Modals fade in (opacity 0 → 1) and rise from `y+16px` to `y+0` over `motion-slow / ease-enter`. Backdrop fades from `rgba(0,0,0,0)` to `rgba(0,0,0,0.5)` synchronized. Dismissal is lighter — `motion-fast / ease-exit`.
|
|
534
|
-
4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, all `motion-*` tokens collapse to `motion-instant`. Hover lift becomes immediate shadow toggle; modal cross-fades replace y-rise; cart flash becomes a 1-frame highlight then default. The app stays fully usable; just less kinetic.
|
|
535
|
-
|
|
536
|
-
<!--
|
|
537
|
-
OmD v0.1 Sources — Kurly DESIGN.md
|
|
538
|
-
|
|
539
|
-
Tier 1 — Direct verification (2026-05-08):
|
|
540
|
-
- https://www.kurly.com/main — homepage shell HTML + compiled KPDS CSS
|
|
541
|
-
(https://res.kurly.com/v/2026.05.06.01/_next/static/css/51aa1e65e91a39af.css).
|
|
542
|
-
Confirms: --kpds_ldmw172m: #5f0080 (Kurly Purple primary), full purple ramp
|
|
543
|
-
(#672091, #7e3ab0, #8d4cc4, #9a60ca, #a775d2, #b489d8, #c19edf, #ceb2e6,
|
|
544
|
-
#dcc7ed, #e8dbf3, #f5effa), bright purple promotional ramp (#bd76ff anchor),
|
|
545
|
-
neutral gray scale (#1c1c1c → #222 → #393d41 → #464c52 → #565e67 → #848f9a
|
|
546
|
-
→ #a7b2bc → #bcc4cc → #cbd1d7 → #dfe4eb → #eceff3 → #f2f5f8), semantic colors
|
|
547
|
-
(#e22d2e sale red, #fa622f coral, #029568 success, #216ba5 info), shadow tokens
|
|
548
|
-
(0px 2px 2px rgba(0,0,0,0.03), 0px 0px 4px rgba(0,0,0,0.15),
|
|
549
|
-
2px 2px 10px rgba(0,0,0,0.10), 0px 0px 30px rgba(0,0,0,0.25),
|
|
550
|
-
0px 4px 10px rgba(0,0,0,0.40)), font stack
|
|
551
|
-
Pretendard / Pretendard Variable / system fallback.
|
|
552
|
-
- https://www.kurly.com/main — meta description + og tags. Confirms:
|
|
553
|
-
"Better Life for All", "건강한 식재료부터 믿을 수 있는 뷰티, 라이프스타일 상품까지.
|
|
554
|
-
나와 내 가족이 사고 싶은 상품을 판매합니다. 내일 아침 문 앞에서 만나요!",
|
|
555
|
-
Organization name "Kurly", customer support phone +82-1644-1107.
|
|
556
|
-
|
|
557
|
-
Tier 2 — Cross-check:
|
|
558
|
-
- https://getdesign.md/kurly — no record (queried 2026-05-08, "No designs found").
|
|
559
|
-
- styles.refero.design — not separately queried (no record observed in Tier 1
|
|
560
|
-
links; future migration sweep should verify).
|
|
561
|
-
|
|
562
|
-
Tier 2 (Philosophy / founders):
|
|
563
|
-
- https://en.wikipedia.org/wiki/Sophie_Kim — confirms Sophie Kim (Kim Seul-ah,
|
|
564
|
-
김슬아), b. 1983 Ulsan, Wellesley 2006 cum laude, Goldman Sachs HK 2007,
|
|
565
|
-
McKinsey 2010, Temasek 2012, Bain Korea 2013, founded The Farmers 2014,
|
|
566
|
-
Market Kurly launch 2015 with 30 SKUs, rebrand to Kurly Inc. 2018.
|
|
567
|
-
- https://www.kedglobal.com/chief-executives/newsView/ked202201190017 —
|
|
568
|
-
Kurly CEO Sophie Kim profile, founder background, premium positioning.
|
|
569
|
-
- https://www.kedglobal.com/e-commerce/newsView/ked202412200010 —
|
|
570
|
-
S.Korea's dawn delivery pioneer Kurly, luxury goods strategy.
|
|
571
|
-
- https://www.marketline.com/blog/kurly-pioneering-dawn-delivery-service-market-in-south-korea/
|
|
572
|
-
— dawn delivery pioneer framing, 새벽배송 origin.
|
|
573
|
-
- https://techcrunch.com/2023/01/04/online-grocery-startup-kurly-scraps-ipo-amid-market-uncertainty/
|
|
574
|
-
— January 2023 IPO postponement; KOSPI preliminary screening passed Aug 2022.
|
|
575
|
-
- https://techcrunch.com/2021/12/19/kurly-lands-210m-pre-ipo-at-a-3-3b-valuation-just-months-after-its-last-funding/
|
|
576
|
-
— Dec 2021 pre-IPO $210M at $3.3B valuation, total $761M.
|
|
577
|
-
- https://www.koreaherald.com/article/2650215 — Kurly opts for Korean market
|
|
578
|
-
for IPO (KOSPI rather than NYSE).
|
|
579
|
-
- https://www.kedglobal.com/earnings/newsView/ked202505130004 —
|
|
580
|
-
first-ever quarterly profit Q1 2025.
|
|
581
|
-
- Investor list (DST Global, Sequoia Capital China, Hillhouse, Aspex,
|
|
582
|
-
Anchor Equity Partners, MiraeAsset, CJ Logistics, SK Networks) —
|
|
583
|
-
Crunchbase + KED Global + TechCrunch, cross-referenced.
|
|
584
|
-
|
|
585
|
-
Re-verification status:
|
|
586
|
-
- Kurly Purple #5f0080 verified directly from compiled KPDS CSS variable
|
|
587
|
-
--kpds_ldmw172m, May 2026. The brand has shipped this hex consistently
|
|
588
|
-
since at least the 2018 Kurly Inc. rebrand.
|
|
589
|
-
- Sophie Kim career timeline: widely reported in KR/EN press; Wikipedia
|
|
590
|
-
reflects published profile interviews, not independently audited.
|
|
591
|
-
- Investor and valuation figures: TechCrunch/KED Global at retrieval date.
|
|
592
|
-
Pre-IPO repricings have been frequent; verify before publishing as live.
|
|
593
|
-
- Q1 2025 first-ever quarterly profit: KED Global May 2025; subsequent
|
|
594
|
-
quarters not re-checked.
|
|
595
|
-
|
|
596
|
-
Personas (§13) are fictional archetypes informed by publicly described Kurly
|
|
597
|
-
customer segments (KR dual-income working professionals, time-pressed parents,
|
|
598
|
-
premium-grocery early adopters). Any resemblance to specific individuals is
|
|
599
|
-
unintended.
|
|
600
|
-
|
|
601
|
-
Interpretive claims (editorial, not documented Kurly statements):
|
|
602
|
-
- "Photography is the brand voice" / "purple is scarce because trust has to
|
|
603
|
-
be scarce to be legible" (§11, §12) — editorial readings of observed design
|
|
604
|
-
decisions, not sourced brand-team statements.
|
|
605
|
-
- The spring-forbidden stance (§15) — derived from the overall brand posture
|
|
606
|
-
(editorial restraint, premium curation, refusal of carnival promotion) as
|
|
607
|
-
expressed in the live KPDS shadow tokens and the absence of overshoot
|
|
608
|
-
easings in compiled CSS; not a documented KPDS rule.
|
|
609
|
-
- "내일의 장보기, 오늘 끝." voice sample (§10) — illustrative pattern in
|
|
610
|
-
Kurly register, not a verified live tagline.
|
|
611
|
-
-->
|
|
612
|
-
|
|
613
|
-
---
|
|
614
|
-
|
|
615
|
-
**Verified:** 2026-05-08 (Tier 1 live + Tier 2 cross-check)
|
|
616
|
-
**Tier 1 sources:** kurly.com/main (homepage Next.js shell + KPDS compiled CSS at res.kurly.com — Kurly Purple `#5f0080` 6px / 16px·600 Primary CTA + cream `#f2f5f8` neutral fill + Pretendard product font); kurly.com/shopping/categories/list (category surface — same Next.js shell, 4-col product grid pattern + 샛별배송 purple badge convention).
|
|
617
|
-
**Tier 2 sources:** getdesign.md/kurly — no record. styles.refero.design — not separately queried.
|
|
618
|
-
**Tier 2 (Philosophy/founders):** Wikipedia (Sophie Kim), KED Global (CEO profile, dawn delivery, Q1 2025 first profit), Marketline (dawn delivery pioneer framing), TechCrunch (2021 pre-IPO $210M @ $3.3B, 2023 IPO postponement), Korea Herald (KOSPI listing path).
|
|
619
|
-
**Style ref:** `karrot` (KR retail neighbor format, retained for §10-15 cadence).
|
|
620
|
-
**Conflicts unresolved:** none.
|
|
298
|
+
No motion duration, easing curve, or transition was captured. The hover and pressed samples establish resulting computed styles for one category tab only; they do not establish motion behavior. [FILL IN: product-specific motion evidence]
|