glyph-ai 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +69 -0
  2. package/bundled/overlay/overlay.js +63 -0
  3. package/bundled/server/context/brand-references.d.ts +7 -0
  4. package/bundled/server/context/brand-references.d.ts.map +1 -0
  5. package/bundled/server/context/brand-references.js +20 -0
  6. package/bundled/server/context/brand-references.js.map +1 -0
  7. package/bundled/server/context/design-philosophy.d.ts +6 -0
  8. package/bundled/server/context/design-philosophy.d.ts.map +1 -0
  9. package/bundled/server/context/design-philosophy.js +82 -0
  10. package/bundled/server/context/design-philosophy.js.map +1 -0
  11. package/bundled/server/context/design-system-loader.d.ts +11 -0
  12. package/bundled/server/context/design-system-loader.d.ts.map +1 -0
  13. package/bundled/server/context/design-system-loader.js +169 -0
  14. package/bundled/server/context/design-system-loader.js.map +1 -0
  15. package/bundled/server/context/design-system.d.ts +7 -0
  16. package/bundled/server/context/design-system.d.ts.map +1 -0
  17. package/bundled/server/context/design-system.js +75 -0
  18. package/bundled/server/context/design-system.js.map +1 -0
  19. package/bundled/server/context/prompt-builder.d.ts +15 -0
  20. package/bundled/server/context/prompt-builder.d.ts.map +1 -0
  21. package/bundled/server/context/prompt-builder.js +123 -0
  22. package/bundled/server/context/prompt-builder.js.map +1 -0
  23. package/bundled/server/context/token-template.d.ts +36 -0
  24. package/bundled/server/context/token-template.d.ts.map +1 -0
  25. package/bundled/server/context/token-template.js +226 -0
  26. package/bundled/server/context/token-template.js.map +1 -0
  27. package/bundled/server/data/design-systems/apple-design-system.md +474 -0
  28. package/bundled/server/data/design-systems/arc-design-system.md +922 -0
  29. package/bundled/server/data/design-systems/claude-ai-design-system.md +1443 -0
  30. package/bundled/server/data/design-systems/elevenlabs-design-system.md +669 -0
  31. package/bundled/server/data/design-systems/generating_design.md +9 -0
  32. package/bundled/server/data/design-systems/linear-design-system.md +607 -0
  33. package/bundled/server/data/design-systems/notion-design-system.md +866 -0
  34. package/bundled/server/data/design-systems/raycast-design-system.md +709 -0
  35. package/bundled/server/data/design-systems/stripe-design-system.md +592 -0
  36. package/bundled/server/data/design-systems/vercel-design-system.md +824 -0
  37. package/bundled/server/data/design.md +971 -0
  38. package/bundled/server/index.d.ts +2 -0
  39. package/bundled/server/index.d.ts.map +1 -0
  40. package/bundled/server/index.js +310 -0
  41. package/bundled/server/index.js.map +1 -0
  42. package/bundled/server/mcp/tools/apply-variation.d.ts +3 -0
  43. package/bundled/server/mcp/tools/apply-variation.d.ts.map +1 -0
  44. package/bundled/server/mcp/tools/apply-variation.js +43 -0
  45. package/bundled/server/mcp/tools/apply-variation.js.map +1 -0
  46. package/bundled/server/mcp/tools/generate-variations.d.ts +3 -0
  47. package/bundled/server/mcp/tools/generate-variations.d.ts.map +1 -0
  48. package/bundled/server/mcp/tools/generate-variations.js +58 -0
  49. package/bundled/server/mcp/tools/generate-variations.js.map +1 -0
  50. package/bundled/server/mcp/tools/index.d.ts +3 -0
  51. package/bundled/server/mcp/tools/index.d.ts.map +1 -0
  52. package/bundled/server/mcp/tools/index.js +11 -0
  53. package/bundled/server/mcp/tools/index.js.map +1 -0
  54. package/bundled/server/mcp/tools/scan-design-system.d.ts +3 -0
  55. package/bundled/server/mcp/tools/scan-design-system.d.ts.map +1 -0
  56. package/bundled/server/mcp/tools/scan-design-system.js +27 -0
  57. package/bundled/server/mcp/tools/scan-design-system.js.map +1 -0
  58. package/bundled/server/mcp/tools/submit-variations.d.ts +3 -0
  59. package/bundled/server/mcp/tools/submit-variations.d.ts.map +1 -0
  60. package/bundled/server/mcp/tools/submit-variations.js +50 -0
  61. package/bundled/server/mcp/tools/submit-variations.js.map +1 -0
  62. package/bundled/server/mcp-entry.d.ts +2 -0
  63. package/bundled/server/mcp-entry.d.ts.map +1 -0
  64. package/bundled/server/mcp-entry.js +56 -0
  65. package/bundled/server/mcp-entry.js.map +1 -0
  66. package/bundled/server/preview/css-resolver.d.ts +6 -0
  67. package/bundled/server/preview/css-resolver.d.ts.map +1 -0
  68. package/bundled/server/preview/css-resolver.js +57 -0
  69. package/bundled/server/preview/css-resolver.js.map +1 -0
  70. package/bundled/server/preview/html-builder.d.ts +6 -0
  71. package/bundled/server/preview/html-builder.d.ts.map +1 -0
  72. package/bundled/server/preview/html-builder.js +85 -0
  73. package/bundled/server/preview/html-builder.js.map +1 -0
  74. package/bundled/server/telemetry.d.ts +4 -0
  75. package/bundled/server/telemetry.d.ts.map +1 -0
  76. package/bundled/server/telemetry.js +71 -0
  77. package/bundled/server/telemetry.js.map +1 -0
  78. package/bundled/server/types.d.ts +69 -0
  79. package/bundled/server/types.d.ts.map +1 -0
  80. package/bundled/server/types.js +2 -0
  81. package/bundled/server/types.js.map +1 -0
  82. package/bundled/server/variations/file-writer.d.ts +5 -0
  83. package/bundled/server/variations/file-writer.d.ts.map +1 -0
  84. package/bundled/server/variations/file-writer.js +29 -0
  85. package/bundled/server/variations/file-writer.js.map +1 -0
  86. package/bundled/server/variations/git-utils.d.ts +3 -0
  87. package/bundled/server/variations/git-utils.d.ts.map +1 -0
  88. package/bundled/server/variations/git-utils.js +23 -0
  89. package/bundled/server/variations/git-utils.js.map +1 -0
  90. package/bundled/server/variations/store.d.ts +11 -0
  91. package/bundled/server/variations/store.d.ts.map +1 -0
  92. package/bundled/server/variations/store.js +52 -0
  93. package/bundled/server/variations/store.js.map +1 -0
  94. package/dist/commands/init.d.ts +2 -0
  95. package/dist/commands/init.d.ts.map +1 -0
  96. package/dist/commands/init.js +299 -0
  97. package/dist/commands/init.js.map +1 -0
  98. package/dist/commands/stop.d.ts +2 -0
  99. package/dist/commands/stop.d.ts.map +1 -0
  100. package/dist/commands/stop.js +32 -0
  101. package/dist/commands/stop.js.map +1 -0
  102. package/dist/index.d.ts +3 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +35 -0
  105. package/dist/index.js.map +1 -0
  106. package/package.json +35 -0
@@ -0,0 +1,607 @@
1
+ # Linear.app Design System
2
+
3
+ > Source: [https://linear.app](https://linear.app)
4
+ > Date scraped: 2026-03-23
5
+
6
+ ---
7
+
8
+ ## Design System
9
+
10
+ ### Colors
11
+
12
+ | Role | Value | Description |
13
+ |------|-------|-------------|
14
+ | **Background (Primary)** | `rgb(8, 9, 10)` / `#08090A` | Near-black page background |
15
+ | **Background (Elevated)** | `rgb(40, 40, 44)` / `#28282C` | Cards, secondary buttons, dropdown panels |
16
+ | **Background (Surface)** | `rgba(255, 255, 255, 0.05)` | Subtle surface overlays |
17
+ | **Border (Default)** | `rgb(35, 37, 42)` / `#23252A` | Section dividers, footer border-top |
18
+ | **Border (Elevated)** | `rgb(62, 62, 68)` / `#3E3E44` | Secondary button borders |
19
+ | **Text (Primary)** | `rgb(247, 248, 248)` / `#F7F8F8` | Headings, primary body text |
20
+ | **Text (Secondary)** | `rgb(138, 143, 152)` / `#8A8F98` | Subtitles, descriptions, nav links |
21
+ | **Text (Feature Heading)** | `rgb(208, 214, 224)` / `#D0D6E0` | Sub-headings within feature cards |
22
+ | **Primary CTA** | `rgb(230, 230, 230)` / `#E6E6E6` | Primary button background (light on dark) |
23
+ | **Primary CTA Text** | `rgb(8, 9, 10)` / `#08090A` | Dark text on light buttons |
24
+ | **Accent** | `rgb(94, 106, 210)` / `#5E6AD2` | Skip-to-content link, brand purple (subtle) |
25
+
26
+ ### Typography
27
+
28
+ | Role | Font Family | Size | Weight | Line Height | Letter Spacing |
29
+ |------|-------------|------|--------|-------------|----------------|
30
+ | **Font Stack** | `"Inter Variable", "SF Pro Display", -apple-system, system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif` | | | | |
31
+ | **H1 (Hero)** | Inter Variable | `64px` | `510` | `64px` (1.0) | `-1.408px` (-2.2%) |
32
+ | **H1 (Page)** | Inter Variable | `48px` | `510` | `48px` (1.0) | `-1.056px` (-2.2%) |
33
+ | **H2 (Section)** | Inter Variable | `40px` | `510` | `44px` (1.1) | `-0.88px` (-2.2%) |
34
+ | **H3 (Card Title)** | Inter Variable | `24px` | `590` | — | — |
35
+ | **H3 (Feature Title)** | Inter Variable | `20px` | `590` | `26.6px` (1.33) | `-0.24px` |
36
+ | **H3 (Footer Column)** | Inter Variable | `13px` | `510` | `19.5px` (1.5) | `-0.13px` |
37
+ | **Body (Large)** | Inter Variable | `15px` | `400` | `24px` (1.6) | — |
38
+ | **Body (Default)** | Inter Variable | `14px` | `400` | `21px` (1.5) | — |
39
+ | **Label / Nav** | Inter Variable | `13px` | `400` | `19.5px` (1.5) | — |
40
+ | **Label (Emphasized)** | Inter Variable | `13px` | `510` | — | — |
41
+
42
+ **Notes:**
43
+ - Linear uses `Inter Variable` exclusively with variable font weights (510 = medium, 590 = semi-bold)
44
+ - Letter spacing is consistently negative on headings (~-2.2%) for tight, modern feel
45
+ - Line height on hero/page headings is 1.0 (equal to font size) for extremely tight leading
46
+
47
+ ### Button Styling
48
+
49
+ #### Primary Button (Invert)
50
+ ```
51
+ Background: rgb(230, 230, 230) / #E6E6E6
52
+ Text: rgb(8, 9, 10) / #08090A
53
+ Border: 1px solid rgb(230, 230, 230)
54
+ Border Radius: 4px
55
+ Font Size: 13px (nav) / 15px (CTA)
56
+ Font Weight: 510
57
+ Height: 32px (nav) / 40px (CTA)
58
+ Padding: 0 12px (nav) / 0 16px (CTA)
59
+ ```
60
+
61
+ #### Secondary Button
62
+ ```
63
+ Background: rgb(40, 40, 44) / #28282C
64
+ Text: rgb(247, 248, 248) / #F7F8F8
65
+ Border: 0.5px solid rgb(62, 62, 68) / #3E3E44
66
+ Border Radius: 4px
67
+ Font Size: 15px
68
+ Font Weight: 510
69
+ Height: 40px
70
+ Padding: 0 16px
71
+ ```
72
+
73
+ #### Ghost / Text Button
74
+ ```
75
+ Background: transparent
76
+ Text: rgb(138, 143, 152) / #8A8F98
77
+ Border: none
78
+ Border Radius: 4px
79
+ Padding: 0 12px
80
+ Font Size: 13px
81
+ ```
82
+
83
+ ### Input Fields
84
+
85
+ Linear's marketing site uses minimal form inputs. Toggle switches appear on the pricing page:
86
+ ```
87
+ Toggle (Checked): Blue/purple fill
88
+ Toggle Label: 13px, weight 400, secondary text color
89
+ ```
90
+
91
+ ### Spacing System
92
+
93
+ | Token | Value | Usage |
94
+ |-------|-------|-------|
95
+ | **Container Max Width** | `1364px` | Primary content container |
96
+ | **Container Padding** | `0 32px` | Horizontal page gutters |
97
+ | **Section Padding** | `96px 0 128px` | Vertical rhythm between feature sections |
98
+ | **CTA Section Margin** | `224px 0` | Extra breathing room around final CTA |
99
+ | **Main Top Padding** | `72px` | Space below fixed nav |
100
+ | **Footer Column Gap** | `32px` padding per column | Footer section horizontal spacing |
101
+ | **Footer Title Margin** | `0 0 24px` | Space below footer column headings |
102
+ | **Button Gap (CTA)** | `12px` | Gap between side-by-side CTA buttons |
103
+
104
+ ---
105
+
106
+ ## Section Boilerplate
107
+
108
+ ### Navigation
109
+
110
+ **Structure:**
111
+ ```
112
+ <header> (banner)
113
+ <nav aria-label="Main">
114
+ <ul aria-label="Site navigation">
115
+ <!-- Logo (left) -->
116
+ <li>
117
+ <a href="/homepage">
118
+ <img alt="Linear" /> <!-- SVG logo mark + wordmark -->
119
+ </a>
120
+ </li>
121
+
122
+ <!-- Center links -->
123
+ <div>
124
+ <div> <!-- left group -->
125
+ <li><a>Product</a></li> <!-- has dropdown -->
126
+ <li><a>Resources</a></li> <!-- has dropdown -->
127
+ <li><a>Customers</a></li>
128
+ <li><a>Pricing</a></li>
129
+ <li><a>Now</a></li>
130
+ <li><a>Contact</a></li>
131
+ </div>
132
+ <div> <!-- right group -->
133
+ <li><a>Log in</a></li>
134
+ <li><a>Sign up</a></li> <!-- primary button style -->
135
+ </div>
136
+ </div>
137
+ </ul>
138
+ </nav>
139
+ </header>
140
+ ```
141
+
142
+ **Styling:**
143
+ - Full-width, transparent background (`rgba(0,0,0,0)`)
144
+ - Inner wrapper: `max-width: 1364px`, centered
145
+ - Nav height: ~72px (implied from main top padding)
146
+ - Logo: left-aligned, SVG mark + wordmark
147
+ - Links: `13px`, weight `400`, color `rgb(138, 143, 152)` (secondary)
148
+ - Active nav link text becomes `rgb(247, 248, 248)` (primary white)
149
+ - Sign up button: primary invert style (light bg, dark text, `border-radius: 4px`)
150
+ - Vertical divider `|` separates nav links from auth links
151
+ - Nav is sticky/fixed on scroll
152
+
153
+ **Interactions - Product Dropdown:**
154
+ - Trigger: hover on "Product" link
155
+ - Panel appears below with 3-column grid of links
156
+ - Each item: title (white, weight 510) + description (secondary gray, 2 lines)
157
+ - Items: Intake, Build, Monitor, Plan, Diffs, Integrations
158
+ - Bottom bar: "New: UI refresh" link (left) + "Changelog" link (right)
159
+ - Panel has dark elevated background, subtle border, rounded corners
160
+ - Smooth fade-in/slide-down animation
161
+
162
+ **Interactions - Resources Dropdown:**
163
+ - Same trigger/animation pattern as Product
164
+ - Contains: About, Blog, Docs, Changelog, etc.
165
+
166
+ **Interactions - General:**
167
+ - Links have subtle opacity/color transition on hover (secondary -> primary white)
168
+ - No underlines on hover
169
+ - Sign up button has subtle hover brightness increase
170
+
171
+ ---
172
+
173
+ ### Hero
174
+
175
+ **Structure:**
176
+ ```
177
+ <section>
178
+ <div class="container" style="max-width: 1364px; padding: 0 32px;">
179
+ <!-- Title -->
180
+ <h1>The product development system for teams and agents</h1>
181
+
182
+ <!-- Description row -->
183
+ <div style="display: flex; justify-content: space-between; align-items: end;">
184
+ <p>Purpose-built for planning and building products.<br/>Designed for the AI era.</p>
185
+ <a>New Linear Diffs (Beta) -></a> <!-- announcement badge, right-aligned -->
186
+ </div>
187
+
188
+ <!-- Product screenshot / interactive demo -->
189
+ <div> <!-- full-width app screenshot with 3-pane layout --> </div>
190
+ </div>
191
+ </section>
192
+ ```
193
+
194
+ **Styling:**
195
+ - H1: `64px`, weight `510`, line-height `64px`, letter-spacing `-1.408px`, white
196
+ - Subtitle: `15px`, weight `400`, line-height `24px`, color `rgb(138, 143, 152)`
197
+ - Announcement link: right-aligned, secondary color with arrow, "New" badge
198
+ - Product screenshot: full container width, rounded corners, dark UI with subtle borders
199
+ - No traditional hero CTA buttons (the app screenshot IS the hero visual)
200
+ - Generous vertical spacing between title, subtitle, and screenshot
201
+
202
+ ---
203
+
204
+ ### Features (Repeating Section Pattern)
205
+
206
+ Linear's homepage uses 5 feature sections with a consistent pattern:
207
+
208
+ **Structure:**
209
+ ```
210
+ <section style="padding: 96px 0 128px;">
211
+ <div class="container" style="max-width: 1364px; padding: 0 32px;">
212
+ <!-- Header row: 2-column -->
213
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: ~40px;">
214
+ <h2>Make product<br/>operations self-driving</h2>
215
+ <div>
216
+ <p>Description text explaining the feature in 2-3 lines.</p>
217
+ <a>1.0 Intake -></a> <!-- numbered link with arrow -->
218
+ </div>
219
+ </div>
220
+
221
+ <!-- Visual: full-width product screenshot or interactive demo -->
222
+ <div> <!-- app UI screenshot --> </div>
223
+ </div>
224
+ </section>
225
+ ```
226
+
227
+ **Sections on homepage:**
228
+ 1. "Make product operations self-driving" (Intake)
229
+ 2. "Define the product direction" (Plan)
230
+ 3. "Move work forward across teams and agents" (Build)
231
+ 4. "Review PRs and agent output" (Diffs)
232
+ 5. "Understand progress at scale" (Monitor)
233
+
234
+ **Styling:**
235
+ - H2: `40px`, weight `510`, line-height `44px`, letter-spacing `-0.88px`, white
236
+ - Description: `15px`, weight `400`, line-height `24px`, secondary gray
237
+ - Section link: numbered prefix (e.g., "1.0"), product name, right arrow `->`, secondary color
238
+ - 2-column header layout: heading left, description + link right
239
+ - Full-width visuals below the header
240
+ - Sections separated by `96px` top + `128px` bottom padding
241
+
242
+ ---
243
+
244
+ ### Social Proof (Logo Bar)
245
+
246
+ **Structure (Homepage):**
247
+ ```
248
+ <div class="container">
249
+ <p>Linear powers over <strong>25,000</strong> product teams. From ambitious startups to major enterprises.</p>
250
+ <a href="/customers">Customer stories -></a>
251
+ </div>
252
+ <!-- Horizontal scrolling logo bar -->
253
+ <div> <!-- row of grayscale company logos --> </div>
254
+ ```
255
+
256
+ **Structure (Customers Page):**
257
+ ```
258
+ <section>
259
+ <!-- Stats -->
260
+ <div style="display: grid; grid-template-columns: 1fr 1fr;">
261
+ <div>
262
+ <p class="stat">2x</p>
263
+ <p>Increase in filed issues</p>
264
+ </div>
265
+ <div>
266
+ <p class="stat">1.6x</p>
267
+ <p>Faster issue resolution</p>
268
+ </div>
269
+ </div>
270
+ <p>Teams that switch to Linear create more issues and close them faster</p>
271
+ </section>
272
+ ```
273
+
274
+ **Styling:**
275
+ - Stats: large bold numbers, secondary description text
276
+ - Logos: grayscale, evenly spaced, horizontal scroll on mobile
277
+ - Company count bolded: `<strong>25,000</strong>`
278
+ - "Customer stories" link with right arrow
279
+
280
+ ---
281
+
282
+ ### Showcase (Customer Stories Grid)
283
+
284
+ **Structure (Customers Page):**
285
+ ```
286
+ <section>
287
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: ~24px;">
288
+ <!-- Featured story card -->
289
+ <a href="/customers/openai">
290
+ <div class="card" style="border-radius: 8px; overflow: hidden;">
291
+ <img alt="OpenAI" /> <!-- company logo -->
292
+ <div>
293
+ <p class="title">Why OpenAI chose Linear and scaled to 3,000 users</p>
294
+ <span>Read story <img alt="arrow" /></span>
295
+ </div>
296
+ </div>
297
+ </a>
298
+ <!-- Repeat for each story -->
299
+ </div>
300
+ </section>
301
+ ```
302
+
303
+ **Customer Logo Grid:**
304
+ ```
305
+ <section>
306
+ <h2>Powering 25,000+ ambitious product teams of all shapes and sizes</h2>
307
+ <!-- Tab filters -->
308
+ <div role="tablist">
309
+ <button role="tab" aria-selected="true">Featured</button>
310
+ <button role="tab">SaaS</button>
311
+ <button role="tab">AI</button>
312
+ <button role="tab">Fintech</button>
313
+ <button role="tab">Consumer</button>
314
+ <button role="tab">Hardware</button>
315
+ <button role="tab">Health</button>
316
+ <button role="tab">Enterprise</button>
317
+ </div>
318
+ <!-- Logo list -->
319
+ <div style="display: grid; grid-template-columns: repeat(auto-fill, ~200px);">
320
+ <a href="/customers/openai">
321
+ <img alt="OpenAI logo" />
322
+ <span>OpenAI</span>
323
+ <span class="tags">AI, Enterprise</span>
324
+ <span>Read story -></span>
325
+ </a>
326
+ <!-- Repeat -->
327
+ </div>
328
+ </section>
329
+ ```
330
+
331
+ **Styling:**
332
+ - Story cards: dark background with subtle geometric pattern overlay, rounded corners (`8px`)
333
+ - Card padding: ~28px
334
+ - Company logo: top-left of card
335
+ - Title: white, ~20px, weight 510
336
+ - "Read story" link: secondary gray with arrow icon
337
+ - 2-column grid for featured stories
338
+ - Logo grid: multi-column with company logo, name, category tags, and action link
339
+ - Tab filters: horizontal row, selected tab has active state
340
+
341
+ ---
342
+
343
+ ### Stats
344
+
345
+ **Structure:**
346
+ ```
347
+ <div style="display: grid; grid-template-columns: 1fr 1fr;">
348
+ <div>
349
+ <p style="font-size: ~40px; font-weight: 510;">2x</p>
350
+ <p style="font-size: 15px; color: rgb(138,143,152);">Increase in filed issues</p>
351
+ </div>
352
+ <div>
353
+ <p style="font-size: ~40px; font-weight: 510;">1.6x</p>
354
+ <p style="font-size: 15px; color: rgb(138,143,152);">Faster issue resolution</p>
355
+ </div>
356
+ </div>
357
+ <p>Teams that switch to Linear create more issues and close them faster</p>
358
+ ```
359
+
360
+ **Styling:**
361
+ - Stat number: large (~40px), weight 510, white
362
+ - Stat label: `15px`, secondary gray
363
+ - 2-column grid layout
364
+ - Supporting caption below stats in secondary gray
365
+
366
+ ---
367
+
368
+ ### Pricing
369
+
370
+ **Structure:**
371
+ ```
372
+ <section>
373
+ <div class="container">
374
+ <h1>Pricing</h1>
375
+
376
+ <!-- 4-column pricing grid -->
377
+ <div style="display: grid; grid-template-columns: repeat(4, 1fr); gap: ~24px;">
378
+ <!-- Tier card (repeated 4x) -->
379
+ <div>
380
+ <h3>Free</h3>
381
+ <div class="price">$0</div>
382
+ <p class="billing-note">Free for everyone</p>
383
+
384
+ <ul>
385
+ <li><img alt="check" /> Unlimited members</li>
386
+ <li><img alt="check" /> 2 teams</li>
387
+ <li><img alt="check" /> 250 issues</li>
388
+ <!-- ... -->
389
+ </ul>
390
+
391
+ <a class="btn-primary" href="/signup">Get started</a>
392
+ </div>
393
+
394
+ <!-- Basic -->
395
+ <div>
396
+ <h3>Basic</h3>
397
+ <div class="price">$10 <span>per user/month</span></div>
398
+ <label><input type="checkbox" checked /> Billed yearly</label>
399
+ <ul><!-- features --></ul>
400
+ <a href="/signup">Get started</a>
401
+ </div>
402
+
403
+ <!-- Business -->
404
+ <div>
405
+ <h3>Business</h3>
406
+ <div class="price">$16 <span>per user/month</span></div>
407
+ <label><input type="checkbox" checked /> Billed yearly</label>
408
+ <ul><!-- features --></ul>
409
+ <div>
410
+ <a href="/signup">Get started</a>
411
+ <a href="/contact/sales">Contact sales</a>
412
+ </div>
413
+ </div>
414
+
415
+ <!-- Enterprise -->
416
+ <div>
417
+ <h3>Enterprise</h3>
418
+ <div class="price">Custom</div>
419
+ <p>Annual billing only</p>
420
+ <ul><!-- features --></ul>
421
+ <a href="/contact/sales">Contact sales</a>
422
+ </div>
423
+ </div>
424
+
425
+ <!-- Social proof -->
426
+ <p>Trusted by more than <strong>25,000</strong> companies</p>
427
+ <!-- Logo row -->
428
+
429
+ <!-- Feature comparison table -->
430
+ <a>Customer stories -></a>
431
+ <table>
432
+ <thead>
433
+ <tr>
434
+ <th>Features</th>
435
+ <th>Free</th>
436
+ <th>Basic</th>
437
+ <th>Business</th>
438
+ <th>Enterprise</th>
439
+ </tr>
440
+ </thead>
441
+ <tbody>
442
+ <!-- Category headers as row groups: Core, AI and agent workflows, Integrations, etc. -->
443
+ <tr><td colspan="5" class="category">Core</td></tr>
444
+ <tr>
445
+ <td>Issues, projects, cycles, initiatives</td>
446
+ <td><img alt="check" /></td>
447
+ <td><img alt="check" /></td>
448
+ <td><img alt="check" /></td>
449
+ <td><img alt="check" /></td>
450
+ </tr>
451
+ <!-- ... rows ... -->
452
+ </tbody>
453
+ </table>
454
+ </div>
455
+ </section>
456
+ ```
457
+
458
+ **Styling:**
459
+ - H1 (page title): `48px`, weight `510`, letter-spacing `-1.056px`
460
+ - Tier name (H3): `24px`, weight `590`, white
461
+ - Price: large number, "per user/month" in smaller secondary text
462
+ - Feature list: checkmark icons (SVG, green/teal tint), `16px` text, white
463
+ - Billing toggle: checkbox-style toggle with label
464
+ - 4-column grid, equal width
465
+ - No visible card borders or backgrounds (cards are implied by column spacing)
466
+ - Comparison table: full-width, alternating category headers, checkmark/dash icons
467
+ - Category headers in table are non-row dividers (styled differently)
468
+
469
+ ---
470
+
471
+ ### CTA (Pre-footer)
472
+
473
+ **Structure:**
474
+ ```
475
+ <section style="margin: 224px 0; text-align: center;">
476
+ <h2 style="max-width: 16ch;">Built for the future. Available today.</h2>
477
+ <div style="display: flex; gap: 12px; justify-content: center;">
478
+ <a class="btn-primary" href="/signup">Get started</a>
479
+ <a class="btn-secondary" href="/contact/sales">Contact sales</a>
480
+ </div>
481
+ </section>
482
+ ```
483
+
484
+ **Styling:**
485
+ - H2: `40px`, weight `510`, centered, constrained to `max-width: 16ch`
486
+ - Two buttons side by side with `12px` gap
487
+ - Primary: light bg (`#E6E6E6`), dark text, `15px`, `40px` height, `border-radius: 4px`
488
+ - Secondary: dark bg (`#28282C`), light text, `0.5px` border `#3E3E44`, same size
489
+ - Massive vertical margin (`224px`) for breathing room
490
+ - No background color or decorative elements — pure typography + buttons
491
+
492
+ ---
493
+
494
+ ### Footer
495
+
496
+ **Structure:**
497
+ ```
498
+ <footer style="border-top: 1px solid rgb(35, 37, 42);">
499
+ <div style="max-width: 1364px; margin: 0 auto;">
500
+ <!-- Logo -->
501
+ <a href="/"><img alt="Linear Logo" /></a>
502
+
503
+ <!-- 6-column link grid -->
504
+ <div style="display: grid; grid-template-columns: repeat(6, 1fr);">
505
+ <!-- Column -->
506
+ <div style="padding: 0 32px;">
507
+ <h3>Product</h3>
508
+ <ul>
509
+ <li><a href="/intake">Intake</a></li>
510
+ <li><a href="/plan">Plan</a></li>
511
+ <li><a href="/build">Build</a></li>
512
+ <li><a href="/diffs">Diffs</a></li>
513
+ <li><a href="/monitor">Monitor</a></li>
514
+ <li><a href="/pricing">Pricing</a></li>
515
+ <li><a href="/security">Security</a></li>
516
+ </ul>
517
+ </div>
518
+
519
+ <div style="padding: 0 32px;">
520
+ <h3>Features</h3>
521
+ <ul>
522
+ <li><a>Asks</a></li>
523
+ <li><a>Agents</a></li>
524
+ <li><a>Customer Requests</a></li>
525
+ <li><a>Insights</a></li>
526
+ <li><a>Mobile</a></li>
527
+ <li><a>Integrations</a></li>
528
+ <li><a>Changelog</a></li>
529
+ </ul>
530
+ </div>
531
+
532
+ <div style="padding: 0 32px;">
533
+ <h3>Company</h3>
534
+ <ul>
535
+ <li><a>About</a></li>
536
+ <li><a>Customers</a></li>
537
+ <li><a>Careers</a></li>
538
+ <li><a>Blog</a></li>
539
+ <li><a>Method</a></li>
540
+ <li><a>Quality</a></li>
541
+ <li><a>Brand</a></li>
542
+ </ul>
543
+ </div>
544
+
545
+ <div style="padding: 0 32px;">
546
+ <h3>Resources</h3>
547
+ <ul>
548
+ <li><a>Switch</a></li>
549
+ <li><a>Download</a></li>
550
+ <li><a>Documentation</a></li>
551
+ <li><a>Developers</a></li>
552
+ <li><a>Status</a></li>
553
+ <li><a>Enterprise</a></li>
554
+ <li><a>Startups</a></li>
555
+ </ul>
556
+ </div>
557
+
558
+ <div style="padding: 0 32px;">
559
+ <h3>Connect</h3>
560
+ <ul>
561
+ <li><a>Contact us</a></li>
562
+ <li><a>Community</a></li>
563
+ <li><a>X (Twitter)</a></li>
564
+ <li><a>GitHub</a></li>
565
+ <li><a>YouTube</a></li>
566
+ </ul>
567
+ </div>
568
+ </div>
569
+
570
+ <!-- Legal links -->
571
+ <div>
572
+ <a href="/privacy">Privacy</a>
573
+ <a href="/terms">Terms</a>
574
+ <a href="/dpa">DPA</a>
575
+ </div>
576
+ </div>
577
+ </footer>
578
+ ```
579
+
580
+ **Styling:**
581
+ - Background: same as page (`#08090A`)
582
+ - Top border: `1px solid rgb(35, 37, 42)` (subtle separator)
583
+ - Inner container: `max-width: 1364px`, centered
584
+ - Column headers (H3): `13px`, weight `510`, white, `margin-bottom: 24px`
585
+ - Links: `13px`, secondary gray color, no underline
586
+ - Links hover: transition to white
587
+ - Column padding: `0 32px`
588
+ - Legal links: bottom row, same secondary styling
589
+ - Logo: Linear mark only (no wordmark), top-left
590
+
591
+ ---
592
+
593
+ ### Sections NOT present on linear.app:
594
+
595
+ The following sections from the requested list are **not present** on Linear's marketing site:
596
+
597
+ | Section | Status |
598
+ |---------|--------|
599
+ | **About** | Exists at `/about` but follows the same feature section pattern (H1 + body text + visuals) |
600
+ | **Blog** | Exists at `/blog` — standard blog listing with card grid |
601
+ | **Comparison** | Not present as a dedicated section |
602
+ | **Contact** | Exists at `/contact` — minimal form page |
603
+ | **Downloads** | Exists at `/download` — simple app download links |
604
+ | **FAQ** | Not present on marketing pages |
605
+ | **How It Works** | Handled by the feature sections pattern above |
606
+ | **Newsletter** | Not present |
607
+ | **Store** | Not present |