oh-my-design-cli 1.8.6 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/hooks/lib/preferences-parser.cjs +1 -0
- package/.claude/hooks/lib/preferences-writer.cjs +1 -0
- package/.claude/hooks/post-edit-watch.cjs +1 -0
- package/.claude/hooks/session-end-foldin.cjs +1 -0
- package/.claude/hooks/session-state-loader.cjs +1 -0
- package/.claude/hooks/skill-activation.cjs +1 -0
- package/.claude/settings.json +10 -1
- package/.github/assets/logo-bg.png +0 -0
- package/AGENTS.md +20 -1
- package/CHANGELOG.md +482 -0
- package/MIGRATION.md +103 -0
- package/README.ja.md +56 -19
- package/README.ko.md +47 -30
- package/README.md +48 -30
- package/README.zh-TW.md +59 -22
- package/agents/AGENT.md +8 -7
- package/agents/omd-codex-image.md +1 -1
- package/agents/omd-critic.md +6 -7
- package/agents/omd-designer-review.md +1 -1
- package/agents/omd-final-qa.md +1 -1
- package/agents/omd-humanizer.md +38 -0
- package/agents/omd-kr-writer.md +3 -4
- package/agents/omd-locale-adapter.md +12 -16
- package/agents/omd-master.md +24 -19
- package/agents/omd-microcopy.md +1 -1
- package/agents/omd-orchestrator.md +7 -8
- package/agents/omd-slop-auditor.md +31 -0
- package/agents/omd-ux-researcher.md +1 -1
- package/data/reference-fingerprints.json +2761 -85
- package/dist/bin/oh-my-design.js +16 -8
- package/dist/bin/oh-my-design.js.map +1 -1
- package/dist/chunk-UJIHCEYF.js +99 -0
- package/dist/chunk-UJIHCEYF.js.map +1 -0
- package/dist/doctor-LDWSFM3I.js +763 -0
- package/dist/doctor-LDWSFM3I.js.map +1 -0
- package/dist/install-skills-ZZFNJ2II.js +1120 -0
- package/dist/install-skills-ZZFNJ2II.js.map +1 -0
- package/docs/CLI_QUICKSTART.md +157 -0
- package/package.json +25 -4
- package/scripts/postinstall.cjs +5 -4
- package/skills/claude-design/SKILL.md +38 -14
- package/skills/claude-design/references/claude-design-flow.md +11 -11
- package/skills/claude-design/references/codebase-analysis.md +5 -4
- package/skills/omd-final-qa/SKILL.md +1 -1
- package/skills/omd-harness/SKILL.md +51 -50
- package/skills/omd-humanize/SKILL.md +116 -0
- package/skills/omd-humanize/agents/openai.yaml +4 -0
- package/skills/omd-humanize/references/locale-playbooks.md +102 -0
- package/skills/omd-humanize/references/sources.md +11 -0
- package/skills/omd-init/SKILL.md +18 -12
- package/skills/omd-locale-adapter/SKILL.md +58 -91
- package/skills/omd-orchestrator/SKILL.md +11 -5
- package/skills/omd-reference-capture/SKILL.md +80 -26
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
- package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
- package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
- package/skills/omd-slop-audit/SKILL.md +110 -0
- package/skills/omd-slop-audit/agents/openai.yaml +4 -0
- package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
- package/skills/omd-slop-audit/references/sources.md +24 -0
- package/web/references/104/DESIGN.md +354 -0
- package/web/references/11st/DESIGN.md +197 -316
- package/web/references/29cm/DESIGN.md +297 -393
- package/web/references/42dot/DESIGN.md +390 -0
- package/web/references/8percent/DESIGN.md +438 -0
- package/web/references/ably/DESIGN.md +267 -572
- package/web/references/acer/DESIGN.md +329 -0
- package/web/references/airbnb/DESIGN.md +219 -557
- package/web/references/airbridge/DESIGN.md +451 -0
- package/web/references/alipay/DESIGN.md +179 -420
- package/web/references/apple/DESIGN.md +224 -498
- package/web/references/asleep/DESIGN.md +402 -0
- package/web/references/au/DESIGN.md +334 -0
- package/web/references/autopedia/DESIGN.md +382 -0
- package/web/references/aws-cloudscape/DESIGN.md +241 -0
- package/web/references/baemin/DESIGN.md +332 -491
- package/web/references/banksalad/DESIGN.md +269 -180
- package/web/references/barogo/DESIGN.md +416 -0
- package/web/references/beusable/DESIGN.md +464 -0
- package/web/references/bigin/DESIGN.md +454 -0
- package/web/references/bilibili/DESIGN.md +206 -374
- package/web/references/bmw/DESIGN.md +162 -276
- package/web/references/brandi/DESIGN.md +184 -325
- package/web/references/buzzvil/DESIGN.md +457 -0
- package/web/references/cafe24/DESIGN.md +472 -0
- package/web/references/catchtable/DESIGN.md +219 -264
- package/web/references/cgv/DESIGN.md +317 -0
- package/web/references/channeltalk/DESIGN.md +210 -336
- package/web/references/china-airlines/DESIGN.md +291 -0
- package/web/references/cjonstyle/DESIGN.md +453 -0
- package/web/references/class101/DESIGN.md +168 -387
- package/web/references/classum/DESIGN.md +228 -203
- package/web/references/claude/DESIGN.md +242 -479
- package/web/references/clay/DESIGN.md +179 -377
- package/web/references/clickhouse/DESIGN.md +254 -343
- package/web/references/codeit/DESIGN.md +470 -0
- package/web/references/cohere/DESIGN.md +214 -324
- package/web/references/coinone/DESIGN.md +199 -179
- package/web/references/corca/DESIGN.md +414 -0
- package/web/references/coupang/DESIGN.md +205 -475
- package/web/references/cursor/DESIGN.md +240 -381
- package/web/references/dabang/DESIGN.md +248 -213
- package/web/references/dable/DESIGN.md +431 -0
- package/web/references/datarize/DESIGN.md +338 -0
- package/web/references/dealicious/DESIGN.md +402 -0
- package/web/references/drdiary/DESIGN.md +404 -0
- package/web/references/elastic/DESIGN.md +238 -0
- package/web/references/elevenlabs/DESIGN.md +183 -321
- package/web/references/elice/DESIGN.md +445 -0
- package/web/references/eslite/DESIGN.md +257 -0
- package/web/references/evaair/DESIGN.md +338 -0
- package/web/references/expo/DESIGN.md +238 -331
- package/web/references/familymart-tw/DESIGN.md +254 -0
- package/web/references/ferrari/DESIGN.md +160 -377
- package/web/references/figma/DESIGN.md +197 -451
- package/web/references/fitpet/DESIGN.md +445 -0
- package/web/references/flex/DESIGN.md +170 -253
- package/web/references/framer/DESIGN.md +197 -340
- package/web/references/freee/DESIGN.md +211 -533
- package/web/references/friendliai/DESIGN.md +431 -0
- package/web/references/frip/DESIGN.md +440 -0
- package/web/references/furiosaai/DESIGN.md +450 -0
- package/web/references/gangnamunni/DESIGN.md +154 -591
- package/web/references/gaudiolab/DESIGN.md +414 -0
- package/web/references/google/DESIGN.md +290 -398
- package/web/references/goorm/DESIGN.md +470 -0
- package/web/references/greencar/DESIGN.md +420 -0
- package/web/references/hackle/DESIGN.md +472 -0
- package/web/references/hashicorp/DESIGN.md +273 -318
- package/web/references/heydealer/DESIGN.md +429 -0
- package/web/references/humanscape/DESIGN.md +433 -0
- package/web/references/hwahae/DESIGN.md +453 -0
- package/web/references/hyundai/DESIGN.md +158 -368
- package/web/references/hyundaicard/DESIGN.md +171 -121
- package/web/references/ibm/DESIGN.md +227 -378
- package/web/references/idus/DESIGN.md +450 -0
- package/web/references/igaworks/DESIGN.md +437 -0
- package/web/references/inflearn/DESIGN.md +221 -366
- package/web/references/intuit/DESIGN.md +244 -0
- package/web/references/jandi/DESIGN.md +191 -291
- package/web/references/jobplanet/DESIGN.md +415 -0
- package/web/references/kakao/DESIGN.md +287 -475
- package/web/references/kakaobank/DESIGN.md +220 -521
- package/web/references/kakaogames/DESIGN.md +220 -0
- package/web/references/kakaopay/DESIGN.md +207 -526
- package/web/references/karrot/DESIGN.md +227 -251
- package/web/references/kb-kookmin/DESIGN.md +308 -0
- package/web/references/kbank/DESIGN.md +220 -175
- package/web/references/kcd/DESIGN.md +432 -0
- package/web/references/kmong/DESIGN.md +281 -356
- package/web/references/krds/DESIGN.md +245 -19
- package/web/references/kream/DESIGN.md +224 -359
- package/web/references/kurly/DESIGN.md +211 -533
- package/web/references/kyobobook/DESIGN.md +445 -0
- package/web/references/lablup/DESIGN.md +474 -0
- package/web/references/lamborghini/DESIGN.md +198 -360
- package/web/references/lemonbase/DESIGN.md +452 -0
- package/web/references/lguplus/DESIGN.md +259 -0
- package/web/references/likelion/DESIGN.md +283 -0
- package/web/references/line/DESIGN.md +396 -355
- package/web/references/linear.app/DESIGN.md +209 -562
- package/web/references/lotteon/DESIGN.md +386 -0
- package/web/references/lovable/DESIGN.md +255 -349
- package/web/references/makinarocks/DESIGN.md +242 -0
- package/web/references/maum-ai/DESIGN.md +423 -0
- package/web/references/medibloc/DESIGN.md +425 -0
- package/web/references/megabox/DESIGN.md +232 -0
- package/web/references/mercari/DESIGN.md +217 -434
- package/web/references/microsoft/DESIGN.md +234 -388
- package/web/references/mildang/DESIGN.md +411 -0
- package/web/references/millie/DESIGN.md +183 -504
- package/web/references/minimax/DESIGN.md +264 -322
- package/web/references/miricanvas/DESIGN.md +182 -355
- package/web/references/miro/DESIGN.md +234 -232
- package/web/references/mistral.ai/DESIGN.md +231 -314
- package/web/references/mixi/DESIGN.md +234 -0
- package/web/references/moin/DESIGN.md +445 -0
- package/web/references/mongodb/DESIGN.md +219 -316
- package/web/references/moreh/DESIGN.md +437 -0
- package/web/references/musinsa/DESIGN.md +184 -510
- package/web/references/mynavi/DESIGN.md +242 -0
- package/web/references/myrealtrip/DESIGN.md +169 -406
- package/web/references/naver/DESIGN.md +328 -499
- package/web/references/naverwebtoon/DESIGN.md +172 -395
- package/web/references/neosapience/DESIGN.md +441 -0
- package/web/references/nhn/DESIGN.md +169 -346
- package/web/references/nhncloud/DESIGN.md +185 -123
- package/web/references/nota/DESIGN.md +451 -0
- package/web/references/notion/DESIGN.md +271 -475
- package/web/references/nrise/DESIGN.md +417 -0
- package/web/references/ohouse/DESIGN.md +210 -549
- package/web/references/oliveyoung/DESIGN.md +217 -326
- package/web/references/ollama/DESIGN.md +241 -308
- package/web/references/onestore/DESIGN.md +248 -0
- package/web/references/palantir/DESIGN.md +256 -0
- package/web/references/panasonic/DESIGN.md +276 -0
- package/web/references/patternfly/DESIGN.md +259 -0
- package/web/references/payhere/DESIGN.md +438 -0
- package/web/references/pega/DESIGN.md +262 -0
- package/web/references/peoplefund/DESIGN.md +431 -0
- package/web/references/petfriends/DESIGN.md +428 -0
- package/web/references/pinkfong/DESIGN.md +199 -367
- package/web/references/pinterest/DESIGN.md +258 -308
- package/web/references/portone/DESIGN.md +446 -0
- package/web/references/poya/DESIGN.md +286 -0
- package/web/references/pozalabs/DESIGN.md +438 -0
- package/web/references/protopie/DESIGN.md +419 -0
- package/web/references/qraft/DESIGN.md +448 -0
- package/web/references/queenit/DESIGN.md +432 -0
- package/web/references/quotabook/DESIGN.md +449 -0
- package/web/references/rebellions/DESIGN.md +449 -0
- package/web/references/recruit/DESIGN.md +247 -0
- package/web/references/remember/DESIGN.md +202 -396
- package/web/references/resend/DESIGN.md +274 -348
- package/web/references/returnzero/DESIGN.md +460 -0
- package/web/references/sakura-internet/DESIGN.md +269 -0
- package/web/references/samsung/DESIGN.md +157 -359
- package/web/references/sandoll/DESIGN.md +445 -0
- package/web/references/sanity/DESIGN.md +241 -375
- package/web/references/saramin/DESIGN.md +465 -0
- package/web/references/scatterlab/DESIGN.md +412 -0
- package/web/references/selectstar/DESIGN.md +439 -0
- package/web/references/servicenow/DESIGN.md +289 -0
- package/web/references/shiftee/DESIGN.md +468 -0
- package/web/references/shinhanbank/DESIGN.md +161 -341
- package/web/references/shinhancard/DESIGN.md +208 -319
- package/web/references/sionic/DESIGN.md +454 -0
- package/web/references/sktelecom/DESIGN.md +310 -0
- package/web/references/socar/DESIGN.md +125 -32
- package/web/references/softbank/DESIGN.md +231 -0
- package/web/references/solapi/DESIGN.md +483 -0
- package/web/references/sony/DESIGN.md +234 -0
- package/web/references/soop/DESIGN.md +261 -0
- package/web/references/spacex/DESIGN.md +184 -323
- package/web/references/spotify/DESIGN.md +253 -394
- package/web/references/squeezebits/DESIGN.md +441 -0
- package/web/references/stayfolio/DESIGN.md +422 -0
- package/web/references/stripe/DESIGN.md +212 -491
- package/web/references/supabase/DESIGN.md +244 -316
- package/web/references/supertone/DESIGN.md +413 -0
- package/web/references/tabling/DESIGN.md +415 -0
- package/web/references/taishinbank/DESIGN.md +243 -0
- package/web/references/teamlab/DESIGN.md +240 -0
- package/web/references/teamsparta/DESIGN.md +472 -0
- package/web/references/tellingme/DESIGN.md +392 -0
- package/web/references/tesla/DESIGN.md +244 -427
- package/web/references/thsr/DESIGN.md +284 -0
- package/web/references/thumbtack/DESIGN.md +302 -0
- package/web/references/together.ai/DESIGN.md +257 -304
- package/web/references/toss/DESIGN.md +251 -593
- package/web/references/toss-securities/DESIGN.md +255 -178
- package/web/references/tossbank/DESIGN.md +195 -491
- package/web/references/toyota/DESIGN.md +238 -0
- package/web/references/tving/DESIGN.md +197 -245
- package/web/references/typed/DESIGN.md +413 -0
- package/web/references/uber/DESIGN.md +256 -333
- package/web/references/udn/DESIGN.md +250 -0
- package/web/references/upbit/DESIGN.md +145 -256
- package/web/references/upstage/DESIGN.md +211 -204
- package/web/references/uswds/DESIGN.md +287 -0
- package/web/references/vercel/DESIGN.md +236 -440
- package/web/references/vuno/DESIGN.md +413 -0
- package/web/references/wanted/DESIGN.md +215 -487
- package/web/references/weverse/DESIGN.md +437 -0
- package/web/references/wise/DESIGN.md +223 -231
- package/web/references/wisetracker/DESIGN.md +462 -0
- package/web/references/wooribank/DESIGN.md +245 -0
- package/web/references/yanolja/DESIGN.md +250 -419
- package/web/references/yeogiotte/DESIGN.md +235 -418
- package/web/references/zapier/DESIGN.md +256 -377
- package/web/references/zendesk/DESIGN.md +288 -0
- package/web/references/zigzag/DESIGN.md +200 -621
- package/dist/install-skills-7UUDOLG2.js +0 -734
- package/dist/install-skills-7UUDOLG2.js.map +0 -1
|
@@ -8,334 +8,289 @@ primary_color: "#ff3d00"
|
|
|
8
8
|
logo:
|
|
9
9
|
type: favicon
|
|
10
10
|
slug: "https://www.google.com/s2/favicons?domain=catchtable.co.kr&sz=256"
|
|
11
|
-
verified: "2026-
|
|
11
|
+
verified: "2026-07-13"
|
|
12
12
|
omd: "0.1"
|
|
13
|
+
verification_v2:
|
|
14
|
+
schema: 2
|
|
15
|
+
checked: "2026-07-13"
|
|
16
|
+
surfaces:
|
|
17
|
+
- { id: consumer-home, kind: consumer-product, url: "https://www.catchtable.net/", inspected: "2026-07-13" }
|
|
18
|
+
- { id: merchant-marketing, kind: b2b-marketing, url: "https://biz.catchtable.co.kr/n/main", inspected: "2026-07-13" }
|
|
19
|
+
- { id: careers-marketing, kind: careers-marketing, url: "https://career.catchtable.co.kr/ko/service", inspected: "2026-07-13" }
|
|
20
|
+
sources:
|
|
21
|
+
- { id: consumer-capture, kind: product-surface, url: "https://www.catchtable.net/", captured: "2026-07-13" }
|
|
22
|
+
- { id: merchant-capture, kind: product-surface, url: "https://biz.catchtable.co.kr/n/main", captured: "2026-07-13" }
|
|
23
|
+
- { id: careers-capture, kind: product-surface, url: "https://career.catchtable.co.kr/ko/service", captured: "2026-07-13" }
|
|
24
|
+
- { id: service-context, kind: official-doc, url: "https://career.catchtable.co.kr/ko/service", captured: "2026-07-13" }
|
|
25
|
+
- { id: font-design, kind: official-doc, url: "https://github.com/orioncactus/pretendard/blob/main/packages/pretendard/docs/en/README.md", captured: "2026-07-13" }
|
|
26
|
+
- { id: font-license, kind: license, url: "https://github.com/orioncactus/pretendard/blob/main/LICENSE", captured: "2026-07-13" }
|
|
27
|
+
conflicts: []
|
|
28
|
+
claims:
|
|
29
|
+
"tokens.colors.canvas": &consumer { surface_id: consumer-home, source_id: consumer-capture, method: computed-style, captured: "2026-07-13" }
|
|
30
|
+
"tokens.colors.foreground": *consumer
|
|
31
|
+
"tokens.colors.title": *consumer
|
|
32
|
+
"tokens.colors.muted": *consumer
|
|
33
|
+
"tokens.colors.search-surface": *consumer
|
|
34
|
+
"tokens.colors.control-border": *consumer
|
|
35
|
+
"tokens.colors.brand-orange": &career { surface_id: careers-marketing, source_id: careers-capture, method: computed-style, captured: "2026-07-13" }
|
|
36
|
+
"tokens.colors.on-brand": *career
|
|
37
|
+
"tokens.typography.family.ui": *consumer
|
|
38
|
+
"tokens.typography.consumer-body.size": *consumer
|
|
39
|
+
"tokens.typography.consumer-body.weight": *consumer
|
|
40
|
+
"tokens.typography.consumer-body.lineHeight": *consumer
|
|
41
|
+
"tokens.typography.consumer-body.use": *consumer
|
|
42
|
+
"tokens.typography.consumer-title.size": *consumer
|
|
43
|
+
"tokens.typography.consumer-title.weight": *consumer
|
|
44
|
+
"tokens.typography.consumer-title.lineHeight": *consumer
|
|
45
|
+
"tokens.typography.consumer-title.use": *consumer
|
|
46
|
+
"tokens.typography.search-control.size": *consumer
|
|
47
|
+
"tokens.typography.search-control.weight": *consumer
|
|
48
|
+
"tokens.typography.search-control.lineHeight": *consumer
|
|
49
|
+
"tokens.typography.search-control.use": *consumer
|
|
50
|
+
"tokens.typography.career-display.size": *career
|
|
51
|
+
"tokens.typography.career-display.weight": *career
|
|
52
|
+
"tokens.typography.career-display.lineHeight": *career
|
|
53
|
+
"tokens.typography.career-display.use": *career
|
|
54
|
+
"tokens.spacing.xs": *consumer
|
|
55
|
+
"tokens.spacing.sm": *consumer
|
|
56
|
+
"tokens.spacing.md": *consumer
|
|
57
|
+
"tokens.spacing.lg": *consumer
|
|
58
|
+
"tokens.rounded.square": *consumer
|
|
59
|
+
"tokens.rounded.discovery-tile": *consumer
|
|
60
|
+
"tokens.rounded.control": *consumer
|
|
61
|
+
"tokens.rounded.search": *consumer
|
|
62
|
+
"tokens.rounded.career-action": *career
|
|
63
|
+
"tokens.components.consumer-search.type": *consumer
|
|
64
|
+
"tokens.components.consumer-search.bg": *consumer
|
|
65
|
+
"tokens.components.consumer-search.fg": *consumer
|
|
66
|
+
"tokens.components.consumer-search.radius": *consumer
|
|
67
|
+
"tokens.components.consumer-search.padding": *consumer
|
|
68
|
+
"tokens.components.consumer-search.font": *consumer
|
|
69
|
+
"tokens.components.consumer-search.states": *consumer
|
|
70
|
+
"tokens.components.consumer-search.use": *consumer
|
|
71
|
+
"tokens.components.consumer-filter-control.type": *consumer
|
|
72
|
+
"tokens.components.consumer-filter-control.bg": *consumer
|
|
73
|
+
"tokens.components.consumer-filter-control.fg": *consumer
|
|
74
|
+
"tokens.components.consumer-filter-control.border": *consumer
|
|
75
|
+
"tokens.components.consumer-filter-control.radius": *consumer
|
|
76
|
+
"tokens.components.consumer-filter-control.height": *consumer
|
|
77
|
+
"tokens.components.consumer-filter-control.font": *consumer
|
|
78
|
+
"tokens.components.consumer-filter-control.states": *consumer
|
|
79
|
+
"tokens.components.consumer-filter-control.use": *consumer
|
|
80
|
+
"tokens.components.consumer-discovery-tile.type": *consumer
|
|
81
|
+
"tokens.components.consumer-discovery-tile.radius": *consumer
|
|
82
|
+
"tokens.components.consumer-discovery-tile.padding": *consumer
|
|
83
|
+
"tokens.components.consumer-discovery-tile.font": *consumer
|
|
84
|
+
"tokens.components.consumer-discovery-tile.states": *consumer
|
|
85
|
+
"tokens.components.consumer-discovery-tile.use": *consumer
|
|
86
|
+
"tokens.components.merchant-cta.type": &merchant { surface_id: merchant-marketing, source_id: merchant-capture, method: computed-style, captured: "2026-07-13" }
|
|
87
|
+
"tokens.components.merchant-cta.bg": *merchant
|
|
88
|
+
"tokens.components.merchant-cta.fg": *merchant
|
|
89
|
+
"tokens.components.merchant-cta.radius": *merchant
|
|
90
|
+
"tokens.components.merchant-cta.height": *merchant
|
|
91
|
+
"tokens.components.merchant-cta.font": *merchant
|
|
92
|
+
"tokens.components.merchant-cta.states": *merchant
|
|
93
|
+
"tokens.components.merchant-cta.use": *merchant
|
|
94
|
+
"tokens.components.careers-orange-action.type": *career
|
|
95
|
+
"tokens.components.careers-orange-action.bg": *career
|
|
96
|
+
"tokens.components.careers-orange-action.fg": *career
|
|
97
|
+
"tokens.components.careers-orange-action.radius": *career
|
|
98
|
+
"tokens.components.careers-orange-action.padding": *career
|
|
99
|
+
"tokens.components.careers-orange-action.font": *career
|
|
100
|
+
"tokens.components.careers-orange-action.states": *career
|
|
101
|
+
"tokens.components.careers-orange-action.use": *career
|
|
13
102
|
tokens:
|
|
14
|
-
source:
|
|
15
|
-
extracted: "2026-
|
|
16
|
-
note: "
|
|
103
|
+
source: reconciled
|
|
104
|
+
extracted: "2026-07-13"
|
|
105
|
+
note: "Selector-backed values are limited to the supplied consumer, merchant-marketing, and careers-marketing captures. These domains are not a single inferred product UI."
|
|
17
106
|
colors:
|
|
18
|
-
primary: "#ff3d00"
|
|
19
|
-
primary-hover: "#fa8d6b"
|
|
20
|
-
brand: "#ff3d00"
|
|
21
107
|
canvas: "#ffffff"
|
|
22
108
|
foreground: "#000000"
|
|
23
109
|
title: "#222222"
|
|
24
|
-
body-strong: "#424242"
|
|
25
110
|
muted: "#666666"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
icon-subtle: "#aaaaaa"
|
|
31
|
-
on-primary: "#ffffff"
|
|
32
|
-
surface-subdued: "#f9f9f9"
|
|
33
|
-
surface-muted: "#f5f5f5"
|
|
34
|
-
surface-cool: "#f2f5f7"
|
|
35
|
-
surface-cool-alt: "#f0f4fa"
|
|
36
|
-
border-default: "#e4e4e4"
|
|
37
|
-
border-cool: "#dce3e8"
|
|
38
|
-
info: "#186ade"
|
|
39
|
-
success: "#43c478"
|
|
40
|
-
success-strong: "#077d55"
|
|
41
|
-
error: "#d91f11"
|
|
42
|
-
warning: "#f5c518"
|
|
43
|
-
premium: "#8f49de"
|
|
111
|
+
search-surface: "#f5f5f5"
|
|
112
|
+
control-border: "#e4e4e4"
|
|
113
|
+
brand-orange: "#ff3d00"
|
|
114
|
+
on-brand: "#ffffff"
|
|
44
115
|
typography:
|
|
45
|
-
family: {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
search-input: { size: 13, weight: 500, lineHeight: 1.5, use: "Search placeholder #9e9e9e" }
|
|
53
|
-
neighbourhood-chip: { size: 13, weight: 500, lineHeight: 1.5, use: "청담, 압구정·로데오 style" }
|
|
54
|
-
caption: { size: 12, weight: 400, lineHeight: 1.5, use: "Timestamps, secondary meta" }
|
|
55
|
-
footer-body: { size: 11, weight: 400, lineHeight: 1.5, use: "Regulatory disclosure text" }
|
|
56
|
-
policy-link: { size: 11, weight: 500, lineHeight: 1.5, use: "Footer 서비스 이용약관 row" }
|
|
57
|
-
micro-meta: { size: 10, weight: 500, lineHeight: 1.5, use: "Slide counter 2 / 25, compact tab" }
|
|
58
|
-
spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 20, xl: 24, xxl: 32, section: 45 }
|
|
59
|
-
rounded: { sm: 4, md: 8, lg: 12, full: 999 }
|
|
60
|
-
shadow:
|
|
61
|
-
xs: "rgba(0,0,0,.12) 0 1px 2px, rgba(0,0,0,.08) 0 0 1px, rgba(0,0,0,.08) 0 0 1px"
|
|
62
|
-
sm: "rgba(0,0,0,.12) 0 2px 8px, rgba(0,0,0,.08) 0 1px 4px, rgba(0,0,0,.08) 0 0 1px"
|
|
63
|
-
drop: "rgba(0,0,0,.12) 0 2px 12px"
|
|
64
|
-
md: "rgba(0,0,0,.12) 0 6px 12px, rgba(0,0,0,.08) 0 4px 8px, rgba(0,0,0,.08) 0 0 4px"
|
|
65
|
-
lg: "rgba(0,0,0,.12) 0 16px 20px, rgba(0,0,0,.08) 0 8px 16px, rgba(0,0,0,.08) 0 0 8px"
|
|
66
|
-
components_harvested: true
|
|
116
|
+
family: { ui: "Pretendard Std Variable" }
|
|
117
|
+
consumer-body: { size: 16, weight: 400, lineHeight: 1.50, use: "Repeated consumer-home body and button sample" }
|
|
118
|
+
consumer-title: { size: 20, weight: 700, lineHeight: 1.50, use: "Consumer-home section-title sample" }
|
|
119
|
+
search-control: { size: 15, weight: 500, lineHeight: 1.50, use: "Consumer-home search input" }
|
|
120
|
+
career-display: { size: 38, weight: 700, lineHeight: 1.35, use: "Careers-service marketing heading" }
|
|
121
|
+
spacing: { xs: 4, sm: 8, md: 12, lg: 20 }
|
|
122
|
+
rounded: { square: 0, discovery-tile: 6, control: 8, search: 40, career-action: 15 }
|
|
67
123
|
components:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
124
|
+
consumer-search: { type: input, bg: "#f5f5f5", fg: "#000000", radius: "40px", padding: "0px 15px 0px 32px", font: "15px / 500 Pretendard Std Variable", states: "default only; no interaction state captured", use: "Consumer-home search input, selector home::[data-omd-capture=0]" }
|
|
125
|
+
consumer-filter-control: { type: button, bg: "#ffffff", fg: "#000000", border: "1px solid #e4e4e4", radius: "8px", height: "32px", font: "16px / 400 Pretendard Std Variable", states: "default only; no interaction state captured", use: "Consumer-home compact filter/control, selector home::[data-omd-capture=1]" }
|
|
126
|
+
consumer-discovery-tile: { type: button, radius: "6px", padding: "8px 12px", font: "16px / 400 Pretendard Std Variable", states: "default only; no interaction state captured", use: "Consumer-home image-led discovery tile, selector home::[data-omd-capture=17]" }
|
|
127
|
+
merchant-cta: { type: button, bg: "#002d4e", fg: "#ffffff", radius: "8px", height: "48px", font: "16px / 700 Pretendard", states: "default only; no interaction state captured", use: "Merchant-marketing CTA link, selector surface-2::[data-omd-capture=20]" }
|
|
128
|
+
careers-orange-action: { type: button, bg: "#ff3d00", fg: "#ffffff", radius: "15px", padding: "10.5px 24px", font: "16px / 400 Pretendard", states: "default only; no interaction state captured", use: "Careers-service marketing action, selector surface-3::[data-omd-capture=14]" }
|
|
129
|
+
components_harvested: true
|
|
74
130
|
---
|
|
75
131
|
|
|
76
132
|
# Design System Inspiration of CatchTable (캐치테이블)
|
|
77
133
|
|
|
78
134
|
## 1. Visual Theme & Atmosphere
|
|
79
135
|
|
|
80
|
-
CatchTable is
|
|
81
|
-
|
|
82
|
-
This isn't accidental minimalism — it's a vanilla-extract token system with **145 `:root` design tokens** discovered live (the namespace is `_11bicz7*`, a hashed identifier, so the system has no semantic names exposed publicly — only values). The token sheet defines a five-tier shadow ladder, a 33-color palette across brand / ink / surface / support-cool / semantic / overlay, a 10-step type scale that all share a **150% line-height contract**, and a radius family that defaults to `0px` on 92% of elements and softens only for rasterised thumbnails (`4px`), interactive controls (`8px`), and the primary CTA pill (`12px`). The discipline is the design.
|
|
83
|
-
|
|
84
|
-
Typographically the system is Pretendard-only — no display font, no brand-display moment, no signage-typography flex. Pretendard 400 carries roughly 91% of all rendered text, with 700 reserved for section titles (`음식종류별 BEST`, `캐치 매거진`) and price emphasis. The home flow opens with a search field on `#F5F5F5` fill, a location chip row, a 25-slide Swiper hero, a "어디로 가시나요?" neighbourhood-discovery row, a horizontally scrolling "음식종류별 BEST" pillar, and an editorial "캐치 매거진" magazine module before reaching a five-tab bottom nav (홈 / 저장 / 내 주변 / 마이다이닝 / MY). The overall impression is **taste-maker, not utility** — the brand wants to feel closer to a Michelin guide than to OpenTable.
|
|
85
|
-
|
|
86
|
-
**Key Characteristics:**
|
|
87
|
-
- Single accent `#FF3D00` (CatchTable Orange) deployed sparingly — single-CTA discipline, not flooded brand color
|
|
88
|
-
- Hard-square chrome (`0px` radius on 92% of elements) — sharpness amplifies food photography
|
|
89
|
-
- Pretendard-only stack, no display font; 150% line-height applied uniformly to all ~35 typography slots
|
|
90
|
-
- White-canvas + black-ink editorial restraint — depth lives in borders and surface tints, not shadows
|
|
91
|
-
- Five-tier shadow ladder defined in tokens but rarely fired on the home surface
|
|
92
|
-
- Mobile-first WebView shell with `status-bar-top` reservation — desktop is a porthole
|
|
93
|
-
- 5-tab bottom nav as the global IA spine; 마이다이닝 is the reservation-history / loyalty hub
|
|
94
|
-
- Editorial 캐치 매거진 module signals taste-maker positioning, not transactional booking
|
|
95
|
-
|
|
96
|
-
## 2. Color Palette & Roles
|
|
97
|
-
|
|
98
|
-
### Primary
|
|
136
|
+
CatchTable is a restaurant platform operated by WAD that connects the diner’s choice and reservation journey with merchant-side reservation, waiting, POS, pickup, and ordering operations. Its official careers narrative describes the consumer service as making a choice more certain and enjoyable, while its merchant site frames the other side as an integrated operating solution. The supplied public consumer home is visually quieter than those merchant and employer stories: a white field, black text, compact controls, image-led discovery tiles, and a single loaded `Pretendard Std Variable` family. The official careers surface supplies the current orange `#FF3D00` action treatment, but that marketing expression is kept distinct from the consumer home rather than generalized into a product-wide CTA system.
|
|
99
137
|
|
|
100
|
-
|
|
101
|
-
- **Pure White** (`#FFFFFF`): Page canvas, card surfaces. Clean, photograph-amplifying.
|
|
102
|
-
- **Title Black** (`#222222`): Section sub-titles, restaurant names, neighbourhood chip labels.
|
|
103
|
-
- **Pure Black** (`#000000`): Body text default, link text, nav labels. Maximum contrast.
|
|
138
|
+
The reference therefore preserves three source domains as three facts: consumer-product discovery, merchant marketing, and careers marketing. It does not claim that a merchant lead form or careers campaign button is a restaurant-booking control.
|
|
104
139
|
|
|
105
|
-
|
|
140
|
+
## 2. Layout & Grid
|
|
106
141
|
|
|
107
|
-
-
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
-
|
|
142
|
+
- The captured consumer home is a 1440×900 public route with a 38px search input, compact 32px control, centered 13px discovery labels, a 20px/700 section-title sample, and repeated image-led discovery tiles.
|
|
143
|
+
- Consumer search padding is asymmetric—`0px 15px 0px 32px`—which leaves room for a leading search affordance without asserting an unmeasured icon spec.
|
|
144
|
+
- Consumer discovery tiles are observed at 6px radius with `8px 12px` padding. The capture does not establish a universal card grid, breakpoint, or responsive rule.
|
|
145
|
+
- Merchant and careers surfaces have their own marketing layouts. Their button values are documented only as route-local examples below.
|
|
111
146
|
|
|
112
|
-
|
|
147
|
+
## 3. Color & Typography
|
|
113
148
|
|
|
114
|
-
|
|
115
|
-
- **Title** (`#222222`): Section sub-titles, list-item titles.
|
|
116
|
-
- **Body Strong** (`#424242`): Tab-bar labels at rest.
|
|
117
|
-
- **Body Muted** (`#666666`): Footer policy links, secondary descriptions.
|
|
118
|
-
- **Tertiary** (`#5F5F5F`): Chip-button text (e.g. 현재 위치로).
|
|
119
|
-
- **Placeholder** (`#9E9E9E`): Search-input placeholder.
|
|
120
|
-
- **Disabled** (`#B5B5B5`): Disabled controls.
|
|
121
|
-
- **Icon Default** (`#8F8F8F`): Footer regulatory text, icon default.
|
|
122
|
-
- **Icon Subtle** (`#AAAAAA`): Decorative icons.
|
|
149
|
+
### Color tokens
|
|
123
150
|
|
|
124
|
-
|
|
151
|
+
- `#FFFFFF` — observed consumer canvas and compact-control background.
|
|
152
|
+
- `#000000` — observed consumer foreground.
|
|
153
|
+
- `#222222` — observed consumer section-title and careers-heading ink.
|
|
154
|
+
- `#666666` — consumer-home muted text sample.
|
|
155
|
+
- `#F5F5F5` — consumer search background.
|
|
156
|
+
- `#E4E4E4` — consumer compact-control border.
|
|
157
|
+
- `#FF3D00` — careers-marketing action background; this is verified public brand expression, not a universal consumer-product status or CTA token.
|
|
125
158
|
|
|
126
|
-
|
|
127
|
-
- **Subdued** (`#F9F9F9`): Footer block fill.
|
|
128
|
-
- **Muted** (`#F5F5F5`): Search-input fill, chip rest state.
|
|
129
|
-
- **Cool** (`#F2F5F7`): Optional cool-tinted surface.
|
|
130
|
-
- **Cool Alt** (`#F0F4FA`): Info-tint surface paired with `#186ADE`.
|
|
159
|
+
### Typography evidence classes
|
|
131
160
|
|
|
132
|
-
|
|
161
|
+
- **Live consumer computed use:** `Pretendard Std Variable` is loaded/high confidence with 122 observed uses on the consumer home and seven jsDelivr subset source URLs. It is the only UI family promoted in `tokens.typography.family.ui`.
|
|
162
|
+
- **Live marketing computed use:** `Pretendard` is loaded/high confidence with 117 observed uses across the merchant and careers surfaces and source URLs from Lazyrockets plus jsDelivr. It is recorded as source-domain evidence, not added as a second consumer UI-family token.
|
|
163
|
+
- **Surface-local live use:** `NanumSquareRound` is loaded with one observed merchant-surface text use and eighteen source URLs; its low frequency and separate B2B surface keep it out of consumer tokens.
|
|
164
|
+
- **Declared-only assets:** Aggro, Arita-dotum-Medium, Cafe24Oneprettynight, Chosunilbo_myungjo, D2Coding, DungGeunMo, Gmarket Sans, NanumSquare, Inter, KaTeX faces, and other zero-use declarations in the bundle remain declared-only. They are neither rendered as substitutes nor promoted as CatchTable UI roles.
|
|
165
|
+
- **Official font/license boundary:** Pretendard’s upstream project distributes the family under SIL Open Font License 1.1. That license explains the font asset, while computed usage plus FontFaceSet/source corroboration is what establishes the observed public use above.
|
|
133
166
|
|
|
134
|
-
|
|
135
|
-
- **Border Default** (`#E4E4E4`): Standard card and input border.
|
|
136
|
-
- **Border Cool** (`#DCE3E8`): Cool-themed surface border.
|
|
167
|
+
## 4. Components
|
|
137
168
|
|
|
138
|
-
###
|
|
169
|
+
### Consumer search
|
|
139
170
|
|
|
140
|
-
|
|
171
|
+
**Default**
|
|
172
|
+
- Background: `#F5F5F5`
|
|
173
|
+
- Text: `#000000`
|
|
174
|
+
- Radius: `40px`
|
|
175
|
+
- Padding: `0px 15px 0px 32px`
|
|
176
|
+
- Font: `15px / 500 Pretendard Std Variable`
|
|
177
|
+
- Use: Consumer-home search input; `home::[data-omd-capture="0"]`.
|
|
141
178
|
|
|
142
|
-
###
|
|
179
|
+
### Consumer filter control
|
|
143
180
|
|
|
144
|
-
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
-
|
|
181
|
+
**Default**
|
|
182
|
+
- Background: `#FFFFFF`
|
|
183
|
+
- Text: `#000000`
|
|
184
|
+
- Border: `1px solid #E4E4E4`
|
|
185
|
+
- Radius: `8px`
|
|
186
|
+
- Height: `32px`
|
|
187
|
+
- Font: `16px / 400 Pretendard Std Variable`
|
|
188
|
+
- Use: Consumer-home compact control; `home::[data-omd-capture="1"]`.
|
|
149
189
|
|
|
150
|
-
###
|
|
190
|
+
### Consumer discovery tile
|
|
151
191
|
|
|
152
|
-
|
|
153
|
-
-
|
|
192
|
+
**Default**
|
|
193
|
+
- Radius: `6px`
|
|
194
|
+
- Padding: `8px 12px`
|
|
195
|
+
- Font: `16px / 400 Pretendard Std Variable`
|
|
196
|
+
- Use: Image-led consumer-home discovery tile; `home::[data-omd-capture="17"]`.
|
|
154
197
|
|
|
155
|
-
|
|
198
|
+
### Merchant marketing CTA
|
|
156
199
|
|
|
157
|
-
|
|
200
|
+
**Default**
|
|
201
|
+
- Background: `#002D4E`
|
|
202
|
+
- Text: `#FFFFFF`
|
|
203
|
+
- Radius: `8px`
|
|
204
|
+
- Height: `48px`
|
|
205
|
+
- Font: `16px / 700 Pretendard`
|
|
206
|
+
- Use: Merchant-marketing CTA link; `surface-2::[data-omd-capture="20"]`.
|
|
158
207
|
|
|
159
|
-
|
|
160
|
-
- **No brand display font.** No headline accent. Pretendard alone carries the entire system. This is a deliberate restraint — the photography is the brand.
|
|
208
|
+
### Careers orange action
|
|
161
209
|
|
|
162
|
-
|
|
210
|
+
**Default**
|
|
211
|
+
- Background: `#FF3D00`
|
|
212
|
+
- Text: `#FFFFFF`
|
|
213
|
+
- Radius: `15px`
|
|
214
|
+
- Padding: `10.5px 24px`
|
|
215
|
+
- Font: `16px / 400 Pretendard`
|
|
216
|
+
- Use: Careers-service marketing action; `surface-3::[data-omd-capture="14"]`.
|
|
163
217
|
|
|
164
|
-
|
|
165
|
-
|------|------|--------|-------------|-------|
|
|
166
|
-
| Section Title | 20px | 700 | 150% | `음식종류별 BEST`, `캐치 매거진`, search hero label `어디로 가시나요?` |
|
|
167
|
-
| Big Section | 18px | 700 | 150% | Larger card titles |
|
|
168
|
-
| Card Title | 16px | 600 | 150% | Restaurant card titles in list / detail surfaces |
|
|
169
|
-
| Body Default | 14px | 400 | 150% | **Dominant** — 900 of 1149 sampled elements; nav labels, list items, body |
|
|
170
|
-
| Tab Label | 14px | 400 | 150% | Bottom-tab labels |
|
|
171
|
-
| Chip Label | 14px | 500 | 150% | Geo chips, filter chips |
|
|
172
|
-
| Search Input | 13px | 500 | 150% | Placeholder color `#9E9E9E` |
|
|
173
|
-
| Neighbourhood Chip | 13px | 500 | 150% | `청담`, `압구정·로데오` style |
|
|
174
|
-
| Caption | 12px | 400 | 150% | Timestamps, secondary meta |
|
|
175
|
-
| Footer Body | 11px | 400 | 150% | Regulatory disclosure text |
|
|
176
|
-
| Policy Link | 11px | 500 | 150% | Footer `서비스 이용약관` row |
|
|
177
|
-
| Micro Meta | 10px | 500 | 150% | Slide counter `2 / 25`, bottom-tab compact mode |
|
|
218
|
+
The supplied bundle reports zero interaction records. No hover, pressed, focus, disabled, menu, dialog, validation, or responsive variants are claimed; the `surface-2` static pseudo-state samples are not promoted because the bundle has no corresponding interaction provenance.
|
|
178
219
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
- **150% line-height is a system-wide contract.** Every typography token across ~35 distinct slots ships `line-height: 150%`. Don't break this — vertical rhythm depends on it.
|
|
182
|
-
- **400 dominates, 700 punctuates.** Weight distribution observed: 400 = 91%, 500 = 5%, 700 = 2%, 450 = 2%, 600 = <1%. The "weight rhythm" is binary — body or title, almost nothing in between.
|
|
183
|
-
- **No tracking adjustments observed** — `letter-spacing: normal` is universal.
|
|
184
|
-
- **Micro text below WCAG body floor**: 10–11px appears on slide counters and legal disclosures. For ports to Latin-script translations, elevate these to ≥12px.
|
|
185
|
-
|
|
186
|
-
## 4. Radius & Shape
|
|
187
|
-
|
|
188
|
-
The geometry is **hard-square by default**:
|
|
220
|
+
---
|
|
189
221
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
| Interactive control (button, card pill, filter pill) | `8px` | 29 |
|
|
195
|
-
| Avatar / circular icon | `50%` | 13 |
|
|
196
|
-
| **Primary CTA pill** | `12px` | 3 |
|
|
197
|
-
| Pill-full (rare, special-case) | `999px` | 1 |
|
|
222
|
+
**Verified:** 2026-07-13
|
|
223
|
+
**Tier 1 sources:** `https://www.catchtable.net/` (consumer product surface), `https://biz.catchtable.co.kr/n/main` (merchant marketing), `https://career.catchtable.co.kr/ko/service` (careers marketing and official service context), `https://github.com/orioncactus/pretendard/blob/main/packages/pretendard/docs/en/README.md` (upstream font distribution/design boundary), and `https://github.com/orioncactus/pretendard/blob/main/LICENSE` (upstream font licence boundary)
|
|
224
|
+
**Tier 2 sources:** `https://getdesign.md/catchtable` (attempted; built-in web open safe-open failure/no usable record), `https://styles.refero.design/?q=catchtable` (attempted; built-in web open safe-open failure/no usable record), web search for both names (no CatchTable record returned)
|
|
225
|
+
**Conflicts unresolved:** none
|
|
198
226
|
|
|
199
|
-
|
|
227
|
+
Legacy claims about a 145-token semantic sheet, a universal 150% type contract, a five-tier shadow ladder, restaurant-booking CTA styling, bottom-navigation states, Swiper states, and a universal hard-square geometry were removed: the supplied 2026 capture does not substantiate them.
|
|
200
228
|
|
|
201
229
|
## 5. Elevation
|
|
202
230
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
| Tier | Token | Recipe |
|
|
206
|
-
|---|---|---|
|
|
207
|
-
| xs | `--shadow-xs` | `0 1px 2px rgba(0,0,0,.12), 0 0 1px rgba(0,0,0,.08), 0 0 1px rgba(0,0,0,.08)` |
|
|
208
|
-
| sm | `--shadow-sm` | `0 2px 8px rgba(0,0,0,.12), 0 1px 4px rgba(0,0,0,.08), 0 0 1px rgba(0,0,0,.08)` |
|
|
209
|
-
| drop | `--shadow-drop` | `0 2px 12px rgba(0,0,0,.12)` |
|
|
210
|
-
| md | `--shadow-md` | `0 6px 12px rgba(0,0,0,.12), 0 4px 8px rgba(0,0,0,.08), 0 0 4px rgba(0,0,0,.08)` |
|
|
211
|
-
| lg / modal | `--shadow-lg` | `0 16px 20px rgba(0,0,0,.12), 0 8px 16px rgba(0,0,0,.08), 0 0 8px rgba(0,0,0,.08)` |
|
|
212
|
-
|
|
213
|
-
Reserve elevation for: floating action buttons over photography, bottom sheets, sticky search bars on scroll, modal surfaces. Don't fire on cards-at-rest — borders or hairline alpha (`#00000014`) handle separation.
|
|
214
|
-
|
|
215
|
-
## 6. Spacing & Layout
|
|
231
|
+
The selector-backed consumer controls documented above have `box-shadow: none`. The merchant CTA has a route-local shadow, but no repeatable elevation scale is established across the three domains, so no shadow token is promoted.
|
|
216
232
|
|
|
217
|
-
|
|
233
|
+
## 6. Spacing & Shape
|
|
218
234
|
|
|
219
|
-
|
|
220
|
-
- **Section paddings**: `pb-45` and `mb-16` legacy utility classes — 45px bottom-of-section, 16px between modules.
|
|
221
|
-
- **Horizontal scrolling lists** dominate discovery — `음식종류별 BEST` is a swipe-row of best-of pills, not a vertical grid.
|
|
222
|
-
- **Bottom tab bar** owns the lowest 56–60px of the viewport.
|
|
235
|
+
The repeated small values in the supplied bundle support a conservative `4 / 8 / 12 / 20px` observed spacing set. Radius is deliberately source-specific: the consumer home includes square chrome, 6px discovery tiles, an 8px compact control, and a 40px search field; the careers action is 15px. These observations are not a global radius prescription.
|
|
223
236
|
|
|
224
|
-
## 7. Iconography &
|
|
237
|
+
## 7. Iconography & Imagery
|
|
225
238
|
|
|
226
|
-
|
|
227
|
-
- **Icons are line-style**, rendered as inline SVG; default stroke color `#8F8F8F` (icon-default), darkening to `#000` on active states.
|
|
228
|
-
- **No illustration system observed** on the home surface. Magazine articles inside 캐치 매거진 carry editorial photography rather than custom illustration.
|
|
239
|
+
The consumer home is image-led: repeated discovery tiles use a simple control shell around imagery and text. The capture exposes ordinary controls but no named icon library, stroke treatment, image ratio, or reusable media-card contract. Those details remain unclaimed.
|
|
229
240
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
- **Primary CTA pill**: `#FF3D00` fill, `#FFF` text, 14px/500 Pretendard, `12px` radius, ~44px tall — only one variant observed. Single-color, single-shape, single-CTA discipline.
|
|
233
|
-
- **Search input**: `#F5F5F5` fill, sharp `0px` corners, 13px/500 placeholder `#9E9E9E`, inline search icon left.
|
|
234
|
-
- **Chip / pill row**: 13–14px/500 ink, no fill at rest, no border at rest — separation by spacing alone (chips at `청담`, `압구정·로데오`, etc.).
|
|
235
|
-
- **Geo-toggle button** (현재 위치로): 14px/500, ink `#5F5F5F`, leading geo icon — text-style action button.
|
|
236
|
-
- **Best-of horizontal pill** (호텔 뷔페, 스시 오마카세): Image-led tile + 14px/400 ink label below — no card chrome, just photo + name.
|
|
237
|
-
- **Bottom tab bar**: 5 tabs (홈 / 저장 / 내 주변 / 마이다이닝 / MY), icon-over-label, 14px/400 ink default; active state inferred (not captured live this pass — flagged).
|
|
238
|
-
- **Swiper hero**: 25-slide carousel with counter pill (`2 / 25 / 전체`) on `rgba(20,24,29,0.74)` overlay.
|
|
239
|
-
- **Footer disclosure block**: `#F9F9F9` surface, 14px/400 corporate info, 11px/500 policy links separated by `|` pipe glyphs, 11px/400 regulatory disclaimer.
|
|
240
|
-
|
|
241
|
-
## 9. Accessibility & Locale
|
|
242
|
-
|
|
243
|
-
- **WCAG contrast** — `#000` on `#FFF` body is 21:1 (max); `#222`/`#FFF` titles are 16.1:1; `#FF3D00`/`#FFF` CTA pill is **3.7:1** — **fails AA for normal text but passes AA for large text (18pt+/14pt bold equivalent)**. Since the CTA pill ships 14px/500 (below the bold threshold), this sits at the **borderline AA fail** for body. The system as shipped accepts the trade-off; ports must either bold the CTA label or darken the orange to `#E63600` (≈4.6:1) for strict AA.
|
|
244
|
-
- **Micro text below body floor**: 10–11px slide counters and footer disclaimers are below WCAG body recommendations. Ports to Latin scripts (where stroke widths increase) should elevate to ≥12px.
|
|
245
|
-
- **No landmark elements observed in initial capture** — `<main>` is present but no `<aside>` / explicit `role` annotations on the bottom tab bar. A11y debt; flag for ports.
|
|
246
|
-
- **Locale convention**: Korean restaurant-reservation flows assume KR mobile carriers, KakaoTalk-style identity, and 24h reservation windows. The 마이다이닝 (My Dining) IA spine is loyalty-flavoured, not transaction-flavoured — ports should consider whether the destination market expects a "Reservations" history rather than a "Dining" hub.
|
|
247
|
-
|
|
248
|
-
## 10. Voice & Microcopy
|
|
249
|
-
|
|
250
|
-
**Voice shape** (analyst characterisation — not verbatim CatchTable copy): **curatorial-warm, gerund-light, second-person-implied**. The on-surface copy treats the user as a diner choosing a story, not a customer completing a transaction.
|
|
251
|
-
|
|
252
|
-
Don'ts:
|
|
253
|
-
- Don't write "Book now." The brand's invitation is softer.
|
|
254
|
-
- Don't write "X% off" stickers across photography. The system is photograph-respectful.
|
|
255
|
-
- Don't write urgency timers. Magazine, not flash sale.
|
|
256
|
-
|
|
257
|
-
Voice samples (fresh OmD-original characterisations, **not** lifted from CatchTable copy — three options to triangulate the shape):
|
|
258
|
-
|
|
259
|
-
1. *"오늘의 자리, 천천히 골라보세요."* — invitation framing, soft imperative.
|
|
260
|
-
2. *"이번 주말, 어디서 드실래요?"* — question framing, peer-to-peer warmth.
|
|
261
|
-
3. *"미식의 시작, 한 자리에서."* — slogan-shape, factual + warm.
|
|
262
|
-
|
|
263
|
-
**IP guardrail**: The title-tag phrase "즐거운 미식 생활의 시작" is quoted **once** in §11 as a factual brand-narrative reference and is **not** adopted as headline copy in any sample above. The gerund-lite, curatorial register is documented as a *shape*, not reproduced.
|
|
264
|
-
|
|
265
|
-
## 11. Brand Narrative (factual provenance)
|
|
241
|
+
### Do
|
|
266
242
|
|
|
267
|
-
|
|
243
|
+
- Keep restaurant imagery and discovery content tied to the consumer surface where they were observed.
|
|
244
|
+
- Preserve the separation between diner discovery imagery and merchant lead-generation content.
|
|
268
245
|
|
|
269
|
-
|
|
246
|
+
### Don't
|
|
270
247
|
|
|
271
|
-
|
|
248
|
+
- Invent a named icon library, stroke specification, or image ratio that the evidence does not establish.
|
|
249
|
+
- Recast merchant marketing imagery as an observed consumer reservation component.
|
|
272
250
|
|
|
273
|
-
|
|
251
|
+
## 8. Accessibility
|
|
274
252
|
|
|
275
|
-
-
|
|
276
|
-
-
|
|
277
|
-
-
|
|
253
|
+
- The consumer search has black text on `#F5F5F5`; the compact control has black text on white with a `#E4E4E4` border.
|
|
254
|
+
- The careers orange action is `#FFFFFF` on `#FF3D00`; it is a marketing observation, not an accessibility approval for all consumer actions.
|
|
255
|
+
- No keyboard or focus-visible state was captured. Any implementation needs its own accessible focus treatment rather than inferring one from the recorded radii.
|
|
256
|
+
- Declared-only fonts must not be presented as loaded CatchTable faces.
|
|
278
257
|
|
|
279
|
-
##
|
|
258
|
+
## 9. Content & Voice
|
|
280
259
|
|
|
281
|
-
|
|
260
|
+
Official careers copy frames the consumer experience around making a dining choice with more confidence and enjoyment, and the merchant experience around connecting reservation, waiting, POS, and store operations. Use that clarity—choice for diners, operational continuity for merchants—without copying slogans or turning a careers narrative into consumer-product microcopy.
|
|
282
261
|
|
|
283
|
-
|
|
284
|
-
- ❌ Softening every corner. 92% of chrome is `0px` radius — sharpness is the brand.
|
|
285
|
-
- ❌ Adding a display / brand-typography font. Pretendard alone is the entire system.
|
|
286
|
-
- ❌ Firing shadows on cards at rest. Depth = borders + hairline alpha.
|
|
287
|
-
- ❌ "Book now" urgency rhetoric or countdown timers. Voice is curatorial, not transactional.
|
|
288
|
-
- ❌ Discount stickers stamped on food photography. Photography is sovereign.
|
|
289
|
-
- ❌ Breaking the 150% line-height contract. Every text slot ships 150% — don't compress.
|
|
290
|
-
- ❌ Treating desktop as the primary canvas. Design ships to mobile WebView; desktop is a porthole.
|
|
262
|
+
## 10. Voice & Tone
|
|
291
263
|
|
|
292
|
-
|
|
264
|
+
**Voice adjectives:** clear · food-centered · operationally concrete
|
|
293
265
|
|
|
294
|
-
|
|
266
|
+
| Do | Don't |
|
|
267
|
+
|---|---|
|
|
268
|
+
| Describe a diner choice or a concrete restaurant operation. | Invent urgency, discounts, or reservation states that were not captured. |
|
|
269
|
+
| Keep consumer and merchant messages audience-specific. | Treat a merchant lead-generation CTA as a diner-booking control. |
|
|
270
|
+
| Use calm, direct Korean service language. | Reproduce official slogans as generated product copy. |
|
|
295
271
|
|
|
296
|
-
##
|
|
272
|
+
## 11. Brand Narrative
|
|
297
273
|
|
|
298
|
-
|
|
299
|
-
- `design.catchtable.co.kr` → DNS no-resolve (000)
|
|
300
|
-
- `tech.catchtable.co.kr` → DNS no-resolve (000)
|
|
301
|
-
- `www.catchtable.co.kr/brand` → 302 redirect (no brand portal)
|
|
302
|
-
- `github.com/catchtable` → 200 but only 3 public repos (`prerender-java`, `claude-hud`, `brand-review-tool`); **no design-system / Storybook / tokens repo**
|
|
303
|
-
- `getdesign.md/catchtable` → "No designs found for 'catchtable'"
|
|
304
|
-
- `styles.refero.design/?q=catchtable` → no result cards
|
|
305
|
-
- **Result**: **Tier 1 official DS = authoritative NEGATIVE.** The system lives in production code as a vanilla-extract token sheet — captured here directly via CDP (145 `:root` vars on `app.catchtable.co.kr/`).
|
|
274
|
+
CatchTable’s official careers page describes a service present around meaningful meals and store opening/growth moments. It identifies the consumer side as CatchTable (B2C), where reservations and waiting support the dining journey, and the merchant side as CatchTable Business (B2B), combining reservation, waiting, and POS operations. The same page reports a current ambition to grow into a food-service super-platform. WAD’s official service terms identify the operating company as 주식회사 와드.
|
|
306
275
|
|
|
307
|
-
|
|
276
|
+
## 12. Principles
|
|
308
277
|
|
|
309
|
-
|
|
278
|
+
1. **Keep the two-sided service legible.** Consumer discovery and merchant operations are related but not the same UI surface.
|
|
279
|
+
2. **Promote only observed public styles.** A selector-backed product token does not authorize a plausible restaurant-detail or reservation-flow variant.
|
|
280
|
+
3. **Let food discovery carry the consumer surface.** The captured consumer home uses image-led tiles and compact controls rather than a generalized sales dashboard.
|
|
281
|
+
4. **Treat orange by source domain.** `#FF3D00` is verified on the careers marketing action; do not automatically use it as a universal consumer semantic color.
|
|
310
282
|
|
|
311
|
-
|
|
312
|
-
- `assets/_reference/.live-inspect-proof.json` — 10 raw_samples (≥5 floor), full frequency proof, 33-color token map, 5-tier shadow ladder.
|
|
313
|
-
- `assets/_reference/.live-inspect-raw.json` — provenance manifest.
|
|
314
|
-
- `assets/_reference/tokens.json` — normalised colour / typography / radius / elevation / spacing.
|
|
315
|
-
- `assets/_reference/fonts.json` — Pretendard stack + weight-role map.
|
|
316
|
-
- `assets/_reference/structure.json` — IA + heading outline + tone-observed.
|
|
317
|
-
- `_research.md` — 5-tier source map + IP guardrails + flags.
|
|
283
|
+
## 13. Personas
|
|
318
284
|
|
|
319
|
-
|
|
285
|
+
The official service description names two stakeholder groups; this reference keeps them as groups rather than inventing demographic personas:
|
|
320
286
|
|
|
321
|
-
- **
|
|
287
|
+
- **Diners:** use the consumer service to discover restaurants, make reservations, and use waiting-related experiences.
|
|
288
|
+
- **Restaurant operators:** use merchant-side reservation, waiting, POS, pickup, order, and management functions.
|
|
322
289
|
|
|
323
|
-
|
|
290
|
+
## 14. States
|
|
324
291
|
|
|
325
|
-
|
|
292
|
+
Only default static component samples are documented. The raw bundle contains zero interaction records, so loading, error, success, focus, hover, pressed, disabled, menu-open, dialog-open, and responsive states are intentionally omitted.
|
|
326
293
|
|
|
327
|
-
|
|
328
|
-
- Reserve CatchTable Orange (#FF3D00) for the single primary CTA pill only, where it appears in just 4 text/icon contexts across a 3000-element scan
|
|
329
|
-
- Keep chrome hard-square at 0px radius (92% of elements), softening only to 4px for photo thumbnails, 8px for interactive controls, and 12px for the primary CTA pill
|
|
330
|
-
- Set Pretendard as the sole typeface across the entire system with no display or headline font, letting food photography be the brand moment
|
|
331
|
-
- Apply line-height: 150% to every typography slot, from the 20px/700 Section Title down to the 10px/500 Micro Meta, as a system-wide contract
|
|
332
|
-
- Carry separation with borders and hairline alpha (#00000014) on cards at rest, reserving the five-tier shadow ladder for FABs, bottom sheets, sticky search bars, and modals
|
|
333
|
-
- Keep body weight at Pretendard 400 (91% of text) and punctuate only with 700 for section titles and price emphasis
|
|
294
|
+
## 15. Motion
|
|
334
295
|
|
|
335
|
-
|
|
336
|
-
- Flood sections or large backgrounds with brand orange #FF3D00 — it is a single-CTA color, not a section-fill color
|
|
337
|
-
- Apply a global border-radius reset like 8px to the chrome — it erases the hard-square 0px signature that frames the photography
|
|
338
|
-
- Add a display or brand-typography font alongside Pretendard, which alone carries 91% of all rendered text
|
|
339
|
-
- Fire shadows on cards at rest — depth is meant to come from borders and hairline alpha, not the shadow ladder
|
|
340
|
-
- Stamp discount stickers, X% off badges, or countdown timers over food photography, which the system treats as sovereign
|
|
341
|
-
- Confuse semantic Danger red #D91F11 with brand orange #FF3D00, or compress the 150% line-height contract
|
|
296
|
+
No duration, easing, transition, carousel, or scroll state is recorded in the supplied evidence. Motion is intentionally undocumented.
|