oh-my-design-cli 1.0.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.ja.md +7 -7
  2. package/README.ko.md +7 -7
  3. package/README.md +15 -18
  4. package/README.zh-TW.md +7 -7
  5. package/agents/omd-ux-writer.md +1 -1
  6. package/data/architecture-proposals/2026-05-13-thin-install-fresh-fetch.md +189 -0
  7. package/data/reference-audits/2026-05-13-kr10.md +132 -0
  8. package/data/reference-fingerprints.json +626 -3
  9. package/data/reference-tags.md +15 -1
  10. package/package.json +2 -2
  11. package/skills/omd-apply/SKILL.md +1 -1
  12. package/skills/omd-harness/SKILL.md +3 -3
  13. package/skills/omd-init/SKILL.md +2 -2
  14. package/web/AGENTS.md +5 -0
  15. package/web/references/29cm/DESIGN.md +445 -0
  16. package/web/references/ably/DESIGN.md +582 -0
  17. package/{references → web/references}/airbnb/DESIGN.md +158 -19
  18. package/web/references/airtable/DESIGN.md +241 -0
  19. package/{references → web/references}/apple/DESIGN.md +131 -76
  20. package/web/references/baemin/DESIGN.md +470 -0
  21. package/web/references/banksalad/DESIGN.md +606 -0
  22. package/{references → web/references}/bmw/DESIGN.md +138 -9
  23. package/{references → web/references}/cal/DESIGN.md +173 -17
  24. package/{references → web/references}/claude/DESIGN.md +11 -1
  25. package/{references → web/references}/clay/DESIGN.md +75 -0
  26. package/{references → web/references}/clickhouse/DESIGN.md +74 -0
  27. package/{references → web/references}/cohere/DESIGN.md +75 -0
  28. package/web/references/coinbase/DESIGN.md +205 -0
  29. package/{references → web/references}/composio/DESIGN.md +74 -0
  30. package/web/references/coupang/DESIGN.md +487 -0
  31. package/{references → web/references}/cursor/DESIGN.md +74 -0
  32. package/web/references/dcard/DESIGN.md +567 -0
  33. package/{references → web/references}/elevenlabs/DESIGN.md +91 -0
  34. package/{references → web/references}/expo/DESIGN.md +72 -0
  35. package/{references → web/references}/ferrari/DESIGN.md +72 -0
  36. package/{references → web/references}/figma/DESIGN.md +124 -48
  37. package/{references → web/references}/framer/DESIGN.md +143 -16
  38. package/web/references/freee/DESIGN.md +558 -0
  39. package/web/references/gangnamunni/DESIGN.md +605 -0
  40. package/{references → web/references}/hashicorp/DESIGN.md +72 -0
  41. package/{references → web/references}/ibm/DESIGN.md +68 -0
  42. package/{references → web/references}/intercom/DESIGN.md +73 -0
  43. package/web/references/kakao/DESIGN.md +490 -0
  44. package/web/references/kakaobank/DESIGN.md +533 -0
  45. package/web/references/kakaopay/DESIGN.md +529 -0
  46. package/web/references/karrot/DESIGN.md +431 -0
  47. package/web/references/kraken/DESIGN.md +219 -0
  48. package/web/references/krds/DESIGN.md +982 -0
  49. package/web/references/kurly/DESIGN.md +574 -0
  50. package/{references → web/references}/lamborghini/DESIGN.md +74 -0
  51. package/{references → web/references}/line/DESIGN.md +84 -43
  52. package/{references → web/references}/linear.app/DESIGN.md +8 -1
  53. package/{references → web/references}/lovable/DESIGN.md +73 -0
  54. package/web/references/mercari/DESIGN.md +464 -0
  55. package/{references → web/references}/minimax/DESIGN.md +72 -0
  56. package/{references → web/references}/mintlify/DESIGN.md +72 -0
  57. package/web/references/miro/DESIGN.md +252 -0
  58. package/{references → web/references}/mistral.ai/DESIGN.md +72 -0
  59. package/{references → web/references}/mongodb/DESIGN.md +72 -0
  60. package/web/references/musinsa/DESIGN.md +536 -0
  61. package/web/references/naver/DESIGN.md +518 -0
  62. package/{references → web/references}/notion/DESIGN.md +9 -1
  63. package/web/references/nvidia/DESIGN.md +491 -0
  64. package/web/references/ohouse/DESIGN.md +570 -0
  65. package/{references → web/references}/ollama/DESIGN.md +72 -0
  66. package/{references → web/references}/opencode.ai/DESIGN.md +73 -0
  67. package/web/references/pinkoi/DESIGN.md +575 -0
  68. package/{references → web/references}/pinterest/DESIGN.md +73 -0
  69. package/{references → web/references}/posthog/DESIGN.md +172 -18
  70. package/web/references/qanda/DESIGN.md +459 -0
  71. package/{references → web/references}/raycast/DESIGN.md +169 -34
  72. package/web/references/remember/DESIGN.md +445 -0
  73. package/{references → web/references}/renault/DESIGN.md +72 -0
  74. package/{references → web/references}/replicate/DESIGN.md +73 -0
  75. package/{references → web/references}/resend/DESIGN.md +73 -0
  76. package/{references → web/references}/revolut/DESIGN.md +74 -0
  77. package/web/references/ridi/DESIGN.md +517 -0
  78. package/{references → web/references}/runwayml/DESIGN.md +152 -24
  79. package/{references → web/references}/sanity/DESIGN.md +72 -0
  80. package/{references → web/references}/sentry/DESIGN.md +73 -0
  81. package/web/references/socar/DESIGN.md +370 -0
  82. package/web/references/spacex/DESIGN.md +379 -0
  83. package/web/references/spotify/DESIGN.md +426 -0
  84. package/{references → web/references}/stripe/DESIGN.md +44 -1
  85. package/{references → web/references}/supabase/DESIGN.md +73 -0
  86. package/{references → web/references}/superhuman/DESIGN.md +159 -17
  87. package/{references → web/references}/tesla/DESIGN.md +170 -0
  88. package/{references → web/references}/together.ai/DESIGN.md +73 -0
  89. package/{references → web/references}/toss/DESIGN.md +304 -50
  90. package/{references → web/references}/uber/DESIGN.md +73 -0
  91. package/{references → web/references}/vercel/DESIGN.md +9 -1
  92. package/{references → web/references}/voltagent/DESIGN.md +73 -0
  93. package/web/references/wanted/DESIGN.md +515 -0
  94. package/{references → web/references}/warp/DESIGN.md +142 -15
  95. package/web/references/webflow/DESIGN.md +253 -0
  96. package/{references → web/references}/wise/DESIGN.md +84 -0
  97. package/{references → web/references}/x.ai/DESIGN.md +85 -0
  98. package/web/references/yanolja/DESIGN.md +448 -0
  99. package/web/references/yeogiotte/DESIGN.md +424 -0
  100. package/{references → web/references}/zapier/DESIGN.md +85 -0
  101. package/web/references/zigbang/DESIGN.md +457 -0
  102. package/web/references/zigzag/DESIGN.md +618 -0
  103. package/references/airtable/DESIGN.md +0 -107
  104. package/references/baemin/DESIGN.md +0 -260
  105. package/references/coinbase/DESIGN.md +0 -129
  106. package/references/dcard/DESIGN.md +0 -302
  107. package/references/freee/DESIGN.md +0 -308
  108. package/references/kakao/DESIGN.md +0 -261
  109. package/references/karrot/DESIGN.md +0 -252
  110. package/references/kraken/DESIGN.md +0 -146
  111. package/references/mercari/DESIGN.md +0 -294
  112. package/references/miro/DESIGN.md +0 -108
  113. package/references/nvidia/DESIGN.md +0 -308
  114. package/references/pinkoi/DESIGN.md +0 -309
  115. package/references/spacex/DESIGN.md +0 -205
  116. package/references/spotify/DESIGN.md +0 -246
  117. package/references/webflow/DESIGN.md +0 -109
@@ -0,0 +1,424 @@
1
+ ---
2
+ omd: 0.1
3
+ brand: 여기어때 (GoodChoice)
4
+ ---
5
+
6
+ # Design System Inspiration of 여기어때 (GoodChoice / Yeogiotte)
7
+
8
+ ## 1. Visual Theme & Atmosphere
9
+
10
+ 여기어때 (GoodChoice / Yeogiotte) is South Korea's #2 travel and lodging booking platform — a brand that turned the awkward Korean motel/pension reservation market into a clean, photo-forward booking surface that competes with Yanolja head-on. The interface opens on a clean white canvas (`#ffffff`) with warm dark headings (`#222222`) and a single saturated **Yeogiotte Blue (`#1D8BFF`)** that carries every primary action — search submit, login, "지도 보기" (view map), every conversion CTA. The blue is bright and confident, neither corporate-trustmark blue (Toss `#3182f6` is colder) nor playful-app blue (KakaoBank's softer cyan); it sits one notch warmer and brighter than fintech, signalling **booking confidence** without pretending to be a bank.
11
+
12
+ Typography is the platform-default **Pretendard** (with `Pretendard_Fallback`), the de-facto Korean web sans of the 2020s. There is no custom display face; the brand voice runs through copy register and the supersized hero photography of Korean domestic destinations (제주도, 강릉, 부산, 경주). The interaction system is anchored on two corner radii — **8px for buttons / 12px for cards / 100px for filter pills** — and a small set of badge tokens that do most of the price-and-promotion lifting on listing cards: yellow rating badges, blue "반짝특가" (flash deal) badges, slate "회원가" (member-price) badges, and red coupon-applied badges. The composition rhythm is **photo → name → location → rating → price**, repeated across thousands of listing cards, with all the weight pushed into the price line in 700.
13
+
14
+ The overall impression: a hospitality-grade booking app that treats *photography of the room* as the brand asset, with chrome that gets out of the way. Where Yanolja goes more saturated and product-busy, 여기어때 leans cleaner — fewer overlays, more whitespace per card, and a single confident blue that never has to compete with a secondary brand hue.
15
+
16
+ **Key Characteristics:**
17
+ - Yeogiotte Blue (`#1D8BFF`) as the singular brand accent — confident booking blue, one notch warmer than fintech
18
+ - Pretendard system stack — no custom typeface, photography is the brand asset
19
+ - 8px button radius / 12px card radius / 100px (pill) filter chips — three-tier radius system
20
+ - Filter chips at 32px height with 1.5px borders — the most-touched UI primitive on /domestic-accommodations
21
+ - Badge system carries promo grammar: yellow `#FFC83B` rating · blue `#E3F0FF`/`#1D8BFF` "반짝특가" · slate `#49627A` "회원가" · red `#FFEDEA`/`#F94239` "쿠폰 적용가"
22
+ - 222 (`#222222`) text instead of pure black — softer reading at small sizes
23
+ - Photo-forward listing cards with no border, 12px radius, full-bleed thumbnail above metadata
24
+
25
+ ## 2. Color Palette & Roles
26
+
27
+ ### Primary
28
+ - **Yeogiotte Blue** (`#1D8BFF`): Primary CTA background, primary outline border, "반짝특가" promo accent. The brand's singular booking-blue.
29
+ - **Pure White** (`#ffffff`): Page background, card surfaces, button backgrounds for outline/ghost variants.
30
+ - **Body Dark** (`#222222`): All headings and primary body text. Warm-leaning near-black, never pure `#000000`.
31
+
32
+ ### Brand Tints
33
+ - **Blue Tint** (`#E3F0FF`): "반짝특가" badge background, subtle blue-tinted promo surfaces.
34
+
35
+ ### Semantic
36
+ - **Coupon Red** (`#F94239`): Coupon-applied price emphasis, error-foreground candidate. Warm red.
37
+ - **Coupon Red Tint** (`#FFEDEA`): Coupon badge background, red-tinted soft surface.
38
+ - **Rating Yellow** (`#FFC83B`): Rating badge background — the universal review-score chip on every listing card.
39
+ - **Member-Price Slate** (`#49627A`): "회원가" badge background. A muted slate-blue used to distinguish the member rate without competing with the brand blue.
40
+
41
+ ### Neutral Scale
42
+ - **Border Light** (`#E6E6E6`): Standard 1.5px button-outline and filter-chip border. The single neutral border value on the system.
43
+ - **Heading / Body** (`#222222`): Section titles, listing names, body copy.
44
+ - **Muted Foreground** (observed across listing meta as part of the dark-on-white system; no distinct lighter gray captured at the inspected viewport)
45
+ - **Shadow** (subtle, system-default — not a heavy elevation system)
46
+
47
+ ### Surface & Borders
48
+ - **Card surface**: `#ffffff` (no border, 12px radius — listing cards lean on photo + spacing for separation, not on outlines)
49
+ - **Outline border**: `1.5px solid #E6E6E6` (filter chips, ghost buttons)
50
+ - **Brand outline**: `1.5px solid #1D8BFF` (login/회원가입 outline button — brand blue text on white)
51
+
52
+ ## 3. Typography Rules
53
+
54
+ ### Font Family
55
+ - **Primary**: `Pretendard, Pretendard_Fallback` (the entire system runs on Pretendard — Korean web sans default)
56
+ - **Design Principle**: No custom brand typeface. Pretendard's mature multi-weight Korean Hangul + Latin support carries both Korean destination names and Latin price digits without a font swap.
57
+
58
+ ### Hierarchy
59
+
60
+ | Role | Size | Weight | Color | Notes |
61
+ |------|------|--------|-------|-------|
62
+ | Hero H1 | 32px | 700 | `#ffffff` (over hero image) | "국내부터 해외까지 여기어때" home hero |
63
+ | Page H1 | 24px | 700 | `#222222` | Search-result count headline (`'현재 위치 주변' 검색 결과 21,157개`) |
64
+ | Section H2 | 18px | 700 | `#222222` | "이벤트", "국내 인기 여행지", "인기 추천 숙소" |
65
+ | Listing Card H3 | 18px | 700 | `#222222` | Hotel/motel/펜션 name on listing card |
66
+ | Tab/Chip Label | 13px | 600 | `#222222` | Filter chips, price-range pills |
67
+ | Destination Tile H3 | 14px | 500 | `#222222` | Destination chip caption (`제주도`, `서울`) |
68
+ | Body | 14-16px | 400-600 | `#222222` | Card meta, descriptions |
69
+ | Search Input | 16px | 400 | `#222222` | "여행지나 숙소를 검색해보세요." placeholder |
70
+ | Search CTA | 15px | 700 | `#ffffff` | The hero search button "검색" |
71
+ | Primary Button | 14px | 600 | varies | Login/회원가입, 지도 보기 — the standard utility CTA |
72
+ | Badge | 12px | 700 | varies | Promo / coupon / member-price / rating |
73
+
74
+ ### Principles
75
+ - **Three weights only**: 400 (body/placeholder), 500-600 (chip/title secondary), 700 (heading / price / CTA / badge). No light, no extra-bold.
76
+ - **Pretendard as system default**: Korean reads cleanly at 13-14px, Latin price digits stay aligned. No font swap between locales.
77
+ - **Bold for price, not for sales**: Listing card weight goes into the price line and the hotel name; descriptive metadata (location, distance) stays at 400-500.
78
+
79
+ ## 4. Component Stylings
80
+
81
+ ### Buttons
82
+
83
+ **Primary (Yeogiotte Blue Solid)**
84
+ - Background: `#1D8BFF`
85
+ - Text: `#ffffff`
86
+ - Border: none
87
+ - Radius: 8px (utility) / 10px (hero search)
88
+ - Padding: 9px 14px (utility 40px) / 10px 18px (search 48px)
89
+ - Font: 14px / 600 (utility) · 15px / 700 (search)
90
+ - Use: Login/회원가입 solid, hero "검색" CTA, "지도 보기"
91
+
92
+ **Brand Outline (Login)**
93
+ - Background: `#ffffff`
94
+ - Text: `#1D8BFF`
95
+ - Border: 1.5px solid `#1D8BFF`
96
+ - Radius: 8px
97
+ - Padding: 9px 14px
98
+ - Font: 14px / 600
99
+ - Use: Top-right login/회원가입 entry point
100
+
101
+ **Neutral Outline (비회원 / 비회원 예약조회)**
102
+ - Background: `#ffffff`
103
+ - Text: `#222222`
104
+ - Border: 1.5px solid `#E6E6E6`
105
+ - Radius: 8px
106
+ - Padding: 9px 14px
107
+ - Font: 14px / 600
108
+ - Use: Guest reservation lookup, low-emphasis utility
109
+
110
+ **Filter Chip (Pill)**
111
+ - Background: `#ffffff`
112
+ - Text: `#222222`
113
+ - Border: 1.5px solid `#E6E6E6`
114
+ - Radius: 100px (pill)
115
+ - Padding: 0px 16px
116
+ - Font: 13px / 600
117
+ - Height: 32px
118
+ - Use: Price range, hashtag filters (`#감성숙소`, `#연인추천`), star-rating filter, amenity filter — the most-touched UI primitive on `/domestic-accommodations`. Selected state inferred to fill `#1D8BFF` on the same geometry (not statically captured).
119
+
120
+ ### Inputs
121
+
122
+ **Search Input (Hero)**
123
+ - Background: `rgba(255,255,255,0)` (transparent, sits inside a styled wrapper)
124
+ - Border: none on the input itself; wrapper provides the visible border
125
+ - Radius: 0 on input; 12px on the search wrapper container
126
+ - Padding: 0 (wrapper handles spacing)
127
+ - Text: 16px / 400 / `#222222`
128
+ - Placeholder: `여행지나 숙소를 검색해보세요.`
129
+ - Type: `search`
130
+ - Use: Home search box — paired with the 48px Yeogiotte Blue "검색" submit button on the right
131
+
132
+ ### Cards
133
+
134
+ **Listing Card (Hotel / Motel / Pension)**
135
+ - Background: `#ffffff`
136
+ - Border: none
137
+ - Radius: 12px
138
+ - Padding: 0 0 24px (photo edge-to-edge top, 24px bottom for meta)
139
+ - Shadow: minimal / none (cards rely on whitespace + photo for separation)
140
+ - Use: The dominant content primitive — photo top, then `[type · grade · category]` metadata, then 18px / 700 name, then location + distance, then `[★ rating chip] [N명 평가]`, then price line (with strikethrough original + bold final). Used on every search-result and recommendation surface.
141
+
142
+ **Destination Chip Card**
143
+ - Background: `#ffffff`
144
+ - Border: none
145
+ - Radius: 12px
146
+ - Padding: 0 (image fills, label sits below)
147
+ - Use: "국내 인기 여행지", "해외 인기 여행지", "패키지 인기 여행지" rows. Image-led, label in 14px / 500.
148
+
149
+ ### Badges
150
+
151
+ **Rating Yellow**
152
+ - Background: `#FFC83B`
153
+ - Text: `#000000` (rating digits stay pure black on yellow for legibility)
154
+ - Radius: 6px
155
+ - Padding: 4px 5px 3px 3px
156
+ - Font: 16px / 400
157
+ - Use: Review score (`9.2`, `9.4`) on every listing card — the universal trust signal.
158
+
159
+ **Promo (Flash Deal · Blue Tint)**
160
+ - Background: `#E3F0FF`
161
+ - Text: `#1D8BFF`
162
+ - Radius: 3px
163
+ - Padding: 0px 4px
164
+ - Font: 12px / 700
165
+ - Use: "반짝특가" (flash deal) — brand-tinted promo emphasis; the only place Yeogiotte Blue appears on a non-button surface.
166
+
167
+ **Member-Price (Slate)**
168
+ - Background: `#49627A`
169
+ - Text: `#ffffff`
170
+ - Radius: 3px
171
+ - Padding: 3px 4px
172
+ - Font: 12px / 700
173
+ - Use: "회원가" — distinguishes logged-in member rate without using brand blue, so it reads as utility rather than promotion.
174
+
175
+ **Coupon Red**
176
+ - Background: `#FFEDEA`
177
+ - Text: `#F94239`
178
+ - Radius: 3px
179
+ - Padding: 0px 4px
180
+ - Font: 12px / 700
181
+ - Use: "4,500원 쿠폰 적용가", "8% 쿠폰 적용가" — coupon-applied price callout. Warm red signals discount, not error.
182
+
183
+ ## 5. Layout Principles
184
+
185
+ ### Spacing System
186
+ - Base unit: 4px
187
+ - Observed scale: 4, 8, 14, 16, 18, 24px
188
+ - Card internal: 24px bottom padding for meta block under photo
189
+ - Filter chip horizontal padding: 16px
190
+ - Button horizontal padding: 14px (utility) / 18px (hero CTA)
191
+
192
+ ### Grid & Container
193
+ - Web home: full-width hero image with centered search panel
194
+ - Listing grid: multi-column on desktop (`/domestic-accommodations`), collapses on narrower viewports
195
+ - Filter chip row: horizontal scroll, no wrap, 32px chip height
196
+ - Destination chip rows: horizontal scroll (제주도 / 서울 / 부산 / 강릉 / 인천 / 경주 / 해운대 / 가평 / 여수 / 속초)
197
+
198
+ ### Whitespace Philosophy
199
+ - **Photo-as-content**: Listing cards reserve the top half for the photo with no chrome on the image; metadata sits below in a quiet text block.
200
+ - **Chip rhythm**: 32px filter chips sit on a single horizontal scroll row. Density per chip is high (13px / 600 / pill / 16px h-padding) because users scan dozens of filters per session.
201
+ - **Separation by spacing, not by outline**: Listing cards have no border. Cards separate via gap (whitespace), keeping the visual surface calm.
202
+
203
+ ### Border Radius Scale
204
+ - Tight (3px): Inline badges (promo, coupon, member-price)
205
+ - Standard (6px): Rating badge
206
+ - Comfortable (8px): Buttons (utility geometry)
207
+ - Hero (10px): Hero "검색" submit button
208
+ - Card (12px): Listing cards, destination chips, search-wrapper container
209
+ - Pill (100px): Filter chips, hashtag chips
210
+
211
+ ## 6. Iconography
212
+
213
+ 여기어때's iconography is utilitarian and travel-vertical specific. Most icons are **monochrome `#222222`** glyphs that sit alongside text labels rather than replacing them. The only icon that reaches into a non-neutral color is the rating chip's star (gold-on-yellow context). On filter chips, the **hashtag character (`#`)** is treated as part of the label text (`#감성숙소`, `#반려견`) rather than as a glyph — Yeogiotte's filter taxonomy is text-first.
214
+
215
+ Category iconography on the home grid (호텔, 모텔, 펜션, 풀빌라, 캠핑, 패키지여행, 항공권 예약) leans on photo-illustrated thumbnails rather than flat geometric icons — the brand wants the user to feel the destination, not navigate a Material design language.
216
+
217
+ **Use rules:**
218
+ - Monochrome `#222222` icons paired with text labels for navigation
219
+ - Icon-only buttons reserved for utility (close, back, share, favorite)
220
+ - No two-tone or branded-blue icons in the main flow — blue is reserved for CTAs and "반짝특가"
221
+
222
+ ## 7. Motion Principles
223
+
224
+ 여기어때's motion is **functional and brisk**, oriented around the booking flow rather than expressive brand presence. There is no overshoot or spring stance observed on the chrome surfaces; transitions are short cubic-beziers in the standard easing family.
225
+
226
+ **Stance:**
227
+ - Filter-chip selection: instant fill state change to `#1D8BFF`, no bounce
228
+ - Listing-card tap feedback: subtle press-state (likely opacity or background tint at `motion-fast`)
229
+ - Image carousels (hero promos): horizontal scroll with snap, no inertia animations
230
+ - Modal/sheet entry: `motion-standard` slide-up with `ease-enter`
231
+ - Reduce motion: cross-fades replace slides; chip selection becomes instant (already is)
232
+
233
+ The brand context — booking real money on a real stay — discourages playful motion. Every kinetic moment is calibrated to feel **fast and committed**, like a confirmation, not a celebration.
234
+
235
+ ## 8. Photography & Imagery
236
+
237
+ Photography is the load-bearing brand asset. Every listing card, destination chip, and hero panel surfaces a real photograph at a generous size:
238
+ - **Listing card photo**: full-card width, ~16:9-ish (varies by room type), no overlay, no text-on-photo
239
+ - **Destination chip**: square or near-square crop with gentle border-radius, label below the image (not on it)
240
+ - **Hero**: full-bleed lifestyle photography (`/home/home_key_visual/01_kv_domestic.png`) with white H1 placed in the upper-left band, search panel anchored over the lower band
241
+
242
+ **Rules:**
243
+ - No mint/blue color overlays on photography — let the actual destination do the work
244
+ - Promo badges (반짝특가, 쿠폰) sit in the metadata block below the photo, never on the image
245
+ - Photos go edge-to-edge inside a 12px-radius card; the radius clips the photo, no inner image padding
246
+ - Pricing strikethrough + final-price typography sits below the photo, not over it
247
+
248
+ ## 9. Quick Color Reference
249
+
250
+ | Token | Hex | Use |
251
+ |---|---|---|
252
+ | Primary CTA | `#1D8BFF` | Search, login, 지도 보기 — every solid CTA |
253
+ | Body Dark | `#222222` | All headings, body, chip labels |
254
+ | Border Light | `#E6E6E6` | Filter chip + ghost button border (1.5px) |
255
+ | Card Surface | `#ffffff` | Listing card, destination chip, button bg |
256
+ | Rating Yellow | `#FFC83B` | Review-score chip on every listing card |
257
+ | Promo Blue Tint | `#E3F0FF` | "반짝특가" badge background |
258
+ | Member Slate | `#49627A` | "회원가" badge background |
259
+ | Coupon Red | `#F94239` | Coupon-applied price text |
260
+ | Coupon Red Tint | `#FFEDEA` | Coupon badge background |
261
+ | Hero Text | `#ffffff` | H1 over hero photography |
262
+
263
+ ## 10. Voice & Tone
264
+
265
+ 여기어때's voice is **plain-Korean utility with a faint hospitality warmth**. Where Yanolja leans more aggressive-marketing and where Booking.com translates English-first, 여기어때 stays in **conversational Korean booking register**: short verb-stem CTAs (`검색`, `로그인/회원가입`, `지도 보기`), polite-요 endings on instructional copy (`여행지나 숙소를 검색해보세요.`), and hashtag filter taxonomy (`#감성숙소`, `#연인추천`, `#반려견`, `#뷰맛집`) that reads like the user's own search intent rendered as UI. The brand's tagline — *"국내부터 해외까지 여행·숙소 예약은 여기어때"* — leans on the brand-name pun (*"how about here?"*) rather than on aspirational adjectives. The product never says "luxurious" or "premium"; it says "★당일특가★" (today-only special) and "쿠폰 적용시" (when coupon applied) and lets the photo carry the rest.
266
+
267
+ | Context | Tone |
268
+ |---|---|
269
+ | Top-bar utility | Two-character Korean nouns/verbs (`검색`, `로그인`, `장바구니`-equivalents). Never English on chrome. |
270
+ | Hero CTA | Single 2-char verb (`검색`) on `#1D8BFF` solid — confident, declarative |
271
+ | Filter chips | Hashtag-prefixed user-language (`#감성숙소`, `#스파`, `#OTT`) and price-range plain Korean (`5만원 이하`, `5~10만원`) |
272
+ | Promo badges | 2-4 character Korean superlatives in 700 weight: `반짝특가`, `당일특가`, `회원가`, `쿠폰 적용시` |
273
+ | Search placeholder | Polite-요 instructional (`여행지나 숙소를 검색해보세요.`) — leans into hospitality posture |
274
+ | Listing card meta | Plain factual Korean (`강문해변 도보 3분`, `보문관광단지 부근`) — distance/location is the trust signal |
275
+ | Empty / error | (Not directly captured in this pass — production teams should observe live before shipping copy) |
276
+ | Payment / refund | (Not captured — assumed formal `합니다` register based on Korean booking convention) |
277
+
278
+ **Forbidden phrases (recommended).** `불편을 드려 죄송합니다` as a boilerplate opener, English `Oops` / `Sorry` on Korean UI, generic `데이터가 없습니다` / `오류가 발생했습니다`. Never decorate `#감성숙소` with extra adjectives — the hashtag *is* the entire label, and overwriting it dilutes the user-language posture. Avoid stacking two promo badges of the same color family on the same card (e.g., `반짝특가` + another blue-tint badge); it desaturates the trust hierarchy.
279
+
280
+ **Voice samples (live-verified).**
281
+
282
+ - `국내부터 해외까지 여기어때` — hero H1 on home <!-- verified: yeogi.com 2026-05 -->
283
+ - `국내부터 해외까지 여행·숙소 예약은 여기어때` — hero sub-tagline <!-- verified: yeogi.com 2026-05 -->
284
+ - `여행지나 숙소를 검색해보세요.` — search input placeholder <!-- verified: yeogi.com 2026-05 -->
285
+ - `검색` — hero CTA on `#1D8BFF` <!-- verified: yeogi.com 2026-05 -->
286
+ - `로그인/회원가입` — top-right outline + solid variant <!-- verified: yeogi.com 2026-05 -->
287
+ - `비회원 예약조회` — guest reservation lookup <!-- verified: yeogi.com 2026-05 -->
288
+ - `지도 보기` — search-result page CTA <!-- verified: yeogi.com/domestic-accommodations 2026-05 -->
289
+ - `★당일특가★` — listing-card promo prefix on hotel names <!-- verified: yeogi.com 2026-05 -->
290
+ - `쿠폰 적용시` — price line qualifier <!-- verified: yeogi.com 2026-05 -->
291
+ - `반짝특가` — promo badge string <!-- verified: yeogi.com/domestic-accommodations 2026-05 -->
292
+ - `회원가` — member-price slate badge <!-- verified: yeogi.com/domestic-accommodations 2026-05 -->
293
+ - `#감성숙소`, `#연인추천`, `#반려견` — hashtag filter chip labels <!-- verified: yeogi.com/domestic-accommodations 2026-05 -->
294
+
295
+ ## 11. Brand Narrative
296
+
297
+ 여기어때 (literally *"how about here?"*) launched **April 2014** as an in-house product of **위드웹 (With Web)**, an IT services holding founded in **2008 by 심명섭 (Shim Myung-seop)** — a Daegu vocational-high-school graduate who had previously bounced through SMS messaging, WideForm document tooling, PPT Korea, and small-agency advertising before betting the company on the Korean motel/pension reservation market that nobody else was treating as a real product surface ([1boon — 월급 100만원 직장인에서 2천억대 회사 CEO가 된 비결](https://1boon.kakao.com/jobsN/58610c97ed94d20001f6d415), [한국관광스타트업협회 인터뷰](https://www.kotsa.co.kr/34/?q=YToyOntzOjEyOiJrZXl3b3JkX3R5cGUiO3M6MzoiYWxsIjtzOjQ6InBhZ2UiO2k6Mjt9&bmode=view&idx=3740996&t=board)). The bet was that the legacy Korean lodging ecosystem — fragmented motels and 펜션 owners, no standardized pricing, walk-in-and-haggle culture — was a **product problem**, not a supply problem, and could be solved with photography, standardized listings, and a clean reservation flow.
298
+
299
+ By **November 2015**, after the app's TV-advertising-led breakout, Shim spun the product out of With Web into a dedicated entity, **위드이노베이션 (With Innovation)**, to focus exclusively on lodging O2O ([머니S — 숙박어플 '여기어때', ㈜위드이노베이션으로 독립](https://www.moneys.co.kr/article/2015110614118041131)). Through 2016-2018 위드이노베이션 grew into the country's #2 lodging-booking platform behind Yanolja, but a 2018 prosecution investigation involving the founder's pre-여기어때 ad-network history forced Shim to step away from operational leadership ([한국경제 — 여기어때 심명섭 대표, 음란물 유통 52억 벌어 숙박 앱 회사 차렸나](https://www.hankyung.com/society/article/2018112968937)).
300
+
301
+ In **September 2019**, UK private-equity firm **CVC Capital Partners** acquired ~85% of the company from Shim and existing financial investors (including JKL Partners' 18%) at a reported enterprise value of ~₩300 billion (~US$300M), one of the largest Korean travel-tech buyouts of the decade ([KED Global — CVC to buy Korea's No.2 hotel booking app in $300mn deal](https://www.kedglobal.com/newsView/ked201908020001), [PaxNet News — '여기어때' M&A.. JKL만 더 받고 팔았다](https://paxnetnews.com/articles/51643)). In **April 2020** the holding company renamed itself from **위드이노베이션 → 여기어때컴퍼니 (GC COMPANY / 여기어때컴퍼니)**, aligning the company name with its hero brand ([서울경제 — 여기어때 운영 위드이노베이션 '여기어때컴퍼니'로 사명 변경](https://www.sedaily.com/NewsVIew/1Z1B1LQCZD), [전자신문 — 여기어때 '위드이노베이션' 회사 이름 바꾼다](https://www.etnews.com/20191125000159)). Under CVC ownership the product expanded from domestic motel/pension into hotels, 풀빌라 (pool villas), 패키지여행 (package tours), 해외여행 (international travel including 오사카, 도쿄, 다낭, 방콕), and 항공권 (flights). The company acquired **온라인투어 (Online Tour)** in 2025 to deepen its package-and-flight business ([Travel Times — 여기어때, 온라인투어 인수](https://www.traveltimes.co.kr/news/articleView.html?idxno=410758)). CVC has since explored exits at reported valuations as high as ₩1.5 trillion ([마켓인 — 매각 변수 만난 여기어때…더 멀어진 몸값 1.5조](https://marketin.edaily.co.kr/News/Read?newsId=02899526638984368)), and the company entered IPO bookrunner-selection in late 2024 ([인베스트조선 — 여기어때, IPO 주관사 선정 절차 착수](https://www.investchosun.com/site/data/html_dir/2024/08/30/2024083080214.html)).
302
+
303
+ > **A note on a frequently-confused fact:** popular press has sometimes attributed the 2019 acquisition to **KKR**. The actual buyer was **CVC Capital Partners**, not KKR ([KED Global](https://www.kedglobal.com/newsView/ked201908020001), [Crunchbase — Good Choice Company](https://www.crunchbase.com/organization/good-choice-company)).
304
+
305
+ What 여기어때 refuses, in design terms: the warm-red Korean-commerce aesthetic of legacy lodging chains (pension owner sites in the 2000s leaned on red banners, animated GIFs, and dense detail dumps); the over-saturated promo grids of competing super-apps; the Material/iOS-default chrome that erases regional warmth. What it embraces: a single confident **`#1D8BFF` blue** that signals booking trust, **photography as the brand asset**, and **hashtag-first filter taxonomy** (`#감성숙소`, `#연인추천`) that mirrors how Korean users actually describe a stay rather than how a database would categorize one.
306
+
307
+ ## 12. Principles
308
+
309
+ 1. **One blue, scarce.** `#1D8BFF` is the only brand color. It appears on the hero search CTA, the login solid+outline, "지도 보기", filter-chip selected-state, and the `반짝특가` promo badge. It does not appear as a hero background, a card fill, a divider, or a decorative accent. *UI implication:* per viewport in a primary flow, target ≤2 elements rendered in `#1D8BFF`. If a screen has three blue surfaces competing, two must demote to neutral or to a tinted variant (`#E3F0FF`).
310
+
311
+ 2. **Photo is the brand. Chrome is the frame.** Listing cards reserve their top region for the room photograph with no overlay, no text, no badge. *UI implication:* never place a promo badge inside the image; badges live in the metadata block below the photo. Never tint a photo with a brand color filter; the destination/property must read true.
312
+
313
+ 3. **Hashtag taxonomy mirrors user search intent.** Filter chips use `#감성숙소`, `#연인추천`, `#반려견`, `#뷰맛집`, `#BBQ` — the exact phrases users type into the search bar. *UI implication:* don't translate hashtag chips into "category-style" labels (e.g., `Romantic Stays` or `Pet-Friendly`). The hashtag character is part of the label and signals "this is how you'd describe it, not how we'd file it."
314
+
315
+ 4. **Three radii, no exceptions.** 8px buttons / 12px cards / 100px filter chips. Inline badges sit at 3-6px (almost square). Anything outside this scale (e.g., a 16px-radius button) is off-system. *UI implication:* if a designer reaches for a 10px or 14px or 20px radius for a button or card, the answer is one of {8, 12, pill}.
316
+
317
+ 5. **Bold goes on price.** 700-weight is reserved for the listing name, the final price, the promo badges, and the hero CTA. Descriptive copy (location, distance, "쿠폰 적용시" qualifier) stays at 400-500 so the eye lands on the conversion-relevant numbers. *UI implication:* never bold an entire listing card. Bold the name, bold the price, leave the rest at 400-500.
318
+
319
+ 6. **Filter density is a feature, not a bug.** The `/domestic-accommodations` page exposes ~30+ filter chips on a single horizontal scroll: price ranges, star grades, hashtag categories, amenities. Users want this density. *UI implication:* don't collapse filter chips behind a "Filters" modal as the primary interaction. The horizontal scroll row of pills is the primary filter surface; modals are for advanced search only.
320
+
321
+ 7. **Member rate is utility, not promotion.** "회원가" sits on the slate `#49627A` badge — deliberately not blue, not red, not yellow — so it reads as account-state information, not as a sale offer. The promotional weight goes to `반짝특가` (blue) and `쿠폰 적용시` (red). *UI implication:* never style "회원가" in brand blue; that conflates "you have access to a member rate" with "this is a flash deal," which dilutes both signals.
322
+
323
+ ## 13. Personas
324
+
325
+ *Personas are fictional archetypes informed by publicly described 여기어때 user segments and Korean travel-booking patterns; they are not individual people.*
326
+
327
+ **지호 (Jiho), 28, 서울.** Marketing junior, single. Books 여기어때 4-5 times a year — weekend 모텔 stays in 강남/홍대 with a partner, occasional 강릉/속초 trip. Filters by `#감성숙소` + `#연인추천` first, then by price range (`10~15만원`). Reads the rating chip (`9.4`) before reading the hotel name. Will not book a property below `9.0`.
328
+
329
+ **민수 (Minsu), 41, 부산.** Father of two elementary-school kids. Uses 여기어때 for family 펜션 trips on long weekends — `#가족여행숙소` + `#BBQ` + `#수영장` are his standing filter set. Cares about the photo of the actual room more than the description; will scroll the image carousel before reading any meta. Pays via 여기어때페이 / coupon-applied price; the `쿠폰 적용시` red badge is what closes the deal for him.
330
+
331
+ **Soyoung, 35, 일본 오사카 거주.** Korean expat in Osaka. Books 여기어때 for family visits to Korea (Seoul + 제주도). Uses the `해외여행` tab in reverse — flying *into* Korea — and filters domestic hotels by `#반려견` for her dog. The polite-요 search placeholder ("여행지나 숙소를 검색해보세요.") is part of why she uses 여기어때 over Booking.com; it feels Korean in a way that translated international UIs don't.
332
+
333
+ ## 14. States
334
+
335
+ | State | Treatment |
336
+ |---|---|
337
+ | **Empty (no search results)** | One factual line in `#222222` body weight (`'<query>' 검색 결과가 없어요`-pattern). Suggested-region or suggested-hashtag chips below in the standard 100px pill geometry. Never a mascot illustration on functional surfaces. |
338
+ | **Empty (filter cleared)** | Single line of muted body text. No CTA — user resets the filter via the same chip row. |
339
+ | **Loading (listing list)** | Skeleton cards at exact final dimensions — `#E6E6E6`-tone blocks for photo (top region), name row, meta row, price row. Shimmer ≤ 1.2s. Rating chip skeleton renders as a yellow-tone block (preserving the visual anchor) without a digit, so users don't read a placeholder `0.0`. |
340
+ | **Loading (search submit)** | Hero `#1D8BFF` "검색" button shows a 3-dot white animation replacing the label text. Button width does not change. |
341
+ | **Loading (image carousel)** | Card photo region renders a `#F4F4F4` placeholder block until the JPEG resolves. No spinner over the photo. |
342
+ | **Selected (filter chip)** | Filter chip background fills `#1D8BFF`, text becomes `#ffffff`, border becomes `1.5px solid #1D8BFF`. Geometry stays identical (100px / 32px / 16px h-padding) so the row doesn't reflow on toggle. |
343
+ | **Hover / press (button)** | Solid blue button darkens slightly (observed via interaction; static value approximated as a 6-8% darker blue). No scale, no bounce. |
344
+ | **Error (inline field)** | Input border becomes `2px solid #F94239`, helper text below in `#F94239` 13px / 400. One actionable Korean sentence. Avoids `오류가 발생했습니다`. |
345
+ | **Error (network)** | Top banner with dark surface, white 14px text, one sentence + retry. Auto-dismiss when connectivity returns. |
346
+ | **Success (booking confirmed)** | Dedicated confirmation screen — not a toast. Reservation number 16px / 600 `#222222`, property name 18-20px / 700, dates and price block, single primary `#1D8BFF` CTA `예약 내역 보기`. Booking is ceremonial here — the receipt matters. |
347
+ | **Success (favorited)** | Heart icon fills, brief 200ms scale pulse (`1.0 → 1.1 → 1.0`) using a calm easing — the only place the system tolerates a tiny motion flourish. |
348
+ | **Skeleton** | `#E6E6E6` blocks at exact card dimensions. Rating slot uses a yellow-tinted skeleton (preserves visual rhythm). Price slot renders as `---원` until resolved — never `0원`, which would misread as "free." |
349
+ | **Disabled (button)** | Background drops to `#E6E6E6`, text to `#888-ish` muted gray. Geometry stays identical so re-enable is frame-stable. |
350
+
351
+ ## 15. Motion & Easing
352
+
353
+ 여기어때's motion is **functional and brisk** — calibrated for a booking flow where users move through {search → filter → list → card → details → checkout} in a session and where every transition is information-bearing. There is no spring stance or overshoot on the chrome surfaces; the brand's posture is "confident booking," not "playful app."
354
+
355
+ **Durations:**
356
+
357
+ | Token | Value | Use |
358
+ |---|---|---|
359
+ | `motion-instant` | 0ms | Toggle commits, checkbox state changes |
360
+ | `motion-fast` | 150ms | Hover, focus, button press overlay, chip selection, image thumb tap |
361
+ | `motion-standard` | 250ms | The default — sheet opens, card expand, tab switch, toast appear |
362
+ | `motion-slow` | 350ms | Booking confirmation reveal, success screen entrance |
363
+ | `motion-page` | 300ms | Route transitions between top-level tabs (해외여행 ↔ 국내숙소) |
364
+
365
+ **Easings:**
366
+
367
+ | Token | Curve | Use |
368
+ |---|---|---|
369
+ | `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Things appearing — sheets, toasts, screen pushes |
370
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Things leaving — dismissals, pops |
371
+ | `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1)` | Two-way transitions — card expand/collapse, filter-chip toggle |
372
+
373
+ **Spring stance.** **Spring and overshoot easings are forbidden across 여기어때 chrome and money surfaces.** Booking is a money decision; a CTA that wobbles or a confirmation card that springs reads as toy-like in a context where users are committing to a real stay at a real price. The single licensed exception is the favorite-heart toggle, which gets a 200ms `1.0 → 1.1 → 1.0` scale pulse using `ease-standard` (not `ease-bounce`) — enough tactility to feel like a press, not enough to feel like a game.
374
+
375
+ **Signature motions.**
376
+
377
+ 1. **Filter-chip selection.** Background fills `#1D8BFF`, text inverts to `#ffffff`, all over `motion-fast` with `ease-standard`. No geometry change.
378
+ 2. **Listing-card tap.** Card scales `1.0 → 0.98` over `motion-fast / ease-standard` on press, returns on release. The route transition follows on `motion-page / ease-enter`.
379
+ 3. **Search submit.** "검색" button label replaced by 3-dot loader; button geometry frozen. On result page entry, the result-count H1 fades in with `motion-standard / ease-enter`.
380
+ 4. **Filter-chip row scroll.** Native horizontal scroll with snap. No inertia overshoot — the system snaps cleanly to the next chip boundary.
381
+ 5. **Booking confirmation.** Confirmation card fades+rises from `y+20px` over `motion-slow / ease-enter`. The reservation number, property name, and CTA stagger in at 80ms intervals — calm, not theatrical.
382
+ 6. **Reduce motion.** Under `prefers-reduced-motion: reduce`, all `motion-*` tokens collapse to `motion-instant`. Cross-fades replace slides. The favorite-heart pulse is suppressed entirely. The app stays fully usable.
383
+
384
+ <!--
385
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
386
+
387
+ Tier 1 — live DOM (playwright getComputedStyle, isolated browser context, 2026-05-09):
388
+ - https://yeogi.com/ — home: hero H1 32px·700 white, search input "여행지나 숙소를 검색해보세요.", search CTA #1D8BFF / #ffffff / 10px / 10×18 / 48px / 15px·700, login outline #1D8BFF border 1.5px / 8px / 9×14 / 40px / 14px·600, login solid #1D8BFF / 14px·600, 비회원 예약조회 #E6E6E6 outline / 14px·600, listing cards 12px radius / no border / white bg / 343px height with 0 0 24px padding, destination chip H3 14px·500.
389
+ - https://yeogi.com/domestic-accommodations — search-result page: filter chips 100px radius / 1.5px solid #E6E6E6 / 32px / 16px h-padding / 13px·600, "지도 보기" #1D8BFF solid 8px / 9×14 / 40px / 14px·600, badges captured: rating #FFC83B / 6px / 4×5, "반짝특가" #E3F0FF/#1D8BFF / 3px / 12px·700, "회원가" #49627A/white / 3px / 12px·700, coupon "쿠폰 적용가" #FFEDEA/#F94239 / 3px / 12px·700.
390
+
391
+ Tier 2 — Cross-check (WebFetch, 2026-05-09):
392
+ - https://getdesign.md/yeogiotte — no record ("No designs found for 'yeogiotte'")
393
+ - https://getdesign.md/goodchoice — no record ("No designs found for 'goodchoice'")
394
+ - styles.refero.design — not separately fetched this pass.
395
+ Tier 2 status: unavailable. Tier 1 (yeogi.com home + /domestic-accommodations) treated as authoritative.
396
+
397
+ Philosophy / Founders (Tier 1, WebSearch 2026-05-09):
398
+ - Founder Shim Myung-seop (심명섭), Daegu vocational HS → community college → SMS/PowerPoint/ad-agency entrepreneur → 2008 founded With Web → 2014 launched 여기어때 in-house → 2015 spun out 위드이노베이션 — sourced from 1boon (kakao jobsN), 한국관광스타트업협회 interview, 머니S 2015 article.
399
+ - 2018 founder prosecution & step-back — 한국경제 2018-11.
400
+ - 2019 CVC Capital Partners acquisition (~85%, ~₩300B / ~$300M) — KED Global "CVC to buy Korea's No.2 hotel booking app in $300mn deal" (2019-08), PaxNet News, Crunchbase Good Choice Company profile.
401
+ - 2020 rename 위드이노베이션 → 여기어때컴퍼니 — 서울경제, 전자신문 2019-11.
402
+ - 2024 IPO bookrunner selection — 인베스트조선 2024-08.
403
+ - 2025 온라인투어 acquisition — Travel Times.
404
+ - KKR misattribution corrected: actual acquirer is CVC Capital Partners (UK PE), not KKR — explicitly noted in §11 as the "frequently-confused fact" callout.
405
+
406
+ Style ref: baemin/karrot (Korean utility brands) — voice register conventions (polite-요 placeholder, two-character verb-form CTAs, hashtag taxonomy preserving Korean characters) cross-referenced from web/references/karrot/DESIGN.md and web/references/baemin/DESIGN.md.
407
+
408
+ Personas (§13) are fictional archetypes informed by publicly described 여기어때 user segments (Korean urban young couples for 모텔, family for 펜션, expats booking domestic Korean stays). Any resemblance to specific individuals is unintended.
409
+
410
+ Interpretive claims (editorial, not documented Yeogiotte brand statements):
411
+ - "Hashtag taxonomy mirrors user search intent" framing in §12 P3 — editorial reading of the live filter UX, not a sourced product statement.
412
+ - "One blue, scarce" rule in §12 P1 — derived from observed live usage on home + /domestic-accommodations, not a published Yeogiotte design-system rule.
413
+ - The KKR-vs-CVC clarification in §11 — KKR is widely confused in casual press; primary press citations confirm CVC.
414
+ -->
415
+
416
+ ---
417
+
418
+ **Verified:** 2026-05-09
419
+ **Tier 1 sources:** yeogi.com (home — Yeogiotte Blue `#1D8BFF` 10px / 48px / 15px·700 hero search; 8px / 40px / 14px·600 login utility; 12px card radius); yeogi.com/domestic-accommodations (filter chips 100px / 32px / 13px·600 with 1.5px `#E6E6E6` border; badges captured for rating `#FFC83B`, promo `#E3F0FF`/`#1D8BFF`, member-rate `#49627A`, coupon `#FFEDEA`/`#F94239`).
420
+ **Tier 2 sources:** getdesign.md/yeogiotte + getdesign.md/goodchoice — no record. styles.refero.design — not fetched this pass.
421
+ **Tier 2 status:** unavailable. Tier 1 (yeogi.com live DOM via isolated playwright context) authoritative.
422
+ **Tier 1 Philosophy citations:** [KED Global — CVC $300M deal](https://www.kedglobal.com/newsView/ked201908020001), [한국경제 2018](https://www.hankyung.com/society/article/2018112968937), [머니S — 위드이노베이션 독립](https://www.moneys.co.kr/article/2015110614118041131), [서울경제 — 사명 변경](https://www.sedaily.com/NewsVIew/1Z1B1LQCZD), [Crunchbase Good Choice](https://www.crunchbase.com/organization/good-choice-company), [PaxNet News M&A](https://paxnetnews.com/articles/51643), [Travel Times — 온라인투어 인수](https://www.traveltimes.co.kr/news/articleView.html?idxno=410758), [인베스트조선 IPO](https://www.investchosun.com/site/data/html_dir/2024/08/30/2024083080214.html).
423
+ **Style ref:** `baemin` + `karrot` (KR utility-brand voice register conventions retained).
424
+ **Conflicts unresolved:** none. **Earlier mistake reverted:** prompt initially assumed Yeogiotte's primary was a "signature pink/magenta"; live measurement on yeogi.com home + /domestic-accommodations (2026-05-09) shows the brand has a **single confident blue** `#1D8BFF` as its sole accent, not pink. The DESIGN.md is written to the live-verified blue system. Acquirer correction: prompt suggested KKR; press citations confirm CVC Capital Partners (2019).
@@ -326,3 +326,88 @@ The brand's signature orange (`#ff4f00`) is unmistakable -- a vivid, saturated r
326
326
  6. Tab navigation uses inset box-shadow underlines, not border-bottom
327
327
  7. Text is always warm: `#201515` for dark, `#36342e` for body, `#939084` for muted
328
328
  8. Uppercase labels at 12-14px with 0.5px letter-spacing for section categorization
329
+
330
+ ## 10. Voice & Tone
331
+
332
+ Zapier's voice is **automation-friendly and SMB-empathetic.** "Automate AI Workflows, Agents, and Apps" — capability-driven with a focus on small business outcomes. Warm typography (`#201515` text on cream) signals "approachable, not corporate."
333
+
334
+ | Context | Tone |
335
+ |---|---|
336
+ | CTA | Verb. "Sign up free", "Get started", "Start automating" |
337
+ | Marketing | Use-case-driven. Real workflow templates as social proof |
338
+ | Documentation | Step-by-step screenshot tutorials |
339
+ | Error | Specific. "Trigger filter conditions not met. Check filter rules." |
340
+
341
+ **Voice samples**
342
+ - Tagline: *"Automate AI Workflows, Agents, and Apps"* <!-- verified: zapier.com homepage 2026-05 -->
343
+
344
+ **Forbidden phrases.** "Revolutionary automation". Generic Make-comparison framing.
345
+
346
+ ## 11. Brand Narrative
347
+
348
+ Zapier was **founded 2011 in Columbia, Missouri** by **Wade Foster** (CEO), **Bryan Helmig**, and **Mike Knoop** — three University of Missouri grads who built a working prototype during a Columbia startup weekend. **Foster left his job December 2011**, **Helmig followed April 2012**, **Knoop joined full-time May 2012** — same month they shipped public beta. **Y Combinator initially rejected** the trio (janky weekend prototype, no customers, no track record); they were **accepted on second application**, relocated to Mountain View, and graduated **YC W12 batch June 2012**. **Seed $1.2M October 2012** led by **Bessemer Venture Partners + Draper Fisher Jurvetson** + angels — and famously little outside funding thereafter (uncommon for SaaS at scale). **Remote-first since founding** (no office, fully distributed). Pioneered "if-this-then-that" SMB workflow automation. **2024-2025 evolution**: AI agents and MCP integration alongside classic Zaps. The brand identity — **`#ff4f00` Zapier Orange Primary** + **`#201515` Plum-Black** + **`#fffefb` warm cream canvas** + **4px Buttons** + **Inter 600 body** — reflects "warm, approachable workflow automation." <!-- citations: Wikipedia (Zapier), YC company page, Wade Foster YC Q&A, Founders Talk #55 -->
349
+
350
+ **Sources:**
351
+ - [Zapier — Wikipedia](https://en.wikipedia.org/wiki/Zapier)
352
+ - [Zapier — Y Combinator](https://www.ycombinator.com/companies/zapier)
353
+ - [Q&A with Wade Foster, Cofounder of Zapier — Y Combinator](https://www.ycombinator.com/blog/qa-with-wade-foster-cofounder-of-zapier/)
354
+ - [Side hustle to $35M ARR at Zapier with Bryan Helmig — Founders Talk #55](https://changelog.com/founderstalk/55)
355
+
356
+ ## 12. Principles
357
+
358
+ 1. **Workflows over code.** *UI implication:* canvas + properties layout; never code-only views.
359
+ 2. **Warm typography.** `#201515` / `#36342e`. *UI implication:* avoid pure black text.
360
+ 3. **Uppercase labels 12-14px / 0.5px tracking.** *UI implication:* preserve for section categorization.
361
+ 4. **Use-case templates first.** *UI implication:* lead with templates, not feature lists.
362
+ 5. **AI agents alongside Zaps.** *UI implication:* don't deprecate classic Zaps; AI agents are additive.
363
+
364
+ ## 13. Personas
365
+
366
+ *Personas are fictional archetypes informed by Zapier user segments (SMB owners, RevOps, marketing automation), not individual people.*
367
+
368
+ **Sofia Russo, 35, Milan.** Indie agency owner. 40+ Zaps automating client onboarding.
369
+
370
+ **Marcus Chen, 41, San Francisco.** RevOps lead at Series C SaaS. Zapier as glue between Salesforce + Slack + Notion.
371
+
372
+ **Priya Krishnan, 28, Bengaluru.** Marketing ops. Email → CRM automation flows.
373
+
374
+ ## 14. States
375
+
376
+ | State | Treatment |
377
+ |---|---|
378
+ | **Empty (no Zaps)** | "Create your first Zap" CTA + template gallery |
379
+ | **Empty (no triggers)** | App picker with search |
380
+ | **Loading (Zap running)** | Per-step trace with status |
381
+ | **Loading (test)** | Test data per step visible |
382
+ | **Error (auth)** | "Reconnect [App]" with OAuth flow |
383
+ | **Error (filter)** | "Filter conditions not met — view test data" |
384
+ | **Success (Zap published)** | Confirmation + Zap History link |
385
+ | **Success (test passed)** | Step-by-step green checks |
386
+ | **Skeleton (Zap list)** | Warm-cream placeholders |
387
+ | **Disabled (free plan limit)** | Upgrade link |
388
+ | **Loading (long task)** | Persistent progress |
389
+
390
+ ## 15. Motion & Easing
391
+
392
+ | Token | Value | Use |
393
+ |---|---|---|
394
+ | `motion-instant` | 0ms | Selection |
395
+ | `motion-fast` | 150ms | Hover |
396
+ | `motion-standard` | 250ms | Modal, panel |
397
+
398
+ Standard cubic-bezier; minimal bounce — workflow register. `prefers-reduced-motion: reduce` removes hover transitions.
399
+
400
+ ---
401
+
402
+ **Verified:** 2026-05-09 (Apple-tier full migration)
403
+ **Tier 1 sources:** zapier.com/, zapier.com/pricing (live DOM via playwright)
404
+ - **Primary `#ff4f00` Zapier Orange + `#fffefb` cream text** 4px / 40px / 8×16 / 16px·600 (Start free with email / Learn more about MCP — canonical hero CTA)
405
+ - **Header sign-up — Compact Pill** `#ff4f00` / `#fffefb` / **18px** / 36px / 6×12 / 14px·600 (header utility — slight pill variant)
406
+ - **Inverse Primary `#201515` Plum-Black + `#fffefb` text** 4px / 48px / 12×24 / 18px·600 (Explore Zapier for Enterprise — section CTA)
407
+ - **Top nav** transparent / `#201515` / 4px / 36px / 6×10 / 14px·400
408
+ - **Skip-to-content** `rgb(56,25,51)` `#381933` Deep Plum / `#fffefb` / radius 0-0-6-6 / 33px / 4×16-8 / 14px·400
409
+ - **Pricing tier card header** `#201515` / `#fffefb` / 8px / 64px / 0×20 / 24px·600
410
+ - Canvas warm cream `#fffefb` (not pure white) — distinctive warm-cast off-white
411
+ **Tier 2 sources:** styles.refero.design / getdesign.md — no record.
412
+ **Tier 1 (Philosophy):** Wikipedia (Zapier), Y Combinator company page, Wade Foster YC Q&A, Founders Talk #55.
413
+ **Style ref:** `stripe`. **Conflicts unresolved:** **Earlier mistake reverted** — prior footer cited `#9fe870` lime which is **wise's brand color** (copy-paste error). Canonical is **`#ff4f00` Zapier Orange**.