oh-my-design-cli 1.8.6 → 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 (36) hide show
  1. package/README.ja.md +4 -4
  2. package/README.ko.md +6 -6
  3. package/README.md +6 -6
  4. package/README.zh-TW.md +4 -4
  5. package/data/reference-fingerprints.json +722 -3
  6. package/package.json +1 -1
  7. package/web/references/airbridge/DESIGN.md +451 -0
  8. package/web/references/bigin/DESIGN.md +454 -0
  9. package/web/references/buzzvil/DESIGN.md +457 -0
  10. package/web/references/cafe24/DESIGN.md +472 -0
  11. package/web/references/codeit/DESIGN.md +470 -0
  12. package/web/references/datarize/DESIGN.md +451 -0
  13. package/web/references/elice/DESIGN.md +445 -0
  14. package/web/references/furiosaai/DESIGN.md +450 -0
  15. package/web/references/goorm/DESIGN.md +470 -0
  16. package/web/references/greencar/DESIGN.md +420 -0
  17. package/web/references/hackle/DESIGN.md +472 -0
  18. package/web/references/hwahae/DESIGN.md +453 -0
  19. package/web/references/kcd/DESIGN.md +432 -0
  20. package/web/references/kyobobook/DESIGN.md +445 -0
  21. package/web/references/lablup/DESIGN.md +474 -0
  22. package/web/references/lemonbase/DESIGN.md +452 -0
  23. package/web/references/makinarocks/DESIGN.md +442 -0
  24. package/web/references/moreh/DESIGN.md +437 -0
  25. package/web/references/neosapience/DESIGN.md +441 -0
  26. package/web/references/nota/DESIGN.md +451 -0
  27. package/web/references/portone/DESIGN.md +446 -0
  28. package/web/references/queenit/DESIGN.md +432 -0
  29. package/web/references/rebellions/DESIGN.md +449 -0
  30. package/web/references/returnzero/DESIGN.md +460 -0
  31. package/web/references/saramin/DESIGN.md +465 -0
  32. package/web/references/shiftee/DESIGN.md +468 -0
  33. package/web/references/solapi/DESIGN.md +483 -0
  34. package/web/references/supertone/DESIGN.md +413 -0
  35. package/web/references/vuno/DESIGN.md +413 -0
  36. package/web/references/weverse/DESIGN.md +437 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-design-cli",
3
- "version": "1.8.6",
3
+ "version": "1.8.7",
4
4
  "description": "Bootstrap oh-my-design skills + agents into your project. After install, talk to your AI coding agent in natural language — no other CLI commands.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,451 @@
1
+ ---
2
+ id: airbridge
3
+ name: Airbridge
4
+ display_name_kr: "에어브릿지"
5
+ country: KR
6
+ category: marketing
7
+ homepage: "https://www.airbridge.io"
8
+ primary_color: "#155dfc"
9
+ logo:
10
+ type: favicon
11
+ slug: "https://www.google.com/s2/favicons?domain=airbridge.io&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: "Dark-first martech site. primary = electric CTA blue (#155dfc); a lighter link blue (#0970ff) carries inline links on light sections. Page emits lab()/oklab() colors — converted to hex via canvas getImageData during live inspect."
19
+ colors:
20
+ primary: "#155dfc"
21
+ primary-link: "#0970ff"
22
+ ink: "#fafafa"
23
+ white: "#ffffff"
24
+ ink-dark: "#020202"
25
+ muted: "#98989f"
26
+ canvas: "#0a0a0c"
27
+ surface-dark: "#18181b"
28
+ surface-light: "#efefef"
29
+ accent-mint: "#7eedb8"
30
+ typography:
31
+ family: { sans: "Pretendard Variable" }
32
+ display-hero: { size: 72, weight: 600, lineHeight: 1.0, tracking: -1.08, use: "Hero headline, gradient text-fill" }
33
+ section: { size: 48, weight: 700, lineHeight: 1.33, tracking: -0.72, use: "Section titles" }
34
+ feature: { size: 26, weight: 700, lineHeight: 1.54, tracking: -0.39, use: "Feature/tab headings" }
35
+ card-title: { size: 18, weight: 700, lineHeight: 1.5, tracking: -0.27, use: "Card / plan titles" }
36
+ eyebrow: { size: 14, weight: 700, lineHeight: 1.43, use: "Section eyebrow label, muted" }
37
+ body: { size: 16, weight: 400, lineHeight: 1.5, use: "Standard reading text" }
38
+ cta: { size: 15, weight: 500, lineHeight: 1.0, use: "Primary CTA label" }
39
+ nav: { size: 14, weight: 500, lineHeight: 1.0, use: "Nav links, buttons, inline links" }
40
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 28, xxl: 32, section: 64 }
41
+ rounded: { sm: 8, md: 10, lg: 16, full: 9999 }
42
+ shadow:
43
+ ring: "rgba(21,93,252,0.15) 0px 0px 0px 1px"
44
+ components:
45
+ button-primary: { type: button, bg: "#155dfc", fg: "#fafafa", radius: "8px", height: "48px", padding: "0 16px", font: "15px / 500 Pretendard", use: "Primary CTA 데모 신청하기, soft blue focus ring" }
46
+ button-ghost: { type: button, bg: "rgba(255,255,255,0.04)", fg: "#fafafa", border: "1px solid rgba(255,255,255,0.12)", radius: "8px", height: "48px", padding: "0 28px", font: "15px / 500 Pretendard", use: "Secondary CTA 요금 확인하기 on dark" }
47
+ nav-link: { type: tab, fg: "#ffffff", radius: "10px", padding: "8px 12px", font: "14px / 500 Pretendard", active: "text #ffffff on translucent white wash", disabled: "#98989f label", use: "Top nav item" }
48
+ segmented-tab: { type: tab, radius: "10px", padding: "4px 24px", font: "14px / 500 Pretendard", active: "text #fafafa + bg rgba(255,255,255,0.04) + 1px rgba(255,255,255,0.12) border", disabled: "#98989f label", use: "Pricing plan toggle (MMP / 딥링크)" }
49
+ card-dark: { type: card, bg: "#18181b", fg: "#fafafa", radius: "16px", use: "Feature card on near-black canvas" }
50
+ card-light: { type: card, bg: "#ffffff", fg: "#020202", radius: "16px", use: "Light-section feature / comparison card" }
51
+ link-inline: { type: button, fg: "#0970ff", font: "14px / 500 Pretendard", use: "자세히 보기 inline text link on light sections" }
52
+ faq-row: { type: listItem, fg: "#fafafa", font: "18px / 500 Pretendard", padding: "24px 0", use: "FAQ accordion row on dark" }
53
+ components_harvested: true
54
+ ---
55
+
56
+ # Design System Inspiration of Airbridge
57
+
58
+ ## 1. Visual Theme & Atmosphere
59
+
60
+ Airbridge (에어브릿지), the cross-platform mobile measurement partner built by Seoul martech company AB180, presents itself as a precision instrument for marketers — a dark, data-room aesthetic that signals analytical seriousness rather than playful consumer warmth. The marketing site opens on a near-black canvas (`#0a0a0c`) with near-white text (`#fafafa`), the contemporary "control panel" register shared by Linear, Vercel, and the new generation of developer-adjacent SaaS. A single saturated electric blue (`#155dfc`) carries every primary call-to-action ("데모 신청하기"), trained to read as the one decisive action against the dark field. As the page descends into pricing and comparison sections it inverts to light grey (`#efefef`) and white surfaces with near-black headings (`#020202`), where a slightly lighter link blue (`#0970ff`) takes over inline links ("자세히 보기"). The result is a deliberate light/dark cadence: the dark hero asserts authority, the light sections deliver the legible commercial detail.
61
+
62
+ The typographic personality is unmistakably Korean-modern: everything is set in **Pretendard Variable**, the de-facto Korean product font, with no display/body font split — hierarchy comes entirely from size and weight. The hero headline runs at a commanding 72px / weight 600 with tight `-1.08px` tracking and a gradient text-fill (its computed color resolves transparent because the fill is clipped from a background gradient), while section titles land at 48px / weight 700 / `-0.72px`. Pure white (`#ffffff`) appears on nav chrome and maximum-contrast labels, and a muted cool grey (`#98989f`) handles eyebrows and secondary metadata. The system tracks headlines tight and keeps body text at a calm 16px / 1.5 — dense enough for an information-rich analytics narrative, generous enough for hangul legibility.
63
+
64
+ What distinguishes Airbridge from generic dark SaaS is its restraint and its one warm note. Depth is communicated through flat tinted surfaces — a dark zinc surface (`#18181b`) for feature cards on the near-black canvas — and barely-there translucent-white washes rather than heavy drop shadows; the only real shadow is a soft blue focus ring (`rgba(21,93,252,0.15)`) around the primary button. Against the otherwise blue-and-neutral palette, a single mint-green accent (`#7eedb8`) appears in iconography and data highlights, the lone organic hue in an engineered system. Geometry is consistently soft-square: 8px on buttons, 10px on nav and segmented controls, 16px on cards — modern, calm, never pill-shaped.
65
+
66
+ **Key Characteristics:**
67
+ - Dark-first canvas (`#0a0a0c`) with near-white text (`#fafafa`) — analytical "control panel" register
68
+ - Single electric blue (`#155dfc`) reserved for the primary CTA — the one decisive action color
69
+ - Lighter link blue (`#0970ff`) for inline text links on the light commercial sections
70
+ - Pretendard Variable everywhere — hierarchy by size/weight, no display/body font split
71
+ - Hero at 72px / weight 600 / `-1.08px` with gradient text-fill; sections at 48px / 700
72
+ - Light/dark cadence — near-black hero authority → light grey (`#efefef`) / white commercial detail with `#020202` headings
73
+ - Flat depth: dark zinc surfaces (`#18181b`) and translucent-white washes instead of heavy shadows
74
+ - One warm accent — mint green (`#7eedb8`) — as the lone organic hue
75
+ - Soft-square geometry — 8px buttons, 10px nav/segmented, 16px cards; pure white (`#ffffff`) on nav chrome
76
+ - Muted cool grey (`#98989f`) for eyebrows and secondary metadata
77
+
78
+ ## 2. Color Palette & Roles
79
+
80
+ ### Primary
81
+ - **Airbridge Blue** (`#155dfc`): Primary brand color and CTA background. The saturated electric blue on "데모 신청하기" — the system's single "action" color against the dark canvas.
82
+ - **Link Blue** (`#0970ff`): A slightly lighter, brighter blue used for inline text links ("자세히 보기") on the light commercial sections, where the darker primary would be heavy.
83
+ - **Near-White Ink** (`#fafafa`): Primary text and CTA-label color on the dark canvas. A warm off-white that softens the contrast against near-black.
84
+
85
+ ### Neutral & Surface
86
+ - **Pure White** (`#ffffff`): Nav chrome text, maximum-contrast labels, and the background of light-section feature/comparison cards.
87
+ - **Ink Dark** (`#020202`): Near-black heading and body color on the light (`#efefef` / white) sections — denser than the dark canvas itself, reserved for light-mode type.
88
+ - **Canvas Black** (`#0a0a0c`): The near-black page background of the hero and dark feature sections.
89
+ - **Surface Dark** (`#18181b`): Dark zinc surface for feature cards and panels sitting on the near-black canvas.
90
+ - **Surface Light** (`#efefef`): Light grey background for the pricing/comparison commercial sections.
91
+ - **Muted Grey** (`#98989f`): Eyebrow labels, inactive tabs, secondary metadata, and lowest-emphasis text.
92
+
93
+ ### Accent
94
+ - **Mint** (`#7eedb8`): The single warm/organic accent — appears in iconography and data highlights, used sparingly against the blue-and-neutral system.
95
+
96
+ ## 3. Typography Rules
97
+
98
+ ### Font Family
99
+ - **All text**: `Pretendard Variable` (with `Pretendard` fallback) — the Korean product-font standard, used for every role from hero to caption. There is no separate display face; weight and size carry the hierarchy.
100
+
101
+ ### Hierarchy
102
+
103
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
104
+ |------|------|------|--------|-------------|----------------|-------|
105
+ | Hero | Pretendard Variable | 72px (4.50rem) | 600 | 1.0 | -1.08px | Gradient text-fill, clipped from background |
106
+ | Section | Pretendard Variable | 48px (3.00rem) | 700 | 1.33 | -0.72px | Section titles |
107
+ | Feature | Pretendard Variable | 26px (1.63rem) | 700 | 1.54 | -0.39px | Feature / tab headings |
108
+ | Card Title | Pretendard Variable | 18px (1.13rem) | 700 | 1.5 | -0.27px | Card / plan titles |
109
+ | Eyebrow | Pretendard Variable | 14px (0.88rem) | 700 | 1.43 | normal | Section eyebrow label, `#98989f` |
110
+ | Body | Pretendard Variable | 16px (1.00rem) | 400 | 1.5 (24px) | normal | Standard reading text |
111
+ | CTA | Pretendard Variable | 15px (0.94rem) | 500 | 1.0 | normal | Primary CTA label |
112
+ | Nav / Link | Pretendard Variable | 14px (0.88rem) | 500 | 1.0 | normal | Nav links, buttons, inline links |
113
+
114
+ ### Principles
115
+ - **One font, weight-driven hierarchy**: Pretendard Variable carries everything; the jump from weight 400 body to weight 700 headings (and 600 on the hero) is the primary hierarchy signal, not a second typeface.
116
+ - **Tight tracking scales with size**: -1.08px at 72px, -0.72px at 48px, -0.39px at 26px, -0.27px at 18px. Headlines compress; body and UI text stay at normal tracking.
117
+ - **Gradient hero**: the 72px hero headline is filled from a clipped background gradient (its text color resolves transparent), the single decorative typographic moment in an otherwise flat system.
118
+ - **Hangul-tuned body**: body sits at 16px / 1.5 line-height — generous vertical rhythm for dense, data-heavy marketing copy.
119
+
120
+ ## 4. Component Stylings
121
+
122
+ ### Buttons
123
+
124
+ **Primary CTA**
125
+ - Background: `#155dfc`
126
+ - Text: `#fafafa`
127
+ - Radius: 8px
128
+ - Padding: 0px 16px
129
+ - Height: 48px
130
+ - Font: 15px Pretendard weight 500
131
+ - Shadow: soft blue focus ring `rgba(21,93,252,0.15) 0px 0px 0px 1px`
132
+ - Use: Primary call-to-action ("데모 신청하기") — the system's single action color
133
+
134
+ **Ghost / Outline (on dark)**
135
+ - Background: `rgba(255,255,255,0.04)`
136
+ - Text: `#fafafa`
137
+ - Border: 1px solid `rgba(255,255,255,0.12)`
138
+ - Radius: 8px
139
+ - Padding: 0px 28px
140
+ - Height: 48px
141
+ - Font: 15px Pretendard weight 500
142
+ - Use: Secondary CTA on the dark canvas ("요금 확인하기", "자세히 보기")
143
+
144
+ **Compact Primary**
145
+ - Background: `#155dfc`
146
+ - Text: `#fafafa`
147
+ - Radius: 8px
148
+ - Padding: 8px 16px
149
+ - Height: 36px
150
+ - Font: 14px Pretendard weight 500
151
+ - Use: In-card / nav-corner primary action
152
+
153
+ ### Inputs & Forms
154
+
155
+ **Default (on dark)**
156
+ - Background: `rgba(255,255,255,0.04)`
157
+ - Border: 1px solid `rgba(255,255,255,0.12)`
158
+ - Radius: 8px
159
+ - Text: `#fafafa`
160
+ - Placeholder: `#98989f`
161
+ - Use: Form field on the dark canvas (matches the ghost-button surface language)
162
+
163
+ ### Cards & Containers
164
+
165
+ **Dark Feature Card**
166
+ - Background: `#18181b`
167
+ - Text: `#fafafa`
168
+ - Radius: 16px
169
+ - Use: Feature/solution card sitting on the near-black canvas
170
+
171
+ **Light Comparison Card**
172
+ - Background: `#ffffff`
173
+ - Text: `#020202`
174
+ - Radius: 16px
175
+ - Use: Pricing / comparison card on the light grey (`#efefef`) section
176
+
177
+ ### Badges
178
+
179
+ **Mint Highlight**
180
+ - Background: `rgba(126,237,184,0.04)`
181
+ - Text: `#7eedb8`
182
+ - Radius: 8px
183
+ - Use: Data-highlight chip / positive metric accent — the lone warm hue
184
+
185
+ ### Tabs
186
+
187
+ **Segmented Toggle**
188
+ - Active: text `#fafafa` on `rgba(255,255,255,0.04)` with 1px `rgba(255,255,255,0.12)` border
189
+ - Inactive: `#98989f` label, transparent background
190
+ - Radius: 10px
191
+ - Padding: 4px 24px
192
+ - Font: 14px Pretendard weight 500
193
+ - Use: Pricing plan toggle ("MMP 플랜" / "딥링크 플랜")
194
+
195
+ **Nav Item**
196
+ - Text: `#ffffff`
197
+ - Radius: 10px (hover wash)
198
+ - Padding: 8px 12px
199
+ - Font: 14px Pretendard weight 500
200
+ - Active: translucent white wash behind the label
201
+ - Inactive: `#98989f` for de-emphasized items
202
+ - Use: Top navigation ("기능 소개", "솔루션", "인사이트", "가격")
203
+
204
+ ### Inline Links
205
+ - Text: `#0970ff`
206
+ - Font: 14px Pretendard weight 500
207
+ - Padding: 16px 0px 0px (top-spaced from card body)
208
+ - Use: "자세히 보기" inline text links on light sections
209
+
210
+ ### FAQ Accordion
211
+ - Text: `#fafafa`
212
+ - Font: 18px Pretendard weight 500
213
+ - Padding: 24px 0px (vertical)
214
+ - Use: Pricing-page FAQ rows ("MAU(월간 활성 유저)란 무엇인가요?")
215
+
216
+ ---
217
+
218
+ **Verified:** 2026-06-26 (omd:add-reference CREATE — Tier 1 live inspect, 2 surfaces)
219
+ **Tier 1 sources:** https://www.airbridge.io/ko, https://www.airbridge.io/ko/pricing, https://engineering.ab180.co, https://help.airbridge.io/en
220
+ **Tier 2 sources:** getdesign.md/airbridge — not listed (KR brand); styles.refero.design — not listed (KR brand)
221
+ **Conflicts unresolved:** none
222
+
223
+ ## 5. Layout Principles
224
+
225
+ ### Spacing System
226
+ - Base unit: 8px (nav/button padding lands on 8px and 12px multiples; section rhythm at 64px)
227
+ - Scale: 4px, 8px, 12px, 16px, 24px, 28px, 32px, 64px
228
+ - Notable: ghost-CTA horizontal padding lands at 28px, giving the secondary action a wider, calmer hit area than the 16px primary
229
+
230
+ ### Grid & Container
231
+ - Centered single-column hero anchored by the 72px gradient headline and a primary/secondary CTA pair
232
+ - Feature sections use repeating dark cards (`#18181b`) in 2-3 column grids on the near-black canvas
233
+ - Pricing/comparison sections invert to a light grey (`#efefef`) band with white comparison cards
234
+ - A persistent dark sticky nav with translucent-white hover washes on items
235
+
236
+ ### Whitespace Philosophy
237
+ - **Breathing room over density**: despite a data-heavy product, the marketing surface is airy — generous vertical rhythm (64px section spacing) between bands.
238
+ - **Light/dark cadence**: near-black hero/feature bands alternate with light grey commercial bands, creating a deliberate authority → legibility rhythm.
239
+ - **Flat segmentation**: sections separate by background tone (canvas `#0a0a0c` vs surface `#18181b` vs light `#efefef`) and translucent washes, not by heavy borders or shadows.
240
+
241
+ ### Border Radius Scale
242
+ - Small (8px): buttons, inputs
243
+ - Medium (10px): nav items, segmented controls
244
+ - Large (16px): feature and comparison cards — the workhorse
245
+ - Full (9999px): rare, reserved for avatars/dots
246
+
247
+ ## 6. Depth & Elevation
248
+
249
+ | Level | Treatment | Use |
250
+ |-------|-----------|-----|
251
+ | Flat (Level 0) | No shadow | Page background, headings, most surfaces |
252
+ | Tone (Level 1) | Surface shift (`#18181b` on `#0a0a0c`) | Card/panel separation without elevation |
253
+ | Wash (Level 2) | `rgba(255,255,255,0.04)` fill + `rgba(255,255,255,0.12)` hairline | Ghost buttons, inputs, active segmented tab |
254
+ | Ring (Level 3) | `rgba(21,93,252,0.15) 0px 0px 0px 1px` | Primary CTA focus/emphasis ring |
255
+
256
+ **Shadow Philosophy**: Airbridge is a near-shadowless dark system. Live inspection found `box-shadow: none` across nav, headings, and feature cards; the only real elevation cue is a soft blue ring (`rgba(21,93,252,0.15)`) around the primary CTA. Depth and grouping are communicated through flat tonal layering — a dark zinc surface (`#18181b`) lifted off the near-black canvas (`#0a0a0c`) — and barely-there translucent-white washes. This keeps the analytics-product chrome feeling clean, fast, and modern, reaching for color (blue `#155dfc`) or tone, never heavy drop shadows, when emphasis is needed.
257
+
258
+ ## 7. Do's and Don'ts
259
+
260
+ ### Do
261
+ - Use the near-black canvas (`#0a0a0c`) with near-white text (`#fafafa`) for the primary dark register
262
+ - Reserve electric blue (`#155dfc`) for the primary CTA — keep it the single "action" color
263
+ - Use the lighter link blue (`#0970ff`) for inline text links on light sections
264
+ - Set everything in Pretendard Variable; drive hierarchy with weight (400 body → 700 heading)
265
+ - Apply tight negative tracking on headlines (-1.08px at 72px, -0.72px at 48px)
266
+ - Separate surfaces with flat tone (`#18181b` on `#0a0a0c`) and translucent-white washes, not shadows
267
+ - Keep geometry soft-square — 8px buttons, 10px nav/segmented, 16px cards
268
+ - Use the mint accent (`#7eedb8`) sparingly, only for data highlights
269
+
270
+ ### Don't
271
+ - Use drop shadows for elevation — Airbridge is a flat, near-shadowless system (reach for the blue ring or tone)
272
+ - Spread the electric blue across many elements — it dilutes the single-action signal
273
+ - Use pure black for light-mode text — reserve `#020202` near-black for the light sections
274
+ - Use pill/full-round geometry on buttons or cards — the system is soft-square (8-16px)
275
+ - Introduce a second saturated accent — blue is primary; mint is the only warm note, used minimally
276
+ - Set headlines in a light weight — display is weight 600-700
277
+ - Mix in a different body font — Pretendard Variable carries every role
278
+ - Use positive letter-spacing at display sizes — Airbridge tracks tight
279
+
280
+ ## 8. Responsive Behavior
281
+
282
+ ### Breakpoints
283
+ | Name | Width | Key Changes |
284
+ |------|-------|-------------|
285
+ | Mobile | <640px | Single column, hero compresses from 72px, cards stack |
286
+ | Tablet | 640-1024px | 2-up feature cards, moderate padding |
287
+ | Desktop | 1024-1440px | Full layout, centered hero, 2-3 column feature/comparison grids |
288
+
289
+ ### Touch Targets
290
+ - Primary CTA at 48px height — an unmistakable, comfortable target
291
+ - Ghost CTA at 48px height with 28px horizontal padding
292
+ - Nav items at 36px height with 8px 12px padding within the sticky header
293
+ - Segmented-toggle items at 29px height with 24px horizontal padding
294
+
295
+ ### Collapsing Strategy
296
+ - Hero: 72px gradient headline scales down on mobile, weight 600 maintained
297
+ - Feature cards: 3-column → 2-column → stacked single column
298
+ - Light/dark bands maintain full-width treatment across breakpoints
299
+ - Pricing comparison: side-by-side cards → stacked on narrow viewports
300
+
301
+ ### Image Behavior
302
+ - Dashboard/product screenshots sit on the dark canvas with no shadow at any size, consistent with the flat system
303
+ - Cards maintain 16px radius across breakpoints
304
+
305
+ ## 9. Agent Prompt Guide
306
+
307
+ ### Quick Color Reference
308
+ - Primary CTA: Airbridge Blue (`#155dfc`)
309
+ - Inline link (light): Link Blue (`#0970ff`)
310
+ - Text on dark: Near-White Ink (`#fafafa`)
311
+ - Nav chrome / max contrast: Pure White (`#ffffff`)
312
+ - Text on light: Ink Dark (`#020202`)
313
+ - Page background (dark): Canvas Black (`#0a0a0c`)
314
+ - Dark card surface: Surface Dark (`#18181b`)
315
+ - Light section: Surface Light (`#efefef`)
316
+ - Secondary / eyebrow text: Muted Grey (`#98989f`)
317
+ - Data accent: Mint (`#7eedb8`)
318
+
319
+ ### Example Component Prompts
320
+ - "Create a dark hero: #0a0a0c background. Headline at 72px Pretendard Variable weight 600, letter-spacing -1.08px, gradient text-fill. Below it a primary CTA (#155dfc background, #fafafa text, 8px radius, 0 16px padding, 48px height, 15px/500) and a ghost CTA (rgba(255,255,255,0.04) background, 1px solid rgba(255,255,255,0.12) border, #fafafa text, 8px radius)."
321
+ - "Design a dark feature card: #18181b background, 16px radius, no shadow. Title 26px Pretendard Variable weight 700, letter-spacing -0.39px, #fafafa. Body 16px weight 400, line-height 1.5, #98989f."
322
+ - "Build a light comparison section: #efefef background. Section title 48px Pretendard weight 700, letter-spacing -0.72px, #020202. White cards (#ffffff, 16px radius) with an inline link '자세히 보기' in #0970ff, 14px/500."
323
+ - "Create a pricing segmented toggle: active tab text #fafafa on rgba(255,255,255,0.04) with 1px rgba(255,255,255,0.12) border, inactive tab #98989f, 10px radius, 4px 24px padding."
324
+
325
+ ### Iteration Guide
326
+ 1. Pretendard Variable for everything; weight 400 body → 700 heading is the hierarchy
327
+ 2. Electric blue (`#155dfc`) is the single action color — don't spread it
328
+ 3. No shadows — separate with tone (`#18181b` on `#0a0a0c`) and translucent washes; the only ring is blue
329
+ 4. Soft-square geometry — 8px buttons, 10px nav/segmented, 16px cards
330
+ 5. Text is `#fafafa` on dark, `#020202` on light — never pure black on the dark canvas
331
+ 6. Negative tracking on headlines, normal on body
332
+ 7. Mint (`#7eedb8`) only for data highlights, used sparingly
333
+
334
+ ---
335
+
336
+ ## 10. Voice & Tone
337
+
338
+ Airbridge's voice is **precise, evidence-driven, and quietly confident** — a measurement product that speaks to marketers as analysts, not as targets for hype. The hero line "광고 성과 측정, AI로 완성하세요" ("Complete your ad performance measurement with AI") sets the register: capability stated plainly, outcome-framed, no superlatives. Copy consistently frames the value as removing uncertainty — "감이 아닌 데이터를 근거로 의사결정하세요" ("Make decisions based on data, not gut feel") — positioning the product as the antidote to guesswork.
339
+
340
+ | Context | Tone |
341
+ |---|---|
342
+ | Hero headlines | Outcome-framed, declarative. "광고 성과 측정, AI로 완성하세요." Capable, never hype. |
343
+ | Feature labels | Plain and technical. "통합 성과측정", "웹투앱 어트리뷰션", "유저 생애 가치 예측". |
344
+ | CTAs | Direct, low-pressure. "데모 신청하기", "요금 확인하기", "자세히 보기". |
345
+ | Value claims | Evidence-first, scope-stated. "글로벌 스탠다드에 부합하는 MMP". |
346
+ | Pricing / FAQ | Calm and explanatory; decodes jargon. "MAU(월간 활성 유저)란 무엇인가요?". |
347
+
348
+ **Voice samples (verbatim from live surfaces):**
349
+ - "광고 성과 측정, AI로 완성하세요" — hero headline (outcome-framed capability). *(verified live 2026-06-26, airbridge.io/ko)*
350
+ - "감이 아닌 데이터를 근거로 의사결정하세요" — section heading (anti-guesswork positioning). *(verified live 2026-06-26)*
351
+ - "글로벌 스탠다드에 부합하는 MMP" — eyebrow claim (scope/credibility). *(verified live 2026-06-26)*
352
+ - "크로스 플랫폼 성과 측정도 AI로 완성하세요 | Airbridge" — page title meta. *(verified live 2026-06-26)*
353
+
354
+ **Forbidden register**: hype superlatives, fear-based marketing urgency, undefined martech jargon left unexplained, exclamation-heavy promotion. Numbers and scope claims are stated concretely (events, devices, RPM) rather than vaguely.
355
+
356
+ ## 11. Brand Narrative
357
+
358
+ Airbridge (에어브릿지) is the flagship product of **AB180 (에이비일팔공)**, a Seoul-based martech/adtech company **founded in 2015** and led by co-founders **남성필 (Sungpil Nam)** and **정훈재 (Hunjae Jung)**. AB180's founding premise addressed a structural problem for app marketers: in a fragmented, cross-platform world (Android, iOS, SKAdNetwork, web, PC, console), there was no trustworthy, unified way to measure which marketing actually drove installs and revenue — leaving teams to decide "by gut feel."
359
+
360
+ Airbridge answers that as a **Mobile Measurement Partner (MMP)**: cross-platform attribution, deep-link management, ad-fraud prevention, and AI-driven LTV/funnel analysis in one platform. The system operates at serious scale — AB180's own engineering blog states it processes "10억 개 이상의 이벤트 데이터, 1억 대 이상의 디바이스, 100만 이상의 RPM" (1B+ events, 100M+ devices, 1M+ RPM in real time). The product line has since extended to Airflux (an AI monetization agent) and Airbridge DeepLink, and the company reports serving 600+ clients across 30+ countries (Nexon, Samsung Securities, Standard Chartered, KFC among them).
361
+
362
+ What Airbridge refuses, visible in its design: the loud, illustration-heavy consumer-marketing chrome, and the hand-wavy "growth hacking" hype of lesser martech. What it embraces: a dark, instrument-like canvas; a single decisive blue; Pretendard-set type that states capability plainly; and copy that replaces gut feel with evidence — "감이 아닌 데이터를 근거로." The brand reads as a precision tool built by engineers for marketers who think like analysts.
363
+
364
+ ## 12. Principles
365
+
366
+ 1. **Evidence over gut feel.** The product exists to replace guesswork with measurement. *UI implication:* lead with concrete data, scope, and numbers; the dark "control panel" canvas frames the product as an instrument, not a billboard.
367
+ 2. **One decisive action.** Electric blue (`#155dfc`) means "do this." *UI implication:* reserve the saturated blue exclusively for the primary CTA so the next step is never ambiguous against the dark field.
368
+ 3. **Plain capability, no hype.** Claims are stated, not inflated. *UI implication:* outcome-framed headlines and technical feature labels; never superlatives or urgency.
369
+ 4. **Flat and fast.** Modern clarity beats decorative depth. *UI implication:* no drop shadows; separate with tone and translucent washes; keep the chrome light and quick to scan.
370
+ 5. **Authority then legibility.** *UI implication:* a dark hero asserts seriousness; light commercial bands deliver legible pricing/comparison detail — a deliberate light/dark cadence.
371
+
372
+ ## 13. Personas
373
+
374
+ *Personas below are fictional archetypes informed by publicly observable Airbridge user segments (Korean app marketers, growth/performance teams, mobile analysts at game and commerce companies), not individual people.*
375
+
376
+ **박지훈, 33, 서울.** Performance marketing lead at a mobile game studio. Lives in attribution dashboards and needs cross-platform truth across iOS SKAN and Android. Chose Airbridge because it unified channels he previously stitched together by hand, letting him decide on data rather than gut feel.
377
+
378
+ **이서연, 29, 판교.** Growth analyst at a commerce app. Uses the funnel and LTV-prediction features to defend budget allocation to finance. Values that the product states scope and numbers plainly instead of selling her on hype.
379
+
380
+ **Marcus Lee, 38, Singapore.** Regional UA manager at a multinational app company evaluating MMPs. Compares Airbridge against AppsFlyer and Adjust; trusts the "글로벌 스탠다드에 부합하는 MMP" positioning because the comparison pages state mechanics rather than marketing claims.
381
+
382
+ ## 14. States
383
+
384
+ | State | Treatment |
385
+ |---|---|
386
+ | **Empty (no measurement data yet)** | Near-black canvas (`#0a0a0c`). Single near-white (`#fafafa`) line explaining no events have been received, with one blue (`#155dfc`) CTA to connect a source. No illustration clutter. |
387
+ | **Empty (report, zero rows)** | Muted Grey (`#98989f`) single line stating nothing matches the current filter; filter summary stays visible so scope can be adjusted. Honest, never "No data found". |
388
+ | **Loading (dashboard first paint)** | Skeleton blocks at final dimensions in dark zinc (`#18181b`), flat pulse — no shadow shimmer, consistent with the shadowless system. |
389
+ | **Loading (in-place refresh)** | Subtle blue (`#155dfc`) progress indicator; previous values stay visible. Never blank the panel during refresh. |
390
+ | **Error (data fetch failed)** | Inline message in near-white (`#fafafa`) with a plain-language explanation and a retry. No generic "오류가 발생했습니다" alone — states what to do next. |
391
+ | **Error (form validation)** | Field-level message below the input describing what is valid, not just "필수". |
392
+ | **Success (source connected)** | Brief inline confirmation in calm tone; next-step detail linked immediately below. No celebratory emoji. |
393
+ | **Skeleton** | Dark zinc (`#18181b`) blocks at final dimensions, 16px radius, flat pulse. |
394
+ | **Disabled** | Muted Grey (`#98989f`) label on reduced-opacity surface; blue actions fade rather than turn grey to preserve the brand action read. |
395
+
396
+ ## 15. Motion & Easing
397
+
398
+ **Durations**:
399
+
400
+ | Token | Value | Use |
401
+ |---|---|---|
402
+ | `motion-fast` | 120ms | Hover, nav wash, focus ring |
403
+ | `motion-standard` | 200ms | Card/section reveal, segmented-tab switch, accordion |
404
+ | `motion-slow` | 320ms | Page-level transitions, hero reveal |
405
+
406
+ **Easings**:
407
+
408
+ | Token | Curve | Use |
409
+ |---|---|---|
410
+ | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Arriving — cards, panels, accordion open |
411
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals, accordion close |
412
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Two-way transitions, tab switches |
413
+
414
+ **Motion rules**: Motion is functional and restrained — consistent with the flat, instrument-like aesthetic. Nav items respond to hover with a quick translucent-white wash; feature cards and report rows fade in from below at `motion-standard / ease-enter`; the pricing segmented toggle slides its active fill at `motion-standard / ease-standard`. No bounce or spring — a measurement product signals steadiness and precision, not playfulness. Under `prefers-reduced-motion: reduce`, all transitions collapse to instant; the product remains fully functional.
415
+
416
+ <!--
417
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
418
+
419
+ Tier 1 live inspect (2026-06-26) via playwright getComputedStyle on
420
+ https://www.airbridge.io/ko and https://www.airbridge.io/ko/pricing. The site
421
+ emits lab()/oklab() color values; these were converted to hex in-page via
422
+ canvas getImageData during the inspect (documented in .verification.md).
423
+ - Hero H1 "광고 성과 측정, AI로 완성하세요" — Pretendard Variable 72px / weight 600 / -1.08px / gradient text-fill (computed color transparent)
424
+ - Section H2 "사각지대 없는 데이터로 성과를 측정하세요" / "감이 아닌 데이터를 근거로 의사결정하세요" — 48px / 700 / -0.72px / color #fafafa
425
+ - Primary CTA "데모 신청하기" — bg #155dfc / text #fafafa / radius 8px / 48px height / soft blue focus ring
426
+ - Ghost CTA "요금 확인하기" — rgba(255,255,255,0.04) bg / 1px rgba(255,255,255,0.12) border / radius 8px
427
+ - Canvas bg #0a0a0c; dark feature card surface #18181b; light section #efefef with #020202 headings
428
+ - Inline link "자세히 보기" — color #0970ff; mint accent #7eedb8 in data highlights
429
+ - Page title meta: "크로스 플랫폼 성과 측정도 AI로 완성하세요 | Airbridge"
430
+
431
+ Token-level claims (§1-9) are sourced from this live inspection.
432
+
433
+ Voice samples (§10) are verbatim from the live homepage and pricing page (hero H1,
434
+ section H2, eyebrow, page title meta).
435
+
436
+ Brand narrative (§11): AB180 (에이비일팔공), founded 2015, Seoul; co-founders
437
+ 남성필 (Sungpil Nam) and 정훈재 (Hunjae Jung); Airbridge = MMP. Scale figures
438
+ ("10억 개 이상의 이벤트 데이터, 1억 대 이상의 디바이스, 100만 이상의 RPM") quoted
439
+ from AB180's own engineering blog (engineering.ab180.co). Client list and
440
+ 600+/30+ figures from public company sources (ab180.co); these are widely
441
+ documented public facts, not directly quoted Airbridge statements beyond the
442
+ engineering-blog scale figures.
443
+
444
+ Personas (§13) are fictional archetypes informed by publicly observable Airbridge
445
+ user segments (Korean app marketers, growth analysts, regional UA managers).
446
+ Names are illustrative; they do not refer to real people.
447
+
448
+ Interpretive claims (e.g., "evidence over gut feel", "instrument-like canvas as a
449
+ rejection of growth-hacking hype") are editorial readings connecting Airbridge's
450
+ observed design and copy to its positioning, not directly sourced AB180 statements.
451
+ -->