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
@@ -0,0 +1,472 @@
1
+ ---
2
+ id: hackle
3
+ name: Hackle
4
+ display_name_kr: 핵클
5
+ country: KR
6
+ category: developer-tools
7
+ homepage: "https://hackle.io"
8
+ primary_color: "#0065ff"
9
+ logo:
10
+ type: favicon
11
+ slug: "https://www.google.com/s2/favicons?domain=hackle.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: "primary = live hero CTA blue (#0065ff); secondary brand blue (#2962ff) drives the MUI-default action buttons and header CTA. Marketing chrome is built on Material UI (rgba-black text emphasis ladder, 4px button radius); custom 8px hero CTAs and 5px tool chips layer on top. Docs site is a separate Inter-based system keyed on docs-blue #0c408d."
19
+ colors:
20
+ primary: "#0065ff"
21
+ primary-alt: "#2962ff"
22
+ docs-blue: "#0c408d"
23
+ accent-blue: "#9ebaf4"
24
+ tint-blue: "#ebf4fd"
25
+ navy-deep: "#0e0437"
26
+ heading: "#000000"
27
+ ink: "#151618"
28
+ body: "#1c1d1e"
29
+ muted: "#6a6e75"
30
+ hairline: "#d6d9df"
31
+ canvas: "#fafafa"
32
+ surface: "#f7f7f7"
33
+ surface-alt: "#f6f7f9"
34
+ white: "#ffffff"
35
+ typography:
36
+ family: { display: "Montserrat", body: "Pretendard", docs: "Inter" }
37
+ display-hero: { size: 46, weight: 700, lineHeight: 1.0, use: "Hero headline (Montserrat EN / Pretendard KO)" }
38
+ section: { size: 36, weight: 700, lineHeight: 1.2, use: "Section titles" }
39
+ subsection: { size: 26, weight: 600, lineHeight: 1.2, use: "Feature sub-heads" }
40
+ body: { size: 16, weight: 400, lineHeight: 1.5, use: "Body / nav text, 24px line-height" }
41
+ button-lg: { size: 18, weight: 700, lineHeight: 1.0, use: "Hero CTA label" }
42
+ button: { size: 14, weight: 500, lineHeight: 1.0, use: "MUI action button / tool chip label" }
43
+ docs: { size: 14, weight: 400, lineHeight: 1.5, use: "Docs body / sidebar nav (Inter)" }
44
+ spacing: { xs: 6, sm: 10, md: 12, base: 16, lg: 20, xl: 24, xxl: 32, section: 64 }
45
+ rounded: { xs: 4, sm: 5, md: 8, lg: 12, full: 9999 }
46
+ shadow:
47
+ none: "none"
48
+ components:
49
+ button-primary: { type: button, bg: "#0065ff", fg: "#ffffff", radius: "8px", padding: "12px 32px", height: "53px", font: "18px / 700", states: "hover #0065ff @ 90% opacity", use: "Hero primary CTA — 데모 둘러보기 / Explore Demo" }
50
+ button-filled: { type: button, bg: "#2962ff", fg: "#ffffff", radius: "4px", padding: "6px 16px", height: "39px", font: "14px / 500", use: "MUI default action button — 문의하기 / 카드 등록하고 바로 사용하기" }
51
+ button-outline: { type: button, bg: "#ffffff", fg: "#0065ff", border: "1px solid #0065ff", radius: "8px", padding: "12px 32px", height: "53px", font: "18px / 700", use: "Secondary CTA — 상담 신청하기 / Request a Demo" }
52
+ chip-dark: { type: button, bg: "#000000", fg: "#ffffff", radius: "5px", padding: "0px 24px", height: "44px", font: "14px / 500", use: "Dark CTA chip — 간편발송 바로가기 / Go to Simple Send" }
53
+ chip-tool: { type: button, bg: "#ffffff", fg: "#151618", radius: "5px", padding: "10px 20px", height: "44px", font: "14px / 500", use: "White tool chip — 가이드북 다운받기 / 템플릿으로 바로 만들기" }
54
+ docs-accept: { type: button, bg: "#0c408d", fg: "#ffffff", border: "1px solid #0c408d", radius: "12px", padding: "6px 12px", height: "35px", font: "14px / 400", use: "Docs consent accept (수락)" }
55
+ search-input: { type: input, bg: "#ffffff", fg: "#1c1d1e", border: "1px solid #d6d9df", radius: "8px", padding: "8px", height: "40px", font: "16px", use: "Docs search field — 찾으시는 기능이나 키워드를 검색해보세요" }
56
+ nav-link: { type: tab, fg: "#000000", font: "16px / 400", active: "text #0065ff", use: "Top marketing nav item — 서비스 소개 / 가이드 / 가격 안내" }
57
+ docs-nav: { type: tab, fg: "#6a6e75", font: "14px / 400", active: "text #0c408d weight 600", use: "Docs sidebar nav item (Inter)" }
58
+ card-surface: { type: card, bg: "#f6f7f9", fg: "#1c1d1e", radius: "8px", use: "Docs surface block / reject-button surface" }
59
+ callout-blue: { type: card, bg: "#ebf4fd", fg: "#0c408d", radius: "8px", use: "Highlighted info callout / tinted block" }
60
+ badge-blue: { type: badge, bg: "#0065ff", fg: "#ffffff", radius: "4px", padding: "6px 16px", font: "14px / 500", use: "Inline emphasis / status pill" }
61
+ components_harvested: true
62
+ ---
63
+
64
+ # Design System Inspiration of Hackle
65
+
66
+ ## 1. Visual Theme & Atmosphere
67
+
68
+ Hackle (핵클) is a Korean developer-and-growth platform — an "올인원 AI 그로스 플랫폼" (all-in-one AI growth platform) bundling A/B testing, feature flags, CRM marketing, and product analytics into one dashboard. Its marketing surface reads like a confident, clean SaaS console rather than a flashy consumer site: an off-white canvas (`#fafafa`) carrying near-black text, generous whitespace, and a single saturated blue that does almost all the persuading. The personality is engineered-but-friendly — the page wants developers and growth teams to feel that "웹, 앱, 서버 상관없이 5분이면 사용 가능" (it works on web, app, and server in five minutes).
69
+
70
+ The system is unmistakably built on **Material UI**. Body text uses Material's emphasis ladder — `rgba(0,0,0,0.87)` for primary, `rgba(0,0,0,0.6)` for secondary, `rgba(0,0,0,0.3)` for disabled — and the default action buttons inherit MUI geometry (4px radius, 6px 16px padding) in the brand blue `#2962ff`. On top of that base, Hackle layers two custom button families: large 8px-radius hero CTAs in a brighter `#0065ff`, and flat 5px-radius "tool chips" (a black `#000000` chip for 간편발송, white chips for downloads/templates). Headlines render in **Montserrat** on the English site and **Pretendard** on the Korean site, both at weight 700 — 46px on the hero, 36px on section titles — while body and nav text sit at a quiet 16px / weight 400 with a 24px line-height.
71
+
72
+ Depth is almost entirely flat. Live inspection found `box-shadow: none` across the nav, hero, headings, buttons, and chips; separation comes from background tints — the `#fafafa` canvas against pure `#f7f7f7` and `#f6f7f9` surfaces — rather than elevation. Color is the only loud instrument: the brand blues `#0065ff` and `#2962ff` for action, a soft `#9ebaf4` and a pale `#ebf4fd` tint for supporting accents, and an occasional deep navy band (`#0e0437`) for a dark immersive section. Pure-black headings (`#000000`) and a near-black ink (`#151618`) anchor the type. The companion **docs site** (`docs.hackle.io`) is a deliberately separate, calmer system: **Inter** typeface, slate body text `#1c1d1e`, muted `#6a6e75` sidebar labels, hairline borders `#d6d9df`, and its own darker documentation blue `#0c408d` for active nav and primary doc actions.
73
+
74
+ **Key Characteristics:**
75
+ - Material UI foundation — `rgba(0,0,0,0.87)` text ladder + 4px-radius default buttons in `#2962ff`
76
+ - Custom hero CTA layer — bright `#0065ff`, 8px radius, 18px / weight 700 labels
77
+ - Flat 5px "tool chips" — black `#000000` and white chips for secondary actions
78
+ - Single-blue persuasion: `#0065ff` / `#2962ff` carry nearly all the action color
79
+ - Montserrat (EN) / Pretendard (KO) bold headlines at weight 700; quiet 16px body
80
+ - Shadowless system — separation via `#fafafa` / `#f7f7f7` / `#f6f7f9` tints, not elevation
81
+ - Separate Inter-based docs system keyed on documentation blue `#0c408d` with `#d6d9df` hairlines
82
+ - Supporting accents: soft `#9ebaf4`, pale `#ebf4fd` tint, deep navy `#0e0437` band; `#ffffff` cards
83
+
84
+ ## 2. Color Palette & Roles
85
+
86
+ ### Primary
87
+ - **Hackle Blue** (`#0065ff`): The primary brand and action color — the large hero CTA ("데모 둘러보기" / "Explore Demo") and the outline-CTA accent. Bright, saturated, confident.
88
+ - **Brand Blue Alt** (`#2962ff`): The Material-UI default action-button blue — header CTA, pricing buttons ("문의하기", "카드 등록하고 바로 사용하기"), and inline emphasis links. A slightly deeper indigo-blue companion to the primary.
89
+ - **Docs Blue** (`#0c408d`): The documentation system's darker blue — active sidebar nav, the "수락" consent accept button, and doc-link text on `docs.hackle.io`.
90
+
91
+ ### Accent & Tint
92
+ - **Soft Blue** (`#9ebaf4`): A light periwinkle accent used in illustration/decoration and supporting surfaces.
93
+ - **Pale Blue Tint** (`#ebf4fd`): A very light blue wash for highlighted/info blocks and tinted callouts.
94
+ - **Deep Navy** (`#0e0437`): An occasional dark immersive section background — near-black indigo for contrast bands.
95
+
96
+ ### Text & Ink
97
+ - **Heading Black** (`#000000`): Pure black for marketing headlines (hero H1, section H2/H3).
98
+ - **Ink** (`#151618`): Near-black ink for tool-chip labels and high-contrast UI text — a touch warmer than pure black.
99
+ - **Body Slate** (`#1c1d1e`): The docs-system body text color (Inter); a soft near-black for dense reading.
100
+ - **Muted Slate** (`#6a6e75`): Secondary/muted text — docs sidebar inactive items, captions, metadata. (Marketing body additionally uses Material's `rgba(0,0,0,0.87)` / `rgba(0,0,0,0.6)` emphasis levels.)
101
+
102
+ ### Surface & Border
103
+ - **Canvas** (`#fafafa`): The default page background — a soft off-white.
104
+ - **Surface** (`#f7f7f7`): A pure neutral surface for alternating bands and cards on the marketing site.
105
+ - **Docs Surface** (`#f6f7f9`): The docs system's cool-grey surface block (e.g. the "거부" reject button background).
106
+ - **Hairline** (`#d6d9df`): Thin borders and dividers on the docs system (search field, copy/consent buttons).
107
+ - **Pure White** (`#ffffff`): Card surfaces, white tool chips, and text on blue/dark.
108
+
109
+ ## 3. Typography Rules
110
+
111
+ ### Font Family
112
+ - **Display (EN)**: `Montserrat` (with `Montserrat Fallback`) — marketing headlines on the English site at weight 700.
113
+ - **Body / Display (KO)**: `Pretendard` (with `Pretendard Fallback`) — the Korean site's headline and UI font; body defaults fall back through `ui-sans-serif, system-ui`.
114
+ - **Docs**: `Inter` (with `Inter Fallback`) — the entire `docs.hackle.io` system, body and nav.
115
+
116
+ ### Hierarchy
117
+
118
+ | Role | Font | Size | Weight | Line Height | Notes |
119
+ |------|------|------|--------|-------------|-------|
120
+ | Display Hero | Montserrat / Pretendard | 46px (2.88rem) | 700 | ~1.0 | Hero H1 ("AI와 데이터로 이끄는 성장") |
121
+ | Section Heading | Montserrat / Pretendard | 36px (2.25rem) | 700 | ~1.2 | Section H2 titles |
122
+ | Sub-section | Pretendard | 26px (1.63rem) | 600 | ~1.2 | Feature sub-heads ("웹, 앱, 서버 상관없이 5분이면 사용 가능") |
123
+ | Body / Nav | Pretendard / system | 16px (1.00rem) | 400 | 24px (1.5) | Standard reading + top-nav text |
124
+ | Hero CTA | Montserrat / Pretendard | 18px (1.13rem) | 700 | ~1.0 | Large primary CTA label |
125
+ | Button / Chip | Pretendard | 14px (0.88rem) | 500 | ~1.0 | MUI action buttons + tool chips |
126
+ | Docs Body / Nav | Inter | 14px (0.88rem) | 400 | 1.5 | Docs paragraphs + sidebar items |
127
+
128
+ ### Principles
129
+ - **Bold display, quiet body**: Headlines run at weight 700; body and nav stay at weight 400. The weight jump is the primary hierarchy signal — there is little use of mid-weights on the marketing surface.
130
+ - **Two display fonts, locale-split**: Montserrat owns the English marketing voice; Pretendard owns the Korean voice. They never appear together on one page — locale decides.
131
+ - **Inter for documentation**: The docs system deliberately switches to Inter at 14px / 400 with a 1.5 line-height — calmer and denser than the marketing type, signalling "reference material, not pitch."
132
+ - **Material body metrics**: The marketing body inherits MUI defaults (16px, 24px line-height, `rgba(0,0,0,0.87)`), giving the site a familiar console-grade legibility.
133
+
134
+ ## 4. Component Stylings
135
+
136
+ ### Buttons
137
+
138
+ **Hero Primary CTA**
139
+ - Background: `#0065ff`
140
+ - Text: `#ffffff`
141
+ - Radius: 8px
142
+ - Padding: 12px 32px
143
+ - Height: 53px
144
+ - Font: 18px / 700
145
+ - Hover: same blue dimmed to ~90% opacity
146
+ - Use: The dominant page action ("데모 둘러보기" / "Explore Demo")
147
+
148
+ **MUI Filled Action**
149
+ - Background: `#2962ff`
150
+ - Text: `#ffffff`
151
+ - Radius: 4px
152
+ - Padding: 6px 16px
153
+ - Height: 39px
154
+ - Font: 14px / 500
155
+ - Use: Material-default action buttons ("문의하기", "카드 등록하고 바로 사용하기", header "데모 둘러보기")
156
+
157
+ **Outline CTA**
158
+ - Background: `#ffffff`
159
+ - Text: `#0065ff`
160
+ - Border: 1px solid `#0065ff`
161
+ - Radius: 8px
162
+ - Padding: 12px 32px
163
+ - Height: 53px
164
+ - Font: 18px / 700
165
+ - Use: Secondary hero action ("상담 신청하기" / "Request a Demo")
166
+
167
+ **Dark Tool Chip**
168
+ - Background: `#000000`
169
+ - Text: `#ffffff`
170
+ - Radius: 5px
171
+ - Padding: 0px 24px
172
+ - Height: 44px
173
+ - Font: 14px / 500
174
+ - Use: Black entry chip ("간편발송 바로가기" / "Go to Simple Send")
175
+
176
+ **White Tool Chip**
177
+ - Background: `#ffffff`
178
+ - Text: `#151618`
179
+ - Radius: 5px
180
+ - Padding: 10px 20px
181
+ - Height: 44px
182
+ - Font: 14px / 500
183
+ - Use: Flat secondary chips ("가이드북 다운받기", "템플릿으로 바로 만들기", "View Guides")
184
+
185
+ **Docs Consent Accept**
186
+ - Background: `#0c408d`
187
+ - Text: `#ffffff`
188
+ - Border: 1px solid `#0c408d`
189
+ - Radius: 12px
190
+ - Padding: 6px 12px
191
+ - Height: 35px
192
+ - Font: 14px / 400
193
+ - Use: Docs cookie/consent accept ("수락"); the reject ("거부") variant uses `#f6f7f9` background with `#6a6e75` text and a `#d6d9df` border
194
+
195
+ ### Inputs
196
+
197
+ **Docs Search Field**
198
+ - Background: `#ffffff`
199
+ - Text: `#1c1d1e`
200
+ - Border: 1px solid `#d6d9df`
201
+ - Radius: 8px
202
+ - Padding: 8px
203
+ - Height: 40px
204
+ - Font: 16px
205
+ - Use: Docs search ("찾으시는 기능이나 키워드를 검색해보세요", placeholder "검색…")
206
+
207
+ ### Cards & Containers
208
+
209
+ **Docs Surface Block**
210
+ - Background: `#f6f7f9`
211
+ - Text: `#1c1d1e`
212
+ - Radius: 8px
213
+ - Use: Cool-grey surface block on the docs system (e.g. inactive/reject surfaces)
214
+
215
+ **Blue Info Callout**
216
+ - Background: `#ebf4fd`
217
+ - Text: `#0c408d`
218
+ - Radius: 8px
219
+ - Use: Highlighted/info block — pale-blue tinted callout
220
+
221
+ **Marketing Feature Card**
222
+ - Background: `#ffffff`
223
+ - Radius: 8px
224
+ - Use: White feature card on the `#fafafa` canvas — flat, shadowless, separated by surface tint
225
+
226
+ ### Badges
227
+
228
+ **Blue Emphasis Pill**
229
+ - Background: `#0065ff`
230
+ - Text: `#ffffff`
231
+ - Radius: 4px
232
+ - Padding: 6px 16px
233
+ - Font: 14px / 500
234
+ - Use: Inline emphasis / status pill in the brand blue
235
+
236
+ ### Navigation
237
+ - Background: `#ffffff`
238
+ - Text: `#000000`
239
+ - Font: 16px / 400
240
+ - Active: blue `#0065ff` text on the active item
241
+ - Use: Top marketing nav ("서비스 소개", "가이드", "가격 안내", "블로그", "로그인"); docs sidebar nav uses Inter 14px with `#6a6e75` inactive labels and `#0c408d` weight-600 active items
242
+
243
+ ---
244
+
245
+ **Verified:** 2026-06-26 (omd:add-reference CREATE — Tier 1 live inspect, 3 brand-owned surfaces)
246
+ **Tier 1 sources:** https://hackle.io/ko/, https://docs.hackle.io/, https://github.com/hackle-io
247
+ **Tier 2 sources:** getdesign.md/hackle — directory shell only, no Hackle token data; styles.refero.design — not listed (KR brand)
248
+ **Conflicts unresolved:** none
249
+
250
+ ## 5. Layout Principles
251
+
252
+ ### Spacing System
253
+ - Base unit: ~4-8px
254
+ - Scale: 6px, 10px, 12px, 16px, 20px, 24px, 32px, 64px
255
+ - Notable: MUI action buttons use the Material 6px/16px rhythm; hero CTAs jump to a generous 12px/32px; section bands separate at ~64px
256
+
257
+ ### Grid & Container
258
+ - Centered single-column hero with the 46px headline as the anchor, primary + outline CTA pair beneath
259
+ - Logo wall ("앞서가는 기업들은 이미 핵클의 고객사입니다.") and feature bands alternate across full-width sections
260
+ - Team/dashboard feature section ("팀 별로 필요한 모든 것을 하나의 대시보드에서") groups product modules
261
+ - Cards use 8px radius and sit on the `#fafafa` canvas separated by `#f7f7f7` surface tints
262
+
263
+ ### Whitespace Philosophy
264
+ - **Console-grade calm**: generous vertical rhythm between sections; the page never feels crowded despite being feature-dense.
265
+ - **Tint, don't elevate**: bands separate by background color (`#fafafa` vs `#f7f7f7` vs `#f6f7f9`), not by shadow stacks.
266
+ - **One loud color**: blue is rationed to actions so the next step is always obvious.
267
+
268
+ ### Border Radius Scale
269
+ - XS (4px): MUI default action buttons, emphasis pills
270
+ - Small (5px): flat tool chips
271
+ - Medium (8px): hero CTAs, cards, search field — the workhorse
272
+ - Large (12px): docs consent buttons, docs language selector
273
+ - Full (9999px): rare full-round elements
274
+
275
+ ## 6. Depth & Elevation
276
+
277
+ | Level | Treatment | Use |
278
+ |-------|-----------|-----|
279
+ | Flat (Level 0) | No shadow | Page background, headings, most surfaces |
280
+ | Tint (Level 1) | `#f7f7f7` / `#f6f7f9` background shift | Card/section separation without elevation |
281
+ | Hairline (Level 2) | `1px solid #d6d9df` border | Docs search field, copy/consent buttons, dividers |
282
+ | Color (Level 3) | Brand blue `#0065ff` / dark `#000000` chip | Emphasis through hue, not shadow |
283
+
284
+ **Shadow Philosophy**: Hackle is effectively a shadowless system on its public surfaces. Live inspection returned `box-shadow: none` across the nav, hero, headings, buttons, and tool chips. Grouping and hierarchy come from flat background tints (`#fafafa` canvas, `#f7f7f7` / `#f6f7f9` surfaces) and thin `#d6d9df` hairlines on the docs system. When the page needs to elevate attention it reaches for color — the bright blue `#0065ff`, the dark `#000000` chip, or a deep navy `#0e0437` band — never a drop shadow. This keeps the SaaS console feel clean and fast.
285
+
286
+ ## 7. Do's and Don'ts
287
+
288
+ ### Do
289
+ - Reserve the brand blue (`#0065ff`) for the primary action so the next step is unambiguous
290
+ - Use the Material-default `#2962ff` filled button (4px radius, 6px 16px) for standard in-page actions
291
+ - Set marketing headlines in Montserrat (EN) / Pretendard (KO) at weight 700
292
+ - Keep body and nav at 16px / weight 400 with a 24px line-height
293
+ - Separate sections with flat tints (`#fafafa`, `#f7f7f7`, `#f6f7f9`), not shadows
294
+ - Use the dark `#000000` chip and white `#151618`-text chips for secondary tool entries
295
+ - Switch to Inter + docs-blue `#0c408d` + `#d6d9df` hairlines inside the documentation system
296
+ - Use pure black (`#000000`) for marketing headlines and near-black `#151618` for chip ink
297
+
298
+ ### Don't
299
+ - Spread blue across many elements — it dilutes the single-action signal
300
+ - Add drop shadows for elevation — Hackle separates with tint and hairline
301
+ - Mix Montserrat and Pretendard on the same page — locale decides the display font
302
+ - Use the marketing brand blues inside the docs system — docs uses its own `#0c408d`
303
+ - Set headlines in a light weight — display is always weight 700
304
+ - Use large pill radii on the hero CTA — it stays at a controlled 8px
305
+ - Introduce a second saturated accent hue — blue is the only loud color
306
+
307
+ ## 8. Responsive Behavior
308
+
309
+ ### Breakpoints
310
+ | Name | Width | Key Changes |
311
+ |------|-------|-------------|
312
+ | Mobile | <640px | Single column, hero headline compresses, CTA pair stacks |
313
+ | Tablet | 640-1024px | Moderate padding, 2-up feature cards |
314
+ | Desktop | 1024-1440px | Full layout, centered hero, multi-column feature bands |
315
+
316
+ ### Touch Targets
317
+ - Hero CTAs at 53px height with 12px/32px padding — large, unmistakable targets
318
+ - MUI action buttons at ~39px height; tool chips at 44px height
319
+ - Nav items spaced within a tall (~72px) header row
320
+
321
+ ### Collapsing Strategy
322
+ - Hero: 46px headline scales down on mobile, weight 700 maintained
323
+ - CTA pair (primary + outline) stacks vertically on narrow viewports
324
+ - Feature bands: multi-column → stacked single column
325
+ - Tinted/white alternating sections keep full-width treatment
326
+ - Docs: sidebar nav collapses to a drawer; content column stays Inter 14px
327
+
328
+ ### Image Behavior
329
+ - Product/dashboard screenshots and illustrations carry no shadow at any size, consistent with the flat system
330
+ - Cards maintain 8px radius across breakpoints
331
+
332
+ ## 9. Agent Prompt Guide
333
+
334
+ ### Quick Color Reference
335
+ - Primary action: Hackle Blue (`#0065ff`)
336
+ - Standard MUI action: Brand Blue Alt (`#2962ff`)
337
+ - Docs accent / link: Docs Blue (`#0c408d`)
338
+ - Canvas: Off-white (`#fafafa`)
339
+ - Surfaces: `#f7f7f7` (marketing) / `#f6f7f9` (docs)
340
+ - Headings: Black (`#000000`); chip ink: `#151618`; docs body: `#1c1d1e`
341
+ - Muted text: `#6a6e75`
342
+ - Hairline: `#d6d9df`
343
+ - Accent / tint: Soft Blue (`#9ebaf4`), Pale Blue (`#ebf4fd`)
344
+ - Dark band: Deep Navy (`#0e0437`); white surfaces: `#ffffff`
345
+
346
+ ### Example Component Prompts
347
+ - "Create a hero on an off-white #fafafa canvas. Headline at 46px Pretendard weight 700, color #000000. Below it a primary CTA: #0065ff background, white text, 8px radius, 12px 32px padding, 18px weight 700; plus an outline CTA: white background, #0065ff text and 1px #0065ff border, 8px radius."
348
+ - "Design an in-page action button the Material way: #2962ff background, white text, 4px radius, 6px 16px padding, 14px weight 500."
349
+ - "Build a tool-chip row: a black #000000 chip with white text and a white chip with #151618 text, both 5px radius, ~44px tall, 14px weight 500."
350
+ - "Style a docs page in Inter: body #1c1d1e at 14px / 1.5, muted sidebar items #6a6e75 with the active item in #0c408d weight 600, a search field with 1px #d6d9df border and 8px radius, and a pale-blue #ebf4fd info callout with #0c408d text."
351
+
352
+ ### Iteration Guide
353
+ 1. Blue (`#0065ff`) is the single action color — don't spread it
354
+ 2. Standard buttons follow MUI: `#2962ff`, 4px radius, 6px 16px padding
355
+ 3. Headlines are weight 700 (Montserrat EN / Pretendard KO); body is 16px / 400
356
+ 4. No shadows — separate with `#fafafa` / `#f7f7f7` / `#f6f7f9` tints and `#d6d9df` hairlines
357
+ 5. The docs system is its own world: Inter + `#0c408d` + hairlines
358
+ 6. Radius ladder: 4px MUI buttons, 5px chips, 8px hero/cards, 12px docs buttons
359
+ 7. Reach for color (blue, black chip, navy band) — not elevation — to draw attention
360
+
361
+ ---
362
+
363
+ ## 10. Voice & Tone
364
+
365
+ Hackle's voice is **practical, data-confident, and developer-respecting** — it speaks to growth teams and engineers who want measurable outcomes, not hype. The Korean positioning "올인원 AI 그로스 플랫폼" and the English "All-in-One Business Optimization Solution" set the register: comprehensive, outcome-framed, plainspoken. Copy leads with capability and speed ("웹, 앱, 서버 상관없이 5분이면 사용 가능") and with proof ("앞서가는 기업들은 이미 핵클의 고객사입니다." / "Leading brands are already using Hackle.").
366
+
367
+ | Context | Tone |
368
+ |---|---|
369
+ | Hero headlines | Outcome-framed, confident. "AI와 데이터로 이끄는 성장" / "AI-powered growth". |
370
+ | Feature sections | Capability-first, plain. "팀 별로 필요한 모든 것을 하나의 대시보드에서". |
371
+ | CTAs | Direct, low-pressure. "데모 둘러보기", "상담 신청하기", "Explore Demo". |
372
+ | Proof / social | Concrete, credibility-led. "앞서가는 기업들은 이미 핵클의 고객사입니다." |
373
+ | Docs | Calm, instructional, step-numbered ("Step 1. 이탈 사용자 찾아보기"). Respects the reader as a builder. |
374
+
375
+ **Voice samples (verbatim from live surfaces):**
376
+ - "AI와 데이터로 이끄는 성장 올인원 AI 그로스 플랫폼 핵클" — KO hero headline. *(verified live 2026-06-26)*
377
+ - "앞서가는 기업들은 이미 핵클의 고객사입니다." — KO social-proof section. *(verified live 2026-06-26)*
378
+ - "웹, 앱, 서버 상관없이 5분이면 사용 가능" — KO speed claim. *(verified live 2026-06-26)*
379
+ - "Hackle | All-in-One Business Optimization Solution" — EN page title. *(verified live 2026-06-26)*
380
+
381
+ **Forbidden register**: fear-based urgency, undefined buzzwords with no measurable claim, exclamation-heavy hype, and treating developers as non-technical buyers (the docs voice is peer-to-peer, never condescending).
382
+
383
+ ## 11. Brand Narrative
384
+
385
+ Hackle (핵클) is a Korean (Seoul-based) developer-and-growth platform positioning itself as an "올인원 AI 그로스 플랫폼" — an all-in-one growth toolkit that unifies A/B testing, feature flags, CRM marketing (간편발송 / "Simple Send"), and product/data analysis on a single dashboard. The founding premise visible across its surfaces is consolidation: teams historically stitched experimentation, feature management, messaging, and analytics together from separate vendors; Hackle's pitch is that a growth team should get "팀 별로 필요한 모든 것을 하나의 대시보드에서" (everything each team needs in one dashboard).
386
+
387
+ The product is explicitly developer-first. It ships official SDKs through a public GitHub organization (`github.com/hackle-io`) and maintains a dedicated documentation site (`docs.hackle.io`) with step-numbered guides and a "개발자 문서" (developer docs) track. The headline promise — "웹, 앱, 서버 상관없이 5분이면 사용 가능" (usable in five minutes regardless of web, app, or server) — frames integration speed as the entry point, the same developer-onboarding logic that defines modern experimentation tooling.
388
+
389
+ What the design refuses, visible in its restraint: the heavy, shadow-stacked chrome of legacy enterprise software, and the multi-color dashboards that overload growth tools. What it embraces: a flat, fast, single-blue console aesthetic; Material-grade familiarity for the marketing chrome; and a separate, calmer Inter-based documentation system that reads like reference material a builder can trust.
390
+
391
+ ## 12. Principles
392
+
393
+ 1. **One platform, one dashboard.** Hackle's whole pitch is consolidation. *UI implication:* unify modules visually; avoid per-feature visual dialects on the marketing surface — the blue and the type system stay consistent across A/B, flags, CRM, and analytics.
394
+ 2. **One action, one color.** Blue (`#0065ff` / `#2962ff`) means "do this." *UI implication:* reserve saturated blue for actions so the next step is never ambiguous.
395
+ 3. **Developer-first, five-minute onboarding.** *UI implication:* lead with integration speed; keep docs peer-level, step-numbered, and code-forward.
396
+ 4. **Flat and fast.** Console clarity over decorative depth. *UI implication:* no shadows; separate with tint and hairline; keep the page quick to scan.
397
+ 5. **Familiar base, custom highlights.** Material UI gives a trusted foundation; custom hero CTAs and chips add brand character. *UI implication:* respect MUI defaults for standard controls, and layer brand geometry only where it earns attention.
398
+ 6. **Calm docs, bold marketing.** *UI implication:* the documentation system gets its own quiet Inter + `#0c408d` identity, distinct from the louder marketing blue.
399
+
400
+ ## 13. Personas
401
+
402
+ *Personas below are fictional archetypes informed by publicly observable Hackle user segments (Korean growth teams, product managers, and engineers adopting experimentation tooling), not individual people.*
403
+
404
+ **박지훈, 32, 서울.** A product engineer integrating Hackle's SDK into a mobile app. Reads `docs.hackle.io` like reference material — values the step-numbered guides and the five-minute setup promise. Chose Hackle because the developer docs treated him as a peer and the SDK was on a public GitHub org.
405
+
406
+ **이서연, 29, 경기.** A growth marketer running A/B tests and CRM 간편발송 campaigns. Lives in the dashboard and values that experimentation, messaging, and analytics share one surface instead of three tools. Trusts the brand partly because "앞서가는 기업들" already use it.
407
+
408
+ **최민수, 38, 서울.** A data-minded PM evaluating an all-in-one growth platform to replace a patchwork stack. Cares that the analysis, feature flags, and experiments reconcile to the same numbers. Reassured by the calm, console-grade UI rather than a hype-heavy sales site.
409
+
410
+ ## 14. States
411
+
412
+ | State | Treatment |
413
+ |---|---|
414
+ | **Empty (no experiments / no data yet)** | `#fafafa` canvas. Single near-black line explaining nothing's been created, with one `#0065ff` CTA to start. No clutter. |
415
+ | **Empty (search, no results)** | Muted `#6a6e75` single line on the docs system; the search field (`#d6d9df` border, 8px radius) stays focused for a retry. |
416
+ | **Loading (dashboard / results)** | Skeleton blocks on `#f7f7f7` / `#f6f7f9` tinted surfaces at final dimensions, 8px radius. Flat pulse — no shadow shimmer, consistent with the shadowless system. |
417
+ | **Error (action failed)** | Inline message in near-black with a plain-language explanation and a retry. No generic "오류가 발생했습니다" alone. |
418
+ | **Error (form validation)** | Field-level message below the input; the `#d6d9df` border signals the field; describes what's valid, not just "필수". |
419
+ | **Success (saved / submitted)** | Brief inline confirmation in a calm tone; next-step detail linked immediately. No celebratory emoji. |
420
+ | **Consent (docs cookie banner)** | Accept ("수락") uses `#0c408d` filled; reject ("거부") uses `#f6f7f9` surface with `#6a6e75` text — both 12px radius. |
421
+ | **Disabled** | Material emphasis: text drops to `rgba(0,0,0,0.3)`; blue actions fade rather than turn grey to preserve brand read. |
422
+
423
+ ## 15. Motion & Easing
424
+
425
+ **Durations**:
426
+
427
+ | Token | Value | Use |
428
+ |---|---|---|
429
+ | `motion-fast` | 120ms | Hover, button/chip press, focus |
430
+ | `motion-standard` | 200ms | Card/section reveal, dropdown, sheet |
431
+ | `motion-slow` | 320ms | Page-level transitions, hero reveal |
432
+
433
+ **Easings**:
434
+
435
+ | Token | Curve | Use |
436
+ |---|---|---|
437
+ | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Arriving — cards, sheets, dropdowns |
438
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
439
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Two-way transitions |
440
+
441
+ **Motion rules**: Motion is functional and restrained, matching the flat, fast console aesthetic. The primary CTA responds to hover with a subtle opacity dim (the live hero CTA shifts to ~90% opacity on hover) rather than a shadow or scale leap. Buttons and chips press with a quiet opacity/scale shift; content reveals fade in from below at `motion-standard / ease-enter`. No bounce or spring — a growth/analytics platform signals steadiness. Under `prefers-reduced-motion: reduce`, all transitions collapse to instant; the product remains fully functional.
442
+
443
+ <!--
444
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
445
+
446
+ Tier 1 live inspect (2026-06-26) via playwright getComputedStyle on three brand-owned surfaces:
447
+ - https://hackle.io/ko/ and https://hackle.io/en/ (marketing site) — Material UI base
448
+ (rgba(0,0,0,0.87) text ladder, 4px-radius #2962ff default buttons), custom hero CTAs
449
+ (#0065ff, 8px radius, 18px/700), flat 5px tool chips (#000000 dark, #ffffff white),
450
+ Montserrat (EN) / Pretendard (KO) 700 headlines, box-shadow: none throughout.
451
+ - https://hackle.io/ko/pricing/ — pricing CTAs (#2962ff filled, 4px radius), FAQ rows.
452
+ - https://docs.hackle.io/ — separate Inter system: body #1c1d1e, muted #6a6e75,
453
+ docs-blue #0c408d active nav + "수락" accept button, #d6d9df hairlines, search field.
454
+
455
+ Token-level claims (§1-9) are sourced from this live inspection (see .verification.md raw samples).
456
+
457
+ Voice samples (§10) are verbatim from the live homepage (KO hero, social-proof section,
458
+ speed claim) and the EN page title.
459
+
460
+ Brand narrative (§11): Hackle (핵클) is a Korean all-in-one growth platform (A/B testing,
461
+ feature flags, CRM/간편발송, analytics) with public SDKs at github.com/hackle-io and docs at
462
+ docs.hackle.io. Positioning phrases are quoted from the live site; specific corporate/founding
463
+ details beyond the observable surfaces are general public knowledge, not quoted from a verified
464
+ Hackle statement in this turn. Founder names are intentionally omitted to avoid unverified claims.
465
+
466
+ Personas (§13) are fictional archetypes informed by publicly observable Hackle user segments
467
+ (Korean growth teams, PMs, engineers). Names are illustrative; they do not refer to real people.
468
+
469
+ Interpretive claims (e.g., "one platform one dashboard", "calm docs, bold marketing") are
470
+ editorial readings connecting Hackle's observed design to its positioning, not directly sourced
471
+ Hackle statements.
472
+ -->