oh-my-design-cli 1.8.2 → 1.8.7

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 (83) hide show
  1. package/README.ja.md +5 -5
  2. package/README.ko.md +7 -7
  3. package/README.md +7 -7
  4. package/README.zh-TW.md +5 -5
  5. package/agents/omd-master.md +1 -1
  6. package/data/reference-fingerprints.json +1696 -17
  7. package/package.json +3 -1
  8. package/skills/omd-feel/SKILL.md +152 -0
  9. package/skills/omd-feel/provenance.md +233 -0
  10. package/skills/omd-feel/reference.md +254 -0
  11. package/skills/omd-harness/SKILL.md +1 -1
  12. package/skills/omd-init/SKILL.md +1 -1
  13. package/skills/omd-reference-capture/SKILL.md +1 -1
  14. package/web/references/591/DESIGN.md +460 -0
  15. package/web/references/airbridge/DESIGN.md +451 -0
  16. package/web/references/asana/DESIGN.md +485 -0
  17. package/web/references/asos/DESIGN.md +475 -0
  18. package/web/references/bahamut/DESIGN.md +416 -0
  19. package/web/references/bbc/DESIGN.md +439 -0
  20. package/web/references/bigin/DESIGN.md +454 -0
  21. package/web/references/buzzvil/DESIGN.md +457 -0
  22. package/web/references/cafe24/DESIGN.md +472 -0
  23. package/web/references/chunghwa/DESIGN.md +419 -0
  24. package/web/references/codeit/DESIGN.md +470 -0
  25. package/web/references/databricks/DESIGN.md +467 -0
  26. package/web/references/datarize/DESIGN.md +451 -0
  27. package/web/references/deliveroo/DESIGN.md +458 -0
  28. package/web/references/doordash/DESIGN.md +429 -0
  29. package/web/references/easywallet/DESIGN.md +449 -0
  30. package/web/references/elice/DESIGN.md +445 -0
  31. package/web/references/esunbank/DESIGN.md +445 -0
  32. package/web/references/farfetch/DESIGN.md +436 -0
  33. package/web/references/fubon/DESIGN.md +438 -0
  34. package/web/references/furiosaai/DESIGN.md +450 -0
  35. package/web/references/goorm/DESIGN.md +470 -0
  36. package/web/references/govuk/DESIGN.md +450 -0
  37. package/web/references/greencar/DESIGN.md +420 -0
  38. package/web/references/hackle/DESIGN.md +472 -0
  39. package/web/references/hana/DESIGN.md +439 -0
  40. package/web/references/hubspot/DESIGN.md +485 -0
  41. package/web/references/hwahae/DESIGN.md +453 -0
  42. package/web/references/hyundai/DESIGN.md +468 -0
  43. package/web/references/icook/DESIGN.md +432 -0
  44. package/web/references/instacart/DESIGN.md +439 -0
  45. package/web/references/ipassmoney/DESIGN.md +407 -0
  46. package/web/references/kakaopage/DESIGN.md +439 -0
  47. package/web/references/kbpay/DESIGN.md +442 -0
  48. package/web/references/kcd/DESIGN.md +432 -0
  49. package/web/references/kia/DESIGN.md +411 -0
  50. package/web/references/kyobobook/DESIGN.md +445 -0
  51. package/web/references/lablup/DESIGN.md +474 -0
  52. package/web/references/lemonbase/DESIGN.md +452 -0
  53. package/web/references/liner/DESIGN.md +465 -0
  54. package/web/references/makinarocks/DESIGN.md +442 -0
  55. package/web/references/monzo/DESIGN.md +461 -0
  56. package/web/references/moreh/DESIGN.md +437 -0
  57. package/web/references/naverpay/DESIGN.md +478 -0
  58. package/web/references/neosapience/DESIGN.md +441 -0
  59. package/web/references/nota/DESIGN.md +451 -0
  60. package/web/references/octopusenergy/DESIGN.md +436 -0
  61. package/web/references/openpoint/DESIGN.md +431 -0
  62. package/web/references/paypal/DESIGN.md +459 -0
  63. package/web/references/portone/DESIGN.md +446 -0
  64. package/web/references/queenit/DESIGN.md +432 -0
  65. package/web/references/rebellions/DESIGN.md +449 -0
  66. package/web/references/reddit/DESIGN.md +537 -0
  67. package/web/references/returnzero/DESIGN.md +460 -0
  68. package/web/references/samsung/DESIGN.md +465 -0
  69. package/web/references/saramin/DESIGN.md +465 -0
  70. package/web/references/shiftee/DESIGN.md +468 -0
  71. package/web/references/shinhanbank/DESIGN.md +429 -0
  72. package/web/references/skyscanner/DESIGN.md +563 -0
  73. package/web/references/snapchat/DESIGN.md +460 -0
  74. package/web/references/solapi/DESIGN.md +483 -0
  75. package/web/references/squarespace/DESIGN.md +454 -0
  76. package/web/references/ssg/DESIGN.md +439 -0
  77. package/web/references/starling/DESIGN.md +404 -0
  78. package/web/references/supertone/DESIGN.md +413 -0
  79. package/web/references/taiwanmobile/DESIGN.md +445 -0
  80. package/web/references/trainline/DESIGN.md +454 -0
  81. package/web/references/vuno/DESIGN.md +413 -0
  82. package/web/references/weverse/DESIGN.md +437 -0
  83. package/web/references/zoom/DESIGN.md +457 -0
@@ -0,0 +1,453 @@
1
+ ---
2
+ id: hwahae
3
+ name: Hwahae
4
+ display_name_kr: 화해
5
+ country: KR
6
+ category: consumer-tech
7
+ homepage: "https://www.hwahae.co.kr"
8
+ primary_color: "#00d5ce"
9
+ logo:
10
+ type: favicon
11
+ slug: "https://www.google.com/s2/favicons?domain=hwahae.co.kr&sz=128"
12
+ verified: "2026-06-26"
13
+ added: "2026-06-26"
14
+ omd: "0.1"
15
+ tokens:
16
+ source: live-extract
17
+ extracted: "2026-06-26"
18
+ note: "brand = turquoise flower mark (#00d5ce logo / #22d3d6 live blog accent / #00a5aa darker UI teal); amber (#ffaa3c) is the functional rating-star accent and the single most visible hue on the product surface. Product web runs Pretendard Variable on a #f7f7f7 canvas; the official tech blog runs Spoqa Han Sans."
19
+ colors:
20
+ brand: "#00d5ce"
21
+ brand-bright: "#22d3d6"
22
+ brand-deep: "#00a5aa"
23
+ tint: "#eefbfb"
24
+ rating: "#ffaa3c"
25
+ info: "#467dff"
26
+ alert: "#ff5555"
27
+ ink: "#000000"
28
+ ink-soft: "#111111"
29
+ ink-blog: "#212529"
30
+ body: "#3d3d3d"
31
+ muted: "#666666"
32
+ faint: "#999999"
33
+ placeholder: "#aaaaaa"
34
+ divider: "#d8d8d8"
35
+ hairline: "#e8e8e8"
36
+ canvas: "#ffffff"
37
+ surface: "#f7f7f7"
38
+ on-brand: "#ffffff"
39
+ typography:
40
+ family: { product: "Pretendard Variable", blog: "Spoqa Han Sans" }
41
+ blog-display: { size: 32, weight: 700, lineHeight: 1.44, tracking: -1.0, use: "Blog section heads, Spoqa Han Sans Bold" }
42
+ section: { size: 18, weight: 600, lineHeight: 1.33, tracking: -0.2, use: "Product section titles, Pretendard SemiBold" }
43
+ nav: { size: 15, weight: 600, lineHeight: 1.5, use: "Top nav item (active 600 / inactive 400)" }
44
+ card-title: { size: 14, weight: 600, lineHeight: 1.5, use: "Card / category labels, Pretendard SemiBold" }
45
+ body: { size: 16, weight: 400, lineHeight: 1.5, use: "Standard body text, Pretendard" }
46
+ label: { size: 14, weight: 400, lineHeight: 1.5, use: "Search / dense UI text, Pretendard" }
47
+ caption: { size: 12, weight: 400, lineHeight: 1.5, use: "Button labels, metadata" }
48
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 20, xl: 24, xxl: 32, section: 48 }
49
+ rounded: { xs: 4, sm: 8, md: 16, lg: 20, full: 99999 }
50
+ shadow:
51
+ card: "rgba(0, 0, 0, 0.08) 0px 2px 8px 0px"
52
+ hairline-ring: "rgb(232, 232, 232) 0px 0px 0px 1px"
53
+ none: "none"
54
+ components:
55
+ button-primary: { type: button, bg: "#00d5ce", fg: "#ffffff", radius: "8px", font: "16px / 600", use: "Brand turquoise primary action — app-install / key CTA" }
56
+ button-outline: { type: button, bg: "#ffffff", fg: "#3d3d3d", border: "1px solid #e8e8e8", radius: "4px", padding: "0 8px", height: "24px", font: "12px / 400", use: "Secondary chip (로그인) — white with hairline" }
57
+ nav-tab: { type: tab, fg: "#111111", active: "text #111111 weight 600", font: "15px / 400", use: "Top nav (홈 / 랭킹 / 어워드)" }
58
+ product-card: { type: card, bg: "#ffffff", radius: "16px", shadow: "rgba(0, 0, 0, 0.08) 0px 2px 8px", use: "Product / ranking card — 1px #e8e8e8 hairline ring" }
59
+ tint-card: { type: card, bg: "#eefbfb", fg: "#000000", radius: "16px", use: "Pale-mint brand tint section / card" }
60
+ search-input: { type: input, bg: "#ffffff", border: "1px solid #e8e8e8", radius: "8px", fg: "#000000", use: "Header search — #aaaaaa placeholder" }
61
+ rating-badge: { type: badge, bg: "#ffffff", fg: "#ffaa3c", radius: "4px", font: "12px / 600", use: "Amber star-rating value" }
62
+ info-chip: { type: badge, bg: "#ffffff", fg: "#467dff", radius: "4px", font: "12px / 600", use: "Blue inline accent / info tag" }
63
+ components_harvested: true
64
+ ---
65
+
66
+ # Design System Inspiration of Hwahae
67
+
68
+ ## 1. Visual Theme & Atmosphere
69
+
70
+ Hwahae (화해) is Korea's dominant cosmetics-review and ingredient-analysis platform, and its product web reads like a clean, content-dense beauty index rather than a glossy brand microsite. The canvas is a soft neutral grey (`#f7f7f7`) layered over pure white (`#ffffff`) cards, so the imagery — product shots, ranking thumbnails, brand tiles — carries all the color and the chrome stays quiet. Text sits in pure black (`#000000`) for headings and a softened near-black (`#111111`) for navigation, giving the page an honest, encyclopedic weight. The brand's signature is a vivid turquoise flower mark (`#00d5ce`), echoed live on the engineering blog as `#22d3d6` and in UI accents as the deeper teal `#00a5aa`, all resting on a barely-there pale-mint tint (`#eefbfb`) that appears in hero and section backgrounds.
71
+
72
+ What dominates the live product surface, though, is amber (`#ffaa3c`) — the rating-star color. Because Hwahae is fundamentally a review and ranking service, the amber star appears more than any other accent on the page, training the eye to read it as "score / trust." A small functional palette rounds it out: an action blue (`#467dff`) for inline links and tags, and a coral (`#ff5555`) for sale and wishlist signals. The neutrals run a long, careful ladder — `#3d3d3d` body, `#666666` secondary, `#999999` captions, `#aaaaaa` placeholders, `#d8d8d8` dividers, `#e8e8e8` hairlines — the kind of granular grey scale you only get from a real design system.
73
+
74
+ That design system is explicit: utility classes across the site are namespaced `hds-` (Hwahae Design System), and Hwahae's product-design team has publicly documented its construction — a Foundation layer (Color, Typography, Grid, Radius, Spacing) feeding Components and Templates, built in Figma and shipped through Storybook. The geometry is soft and consistent: 8px is the workhorse radius, 16px for cards, 4px for tight chips, full-round (99999px) for pills and 50% for avatars; the blog leans to a rounder 20px. Depth is minimal — a single light card shadow (`rgba(0, 0, 0, 0.08) 0px 2px 8px`) and a 1px `#e8e8e8` hairline ring do almost all the separating. Typography is split by surface: the product web is set in **Pretendard Variable** at a dense, app-like scale (18px section heads, 16px body, 14–15px UI), while the official tech blog is set in **Spoqa Han Sans** at a larger editorial 32px / weight 700.
75
+
76
+ **Key Characteristics:**
77
+ - Turquoise flower brand mark (`#00d5ce`) — quiet on chrome, loud as identity; live blog accent `#22d3d6`, deeper UI teal `#00a5aa`
78
+ - Amber (`#ffaa3c`) as the most-present accent — it is the rating-star color of a review-first product
79
+ - Pretendard Variable on the product web; Spoqa Han Sans on the engineering/design blog
80
+ - Pure black (`#000000`) headings, softened `#111111` nav — honest, index-like text
81
+ - Soft neutral `#f7f7f7` canvas with pure-white (`#ffffff`) cards carrying the imagery
82
+ - Pale-mint tint (`#eefbfb`) for hero/section backgrounds — the brand turquoise at 5% presence
83
+ - Granular grey ladder (`#3d3d3d` → `#666666` → `#999999` → `#aaaaaa`) from a real `hds-` design system
84
+ - Minimal depth: one `rgba(0, 0, 0, 0.08)` card shadow + 1px `#e8e8e8` hairline ring
85
+ - Soft radius scale — 8px workhorse, 16px cards, 4px chips, 99999px pills, 20px on the blog
86
+
87
+ ## 2. Color Palette & Roles
88
+
89
+ ### Brand
90
+ - **Hwahae Turquoise** (`#00d5ce`): The flower-mark brand color and primary identity hue. Used for the logo, brand moments, and the primary action color.
91
+ - **Turquoise Bright** (`#22d3d6`): The live turquoise measured on the official tech blog — the same brand hue rendered slightly brighter on screen.
92
+ - **Turquoise Deep** (`#00a5aa`): A darker interactive teal used for accent text and small UI elements on the product surface.
93
+ - **Mint Tint** (`#eefbfb`): A near-white pale mint, the brand turquoise at minimal presence — hero and section backgrounds.
94
+
95
+ ### Functional Accents
96
+ - **Rating Amber** (`#ffaa3c`): The star-rating color — the single most-present accent on the product web, signalling score and trust.
97
+ - **Action Blue** (`#467dff`): Inline links, info tags, and interactive accents.
98
+ - **Alert Coral** (`#ff5555`): Sale prices, wishlist/heart, and attention signals.
99
+
100
+ ### Text & Ink
101
+ - **Ink Black** (`#000000`): Primary headings and high-emphasis text.
102
+ - **Ink Soft** (`#111111`): Navigation labels and strong UI text — a softened near-black.
103
+ - **Ink Blog** (`#212529`): The blog body/heading text color (Spoqa Han Sans surface).
104
+ - **Body** (`#3d3d3d`): Secondary body copy and button labels.
105
+ - **Muted** (`#666666`): Tertiary text and descriptions.
106
+ - **Faint** (`#999999`): Captions, metadata, low-emphasis labels.
107
+ - **Placeholder** (`#aaaaaa`): Input placeholder text.
108
+
109
+ ### Surface & Lines
110
+ - **Canvas White** (`#ffffff`): Card surfaces, text on brand/dark, and the cleanest backgrounds.
111
+ - **Surface Grey** (`#f7f7f7`): The page background — a soft neutral that lets imagery carry the color.
112
+ - **Divider** (`#d8d8d8`): Heavier separators and segmented controls.
113
+ - **Hairline** (`#e8e8e8`): Card outlines, dividers, and the 1px ring that replaces shadow.
114
+ - **On-Brand** (`#ffffff`): Foreground text/icons on the turquoise brand color.
115
+
116
+ ## 3. Typography Rules
117
+
118
+ ### Font Family
119
+ - **Product web**: `Pretendard Variable` (with system fallbacks: `-apple-system`, `Apple SD Gothic Neo`, `Noto Sans KR`, `Roboto`) — the de-facto Korean product font, used for all product-surface text.
120
+ - **Blog**: `Spoqa Han Sans` (with `Roboto`, `Malgun Gothic` fallbacks) — used on the official engineering/design blog at editorial sizes.
121
+
122
+ ### Hierarchy
123
+
124
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
125
+ |------|------|------|--------|-------------|----------------|-------|
126
+ | Blog Display | Spoqa Han Sans | 32px (2.00rem) | 700 | 1.44 (46px) | -1.0px | Blog section heads ("Tech", "추천 아티클") |
127
+ | Section Title | Pretendard Variable | 18px (1.13rem) | 600 | 1.33 | -0.2px | Product section titles ("급상승 랭킹") |
128
+ | Nav Link | Pretendard Variable | 15px (0.94rem) | 600 / 400 | 1.5 | normal | Active 600, inactive 400 |
129
+ | Card Title | Pretendard Variable | 14px (0.88rem) | 600 | 1.5 (21px) | normal | Category / card labels |
130
+ | Body | Pretendard Variable | 16px (1.00rem) | 400 | 1.5 (24px) | normal | Standard reading text |
131
+ | Label | Pretendard Variable | 14px (0.88rem) | 400 | 1.5 | normal | Search, dense UI text |
132
+ | Caption | Pretendard Variable | 12px (0.75rem) | 400 | 1.5 | normal | Button labels, metadata |
133
+
134
+ ### Principles
135
+ - **Two surfaces, two fonts**: Pretendard Variable owns the product web (dense, app-like); Spoqa Han Sans owns the blog (editorial, larger). They never mix on one surface.
136
+ - **Dense product scale**: The product web tops out at an 18px section head with a 16px body — a deliberately app-native, information-rich scale rather than a marketing-hero scale.
137
+ - **Weight as hierarchy**: SemiBold (600) carries titles and active nav; Regular (400) carries body, inactive nav, and captions. Bold (700) is reserved for blog display.
138
+ - **Tight tracking on heads**: Headings carry slight negative tracking (-0.2px product, -1.0px blog); body stays at normal tracking for hangul legibility.
139
+
140
+ ## 4. Component Stylings
141
+
142
+ ### Buttons
143
+
144
+ **Primary (Brand Turquoise)**
145
+ - Background: `#00d5ce`
146
+ - Text: `#ffffff`
147
+ - Radius: 8px
148
+ - Font: 16px Pretendard weight 600
149
+ - Use: Brand turquoise primary action — app-install and key CTAs (the identity color carried into action)
150
+
151
+ **Secondary Chip (Outline)**
152
+ - Background: `#ffffff`
153
+ - Text: `#3d3d3d`
154
+ - Border: 1px solid `#e8e8e8`
155
+ - Radius: 4px
156
+ - Padding: 0px 8px
157
+ - Height: 24px
158
+ - Font: 12px Pretendard weight 400
159
+ - Use: Compact secondary action ("로그인") — white with hairline border
160
+
161
+ **Language / Icon Button**
162
+ - Background: transparent
163
+ - Text: `#111111`
164
+ - Radius: 8px
165
+ - Padding: 10px
166
+ - Height: 44px
167
+ - Use: Header utility buttons ("한국어", icon toggles) — 44px touch target
168
+
169
+ ### Inputs & Forms
170
+
171
+ **Header Search**
172
+ - Background: `#ffffff`
173
+ - Border: 1px solid `#e8e8e8`
174
+ - Radius: 8px
175
+ - Text: `#000000`
176
+ - Placeholder: `#aaaaaa`
177
+ - Font: 14px Pretendard weight 400
178
+ - Use: Top search field
179
+
180
+ ### Cards & Containers
181
+
182
+ **Product / Ranking Card**
183
+ - Background: `#ffffff`
184
+ - Radius: 16px
185
+ - Shadow: `rgba(0, 0, 0, 0.08) 0px 2px 8px`
186
+ - Border: 1px solid `#e8e8e8` (hairline ring on shadowless variants)
187
+ - Use: Product, ranking, and brand tiles — imagery carries the color
188
+
189
+ **Mint Tint Card**
190
+ - Background: `#eefbfb`
191
+ - Text: `#000000`
192
+ - Radius: 16px
193
+ - Use: Pale-mint brand-tinted section / feature card
194
+
195
+ ### Badges
196
+
197
+ **Rating Star (Amber)**
198
+ - Background: `#ffffff`
199
+ - Text: `#ffaa3c`
200
+ - Radius: 4px
201
+ - Font: 12px Pretendard weight 600
202
+ - Use: Star-rating score value — the product's most-present accent
203
+
204
+ **Info Chip (Blue)**
205
+ - Background: `#ffffff`
206
+ - Text: `#467dff`
207
+ - Radius: 4px
208
+ - Font: 12px Pretendard weight 600
209
+ - Use: Inline accent / info tag
210
+
211
+ **Image Count Pill**
212
+ - Background: `rgba(0, 0, 0, 0.4)`
213
+ - Text: `#ffffff`
214
+ - Radius: 4px
215
+ - Padding: 4px 8px
216
+ - Use: Image counter overlay on carousels ("1/10")
217
+
218
+ ### Navigation
219
+ - Background: `#ffffff`
220
+ - Text: `#111111`
221
+ - Font: 15px Pretendard weight 400 (active 600)
222
+ - Active: weight 600, `#111111`
223
+ - Use: Top horizontal nav ("홈", "랭킹", "어워드")
224
+
225
+ ---
226
+
227
+ **Verified:** 2026-06-26 (omd:add-reference CREATE — Tier 1 live inspect, 2 brand-owned surfaces)
228
+ **Tier 1 sources:** https://www.hwahae.co.kr ; https://blog.hwahae.co.kr/ ; https://blog.hwahae.co.kr/all/tech/13236
229
+ **Tier 2 sources:** getdesign.md/hwahae — not listed ("No designs found for hwahae"); styles.refero.design — no hwahae-specific match (KR under-coverage)
230
+ **Conflicts unresolved:** none
231
+
232
+ ## 5. Layout Principles
233
+
234
+ ### Spacing System
235
+ - Base unit: 4px
236
+ - Scale: 4px, 8px, 12px, 16px, 20px, 24px, 32px, 48px
237
+ - Notable: Touch-utility buttons land at a 44px height with 10px padding; compact chips drop to 0px 8px
238
+
239
+ ### Grid & Container
240
+ - Centered, content-first layout: ranking and product cards arranged in horizontally scrolling rows and responsive grids
241
+ - Section bands stack vertically with quiet section titles (18px) introducing each ranking/recommendation block
242
+ - White (`#ffffff`) cards float on the soft `#f7f7f7` canvas; pale-mint (`#eefbfb`) tints mark hero/feature zones
243
+ - Cards use 16px radius and cluster related products, rankings, and brands
244
+
245
+ ### Whitespace Philosophy
246
+ - **Imagery carries color, chrome stays quiet**: the neutral canvas and white cards keep product photography the loudest thing on the page
247
+ - **Dense but breathable**: an app-native information density (many rankings/products) softened by generous card radii and consistent gutters
248
+ - **Flat separation**: sections separate by background tint (`#f7f7f7` vs `#ffffff`) and `#e8e8e8` hairlines more than by elevation
249
+
250
+ ### Border Radius Scale
251
+ - Tight (4px): chips, small badges, count pills
252
+ - Workhorse (8px): buttons, inputs, utility controls
253
+ - Card (16px): product/ranking/brand cards — the dominant container radius
254
+ - Blog (20px): editorial cards on the tech blog
255
+ - Full (99999px / 50%): pills and circular avatars
256
+
257
+ ## 6. Depth & Elevation
258
+
259
+ | Level | Treatment | Use |
260
+ |-------|-----------|-----|
261
+ | Flat (Level 0) | No shadow | Page background, inline text, tinted sections |
262
+ | Hairline (Level 1) | `1px solid #e8e8e8` / `rgb(232, 232, 232) 0px 0px 0px 1px` ring | White card outlines, dividers |
263
+ | Card (Level 2) | `rgba(0, 0, 0, 0.08) 0px 2px 8px 0px` | Floating product / ranking cards |
264
+
265
+ **Shadow Philosophy**: Hwahae is a near-flat system. Live inspection found the overwhelming majority of surfaces shadowless; where elevation is needed, a single soft card shadow (`rgba(0, 0, 0, 0.08) 0px 2px 8px`) or a 1px `#e8e8e8` hairline ring does the work. This keeps the review/ranking content scannable and fast, and lets product imagery — not chrome — provide visual interest. Emphasis is reached through color (amber `#ffaa3c` ratings, turquoise `#00d5ce` brand) rather than depth.
266
+
267
+ ## 7. Do's and Don'ts
268
+
269
+ ### Do
270
+ - Use Pretendard Variable for the product web and Spoqa Han Sans for the blog — keep them per-surface
271
+ - Keep the brand turquoise (`#00d5ce`) for identity and the primary action; let imagery carry color elsewhere
272
+ - Use amber (`#ffaa3c`) for rating stars — it is the product's trust signal
273
+ - Set the canvas to soft grey (`#f7f7f7`) with white (`#ffffff`) cards so photography stays loudest
274
+ - Separate with `#e8e8e8` hairlines and a single soft card shadow, not heavy elevation
275
+ - Use the soft radius scale — 8px controls, 16px cards, 4px chips, full-round pills
276
+ - Use pure black (`#000000`) for headings and softened `#111111` for nav
277
+ - Reserve action blue (`#467dff`) and coral (`#ff5555`) for links and sale/wishlist signals
278
+
279
+ ### Don't
280
+ - Don't spread the turquoise across many elements — it is identity, not decoration
281
+ - Don't stack heavy drop shadows — Hwahae separates with hairlines and tint
282
+ - Don't mix Spoqa Han Sans into the product web or Pretendard into the blog
283
+ - Don't use amber for anything but ratings/scores — it would dilute the trust signal
284
+ - Don't set the canvas pure white edge-to-edge — the `#f7f7f7` grey is what frames the cards
285
+ - Don't use sharp 0px corners on cards or controls — the system is consistently softened
286
+ - Don't introduce a competing saturated accent beyond the functional amber/blue/coral set
287
+ - Don't oversize product-web headings — the scale is deliberately dense and app-native
288
+
289
+ ## 8. Responsive Behavior
290
+
291
+ ### Breakpoints
292
+ | Name | Width | Key Changes |
293
+ |------|-------|-------------|
294
+ | Mobile | <640px | Single column, ranking rows scroll horizontally, cards full-bleed |
295
+ | Tablet | 640-1024px | 2-up product grids, moderate gutters |
296
+ | Desktop | 1024-1440px | Centered content, multi-column ranking/recommendation bands |
297
+
298
+ ### Touch Targets
299
+ - Header utility buttons at 44px height (10px padding) — comfortable tap targets
300
+ - Compact chips ("로그인") at 24px height for dense desktop chrome
301
+ - Ranking cards sized for thumb-scroll on mobile, click on desktop
302
+
303
+ ### Collapsing Strategy
304
+ - Section bands maintain their quiet 18px titles; card grids reflow multi-column → single column
305
+ - Horizontal ranking rows convert to swipe-scroll on narrow viewports
306
+ - White/tinted (`#ffffff` / `#eefbfb`) section treatment is preserved across breakpoints
307
+
308
+ ### Image Behavior
309
+ - Product and ranking thumbnails keep 16px radius across sizes
310
+ - Cards retain the soft `rgba(0, 0, 0, 0.08)` shadow or `#e8e8e8` hairline at all breakpoints
311
+ - Carousels show an image-count pill overlay (`rgba(0, 0, 0, 0.4)`, white text)
312
+
313
+ ## 9. Agent Prompt Guide
314
+
315
+ ### Quick Color Reference
316
+ - Brand / primary action: Hwahae Turquoise (`#00d5ce`)
317
+ - Rating accent: Amber (`#ffaa3c`)
318
+ - Inline link / info: Action Blue (`#467dff`)
319
+ - Sale / wishlist: Coral (`#ff5555`)
320
+ - Mint tint background: (`#eefbfb`)
321
+ - Canvas: Surface Grey (`#f7f7f7`); cards White (`#ffffff`)
322
+ - Heading text: Ink Black (`#000000`); nav `#111111`
323
+ - Body / labels: `#3d3d3d`; muted `#666666`; faint `#999999`
324
+ - Placeholder: `#aaaaaa`; hairline `#e8e8e8`; divider `#d8d8d8`
325
+
326
+ ### Example Component Prompts
327
+ - "Create a product-ranking card: white `#ffffff` background, 16px radius, soft shadow `rgba(0, 0, 0, 0.08) 0px 2px 8px`, 1px `#e8e8e8` hairline. Title 14px Pretendard weight 600 `#000000`; an amber `#ffaa3c` star-rating value at 12px weight 600."
328
+ - "Build a header on `#f7f7f7`: white search field, 8px radius, 1px solid `#e8e8e8`, `#aaaaaa` placeholder, 14px Pretendard. Nav links 15px Pretendard `#111111`, active weight 600. A turquoise `#00d5ce` primary button with white text, 8px radius."
329
+ - "Design a mint feature section: `#eefbfb` background. Section title 18px Pretendard weight 600, -0.2px tracking, `#000000`. Cards inside use white `#ffffff` with 16px radius and `#e8e8e8` hairline."
330
+ - "Make a blog article head: Spoqa Han Sans 32px weight 700, line-height 1.44, -1.0px tracking, color `#212529`, on white, in a 20px-radius editorial card."
331
+
332
+ ### Iteration Guide
333
+ 1. Pretendard Variable for the product web; Spoqa Han Sans for the blog — never cross them
334
+ 2. Turquoise (`#00d5ce`) is identity + primary action; don't spread it
335
+ 3. Amber (`#ffaa3c`) means rating/score — keep it to stars and trust signals
336
+ 4. Canvas is `#f7f7f7` grey, cards are `#ffffff` white — imagery is the loudest layer
337
+ 5. Separate with `#e8e8e8` hairlines and one soft card shadow, not heavy elevation
338
+ 6. Radius: 8px controls, 16px cards, 4px chips, full-round pills, 20px on the blog
339
+ 7. Headings `#000000`, nav `#111111`, body `#3d3d3d` — a careful neutral ladder
340
+
341
+ ---
342
+
343
+ ## 10. Voice & Tone
344
+
345
+ Hwahae's voice is **trustworthy, plain-spoken, and evidence-first** — a beauty guide that turns an opaque, marketing-heavy category (cosmetics) into transparent ingredients, real reviews, and honest rankings. The product name itself, 화해 ("화장품을 해석하다" — "decoding cosmetics"), sets the register: explanatory, on the user's side, never a sales funnel. Copy leans on real, user-generated data — rankings "화해 고객들이 직접 선택한" (chosen directly by Hwahae users), "급상승 랭킹" (rising ranking), and skin-type and age-tailored recommendations — rather than brand superlatives.
346
+
347
+ | Context | Tone |
348
+ |---|---|
349
+ | Section titles | Plain, functional, data-framed. "급상승 랭킹", "내 피부에 꼭 맞는 제품 랭킹", "나이대별 추천". |
350
+ | Rankings / labels | Neutral and concrete. Category, skin-type, and age labels; amber score values. |
351
+ | CTAs | Low-pressure, helpful. "화해 앱에서 더 편리하게", "검색 페이지로 이동". |
352
+ | Blog (engineering/design) | Reflective, first-person, craft-oriented. "사용 가능한 진짜 디자인 시스템을 만드는 여정". |
353
+ | Trust / data copy | Calm and specific — leans on user-generated rankings and ingredient analysis, not hype. |
354
+
355
+ **Voice samples (verbatim from live surfaces):**
356
+ - "화장품 정보는 화해 — 화장품 성분과 정보, 리뷰 확인하고 구매 하세요" — homepage title (decoding/ingredient-first). *(verified live 2026-06-26)*
357
+ - "화해 고객들이 직접 선택한 랭킹" — homepage section (user-evidence framing). *(verified live 2026-06-26)*
358
+ - "사용 가능한 진짜 디자인 시스템을 만드는 여정" — official tech blog (craft, candor). *(verified live 2026-06-26)*
359
+
360
+ **Forbidden register**: cosmetic-marketing superlatives, unverifiable efficacy claims, fear-based "your skin is failing" pitches, and undefined jargon left unexplained. Hwahae's whole premise is decoding, so copy explains rather than dazzles.
361
+
362
+ ## 11. Brand Narrative
363
+
364
+ Hwahae (화해) launched in **2013** to solve a uniquely consumer-unfriendly problem in Korean cosmetics: severe **information asymmetry** (화장품 정보 비대칭). Shoppers could not easily see what was actually in a product or trust the marketing on the box. Hwahae's founding act was to make cosmetic **ingredients legible** — surfacing full ingredient lists, safety/grade information, and, crucially, real user **reviews** — so people could choose with evidence rather than advertising. Over its first decade the service grew from an ingredient lookup into a full beauty platform spanning makeup, inner beauty, sample experiences (샘플체험), ingredient analysis, reviews, and direct purchase, becoming the category's dominant review-and-ranking destination in Korea. (Source: Hwahae product-design team, official tech blog, *"사용 가능한 진짜 디자인 시스템을 만드는 여정"*, 2023-08-03.)
365
+
366
+ That same blog post documents the maturation of Hwahae's design language. After ten years of rapid experimentation, the team found legacy screens and per-page color/layout drift accumulating as design and engineering debt — at odds with Hwahae's "experiment fast, validate" culture. In **January 2023** they committed to a proper design system (the `hds-` namespace seen across the live site = Hwahae Design System), built as a **Foundation** layer (Color, Typography, Grid, Radius, Spacing) feeding reusable **Components** and **Templates**, authored in Figma and shipped to engineers through Storybook and a TestApp QA loop.
367
+
368
+ What Hwahae's design refuses, visible on the surface: the glossy, color-saturated chrome of beauty-brand marketing, and dark-pattern urgency. What it embraces: a quiet neutral canvas that lets product imagery and user data lead; a single trustworthy turquoise identity; amber rating stars as the honest trust signal; and a real, documented design system that keeps a sprawling, content-heavy product consistent.
369
+
370
+ ## 12. Principles
371
+
372
+ 1. **Decode, don't sell.** Hwahae exists to make cosmetics legible — ingredients, grades, and real reviews over marketing claims. *UI implication:* lead with data (rankings, ratings, ingredients); keep chrome neutral so evidence is the loudest element.
373
+ 2. **User evidence over brand voice.** Rankings are framed as "chosen by Hwahae users." *UI implication:* surface ratings (amber `#ffaa3c`) and review counts prominently; never visually privilege a brand without disclosure.
374
+ 3. **Imagery carries color, chrome stays quiet.** *UI implication:* soft `#f7f7f7` canvas, white cards, restrained accents — product photography is the color layer.
375
+ 4. **One identity hue.** Turquoise (`#00d5ce`) is the brand; don't dilute it. *UI implication:* reserve turquoise for identity and the primary action.
376
+ 5. **Consistency at scale via a real system.** The `hds-` Foundation→Components→Templates pipeline exists so a content-heavy product stays coherent. *UI implication:* reuse tokens (the granular grey ladder, the 8/16px radius scale) rather than re-inventing per page.
377
+ 6. **Flat and fast.** *UI implication:* minimal elevation — hairlines and one soft shadow — to keep dense ranking content quick to scan.
378
+
379
+ ## 13. Personas
380
+
381
+ *Personas below are fictional archetypes informed by publicly observable Hwahae user segments (Korean beauty shoppers comparing ingredients and reviews), not individual people.*
382
+
383
+ **이서연, 26, 서울.** Checks every new product's ingredient list and Hwahae rating before buying. Distrusts brand marketing; trusts the amber score and the volume of real reviews. Chose Hwahae because it decodes ingredients she can't parse on the box.
384
+
385
+ **박지호, 33, 경기.** Sensitive, acne-prone skin. Relies on skin-type-tailored rankings ("내 피부에 꼭 맞는 제품 랭킹") to avoid trial-and-error. Values that the interface is calm and data-first rather than a hard-sell beauty funnel.
386
+
387
+ **최유진, 21, 부산.** A student following age-band recommendations ("나이대별 추천") and rising rankings to find affordable products. Appreciates the fast, scannable card grid and that imagery — not ads — leads the page.
388
+
389
+ ## 14. States
390
+
391
+ | State | Treatment |
392
+ |---|---|
393
+ | **Empty (no ranking / search results)** | Soft `#f7f7f7` canvas. A single Ink (`#000000`) line explaining no matching products, with a quiet path to broaden filters. No illustration clutter. |
394
+ | **Empty (saved / wishlist none yet)** | Faint (`#999999`) single line: nothing saved yet, plus a route back to rankings. Calm and honest. |
395
+ | **Loading (ranking fetch)** | Skeleton cards on white `#ffffff` at final 16px-radius dimensions, soft pulse — no heavy shimmer, consistent with the near-flat system. |
396
+ | **Loading (image carousel)** | Image-count pill (`rgba(0, 0, 0, 0.4)`, white text) holds position while the next image loads. |
397
+ | **Error (load failed)** | Inline message in Ink (`#000000`) with a plain-language explanation and a retry — never a bare "오류가 발생했습니다". |
398
+ | **Error (form validation)** | Field-level message below the input describing what's valid, not just "필수". |
399
+ | **Success (review submitted / saved)** | Brief inline confirmation in a calm tone; next-step detail linked below. No celebratory emoji. |
400
+ | **Skeleton** | White `#ffffff` blocks at final dimensions, 16px radius, soft pulse. |
401
+ | **Disabled** | Faint (`#999999`) text on reduced-opacity surface; turquoise actions fade rather than turn grey, to preserve the brand read. |
402
+
403
+ ## 15. Motion & Easing
404
+
405
+ **Durations**:
406
+
407
+ | Token | Value | Use |
408
+ |---|---|---|
409
+ | `motion-fast` | 120ms | Hover, chip press, focus |
410
+ | `motion-standard` | 200ms | Card / section reveal, carousel slide, sheet |
411
+ | `motion-slow` | 320ms | Page-level transitions |
412
+
413
+ **Easings**:
414
+
415
+ | Token | Curve | Use |
416
+ |---|---|---|
417
+ | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Arriving — cards, sheets, carousels |
418
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
419
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Two-way transitions |
420
+
421
+ **Motion rules**: Motion is functional and quiet — consistent with the near-flat, content-first aesthetic. Cards and ranking rows fade-in from below at `motion-standard / ease-enter`; carousels slide at the same timing; chips respond to press with a subtle scale/opacity shift. No bounce or spring — a trust-and-evidence product signals steadiness, not playfulness. Under `prefers-reduced-motion: reduce`, all transitions collapse to instant; the product stays fully functional.
422
+
423
+ <!--
424
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
425
+
426
+ Tier 1 live inspect (2026-06-26) via playwright getComputedStyle on two brand-owned surfaces:
427
+ - https://www.hwahae.co.kr — Pretendard Variable; canvas rgb(247,247,247) #f7f7f7 / white cards;
428
+ black #000000 headings, #111111 nav; amber rgb(255,170,60) #ffaa3c rating stars (most-present accent);
429
+ teal rgb(0,165,170) #00a5aa; blue rgb(70,125,255) #467dff; coral rgb(255,85,85) #ff5555;
430
+ pale-mint rgb(238,251,251) #eefbfb; radii 8px/16px/4px/99999px/50%; card shadow rgba(0,0,0,0.08) 0px 2px 8px;
431
+ hairline ring rgb(232,232,232) 0px 0px 0px 1px; utility classes namespaced hds- (Hwahae Design System).
432
+ - https://blog.hwahae.co.kr/ — Spoqa Han Sans; body rgb(33,37,41) #212529; H3 32px/700/-1px/46px;
433
+ live brand turquoise rgb(34,211,214) #22d3d6; card radius 20px.
434
+ - Logo/OG (https://static.hwahae.co.kr/og/OG_1200.png) — turquoise flower mark sampled #00d5ce / #00d6cf / #00dad4
435
+ with black "hwahae" wordmark on pale-mint background.
436
+
437
+ Token-level claims (§1-9) are sourced from this live inspection.
438
+
439
+ Voice samples (§10) are verbatim from live surfaces (homepage title/section, official tech blog post title).
440
+
441
+ Brand narrative (§11) is sourced from Hwahae's official product-design team tech blog post
442
+ "사용 가능한 진짜 디자인 시스템을 만드는 여정" (https://blog.hwahae.co.kr/all/tech/13236, 2023-08-03):
443
+ 2013 founding to solve cosmetics information asymmetry; growth into a full beauty platform; January 2023
444
+ design-system adoption (HDS, Foundation→Components→Templates, Figma + Storybook). These are brand-stated facts
445
+ from that post; broader market-position claims are general public knowledge, not separately quoted.
446
+
447
+ Personas (§13) are fictional archetypes informed by publicly observable Hwahae user segments
448
+ (Korean beauty shoppers comparing ingredients and reviews). Names are illustrative; they do not refer to real people.
449
+
450
+ Interpretive claims (e.g., "imagery carries color, chrome stays quiet", "amber is the honest trust signal")
451
+ are editorial readings connecting Hwahae's observed design to its decoding-cosmetics positioning, not directly
452
+ quoted Hwahae statements.
453
+ -->