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
|
@@ -9,309 +9,261 @@ primary_color: "#ff153c"
|
|
|
9
9
|
logo:
|
|
10
10
|
type: favicon
|
|
11
11
|
slug: "https://www.google.com/s2/favicons?domain=tving.com&sz=256"
|
|
12
|
-
verified: "2026-
|
|
12
|
+
verified: "2026-07-13"
|
|
13
13
|
omd: "0.1"
|
|
14
|
+
verification_v2:
|
|
15
|
+
schema: 2
|
|
16
|
+
checked: "2026-07-13"
|
|
17
|
+
surfaces:
|
|
18
|
+
- { id: home, kind: streaming-home, url: "https://www.tving.com/", inspected: "2026-07-13" }
|
|
19
|
+
- { id: movie, kind: streaming-catalog, url: "https://www.tving.com/movie", inspected: "2026-07-13" }
|
|
20
|
+
- { id: live, kind: streaming-live, url: "https://www.tving.com/live/C00551", inspected: "2026-07-13" }
|
|
21
|
+
sources:
|
|
22
|
+
- { id: home-live, kind: product-surface, url: "https://www.tving.com/", captured: "2026-07-13" }
|
|
23
|
+
- { id: movie-live, kind: product-surface, url: "https://www.tving.com/movie", captured: "2026-07-13" }
|
|
24
|
+
- { id: live-live, kind: product-surface, url: "https://www.tving.com/live/C00551", captured: "2026-07-13" }
|
|
25
|
+
- { id: tving-policy, kind: official-doc, url: "https://www.tving.com/policy/terms?viewType=webview", captured: "2026-07-13" }
|
|
26
|
+
- { id: cj-lineup-2025, kind: official-doc, url: "https://newsroom.cj.net/?p=5803", captured: "2026-07-13" }
|
|
27
|
+
- { id: cj-tving-history, kind: official-doc, url: "https://newsroom.cj.net/cj-enms-tving-and-kts-seezn-announce-merger-to-become-south-koreas-largest-ott-platform/", captured: "2026-07-13" }
|
|
28
|
+
- { id: pretendard-license, kind: license, url: "https://github.com/orioncactus/pretendard/blob/main/LICENSE", captured: "2026-07-13" }
|
|
29
|
+
conflicts: []
|
|
30
|
+
claims:
|
|
31
|
+
"tokens.colors.canvas": &home { surface_id: home, source_id: home-live, method: computed-style, captured: "2026-07-13" }
|
|
32
|
+
"tokens.colors.surface-raised": *home
|
|
33
|
+
"tokens.colors.foreground": *home
|
|
34
|
+
"tokens.colors.foreground-secondary": *home
|
|
35
|
+
"tokens.colors.foreground-muted": *home
|
|
36
|
+
"tokens.colors.hairline": *home
|
|
37
|
+
"tokens.typography.family.ui": *home
|
|
38
|
+
"tokens.typography.compact.size": *home
|
|
39
|
+
"tokens.typography.compact.weight": *home
|
|
40
|
+
"tokens.typography.compact.lineHeight": *home
|
|
41
|
+
"tokens.typography.compact.use": *home
|
|
42
|
+
"tokens.typography.body.size": *home
|
|
43
|
+
"tokens.typography.body.weight": *home
|
|
44
|
+
"tokens.typography.body.lineHeight": *home
|
|
45
|
+
"tokens.typography.body.use": *home
|
|
46
|
+
"tokens.typography.heading.size": *home
|
|
47
|
+
"tokens.typography.heading.weight": *home
|
|
48
|
+
"tokens.typography.heading.lineHeight": *home
|
|
49
|
+
"tokens.typography.heading.use": *home
|
|
50
|
+
"tokens.typography.live-tab.size": &live { surface_id: live, source_id: live-live, method: computed-style, captured: "2026-07-13" }
|
|
51
|
+
"tokens.typography.live-tab.weight": *live
|
|
52
|
+
"tokens.typography.live-tab.lineHeight": *live
|
|
53
|
+
"tokens.typography.live-tab.use": *live
|
|
54
|
+
"tokens.rounded.menu": *home
|
|
55
|
+
"tokens.rounded.live-pill": *live
|
|
56
|
+
"tokens.components.content-menu-trigger.type": *home
|
|
57
|
+
"tokens.components.content-menu-trigger.bg": *home
|
|
58
|
+
"tokens.components.content-menu-trigger.fg": *home
|
|
59
|
+
"tokens.components.content-menu-trigger.border": *home
|
|
60
|
+
"tokens.components.content-menu-trigger.radius": *home
|
|
61
|
+
"tokens.components.content-menu-trigger.padding": *home
|
|
62
|
+
"tokens.components.content-menu-trigger.font": *home
|
|
63
|
+
"tokens.components.content-menu-trigger.states": *home
|
|
64
|
+
"tokens.components.content-menu-trigger.use": *home
|
|
65
|
+
"tokens.components.live-selected-tab.type": *live
|
|
66
|
+
"tokens.components.live-selected-tab.bg": *live
|
|
67
|
+
"tokens.components.live-selected-tab.fg": *live
|
|
68
|
+
"tokens.components.live-selected-tab.border": *live
|
|
69
|
+
"tokens.components.live-selected-tab.radius": *live
|
|
70
|
+
"tokens.components.live-selected-tab.padding": *live
|
|
71
|
+
"tokens.components.live-selected-tab.font": *live
|
|
72
|
+
"tokens.components.live-selected-tab.states": *live
|
|
73
|
+
"tokens.components.live-selected-tab.use": *live
|
|
14
74
|
tokens:
|
|
15
|
-
source:
|
|
16
|
-
extracted: "2026-
|
|
75
|
+
source: live-extract
|
|
76
|
+
extracted: "2026-07-13"
|
|
17
77
|
colors:
|
|
18
|
-
primary: "#ff153c"
|
|
19
78
|
canvas: "#000000"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
text-tertiary: "#a3a3a3"
|
|
26
|
-
disabled-bright: "#d9d9d9"
|
|
27
|
-
muted: "#6e6e6e"
|
|
28
|
-
disabled-deep: "#4f4f4f"
|
|
29
|
-
cate-home: "#ff1f45"
|
|
30
|
-
cate-live: "#ff584a"
|
|
31
|
-
cate-clip: "#fd8163"
|
|
32
|
-
cate-vod: "#387dff"
|
|
33
|
-
cate-movie: "#7d57fc"
|
|
34
|
-
cate-ad: "#fcc800"
|
|
79
|
+
surface-raised: "#2e2e2e"
|
|
80
|
+
foreground: "#ffffff"
|
|
81
|
+
foreground-secondary: "#a3a3a3"
|
|
82
|
+
foreground-muted: "#6e6e6e"
|
|
83
|
+
hairline: "#4f4f4f"
|
|
35
84
|
typography:
|
|
36
|
-
family: {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
body: { size: 12, weight: 400, use: "Body baseline" }
|
|
43
|
-
spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48 }
|
|
44
|
-
rounded: { sm: 3, md: 8, lg: 16, full: 9999 }
|
|
45
|
-
shadow:
|
|
46
|
-
none: "none"
|
|
85
|
+
family: { ui: "Pretendard" }
|
|
86
|
+
compact: { size: 13.2, weight: 400, lineHeight: 1.5, use: "Observed opened-menu text on home and movie surfaces." }
|
|
87
|
+
body: { size: 16.5, weight: 400, lineHeight: 1.15, use: "Observed product-surface body and utility text." }
|
|
88
|
+
heading: { size: 22.0044, weight: 700, lineHeight: 1.5, use: "Observed product-surface heading text." }
|
|
89
|
+
live-tab: { size: 14.2956, weight: 400, lineHeight: 1.15, use: "Observed unselected live-route tab text." }
|
|
90
|
+
rounded: { menu: 4.95, live-pill: 109.996 }
|
|
47
91
|
components_harvested: true
|
|
48
92
|
components:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
card-poster: { type: card, radius: 16, use: "Poster card, top-corners-only radius, art bleeds bottom edge" }
|
|
52
|
-
chip-meta: { type: badge, radius: 3, use: "Fine chip / tag / meta-label" }
|
|
53
|
-
avatar: { type: avatar, radius: 9999, use: "Avatar / circular icon" }
|
|
93
|
+
content-menu-trigger: { type: button, bg: "#000000", fg: "#a3a3a3", border: "#a3a3a3", radius: 4.95, padding: "0px 16.5px", font: "13.2/400 Pretendard", states: "expanded, menu-open", use: "Observed home and movie content-menu trigger only." }
|
|
94
|
+
live-selected-tab: { type: tab, bg: "rgba(255, 255, 255, 0.2)", fg: "#ffffff", border: "#ffffff", radius: 109.996, padding: "8.8044px 13.2px", font: "14.2956/700 Pretendard", states: "selected", use: "Observed selected tab on the supplied live route only." }
|
|
54
95
|
---
|
|
55
96
|
|
|
56
97
|
# Design System Inspiration of TVING (티빙)
|
|
57
98
|
|
|
58
99
|
## 1. Visual Theme & Atmosphere
|
|
59
100
|
|
|
60
|
-
TVING is
|
|
101
|
+
TVING is CJ ENM's Korean streaming platform, serving series, movies, live channels, and sports. The three supplied public product routes use a cinema-dark field: black canvas, white and cool-gray text, a restrained raised surface, and a light hairline rather than a marketing-page palette. The product evidence is deliberately narrower than TVING's wider public narrative. CJ's 2025 lineup describes a program spanning varied original genres, signature franchises, and year-round live sports, while its earlier company reporting places TVING's independent expansion after its 2020 separation from CJ ENM and subsequent partnerships. Those are first-party context sources, not UI-token sources. [CJ ENM: TVING and Seezn](https://newsroom.cj.net/cj-enms-tving-and-kts-seezn-announce-merger-to-become-south-koreas-largest-ott-platform/) · [TVING 2025 lineup](https://newsroom.cj.net/?p=5803)
|
|
61
102
|
|
|
62
|
-
|
|
103
|
+
The captured home and movie routes share an opened content-menu treatment; the supplied live route adds a selected white-tint pill tab. This makes the reliable visual signature a high-contrast viewing shell with route-local navigation states, not the prior reference's inferred universal poster, CTA, category-color, or motion system.
|
|
63
104
|
|
|
64
105
|
**Key Characteristics:**
|
|
65
|
-
- Locked dark canvas (`#000000` at `html`) — no light-mode token observed; the platform is dark-mode-only by design.
|
|
66
|
-
- Single brand red (`#FF153C`) reserved for CTAs and brand marks; observed on 4 of 12 dominant background colors, runtime alpha-variants `rgb(255,21,60)` / `rgb(254,21,60)` / `rgb(255,31,69)` all collapse to one canonical token.
|
|
67
|
-
- **Six-category color taxonomy as `:root` primitives** — home/live/clip/VOD/movie/ad each own a CSS custom property; rare case where color IS product information architecture.
|
|
68
|
-
- Top-corners-only card radius (`16.5292px 16.5292px 0 0`) for poster bleed — observed 20× on home surface alone.
|
|
69
|
-
- Pretendard exclusive (SIL OFL 1.1), weight binary (400 / 700).
|
|
70
|
-
- Box-shadow zero across product chrome — depth via surface contrast, not elevation.
|
|
71
|
-
- Dedicated live-streaming geometry tokens (`--kbo-player-*`, `--sports-player-*`) elevate live as a peer surface to VOD.
|
|
72
|
-
- Tailwind utility layer (`--tw-*`) + Emotion CSS-in-JS (`css-*` hashes) + shadcn-pattern semantic roles (`--card`, `--popover`, `--muted`) coexist — pragmatic framework stack, not opinionated DS purism.
|
|
73
106
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
- **Pure White** (`#FFFFFF`) — primary text on canvas; 519 occurrences in 3,000-node sample (dominant text color).
|
|
80
|
-
|
|
81
|
-
### Surface ladder (dark)
|
|
82
|
-
- `#000000` — canvas / page background (12 occurrences as bg)
|
|
83
|
-
- `#2E2E2E` — elevated card / chip surface (10 occurrences as bg)
|
|
84
|
-
- `#111111` / `#262626` — modal / overlay surface
|
|
85
|
-
- `rgba(15,15,15,0.74)` — bottom-sheet / scrim overlay
|
|
86
|
-
- `rgba(0,0,0,0.5)` — image-overlay scrim
|
|
87
|
-
- `rgba(255,255,255,0.1)` / `rgba(255,255,255,0.4)` — hover/active glass tint on poster cards
|
|
88
|
-
|
|
89
|
-
### Text scale (grayscale)
|
|
90
|
-
- `#FFFFFF` — primary text, headlines (519×)
|
|
91
|
-
- `#B3B3B3` — secondary body (169×)
|
|
92
|
-
- `#A3A3A3` — tertiary metadata (24×)
|
|
93
|
-
- `#D9D9D9` — disabled-bright (6×)
|
|
94
|
-
- `#6E6E6E` — muted hint (52×)
|
|
95
|
-
- `#4F4F4F` — disabled-deep (1×)
|
|
107
|
+
- Black `#000000` canvas with white primary text and gray secondary hierarchy.
|
|
108
|
+
- `#2e2e2e` is a repeated raised-surface value on the home and movie capture.
|
|
109
|
+
- `#4f4f4f` is the repeated high-confidence hairline/border value on home and movie.
|
|
110
|
+
- Product chrome uses a loaded, TVING-hosted Pretendard webfont; declared legacy faces are not promoted.
|
|
111
|
+
- The only reusable state claims are an expanded/menu-open content selector and a selected live tab, each with route and selector provenance.
|
|
96
112
|
|
|
97
|
-
|
|
98
|
-
- `--color-cate-home`: `#FF1F45` (home shelf)
|
|
99
|
-
- `--color-cate-live`: `#FF584A` (live streaming)
|
|
100
|
-
- `--color-cate-clip`: `#FD8163` (short-form clips)
|
|
101
|
-
- `--color-cate-vod`: `#387DFF` (on-demand)
|
|
102
|
-
- `--color-cate-movie`: `#7D57FC` (films)
|
|
103
|
-
- `--color-cate-ad`: `#FCC800` (sponsored / ad indicator)
|
|
104
|
-
|
|
105
|
-
### Border
|
|
106
|
-
- `hsl(0,0%,31%)` (`--border`) — hairline divider; rendered at 1px on dark surface, near-invisible until hover.
|
|
107
|
-
|
|
108
|
-
## 3. Typography
|
|
113
|
+
## 2. Color Palette & Roles
|
|
109
114
|
|
|
110
|
-
|
|
115
|
+
### Observed live product surface
|
|
111
116
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
| Footer link | Pretendard | 15.5px | 400 / 700 mixed |
|
|
119
|
-
| Secondary nav | Pretendard | 16px | 400 |
|
|
117
|
+
- **Canvas** (`#000000`) — repeated background on home, movie, and live captures.
|
|
118
|
+
- **Raised surface** (`#2e2e2e`) — repeated home/movie background value, including an opened-menu option.
|
|
119
|
+
- **Foreground** (`#ffffff`) — repeated primary text on all three captured routes.
|
|
120
|
+
- **Secondary foreground** (`#a3a3a3`) — repeated menu and supporting text color across all routes.
|
|
121
|
+
- **Muted foreground** (`#6e6e6e`) — repeated subdued text color across all routes.
|
|
122
|
+
- **Hairline** (`#4f4f4f`) — repeated border value on home and movie routes.
|
|
120
123
|
|
|
121
|
-
|
|
124
|
+
### Boundary
|
|
122
125
|
|
|
123
|
-
|
|
126
|
+
The catalog-level `primary_color` remains `#ff153c`, but the supplied 2026 product capture does not provide computed selector evidence for a red CTA, a universal red accent, or the earlier six-color category taxonomy. They are not retained as live UI tokens. Corporate/editorial imagery and TVING's legal or subscription pages are separate source domains and do not fill that gap.
|
|
124
127
|
|
|
125
|
-
##
|
|
128
|
+
## 3. Typography Rules
|
|
126
129
|
|
|
127
|
-
|
|
130
|
+
### Evidence classes
|
|
128
131
|
|
|
129
|
-
|
|
|
132
|
+
| Class | Evidence | Resolution |
|
|
130
133
|
|---|---|---|
|
|
131
|
-
| `
|
|
132
|
-
|
|
|
133
|
-
|
|
|
134
|
-
| `
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
134
|
+
| Live computed product use | `Pretendard` is computed on 335 visible elements across body, button, heading, menu, tab, and text roles. The collector classifies it `loaded` with high confidence and records 27 TVING-hosted WOFF/WOFF2 source URLs. | Verified live UI family and the sole `tokens.typography.family.ui` family. |
|
|
135
|
+
| Official distributed asset and licence | Pretendard's upstream project distributes the font under SIL Open Font License 1.1. [Upstream licence](https://github.com/orioncactus/pretendard/blob/main/LICENSE) | Licence context only; it does not by itself prove TVING deployment. |
|
|
136
|
+
| Declared-only assets | Campton, Campton Black/Extra/Book, Noto Sans KR, OmniGothic/OmniGothics, Pretendard Fallback, and swiper-icons have declarations and, where listed, source URLs, but zero visible uses in this capture. | Declared-only; not a UI-family token and not a substitute. |
|
|
137
|
+
| System fallback | `-apple-system`, `system-ui`, Roboto, Segoe UI, and other fallbacks appear after Pretendard in computed stacks. | Fallback-only, not a TVING font claim. |
|
|
138
|
+
|
|
139
|
+
### Observed hierarchy
|
|
140
|
+
|
|
141
|
+
| Role | Size | Weight | Line height | Surface boundary |
|
|
142
|
+
|---|---:|---:|---:|---|
|
|
143
|
+
| Compact opened-menu text | 13.2px | 400 | 19.8px | Home and movie opened-menu evidence |
|
|
144
|
+
| Product body/utility text | 16.5px | 400 | 18.975px | Public product routes |
|
|
145
|
+
| Product heading text | 22.0044px | 700 | 33.0066px | Public product routes |
|
|
146
|
+
| Unselected live tab | 14.2956px | 400 | 16.4399px | Supplied live route |
|
|
147
|
+
|
|
148
|
+
## 4. Component Stylings
|
|
149
|
+
|
|
150
|
+
### Content selector
|
|
151
|
+
|
|
152
|
+
**Opened trigger — expanded/menu-open**
|
|
153
|
+
- Background: #000000
|
|
154
|
+
- Text: #a3a3a3
|
|
155
|
+
- Border: #a3a3a3
|
|
156
|
+
- Radius: 4.95px
|
|
157
|
+
- Padding: 0px 16.5px
|
|
158
|
+
- Font: 13.2px / 400 / Pretendard
|
|
159
|
+
- States: expanded, menu-open
|
|
160
|
+
- Use: `home::[data-omd-capture="19"]` and the corresponding movie selector; observed 20px rendered height only while the menu is open.
|
|
161
|
+
|
|
162
|
+
### Live navigation
|
|
163
|
+
|
|
164
|
+
**Selected tab — selected**
|
|
165
|
+
- Background: rgba(255, 255, 255, 0.2)
|
|
166
|
+
- Text: #ffffff
|
|
167
|
+
- Border: #ffffff
|
|
168
|
+
- Radius: 109.996px
|
|
169
|
+
- Padding: 8.8044px 13.2px
|
|
170
|
+
- Font: 14.2956px / 700 / Pretendard
|
|
171
|
+
- States: selected
|
|
172
|
+
- Use: `surface-3::[data-omd-capture="61"]` on `https://www.tving.com/live/C00551`; observed 34px rendered height only.
|
|
173
|
+
|
|
174
|
+
No default CTA, poster card, dialog, hover, focus, pressed, error, disabled, or responsive variant is specified: the supplied evidence does not provide the required selector and state provenance.
|
|
139
175
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|---|---|---|
|
|
146
|
-
| `--gnb-height` | `70px` | Global nav bar (authenticated) |
|
|
147
|
-
| `--header-height` | `4rem` (64px) | Marketing / onboarding header |
|
|
148
|
-
| `--bottom-tab-height` | `4.167rem` (≈66.7px) | Mobile bottom tab bar |
|
|
149
|
-
| `--safe-area-inset-{top,bottom,left,right}` | dynamic | iOS PWA safe areas |
|
|
150
|
-
| `--content-inset-{top,bottom,right}` | `0px` (default) | Dynamic content insets when player docked |
|
|
151
|
-
| `--live-tab-player-height-desktop` | `calc((100vw - 40rem) * 0.5625)` | 16:9 docked player |
|
|
152
|
-
| `--kbo-player-width` | `calc(100vw - 31.25rem)` | KBO baseball player width (subtracts 500px sidebar) |
|
|
153
|
-
| `--sports-player-height` | `calc((100vw - 31.25rem) * 0.5625)` | Sports player 16:9 |
|
|
176
|
+
---
|
|
177
|
+
**Verified:** 2026-07-13
|
|
178
|
+
**Tier 1 sources:** https://www.tving.com/; https://www.tving.com/movie; https://www.tving.com/live/C00551; https://www.tving.com/policy/terms?viewType=webview; https://newsroom.cj.net/cj-enms-tving-and-kts-seezn-announce-merger-to-become-south-koreas-largest-ott-platform/; https://newsroom.cj.net/?p=5803; https://github.com/orioncactus/pretendard/blob/main/LICENSE
|
|
179
|
+
**Tier 2 sources:** https://getdesign.md/tving (no usable indexed record returned); https://styles.refero.design/?q=tving (no usable style record returned)
|
|
180
|
+
**Conflicts unresolved:** none
|
|
154
181
|
|
|
155
|
-
|
|
182
|
+
The supplied capture corroborates only the values and states above. Legacy red CTA, category-color, poster-card, avatar, sports-geometry, motion, and inferred-product claims are intentionally omitted rather than reconstructed from CSS declarations, corporate material, or an adjacent route.
|
|
156
183
|
|
|
157
|
-
##
|
|
184
|
+
## 5. Layout Principles
|
|
158
185
|
|
|
159
|
-
|
|
186
|
+
The three supplied product routes establish route scope, not a full layout system. Home and movie share compact menu controls; the live route supplies a 34px tab treatment. No mobile viewport, grid, card aspect ratio, sticky header, player geometry, or breakpoint is retained because the collector evidence does not provide reliable cross-viewport provenance.
|
|
160
187
|
|
|
161
|
-
|
|
162
|
-
2. Elevated `#2E2E2E` (+46 luminance)
|
|
163
|
-
3. Modal/overlay `rgba(15,15,15,0.74)`
|
|
164
|
-
4. Glass tint `rgba(255,255,255,0.1)` on hover
|
|
188
|
+
## 6. Depth & Elevation
|
|
165
189
|
|
|
166
|
-
The
|
|
190
|
+
The opened content menu is the only measured elevated layer: it uses `#212121`, a 1px `#4f4f4f` border, 4.95px radius, and two low-opacity black shadow layers. This route-local opened state does not authorize a global shadow scale. The normal controls retained in §4 report no shadow.
|
|
167
191
|
|
|
168
|
-
## 7.
|
|
192
|
+
## 7. Do's and Don'ts
|
|
169
193
|
|
|
170
|
-
|
|
171
|
-
- Avatar / circular icons use `50%` radius (4 observed).
|
|
172
|
-
- Live indicators presumed to use `--color-cate-live` (`#FF584A`) as fill.
|
|
173
|
-
- Poster art is the dominant visual asset on browse surfaces; placeholder ratio inferred at 2:3 portrait (industry standard, confirmed by top-corners-only card geometry).
|
|
194
|
+
### Do
|
|
174
195
|
|
|
175
|
-
|
|
196
|
+
- Keep the verified product shell black with white/gray text when recreating these captured routes.
|
|
197
|
+
- Use Pretendard only with its recorded TVING-hosted loaded-font evidence and preserve the system stack as fallback.
|
|
198
|
+
- Preserve the expanded/menu-open and selected states with their route and selector boundaries.
|
|
199
|
+
- Treat CJ's editorial and policy material as narrative or legal context, not as product CSS authority.
|
|
176
200
|
|
|
177
|
-
|
|
201
|
+
### Don't
|
|
178
202
|
|
|
179
|
-
|
|
203
|
+
- Do not introduce a red CTA, red brand accent, six-category palette, poster-card geometry, or sports-player layout from the previous snapshot.
|
|
204
|
+
- Do not promote Campton, Noto Sans KR, OmniGothic, or another declared-only face into TVING UI typography.
|
|
205
|
+
- Do not add hover, focus, pressed, disabled, error, dialog, or responsive variants without a new observed state and selector.
|
|
206
|
+
- Do not use marketing, subscription, legal, or newsroom chrome as though it were the captured streaming product surface.
|
|
180
207
|
|
|
181
|
-
##
|
|
208
|
+
## 8. Responsive Behavior
|
|
182
209
|
|
|
183
|
-
|
|
184
|
-
- Background: `#FF153C` (canonical brand red)
|
|
185
|
-
- Color: `#FFFFFF`
|
|
186
|
-
- Radius: `12.4px` (hero) / `8px` (header inline)
|
|
187
|
-
- Padding: `19.6292px 62px` (hero) — generous horizontal, allowing 4-syllable Korean CTAs without wrap
|
|
188
|
-
- Font: Pretendard 18.6px / 700 (hero), 14px / 700 (header)
|
|
189
|
-
- Height: 62px (hero), 32px (header)
|
|
190
|
-
- Border: none
|
|
210
|
+
No mobile or alternate viewport was supplied. Touch targets, breakpoint changes, menu placement, shelf grids, and player behavior remain unverified.
|
|
191
211
|
|
|
192
|
-
|
|
193
|
-
- Color: `#A3A3A3` default, `#FFFFFF` active
|
|
194
|
-
- Size: 15.5px / 400 (passive), 700 (current)
|
|
195
|
-
- No background, no border
|
|
212
|
+
## 9. Agent Prompt Guide
|
|
196
213
|
|
|
197
|
-
###
|
|
198
|
-
- Background: `#000000` (continuous with canvas)
|
|
199
|
-
- Links: `#A3A3A3` 15.5px; `개인정보처리방침` rendered at weight 700 (legal-emphasis convention)
|
|
214
|
+
### Verified prompt boundary
|
|
200
215
|
|
|
201
|
-
|
|
202
|
-
- Presumed to use `#FF584A` (`--color-cate-live`) with circular pulse indicator (live token system suggests dedicated chrome).
|
|
216
|
+
“Create only the captured TVING product chrome: a black streaming shell with white, `#a3a3a3`, and `#6e6e6e` text; an expanded black content selector with a 4.95px corner; and the selected live tab with a 20% white fill and 109.996px pill radius. Use loaded Pretendard. Do not add red CTAs, poster cards, category colors, player geometry, or unobserved interaction states.”
|
|
203
217
|
|
|
204
218
|
## 10. Voice & Tone
|
|
205
219
|
|
|
206
|
-
TVING
|
|
207
|
-
|
|
208
|
-
The voice register sits between Netflix Korea's neutral-formal and Wavve's slightly more casual approach. Footer items use legal-register nouns (`이용약관`, `법적고지`) without softening.
|
|
209
|
-
|
|
210
|
-
**Voice samples (OmD-original analyst characterizations — NOT verbatim from TVING):**
|
|
211
|
-
- Action: "지금 보세요" / "이어서 보기" / "시청 계속하기"
|
|
212
|
-
- Status: "라이브 진행 중" / "오늘 공개" / "에피소드 12까지"
|
|
213
|
-
- Empty / error: "잠시 후 다시 시도해주세요" / "지금은 시청할 수 없어요"
|
|
220
|
+
Official TVING product policy pages use compact legal-navigation labels such as `TVING 이용약관`, `유료이용약관`, `법적고지`, and `개인정보처리방침`. CJ's 2025 editorial framing names an “infinite spectrum,” “signature content,” and “immersive sports.” These are source-specific language samples: neither source establishes a general in-product microcopy system. [TVING policies](https://www.tving.com/policy/terms?viewType=webview) · [TVING 2025 lineup](https://newsroom.cj.net/?p=5803)
|
|
214
221
|
|
|
215
|
-
|
|
222
|
+
| Do | Don't |
|
|
223
|
+
|---|---|
|
|
224
|
+
| Keep policy language exact and clearly legal in context. | Turn policy labels into invented playback, error, or account microcopy. |
|
|
225
|
+
| Preserve editorial themes as editorial context. | Treat marketing/editorial phrasing as a product UI token. |
|
|
226
|
+
| State the source domain beside a voice claim. | Attribute an unobserved CTA or empty-state sentence to TVING. |
|
|
216
227
|
|
|
217
|
-
|
|
228
|
+
**Source samples.**
|
|
218
229
|
|
|
219
|
-
|
|
230
|
+
- `TVING 이용약관` — official policy navigation. <!-- verified: tving.com/policy/terms 2026-07-13 -->
|
|
231
|
+
- `signature content` — official CJ 2025 lineup theme. <!-- verified: newsroom.cj.net/?p=5803 2026-07-13 -->
|
|
232
|
+
- `immersive sports` — official CJ 2025 lineup theme. <!-- verified: newsroom.cj.net/?p=5803 2026-07-13 -->
|
|
220
233
|
|
|
221
|
-
|
|
234
|
+
## 11. Brand Narrative
|
|
222
235
|
|
|
223
|
-
|
|
236
|
+
CJ ENM's official account says TVING separated from CJ ENM in October 2020, then strengthened its platform position through a JTBC partnership and investment from Naver before its merger with KT's Seezn. That history establishes TVING as a Korean streaming platform built through content and platform partnerships; it does not establish a timeless UI system. [CJ ENM merger announcement](https://newsroom.cj.net/cj-enms-tving-and-kts-seezn-announce-merger-to-become-south-koreas-largest-ott-platform/)
|
|
224
237
|
|
|
225
|
-
|
|
238
|
+
The current public editorial record emphasizes a varied original-content slate and live sports coverage. CJ's 2025 announcement describes genre breadth, signature franchises, and year-round sports programming; a later CJ announcement frames international distribution as part of TVING's expansion. These facts explain the service's content scope and current direction, while the tokens in this reference remain tied only to the three captured Korean web routes. [TVING 2025 lineup](https://newsroom.cj.net/?p=5803) · [TVING global expansion](https://newsroom.cj.net/tving-partners-with-disney-japan-to-accelerate-global-expansion/)
|
|
226
239
|
|
|
227
|
-
|
|
240
|
+
## 12. Principles
|
|
228
241
|
|
|
229
|
-
1. **
|
|
230
|
-
2. **
|
|
231
|
-
3. **
|
|
242
|
+
1. **Keep content domains distinct.** TVING's official lineup differentiates original genres, signature programs, and sports. *UI implication:* do not collapse different route contexts into an invented universal component system.
|
|
243
|
+
2. **Use contrast for viewing-first chrome.** The captured routes use black, white, and measured gray values. *UI implication:* preserve text hierarchy before adding decorative color.
|
|
244
|
+
3. **Require state provenance.** The capture supplies menu-open and selected examples only. *UI implication:* make a state reusable only when its route, selector, and computed values are recorded.
|
|
232
245
|
|
|
233
|
-
|
|
246
|
+
## 13. Personas
|
|
234
247
|
|
|
235
|
-
|
|
248
|
+
*No first-party TVING persona research or demographic segmentation was collected for this reference. Do not fabricate customer archetypes, motivations, or survey findings.*
|
|
236
249
|
|
|
237
|
-
|
|
250
|
+
- [FILL IN: user-provided primary viewer segment and viewing context]
|
|
251
|
+
- [FILL IN: user-provided live or on-demand task]
|
|
252
|
+
- [FILL IN: user-provided accessibility or device requirement]
|
|
238
253
|
|
|
239
|
-
|
|
240
|
-
2. **Don't claim a six-category taxonomy without earning it.** The `--color-cate-*` system works because TVING genuinely has six content surface paradigms (live sports, live TV, VOD drama, VOD movie, clips, ads). Adopting six taxonomy hues for a product with three actual surfaces produces visual noise.
|
|
241
|
-
3. **Don't replicate `#FF153C` verbatim.** It is a CJ ENM brand color in spirit; shift via `delta_set` if you want a "TVING-like" warm scarlet — try `#E0142E` to `#FF2A4D` range with WCAG-checked contrast on dark surface.
|
|
242
|
-
4. **Don't skip Pretendard for "system font."** TVING's typography reads tight and modern because Pretendard's optical sizing differs from Apple SD Gothic Neo at the 12-18px display range. System fallback degrades the character meaningfully.
|
|
243
|
-
5. **Don't apply top-corners-only radius to non-poster cards.** That geometry is meaningful only when the bottom edge is an image bleed; on a text card it reads as a CSS mistake.
|
|
244
|
-
6. **Don't import the live-streaming geometry tokens as-is.** `--kbo-player-width: calc(100vw - 31.25rem)` is calibrated to TVING's specific sidebar — meaningless context elsewhere.
|
|
254
|
+
## 14. States
|
|
245
255
|
|
|
246
|
-
|
|
256
|
+
Only an opened content menu and a selected live tab were captured. The following product states require direct product-surface observation before specification:
|
|
247
257
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
258
|
+
| Category | Evidence status |
|
|
259
|
+
|---|---|
|
|
260
|
+
| Empty | [FILL IN: no observed state] |
|
|
261
|
+
| Loading | [FILL IN: no observed state] |
|
|
262
|
+
| Error | [FILL IN: no observed state] |
|
|
263
|
+
| Success | [FILL IN: no observed state] |
|
|
264
|
+
| Skeleton | [FILL IN: no observed state] |
|
|
265
|
+
| Disabled | [FILL IN: no observed state] |
|
|
253
266
|
|
|
254
|
-
## 15.
|
|
267
|
+
## 15. Motion & Easing
|
|
255
268
|
|
|
256
|
-
|
|
257
|
-
|---|---|---|---|
|
|
258
|
-
| 1, 2, 3, 4, 5, 6, 9 | Live CDP capture via browser-harness :9222 — 13 raw_samples, 114 :root CSS custom properties, 3000-node frequency analysis | 2026-05-15 | High |
|
|
259
|
-
| 7, 8 | Token-level signals only (interactions not triggered in static inspect) | 2026-05-15 | Medium (flagged for UPDATE) |
|
|
260
|
-
| 10 | Observed button labels + footer copy register; voice samples are OmD-original analyst reconstructions | 2026-05-15 | Medium (no verbatim adoption) |
|
|
261
|
-
| 11 | Public corporate narrative (CJ ENM / TVING Inc. press history) | 2026-05-15 | Medium (subscriber/CEO marked FILL IN) |
|
|
262
|
-
| 12 | **Inferred only** — no TVING-published persona research consulted | 2026-05-15 | Low (explicitly flagged) |
|
|
263
|
-
| 13 | OmD-original analytical guidance | 2026-05-15 | High (analyst opinion) |
|
|
264
|
-
|
|
265
|
-
### Tier 1 — Official Design System
|
|
266
|
-
**Result: negative (documented).**
|
|
267
|
-
|
|
268
|
-
Probed all canonical subdomain patterns:
|
|
269
|
-
- `design.tving.com` → DNS 000
|
|
270
|
-
- `brand.tving.com` → DNS 000
|
|
271
|
-
- `tech.tving.com` → DNS 000
|
|
272
|
-
- `tving.com/design` → 404
|
|
273
|
-
- GitHub `tving` org → 1 repo (`tving.github.io`, empty)
|
|
274
|
-
- CJ ENM corporate channels — no public TVING-branded DS portal
|
|
275
|
-
|
|
276
|
-
The production CSS `:root` token set (114 custom properties) extracted via live CDP capture is the closest authoritative public artifact and is treated here as the de-facto source of truth.
|
|
277
|
-
|
|
278
|
-
### Tier 2 — Third-party indexes
|
|
279
|
-
- `getdesign.md/q/tving` → 404
|
|
280
|
-
- `styles.refero.design/?q=tving` → 200 with no result cards
|
|
281
|
-
|
|
282
|
-
Consistent with the systemic Korean-coverage gap.
|
|
283
|
-
|
|
284
|
-
### IP Guardrails
|
|
285
|
-
- Brand assets (logo, name, `#FF153C`) referenced for analysis only — not redistributed.
|
|
286
|
-
- §10 Voice samples are **fresh OmD-original analyst reconstructions** in the observed register — no verbatim TVING marketing copy or taglines reproduced.
|
|
287
|
-
- §11 narrative is sourced from publicly reported facts (CJ ENM corporate history); subscriber/CEO/funding marked **[FILL IN]** where attribution fidelity is insufficient.
|
|
288
|
-
- §12 personas are explicitly inferred from market positioning; authentic persona work would require TVING-internal research.
|
|
289
|
-
- Content thumbnails (poster art, hero stills, episode metadata) NOT captured into product DOM or this DESIGN.md. Reference screenshot kept under fair-use commentary.
|
|
290
|
-
|
|
291
|
-
### Flagged for UPDATE pass
|
|
292
|
-
- Authenticated browse / VOD detail / live KBO player surfaces — gated, not inspected.
|
|
293
|
-
- Motion timing (poster card hover, player chrome fade, modal entrance) — requires interaction triggers.
|
|
294
|
-
- Exact live category-color usage on chrome — `--color-cate-*` system observed in tokens but per-surface application not visually verified.
|
|
295
|
-
- TVING subscriber count, current CEO, latest funding, founding-year specifics for §11.
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
|
-
*Captured via `omd:add-reference` (CREATE mode) on 2026-05-15. See `assets/_reference/` for tokens.json, structure.json, fonts.json, .live-inspect-proof.json, screenshots/, LICENSE-NOTE.md, attribution.md.*
|
|
300
|
-
|
|
301
|
-
## 16. Do's and Don'ts
|
|
302
|
-
|
|
303
|
-
### Do
|
|
304
|
-
- Lock the canvas to pure black (#000000) at the document root and build depth through surface contrast (#000 → #2E2E2E → rgba(15,15,15,0.74)) since box-shadow renders 0 0 #0000 across all product chrome
|
|
305
|
-
- Reserve the brand red #FF153C strictly for CTAs, brand marks, and live-status accents — keeping it to a handful of background nodes the way the doc samples only twelve red backgrounds across 3,000 nodes
|
|
306
|
-
- Drive content-area-aware chrome from the six --color-cate-* tokens (home #FF1F45, live #FF584A, clip #FD8163, VOD #387DFF, movie #7D57FC, ad #FCC800) so color carries product taxonomy
|
|
307
|
-
- Apply the top-corners-only radius (16.5292px 16.5292px 0 0) to poster cards so the image bleeds flush to the bottom metadata edge
|
|
308
|
-
- Set Pretendard as the exclusive typeface and hold weights to the binary 400 body / 700 heading-and-CTA scale, with no 500/600 intermediates
|
|
309
|
-
- Build primary CTAs as #FF153C background, #FFFFFF label, Pretendard 18.6px/700 with generous 19.6292px 62px padding so 4-syllable Korean labels never wrap
|
|
310
|
-
|
|
311
|
-
### Don't
|
|
312
|
-
- Spread #FF153C across large background areas or decorative fills — it is a CTA, brand-mark, and live-status accent only, never an ambient surface color
|
|
313
|
-
- Apply the locked dark canvas to non-video products, since #000 earns its energy from poster art and video frames a SaaS dashboard or marketplace cannot supply
|
|
314
|
-
- Adopt the six --color-cate-* taxonomy hues for a product with fewer than six genuine content surface paradigms, which only produces visual noise
|
|
315
|
-
- Reproduce #FF153C verbatim as it is a CJ ENM brand color — shift it within the #E0142E–#FF2A4D range with WCAG contrast checks on dark surface if you want a TVING-like scarlet
|
|
316
|
-
- Substitute a system font for Pretendard, whose optical sizing differs meaningfully from Apple SD Gothic Neo at the 12–18px display range
|
|
317
|
-
- Apply the top-corners-only radius to text cards or import the live geometry tokens (e.g. --kbo-player-width: calc(100vw - 31.25rem)) as-is, since both are calibrated to TVING's poster bleed and specific sidebar
|
|
269
|
+
No timing, easing, transition, or playback-control animation was captured. The opened-menu and selected-tab observations establish static states only. [FILL IN: product-specific motion evidence]
|