oh-my-design-cli 1.6.1 → 1.6.2
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/README.ko.md +12 -0
- package/README.md +12 -0
- package/data/reference-fingerprints.json +979 -402
- package/dist/bin/oh-my-design.js +4 -3
- package/dist/bin/oh-my-design.js.map +1 -1
- package/dist/{install-skills-UKEVE3KT.js → install-skills-6QFSN5BN.js} +98 -34
- package/dist/install-skills-6QFSN5BN.js.map +1 -0
- package/package.json +2 -1
- package/skills/claude-design/SKILL.md +385 -0
- package/skills/claude-design/references/claude-design-flow.md +425 -0
- package/skills/claude-design/references/codebase-analysis.md +373 -0
- package/skills/claude-design/scripts/analyze_codebase.py +1369 -0
- package/skills/claude-design/scripts/clickable_link.sh +48 -0
- package/skills/claude-design/scripts/collect_source.py +178 -0
- package/skills/claude-design/scripts/drive_claude_design.cjs +378 -0
- package/skills/claude-design/scripts/gather_references.py +437 -0
- package/web/references/bunjang/DESIGN.md +1 -1
- package/web/references/classting/DESIGN.md +251 -0
- package/web/references/coinone/DESIGN.md +218 -0
- package/web/references/devsisters/DESIGN.md +253 -0
- package/web/references/drnow/DESIGN.md +331 -0
- package/web/references/flo/DESIGN.md +306 -0
- package/web/references/fugle/DESIGN.md +250 -0
- package/web/references/gogolook/DESIGN.md +5 -0
- package/web/references/grip/DESIGN.md +250 -0
- package/web/references/hogangnono/DESIGN.md +308 -0
- package/web/references/hyundaicard/DESIGN.md +5 -0
- package/web/references/jkopay/DESIGN.md +249 -0
- package/web/references/jobkorea/DESIGN.md +310 -0
- package/web/references/krafton/DESIGN.md +230 -0
- package/web/references/laftel/DESIGN.md +253 -0
- package/web/references/lezhin/DESIGN.md +301 -0
- package/web/references/momoshop/DESIGN.md +279 -0
- package/web/references/mustit/DESIGN.md +282 -0
- package/web/references/payco/DESIGN.md +227 -0
- package/web/references/piccollage/DESIGN.md +277 -0
- package/web/references/riiid/DESIGN.md +228 -0
- package/web/references/trenbe/DESIGN.md +252 -0
- package/web/references/voicetube/DESIGN.md +227 -0
- package/dist/install-skills-UKEVE3KT.js.map +0 -1
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: mustit
|
|
3
|
+
name: "MUSTIT"
|
|
4
|
+
country: KR
|
|
5
|
+
category: ecommerce
|
|
6
|
+
homepage: "https://www.mustit.co.kr"
|
|
7
|
+
primary_color: "#D00000"
|
|
8
|
+
logo:
|
|
9
|
+
type: favicon
|
|
10
|
+
slug: "https://www.google.com/s2/favicons?domain=mustit.co.kr&sz=256"
|
|
11
|
+
verified: "2026-06-03"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# MUSTIT
|
|
16
|
+
|
|
17
|
+
Korea's leading luxury resale marketplace connecting 1,300+ luxury brands and millions of monthly shoppers through a mobile-first, discovery-driven experience.
|
|
18
|
+
|
|
19
|
+
## 1. Visual Theme & Atmosphere
|
|
20
|
+
|
|
21
|
+
MUSTIT projects a disciplined luxury-marketplace aesthetic: a near-black (`#1F1F2C`) and white canvas that recedes so individual product photography can dominate, accented by a single assertive brand red (`#D00000`) that marks every price-cut, badge, and primary CTA. The official brand philosophy — "Smart Luxury — Make the Best Discovery" — is made tangible through high-density list grids, tight typographic hierarchy in Pretendard, and a periscope-lens symbol (M SCOPE) that signals personal curation. Shadow use is deliberately restrained (max `rgba(0,0,0,.05)`), surfaces feel flat and minimal, and the red accent creates instant visual priority in a visually busy product grid.
|
|
22
|
+
|
|
23
|
+
## 2. Color Palette & Roles
|
|
24
|
+
|
|
25
|
+
- **Brand Navy:** `#1F1F2C` — official primary brand color (CI logotype, hero backgrounds, brand header)
|
|
26
|
+
- **Brand Red:** `#D00000` — primary action color; discount price labels, primary CTA button, cart badge, active filter, sale tag
|
|
27
|
+
- **Text Primary:** `#222222` — body text, product titles, prices, headings
|
|
28
|
+
- **Text Secondary:** `#888888` — captions, secondary metadata, placeholder
|
|
29
|
+
- **Text Tertiary:** `#555555` — supporting body copy, sub-descriptions
|
|
30
|
+
- **Text Disabled:** `#cccccc` — disabled input labels, muted controls
|
|
31
|
+
- **Info Blue:** `#3083e4` — informational tags, delivery status, link text
|
|
32
|
+
- **Outlet Burgundy:** `#8c1e46` — outlet badge background
|
|
33
|
+
- **Background White:** `#ffffff` — page and card backgrounds
|
|
34
|
+
- **Surface Light:** `#fafafa` — list section backgrounds, hot deal section
|
|
35
|
+
- **Surface Mid:** `#f5f5f5` — divider fills, skeleton base
|
|
36
|
+
- **Border Default:** `#e6e6e6` — card borders, divider lines
|
|
37
|
+
- **Border Subtle:** `#f0f0f0` — tab underlines, light dividers
|
|
38
|
+
|
|
39
|
+
## 3. Typography Rules
|
|
40
|
+
|
|
41
|
+
Primary typeface: **Pretendard** (all UI copy); secondary: **SD Gothic Neo** (legacy web); display: **Archivo Expanded** (brand marketing/corp headings).
|
|
42
|
+
|
|
43
|
+
| Token | Size | Weight | Line-height | Usage |
|
|
44
|
+
|-------|------|--------|-------------|-------|
|
|
45
|
+
| Display | 28px | 700 | 1.35 | Section hero titles |
|
|
46
|
+
| Title L | 24px | 700 | 1.33 | Modal, page headers |
|
|
47
|
+
| Title M | 20px | 700 | 1.35 | Section headers |
|
|
48
|
+
| Title S | 18px | 600 | 1.5 | Card group titles |
|
|
49
|
+
| Body L | 16px | 500 | 1.5 | Navigation links |
|
|
50
|
+
| Body M | 15px | 600 | 1.47 | Button labels, product name |
|
|
51
|
+
| Body S | 14px | 700 | 1.43 | Product price, form labels |
|
|
52
|
+
| Caption L | 13px | 700 | 1.38 | Search keyword, chips |
|
|
53
|
+
| Caption S | 12px | 700 | 1.33 | Metadata, sizes |
|
|
54
|
+
| Label | 11px | 700 | 1.45 | Badges, micro-copy |
|
|
55
|
+
| Fine | 10px | 400 | 1.6 | Legal, cart count |
|
|
56
|
+
|
|
57
|
+
## 4. Component Stylings
|
|
58
|
+
|
|
59
|
+
### Button
|
|
60
|
+
|
|
61
|
+
**Primary (Black)**
|
|
62
|
+
- Background: `#333333`
|
|
63
|
+
- Text: `#ffffff`
|
|
64
|
+
- Radius: 4px
|
|
65
|
+
- Height: 48px
|
|
66
|
+
- Font: 15px / 600
|
|
67
|
+
- Padding: 0 16px
|
|
68
|
+
|
|
69
|
+
**Primary (Red / Confirm)**
|
|
70
|
+
- Background: `#D00000`
|
|
71
|
+
- Text: `#ffffff`
|
|
72
|
+
- Border: 1px solid `#D00000`
|
|
73
|
+
- Radius: 4px
|
|
74
|
+
- Height: 48px
|
|
75
|
+
- Font: 18px / 500
|
|
76
|
+
|
|
77
|
+
**Outline (Secondary)**
|
|
78
|
+
- Background: `#ffffff`
|
|
79
|
+
- Text: `#222222`
|
|
80
|
+
- Border: 1px solid `#333333`
|
|
81
|
+
- Radius: 4px
|
|
82
|
+
- Height: 32px
|
|
83
|
+
- Font: 13px / 600
|
|
84
|
+
|
|
85
|
+
**Disabled**
|
|
86
|
+
- Background: `#ffffff`
|
|
87
|
+
- Text: `#888888`
|
|
88
|
+
- Border: 1px solid `#dddddd`
|
|
89
|
+
- Radius: 4px
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
### Tab
|
|
94
|
+
|
|
95
|
+
**Active**
|
|
96
|
+
- Text: `#222222`
|
|
97
|
+
- Font: 16px / 700
|
|
98
|
+
- Border-bottom: 2px solid `#222222`
|
|
99
|
+
|
|
100
|
+
**Inactive**
|
|
101
|
+
- Text: `#aaaaaa`
|
|
102
|
+
- Font: 16px / 500
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
### Badge
|
|
107
|
+
|
|
108
|
+
**Outlet**
|
|
109
|
+
- Background: `#8c1e46`
|
|
110
|
+
- Text: `#ffffff`
|
|
111
|
+
- Radius: 2px
|
|
112
|
+
- Height: 22px
|
|
113
|
+
- Padding: 0 8px
|
|
114
|
+
- Font: 11px / 700
|
|
115
|
+
|
|
116
|
+
**Info Tag**
|
|
117
|
+
- Text: `#3083e4`
|
|
118
|
+
- Border: 1px solid `#3083e4`
|
|
119
|
+
- Radius: 2px
|
|
120
|
+
- Height: 24px
|
|
121
|
+
- Font: 12px / 400
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
### Filter Chip
|
|
126
|
+
|
|
127
|
+
**Default**
|
|
128
|
+
- Border: 1px solid `#cccccc`
|
|
129
|
+
- Radius: 17px
|
|
130
|
+
- Height: 34px
|
|
131
|
+
|
|
132
|
+
**Active**
|
|
133
|
+
- Border: 1px solid `#D00000`
|
|
134
|
+
- Radius: 17px
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
### Search Input
|
|
139
|
+
|
|
140
|
+
**Default**
|
|
141
|
+
- Background: `#ffffff`
|
|
142
|
+
- Text: `#222222`
|
|
143
|
+
- Radius: 4px
|
|
144
|
+
- Height: 40px
|
|
145
|
+
- Padding: 0 12px
|
|
146
|
+
- Font: 15px / 600
|
|
147
|
+
|
|
148
|
+
**Placeholder**
|
|
149
|
+
- Text: `#aaaaaa`
|
|
150
|
+
- Font: 15px / 400
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
**Verified:** 2026-06-03
|
|
155
|
+
**Tier 1 sources:** https://www.mustit.co.kr (homepage HTML + embedded CSS bundle, 1.2 MB), https://corp.mustit.co.kr/brand (CI/BI brand page HTML), https://corp.mustit.co.kr/lib/css/mustit-corp.css (corp brand CSS, 70 kB), https://static-ux.mustit.co.kr/ux/service/common/pretendard.css (font CSS)
|
|
156
|
+
**Tier 2 sources:** getdesign.md/mustit — NOT LISTED (no data returned). refero — KR/TW brand, no result expected.
|
|
157
|
+
**Conflicts unresolved:** The main shopping app uses `#333` as the primary CTA (near-black), while the corp site uses `#000`/`#1F1F2C` for brand backgrounds; `#D00000` is consistent across both as the accent/discount/action color.
|
|
158
|
+
|
|
159
|
+
## 5. Layout Principles
|
|
160
|
+
|
|
161
|
+
MUSTIT is built mobile-first as a Nuxt.js SPA served from `m.web.mustit.co.kr`. The standard content gutter is 16px on each side. Product grids use a 2-column layout with an ~8px gap between cards. Sections are separated by a 10px gray divider strip (`#f5f5f5`) or a 1px border line (`#f0f0f0`). The bottom fixed action bar (buy / cart) sits above the native safe-area inset. Maximum content width on desktop is 360–420px, centered with a white card. Sticky top navigation height is 44–56px.
|
|
162
|
+
|
|
163
|
+
## 6. Depth & Elevation
|
|
164
|
+
|
|
165
|
+
Surfaces are intentionally flat. Elevation is expressed through subtle shadows, not strong drop shadows:
|
|
166
|
+
|
|
167
|
+
- **Level 0** — flat (no shadow): content sections, list items
|
|
168
|
+
- **Level 1** — `box-shadow: 0 2px 4px 0 rgba(0,0,0,.03)`: product cards, filter chips
|
|
169
|
+
- **Level 2** — `box-shadow: 0 2px 8px 0 rgba(0,0,0,.05)`: bottom sheets, filter buttons
|
|
170
|
+
- **Overlay** — `background: rgba(0,0,0,.5)`: modal/sheet backdrop
|
|
171
|
+
- **Dark scrim** — `rgba(0,0,0,.03)` pseudo-overlay on product thumbnails
|
|
172
|
+
|
|
173
|
+
Bottom sheets use `border-radius: 15px 15px 0 0`; modals/alerts use `border-radius: 8px`.
|
|
174
|
+
|
|
175
|
+
## 7. Do's and Don'ts
|
|
176
|
+
|
|
177
|
+
### Do
|
|
178
|
+
- Use `#D00000` exclusively for price discounts, sale badges, and primary conversion CTAs
|
|
179
|
+
- Keep all button radius at 4px for UI elements; use 17px+ only for pill chips/filter controls
|
|
180
|
+
- Use Pretendard weight 700 for all prices and product names to create scan hierarchy
|
|
181
|
+
- Keep section backgrounds alternating between `#ffffff` and `#fafafa` for visual rhythm
|
|
182
|
+
- Apply `transition: all 0.2s ease` for interactive micro-feedback (hover/active states)
|
|
183
|
+
- Use the 16px horizontal gutter consistently across all list and card views
|
|
184
|
+
|
|
185
|
+
### Don't
|
|
186
|
+
- Don't mix the brand red `#D00000` with decorative elements — reserve it for urgency/action signals
|
|
187
|
+
- Don't use more than two typeface families in any single view (Pretendard + one brand face)
|
|
188
|
+
- Don't apply heavy shadows (`rgba >0.1`) — the luxury positioning demands minimal depth cues
|
|
189
|
+
- Don't round product image containers — keep them square with sharp corners to frame merchandise
|
|
190
|
+
- Don't use the outlet burgundy `#8c1e46` outside of the Outlet category badge context
|
|
191
|
+
|
|
192
|
+
## 8. Responsive Behavior
|
|
193
|
+
|
|
194
|
+
The primary product is a mobile web app (max-width ~360–428px). The viewport is locked: `user-scalable=no, initial-scale=1.0`. At wider breakpoints the layout centers in a white card against a neutral background. The product grid collapses from a 2-column to a 1-column detail view on PDP. Images use Cloudflare `/_dims_/format/webp/autorotate/on` for adaptive delivery. Font sizes do not scale with viewport — they are fixed px values throughout.
|
|
195
|
+
|
|
196
|
+
## 9. Agent Prompt Guide
|
|
197
|
+
|
|
198
|
+
When generating MUSTIT-style UI:
|
|
199
|
+
- Mobile-first, max-width 428px, 16px side padding
|
|
200
|
+
- Color: `#222` body, `#D00000` price/CTA, `#888` secondary, `#fafafa` section background
|
|
201
|
+
- Font: Pretendard; body 14px/700 for prices, 13px/700 for captions, 15px/600 for buttons
|
|
202
|
+
- Buttons: bg `#333`, color `#fff`, radius 4px, height 48px — or red `#D00000` for confirm actions
|
|
203
|
+
- Cards: no radius, white bg, `box-shadow: 0 2px 4px 0 rgba(0,0,0,.03)`, 1px `#f0f0f0` border
|
|
204
|
+
- Tabs: `border-bottom: 2px solid #222` active, `color: #aaa` inactive
|
|
205
|
+
- Chips: `border-radius: 17px`, `border: 1px solid #ccc` default, `#D00000` active
|
|
206
|
+
- No heavy gradients in product areas; hotdeal sections may use deep purple-to-teal gradients
|
|
207
|
+
- Keep all decorative shadow under `rgba(0,0,0,.05)`
|
|
208
|
+
|
|
209
|
+
## 10. Voice & Tone
|
|
210
|
+
|
|
211
|
+
**Three adjectives:** Direct, Discovery-forward, Confident
|
|
212
|
+
|
|
213
|
+
| Do | Don't |
|
|
214
|
+
|----|-------|
|
|
215
|
+
| Use active, action-oriented verbs ("발견하세요", "탐험하세요") | Use passive constructions or vague luxury puffery |
|
|
216
|
+
| Keep copy concise — product names and discount percentages speak | Over-explain or add unnecessary adjectives |
|
|
217
|
+
| Lead with the deal / discovery hook | Lead with brand philosophy in transactional flows |
|
|
218
|
+
| Mix Korean and brand/product names naturally | Force awkward Konglish or all-Korean transliterations |
|
|
219
|
+
|
|
220
|
+
**Illustrative voice samples:**
|
|
221
|
+
- *Illustrative:* "세상 모든 럭셔리 취향을 탐험하세요." — broad, aspirational, discovery-forward
|
|
222
|
+
- *Illustrative:* "정품 200% 보장. 오늘 핫딜 특가를 놓치지 마세요." — direct, urgency-led, trust-anchored
|
|
223
|
+
- *Illustrative:* "1,300개 해외명품 브랜드. 매일 달라지는 특가." — data-led, no fluff, scan-friendly
|
|
224
|
+
|
|
225
|
+
## 11. Brand Narrative
|
|
226
|
+
|
|
227
|
+
MUSTIT (머스트잇) launched in 2011 as Korea's first dedicated luxury goods marketplace, solving a single friction: accessing authenticated global luxury brands without travelling abroad or paying full retail. The platform grew into a multi-sided market, adding seller tools, authentication guarantees, and eventually a price-comparison engine across 1,300+ brands and 3.7 million+ product listings (2022 figures).
|
|
228
|
+
|
|
229
|
+
The company's second chapter, captured in the tagline "Smart Luxury — Make the Best Discovery," shifts emphasis from access to personalised taste-curation. Where early MUSTIT competed on price and breadth, today it competes on intelligence: surfacing the right item from an enormous catalogue for each individual shopper. The M SCOPE periscope symbol — introduced in the 2020s rebrand — encodes this shift from "shopping" to "exploration."
|
|
230
|
+
|
|
231
|
+
At its core, MUSTIT positions luxury not as an exclusive club but as an everyday enrichment layer. The brand promises that even a person who has never bought a designer item before can "minimise the risk of failure" through personalised guidance — democratising taste without cheapening aspiration.
|
|
232
|
+
|
|
233
|
+
## 12. Principles
|
|
234
|
+
|
|
235
|
+
1. **Discovery over search.** Every surface should surface the unexpected, not just confirm known intent. *UI implication:* Prioritise curated carousels and personalised shelf rows over pure search-result grids.
|
|
236
|
+
|
|
237
|
+
2. **Trust before conversion.** Authentication guarantees and seller ratings must be visible at the product card level, not buried in PDP fine print. *UI implication:* Show authenticity badges inline on thumbnails; never hide them behind a tap.
|
|
238
|
+
|
|
239
|
+
3. **Speed as luxury.** A slow page is a brand failure in a segment where impatience is typical. *UI implication:* Use WebP images, skeleton loading, and SSR; never show empty-state jumps on first paint.
|
|
240
|
+
|
|
241
|
+
4. **Red means action.** The brand red is a semantic signal, not a decoration. *UI implication:* Apply `#D00000` only to discount labels, CTA buttons, and active states — never to illustrative or informational copy.
|
|
242
|
+
|
|
243
|
+
5. **Mobile is the brand.** The desktop experience is secondary. *UI implication:* Design all layouts at 375px width first; use fixed px font sizes; lock zoom.
|
|
244
|
+
|
|
245
|
+
## 13. Personas
|
|
246
|
+
|
|
247
|
+
*Illustrative persona A — "명품 입문자" (Luxury Newcomer):* A mid-20s professional buying their first designer piece. Price-sensitive but aspirational, anxious about authenticity. Scans price discounts and authentication badges before product names. Expects clear return/guarantee copy.
|
|
248
|
+
|
|
249
|
+
*Illustrative persona B — "셀럽 팔로워" (Trend Follower):* A late-20s social-media-active consumer chasing the same items worn by influencers or K-pop idols. Arrives via specific brand + item searches. Values speed of finding the item and peer review signals over price.
|
|
250
|
+
|
|
251
|
+
*Illustrative persona C — "컬렉터" (Collector):* A 35–50 connoisseur who tracks rare or discontinued items across multiple platforms. Filters heavily, compares price histories, and values seller reputation data. Low churn once trusted.
|
|
252
|
+
|
|
253
|
+
*Illustrative persona D — "선물 구매자" (Gift Buyer):* An occasional visitor purchasing for a birthday or anniversary. Needs curated "best-seller" shelving, category gift guides, and express delivery confidence. Highly reactive to the discount badge.
|
|
254
|
+
|
|
255
|
+
## 14. States
|
|
256
|
+
|
|
257
|
+
- **Empty — search no results:** White background, centered illustration, heading "검색 결과가 없어요" in `#222`, subtitle in `#888`; height fills viewport minus nav
|
|
258
|
+
- **Loading — product grid:** 2-column skeleton grid; each card shows a `#f5f5f5` rectangle (image placeholder) and two `#f5f5f5` text lines at 14px and 12px height; no shimmer animation measured
|
|
259
|
+
- **Error — network failure:** Toast-style slide-up notification in `#333` background, white text, 0.4s cubic-bezier spring entry
|
|
260
|
+
- **Error — sold-out PDP:** Primary CTA replaced with a disabled-styled gray button (`#ddd` border, `#888` text); "품절" (sold out) label in `#D00000`
|
|
261
|
+
- **Success — add to cart:** Slide-up toast message confirms addition; green check in `#12cf35`; auto-dismiss at 2–3 s
|
|
262
|
+
- **Skeleton — product card:** `border-radius: 0` image block + two placeholder lines in `#f5f5f5` rendered before data arrives
|
|
263
|
+
- **Disabled — form field:** `background: #fafafa`, `border: 1px solid #f0f0f0`, label text `#ccc`
|
|
264
|
+
- **Active filter chip:** `border: 1px solid #D00000`; badge counter circle `background: #D00000`, `color: #fff`, `border-radius: 9px`
|
|
265
|
+
|
|
266
|
+
## 15. Motion & Easing
|
|
267
|
+
|
|
268
|
+
| Token | Duration | Easing | Usage |
|
|
269
|
+
|-------|----------|--------|-------|
|
|
270
|
+
| Micro | 150ms | `ease-out` | Icon rotation (dropdown arrow), tap highlight |
|
|
271
|
+
| Fast | 200ms | `ease` | Slide-up toast entry, top/bottom position change |
|
|
272
|
+
| Standard | 250ms | `ease-out` | Fade in/out, bottom-sheet slide up/down |
|
|
273
|
+
| Medium | 400ms | `cubic-bezier(.25,.46,.45,.94)` | Sheet slide + opacity composite |
|
|
274
|
+
| Spring | 400ms | `cubic-bezier(.47,1.64,.41,.8)` | Toast bounce-in |
|
|
275
|
+
| Slow | 500ms | `ease` | Pagination indicator slide, banner swipe |
|
|
276
|
+
| Wish | 400ms | `ease-in` | Wishlist heart animation (on/off) |
|
|
277
|
+
|
|
278
|
+
**Rules:**
|
|
279
|
+
- Enter animations use `ease-out`; exit animations use `ease-in`
|
|
280
|
+
- Never animate product image loads — swap instantly to avoid layout shift
|
|
281
|
+
- Sheet overlays fade backdrop at 250ms separate from content slide
|
|
282
|
+
- All interaction animations ≤ 500ms total; prefer ≤ 250ms for taps
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: payco
|
|
3
|
+
name: "PAYCO"
|
|
4
|
+
country: KR
|
|
5
|
+
category: fintech
|
|
6
|
+
homepage: "https://www.payco.com"
|
|
7
|
+
primary_color: "#FF2233"
|
|
8
|
+
logo:
|
|
9
|
+
type: favicon
|
|
10
|
+
slug: "https://www.google.com/s2/favicons?domain=payco.com&sz=256"
|
|
11
|
+
verified: "2026-06-03"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# PAYCO
|
|
16
|
+
|
|
17
|
+
South Korea's everyday fintech super-app — combining payment, points, financial services, and document storage in one red-branded platform operated by NHN PAYCO.
|
|
18
|
+
|
|
19
|
+
## 1. Visual Theme & Atmosphere
|
|
20
|
+
|
|
21
|
+
PAYCO's digital product language is built on a high-contrast red-and-white foundation that projects urgency, confidence, and accessibility. The vivid brand red (#FF2233) anchors every primary action — sidebar headers, CTA buttons, active navigation underlines — against a clean white canvas, creating an energetic rhythm without visual clutter. Dark charcoal (#2a303a) carries all body copy, keeping legibility sharp on white surfaces. Secondary UI chrome falls into neutral greys and off-whites, so the brand red always reads as a call to action. The overall atmosphere is functional and trustworthy: nothing extraneous competes with the moment of payment or redemption, yet the red signals that speed and benefit are always one tap away.
|
|
22
|
+
|
|
23
|
+
## 2. Color Palette & Roles
|
|
24
|
+
|
|
25
|
+
- **Brand Red:** `#FF2233` — primary brand color; buttons, active nav, sidebar headers, emphasis text (CSS custom property `--brand-color`)
|
|
26
|
+
- **Legacy Red:** `#ff1414` — GNB bottom border, hover states, point figures; retained alongside brand red for legacy components
|
|
27
|
+
- **Body Dark:** `#2a303a` — primary text, body copy, nav link default
|
|
28
|
+
- **Off-Black:** `#2d2d2d` — secondary headings, dense data text
|
|
29
|
+
- **Mid Grey:** `#666666` — secondary body text, input value text
|
|
30
|
+
- **Placeholder Grey:** `#999999` — input placeholder, tertiary labels
|
|
31
|
+
- **Light Neutral:** `#f4f6fa` — surface background for cards and section washes
|
|
32
|
+
- **Divider:** `#ededed` — table borders, section dividers
|
|
33
|
+
- **Input Border:** `#d4d4d4` — form field outlines at rest
|
|
34
|
+
- **Disabled Surface:** `#dadada` — disabled button background
|
|
35
|
+
- **Disabled Text:** `#aaacae` — disabled button label
|
|
36
|
+
- **White:** `#ffffff` — page background, card fill, button fill (ghost/secondary)
|
|
37
|
+
|
|
38
|
+
## 3. Typography Rules
|
|
39
|
+
|
|
40
|
+
- **Korean primary:** `NotoSans` (NotoSans KR), weights 100–700; used in service sections, navigation, and promotional copy
|
|
41
|
+
- **Newer flows:** `'Pretendard Variable'`, weights 400/500/700; used in modern refund and transaction screens
|
|
42
|
+
- **Base stack (legacy):** `'Apple SD Gothic Neo', NanumGothic, ng, dotum, Helvetica, sans-serif`; applies to body, inputs, buttons
|
|
43
|
+
- **Base size:** 16px; line-height 1.27; letter-spacing −1px (body)
|
|
44
|
+
- **Hero heading:** 52px / 700 / color `#fff` / letter-spacing −0.56px (`.kv_heading`)
|
|
45
|
+
- **Hero subtext:** 24px / 300 / color `#fff` / line-height 32px (`.kv_text`)
|
|
46
|
+
- **Section title:** 52px / 700 / color `#000` (`.main_title`)
|
|
47
|
+
- **Section subtitle:** 32px / 400 / color `#000` / line-height 50px (`.sub_title`)
|
|
48
|
+
- **Nav links:** 24px / 300 / NotoSans / color `#191919`
|
|
49
|
+
- **Large button label:** 18px / 700 / line-height 48px (`.bn_big *`)
|
|
50
|
+
- **Medium button label:** 13px / 700 / line-height 39px (`.bn_l *`)
|
|
51
|
+
|
|
52
|
+
## 4. Component Stylings
|
|
53
|
+
|
|
54
|
+
### Buttons
|
|
55
|
+
|
|
56
|
+
**Primary Brand Button (bn_big + brand color)**
|
|
57
|
+
- Background: `#FF2233`
|
|
58
|
+
- Text: `#ffffff`
|
|
59
|
+
- Border: 1px solid `#FF2233`
|
|
60
|
+
- Height: 48px
|
|
61
|
+
- Font: 18px / 700
|
|
62
|
+
|
|
63
|
+
**Dark Secondary Button (bn_bk)**
|
|
64
|
+
- Background: `#565960`
|
|
65
|
+
- Text: `#ffffff`
|
|
66
|
+
- Border: 1px solid `#4a4f56`
|
|
67
|
+
- Height: 48px
|
|
68
|
+
- Font: 18px / 700
|
|
69
|
+
|
|
70
|
+
**Ghost Button (bn_gy)**
|
|
71
|
+
- Background: `#ffffff`
|
|
72
|
+
- Text: `#191a1c`
|
|
73
|
+
- Border: 1px solid `#bfbfbf`
|
|
74
|
+
|
|
75
|
+
**Disabled Button (bn_disabled)**
|
|
76
|
+
- Background: `#dadada`
|
|
77
|
+
- Text: `#aaacae`
|
|
78
|
+
- Border: 1px solid `#d2d2d2`
|
|
79
|
+
|
|
80
|
+
**Modern CTA Link Button (halt_apply)**
|
|
81
|
+
- Background: `#FF2233`
|
|
82
|
+
- Text: `#ffffff`
|
|
83
|
+
- Radius: 8px
|
|
84
|
+
- Height: 51px
|
|
85
|
+
- Padding: 16px 10px
|
|
86
|
+
- Font: 14px / 400
|
|
87
|
+
|
|
88
|
+
### Form Inputs
|
|
89
|
+
|
|
90
|
+
**Standard Input (inp)**
|
|
91
|
+
- Background: `#ffffff`
|
|
92
|
+
- Text: `#666666`
|
|
93
|
+
- Border: 1px solid `#d4d4d4`
|
|
94
|
+
- Height: 32px
|
|
95
|
+
- Padding: 0 0 0 20px
|
|
96
|
+
- Font: 12px
|
|
97
|
+
|
|
98
|
+
**Placeholder**
|
|
99
|
+
- Text: `#999999`
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
**Verified:** 2026-06-03
|
|
103
|
+
**Tier 1 sources:** https://www.payco.com (homepage HTML), https://www.payco.com/share/css/common.css?1778564615926 (full CSS bundle, 398 KB)
|
|
104
|
+
**Tier 2 sources:** getdesign.md/payco — NOT LISTED (no data). refero ?q=PAYCO — no KR result.
|
|
105
|
+
**Conflicts unresolved:** #FF2233 (CSS :root --brand-color) and #ff1414 (legacy GNB border) coexist; #FF2233 is the canonical brand red per the custom property declaration.
|
|
106
|
+
|
|
107
|
+
## 5. Layout Principles
|
|
108
|
+
|
|
109
|
+
- Desktop content width: 1026px centered (`.wrap { width: 1026px; margin: 0 auto }`)
|
|
110
|
+
- Full-width hero image with centred overlay text at 1600px minimum width for large screens
|
|
111
|
+
- Sidebar navigation (`.snb_header_wrap`) uses brand red background at 184px height
|
|
112
|
+
- Service sections stack vertically with generous vertical padding (159px top on first section, 115px on subsequent)
|
|
113
|
+
- Service tab navigation is inline with 25px spacing between items
|
|
114
|
+
- Footer uses narrower 760px content width with 180px left padding for address block
|
|
115
|
+
|
|
116
|
+
## 6. Depth & Elevation
|
|
117
|
+
|
|
118
|
+
- Flat surfaces dominate: cards and panels use 1px border or background colour shift rather than drop shadows
|
|
119
|
+
- Panel dropdowns use subtle shadow: `box-shadow: 0 1px 0 rgba(0,0,0,.1)` (`.ly_panel_cont`)
|
|
120
|
+
- Modal overlay uses full-screen dimmed layer: `background: #000; opacity: .7` (`.dimmed`)
|
|
121
|
+
- z-index layering: skip link 120, sticky nav 99, date picker 100, modal 100+
|
|
122
|
+
- Active GNB bottom underline: 4px solid `#ff1414` — the heaviest border accent in the system
|
|
123
|
+
|
|
124
|
+
## 7. Do's and Don'ts
|
|
125
|
+
|
|
126
|
+
### Do
|
|
127
|
+
- Use `#FF2233` exclusively for primary CTAs, active states, and brand emphasis to maintain hierarchy
|
|
128
|
+
- Set body text in `#2a303a` on white for maximum legibility
|
|
129
|
+
- Use NotoSans (KR) for promotional and section heading copy; use Pretendard Variable for newer transactional screens
|
|
130
|
+
- Apply the 1px solid `#d4d4d4` border on all inputs at rest state
|
|
131
|
+
- Use the `bn_big` sizing (198×48px, 18px/700) for primary page-level call-to-action buttons
|
|
132
|
+
- Keep content within the 1026px centred wrapper on desktop
|
|
133
|
+
|
|
134
|
+
### Don't
|
|
135
|
+
- Don't introduce additional brand colours outside the measured palette without alignment
|
|
136
|
+
- Don't use the brand red `#FF2233` for body text or non-actionable elements — it triggers urgency
|
|
137
|
+
- Don't omit the disabled state styling (`#dadada` / `#aaacae`) when rendering inactive buttons
|
|
138
|
+
- Don't mix Pretendard Variable and legacy `'Apple SD Gothic Neo'` stacks in the same component context
|
|
139
|
+
- Don't override the 4px GNB bottom border or the sidebar red header — these are structural brand anchors
|
|
140
|
+
|
|
141
|
+
## 8. Responsive Behavior
|
|
142
|
+
|
|
143
|
+
- Desktop first layout; breakpoints defined at max-width 1280px and max-width 1100px (narrow content adjustments)
|
|
144
|
+
- At min-width 1600px: full-width hero image scales to cover with absolute centred positioning
|
|
145
|
+
- Hero image uses `transform: translate(-50%, -50%)` for centred cover on all viewport sizes
|
|
146
|
+
- Sticky navigation (`fp_nav`) transitions from absolute to fixed at 69px from top of viewport when user scrolls
|
|
147
|
+
- Footer and sidebar widths do not adapt below 1100px; mobile experience served by native apps
|
|
148
|
+
|
|
149
|
+
## 9. Agent Prompt Guide
|
|
150
|
+
|
|
151
|
+
Use these conventions when generating PAYCO-branded UI:
|
|
152
|
+
|
|
153
|
+
- Primary brand hex is `#FF2233`; use it for primary buttons, active nav items, and emphasis spans
|
|
154
|
+
- Body text hex is `#2a303a`; secondary text is `#666`; placeholder is `#999`
|
|
155
|
+
- Surface backgrounds: `#fff` (cards, page), `#f4f6fa` (section wash), `#f4f4f4` (info panels)
|
|
156
|
+
- Button large: 198×48px, border 1px solid matching background, text 18px/700, white text on brand red
|
|
157
|
+
- Input: height 32px, padding-left 20px, border 1px solid `#d4d4d4`, font 12px, text `#666`
|
|
158
|
+
- Disabled: background `#dadada`, border `#d2d2d2`, text `#aaacae`
|
|
159
|
+
- Corner radius: 8px for modern CTAs; 20px–100px for pill badges/tags; flat (0) for legacy button variants
|
|
160
|
+
- Font: NotoSans KR for headings/promo; Pretendard Variable for transactional screens; fall back to Apple SD Gothic Neo
|
|
161
|
+
- Transitions on nav indicator: `width 0.5s` ease
|
|
162
|
+
|
|
163
|
+
## 10. Voice & Tone
|
|
164
|
+
|
|
165
|
+
**Adjectives:** Practical, reassuring, familiar
|
|
166
|
+
|
|
167
|
+
| Dimension | Do | Don't |
|
|
168
|
+
|-----------|-----|-------|
|
|
169
|
+
| Register | Friendly and direct; speak like a trusted neighbour | Formal or distant — avoid corporate stiffness |
|
|
170
|
+
| Sentences | Short to mid-length; action-led | Long conditional clauses that delay the point |
|
|
171
|
+
| Vocabulary | Everyday Korean consumer language; minimal jargon | Finance-heavy terminology without explanation |
|
|
172
|
+
|
|
173
|
+
Voice samples (illustrative):
|
|
174
|
+
- "결제가 필요한 모든 순간, PAYCO 하세요." (Every moment you need to pay, PAYCO it.) — short, verb-forward, brand name as a verb
|
|
175
|
+
- "실속있는 포인트, 편리한 결제, 간편한 금융." (Practical points, convenient payment, simple finance.) — three-beat rhythm, benefit-first
|
|
176
|
+
- "일상의 빈틈을 채우다" (Fill the gaps in your daily life.) — poetic but grounded, positions PAYCO as an everyday companion
|
|
177
|
+
|
|
178
|
+
## 11. Brand Narrative
|
|
179
|
+
|
|
180
|
+
PAYCO launched in 2015 under NHN (formerly NHN Entertainment, the company behind Hangame and NAVER's early gaming arm), aiming to consolidate the fragmented Korean payment landscape into a single mobile wallet. Rather than targeting power users, the service centred on the mass consumer's everyday inconveniences — small purchases, loyalty point management, transit payments — and built trust by linking to users' existing bank accounts without requiring a new card.
|
|
181
|
+
|
|
182
|
+
The brand's current mission is captured in the homepage OG description: "실속있는 포인트, 편리한 결제, 간편한 금융, 안전한 전자문서함" — practical points, convenient payment, simple finance, secure digital document storage. This four-part mission reflects PAYCO's evolution from a pure payments app into a life-services super-app: the 페이코 라이프 (PAYCO Life) positioning introduced on the homepage signals that the brand sees itself as a utility layer across employment (office meal vouchers, campus IDs), commerce, and government-facing document exchange.
|
|
183
|
+
|
|
184
|
+
NHN PAYCO operates the service as a subsidiary of NHN, and the product's visual language — dominated by the vivid brand red, clean white surfaces, and tight typographic scale — deliberately contrasts with the clutter of legacy Korean fintech apps. The tagline "일상의 빈틈을 채우다" (Fill the gaps in your daily life) positions PAYCO as a background enabler: always available, never intrusive, and genuinely useful in the uncovered corners of everyday life.
|
|
185
|
+
|
|
186
|
+
## 12. Principles
|
|
187
|
+
|
|
188
|
+
1. **Simplicity over completeness.** Every flow should reduce friction to its minimum. *UI implication:* Prefer single-action screens; hide advanced options behind progressive disclosure rather than exposing all settings upfront.
|
|
189
|
+
|
|
190
|
+
2. **Trust through transparency.** Users are handling money and documents; every state must be communicated clearly. *UI implication:* Show explicit confirmation dialogs, unambiguous success screens, and honest error messages with recovery paths.
|
|
191
|
+
|
|
192
|
+
3. **Reliability at every touchpoint.** PAYCO must work first time, every time, for every demographic. *UI implication:* Design for the lowest-common-denominator device; never depend on hover states for critical information.
|
|
193
|
+
|
|
194
|
+
4. **Everyday relevance.** Benefits and points should feel attainable, not aspirational. *UI implication:* Surface accumulated points and savings prominently in personalised dashboards; use concrete numbers rather than percentages.
|
|
195
|
+
|
|
196
|
+
5. **Brand clarity under load.** In dense data screens (transaction lists, coupon grids), brand red must remain a signal, not decoration. *UI implication:* Reserve `#FF2233` for primary CTAs and alert states only; use neutral greys for all listing chrome.
|
|
197
|
+
|
|
198
|
+
## 13. Personas
|
|
199
|
+
|
|
200
|
+
*Illustrative — these are representative archetypes synthesised from PAYCO's stated service areas and public product positioning.*
|
|
201
|
+
|
|
202
|
+
*Illustrative Office Worker (지민, 28):* Uses PAYCO daily for the company meal-voucher (식권) at the office canteen, accumulates points on convenience-store runs, and occasionally pays transit fares. Values speed over discovery — expects the payment barcode to appear in under two taps.
|
|
203
|
+
|
|
204
|
+
*Illustrative University Student (소연, 22):* Relies on the campus PAYCO card (캠퍼스) for student ID and library access, uses the app to send small remittances to family, and redeems coupon notifications between lectures. Sensitive to data charges; expects the app to be fast on mid-range Android.
|
|
205
|
+
|
|
206
|
+
*Illustrative Self-Employed Merchant (영호, 45):* Accepts PAYCO at his neighbourhood bakery via QR code terminal; checks settlement summaries weekly. Values clear revenue totals and simple dispute resolution over any loyalty features.
|
|
207
|
+
|
|
208
|
+
*Illustrative Document-Conscious Parent (혜진, 38):* Stores electronic documents (전자문서) — insurance policies, government notices — in PAYCO's digital wallet. Cares about security assurances and needs to find documents quickly when contacted by an insurer.
|
|
209
|
+
|
|
210
|
+
## 14. States
|
|
211
|
+
|
|
212
|
+
- **Empty:** Grey centre-aligned text `#999` with a descriptive label; no brand-red elements to avoid false urgency in zero-data screens
|
|
213
|
+
- **Loading (spinner):** 22×22px animated sprite (`.sp_load`) absolutely centred on the container; background image from CDN; grey tones to avoid distraction
|
|
214
|
+
- **Loading (image):** 30×30px animated gif (`.img_loading`) centred in column headers or card panels; separate assets for dark and light panel backgrounds
|
|
215
|
+
- **Error (page-level):** Full-width white overlay with centred error illustration, 24px `#565960` heading, 13px `#666` body text, and a single recovery CTA button; brand-red used only in the recovery link (`.error .desc a`)
|
|
216
|
+
- **Error (inline):** `#FF2233` caution text (`.caution`, `.confirm`) at 12px directly below the affected field
|
|
217
|
+
- **Success:** Implicit via forward navigation; no dedicated success-screen pattern found in CSS — completion is signalled by routing to next step
|
|
218
|
+
- **Skeleton:** No explicit skeleton-loading CSS found; loading spinners serve this role
|
|
219
|
+
- **Disabled:** Background `#dadada`, border `#d2d2d2`, text `#aaacae`; cursor:default implied; interactive events suppressed
|
|
220
|
+
|
|
221
|
+
## 15. Motion & Easing
|
|
222
|
+
|
|
223
|
+
- **Navigation indicator:** `transition: width 0.5s` — the `fp_nav` active underline expands from 0 to 100% width; easing unspecified (browser default ease)
|
|
224
|
+
- **Transform usage:** `transform: translate(-50%, -50%)` for absolute centring of hero image and modals; `transform: translateY(-50%)` for vertically centred inline elements — all used for layout, not animation
|
|
225
|
+
- **Page scroll:** `fp_nav` transitions between absolute and fixed positioning on scroll; no explicit scroll-animation timing defined
|
|
226
|
+
- **General rule:** Transitions are minimal and functional; the brand does not use decorative motion. Duration scale: 0.5s for page-level indicator; shorter interactions implied by browser defaults
|
|
227
|
+
- **Easing intent:** Flat ease (browser default) for all measured transitions; no cubic-bezier custom curves found in the CSS bundle
|