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.
Files changed (40) hide show
  1. package/README.ko.md +12 -0
  2. package/README.md +12 -0
  3. package/data/reference-fingerprints.json +979 -402
  4. package/dist/bin/oh-my-design.js +4 -3
  5. package/dist/bin/oh-my-design.js.map +1 -1
  6. package/dist/{install-skills-UKEVE3KT.js → install-skills-6QFSN5BN.js} +98 -34
  7. package/dist/install-skills-6QFSN5BN.js.map +1 -0
  8. package/package.json +2 -1
  9. package/skills/claude-design/SKILL.md +385 -0
  10. package/skills/claude-design/references/claude-design-flow.md +425 -0
  11. package/skills/claude-design/references/codebase-analysis.md +373 -0
  12. package/skills/claude-design/scripts/analyze_codebase.py +1369 -0
  13. package/skills/claude-design/scripts/clickable_link.sh +48 -0
  14. package/skills/claude-design/scripts/collect_source.py +178 -0
  15. package/skills/claude-design/scripts/drive_claude_design.cjs +378 -0
  16. package/skills/claude-design/scripts/gather_references.py +437 -0
  17. package/web/references/bunjang/DESIGN.md +1 -1
  18. package/web/references/classting/DESIGN.md +251 -0
  19. package/web/references/coinone/DESIGN.md +218 -0
  20. package/web/references/devsisters/DESIGN.md +253 -0
  21. package/web/references/drnow/DESIGN.md +331 -0
  22. package/web/references/flo/DESIGN.md +306 -0
  23. package/web/references/fugle/DESIGN.md +250 -0
  24. package/web/references/gogolook/DESIGN.md +5 -0
  25. package/web/references/grip/DESIGN.md +250 -0
  26. package/web/references/hogangnono/DESIGN.md +308 -0
  27. package/web/references/hyundaicard/DESIGN.md +5 -0
  28. package/web/references/jkopay/DESIGN.md +249 -0
  29. package/web/references/jobkorea/DESIGN.md +310 -0
  30. package/web/references/krafton/DESIGN.md +230 -0
  31. package/web/references/laftel/DESIGN.md +253 -0
  32. package/web/references/lezhin/DESIGN.md +301 -0
  33. package/web/references/momoshop/DESIGN.md +279 -0
  34. package/web/references/mustit/DESIGN.md +282 -0
  35. package/web/references/payco/DESIGN.md +227 -0
  36. package/web/references/piccollage/DESIGN.md +277 -0
  37. package/web/references/riiid/DESIGN.md +228 -0
  38. package/web/references/trenbe/DESIGN.md +252 -0
  39. package/web/references/voicetube/DESIGN.md +227 -0
  40. 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