oh-my-design-cli 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +37 -0
  3. package/data/reference-fingerprints.json +380 -2
  4. package/dist/bin/oh-my-design.js +1 -1
  5. package/dist/{install-skills-IETT2TBJ.js → install-skills-UKEVE3KT.js} +11 -9
  6. package/dist/{install-skills-IETT2TBJ.js.map → install-skills-UKEVE3KT.js.map} +1 -1
  7. package/package.json +8 -3
  8. package/scripts/postinstall.cjs +6 -6
  9. package/web/references/91app/DESIGN.md +151 -0
  10. package/web/references/airtable/DESIGN.md +16 -2
  11. package/web/references/bithumb/DESIGN.md +170 -0
  12. package/web/references/bunjang/DESIGN.md +19 -0
  13. package/web/references/cakeresume/DESIGN.md +162 -0
  14. package/web/references/catchtable/DESIGN.md +19 -0
  15. package/web/references/classum/DESIGN.md +19 -0
  16. package/web/references/dabang/DESIGN.md +19 -0
  17. package/web/references/dji/DESIGN.md +0 -1
  18. package/web/references/fastcampus/DESIGN.md +19 -0
  19. package/web/references/flex/DESIGN.md +19 -0
  20. package/web/references/gmarket/DESIGN.md +19 -0
  21. package/web/references/gogolook/DESIGN.md +126 -0
  22. package/web/references/hahow/DESIGN.md +158 -0
  23. package/web/references/hyundaicard/DESIGN.md +172 -0
  24. package/web/references/inflearn/DESIGN.md +19 -0
  25. package/web/references/kbank/DESIGN.md +18 -0
  26. package/web/references/kdan/DESIGN.md +160 -0
  27. package/web/references/kkbox/DESIGN.md +114 -0
  28. package/web/references/kream/DESIGN.md +18 -0
  29. package/web/references/lunit/DESIGN.md +19 -0
  30. package/web/references/melon/DESIGN.md +153 -0
  31. package/web/references/nhncloud/DESIGN.md +174 -0
  32. package/web/references/oliveyoung/DESIGN.md +19 -0
  33. package/web/references/rayark/DESIGN.md +132 -0
  34. package/web/references/sendbird/DESIGN.md +285 -0
  35. package/web/references/socar/DESIGN.md +18 -0
  36. package/web/references/toss-securities/DESIGN.md +19 -0
  37. package/web/references/tving/DESIGN.md +18 -0
  38. package/web/references/upbit/DESIGN.md +19 -0
  39. package/web/references/upstage/DESIGN.md +18 -0
  40. package/web/references/velog/DESIGN.md +168 -0
  41. package/web/references/wadiz/DESIGN.md +19 -0
  42. package/web/references/webflow/DESIGN.md +16 -2
  43. package/web/references/yeogiotte/DESIGN.md +19 -0
  44. package/data/architecture-proposals/2026-05-13-thin-install-fresh-fetch.md +0 -189
  45. package/data/issues/2026-05-13-multi-surface-schema-rfc.md +0 -67
  46. package/data/reference-audits/2026-05-13-kr10.md +0 -132
  47. package/data/reference-audits/2026-05-14-kr10.md +0 -72
  48. package/data/reference-audits/2026-05-15-kr10.md +0 -124
  49. package/data/research/2026-05-18-agent-landscape.md +0 -69
  50. package/data/research/2026-05-18-kr-style-presets.md +0 -572
@@ -1,72 +0,0 @@
1
- # Batch Audit — 2026-05-14 / KR finance
2
-
3
- **Theme**: Korean digital-first banks (extending the KR-10 set with live-token capture)
4
- **Skill**: `omd:add-reference` CREATE — with live CDP token harness
5
- **Verification date**: 2026-05-14
6
-
7
- ---
8
-
9
- ## Audit rows
10
-
11
- | id | name | country | category | url | tier1_live | tier1_official_ds | tier2_indexes | raw_samples | css_vars | flags |
12
- |---|---|---|---|---|---|---|---|---|---|---|
13
- | kbank | K bank (케이뱅크) | KR | finance | https://www.kbanknow.com | ✓ CDP :9222 / getComputedStyle on `/ib20/mnu/PBKMAN000000` | ✗ negative — no public DS site (design.kbanknow.com no DNS; no GitHub design-system repo; no Figma Community kit). Documented as authoritative negative result in §11/§12. | ✗ getdesign.md empty; ✗ styles.refero.design empty (kbank + 케이뱅크 both) | 6 | 43 | a11y: no landmark elements; H1 uses font-size:0 image-replacement; fixed 1280px canvas — all logged in §8/§10 |
14
- | classum | Classum (클라썸) | KR | education | https://business.classum.com | ✓ CDP :9222 / getComputedStyle on `business.classum.com` + production Webflow CSS bundle (13,904 lines) frequency analysis | ✗ negative — no public DS / brand portal; `classum.com/brand` title-only; no Figma library, no design.classum.com, no GitHub design-system repo. Closed B2B SaaS as of 2026-05-14. | ✗ getdesign.md `classum` → "No designs found"; ✗ styles.refero.design empty | 6 | 0 (no `:root` token vars — Webflow-class-driven theming) | 14px Korean-density body sits at WCAG floor; primary CTA `#FF4438` on white ≈4.3:1 (borderline AA); single-color CTA palette shares brand red with destructive — downstream should split semantic vs brand |
15
- | lunit | Lunit (루닛) | KR | healthcare | https://www.lunit.io | ✓ CDP :9222 / getComputedStyle on `www.lunit.io/` — 34 + 23 targeted samples across hero H1, 7 sections, stats band, 5 CTA candidates, 4 nav links, body paragraphs, footer | ✗ negative — `design.lunit.io` no DNS; GitHub org `lunit-io` has 10 public repos, all medical-imaging / ML research (`archon`, `dicom-rs`, `mmg-model-nia`, `nlst-nodule-detection`, `ocelot23algo`, `openslide`, `spec-cxr`, …), zero design-system / Storybook / tokens repo; HTML keyword scan for `design-system / brand-guidelines / lunit-ui / storybook` returns no hits. Documented as authoritative negative result in §15. | ✗ getdesign.md `lunit` not present; ✗ styles.refero.design empty (lunit + 루닛) | 8 | 0 Lunit-namespaced (only WordPress `--wp-*` defaults) — corroborates "no public DS" finding | Stack = WordPress + Oxygen Builder + AOS. Signature blue `#1032cf` is **withheld from primary CTA** (CTA is black pill `#000` / radius 100px) — unusual brand-color discipline; primary geometric thesis is binary radius `0px` everywhere except CTA pill; LIGHT-weight typography defaults (Lexend 300 / ClashGrotesk 400) anti-pharma. |
16
- | flex | flex (플렉스) | KR | saas / hr | https://flex.team | ✓ CDP :9222 / getComputedStyle on `flex.team/` — 40 samples across header, nav, hero (`.l2024_dark`), manifesto cards, service filter pills, h1/h2/h3, primary/secondary buttons; 9 curated `raw_samples` in proof | ✗ negative — no `design.flex.team` DNS; `flex.team/design` and `/brand` 404; no public Storybook / Figma library; no GitHub org-level design-system repo. Documented as authoritative negative result in `_research.md`. Corporate data sourced from `thevc.kr/Flex` (founder 장해남, 2019-05 founding, Seongnam HQ, Series B, ~213 employees as of 2026-03). | ✗ getdesign.md `flex` → "No entry"; ✗ styles.refero.design `?q=flex.team` no result cards (also tried `?q=flex` — collides with Flex Ltd. manufacturing, irrelevant) | 9 in `.live-inspect-proof.json` (40 in raw) | 0 Flex-namespaced (Stitches/CSS-in-JS `l2024-c-*` class system, not `:root` custom props) | **One-ink discipline**: `#1D1D1F` + alpha-stepped (0.04/0.10/0.24/0.72/0.96) — no semantic blue/green/red on marketing surface. **Pill rings, not borders**: `box-shadow 0 0 0 1px inset` instead of `border` (no layout shift on hover). **Inverted h1/h2 size**: hero h1=28px, in-page h2=52px with -1.56px tracking (the visual signature). **Theme flip via class**: `.l2024_dark` / `.l2024_light` toggles surfaces section-by-section, not by token swap. Motion tokens partially inferred (entry fade observed, exact durations not captured in single CDP pass) — flagged in §15. |
17
- | upbit | Upbit (업비트) | KR | finance / crypto-exchange | https://upbit.com | ✓ CDP :9222 / getComputedStyle on **two surfaces** — `/home` (41 samples) + `/exchange?code=CRIX.UPBIT.KRW-BTC` (80 samples) = **121 raw samples** across buttons, anchors, inputs, role=button, role=tab, nav children, market/coin classes, table rows/cells/headers, h1-h3, price classes, Emotion `css-*` classes | ✗ negative — `design.upbit.com` DNS 000; `upbit.com/brand` 301 → marketing root; `design.dunamu.com` DNS 000; `dunamu.com` 200 (corporate vision/IR/ESG, no DS surface); Naver blog `dunamupr` is PR not design; WebSearch / GitHub no canonical hit. Documented as authoritative negative in `_research.md`. | ✗ getdesign.md explicit text "No designs found for 'upbit'"; ✗ styles.refero.design `?q=upbit` no result cards | 121 (12 shipped in `.live-inspect-proof.json`, ≥5 floor) | 263 page-level CSS vars captured (Emotion-generated, not Upbit-namespaced design tokens — corroborates "no public DS") | **Locale-critical** rise/fall convention (KR red=up / blue=down) — any port outside KR/JP/TW must invert. Hit-target trade-off: 28px quick-fill tags below WCAG 2.5.5 (44px) — explicit speed-over-floor decision called out in §9. Legacy IE-era font fallback chain (Dotum / 돋움) not pruned by Upbit — documented, not "fixed". State / motion tokens partially inferred (no live error-state capture this pass) — flagged as follow-up. |
18
- | wadiz | Wadiz (와디즈) | KR | commerce / crowdfunding | https://www.wadiz.kr | ✓ CDP :9222 attempted (handshake 403 — `--remote-allow-origins` guard); fallback = direct curl of production CSS bundle `static.wadiz.kr/main/main.css` (936473 bytes — authoritative full-token source) + `wui.css` reset + 3 HTML surfaces (`/`, `/web/wreward/category/289`, `/web/main`). All `#00c4c4` (111×), `#191f28` (208×), radius `8px` (112×), `font-weight:700` (358×), and named module classes (`Button_mint`, `Button_blue`, `Button_red`, `Button_yellow`, `Button_contained`, `Button_tint`, `LabelBadge_solid`/`outlined`/`tint`) directly observed via frequency analysis. Reproducible: `curl -sL https://static.wadiz.kr/main/main.css \| grep -c "#00c4c4"` → 111. | △ partial — Wadiz blog (`blog.wadiz.kr`) is known to publish "와디즈 디자인 시스템 구축하기" (referenced in Wadiz internal search snippet), but direct article URL 404 on this pass (likely renamed/moved). No `design.wadiz.kr` DNS, no `/web/wbrand` page, no GitHub org-level design-system repo. Documented as **partial-positive** (existence attested, canonical URL pending re-discovery) in §15. Followup: re-find article URL in UPDATE pass. | ✗ getdesign.md `wadiz` → "No designs found"; ✗ styles.refero.design `?q=wadiz` empty | 8 in `.live-inspect-proof.json` (≥5 floor) — selectors: filled-mint CTA, mint hover, tint mint button, checkbox-checked, yellow LabelBadge solid + tint, body font-family, CardThumbnail | 5 root CSS vars (`--dark`, `--white-68`, `--black-84`, `--black-54`, `--pale-grey-30`) — CSS Modules class system, not heavy token-var usage. Token system lives in named class variants (`Button_mint`, `LabelBadge_yellow`) rather than `:root --tokens`. | **A11y weak point** (documented, not fixed): filled mint CTA `#00c4c4` background + `#fff` text = 2.7:1 (borderline AA fail); outlined mint text `#00c4c4` on `#e6fafa` = 2.4:1 — system as shipped accepts the trade-off, called out in §9. **IP guardrail tight**: no verbatim Wadiz copy; gerund `-하기` verb pattern + factual funding-state vocabulary documented as voice *shape*, not reproduced. **Personas explicitly inferred** (§11 marked FILL-IN). **Detail-page + funding-sheet flows not inspected** — UPDATE pass recommended. CDP fallback to curl is *higher signal* than runtime DOM sampling because the 936KB bundle exposes the entire token system (not just rendered-DOM applied styles). |
19
- | kream | KREAM (크림) | KR | marketplace | https://kream.co.kr | ✓ CDP :9222 / getComputedStyle on **two surfaces** — `/` (40 raw samples; 50+ `--greyscale-*` CSS custom properties extracted from `:root`) + `/search?keyword=nike` (43 raw samples covering filter chip, category pill, shortcut row, search input, tab strip) + `/shop` 404 ghost-button chrome | ✗ negative — no `kream.design` / `design.kream.co.kr` / `kream.co.kr/design`; no public DS hub (parent Naver has mixed-public pattern — Naver Connect/Snow have docs, KREAM does not). Documented as authoritative negative result in §9. | ✗ getdesign.md `kream` "No record found"; ✗ styles.refero.design `?q=kream` no match (both verified 2026-05-14) | 13 raw_samples in `.live-inspect-proof.json` (over ≥5 floor; total 83 across two surfaces) | ~50 `--greyscale-dark-*` + `--greyscale-white-alpha-*` CSS custom properties on `:root` — formal grayscale token system with both numeric scale (0/2/4/6/8/10/20/30/35/40/50/60/70/75/80/90) and semantic role naming | **Grayscale-only chrome** — no brand red/blue/green in product chrome (single observed teal `rgb(17,161,151)` used twice as watch accent). **Four-step radius scale encodes card class** (16px banner / 30px chip / 8px ghost / 6px row). **Weight, not hue, signals state** (active tab 700 vs default 400, both `#222`). §10 voice samples are **OmD-original characterizations** — no verbatim KREAM marketing copy reproduced. §11 narrative is reported-fact based (no founder/exec quote at OmD attribution fidelity in EN-language public sources). State matrix and product-detail page not captured this pass — flagged for UPDATE. |
20
- | inflearn | Inflearn (인프런) | KR | education | https://www.inflearn.com | ✓ CDP :9222 / getComputedStyle on **two surfaces** — `/` (12 raw_samples, 162 `--mantine-color-*` CSS vars + full `--mantine-radius-{xs,sm,md,lg,xl}` + `--mantine-spacing-*` + `--mantine-font-family`, h1 34px/700 / h2 20px/700 sampled, GNB sticky 65px white, search input r=8px, primary green pill submit r=999px `#00C471`) + `/courses` (8 raw_samples, 38 `mantine-Card-root` tiles observed, pagination active page solid `#00C471`). Brand-owned context: `tech.inflab.com/20260305-new-header/` engineering blog post confirming GNB rebuild as shared MFE component. | ✗ negative — no `design.inflearn.com` DNS; Inflab GitHub org has no public DS / Storybook / component-library repo (verified `gh search repos inflab` / `inflearn design` — only course-content repos surface); `tech.inflab.com` has engineering posts (MFE / GNB / infra) but no canonical token table. The DS lives **in production code as a Mantine UI theme override** — accessible only by runtime inspect. Documented as authoritative negative in §4 footer + `_research.md`. | ✗ getdesign.md `inflearn` → "No designs found for 'inflearn'" (verified 2026-05-14); ✗ styles.refero.design `?q=inflearn` no result cards (verified 2026-05-14) | 20 raw_samples in `.live-inspect-proof.json` (well above ≥5 floor — 12 home + 8 courses) | 162 `--mantine-color-*` CSS vars + 5 `--mantine-radius-*` + 5 `--mantine-spacing-*` + `--mantine-font-family` exposed on `:root` — Inflearn theme-extends Mantine UI wholesale | **Framework signal authoritative**: Inflearn is a Mantine UI app; the "DS" is the Mantine theme primitive set with the `green` scale overridden to `#00C471`. Designers picking from Inflearn should treat the Mantine semantic palette (red/blue/yellow/cyan) as part of the system. **Two radius families** are the visual signature: `8px` for cards/inputs/pagination, `32px` for nav pills, `999px` for the green search submit + tag chips. **`#00C471` fails AA for body text** (2.45:1 on white) — Inflearn correctly restricts it to white-on-green CTAs (4.4:1, passes AA), pagination active fills, and >18pt accents; called out in §9. **IP guardrails**: tagline "라이프타임 커리어 플랫폼" quoted once as factual brand-narrative context (§11), not adopted as design copy; voice samples in §10 are fresh illustrative reconstructions in casual-polite Korean. **Inferred tokens** flagged `(Inferred)` in §4: labelled primary CTA (only icon-pill captured live), form focus, disabled, error-focus, tag chip alpha. Follow-up UPDATE pass recommended on a course-detail + payment surface. |
21
- | bunjang | Bunjang (번개장터) | KR | marketplace | https://m.bunjang.co.kr | ✓ CDP :9222 / getComputedStyle on `m.bunjang.co.kr` across **two viewports** — desktop 1280×713 dpr=2 + mobile-emulated 390×844 dpr=3 (iPhone UA). 211 DOM samples across header / nav / cards / buttons / footer / heart / price / meta. Websocket required `suppress_origin=True` to bypass `--remote-allow-origins` block. | ✗ **negative (documented)** — Bunjang ships a real internal DS branded **"Bun UI"** (proven by `--bun-ui-*` CSS-variable prefix + vanilla-extract class patterns `Box__7nn0kn17` / `Flex__wsrgth3` / `Typography_typography__1wr8iu13` + explicit z-index/radius/aspect-ratio token families), but **no public artifacts as of 2026-05-14**. Probed: `design.bunjang.co.kr` / `bun-ui.bunjang.co.kr` / `tech.bunjang.co.kr` / `brand.bunjang.co.kr` / `company.bunjang.co.kr` / `blog.bunjang.co.kr` all DNS no-resolve (000). `medium.com/bunjang-tech` → 404. `github.com/bunjang` org exists but **0 public repos / 0 members / 0 packages**. `npmjs.com/package/@bunjang/bun-ui` → 403 (does not exist). Authoritative negative documented in DESIGN.md verification footer. | ✗ getdesign.md `bunjang` → "No designs found for 'bunjang'"; ✗ styles.refero.design `?q=bunjang` no entry. Consistent with KR-10 systemic finding. | 9 raw_samples in `.live-inspect-proof.json` (≥5 floor) covering: primary CTA `#d80c18` bg, body color `#191919`, footer bg `#f6f6f6`, Pretendard Variable on body, secondary-button `1px solid #e5e5e5` + 6px radius, card price 16px/700/`#191919`, card title 14px/500/`#666`, card meta 12px/500/`#999`, circular icon button 999px radius | **73 CSS custom properties** on `:root` — full 11-stop gray ladder (`--color-gray-{10..900}`), 4-stop semantic ladders (`--color-{red,green,blue,yellow}-{50,100,400,500}`), **two specialty ladders distinctive to Bunjang**: `--color-care-*` (warm amber `#FDF4E2`→`#FFE1A6` for 감정완료 luxury-auth chips) and `--color-safe-*` (cool indigo `#EFF2FE`→`#5558A8` for 안전결제 escrow chips). 8 social-partner brand colors. Layout max-widths (480/640/1240). Drawer 480px. Aspect-ratio tokens `--bun-ui-aspect-ratio-{vertical: 81/100, square: 1/1}`. Radius token `--bun-ui-radius-pill: 999px`. Full z-index scale (header 200 / drawer 1000 / popup 1200 / snackbar 1500). iOS safe-area vars `--bun-ui-{sat,sab,sal,sar}`. | **One red, one job**: `--color-primary: #d80c18` appears on exactly one CTA variant (`_variant-primary`) — red as scarcity asset, cleanest example in the Korean-marketplace cohort. **Zero box-shadow** on any sampled production element — depth is borders + tints exclusively. **81:100 portrait thumbnail** is brand-defining (phones/sneakers/K-pop goods photograph tall). **Two specialty color tiers map to revenue services** (care → 감정/luxury-auth, safe → 안전결제/escrow) — rare case where color IS product taxonomy. **Pretendard Variable exclusive** (100% of 211 samples). **Weight jump 500→700 without 600** accelerates price emphasis. IP guardrail: logo SVG archived for verification only; no verbatim taglines or product copy reproduced; service-feature names (안전결제 / 감정완료 / 내폰시세) used descriptively. Bottom tab bar / sell flow / chat / product-detail page not inspected this pass — flagged for UPDATE. |
22
- | channeltalk | Channel Talk (채널톡) | KR | saas | https://channel.io/en | ✓ CDP :9222 / getComputedStyle on `channel.io/en` — 118 element samples, 559 CSS custom properties extracted from `:root`, 10 raw_samples retained | ✓ **positive — canonical Bezier Design System** at `github.com/channel-io/bezier-react/packages/bezier-tokens/src/{global,semantic}` (MIT-licensed). Fetched via `gh api`: color.json (6.7KB, full 12-hue × 3-weight × 4-alpha ladder), font.json (3.0KB, Inter+Noto stacks KR/JP), typography.json (2.7KB, 11-36px size scale), radius.json (463B, 2-44px+42% ladder), transition.json (945B, 150/300/450ms × `cubic-bezier(0.3,0,0,1)`), elevation.json (2.3KB), input.json (1.5KB). **Gold-standard Korean SaaS DS publishing — first Tier-1-positive in this audit file.** | not consulted — Bezier is canonical Tier-1, third-party indexes redundant; flagged in DESIGN.md footer for follow-up UPDATE | 10 raw_samples in `.live-inspect-proof.json` (≥5 floor; from 118 total live captures) | 559 `--color-*` / `--inverted-*` / `--bg-*` / `--bdr-*` / `--bgtxt-*` CSS custom properties on `:root` (full alpha + inverted-theme + semantic-role naming) | **Cobalt-only brand accent** `#329BE7` — semantic hue palette reserved for status. **Translucent off-black** `rgba(0,0,0,0.85)` body text (141/118 sampled elements). **Marketing-vs-product type cliff**: 64px hero vs 36px product cap; weights 500/600 marketing-only. **AI manifesto plum canvas** `rgba(25,3,49,0.898)` is homepage-only rhetorical device, not a Bezier token. §11 founder list / founding year / total funding / HQ city partially unverified (Crunchbase 403'd on WebFetch; only current CEO Choi Si-won confirmed Channel-side) — flagged in DESIGN.md footer. IP guardrail: §10 voice samples explicitly marked tone-shape-only with 3 fresh derivation alternatives provided inline ("Routine, automated. Strategy, yours." / "AI for the queue. You for the moves that matter." / "Every channel. One inbox."). |
23
-
24
- ---
25
-
26
- ## Artifacts written
27
-
28
- - `references/kbank/DESIGN.md` — frontmatter `id=kbank, country=KR, category=finance, verified=2026-05-14`
29
- - `references/kbank/assets/_reference/tokens.json` — normalized brand/neutral/semantic/extended palettes + typography + radius + spacing
30
- - `references/kbank/assets/_reference/fonts.json` — Pretendard K Edition + fallback stack
31
- - `references/kbank/assets/_reference/structure.json` — IA tree, heading outline, layout observations
32
- - `references/kbank/assets/_reference/.live-inspect-proof.json` — 6 raw_samples (≥5 required) + 43 CSS variables + top observed colors
33
- - `references/kbank/assets/_reference/.live-inspect-raw.json` — full CDP capture (provenance)
34
- - `references/lunit/DESIGN.md` — frontmatter `id=lunit, country=KR, category=healthcare, verified=2026-05-14`
35
- - `references/lunit/assets/_reference/tokens.json` — color (ink/surface/accent) + typography scale + binary radius rule + zero-elevation + AOS motion
36
- - `references/lunit/assets/_reference/fonts.json` — ClashGrotesk (display) + Lexend (text), both LIGHT-weight defaults
37
- - `references/lunit/assets/_reference/structure.json` — 11-band page anatomy (sticky header → hero → stats → tech overview → solutions grid → partnering → testimonials → scale → investor → news → footer)
38
- - `references/lunit/assets/_reference/.live-inspect-proof.json` — 8 raw_samples (≥5 required), CDP method + browser version + page URL
39
- - `references/upbit/DESIGN.md` — frontmatter `id=upbit, country=KR, category=finance, omd=0.1, captured_at=2026-05-14`; 9 product sections + §10-15 philosophy (toss style-ref per skill rule P-1)
40
- - `references/upbit/_research.md` — Tier-by-Tier source map + confidence per § + IP guardrail log
41
- - `references/upbit/assets/_reference/tokens.json` — color (brand triple + rise/fall semantic + text + surface) + radius + typography + control sizing
42
- - `references/upbit/assets/_reference/fonts.json` — Roboto + Noto Sans KR primary stack, legacy fallback chain documented
43
- - `references/upbit/assets/_reference/structure.json` — home + exchange structural counts + 5 layout notes
44
- - `references/upbit/assets/_reference/.live-inspect-proof.json` — 12 raw_samples (≥5 required), 2 tab ids, 2 surface URLs, WS endpoint, total 121 samples
45
- - `references/upbit/assets/_reference/raw-capture.json` — home surface (41 samples)
46
- - `references/upbit/assets/_reference/raw-capture-exchange.json` — exchange surface (80 samples)
47
- - `references/flex/DESIGN.md` — frontmatter `id=flex, country=KR, category=saas, omd=0.1, verified=2026-05-14`; 9 product sections + §10-15 philosophy (toss style-ref per skill rule P-1)
48
- - `references/flex/_research.md` — Tier 1 (live CDP + thevc.kr) and Tier 2 (getdesign/refero both empty) source map
49
- - `references/flex/assets/_reference/tokens.json` — single-ink alpha-stepped color, Pretendard Variable scale, ring shadows, section paddings
50
- - `references/flex/assets/_reference/fonts.json` — Pretendard Variable + full system fallback chain
51
- - `references/flex/assets/_reference/structure.json` — header / hero / manifesto / service filter pill anatomy + tone_observed
52
- - `references/flex/assets/_reference/.live-inspect-proof.json` — 9 raw_samples (≥5 required) + CDP method + browser version
53
- - `references/flex/assets/_reference/.raw-inspect.json` — full 40-sample CDP dump (provenance)
54
- - `references/wadiz/DESIGN.md` — frontmatter `id=wadiz, country=KR, category=commerce, verified=2026-05-14`; 15 sections (§1 visual theme + 9 product sections + §10–15 philosophy/personas/anti-patterns/footer per toss style-ref); confidence **High**
55
- - `references/wadiz/assets/_reference/tokens.json` — color (brand mint family + Toss-family ink scale + 4-hue label badge system + surface + overlay) + radius scale (3/4/8/16/50%/100px with frequencies) + shadow tiers + typography sizes + weight frequency
56
- - `references/wadiz/assets/_reference/fonts.json` — Pretendard exclusive (no display accent), cdnjs 1.3.9 dynamic-subset, base body 15px, weights 400/500/700
57
- - `references/wadiz/assets/_reference/structure.json` — 3 surfaces, CSS Modules naming pattern, 5-axis button system, 4-color × 3-shape LabelBadge system, card anatomy, 5-tier elevation
58
- - `references/wadiz/assets/_reference/.live-inspect-proof.json` — 8 raw_samples (≥5 floor), 5 surfaces, full token-frequency table, CDP fallback rationale documented
59
-
60
- ## IP guardrails confirmed
61
-
62
- - Brand assets reference-only (logo/name/navy `#0114A7` for inspiration; not redistributed).
63
- - §9 Voice is fresh analyst paraphrase — no verbatim taglines or marketing copy lifted.
64
- - Token values reproduced as factual CSS custom property values under analytical fair-use.
65
-
66
- ## Flags
67
-
68
- 1. **Tier 1 official DS = negative**. K bank has chosen not to externalise a public design system (unlike Toss/Kakao). The production CSS `:root` token set is the closest public artifact and was captured directly.
69
- 2. **Tier 2 indexes empty** — consistent with the systemic Korean-coverage gap logged in `2026-05-13-kr10.md`.
70
- 3. **A11y debt observed**: no landmark elements, image-replacement H1 logo, fixed 1280px canvas. Surfaced in §8 and §10 with explicit "don't steal" guidance.
71
- 4. **Upbit locale rule (critical)**: Korean finance UI convention — red `#DD3C44` = up / 매수, blue `#1375EC` = down / 매도. Inversion of US convention. Surfaced in §3 and §9 of `references/upbit/DESIGN.md` with explicit porting guidance (must invert for US/EU markets).
72
- 5. **Upbit IP guardrails**: title-tag positioning phrase ("가장 신뢰받는 디지털 자산 거래소") referenced only as positioning evidence in §11 narrative — not reproduced as headline copy; voice samples in §10 marked illustrative; persona block carries public-surveys-only disclaimer.
@@ -1,124 +0,0 @@
1
- # Batch Audit — 2026-05-15 / KR finance (extension) + AI cohort opener
2
-
3
- **Theme**: Korean digital-first finance — brokerage/securities (extending the KR-10 set); plus KR AI/LLM cohort opener (Upstage)
4
- **Skill**: `omd:add-reference` CREATE — with live CDP token harness
5
- **Verification date**: 2026-05-15
6
-
7
- ---
8
-
9
- ## Audit rows
10
-
11
- | id | name | country | category | url | tier1_live | tier1_official_ds | tier2_indexes | raw_samples | css_vars | flags |
12
- |---|---|---|---|---|---|---|---|---|---|---|
13
- | toss-securities | Toss Securities (토스증권) | KR | finance | https://tossinvest.com | ✓ CDP :9222 / getComputedStyle on **two surfaces** — homepage `/?focusedProductCode=A005930` (601 DOM samples, full :root token dump) + stock order surface `/stocks/A005930/order` (additional buttons, panel chrome, positive/negative state tokens) | ✗ negative — no `design.tossinvest.com` DNS; no `tossinvest.com/design` or `/brand`; GitHub org `@toss` (45+ repos, verified for `toss.im`) has zero Toss-Securities-specific DS / Storybook / component repo; no `toss-im` or `toss-securities` GH org exists. Production code IS a real internal DS exposed via 416 `:root` custom properties across three namespaces (`--tw-semantic-*` / `--tw-adaptive-*` / `--wts-adaptive-*`) — closest public artifact, captured directly. | ✗ not consulted — KR fintech systemic gap, consistent with `2026-05-13-kr10.md` / `2026-05-14-kr10.md` findings | 12 raw_samples in `.live-inspect-proof.json` (≥5 floor; 601 total sampled across surfaces) | 416 `:root` CSS custom properties (`--tw-semantic-color-*` semantic role layer + `--tw-adaptive-color-*` adaptive-theme primitive + `--wts-adaptive-*` web-toss-securities scale) | **KR-locale semantic inversion (critical)**: `--tw-semantic-color-fill-positive-default: #dc2e47` (RED = up / 매수) and `--tw-semantic-color-fill-negative-default: #3182f6` (BLUE = down / 매도). Same `#3182f6` is also `--tw-semantic-color-fill-brand-default` — context disambiguates (brand button vs price tick). Must invert for US/EU markets. **Dark-mode-first**: no light theme served at homepage navigation; `--tw-adaptive-*` namespace implies a theme switch but only dark default observed live. **Zero box-shadow** on production chrome — depth via translucent border `rgba(214,224,239,0.09)` + layered surface alphas. **Two-tier radius**: `8px` cards/inputs/buttons + `32px` chips/pills only. **Toss Product Sans** inherited from parent toss.im via CDN — no own webfont copy served on this surface. Motion timing tokens not captured this pass (flagged for UPDATE). Light-mode variant not exercised (flagged). Persona block in §10 marked `[FILL IN]`. Primary CTA visual not directly sampled — ghost-button variants served on inspected paths; brand-fill `#3182f6` confirmed via token tree, not via rendered DOM. |
14
- | dabang | Dabang (다방) | KR | consumer-tech | https://www.dabangapp.com | ✓ CDP :9222 / getComputedStyle on **two surfaces** — home `/` (32 raw_samples) + map `/map/onetwo` (21 raw_samples) = 53 total; full `:root` token tree extracted (140 CSS custom properties: 8-hue × 10-step ladder with `-rgb` variants — `--pink-500 #FF3478` brand, `--blue-500 #326CF9` action, `--gray-{50..900}` text/border, plus green/violet/yellow/red ramps reserved for status/state). | ✗ negative (authoritative) — `design.dabangapp.com` / `brand.dabangapp.com` / `tech.dabangapp.com` / `docs.dabangapp.com` all DNS no-resolve (000); `dabangapp.com/brand` and `/design` HTTP 200 but SPA-routed to home shell (title remains "부동산 필수 앱 다방"); parent company **Station3 (스테이션쓰리, founded 2012, acquired by KCC Construction 2022)** has no `tech.stationthree.com` / no Tech / Design portal; GitHub `forgeinc/stationTHREE` has 1 repo only (corporate marketing site) — no DS / Storybook / tokens repo. Production `:root` token tree is the authoritative public artifact, captured directly. | ✗ getdesign.md `dabang` empty; ✗ styles.refero.design `?q=dabang` and `?q=다방` no result cards | 9 raw_samples in `.live-inspect-proof.json` (≥5 floor; 53 total) | 140 `:root` CSS custom properties — 8-hue × 10-step ladder + RGB variants: `--blue-{50..900}` (brand action), `--pink-{50..900}` (brand wordmark), `--gray-{50..900}` (text/border/surface), `--green-{50..900}` (inferred trust/verified role), `--violet-{50..900}` (inferred premium/promoted), `--yellow-{50..900}` (inferred warning), `--red-{50..900}` (inferred error). 53 of 53 samples render in Pretendard Variable. | **Three-layer color discipline**: brand `--pink-500 #FF3478` stays on logo/wordmark (2/53), action `--blue-500 #326CF9` stays on selected marker + focus (3/53), content gray ramp (`#222` 21/53) carries everything else — five other hues (green/violet/yellow/red beyond 500) sit on `:root` undeployed, reserved for state escalation. **Zero box-shadow** on 53/53 samples — matches Bunjang discipline; depth is borders + tints exclusively. **Contextual radius ladder** (not flat): 0/2/4/8/12/32/42/50% — two pill values (32px entry CTA + 42px filter chip) co-exist with distinct semantic roles (start-search vs toggle-filter). **Weight cliff 400 → 700** with only 2/53 instances of 500 (filter chip labels). **AI band signature**: largest heading on home (24px) is the *lightest* weight (400) with the only emoji 🔍 — deliberate voice cliff against the 700-bold default of every other category head. **`#FF3478` brand pink contrast = 3.4:1 on white** — fails AA body, passes AA large-text only; Dabang correctly restricts pink to wordmark and >18.66px contexts. **Filter pills at 42px exceed WCAG 2.5.5 (44px hit target)** comfortably. **IP guardrails**: brand assets reference-only; no verbatim Dabang marketing copy or taglines; service-feature names (지도 · 분양 · 관심목록 · 우리동네 한눈에 보기) used descriptively only; §10 voice samples are fresh OmD-original Korean reconstructions in casual-polite register; §11 personas marked `[FILL IN]` (Dabang user research not publicly indexed at OmD attribution fidelity). **Flagged for UPDATE**: product-detail page (개별 매물 상세), filter modal state matrix, mobile viewport 390×844 (Dabang is mobile-first), motion duration/easing tokens, listing thumbnail aspect ratio, full Station3 corporate timeline. |
15
- | oliveyoung | Olive Young (올리브영) | KR | ecommerce | https://www.oliveyoung.co.kr | ✓ CDP :9222 / getComputedStyle on **four surfaces** — `/store/main/main.do` (65 distinct samples, legacy JSP, body `Montserrat→NotoSansCJKkr→AppleSDGothicNeo→Roboto→dotum→돋움` stack, ink `#666` on white) + `/store/main/getBestList.do` (33 samples, promo-salmon `#F27370` accent isolated) + `/store/search/getSearchMain.do?query=선크림` (55 samples — **the 5-color flag taxonomy is fully captured here**: sale `#F65C60` / 오늘드림 `#F374B7` / 쿠폰 `#9BCE26` / 증정 `#6FCFF7` / best-ring `#F05A5E`, all on 9px radius pills inside the thumbnail rectangle) + `/store/goods/getGoodsDetail.do?goodsNo=A000000167660` (26 samples — ProductNotFound shell on **Next.js subtree** exposing runtime `--background:#0a0a0a / --foreground:#ededed / --font-noto-sans-kr / --font-roboto / --swiper-theme-color:#007aff` + CSS-Modules classnames `ProductNotFound_btn__ydujY` / `GnbForDesktop_category-toggle-button__ym24F` / `OYCompanyInfo_oy-company-info-button__NSfee` / `Search_search-button__Uyn8T`). **179 distinct DOM samples across 4 surfaces**. Websocket via `websocket-client` with `suppress_origin=True` to bypass `--remote-allow-origins`. | ✗ **negative (authoritative)** — `design.oliveyoung.co.kr` DNS 000; `oliveyoung.design` DNS 000; `corp.oliveyoung.com/ko/about/bi` HTTP 404; `corp.oliveyoung.com/ko/about` HTTP 404; `cjoliveyoung.co.kr` ECONNREFUSED; no public Figma library; no `github.com/oliveyoung*` design-system repo. Documented authoritative negative. **Major finding**: Olive Young is mid-migration to a **dual-stack architecture** — legacy JSP chrome on `/store/main/*` `/best` `/search` (Montserrat→NotoSansCJKkr→돋움 stack, zero `:root` custom properties) + Next.js subtree on product-detail `/store/goods/*` (CSS-Modules class naming + runtime `--font-noto-sans-kr / --font-roboto / --background:#0a0a0a` runtime tokens). The canonical token table lives **inside the Next.js bundle**, not on a public docs surface — accessible only by runtime inspect. | ✗ getdesign.md `oliveyoung` — fetch **blocked by Claude auto-mode classifier** (domain not user-allowlisted this session); verification explicitly deferred to UPDATE pass and documented in DESIGN.md footer. ✗ styles.refero.design `?q=oliveyoung` no result cards (verified 2026-05-15). | 11 raw_samples in `.live-inspect-proof.json` (over ≥5 floor; covering each of the 5 flag hues + filter chip + category pill + pagination active dot + best-badge sash + body font stack + Next.js subtree CSS vars + promo accent) | 7 runtime CSS vars exposed only on the Next.js subtree (`--swiper-theme-color`, `--safe-area-inset-top`, `--safe-area-inset-bottom`, `--background`, `--foreground`, `--font-noto-sans-kr`, `--font-roboto`); **0 vars** on legacy JSP chrome — corroborates the dual-stack finding | **Five-flag taxonomy is the visual signature** — sale red / 오늘드림 pink / 쿠폰 lime-green / 증정 sky / 베스트 ring-red, each 1:1 with a service feature, all on 9px-radius pills (24px on the best-badge sash), all confined to inside the thumbnail rectangle. **Chrome stays pure grayscale** — nav/header/footer/buttons all in `#000 → #888` neutrals; brand Olive Green absent from storefront chrome (closest live token is the `#9BCE26` coupon flag). **A11y trade-offs documented** (not fixed): pagination 24×24 below WCAG 2.5.5; flag-coupon `#9BCE26` + white text ≈ 1.8:1 fails AA but legibility relies on 12px CJK-bold rendering; chip text `#757D86` on white ≈ 4.5:1 at AA floor; body 14px/`#666` ≈ 5.7:1 passes AA. **Korean fallback chain explicitly retains `돋움`** — legacy WinXP/older-macOS support, uncommon in 2026 KR e-commerce. **Cart / my-page / mobile (`m.oliveyoung.co.kr`) / real-SKU product detail not captured this pass** — flagged for UPDATE. **IP guardrails**: brand assets reference-only; no verbatim Olive Young marketing copy or taglines reproduced (none surfaced in captures); §9 voice samples are OmD-original illustrative reconstructions in casual-polite Korean modelled on the observed shape (`-하기` verbs + declarative register), not substance; §12 personas illustrative (no Olive Young user research). |
16
- | fastcampus | Fastcampus (패스트캠퍼스) | KR | education | https://fastcampus.co.kr | ✓ CDP :9222 / getComputedStyle on **two surfaces** — `/` (40 raw_samples covering banner H3 40px/700 two-line, category-pill carousel ×11 with selected-black `#000` r=4 vs unselected-neutral `#f5f5f6`/`#747678`, GNB density inversion `커뮤니티` 12px/600 vs `기업교육` 16px/400, rank badge `#171b1f` `4px 0` corner, enrolment-count pill `rgba(0,0,0,0.3)` r=19px, course card `4px 4px 0 0` top-rounded, carousel half-pill prev/next arrows) + `/category_online_all` (2 structure samples). Internal "Fastcampus Design System" (`--fds-color-*` / `--fds-semantic-*` prefix) directly evidenced on production `:root` with full 10-shade × 7-hue Material-style ramps. | ✗ negative — `design.fastcampus.co.kr` DNS no-resolve; `tech.day1company.io` ECONNREFUSED on this pass; `fastcampus.co.kr/design` and `/brand` 404; no Day1Company GitHub org-level DS / Storybook / tokens repo; no Figma Community kit. The DS exists internally as a Material-style 10-shade × 7-hue token set + semantic role tokens but lives only as production runtime CSS — accessible exclusively via live inspect. Documented as authoritative negative in §4 footer. | ✗ getdesign.md `fastcampus` → "No designs found for 'fastcampus'" (verified 2026-05-15); ✗ styles.refero.design `?q=fastcampus` no result cards (verified 2026-05-15) | 42 total in `.live-inspect-proof.json` (40 home + 2 category, **well above ≥5 floor**) | 103 `:root` CSS custom properties — `--fds-color-{neutral,red,pink,blue,green,yellow,orange}-{50..950}` full 10-shade ramps + `--fds-semantic-primary-primary` (`#fc1c49`) + `--fds-semantic-primary-primary-low` (`#ffdad8`) + `--fds-semantic-label-primary` (`#171b1f`) + `--c-primary` / `--c-primary-darken` (`#c9032a`) / `--c-primary-darken-renewal` (`#d60039`) / `--c-primary-rgb` (237,35,75) + `--fds-color-static-{white,black}` + `--font-base` Pretendard Variable stack + Swiper default `--swiper-theme-color #007aff` (vendor, not adopted) | **Rich-color play as competitive signature** — vs Inflearn's single-mint and Classum's institutional-blue, Fastcampus deploys yellow/orange/red/pink/blue/green simultaneously, one accent per content rail. **Commerce-red as primary**: `#fc1c49` doubles as enrolment-CTA + sale-flag + inline-validation-error, distinct from system error `--fds-color-red-800 #601c20`. **Inverted GNB density** (`커뮤니티` 12px/600 vs `기업교육` 16px/400) is Fastcampus-specific signature. **Card geometry**: `4px 4px 0 0` top-rounded only + rank badge `4px 0` NW-corner-only — brand-defining shape vocabulary. **Time pressure is a first-class UI surface** — countdown text in `--c-primary`, deadline pill in `--fds-color-orange-200` named in §10/§12. **IP guardrails tight**: no verbatim Fastcampus marketing copy reproduced; §10 voice samples OmD-original tone-shape only. **Inferred tokens** flagged in §4: primary CTA labelled fill, input focus, disabled, tag-chip exact alpha, GNB sticky-scroll bg, footer spacing, motion durations (`--fds-motion-*` not exposed at `:root`). **§11 brand-narrative** anchored to publicly observable artifacts only — founder/founding-month/headcount NOT verified at OmD fidelity; flagged for UPDATE if `tech.day1company.io` resurfaces. **§13 personas explicitly inferred**. Course-detail / cart / payment / mobile-emulated surfaces not inspected — flagged for UPDATE. |
17
- | upstage | Upstage (업스테이지) | KR | ai | https://www.upstage.ai | ✓ CDP :9222 / getComputedStyle on `www.upstage.ai/` (44 curated DOM samples + 930+ element frequency sweep) and `www.upstage.ai/resources/brand-resource-center` (Tier-1 surface verification). 74 `:root` CSS custom properties extracted. | △ **partial-positive** — `/resources/brand-resource-center` (HTTP 200, h1 "Brand Resource Center", categories Brand Identity / Product Identity / Media kit / Our leadership) distributes logo + symbol assets and carries IP rights statement, but **does not publish color / typography / spacing tokens** — token system observable only in production CSS. Tier-1 *negative* for `design.upstage.ai` / `brand.upstage.ai` / `/brand` (all 000/404). `github.com/UpstageAI` has 12 public repos (cookbook / Gym / mcp-upstage / opencode / solar-prompt-cookbook / vllm / …) — **zero design-system / Storybook / token-library repo** as of 2026-05-15. | ✗ `getdesign.md/upstage` 200 but no curated entry; ✗ `styles.refero.design/?q=upstage` 200 search shell, no result cards (both verified 2026-05-15) | 8 in `.live-inspect-proof.json` (≥5 floor) covering hero H1 Espeak / hero H1 monospace swap word / `.button.is-secondary` violet pill / inline-arrow CTA / footer dark band / product card body / body root / header subhead | 74 `:root` CSS custom properties (`--colors--*` and `--style--*` Upstage-namespaced + underlying `--_sub---untitled-ui--*` / `--_sub---spark-library--*` / `--_sub---elements-webflow-library--*` library namespaces — Webflow-built) | **Single-violet-on-plum axis** `#5B52FF` × `#3C043B` consciously avoids the cobalt-blue enterprise-AI cliche; **Solar accent `#D2FF95` is single-use** (mid-step of the green-yellow ladder, never repeated as default highlight). **Type-three-job discipline**: Geist 93% body / Espeak hero only / monospace mid-sentence industry-word swap — the typographic shift IS the variable-slot marker (preserve in any port). **Binary radius**: 797 elements at 0px + 134 at 8px. **Effectively zero box-shadow** in production. **Espeak is proprietary** — reference-only, substitute with PP Neue Montreal / Söhne / Inter Display in derivative work. **Motion tokens not captured** — flagged for UPDATE. §11 funding/headcount/founding-year unverified — public footer business-info only. |
18
- | catchtable | CatchTable (캐치테이블) | KR | consumer-tech | https://www.catchtable.co.kr (→ app.catchtable.co.kr) | ✓ CDP :9222 / websocket-client suppress_origin=True / getComputedStyle on `app.catchtable.co.kr/` — 35 element samples + 145 `:root` CSS custom properties (vanilla-extract `_11bicz7*` namespace) + 3000-element frequency analysis; second surface `/ct/shop/list?categoryName=서울` (4 samples — degraded desktop shell, confirms primary CTA spec rgb(255,61,0)/`#FFF`/r=12px/14px-500). | ✗ **authoritative negative** — `design.catchtable.co.kr` DNS 000; `tech.catchtable.co.kr` DNS 000; `www.catchtable.co.kr/brand` 302 (no portal); GitHub `catchtable` org = 200 but only 3 public repos (`prerender-java`, `claude-hud`, `brand-review-tool`) with **zero** design-system / Storybook / tokens repo. DS lives only as the vanilla-extract token sheet compiled into production CSS — captured directly via `:root` enumeration. Documented as authoritative negative in §15 + `_research.md`. | ✗ getdesign.md `catchtable` → "No designs found for 'catchtable'" (verified 2026-05-15); ✗ styles.refero.design `?q=catchtable` no result cards (verified 2026-05-15) | 10 raw_samples in `.live-inspect-proof.json` (≥5 floor) — primary CTA pill `#FF3D00`/`#FFF`/r=12px/14px-500, HTML/BODY canvas, H3 section-title 20px/700, search input `#F5F5F5`/13px/500, geo chip 14px/500/`#5F5F5F`, footer `#F9F9F9`, bottom nav `mo4qa92`, best-of pill `best-food-list-item`, thumbnail 4px radius, `어디로 가시나요?` hero label 20px/700/`#222`. | 145 `:root` vars in vanilla-extract `_11bicz7*` namespace — 33 color tokens + 5-tier shadow ladder + 10-step type scale + 5 weights + uniform `150%` line-height contract across all ~35 typography slots | **§1 header verified canonical**: `## 1. Visual Theme & Atmosphere` (exact match) + prose first paragraph. **Single-CTA discipline**: `#FF3D00` appears just 4× as color + 1× as bg in a 3000-element scan — orange is scarce, not flooded. **Hard-square chrome**: `0px` radius on 1063/1149 elements (92%) — sharpness is the brand. **Pretendard-only** (no display font); 91% of text ships weight 400. **150% line-height system contract** — unusual discipline, called out in §3/§13. **A11y borderline**: `#FF3D00`/`#FFF` CTA at 14px/500 ≈ 3.7:1 (borderline AA fail for body, passes for bold/large); port-guidance darkened variant `#E63600` in §9. Micro text 10–11px below WCAG body floor on counters/disclaimers. **Mobile-first WebView shell** — `status-bar-top` reservation; desktop is a porthole. **Editorial 캐치 매거진 module** = taste-maker positioning, not transactional. **IP guardrails tight**: title-tag '즐거운 미식 생활의 시작' quoted once as §11 narrative only; §10 voice samples are 3 fresh analyst paraphrases (gerund-light curatorial-warm shape). §12 personas marked illustrative FILL-IN. **Motion partially inferred** (Swiper default fade only). **Restaurant-detail / search / sell / 마이다이닝 surfaces not inspected** — flagged for UPDATE via mobile-emulated CDP. |
19
- | jumpit | Jumpit (점핏) | KR | productivity | https://www.jumpit.co.kr (301 → jumpit.saramin.co.kr) | ✓ CDP :9222 / getComputedStyle on **two surfaces** — `/` (52 samples) + `/positions?sort=popular` (60 samples) = **112 raw samples** across header, nav, hero carousel cards, role-filter chip row (22 chips), outlined dropdown row (4 triggers), section headings, primary CTA, footer | ✗ negative (authoritative) — no `design.jumpit.co.kr` / `brand.jumpit.co.kr` / `design.jumpit.saramin.co.kr` DNS; `saramin.github.io` resolves as tech blog (no DS surface); `gh search repos org:saramin design` → 0 results; existing Saramin org repos (`a11y` training / `appstore-status-bot` / `zf1` Zend-legacy) are not a component library; no `@jumpit/*` or `@saramin/*` npm packages; no Figma Community kit. Documented as authoritative negative in `_research.md` + §4 footer. | ✗ getdesign.md `jumpit` → "No designs found for 'jumpit'." (verified 2026-05-15); ✗ styles.refero.design `?q=jumpit` no result cards (also tried `?q=점핏`; verified 2026-05-15) | 10 in `.live-inspect-proof.json` (≥5 floor; 112 total across two surfaces) | 0 `:root` design-token vars — styled-components runtime emits hashed `sc-*` classes (`sc-f154264c-0`, `sc-90f62648-4`, `sc-4e6882eb-0`, `sc-fd5ea417-7`); no public token contract | **One-green discipline (system signature)**: `#00DD6D` appears on chrome **exactly twice across 112 samples** — active role-filter chip + 13/700 "Notice" eyebrow. **Primary CTA is black `#000` not green** (8px pill, 15/700) — Jumpit deliberately withholds brand colour from system CTA, opposite to Wanted/Toss pattern. **Three-pill radius scale encodes control class**: 8px (primary CTA) / 20px (single-select role chip) / 100px (outlined multi-select dropdown). **Cards at 0px radius** + **zero `box-shadow` across 112 samples** — depth is `#FBFBFB` footer plate vs `#FFF` page only. **Binary weight policy** 400/700, no 600 in between (500 sparing ~12%). **Three-stop ink ladder** `#000` → `#222` → `#444` → `#888`. **Pretendard Variable exclusive** (100% of 112 samples). **A11y flags**: no `<h1>` on home; `#888` muted ink at 14-16px sits below WCAG AA — surfaced in §8/§9 with explicit "fix-on-port" guidance. **IP guardrails**: no verbatim taglines lifted; observed voice phrases ("요즘 폼 미친 기업s" / "#꿀 피드" / ".zip" / "더.루키") recorded as register-*shape* evidence only; all §10 voice samples are fresh OmD-original Korean reconstructions in the same developer-vernacular register; §13 personas marked illustrative-inferred. **Parent context**: Saramin HR (KOSDAQ 143240, founded 2005, Guro-gu HQ); Jumpit = 2019 beta / 2020-12 public, engineer-vernacular spinout from generalist Saramin marketplace. **Flagged for UPDATE**: JobCard inner spacing, hover/pressed/focus/disabled, semantic ladder (error/success/warning), mobile viewport 390×844, iconography family, motion durations. |
20
- | chai | Chai (차이) | KR | finance | https://chai.finance | ✓ CDP :9222 / getComputedStyle on `chai.finance/` (meta-refresh → `/about.html` service-termination notice) + `/index.html` + Wayback 2021-07 snapshot `web.archive.org/web/20210707171036/https://chai.finance/` for historical hero corpus. Auxiliary authoritative source = production Webflow CSS bundle `https://chai.finance/css/chai-finance.webflow.css` (**182,207 bytes**, last published 2022-05-13) via curl frequency analysis. Frequencies directly verified: `#ff0062` × 16 (brand pink), `#1b1b1b` × 16 (ink primary), `#6411ff` × 11 (hover purple), `#a5a5a5` × 17 (muted footer ink), `#ffc600` × 8 (yellow accent), `border-radius: 4px` × 9 (canonical small), `font-weight: 700` × 31 (51% of weight declarations), `font-family: ChaiGothic, sans-serif` × multiple, `transition: color 200ms ease` (sole shipped transition). Reproducible: `curl -sL https://chai.finance/css/chai-finance.webflow.css \| grep -c "#ff0062"` → 16. | ✗ **negative — no public DS** as of 2026-05-15. Probed: `design.chai.finance` 404; `chai.finance/brand`/`/design`/`/design-system` not present; GitHub no `chai-finance`/`chaicorporation`/`차이코퍼레이션` design-system / Storybook / tokens repo; no `@chai/*` npm namespace. **Corporate context**: Chai Corporation (formerly Geokoo E-Payment, founded 2018-09-13) was rebranded **PortOne Solutions** in 2024; consumer Chai app terminated; per `thevc.kr/Chai` 0 employees as of Aug 2025. Documented as authoritative negative in `_research.md`. | ✗ getdesign.md `chai` → "No designs found for 'chai'" (verified 2026-05-15); ✗ styles.refero.design `?q=chai` no result cards (verified 2026-05-15). Consistent with the systemic KR coverage gap. | 10 raw_samples in `.live-inspect-proof.json` (≥5 floor) covering: ChaiGothic 25.2px/700 white H3 × 10 announcement cards on dark `#1b1b1b` panel (live DOM), Inter footer policy link `#a5a5a5` 14/400, Inter mailto `help@chai.finance` 11.2/400, `.button.color-red` bg `#ff0062`, `.button.color-red:hover` bg `#6411ff` with `transition: color 200ms ease` (the brand-defining pink→purple flip), `.button.topnav.color-red` bg `#ff0062`, `.tab-list.w--current` bg `#6411ff`, `.button-tab.w--current` `box-shadow: inset 0 -4px 0 0 #6411ff` (active-tab underline lives inside box — no reflow), `.gray-wrapper.selected-plan` bg `#6411ff`, `.text-red` color `#ff0062` inline emphasis. | **0 :root custom properties** — Webflow class-driven system. All tokens live in named utility classes (`.color-red`, `.text-red`, `.button-tab.w--current`, `.gray-wrapper.selected-plan`, etc.). | **§1 header canonical verified**: `## 1. Visual Theme & Atmosphere` + prose first paragraph (no leading table/list/sub-heading). **Service-terminated reference**: Chai consumer app no longer operates; reference is archaeological for studying KR fintech 2019–2022 visual maximalism (magenta-on-black, slogan-driven, ChaiGothic display), **not** for live-product benchmarking. **Hover-locked brand**: `#ff0062` → `#6411ff` 200ms colour transition is the load-bearing motion event. **A11y debt in shipped CSS** (called out, not fixed): no focus-visible / skeleton / loading / field-error / formal disabled variants — §8 / §9 give porting guidance (`outline: 2px solid #6411ff; outline-offset: 2px` recommended). **Custom typeface dependency**: ChaiGothic is proprietary brand-owned; ports require Pretendard fallback. **#ff0062 on white** ≈ 3.9:1 — passes AA only for ≥18pt or ≥14pt bold (where Chai actually uses it). **IP guardrails confirmed**: brand assets reference-only; 2021 wayback headline corpus ("할인 금액이 남달라서 차이다" / "단순하니까 차이다") quoted as factual linguistic pattern in §11 only; §10 voice samples are OmD-original reconstructions in the `차이다` verbal frame; §13 personas illustrative-only. |
21
- | tving | TVING (티빙) | KR | consumer-tech | https://www.tving.com | ✓ CDP :9222 / getComputedStyle on `www.tving.com` (→ `/onboarding` for unauth) — 13 raw_samples, 114 `:root` CSS custom properties extracted, 3000-node body sweep for color/bg/radius frequency, screenshot captured at 1280×713 above-fold | ✗ negative (documented) — `design.tving.com` / `brand.tving.com` / `tech.tving.com` all DNS no-resolve (000); `tving.com/design` 404; GitHub `tving` org has 1 repo only (`tving.github.io`, empty); no CJ ENM corporate channel publishes a TVING-branded DS portal as of 2026-05-15. Production `:root` token tree (114 vars including canonical `--tving: 350 100% 54.12%` and six `--color-cate-*` taxonomy primitives) is the closest authoritative public artifact, extracted directly. | ✗ getdesign.md `/q/tving` → 404; ✗ styles.refero.design `?q=tving` → 200 with no result cards | 13 raw_samples in `.live-inspect-proof.json` (≥5 floor) covering body, html canvas, primary CTA `rgb(255,21,60)` r=12.4px, header CTA `rgb(254,21,60)` r=8px, h2 hero 43.4px/700, footer nav, `:root --tving` HSL, six `--color-cate-*` taxonomy vars, layout geometry tokens, top-color/bg/radius frequency tables | 114 `:root` CSS custom properties — namespaces: `--tving` (brand), `--color-cate-*` (6 category hues home/live/clip/vod/movie/ad), `--gnb-height` / `--header-height` / `--bottom-tab-height` / `--content-inset-*` (layout), `--live-tab-*` / `--kbo-player-*` / `--sports-player-*` (live-streaming geometry), `--safe-area-inset-*` (iOS PWA), `--tw-*` (Tailwind utility), `--swal2-*` / `--swiper-*` (vendor), shadcn-pattern semantic role vars (`--card`, `--popover`, `--muted`, `--accent`, `--background`, `--card-foreground`, etc.) | **Six-category taxonomy as first-class :root primitives** — `--color-cate-{home,live,clip,vod,movie,ad}` is a rare case where color IS product information architecture, hardcoded into the design system rather than per-page override. **Locked dark canvas** (`#000` at `html` level — no light-mode token observed; dark-mode-only by design). **Single brand red** `#FF153C` (canonical `--tving: 350 100% 54.12%` HSL) reserved for CTAs and brand marks; runtime alpha variants (`rgb(255,21,60)` / `rgb(254,21,60)` / `rgb(255,31,69)`) collapse to one canonical token; only 12 of 3000 sampled nodes carry the red as background. **Top-corners-only card radius** `16.5292px 16.5292px 0 0` (observed 20×) for poster-art bleed pattern — OTT idiom shared with Disney+/Wavve but tuned to 1.033rem. **Pretendard exclusive** (100% of samples), weight binary (400/700, no 500/600 intermediates). **Zero box-shadow** on all sampled product chrome — depth via dark surface ladder (`#000` → `#2E2E2E` → `rgba(15,15,15,0.74)` overlay) instead of elevation. **Dedicated live-streaming geometry tokens** (`--kbo-player-*`, `--sports-player-*`, `--live-tab-player-*`) elevate live as peer surface to VOD — TVING holds KBO baseball rights and treats it as a first-class design target. **Stack signal**: Tailwind utility + Emotion CSS-in-JS (`css-*` hashes) + shadcn-pattern semantic role tokens coexist pragmatically. **IP guardrails tight**: content thumbnails (poster art, hero stills, episode metadata) NOT captured into product DOM; no verbatim TVING taglines reproduced; §10 voice samples are fresh OmD-original analyst reconstructions in observed register; §11 subscriber count / CEO / funding marked `[FILL IN]`; §12 personas explicitly inferred from market positioning, not TVING-published research. **Flagged for UPDATE**: authenticated browse / VOD detail / live KBO player surfaces gated; motion timing not captured; per-surface visual application of `--color-cate-*` not verified beyond token tree. |
22
-
23
- ---
24
-
25
- ## Artifacts written
26
-
27
- - `references/toss-securities/DESIGN.md` — frontmatter `id=toss-securities, country=KR, category=finance, verified=2026-05-15`; canonical §1 header `## 1. Visual Theme & Atmosphere` with prose opening paragraph; 13 sections (§1 visual + §2–8 product + §9 voice + §10 personas FILL IN + §11 anti-patterns + §12 refs + §13 verification footer)
28
- - `references/toss-securities/assets/_reference/tokens.json` — brand triple + KR-finance positive/negative semantic ladders + dark surface scale + text alpha scale + icon roles + 2-tier radius + control sizing
29
- - `references/toss-securities/assets/_reference/fonts.json` — Toss Product Sans + Tossface stack, 400/500/600/700 weights observed
30
- - `references/toss-securities/assets/_reference/structure.json` — 2 surfaces inspected, IA outline, layout observations, tone characterisation
31
- - `references/toss-securities/assets/_reference/.live-inspect-proof.json` — 12 raw_samples (≥5 floor), 2 surface URLs, WS endpoint, browser version, CDP method, IP guardrail attestation
32
- - `references/toss-securities/assets/_reference/.live-inspect-raw.json` — full homepage CDP dump (provenance)
33
- - `references/toss-securities/assets/_reference/.live-inspect-stock.json` — full stock-order-surface CDP dump (provenance)
34
- - `references/tving/DESIGN.md` — frontmatter `id=tving, country=KR, category=consumer-tech, verified=2026-05-15`; canonical §1 header `## 1. Visual Theme & Atmosphere` with prose opening paragraph; 15 sections (§1 visual prose + §2 palette + §3 type + §4 shape + §5 spacing + §6 elevation + §7 iconography + §8 motion + §9 components + §10 voice + §11 narrative + §12 personas FILL IN + §13 anti-patterns + §14 implementation + §15 verification footer)
35
- - `references/tving/assets/_reference/tokens.json` — brand red `#FF153C` + 4-step grayscale text ladder + dark surface ladder + six-category taxonomy primitives + radius-frequency table + layout geometry vars
36
- - `references/tving/assets/_reference/fonts.json` — Pretendard exclusive (SIL OFL 1.1) + system fallback chain
37
- - `references/tving/assets/_reference/structure.json` — onboarding surface anatomy, category taxonomy signal, live-streaming geometry observation
38
- - `references/tving/assets/_reference/.live-inspect-proof.json` — 13 raw_samples (≥5 floor), 114 CSS vars, CDP method + screenshot attestation + IP guardrail note
39
- - `references/tving/assets/_reference/LICENSE-NOTE.md` + `attribution.md` — IP boundary + source provenance
40
- - `references/tving/assets/_reference/screenshots/hero-desktop.png` — 1280×713 above-fold reference capture
41
- - `references/dabang/DESIGN.md` — frontmatter `id=dabang, country=KR, category=consumer-tech, verified=2026-05-15`; canonical `## 1. Visual Theme & Atmosphere` header with 4-paragraph prose opening; 15 sections (§1 visual prose + §2 palette + §3 type + §4 spacing + §5 radius + §6 elevation + §7 motion/state + §8 iconography + §9 a11y + §10 voice + §11 personas FILL IN + §12 anti-patterns + §13 tokens-as-shipped + §14 methodology + §15 verification footer)
42
- - `references/dabang/assets/_reference/tokens.json` — 8-hue × 10-step ladder + `-rgb` variants, three-layer color discipline (brand pink-500 / action blue-500 / content gray ramp), contextual radius ladder 0/2/4/8/12/32/42/50%, zero-shadow rule, Pretendard 100%
43
- - `references/dabang/assets/_reference/fonts.json` — Pretendard Variable exclusive (100% of 53 samples) + 11-step KR/Latin fallback chain, weight cliff 400 → 700
44
- - `references/dabang/assets/_reference/structure.json` — home anatomy (8 bands incl. AI personalized section), map anatomy (6 chrome layers), nav/category enumeration, layout observations
45
- - `references/dabang/assets/_reference/.live-inspect-proof.json` — 9 raw_samples (≥5 floor; 53 total), 140 CSS vars, 2 surface URLs, WS endpoint, browser version, CDP method, IP guardrail attestation, Tier 1 official DS authoritative-negative documentation
46
- - `references/dabang/assets/_reference/raw-capture.json` — home surface full CDP dump (provenance)
47
- - `references/dabang/assets/_reference/raw-capture-map.json` — map surface full CDP dump (provenance)
48
-
49
- ## IP guardrails confirmed
50
-
51
- - Brand assets reference-only (Toss Securities logo/name/Toss Blue `#3182f6` for inspiration; not redistributed).
52
- - §9 Voice samples are fresh analyst paraphrases — no verbatim Toss Securities taglines or marketing copy lifted.
53
- - Token values reproduced as factual CSS custom-property values under analytical fair-use.
54
- - §10 Personas marked `[FILL IN]` — no fabricated quotes / demographics.
55
-
56
- ## Flags
57
-
58
- 1. **Tier 1 official DS = negative** — Toss Securities has not externalised a public design system surface; parent Toss has open-source design assets (Tossface emoji font; some library utilities under `github.com/toss`) but no Toss-Securities-namespaced DS. Production `:root` token tree captured as authoritative artifact.
59
- 2. **Tier 2 indexes empty** — consistent with the systemic Korean-coverage gap.
60
- 3. **KR-finance locale rule (critical)**: `positive` = red `#dc2e47`, `negative` = blue `#3182f6`. Inversion of US/EU convention. Surfaced in §1, §2, §3, §11 of `references/toss-securities/DESIGN.md` with explicit porting guidance.
61
- 4. **Semantic-token overlap**: same `#3182f6` carries both `fill-brand-default` AND `fill-negative-default` — context-disambiguated. Any downstream port that mechanically swaps blue→green for "negative" must NOT touch brand-CTA usage of the same hex.
62
- 5. **Light-mode variant unobserved** — `--tw-adaptive-*` namespace implies it exists; not exercised in this pass.
63
- 6. **TVING category-color taxonomy as DS primitive (notable pattern)** — six content categories (home/live/clip/vod/movie/ad) are each their own `:root` CSS custom property. Rare case where color IS product information architecture, not page-level override. Adopters must NOT replicate this six-hue taxonomy unless their product genuinely has six surface paradigms; otherwise visual noise.
64
- 7. **TVING dark-mode-only** — `#000` locked at `html`, no light-mode token observed. Adopters of TVING's design language must commit to dark-canvas in their own product or shift token strategy meaningfully.
65
- 8. **TVING IP guardrails (content-rights sensitive)** — OTT thumbnails / poster art / episode metadata NOT captured into product DOM. Reference screenshot kept under fair-use commentary only; no verbatim taglines reproduced; persona block explicitly inferred (no TVING-internal research consulted).
66
- 6. **Motion timing tokens** not captured this pass — flagged for UPDATE.
67
- 9. **Dabang three-layer color discipline (notable pattern)** — brand `--pink-500` stays in wordmark layer only (2/53 samples), action `--blue-500` stays in interaction layer only (3/53), content gray ramp carries the rest. Five other hues sit on `:root` reserved for state escalation, not decoration. Cleanest brand/action separation in the KR-real-estate cohort (Zigbang ships the same pattern with orange/blue, but Dabang's pink-vs-blue split is more chromatically distant and the discipline is tokenised at `:root` rather than enforced by convention only).
68
- 10. **Dabang contextual radius ladder** — 32px and 42px pills co-exist with distinct semantic roles (search-entry CTA vs toggle filter). Downstream port must NOT flatten to one pill value.
69
- 11. **Dabang AI band voice cliff** — 24px / weight 400 / emoji 🔍 deliberately contrasts the 700-bold default of every other home head. Pattern: AI surfaces relax weight, not increase it. Adopters tempted to make AI features "louder" (heavier weight, brighter accent) should reconsider.
70
-
71
- ## Artifacts written — fastcampus (appended 2026-05-15)
72
-
73
- - `references/fastcampus/DESIGN.md` — frontmatter `id=fastcampus, country=KR, category=education, omd=0.1, verified=2026-05-15`; canonical `## 1. Visual Theme & Atmosphere` header with 3-paragraph prose opening (no table/list/subheading); 15 sections (§1 visual prose + §2 palette w/ full FDS Material 10×7 ramps + §3 type + §4 components w/ canonical 1-field-per-bullet schema + §5 spacing + §6 iconography + §7 motion + §8 states + §9 a11y + §10 voice + §11 narrative + §12 principles + §13 personas-inferred + §14 states catalog + §15 motion easing)
74
- - `references/fastcampus/assets/_reference/tokens.json` — 103 `:root` CSS custom properties dump (full `--fds-color-*` + `--c-primary-*` + `--fds-semantic-*` + vendor Swiper default)
75
- - `references/fastcampus/assets/_reference/fonts.json` — Pretendard Variable on body + Apple SD Gothic Neo on html + full Korean fallback chain
76
- - `references/fastcampus/assets/_reference/structure.json` — GNB structure + body bg + doc width + category-page secondary surface
77
- - `references/fastcampus/assets/_reference/.live-inspect-proof.json` — 2 surfaces (home + category), 42 total raw_samples (40+2), ISO `_captured_at` timestamps, CDP :9222 method, browser version `Chrome/148.0.7778.97`
78
-
79
- ## Artifacts written — upstage (appended 2026-05-15)
80
-
81
- - `references/upstage/DESIGN.md` — frontmatter `id=upstage, country=KR, category=ai, verified=2026-05-15, omd=0.1, captured_at=2026-05-15`; canonical `## 1. Visual Theme & Atmosphere` header with prose opening paragraph; 15 sections (§1 visual prose + §2 color + §3 typography + §4 radius + §5 elevation + §6 spacing + §7 interactive + §8 motion (flagged) + §9 a11y + §10 voice + §11 narrative + §12 personas FILL IN + §13 anti-patterns + §14 refs + §15 verification footer)
82
- - `references/upstage/assets/_reference/tokens.json` — brand (Upstage Violet `#5B52FF` + hover/deep variants + Solar `#D2FF95`) + 5-step ink ladder (`#70757F` body 428×, `#0A0D14` near-black, `#6E7191` muted, `#FFFFFF`, white@50%) + surface (white / `#F9FAFB` subtle / `#191722` footer / `#3C043B` plum hero / lavender interactive / `#DDE3FF`) + border (`#EEEEEE`) + Untitled UI / Spark Library / Webflow under-layer ladders + binary radius scale + zero-elevation observation + interactive button variants
83
- - `references/upstage/assets/_reference/fonts.json` — Geist 93% body coverage / Espeak proprietary hero-only display / monospace industry-swap-word / sans-serif hydration fallback / system-ui chrome
84
- - `references/upstage/assets/_reference/structure.json` — IA tree (5 primary nav cats + 5-col footer + KR business-info legal block) + heading outline (rotating-industry H1 + 5 H2s) + 8-band page anatomy + 4 CTA variants + brand-resource-center metadata
85
- - `references/upstage/assets/_reference/.live-inspect-proof.json` — 8 raw_samples (≥5 floor), 2 surfaces captured, CDP method + browser `Chrome/148.0.7778.97` + WS endpoint, frequency top-lines, Tier-1 partial-positive evidence + negatives, Tier-2 negatives, reproducibility commands
86
- - `references/upstage/assets/_reference/_root-vars.json` — full 74-entry `:root` CSS custom property dump (provenance)
87
- - `references/upstage/assets/_reference/_raw-capture.json` — 44 curated DOM samples + frequency tables across all 930+ elements (provenance)
88
- - `references/upstage/assets/_reference/_curated-samples.json` — 14-entry curated selector sweep (provenance for proof file)
89
- - `references/upstage/assets/_reference/_structure-raw.json` — heading list + nav + footer links (provenance for structure.json)
90
- - `references/upstage/assets/_reference/_brand-resource-center.json` — Tier-1 brand surface capture (provenance)
91
-
92
- ## Flags — upstage (appended)
93
-
94
- 12. **Upstage Tier-1 = partial-positive** — Brand Resource Center asset-distribution surface exists and is publicly linked from every page footer, but does NOT publish a token specification. Production CSS is the canonical token source. First partial-positive Tier-1 finding in the KR-AI cohort (Channel Talk's Bezier remains the only full Tier-1-positive in the broader audit set).
95
- 13. **Upstage Espeak proprietary face** — commissioned/custom hero display; derivative work must substitute. Recommended open-display stand-ins: PP Neue Montreal / Söhne / Inter Display.
96
- 14. **Upstage rotating-industry hero** — typographic family shift (Espeak → monospace) is the brand-defining gesture. Reproducing with a color or weight shift breaks the composition.
97
- 15. **Upstage Solar `#D2FF95` single-use discipline** — adjacent to Solar product narrative only; never as default highlight. Repeating broadly cheapens the accent.
98
- 16. **Upstage motion tokens uncaptured** — UPDATE pass on `/products/solar-pro-3` + Documentation surface recommended.
99
-
100
-
101
- ---
102
-
103
- ## Audit row — gmarket (appended 2026-05-15)
104
-
105
- | id | name | country | category | url | tier1_live | tier1_official_ds | tier2_indexes | raw_samples | css_vars | flags |
106
- |---|---|---|---|---|---|---|---|---|---|---|
107
- | gmarket | Gmarket (지마켓) | KR | ecommerce | https://www.gmarket.co.kr | ✓ CDP `:9222` / getComputedStyle on **two surfaces** — `www.gmarket.co.kr/` (182 samples, **247 `:root` CSS vars** including full 10-hue × 10-stop color ladder, Club Smile sub-system 15 vars, Event sub-brand 3 vars, Smile-Yellow + StarDelivery-Purple + Green-Connect-Blue service accents, `--gmarketFont` + `--minWidth: 1200px`) + `corners.gmarket.co.kr/Bestsellers` (90 samples, 246 vars) = **272 total samples**. Brand-owned context: `corp.gmarket.com/` confirms 2000 founding + 2021 Shinsegae acquisition + service portfolio (Auction 1998 / SmilePay / StarDelivery / Smile Club / G마켓Pay) + positioning "지금부터의 마켓". | ✓ **partial positive (font)** — **Gmarket Sans** distributed at `corp.gmarket.com/fonts/` under SIL Open Font License in 3 weights (Light 300 / Medium 500 / Bold 700), TTF + OTF, 11,172 KR + 95 EN + 986 special chars. First-party brand-font artifact = Tier-1 official DS asset. ✗ No public Storybook / Figma library / token JSON / `design.gmarket.*` surface — `design.gmarket.co.kr`, `tech.gmarket.co.kr`, `brand.gmarket.co.kr`, `ui.gmarket.co.kr`, `gmarket.design` all DNS no-resolve (000). Production `:root` token system (247 vars) is the de-facto public artifact, captured directly. | ✗ `getdesign.md/gmarket` → "No designs found for 'gmarket'" (verified 2026-05-15); ✗ `styles.refero.design/?q=gmarket` no result cards in SSR DOM (verified 2026-05-15) | 8 in `.live-inspect-proof.json` (≥5 floor) covering 28px H2 "G마켓 베스트", red price text `#da120d`, Gmarket Sans display font, 13.3333px utility button, 20px-radius "하나더" pill, 11px/500 `쿠폰적용가` price-modifier, search-bypass anchor, 12px discount-percentage span | 247 home + 246 bestsellers `:root` CSS custom properties (full 10-hue × 10-stop semantic ladders + Club Smile + Event sub-systems + service-line accents) — *unusually formal* token system for a 2000-founded marketplace | **Fixed-1200px desktop canvas** (`--minWidth: 1200px`) — fails WCAG 1.4.10 Reflow on desktop; mobile lives at separate `m.gmarket.co.kr` flagship. **No box-shadow** in sampled production — depth = borders + tints. **Legacy CSS Sprites** still in use (`sprite__common--before`/`--after`). **Gmarket Red `#da120d` is a price-discount asset, not generic primary fill** — same discipline as Bunjang Red. **Three named sub-systems** (Club Smile / Event / Service-accent) map directly to revenue programs. **`--Smile-Yellow #ffd200` on white = 1.6:1** — used as bg-fill with dark text only. Commerce-detail-page + state coverage not captured this pass. Founder / CEO / HQ / headcount not captured. IP: §10 voice samples explicitly fresh OmD derivations; "지금부터의 마켓" quoted once as factual positioning evidence in §11. |
108
-
109
- ### Artifacts written — gmarket
110
-
111
- - `references/gmarket/DESIGN.md` — frontmatter `omd=0.1, id=gmarket, brand=Gmarket, brand_kr=지마켓, country=KR, category=ecommerce, url=https://www.gmarket.co.kr, verified=2026-05-15`; canonical `## 1. Visual Theme & Atmosphere` header with 3-paragraph prose opening (no table/list/subheading); 15 sections + verification footer with Tier-1 / Tier-2 / Tier-1-official-DS / conflicts / IP guardrails
112
- - `references/gmarket/assets/_reference/tokens.json` — brand + Club Smile + Event + service accents + 10×10 hue ladders + neutral scale + typography + radius + layout + elevation + motion (5KB)
113
- - `references/gmarket/assets/_reference/fonts.json` — Gmarket Sans first-party SIL OFL (3 weights, TTF/OTF, 11,172 KR chars, `corp.gmarket.com/fonts/`) + system stack + usage frequencies (1.4KB)
114
- - `references/gmarket/assets/_reference/structure.json` — 2-surface anatomy, BEM-flavored naming conventions, token-family inventory (3KB)
115
- - `references/gmarket/assets/_reference/.live-inspect-proof.json` — 8 raw_samples (≥5 floor), 2-surface manifest, top observed colors + radii, CSS var groups inventory, IP guardrail log (6KB)
116
- - `references/gmarket/assets/_reference/raw-capture-home.json` — full home capture, 182 samples, 247 CSS vars (120KB provenance)
117
- - `references/gmarket/assets/_reference/raw-capture-bestsellers.json` — full bestsellers capture, 90 samples, 246 CSS vars (64KB provenance)
118
-
119
- ### Flags — gmarket
120
-
121
- 17. **Gmarket Tier-1 partial positive (font-only)** — first-party SIL OFL Gmarket Sans (3 weights) at `corp.gmarket.com/fonts/`. Pattern: Korean legacy marketplaces are likelier to publish a free brand-font than a token system.
122
- 18. **Gmarket fixed-1200px desktop canvas** — WCAG 1.4.10 Reflow non-compliant on `www.`; mitigated only by separate `m.gmarket.co.kr` mobile flagship.
123
- 19. **Gmarket sub-brand color sub-systems as DS pattern** — Club Smile (5×3 navy/blue/gray) + Event (BF/BS/BSD) + Service-accent. Color directly encodes revenue program; downstream ports must keep sub-system naming if extending.
124
- 20. **Gmarket Red `#da120d` = price-discount asset, not button primary** — matches Bunjang `#d80c18` usage discipline.
@@ -1,69 +0,0 @@
1
- # omd v0.2 agent landscape — 2026-05-18
2
-
3
- 오 마이 디자인의 multi-agent layer를 구축하기 위해 조사한 supervisor / orchestration 패턴 정리.
4
-
5
- ## 1. Supervisor 토폴로지 비교
6
-
7
- | 패턴 | 출처 | 특징 | omd 적합도 |
8
- |---|---|---|---|
9
- | **Supervisor (router)** | LangGraph `create_supervisor` | 중앙 LLM이 다음 worker를 routing. State는 graph로 명시. 2-round revision cap 명시적. | ★★★★★ |
10
- | **Hierarchical crew** | CrewAI `Crew(process=hierarchical)` | Manager agent + worker pool. Manager가 task 위임. 단점: 무한 루프 가능. | ★★★ |
11
- | **Orchestrator-workers** | Anthropic "Building effective agents" (2024-12) + multi-agent coordination 블로그 | Lead agent가 subagent 병렬 spawn. Synthesize → critic loop. **Anthropic 자체 권장 패턴**. | ★★★★★ |
12
- | **Swarm (handoff)** | OpenAI Swarm (deprecated → Agents SDK) | Peer-to-peer handoff. 중앙 supervisor 없음. 추적 어려움. | ★★ |
13
-
14
- **채택: Anthropic orchestrator-workers + LangGraph supervisor의 revision-cap 패턴.** Claude Code의 subagent 호출 메커니즘이 이미 orchestrator-workers와 1:1 매핑되므로 별도 런타임 deps 불필요.
15
-
16
- ## 2. Anti-pattern (실측 사례)
17
-
18
- - "Looks good!" rubber-stamp critic — Critic이 LLM이면 sycophancy 발생. → **Rubric을 closed checklist로 강제**, "looks good" 응답 금지.
19
- - 무한 revision loop — Cap 없이 두면 cost runaway. → **2-round hard cap**, 미해결 시 verdict=BLOCK 으로 escalate.
20
- - Critic이 직접 artifact 수정 — Critic-writer 경계 붕괴. → **omd-final-qa는 read-only**, feedback만 emit.
21
- - DESIGN.md를 re-read 안 하고 stamping — Memory hallucination. → 각 review마다 DESIGN.md 강제 재독.
22
-
23
- ## 3. 한국어 voice preset taxonomy (parallel agent 결과: `2026-05-18-kr-style-presets.md`)
24
-
25
- 요약: 6개 preset.
26
- - `toss-tech-design` — `-요` 종결, 35~50자 문장, 5500자+
27
- - `karrot-neighborly` — 더 짧고 친근, 이웃 호칭
28
- - `brunch-maker-popular` — 1인칭 에세이, 감정 표현 허용
29
- - `biz-formal-report` — `-습니다` 격식체, 결론 우선
30
- - `academic-paper` — `-한다` 평어, 인용 강제
31
- - `journalism-broadsheet` — `-다` 신문체, 리드문 30자
32
-
33
- ## 4. 한국어 spellcheck 옵션
34
-
35
- | 라이브러리 | 상태 (2026-05) | 비고 |
36
- |---|---|---|
37
- | `py-hanspell` (ssut/py-hanspell) | 2020 이후 unmaintained. 네이버 API endpoint 변경 시 깨짐 | 일단 시도하되 fallback 필수 |
38
- | `hanspell` 포크들 (`9beach/hanspell`) | 일부 active | CLI 도구 |
39
- | `pyhanspell-fork` | 비활성 | — |
40
- | Custom heuristic | 100% deterministic | 외래어 표기, 띄어쓰기 상위 20개 패턴 hard-coded |
41
-
42
- **채택: heuristic-first + py-hanspell optional.** Network/외부 API 의존을 없애 deterministic하게 동작.
43
-
44
- ## 5. 3-stage 예시 워크플로우
45
-
46
- 사용자: "당근 디자인 시스템 분석 글 작성, KR + EN, 5500자+"
47
-
48
- ```
49
- omd-orchestrator (supervisor)
50
- ├─ Stage 1: omd-kr-writer (preset=toss-tech-design)
51
- │ → content/posts/karrot/index.ko.md (draft v1)
52
- ├─ Stage 2: omd-designer-review (artifact + references/karrot/DESIGN.md)
53
- │ → review-report.md (WARN: 색 budget 위반, FYI: figure 2개 부족)
54
- ├─ Stage 2b: omd-kr-writer revision round 1 (review feedback 반영)
55
- │ → index.ko.md v2
56
- ├─ Stage 3: omd-locale-adapter (KR → EN, cultural adaptation)
57
- │ → index.en.md
58
- ├─ Stage 4: omd-final-qa (rubric + omd-kr-spellcheck)
59
- │ → verdict: PASS (cycle 1, 9/9 rubric items)
60
- └─ Final: handoff to user
61
- ```
62
-
63
- Revision cap: writer↔review 최대 2 round, 미해결 시 final-qa가 BLOCK + 사용자 escalation.
64
-
65
- ## 6. 미연결 디펜던시 (후속 작업)
66
-
67
- - omd-orchestrator → omd-asset-curator 연동 (이미지 placeholder 자동 채우기) 미구현
68
- - omd-locale-adapter의 JP/ZH-TW preset 깊이 부족 (KR-EN만 1차 완성)
69
- - omd-kr-spellcheck heuristic ruleset 20개만 hard-coded. 사용자 누적 mistake corpus → rule 자동 학습은 v0.3 과제.