oh-my-design-cli 1.5.0 → 1.6.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 (40) hide show
  1. package/AGENTS.md +1 -0
  2. package/README.ko.md +1 -1
  3. package/README.md +9 -9
  4. package/agents/omd-master.md +13 -1
  5. package/data/reference-fingerprints.json +1428 -523
  6. package/package.json +5 -4
  7. package/scripts/ctx-prime.cjs +266 -0
  8. package/skills/omd-harness/SKILL.md +135 -7
  9. package/skills/omd-kr-writer/SKILL.md +1 -1
  10. package/web/references/17live/DESIGN.md +424 -0
  11. package/web/references/alipay/DESIGN.md +456 -0
  12. package/web/references/appier/DESIGN.md +420 -0
  13. package/web/references/bilibili/DESIGN.md +426 -0
  14. package/web/references/class101/DESIGN.md +433 -0
  15. package/web/references/cookpad/DESIGN.md +357 -0
  16. package/web/references/dji/DESIGN.md +416 -0
  17. package/web/references/gogoro/DESIGN.md +403 -0
  18. package/web/references/ichef/DESIGN.md +411 -0
  19. package/web/references/kakaopay/DESIGN.md +1 -1
  20. package/web/references/kakaot/DESIGN.md +454 -0
  21. package/web/references/kkday/DESIGN.md +423 -0
  22. package/web/references/meituan/DESIGN.md +424 -0
  23. package/web/references/millie/DESIGN.md +533 -0
  24. package/web/references/money-forward/DESIGN.md +401 -0
  25. package/web/references/myrealtrip/DESIGN.md +445 -0
  26. package/web/references/naverwebtoon/DESIGN.md +429 -0
  27. package/web/references/note/DESIGN.md +318 -0
  28. package/web/references/publy/DESIGN.md +511 -0
  29. package/web/references/smarthr/DESIGN.md +404 -0
  30. package/web/references/smartnews/DESIGN.md +331 -0
  31. package/web/references/spoon/DESIGN.md +446 -0
  32. package/web/references/tada/DESIGN.md +528 -0
  33. package/web/references/tossbank/DESIGN.md +519 -0
  34. package/web/references/triple/DESIGN.md +434 -0
  35. package/web/references/tumblbug/DESIGN.md +530 -0
  36. package/web/references/watcha/DESIGN.md +425 -0
  37. package/web/references/wavve/DESIGN.md +438 -0
  38. package/web/references/wconcept/DESIGN.md +511 -0
  39. package/web/references/xiaohongshu/DESIGN.md +423 -0
  40. package/web/references/yogiyo/DESIGN.md +465 -0
@@ -0,0 +1,434 @@
1
+ ---
2
+ id: triple
3
+ name: Triple
4
+ country: KR
5
+ category: travel
6
+ homepage: "https://triple.guide"
7
+ primary_color: "#368FFF"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=triple.guide&sz=128"
11
+ verified: "2026-05-19"
12
+ omd: "0.1"
13
+ ---
14
+
15
+ # Design System Inspiration of Triple (트리플)
16
+
17
+ ## 1. Visual Theme & Atmosphere
18
+
19
+ Triple is Korea's personal travel-planning app — "나를 아는 여행 앱, 트리플" (the travel app that knows me). Where most travel products are booking marketplaces, Triple's core is the *itinerary*: a friendly companion that helps you plan a trip day by day, recommends places that fit your taste, and gets richer the more you plan with friends. The interface reflects that companion role — bright, clean, approachable, with a single cheerful sky-blue carrying the entire interactive system and lots of soft, rounded, pill-shaped geometry that feels more like a chat app than a corporate OTA.
20
+
21
+ The signature is a vivid friendly blue, observed live as `#368FFF`, used everywhere a user acts: the primary "일정 살펴보기" CTA, active states, links, and selection. It's a brighter, more optimistic blue than fintech-trust blues — closer to a clear-sky travel-day blue. It's reinforced by a very light blue tint (`#F1F7FF`) for informational cards and an even subtler `rgba(54,143,255,0.07)` wash for selected/highlighted regions, so the blue family quietly tints the whole surface without ever overwhelming the white canvas. The CTA's most distinctive trait is its **pill radius (36px)** at a tall 56px height — a soft, tappable, friendly button that signals "this is easy."
22
+
23
+ Typography rides the platform's native system sans (`-apple-system, "system-ui", "Segoe UI", Helvetica, Arial, ...`) — Triple is mobile-app-first, and the web mirrors the app's native-font feel — rendered in black-to-gray on white. Geometry is the brand's tactile language: pill buttons (36px), rounded cards (20px), and soft tinted blocks. The atmosphere is "your cheerful travel buddy with a map" — light, personal, collaborative, and a little playful.
24
+
25
+ **Key Characteristics:**
26
+ - Friendly sky-blue (`#368FFF`) as the single interactive accent — CTAs, active, links, selection
27
+ - Pill-radius CTAs (`36px` radius at 56px height) — soft, tappable, "easy" geometry
28
+ - Light blue tint family (`#F1F7FF`, `rgba(54,143,255,0.07)`) washing info/selected surfaces
29
+ - Clean white canvas with rounded cards (`20px`)
30
+ - Native system-sans type stack (mobile-app-first), black→gray on white
31
+ - Personal, collaborative, slightly playful — a travel companion, not a marketplace
32
+ - Itinerary-first: the day-by-day plan is the product
33
+
34
+ ## 2. Color Palette & Roles
35
+
36
+ Colors below are extracted from live computed styles on triple.guide/intro (2026-05-19). Triple does not publish a public token layer; values are observed.
37
+
38
+ ### Brand / Interactive
39
+ - **Triple Blue** (`#368FFF`): Primary interactive — CTA background, active states, links, selection. Observed `rgb(54, 143, 255)`, the most-frequent saturated color (39 occurrences). *(Brief-provided value was `#2EA6FF`; live observed `#368FFF` — use the live value.)*
40
+ - **Triple Blue Pressed** (`#1A85E8`): Hover/pressed darkening of Triple Blue.
41
+ - **Sky Accent** (`#1AADF6`): A lighter cyan-blue seen in secondary accents/illustration. Observed `rgb(26, 173, 246)`.
42
+
43
+ ### Tints (Blue Family)
44
+ - **Blue Tint Card** (`#F1F7FF`): Light blue card/info-block background. Observed `rgb(241, 247, 255)`.
45
+ - **Blue Wash** (`rgba(54,143,255,0.07)`): Selected/highlighted region wash. Observed directly.
46
+
47
+ ### Surfaces
48
+ - **Canvas White** (`#FFFFFF`): Page background, card surfaces.
49
+ - **Surface Gray** (`#F5F6F7`): Section bands, subtle grouping.
50
+
51
+ ### Text
52
+ - **Text Primary** (`#1B1D1F`): Headings, primary labels.
53
+ - **Text Body** (`#3A3E41`): Body copy, card titles.
54
+ - **Text Secondary** (`#7E848A`): Metadata, captions, secondary labels.
55
+ - **Text Tertiary** (`#ADB1B5`): Placeholder, disabled, fine print.
56
+
57
+ ### Borders & Dividers
58
+ - **Border Default** (`#E8EAEC`): Card borders, dividers, input outlines.
59
+ - **Border Strong** (`#D5D8DB`): Active/emphasized borders.
60
+
61
+ ### Semantic
62
+ - **Success** (`#22C55E`): Saved, confirmed, completed.
63
+ - **Highlight Teal** (`#0ECEDB`): Special accent / map highlight. Observed `rgb(14, 206, 219)`.
64
+ - **Error** (`#FF3B30`): Errors, destructive.
65
+ - **Warning** (`#FAAD14`): Pending, attention.
66
+
67
+ ## 3. Typography Rules
68
+
69
+ ### Font Stack
70
+ ```
71
+ -apple-system, "system-ui", "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"
72
+ ```
73
+
74
+ Triple is mobile-app-first; the web mirrors the app by using the platform native sans (San Francisco / Roboto via the system stack). On Korean devices this resolves to Apple SD Gothic Neo / system Korean faces. All rendering is black-to-gray on white.
75
+
76
+ ### Type Scale (observed intro + planning surfaces)
77
+
78
+ | Role | Size | Weight | Line Height | Use |
79
+ |---|---|---|---|---|
80
+ | Hero | 28–36px | 700 | 1.3 | Intro hero, feature headlines |
81
+ | Section Heading | 20–22px | 700 | 1.35 | Itinerary day headers, section titles |
82
+ | Card Title | 16px | 600 | 1.4 | Place/itinerary card titles |
83
+ | CTA | 18px | 700 | 1.4 | Primary buttons (observed 18px/700 on the 56px CTA) |
84
+ | Body | 16px | 400 | 1.5 | Descriptions, tip copy (observed 16px/400) |
85
+ | Meta | 14px | 400 | 1.4 | Place metadata, distance, hours |
86
+ | Caption | 12px | 400 | 1.4 | Badges, fine print |
87
+
88
+ ### Conventions
89
+ - **700 for headlines and CTAs, 600 for card titles, 400 for body** — the bold CTA weight (700) makes the friendly pill feel confident.
90
+ - **Black headline, gray meta** — `#1B1D1F` → `#3A3E41` → `#7E848A`.
91
+ - **16px base body** — comfortable reading for trip tips and place descriptions.
92
+ - **Korean-primary** — Korean is first-class; English used in place names and the app stores.
93
+
94
+ ## 4. Component Stylings
95
+
96
+ ### Buttons
97
+
98
+ **Primary CTA (일정 살펴보기 / 함께 일정 만들기)**
99
+ - Background: `#368FFF`
100
+ - Text: `#FFFFFF`
101
+ - Border: none
102
+ - Radius: 36px (pill)
103
+ - Padding: 0 28px
104
+ - Font: 18px / 700 / system-sans
105
+ - Hover: background `#1A85E8`
106
+ - Use: Primary action — observed 56px tall, pill-shaped friendly button
107
+
108
+ **Secondary / Outline**
109
+ - Background: `#FFFFFF`
110
+ - Text: `#368FFF`
111
+ - Border: 1px solid `#368FFF`
112
+ - Radius: 36px (pill)
113
+ - Padding: 0 28px
114
+ - Font: 18px / 700 / system-sans
115
+ - Use: Secondary action paired with the filled primary
116
+
117
+ **Soft / Tinted**
118
+ - Background: `#F1F7FF`
119
+ - Text: `#368FFF`
120
+ - Border: none
121
+ - Radius: 36px (pill)
122
+ - Padding: 0 24px
123
+ - Font: 16px / 600 / system-sans
124
+ - Use: Low-emphasis action, "다시 보기", inline suggestions
125
+
126
+ **Ghost / Text**
127
+ - Background: transparent
128
+ - Text: `#3A3E41`
129
+ - Border: none
130
+ - Font: 16px / 600 / system-sans
131
+ - Use: Tertiary nav, "더보기"
132
+
133
+ ### Inputs
134
+
135
+ **Search / Text Field**
136
+ - Background: `#F5F6F7`
137
+ - Text: `#1B1D1F`
138
+ - Border: none (filled) — or 1px solid `#E8EAEC` on white
139
+ - Radius: 12px
140
+ - Padding: 12px 16px
141
+ - Font: 16px / 400 / system-sans
142
+ - Placeholder: `#ADB1B5`
143
+ - Focus: border `#368FFF`
144
+ - Use: Destination/place search
145
+
146
+ ### Cards
147
+
148
+ **Place / Itinerary Card**
149
+ - Background: `#FFFFFF`
150
+ - Border: 1px solid `#E8EAEC` (or shadowless on bands)
151
+ - Radius: 20px
152
+ - Padding: 16px (text region) + image
153
+ - Use: The planning atom — place photo + name + tip/metadata
154
+
155
+ **Info / Tip Card**
156
+ - Background: `#F1F7FF`
157
+ - Border: none
158
+ - Radius: 20px
159
+ - Padding: 20px
160
+ - Font: 16px / 400 / system-sans, `#3A3E41`
161
+ - Use: Travel tips, contextual info, "랜드마크를 사랑한 여행자" style editorial blocks (observed `rgb(241,247,255)` bg, 20px radius)
162
+
163
+ ### Badges / Chips
164
+
165
+ **Category / Filter Chip**
166
+ - Background: `#F5F6F7`
167
+ - Text: `#3A3E41`
168
+ - Border: none
169
+ - Radius: 999px
170
+ - Padding: 6px 14px
171
+ - Font: 13px / 500 / system-sans
172
+ - Active: bg `rgba(54,143,255,0.07)`, text `#368FFF`
173
+ - Use: Place-type filters (관광 / 맛집 / 카페 / 숙소)
174
+
175
+ **Selected Region**
176
+ - Background: `rgba(54,143,255,0.07)`
177
+ - Text: `#368FFF`
178
+ - Border: 1px solid `#368FFF`
179
+ - Radius: 12px
180
+ - Use: Selected itinerary item, chosen place on map
181
+
182
+ ### Tabs / Nav
183
+
184
+ **Bottom Tab (app) / Top Nav (web)**
185
+ - Active: `#368FFF` (icon + label)
186
+ - Inactive: `#7E848A`
187
+ - Font: 12px (tab) / 14px (web nav) / 500 / system-sans
188
+ - Use: 일정 / 가이드 / 예약 / 내 여행 switcher
189
+
190
+ ### Toasts
191
+
192
+ **Snackbar**
193
+ - Background: `#1B1D1F`
194
+ - Text: `#FFFFFF`
195
+ - Radius: 12px
196
+ - Padding: 12px 16px
197
+ - Use: "일정에 추가했어요" transient feedback
198
+
199
+ ### Dialogs
200
+
201
+ **Modal / Bottom Sheet**
202
+ - Background: `#FFFFFF`
203
+ - Text: `#1B1D1F`
204
+ - Radius: 20px (top corners on sheet)
205
+ - Padding: 24px
206
+ - Backdrop: `rgba(0,0,0,0.5)`
207
+ - Use: Place detail, add-to-itinerary, collaborator invite
208
+
209
+ ---
210
+
211
+ **Verified:** 2026-05-19
212
+ **Tier 1 sources:** triple.guide/intro (live computed styles via Playwright — primary CTA `#368FFF` (rgb 54,143,255) / 36px pill radius / 18px·700 / 56px tall, the most-frequent saturated color (39×); info card `#F1F7FF` (rgb 241,247,255) / 20px radius; selected wash `rgba(54,143,255,0.07)` (17×); sky accent `#1AADF6` (rgb 26,173,246); highlight teal `#0ECEDB` (rgb 14,206,219); white bg; font `-apple-system, "system-ui", "Segoe UI", Helvetica, Arial, ...`).
213
+ **Tier 2 sources:** getdesign.md/triple — not checked; styles.refero.design — not checked.
214
+ **Conflicts unresolved:** Brief-provided `#2EA6FF` vs live observed `#368FFF` — live adopted as canonical primary (39 occurrences on CTAs/active). No internal conflicts.
215
+
216
+ ## 5. Layout Principles
217
+
218
+ ### Page Structure
219
+ - Mobile-app-first; web intro/marketing is a vertical scroll of feature sections with rounded cards.
220
+ - In-app: a day-by-day itinerary timeline with place cards, a map view, and bottom-tab navigation.
221
+
222
+ ### Spacing
223
+ - Base unit 8px; common values 4 / 8 / 12 / 16 / 20 / 24 / 32.
224
+ - Card gutter ~12–16px; section vertical gap ~32px.
225
+ - Page horizontal padding ~20px mobile, ~24px desktop.
226
+
227
+ ### Density
228
+ **Comfortable, companion-density.** The itinerary is meant to be glanceable — generous spacing around place cards, soft tinted info blocks, lots of rounded breathing room. Not a data-dense table; a friendly planning canvas.
229
+
230
+ ### Border Radius Scale
231
+ - Standard (12px): inputs, selected regions, snackbars
232
+ - Comfortable (20px): cards, info blocks, sheets
233
+ - Pill (36px): primary/secondary CTAs
234
+ - Pill (999px): chips
235
+
236
+ ## 6. Depth & Elevation
237
+
238
+ | Level | Treatment | Use |
239
+ |---|---|---|
240
+ | Flat | no shadow | Page bg, inline, cards at rest on bands |
241
+ | Subtle | `0 1px 3px rgba(0,0,0,0.04)` | Resting place cards |
242
+ | Hover/Active | `0 4px 12px rgba(0,0,0,0.08)` | Lifted card, floating add button |
243
+ | Floating | `0 6px 20px rgba(0,0,0,0.12)` | Map pins popover, sticky CTA |
244
+ | Modal | `0 8px 24px rgba(0,0,0,0.16)` | Sheets, dialogs |
245
+
246
+ Depth is gentle and soft-edged, matching the rounded geometry. The blue-tint family does as much separating work as shadows — a `#F1F7FF` block reads as "set apart" without any elevation. The signature lift is the floating add-to-itinerary button (pill, blue, soft shadow) that follows the planning flow.
247
+
248
+ ## 7. Do's and Don'ts
249
+
250
+ ### Do
251
+ - Use `#368FFF` for every interactive element — it's the single accent.
252
+ - Use pill radius (36px) on primary CTAs — the soft "easy" geometry is the brand.
253
+ - Use the blue-tint family (`#F1F7FF`, `rgba(54,143,255,0.07)`) to separate info/selected surfaces.
254
+ - Use 20px rounded cards — companion-app softness.
255
+ - Keep the itinerary glanceable with generous spacing.
256
+
257
+ ### Don't
258
+ - Don't introduce a second saturated accent; let blue own interaction.
259
+ - Don't use sharp or small radii on CTAs — pill is the brand signature.
260
+ - Don't pack the itinerary into a dense table; this is a friendly canvas.
261
+ - Don't fight the white canvas with heavy chrome; tints do the separating.
262
+ - Don't use a darker fintech-trust blue; Triple's blue is bright and cheerful.
263
+
264
+ ## 8. Responsive Behavior
265
+
266
+ ### Breakpoints
267
+ | Name | Width | Key Changes |
268
+ |---|---|---|
269
+ | Mobile (primary) | <768px | App-native: itinerary timeline + bottom tabs + map toggle; full-width pill CTA |
270
+ | Tablet | 768–1024px | Two-pane (itinerary + map), condensed nav |
271
+ | Desktop (web) | >1024px | Centered marketing column for intro; in-app web mirrors mobile in a column |
272
+
273
+ ### Touch & Media
274
+ - Pill CTAs are large (56px) — generous tap targets.
275
+ - Place cards swipeable; map pins tappable to popover.
276
+ - Sticky bottom add/save CTA with safe-area inset.
277
+
278
+ ### Image Behavior
279
+ - Place photos 4:3 or 1:1, `object-fit: cover`, rounded 20px (matching cards).
280
+ - Maps full-bleed with rounded container and blue pins.
281
+
282
+ ## 9. Agent Prompt Guide
283
+
284
+ ### Quick Color Reference
285
+ - Primary/active/link: Triple Blue `#368FFF` (pressed `#1A85E8`)
286
+ - Tints: card `#F1F7FF`; wash `rgba(54,143,255,0.07)`
287
+ - Canvas: White `#FFFFFF`; band `#F5F6F7`
288
+ - Text: `#1B1D1F` → `#3A3E41` → `#7E848A` → `#ADB1B5`
289
+ - Border: `#E8EAEC`; focus `#368FFF`
290
+ - Success `#22C55E`; highlight teal `#0ECEDB`; error `#FF3B30`
291
+
292
+ ### Example Component Prompts
293
+ - "Build a Triple primary CTA: bg `#368FFF`, white text 18px weight 700, 36px pill radius, 56px tall, padding 0 28px. Hover bg `#1A85E8`."
294
+ - "Create a Triple place card: white bg, 1px border `#E8EAEC`, 20px radius. Place photo top (4:3, cover, rounded 20px top). Below: name (16px weight 600 `#1B1D1F`), tip/meta (14px `#7E848A`), category chip (bg `#F5F6F7`, 999px). Selected: bg `rgba(54,143,255,0.07)`, 1px border `#368FFF`."
295
+ - "Design a Triple info/tip card: bg `#F1F7FF`, 20px radius, 20px padding, body 16px `#3A3E41`, optional blue `#368FFF` highlight."
296
+ - "Create a Triple soft button: bg `#F1F7FF`, text `#368FFF` 16px weight 600, 36px pill radius — low-emphasis action."
297
+
298
+ ### Iteration Guide
299
+ 1. One blue `#368FFF` owns all interaction.
300
+ 2. Pill radius (36px) on CTAs — the soft "easy" signature.
301
+ 3. Blue-tint family separates info/selected surfaces.
302
+ 4. 20px rounded cards; 16px base body.
303
+ 5. System-sans stack first (mobile-app native feel).
304
+ 6. Gentle soft-edged shadows; tints do separating work.
305
+ 7. Keep the itinerary glanceable and generous, never dense.
306
+
307
+ ---
308
+
309
+ ## 10. Voice & Tone
310
+
311
+ Triple speaks like a cheerful travel buddy who already knows your taste — warm, light, second-person, a little playful. The register is friendly Korean with `~요`/`~어요` endings (`일정에 추가했어요`, `이런 곳은 어때요?`), the companion voice, never stiff `~습니다` except in policy. The brand line — "나를 아는 여행 앱" (the app that knows me) — sets the tone: copy is personal and anticipatory, surfacing places that fit *you* and getting more useful as you plan together. Korean is primary; place names and stores in English.
312
+
313
+ | Context | Tone |
314
+ |---|---|
315
+ | CTAs | Light Korean verb form (`일정 살펴보기`, `함께 일정 만들기`, `추가하기`, `둘러보기`). |
316
+ | Recommendations | Personal, anticipatory (`이런 곳은 어때요?`, `나를 아는 여행 앱`). |
317
+ | Success toasts | Past-tense soft ending (`일정에 추가했어요`). No emoji on chrome. |
318
+ | Error messages | Blameless, specific, one action (`정보를 불러올 수 없어요. 잠시 후 다시 시도해 주세요`). Never `오류가 발생했습니다`. |
319
+ | Empty states | Warm + one action (`아직 일정이 없어요. 첫 여행을 만들어볼까요?`). |
320
+ | Collaboration | Inviting, plural-friendly (`함께 할수록, 더 풍성해지는 여행`). |
321
+ | Legal / booking | Formal `~합니다` register — the exception. |
322
+
323
+ **Forbidden phrases.** `오류가 발생했습니다` (generic error), `죄송하지만` on non-destructive failures, pressure CTAs (`지금 예약하세요!` → `예약하기`), superlatives on UI chrome, English-first strings on Korean surfaces, emoji on system toasts (emoji belongs to user trip notes).
324
+
325
+ **Voice samples.**
326
+ - `일정 살펴보기` — primary CTA, observed live on the `#368FFF` pill button. <!-- verified: triple.guide/intro via Playwright 2026-05-19 -->
327
+ - `나를 아는 여행 앱, 트리플` — brand line (page title `나를 아는 여행 앱, 트리플`). <!-- verified: page title via Playwright 2026-05-19 -->
328
+ - `함께 할수록, 더 풍성해지는 여행` — collaboration headline, observed live. <!-- verified: triple.guide/intro via WebFetch 2026-05-19 -->
329
+ - `이런 곳은 어때요?` — illustrative recommendation line, soft `~요`. <!-- illustrative: not verified verbatim -->
330
+
331
+ ## 11. Brand Narrative
332
+
333
+ Triple (트리플) is a Korean travel-planning app operated by **Triple Corporation**, which became part of the **Interpark Triple** group (and the broader Yanolja ecosystem after consolidation in the Korean travel-tech sector). Its founding insight was the opposite of the OTA marketplace: most travel products help you *book*, but few help you *plan* — and planning is where the anxiety and the joy of a trip actually live. Triple built an app around the **day-by-day itinerary**: pick a destination, get taste-fit recommendations, drag places onto a timeline, see them on a map, and plan together with the people you're traveling with. The tagline — "나를 아는 여행 앱" — promises a planner that learns your preferences and anticipates them. ([triple.guide](https://triple.guide/) — product; [triple.guide/intro](https://triple.guide/intro))
334
+
335
+ The design is the form of "companion, not marketplace." The cheerful sky-blue, the soft pill CTAs, the rounded tinted cards, and the light personal copy all push toward a feeling of *planning with a friend* rather than *transacting with a vendor*. Collaboration is first-class — "함께 할수록, 더 풍성해지는 여행" — so the app is built to be shared, and the warm, anticipatory tone scales naturally to a group planning a trip together.
336
+
337
+ What Triple refuses: the banner-heavy, discount-shouting density of booking OTAs (Triple is calm and glanceable), the impersonal inventory feed (every surface centers *your* taste and *your* plan), and the corporate-trust blue of fintech (Triple's blue is a clear-sky travel blue, optimistic and light). Triple is a travel buddy with a map — personal, collaborative, and gently delightful.
338
+
339
+ ## 12. Principles
340
+
341
+ 1. **Plan, don't just book.** The itinerary is the product; booking serves the plan. *UI implication:* The day-by-day timeline is primary; recommendations and bookings flow into it. Don't bury planning under a storefront.
342
+
343
+ 2. **One cheerful blue owns interaction.** `#368FFF` is everywhere a user acts; nothing else competes. *UI implication:* No second saturated accent. The blue-tint family extends it for info/selected states.
344
+
345
+ 3. **Soft is the signature.** Pill CTAs (36px) and 20px cards make planning feel easy and friendly. *UI implication:* Don't use sharp/small radii on actions. Roundness is brand identity, not decoration.
346
+
347
+ 4. **It knows you, so it speaks to you.** Copy is personal and anticipatory. *UI implication:* `이런 곳은 어때요?`, `나를 아는 여행 앱` — second person, taste-fit framing. Lead with the traveler.
348
+
349
+ 5. **Better together.** Collaboration is built in, and the tone scales to a group. *UI implication:* Invite, share, and co-edit affordances are first-class; plural-friendly copy (`함께`) throughout.
350
+
351
+ ## 13. Personas
352
+
353
+ *Personas are fictional archetypes informed by publicly described Triple user segments (Korean leisure travelers and trip-planners), not individual people.*
354
+
355
+ **유진 (Yu-jin), 28, Seoul.** Plans every trip in detail. Uses Triple to build a day-by-day itinerary before departure, dragging recommended places onto the timeline and checking them on the map. Loves that the app learns her taste (cafes, viewpoints) and pre-fills suggestions.
356
+
357
+ **민서 (Min-seo), 25, Suwon.** Travels with friends. Triple's collaboration is why she uses it — the whole group edits one shared itinerary, so nobody's left out of planning. Picks places by the friendly recommendation cards and group votes.
358
+
359
+ **태현 (Tae-hyun), 35, Daejeon.** Family trips. Wants a low-stress, glanceable plan — what to do each day, how far apart places are. Distrusts dense booking apps; Triple's calm, rounded, companion feel keeps him in it. Books hotels and tickets directly from the plan.
360
+
361
+ ## 14. States
362
+
363
+ | State | Treatment |
364
+ |---|---|
365
+ | **Empty (no itinerary)** | Warm line `#7E848A` (`아직 일정이 없어요`) + blue pill CTA (`첫 여행 만들기`). |
366
+ | **Empty (search no results)** | `#7E848A` caption (`검색 결과가 없어요. 다른 장소를 찾아보세요`) + suggested places. |
367
+ | **Loading (feed/itinerary first paint)** | Card-shaped skeletons at `#F5F6F7` matching layout, subtle shimmer. |
368
+ | **Loading (place detail)** | Inline ring spinner in `#368FFF`; content stays. |
369
+ | **Error (inline field)** | Input border `#FF3B30`, caption below in red, one actionable sentence. |
370
+ | **Error (toast)** | `#1B1D1F` bg, white 14px text, 3s dismiss, one sentence, no icon. |
371
+ | **Error (data load)** | Centered line `#1B1D1F` + retry pill `#368FFF`. Never blames the user. |
372
+ | **Success (added to itinerary)** | Snackbar `#1B1D1F` + white text (`일정에 추가했어요`), 3s dismiss; the place card gets a blue check. |
373
+ | **Success (trip saved/shared)** | Inline confirmation — green `#22C55E` check + share link affordance. |
374
+ | **Skeleton** | `#F5F6F7` blocks at exact card dimensions, 20px radius, ~1.2s shimmer. |
375
+ | **Disabled (button)** | Pill drops to `rgba(54,143,255,0.4)`, white text; geometry stable. |
376
+
377
+ ## 15. Motion & Easing
378
+
379
+ Triple's motion is light and friendly — gentle slides, soft pops, map-pin reveals. Playful at small moments, calm overall.
380
+
381
+ **Durations:**
382
+
383
+ | Token | Value | Use |
384
+ |---|---|---|
385
+ | `motion-instant` | 0ms | Toggle/checkbox, chip select |
386
+ | `motion-fast` | 150ms | Hover, press, add-to-itinerary check |
387
+ | `motion-standard` | 250ms | Card lift, sheet open, tab switch, map pin drop |
388
+ | `motion-slow` | 350ms | Page-to-detail, itinerary reorder settle |
389
+
390
+ **Easings:**
391
+
392
+ | Token | Curve | Use |
393
+ |---|---|---|
394
+ | `ease-standard` | `cubic-bezier(0.4, 0, 0.2, 1)` | Default — most motion |
395
+ | `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Sheets, modals, toasts, map pins appearing |
396
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
397
+ | `ease-spring` | `cubic-bezier(0.34, 1.56, 0.64, 1)` | Add-to-itinerary pop, map-pin drop |
398
+
399
+ **Spring stance.** Spring is licensed for the small delight moments that make planning fun — the add-to-itinerary pop and the map-pin drop. Navigation and sheets use standard easing. The companion should feel playful when you add a place, calm when you move around.
400
+
401
+ **Signature motions.**
402
+ 1. **Add to itinerary.** On tap, the place chip pops to ~1.15 and the item slides into the timeline over `motion-fast / ease-spring`, with a snackbar confirm. The signature delight.
403
+ 2. **Map-pin drop.** Pins drop onto the map with a brief overshoot `motion-standard / ease-spring`, sequenced ~40ms apart for multiple places.
404
+ 3. **Itinerary reorder.** Dragging a place reflows the timeline with `motion-standard / ease-standard`; the dropped item settles softly.
405
+ 4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, pops/drops/slides collapse to instant opacity; skeletons go static `#F5F6F7`. No exceptions.
406
+
407
+ <!--
408
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
409
+
410
+ Tier 1 (UI tokens, §1–9): triple.guide/intro live computed styles via
411
+ Playwright MCP, 2026-05-19. Confirmed: primary CTA `#368FFF` (rgb 54,143,255)
412
+ 36px pill radius 18px·700 56px tall, the most-frequent saturated color (39×);
413
+ info card `#F1F7FF` (rgb 241,247,255) 20px radius; selected wash
414
+ `rgba(54,143,255,0.07)` (17×); sky accent `#1AADF6` (rgb 26,173,246); highlight
415
+ teal `#0ECEDB` (rgb 14,206,219); white bg; system-sans font stack
416
+ `-apple-system, "system-ui", "Segoe UI", Helvetica, Arial, ...`. Page title
417
+ `나를 아는 여행 앱, 트리플`.
418
+
419
+ Brief `#2EA6FF` vs live `#368FFF` — live adopted (verified on CTAs/active).
420
+
421
+ Tier 2 (narrative): triple.guide / triple.guide/intro for product positioning
422
+ (itinerary-first, collaboration). Corporate ownership (Triple Corporation /
423
+ Interpark Triple / Yanolja ecosystem) is general industry knowledge from
424
+ Korean travel-tech consolidation; not re-verified against primary press in
425
+ this pass — treat ownership detail as background, not load-bearing.
426
+
427
+ Voice samples: `일정 살펴보기`, `함께 할수록, 더 풍성해지는 여행`, and
428
+ `나를 아는 여행 앱, 트리플` verified live (button / headline / page title).
429
+ `이런 곳은 어때요?`, `일정에 추가했어요`, empty/error copy are ILLUSTRATIVE
430
+ patterns following Triple's light `~요` companion register; not verbatim.
431
+
432
+ Personas (§13) are fictional archetypes. Any resemblance to specific users is
433
+ unintended.
434
+ -->