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.
Files changed (275) hide show
  1. package/.claude/hooks/lib/preferences-parser.cjs +1 -0
  2. package/.claude/hooks/lib/preferences-writer.cjs +1 -0
  3. package/.claude/hooks/post-edit-watch.cjs +1 -0
  4. package/.claude/hooks/session-end-foldin.cjs +1 -0
  5. package/.claude/hooks/session-state-loader.cjs +1 -0
  6. package/.claude/hooks/skill-activation.cjs +1 -0
  7. package/.claude/settings.json +10 -1
  8. package/.github/assets/logo-bg.png +0 -0
  9. package/AGENTS.md +20 -1
  10. package/CHANGELOG.md +482 -0
  11. package/MIGRATION.md +103 -0
  12. package/README.ja.md +56 -19
  13. package/README.ko.md +47 -30
  14. package/README.md +48 -30
  15. package/README.zh-TW.md +59 -22
  16. package/agents/AGENT.md +8 -7
  17. package/agents/omd-codex-image.md +1 -1
  18. package/agents/omd-critic.md +6 -7
  19. package/agents/omd-designer-review.md +1 -1
  20. package/agents/omd-final-qa.md +1 -1
  21. package/agents/omd-humanizer.md +38 -0
  22. package/agents/omd-kr-writer.md +3 -4
  23. package/agents/omd-locale-adapter.md +12 -16
  24. package/agents/omd-master.md +24 -19
  25. package/agents/omd-microcopy.md +1 -1
  26. package/agents/omd-orchestrator.md +7 -8
  27. package/agents/omd-slop-auditor.md +31 -0
  28. package/agents/omd-ux-researcher.md +1 -1
  29. package/data/reference-fingerprints.json +2761 -85
  30. package/dist/bin/oh-my-design.js +16 -8
  31. package/dist/bin/oh-my-design.js.map +1 -1
  32. package/dist/chunk-UJIHCEYF.js +99 -0
  33. package/dist/chunk-UJIHCEYF.js.map +1 -0
  34. package/dist/doctor-LDWSFM3I.js +763 -0
  35. package/dist/doctor-LDWSFM3I.js.map +1 -0
  36. package/dist/install-skills-ZZFNJ2II.js +1120 -0
  37. package/dist/install-skills-ZZFNJ2II.js.map +1 -0
  38. package/docs/CLI_QUICKSTART.md +157 -0
  39. package/package.json +25 -4
  40. package/scripts/postinstall.cjs +5 -4
  41. package/skills/claude-design/SKILL.md +38 -14
  42. package/skills/claude-design/references/claude-design-flow.md +11 -11
  43. package/skills/claude-design/references/codebase-analysis.md +5 -4
  44. package/skills/omd-final-qa/SKILL.md +1 -1
  45. package/skills/omd-harness/SKILL.md +51 -50
  46. package/skills/omd-humanize/SKILL.md +116 -0
  47. package/skills/omd-humanize/agents/openai.yaml +4 -0
  48. package/skills/omd-humanize/references/locale-playbooks.md +102 -0
  49. package/skills/omd-humanize/references/sources.md +11 -0
  50. package/skills/omd-init/SKILL.md +18 -12
  51. package/skills/omd-locale-adapter/SKILL.md +58 -91
  52. package/skills/omd-orchestrator/SKILL.md +11 -5
  53. package/skills/omd-reference-capture/SKILL.md +80 -26
  54. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
  55. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
  56. package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
  57. package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
  58. package/skills/omd-slop-audit/SKILL.md +110 -0
  59. package/skills/omd-slop-audit/agents/openai.yaml +4 -0
  60. package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
  61. package/skills/omd-slop-audit/references/sources.md +24 -0
  62. package/web/references/104/DESIGN.md +354 -0
  63. package/web/references/11st/DESIGN.md +197 -316
  64. package/web/references/29cm/DESIGN.md +297 -393
  65. package/web/references/42dot/DESIGN.md +390 -0
  66. package/web/references/8percent/DESIGN.md +438 -0
  67. package/web/references/ably/DESIGN.md +267 -572
  68. package/web/references/acer/DESIGN.md +329 -0
  69. package/web/references/airbnb/DESIGN.md +219 -557
  70. package/web/references/airbridge/DESIGN.md +451 -0
  71. package/web/references/alipay/DESIGN.md +179 -420
  72. package/web/references/apple/DESIGN.md +224 -498
  73. package/web/references/asleep/DESIGN.md +402 -0
  74. package/web/references/au/DESIGN.md +334 -0
  75. package/web/references/autopedia/DESIGN.md +382 -0
  76. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  77. package/web/references/baemin/DESIGN.md +332 -491
  78. package/web/references/banksalad/DESIGN.md +269 -180
  79. package/web/references/barogo/DESIGN.md +416 -0
  80. package/web/references/beusable/DESIGN.md +464 -0
  81. package/web/references/bigin/DESIGN.md +454 -0
  82. package/web/references/bilibili/DESIGN.md +206 -374
  83. package/web/references/bmw/DESIGN.md +162 -276
  84. package/web/references/brandi/DESIGN.md +184 -325
  85. package/web/references/buzzvil/DESIGN.md +457 -0
  86. package/web/references/cafe24/DESIGN.md +472 -0
  87. package/web/references/catchtable/DESIGN.md +219 -264
  88. package/web/references/cgv/DESIGN.md +317 -0
  89. package/web/references/channeltalk/DESIGN.md +210 -336
  90. package/web/references/china-airlines/DESIGN.md +291 -0
  91. package/web/references/cjonstyle/DESIGN.md +453 -0
  92. package/web/references/class101/DESIGN.md +168 -387
  93. package/web/references/classum/DESIGN.md +228 -203
  94. package/web/references/claude/DESIGN.md +242 -479
  95. package/web/references/clay/DESIGN.md +179 -377
  96. package/web/references/clickhouse/DESIGN.md +254 -343
  97. package/web/references/codeit/DESIGN.md +470 -0
  98. package/web/references/cohere/DESIGN.md +214 -324
  99. package/web/references/coinone/DESIGN.md +199 -179
  100. package/web/references/corca/DESIGN.md +414 -0
  101. package/web/references/coupang/DESIGN.md +205 -475
  102. package/web/references/cursor/DESIGN.md +240 -381
  103. package/web/references/dabang/DESIGN.md +248 -213
  104. package/web/references/dable/DESIGN.md +431 -0
  105. package/web/references/datarize/DESIGN.md +338 -0
  106. package/web/references/dealicious/DESIGN.md +402 -0
  107. package/web/references/drdiary/DESIGN.md +404 -0
  108. package/web/references/elastic/DESIGN.md +238 -0
  109. package/web/references/elevenlabs/DESIGN.md +183 -321
  110. package/web/references/elice/DESIGN.md +445 -0
  111. package/web/references/eslite/DESIGN.md +257 -0
  112. package/web/references/evaair/DESIGN.md +338 -0
  113. package/web/references/expo/DESIGN.md +238 -331
  114. package/web/references/familymart-tw/DESIGN.md +254 -0
  115. package/web/references/ferrari/DESIGN.md +160 -377
  116. package/web/references/figma/DESIGN.md +197 -451
  117. package/web/references/fitpet/DESIGN.md +445 -0
  118. package/web/references/flex/DESIGN.md +170 -253
  119. package/web/references/framer/DESIGN.md +197 -340
  120. package/web/references/freee/DESIGN.md +211 -533
  121. package/web/references/friendliai/DESIGN.md +431 -0
  122. package/web/references/frip/DESIGN.md +440 -0
  123. package/web/references/furiosaai/DESIGN.md +450 -0
  124. package/web/references/gangnamunni/DESIGN.md +154 -591
  125. package/web/references/gaudiolab/DESIGN.md +414 -0
  126. package/web/references/google/DESIGN.md +290 -398
  127. package/web/references/goorm/DESIGN.md +470 -0
  128. package/web/references/greencar/DESIGN.md +420 -0
  129. package/web/references/hackle/DESIGN.md +472 -0
  130. package/web/references/hashicorp/DESIGN.md +273 -318
  131. package/web/references/heydealer/DESIGN.md +429 -0
  132. package/web/references/humanscape/DESIGN.md +433 -0
  133. package/web/references/hwahae/DESIGN.md +453 -0
  134. package/web/references/hyundai/DESIGN.md +158 -368
  135. package/web/references/hyundaicard/DESIGN.md +171 -121
  136. package/web/references/ibm/DESIGN.md +227 -378
  137. package/web/references/idus/DESIGN.md +450 -0
  138. package/web/references/igaworks/DESIGN.md +437 -0
  139. package/web/references/inflearn/DESIGN.md +221 -366
  140. package/web/references/intuit/DESIGN.md +244 -0
  141. package/web/references/jandi/DESIGN.md +191 -291
  142. package/web/references/jobplanet/DESIGN.md +415 -0
  143. package/web/references/kakao/DESIGN.md +287 -475
  144. package/web/references/kakaobank/DESIGN.md +220 -521
  145. package/web/references/kakaogames/DESIGN.md +220 -0
  146. package/web/references/kakaopay/DESIGN.md +207 -526
  147. package/web/references/karrot/DESIGN.md +227 -251
  148. package/web/references/kb-kookmin/DESIGN.md +308 -0
  149. package/web/references/kbank/DESIGN.md +220 -175
  150. package/web/references/kcd/DESIGN.md +432 -0
  151. package/web/references/kmong/DESIGN.md +281 -356
  152. package/web/references/krds/DESIGN.md +245 -19
  153. package/web/references/kream/DESIGN.md +224 -359
  154. package/web/references/kurly/DESIGN.md +211 -533
  155. package/web/references/kyobobook/DESIGN.md +445 -0
  156. package/web/references/lablup/DESIGN.md +474 -0
  157. package/web/references/lamborghini/DESIGN.md +198 -360
  158. package/web/references/lemonbase/DESIGN.md +452 -0
  159. package/web/references/lguplus/DESIGN.md +259 -0
  160. package/web/references/likelion/DESIGN.md +283 -0
  161. package/web/references/line/DESIGN.md +396 -355
  162. package/web/references/linear.app/DESIGN.md +209 -562
  163. package/web/references/lotteon/DESIGN.md +386 -0
  164. package/web/references/lovable/DESIGN.md +255 -349
  165. package/web/references/makinarocks/DESIGN.md +242 -0
  166. package/web/references/maum-ai/DESIGN.md +423 -0
  167. package/web/references/medibloc/DESIGN.md +425 -0
  168. package/web/references/megabox/DESIGN.md +232 -0
  169. package/web/references/mercari/DESIGN.md +217 -434
  170. package/web/references/microsoft/DESIGN.md +234 -388
  171. package/web/references/mildang/DESIGN.md +411 -0
  172. package/web/references/millie/DESIGN.md +183 -504
  173. package/web/references/minimax/DESIGN.md +264 -322
  174. package/web/references/miricanvas/DESIGN.md +182 -355
  175. package/web/references/miro/DESIGN.md +234 -232
  176. package/web/references/mistral.ai/DESIGN.md +231 -314
  177. package/web/references/mixi/DESIGN.md +234 -0
  178. package/web/references/moin/DESIGN.md +445 -0
  179. package/web/references/mongodb/DESIGN.md +219 -316
  180. package/web/references/moreh/DESIGN.md +437 -0
  181. package/web/references/musinsa/DESIGN.md +184 -510
  182. package/web/references/mynavi/DESIGN.md +242 -0
  183. package/web/references/myrealtrip/DESIGN.md +169 -406
  184. package/web/references/naver/DESIGN.md +328 -499
  185. package/web/references/naverwebtoon/DESIGN.md +172 -395
  186. package/web/references/neosapience/DESIGN.md +441 -0
  187. package/web/references/nhn/DESIGN.md +169 -346
  188. package/web/references/nhncloud/DESIGN.md +185 -123
  189. package/web/references/nota/DESIGN.md +451 -0
  190. package/web/references/notion/DESIGN.md +271 -475
  191. package/web/references/nrise/DESIGN.md +417 -0
  192. package/web/references/ohouse/DESIGN.md +210 -549
  193. package/web/references/oliveyoung/DESIGN.md +217 -326
  194. package/web/references/ollama/DESIGN.md +241 -308
  195. package/web/references/onestore/DESIGN.md +248 -0
  196. package/web/references/palantir/DESIGN.md +256 -0
  197. package/web/references/panasonic/DESIGN.md +276 -0
  198. package/web/references/patternfly/DESIGN.md +259 -0
  199. package/web/references/payhere/DESIGN.md +438 -0
  200. package/web/references/pega/DESIGN.md +262 -0
  201. package/web/references/peoplefund/DESIGN.md +431 -0
  202. package/web/references/petfriends/DESIGN.md +428 -0
  203. package/web/references/pinkfong/DESIGN.md +199 -367
  204. package/web/references/pinterest/DESIGN.md +258 -308
  205. package/web/references/portone/DESIGN.md +446 -0
  206. package/web/references/poya/DESIGN.md +286 -0
  207. package/web/references/pozalabs/DESIGN.md +438 -0
  208. package/web/references/protopie/DESIGN.md +419 -0
  209. package/web/references/qraft/DESIGN.md +448 -0
  210. package/web/references/queenit/DESIGN.md +432 -0
  211. package/web/references/quotabook/DESIGN.md +449 -0
  212. package/web/references/rebellions/DESIGN.md +449 -0
  213. package/web/references/recruit/DESIGN.md +247 -0
  214. package/web/references/remember/DESIGN.md +202 -396
  215. package/web/references/resend/DESIGN.md +274 -348
  216. package/web/references/returnzero/DESIGN.md +460 -0
  217. package/web/references/sakura-internet/DESIGN.md +269 -0
  218. package/web/references/samsung/DESIGN.md +157 -359
  219. package/web/references/sandoll/DESIGN.md +445 -0
  220. package/web/references/sanity/DESIGN.md +241 -375
  221. package/web/references/saramin/DESIGN.md +465 -0
  222. package/web/references/scatterlab/DESIGN.md +412 -0
  223. package/web/references/selectstar/DESIGN.md +439 -0
  224. package/web/references/servicenow/DESIGN.md +289 -0
  225. package/web/references/shiftee/DESIGN.md +468 -0
  226. package/web/references/shinhanbank/DESIGN.md +161 -341
  227. package/web/references/shinhancard/DESIGN.md +208 -319
  228. package/web/references/sionic/DESIGN.md +454 -0
  229. package/web/references/sktelecom/DESIGN.md +310 -0
  230. package/web/references/socar/DESIGN.md +125 -32
  231. package/web/references/softbank/DESIGN.md +231 -0
  232. package/web/references/solapi/DESIGN.md +483 -0
  233. package/web/references/sony/DESIGN.md +234 -0
  234. package/web/references/soop/DESIGN.md +261 -0
  235. package/web/references/spacex/DESIGN.md +184 -323
  236. package/web/references/spotify/DESIGN.md +253 -394
  237. package/web/references/squeezebits/DESIGN.md +441 -0
  238. package/web/references/stayfolio/DESIGN.md +422 -0
  239. package/web/references/stripe/DESIGN.md +212 -491
  240. package/web/references/supabase/DESIGN.md +244 -316
  241. package/web/references/supertone/DESIGN.md +413 -0
  242. package/web/references/tabling/DESIGN.md +415 -0
  243. package/web/references/taishinbank/DESIGN.md +243 -0
  244. package/web/references/teamlab/DESIGN.md +240 -0
  245. package/web/references/teamsparta/DESIGN.md +472 -0
  246. package/web/references/tellingme/DESIGN.md +392 -0
  247. package/web/references/tesla/DESIGN.md +244 -427
  248. package/web/references/thsr/DESIGN.md +284 -0
  249. package/web/references/thumbtack/DESIGN.md +302 -0
  250. package/web/references/together.ai/DESIGN.md +257 -304
  251. package/web/references/toss/DESIGN.md +251 -593
  252. package/web/references/toss-securities/DESIGN.md +255 -178
  253. package/web/references/tossbank/DESIGN.md +195 -491
  254. package/web/references/toyota/DESIGN.md +238 -0
  255. package/web/references/tving/DESIGN.md +197 -245
  256. package/web/references/typed/DESIGN.md +413 -0
  257. package/web/references/uber/DESIGN.md +256 -333
  258. package/web/references/udn/DESIGN.md +250 -0
  259. package/web/references/upbit/DESIGN.md +145 -256
  260. package/web/references/upstage/DESIGN.md +211 -204
  261. package/web/references/uswds/DESIGN.md +287 -0
  262. package/web/references/vercel/DESIGN.md +236 -440
  263. package/web/references/vuno/DESIGN.md +413 -0
  264. package/web/references/wanted/DESIGN.md +215 -487
  265. package/web/references/weverse/DESIGN.md +437 -0
  266. package/web/references/wise/DESIGN.md +223 -231
  267. package/web/references/wisetracker/DESIGN.md +462 -0
  268. package/web/references/wooribank/DESIGN.md +245 -0
  269. package/web/references/yanolja/DESIGN.md +250 -419
  270. package/web/references/yeogiotte/DESIGN.md +235 -418
  271. package/web/references/zapier/DESIGN.md +256 -377
  272. package/web/references/zendesk/DESIGN.md +288 -0
  273. package/web/references/zigzag/DESIGN.md +200 -621
  274. package/dist/install-skills-7UUDOLG2.js +0 -734
  275. 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-05-19"
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: prose-derived
15
- extracted: "2026-06-08"
16
- note: "primary action button is near-black #202020 (the workhorse CTA); brand = orange spark #FF5D00 (= primary_color). Distinct roles, not a conflict."
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
- surface: "#F3F3F3"
24
- surface-raised: "#FAFAFA"
25
- foreground: "#000000"
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: { sans: "Pretendard Variable", mono: "system-ui" }
37
- hero: { size: 36, weight: 700, lineHeight: 1.25, use: "Home hero, campaign headlines (32-40px)" }
38
- section-heading: { size: 23, weight: 700, lineHeight: 1.35, use: "Category / row headers (22-24px)" }
39
- card-title: { size: 16, weight: 600, lineHeight: 1.40, use: "Class card titles" }
40
- body: { size: 16, weight: 400, lineHeight: 1.50, use: "Descriptions, marketing body" }
41
- label: { size: 16, weight: 600, lineHeight: 1.40, use: "Buttons, nav (CTA / label)" }
42
- meta: { size: 14, weight: 400, lineHeight: 1.40, use: "Creator names, class metadata" }
43
- caption: { size: 12, weight: 400, lineHeight: 1.40, use: "Badges, fine print" }
44
- spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 40, section: 40 }
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
- button-primary: { type: button, bg: "#202020", fg: "#FFFFFF", radius: "12px", height: "50px", padding: "15px 14px", font: "16px / 600", hover: "#000000", use: "Workhorse CTA 시작하기 / 구독하기" }
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 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.
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
- 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.
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
- ### Surfaces
98
- - **Canvas White** (`#FFFFFF`): Page background, card surfaces. Observed body bg.
99
- - **Surface Gray** (`#F3F3F3`): Section bands, input fills, grouping surfaces. Observed `rgb(243, 243, 243)`.
100
- - **Surface Raised** (`#FAFAFA`): Subtle raised panels.
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
- ### Text
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
- ### Font Stack
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 leads (with JP variants for cross-market parity), the modern Korean product sans. All rendering is near-black to gray on white.
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
- ### Type Scale (observed home + listing surfaces)
121
+ ### Observed type scale
127
122
 
128
- | Role | Size | Weight | Line Height | Use |
129
- |---|---|---|---|---|
130
- | Hero | 32–40px | 700 | 1.25 | Home hero, campaign headlines |
131
- | Section Heading | 22–24px | 700 | 1.35 | Category/row headers |
132
- | Card Title | 16px | 600 | 1.4 | Class card titles |
133
- | Body | 16px | 400 | 1.5 | Descriptions, marketing body (observed 16px/400) |
134
- | CTA / Label | 16px | 500–600 | 1.4 | Buttons (observed 16px), nav |
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
- ### Buttons
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
- **Primary CTA (시작하기 / 구독하기)**
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
- **Ghost / Text**
137
+ **Default product home**
177
138
  - Background: transparent
178
- - Text: `#333333`
139
+ - Text: `#000000`
179
140
  - Border: none
180
141
  - Radius: 8px
181
- - Font: 16px / 500 / Pretendard
182
- - Use: Tertiary nav, "더보기"
142
+ - Font: 16px / 400 / Pretendard Variable
143
+ - Use: Home control at `home::[data-omd-capture="6"]`; 108px × 38px observed
183
144
 
184
- ### Inputs
145
+ ### Home outlined button
185
146
 
186
- **Search / Text Field**
187
- - Background: `#F3F3F3`
147
+ **Default product home**
148
+ - Background: transparent
188
149
  - Text: `#000000`
189
- - Border: none (filled) — or 1px solid `#E5E5E5` on white
190
- - Radius: 8px
191
- - Padding: 12px 16px
192
- - Font: 16px / 400 / Pretendard
193
- - Placeholder: `#AAAAAA`
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
- ### Badges / Chips
156
+ ### Home tab wrapper
214
157
 
215
- **Category Chip**
216
- - Background: `#F3F3F3`
217
- - Text: `#333333`
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: 6px
229
- - Padding: 2px 8px
230
- - Font: 12px / 600 / Pretendard
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
- **Top Nav Item**
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
- ### Toasts
243
-
244
- **Snackbar**
245
- - Background: `#202020`
246
- - Text: `#FFFFFF`
247
- - Radius: 8px
248
- - Padding: 12px 16px
249
- - Use: "찜한 클래스에 추가했어요" transient feedback
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
- ### Dialogs
177
+ ### Legal-document list item
252
178
 
253
- **Modal / Bottom Sheet**
254
- - Background: `#FFFFFF`
255
- - Text: `#000000`
256
- - Radius: 16px (top corners on sheet)
257
- - Padding: 24px
258
- - Backdrop: `rgba(0,0,0,0.5)`
259
- - Use: Login, plan selection, class preview
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
- **Verified:** 2026-05-19
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
- ### Page Structure
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
- | Level | Treatment | Use |
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
- ### Don't
310
- - Don't make every primary button orange — orange is the spark, black is the action.
311
- - Don't add heavy shadows; use white/`#F3F3F3` contrast for separation.
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
- ## 8. Responsive Behavior
211
+ ### Don't
317
212
 
318
- ### Breakpoints
319
- | Name | Width | Key Changes |
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
- ### Touch & Media
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
- ### Image Behavior
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
- ### Quick Color Reference
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
- 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.
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
- | Context | Tone |
235
+ | Evidence | Use boundary |
366
236
  |---|---|
367
- | CTAs | Encouraging Korean verb form (`시작하기`, `구독하기`, `수강하기`, `둘러보기`). |
368
- | Discovery | Motivational, second person (`오늘부터 시작해볼까요?`, `당신을 위한 클래스`). |
369
- | Success toasts | Past-tense soft ending (`찜한 클래스에 추가했어요`). No emoji on chrome. |
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 (클래스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)
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
- 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.
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. **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.
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. **Learning is starting.** Copy and discovery push toward beginning, not toward buying. *UI implication:* `시작하기`, `오늘부터 시작해볼까요?` lead with the verb of doing.
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. **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.
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
- *Personas are fictional archetypes informed by publicly described Class101 user segments (Korean hobby and skill learners), not individual people.*
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
- | State | Treatment |
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
- Class101's motion is friendly and encouraging smooth reveals, gentle lifts, a small celebratory pop on progress. Energetic but never frantic.
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.