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.
Files changed (35) hide show
  1. package/README.md +8 -8
  2. package/data/reference-fingerprints.json +1428 -523
  3. package/package.json +3 -3
  4. package/skills/omd-kr-writer/SKILL.md +1 -1
  5. package/web/references/17live/DESIGN.md +424 -0
  6. package/web/references/alipay/DESIGN.md +456 -0
  7. package/web/references/appier/DESIGN.md +420 -0
  8. package/web/references/bilibili/DESIGN.md +426 -0
  9. package/web/references/class101/DESIGN.md +433 -0
  10. package/web/references/cookpad/DESIGN.md +357 -0
  11. package/web/references/dji/DESIGN.md +416 -0
  12. package/web/references/gogoro/DESIGN.md +403 -0
  13. package/web/references/ichef/DESIGN.md +411 -0
  14. package/web/references/kakaopay/DESIGN.md +1 -1
  15. package/web/references/kakaot/DESIGN.md +454 -0
  16. package/web/references/kkday/DESIGN.md +423 -0
  17. package/web/references/meituan/DESIGN.md +424 -0
  18. package/web/references/millie/DESIGN.md +533 -0
  19. package/web/references/money-forward/DESIGN.md +401 -0
  20. package/web/references/myrealtrip/DESIGN.md +445 -0
  21. package/web/references/naverwebtoon/DESIGN.md +429 -0
  22. package/web/references/note/DESIGN.md +318 -0
  23. package/web/references/publy/DESIGN.md +511 -0
  24. package/web/references/smarthr/DESIGN.md +404 -0
  25. package/web/references/smartnews/DESIGN.md +331 -0
  26. package/web/references/spoon/DESIGN.md +446 -0
  27. package/web/references/tada/DESIGN.md +528 -0
  28. package/web/references/tossbank/DESIGN.md +519 -0
  29. package/web/references/triple/DESIGN.md +434 -0
  30. package/web/references/tumblbug/DESIGN.md +530 -0
  31. package/web/references/watcha/DESIGN.md +425 -0
  32. package/web/references/wavve/DESIGN.md +438 -0
  33. package/web/references/wconcept/DESIGN.md +511 -0
  34. package/web/references/xiaohongshu/DESIGN.md +423 -0
  35. 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
+ -->