oh-my-design-cli 1.5.1 → 1.6.1
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/AGENTS.md +2 -1
- package/README.ko.md +1 -1
- package/README.md +38 -1
- package/agents/omd-master.md +13 -1
- package/data/reference-fingerprints.json +380 -2
- package/dist/bin/oh-my-design.js +1 -1
- package/dist/{install-skills-IETT2TBJ.js → install-skills-UKEVE3KT.js} +11 -9
- package/dist/{install-skills-IETT2TBJ.js.map → install-skills-UKEVE3KT.js.map} +1 -1
- package/package.json +10 -4
- package/scripts/ctx-prime.cjs +266 -0
- package/scripts/postinstall.cjs +6 -6
- package/skills/omd-harness/SKILL.md +135 -7
- package/web/references/91app/DESIGN.md +151 -0
- package/web/references/airtable/DESIGN.md +16 -2
- package/web/references/bithumb/DESIGN.md +170 -0
- package/web/references/bunjang/DESIGN.md +19 -0
- package/web/references/cakeresume/DESIGN.md +162 -0
- package/web/references/catchtable/DESIGN.md +19 -0
- package/web/references/classum/DESIGN.md +19 -0
- package/web/references/dabang/DESIGN.md +19 -0
- package/web/references/dji/DESIGN.md +0 -1
- package/web/references/fastcampus/DESIGN.md +19 -0
- package/web/references/flex/DESIGN.md +19 -0
- package/web/references/gmarket/DESIGN.md +19 -0
- package/web/references/gogolook/DESIGN.md +126 -0
- package/web/references/hahow/DESIGN.md +158 -0
- package/web/references/hyundaicard/DESIGN.md +172 -0
- package/web/references/inflearn/DESIGN.md +19 -0
- package/web/references/kbank/DESIGN.md +18 -0
- package/web/references/kdan/DESIGN.md +160 -0
- package/web/references/kkbox/DESIGN.md +114 -0
- package/web/references/kream/DESIGN.md +18 -0
- package/web/references/lunit/DESIGN.md +19 -0
- package/web/references/melon/DESIGN.md +153 -0
- package/web/references/nhncloud/DESIGN.md +174 -0
- package/web/references/oliveyoung/DESIGN.md +19 -0
- package/web/references/rayark/DESIGN.md +132 -0
- package/web/references/sendbird/DESIGN.md +285 -0
- package/web/references/socar/DESIGN.md +18 -0
- package/web/references/toss-securities/DESIGN.md +19 -0
- package/web/references/tving/DESIGN.md +18 -0
- package/web/references/upbit/DESIGN.md +19 -0
- package/web/references/upstage/DESIGN.md +18 -0
- package/web/references/velog/DESIGN.md +168 -0
- package/web/references/wadiz/DESIGN.md +19 -0
- package/web/references/webflow/DESIGN.md +16 -2
- package/web/references/yeogiotte/DESIGN.md +19 -0
- package/data/architecture-proposals/2026-05-13-thin-install-fresh-fetch.md +0 -189
- package/data/issues/2026-05-13-multi-surface-schema-rfc.md +0 -67
- package/data/reference-audits/2026-05-13-kr10.md +0 -132
- package/data/reference-audits/2026-05-14-kr10.md +0 -72
- package/data/reference-audits/2026-05-15-kr10.md +0 -124
- package/data/research/2026-05-18-agent-landscape.md +0 -69
- package/data/research/2026-05-18-kr-style-presets.md +0 -572
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: omd:harness
|
|
3
|
-
description: "화면 전체나 신규 surface를 처음부터 디자인할 때의 진입점 — Discovery→Wireframe→Components→Microcopy→Validation 파이프라인을 omd-master 오케스트레이터로 실행. '랜딩
|
|
3
|
+
description: "화면 전체나 신규 surface를 처음부터 디자인할 때의 진입점 — Discovery→Wireframe→Components→Microcopy→Validation 파이프라인을 omd-master 오케스트레이터로 실행. 트리거: '랜딩페이지', '랜딩 페이지', '랜딩 만들어줘', '홈 화면', '첫 화면', '프로토타입', '그럴싸한', '구색 갖춰', 'first screen', 'first impression', 'landing page', 'landing', 'prototype', 'MVP UI', 'home', 'production-ready', 'wireframe to production', '랜딩 처음부터', 'production-ready', '一からデザイン', '從頭設計'. 자연어 발화('그럴싸한 랜딩 만들어줘', 'MVP UI 잡아줘', '프로토타입이라도 구색 갖춰서')에도 자동 트리거. 단일 컴포넌트 수정은 omd:apply."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# omd:harness — Design Harness Entry
|
|
@@ -23,18 +23,49 @@ CLI 의존 없음. 모든 부트스트랩은 Bash + Write 툴로 직접 실행
|
|
|
23
23
|
shape: "[도메인] + [톤/스타일] + [핵심 화면]" — 예: "토스 스타일 가족용 식단 앱 메인 화면"
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
## Step 1 — Subagent registration
|
|
26
|
+
## Step 1 — Subagent registration 자동복구 (v1.6.0+)
|
|
27
27
|
|
|
28
|
-
`omd-master` subagent가 이 세션에 dispatch 가능한지 verify. Agent tool의 사용 가능 subagent 목록에 `omd-master`가 있으면
|
|
28
|
+
`omd-master` subagent가 이 세션에 dispatch 가능한지 verify. Agent tool의 사용 가능 subagent 목록에 `omd-master`가 있으면 Step 2로. **없으면 게이트로 막지 말고 자동복구**:
|
|
29
|
+
|
|
30
|
+
### 1.1 — Agent 폴더 detect
|
|
31
|
+
|
|
32
|
+
다음 폴더 중 가장 먼저 존재하는 것을 target:
|
|
33
|
+
- `.claude/agents/` (claude-code agent)
|
|
34
|
+
- `.codex/agents/` (codex-cli agent)
|
|
35
|
+
- `.agents/` (openhands / generic)
|
|
36
|
+
|
|
37
|
+
없으면 `.claude/agents/`를 mkdir로 생성 (claude-code default).
|
|
38
|
+
|
|
39
|
+
### 1.2 — 패키지 source 위치 확인 + 복구 Write
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
OMD_DIR=$(npm root -g)/oh-my-design-cli
|
|
43
|
+
[ -d "$OMD_DIR" ] || OMD_DIR=$(npm root)/oh-my-design-cli # local fallback
|
|
44
|
+
SRC="$OMD_DIR/agents/omd-master.md"
|
|
45
|
+
TARGET=".claude/agents/omd-master.md" # (또는 detect한 폴더)
|
|
46
|
+
[ -f "$SRC" ] && cp "$SRC" "$TARGET" && echo "RECOVERED" || echo "SRC_MISSING"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
성공 시 사용자에게 한 줄:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
omd-master subagent를 ${TARGET}에 복구했어요. /agents 한 번 실행하거나 다음 turn에서 자동으로 잡힙니다. 계속 진행할게요.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 1.3 — 복구도 실패한 경우 (SRC_MISSING / cp 권한 실패)
|
|
56
|
+
|
|
57
|
+
기존 안내 fallback:
|
|
29
58
|
|
|
30
59
|
```
|
|
31
|
-
omd-master subagent
|
|
60
|
+
omd-master subagent 자동복구가 실패했어요 (패키지 source 누락 또는 권한 문제).
|
|
32
61
|
|
|
33
62
|
해결 (가장 빠른 순서):
|
|
34
|
-
1.
|
|
35
|
-
2.
|
|
63
|
+
1. `npx oh-my-design-cli@latest install-skills --all` 재실행 → /omd-harness 재호출
|
|
64
|
+
2. /agents 실행 → omd-* 목록 확인 → 안 보이면 Claude Code 재시작
|
|
36
65
|
```
|
|
37
66
|
|
|
67
|
+
복구 성공 시에도 main agent가 같은 turn에 master를 dispatch 못하는 경우가 있으니, Step 4 spawn 시 한 번 더 verify해서 실패하면 사용자에게 "다음 turn에서 자동 재발동" 안내 후 Step 2-3 산출물(ctx-prime.json + 페르소나 답)만 보존하고 종료.
|
|
68
|
+
|
|
38
69
|
## Step 2 — Run 디렉토리 부트스트랩 (인라인 Bash)
|
|
39
70
|
|
|
40
71
|
이전엔 `omd harness "<task>" --internal` CLI를 호출했지만 1.0.0부터는 스킬이 직접 한다. 결정론적 hard verify gate:
|
|
@@ -118,7 +149,104 @@ test -d "${RUN_DIR}" && test -f "${RUN_DIR}/task.md" && echo "OK" || echo "FAIL"
|
|
|
118
149
|
하네스 부트스트랩이 실패했어요 (run dir or task.md 누락). 디스크 권한·경로 문제일 수 있어요. 다시 시도하거나 .omd/ 디렉토리를 정리해주세요.
|
|
119
150
|
```
|
|
120
151
|
|
|
121
|
-
이 gate를 통과해야만 Step
|
|
152
|
+
이 gate를 통과해야만 Step 2.5로.
|
|
153
|
+
|
|
154
|
+
## Step 2.5 — CTX-PRIME — 코드베이스 자동 분석 (v1.6.0+)
|
|
155
|
+
|
|
156
|
+
reference를 고르라고 사용자에게 묻기 전에 **먼저 레포를 본다**. 사용자가 듣고 싶은 첫 문장은 "이 레포 분석했어요 — Next.js 14 + 토스 블루 + 4개 surface" 같은 *진단*이지 "어느 레퍼런스 골라드릴까요?"가 아니다.
|
|
157
|
+
|
|
158
|
+
### 2.5.1 — ctx-prime helper 실행
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
OMD_DIR=$(npm root -g)/oh-my-design-cli
|
|
162
|
+
[ -d "$OMD_DIR" ] || OMD_DIR=$(npm root)/oh-my-design-cli
|
|
163
|
+
HELPER="$OMD_DIR/scripts/ctx-prime.cjs"
|
|
164
|
+
[ -f "$HELPER" ] || { echo "CTX_PRIME_MISSING"; exit 0; }
|
|
165
|
+
|
|
166
|
+
node "$HELPER" "$(pwd)" "${RUN_DIR}"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
성공 시 `${RUN_DIR}/ctx-prime.json` 생성. ~12-50ms (typical repo).
|
|
170
|
+
|
|
171
|
+
`CTX_PRIME_MISSING` (구버전 CLI) → Step 3로 직진 (legacy path).
|
|
172
|
+
|
|
173
|
+
### 2.5.2 — ctx-prime.json Read + 사용자 picker 게이트
|
|
174
|
+
|
|
175
|
+
Read 툴로 `${RUN_DIR}/ctx-prime.json` 로드. 다음 필드만 사용자에게 한 줄로 brief:
|
|
176
|
+
|
|
177
|
+
- `stack.framework`, `stack.kind`, `brand_signal.dominant_color_hex`
|
|
178
|
+
- `surface_inventory.length` (몇 개 surface 발견)
|
|
179
|
+
- `brand_signal.language` (ko / en / ja)
|
|
180
|
+
|
|
181
|
+
**AskUserQuestion 1개**를 다음 shape로:
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
question: "이 레포 분석했어요 — {framework} + {dominant_color_hex} 베이스 + {N}개 surface ({language} 카피). 이번 작업의 1차 타깃 페르소나는?"
|
|
185
|
+
header: "Audience"
|
|
186
|
+
options: ctx-prime.audience_hypothesis 상위 3개 → label/description 매핑
|
|
187
|
+
- audience_hypothesis[0]: label + "(추천)", description = evidence
|
|
188
|
+
- audience_hypothesis[1]: label, description = evidence
|
|
189
|
+
- audience_hypothesis[2]: label, description = evidence (없으면 생략)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
(AskUserQuestion이 자동 "Other" 추가하므로 자유 입력 페르소나도 가능.)
|
|
193
|
+
|
|
194
|
+
사용자 답을 `ctx-prime.json`에 `confirmed_audience` 필드로 merge (Edit 또는 Write):
|
|
195
|
+
|
|
196
|
+
```jsonc
|
|
197
|
+
{
|
|
198
|
+
// ... 기존 필드 ...
|
|
199
|
+
"confirmed_audience": "외부 트래픽 — SEO/conversion 우선, 톤 일탈 허용"
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### 2.5.3 — Interview-lite (2-4 picker 묶음)
|
|
204
|
+
|
|
205
|
+
페르소나 확정 직후 **AskUserQuestion 1번 더, 최대 4개 question 묶음**. ctx-prime 결과를 활용해 picker option을 동적 구성:
|
|
206
|
+
|
|
207
|
+
**Question 1 — exit_scope:**
|
|
208
|
+
- "단일 화면만 (한 surface 깊이)"
|
|
209
|
+
- "풀 랜딩 (hero + features + CTA + footer)" — 추천 (대부분의 경우)
|
|
210
|
+
- "다중 surface (랜딩 + product preview + docs)"
|
|
211
|
+
|
|
212
|
+
**Question 2 — wow moment:**
|
|
213
|
+
- ctx-prime.wow_moment_candidates 상위 3개 + "Other"
|
|
214
|
+
|
|
215
|
+
**Question 3 — primary CTA:**
|
|
216
|
+
- "Sign-up / Get started" — 추천 if audience=외부
|
|
217
|
+
- "Book demo / Contact sales"
|
|
218
|
+
- "GitHub star / View source"
|
|
219
|
+
- "View docs / Read more"
|
|
220
|
+
|
|
221
|
+
**Question 4 — visual grounding:**
|
|
222
|
+
- "Live reference capture (느림, 정확)" — 추천 if exit_scope=풀랜딩
|
|
223
|
+
- "Catalog-only (빠름, generic)"
|
|
224
|
+
|
|
225
|
+
답을 `${RUN_DIR}/handoff/.handoff.json`에 prefilled_slots로 적재:
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
mkdir -p "${RUN_DIR}/handoff"
|
|
229
|
+
cat > "${RUN_DIR}/handoff/.handoff.json" <<EOF
|
|
230
|
+
{
|
|
231
|
+
"state": "PROPOSE_PLAN",
|
|
232
|
+
"prefilled_slots": {
|
|
233
|
+
"audience": "<confirmed_audience>",
|
|
234
|
+
"exit_scope": "<answer 1>",
|
|
235
|
+
"wow_moment": "<answer 2>",
|
|
236
|
+
"cta_primary": "<answer 3>",
|
|
237
|
+
"visual_grounding": "<answer 4>"
|
|
238
|
+
},
|
|
239
|
+
"ctx_prime_ref": "ctx-prime.json",
|
|
240
|
+
"created_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
241
|
+
}
|
|
242
|
+
EOF
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
이 시점부터 master는 SLOT_GATE를 건너뛰고 PROPOSE_PLAN으로 직행한다 (master INTAKE 분기 참고).
|
|
246
|
+
|
|
247
|
+
### 2.5.4 — Backward compatibility
|
|
248
|
+
|
|
249
|
+
`ctx-prime.json` 누락 또는 사용자가 picker에서 "Other → 알아서 골라줘" 답하면 Step 3 (reference picker) 그대로 진행. `prefilled_slots` 없으면 master는 legacy SLOT_GATE 흐름.
|
|
122
250
|
|
|
123
251
|
## Step 3 — DESIGN.md 존재 확인 + reference 의미 매칭
|
|
124
252
|
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "91app"
|
|
3
|
+
name: "91APP"
|
|
4
|
+
country: TW
|
|
5
|
+
category: ecommerce
|
|
6
|
+
homepage: "https://www.91app.com"
|
|
7
|
+
primary_color: "#061C3D"
|
|
8
|
+
logo:
|
|
9
|
+
type: favicon
|
|
10
|
+
slug: "https://www.google.com/s2/favicons?domain=91app.com&sz=128"
|
|
11
|
+
verified: "2026-06-01"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
---
|
|
14
|
+
# Design System Inspiration of 91APP
|
|
15
|
+
|
|
16
|
+
## 1. Visual Theme & Atmosphere
|
|
17
|
+
|
|
18
|
+
91APP carries the composure of retail infrastructure built to be trusted at scale — the brand of Taiwan's leading omnichannel OMO (online-merge-offline) commerce SaaS. Its identity rests on a deep structural navy (#061C3D) that anchors text, headings, and the primary call-to-action, giving every screen the gravity of a B2B platform that merchants stake their storefronts on. Against a clean white ground (#FFFFFF), that navy reads as steady and engineered rather than playful. A coral-red accent (#E85040) provides the single point of energy — the action color reserved for moments that should feel decisive. Traditional-Chinese Noto Sans TC sets the type with neutral, legible clarity suited to a Taiwanese merchant audience. The overall atmosphere is one of confident retail infrastructure: orderly, generously rounded at the touch points, and quietly serious.
|
|
19
|
+
|
|
20
|
+
## 2. Color Palette & Roles
|
|
21
|
+
|
|
22
|
+
The palette is disciplined and role-driven, with navy as the dominant structural color and coral as the lone action accent.
|
|
23
|
+
|
|
24
|
+
| Token | Value | Role |
|
|
25
|
+
|-------|-------|------|
|
|
26
|
+
| Structural navy | #061C3D | Body text, headings, primary button background |
|
|
27
|
+
| Action coral | #E85040 | Coral CTA background — the action accent |
|
|
28
|
+
| Red emphasis | #CB200E | Emphasis text, highlight callouts |
|
|
29
|
+
| Neutral fill | #F7F6FB | Neutral / secondary button fill |
|
|
30
|
+
| Ground | #FFFFFF | Page background, text on filled buttons |
|
|
31
|
+
|
|
32
|
+
Navy (#061C3D, rgb 6,28,61) does the heavy lifting: it is the text color, the heading color, and the fill of the primary button — chosen as the brand's primary color precisely because it carries so much of the interface. Coral (#E85040, rgb 232,80,64) is the deliberate counterpoint, an action accent that should stay rare to keep its decisiveness. Red emphasis (#CB200E) is a hotter red reserved for emphasis text. The neutral fill (#F7F6FB) gives secondary surfaces a soft, near-white lift off the pure-white ground.
|
|
33
|
+
|
|
34
|
+
## 3. Typography Rules
|
|
35
|
+
|
|
36
|
+
Type is set in Noto Sans TC (Traditional Chinese), with Helvetica as the fallback — a neutral, highly legible pairing appropriate for a Taiwanese merchant audience. Body copy runs at 16px. Hero headings step up to 44px at weight 700 in structural navy (#061C3D), giving the top of the page clear authority without ornament. The hierarchy is straightforward: large bold navy headings over calm 16px body, letting the content of a commerce platform stay scannable.
|
|
37
|
+
|
|
38
|
+
- Body: 16px, Noto Sans TC / Helvetica
|
|
39
|
+
- Hero heading: 44px / 700, #061C3D, Noto Sans TC
|
|
40
|
+
|
|
41
|
+
## 4. Component Stylings
|
|
42
|
+
|
|
43
|
+
### Primary Button
|
|
44
|
+
|
|
45
|
+
**Default (navy)**
|
|
46
|
+
- Background: #061C3D
|
|
47
|
+
- Text: #FFFFFF
|
|
48
|
+
- Border: none
|
|
49
|
+
- Radius: 16px
|
|
50
|
+
- Height: 48px
|
|
51
|
+
- Font: 16px / 600
|
|
52
|
+
- Use: Primary call-to-action — the dominant navy action on white ground
|
|
53
|
+
|
|
54
|
+
### Coral CTA Button
|
|
55
|
+
|
|
56
|
+
**Default (coral accent)**
|
|
57
|
+
- Background: #E85040
|
|
58
|
+
- Text: #FFFFFF
|
|
59
|
+
- Border: none
|
|
60
|
+
- Radius: 16px
|
|
61
|
+
- Height: 40px
|
|
62
|
+
- Font: 16px / 500
|
|
63
|
+
- Use: The single energetic action accent — reserve for decisive, attention-drawing moments
|
|
64
|
+
|
|
65
|
+
### Neutral Button
|
|
66
|
+
|
|
67
|
+
**Default (secondary)**
|
|
68
|
+
- Background: #F7F6FB
|
|
69
|
+
- Text: #061C3D
|
|
70
|
+
- Border: none
|
|
71
|
+
- Radius: 3px
|
|
72
|
+
- Height: 48px
|
|
73
|
+
- Font: 16px / 600
|
|
74
|
+
- Use: Secondary / neutral action on a soft near-white fill
|
|
75
|
+
|
|
76
|
+
### Hero Heading
|
|
77
|
+
|
|
78
|
+
**Default**
|
|
79
|
+
- Background: transparent
|
|
80
|
+
- Text: #061C3D
|
|
81
|
+
- Border: none
|
|
82
|
+
- Font: 44px / 700
|
|
83
|
+
- Use: Top-of-page heading in Noto Sans TC carrying brand authority
|
|
84
|
+
|
|
85
|
+
## 5. Layout Principles
|
|
86
|
+
|
|
87
|
+
The layout reads as clean retail infrastructure: a white ground (#FFFFFF) gives content room to breathe, navy structure organizes the hierarchy, and the coral accent is placed sparingly so the eye knows exactly where the action is. Generously rounded primary buttons (16px radius) sit as confident, tappable anchors. Secondary surfaces use the neutral fill (#F7F6FB) to separate without hard borders, keeping the page calm and uncluttered. The composition favors order and legibility over decoration — the look of a platform whose job is to make merchants feel secure.
|
|
88
|
+
|
|
89
|
+
## 6. Depth & Elevation
|
|
90
|
+
|
|
91
|
+
Depth is handled with restraint. Rather than heavy shadows, separation comes from color and fill: the neutral #F7F6FB surfaces lift gently off the pure-white ground, and the saturated navy and coral buttons stand forward through contrast alone. The generous 16px corner radius on primary actions softens the interface and signals approachability, while the tighter 3px radius on the neutral button reads as a more utilitarian, grounded surface. The overall sense of elevation is flat and modern, leaning on contrast and rounding instead of literal shadow stacking.
|
|
92
|
+
|
|
93
|
+
## 7. Do's and Don'ts
|
|
94
|
+
|
|
95
|
+
### Do
|
|
96
|
+
- Use navy #061C3D as the structural backbone — text, headings, and the primary button.
|
|
97
|
+
- Keep coral #E85040 rare, reserved for the single most important action.
|
|
98
|
+
- Set type in Noto Sans TC with Helvetica fallback; body at 16px.
|
|
99
|
+
- Give primary actions the generous 16px radius for an approachable, tappable feel.
|
|
100
|
+
- Lift secondary surfaces with the soft #F7F6FB neutral fill instead of hard borders.
|
|
101
|
+
|
|
102
|
+
### Don't
|
|
103
|
+
- Spread coral #E85040 across many elements — it loses its decisive force.
|
|
104
|
+
- Put navy text on navy fill or otherwise compromise the navy/white contrast.
|
|
105
|
+
- Mix the red emphasis #CB200E into general body copy; keep it for emphasis.
|
|
106
|
+
- Invent ornament or heavy shadows — the brand reads engineered and calm.
|
|
107
|
+
|
|
108
|
+
## 8. Responsive Behavior
|
|
109
|
+
|
|
110
|
+
The brand's button system is sized for touch and scale: a 48px-tall primary button and 48px neutral button give comfortable tap targets, while the 40px coral CTA reads as a slightly more compact accent. With a 16px body size and large 44px hero headings, the hierarchy holds up from desktop down to mobile merchant views. The white ground and soft neutral fills keep content legible across viewport sizes without relying on layout-specific decoration. (Specific breakpoint values are not provided in the source; size and contrast carry the responsive behavior.)
|
|
111
|
+
|
|
112
|
+
## 9. Agent Prompt Guide
|
|
113
|
+
|
|
114
|
+
When generating UI in the 91APP style, instruct the agent: build on a white ground (#FFFFFF) with deep navy (#061C3D) as the structural color for body text, headings, and the primary button. Make the primary button navy with white text, 16px radius, 48px height, 16px/600 type. Reserve a single coral (#E85040) action accent — white text, 16px radius, 40px height, 16px/500 — for the most decisive call-to-action only. For secondary actions, use the neutral fill #F7F6FB with navy text, 3px radius, 48px height, 16px/600. Set hero headings at 44px/700 in navy. Use Noto Sans TC (Helvetica fallback), 16px body. Keep the feel calm, engineered, and trustworthy — retail infrastructure, not decoration. Use red emphasis #CB200E only for emphasized text.
|
|
115
|
+
|
|
116
|
+
## 10. Voice & Tone
|
|
117
|
+
|
|
118
|
+
The voice is that of trustworthy retail infrastructure — confident, clear, and B2B-grade. It speaks to merchants who are betting their storefronts on the platform, so it favors steadiness and competence over hype. Like the navy-dominant palette, the tone is structural and dependable, with energy reserved for the moments that matter. It is professional Traditional-Chinese-first, addressing a Taiwanese commerce audience directly and practically.
|
|
119
|
+
|
|
120
|
+
## 11. Brand Narrative
|
|
121
|
+
|
|
122
|
+
91APP is Taiwan's leading omnichannel retail-commerce SaaS, built around OMO — online-merge-offline. Its visual identity tells that story: a deep-navy structural brand conveys the reliability of infrastructure merchants depend on, while a coral-red action accent on a clean white ground signals the decisive moments of commerce. The Traditional-Chinese Noto Sans typography and generously rounded primary buttons round out a brand that reads as confident, approachable retail infrastructure — serious where it counts, welcoming at the point of action.
|
|
123
|
+
|
|
124
|
+
## 12. Principles
|
|
125
|
+
|
|
126
|
+
- Structure first: navy carries text, headings, and the primary action — the brand's backbone.
|
|
127
|
+
- One point of energy: coral is the lone action accent, kept rare to stay decisive.
|
|
128
|
+
- Clarity over ornament: white ground, legible 16px Noto Sans TC, no unnecessary decoration.
|
|
129
|
+
- Approachable touch points: generous 16px rounding on primary actions invites interaction.
|
|
130
|
+
- Trust through restraint: soft neutral fills and flat depth keep the platform calm and credible.
|
|
131
|
+
|
|
132
|
+
## 13. Personas
|
|
133
|
+
|
|
134
|
+
- **The Taiwanese merchant** — runs an omnichannel store and needs a platform that feels dependable; reassured by the navy structural brand and clear, legible interface.
|
|
135
|
+
- **The operations lead** — manages day-to-day commerce flows and values the unambiguous hierarchy where coral marks exactly where to act.
|
|
136
|
+
- **The decision-maker evaluating SaaS** — reads the engineered, confident aesthetic as a signal of trustworthy retail infrastructure worth staking a business on.
|
|
137
|
+
|
|
138
|
+
## 14. States
|
|
139
|
+
|
|
140
|
+
State styling is expressed through the documented button variants. The primary navy button (#061C3D background, white text, 16px radius, 48px height, 16px/600) is the default decisive action. The coral CTA (#E85040 background, white text, 16px radius, 40px height, 16px/500) marks the single high-energy action state. The neutral button (#F7F6FB fill, navy text, 3px radius, 48px height, 16px/600) covers the calm secondary state. Red emphasis (#CB200E) signals an emphasized or highlighted text state. (Hover, pressed, focus, and disabled values are not provided in the source; derive them by darkening or lightening these base colors while preserving the navy/coral roles.)
|
|
141
|
+
|
|
142
|
+
## 15. Motion & Easing
|
|
143
|
+
|
|
144
|
+
Specific motion and easing values are not provided in the source. In keeping with the brand's engineered, trustworthy character, any motion should be restrained and purposeful — calm transitions that reinforce stability rather than draw attention to themselves, with the coral action accent reserved for the moments worth animating.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
**Verified:** 2026-06-01
|
|
148
|
+
**Tier 1 sources:** https://www.91app.com (live DOM — body text, primary/coral/neutral buttons, hero heading, all hex/px values), https://91app.tech (brand-owned regional engineering/tech source), https://github.com/91APP (brand-owned regional org)
|
|
149
|
+
**Tier 2 sources:** getdesign.md/91app — NOT LISTED. refero — not listed. Note: navy #061C3D is structural/dominant; coral #E85040 is the action accent (brand-color choice: navy chosen as primary as it carries text+headings+primary button).
|
|
150
|
+
**Conflicts unresolved:** none
|
|
151
|
+
**Proof:** see .verification.md (## Proof block)
|
|
@@ -154,8 +154,22 @@ Airtable's website is a clean, enterprise-friendly platform that communicates "s
|
|
|
154
154
|
- Soft ambient: `rgba(15,48,106,0.05) 0px 0px 20px`
|
|
155
155
|
|
|
156
156
|
## 7. Do's and Don'ts
|
|
157
|
-
|
|
158
|
-
###
|
|
157
|
+
|
|
158
|
+
### Do
|
|
159
|
+
- Use Airtable Blue (`#1b61c9`) only for CTAs and links, set on a white (`#ffffff`) canvas with Deep Navy (`#181d26`) text
|
|
160
|
+
- Set the Haas / Haas Groot Disp font system with positive letter-spacing on body and small text (0.08px–0.28px) — it is Airtable's typographic signature
|
|
161
|
+
- Apply the radius scale by component size: 12px buttons, 16px standard cards, 24px sections, 32px large containers
|
|
162
|
+
- Lift primary buttons with the signature blue-tinted multi-layer shadow (`rgba(45,127,249,0.28) 0px 1px 3px`) so elevation ties back to the brand color
|
|
163
|
+
- Reserve color for user data and keep chrome neutral, signaling 'live work' with the spotlight surface (`rgba(249,252,255,0.97)`) plus subtle `#e0e2e6` borders
|
|
164
|
+
- Name theme variables with the semantic `--theme_*` convention (e.g. `--theme_success-text` for `#006400`) to match Airtable's internal tokens
|
|
165
|
+
|
|
166
|
+
### Don't
|
|
167
|
+
- Skip the positive letter-spacing on body and caption text — it is what gives Airtable its Swiss-precision feel
|
|
168
|
+
- Lean on heavy gray backgrounds or dark drop shadows for depth instead of the spotlight surface and the soft ambient `rgba(15,48,106,0.05) 0px 0px 20px` glow
|
|
169
|
+
- Spread Airtable Blue (`#1b61c9`) across chrome or large backgrounds — color belongs to user data, not the UI frame
|
|
170
|
+
- Reach for the deliberately sharp 2px radius outside its cookie-consent context where buttons and cards use 12px and up
|
|
171
|
+
- Add bouncy spring motion or exceed the 150–400ms timing tokens, and respect `prefers-reduced-motion` by dropping the spotlight fade-in
|
|
172
|
+
- Use forbidden voice like 'revolutionary database', 'no-code magic', or emoji in product chrome
|
|
159
173
|
|
|
160
174
|
## 8. Responsive Behavior
|
|
161
175
|
Breakpoints: 425–1664px (23 breakpoints)
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: bithumb
|
|
3
|
+
name: "Bithumb"
|
|
4
|
+
country: KR
|
|
5
|
+
category: fintech
|
|
6
|
+
homepage: "https://www.bithumb.com"
|
|
7
|
+
primary_color: "#1C2028"
|
|
8
|
+
logo:
|
|
9
|
+
type: favicon
|
|
10
|
+
slug: "https://www.google.com/s2/favicons?domain=bithumb.com&sz=128"
|
|
11
|
+
verified: "2026-06-01"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Design System Inspiration of Bithumb
|
|
16
|
+
|
|
17
|
+
## 1. Visual Theme & Atmosphere
|
|
18
|
+
|
|
19
|
+
Bithumb wears the aesthetic of money taken seriously: a dark, premium, data-dense trading surface built on a near-black structural base of #1C2028, warmed in carefully chosen places by a bronze/brown accent (#543E35) that signals a deliberate, recent rebrand. As Korea's No.1 crypto-asset exchange, the interface earns trust not through decoration but through density — packed grids of numbers, tight controls, and micro-labels that never waste a pixel. The palette is restrained and structural, letting the trading colors do the emotional work: red (#E15241) reads as price up and blue (#4880EE) as price down, following the Korea-market convention rather than the Western one. Everything is signed by the proprietary 'Bithumb Trading Sans' typeface, a brand-owned voice that lends the dense data UI a consistent, money-grade tone. The result feels less like a consumer app and more like a professional terminal: composed, serious, and engineered for people moving real value. Bronze against near-black is the whole mood — warmth held in tension with a structural, almost industrial calm.
|
|
20
|
+
|
|
21
|
+
## 2. Color Palette & Roles
|
|
22
|
+
|
|
23
|
+
- **Structural near-black** `#1C2028` — the primary structural color; used for the signup button surface and active filter chips. The anchor of the entire dark UI.
|
|
24
|
+
- **Warm bronze/brown** `#543E35` — the rebrand accent; carries the exchange CTA surface, the single warmest gesture in the chrome.
|
|
25
|
+
- **Brown text** `#4F3327` — used as the text color on outline CTAs, echoing the bronze accent in type.
|
|
26
|
+
- **Neutral border** `#B6ABA1` — the 1px border on outline CTAs; a warm, low-contrast separator.
|
|
27
|
+
- **Trading red (price up)** `#E15241` — Korea convention: rising prices. An emotional, directional color, not a structural one.
|
|
28
|
+
- **Trading blue (price down)** `#4880EE` — Korea convention: falling prices. The counterpart to trading red.
|
|
29
|
+
- **Muted gray** `#707882` — inactive chip text and secondary labels.
|
|
30
|
+
- **Muted gray** `#93989E` — secondary/tertiary muted text.
|
|
31
|
+
- **Off-white surface text** `#F8F9FA` — text on the bronze exchange CTA.
|
|
32
|
+
- **Pure white** `#FFFFFF` — text on the structural near-black signup button and active chips.
|
|
33
|
+
|
|
34
|
+
Roles in short: #1C2028 is structure, #543E35 is the warm call-to-action, #E15241 / #4880EE are reserved exclusively for directional trading signal, and the grays (#707882, #93989E) plus the neutral border #B6ABA1 carry everything quiet.
|
|
35
|
+
|
|
36
|
+
## 3. Typography Rules
|
|
37
|
+
|
|
38
|
+
The system is set in the proprietary **'Bithumb Trading Sans'** typeface — brand-owned, and a core part of the rebrand's signature. This is a dense data UI, so the type scale stays tight and functional:
|
|
39
|
+
|
|
40
|
+
- **Body:** 14px — the workhorse for readable content in a packed layout.
|
|
41
|
+
- **Controls:** 13px — buttons, chips, and interactive labels sit one step down from body.
|
|
42
|
+
- **Micro-labels:** 12px — the smallest tier, for dense data annotations that must coexist with numbers.
|
|
43
|
+
|
|
44
|
+
Weights observed in components run from 500 (medium, on CTAs and the signup button) up to 600 (semibold, on active filter chips), giving emphasis without resorting to a large size jump. The discipline is clear: hold the scale narrow, let weight and color — not size — create hierarchy in a money-grade, data-first interface.
|
|
45
|
+
|
|
46
|
+
## 4. Component Stylings
|
|
47
|
+
|
|
48
|
+
### Primary Button
|
|
49
|
+
|
|
50
|
+
**Signup (structural)**
|
|
51
|
+
- Background: #1C2028
|
|
52
|
+
- Text: #FFFFFF
|
|
53
|
+
- Border: none
|
|
54
|
+
- Radius: 4px
|
|
55
|
+
- Height: 32px
|
|
56
|
+
- Font: 13px / 500
|
|
57
|
+
- Use: account signup / primary structural action in the top chrome
|
|
58
|
+
|
|
59
|
+
### Exchange CTA
|
|
60
|
+
|
|
61
|
+
**Filled (bronze)**
|
|
62
|
+
- Background: #543E35
|
|
63
|
+
- Text: #F8F9FA
|
|
64
|
+
- Border: none
|
|
65
|
+
- Radius: 4px
|
|
66
|
+
- Height: 56px
|
|
67
|
+
- Font: 18px / 500
|
|
68
|
+
- Use: the primary exchange call-to-action — the single warmest, most prominent action
|
|
69
|
+
|
|
70
|
+
**Outline**
|
|
71
|
+
- Background: transparent
|
|
72
|
+
- Text: #4F3327
|
|
73
|
+
- Border: 1px solid #B6ABA1
|
|
74
|
+
- Radius: 4px
|
|
75
|
+
- Height: 56px
|
|
76
|
+
- Use: secondary action paired alongside the filled bronze CTA
|
|
77
|
+
|
|
78
|
+
### Filter Chip
|
|
79
|
+
|
|
80
|
+
**Active**
|
|
81
|
+
- Background: #1C2028
|
|
82
|
+
- Text: #FFFFFF
|
|
83
|
+
- Border: none
|
|
84
|
+
- Radius: 8px
|
|
85
|
+
- Height: 36px
|
|
86
|
+
- Font: 13px / 600
|
|
87
|
+
- Use: the currently selected filter in a chip row
|
|
88
|
+
|
|
89
|
+
**Inactive**
|
|
90
|
+
- Background: transparent
|
|
91
|
+
- Text: #707882
|
|
92
|
+
- Border: 1px solid rgba(28,32,40,0.1)
|
|
93
|
+
- Radius: 8px
|
|
94
|
+
- Use: unselected filter options in the same chip row
|
|
95
|
+
|
|
96
|
+
## 5. Layout Principles
|
|
97
|
+
|
|
98
|
+
Bithumb's layout philosophy is density done deliberately: a data-dense trading aesthetic where information packs tightly and controls sit compact (13px control type, 12px micro-labels). The structural near-black base (#1C2028) frames the content rather than competing with it, so dense grids of numbers and chips can coexist without visual fatigue. Two radius scales signal two layout intents — 4px on buttons and CTAs for crisp, terminal-like edges, and 8px on filter chips for a slightly softer, more tappable control row. Control heights are tiered to importance: 32px for the compact signup button, 36px for filter chips, and a generous 56px for the primary exchange CTAs that deserve weight. The overall principle is restraint in surface and richness in data — let the structure recede so the numbers and the directional trading colors lead.
|
|
99
|
+
|
|
100
|
+
## 6. Depth & Elevation
|
|
101
|
+
|
|
102
|
+
The aesthetic is structural and flat rather than shadow-heavy: depth comes primarily from color layering against the near-black #1C2028 base and from borders, not from elevation. The outline CTA uses a 1px solid #B6ABA1 border, and inactive chips use a 1px solid rgba(28,32,40,0.1) border — these thin strokes do the separating work that shadows would in a lighter UI. Filled surfaces (the bronze #543E35 CTA, the structural #1C2028 signup button and active chips) establish foreground purely through contrast and warmth against the dark ground. No specific shadow blur, spread, or elevation token was captured in the inspection, so elevation should be treated qualitatively: lean on contrast and 1px borders, not drop shadows.
|
|
103
|
+
|
|
104
|
+
## 7. Do's and Don'ts
|
|
105
|
+
|
|
106
|
+
### Do
|
|
107
|
+
- Use #1C2028 as the structural anchor for primary surfaces and active states.
|
|
108
|
+
- Reserve #543E35 bronze for the single most important call-to-action.
|
|
109
|
+
- Keep red (#E15241) strictly for price-up and blue (#4880EE) strictly for price-down — Korea convention, never swapped.
|
|
110
|
+
- Hold the type scale tight (14 / 13 / 12px) and use weight (500–600), not size, for emphasis.
|
|
111
|
+
- Use 4px radius on buttons/CTAs and 8px on filter chips, consistently.
|
|
112
|
+
|
|
113
|
+
### Don't
|
|
114
|
+
- Apply the Western convention (green-up / red-down) — Bithumb's market reads red as up.
|
|
115
|
+
- Substitute a generic font; the proprietary 'Bithumb Trading Sans' is part of the brand signature.
|
|
116
|
+
- Dilute the bronze accent by spreading #543E35 across many surfaces — its power is its scarcity.
|
|
117
|
+
- Introduce heavy drop shadows; depth here is structural (color + 1px borders).
|
|
118
|
+
- Loosen the data density into airy spacing — the money-grade seriousness depends on it.
|
|
119
|
+
|
|
120
|
+
## 8. Responsive Behavior
|
|
121
|
+
|
|
122
|
+
No discrete breakpoint pixel values or responsive grid tokens were captured in the live inspection, so responsive behavior is described qualitatively. The system is built around compact, fixed-height controls — a 32px signup button, 36px filter chips, 56px exchange CTAs — which translate cleanly to touch targets, with the 56px CTAs comfortably finger-sized and the 36px chips reading as a scrollable control row. The dense data orientation (13px controls, 12px micro-labels) implies that on narrower viewports the trading grids would reflow into stacked, scrollable panels rather than shrinking type below the legibility floor. Treat the chip row as horizontally scrollable on small screens, and keep the bronze CTA full-width and prominent where space contracts. Until real breakpoints are measured, preserve the height tiers and radius scales rather than inventing new ones.
|
|
123
|
+
|
|
124
|
+
## 9. Agent Prompt Guide
|
|
125
|
+
|
|
126
|
+
When generating UI in Bithumb's style, prompt for: a dark, data-dense trading interface on a structural near-black base (#1C2028); a single warm bronze (#543E35) primary CTA; directional trading colors used only for price signal (red #E15241 = up, blue #4880EE = down, Korea convention); the proprietary 'Bithumb Trading Sans' (or a tight, neutral sans as stand-in); a compressed type scale (body 14px, controls 13px, micro-labels 12px) with emphasis via weight 500–600. Specify radii explicitly: 4px on buttons and CTAs, 8px on filter chips. Specify heights: 32px signup button, 36px chips, 56px exchange CTAs. Ask for structural depth — color layering and 1px borders (#B6ABA1 for outlines, rgba(28,32,40,0.1) for inactive chips) — not drop shadows. The brief in one line: "serious, dense, money-grade — near-black structure, one bronze accent, directional trading color, nothing decorative."
|
|
127
|
+
|
|
128
|
+
## 10. Voice & Tone
|
|
129
|
+
|
|
130
|
+
Bithumb's voice is serious, dense, and money-grade — the register of a professional trading floor, not a playful consumer app. It communicates with precision and economy, trusting the user to handle real numbers and real risk. Microcopy should be direct and unembellished, prioritizing clarity of state (price up / price down, active / inactive) over personality. The tone is confident and composed: it conveys that this is Korea's No.1 exchange without saying so loudly, letting the density and discipline of the interface make the claim.
|
|
131
|
+
|
|
132
|
+
## 11. Brand Narrative
|
|
133
|
+
|
|
134
|
+
Bithumb is Korea's No.1 crypto-asset exchange, and its recent rebrand tells the story of an institution maturing into a premium, professional identity. The visual narrative pairs a near-black structural base with a deliberate bronze/brown accent (#543E35) — warmth introduced into an otherwise austere, money-grade environment, signaling both gravity and craft. The proprietary 'Bithumb Trading Sans' typeface makes the brand literally speak in its own voice, a mark of an organization investing in a coherent, owned identity. Korea-convention trading colors (red up, blue down) root the brand firmly in its home market and its users' expectations. The throughline: seriousness about money, expressed as density, restraint, and a single warm accent that makes the dark feel intentional rather than cold.
|
|
135
|
+
|
|
136
|
+
## 12. Principles
|
|
137
|
+
|
|
138
|
+
- **Density with discipline** — pack information tightly, but keep the scale and palette restrained so it never reads as cluttered.
|
|
139
|
+
- **One warm accent** — let bronze (#543E35) carry the primary action; scarcity is what gives it power.
|
|
140
|
+
- **Color is signal** — reserve red/blue strictly for directional price meaning; structure stays in near-black and gray.
|
|
141
|
+
- **Owned voice** — the proprietary 'Bithumb Trading Sans' is non-negotiable to the identity.
|
|
142
|
+
- **Structural depth** — separate with contrast and 1px borders, not shadows.
|
|
143
|
+
- **Money-grade seriousness** — every choice should reinforce trust and gravity, not delight.
|
|
144
|
+
|
|
145
|
+
## 13. Personas
|
|
146
|
+
|
|
147
|
+
- **The active trader** — moves real value, expects a dense terminal where price-up (#E15241) and price-down (#4880EE) read instantly. Values speed, precision, and zero ambiguity over decoration.
|
|
148
|
+
- **The serious newcomer** — drawn by Bithumb's No.1 standing; needs the prominent bronze exchange CTA (#543E35, 56px) and clear signup path (#1C2028 button) to feel guided without the interface feeling consumer-soft.
|
|
149
|
+
- **The Korea-market user** — reads red as up and blue as down by convention; any deviation would break trust instantly. The directional colors are designed for exactly this reader.
|
|
150
|
+
|
|
151
|
+
## 14. States
|
|
152
|
+
|
|
153
|
+
- **Active (filter chip):** background #1C2028, text #FFFFFF, radius 8px, height 36px, font 13px/600 — high-contrast, structural, clearly selected.
|
|
154
|
+
- **Inactive (filter chip):** background transparent, text #707882 (muted gray), border 1px solid rgba(28,32,40,0.1), radius 8px — recessive and quiet against the dark ground.
|
|
155
|
+
- **Primary action (exchange CTA):** background #543E35, text #F8F9FA, radius 4px, height 56px, font 18px/500 — the warmest, most prominent state.
|
|
156
|
+
- **Secondary action (outline CTA):** background transparent, text #4F3327, border 1px solid #B6ABA1, radius 4px, height 56px — paired but subordinate to the filled bronze.
|
|
157
|
+
- **Price up:** trading red #E15241 (Korea convention).
|
|
158
|
+
- **Price down:** trading blue #4880EE (Korea convention).
|
|
159
|
+
- Hover, pressed, focus, and disabled states were not captured in the live inspection; treat them qualitatively (likely subtle contrast shifts against #1C2028) rather than inventing values.
|
|
160
|
+
|
|
161
|
+
## 15. Motion & Easing
|
|
162
|
+
|
|
163
|
+
No motion durations, easing curves, or transition tokens were captured in the live inspection. In keeping with the brand's serious, money-grade, data-dense character, motion should be treated qualitatively: minimal, fast, and functional — the kind of restrained transition appropriate to a professional trading terminal, where responsiveness and clarity matter more than expressive animation. State changes (chip active/inactive, CTA press) should feel immediate and composed. Until real timing values are measured, do not invent durations or curves; default to crisp, low-key transitions that respect the density of the interface.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
**Verified:** 2026-06-01
|
|
167
|
+
**Tier 1 sources:** https://www.bithumb.com (live primary site, brand-owned), https://apidocs.bithumb.com (official API docs, brand-owned), https://www.bithumbcorp.com (corporate site, brand-owned), https://github.com/bithumb (official GitHub org, brand-owned)
|
|
168
|
+
**Tier 2 sources:** getdesign.md/bithumb — NOT LISTED. refero — not listed. Note: primary_color #1C2028 is the measured dominant structural color (brand logotype orange not present in the rendered web chrome); the rebrand pairs near-black with a bronze accent #543E35.
|
|
169
|
+
**Conflicts unresolved:** none
|
|
170
|
+
**Proof:** see .verification.md (## Proof block)
|
|
@@ -262,6 +262,25 @@ Do NOT use this reference for:
|
|
|
262
262
|
- Editorial commerce where the photo deserves a 4:5 or 1:1 art-directed frame
|
|
263
263
|
- B2B SaaS where information density and table-rendering trump scrollable feeds
|
|
264
264
|
|
|
265
|
+
|
|
266
|
+
## 13. Do's and Don'ts
|
|
267
|
+
|
|
268
|
+
### Do
|
|
269
|
+
- Reserve Bunjang Red (#d80c18, --color-primary) for the single highest-intent CTA per surface — the only place red appears
|
|
270
|
+
- Build the product card on the 81:100 portrait thumbnail (--bun-ui-aspect-ratio-vertical: 81 / 100) with a 6px radius and #f6f6f6 placeholder bg
|
|
271
|
+
- Signal depth with 1px #e5e5e5 (gray-100) borders and #f6f6f6 (gray-50) tints instead of elevation
|
|
272
|
+
- Set all UI text in Pretendard Variable using only the 400/500/700 weights, letting 16px/700 price outweigh 14px/500 gray-600 (#666) titles
|
|
273
|
+
- Color-code service chips by their dedicated ladders — indigo --color-safe-* for 안전결제, warm-amber --color-care-* for 감정완료, info-blue --color-blue-* for 내폰시세
|
|
274
|
+
- Outline the heart (찜) button with a 10% black inner glow so its white stroke stays legible on any seller photo, flipping to solid --color-red-500 when tapped
|
|
275
|
+
|
|
276
|
+
### Don't
|
|
277
|
+
- Spend red (#d80c18) on secondary or tertiary actions — it drains the single primary it is meant to mark
|
|
278
|
+
- Use square or square-ish thumbnails that break the 81:100 vertical convention and make phones and sneakers look stunted
|
|
279
|
+
- Add box-shadow to any card or button — no sampled element carries elevation, and it contradicts the borders-and-tints depth language
|
|
280
|
+
- Mix in Noto Sans KR, Apple SD Gothic Neo, or any display face — Pretendard Variable carries 100% of UI text
|
|
281
|
+
- Manufacture urgency with copy like '마지막 1개!' or '지금 바로!' — the platform's listing depth is the urgency, and only price typography earns emphasis
|
|
282
|
+
- Reuse partner login colors (kakao #fae100, naver #03cf5d, etc.) or interrupt with a modal where a z-index 1500 snackbar would do
|
|
283
|
+
|
|
265
284
|
---
|
|
266
285
|
|
|
267
286
|
## Verification footer
|