oh-my-design-cli 1.8.2 → 1.8.6

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 (53) hide show
  1. package/README.ja.md +5 -5
  2. package/README.ko.md +7 -7
  3. package/README.md +7 -7
  4. package/README.zh-TW.md +5 -5
  5. package/agents/omd-master.md +1 -1
  6. package/data/reference-fingerprints.json +964 -4
  7. package/package.json +3 -1
  8. package/skills/omd-feel/SKILL.md +152 -0
  9. package/skills/omd-feel/provenance.md +233 -0
  10. package/skills/omd-feel/reference.md +254 -0
  11. package/skills/omd-harness/SKILL.md +1 -1
  12. package/skills/omd-init/SKILL.md +1 -1
  13. package/skills/omd-reference-capture/SKILL.md +1 -1
  14. package/web/references/591/DESIGN.md +460 -0
  15. package/web/references/asana/DESIGN.md +485 -0
  16. package/web/references/asos/DESIGN.md +475 -0
  17. package/web/references/bahamut/DESIGN.md +416 -0
  18. package/web/references/bbc/DESIGN.md +439 -0
  19. package/web/references/chunghwa/DESIGN.md +419 -0
  20. package/web/references/databricks/DESIGN.md +467 -0
  21. package/web/references/deliveroo/DESIGN.md +458 -0
  22. package/web/references/doordash/DESIGN.md +429 -0
  23. package/web/references/easywallet/DESIGN.md +449 -0
  24. package/web/references/esunbank/DESIGN.md +445 -0
  25. package/web/references/farfetch/DESIGN.md +436 -0
  26. package/web/references/fubon/DESIGN.md +438 -0
  27. package/web/references/govuk/DESIGN.md +450 -0
  28. package/web/references/hana/DESIGN.md +439 -0
  29. package/web/references/hubspot/DESIGN.md +485 -0
  30. package/web/references/hyundai/DESIGN.md +468 -0
  31. package/web/references/icook/DESIGN.md +432 -0
  32. package/web/references/instacart/DESIGN.md +439 -0
  33. package/web/references/ipassmoney/DESIGN.md +407 -0
  34. package/web/references/kakaopage/DESIGN.md +439 -0
  35. package/web/references/kbpay/DESIGN.md +442 -0
  36. package/web/references/kia/DESIGN.md +411 -0
  37. package/web/references/liner/DESIGN.md +465 -0
  38. package/web/references/monzo/DESIGN.md +461 -0
  39. package/web/references/naverpay/DESIGN.md +478 -0
  40. package/web/references/octopusenergy/DESIGN.md +436 -0
  41. package/web/references/openpoint/DESIGN.md +431 -0
  42. package/web/references/paypal/DESIGN.md +459 -0
  43. package/web/references/reddit/DESIGN.md +537 -0
  44. package/web/references/samsung/DESIGN.md +465 -0
  45. package/web/references/shinhanbank/DESIGN.md +429 -0
  46. package/web/references/skyscanner/DESIGN.md +563 -0
  47. package/web/references/snapchat/DESIGN.md +460 -0
  48. package/web/references/squarespace/DESIGN.md +454 -0
  49. package/web/references/ssg/DESIGN.md +439 -0
  50. package/web/references/starling/DESIGN.md +404 -0
  51. package/web/references/taiwanmobile/DESIGN.md +445 -0
  52. package/web/references/trainline/DESIGN.md +454 -0
  53. package/web/references/zoom/DESIGN.md +457 -0
@@ -0,0 +1,465 @@
1
+ ---
2
+ id: liner
3
+ name: Liner
4
+ display_name_kr: 라이너
5
+ country: KR
6
+ category: ai
7
+ homepage: "https://liner.com"
8
+ primary_color: "#197b2e"
9
+ logo:
10
+ type: favicon
11
+ slug: "https://www.google.com/s2/favicons?domain=liner.com&sz=128"
12
+ verified: "2026-06-22"
13
+ added: "2026-06-22"
14
+ omd: "0.1"
15
+ tokens:
16
+ source: live-extract
17
+ extracted: "2026-06-22"
18
+ note: "primary = Liner Green CTA (#197b2e); dark forest heading (#14371b); near-black body (#1e1e1f); muted grey (#6d6d70 at 80% opacity); active-tab mint tint (#edf3ed). Display font = Flare (custom serif). UI font = Pretendard Variable / Pretendard JP Variable."
19
+ colors:
20
+ primary: "#197b2e"
21
+ primary-dark: "#14371b"
22
+ primary-tint: "#edf3ed"
23
+ ink: "#1e1e1f"
24
+ muted: "#6d6d70"
25
+ canvas: "#ffffff"
26
+ surface: "#f9f9fa"
27
+ surface-alt: "#f6f6f7"
28
+ on-primary: "#ffffff"
29
+ warning: "#fe8f16"
30
+ typography:
31
+ family: { display: "Flare", body: "Pretendard Variable", ui: "Pretendard JP Variable" }
32
+ hero-display: { size: 54, weight: 400, lineHeight: 1.1, use: "Hero display headline — Flare serif" }
33
+ section: { size: 42, weight: 400, lineHeight: 1.19, use: "Section heading — Flare serif" }
34
+ page-title: { size: 34, weight: 400, lineHeight: 1.21, use: "Page title (pricing H1) — Flare serif" }
35
+ h3: { size: 17, weight: 400, lineHeight: 1.35, use: "Feature card heading — Pretendard JP Variable" }
36
+ nav: { size: 16, weight: 400, lineHeight: 1.25, use: "Nav links — Pretendard JP Variable" }
37
+ body: { size: 16, weight: 400, lineHeight: 1.5, use: "Body copy — Pretendard JP Variable" }
38
+ button: { size: 15, weight: 500, lineHeight: 1.33, use: "Button labels — Pretendard Variable" }
39
+ caption: { size: 14, weight: 400, lineHeight: 1.29, use: "Caption and dropdown text — Pretendard Variable" }
40
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 20, xl: 24, xxl: 40 }
41
+ rounded: { sm: 8, md: 12, lg: 200, full: 9999 }
42
+ shadow:
43
+ none: "none"
44
+ subtle: "0 1px 4px rgba(0,0,0,0.08)"
45
+ components:
46
+ button-primary: { type: button, bg: "#197b2e", fg: "#ffffff", radius: "8px", height: "40px", font: "15px / 500 Pretendard Variable", use: "Primary CTA — Get started / Get Pro / Get Max" }
47
+ button-outline: { type: button, bg: "#ffffff", fg: "#1e1e1f", border: "1px solid rgba(109,109,112,0.24)", radius: "8px", height: "40px", font: "15px / 500 Pretendard Variable", use: "Secondary free-tier CTA — Start for free" }
48
+ button-ghost-green: { type: button, bg: "transparent", fg: "#197b2e", border: "1px solid #197b2e", radius: "8px", height: "40px", font: "15px / 500 Pretendard Variable", use: "Enterprise / contact CTA — Contact us" }
49
+ button-get-started-pill: { type: button, bg: "transparent", fg: "#000000", border: "1px solid #197b2e", radius: "200px", height: "48px", font: "16px / 400 Pretendard JP Variable", use: "Hero section expanded get-started pill" }
50
+ tab-product-active: { type: tab, bg: "#edf3ed", fg: "#000000", radius: "9999px", padding: "0px 20px", active: "text #000000 bg #edf3ed", use: "Product selector tab — active state (Search / Research / Write)" }
51
+ tab-product-inactive: { type: tab, bg: "transparent", fg: "#000000", radius: "9999px", padding: "0px 20px", use: "Product selector tab — inactive" }
52
+ toggle-billing: { type: toggle, bg: "#ffffff", fg: "#1e1e1f", radius: "200px", height: "44px", use: "Billing toggle (Monthly / Annual)" }
53
+ card-pricing: { type: card, bg: "#ffffff", fg: "#1e1e1f", radius: "12px", use: "Pricing plan card with shadow" }
54
+ card-surface: { type: card, bg: "#f9f9fa", fg: "#1e1e1f", radius: "12px", use: "Feature card on light surface" }
55
+ badge-warning: { type: badge, bg: "#fe8f16", fg: "#ffffff", radius: "9999px", font: "12px / 500", use: "Save % promo badge on Annual tab" }
56
+ components_harvested: true
57
+ ---
58
+
59
+ # Design System Inspiration of Liner
60
+
61
+ ## 1. Visual Theme & Atmosphere
62
+
63
+ Liner (라이너) is a Korean AI startup that began as a web highlighter and has evolved into an AI-powered search and research copilot serving 11M+ professionals. Its homepage embodies a quiet authority: a near-white canvas (`#ffffff`) punctuated by a signature Liner Green (`#197b2e`) that appears almost exclusively on CTAs, reserving the single brand color for decisive action. Headings speak in **Flare** — a custom humanist serif with elegant weight contrast — in a deep forest green (`#14371b`) rather than black, anchoring the page in an organic, nature-informed palette rooted in Liner's highlighting origin.
64
+
65
+ The typographic system splits into two clear registers: editorial display in Flare for emotional impact, and functional UI in **Pretendard Variable / Pretendard JP Variable** for menus, body, and labels. This duality — editorial serif for "what Liner is," humanist sans for "how to use it" — gives the product a professional, research-grade credibility without feeling cold. Hero text arrives at 54px / weight 400 in Flare, section titles at 42px, and pricing page H1 at 34px, all in the dark forest `#14371b`. Body and UI text sits in near-black `#1e1e1f` at 16px, with muted copy in a grey-80 (`#6d6d70` at opacity 0.8).
66
+
67
+ Interactive geometry is restrained: standard buttons at 8px radius for nav and pricing CTAs; hero pill buttons at a generous 200px for the product-feature "Get started" moments; and a full-pill selector for product tabs. The system avoids shadows almost entirely — depth appears through surface tints (`#f9f9fa`, `#f6f6f7`) and 1px borders rather than elevation. The result reads as an AI product that respects your cognitive space: focused, calm, and oriented toward professionals who have no patience for noise.
68
+
69
+ **Key Characteristics:**
70
+ - Flare serif (custom) for all display headlines — elegant and research-grade
71
+ - Pretendard Variable / Pretendard JP Variable for all UI and body — global-ready, KR-native
72
+ - Single brand green (`#197b2e`) reserved for primary CTAs — one-action-one-color discipline
73
+ - Deep forest green (`#14371b`) for headings — organic, nature-referenced
74
+ - Near-black `#1e1e1f` for body — warm and legible, not harsh pure-black
75
+ - Flat depth: shadow-free on most surfaces; tinted `#f9f9fa` and hairlines for separation
76
+ - Geometric mix: 8px radius for buttons, 200px for pills, 9999px for tab selectors
77
+ - Light neutral palette (`#f9f9fa`, `#f6f6f7`) with deliberate forest-green accents
78
+
79
+ ## 2. Color Palette & Roles
80
+
81
+ ### Primary Brand
82
+
83
+ - **Liner Green** (`#197b2e`): The single saturated action color. Appears on nav "Get started" CTA, "Get Pro" and "Get Max" plan buttons. Its 80% derivation (`rgb(25,123,46)`) covers link text and ghost button borders. Comes from Liner's highlighter-green origin — the color you reach for to mark what matters.
84
+ - **Forest Dark** (`#14371b`): Heading and display color for H1–H3. A deep, near-black forest green that gives editorial weight to Flare serif headlines without reaching for neutral black.
85
+ - **Primary Tint** (`#edf3ed`): Active state background for product-selector tabs. A very soft mint that signals selection without visual aggression.
86
+
87
+ ### Neutral & Surface
88
+
89
+ - **White Canvas** (`#ffffff`): Page background, pricing cards, feature cards.
90
+ - **Surface Light** (`#f9f9fa`): Alternate card and section background — barely-there tint.
91
+ - **Surface Alt** (`#f6f6f7`): Secondary tinted block surfaces.
92
+ - **Near-Black Ink** (`#1e1e1f`): Primary body text, plan names, specs. Warm near-black, not pure black.
93
+ - **Muted Grey** (`#6d6d70`): Muted text at 80% opacity for subtitles, toggle labels, secondary copy. Rendered as `rgba(109, 109, 112, 0.8)` in live DOM.
94
+ - **Pure Black** (`#000000`): Highest-contrast element labels and select heading contexts.
95
+
96
+ ### Semantic
97
+
98
+ - **Warning Orange** (`#fe8f16`): "Save 20%" promo badge on Annual billing toggle. Only semantic color on the pricing surface.
99
+ - **On-Primary White** (`#ffffff`): Text on all green backgrounds.
100
+
101
+ ## 3. Typography Rules
102
+
103
+ ### Font Family
104
+
105
+ - **Display**: `Flare` — a custom humanist serif used exclusively for H1, H2, H3 at headline sizes. Weight 400 across all display sizes (the letterforms carry authority via shape, not weight).
106
+ - **UI/Body**: `Pretendard Variable` — the Korean-standard humanist sans, weight 400 for body / 500 for buttons. Loaded as `"Pretendard Variable"` for button/body contexts.
107
+ - **Multilingual UI**: `"Pretendard JP Variable", "Pretendard JP", "Pretendard Variable"` — extended version for nav items and interactive controls supporting CJK glyph coverage.
108
+
109
+ ### Hierarchy
110
+
111
+ | Role | Font | Size | Weight | Notes |
112
+ |------|------|------|--------|-------|
113
+ | Hero Display | Flare | 54px | 400 | Homepage main H2 — color `#14371b` |
114
+ | Section Heading | Flare | 42px | 400 | Product-feature H2 |
115
+ | Page Title | Flare | 34px | 400 | Pricing page H1 |
116
+ | Feature H3 | Pretendard JP Variable | 17px | 400 | Feature card heading |
117
+ | Nav Link | Pretendard JP Variable | 16px | 400 | Top nav items, height 36px |
118
+ | Body | Pretendard JP Variable | 16px | 400 | Body copy |
119
+ | Button Label | Pretendard Variable | 15px | 500 | All CTA buttons |
120
+ | Caption | Pretendard Variable | 14px | 400 | Dropdown items, footnotes |
121
+
122
+ ### Principles
123
+
124
+ - **Serif for persuasion, sans for function**: Flare carries all aspirational communication; Pretendard handles all operational UI. They never swap roles.
125
+ - **Weight-light at display**: Flare displays at weight 400 — authority through letterform, not boldness.
126
+ - **CJK readiness built in**: Pretendard JP Variable covers Korean, Japanese, and Latin seamlessly — essential for a product with large Korean and Japanese user bases.
127
+ - **Consistent 15px/500 buttons**: All button labels (primary, outline, ghost, toggle) share the same 15px Pretendard Variable 500 spec for visual cohesion across pricing tier differences.
128
+
129
+ ## 4. Component Stylings
130
+
131
+ ### Buttons
132
+
133
+ **Primary (Get started / Get Pro / Get Max)**
134
+ - Background: `#197b2e`
135
+ - Text: `#ffffff`
136
+ - Radius: 8px
137
+ - Height: 40px
138
+ - Font: 15px / 500 / Pretendard Variable
139
+ - Use: Primary upgrade CTAs in nav and pricing cards
140
+
141
+ **Outline (Start for free)**
142
+ - Background: `#ffffff`
143
+ - Text: `#1e1e1f`
144
+ - Border: 1px solid rgba(109, 109, 112, 0.24)
145
+ - Radius: 8px
146
+ - Height: 40px
147
+ - Font: 15px / 500 / Pretendard Variable
148
+ - Use: Free-tier CTA on pricing page — low-emphasis alternative
149
+
150
+ **Ghost Green (Contact us / Contact Liner)**
151
+ - Background: transparent
152
+ - Text: `#197b2e`
153
+ - Border: 1px solid `#197b2e`
154
+ - Radius: 8px
155
+ - Height: 40px
156
+ - Font: 15px / 500 / Pretendard Variable
157
+ - Use: Enterprise inquiry CTA — same green family, lower visual weight
158
+
159
+ **Hero Get-Started Pill**
160
+ - Background: transparent
161
+ - Text: `#000000`
162
+ - Border: 1px solid `#197b2e`
163
+ - Radius: 200px
164
+ - Height: 48px
165
+ - Font: 16px / 400 / Pretendard JP Variable
166
+ - Use: Hero section product-feature "Get started" — larger pill form for product emphasis
167
+
168
+ ### Inputs
169
+
170
+ **Default Search / Form**
171
+ - Background: `#f9f9fa`
172
+ - Border: 1px solid rgba(109, 109, 112, 0.12)
173
+ - Radius: 8px
174
+ - Text: `#1e1e1f`
175
+ - Placeholder: `#6d6d70` at 80% opacity
176
+ - Font: 16px / 400 / Pretendard JP Variable
177
+ - Use: Search and form inputs on live product surface
178
+
179
+ ### Cards & Containers
180
+
181
+ **Pricing Plan Card**
182
+ - Background: `#ffffff`
183
+ - Text: `#1e1e1f`
184
+ - Radius: 12px
185
+ - Shadow: 0 1px 4px rgba(0,0,0,0.08)
186
+ - Use: Plan tier cards (Free / Pro / Max / Enterprise) on pricing page
187
+
188
+ **Feature Card (Surface)**
189
+ - Background: `#f9f9fa`
190
+ - Text: `#1e1e1f`
191
+ - Radius: 12px
192
+ - Use: Feature highlight cards on light tinted sections
193
+
194
+ ### Badges
195
+
196
+ **Promo Badge (Save %)**
197
+ - Background: `#fe8f16`
198
+ - Text: `#ffffff`
199
+ - Radius: 9999px
200
+ - Font: 12px / 500 / Pretendard Variable
201
+ - Use: "Save 20%" badge on Annual billing selector
202
+
203
+ ### Tabs
204
+
205
+ **Product Selector (Active)**
206
+ - Background: `#edf3ed`
207
+ - Text: `#000000`
208
+ - Radius: 9999px
209
+ - Padding: 0px 20px
210
+ - Height: 48px
211
+ - Font: 16px / 400 / Pretendard JP Variable
212
+ - Use: Active state of Search / Research / Write product tabs
213
+
214
+ **Product Selector (Inactive)**
215
+ - Background: transparent
216
+ - Text: `#000000`
217
+ - Radius: 9999px
218
+ - Padding: 0px 20px
219
+ - Height: 48px
220
+ - Use: Inactive product tab states
221
+
222
+ ### Toggles
223
+
224
+ **Billing Toggle (Monthly / Annual)**
225
+ - Background: `#ffffff`
226
+ - Text active: `#1e1e1f`
227
+ - Text inactive: rgba(109, 109, 112, 0.8)
228
+ - Radius: 200px
229
+ - Height: 44px
230
+ - Use: Monthly / Annual billing period selector on pricing page
231
+
232
+ ---
233
+
234
+ **Verified:** 2026-06-22 (omd:add-reference CREATE — Tier 1 live inspect)
235
+ **Tier 1 sources:** https://liner.com, https://liner.com/pricing, https://liner.com/blog
236
+ **Tier 2 sources:** getdesign.md/liner — 404 (not listed); styles.refero.design/?q=liner — no Liner entry found after full search
237
+ **Conflicts unresolved:** none
238
+
239
+ ## 5. Layout Principles
240
+
241
+ ### Spacing System
242
+
243
+ - Base unit: 4px
244
+ - Scale: 4px, 8px, 12px, 16px, 20px, 24px, 40px
245
+ - Nav height: 36px interactive elements in a floating nav bar
246
+ - Button height: 40px (standard), 48px (hero pill)
247
+ - Section padding: generous whitespace between content bands — minimalist information hierarchy
248
+
249
+ ### Grid & Container
250
+
251
+ - Centered single-column hero with 54px Flare headline as the anchor
252
+ - Product tab selector sits beneath the hero, full-pill row of three options
253
+ - Pricing page uses a 4-column card layout (Free / Pro / Max / Enterprise) at desktop
254
+ - Feature sections in alternating white/light-surface bands following a top-to-bottom scroll narrative
255
+
256
+ ### Whitespace Philosophy
257
+
258
+ - **Breathe first, fill second**: Generous vertical spacing between all sections — AI product that respects professional attention.
259
+ - **Flat separation**: White vs `#f9f9fa` alternating backgrounds replace shadow stacks.
260
+ - **Green as punctuation**: `#197b2e` appears only on action nodes; the rest of the page is intentionally monochromatic.
261
+
262
+ ### Border Radius Scale
263
+
264
+ - 8px: Standard buttons, inputs, nav dropdown items
265
+ - 12px: Content cards, pricing plan cards
266
+ - 200px: Hero pill CTA, billing toggle container
267
+ - 9999px: Product selector pills, promo badges
268
+
269
+ ## 6. Depth & Elevation
270
+
271
+ | Level | Treatment | Use |
272
+ |-------|-----------|-----|
273
+ | Flat (0) | No shadow | Nav, hero, most content sections |
274
+ | Surface (1) | `#f9f9fa` background shift | Feature card groups, alternate page sections |
275
+ | Card (2) | `0 1px 4px rgba(0,0,0,0.08)` | Pricing plan cards |
276
+
277
+ **Shadow Philosophy**: Liner is near-shadowless. Live inspection confirmed `box-shadow: none` across nav, hero, product tabs, and most cards. Only pricing plan cards carry a light 1px-blur shadow. Depth is achieved through background tint shifts (`#f9f9fa`, `#f6f6f7`) and thin rgba-borders. The system signals "AI research tool" through clarity and restraint — visual noise is treated as a barrier to focus.
278
+
279
+ ## 7. Do's and Don'ts
280
+
281
+ ### Do
282
+ - Use Flare serif for all display headlines at weight 400 — let letterform do the work
283
+ - Use Pretendard Variable for all button labels and captions at 15px/500
284
+ - Reserve Liner Green (`#197b2e`) exclusively for primary action buttons
285
+ - Use Forest Dark (`#14371b`) for heading text — not pure black
286
+ - Apply 200px radius for hero pills and billing toggles; 8px for action buttons
287
+ - Separate page sections with `#f9f9fa` tint shifts and rgba borders — no shadow
288
+ - Use muted grey at 80% opacity for secondary and placeholder text
289
+ - Write button labels in sentence case at 15px/500 Pretendard
290
+
291
+ ### Don't
292
+ - Apply Flare to body copy or small UI text — it belongs exclusively to headlines
293
+ - Spread green (`#197b2e`) to decorative elements — it signals "action" only
294
+ - Use pure black (`#000000`) for heading text — the brand palette uses Forest Dark `#14371b`
295
+ - Stack heavy shadows or gradient overlays — Liner is a flat, clean AI system
296
+ - Use weight 700+ on display text — Flare at 400 is canonical; boldness is a design mistake here
297
+ - Mix border radius scales arbitrarily — 8px for buttons, 12px for cards, 200px for pills
298
+ - Create new saturated accent colors — the palette is intentionally near-monochromatic with single green
299
+
300
+ ## 8. Responsive Behavior
301
+
302
+ ### Breakpoints
303
+
304
+ | Name | Width | Key Changes |
305
+ |------|-------|-------------|
306
+ | Mobile | <640px | Nav collapses, hero headline font-size reduces, product tabs scroll horizontally |
307
+ | Tablet | 640-1024px | 2-column pricing card grid, moderate padding |
308
+ | Desktop | 1024px+ | Full 4-column pricing, centered hero, multi-column feature rows |
309
+
310
+ ### Touch Targets
311
+
312
+ - Standard buttons: 40px height — appropriate for professional keyboard-and-mouse desktop users
313
+ - Hero pill CTA: 48px height — generously tappable on tablet
314
+ - Product tabs: 48px height, full-pill — large touch target for mobile product switching
315
+ - Nav items: 36px — standard desktop nav hit area
316
+
317
+ ### Collapsing Strategy
318
+
319
+ - Hero 54px Flare headline scales down proportionally on mobile
320
+ - Product selector tabs compress to horizontal scroll row
321
+ - Pricing cards stack to single column below tablet
322
+ - Billing toggle remains full-width pill on all breakpoints
323
+
324
+ ## 9. Agent Prompt Guide
325
+
326
+ ### Quick Color Reference
327
+
328
+ - Primary action: Liner Green (`#197b2e`)
329
+ - Display headings: Forest Dark (`#14371b`)
330
+ - Active tab / tint: Primary Tint (`#edf3ed`)
331
+ - Background: White Canvas (`#ffffff`)
332
+ - Light surface: Surface Light (`#f9f9fa`)
333
+ - Body text: Near-Black Ink (`#1e1e1f`)
334
+ - Muted / placeholder: Muted Grey (`#6d6d70` at 80% opacity)
335
+ - Promo accent: Warning Orange (`#fe8f16`)
336
+
337
+ ### Example Component Prompts
338
+
339
+ - "Create a hero section on white background. Display headline at 54px Flare weight 400, color `#14371b`. Subtitle at 24px Pretendard JP Variable weight 400, color rgba(109,109,112,0.8). Green pill CTA: transparent background, 1px solid `#197b2e` border, 200px radius, 48px height, 16px Pretendard JP Variable, color `#000000`."
340
+ - "Design a pricing card: white background `#ffffff`, 12px radius, 0 1px 4px rgba(0,0,0,0.08) shadow. Plan name 17px Pretendard JP Variable 400 `#1e1e1f`. Primary CTA: `#197b2e` bg, white text, 8px radius, 40px height, 15px Pretendard Variable 500."
341
+ - "Build a product tab selector: full-pill container. Active tab: `#edf3ed` bg, `#000000` text, 9999px radius, 0px 20px padding, 48px height, 16px Pretendard JP Variable. Inactive: transparent, same dimensions."
342
+ - "Create nav: white background, 36px item height. 16px Pretendard JP Variable weight 400 `#000000` nav links. Right-aligned primary CTA: `#197b2e` bg, white text, 8px radius, 40px height, 15px Pretendard Variable 500."
343
+
344
+ ### Iteration Guide
345
+
346
+ 1. Flare at weight 400 for every headline; Pretendard Variable 400/500 for every UI element
347
+ 2. Liner Green (`#197b2e`) is the single action color — guard it fiercely
348
+ 3. No shadows except the lightest card shadow on pricing tiers
349
+ 4. Forest Dark `#14371b` for all display text — not black
350
+ 5. Radius is context-specific: 8px buttons, 12px cards, 200px pills
351
+ 6. Muted text = `rgba(109, 109, 112, 0.8)` — never a flat opaque grey
352
+ 7. Background separation = `#f9f9fa` tint, not depth/shadow
353
+
354
+ ---
355
+
356
+ ## 10. Voice & Tone
357
+
358
+ Liner's voice is **precise, professional, and quietly confident** — an AI research partner that speaks to knowledge workers, academics, and professionals who demand accuracy over hype. The homepage opener "Meet AI agents purpose-built for professionals to search smarter, research deeper, and write better" is declarative and benefit-led without exclamation or urgency. Liner's copy style strips away AI buzzwords and grounds every claim in a user outcome.
359
+
360
+ | Context | Tone |
361
+ |---|---|
362
+ | Hero headline | Confident, outcome-led. "Accurate AI agents built for smarter work." No exclamation, no jargon. |
363
+ | Feature descriptions | Benefit-first, precise. "Get accurate answers. Skip forward to relevant results." |
364
+ | Pricing CTAs | Direct, low-pressure. "Start for free." "Get Pro." "Contact us." Sentence case. |
365
+ | Blog engineering | Honest and technical. Shares startup constraints openly ("제한된 리소스로 디자인 시스템 개발하기"). |
366
+ | Product tab labels | Single-word clarity. "Search." "Research." "Write." |
367
+
368
+ **Voice samples (verbatim from live surface):**
369
+ - "Accurate AI agents built for smarter work" — homepage H2 (mission-framed, Flare serif). *(verified live 2026-06-22)*
370
+ - "Meet AI agents purpose-built for professionals to search smarter, research deeper, and write better" — homepage H1 subtitle. *(verified live 2026-06-22)*
371
+ - "Why pro is built for serious research" — pricing page H2 (audience-respecting, no hype). *(verified live 2026-06-22)*
372
+
373
+ **Forbidden register**: AI superlatives without grounding, urgency patterns ("Act now!"), casualness that undermines the professional research context, undefined technical jargon.
374
+
375
+ ## 11. Brand Narrative
376
+
377
+ Liner began around **2016** as a web-highlighting extension — a digital analog to drawing a yellow line on a physical page. The brand name itself comes from "liner" as in highlighter, and the signature green palette echoes that origin: the color you reach for when something matters. As the highlighting use case deepened, Liner evolved from passive curation (saving highlighted text) into active cognition assistance — surfacing what you saved, connecting research threads, and ultimately generating answers grounded in real sources.
378
+
379
+ By **2026**, Liner positions itself as "AI agents for professionals" with over **11 million users**, having made the transition from productivity extension to research copilot. The product now encompasses Search (AI-powered web search with cited answers), Research (deep-dive academic and multi-source reports), and Write (grounded writing with reference integration). The tagline "Inside the AI Search Engine 11M+ People Trust" signals the pivot from tool to trusted collaborator. The blog post "스타트업에서 제한된 리소스로 디자인 시스템 개발하기" (Building a design system with limited startup resources) reveals an engineering team that builds thoughtfully under constraint — a philosophy visible in the product itself: no unnecessary visual weight, no wasted motion.
380
+
381
+ Liner's positioning is squarely anti-hallucination: the word "accurate" appears in both the homepage headline and the brand's core product promise. For a Korean AI startup competing globally against entrenched players, "accuracy" is the chosen moat — not features, not UX bells, but epistemic trustworthiness.
382
+
383
+ ## 12. Principles
384
+
385
+ 1. **Accuracy before impression.** Liner's core promise is truthful, cited AI output. *UI implication:* source attribution is a first-class UI citizen; never hide provenance of AI-generated content.
386
+ 2. **Professional context, not consumer entertainment.** Liner serves researchers, academics, and knowledge workers. *UI implication:* dense information layouts are acceptable; playful micro-interactions are not the register.
387
+ 3. **One color, one action.** Liner Green (`#197b2e`) is the single call-to-action color. *UI implication:* every green element should be actionable; decorative green is a design error.
388
+ 4. **Serif for aspiration, sans for function.** Flare carries the brand promise; Pretendard carries the work. *UI implication:* never render operational UI in Flare; never render the brand headline in Pretendard.
389
+ 5. **Restraint as credibility.** A tool trusted with professional research earns that trust through visual discipline. *UI implication:* remove shadows, reduce palette, add whitespace before adding decoration.
390
+
391
+ ## 13. Personas
392
+
393
+ *Personas below are fictional archetypes informed by publicly observable Liner user segments (professionals, academics, knowledge workers), not individual people.*
394
+
395
+ **박지민, 27, 서울.** Graduate student using Liner's Research agent for literature reviews before writing papers. Values cited sources over generated summaries. Relies on the deep-research report feature because it feels more like a research assistant than a chatbot.
396
+
397
+ **Sarah K., 34, San Francisco.** Product strategist who uses Liner's Search to cut through content farms for industry signals. Appreciates that Liner doesn't hallucinate citations. Uses the Write feature to draft market analysis from her research highlights.
398
+
399
+ **田中 健, 41, Tokyo.** Senior analyst at a consulting firm who switched from manual search workflows to Liner after a colleague recommended it. Finds the Pretendard JP Variable rendering of Japanese text surprisingly clean. Uses it daily for competitive intelligence.
400
+
401
+ **이준호, 38, 판교.** Engineering lead at a Korean startup who read Liner's design-system blog post. Curious about the product for internal research tasks. Represents Liner's KR base where the brand began.
402
+
403
+ ## 14. States
404
+
405
+ | State | Treatment |
406
+ |---|---|
407
+ | **Empty (no search results)** | White canvas. Near-black `#1e1e1f` single-line message. One green CTA to refine query. No decorative illustration. |
408
+ | **Empty (no saved highlights)** | Muted grey `rgba(109,109,112,0.8)` copy explaining the state, with a green link to start searching. |
409
+ | **Loading (search in progress)** | Skeleton rows on `#f9f9fa` tinted surface at expected result heights, 8px radius. Flat shimmer — no heavy animation. |
410
+ | **Loading (research generation)** | Step-by-step progress indicator with source count updating; maintains context visible. |
411
+ | **Error (network / API failure)** | Inline message in near-black `#1e1e1f` with plain-language explanation; green retry CTA. |
412
+ | **Error (content not found)** | "No results" state with suggestion to broaden search terms; calm, non-accusatory tone. |
413
+ | **Success (research complete)** | Research report renders inline with source citations. No celebratory animation — the content is the reward. |
414
+ | **Skeleton** | `#f9f9fa` blocks at final content dimensions, 8px radius, flat opacity pulse. |
415
+ | **Disabled** | Muted grey `rgba(109,109,112,0.8)` label; green buttons fade to reduced opacity, not grey — preserves brand read. |
416
+ | **Focus** | 2px `#197b2e` outline on interactive elements — green focus ring consistent with the action color. |
417
+
418
+ ## 15. Motion & Easing
419
+
420
+ **Durations**:
421
+
422
+ | Token | Value | Use |
423
+ |---|---|---|
424
+ | `motion-fast` | 100ms | Hover state transitions, tab indicator movement |
425
+ | `motion-standard` | 200ms | Card reveals, dropdown open/close, billing toggle |
426
+ | `motion-slow` | 300ms | Page section entrance, research result streaming onset |
427
+
428
+ **Easings**:
429
+
430
+ | Token | Curve | Use |
431
+ |---|---|---|
432
+ | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Arriving elements — cards, dropdowns, research reports |
433
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
434
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Toggles, tab switches, two-way transitions |
435
+
436
+ **Motion rules**: Motion is minimal and purposeful — this is a professional research tool, not an entertainment experience. Product tabs switch at `motion-fast / ease-standard`; research results stream into view at `motion-slow / ease-enter` to signal that valuable content is arriving. No bounce, no spring, no celebration animations. Under `prefers-reduced-motion: reduce`, all transitions are instant. The product remains fully functional without animation — motion is an enhancement, not a dependency.
437
+
438
+ <!--
439
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
440
+
441
+ Tier 1 live inspect (2026-06-22) via playwright getComputedStyle on https://liner.com and https://liner.com/pricing:
442
+ - H2 "Accurate AI agents built for smarter work": Flare / 54px / weight 400 / color rgb(20,55,27) = #14371b
443
+ - H1 subtitle "Meet AI agents purpose-built for professionals": 24px / Pretendard JP Variable / color rgba(109,109,112,0.8)
444
+ - Nav "Get started" CTA: bg rgb(25,123,46) = #197b2e / white text / radius 8px / 40px height / 15px Pretendard Variable 500
445
+ - Hero "Get started" pill: transparent / border 1px solid rgb(25,123,46) / radius 200px / 48px height / 16px Pretendard JP Variable
446
+ - Product tab "Search" active: bg rgb(237,243,237) = #edf3ed / radius 3.35544e+07px (full pill) / 0px 20px padding / 48px height
447
+ - Pricing "Get Pro" / "Get Max": bg rgb(25,123,46) = #197b2e / white / 8px radius / 40px height / 15px 500
448
+ - Pricing "Start for free": bg rgb(255,255,255) / color rgb(30,30,31) = #1e1e1f / border 1px solid rgba(109,109,112,0.24) / 8px radius / 40px
449
+ - "Contact us" ghost: transparent / color rgb(25,123,46) / border 1px solid rgb(25,123,46) / 8px radius / 40px
450
+ - Pricing H1 "Liner pricing plan": Flare / 34px / weight 400 / color rgb(20,55,27)
451
+ - Pricing H2 "Why pro is built for serious research": Flare / 34px / weight 400 / color rgb(20,55,27)
452
+ - Body font-family: "Pretendard JP Variable", "Pretendard JP", "Pretendard Variable", sans-serif
453
+ - Body color: rgb(0,0,0); size 16px / weight 400
454
+ - Near-black body text on pricing: rgb(30,30,31) = #1e1e1f
455
+ - bgFreq (pricing page): #ffffff ×11, #f9f9fa ×7, #197b2e ×6
456
+ - fgFreq (pricing page): rgb(0,0,0) ×719, rgb(30,30,31) ×334, rgba(109,109,112,0.8) ×31, #ffffff ×18, #197b2e ×13, #14371b ×4, #fe8f16 ×1
457
+ - document.title: "AI agents for professionals | Search, academic research, write with Liner"
458
+ - Liner blog at liner.com/blog confirmed brand-owned; article "스타트업에서 제한된 리소스로 디자인 시스템 개발하기" found
459
+
460
+ Brand narrative (§11): Liner Inc. — Korean AI startup founded ~2016 as a web highlighter, evolved into AI research copilot. 11M+ users per homepage header. These facts are from the live homepage.
461
+
462
+ Personas (§13) are fictional archetypes. Names do not refer to real people.
463
+
464
+ Interpretive claims are editorial readings connecting observed design choices to Liner's brand positioning.
465
+ -->