oh-my-design-cli 1.8.6 → 1.9.0
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/.claude/hooks/lib/preferences-parser.cjs +1 -0
- package/.claude/hooks/lib/preferences-writer.cjs +1 -0
- package/.claude/hooks/post-edit-watch.cjs +1 -0
- package/.claude/hooks/session-end-foldin.cjs +1 -0
- package/.claude/hooks/session-state-loader.cjs +1 -0
- package/.claude/hooks/skill-activation.cjs +1 -0
- package/.claude/settings.json +10 -1
- package/.github/assets/logo-bg.png +0 -0
- package/AGENTS.md +20 -1
- package/CHANGELOG.md +482 -0
- package/MIGRATION.md +103 -0
- package/README.ja.md +56 -19
- package/README.ko.md +47 -30
- package/README.md +48 -30
- package/README.zh-TW.md +59 -22
- package/agents/AGENT.md +8 -7
- package/agents/omd-codex-image.md +1 -1
- package/agents/omd-critic.md +6 -7
- package/agents/omd-designer-review.md +1 -1
- package/agents/omd-final-qa.md +1 -1
- package/agents/omd-humanizer.md +38 -0
- package/agents/omd-kr-writer.md +3 -4
- package/agents/omd-locale-adapter.md +12 -16
- package/agents/omd-master.md +24 -19
- package/agents/omd-microcopy.md +1 -1
- package/agents/omd-orchestrator.md +7 -8
- package/agents/omd-slop-auditor.md +31 -0
- package/agents/omd-ux-researcher.md +1 -1
- package/data/reference-fingerprints.json +2761 -85
- package/dist/bin/oh-my-design.js +16 -8
- package/dist/bin/oh-my-design.js.map +1 -1
- package/dist/chunk-UJIHCEYF.js +99 -0
- package/dist/chunk-UJIHCEYF.js.map +1 -0
- package/dist/doctor-LDWSFM3I.js +763 -0
- package/dist/doctor-LDWSFM3I.js.map +1 -0
- package/dist/install-skills-ZZFNJ2II.js +1120 -0
- package/dist/install-skills-ZZFNJ2II.js.map +1 -0
- package/docs/CLI_QUICKSTART.md +157 -0
- package/package.json +25 -4
- package/scripts/postinstall.cjs +5 -4
- package/skills/claude-design/SKILL.md +38 -14
- package/skills/claude-design/references/claude-design-flow.md +11 -11
- package/skills/claude-design/references/codebase-analysis.md +5 -4
- package/skills/omd-final-qa/SKILL.md +1 -1
- package/skills/omd-harness/SKILL.md +51 -50
- package/skills/omd-humanize/SKILL.md +116 -0
- package/skills/omd-humanize/agents/openai.yaml +4 -0
- package/skills/omd-humanize/references/locale-playbooks.md +102 -0
- package/skills/omd-humanize/references/sources.md +11 -0
- package/skills/omd-init/SKILL.md +18 -12
- package/skills/omd-locale-adapter/SKILL.md +58 -91
- package/skills/omd-orchestrator/SKILL.md +11 -5
- package/skills/omd-reference-capture/SKILL.md +80 -26
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
- package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
- package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
- package/skills/omd-slop-audit/SKILL.md +110 -0
- package/skills/omd-slop-audit/agents/openai.yaml +4 -0
- package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
- package/skills/omd-slop-audit/references/sources.md +24 -0
- package/web/references/104/DESIGN.md +354 -0
- package/web/references/11st/DESIGN.md +197 -316
- package/web/references/29cm/DESIGN.md +297 -393
- package/web/references/42dot/DESIGN.md +390 -0
- package/web/references/8percent/DESIGN.md +438 -0
- package/web/references/ably/DESIGN.md +267 -572
- package/web/references/acer/DESIGN.md +329 -0
- package/web/references/airbnb/DESIGN.md +219 -557
- package/web/references/airbridge/DESIGN.md +451 -0
- package/web/references/alipay/DESIGN.md +179 -420
- package/web/references/apple/DESIGN.md +224 -498
- package/web/references/asleep/DESIGN.md +402 -0
- package/web/references/au/DESIGN.md +334 -0
- package/web/references/autopedia/DESIGN.md +382 -0
- package/web/references/aws-cloudscape/DESIGN.md +241 -0
- package/web/references/baemin/DESIGN.md +332 -491
- package/web/references/banksalad/DESIGN.md +269 -180
- package/web/references/barogo/DESIGN.md +416 -0
- package/web/references/beusable/DESIGN.md +464 -0
- package/web/references/bigin/DESIGN.md +454 -0
- package/web/references/bilibili/DESIGN.md +206 -374
- package/web/references/bmw/DESIGN.md +162 -276
- package/web/references/brandi/DESIGN.md +184 -325
- package/web/references/buzzvil/DESIGN.md +457 -0
- package/web/references/cafe24/DESIGN.md +472 -0
- package/web/references/catchtable/DESIGN.md +219 -264
- package/web/references/cgv/DESIGN.md +317 -0
- package/web/references/channeltalk/DESIGN.md +210 -336
- package/web/references/china-airlines/DESIGN.md +291 -0
- package/web/references/cjonstyle/DESIGN.md +453 -0
- package/web/references/class101/DESIGN.md +168 -387
- package/web/references/classum/DESIGN.md +228 -203
- package/web/references/claude/DESIGN.md +242 -479
- package/web/references/clay/DESIGN.md +179 -377
- package/web/references/clickhouse/DESIGN.md +254 -343
- package/web/references/codeit/DESIGN.md +470 -0
- package/web/references/cohere/DESIGN.md +214 -324
- package/web/references/coinone/DESIGN.md +199 -179
- package/web/references/corca/DESIGN.md +414 -0
- package/web/references/coupang/DESIGN.md +205 -475
- package/web/references/cursor/DESIGN.md +240 -381
- package/web/references/dabang/DESIGN.md +248 -213
- package/web/references/dable/DESIGN.md +431 -0
- package/web/references/datarize/DESIGN.md +338 -0
- package/web/references/dealicious/DESIGN.md +402 -0
- package/web/references/drdiary/DESIGN.md +404 -0
- package/web/references/elastic/DESIGN.md +238 -0
- package/web/references/elevenlabs/DESIGN.md +183 -321
- package/web/references/elice/DESIGN.md +445 -0
- package/web/references/eslite/DESIGN.md +257 -0
- package/web/references/evaair/DESIGN.md +338 -0
- package/web/references/expo/DESIGN.md +238 -331
- package/web/references/familymart-tw/DESIGN.md +254 -0
- package/web/references/ferrari/DESIGN.md +160 -377
- package/web/references/figma/DESIGN.md +197 -451
- package/web/references/fitpet/DESIGN.md +445 -0
- package/web/references/flex/DESIGN.md +170 -253
- package/web/references/framer/DESIGN.md +197 -340
- package/web/references/freee/DESIGN.md +211 -533
- package/web/references/friendliai/DESIGN.md +431 -0
- package/web/references/frip/DESIGN.md +440 -0
- package/web/references/furiosaai/DESIGN.md +450 -0
- package/web/references/gangnamunni/DESIGN.md +154 -591
- package/web/references/gaudiolab/DESIGN.md +414 -0
- package/web/references/google/DESIGN.md +290 -398
- package/web/references/goorm/DESIGN.md +470 -0
- package/web/references/greencar/DESIGN.md +420 -0
- package/web/references/hackle/DESIGN.md +472 -0
- package/web/references/hashicorp/DESIGN.md +273 -318
- package/web/references/heydealer/DESIGN.md +429 -0
- package/web/references/humanscape/DESIGN.md +433 -0
- package/web/references/hwahae/DESIGN.md +453 -0
- package/web/references/hyundai/DESIGN.md +158 -368
- package/web/references/hyundaicard/DESIGN.md +171 -121
- package/web/references/ibm/DESIGN.md +227 -378
- package/web/references/idus/DESIGN.md +450 -0
- package/web/references/igaworks/DESIGN.md +437 -0
- package/web/references/inflearn/DESIGN.md +221 -366
- package/web/references/intuit/DESIGN.md +244 -0
- package/web/references/jandi/DESIGN.md +191 -291
- package/web/references/jobplanet/DESIGN.md +415 -0
- package/web/references/kakao/DESIGN.md +287 -475
- package/web/references/kakaobank/DESIGN.md +220 -521
- package/web/references/kakaogames/DESIGN.md +220 -0
- package/web/references/kakaopay/DESIGN.md +207 -526
- package/web/references/karrot/DESIGN.md +227 -251
- package/web/references/kb-kookmin/DESIGN.md +308 -0
- package/web/references/kbank/DESIGN.md +220 -175
- package/web/references/kcd/DESIGN.md +432 -0
- package/web/references/kmong/DESIGN.md +281 -356
- package/web/references/krds/DESIGN.md +245 -19
- package/web/references/kream/DESIGN.md +224 -359
- package/web/references/kurly/DESIGN.md +211 -533
- package/web/references/kyobobook/DESIGN.md +445 -0
- package/web/references/lablup/DESIGN.md +474 -0
- package/web/references/lamborghini/DESIGN.md +198 -360
- package/web/references/lemonbase/DESIGN.md +452 -0
- package/web/references/lguplus/DESIGN.md +259 -0
- package/web/references/likelion/DESIGN.md +283 -0
- package/web/references/line/DESIGN.md +396 -355
- package/web/references/linear.app/DESIGN.md +209 -562
- package/web/references/lotteon/DESIGN.md +386 -0
- package/web/references/lovable/DESIGN.md +255 -349
- package/web/references/makinarocks/DESIGN.md +242 -0
- package/web/references/maum-ai/DESIGN.md +423 -0
- package/web/references/medibloc/DESIGN.md +425 -0
- package/web/references/megabox/DESIGN.md +232 -0
- package/web/references/mercari/DESIGN.md +217 -434
- package/web/references/microsoft/DESIGN.md +234 -388
- package/web/references/mildang/DESIGN.md +411 -0
- package/web/references/millie/DESIGN.md +183 -504
- package/web/references/minimax/DESIGN.md +264 -322
- package/web/references/miricanvas/DESIGN.md +182 -355
- package/web/references/miro/DESIGN.md +234 -232
- package/web/references/mistral.ai/DESIGN.md +231 -314
- package/web/references/mixi/DESIGN.md +234 -0
- package/web/references/moin/DESIGN.md +445 -0
- package/web/references/mongodb/DESIGN.md +219 -316
- package/web/references/moreh/DESIGN.md +437 -0
- package/web/references/musinsa/DESIGN.md +184 -510
- package/web/references/mynavi/DESIGN.md +242 -0
- package/web/references/myrealtrip/DESIGN.md +169 -406
- package/web/references/naver/DESIGN.md +328 -499
- package/web/references/naverwebtoon/DESIGN.md +172 -395
- package/web/references/neosapience/DESIGN.md +441 -0
- package/web/references/nhn/DESIGN.md +169 -346
- package/web/references/nhncloud/DESIGN.md +185 -123
- package/web/references/nota/DESIGN.md +451 -0
- package/web/references/notion/DESIGN.md +271 -475
- package/web/references/nrise/DESIGN.md +417 -0
- package/web/references/ohouse/DESIGN.md +210 -549
- package/web/references/oliveyoung/DESIGN.md +217 -326
- package/web/references/ollama/DESIGN.md +241 -308
- package/web/references/onestore/DESIGN.md +248 -0
- package/web/references/palantir/DESIGN.md +256 -0
- package/web/references/panasonic/DESIGN.md +276 -0
- package/web/references/patternfly/DESIGN.md +259 -0
- package/web/references/payhere/DESIGN.md +438 -0
- package/web/references/pega/DESIGN.md +262 -0
- package/web/references/peoplefund/DESIGN.md +431 -0
- package/web/references/petfriends/DESIGN.md +428 -0
- package/web/references/pinkfong/DESIGN.md +199 -367
- package/web/references/pinterest/DESIGN.md +258 -308
- package/web/references/portone/DESIGN.md +446 -0
- package/web/references/poya/DESIGN.md +286 -0
- package/web/references/pozalabs/DESIGN.md +438 -0
- package/web/references/protopie/DESIGN.md +419 -0
- package/web/references/qraft/DESIGN.md +448 -0
- package/web/references/queenit/DESIGN.md +432 -0
- package/web/references/quotabook/DESIGN.md +449 -0
- package/web/references/rebellions/DESIGN.md +449 -0
- package/web/references/recruit/DESIGN.md +247 -0
- package/web/references/remember/DESIGN.md +202 -396
- package/web/references/resend/DESIGN.md +274 -348
- package/web/references/returnzero/DESIGN.md +460 -0
- package/web/references/sakura-internet/DESIGN.md +269 -0
- package/web/references/samsung/DESIGN.md +157 -359
- package/web/references/sandoll/DESIGN.md +445 -0
- package/web/references/sanity/DESIGN.md +241 -375
- package/web/references/saramin/DESIGN.md +465 -0
- package/web/references/scatterlab/DESIGN.md +412 -0
- package/web/references/selectstar/DESIGN.md +439 -0
- package/web/references/servicenow/DESIGN.md +289 -0
- package/web/references/shiftee/DESIGN.md +468 -0
- package/web/references/shinhanbank/DESIGN.md +161 -341
- package/web/references/shinhancard/DESIGN.md +208 -319
- package/web/references/sionic/DESIGN.md +454 -0
- package/web/references/sktelecom/DESIGN.md +310 -0
- package/web/references/socar/DESIGN.md +125 -32
- package/web/references/softbank/DESIGN.md +231 -0
- package/web/references/solapi/DESIGN.md +483 -0
- package/web/references/sony/DESIGN.md +234 -0
- package/web/references/soop/DESIGN.md +261 -0
- package/web/references/spacex/DESIGN.md +184 -323
- package/web/references/spotify/DESIGN.md +253 -394
- package/web/references/squeezebits/DESIGN.md +441 -0
- package/web/references/stayfolio/DESIGN.md +422 -0
- package/web/references/stripe/DESIGN.md +212 -491
- package/web/references/supabase/DESIGN.md +244 -316
- package/web/references/supertone/DESIGN.md +413 -0
- package/web/references/tabling/DESIGN.md +415 -0
- package/web/references/taishinbank/DESIGN.md +243 -0
- package/web/references/teamlab/DESIGN.md +240 -0
- package/web/references/teamsparta/DESIGN.md +472 -0
- package/web/references/tellingme/DESIGN.md +392 -0
- package/web/references/tesla/DESIGN.md +244 -427
- package/web/references/thsr/DESIGN.md +284 -0
- package/web/references/thumbtack/DESIGN.md +302 -0
- package/web/references/together.ai/DESIGN.md +257 -304
- package/web/references/toss/DESIGN.md +251 -593
- package/web/references/toss-securities/DESIGN.md +255 -178
- package/web/references/tossbank/DESIGN.md +195 -491
- package/web/references/toyota/DESIGN.md +238 -0
- package/web/references/tving/DESIGN.md +197 -245
- package/web/references/typed/DESIGN.md +413 -0
- package/web/references/uber/DESIGN.md +256 -333
- package/web/references/udn/DESIGN.md +250 -0
- package/web/references/upbit/DESIGN.md +145 -256
- package/web/references/upstage/DESIGN.md +211 -204
- package/web/references/uswds/DESIGN.md +287 -0
- package/web/references/vercel/DESIGN.md +236 -440
- package/web/references/vuno/DESIGN.md +413 -0
- package/web/references/wanted/DESIGN.md +215 -487
- package/web/references/weverse/DESIGN.md +437 -0
- package/web/references/wise/DESIGN.md +223 -231
- package/web/references/wisetracker/DESIGN.md +462 -0
- package/web/references/wooribank/DESIGN.md +245 -0
- package/web/references/yanolja/DESIGN.md +250 -419
- package/web/references/yeogiotte/DESIGN.md +235 -418
- package/web/references/zapier/DESIGN.md +256 -377
- package/web/references/zendesk/DESIGN.md +288 -0
- package/web/references/zigzag/DESIGN.md +200 -621
- package/dist/install-skills-7UUDOLG2.js +0 -734
- package/dist/install-skills-7UUDOLG2.js.map +0 -1
|
@@ -8,477 +8,258 @@ primary_color: "#FF5D00"
|
|
|
8
8
|
logo:
|
|
9
9
|
type: favicon
|
|
10
10
|
slug: "https://www.google.com/s2/favicons?domain=class101.net&sz=128"
|
|
11
|
-
verified: "2026-
|
|
11
|
+
verified: "2026-07-13"
|
|
12
12
|
omd: "0.1"
|
|
13
|
+
verification_v2:
|
|
14
|
+
schema: 2
|
|
15
|
+
checked: "2026-07-13"
|
|
16
|
+
surfaces:
|
|
17
|
+
- { id: home, kind: product, url: "https://class101.net/ko?viewMode=svod", inspected: "2026-07-12" }
|
|
18
|
+
- { id: giftcard, kind: legal-document, url: "https://class101.net/ko/docs/terms/giftcard?viewMode=svod", inspected: "2026-07-12" }
|
|
19
|
+
- { id: privacy, kind: legal-document, url: "https://class101.net/ko/docs/terms/privacy?viewMode=svod", inspected: "2026-07-12" }
|
|
20
|
+
sources:
|
|
21
|
+
- { id: home-live, kind: product-surface, url: "https://class101.net/ko?viewMode=svod", captured: "2026-07-12" }
|
|
22
|
+
- { id: giftcard-live, kind: product-surface, url: "https://class101.net/ko/docs/terms/giftcard?viewMode=svod", captured: "2026-07-12" }
|
|
23
|
+
- { id: privacy-live, kind: product-surface, url: "https://class101.net/ko/docs/terms/privacy?viewMode=svod", captured: "2026-07-12" }
|
|
24
|
+
- { id: subscription, kind: official-doc, url: "https://class101.net/ko/pages/subscription-year2", captured: "2026-07-13" }
|
|
25
|
+
- { id: creator, kind: official-doc, url: "https://creator.class101.net/", captured: "2026-07-13" }
|
|
26
|
+
- { id: pretendard, kind: license, url: "https://github.com/orioncactus/pretendard", captured: "2026-07-13" }
|
|
27
|
+
conflicts: []
|
|
28
|
+
claims:
|
|
29
|
+
"tokens.colors.brand": &live { surface_id: home, source_id: home-live, method: computed-style, captured: "2026-07-12" }
|
|
30
|
+
"tokens.colors.canvas": *live
|
|
31
|
+
"tokens.colors.foreground": *live
|
|
32
|
+
"tokens.colors.foreground-strong": *live
|
|
33
|
+
"tokens.colors.muted": *live
|
|
34
|
+
"tokens.components.legal-list-item.bg": &privacy { surface_id: privacy, source_id: privacy-live, method: computed-style, captured: "2026-07-12" }
|
|
35
|
+
"tokens.components.legal-list-item.fg": *privacy
|
|
36
|
+
"tokens.components.legal-list-item.font": *privacy
|
|
37
|
+
"tokens.components.legal-list-item.padding": *privacy
|
|
38
|
+
"tokens.components.legal-list-item.type": *privacy
|
|
39
|
+
"tokens.components.legal-list-item.use": *privacy
|
|
40
|
+
"tokens.rounded.lg": *live
|
|
41
|
+
"tokens.rounded.md": *live
|
|
42
|
+
"tokens.rounded.sm": *live
|
|
43
|
+
"tokens.spacing.lg": *live
|
|
44
|
+
"tokens.spacing.md": *live
|
|
45
|
+
"tokens.spacing.sm": *live
|
|
46
|
+
"tokens.spacing.xl": *live
|
|
47
|
+
"tokens.spacing.xs": *live
|
|
48
|
+
"tokens.typography.body.lineHeight": *live
|
|
49
|
+
"tokens.typography.body.size": *live
|
|
50
|
+
"tokens.typography.body.use": *live
|
|
51
|
+
"tokens.typography.body.weight": *live
|
|
52
|
+
"tokens.typography.control.lineHeight": *live
|
|
53
|
+
"tokens.typography.control.size": *live
|
|
54
|
+
"tokens.typography.control.use": *live
|
|
55
|
+
"tokens.typography.control.weight": *live
|
|
56
|
+
"tokens.typography.display.lineHeight": *live
|
|
57
|
+
"tokens.typography.display.size": *live
|
|
58
|
+
"tokens.typography.display.tracking": *live
|
|
59
|
+
"tokens.typography.display.use": *live
|
|
60
|
+
"tokens.typography.display.weight": *live
|
|
61
|
+
"tokens.typography.family.sans": *live
|
|
62
|
+
"tokens.typography.page-title.lineHeight": *live
|
|
63
|
+
"tokens.typography.page-title.size": *live
|
|
64
|
+
"tokens.typography.page-title.tracking": *live
|
|
65
|
+
"tokens.typography.page-title.use": *live
|
|
66
|
+
"tokens.typography.page-title.weight": *live
|
|
67
|
+
"tokens.typography.section-heading.lineHeight": *live
|
|
68
|
+
"tokens.typography.section-heading.size": *live
|
|
69
|
+
"tokens.typography.section-heading.use": *live
|
|
70
|
+
"tokens.typography.section-heading.weight": *live
|
|
13
71
|
tokens:
|
|
14
|
-
source:
|
|
15
|
-
extracted: "2026-
|
|
16
|
-
|
|
72
|
+
source: live-extract
|
|
73
|
+
extracted: "2026-07-13"
|
|
74
|
+
components_harvested: true
|
|
75
|
+
note: "Values are limited to the supplied 2026-07-12 capture. Product home, legal-document chrome, and unobserved states remain separate evidence domains."
|
|
17
76
|
colors:
|
|
18
|
-
primary: "#202020"
|
|
19
|
-
primary-hover: "#000000"
|
|
20
77
|
brand: "#FF5D00"
|
|
21
|
-
brand-tint: "#FFF1E8"
|
|
22
78
|
canvas: "#FFFFFF"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
body: "#333333"
|
|
27
|
-
muted: "#767676"
|
|
28
|
-
tertiary: "#AAAAAA"
|
|
29
|
-
hairline: "#E5E5E5"
|
|
30
|
-
border-strong: "#D1D1D1"
|
|
31
|
-
on-primary: "#FFFFFF"
|
|
32
|
-
success: "#22C55E"
|
|
33
|
-
error: "#FF3B30"
|
|
34
|
-
warning: "#FAAD14"
|
|
79
|
+
foreground: "#0C0C0C"
|
|
80
|
+
foreground-strong: "#000000"
|
|
81
|
+
muted: "#373737"
|
|
35
82
|
typography:
|
|
36
|
-
family:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
rounded: { sm: 6, md: 8, lg: 12, xl: 16, full: 999 }
|
|
46
|
-
shadow:
|
|
47
|
-
hover: "rgba(0,0,0,0.06) 0px 2px 8px"
|
|
48
|
-
floating: "rgba(0,0,0,0.1) 0px 4px 16px"
|
|
49
|
-
modal: "rgba(0,0,0,0.16) 0px 8px 24px"
|
|
50
|
-
components_harvested: true
|
|
83
|
+
family:
|
|
84
|
+
sans: "Pretendard Variable"
|
|
85
|
+
display: { size: 40, weight: 800, lineHeight: 1.25, tracking: "-1.12px", use: "Home display heading" }
|
|
86
|
+
page-title: { size: 28, weight: 700, lineHeight: 1.29, tracking: "-0.616px", use: "Observed h1" }
|
|
87
|
+
section-heading: { size: 26, weight: 700, lineHeight: 1.38, use: "Observed h2" }
|
|
88
|
+
body: { size: 18, weight: 400, lineHeight: 1.67, use: "Observed reading text" }
|
|
89
|
+
control: { size: 16, weight: 400, lineHeight: 1, use: "Observed home controls and tabs" }
|
|
90
|
+
spacing: { xs: 4, sm: 8, md: 12, lg: 24, xl: 36 }
|
|
91
|
+
rounded: { sm: 4, md: 8, lg: 12 }
|
|
51
92
|
components:
|
|
52
|
-
|
|
53
|
-
button-brand: { type: button, bg: "#FF5D00", fg: "#FFFFFF", radius: "12px", padding: "15px 14px", font: "16px / 600", use: "High-energy promo moments only — the orange spark" }
|
|
54
|
-
button-secondary: { type: button, bg: "#FFFFFF", fg: "#202020", border: "1px solid #E5E5E5", radius: "12px", padding: "15px 14px", font: "16px / 600", use: "Secondary action beside black primary" }
|
|
55
|
-
button-ghost: { type: button, bg: "transparent", fg: "#333333", radius: "8px", font: "16px / 500", use: "Tertiary nav, 더보기" }
|
|
56
|
-
input: { type: input, bg: "#F3F3F3", fg: "#000000", radius: "8px", padding: "12px 16px", font: "16px / 400", focus: "border #202020", use: "Class search, form fields — #AAAAAA placeholder" }
|
|
57
|
-
class-card: { type: card, bg: "#FFFFFF", radius: "8px", padding: "0 + 12px text region", shadow: "rgba(0,0,0,0.06) 0px 2px 8px on hover", use: "Catalog atom — thumbnail top, title + creator + meta below" }
|
|
58
|
-
benefit-card: { type: card, bg: "#FFF1E8", radius: "8px", padding: "24px", use: "Subscription benefits, membership perks, value callouts" }
|
|
59
|
-
chip: { type: badge, bg: "#F3F3F3", fg: "#333333", radius: "999px", padding: "6px 14px", font: "13px / 500", use: "Category filters — 드로잉 / 베이킹 / 사진" }
|
|
60
|
-
badge-hot: { type: badge, bg: "#FF5D00", fg: "#FFFFFF", radius: "6px", padding: "2px 8px", font: "12px / 600", use: "NEW / 인기 high-energy emphasis on cards" }
|
|
61
|
-
top-nav-item: { type: tab, fg: "#767676", active: "#000000 weight 600", font: "16px / 500", use: "Category navigation" }
|
|
62
|
-
snackbar: { type: toast, bg: "#202020", fg: "#FFFFFF", radius: "8px", padding: "12px 16px", use: "찜한 클래스에 추가했어요 transient feedback" }
|
|
63
|
-
modal: { type: dialog, bg: "#FFFFFF", fg: "#000000", radius: "16px", padding: "24px", shadow: "backdrop rgba(0,0,0,0.5)", use: "Login, plan selection, class preview — bottom sheet top corners" }
|
|
93
|
+
legal-list-item: { type: listItem, bg: "transparent", fg: "#0C0C0C", padding: "0px 0px 0px 24px", font: "16px / 400 / Pretendard Variable", use: "Observed official privacy-document list item only" }
|
|
64
94
|
---
|
|
65
95
|
|
|
66
96
|
# Design System Inspiration of Class101 (클래스101)
|
|
67
97
|
|
|
68
98
|
## 1. Visual Theme & Atmosphere
|
|
69
99
|
|
|
70
|
-
Class101 is
|
|
71
|
-
|
|
72
|
-
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.
|
|
73
|
-
|
|
74
|
-
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.
|
|
75
|
-
|
|
76
|
-
**Key Characteristics:**
|
|
77
|
-
- Energetic pure-orange brand spark (`#FF5D00`) — accents, highlights, promotions
|
|
78
|
-
- Near-black primary CTA (`#202020`) with `12px` radius — grounded action vs. orange brand
|
|
79
|
-
- Clean white canvas (`#FFFFFF`) — image-forward class storefront
|
|
80
|
-
- Pretendard Variable type stack in near-black → gray on white
|
|
81
|
-
- Soft rounded geometry — `12px` buttons, `8px` surfaces
|
|
82
|
-
- Editorial class-thumbnail rows; creator faces and project photos carry warmth
|
|
83
|
-
- Motivational, coach-like tone — "make something" energy
|
|
100
|
+
Class101 is an online learning marketplace and subscription service. Its public CLASS101+ material describes a subscription that lets members use a range of existing Class101 content, while the official creator centre presents classes and products across hobbies, work skills, and side projects. The captured Korean home is a white, typographic storefront: black and near-black text dominate, with a small `#FF5D00` orange accent appearing in home-title text. Its live web interface uses Pretendard Variable and compact, neutral controls rather than a captured public design-system token set. The current record deliberately separates that product surface from the terms and privacy pages, whose legal-document chrome is evidence for those pages only.
|
|
84
101
|
|
|
85
102
|
## 2. Color Palette & Roles
|
|
86
103
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
### Brand
|
|
90
|
-
- **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.)*
|
|
91
|
-
- **Orange Tint** (`#FFF1E8`): Light orange wash for highlight backgrounds and benefit blocks.
|
|
92
|
-
|
|
93
|
-
### Action (Neutral)
|
|
94
|
-
- **Action Black** (`#202020`): Primary CTA background ("시작하기", "구독하기"). Observed `rgb(32, 32, 32)`, 12px radius, 50px tall. The grounded workhorse action.
|
|
95
|
-
- **Action Black Hover** (`#000000`): Pressed/hover for the action button.
|
|
104
|
+
Class101 does not publish a public token specification in the sources reviewed. These are raw computed values from the supplied capture, not a reconstructed palette.
|
|
96
105
|
|
|
97
|
-
|
|
98
|
-
- **Canvas
|
|
99
|
-
- **
|
|
100
|
-
- **
|
|
106
|
+
- **Orange accent** (`#FF5D00`): observed on `home::[data-testid="title"]` text on the product home (3 medium-confidence occurrences). It is retained as the catalog primary color, but the capture does not establish a general CTA role.
|
|
107
|
+
- **Canvas** (`#FFFFFF`): observed body background across product home and both official documents (3 high-confidence occurrences).
|
|
108
|
+
- **Foreground** (`#0C0C0C`): high-confidence text on the product home and legal documents (498 occurrences); a `#000000` foreground is also widely observed in both domains.
|
|
109
|
+
- **Muted text** (`#373737`): observed text / border value (12 high-confidence occurrences); one home title sample resolves to `rgba(55, 55, 55, 0.8)`.
|
|
101
110
|
|
|
102
|
-
|
|
103
|
-
- **Text Primary** (`#000000`): Headings, primary labels, class titles. Observed `rgb(0, 0, 0)`.
|
|
104
|
-
- **Text Body** (`#333333`): Body copy, descriptions.
|
|
105
|
-
- **Text Secondary** (`#767676`): Metadata, creator names, captions.
|
|
106
|
-
- **Text Tertiary** (`#AAAAAA`): Placeholder, disabled labels, fine print.
|
|
107
|
-
|
|
108
|
-
### Borders & Dividers
|
|
109
|
-
- **Border Default** (`#E5E5E5`): Card borders, dividers, input outlines.
|
|
110
|
-
- **Border Strong** (`#D1D1D1`): Active/emphasized borders.
|
|
111
|
-
|
|
112
|
-
### Semantic
|
|
113
|
-
- **Success** (`#22C55E`): Completion, enrolled, download done.
|
|
114
|
-
- **Error / Sale** (`#FF3B30`): Errors and (distinct from brand orange) hot sale tags.
|
|
115
|
-
- **Warning** (`#FAAD14`): Pending, attention.
|
|
111
|
+
No success, error, warning, CTA-background, hover, or shadow color is promoted: the supplied evidence does not establish those roles.
|
|
116
112
|
|
|
117
113
|
## 3. Typography Rules
|
|
118
114
|
|
|
119
|
-
###
|
|
120
|
-
```
|
|
121
|
-
"Pretendard Variable", "Pretendard JP Variable", "Pretendard JP", Pretendard, system-ui, -apple-system, Roboto, "Helvetica Neue", "Segoe UI", "Noto Sans KR", "Malgun Gothic", sans-serif
|
|
122
|
-
```
|
|
115
|
+
### Evidence classes
|
|
123
116
|
|
|
124
|
-
Pretendard Variable
|
|
117
|
+
- **Live product and document use — confirmed.** `Pretendard Variable` is the computed family on the captured home and official legal-document pages. It has 753 captured uses across body, controls, headings, list items, tabs, and text, and a matching loaded `FontFace` set with 92 jsDelivr source URLs. This is the only family promoted to `tokens.typography.family.sans`.
|
|
118
|
+
- **Declared-only fallbacks — not promoted.** The computed stack also names `Pretendard JP Variable`, `Pretendard JP`, `Pretendard`, `system-ui`, platform UI fonts, Roboto, `Noto Sans KR`, and `Malgun Gothic`. The collector did not report a loaded match for these individual fallback faces, so they remain fallback declarations rather than UI-family claims.
|
|
119
|
+
- **Official distributed font asset and license.** Pretendard’s official project documents its variable dynamic subset under the family name `"Pretendard Variable"`; it is distributed under the SIL Open Font License. That source confirms the font asset and licence boundary, not a separate Class101-owned font.
|
|
125
120
|
|
|
126
|
-
###
|
|
121
|
+
### Observed type scale
|
|
127
122
|
|
|
128
|
-
| Role | Size | Weight | Line Height |
|
|
129
|
-
|
|
130
|
-
|
|
|
131
|
-
|
|
|
132
|
-
|
|
|
133
|
-
|
|
|
134
|
-
|
|
|
135
|
-
| Creator / Meta | 14px | 400 | 1.4 | Creator names, class metadata |
|
|
136
|
-
| Caption | 12px | 400 | 1.4 | Badges, fine print |
|
|
137
|
-
|
|
138
|
-
### Conventions
|
|
139
|
-
- **700 for headlines, 600 for card titles, 400–500 for body/labels** — friendly, readable, not heavy.
|
|
140
|
-
- **Black headline, gray meta** — `#000000` → `#333333` → `#767676`.
|
|
141
|
-
- **Larger base body (16px)** than typical dense apps — this is a reading/learning surface, legibility-first.
|
|
142
|
-
- **Korean-primary** — Korean copy is first-class; English in titles only.
|
|
123
|
+
| Role | Size | Weight | Line Height | Tracking | Provenance |
|
|
124
|
+
|---|---:|---:|---:|---:|---|
|
|
125
|
+
| Home display | 40px | 800 | 50px | -1.12px | `home::[data-testid="display"]` |
|
|
126
|
+
| H1 | 28px | 700 | 36px | -0.616px | captured h1 aggregate |
|
|
127
|
+
| H2 | 26px | 700 | 36px | normal | captured h2 aggregate |
|
|
128
|
+
| Reading body | 18px | 400 | 30px | normal | 269 captured occurrences |
|
|
129
|
+
| Control / tab | 16px | 400 | 16px / normal | normal | home control and tab samples |
|
|
143
130
|
|
|
144
131
|
## 4. Component Stylings
|
|
145
132
|
|
|
146
|
-
|
|
133
|
+
Only the following default-state components have selector and surface provenance. The collector recorded `interactionCount: 0`; hover, focus, pressed, disabled, error, dialog, toast, input, card, and selected-tab variants are not asserted.
|
|
147
134
|
|
|
148
|
-
|
|
149
|
-
- Background: `#202020`
|
|
150
|
-
- Text: `#FFFFFF`
|
|
151
|
-
- Border: none
|
|
152
|
-
- Radius: 12px
|
|
153
|
-
- Padding: 15px 14px
|
|
154
|
-
- Font: 16px / 600 / Pretendard
|
|
155
|
-
- Hover: background `#000000`
|
|
156
|
-
- Use: Primary action — observed 50px tall, near-black grounded button
|
|
157
|
-
|
|
158
|
-
**Brand CTA (promotional / highlight)**
|
|
159
|
-
- Background: `#FF5D00`
|
|
160
|
-
- Text: `#FFFFFF`
|
|
161
|
-
- Border: none
|
|
162
|
-
- Radius: 12px
|
|
163
|
-
- Padding: 15px 14px
|
|
164
|
-
- Font: 16px / 600 / Pretendard
|
|
165
|
-
- Use: High-energy promotional moments, "지금 구독하고 시작" campaigns — the orange spark
|
|
166
|
-
|
|
167
|
-
**Secondary / Outline**
|
|
168
|
-
- Background: `#FFFFFF`
|
|
169
|
-
- Text: `#202020`
|
|
170
|
-
- Border: 1px solid `#E5E5E5`
|
|
171
|
-
- Radius: 12px
|
|
172
|
-
- Padding: 15px 14px
|
|
173
|
-
- Font: 16px / 600 / Pretendard
|
|
174
|
-
- Use: Secondary action paired with the black primary
|
|
135
|
+
### Home navigation button
|
|
175
136
|
|
|
176
|
-
**
|
|
137
|
+
**Default — product home**
|
|
177
138
|
- Background: transparent
|
|
178
|
-
- Text: `#
|
|
139
|
+
- Text: `#000000`
|
|
179
140
|
- Border: none
|
|
180
141
|
- Radius: 8px
|
|
181
|
-
- Font: 16px /
|
|
182
|
-
- Use:
|
|
142
|
+
- Font: 16px / 400 / Pretendard Variable
|
|
143
|
+
- Use: Home control at `home::[data-omd-capture="6"]`; 108px × 38px observed
|
|
183
144
|
|
|
184
|
-
###
|
|
145
|
+
### Home outlined button
|
|
185
146
|
|
|
186
|
-
**
|
|
187
|
-
- Background:
|
|
147
|
+
**Default — product home**
|
|
148
|
+
- Background: transparent
|
|
188
149
|
- Text: `#000000`
|
|
189
|
-
- Border:
|
|
190
|
-
- Radius:
|
|
191
|
-
- Padding:
|
|
192
|
-
- Font: 16px / 400 / Pretendard
|
|
193
|
-
-
|
|
194
|
-
- Focus: border `#202020`
|
|
195
|
-
- Use: Class search, form fields
|
|
196
|
-
|
|
197
|
-
### Cards
|
|
198
|
-
|
|
199
|
-
**Class Card**
|
|
200
|
-
- Background: `#FFFFFF`
|
|
201
|
-
- Border: none (shadowless on white) / `0 2px 8px rgba(0,0,0,0.06)` on hover
|
|
202
|
-
- Radius: 8px
|
|
203
|
-
- Padding: 0 (image-led) + 12px text region
|
|
204
|
-
- Use: The catalog atom — thumbnail top, title + creator + meta below
|
|
205
|
-
|
|
206
|
-
**Highlight / Benefit Card**
|
|
207
|
-
- Background: `#F3F3F3` (or `#FFF1E8` orange tint for benefit emphasis)
|
|
208
|
-
- Border: none
|
|
209
|
-
- Radius: 8px
|
|
210
|
-
- Padding: 24px
|
|
211
|
-
- Use: Subscription benefits, membership perks, value callouts
|
|
150
|
+
- Border: 1px solid rgba(255,255,255,0.298)
|
|
151
|
+
- Radius: 12px
|
|
152
|
+
- Padding: 14px 13px
|
|
153
|
+
- Font: 16px / 400 / Pretendard Variable
|
|
154
|
+
- Use: Home button at `home::[data-omd-capture="28"]`; 240px × 50px observed
|
|
212
155
|
|
|
213
|
-
###
|
|
156
|
+
### Home tab wrapper
|
|
214
157
|
|
|
215
|
-
**
|
|
216
|
-
- Background:
|
|
217
|
-
- Text: `#
|
|
218
|
-
- Border: none
|
|
219
|
-
- Radius: 999px
|
|
220
|
-
- Padding: 6px 14px
|
|
221
|
-
- Font: 13px / 500 / Pretendard
|
|
222
|
-
- Use: Category filters (드로잉 / 베이킹 / 사진 / 부업)
|
|
223
|
-
|
|
224
|
-
**Hot / New Badge**
|
|
225
|
-
- Background: `#FF5D00`
|
|
226
|
-
- Text: `#FFFFFF`
|
|
158
|
+
**Unselected — product home**
|
|
159
|
+
- Background: transparent
|
|
160
|
+
- Text: `#000000`
|
|
227
161
|
- Border: none
|
|
228
|
-
- Radius:
|
|
229
|
-
-
|
|
230
|
-
-
|
|
231
|
-
- Use: "NEW", "인기", high-energy emphasis on cards
|
|
232
|
-
|
|
233
|
-
### Tabs / Nav
|
|
162
|
+
- Radius: 0px
|
|
163
|
+
- Font: 16px / 400 / Pretendard Variable
|
|
164
|
+
- Use: `div[role="tab"]` at `home::[data-omd-capture="7"]`; `aria-selected="false"`, 97px × 44px observed
|
|
234
165
|
|
|
235
|
-
|
|
236
|
-
- Active text: `#000000` (weight 600)
|
|
237
|
-
- Inactive text: `#767676`
|
|
238
|
-
- Indicator: weight + color shift (minimal)
|
|
239
|
-
- Font: 16px / 500–600 / Pretendard
|
|
240
|
-
- Use: Category navigation
|
|
166
|
+
### Legal-document tab
|
|
241
167
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
-
|
|
246
|
-
-
|
|
247
|
-
-
|
|
248
|
-
-
|
|
249
|
-
- Use: "
|
|
168
|
+
**Observed — official documentation chrome**
|
|
169
|
+
- Background: transparent
|
|
170
|
+
- Text: `#000000`
|
|
171
|
+
- Border: 0px 0px 1px rgb(0,0,0)
|
|
172
|
+
- Radius: 0px
|
|
173
|
+
- Padding: 12px 0px 10px
|
|
174
|
+
- Font: 16px / 400 / Pretendard Variable
|
|
175
|
+
- Use: `button[role="tab"]` at `surface-2::[data-omd-capture="0"]`; 61px × 45px observed. This is document chrome, not evidence for product navigation.
|
|
250
176
|
|
|
251
|
-
###
|
|
177
|
+
### Legal-document list item
|
|
252
178
|
|
|
253
|
-
**
|
|
254
|
-
- Background:
|
|
255
|
-
- Text: `#
|
|
256
|
-
-
|
|
257
|
-
- Padding: 24px
|
|
258
|
-
-
|
|
259
|
-
- Use:
|
|
179
|
+
**Default — privacy document**
|
|
180
|
+
- Background: transparent
|
|
181
|
+
- Text: `#0C0C0C`
|
|
182
|
+
- Border: none
|
|
183
|
+
- Padding: 0px 0px 0px 24px
|
|
184
|
+
- Font: 16px / 400 / Pretendard Variable
|
|
185
|
+
- Use: `surface-3::li`; 28px line height and 4px bottom margin observed
|
|
260
186
|
|
|
261
187
|
---
|
|
188
|
+
**Verified:** 2026-07-13
|
|
189
|
+
**Tier 1 sources:** https://class101.net/ko?viewMode=svod (captured product home); https://class101.net/ko/docs/terms/giftcard?viewMode=svod and https://class101.net/ko/docs/terms/privacy?viewMode=svod (captured official-document chrome); https://class101.net/ko/pages/subscription-year2; https://creator.class101.net/; https://github.com/orioncactus/pretendard
|
|
190
|
+
**Tier 2 sources:** https://getdesign.md/class101 (attempted; unavailable to built-in web fetch and no indexed record returned); https://styles.refero.design/?q=class101 (attempted; unavailable to built-in web fetch and no indexed record returned)
|
|
191
|
+
**Conflicts unresolved:** none
|
|
262
192
|
|
|
263
|
-
|
|
264
|
-
**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, ...`).
|
|
265
|
-
**Tier 2 sources:** getdesign.md/class101 — not checked; styles.refero.design — not checked.
|
|
266
|
-
**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.
|
|
193
|
+
Legacy black `#202020` CTA, its hover, semantic palette, shadows, cards, inputs, snackbar, dialog, responsive rules, states, and motion were not supported by the supplied 2026-07-12 capture and were removed rather than promoted. Tier 2 was unavailable and supplied no contrary claim.
|
|
267
194
|
|
|
268
195
|
## 5. Layout Principles
|
|
269
196
|
|
|
270
|
-
|
|
271
|
-
- Top nav (~64px) over a centered max-width content column (~1200px).
|
|
272
|
-
- Home is a stack of horizontally-scrolling class rows by category and editorial theme.
|
|
273
|
-
|
|
274
|
-
### Spacing
|
|
275
|
-
- Base unit 8px; common values 4 / 8 / 12 / 16 / 24 / 32 / 40.
|
|
276
|
-
- Card gutter ~16px; section vertical gap ~40px.
|
|
277
|
-
- Page horizontal padding ~24px desktop, 16px mobile.
|
|
278
|
-
|
|
279
|
-
### Density
|
|
280
|
-
**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.
|
|
281
|
-
|
|
282
|
-
### Border Radius Scale
|
|
283
|
-
- Small (6px): badges
|
|
284
|
-
- Standard (8px): cards, inputs, ghost buttons
|
|
285
|
-
- Comfortable (12px): primary/brand buttons
|
|
286
|
-
- Large (16px): modals, sheets
|
|
287
|
-
- Pill (999px): category chips
|
|
197
|
+
The supplied product-home capture is desktop `1440×900` and records a white body extending 6,121px vertically. It contains 16px controls/tabs and a 40px display heading. It does not establish a grid, max width, carousel behavior, card ratio, mobile layout, or sticky behavior; those remain unresolved.
|
|
288
198
|
|
|
289
199
|
## 6. Depth & Elevation
|
|
290
200
|
|
|
291
|
-
|
|
292
|
-
|---|---|---|
|
|
293
|
-
| Flat | no shadow | Page bg, inline, cards at rest |
|
|
294
|
-
| Hover | `0 2px 8px rgba(0,0,0,0.06)` | Card hover lift |
|
|
295
|
-
| Floating | `0 4px 16px rgba(0,0,0,0.1)` | Dropdowns, sticky CTA |
|
|
296
|
-
| Modal | `0 8px 24px rgba(0,0,0,0.16)` | Dialogs, bottom sheets |
|
|
297
|
-
|
|
298
|
-
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.
|
|
201
|
+
The representative captured controls and list items have `box-shadow: none`. No elevation scale is promoted; unobserved hover and overlay states are omitted.
|
|
299
202
|
|
|
300
203
|
## 7. Do's and Don'ts
|
|
301
204
|
|
|
302
205
|
### Do
|
|
303
|
-
- Use orange `#FF5D00` as the brand spark — accents, highlights, hot/promo moments.
|
|
304
|
-
- Use black `#202020` for the everyday primary action button.
|
|
305
|
-
- Keep the canvas white; let class thumbnails and creator faces carry warmth.
|
|
306
|
-
- Use a larger 16px base body — this is a reading/learning surface.
|
|
307
|
-
- Use 12px button radius, 8px cards, 999px chips.
|
|
308
206
|
|
|
309
|
-
|
|
310
|
-
-
|
|
311
|
-
-
|
|
312
|
-
- Don't shrink body text below 16px on learning surfaces.
|
|
313
|
-
- Don't pair orange with sale-red carelessly — keep error/sale red (`#FF3B30`) distinct from brand orange.
|
|
314
|
-
- Don't crowd class-detail pages; curriculum and reviews need room.
|
|
207
|
+
- Reuse the confirmed Pretendard Variable family when reproducing the captured web surface.
|
|
208
|
+
- Keep product-home evidence distinct from legal-document chrome.
|
|
209
|
+
- Treat `#FF5D00` as an observed orange title accent, not as evidence for an all-purpose action color.
|
|
315
210
|
|
|
316
|
-
|
|
211
|
+
### Don't
|
|
317
212
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
| Mobile | <768px | Single-column feed, ~1.5 cards peeking, bottom nav, full-width sticky CTA |
|
|
322
|
-
| Tablet | 768–1024px | 2–3 cards per row, condensed nav |
|
|
323
|
-
| Desktop | >1024px | 3–4 cards per row, full nav, ~1200px content |
|
|
213
|
+
- Don't restore the legacy black CTA, orange CTA, semantic state colors, or hover shadows without new surface evidence.
|
|
214
|
+
- Don't treat declared system-font fallbacks as loaded Class101 font assets.
|
|
215
|
+
- Don't infer interaction variants from this capture: it recorded no interactions.
|
|
324
216
|
|
|
325
|
-
|
|
326
|
-
- Carousels swipeable on touch; chevron-driven on desktop.
|
|
327
|
-
- Sticky bottom "구독하기" CTA with safe-area inset on class detail.
|
|
328
|
-
- Min 44px tap targets.
|
|
217
|
+
## 8. Responsive Behavior
|
|
329
218
|
|
|
330
|
-
|
|
331
|
-
- Class thumbnails 16:9 or 4:3, `object-fit: cover`, lazy-loaded, 8px rounded top.
|
|
332
|
-
- Creator/hero images full-bleed with overlay text where used.
|
|
219
|
+
No responsive transition was captured. The only recorded viewport is desktop `1440×900`; mobile, tablet, touch, safe-area, and media behavior are unresolved.
|
|
333
220
|
|
|
334
221
|
## 9. Agent Prompt Guide
|
|
335
222
|
|
|
336
|
-
###
|
|
337
|
-
- Brand spark: Orange `#FF5D00`; tint `#FFF1E8`
|
|
338
|
-
- Primary action: Black `#202020` (hover `#000000`)
|
|
339
|
-
- Canvas: White `#FFFFFF`; band `#F3F3F3`
|
|
340
|
-
- Text: `#000000` → `#333333` → `#767676` → `#AAAAAA`
|
|
341
|
-
- Border: `#E5E5E5`; focus `#202020`
|
|
342
|
-
- Success `#22C55E`; error/sale `#FF3B30`; warning `#FAAD14`
|
|
343
|
-
|
|
344
|
-
### Example Component Prompts
|
|
345
|
-
- "Build a Class101 primary button: bg `#202020`, white text 16px weight 600, 12px radius, padding 15px 14px, 50px tall. Hover bg `#000000`."
|
|
346
|
-
- "Create a Class101 brand/promo button: bg `#FF5D00`, white text 16px weight 600, 12px radius — for high-energy subscription campaigns only."
|
|
347
|
-
- "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)`."
|
|
348
|
-
- "Design a benefit card: bg `#FFF1E8` (orange tint), 8px radius, 24px padding, heading `#000000`, orange `#FF5D00` highlight number."
|
|
349
|
-
|
|
350
|
-
### Iteration Guide
|
|
351
|
-
1. Orange `#FF5D00` is the spark; black `#202020` is the action — don't swap their roles.
|
|
352
|
-
2. White canvas; thumbnails and creators carry warmth.
|
|
353
|
-
3. Pretendard Variable stack first.
|
|
354
|
-
4. 16px base body — legibility on a learning surface.
|
|
355
|
-
5. Radius: 12px buttons, 8px cards/inputs, 999px chips.
|
|
356
|
-
6. Light shadows; white/`#F3F3F3` contrast separates.
|
|
357
|
-
7. Keep sale-red distinct from brand orange.
|
|
223
|
+
### Verified prompt fragments
|
|
358
224
|
|
|
359
|
-
|
|
225
|
+
- "Use `Pretendard Variable`; the captured home resolves it through a loaded FontFaceSet match."
|
|
226
|
+
- "Create a neutral home navigation button: transparent background, `#000000` text, no border, 8px radius, 16px / 400, 38px observed height."
|
|
227
|
+
- "Create the observed home outlined button only when its context warrants it: transparent background, `#000000` text, 1px `rgba(255,255,255,0.298)` border, 12px radius, 14px 13px padding, 50px observed height."
|
|
228
|
+
|
|
229
|
+
Do not request unverified cards, inputs, toasts, modal sheets, hover states, responsive behavior, or semantic colors as though they were observed Class101 specifications.
|
|
360
230
|
|
|
361
231
|
## 10. Voice & Tone
|
|
362
232
|
|
|
363
|
-
|
|
233
|
+
The reviewed official material supports a creator-facing invitation to begin: the creator centre says "여러분이 사랑하는 일로 더 나은 세상을 만들어 보세요" and presents the English line "Live the way you love." It also addresses creators in a warm polite Korean register. That is insufficient to prescribe a universal consumer-product voice, error style, or system-message rules.
|
|
364
234
|
|
|
365
|
-
|
|
|
235
|
+
| Evidence | Use boundary |
|
|
366
236
|
|---|---|
|
|
367
|
-
|
|
|
368
|
-
|
|
|
369
|
-
|
|
|
370
|
-
| Error messages | Blameless, specific, one action (`영상을 불러올 수 없어요. 잠시 후 다시 시도해 주세요`). Never `오류가 발생했습니다`. |
|
|
371
|
-
| Empty states | Warm + one action (`아직 수강 중인 클래스가 없어요. 관심 클래스를 찾아볼까요?`). |
|
|
372
|
-
| Progress / completion | Celebratory but calm (`첫 강의를 완료했어요!`). |
|
|
373
|
-
| Legal / billing | Formal `~합니다` register — the exception. |
|
|
374
|
-
|
|
375
|
-
**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).
|
|
376
|
-
|
|
377
|
-
**Voice samples.**
|
|
378
|
-
- `시작하기` — primary CTA, observed live on the `#202020` button. <!-- verified: class101.net/ko via Playwright 2026-05-19 -->
|
|
379
|
-
- `세상의 모든 클래스를 하나의 구독으로` — brand tagline (page title `CLASS101 | 세상의 모든 클래스를 하나의 구독으로`). <!-- verified: page title via Playwright 2026-05-19 -->
|
|
380
|
-
- `오늘부터 시작해볼까요?` — illustrative motivational discovery line. <!-- illustrative: not verified verbatim -->
|
|
381
|
-
- `찜한 클래스에 추가했어요` — illustrative wishlist toast, soft `~요`. <!-- illustrative: not verified verbatim -->
|
|
237
|
+
| "여러분이 사랑하는 일로 더 나은 세상을 만들어 보세요" | Official creator-centre headline; creator acquisition context. |
|
|
238
|
+
| "세상을 바꾸는 크리에이터로서의 여정, 클래스101에서 시작하세요" | Official creator-centre headline; creator journey context. |
|
|
239
|
+
| "Live the way you love" | Official creator-centre mission line; do not treat as a universal UI string. |
|
|
382
240
|
|
|
383
241
|
## 11. Brand Narrative
|
|
384
242
|
|
|
385
|
-
Class101
|
|
386
|
-
|
|
387
|
-
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.
|
|
243
|
+
Class101’s official creator centre frames the service as a place where people can begin a creator journey and publish classes or products spanning hobbies, work skills, and side projects. It also says that completed classes can be translated to meet class members globally. The official CLASS101+ page describes the consumer offering as a subscription that provides access to varied existing Class101 classes. Together, these first-party surfaces establish a two-sided learning marketplace: an audience discovers and subscribes to learning content, while creators receive onboarding and publishing support.
|
|
388
244
|
|
|
389
|
-
|
|
245
|
+
The reviewed sources do not establish founding history, named founders, rebrand chronology, or a comprehensive corporate manifesto. Those claims are omitted rather than reconstructed from secondary reporting.
|
|
390
246
|
|
|
391
247
|
## 12. Principles
|
|
392
248
|
|
|
393
|
-
1. **
|
|
249
|
+
1. **Creator participation is a first-party stated focus.** The creator centre invites people to begin their creator journey with Class101. *UI implication:* creator-centre language belongs to creator acquisition, not automatically to learner checkout or account flows.
|
|
394
250
|
|
|
395
|
-
2. **
|
|
251
|
+
2. **The catalogue spans multiple learning and product categories.** The creator centre names hobby, job, and side-project categories. *UI implication:* category navigation may be evidenced separately from generic marketing claims; this capture only confirms neutral 16px home controls.
|
|
396
252
|
|
|
397
|
-
3. **
|
|
398
|
-
|
|
399
|
-
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.
|
|
400
|
-
|
|
401
|
-
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.
|
|
253
|
+
3. **CLASS101+ is a subscription offering.** The official subscription page describes access to a range of existing Class101 content. *UI implication:* subscription-specific benefits or purchase states require their own observed surface evidence.
|
|
402
254
|
|
|
403
255
|
## 13. Personas
|
|
404
256
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
**서연 (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.
|
|
408
|
-
|
|
409
|
-
**도윤 (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.
|
|
410
|
-
|
|
411
|
-
**하은 (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.
|
|
257
|
+
[FILL IN] No first-party user-research or persona material was found in the reviewed sources. Do not substitute fictional learners or creators for evidence.
|
|
412
258
|
|
|
413
259
|
## 14. States
|
|
414
260
|
|
|
415
|
-
|
|
416
|
-
|---|---|
|
|
417
|
-
| **Empty (no enrolled classes)** | Warm line `#767676` (`아직 수강 중인 클래스가 없어요`) + black CTA (`클래스 둘러보기`). |
|
|
418
|
-
| **Empty (search no results)** | `#767676` caption (`검색 결과가 없어요. 다른 키워드로 찾아보세요`) + suggested categories. |
|
|
419
|
-
| **Loading (feed first paint)** | Card-shaped skeletons at `#F3F3F3` matching layout, subtle shimmer. |
|
|
420
|
-
| **Loading (video buffer)** | Centered ring spinner in `#FF5D00` over the dimmed player. |
|
|
421
|
-
| **Error (playback)** | Centered line `#000000` (`영상을 불러올 수 없어요. 잠시 후 다시 시도해 주세요`) + retry (outline) button. |
|
|
422
|
-
| **Error (inline field)** | Input border `#FF3B30`, caption below in red, one actionable sentence. |
|
|
423
|
-
| **Success (wishlist add)** | Snackbar `#202020` + white text (`찜한 클래스에 추가했어요`), 3s dismiss. |
|
|
424
|
-
| **Success (lesson complete)** | Inline celebration — green `#22C55E` check + `첫 강의를 완료했어요!` + progress bar advance. Calm, not confetti-spam. |
|
|
425
|
-
| **Skeleton** | `#F3F3F3` blocks at exact card dimensions, 8px radius, ~1.2s shimmer. |
|
|
426
|
-
| **Disabled (button)** | Black CTA drops to `rgba(32,32,32,0.4)`, white text; geometry stable. |
|
|
261
|
+
[FILL IN] Empty, loading, success, error, disabled, skeleton, and validation states were not observed in the supplied capture. No state token or copy should be inferred from the default-state components.
|
|
427
262
|
|
|
428
263
|
## 15. Motion & Easing
|
|
429
264
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
**Durations:**
|
|
433
|
-
|
|
434
|
-
| Token | Value | Use |
|
|
435
|
-
|---|---|---|
|
|
436
|
-
| `motion-instant` | 0ms | Toggle/checkbox, heart fill |
|
|
437
|
-
| `motion-fast` | 150ms | Hover lift, button press, chip select |
|
|
438
|
-
| `motion-standard` | 250ms | Card hover, sheet open, tab switch |
|
|
439
|
-
| `motion-slow` | 350ms | Page-to-detail, hero crossfade, progress celebration |
|
|
440
|
-
|
|
441
|
-
**Easings:**
|
|
442
|
-
|
|
443
|
-
| Token | Curve | Use |
|
|
444
|
-
|---|---|---|
|
|
445
|
-
| `ease-standard` | `cubic-bezier(0.4, 0, 0.2, 1)` | Default — most motion |
|
|
446
|
-
| `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Sheets, modals, toasts appearing |
|
|
447
|
-
| `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
|
|
448
|
-
| `ease-spring` | `cubic-bezier(0.34, 1.56, 0.64, 1)` | Reserved — progress/completion celebration only |
|
|
449
|
-
|
|
450
|
-
**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.
|
|
451
|
-
|
|
452
|
-
**Signature motions.**
|
|
453
|
-
1. **Card hover lift.** Card raises ~2px with `0 2px 8px rgba(0,0,0,0.06)` over `motion-standard / ease-standard`.
|
|
454
|
-
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.
|
|
455
|
-
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)`.
|
|
456
|
-
4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, lifts/slides/pops collapse to instant; skeletons go static `#F3F3F3`. No exceptions.
|
|
457
|
-
|
|
458
|
-
<!--
|
|
459
|
-
OmD v0.1 Sources — Philosophy Layer (sections 10–15)
|
|
460
|
-
|
|
461
|
-
Tier 1 (UI tokens, §1–9): class101.net/ko live computed styles via Playwright
|
|
462
|
-
MCP, 2026-05-19. Confirmed: primary CTA `#202020` (rgb 32,32,32) 12px radius
|
|
463
|
-
16px 50px tall padding 15px 14px; brand orange `#FF5D00` (rgb 255,93,0) the
|
|
464
|
-
most-frequent saturated accent; surface gray `#F3F3F3` (rgb 243,243,243) 8px;
|
|
465
|
-
white bg; font `"Pretendard Variable", "Pretendard JP Variable", Pretendard,
|
|
466
|
-
system-ui, ...`. Page title `CLASS101 | 세상의 모든 클래스를 하나의 구독으로`.
|
|
467
|
-
|
|
468
|
-
Brief brand orange `#FF5C00` vs live `#FF5D00` — within 1 unit; live adopted.
|
|
469
|
-
Black-vs-orange CTA treated as distinct roles (action vs brand spark).
|
|
470
|
-
|
|
471
|
-
Tier 2 (narrative): class101.net footer (corporate info, 101 Inc. Wilmington
|
|
472
|
-
DE address) + general public knowledge of Class101's kit+class origin and
|
|
473
|
-
CLASS101+ subscription pivot. Founder Ko Ji-yoon (고지윤), founded 2018 — widely
|
|
474
|
-
documented; not re-verified against primary Class101 press in this pass.
|
|
475
|
-
|
|
476
|
-
Voice samples: `시작하기` and tagline `세상의 모든 클래스를 하나의 구독으로`
|
|
477
|
-
verified live (button + page title). `오늘부터 시작해볼까요?`,
|
|
478
|
-
`찜한 클래스에 추가했어요`, `첫 강의를 완료했어요!`, empty/error copy are
|
|
479
|
-
ILLUSTRATIVE patterns following Class101's encouraging `~요` register; not
|
|
480
|
-
verbatim.
|
|
481
|
-
|
|
482
|
-
Personas (§13) are fictional archetypes. Any resemblance to specific users is
|
|
483
|
-
unintended.
|
|
484
|
-
-->
|
|
265
|
+
[FILL IN] The supplied evidence contains no transition, animation, easing, or reduced-motion observations. Do not promote durations or curves.
|