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
|
@@ -5,642 +5,337 @@ display_name_kr: Ably (에이블리)
|
|
|
5
5
|
country: KR
|
|
6
6
|
category: ecommerce
|
|
7
7
|
homepage: "https://m.a-bly.com"
|
|
8
|
-
primary_color: "#
|
|
8
|
+
primary_color: "#ff5160"
|
|
9
9
|
logo:
|
|
10
10
|
type: favicon
|
|
11
11
|
slug: "https://www.google.com/s2/favicons?domain=a-bly.com&sz=128"
|
|
12
|
-
verified: "2026-
|
|
12
|
+
verified: "2026-07-12"
|
|
13
|
+
omd: "0.1"
|
|
14
|
+
ds:
|
|
15
|
+
name: ABLY Team
|
|
16
|
+
url: "https://ably.team/"
|
|
17
|
+
type: brand
|
|
18
|
+
description: ABLY's official mission, company, product-evolution, and culture surface; consumer app and Seller Square remain separate UI evidence domains.
|
|
19
|
+
verification_v2:
|
|
20
|
+
schema: 2
|
|
21
|
+
checked: "2026-07-12"
|
|
22
|
+
surfaces:
|
|
23
|
+
- { id: consumer, kind: mobile-consumer, url: "https://m.a-bly.com/", inspected: "2026-07-12" }
|
|
24
|
+
- { id: team, kind: corporate-brand, url: "https://ably.team/", inspected: "2026-07-12" }
|
|
25
|
+
- { id: seller, kind: seller-platform, url: "https://square.a-bly.com/", inspected: "2026-07-12" }
|
|
26
|
+
sources:
|
|
27
|
+
- { id: consumer-live, kind: product-surface, url: "https://m.a-bly.com/", captured: "2026-07-12" }
|
|
28
|
+
- { id: team-live, kind: official-doc, url: "https://ably.team/", captured: "2026-07-12" }
|
|
29
|
+
- { id: seller-live, kind: product-surface, url: "https://square.a-bly.com/", captured: "2026-07-12" }
|
|
30
|
+
- { id: product-story, kind: official-doc, url: "https://ably.team/news/ZS8_IREAACIAr50Y", captured: "2026-07-12" }
|
|
31
|
+
conflicts: []
|
|
32
|
+
claims:
|
|
33
|
+
"tokens.colors.primary": &team_evidence { surface_id: team, source_id: team-live, method: live-inspect, captured: "2026-07-12" }
|
|
34
|
+
"tokens.colors.canvas": &consumer_evidence { surface_id: consumer, source_id: consumer-live, method: live-inspect, captured: "2026-07-12" }
|
|
35
|
+
"tokens.colors.foreground": *consumer_evidence
|
|
36
|
+
"tokens.colors.consumer-secondary": *consumer_evidence
|
|
37
|
+
"tokens.colors.team-secondary": *team_evidence
|
|
38
|
+
"tokens.colors.seller-body": &seller_evidence { surface_id: seller, source_id: seller-live, method: live-inspect, captured: "2026-07-12" }
|
|
39
|
+
"tokens.colors.consumer-border": *consumer_evidence
|
|
40
|
+
"tokens.colors.platform-border": *team_evidence
|
|
41
|
+
"tokens.colors.team-accent-surface": *team_evidence
|
|
42
|
+
"tokens.typography.family.consumer": *consumer_evidence
|
|
43
|
+
"tokens.typography.family.corporate": *team_evidence
|
|
44
|
+
"tokens.typography.family.seller": *seller_evidence
|
|
45
|
+
"tokens.typography.consumer-label.size": *consumer_evidence
|
|
46
|
+
"tokens.typography.consumer-label.weight": *consumer_evidence
|
|
47
|
+
"tokens.typography.consumer-label.lineHeight": *consumer_evidence
|
|
48
|
+
"tokens.typography.consumer-label.tracking": *consumer_evidence
|
|
49
|
+
"tokens.typography.consumer-label.use": *consumer_evidence
|
|
50
|
+
"tokens.typography.consumer-compact.size": *consumer_evidence
|
|
51
|
+
"tokens.typography.consumer-compact.weight": *consumer_evidence
|
|
52
|
+
"tokens.typography.consumer-compact.lineHeight": *consumer_evidence
|
|
53
|
+
"tokens.typography.consumer-compact.tracking": *consumer_evidence
|
|
54
|
+
"tokens.typography.consumer-compact.use": *consumer_evidence
|
|
55
|
+
"tokens.typography.consumer-meta.size": *consumer_evidence
|
|
56
|
+
"tokens.typography.consumer-meta.weight": *consumer_evidence
|
|
57
|
+
"tokens.typography.consumer-meta.lineHeight": *consumer_evidence
|
|
58
|
+
"tokens.typography.consumer-meta.use": *consumer_evidence
|
|
59
|
+
"tokens.typography.corporate-display.size": *team_evidence
|
|
60
|
+
"tokens.typography.corporate-display.weight": *team_evidence
|
|
61
|
+
"tokens.typography.corporate-display.lineHeight": *team_evidence
|
|
62
|
+
"tokens.typography.corporate-display.tracking": *team_evidence
|
|
63
|
+
"tokens.typography.corporate-display.use": *team_evidence
|
|
64
|
+
"tokens.typography.corporate-section.size": *team_evidence
|
|
65
|
+
"tokens.typography.corporate-section.weight": *team_evidence
|
|
66
|
+
"tokens.typography.corporate-section.lineHeight": *team_evidence
|
|
67
|
+
"tokens.typography.corporate-section.tracking": *team_evidence
|
|
68
|
+
"tokens.typography.corporate-section.use": *team_evidence
|
|
69
|
+
"tokens.typography.corporate-card.size": *team_evidence
|
|
70
|
+
"tokens.typography.corporate-card.weight": *team_evidence
|
|
71
|
+
"tokens.typography.corporate-card.lineHeight": *team_evidence
|
|
72
|
+
"tokens.typography.corporate-card.tracking": *team_evidence
|
|
73
|
+
"tokens.typography.corporate-card.use": *team_evidence
|
|
74
|
+
"tokens.typography.corporate-body.size": *team_evidence
|
|
75
|
+
"tokens.typography.corporate-body.weight": *team_evidence
|
|
76
|
+
"tokens.typography.corporate-body.lineHeight": *team_evidence
|
|
77
|
+
"tokens.typography.corporate-body.tracking": *team_evidence
|
|
78
|
+
"tokens.typography.corporate-body.use": *team_evidence
|
|
79
|
+
"tokens.typography.seller-body.size": *seller_evidence
|
|
80
|
+
"tokens.typography.seller-body.weight": *seller_evidence
|
|
81
|
+
"tokens.typography.seller-body.lineHeight": *seller_evidence
|
|
82
|
+
"tokens.typography.seller-body.use": *seller_evidence
|
|
83
|
+
"tokens.spacing.xs": *consumer_evidence
|
|
84
|
+
"tokens.spacing.sm": *consumer_evidence
|
|
85
|
+
"tokens.spacing.md": *team_evidence
|
|
86
|
+
"tokens.spacing.lg": *team_evidence
|
|
87
|
+
"tokens.spacing.xl": *team_evidence
|
|
88
|
+
"tokens.rounded.corporate-control": *team_evidence
|
|
89
|
+
"tokens.rounded.pill": *team_evidence
|
|
90
|
+
"tokens.rounded.consumer-action": *consumer_evidence
|
|
91
|
+
"tokens.rounded.full": *seller_evidence
|
|
92
|
+
"tokens.shadow.corporate-card": *team_evidence
|
|
93
|
+
"tokens.components.consumer-open-app.type": *consumer_evidence
|
|
94
|
+
"tokens.components.consumer-open-app.bg": *consumer_evidence
|
|
95
|
+
"tokens.components.consumer-open-app.fg": *consumer_evidence
|
|
96
|
+
"tokens.components.consumer-open-app.border": *consumer_evidence
|
|
97
|
+
"tokens.components.consumer-open-app.radius": *consumer_evidence
|
|
98
|
+
"tokens.components.consumer-open-app.padding": *consumer_evidence
|
|
99
|
+
"tokens.components.consumer-open-app.size": *consumer_evidence
|
|
100
|
+
"tokens.components.consumer-open-app.font": *consumer_evidence
|
|
101
|
+
"tokens.components.consumer-open-app.states": *consumer_evidence
|
|
102
|
+
"tokens.components.consumer-open-app.use": *consumer_evidence
|
|
103
|
+
"tokens.components.corporate-primary.type": *team_evidence
|
|
104
|
+
"tokens.components.corporate-primary.bg": *team_evidence
|
|
105
|
+
"tokens.components.corporate-primary.fg": *team_evidence
|
|
106
|
+
"tokens.components.corporate-primary.radius": *team_evidence
|
|
107
|
+
"tokens.components.corporate-primary.size": *team_evidence
|
|
108
|
+
"tokens.components.corporate-primary.font": *team_evidence
|
|
109
|
+
"tokens.components.corporate-primary.states": *team_evidence
|
|
110
|
+
"tokens.components.corporate-primary.use": *team_evidence
|
|
111
|
+
"tokens.components.corporate-soft-action.type": *team_evidence
|
|
112
|
+
"tokens.components.corporate-soft-action.bg": *team_evidence
|
|
113
|
+
"tokens.components.corporate-soft-action.fg": *team_evidence
|
|
114
|
+
"tokens.components.corporate-soft-action.radius": *team_evidence
|
|
115
|
+
"tokens.components.corporate-soft-action.size": *team_evidence
|
|
116
|
+
"tokens.components.corporate-soft-action.font": *team_evidence
|
|
117
|
+
"tokens.components.corporate-soft-action.states": *team_evidence
|
|
118
|
+
"tokens.components.corporate-soft-action.use": *team_evidence
|
|
119
|
+
"tokens.components.corporate-pill.type": *team_evidence
|
|
120
|
+
"tokens.components.corporate-pill.bg": *team_evidence
|
|
121
|
+
"tokens.components.corporate-pill.fg": *team_evidence
|
|
122
|
+
"tokens.components.corporate-pill.radius": *team_evidence
|
|
123
|
+
"tokens.components.corporate-pill.padding": *team_evidence
|
|
124
|
+
"tokens.components.corporate-pill.size": *team_evidence
|
|
125
|
+
"tokens.components.corporate-pill.font": *team_evidence
|
|
126
|
+
"tokens.components.corporate-pill.states": *team_evidence
|
|
127
|
+
"tokens.components.corporate-pill.use": *team_evidence
|
|
128
|
+
"tokens.components.corporate-card.type": *team_evidence
|
|
129
|
+
"tokens.components.corporate-card.bg": *team_evidence
|
|
130
|
+
"tokens.components.corporate-card.fg": *team_evidence
|
|
131
|
+
"tokens.components.corporate-card.radius": *team_evidence
|
|
132
|
+
"tokens.components.corporate-card.shadow": *team_evidence
|
|
133
|
+
"tokens.components.corporate-card.use": *team_evidence
|
|
134
|
+
"tokens.components.seller-primary.type": *seller_evidence
|
|
135
|
+
"tokens.components.seller-primary.bg": *seller_evidence
|
|
136
|
+
"tokens.components.seller-primary.fg": *seller_evidence
|
|
137
|
+
"tokens.components.seller-primary.radius": *seller_evidence
|
|
138
|
+
"tokens.components.seller-primary.padding": *seller_evidence
|
|
139
|
+
"tokens.components.seller-primary.size": *seller_evidence
|
|
140
|
+
"tokens.components.seller-primary.font": *seller_evidence
|
|
141
|
+
"tokens.components.seller-primary.states": *seller_evidence
|
|
142
|
+
"tokens.components.seller-primary.use": *seller_evidence
|
|
13
143
|
tokens:
|
|
14
|
-
source:
|
|
15
|
-
extracted: "2026-
|
|
16
|
-
note: "
|
|
144
|
+
source: reconciled
|
|
145
|
+
extracted: "2026-07-12"
|
|
146
|
+
note: "Fresh consumer mobile web, ABLY Team, and Seller Square capture. Each evidence domain keeps its own font and component roles; native-app commerce patterns are not inferred from brand or seller surfaces."
|
|
17
147
|
colors:
|
|
18
|
-
primary: "#
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
muted: "#999999"
|
|
28
|
-
lightest: "#BBBBBB"
|
|
29
|
-
on-primary: "#FFFFFF"
|
|
30
|
-
surface-fill: "#F5F5F5"
|
|
31
|
-
surface-subtle: "#FAFAFA"
|
|
32
|
-
hairline: "#EEEEEE"
|
|
33
|
-
border-subtle: "#F0F0F0"
|
|
34
|
-
success: "#00C896"
|
|
35
|
-
error: "#F0124B"
|
|
36
|
-
info-link: "#2680EB"
|
|
148
|
+
primary: "#ff5160"
|
|
149
|
+
canvas: "#ffffff"
|
|
150
|
+
foreground: "#1f1f1f"
|
|
151
|
+
consumer-secondary: "#777777"
|
|
152
|
+
team-secondary: "#757575"
|
|
153
|
+
seller-body: "#5b5b5b"
|
|
154
|
+
consumer-border: "#dddddd"
|
|
155
|
+
platform-border: "#e5e7eb"
|
|
156
|
+
team-accent-surface: "#fff2ea"
|
|
37
157
|
typography:
|
|
38
|
-
family: {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
price-strike: { size: 13, weight: 400, lineHeight: 1.30, use: "Strikethrough comparison, #999999" }
|
|
50
|
-
spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 20, xl: 24, xxl: 32 }
|
|
51
|
-
rounded: { sm: 4, md: 8, lg: 12, xl: 16, full: 9999 }
|
|
158
|
+
family: { consumer: "Pretendard", corporate: "Pretendard", seller: "Noto Sans Korean" }
|
|
159
|
+
consumer-label: { size: 16, weight: 600, lineHeight: 1.25, tracking: -0.4, use: "Current mobile consumer labels" }
|
|
160
|
+
consumer-compact: { size: 12, weight: 600, lineHeight: 1.33, tracking: -0.2, use: "Current mobile web compact action" }
|
|
161
|
+
consumer-meta: { size: 11, weight: 400, lineHeight: 1.27, use: "Current mobile consumer metadata" }
|
|
162
|
+
corporate-display: { size: 48, weight: 600, lineHeight: 1.33, tracking: -0.3, use: "Current ABLY Team display heading" }
|
|
163
|
+
corporate-section: { size: 40, weight: 600, lineHeight: 1.4, tracking: -0.3, use: "Current ABLY Team repeated section heading" }
|
|
164
|
+
corporate-card: { size: 24, weight: 600, lineHeight: 1.33, tracking: -0.3, use: "Current ABLY Team card heading" }
|
|
165
|
+
corporate-body: { size: 16, weight: 400, lineHeight: 1.5, tracking: -0.3, use: "Current ABLY Team body and card copy" }
|
|
166
|
+
seller-body: { size: 16, weight: 400, lineHeight: 1.6, use: "Current Seller Square body and navigation text" }
|
|
167
|
+
spacing: { xs: 8, sm: 10, md: 16, lg: 24, xl: 32 }
|
|
168
|
+
rounded: { corporate-control: 12, pill: 24, consumer-action: 20, full: 9999 }
|
|
52
169
|
shadow:
|
|
53
|
-
|
|
54
|
-
standard: "0px 2px 8px rgba(0,0,0,0.08)"
|
|
55
|
-
elevated: "0px 4px 16px rgba(0,0,0,0.12)"
|
|
56
|
-
sheet: "0px -4px 16px rgba(0,0,0,0.08)"
|
|
170
|
+
corporate-card: "0 4px 48px rgba(0,0,0,0.08)"
|
|
57
171
|
components_harvested: true
|
|
58
172
|
components:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
tab-bar: { type: tab, bg: "#FFFFFF", use: "56px + safe-area, 6 items; inactive #999999; notification dot #FA2E5F", active: "#222222 filled" }
|
|
66
|
-
bottom-sheet: { type: dialog, bg: "#FFFFFF", radius: 16, use: "top radius, grey handle, sheet shadow over backdrop" }
|
|
67
|
-
omd: "0.1"
|
|
173
|
+
consumer-open-app: { type: button, bg: "#ffffff", fg: "#1f1f1f", border: "1px solid #dddddd", radius: "20px", padding: "0 8px", size: "62px x 28px", font: "12px / 600", states: "default baseline captured; no hover or pressed value promoted", use: "Current mobile web compact app-entry action" }
|
|
174
|
+
corporate-primary: { type: button, bg: "#ff5160", fg: "#ffffff", radius: "12px", size: "160px x 56px", font: "18px / 600", states: "default baseline captured", use: "Current ABLY Team primary action" }
|
|
175
|
+
corporate-soft-action: { type: button, bg: "#fff2ea", fg: "#ff5160", radius: "12px", size: "312px x 48px", font: "16px / 600", states: "default baseline captured", use: "Current ABLY Team low-emphasis action" }
|
|
176
|
+
corporate-pill: { type: button, bg: "#ffffff", fg: "#4e4e4e", radius: "24px", padding: "14px 16px", size: "105px x 48px", font: "16px / 400", states: "default baseline captured", use: "Current ABLY Team compact editorial action" }
|
|
177
|
+
corporate-card: { type: card, bg: "#ffffff", fg: "#1f1f1f", radius: "12px", shadow: "0 4px 48px rgba(0,0,0,0.08)", use: "Current ABLY Team mission or story card" }
|
|
178
|
+
seller-primary: { type: button, bg: "#ff5160", fg: "#ffffff", radius: "9999px", padding: "13px 30px", size: "114px x 49px", font: "14px / 400", states: "default baseline captured", use: "Current Seller Square primary entry action" }
|
|
68
179
|
---
|
|
69
180
|
|
|
70
181
|
# Design System Inspiration of Ably (에이블리)
|
|
71
182
|
|
|
72
183
|
## 1. Visual Theme & Atmosphere
|
|
73
184
|
|
|
74
|
-
|
|
185
|
+
ABLY is a Korean style-commerce platform organized around personal taste, discovery, and the connection between consumers and sellers. Its official product story describes an AI-personalized commerce experience that expanded beyond fashion into beauty, home, stationery, food, and community/content. The current company mission frames this more broadly as expanding style commerce and a chain platform globally: people should be able to discover, buy, make, and sell styles with lower friction. Personalization and an accessible seller ecosystem are presented as two connected sides of that next-commerce direction.
|
|
75
186
|
|
|
76
|
-
The
|
|
187
|
+
The current public ecosystem has three visibly different surfaces. The consumer mobile web is narrow and app-directed, using a Next.js-loaded Pretendard alias, dense 11–16px type, white, `#1f1f1f`, and a compact 28px app-entry action. ABLY Team is a large editorial brand and recruiting surface with Pretendard, 40–48px headings, wide story cards, pale peach accent panels, and `#ff5160` actions. Seller Square uses Noto Sans Korean and its own information architecture for onboarding, market operations, advertising, guides, and global expansion.
|
|
77
188
|
|
|
78
|
-
|
|
189
|
+
The stable cross-surface signal is the current coral-pink `#ff5160`, not the older `#fa2e5f` snapshot. Even this shared color does not make the component systems interchangeable. A Seller Square pill, an ABLY Team recruiting CTA, and a native consumer purchase button are three different claims. The current public capture verifies the first two and only a compact app-entry action on mobile web; native shopping cards, price stacks, checkout actions, bottom navigation, badges, and sheets remain absent.
|
|
79
190
|
|
|
80
191
|
**Key Characteristics:**
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
- Pill-shaped chips (filter, category, tag) over rectangular tags — communicates "soft commerce"
|
|
192
|
+
- Current coral-pink `#ff5160` across consumer/corporate/seller identity moments
|
|
193
|
+
- Consumer mobile web: dense Pretendard, 11–16px type, app-directed entry
|
|
194
|
+
- ABLY Team: editorial Pretendard, 40–48px headings, story cards, 12–24px control geometry
|
|
195
|
+
- Seller Square: Noto Sans Korean and full-pill onboarding actions
|
|
196
|
+
- Personal taste and recommendation as the consumer narrative
|
|
197
|
+
- Seller/user ecosystem and global chain-platform expansion as the company narrative
|
|
198
|
+
- Strict separation of consumer web, native app, corporate, and seller evidence
|
|
89
199
|
|
|
90
200
|
## 2. Color Palette & Roles
|
|
91
201
|
|
|
92
|
-
|
|
93
|
-
- **
|
|
94
|
-
- **
|
|
95
|
-
- **
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
- **
|
|
99
|
-
- **
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
### Neutral Scale
|
|
103
|
-
- **Text Primary** (`#222222`): Product names, headings, screen titles.
|
|
104
|
-
- **Text Body** (`#333333`): Body copy, list items.
|
|
105
|
-
- **Text Secondary** (`#666666`): Secondary metadata, seller name, meta info under product.
|
|
106
|
-
- **Text Muted** (`#999999`): Caption text, timestamps, placeholder hints.
|
|
107
|
-
- **Text Lightest** (`#BBBBBB`): Disabled text, divider labels.
|
|
108
|
-
|
|
109
|
-
### Surface & Borders
|
|
110
|
-
- **Surface Page** (`#FFFFFF`): Default page background.
|
|
111
|
-
- **Surface Fill** (`#F5F5F5`): Search bar fill, secondary surfaces, skeletons base.
|
|
112
|
-
- **Surface Subtle** (`#FAFAFA`): Card hover / pressed states, table-row banding.
|
|
113
|
-
- **Border Default** (`#EEEEEE`): Card dividers, list-row separators.
|
|
114
|
-
- **Border Subtle** (`#F0F0F0`): Faintest separators, chip outlines.
|
|
115
|
-
|
|
116
|
-
### Semantic
|
|
117
|
-
- **Sale / Urgency** (`#FA2E5F`): Reuses the brand pink — by design Ably collapses "sale" and "brand" into one signal.
|
|
118
|
-
- **Success** (`#00C896`): Order-complete confirmations, review-submitted toasts.
|
|
119
|
-
- **Error** (`#F0124B`): Form errors, payment failure (also reads as "discount red" in context).
|
|
120
|
-
- **Info Link** (`#2680EB`): External links in policy / FAQ surfaces only; suppressed in commerce flows.
|
|
121
|
-
|
|
122
|
-
### Overlays
|
|
123
|
-
- **Modal Backdrop** (`rgba(0, 0, 0, 0.5)`): Bottom sheets and dialogs.
|
|
124
|
-
- **Image Tint Hot** (`linear-gradient(180deg, rgba(255,0,80,0) 0%, rgba(255,0,80,0.6) 100%)`): Used over deal-image bottom strips so price text stays legible.
|
|
202
|
+
- **Current ABLY coral** (`#ff5160`): live identity/action color across current official surfaces.
|
|
203
|
+
- **Canvas** (`#ffffff`) and **foreground** (`#1f1f1f`): current consumer and corporate base.
|
|
204
|
+
- **Consumer secondary** (`#777777`): current mobile-web supporting text.
|
|
205
|
+
- **Team secondary** (`#757575`): current company/editorial supporting copy.
|
|
206
|
+
- **Seller body** (`#5b5b5b`): current Seller Square explanatory text.
|
|
207
|
+
- **Consumer border** (`#dddddd`): compact mobile-web action outline.
|
|
208
|
+
- **Platform border** (`#e5e7eb`): repeated Team and Seller Square boundary.
|
|
209
|
+
- **Team accent surface** (`#fff2ea`): current pale peach corporate action surface.
|
|
210
|
+
|
|
211
|
+
Older hot-deal pink, discount red, shipping mint, success, error, link, tab, and native surface colors are omitted. A yellow Seller Square campaign action was captured as a local promotion, not a canonical ABLY semantic color.
|
|
125
212
|
|
|
126
213
|
## 3. Typography Rules
|
|
127
214
|
|
|
128
|
-
### Font
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
|
139
|
-
|
|
140
|
-
|
|
|
141
|
-
|
|
|
142
|
-
|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
147
|
-
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
- **Weight is the hierarchy** — Pretendard 700 carries headings and prices; 400 carries body and meta. There is essentially no semibold-only tier in commerce surfaces.
|
|
151
|
-
- **No italics, ever** — Korean reads worse italicized, and Ably's voice doesn't need it.
|
|
152
|
-
- **Numbers are weighted, not tabular** — discounted prices use 700; tabular numerals are not enabled (commerce isn't a finance app).
|
|
153
|
-
- **Korean primary, Latin parity** — Pretendard is engineered so Hangul and Latin baselines align without extra tuning; no per-script weight shifts.
|
|
154
|
-
- **Tight line height for prices, generous for body** — 1.30 on price stacks (so the strike-out price and sale price sit close), 1.50 on body for scrollable readability.
|
|
215
|
+
### Font evidence boundary
|
|
216
|
+
|
|
217
|
+
| Evidence class | Resolution |
|
|
218
|
+
|---|---|
|
|
219
|
+
| Official product-use | Consumer mobile web establishes Pretendard; ABLY Team establishes Pretendard; Seller Square establishes Noto Sans Korean. |
|
|
220
|
+
| Live surface-use | `__Pretendard_a4ae19` loaded/high with 85 consumer uses; Pretendard loaded/high with 117 corporate uses; Noto Sans Korean loaded/high with 119 seller uses. |
|
|
221
|
+
| Official distributed asset | Pretendard is loaded from first-party and public distribution paths; Noto Sans Korean is delivered on Seller Square. Neither is an ABLY-exclusive font. |
|
|
222
|
+
| Declared-only | Pretendard fallback, Black Tie, Font Awesome, Glyphicons, and other vendor icon families had zero visible text use. |
|
|
223
|
+
| Unresolved | Native iOS/Android consumer typography and campaign-specific type remain unresolved. |
|
|
224
|
+
|
|
225
|
+
| Domain/role | Family | Size | Weight | Line height | Tracking |
|
|
226
|
+
|---|---|---:|---:|---:|---:|
|
|
227
|
+
| Consumer label | Pretendard | 16px | 600 | 20px | -0.4px |
|
|
228
|
+
| Consumer compact action | Pretendard | 12px | 600 | 16px | -0.2px |
|
|
229
|
+
| Consumer metadata | Pretendard | 11px | 400 | 14px | normal |
|
|
230
|
+
| Team display | Pretendard | 48px | 600 | 64px | -0.3px |
|
|
231
|
+
| Team section | Pretendard | 40px | 600 | 56px | -0.3px |
|
|
232
|
+
| Team card title | Pretendard | 24px | 600 | 32px | -0.3px |
|
|
233
|
+
| Team body | Pretendard | 16px | 400 | 24px | -0.3px |
|
|
234
|
+
| Seller body | Noto Sans Korean | 16px | 400 | 25.6px | normal |
|
|
235
|
+
|
|
236
|
+
Do not render Noto Sans Korean as the consumer app font or Pretendard as Seller Square truth. Surface ownership matters more than visual similarity.
|
|
155
237
|
|
|
156
238
|
## 4. Component Stylings
|
|
157
239
|
|
|
158
|
-
###
|
|
159
|
-
|
|
160
|
-
**Primary CTA**
|
|
161
|
-
- Background: `#FA2E5F`
|
|
162
|
-
- Text: `#FFFFFF`
|
|
163
|
-
- Border: none
|
|
164
|
-
- Radius: 8px
|
|
165
|
-
- Padding: 14px 20px
|
|
166
|
-
- Font: 16px / 700 / Pretendard
|
|
167
|
-
- Height: 52px (full-width bottom-bar CTA)
|
|
168
|
-
- Pressed: opacity 0.85
|
|
169
|
-
- Disabled: `#FFC2D2` background, `#FFFFFF` text
|
|
170
|
-
- Use: "구매하기" (Buy), "결제하기" (Pay), primary commit action — typically pinned bottom-bar full-width
|
|
171
|
-
|
|
172
|
-
**Secondary Outlined**
|
|
173
|
-
- Background: `#FFFFFF`
|
|
174
|
-
- Text: `#222222`
|
|
175
|
-
- Border: 1px solid `#DDDDDD`
|
|
176
|
-
- Radius: 8px
|
|
177
|
-
- Padding: 12px 18px
|
|
178
|
-
- Font: 14px / 600 / Pretendard
|
|
179
|
-
- Use: "장바구니" (Cart), "찜하기" (Wishlist), action paired next to primary
|
|
180
|
-
|
|
181
|
-
**Ghost / Text**
|
|
182
|
-
- Background: transparent
|
|
183
|
-
- Text: `#FA2E5F`
|
|
184
|
-
- Border: none
|
|
185
|
-
- Padding: 8px 12px
|
|
186
|
-
- Font: 14px / 600 / Pretendard
|
|
187
|
-
- Use: "더보기" (More), inline link actions inside cards
|
|
188
|
-
|
|
189
|
-
**Disabled**
|
|
190
|
-
- Background: `#F0F0F0`
|
|
191
|
-
- Text: `#BBBBBB`
|
|
192
|
-
- Border: none
|
|
193
|
-
- Radius: 8px
|
|
194
|
-
- Use: Pre-validation state on payment screens
|
|
195
|
-
|
|
196
|
-
### Chips / Filters
|
|
197
|
-
|
|
198
|
-
**Filter Chip (Default)**
|
|
199
|
-
- Background: `#FFFFFF`
|
|
200
|
-
- Text: `#333333`
|
|
201
|
-
- Border: 1px solid `#DDDDDD`
|
|
202
|
-
- Radius: 9999px
|
|
203
|
-
- Padding: 6px 14px
|
|
204
|
-
- Font: 13px / 500 / Pretendard
|
|
205
|
-
- Height: 30px
|
|
206
|
-
- Use: "사이즈", "가격", "색상" filter row above product grid
|
|
207
|
-
|
|
208
|
-
**Filter Chip (Active)**
|
|
209
|
-
- Background: `#222222`
|
|
210
|
-
- Text: `#FFFFFF`
|
|
211
|
-
- Border: none
|
|
212
|
-
- Radius: 9999px
|
|
213
|
-
- Padding: 6px 14px
|
|
214
|
-
- Font: 13px / 600 / Pretendard
|
|
215
|
-
- Use: Currently applied filter (uses dark not pink — pink is reserved for commercial pressure)
|
|
216
|
-
|
|
217
|
-
**Category Chip (Scroll row)**
|
|
218
|
-
- Background: `#F5F5F5`
|
|
219
|
-
- Text: `#666666`
|
|
220
|
-
- Border: none
|
|
221
|
-
- Radius: 9999px
|
|
222
|
-
- Padding: 8px 16px
|
|
223
|
-
- Font: 14px / 500 / Pretendard
|
|
224
|
-
- Active: `#222222` text, weight 700, underline indicator
|
|
225
|
-
|
|
226
|
-
### Badges
|
|
227
|
-
|
|
228
|
-
**Free Shipping Badge ("무료배송")**
|
|
229
|
-
- Background: `#FFFFFF`
|
|
230
|
-
- Text: `#FA2E5F`
|
|
231
|
-
- Border: 1px solid `#FA2E5F`
|
|
232
|
-
- Radius: 4px
|
|
233
|
-
- Padding: 2px 6px
|
|
234
|
-
- Font: 11px / 700 / Pretendard
|
|
235
|
-
- Use: Top-left overlay on product image (Ably ships everything free, so this is brand-affirming)
|
|
236
|
-
|
|
237
|
-
**Hot Deal Badge ("쇼킹딜")**
|
|
238
|
-
- Background: `#FA2E5F`
|
|
239
|
-
- Text: `#FFFFFF`
|
|
240
|
-
- Border: none
|
|
241
|
-
- Radius: 4px
|
|
242
|
-
- Padding: 3px 7px
|
|
243
|
-
- Font: 11px / 700 / Pretendard
|
|
244
|
-
- Use: Time-limited urgency, often paired with countdown timer
|
|
245
|
-
|
|
246
|
-
**Discount Percent Tag**
|
|
247
|
-
- Background: transparent
|
|
248
|
-
- Text: `#FA2E5F`
|
|
249
|
-
- Font: 16px / 700 / Pretendard
|
|
250
|
-
- Inline before sale price (e.g., `30% 12,900원`)
|
|
251
|
-
|
|
252
|
-
**New / Restock Badge**
|
|
253
|
-
- Background: `#222222`
|
|
254
|
-
- Text: `#FFFFFF`
|
|
255
|
-
- Radius: 4px
|
|
256
|
-
- Padding: 2px 6px
|
|
257
|
-
- Font: 11px / 700 / Pretendard
|
|
258
|
-
|
|
259
|
-
### Product Card
|
|
260
|
-
|
|
261
|
-
**Grid Card (4-up home)**
|
|
262
|
-
- Background: `#FFFFFF`
|
|
263
|
-
- Image: 1:1 square aspect, full-bleed top — radius 4px (corners only on top of image, or none on edge-to-edge variant)
|
|
264
|
-
- Padding (text area): 8px 4px 12px
|
|
265
|
-
- Seller name: 11px / 400 / `#999999`
|
|
266
|
-
- Product name: 13px / 400 / `#333333`, 2-line clamp
|
|
267
|
-
- Price block:
|
|
268
|
-
- Discount %: 14px / 700 / `#FA2E5F`
|
|
269
|
-
- Sale price: 14px / 700 / `#222222`
|
|
270
|
-
- Strike price: 11px / 400 / `#BBBBBB` line-through
|
|
271
|
-
- Wishlist heart: 22px tap target, top-right of image, default outline `#FFFFFF` with 30% black shadow, active fill `#FA2E5F`
|
|
272
|
-
- Use: Home / category / search grids — 4 columns mobile
|
|
273
|
-
|
|
274
|
-
**List Card (single column, search results)**
|
|
275
|
-
- Background: `#FFFFFF`
|
|
276
|
-
- Image: 80×80px or 120×120px thumbnail, left
|
|
277
|
-
- Padding: 12px 16px
|
|
278
|
-
- Border-bottom: 1px solid `#EEEEEE`
|
|
279
|
-
- Use: Order history, denser scan contexts
|
|
280
|
-
|
|
281
|
-
### Search Input
|
|
282
|
-
|
|
283
|
-
**Top Search Bar**
|
|
284
|
-
- Background: `#F5F5F5`
|
|
285
|
-
- Text: `#222222`
|
|
286
|
-
- Placeholder: `#999999`
|
|
287
|
-
- Border: none
|
|
288
|
-
- Radius: 9999px
|
|
289
|
-
- Padding: 10px 16px 10px 40px (leading icon space)
|
|
290
|
-
- Font: 14px / 400 / Pretendard
|
|
291
|
-
- Height: 40px
|
|
292
|
-
- Icon: 16px magnifier, `#666666`, positioned at 12px left inset
|
|
293
|
-
- Use: Pinned top of Home / Category / Search screens
|
|
294
|
-
|
|
295
|
-
### Bottom Tab Bar
|
|
296
|
-
|
|
297
|
-
**Tab (Inactive)**
|
|
298
|
-
- Background: `#FFFFFF`
|
|
299
|
-
- Icon: 24px, `#999999` stroke / fill
|
|
300
|
-
- Label: 11px / 500 / Pretendard / `#999999`
|
|
301
|
-
- Border-top: 1px solid `#EEEEEE`
|
|
302
|
-
|
|
303
|
-
**Tab (Active)**
|
|
304
|
-
- Icon: 24px, `#222222` (filled variant)
|
|
305
|
-
- Label: 11px / 700 / Pretendard / `#222222`
|
|
306
|
-
- (Pink is *not* the active color — it is reserved for the badge dot)
|
|
307
|
-
|
|
308
|
-
**Notification Dot**
|
|
309
|
-
- Background: `#FA2E5F`
|
|
310
|
-
- Diameter: 6px (no count) or 16px pill with 10px / 700 white numeral (count)
|
|
311
|
-
- Position: top-right of icon
|
|
312
|
-
|
|
313
|
-
Tab bar height: 56px + safe-area inset. 6 evenly-spaced items: Home / Category / Benefits / Content / Wishlist / Mypage.
|
|
314
|
-
|
|
315
|
-
### Sale Timer
|
|
316
|
-
|
|
317
|
-
**Countdown**
|
|
318
|
-
- Background: `#222222`
|
|
319
|
-
- Text: `#FFFFFF`
|
|
320
|
-
- Accent digit color: `#FA2E5F` (the seconds reading)
|
|
321
|
-
- Radius: 4px
|
|
322
|
-
- Padding: 4px 8px per segment
|
|
323
|
-
- Font: 12px / 700 / Pretendard, tabular figures by family fallback
|
|
324
|
-
- Format: `HH : MM : SS`
|
|
325
|
-
- Use: Top strip on "쇼킹딜" / event pages
|
|
326
|
-
|
|
327
|
-
### Bottom Sheet
|
|
328
|
-
|
|
329
|
-
**Default (filter / variant picker)**
|
|
330
|
-
- Background: `#FFFFFF`
|
|
331
|
-
- Text: `#222222`
|
|
332
|
-
- Border: none
|
|
333
|
-
- Radius: 16px (top corners only)
|
|
334
|
-
- Padding: 20px 16px (top), 20px 16px (bottom)
|
|
335
|
-
- Handle: 36px × 4px pill at `#E5E5E5`, top-center, 8px from top edge
|
|
336
|
-
- Shadow: `0px -4px 16px rgba(0, 0, 0, 0.08)`
|
|
337
|
-
- Use: Size/color picker, filter panel, sort options — sits over modal backdrop `rgba(0,0,0,0.5)`
|
|
338
|
-
|
|
339
|
-
### Toasts
|
|
340
|
-
|
|
341
|
-
**Default**
|
|
342
|
-
- Background: `#222222`
|
|
343
|
-
- Text: `#FFFFFF`
|
|
344
|
-
- Border: none
|
|
345
|
-
- Radius: 8px
|
|
346
|
-
- Padding: 12px 16px
|
|
347
|
-
- Font: 13px / 500 / Pretendard
|
|
348
|
-
- Use: Auto-dismiss 2s ("찜에 추가되었어요", "쿠폰이 적용되었어요")
|
|
349
|
-
|
|
350
|
-
### Dialogs
|
|
351
|
-
|
|
352
|
-
**Centered Modal**
|
|
353
|
-
- Background: `#FFFFFF`
|
|
354
|
-
- Text: `#222222`
|
|
355
|
-
- Border: none
|
|
356
|
-
- Radius: 12px
|
|
357
|
-
- Padding: 24px 20px
|
|
358
|
-
- Width: 280–320px
|
|
359
|
-
- Title: 16px / 700, Body: 14px / 400 / `#666666`
|
|
360
|
-
- Buttons row: two-up — left cancel (Secondary Outlined), right confirm (Primary CTA at reduced height 44px)
|
|
361
|
-
|
|
362
|
-
### Toggle / Switch
|
|
363
|
-
- Track on: `#FA2E5F`
|
|
364
|
-
- Track off: `#DDDDDD`
|
|
365
|
-
- Thumb: `#FFFFFF`, 22px circle, shadow `0px 1px 2px rgba(0,0,0,0.15)`
|
|
366
|
-
- Radius: 9999px
|
|
367
|
-
- Use: Notification preferences, address default, marketing opt-in
|
|
240
|
+
### Consumer mobile web
|
|
368
241
|
|
|
369
|
-
|
|
242
|
+
#### Compact app-entry action
|
|
243
|
+
- White / `#1f1f1f`, 1px `#dddddd`, 20px radius
|
|
244
|
+
- 62×28px, `0 8px`, Pretendard 12px/600
|
|
245
|
+
- Only the default baseline was captured; no native purchase meaning is attached
|
|
246
|
+
|
|
247
|
+
### ABLY Team
|
|
248
|
+
|
|
249
|
+
#### Primary action
|
|
250
|
+
- `#ff5160` / white, 12px radius, 160×56px, Pretendard 18px/600
|
|
251
|
+
|
|
252
|
+
#### Soft action
|
|
253
|
+
- `#fff2ea` / `#ff5160`, 12px radius, 312×48px, 16px/600
|
|
370
254
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
255
|
+
#### Editorial pill
|
|
256
|
+
- White / `#4e4e4e`, 24px radius, 105×48px, `14px 16px`, 16px/400
|
|
257
|
+
|
|
258
|
+
#### Story card
|
|
259
|
+
- White / near-black, 12px radius
|
|
260
|
+
- `0 4px 48px rgba(0,0,0,.08)` shadow; used for mission/story compositions
|
|
261
|
+
|
|
262
|
+
### Seller Square
|
|
263
|
+
|
|
264
|
+
#### Primary entry action
|
|
265
|
+
- `#ff5160` / white, full-pill, 114×49px, `13px 30px`
|
|
266
|
+
- Noto Sans Korean 14px/400
|
|
267
|
+
|
|
268
|
+
Native consumer product cards, price stacks, shipping/deal badges, filters, checkout CTAs, bottom tabs, bottom sheets, dialogs, and transactional states are absent until an inspectable native surface verifies them.
|
|
377
269
|
|
|
378
270
|
## 5. Layout Principles
|
|
379
271
|
|
|
380
|
-
|
|
381
|
-
-
|
|
382
|
-
-
|
|
383
|
-
-
|
|
384
|
-
-
|
|
385
|
-
- Section spacing: 24px between merchandised modules
|
|
386
|
-
|
|
387
|
-
### Grid & Container
|
|
388
|
-
- Design baseline: 375px mobile width
|
|
389
|
-
- Content: full-width with 16px horizontal padding
|
|
390
|
-
- Product grid: 4 columns mobile, 2px gutter, image-first
|
|
391
|
-
- No multi-column desktop layout — mobile-only product
|
|
392
|
-
|
|
393
|
-
### Whitespace Philosophy
|
|
394
|
-
- **Image-first density** — Ably packs more product per scroll than fintech apps would tolerate; whitespace is sacrificed to imagery because shoppers are scanning visuals.
|
|
395
|
-
- **Pink earns its space** — the pink CTA pinned at the bottom gets 16px breathing room on all sides; the pink badge inline gets only its own padding. The brand color is given more room when it's the action of the screen.
|
|
396
|
-
- **Section breathing** — between merchandised modules, 24px gap; within a module, 8–12px between tiles and labels.
|
|
397
|
-
|
|
398
|
-
### Border Radius Scale
|
|
399
|
-
- Compact (4px): badges, image corners, small chips
|
|
400
|
-
- Standard (8px): buttons, cards, inputs
|
|
401
|
-
- Comfortable (12px): dialogs, content cards
|
|
402
|
-
- Large (16px): bottom sheets (top corners)
|
|
403
|
-
- Pill (9999px): search bars, filter chips, toggles, notification dots
|
|
272
|
+
- Keep consumer mobile web compact and direct users toward the full app without pretending it is the app.
|
|
273
|
+
- Use large editorial sections and paired story cards on ABLY Team.
|
|
274
|
+
- Use Seller Square's own content density and onboarding hierarchy for seller tasks.
|
|
275
|
+
- Share `#ff5160` as identity, not as proof of identical control geometry.
|
|
276
|
+
- Let product imagery and taste categories carry consumer variety; do not fabricate their layout from memory.
|
|
404
277
|
|
|
405
278
|
## 6. Depth & Elevation
|
|
406
279
|
|
|
407
|
-
|
|
408
|
-
|-------|-----------|-----|
|
|
409
|
-
| Flat (Level 0) | No shadow | Page background, inline elements, product cards in grid |
|
|
410
|
-
| Subtle (Level 1) | `0px 1px 2px rgba(0,0,0,0.04)` | Pinned headers on scroll |
|
|
411
|
-
| Standard (Level 2) | `0px 2px 8px rgba(0,0,0,0.08)` | Floating cart button, FAB |
|
|
412
|
-
| Elevated (Level 3) | `0px 4px 16px rgba(0,0,0,0.12)` | Dropdowns, sort menus |
|
|
413
|
-
| Modal (Level 4) | `0px -4px 16px rgba(0,0,0,0.08)` | Bottom sheets (shadow above sheet, not below) |
|
|
414
|
-
|
|
415
|
-
**Shadow Philosophy.** Ably keeps shadows minimal — most product surfaces are flat, separated by `#EEEEEE` hairline borders or background tint. Shadows appear only when something *floats* (pinned CTA, FAB, sheet). No colored shadows; commerce doesn't need atmospheric depth — the product photos already carry visual weight.
|
|
280
|
+
Consumer mobile web and Seller Square promoted controls are flat. ABLY Team uses a specific large-card shadow (`0 4px 48px rgba(0,0,0,.08)`) on 12px story cards. That corporate editorial shadow is not a native commerce sheet token.
|
|
416
281
|
|
|
417
282
|
## 7. Do's and Don'ts
|
|
418
283
|
|
|
419
284
|
### Do
|
|
420
|
-
- Use
|
|
421
|
-
-
|
|
422
|
-
-
|
|
423
|
-
-
|
|
424
|
-
- Show free-shipping badge ("무료배송") aggressively — it is brand-affirming, not promotional
|
|
425
|
-
- Use pill-shaped chips for filters and categories
|
|
426
|
-
- Reserve filled black (`#222222`) for *applied* filter state — keeps pink uncluttered
|
|
427
|
-
- Use the 6-tab bottom nav as the navigation backbone — never hide it on product screens
|
|
285
|
+
- Use current `#FF5160` and name the surface that gives a component its role.
|
|
286
|
+
- Keep consumer, corporate, and seller font evidence separate.
|
|
287
|
+
- Preserve ABLY's taste-discovery, personalization, and seller-ecosystem narrative.
|
|
288
|
+
- Omit native details until an inspectable native path exists.
|
|
428
289
|
|
|
429
290
|
### Don't
|
|
430
|
-
-
|
|
431
|
-
-
|
|
432
|
-
-
|
|
433
|
-
-
|
|
434
|
-
- Don't add italics — Korean reads worse and the voice doesn't need it
|
|
435
|
-
- Don't show "약 ~원" (approximate prices) — commerce shows exact numerals
|
|
436
|
-
- Don't apply elevation/shadow to product grid cards — they are flat, separated by gutter and border
|
|
437
|
-
- Don't use the realtime/messaging Ably blue palette — wrong brand entirely
|
|
291
|
+
- Do not restore the older `#FA2E5F` as current primary without new proof.
|
|
292
|
+
- Do not infer purchase buttons, deal badges, price typography, tabs, or sheets from commerce convention.
|
|
293
|
+
- Do not show Noto Sans Korean as the consumer product font.
|
|
294
|
+
- Do not turn ABLY Team recruiting cards into consumer product cards.
|
|
438
295
|
|
|
439
296
|
## 8. Responsive Behavior
|
|
440
297
|
|
|
441
|
-
|
|
442
|
-
| Name | Width | Key Changes |
|
|
443
|
-
|------|-------|-------------|
|
|
444
|
-
| Mobile (Primary) | <480px | Full design fidelity, 375px baseline |
|
|
445
|
-
| Tablet | 480–768px | Centered column, max 480px, sides padded with `#FAFAFA` |
|
|
446
|
-
| Desktop | >768px | Centered "phone-frame" column; no native desktop chrome |
|
|
447
|
-
|
|
448
|
-
### Touch Targets
|
|
449
|
-
- Primary CTA: 52px height
|
|
450
|
-
- Secondary buttons: 44px height
|
|
451
|
-
- Tab bar items: 56px height
|
|
452
|
-
- Wishlist heart on cards: 32×32px tap area over 22px icon
|
|
453
|
-
- Chip rows: 30–36px height with 6–8px between
|
|
454
|
-
|
|
455
|
-
### Collapsing Strategy
|
|
456
|
-
- Desktop mirrors mobile in a centered column — no native multi-column layout
|
|
457
|
-
- 4-up grid never collapses to fewer columns — readability is preserved by mobile baseline
|
|
458
|
-
- Bottom sheet stays a sheet on tablet; only becomes a centered modal on rare desktop viewports
|
|
459
|
-
|
|
460
|
-
### Image Behavior
|
|
461
|
-
- Product images: 1:1 square, cover-fit, 4px top corner radius (when within card)
|
|
462
|
-
- Banner images: 16:9 or 3:2, full-bleed within page padding
|
|
463
|
-
- Lazy-loaded via native `loading="lazy"`; LCP image preloaded
|
|
464
|
-
- Wishlist heart, sale badge, and timer overlay use absolute positioning with 8px insets from image edge
|
|
298
|
+
The consumer surface is explicitly mobile web and uses compact type/actions. ABLY Team reflows large editorial stories and card compositions. Seller Square has its own desktop-oriented seller information hierarchy. Native-app safe areas, bottom navigation, checkout keyboards, and product-grid breakpoints remain unresolved.
|
|
465
299
|
|
|
466
300
|
## 9. Agent Prompt Guide
|
|
467
301
|
|
|
468
|
-
|
|
469
|
-
- Primary CTA: Ably Pink (`#FA2E5F`)
|
|
470
|
-
- Background: Pure White (`#FFFFFF`)
|
|
471
|
-
- Surface fill: Light Gray (`#F5F5F5`)
|
|
472
|
-
- Heading text: Near Black (`#222222`)
|
|
473
|
-
- Body text: Mid Gray (`#333333`)
|
|
474
|
-
- Caption text: Muted Gray (`#666666`)
|
|
475
|
-
- Placeholder: Light Gray (`#999999`)
|
|
476
|
-
- Border: Faint Gray (`#EEEEEE`)
|
|
477
|
-
- Success: Mint (`#00C896`)
|
|
478
|
-
- Error / Discount: Red (`#F0124B`)
|
|
479
|
-
|
|
480
|
-
### Example Component Prompts
|
|
481
|
-
- "Build an Ably product card: 1:1 square image with 4px top-corner radius, top-left badge `#FA2E5F` white text 11px 700 '쇼킹딜', top-right wishlist heart outline. Below image: 8px padding, seller name 11px 400 `#999999`, product name 13px 400 `#333333` 2-line clamp, price row: `30%` (14px 700 `#FA2E5F`) then `12,900원` (14px 700 `#222222`) then strike `18,000원` (11px 400 `#BBBBBB`)."
|
|
482
|
-
- "Bottom CTA bar: full-width pink `#FA2E5F`, white 16px 700 '구매하기', 52px height, 16px horizontal page padding above safe-area inset."
|
|
483
|
-
- "Filter chip row: scrollable horizontal, each chip 9999px radius, default white bg / `#DDDDDD` border / `#333333` 13px 500 text, active state black bg `#222222` / no border / white 13px 600 text. 8px gap between chips, 16px page padding."
|
|
484
|
-
- "Search bar: 40px pill, `#F5F5F5` background, 16px magnifier icon at 12px left, 14px 400 Pretendard placeholder `#999999`, pinned top with white container and 1px `#EEEEEE` bottom border."
|
|
485
|
-
- "Bottom tab bar: 56px + safe-area, 6 evenly spaced items (Home/Category/Benefits/Content/Wishlist/Mypage), 24px icons, 11px 500 labels, inactive `#999999`, active `#222222` filled icon + 700 label. Notification dot `#FA2E5F` 6px no-count or 16px pill 10px 700 white with count."
|
|
486
|
-
|
|
487
|
-
### Iteration Guide
|
|
488
|
-
1. Always assume mobile-first 375px baseline — never design for desktop natively
|
|
489
|
-
2. Pink (`#FA2E5F`) is for **action and urgency only** — never decoration, never inactive states
|
|
490
|
-
3. Active bottom-tab color is filled black, *not* pink — pink is the badge dot color
|
|
491
|
-
4. Pretendard 700 for headings and prices; 400 for body; no semibold tier needed
|
|
492
|
-
5. Show "무료배송" badge generously — it is brand-affirming
|
|
493
|
-
6. Product imagery is the protagonist — keep chrome between cards minimal (2–4px gutter)
|
|
494
|
-
7. Korean copy primary, MZ-tone informal endings (`~해요`, `~예요`) — no corporate `합니다` except in legal/policy surfaces
|
|
495
|
-
8. Bottom CTA is always full-width and pinned with safe-area inset
|
|
496
|
-
|
|
497
|
-
---
|
|
302
|
+
> Build only the verified ABLY surface: use `#ff5160`, white, and `#1f1f1f`; Pretendard for consumer/Team or Noto Sans Korean for Seller Square; apply the exact domain-specific component geometry above. For native shopping UI, omit unverified cards, price stacks, badges, tabs, and checkout controls.
|
|
498
303
|
|
|
499
304
|
## 10. Voice & Tone
|
|
500
305
|
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
| Context | Tone |
|
|
504
|
-
|---|---|
|
|
505
|
-
| CTAs | Imperative, short Korean verb form (`구매하기`, `장바구니 담기`, `찜하기`, `결제하기`) — no exclamation marks on buttons themselves |
|
|
506
|
-
| Banner copy | One-line MZ-coded hook ("내 취향 발견", "오늘만 이 가격", "지금 핫한 룩") |
|
|
507
|
-
| Success toasts | Past-tense single sentence, `~었어요` / `~았어요` ending (`찜에 추가되었어요`, `쿠폰이 적용되었어요`) |
|
|
508
|
-
| Error messages | Single line, blameless, actionable (`주소를 다시 확인해 주세요`, `결제 정보를 다시 입력해 주세요`) — never `오류가 발생했습니다` |
|
|
509
|
-
| Empty states | Friendly framing of the gap with one suggested next action (`찜한 상품이 없어요. 마음에 드는 옷을 찜해 보세요`) |
|
|
510
|
-
| Reviews / Content | Casual second-person, Korean influencer-style (`이거 인생템이에요`, `핏이 진짜 예뻐요`) |
|
|
511
|
-
| Legal / disclosure | Single exception — formal `합니다` endings, Korean financial-regulation tone in policy pages |
|
|
512
|
-
|
|
513
|
-
**Forbidden phrases.** `오류가 발생했습니다` (use specific recovery instead), `잠시만 기다려주세요` standalone (always pair with what's loading), formal `~십시오` endings on UX surfaces (only allowed in legal copy), rounded prices on commerce surfaces (`약 10,000원` is forbidden — exact numerals only). Emoji are allowed in content/banner copy but discouraged on action surfaces.
|
|
514
|
-
|
|
515
|
-
**Voice samples** (illustrative — verify against the live app before shipping):
|
|
516
|
-
1. *Empty wishlist:* "찜한 상품이 없어요. 마음에 드는 옷을 찜해보세요." — friendly, second-person, suggests action without scolding.
|
|
517
|
-
2. *Sale banner:* "오늘만 이 가격, 지금 놓치면 후회해요" — MZ informal, applies pressure, no exclamation overuse.
|
|
518
|
-
3. *Order success:* "주문이 완료되었어요. 배송 시작되면 알려드릴게요." — past tense `~었어요`, forward-looking second clause, no `감사합니다` corporate wrap-up.
|
|
306
|
+
ABLY's official voice is energetic, friendly, and direct. Consumer and product stories emphasize discovering one's taste quickly; seller content emphasizes starting and operating a market easily; company content speaks in terms of next commerce, ecosystem, and expansion. Category or community copy can be playful, but transactional language should state price, choice, or next action without manufactured urgency. Seller guidance should distinguish onboarding, operations, advertising, and global expansion. Keep Korean copy conversational but task-clear. Avoid invented discounts, conversion claims, urgency phrases, and seller-growth numbers.
|
|
519
307
|
|
|
520
308
|
## 11. Brand Narrative
|
|
521
309
|
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
By 2024–2025 Ably had grown to **50M+ app downloads** and **10M MAU** in Korea (the relevant Korean fashion-commerce peer set is Zigzag/29CM/Brandi). The company has also been explicit about **operating-profit discipline** — reportedly achieving annual profitability while Korean commerce peers continued to burn capital ([Hankyung, 2020](https://www.hankyung.com/economy/article/2020122085521); [SmartFN, Feb 2024](https://www.smartfn.co.kr/article/view/sfn202402130003)). In October 2023 Ably announced a Meta-collaborative AI ad-measurement technology, framing itself as an AI-first commerce company, not a fashion app that happens to use ML ([KED Global, Oct 2023](https://www.kedglobal.com/korean-startups/newsView/ked202310120014)).
|
|
525
|
-
|
|
526
|
-
The company's internal culture documents — published on Ably Team's Medium (ably-team.medium.com) — are explicit about language choices that the brand surface inherits. Ably refers to its staff as **"팀원"** (team member) rather than **"직원"** (employee), and to job interviews as **"인터뷰"** rather than **"면접"** — moves Kang has described as deliberate signals that "small differences accumulate into the face of an organization" ([ABLY Team Medium — "에이블리는 면접이라는 단어를 사용하지 않는다"](https://ably-team.medium.com/ably-culture-a640fb3f7cf9)). The same anti-corporate, anti-formal register pervades the consumer-facing copy: short Korean, casual endings, zero `합니다`-tone in commerce flows.
|
|
527
|
-
|
|
528
|
-
What Ably refuses: the institutional aesthetic of legacy department-store e-commerce (Lotte, Shinsegae), the cuter pastel-fashion register of Brandi/Zigzag, the polished editorial restraint of 29CM. Ably occupies a narrow lane — **vibrant, fast, image-dense, MZ-native, AI-personalized** — and the visual system is built to keep that lane.
|
|
529
|
-
|
|
530
|
-
> *"에이블리와 관련된 모든 이해관계자들이 행복한 인생을 만들고 자신의 비전을 이룰 수 있는 플랫폼이자 인프라가 되길 희망합니다."*
|
|
531
|
-
> — Kang Suk-hoon, founder, in the [Yonsang business interview (2022)](https://www.yonsang.com/yonsang/newsletter.asp?act=view&mid=Y01_05&cmid=Y01_05&cid=0&bid=8&idx=1835)
|
|
310
|
+
ABLY began as a personalized style-commerce experience and expanded its concept of taste beyond fashion into beauty, life, food, content, and community. The company connects that consumer discovery layer to a seller and production/distribution ecosystem, then frames global expansion through style commerce and a chain platform. The visual system mirrors that ecosystem: a shared coral identity with different tools for consumers, company storytelling, and sellers. Consumer value comes from a feed and discovery experience shaped by taste; seller value comes from easier onboarding, operations, distribution, and access to audiences. ABLY Team explains the mission and culture that connect those sides, while Seller Square turns the seller relationship into a separate operational surface. The shared color signals one company, but the different typography and geometry reveal genuinely different tasks.
|
|
532
311
|
|
|
533
312
|
## 12. Principles
|
|
534
313
|
|
|
535
|
-
1. **
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
*UI implication:* Don't add shadow or radius to grid cards. Don't put a colored ring around product images. Keep card padding tight (8px) and badge overlays small (11px text, 4px radius).
|
|
540
|
-
|
|
541
|
-
3. **Mobile-only, period.** Ably is built for the phone in the user's hand on the subway. There is no desktop-native experience. Desktop is a centered phone-frame column at best.
|
|
542
|
-
*UI implication:* Design at 375px. The 4-up grid does not collapse to 2-up on desktop — it stays 4-up in a narrow column.
|
|
543
|
-
|
|
544
|
-
4. **Speed of decision over depth of information.** Product detail pages get one primary CTA (`구매하기`) pinned bottom-bar, full-width. Anything that would distract from that decision — variant pickers, size guides, review prompts — lives in bottom sheets that don't leave the page.
|
|
545
|
-
*UI implication:* No multi-step variant selection. Size and color picker is one bottom sheet. The CTA is always visible.
|
|
546
|
-
|
|
547
|
-
5. **Korean primary, MZ-informal as the default register.** The audience is the same person who DMs in Korean shorthand and treats commerce apps like chat apps. The voice meets them there.
|
|
548
|
-
*UI implication:* Default to `~해요` / `~예요` endings; reserve `합니다` for legal and disclosure pages only.
|
|
549
|
-
|
|
550
|
-
6. **Free shipping is a brand asset, not a promotion.** "전 상품 무료배송" is in the meta title and the homepage promise. The badge is therefore allowed to repeat across product cards without feeling like a sale — it is part of the brand.
|
|
551
|
-
*UI implication:* Free-shipping badge can sit on every eligible product card. Promotional badges (쇼킹딜, 30%) cannot — they require an actual event.
|
|
314
|
+
1. **Start from taste.** Discovery should adapt to what a person is trying to express or find.
|
|
315
|
+
2. **Connect both sides of commerce.** Consumer ease and seller opportunity are related, not identical interfaces.
|
|
316
|
+
3. **Move quickly without inventing truth.** Fast commerce language cannot excuse unsupported UI claims.
|
|
317
|
+
4. **Respect surface ownership.** Mobile web, native app, company, and seller systems have distinct evidence.
|
|
552
318
|
|
|
553
319
|
## 13. Personas
|
|
554
320
|
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
**유진 (Yujin), 26, Gyeonggi.** Office worker at a mid-size company in Pangyo. Uses Ably during lunch break and the commute home. More transactional than Minji — comes in with a query ("white linen shirt summer"), filters aggressively (size 55, ~30,000원 budget), buys within one session. Trusts the rating + review count more than the brand of the seller. Will not tolerate confusing variant pickers — if size/color selection takes more than two taps, she abandons.
|
|
321
|
+
First-party material establishes task contexts only:
|
|
322
|
+
- A consumer discovering and purchasing products aligned with personal taste.
|
|
323
|
+
- A seller evaluating onboarding, market operations, advertising, or global expansion.
|
|
324
|
+
- A candidate or partner learning about ABLY's mission, culture, and platform direction.
|
|
560
325
|
|
|
561
|
-
|
|
326
|
+
Project-specific names, ages, spending, seller revenue, category preference, conversion rate, and success metrics are intentionally unspecified and must come from the product brief.
|
|
562
327
|
|
|
563
328
|
## 14. States
|
|
564
329
|
|
|
565
|
-
|
|
566
|
-
|---|---|
|
|
567
|
-
| **Empty (first visit, no history)** | Single Korean line in 14px `#666666` body ("아직 둘러본 상품이 없어요"), plus one suggestion CTA in pink-outlined secondary button style ("카테고리 둘러보기"). Never an illustration unless it's a brand-event surface. |
|
|
568
|
-
| **Empty (filter cleared, no results)** | One line in 13px `#999999` caption ("조건에 맞는 상품이 없어요"). One ghost button below ("필터 초기화") — user resets themselves, no auto-reset. |
|
|
569
|
-
| **Empty (wishlist)** | "찜한 상품이 없어요" 16px / 600 / `#333333`, sub-line 13px / 400 / `#666666` ("마음에 드는 옷을 찜해보세요"), illustrated heart icon 64px in `#EEEEEE`. One pink CTA "쇼핑하러 가기". |
|
|
570
|
-
| **Loading (first paint, grid)** | Skeleton blocks: `#F5F5F5` 1:1 squares matching grid layout, 1.2s shimmer with `linear-gradient(90deg, #F5F5F5 0%, #FAFAFA 50%, #F5F5F5 100%)`. Price area shown as `#EEEEEE` 60% width bar. |
|
|
571
|
-
| **Loading (pagination)** | Bottom spinner: 24px circular, `#FA2E5F` stroke, `#EEEEEE` track. Existing content stays, no overlay. |
|
|
572
|
-
| **Loading (button pressed, CTA)** | "구매하기" text replaced by 3-dot white loading animation. Button width unchanged. Pink background unchanged. Tap disabled. |
|
|
573
|
-
| **Error (form field)** | `#F0124B` 1px border on the input, error text 12px `#F0124B` 8px below the field. One actionable line ("우편번호를 다시 확인해 주세요"). |
|
|
574
|
-
| **Error (toast)** | `#222222` background, 13px white text, 2s auto-dismiss. Bottom of screen, 20px above tab bar. |
|
|
575
|
-
| **Error (screen-blocking)** | Reserved for server outage. Centered `#666666` 16px line, "다시 시도하기" ghost button in `#FA2E5F`. No illustration. |
|
|
576
|
-
| **Success (item added)** | Toast: `#222222` background, white 13px text ("찜에 추가되었어요" / "장바구니에 담겼어요"), 2s. No screen change. |
|
|
577
|
-
| **Success (order placed)** | Dedicated confirmation screen — not a toast. Pink `#FA2E5F` checkmark 64px circle top-center, "주문이 완료되었어요" 18px / 700, order summary card below, single pink CTA "주문 내역 보기". This weight is intentional; orders are never just toast. |
|
|
578
|
-
| **Skeleton (detail page)** | Image area: full-bleed `#F5F5F5` square with shimmer. Title bar: 60% width / 20px height. Price bar: 40% width / 24px height. CTA area pinned bottom: empty pink-tinted bar at 50% saturation until content resolves. |
|
|
579
|
-
| **Disabled (CTA)** | Background `#FFC2D2` (50%-tinted pink) or `#F0F0F0` (neutral disabled depending on context), text `#FFFFFF` or `#BBBBBB`. Cursor / press-state is non-responsive. |
|
|
580
|
-
| **Soldout / Restocking** | Full-page overlay on product image at `rgba(0,0,0,0.5)` with center white text "품절" 20px / 700. CTA changes from "구매하기" to "재입고 알림 받기" (`#222222` background, white text). |
|
|
330
|
+
This baseline-only run establishes default components but no reusable consumer hover, focus, pressed, loading, empty, cart, payment, order-success, or error state. Those states remain absent. Default-only boundaries are explicit in machine components.
|
|
581
331
|
|
|
582
332
|
## 15. Motion & Easing
|
|
583
333
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
| `motion-page` | 300ms | Full-screen route push/pop |
|
|
593
|
-
|
|
594
|
-
**Easings:**
|
|
595
|
-
|
|
596
|
-
| Token | Curve | Use |
|
|
597
|
-
|---|---|---|
|
|
598
|
-
| `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Things appearing — sheets, toasts, screen pushes |
|
|
599
|
-
| `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Things leaving — dismissals, pops |
|
|
600
|
-
| `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1)` | Two-way transitions — collapsible cards, tab swaps |
|
|
601
|
-
| `ease-spring` | `cubic-bezier(0.34, 1.56, 0.64, 1)` | Reserved — order-success checkmark, wishlist heart pop. Nowhere routine. |
|
|
602
|
-
|
|
603
|
-
**Signature motions.**
|
|
604
|
-
|
|
605
|
-
1. **Wishlist heart pop.** When the user taps the heart icon on a product card, the outline transitions to filled `#FA2E5F` over `motion-fast / ease-spring`, with a 1.0 → 1.25 → 1.0 scale pop. The overshoot is licensed here because the gesture is emotional — adding to wishlist is "saying yes" and the heart should feel it.
|
|
606
|
-
2. **Sale timer tick.** The seconds digit re-renders every 1000ms with `motion-fast / ease-standard`, briefly going `opacity: 0.7` → `opacity: 1.0` to communicate liveness. The minutes/hours digits do not animate per-tick (would feel noisy).
|
|
607
|
-
3. **Bottom-sheet presentation.** Sheets rise from `y+40px` with `motion-standard / ease-enter` and a synchronized backdrop fade `rgba(0,0,0,0)` → `rgba(0,0,0,0.5)`. Dismissal uses `motion-fast / ease-exit` — leaving is lighter than entering.
|
|
608
|
-
4. **Order-success checkmark.** The pink checkmark on the order-complete screen draws over `motion-slow / ease-spring`. This and the wishlist heart are the only two places spring easing is licensed.
|
|
609
|
-
5. **Reduce motion.** If `prefers-reduced-motion: reduce`, all `motion-*` tokens collapse to `motion-instant`. Crossfades replace slides. Spring overshoots fall back to linear. The app stays usable; just less kinetic.
|
|
610
|
-
|
|
611
|
-
<!--
|
|
612
|
-
OmD v0.1 Sources — Philosophy Layer (sections 10–15)
|
|
613
|
-
|
|
614
|
-
Direct verification (2026-05-13):
|
|
615
|
-
- https://m.a-bly.com — confirms live site, page title "에이블리 | 전상품 무료배송",
|
|
616
|
-
mobile-first redirect from www.a-bly.com → m.a-bly.com.
|
|
617
|
-
|
|
618
|
-
Brand/founder/culture sources (WebSearch + WebFetch):
|
|
619
|
-
- https://ably-team.medium.com/ably-culture-a640fb3f7cf9 — Ably Team Medium,
|
|
620
|
-
"에이블리는 면접이라는 단어를 사용하지 않는다" — confirms internal language norms
|
|
621
|
-
(팀원 vs 직원, 인터뷰 vs 면접) and the anti-corporate register.
|
|
622
|
-
- https://www.sedaily.com/NewsView/22SSWLO75W — Sedaily interview with Kang Suk-hoon,
|
|
623
|
-
founder positioning ("패알못이 만든 패션 플랫폼", taste-driven commerce framing).
|
|
624
|
-
- https://economist.co.kr/article/view/ecn202405080023 — Economist Korea (May 2024),
|
|
625
|
-
"조 단위 거래액" — scale & operating discipline context.
|
|
626
|
-
- https://www.hankyung.com/economy/article/2020122085521 — Hankyung (Dec 2020),
|
|
627
|
-
2700% growth, founder-quoted vision.
|
|
628
|
-
- https://www.smartfn.co.kr/article/view/sfn202402130003 — SmartFN (Feb 2024),
|
|
629
|
-
annual profitability framing.
|
|
630
|
-
- https://www.kedglobal.com/korean-startups/newsView/ked202310120014 — KED Global (Oct 2023),
|
|
631
|
-
Ably-Meta AI ad measurement partnership; explicit "Ably Corp vs ably.com" disambiguation.
|
|
632
|
-
|
|
633
|
-
Not independently verified via WebFetch — widely documented:
|
|
634
|
-
- Ably (Ably Corp) was founded in 2018 by Kang Suk-hoon (강석훈).
|
|
635
|
-
- 50M+ app downloads by late 2024 and 10M MAU by mid-2025 are widely reported
|
|
636
|
-
but exact figures should be re-verified against Ably PR before being shipped as facts.
|
|
637
|
-
|
|
638
|
-
Personas (§13) are fictional archetypes informed by publicly described Korean
|
|
639
|
-
MZ commerce user segments. Any resemblance to specific individuals is unintended.
|
|
640
|
-
|
|
641
|
-
Interpretive claims (e.g., "pink earns its appearance", "image is the protagonist")
|
|
642
|
-
are editorial readings of the live brand surface, not documented Ably statements.
|
|
643
|
-
|
|
644
|
-
§4 token values are flagged as `(unverified live)` in the §4 footer; Phase U2
|
|
645
|
-
live `getComputedStyle` re-capture is required to upgrade them to verified.
|
|
646
|
-
-->
|
|
334
|
+
No reusable duration or easing curve is promoted. The current capture did not establish native app motion or a cross-domain animation system.
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
**Verified:** 2026-07-12 (omd:migrate)
|
|
339
|
+
**Tier 1 sources:** https://m.a-bly.com/ ; https://ably.team/ ; https://square.a-bly.com/ ; https://ably.team/news/ZS8_IREAACIAr50Y
|
|
340
|
+
**Tier 2 attempts:** getdesign.md had no reliable ABLY consumer record; Refero produced no authoritative current ABLY surface
|
|
341
|
+
**Conflicts unresolved:** none
|