oh-my-design-cli 1.5.0 → 1.5.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/README.md +8 -8
- package/data/reference-fingerprints.json +1428 -523
- package/package.json +3 -3
- package/skills/omd-kr-writer/SKILL.md +1 -1
- package/web/references/17live/DESIGN.md +424 -0
- package/web/references/alipay/DESIGN.md +456 -0
- package/web/references/appier/DESIGN.md +420 -0
- package/web/references/bilibili/DESIGN.md +426 -0
- package/web/references/class101/DESIGN.md +433 -0
- package/web/references/cookpad/DESIGN.md +357 -0
- package/web/references/dji/DESIGN.md +416 -0
- package/web/references/gogoro/DESIGN.md +403 -0
- package/web/references/ichef/DESIGN.md +411 -0
- package/web/references/kakaopay/DESIGN.md +1 -1
- package/web/references/kakaot/DESIGN.md +454 -0
- package/web/references/kkday/DESIGN.md +423 -0
- package/web/references/meituan/DESIGN.md +424 -0
- package/web/references/millie/DESIGN.md +533 -0
- package/web/references/money-forward/DESIGN.md +401 -0
- package/web/references/myrealtrip/DESIGN.md +445 -0
- package/web/references/naverwebtoon/DESIGN.md +429 -0
- package/web/references/note/DESIGN.md +318 -0
- package/web/references/publy/DESIGN.md +511 -0
- package/web/references/smarthr/DESIGN.md +404 -0
- package/web/references/smartnews/DESIGN.md +331 -0
- package/web/references/spoon/DESIGN.md +446 -0
- package/web/references/tada/DESIGN.md +528 -0
- package/web/references/tossbank/DESIGN.md +519 -0
- package/web/references/triple/DESIGN.md +434 -0
- package/web/references/tumblbug/DESIGN.md +530 -0
- package/web/references/watcha/DESIGN.md +425 -0
- package/web/references/wavve/DESIGN.md +438 -0
- package/web/references/wconcept/DESIGN.md +511 -0
- package/web/references/xiaohongshu/DESIGN.md +423 -0
- package/web/references/yogiyo/DESIGN.md +465 -0
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: class101
|
|
3
|
+
name: Class101
|
|
4
|
+
country: KR
|
|
5
|
+
category: education
|
|
6
|
+
homepage: "https://class101.net"
|
|
7
|
+
primary_color: "#FF5D00"
|
|
8
|
+
logo:
|
|
9
|
+
type: favicon
|
|
10
|
+
slug: "https://www.google.com/s2/favicons?domain=class101.net&sz=128"
|
|
11
|
+
verified: "2026-05-19"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Design System Inspiration of Class101 (클래스101)
|
|
16
|
+
|
|
17
|
+
## 1. Visual Theme & Atmosphere
|
|
18
|
+
|
|
19
|
+
Class101 is Korea's leading online-class subscription platform — "세상의 모든 클래스를 하나의 구독으로" (every class in the world, in one subscription). It built its name on creator-led hobby and skill classes (drawing, baking, photography, side-business) and now runs a Netflix-style subscription (CLASS101+) over that catalog. The interface is a bright, warm, motivational learning storefront: a clean white canvas (`#FFFFFF`) wall-to-wall with photographic class thumbnails, organized into editorial rows, with a single energetic orange doing all the brand work.
|
|
20
|
+
|
|
21
|
+
That orange — observed live as `#FF5D00`, a vivid pure orange leaning red — is the emotional core. It's the color of enthusiasm, of "start now," of the spark of a new hobby. It marks brand accents, highlights, and key promotional moments. Notably, Class101's *primary action button* is not orange but a confident near-black (`#202020`) with a generous `12px` radius — the orange is reserved as the brand spark while black carries the workhorse "시작하기" CTA. This pairing (warm-orange brand identity + grounded black action) gives the platform an energetic-yet-trustworthy feel: motivating like a coach, dependable like a tool.
|
|
22
|
+
|
|
23
|
+
Typography is Pretendard Variable (`"Pretendard Variable", "Pretendard JP Variable", Pretendard, system-ui, ...`), the modern Korean product sans, rendered in near-black on white with a friendly gray scale. Geometry is soft and rounded — `12px` on buttons, `8px` on surfaces — and the layout is image-forward, letting class thumbnails and creator faces carry the warmth. The atmosphere is "your motivated Sunday morning" — bright, hopeful, and gently pushing you to make something.
|
|
24
|
+
|
|
25
|
+
**Key Characteristics:**
|
|
26
|
+
- Energetic pure-orange brand spark (`#FF5D00`) — accents, highlights, promotions
|
|
27
|
+
- Near-black primary CTA (`#202020`) with `12px` radius — grounded action vs. orange brand
|
|
28
|
+
- Clean white canvas (`#FFFFFF`) — image-forward class storefront
|
|
29
|
+
- Pretendard Variable type stack in near-black → gray on white
|
|
30
|
+
- Soft rounded geometry — `12px` buttons, `8px` surfaces
|
|
31
|
+
- Editorial class-thumbnail rows; creator faces and project photos carry warmth
|
|
32
|
+
- Motivational, coach-like tone — "make something" energy
|
|
33
|
+
|
|
34
|
+
## 2. Color Palette & Roles
|
|
35
|
+
|
|
36
|
+
Colors below are extracted from live computed styles on class101.net/ko (2026-05-19). Class101 does not publish a public token layer; values are observed.
|
|
37
|
+
|
|
38
|
+
### Brand
|
|
39
|
+
- **Class101 Orange** (`#FF5D00`): The brand spark — logo accent, highlights, key promotional moments, emphasis. Observed `rgb(255, 93, 0)`. *(Brief-provided value was `#FF5C00`; live observed `#FF5D00` — within one unit, use the live value.)*
|
|
40
|
+
- **Orange Tint** (`#FFF1E8`): Light orange wash for highlight backgrounds and benefit blocks.
|
|
41
|
+
|
|
42
|
+
### Action (Neutral)
|
|
43
|
+
- **Action Black** (`#202020`): Primary CTA background ("시작하기", "구독하기"). Observed `rgb(32, 32, 32)`, 12px radius, 50px tall. The grounded workhorse action.
|
|
44
|
+
- **Action Black Hover** (`#000000`): Pressed/hover for the action button.
|
|
45
|
+
|
|
46
|
+
### Surfaces
|
|
47
|
+
- **Canvas White** (`#FFFFFF`): Page background, card surfaces. Observed body bg.
|
|
48
|
+
- **Surface Gray** (`#F3F3F3`): Section bands, input fills, grouping surfaces. Observed `rgb(243, 243, 243)`.
|
|
49
|
+
- **Surface Raised** (`#FAFAFA`): Subtle raised panels.
|
|
50
|
+
|
|
51
|
+
### Text
|
|
52
|
+
- **Text Primary** (`#000000`): Headings, primary labels, class titles. Observed `rgb(0, 0, 0)`.
|
|
53
|
+
- **Text Body** (`#333333`): Body copy, descriptions.
|
|
54
|
+
- **Text Secondary** (`#767676`): Metadata, creator names, captions.
|
|
55
|
+
- **Text Tertiary** (`#AAAAAA`): Placeholder, disabled labels, fine print.
|
|
56
|
+
|
|
57
|
+
### Borders & Dividers
|
|
58
|
+
- **Border Default** (`#E5E5E5`): Card borders, dividers, input outlines.
|
|
59
|
+
- **Border Strong** (`#D1D1D1`): Active/emphasized borders.
|
|
60
|
+
|
|
61
|
+
### Semantic
|
|
62
|
+
- **Success** (`#22C55E`): Completion, enrolled, download done.
|
|
63
|
+
- **Error / Sale** (`#FF3B30`): Errors and (distinct from brand orange) hot sale tags.
|
|
64
|
+
- **Warning** (`#FAAD14`): Pending, attention.
|
|
65
|
+
|
|
66
|
+
## 3. Typography Rules
|
|
67
|
+
|
|
68
|
+
### Font Stack
|
|
69
|
+
```
|
|
70
|
+
"Pretendard Variable", "Pretendard JP Variable", "Pretendard JP", Pretendard, system-ui, -apple-system, Roboto, "Helvetica Neue", "Segoe UI", "Noto Sans KR", "Malgun Gothic", sans-serif
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Pretendard Variable leads (with JP variants for cross-market parity), the modern Korean product sans. All rendering is near-black to gray on white.
|
|
74
|
+
|
|
75
|
+
### Type Scale (observed home + listing surfaces)
|
|
76
|
+
|
|
77
|
+
| Role | Size | Weight | Line Height | Use |
|
|
78
|
+
|---|---|---|---|---|
|
|
79
|
+
| Hero | 32–40px | 700 | 1.25 | Home hero, campaign headlines |
|
|
80
|
+
| Section Heading | 22–24px | 700 | 1.35 | Category/row headers |
|
|
81
|
+
| Card Title | 16px | 600 | 1.4 | Class card titles |
|
|
82
|
+
| Body | 16px | 400 | 1.5 | Descriptions, marketing body (observed 16px/400) |
|
|
83
|
+
| CTA / Label | 16px | 500–600 | 1.4 | Buttons (observed 16px), nav |
|
|
84
|
+
| Creator / Meta | 14px | 400 | 1.4 | Creator names, class metadata |
|
|
85
|
+
| Caption | 12px | 400 | 1.4 | Badges, fine print |
|
|
86
|
+
|
|
87
|
+
### Conventions
|
|
88
|
+
- **700 for headlines, 600 for card titles, 400–500 for body/labels** — friendly, readable, not heavy.
|
|
89
|
+
- **Black headline, gray meta** — `#000000` → `#333333` → `#767676`.
|
|
90
|
+
- **Larger base body (16px)** than typical dense apps — this is a reading/learning surface, legibility-first.
|
|
91
|
+
- **Korean-primary** — Korean copy is first-class; English in titles only.
|
|
92
|
+
|
|
93
|
+
## 4. Component Stylings
|
|
94
|
+
|
|
95
|
+
### Buttons
|
|
96
|
+
|
|
97
|
+
**Primary CTA (시작하기 / 구독하기)**
|
|
98
|
+
- Background: `#202020`
|
|
99
|
+
- Text: `#FFFFFF`
|
|
100
|
+
- Border: none
|
|
101
|
+
- Radius: 12px
|
|
102
|
+
- Padding: 15px 14px
|
|
103
|
+
- Font: 16px / 600 / Pretendard
|
|
104
|
+
- Hover: background `#000000`
|
|
105
|
+
- Use: Primary action — observed 50px tall, near-black grounded button
|
|
106
|
+
|
|
107
|
+
**Brand CTA (promotional / highlight)**
|
|
108
|
+
- Background: `#FF5D00`
|
|
109
|
+
- Text: `#FFFFFF`
|
|
110
|
+
- Border: none
|
|
111
|
+
- Radius: 12px
|
|
112
|
+
- Padding: 15px 14px
|
|
113
|
+
- Font: 16px / 600 / Pretendard
|
|
114
|
+
- Use: High-energy promotional moments, "지금 구독하고 시작" campaigns — the orange spark
|
|
115
|
+
|
|
116
|
+
**Secondary / Outline**
|
|
117
|
+
- Background: `#FFFFFF`
|
|
118
|
+
- Text: `#202020`
|
|
119
|
+
- Border: 1px solid `#E5E5E5`
|
|
120
|
+
- Radius: 12px
|
|
121
|
+
- Padding: 15px 14px
|
|
122
|
+
- Font: 16px / 600 / Pretendard
|
|
123
|
+
- Use: Secondary action paired with the black primary
|
|
124
|
+
|
|
125
|
+
**Ghost / Text**
|
|
126
|
+
- Background: transparent
|
|
127
|
+
- Text: `#333333`
|
|
128
|
+
- Border: none
|
|
129
|
+
- Radius: 8px
|
|
130
|
+
- Font: 16px / 500 / Pretendard
|
|
131
|
+
- Use: Tertiary nav, "더보기"
|
|
132
|
+
|
|
133
|
+
### Inputs
|
|
134
|
+
|
|
135
|
+
**Search / Text Field**
|
|
136
|
+
- Background: `#F3F3F3`
|
|
137
|
+
- Text: `#000000`
|
|
138
|
+
- Border: none (filled) — or 1px solid `#E5E5E5` on white
|
|
139
|
+
- Radius: 8px
|
|
140
|
+
- Padding: 12px 16px
|
|
141
|
+
- Font: 16px / 400 / Pretendard
|
|
142
|
+
- Placeholder: `#AAAAAA`
|
|
143
|
+
- Focus: border `#202020`
|
|
144
|
+
- Use: Class search, form fields
|
|
145
|
+
|
|
146
|
+
### Cards
|
|
147
|
+
|
|
148
|
+
**Class Card**
|
|
149
|
+
- Background: `#FFFFFF`
|
|
150
|
+
- Border: none (shadowless on white) / `0 2px 8px rgba(0,0,0,0.06)` on hover
|
|
151
|
+
- Radius: 8px
|
|
152
|
+
- Padding: 0 (image-led) + 12px text region
|
|
153
|
+
- Use: The catalog atom — thumbnail top, title + creator + meta below
|
|
154
|
+
|
|
155
|
+
**Highlight / Benefit Card**
|
|
156
|
+
- Background: `#F3F3F3` (or `#FFF1E8` orange tint for benefit emphasis)
|
|
157
|
+
- Border: none
|
|
158
|
+
- Radius: 8px
|
|
159
|
+
- Padding: 24px
|
|
160
|
+
- Use: Subscription benefits, membership perks, value callouts
|
|
161
|
+
|
|
162
|
+
### Badges / Chips
|
|
163
|
+
|
|
164
|
+
**Category Chip**
|
|
165
|
+
- Background: `#F3F3F3`
|
|
166
|
+
- Text: `#333333`
|
|
167
|
+
- Border: none
|
|
168
|
+
- Radius: 999px
|
|
169
|
+
- Padding: 6px 14px
|
|
170
|
+
- Font: 13px / 500 / Pretendard
|
|
171
|
+
- Use: Category filters (드로잉 / 베이킹 / 사진 / 부업)
|
|
172
|
+
|
|
173
|
+
**Hot / New Badge**
|
|
174
|
+
- Background: `#FF5D00`
|
|
175
|
+
- Text: `#FFFFFF`
|
|
176
|
+
- Border: none
|
|
177
|
+
- Radius: 6px
|
|
178
|
+
- Padding: 2px 8px
|
|
179
|
+
- Font: 12px / 600 / Pretendard
|
|
180
|
+
- Use: "NEW", "인기", high-energy emphasis on cards
|
|
181
|
+
|
|
182
|
+
### Tabs / Nav
|
|
183
|
+
|
|
184
|
+
**Top Nav Item**
|
|
185
|
+
- Active text: `#000000` (weight 600)
|
|
186
|
+
- Inactive text: `#767676`
|
|
187
|
+
- Indicator: weight + color shift (minimal)
|
|
188
|
+
- Font: 16px / 500–600 / Pretendard
|
|
189
|
+
- Use: Category navigation
|
|
190
|
+
|
|
191
|
+
### Toasts
|
|
192
|
+
|
|
193
|
+
**Snackbar**
|
|
194
|
+
- Background: `#202020`
|
|
195
|
+
- Text: `#FFFFFF`
|
|
196
|
+
- Radius: 8px
|
|
197
|
+
- Padding: 12px 16px
|
|
198
|
+
- Use: "찜한 클래스에 추가했어요" transient feedback
|
|
199
|
+
|
|
200
|
+
### Dialogs
|
|
201
|
+
|
|
202
|
+
**Modal / Bottom Sheet**
|
|
203
|
+
- Background: `#FFFFFF`
|
|
204
|
+
- Text: `#000000`
|
|
205
|
+
- Radius: 16px (top corners on sheet)
|
|
206
|
+
- Padding: 24px
|
|
207
|
+
- Backdrop: `rgba(0,0,0,0.5)`
|
|
208
|
+
- Use: Login, plan selection, class preview
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
**Verified:** 2026-05-19
|
|
213
|
+
**Tier 1 sources:** class101.net/ko (live computed styles via Playwright — primary CTA `#202020` (rgb 32,32,32) / 12px radius / 16px / 50px tall / padding 15px 14px; brand orange `#FF5D00` (rgb 255,93,0) most-frequent saturated accent; surface gray `#F3F3F3` (rgb 243,243,243) / 8px; body bg white; font `"Pretendard Variable", "Pretendard JP Variable", Pretendard, system-ui, ...`).
|
|
214
|
+
**Tier 2 sources:** getdesign.md/class101 — not checked; styles.refero.design — not checked.
|
|
215
|
+
**Conflicts unresolved:** Brief-provided brand orange `#FF5C00` vs live observed `#FF5D00` — within 1 unit (rgb 92 vs 93 on green); live `#FF5D00` adopted as canonical. Black-vs-orange CTA: live primary action is black `#202020`; orange `#FF5D00` is the brand-spark accent — treated as distinct roles (action vs. brand), not a conflict.
|
|
216
|
+
|
|
217
|
+
## 5. Layout Principles
|
|
218
|
+
|
|
219
|
+
### Page Structure
|
|
220
|
+
- Top nav (~64px) over a centered max-width content column (~1200px).
|
|
221
|
+
- Home is a stack of horizontally-scrolling class rows by category and editorial theme.
|
|
222
|
+
|
|
223
|
+
### Spacing
|
|
224
|
+
- Base unit 8px; common values 4 / 8 / 12 / 16 / 24 / 32 / 40.
|
|
225
|
+
- Card gutter ~16px; section vertical gap ~40px.
|
|
226
|
+
- Page horizontal padding ~24px desktop, 16px mobile.
|
|
227
|
+
|
|
228
|
+
### Density
|
|
229
|
+
**Medium-density, image + reading forward.** Class cards pack 3–4 per row with prominent thumbnails. Class-detail pages are spacious and reading-optimized (curriculum, creator intro, reviews) — this is a learning surface, so legibility wins over density.
|
|
230
|
+
|
|
231
|
+
### Border Radius Scale
|
|
232
|
+
- Small (6px): badges
|
|
233
|
+
- Standard (8px): cards, inputs, ghost buttons
|
|
234
|
+
- Comfortable (12px): primary/brand buttons
|
|
235
|
+
- Large (16px): modals, sheets
|
|
236
|
+
- Pill (999px): category chips
|
|
237
|
+
|
|
238
|
+
## 6. Depth & Elevation
|
|
239
|
+
|
|
240
|
+
| Level | Treatment | Use |
|
|
241
|
+
|---|---|---|
|
|
242
|
+
| Flat | no shadow | Page bg, inline, cards at rest |
|
|
243
|
+
| Hover | `0 2px 8px rgba(0,0,0,0.06)` | Card hover lift |
|
|
244
|
+
| Floating | `0 4px 16px rgba(0,0,0,0.1)` | Dropdowns, sticky CTA |
|
|
245
|
+
| Modal | `0 8px 24px rgba(0,0,0,0.16)` | Dialogs, bottom sheets |
|
|
246
|
+
|
|
247
|
+
Shadows are light and neutral. Separation comes primarily from the white-card / `#F3F3F3`-band contrast rather than heavy elevation — the warmth comes from imagery and the orange spark, not from dramatic depth.
|
|
248
|
+
|
|
249
|
+
## 7. Do's and Don'ts
|
|
250
|
+
|
|
251
|
+
### Do
|
|
252
|
+
- Use orange `#FF5D00` as the brand spark — accents, highlights, hot/promo moments.
|
|
253
|
+
- Use black `#202020` for the everyday primary action button.
|
|
254
|
+
- Keep the canvas white; let class thumbnails and creator faces carry warmth.
|
|
255
|
+
- Use a larger 16px base body — this is a reading/learning surface.
|
|
256
|
+
- Use 12px button radius, 8px cards, 999px chips.
|
|
257
|
+
|
|
258
|
+
### Don't
|
|
259
|
+
- Don't make every primary button orange — orange is the spark, black is the action.
|
|
260
|
+
- Don't add heavy shadows; use white/`#F3F3F3` contrast for separation.
|
|
261
|
+
- Don't shrink body text below 16px on learning surfaces.
|
|
262
|
+
- Don't pair orange with sale-red carelessly — keep error/sale red (`#FF3B30`) distinct from brand orange.
|
|
263
|
+
- Don't crowd class-detail pages; curriculum and reviews need room.
|
|
264
|
+
|
|
265
|
+
## 8. Responsive Behavior
|
|
266
|
+
|
|
267
|
+
### Breakpoints
|
|
268
|
+
| Name | Width | Key Changes |
|
|
269
|
+
|---|---|---|
|
|
270
|
+
| Mobile | <768px | Single-column feed, ~1.5 cards peeking, bottom nav, full-width sticky CTA |
|
|
271
|
+
| Tablet | 768–1024px | 2–3 cards per row, condensed nav |
|
|
272
|
+
| Desktop | >1024px | 3–4 cards per row, full nav, ~1200px content |
|
|
273
|
+
|
|
274
|
+
### Touch & Media
|
|
275
|
+
- Carousels swipeable on touch; chevron-driven on desktop.
|
|
276
|
+
- Sticky bottom "구독하기" CTA with safe-area inset on class detail.
|
|
277
|
+
- Min 44px tap targets.
|
|
278
|
+
|
|
279
|
+
### Image Behavior
|
|
280
|
+
- Class thumbnails 16:9 or 4:3, `object-fit: cover`, lazy-loaded, 8px rounded top.
|
|
281
|
+
- Creator/hero images full-bleed with overlay text where used.
|
|
282
|
+
|
|
283
|
+
## 9. Agent Prompt Guide
|
|
284
|
+
|
|
285
|
+
### Quick Color Reference
|
|
286
|
+
- Brand spark: Orange `#FF5D00`; tint `#FFF1E8`
|
|
287
|
+
- Primary action: Black `#202020` (hover `#000000`)
|
|
288
|
+
- Canvas: White `#FFFFFF`; band `#F3F3F3`
|
|
289
|
+
- Text: `#000000` → `#333333` → `#767676` → `#AAAAAA`
|
|
290
|
+
- Border: `#E5E5E5`; focus `#202020`
|
|
291
|
+
- Success `#22C55E`; error/sale `#FF3B30`; warning `#FAAD14`
|
|
292
|
+
|
|
293
|
+
### Example Component Prompts
|
|
294
|
+
- "Build a Class101 primary button: bg `#202020`, white text 16px weight 600, 12px radius, padding 15px 14px, 50px tall. Hover bg `#000000`."
|
|
295
|
+
- "Create a Class101 brand/promo button: bg `#FF5D00`, white text 16px weight 600, 12px radius — for high-energy subscription campaigns only."
|
|
296
|
+
- "Create a Class101 class card: white bg, no border, 8px radius. Thumbnail top (16:9, cover, rounded 8px top). Below: title (16px weight 600 `#000000`), creator name (14px `#767676`), category chip (bg `#F3F3F3`, `#333333`, 999px). Hover shadow `0 2px 8px rgba(0,0,0,0.06)`."
|
|
297
|
+
- "Design a benefit card: bg `#FFF1E8` (orange tint), 8px radius, 24px padding, heading `#000000`, orange `#FF5D00` highlight number."
|
|
298
|
+
|
|
299
|
+
### Iteration Guide
|
|
300
|
+
1. Orange `#FF5D00` is the spark; black `#202020` is the action — don't swap their roles.
|
|
301
|
+
2. White canvas; thumbnails and creators carry warmth.
|
|
302
|
+
3. Pretendard Variable stack first.
|
|
303
|
+
4. 16px base body — legibility on a learning surface.
|
|
304
|
+
5. Radius: 12px buttons, 8px cards/inputs, 999px chips.
|
|
305
|
+
6. Light shadows; white/`#F3F3F3` contrast separates.
|
|
306
|
+
7. Keep sale-red distinct from brand orange.
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## 10. Voice & Tone
|
|
311
|
+
|
|
312
|
+
Class101 speaks like an encouraging mentor who believes you can actually make the thing — warm, motivating, second-person, action-oriented. The register is friendly-polite Korean with `~요`/`~어요` endings (`오늘부터 시작해볼까요?`, `찜한 클래스에 추가했어요`), the supportive-coach voice, never the cold institutional `~습니다` except in policy. The brand premise — *every class in one subscription* — and its hobby/skill roots mean the copy is about *starting*, *making*, *your* potential: it nudges without pressure and celebrates small progress. Korean is primary; English in class titles only.
|
|
313
|
+
|
|
314
|
+
| Context | Tone |
|
|
315
|
+
|---|---|
|
|
316
|
+
| CTAs | Encouraging Korean verb form (`시작하기`, `구독하기`, `수강하기`, `둘러보기`). |
|
|
317
|
+
| Discovery | Motivational, second person (`오늘부터 시작해볼까요?`, `당신을 위한 클래스`). |
|
|
318
|
+
| Success toasts | Past-tense soft ending (`찜한 클래스에 추가했어요`). No emoji on chrome. |
|
|
319
|
+
| Error messages | Blameless, specific, one action (`영상을 불러올 수 없어요. 잠시 후 다시 시도해 주세요`). Never `오류가 발생했습니다`. |
|
|
320
|
+
| Empty states | Warm + one action (`아직 수강 중인 클래스가 없어요. 관심 클래스를 찾아볼까요?`). |
|
|
321
|
+
| Progress / completion | Celebratory but calm (`첫 강의를 완료했어요!`). |
|
|
322
|
+
| Legal / billing | Formal `~합니다` register — the exception. |
|
|
323
|
+
|
|
324
|
+
**Forbidden phrases.** `오류가 발생했습니다` (generic error), `죄송하지만` on non-destructive failures, guilt/pressure framing on lapsed learners (`아직도 안 하셨나요?` style), superlatives (`최고의 강의`) on UI chrome, English-first strings on Korean surfaces, emoji on system toasts (emoji belongs to creator/community content).
|
|
325
|
+
|
|
326
|
+
**Voice samples.**
|
|
327
|
+
- `시작하기` — primary CTA, observed live on the `#202020` button. <!-- verified: class101.net/ko via Playwright 2026-05-19 -->
|
|
328
|
+
- `세상의 모든 클래스를 하나의 구독으로` — brand tagline (page title `CLASS101 | 세상의 모든 클래스를 하나의 구독으로`). <!-- verified: page title via Playwright 2026-05-19 -->
|
|
329
|
+
- `오늘부터 시작해볼까요?` — illustrative motivational discovery line. <!-- illustrative: not verified verbatim -->
|
|
330
|
+
- `찜한 클래스에 추가했어요` — illustrative wishlist toast, soft `~요`. <!-- illustrative: not verified verbatim -->
|
|
331
|
+
|
|
332
|
+
## 11. Brand Narrative
|
|
333
|
+
|
|
334
|
+
Class101 (클래스101) is operated by **Class101, Inc.**, founded by **Ko Ji-yoon (고지윤)** in 2018 (the company is registered with a US entity, 101 Inc., reflecting its global ambitions — footer business address in Wilmington, Delaware). It launched as an **online-class marketplace** where creators taught hobby and skill classes — drawing, calligraphy, baking, photography, side-business — often bundled with a *materials kit* shipped to the learner so they could actually make the project, not just watch a video. That "kit + class" model was the founding insight: learning a hobby should end in something you made with your hands. ([class101.net](https://class101.net/) — platform; footer corporate info)
|
|
335
|
+
|
|
336
|
+
Over time Class101 evolved into **CLASS101+**, a Netflix-style flat-rate subscription giving access to the whole catalog — "세상의 모든 클래스를 하나의 구독으로." The brand shifted from one-off class purchase to all-you-can-learn, and the design followed: an editorial, image-forward storefront optimized for *browsing and starting* rather than *buying a single SKU*. The energetic orange is the throughline — it's the color of the spark that makes someone press "시작하기" on a Sunday and actually begin.
|
|
337
|
+
|
|
338
|
+
What Class101 refuses: the dry, lecture-hall seriousness of academic e-learning (this is hobby and self-improvement, made joyful), the cold credential-mill aesthetic of certification platforms, and high-pressure "limited time only!" urgency that would betray the supportive-mentor tone. Class101 is a motivational learning storefront — bright, warm, and pushing you, gently, to make something.
|
|
339
|
+
|
|
340
|
+
## 12. Principles
|
|
341
|
+
|
|
342
|
+
1. **The spark vs. the action.** Orange `#FF5D00` is the emotional spark (brand, promo, highlight); black `#202020` is the dependable action button. *UI implication:* Don't make every primary button orange. Reserve orange for the moments that should feel energizing.
|
|
343
|
+
|
|
344
|
+
2. **Learning is starting.** Copy and discovery push toward beginning, not toward buying. *UI implication:* `시작하기`, `오늘부터 시작해볼까요?` — lead with the verb of doing.
|
|
345
|
+
|
|
346
|
+
3. **Legibility is a learning feature.** Base body is 16px; reading surfaces breathe. *UI implication:* Never shrink class-detail body below 16px; curriculum and reviews get room.
|
|
347
|
+
|
|
348
|
+
4. **Imagery carries the warmth.** Thumbnails and creator faces supply emotion; chrome stays near-monochrome. *UI implication:* White canvas, near-black text, gray meta. Don't compete with the creative work shown.
|
|
349
|
+
|
|
350
|
+
5. **Encourage, never pressure.** The tone is a supportive mentor, not an urgency-marketing engine. *UI implication:* No guilt framing, no fake scarcity. Celebrate progress (`첫 강의를 완료했어요!`), invite return warmly.
|
|
351
|
+
|
|
352
|
+
## 13. Personas
|
|
353
|
+
|
|
354
|
+
*Personas are fictional archetypes informed by publicly described Class101 user segments (Korean hobby and skill learners), not individual people.*
|
|
355
|
+
|
|
356
|
+
**서연 (Seo-yeon), 27, Seoul.** Office worker who wants a creative outlet. Subscribed to CLASS101+ for drawing and watercolor classes. Browses on weekends, picks by thumbnail and creator vibe. Loves that one subscription unlocks everything — low commitment to start any class.
|
|
357
|
+
|
|
358
|
+
**도윤 (Do-yun), 33, Incheon.** Exploring a side business (online store, content creation). Uses Class101 for practical skill classes — Photoshop, marketing, photography. Values clear curriculum and real creator credibility over hype. Will finish a class if the structure is clear.
|
|
359
|
+
|
|
360
|
+
**하은 (Ha-eun), 23, Busan.** University student learning a hobby (baking, calligraphy). Drawn in by the kit-and-class model — wants to actually make something. Motivated by progress tracking and the encouraging tone. Mobile-first, watches on commute.
|
|
361
|
+
|
|
362
|
+
## 14. States
|
|
363
|
+
|
|
364
|
+
| State | Treatment |
|
|
365
|
+
|---|---|
|
|
366
|
+
| **Empty (no enrolled classes)** | Warm line `#767676` (`아직 수강 중인 클래스가 없어요`) + black CTA (`클래스 둘러보기`). |
|
|
367
|
+
| **Empty (search no results)** | `#767676` caption (`검색 결과가 없어요. 다른 키워드로 찾아보세요`) + suggested categories. |
|
|
368
|
+
| **Loading (feed first paint)** | Card-shaped skeletons at `#F3F3F3` matching layout, subtle shimmer. |
|
|
369
|
+
| **Loading (video buffer)** | Centered ring spinner in `#FF5D00` over the dimmed player. |
|
|
370
|
+
| **Error (playback)** | Centered line `#000000` (`영상을 불러올 수 없어요. 잠시 후 다시 시도해 주세요`) + retry (outline) button. |
|
|
371
|
+
| **Error (inline field)** | Input border `#FF3B30`, caption below in red, one actionable sentence. |
|
|
372
|
+
| **Success (wishlist add)** | Snackbar `#202020` + white text (`찜한 클래스에 추가했어요`), 3s dismiss. |
|
|
373
|
+
| **Success (lesson complete)** | Inline celebration — green `#22C55E` check + `첫 강의를 완료했어요!` + progress bar advance. Calm, not confetti-spam. |
|
|
374
|
+
| **Skeleton** | `#F3F3F3` blocks at exact card dimensions, 8px radius, ~1.2s shimmer. |
|
|
375
|
+
| **Disabled (button)** | Black CTA drops to `rgba(32,32,32,0.4)`, white text; geometry stable. |
|
|
376
|
+
|
|
377
|
+
## 15. Motion & Easing
|
|
378
|
+
|
|
379
|
+
Class101's motion is friendly and encouraging — smooth reveals, gentle lifts, a small celebratory pop on progress. Energetic but never frantic.
|
|
380
|
+
|
|
381
|
+
**Durations:**
|
|
382
|
+
|
|
383
|
+
| Token | Value | Use |
|
|
384
|
+
|---|---|---|
|
|
385
|
+
| `motion-instant` | 0ms | Toggle/checkbox, heart fill |
|
|
386
|
+
| `motion-fast` | 150ms | Hover lift, button press, chip select |
|
|
387
|
+
| `motion-standard` | 250ms | Card hover, sheet open, tab switch |
|
|
388
|
+
| `motion-slow` | 350ms | Page-to-detail, hero crossfade, progress celebration |
|
|
389
|
+
|
|
390
|
+
**Easings:**
|
|
391
|
+
|
|
392
|
+
| Token | Curve | Use |
|
|
393
|
+
|---|---|---|
|
|
394
|
+
| `ease-standard` | `cubic-bezier(0.4, 0, 0.2, 1)` | Default — most motion |
|
|
395
|
+
| `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Sheets, modals, toasts appearing |
|
|
396
|
+
| `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
|
|
397
|
+
| `ease-spring` | `cubic-bezier(0.34, 1.56, 0.64, 1)` | Reserved — progress/completion celebration only |
|
|
398
|
+
|
|
399
|
+
**Spring stance.** Spring is licensed for one thing: the small pop on lesson-complete / progress milestones. Everywhere else (navigation, card hover, sheets) uses standard easing. The platform should feel encouraging at the moment of achievement and calm otherwise.
|
|
400
|
+
|
|
401
|
+
**Signature motions.**
|
|
402
|
+
1. **Card hover lift.** Card raises ~2px with `0 2px 8px rgba(0,0,0,0.06)` over `motion-standard / ease-standard`.
|
|
403
|
+
2. **Progress milestone.** On lesson complete, the green check draws and pops to ~1.15 over `motion-slow / ease-spring` while the progress bar fills with `ease-standard`. The one spring moment.
|
|
404
|
+
3. **Sheet/modal entrance.** Bottom sheet rises from `y+40px` over `motion-standard / ease-enter` with a backdrop fade to `rgba(0,0,0,0.5)`.
|
|
405
|
+
4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, lifts/slides/pops collapse to instant; skeletons go static `#F3F3F3`. No exceptions.
|
|
406
|
+
|
|
407
|
+
<!--
|
|
408
|
+
OmD v0.1 Sources — Philosophy Layer (sections 10–15)
|
|
409
|
+
|
|
410
|
+
Tier 1 (UI tokens, §1–9): class101.net/ko live computed styles via Playwright
|
|
411
|
+
MCP, 2026-05-19. Confirmed: primary CTA `#202020` (rgb 32,32,32) 12px radius
|
|
412
|
+
16px 50px tall padding 15px 14px; brand orange `#FF5D00` (rgb 255,93,0) the
|
|
413
|
+
most-frequent saturated accent; surface gray `#F3F3F3` (rgb 243,243,243) 8px;
|
|
414
|
+
white bg; font `"Pretendard Variable", "Pretendard JP Variable", Pretendard,
|
|
415
|
+
system-ui, ...`. Page title `CLASS101 | 세상의 모든 클래스를 하나의 구독으로`.
|
|
416
|
+
|
|
417
|
+
Brief brand orange `#FF5C00` vs live `#FF5D00` — within 1 unit; live adopted.
|
|
418
|
+
Black-vs-orange CTA treated as distinct roles (action vs brand spark).
|
|
419
|
+
|
|
420
|
+
Tier 2 (narrative): class101.net footer (corporate info, 101 Inc. Wilmington
|
|
421
|
+
DE address) + general public knowledge of Class101's kit+class origin and
|
|
422
|
+
CLASS101+ subscription pivot. Founder Ko Ji-yoon (고지윤), founded 2018 — widely
|
|
423
|
+
documented; not re-verified against primary Class101 press in this pass.
|
|
424
|
+
|
|
425
|
+
Voice samples: `시작하기` and tagline `세상의 모든 클래스를 하나의 구독으로`
|
|
426
|
+
verified live (button + page title). `오늘부터 시작해볼까요?`,
|
|
427
|
+
`찜한 클래스에 추가했어요`, `첫 강의를 완료했어요!`, empty/error copy are
|
|
428
|
+
ILLUSTRATIVE patterns following Class101's encouraging `~요` register; not
|
|
429
|
+
verbatim.
|
|
430
|
+
|
|
431
|
+
Personas (§13) are fictional archetypes. Any resemblance to specific users is
|
|
432
|
+
unintended.
|
|
433
|
+
-->
|