oh-my-design-cli 1.3.9 → 1.5.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 (168) hide show
  1. package/README.ja.md +8 -8
  2. package/README.ko.md +7 -7
  3. package/README.md +50 -16
  4. package/README.zh-TW.md +8 -8
  5. package/agents/omd-asset-curator.md +2 -7
  6. package/agents/omd-codex-image.md +49 -0
  7. package/agents/omd-designer-review.md +38 -0
  8. package/agents/omd-final-qa.md +40 -0
  9. package/agents/omd-kr-writer.md +35 -0
  10. package/agents/omd-locale-adapter.md +32 -0
  11. package/agents/omd-master.md +3 -13
  12. package/agents/omd-orchestrator.md +34 -0
  13. package/data/reference-audits/2026-05-14-kr10.md +72 -0
  14. package/data/reference-audits/2026-05-15-kr10.md +124 -0
  15. package/data/reference-fingerprints.json +1409 -254
  16. package/data/research/2026-05-18-agent-landscape.md +69 -0
  17. package/data/research/2026-05-18-kr-style-presets.md +572 -0
  18. package/dist/bin/oh-my-design.js +6 -3
  19. package/dist/bin/oh-my-design.js.map +1 -1
  20. package/dist/{install-skills-MVXVXYAY.js → install-skills-IETT2TBJ.js} +91 -8
  21. package/dist/install-skills-IETT2TBJ.js.map +1 -0
  22. package/package.json +7 -1
  23. package/skills/omd-apply/SKILL.md +0 -1
  24. package/skills/omd-codex-image/SKILL.md +162 -0
  25. package/skills/omd-designer-review/SKILL.md +146 -0
  26. package/skills/omd-final-qa/SKILL.md +153 -0
  27. package/skills/omd-kr-writer/SKILL.md +229 -0
  28. package/skills/omd-locale-adapter/SKILL.md +124 -0
  29. package/skills/omd-orchestrator/SKILL.md +124 -0
  30. package/web/references/17live/DESIGN.md +424 -0
  31. package/web/references/29cm/DESIGN.md +11 -2
  32. package/web/references/ably/DESIGN.md +12 -2
  33. package/web/references/airbnb/DESIGN.md +17 -2
  34. package/web/references/airtable/DESIGN.md +20 -0
  35. package/web/references/alipay/DESIGN.md +456 -0
  36. package/web/references/appier/DESIGN.md +420 -0
  37. package/web/references/apple/DESIGN.md +17 -2
  38. package/web/references/baemin/DESIGN.md +11 -2
  39. package/web/references/banksalad/DESIGN.md +17 -2
  40. package/web/references/bilibili/DESIGN.md +426 -0
  41. package/web/references/bmw/DESIGN.md +14 -0
  42. package/web/references/bunjang/DESIGN.md +308 -0
  43. package/web/references/cal/DESIGN.md +14 -0
  44. package/web/references/catchtable/DESIGN.md +262 -0
  45. package/web/references/channeltalk/DESIGN.md +374 -0
  46. package/web/references/class101/DESIGN.md +433 -0
  47. package/web/references/classum/DESIGN.md +217 -0
  48. package/web/references/claude/DESIGN.md +11 -2
  49. package/web/references/clay/DESIGN.md +19 -0
  50. package/web/references/clickhouse/DESIGN.md +19 -0
  51. package/web/references/cohere/DESIGN.md +20 -0
  52. package/web/references/coinbase/DESIGN.md +14 -0
  53. package/web/references/composio/DESIGN.md +14 -0
  54. package/web/references/cookpad/DESIGN.md +357 -0
  55. package/web/references/coupang/DESIGN.md +17 -2
  56. package/web/references/cursor/DESIGN.md +20 -0
  57. package/web/references/dabang/DESIGN.md +210 -0
  58. package/web/references/dcard/DESIGN.md +11 -2
  59. package/web/references/dji/DESIGN.md +416 -0
  60. package/web/references/elevenlabs/DESIGN.md +20 -0
  61. package/web/references/expo/DESIGN.md +20 -0
  62. package/web/references/fastcampus/DESIGN.md +460 -0
  63. package/web/references/ferrari/DESIGN.md +14 -0
  64. package/web/references/figma/DESIGN.md +17 -2
  65. package/web/references/flex/DESIGN.md +309 -0
  66. package/web/references/framer/DESIGN.md +20 -0
  67. package/web/references/freee/DESIGN.md +16 -2
  68. package/web/references/gangnamunni/DESIGN.md +18 -2
  69. package/web/references/gmarket/DESIGN.md +464 -0
  70. package/web/references/gogoro/DESIGN.md +403 -0
  71. package/web/references/hashicorp/DESIGN.md +19 -0
  72. package/web/references/ibm/DESIGN.md +20 -0
  73. package/web/references/ichef/DESIGN.md +411 -0
  74. package/web/references/inflearn/DESIGN.md +396 -0
  75. package/web/references/intercom/DESIGN.md +14 -0
  76. package/web/references/jumpit/DESIGN.md +366 -0
  77. package/web/references/kakao/DESIGN.md +14 -0
  78. package/web/references/kakaobank/DESIGN.md +17 -2
  79. package/web/references/kakaopay/DESIGN.md +17 -2
  80. package/web/references/kakaot/DESIGN.md +454 -0
  81. package/web/references/karrot/DESIGN.md +16 -2
  82. package/web/references/kbank/DESIGN.md +195 -0
  83. package/web/references/kkday/DESIGN.md +423 -0
  84. package/web/references/kraken/DESIGN.md +14 -0
  85. package/web/references/krds/DESIGN.md +17 -2
  86. package/web/references/kream/DESIGN.md +382 -0
  87. package/web/references/kurly/DESIGN.md +11 -2
  88. package/web/references/lamborghini/DESIGN.md +14 -0
  89. package/web/references/line/DESIGN.md +17 -2
  90. package/web/references/linear.app/DESIGN.md +17 -2
  91. package/web/references/lovable/DESIGN.md +14 -0
  92. package/web/references/lunit/DESIGN.md +249 -0
  93. package/web/references/meituan/DESIGN.md +424 -0
  94. package/web/references/mercari/DESIGN.md +11 -2
  95. package/web/references/millie/DESIGN.md +533 -0
  96. package/web/references/minimax/DESIGN.md +14 -0
  97. package/web/references/mintlify/DESIGN.md +14 -0
  98. package/web/references/miro/DESIGN.md +20 -0
  99. package/web/references/mistral.ai/DESIGN.md +20 -0
  100. package/web/references/money-forward/DESIGN.md +401 -0
  101. package/web/references/mongodb/DESIGN.md +19 -0
  102. package/web/references/musinsa/DESIGN.md +11 -2
  103. package/web/references/myrealtrip/DESIGN.md +445 -0
  104. package/web/references/naver/DESIGN.md +17 -2
  105. package/web/references/naverwebtoon/DESIGN.md +429 -0
  106. package/web/references/note/DESIGN.md +318 -0
  107. package/web/references/notion/DESIGN.md +11 -2
  108. package/web/references/nvidia/DESIGN.md +11 -2
  109. package/web/references/ohouse/DESIGN.md +11 -2
  110. package/web/references/oliveyoung/DESIGN.md +342 -0
  111. package/web/references/ollama/DESIGN.md +14 -0
  112. package/web/references/opencode.ai/DESIGN.md +20 -0
  113. package/web/references/pinkoi/DESIGN.md +11 -2
  114. package/web/references/pinterest/DESIGN.md +19 -0
  115. package/web/references/posthog/DESIGN.md +20 -0
  116. package/web/references/publy/DESIGN.md +511 -0
  117. package/web/references/qanda/DESIGN.md +11 -2
  118. package/web/references/raycast/DESIGN.md +19 -0
  119. package/web/references/remember/DESIGN.md +17 -2
  120. package/web/references/renault/DESIGN.md +14 -0
  121. package/web/references/replicate/DESIGN.md +14 -0
  122. package/web/references/resend/DESIGN.md +20 -0
  123. package/web/references/revolut/DESIGN.md +14 -0
  124. package/web/references/ridi/DESIGN.md +11 -2
  125. package/web/references/runwayml/DESIGN.md +14 -0
  126. package/web/references/sanity/DESIGN.md +20 -0
  127. package/web/references/sentry/DESIGN.md +14 -0
  128. package/web/references/smarthr/DESIGN.md +404 -0
  129. package/web/references/smartnews/DESIGN.md +331 -0
  130. package/web/references/socar/DESIGN.md +17 -2
  131. package/web/references/spacex/DESIGN.md +11 -2
  132. package/web/references/spoon/DESIGN.md +446 -0
  133. package/web/references/spotify/DESIGN.md +14 -0
  134. package/web/references/stripe/DESIGN.md +11 -2
  135. package/web/references/supabase/DESIGN.md +20 -0
  136. package/web/references/superhuman/DESIGN.md +20 -0
  137. package/web/references/tada/DESIGN.md +528 -0
  138. package/web/references/tesla/DESIGN.md +11 -2
  139. package/web/references/together.ai/DESIGN.md +20 -0
  140. package/web/references/toss/DESIGN.md +16 -2
  141. package/web/references/toss-securities/DESIGN.md +193 -0
  142. package/web/references/tossbank/DESIGN.md +519 -0
  143. package/web/references/triple/DESIGN.md +434 -0
  144. package/web/references/tumblbug/DESIGN.md +530 -0
  145. package/web/references/tving/DESIGN.md +259 -0
  146. package/web/references/uber/DESIGN.md +19 -0
  147. package/web/references/upbit/DESIGN.md +276 -0
  148. package/web/references/upstage/DESIGN.md +214 -0
  149. package/web/references/vercel/DESIGN.md +17 -2
  150. package/web/references/voltagent/DESIGN.md +14 -0
  151. package/web/references/wadiz/DESIGN.md +344 -0
  152. package/web/references/wanted/DESIGN.md +16 -2
  153. package/web/references/warp/DESIGN.md +14 -0
  154. package/web/references/watcha/DESIGN.md +425 -0
  155. package/web/references/wavve/DESIGN.md +438 -0
  156. package/web/references/wconcept/DESIGN.md +511 -0
  157. package/web/references/webflow/DESIGN.md +14 -0
  158. package/web/references/wise/DESIGN.md +19 -0
  159. package/web/references/x.ai/DESIGN.md +14 -0
  160. package/web/references/xiaohongshu/DESIGN.md +423 -0
  161. package/web/references/yanolja/DESIGN.md +17 -2
  162. package/web/references/yeogiotte/DESIGN.md +18 -2
  163. package/web/references/yogiyo/DESIGN.md +465 -0
  164. package/web/references/zapier/DESIGN.md +20 -0
  165. package/web/references/zigbang/DESIGN.md +12 -2
  166. package/web/references/zigzag/DESIGN.md +17 -2
  167. package/agents/omd-3d-blender.md +0 -269
  168. package/dist/install-skills-MVXVXYAY.js.map +0 -1
@@ -0,0 +1,342 @@
1
+ ---
2
+ id: oliveyoung
3
+ name: Olive Young
4
+ display_name_kr: Olive Young (올리브영)
5
+ country: KR
6
+ category: ecommerce
7
+ homepage: "https://www.oliveyoung.co.kr"
8
+ primary_color: "#000000"
9
+ logo:
10
+ type: favicon
11
+ slug: "https://www.google.com/s2/favicons?domain=oliveyoung.co.kr&sz=256"
12
+ verified: "2026-05-15"
13
+ omd: "0.1"
14
+ ---
15
+
16
+ ## 1. Visual Theme & Atmosphere
17
+
18
+ Olive Young presents as a **dense, scan-first H&B catalog**: a near-monochrome grayscale chrome (white surface, body ink `#666`, primary ink `#131518`) carries 90%+ of the surface, then snaps awake at the product card with a **five-color flag taxonomy** — `#F65C60` sale, `#F374B7` 오늘드림 same-day, `#9BCE26` coupon, `#6FCFF7` gift, plus the `#F05A5E` best-badge ring. Korean retail visual culture (Coupang, Wadiz, 11번가) leans on weight and tag-color over heroes; Olive Young sits at the disciplined end of that lineage — grid-tight, photo-led, with `#fff` ground for product respect and chromatic noise reserved for status payload. Architecturally the site is **dual-stack** — legacy JSP `Montserrat → NotoSansCJKkr → AppleSDGothicNeo → 돋움` chrome on `/store/main/*`, `/best`, `/search`, while the new Next.js subtree (visible on `/store/goods/getGoodsDetail.do` even in its ProductNotFound shell — `ProductNotFound_btn__`, `GnbForDesktop_category-toggle-button__`, `OYCompanyInfo_*` CSS Modules, runtime `--background:#0a0a0a / --foreground:#ededed / --font-noto-sans-kr / --font-roboto`) signals a multi-year token refresh in flight on product-detail first. Mood word: *brisk pharmacy aisle* — bright, taxonomic, no rhetorical lift, the work happens at the thumbnail.
19
+
20
+ ## 2. Color
21
+
22
+ | Token | Value | Role |
23
+ |---|---|---|
24
+ | `ink/primary` | `rgb(19, 21, 24)` ≈ `#131518` | GNB items, nav, headings on white |
25
+ | `ink/default` | `rgb(51, 51, 51)` ≈ `#333` | Card titles, mid-weight copy |
26
+ | `ink/body` | `rgb(102, 102, 102)` ≈ `#666` | Body default (also `body` element color) |
27
+ | `ink/muted` | `rgb(136, 136, 136)` ≈ `#888` | Meta lines, inactive pagination |
28
+ | `ink/disabled` | `rgb(170, 170, 170)` ≈ `#AAA` | Disabled |
29
+ | `ink/neutral-dark` | `rgb(47, 48, 48)` ≈ `#2F3030` | Active pagination fill |
30
+ | `ink/neutral-alt` | `rgb(69, 76, 83)` ≈ `#454C53` | "신상 더보기" outline button text |
31
+ | `ink/neutral-alt-2` | `rgb(80, 88, 95)` ≈ `#50585F` | Footer links / company-info button |
32
+ | `ink/neutral-alt-3` | `rgb(117, 125, 134)` ≈ `#757D86` | Chip text |
33
+ | `surface/white` | `#FFFFFF` | Ground (≈ all chrome) |
34
+ | `surface/paper` | `rgb(246, 247, 249)` ≈ `#F6F7F9` | Filter strip / quiet panels |
35
+ | `line/default` | `rgb(229, 231, 234)` ≈ `#E5E7EA` | Chip + card border |
36
+ | `line/thin` | `rgb(235, 235, 235)` ≈ `#EBEBEB` | 1px tile separator (heart-button border) |
37
+ | `flag/sale` | `rgb(246, 92, 96)` ≈ `#F65C60` | "세일" pill |
38
+ | `flag/best` | `rgb(240, 90, 94)` ≈ `#F05A5E` | "베스트" badge ring + text |
39
+ | `flag/same-day` | `rgb(243, 116, 183)` ≈ `#F374B7` | "오늘드림" |
40
+ | `flag/coupon` | `rgb(155, 206, 38)` ≈ `#9BCE26` | "쿠폰" (closest live token to brand olive) |
41
+ | `flag/gift` | `rgb(111, 207, 247)` ≈ `#6FCFF7` | "증정" |
42
+ | `accent/promo-salmon` | `rgb(242, 115, 112)` ≈ `#F27370` | Promotional shelf accent on /best |
43
+ | `nextjs/dark-bg` | `#0a0a0a` | Next.js subtree fallback background var |
44
+ | `nextjs/dark-fg` | `#ededed` | Next.js subtree fallback foreground var |
45
+
46
+ **Discipline rule** (observed): Olive Young **does not put hue on its chrome**. Buttons, nav, footer, search input, headings all sit on `#000–#888` neutrals; the five flag hues exist **only inside the thumbnail rectangle** as status payload. Olive Green (the corporate logotype color) is **absent from the storefront chrome** — the closest live token is the lime-leaning coupon flag `#9BCE26`.
47
+
48
+ ## 3. Typography
49
+
50
+ - **Stack (legacy JSP chrome):** `Montserrat, -apple-system, NotoSansCJKkr, AppleSDGothicNeo, Roboto, dotum, 돋움, sans-serif`
51
+ - **Stack (Next.js subtree):** `-apple-system, system-ui, AppleSDGothicNeo, "Noto Sans", Roboto, Montserrat, sans-serif`
52
+ - **Body:** 14px / 400 / `#666` / lh ~1.4
53
+ - **Size scale observed:** 12, 13, 13.33, 14, 15, 16, 20, 26, 28 px (no formal modular scale; the `13.333px` shows up in buttons converted from `0.833em`)
54
+ - **Weight scale:** 200 (rare ornamental), 400, 500 (Next.js subtree), 700 (default emphasis)
55
+ - **H1:** 28px / 700 (legacy main) — used sparingly; most surfaces are H-less
56
+ - **Korean rendering:** intentional 4-stop fallback chain ending at `dotum / 돋움` preserves rendering for legacy WinXP/MacOS Korean readers (uncommon discipline in 2026 KR e-commerce — legacy retention not pruned)
57
+
58
+ ## 4. Components
59
+
60
+ ### Button — Primary (filled black CTA, legacy chrome)
61
+
62
+ **Default**
63
+ - Background: `#000000`
64
+ - Text: `#FFFFFF`
65
+ - Border: 0
66
+ - Radius: `4px`
67
+ - Padding: ~`12px 18px` (h≈40)
68
+ - Font: 13.33px / 700 / Montserrat→NotoSansCJKkr
69
+ - Use: "장바구니 담기" / primary commit on legacy surfaces
70
+
71
+ ### Button — Outline neutral
72
+
73
+ **Default**
74
+ - Background: `#FFFFFF`
75
+ - Text: `#454C53`
76
+ - Border: `1px solid #E5E7EA`
77
+ - Radius: `4px`
78
+ - Padding: ~`10px 16px` (h≈40)
79
+ - Font: 14px / 500
80
+ - Use: "신상 더보기" / secondary actions
81
+
82
+ ### Button — Pagination
83
+
84
+ **Active**
85
+ - Background: `#2F3030`
86
+ - Text: `#FFFFFF`
87
+ - Border: 0
88
+ - Radius: `50%` (circular)
89
+ - Size: 24×24
90
+ - Font: 14px / 700
91
+ - Use: Current page indicator
92
+
93
+ **Default**
94
+ - Background: transparent
95
+ - Text: `#888888`
96
+ - Border: 0
97
+ - Radius: 0
98
+ - Font: 14px / 700
99
+ - Use: Other-page link
100
+
101
+ ### Pill — Category (top-of-main shortcut)
102
+
103
+ **Active**
104
+ - Background: `#000000`
105
+ - Text: `#FFFFFF`
106
+ - Border: 0
107
+ - Radius: `20px`
108
+ - Padding: ~`8px 14px` (h≈34)
109
+ - Font: 14px / 400
110
+ - Use: Selected category shortcut
111
+
112
+ **Default**
113
+ - Background: `#FFFFFF`
114
+ - Text: `#757D86`
115
+ - Border: `1px solid #E5E7EA` (inferred — same chip family)
116
+ - Radius: `20px`
117
+ - Font: 14px / 400
118
+ - Use: Unselected category shortcut
119
+
120
+ ### Chip — Filter (search results)
121
+
122
+ **Default**
123
+ - Background: `#FFFFFF`
124
+ - Text: `#757D86`
125
+ - Border: `1px solid #E5E7EA`
126
+ - Radius: `18px`
127
+ - Padding: ~`8px 14px` (h=36)
128
+ - Font: 14px / 400
129
+ - Use: 제품특징 / 가격대 / 색상 facet filters
130
+
131
+ ### Flag — Status pill (in-thumbnail status payload)
132
+
133
+ **Sale**
134
+ - Background: `#F65C60`
135
+ - Text: `#FFFFFF`
136
+ - Border: 0
137
+ - Radius: `9px`
138
+ - Padding: ~`3px 6px` (h=18)
139
+ - Font: 12px / 400
140
+ - Use: Active price discount
141
+
142
+ **Same-day (오늘드림)**
143
+ - Background: `#F374B7`
144
+ - Text: `#FFFFFF`
145
+ - Border: 0
146
+ - Radius: `9px`
147
+ - Font: 12px / 400
148
+ - Use: Same-day quick-commerce eligibility
149
+
150
+ **Coupon**
151
+ - Background: `#9BCE26`
152
+ - Text: `#FFFFFF`
153
+ - Border: 0
154
+ - Radius: `9px`
155
+ - Font: 12px / 400
156
+ - Use: Coupon-eligible SKU
157
+
158
+ **Gift**
159
+ - Background: `#6FCFF7`
160
+ - Text: `#FFFFFF`
161
+ - Border: 0
162
+ - Radius: `9px`
163
+ - Font: 12px / 400
164
+ - Use: Gift-with-purchase
165
+
166
+ ### Badge — Best (large pill, sash-style)
167
+
168
+ **Default**
169
+ - Background: `#FFFFFF`
170
+ - Text: `#F05A5E`
171
+ - Border: `2px solid #F05A5E`
172
+ - Radius: `24px` (pill)
173
+ - Padding: ~`8px 18px` (h=48)
174
+ - Font: 14px / 700
175
+ - Use: Best-seller call-out on hero rails
176
+
177
+ ### Heart — Wishlist button
178
+
179
+ **Idle (off)**
180
+ - Background: `#FFFFFF`
181
+ - Icon color: (icon-asset, color via SVG fill)
182
+ - Border: `1px solid #EBEBEB`
183
+ - Radius: 0 (square hit-box)
184
+ - Size: 40×40
185
+ - Use: 찜하기 toggle
186
+
187
+ ### Input — Search (GNB)
188
+
189
+ **Default**
190
+ - Background: `#FFFFFF`
191
+ - Text: `#131518`
192
+ - Border: bottom-only / inherited
193
+ - Radius: 0
194
+ - Height: 38
195
+ - Font: 13.33px (legacy) / 16px (Next.js)
196
+ - Use: Global product search
197
+
198
+ ### Card — Product tile (search/list)
199
+
200
+ **Default**
201
+ - Background: `#FFFFFF`
202
+ - Thumbnail aspect: 1:1 square (standard for KR H&B grid)
203
+ - Title: 14px / 400 / `#333`
204
+ - Brand: 12px / 400 / `#888`
205
+ - Price (active): 14–16px / 700 / `#131518`
206
+ - Strike price: 12px / 400 / `#AAA` line-through
207
+ - Flag area: 9px-radius pills inside thumb corner
208
+ - Border: 0 (separated by `#EBEBEB` grid gap)
209
+ - Use: Search result / category list / best list
210
+
211
+ ---
212
+
213
+ **Verified:** 2026-05-15
214
+ **Tier 1 sources:** CDP `:9222` getComputedStyle on (a) `https://www.oliveyoung.co.kr/store/main/main.do` 65 distinct samples · (b) `/store/main/getBestList.do` 33 samples · (c) `/store/search/getSearchMain.do?query=선크림` 55 samples · (d) `/store/goods/getGoodsDetail.do?goodsNo=A000000167660` 26 samples on Next.js shell. Total **179 distinct DOM samples** across 4 surfaces. Artifacts: `assets/_reference/tokens.json`, `structure.json`, `fonts.json`, `.live-inspect-proof.json` (11 raw_samples — over the ≥5 floor).
215
+ **Tier 1 official DS:** ✗ negative — `design.oliveyoung.co.kr` no DNS, `oliveyoung.design` no DNS, `corp.oliveyoung.com/*` 404, `cjoliveyoung.co.kr` ECONNREFUSED, no public Figma library, no `github.com/oliveyoung*` design-system repo. Documented authoritative negative. **Discovery**: production code reveals a **dual-stack migration in flight** (legacy JSP chrome + Next.js product-detail subtree with `--background/--foreground/--font-noto-sans-kr/--font-roboto` runtime vars + `*_btn__hash` CSS-Modules) — the canonical token system lives inside the Next.js bundle, not on a public docs surface.
216
+ **Tier 2 sources:** ✗ getdesign.md/oliveyoung — fetch blocked by Claude auto-mode classifier (domain not user-allowlisted), unable to verify presence/absence this pass; ✗ styles.refero.design `?q=oliveyoung` — no result cards.
217
+ **Conflicts unresolved:** none material — `accent/promo-salmon #F27370` vs `flag/best #F05A5E` differ by 2 RGB steps; treated as **two distinct tokens** since they appear on different surface roles (promo shelf vs taxonomic badge). Flagged for UPDATE pass: product-detail (real SKU), cart, my-page, mobile (`m.oliveyoung.co.kr`) — not captured this session.
218
+
219
+ ## 5. Layout & Grid
220
+
221
+ - **Page width:** 1280px fixed container (legacy chrome); Next.js subtree fluid
222
+ - **GNB:** 90px header inner + 119px design-area (banner row), fixed top
223
+ - **Search input:** 38px height
224
+ - **Card grid (search/best):** 4-up desktop, square thumbnails, ~16px gutter
225
+ - **Filter strip (search):** 36px chips, paper bg `#F6F7F9`, top of result column
226
+ - **Pagination:** 24×24 circular active dot, centered below grid
227
+
228
+ ## 6. Iconography
229
+
230
+ - **Style:** Outlined line icons at 16–24px, monochrome ink (no two-tone). Stroke ~1.5px. Korean retail convention (cart/heart/coupon/gift glyphs) inherited rather than custom.
231
+ - **Filled use:** Only in flag pills (no in-pill icon; pill itself is the icon).
232
+ - **Heart:** Outline default → filled `#F05A5E` on active (inferred from `btn_zzim jeem` class semantics).
233
+
234
+ ## 7. Motion & Easing
235
+
236
+ - **Carousel transitions:** `slick` carousel (legacy) on hero rails — default 300ms slide
237
+ - **Hover states:** Catalog tiles use static hover (no lift / no shadow gain — depth is line-only in the system; corroborates the 0-shadow observation)
238
+ - **Next.js subtree:** `--swiper-theme-color: #007aff` exposed (default Swiper iOS blue; visual non-load because chrome overrides)
239
+ - **Floor:** No site-wide CSS custom-property motion tokens — durations live inside vendor carousels (slick, Swiper). Flagged as a follow-up: motion token harvest from product-detail page after a real SKU loads.
240
+
241
+ ## 8. Accessibility & Density
242
+
243
+ - **Body 14px / #666 on white** = ~5.7:1 contrast — passes WCAG AA for body text, fails AAA for small text
244
+ - **Chip text `#757D86` on white** = ~4.5:1 — at the AA floor; chips with mixed-case Korean (대 vs ㅏ) are legible but borderline
245
+ - **Flag contrasts (white text on flag color):**
246
+ - Sale `#F65C60` ≈ 3.2:1 → **fails AA for normal text**; passes for 14px bold or larger via Korean Bold-text exception; documented trade-off
247
+ - Coupon `#9BCE26` + white ≈ 1.8:1 → **fails AA**; legibility relies on the 12px size + bold-by-CJK rendering
248
+ - Gift `#6FCFF7` + white ≈ 1.6:1 → **fails AA**
249
+ - **Touch targets:** Pagination 24×24 below WCAG 2.5.5 (44×44) — speed-over-floor decision typical of KR catalog UIs
250
+ - **Korean fallback chain ends at 돋움** — explicit legacy-OS support, rare in 2026
251
+
252
+ ## 9. Voice & Tone
253
+
254
+ - **Voice adjectives (3):** *Direct · Functional · Promotional* — no rhetorical lift; copy works as labels and offers.
255
+ - **Korean style:** Casual-polite ("~해요/세요"), declarative, comma-light, status-first ("세일", "오늘드림", "쿠폰", "증정"). Imperative-light — even CTAs read as factual ("장바구니 담기" not "지금 사세요").
256
+ - **Pattern:** Verb + 하기 noun ("찜하기", "담기", "더보기", "1:1문의하기") is the dominant CTA shape — observed on 6+ buttons across captures.
257
+ - **Do / Don't (fresh OmD illustrative — not Olive Young verbatim):**
258
+
259
+ | Do | Don't |
260
+ |---|---|
261
+ | "쿠폰가 보기" | "지금 안 사면 손해예요" |
262
+ | "내 피부톤에 맞는 쿠션 골라보기" | "당신을 위해 골랐어요" |
263
+ | "오늘 받는 상품만 보기" | "오늘 안 받으면 후회해요" |
264
+
265
+ **Voice samples (3 fresh illustrative reconstructions — not Olive Young copy):**
266
+ 1. "오늘 도착 가능한 상품만 모았어요." — same-day filter affordance
267
+ 2. "회원이면 ₩2,000 더 저렴해요." — soft commercial nudge, declarative not imperative
268
+ 3. "이 색상은 다음 주에 다시 들어올 것 같아요." — OOS state, soft restock signal
269
+
270
+ **IP guardrail:** No verbatim Olive Young marketing copy reproduced. Voice samples above are OmD-original constructions modelled on the observed *shape* (casual-polite + declarative + 하기-verb), not the substance.
271
+
272
+ ## 10. Brand Narrative
273
+
274
+ CJ Olive Young is the H&B (Health & Beauty) retail arm of **CJ Group**, founded 1999 and operating as Korea's #1 omnichannel H&B chain — ~1,300 stores nationwide plus the `oliveyoung.co.kr` web/app and `global.oliveyoung.com` cross-border surface. Its visual posture matches its category position: not a beauty *aspirational brand* (no editorial hero shots, no rhetorical typography), but the **default aisle** — a high-velocity catalog where SKU density, in-stock status, same-day eligibility, and coupon math do the persuasive work. The recent migration of product-detail to Next.js (visible in production as of 2026-05-15) and the runtime CSS-vars (`--background / --foreground / --font-noto-sans-kr`) signal an in-flight design-system rebuild — likely consolidating the legacy JSP `Montserrat→돋움` stack and the new React subtree onto shared semantic tokens. *Narrative facts above are public-record; founder voice and design-team attribution `[FILL IN]` — no verbatim attribution available in EN-language sources.*
275
+
276
+ ## 11. Principles
277
+
278
+ 1. **Chrome stays gray; flags do the work.** Olive Young commits to neutral grayscale across nav/header/footer/buttons and reserves all five hues for in-thumbnail status. *UI implication: when porting, never put a flag color on a primary CTA or chrome surface — it breaks the system's status-vs-action separation.*
279
+ 2. **One flag = one fact.** Sale / 오늘드림 / 쿠폰 / 증정 / 베스트 each map 1:1 to a service feature, not a marketing mood. *UI implication: don't introduce a sixth color for a "new" badge; pick one of the existing flag roles or skip the chrome.*
280
+ 3. **Weight signals over hue.** Active pagination flips from transparent/`#888` to `#2F3030`/`#FFF` and goes from radius-0 to 50% circle — state encoded by 2 axes (fill + radius) not by hue. *UI implication: prefer ink-darkening + shape-change for state; reserve color for status payload.*
281
+ 4. **Korean rendering down to 돋움.** The fallback chain explicitly retains a Windows-XP/older-macOS Korean glyph — a deliberate accessibility floor for older readers. *UI implication: never prune the Korean fallback chain to system-ui only.*
282
+ 5. **Migrate in subtrees, not big-bang.** Product-detail Next.js + legacy JSP main coexist; the catalog shopper sees a consistent chrome despite two stacks underneath. *UI implication: design-system migrations should target one feature surface at a time and share visual tokens at the chrome level.*
283
+
284
+ ## 12. Personas
285
+
286
+ *Illustrative archetypes — not Olive Young user research; OmD-original for design framing.*
287
+
288
+ - **Han-na (29, office worker, Seoul):** browses on phone during commute, scans flags before titles, expects 오늘드림 by 14:00 cutoff, abandons if cart total doesn't show coupon math inline. Comfort with Korean copy, low patience for English-loanword decoration.
289
+ - **Ji-won (38, parent, Suwon):** weekend desktop session, builds a 8–12 SKU cart of repeat-buy basics, sorts by coupon eligibility, treats `#9BCE26` coupon flag as primary signal-to-noise filter.
290
+ - **Min-jae (24, K-beauty enthusiast, Busan):** product-detail page is the destination — wants ingredient list, review filter by skin type, real-color swatch photos. The Next.js detail-page rebuild is for this persona.
291
+ - **Su-jin (52, gift-buyer, Daejeon):** lower digital comfort, relies on category pills and "베스트" badge — the radius-24px pill is a literal stamp of "popular enough to trust." Korean fallback to `돋움` is for this reader.
292
+
293
+ ## 13. States
294
+
295
+ | State | Pattern |
296
+ |---|---|
297
+ | Empty (search 0-result) | Centered "이전 페이지 / 홈으로 가기" pair — outline white-bg + filled-black; observed on `getGoodsDetail.do` ProductNotFound shell (Next.js) |
298
+ | Loading | No skeleton observed on legacy chrome; Next.js subtree presumed (not captured this pass — flagged) |
299
+ | Error — 404 | `ProductNotFound_btn-area__Q_xDU` two-button shell, neutral chrome, no error red |
300
+ | Error — form | Not captured this pass; flagged for UPDATE |
301
+ | Success — added to cart | Toast pattern presumed; not captured |
302
+ | Skeleton | Likely tile-shaped on Next.js detail; not captured |
303
+ | Disabled (button) | Inferred — opacity-driven on legacy (no dedicated token) |
304
+ | Hover (chip / pill) | Static — no shadow gain, no lift; depth stays line-only |
305
+ | Active (pagination) | Fill flip `transparent → #2F3030` + radius `0 → 50%` + text flip `#888 → #FFF` |
306
+ | Active (category pill) | Fill flip `#FFF → #000` + text flip `#757D86 → #FFF`, radius unchanged at 20px |
307
+
308
+ ## 14. Motion & Easing
309
+
310
+ - **Carousel:** slick (legacy hero) — default 300ms slide, ease-in-out
311
+ - **Carousel:** Swiper (Next.js subtree) — `--swiper-theme-color: #007aff` exposed (visual override likely)
312
+ - **Hover:** **none observed** on tiles, chips, or pills — depth and state are static-encoded
313
+ - **Floor:** No site-wide motion tokens captured. **Flagged** as follow-up — capture from a real product-detail SKU + cart-add transition.
314
+
315
+ ## 15. References & Footer
316
+
317
+ **Live capture (Tier 1):**
318
+ - `https://www.oliveyoung.co.kr/store/main/main.do` (65 samples, legacy JSP)
319
+ - `https://www.oliveyoung.co.kr/store/main/getBestList.do` (33 samples, legacy JSP, promo-salmon `#F27370`)
320
+ - `https://www.oliveyoung.co.kr/store/search/getSearchMain.do?query=선크림` (55 samples, full 5-color flag taxonomy captured here)
321
+ - `https://www.oliveyoung.co.kr/store/goods/getGoodsDetail.do?goodsNo=A000000167660` (26 samples, Next.js subtree shell + runtime CSS vars)
322
+ - Harness: Chrome DevTools Protocol `:9222` via `websocket-client` (`suppress_origin=True`)
323
+ - Artifacts: `assets/_reference/tokens.json` · `structure.json` · `fonts.json` · `.live-inspect-proof.json` (11 raw_samples)
324
+
325
+ **Tier 1 official DS:** ✗ negative (authoritative). No `design.oliveyoung.co.kr` / `oliveyoung.design` DNS; `corp.oliveyoung.com/*` 404; `cjoliveyoung.co.kr` ECONNREFUSED; no public Figma library or GitHub design-system repo at `github.com/oliveyoung*`. The canonical token system lives **inside the Next.js bundle on product-detail** (CSS Modules `*_btn__` + runtime `--font-noto-sans-kr / --background / --foreground` vars) — accessible only by live inspect.
326
+
327
+ **Tier 2 sources:** ✗ getdesign.md/oliveyoung blocked by Claude auto-mode (domain not allowlisted) — unable to verify this pass; ✗ styles.refero.design `?q=oliveyoung` no result cards.
328
+
329
+ **IP guardrails:**
330
+ - Brand mark and product photography referenced for token harvest only — no asset stored beyond JSON observation records
331
+ - No verbatim Olive Young marketing taglines reproduced (none observed in captures)
332
+ - §9 voice samples are OmD-original illustrative — modelled on observed shape (declarative + 하기-verb + casual-polite), not substance
333
+ - §12 personas are illustrative (no user research); flagged in section header
334
+
335
+ **Conflicts unresolved:** none material. Promo-salmon `#F27370` vs flag-best `#F05A5E` treated as distinct (role-separated). Token-name choices in §2 are OmD coinage — Olive Young does not publish a canonical name table.
336
+
337
+ **Follow-up UPDATE pass recommended:**
338
+ - Real product-detail SKU (Next.js token harvest — `--*` vars + Module class catalog)
339
+ - Cart / my-page / checkout (state matrix completion)
340
+ - Mobile site `m.oliveyoung.co.kr` (touch-target audit)
341
+ - Motion token harvest (durations, easings)
342
+ - Re-attempt Tier 2 (getdesign.md with user-allowlisted fetch)
@@ -1,3 +1,17 @@
1
+ ---
2
+ id: ollama
3
+ name: Ollama
4
+ country: US
5
+ category: ai
6
+ homepage: "https://ollama.com"
7
+ primary_color: "#000000"
8
+ logo:
9
+ type: simpleicons
10
+ slug: ollama
11
+ verified: "2026-05-15"
12
+ omd: "0.1"
13
+ ---
14
+
1
15
  # Design System Inspiration of Ollama
2
16
 
3
17
  ## 1. Visual Theme & Atmosphere
@@ -1,3 +1,23 @@
1
+ ---
2
+ id: opencode.ai
3
+ name: OpenCode AI
4
+ country: US
5
+ category: ai
6
+ homepage: "https://opencode.ai"
7
+ primary_color: "#000000"
8
+ logo:
9
+ type: github
10
+ slug: opencode-ai
11
+ verified: "2026-05-15"
12
+ omd: "0.1"
13
+ ds:
14
+ name: OpenCode Brand
15
+ url: "https://opencode.ai/brand"
16
+ type: brand
17
+ description: OpenCode's terminal-oriented logo and brand assets.
18
+ og_image: "https://opencode.ai/social-share.png"
19
+ ---
20
+
1
21
  # Design System Inspiration of OpenCode
2
22
 
3
23
  ## 1. Visual Theme & Atmosphere
@@ -1,6 +1,15 @@
1
1
  ---
2
- omd: 0.1
3
- brand: Pinkoi
2
+ id: pinkoi
3
+ name: Pinkoi
4
+ country: TW
5
+ category: consumer-tech
6
+ homepage: "https://www.pinkoi.com"
7
+ primary_color: "#ff595a"
8
+ logo:
9
+ type: github
10
+ slug: pinkoi
11
+ verified: "2026-05-15"
12
+ omd: "0.1"
4
13
  ---
5
14
 
6
15
  # Design System Inspiration of Pinkoi
@@ -1,3 +1,22 @@
1
+ ---
2
+ id: pinterest
3
+ name: Pinterest
4
+ country: US
5
+ category: consumer-tech
6
+ homepage: "https://www.pinterest.com"
7
+ primary_color: "#e60023"
8
+ logo:
9
+ type: simpleicons
10
+ slug: pinterest
11
+ verified: "2026-05-15"
12
+ omd: "0.1"
13
+ ds:
14
+ name: Gestalt
15
+ url: "https://gestalt.pinterest.systems"
16
+ type: system
17
+ description: Pinterest's open-source React component library with tokens and foundations.
18
+ ---
19
+
1
20
  # Design System Inspiration of Pinterest
2
21
 
3
22
  ## 1. Visual Theme & Atmosphere
@@ -1,3 +1,23 @@
1
+ ---
2
+ id: posthog
3
+ name: PostHog
4
+ country: US
5
+ category: backend-devops
6
+ homepage: "https://posthog.com"
7
+ primary_color: "#1d4aff"
8
+ logo:
9
+ type: simpleicons
10
+ slug: posthog
11
+ verified: "2026-05-15"
12
+ omd: "0.1"
13
+ ds:
14
+ name: PostHog Brand Assets
15
+ url: "https://posthog.com/handbook/company/brand-assets"
16
+ type: brand
17
+ description: PostHog's public handbook brand, logo, and illustration guidelines.
18
+ og_image: "https://d36j3rcgc2qfsv.cloudfront.net/handbookcompanybrand-assets.jpeg"
19
+ ---
20
+
1
21
  # Design System Inspiration of PostHog
2
22
 
3
23
  ## 1. Visual Theme & Atmosphere