heraspec 0.1.12 → 0.1.14

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 (129) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +188 -103
  3. package/bin/heraspec.js +4805 -1122
  4. package/bin/heraspec.js.map +4 -4
  5. package/dist/core/templates/skills/CHANGELOG.md +117 -117
  6. package/dist/core/templates/skills/README-template.md +58 -58
  7. package/dist/core/templates/skills/README.md +38 -38
  8. package/dist/core/templates/skills/content-optimization-skill.md +104 -104
  9. package/dist/core/templates/skills/data/design-systems.csv +54 -0
  10. package/dist/core/templates/skills/data/pages-proposed.csv +21 -21
  11. package/dist/core/templates/skills/data/pages.csv +9 -9
  12. package/dist/core/templates/skills/data/typography.csv +57 -57
  13. package/dist/core/templates/skills/deploy-documentation-skill.md +408 -0
  14. package/dist/core/templates/skills/design-system-skill.md +176 -0
  15. package/dist/core/templates/skills/documents/templates/documentation-landing-page.html +63 -63
  16. package/dist/core/templates/skills/documents/templates/documentation.html +49 -49
  17. package/dist/core/templates/skills/documents/templates/landing-script.js +38 -38
  18. package/dist/core/templates/skills/documents/templates/landing-style.css +158 -158
  19. package/dist/core/templates/skills/documents/templates/script.js +56 -56
  20. package/dist/core/templates/skills/documents/templates/style.css +155 -155
  21. package/dist/core/templates/skills/documents/templates/technical-doc-template.md +16 -16
  22. package/dist/core/templates/skills/documents/templates/user-guide-template.md +16 -16
  23. package/dist/core/templates/skills/documents-skill.md +104 -104
  24. package/dist/core/templates/skills/e2e-test-skill.md +119 -119
  25. package/dist/core/templates/skills/git-embed-skill.md +57 -0
  26. package/dist/core/templates/skills/integration-test-skill.md +118 -118
  27. package/dist/core/templates/skills/knowledge/README.md +63 -0
  28. package/dist/core/templates/skills/knowledge/design-systems/airbnb/DESIGN.md +246 -0
  29. package/dist/core/templates/skills/knowledge/design-systems/airtable/DESIGN.md +89 -0
  30. package/dist/core/templates/skills/knowledge/design-systems/apple/DESIGN.md +313 -0
  31. package/dist/core/templates/skills/knowledge/design-systems/bmw/DESIGN.md +180 -0
  32. package/dist/core/templates/skills/knowledge/design-systems/cal/DESIGN.md +259 -0
  33. package/dist/core/templates/skills/knowledge/design-systems/claude/DESIGN.md +312 -0
  34. package/dist/core/templates/skills/knowledge/design-systems/clay/DESIGN.md +304 -0
  35. package/dist/core/templates/skills/knowledge/design-systems/clickhouse/DESIGN.md +281 -0
  36. package/dist/core/templates/skills/knowledge/design-systems/cohere/DESIGN.md +266 -0
  37. package/dist/core/templates/skills/knowledge/design-systems/coinbase/DESIGN.md +129 -0
  38. package/dist/core/templates/skills/knowledge/design-systems/composio/DESIGN.md +307 -0
  39. package/dist/core/templates/skills/knowledge/design-systems/cursor/DESIGN.md +309 -0
  40. package/dist/core/templates/skills/knowledge/design-systems/elevenlabs/DESIGN.md +265 -0
  41. package/dist/core/templates/skills/knowledge/design-systems/expo/DESIGN.md +281 -0
  42. package/dist/core/templates/skills/knowledge/design-systems/figma/DESIGN.md +220 -0
  43. package/dist/core/templates/skills/knowledge/design-systems/framer/DESIGN.md +246 -0
  44. package/dist/core/templates/skills/knowledge/design-systems/hashicorp/DESIGN.md +278 -0
  45. package/dist/core/templates/skills/knowledge/design-systems/ibm/DESIGN.md +332 -0
  46. package/dist/core/templates/skills/knowledge/design-systems/index.json +72 -0
  47. package/dist/core/templates/skills/knowledge/design-systems/intercom/DESIGN.md +146 -0
  48. package/dist/core/templates/skills/knowledge/design-systems/kraken/DESIGN.md +125 -0
  49. package/dist/core/templates/skills/knowledge/design-systems/linear.app/DESIGN.md +367 -0
  50. package/dist/core/templates/skills/knowledge/design-systems/lovable/DESIGN.md +298 -0
  51. package/dist/core/templates/skills/knowledge/design-systems/minimax/DESIGN.md +257 -0
  52. package/dist/core/templates/skills/knowledge/design-systems/mintlify/DESIGN.md +326 -0
  53. package/dist/core/templates/skills/knowledge/design-systems/miro/DESIGN.md +108 -0
  54. package/dist/core/templates/skills/knowledge/design-systems/mistral.ai/DESIGN.md +261 -0
  55. package/dist/core/templates/skills/knowledge/design-systems/mongodb/DESIGN.md +266 -0
  56. package/dist/core/templates/skills/knowledge/design-systems/notion/DESIGN.md +309 -0
  57. package/dist/core/templates/skills/knowledge/design-systems/nvidia/DESIGN.md +293 -0
  58. package/dist/core/templates/skills/knowledge/design-systems/ollama/DESIGN.md +267 -0
  59. package/dist/core/templates/skills/knowledge/design-systems/opencode.ai/DESIGN.md +281 -0
  60. package/dist/core/templates/skills/knowledge/design-systems/pinterest/DESIGN.md +230 -0
  61. package/dist/core/templates/skills/knowledge/design-systems/posthog/DESIGN.md +256 -0
  62. package/dist/core/templates/skills/knowledge/design-systems/raycast/DESIGN.md +268 -0
  63. package/dist/core/templates/skills/knowledge/design-systems/replicate/DESIGN.md +261 -0
  64. package/dist/core/templates/skills/knowledge/design-systems/resend/DESIGN.md +303 -0
  65. package/dist/core/templates/skills/knowledge/design-systems/revolut/DESIGN.md +185 -0
  66. package/dist/core/templates/skills/knowledge/design-systems/runwayml/DESIGN.md +244 -0
  67. package/dist/core/templates/skills/knowledge/design-systems/sanity/DESIGN.md +357 -0
  68. package/dist/core/templates/skills/knowledge/design-systems/sentry/DESIGN.md +262 -0
  69. package/dist/core/templates/skills/knowledge/design-systems/spacex/DESIGN.md +194 -0
  70. package/dist/core/templates/skills/knowledge/design-systems/spotify/DESIGN.md +246 -0
  71. package/dist/core/templates/skills/knowledge/design-systems/stripe/DESIGN.md +322 -0
  72. package/dist/core/templates/skills/knowledge/design-systems/supabase/DESIGN.md +255 -0
  73. package/dist/core/templates/skills/knowledge/design-systems/superhuman/DESIGN.md +252 -0
  74. package/dist/core/templates/skills/knowledge/design-systems/together.ai/DESIGN.md +263 -0
  75. package/dist/core/templates/skills/knowledge/design-systems/uber/DESIGN.md +295 -0
  76. package/dist/core/templates/skills/knowledge/design-systems/vercel/DESIGN.md +310 -0
  77. package/dist/core/templates/skills/knowledge/design-systems/voltagent/DESIGN.md +323 -0
  78. package/dist/core/templates/skills/knowledge/design-systems/warp/DESIGN.md +253 -0
  79. package/dist/core/templates/skills/knowledge/design-systems/webflow/DESIGN.md +92 -0
  80. package/dist/core/templates/skills/knowledge/design-systems/wise/DESIGN.md +173 -0
  81. package/dist/core/templates/skills/knowledge/design-systems/x.ai/DESIGN.md +257 -0
  82. package/dist/core/templates/skills/knowledge/design-systems/zapier/DESIGN.md +328 -0
  83. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/profile.json +27 -0
  84. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/structure.md +137 -0
  85. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/profile.json +39 -0
  86. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/structure.md +208 -0
  87. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/profile.json +51 -0
  88. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/structure.md +369 -0
  89. package/dist/core/templates/skills/knowledge/index.json +65 -0
  90. package/dist/core/templates/skills/module-codebase-skill.md +110 -110
  91. package/dist/core/templates/skills/plugin-directory-skill.md +396 -396
  92. package/dist/core/templates/skills/project-memory-skill.md +222 -0
  93. package/dist/core/templates/skills/project-memory-skill.vi.md +223 -0
  94. package/dist/core/templates/skills/scripts/CODE_EXPLANATION.md +394 -394
  95. package/dist/core/templates/skills/scripts/SEARCH_ALGORITHMS_COMPARISON.md +421 -421
  96. package/dist/core/templates/skills/scripts/SEARCH_MODES_GUIDE.md +238 -238
  97. package/dist/core/templates/skills/scripts/__pycache__/core.cpython-311.pyc +0 -0
  98. package/dist/core/templates/skills/scripts/core.py +391 -385
  99. package/dist/core/templates/skills/scripts/search.py +1 -1
  100. package/dist/core/templates/skills/smart-explore-skill.md +141 -0
  101. package/dist/core/templates/skills/sourcecode-analyzer-skill.md +210 -0
  102. package/dist/core/templates/skills/sourcecode-analyzer-skill.vi.md +210 -0
  103. package/dist/core/templates/skills/suggestion-skill.md +118 -118
  104. package/dist/core/templates/skills/templates/accessibility-checklist.md +40 -40
  105. package/dist/core/templates/skills/templates/example-prompt-full-theme.md +333 -333
  106. package/dist/core/templates/skills/templates/page-types-guide.md +338 -338
  107. package/dist/core/templates/skills/templates/pages-proposed-summary.md +273 -273
  108. package/dist/core/templates/skills/templates/pre-delivery-checklist.md +42 -42
  109. package/dist/core/templates/skills/templates/prompt-template-full-theme.md +313 -313
  110. package/dist/core/templates/skills/templates/responsive-design.md +40 -40
  111. package/dist/core/templates/skills/ui-ux-skill.md +595 -584
  112. package/dist/core/templates/skills/unit-test-skill.md +111 -111
  113. package/dist/core/templates/skills/ux-element/templates/Controller.php +50 -50
  114. package/dist/core/templates/skills/ux-element/templates/Shortcode.php +23 -23
  115. package/dist/core/templates/skills/ux-element/templates/Template.html +20 -20
  116. package/dist/core/templates/skills/ux-element/templates/Thumbnail.svg +8 -8
  117. package/dist/core/templates/skills/ux-element/templates/View.php +21 -21
  118. package/dist/core/templates/skills/ux-element-skill.md +83 -83
  119. package/dist/core/templates/skills/wordpress-plugin-check-skill.md +151 -76
  120. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-dashboard.php +47 -47
  121. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-settings.php +60 -60
  122. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-css.css +22 -22
  123. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-js.js +15 -15
  124. package/dist/core/templates/skills/wordpress-plugin-standard/templates/plugin-main.php +169 -169
  125. package/dist/core/templates/skills/wordpress-plugin-standard/templates/readme.txt +41 -41
  126. package/dist/core/templates/skills/wordpress-plugin-standard/templates/uninstall.php +21 -21
  127. package/dist/core/templates/skills/wordpress-plugin-standard-skill.md +100 -100
  128. package/dist/index.js +4068 -278
  129. package/package.json +75 -72
@@ -0,0 +1,367 @@
1
+ # Design System: Linear
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Linear's website is a masterclass in dark-mode-first product design — a near-black canvas (`#08090a`) where content emerges from darkness like starlight. The overall impression is one of extreme precision engineering: every element exists in a carefully calibrated hierarchy of luminance, from barely-visible borders (`rgba(255,255,255,0.05)`) to soft, luminous text (`#f7f8f8`). This is not a dark theme applied to a light design — it is darkness as the native medium, where information density is managed through subtle gradations of white opacity rather than color variation.
6
+
7
+ The typography system is built entirely on Inter Variable with OpenType features `"cv01"` and `"ss03"` enabled globally, giving the typeface a cleaner, more geometric character. Inter is used at a remarkable range of weights — from 300 (light body) through 510 (medium, Linear's signature weight) to 590 (semibold emphasis). The 510 weight is particularly distinctive: it sits between regular and medium, creating a subtle emphasis that doesn't shout. At display sizes (72px, 64px, 48px), Inter uses aggressive negative letter-spacing (-1.584px to -1.056px), creating compressed, authoritative headlines that feel engineered rather than designed. Berkeley Mono serves as the monospace companion for code and technical labels, with fallbacks to ui-monospace, SF Mono, and Menlo.
8
+
9
+ The color system is almost entirely achromatic — dark backgrounds with white/gray text — punctuated by a single brand accent: Linear's signature indigo-violet (`#5e6ad2` for backgrounds, `#7170ff` for interactive accents). This accent color is used sparingly and intentionally, appearing only on CTAs, active states, and brand elements. The border system uses ultra-thin, semi-transparent white borders (`rgba(255,255,255,0.05)` to `rgba(255,255,255,0.08)`) that create structure without visual noise, like wireframes drawn in moonlight.
10
+
11
+ **Key Characteristics:**
12
+ - Dark-mode-native: `#08090a` marketing background, `#0f1011` panel background, `#191a1b` elevated surfaces
13
+ - Inter Variable with `"cv01", "ss03"` globally — geometric alternates for a cleaner aesthetic
14
+ - Signature weight 510 (between regular and medium) for most UI text
15
+ - Aggressive negative letter-spacing at display sizes (-1.584px at 72px, -1.056px at 48px)
16
+ - Brand indigo-violet: `#5e6ad2` (bg) / `#7170ff` (accent) / `#828fff` (hover) — the only chromatic color in the system
17
+ - Semi-transparent white borders throughout: `rgba(255,255,255,0.05)` to `rgba(255,255,255,0.08)`
18
+ - Button backgrounds at near-zero opacity: `rgba(255,255,255,0.02)` to `rgba(255,255,255,0.05)`
19
+ - Multi-layered shadows with inset variants for depth on dark surfaces
20
+ - Radix UI primitives as the component foundation (6 detected primitives)
21
+ - Success green (`#27a644`, `#10b981`) used only for status indicators
22
+
23
+ ## 2. Color Palette & Roles
24
+
25
+ ### Background Surfaces
26
+ - **Marketing Black** (`#010102` / `#08090a`): The deepest background — the canvas for hero sections and marketing pages. Near-pure black with an imperceptible blue-cool undertone.
27
+ - **Panel Dark** (`#0f1011`): Sidebar and panel backgrounds. One step up from the marketing black.
28
+ - **Level 3 Surface** (`#191a1b`): Elevated surface areas, card backgrounds, dropdowns.
29
+ - **Secondary Surface** (`#28282c`): The lightest dark surface — used for hover states and slightly elevated components.
30
+
31
+ ### Text & Content
32
+ - **Primary Text** (`#f7f8f8`): Near-white with a barely-warm cast. The default text color — not pure white, preventing eye strain on dark backgrounds.
33
+ - **Secondary Text** (`#d0d6e0`): Cool silver-gray for body text, descriptions, and secondary content.
34
+ - **Tertiary Text** (`#8a8f98`): Muted gray for placeholders, metadata, and de-emphasized content.
35
+ - **Quaternary Text** (`#62666d`): The most subdued text — timestamps, disabled states, subtle labels.
36
+
37
+ ### Brand & Accent
38
+ - **Brand Indigo** (`#5e6ad2`): Primary brand color — used for CTA button backgrounds, brand marks, and key interactive surfaces.
39
+ - **Accent Violet** (`#7170ff`): Brighter variant for interactive elements — links, active states, selected items.
40
+ - **Accent Hover** (`#828fff`): Lighter, more saturated variant for hover states on accent elements.
41
+ - **Security Lavender** (`#7a7fad`): Muted indigo used specifically for security-related UI elements.
42
+
43
+ ### Status Colors
44
+ - **Green** (`#27a644`): Primary success/active status. Used for "in progress" indicators.
45
+ - **Emerald** (`#10b981`): Secondary success — pill badges, completion states.
46
+
47
+ ### Border & Divider
48
+ - **Border Primary** (`#23252a`): Solid dark border for prominent separations.
49
+ - **Border Secondary** (`#34343a`): Slightly lighter solid border.
50
+ - **Border Tertiary** (`#3e3e44`): Lightest solid border variant.
51
+ - **Border Subtle** (`rgba(255,255,255,0.05)`): Ultra-subtle semi-transparent border — the default.
52
+ - **Border Standard** (`rgba(255,255,255,0.08)`): Standard semi-transparent border for cards, inputs, code blocks.
53
+ - **Line Tint** (`#141516`): Nearly invisible line for the subtlest divisions.
54
+ - **Line Tertiary** (`#18191a`): Slightly more visible divider line.
55
+
56
+ ### Light Mode Neutrals (for light theme contexts)
57
+ - **Light Background** (`#f7f8f8`): Page background in light mode.
58
+ - **Light Surface** (`#f3f4f5` / `#f5f6f7`): Subtle surface tinting.
59
+ - **Light Border** (`#d0d6e0`): Visible border in light contexts.
60
+ - **Light Border Alt** (`#e6e6e6`): Alternative lighter border.
61
+ - **Pure White** (`#ffffff`): Card surfaces, highlights.
62
+
63
+ ### Overlay
64
+ - **Overlay Primary** (`rgba(0,0,0,0.85)`): Modal/dialog backdrop — extremely dark for focus isolation.
65
+
66
+ ## 3. Typography Rules
67
+
68
+ ### Font Family
69
+ - **Primary**: `Inter Variable`, with fallbacks: `SF Pro Display, -apple-system, system-ui, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue`
70
+ - **Monospace**: `Berkeley Mono`, with fallbacks: `ui-monospace, SF Mono, Menlo`
71
+ - **OpenType Features**: `"cv01", "ss03"` enabled globally — cv01 provides an alternate lowercase 'a' (single-story), ss03 adjusts specific letterforms for a cleaner geometric appearance.
72
+
73
+ ### Hierarchy
74
+
75
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
76
+ |------|------|------|--------|-------------|----------------|-------|
77
+ | Display XL | Inter Variable | 72px (4.50rem) | 510 | 1.00 (tight) | -1.584px | Hero headlines, maximum impact |
78
+ | Display Large | Inter Variable | 64px (4.00rem) | 510 | 1.00 (tight) | -1.408px | Secondary hero text |
79
+ | Display | Inter Variable | 48px (3.00rem) | 510 | 1.00 (tight) | -1.056px | Section headlines |
80
+ | Heading 1 | Inter Variable | 32px (2.00rem) | 400 | 1.13 (tight) | -0.704px | Major section titles |
81
+ | Heading 2 | Inter Variable | 24px (1.50rem) | 400 | 1.33 | -0.288px | Sub-section headings |
82
+ | Heading 3 | Inter Variable | 20px (1.25rem) | 590 | 1.33 | -0.24px | Feature titles, card headers |
83
+ | Body Large | Inter Variable | 18px (1.13rem) | 400 | 1.60 (relaxed) | -0.165px | Introduction text, feature descriptions |
84
+ | Body Emphasis | Inter Variable | 17px (1.06rem) | 590 | 1.60 (relaxed) | normal | Emphasized body, sub-headings in content |
85
+ | Body | Inter Variable | 16px (1.00rem) | 400 | 1.50 | normal | Standard reading text |
86
+ | Body Medium | Inter Variable | 16px (1.00rem) | 510 | 1.50 | normal | Navigation, labels |
87
+ | Body Semibold | Inter Variable | 16px (1.00rem) | 590 | 1.50 | normal | Strong emphasis |
88
+ | Small | Inter Variable | 15px (0.94rem) | 400 | 1.60 (relaxed) | -0.165px | Secondary body text |
89
+ | Small Medium | Inter Variable | 15px (0.94rem) | 510 | 1.60 (relaxed) | -0.165px | Emphasized small text |
90
+ | Small Semibold | Inter Variable | 15px (0.94rem) | 590 | 1.60 (relaxed) | -0.165px | Strong small text |
91
+ | Small Light | Inter Variable | 15px (0.94rem) | 300 | 1.47 | -0.165px | De-emphasized body |
92
+ | Caption Large | Inter Variable | 14px (0.88rem) | 510–590 | 1.50 | -0.182px | Sub-labels, category headers |
93
+ | Caption | Inter Variable | 13px (0.81rem) | 400–510 | 1.50 | -0.13px | Metadata, timestamps |
94
+ | Label | Inter Variable | 12px (0.75rem) | 400–590 | 1.40 | normal | Button text, small labels |
95
+ | Micro | Inter Variable | 11px (0.69rem) | 510 | 1.40 | normal | Tiny labels |
96
+ | Tiny | Inter Variable | 10px (0.63rem) | 400–510 | 1.50 | -0.15px | Overline text, sometimes uppercase |
97
+ | Link Large | Inter Variable | 16px (1.00rem) | 400 | 1.50 | normal | Standard links |
98
+ | Link Medium | Inter Variable | 15px (0.94rem) | 510 | 2.67 | normal | Spaced navigation links |
99
+ | Link Small | Inter Variable | 14px (0.88rem) | 510 | 1.50 | normal | Compact links |
100
+ | Link Caption | Inter Variable | 13px (0.81rem) | 400–510 | 1.50 | -0.13px | Footer, metadata links |
101
+ | Mono Body | Berkeley Mono | 14px (0.88rem) | 400 | 1.50 | normal | Code blocks |
102
+ | Mono Caption | Berkeley Mono | 13px (0.81rem) | 400 | 1.50 | normal | Code labels |
103
+ | Mono Label | Berkeley Mono | 12px (0.75rem) | 400 | 1.40 | normal | Code metadata, sometimes uppercase |
104
+
105
+ ### Principles
106
+ - **510 is the signature weight**: Linear uses Inter Variable's 510 weight (between regular 400 and medium 500) as its default emphasis weight. This creates a subtly bolded feel without the heaviness of traditional medium or semibold.
107
+ - **Compression at scale**: Display sizes use progressively tighter letter-spacing — -1.584px at 72px, -1.408px at 64px, -1.056px at 48px, -0.704px at 32px. Below 24px, spacing relaxes toward normal.
108
+ - **OpenType as identity**: `"cv01", "ss03"` aren't decorative — they transform Inter into Linear's distinctive typeface, giving it a more geometric, purposeful character.
109
+ - **Three-tier weight system**: 400 (reading), 510 (emphasis/UI), 590 (strong emphasis). The 300 weight appears only in deliberately de-emphasized contexts.
110
+
111
+ ## 4. Component Stylings
112
+
113
+ ### Buttons
114
+
115
+ **Ghost Button (Default)**
116
+ - Background: `rgba(255,255,255,0.02)`
117
+ - Text: `#e2e4e7` (near-white)
118
+ - Padding: comfortable
119
+ - Radius: 6px
120
+ - Border: `1px solid rgb(36, 40, 44)`
121
+ - Outline: none
122
+ - Focus shadow: `rgba(0,0,0,0.1) 0px 4px 12px`
123
+ - Use: Standard actions, secondary CTAs
124
+
125
+ **Subtle Button**
126
+ - Background: `rgba(255,255,255,0.04)`
127
+ - Text: `#d0d6e0` (silver-gray)
128
+ - Padding: 0px 6px
129
+ - Radius: 6px
130
+ - Use: Toolbar actions, contextual buttons
131
+
132
+ **Primary Brand Button (Inferred)**
133
+ - Background: `#5e6ad2` (brand indigo)
134
+ - Text: `#ffffff`
135
+ - Padding: 8px 16px
136
+ - Radius: 6px
137
+ - Hover: `#828fff` shift
138
+ - Use: Primary CTAs ("Start building", "Sign up")
139
+
140
+ **Icon Button (Circle)**
141
+ - Background: `rgba(255,255,255,0.03)` or `rgba(255,255,255,0.05)`
142
+ - Text: `#f7f8f8` or `#ffffff`
143
+ - Radius: 50%
144
+ - Border: `1px solid rgba(255,255,255,0.08)`
145
+ - Use: Close, menu toggle, icon-only actions
146
+
147
+ **Pill Button**
148
+ - Background: transparent
149
+ - Text: `#d0d6e0`
150
+ - Padding: 0px 10px 0px 5px
151
+ - Radius: 9999px
152
+ - Border: `1px solid rgb(35, 37, 42)`
153
+ - Use: Filter chips, tags, status indicators
154
+
155
+ **Small Toolbar Button**
156
+ - Background: `rgba(255,255,255,0.05)`
157
+ - Text: `#62666d` (muted)
158
+ - Radius: 2px
159
+ - Border: `1px solid rgba(255,255,255,0.05)`
160
+ - Shadow: `rgba(0,0,0,0.03) 0px 1.2px 0px 0px`
161
+ - Font: 12px weight 510
162
+ - Use: Toolbar actions, quick-access controls
163
+
164
+ ### Cards & Containers
165
+ - Background: `rgba(255,255,255,0.02)` to `rgba(255,255,255,0.05)` (never solid — always translucent)
166
+ - Border: `1px solid rgba(255,255,255,0.08)` (standard) or `1px solid rgba(255,255,255,0.05)` (subtle)
167
+ - Radius: 8px (standard), 12px (featured), 22px (large panels)
168
+ - Shadow: `rgba(0,0,0,0.2) 0px 0px 0px 1px` or layered multi-shadow stacks
169
+ - Hover: subtle background opacity increase
170
+
171
+ ### Inputs & Forms
172
+
173
+ **Text Area**
174
+ - Background: `rgba(255,255,255,0.02)`
175
+ - Text: `#d0d6e0`
176
+ - Border: `1px solid rgba(255,255,255,0.08)`
177
+ - Padding: 12px 14px
178
+ - Radius: 6px
179
+
180
+ **Search Input**
181
+ - Background: transparent
182
+ - Text: `#f7f8f8`
183
+ - Padding: 1px 32px (icon-aware)
184
+
185
+ **Button-style Input**
186
+ - Text: `#8a8f98`
187
+ - Padding: 1px 6px
188
+ - Radius: 5px
189
+ - Focus shadow: multi-layer stack
190
+
191
+ ### Badges & Pills
192
+
193
+ **Success Pill**
194
+ - Background: `#10b981`
195
+ - Text: `#f7f8f8`
196
+ - Radius: 50% (circular)
197
+ - Font: 10px weight 510
198
+ - Use: Status dots, completion indicators
199
+
200
+ **Neutral Pill**
201
+ - Background: transparent
202
+ - Text: `#d0d6e0`
203
+ - Padding: 0px 10px 0px 5px
204
+ - Radius: 9999px
205
+ - Border: `1px solid rgb(35, 37, 42)`
206
+ - Font: 12px weight 510
207
+ - Use: Tags, filter chips, category labels
208
+
209
+ **Subtle Badge**
210
+ - Background: `rgba(255,255,255,0.05)`
211
+ - Text: `#f7f8f8`
212
+ - Padding: 0px 8px 0px 2px
213
+ - Radius: 2px
214
+ - Border: `1px solid rgba(255,255,255,0.05)`
215
+ - Font: 10px weight 510
216
+ - Use: Inline labels, version tags
217
+
218
+ ### Navigation
219
+ - Dark sticky header on near-black background
220
+ - Linear logomark left-aligned (SVG icon)
221
+ - Links: Inter Variable 13–14px weight 510, `#d0d6e0` text
222
+ - Active/hover: text lightens to `#f7f8f8`
223
+ - CTA: Brand indigo button or ghost button
224
+ - Mobile: hamburger collapse
225
+ - Search: command palette trigger (`/` or `Cmd+K`)
226
+
227
+ ### Image Treatment
228
+ - Product screenshots on dark backgrounds with subtle border (`rgba(255,255,255,0.08)`)
229
+ - Top-rounded images: `12px 12px 0px 0px` radius
230
+ - Dashboard/issue previews dominate feature sections
231
+ - Subtle shadow beneath screenshots: `rgba(0,0,0,0.4) 0px 2px 4px`
232
+
233
+ ## 5. Layout Principles
234
+
235
+ ### Spacing System
236
+ - Base unit: 8px
237
+ - Scale: 1px, 4px, 7px, 8px, 11px, 12px, 16px, 19px, 20px, 22px, 24px, 28px, 32px, 35px
238
+ - The 7px and 11px values suggest micro-adjustments for optical alignment
239
+ - Primary rhythm: 8px, 16px, 24px, 32px (standard 8px grid)
240
+
241
+ ### Grid & Container
242
+ - Max content width: approximately 1200px
243
+ - Hero: centered single-column with generous vertical padding
244
+ - Feature sections: 2–3 column grids for feature cards
245
+ - Full-width dark sections with internal max-width constraints
246
+ - Changelog: single-column timeline layout
247
+
248
+ ### Whitespace Philosophy
249
+ - **Darkness as space**: On Linear's dark canvas, empty space isn't white — it's absence. The near-black background IS the whitespace, and content emerges from it.
250
+ - **Compressed headlines, expanded surroundings**: Display text at 72px with -1.584px tracking is dense and compressed, but sits within vast dark padding. The contrast between typographic density and spatial generosity creates tension.
251
+ - **Section isolation**: Each feature section is separated by generous vertical padding (80px+) with no visible dividers — the dark background provides natural separation.
252
+
253
+ ### Border Radius Scale
254
+ - Micro (2px): Inline badges, toolbar buttons, subtle tags
255
+ - Standard (4px): Small containers, list items
256
+ - Comfortable (6px): Buttons, inputs, functional elements
257
+ - Card (8px): Cards, dropdowns, popovers
258
+ - Panel (12px): Panels, featured cards, section containers
259
+ - Large (22px): Large panel elements
260
+ - Full Pill (9999px): Chips, filter pills, status tags
261
+ - Circle (50%): Icon buttons, avatars, status dots
262
+
263
+ ## 6. Depth & Elevation
264
+
265
+ | Level | Treatment | Use |
266
+ |-------|-----------|-----|
267
+ | Flat (Level 0) | No shadow, `#010102` bg | Page background, deepest canvas |
268
+ | Subtle (Level 1) | `rgba(0,0,0,0.03) 0px 1.2px 0px` | Toolbar buttons, micro-elevation |
269
+ | Surface (Level 2) | `rgba(255,255,255,0.05)` bg + `1px solid rgba(255,255,255,0.08)` border | Cards, input fields, containers |
270
+ | Inset (Level 2b) | `rgba(0,0,0,0.2) 0px 0px 12px 0px inset` | Recessed panels, inner shadows |
271
+ | Ring (Level 3) | `rgba(0,0,0,0.2) 0px 0px 0px 1px` | Border-as-shadow technique |
272
+ | Elevated (Level 4) | `rgba(0,0,0,0.4) 0px 2px 4px` | Floating elements, dropdowns |
273
+ | Dialog (Level 5) | Multi-layer stack: `rgba(0,0,0,0) 0px 8px 2px, rgba(0,0,0,0.01) 0px 5px 2px, rgba(0,0,0,0.04) 0px 3px 2px, rgba(0,0,0,0.07) 0px 1px 1px, rgba(0,0,0,0.08) 0px 0px 1px` | Popovers, command palette, modals |
274
+ | Focus | `rgba(0,0,0,0.1) 0px 4px 12px` + additional layers | Keyboard focus on interactive elements |
275
+
276
+ **Shadow Philosophy**: On dark surfaces, traditional shadows (dark on dark) are nearly invisible. Linear solves this by using semi-transparent white borders as the primary depth indicator. Elevation isn't communicated through shadow darkness but through background luminance steps — each level slightly increases the white opacity of the surface background (`0.02` → `0.04` → `0.05`), creating a subtle stacking effect. The inset shadow technique (`rgba(0,0,0,0.2) 0px 0px 12px 0px inset`) creates a unique "sunken" effect for recessed panels, adding dimensional depth that traditional dark themes lack.
277
+
278
+ ## 7. Do's and Don'ts
279
+
280
+ ### Do
281
+ - Use Inter Variable with `"cv01", "ss03"` on ALL text — these features are fundamental to Linear's typeface identity
282
+ - Use weight 510 as your default emphasis weight — it's Linear's signature between-weight
283
+ - Apply aggressive negative letter-spacing at display sizes (-1.584px at 72px, -1.056px at 48px)
284
+ - Build on near-black backgrounds: `#08090a` for marketing, `#0f1011` for panels, `#191a1b` for elevated surfaces
285
+ - Use semi-transparent white borders (`rgba(255,255,255,0.05)` to `rgba(255,255,255,0.08)`) instead of solid dark borders
286
+ - Keep button backgrounds nearly transparent: `rgba(255,255,255,0.02)` to `rgba(255,255,255,0.05)`
287
+ - Reserve brand indigo (`#5e6ad2` / `#7170ff`) for primary CTAs and interactive accents only
288
+ - Use `#f7f8f8` for primary text — not pure `#ffffff`, which would be too harsh
289
+ - Apply the luminance stacking model: deeper = darker bg, elevated = slightly lighter bg
290
+
291
+ ### Don't
292
+ - Don't use pure white (`#ffffff`) as primary text — `#f7f8f8` prevents eye strain
293
+ - Don't use solid colored backgrounds for buttons — transparency is the system (rgba white at 0.02–0.05)
294
+ - Don't apply the brand indigo decoratively — it's reserved for interactive/CTA elements only
295
+ - Don't use positive letter-spacing on display text — Inter at large sizes always runs negative
296
+ - Don't use visible/opaque borders on dark backgrounds — borders should be whisper-thin semi-transparent white
297
+ - Don't skip the OpenType features (`"cv01", "ss03"`) — without them, it's generic Inter, not Linear's Inter
298
+ - Don't use weight 700 (bold) — Linear's maximum weight is 590, with 510 as the workhorse
299
+ - Don't introduce warm colors into the UI chrome — the palette is cool gray with blue-violet accent only
300
+ - Don't use drop shadows for elevation on dark surfaces — use background luminance stepping instead
301
+
302
+ ## 8. Responsive Behavior
303
+
304
+ ### Breakpoints
305
+ | Name | Width | Key Changes |
306
+ |------|-------|-------------|
307
+ | Mobile Small | <600px | Single column, compact padding |
308
+ | Mobile | 600–640px | Standard mobile layout |
309
+ | Tablet | 640–768px | Two-column grids begin |
310
+ | Desktop Small | 768–1024px | Full card grids, expanded padding |
311
+ | Desktop | 1024–1280px | Standard desktop, full navigation |
312
+ | Large Desktop | >1280px | Full layout, generous margins |
313
+
314
+ ### Touch Targets
315
+ - Buttons use comfortable padding with 6px radius minimum
316
+ - Navigation links at 13–14px with adequate spacing
317
+ - Pill tags have 10px horizontal padding for touch accessibility
318
+ - Icon buttons at 50% radius ensure circular, easy-to-tap targets
319
+ - Search trigger is prominently placed with generous hit area
320
+
321
+ ### Collapsing Strategy
322
+ - Hero: 72px → 48px → 32px display text, tracking adjusts proportionally
323
+ - Navigation: horizontal links + CTAs → hamburger menu at 768px
324
+ - Feature cards: 3-column → 2-column → single column stacked
325
+ - Product screenshots: maintain aspect ratio, may reduce padding
326
+ - Changelog: timeline maintains single-column through all sizes
327
+ - Footer: multi-column → stacked single column
328
+ - Section spacing: 80px+ → 48px on mobile
329
+
330
+ ### Image Behavior
331
+ - Dashboard screenshots maintain border treatment at all sizes
332
+ - Hero visuals simplify on mobile (fewer floating UI elements)
333
+ - Product screenshots use responsive sizing with consistent radius
334
+ - Dark background ensures screenshots blend naturally at any viewport
335
+
336
+ ## 9. Agent Prompt Guide
337
+
338
+ ### Quick Color Reference
339
+ - Primary CTA: Brand Indigo (`#5e6ad2`)
340
+ - Page Background: Marketing Black (`#08090a`)
341
+ - Panel Background: Panel Dark (`#0f1011`)
342
+ - Surface: Level 3 (`#191a1b`)
343
+ - Heading text: Primary White (`#f7f8f8`)
344
+ - Body text: Silver Gray (`#d0d6e0`)
345
+ - Muted text: Tertiary Gray (`#8a8f98`)
346
+ - Subtle text: Quaternary Gray (`#62666d`)
347
+ - Accent: Violet (`#7170ff`)
348
+ - Accent Hover: Light Violet (`#828fff`)
349
+ - Border (default): `rgba(255,255,255,0.08)`
350
+ - Border (subtle): `rgba(255,255,255,0.05)`
351
+ - Focus ring: Multi-layer shadow stack
352
+
353
+ ### Example Component Prompts
354
+ - "Create a hero section on `#08090a` background. Headline at 48px Inter Variable weight 510, line-height 1.00, letter-spacing -1.056px, color `#f7f8f8`, font-feature-settings `'cv01', 'ss03'`. Subtitle at 18px weight 400, line-height 1.60, color `#8a8f98`. Brand CTA button (`#5e6ad2`, 6px radius, 8px 16px padding) and ghost button (`rgba(255,255,255,0.02)` bg, `1px solid rgba(255,255,255,0.08)` border, 6px radius)."
355
+ - "Design a card on dark background: `rgba(255,255,255,0.02)` background, `1px solid rgba(255,255,255,0.08)` border, 8px radius. Title at 20px Inter Variable weight 590, letter-spacing -0.24px, color `#f7f8f8`. Body at 15px weight 400, color `#8a8f98`, letter-spacing -0.165px."
356
+ - "Build a pill badge: transparent background, `#d0d6e0` text, 9999px radius, 0px 10px padding, `1px solid #23252a` border, 12px Inter Variable weight 510."
357
+ - "Create navigation: dark sticky header on `#0f1011`. Inter Variable 13px weight 510 for links, `#d0d6e0` text. Brand indigo CTA `#5e6ad2` right-aligned with 6px radius. Bottom border: `1px solid rgba(255,255,255,0.05)`."
358
+ - "Design a command palette: `#191a1b` background, `1px solid rgba(255,255,255,0.08)` border, 12px radius, multi-layer shadow stack. Input at 16px Inter Variable weight 400, `#f7f8f8` text. Results list with 13px weight 510 labels in `#d0d6e0` and 12px metadata in `#62666d`."
359
+
360
+ ### Iteration Guide
361
+ 1. Always set font-feature-settings `"cv01", "ss03"` on all Inter text — this is non-negotiable for Linear's look
362
+ 2. Letter-spacing scales with font size: -1.584px at 72px, -1.056px at 48px, -0.704px at 32px, normal below 16px
363
+ 3. Three weights: 400 (read), 510 (emphasize/navigate), 590 (announce)
364
+ 4. Surface elevation via background opacity: `rgba(255,255,255, 0.02 → 0.04 → 0.05)` — never solid backgrounds on dark
365
+ 5. Brand indigo (`#5e6ad2` / `#7170ff`) is the only chromatic color — everything else is grayscale
366
+ 6. Borders are always semi-transparent white, never solid dark colors on dark backgrounds
367
+ 7. Berkeley Mono for any code or technical content, Inter Variable for everything else
@@ -0,0 +1,298 @@
1
+ # Design System: Lovable
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Lovable's website radiates warmth through restraint. The entire page sits on a creamy, parchment-toned background (`#f7f4ed`) that immediately separates it from the cold-white conventions of most developer tool sites. This isn't minimalism for minimalism's sake — it's a deliberate choice to feel approachable, almost analog, like a well-crafted notebook. The near-black text (`#1c1c1c`) against this warm cream creates a contrast ratio that's easy on the eyes while maintaining sharp readability.
6
+
7
+ The custom Camera Plain Variable typeface is the system's secret weapon. Unlike geometric sans-serifs that signal "tech company," Camera Plain has a humanist warmth — slightly rounded terminals, organic curves, and a comfortable reading rhythm. At display sizes (48px–60px), weight 600 with aggressive negative letter-spacing (-0.9px to -1.5px) compresses headlines into confident, editorial statements. The font uses `ui-sans-serif, system-ui` as fallbacks, acknowledging that the custom typeface carries the brand personality.
8
+
9
+ What makes Lovable's visual system distinctive is its opacity-driven depth model. Rather than using a traditional gray scale, the system modulates `#1c1c1c` at varying opacities (0.03, 0.04, 0.4, 0.82–0.83) to create a unified tonal range. Every shade of gray on the page is technically the same hue — just more or less transparent. This creates a visual coherence that's nearly impossible to achieve with arbitrary hex values. The border system follows suit: `1px solid #eceae4` for light divisions and `1px solid rgba(28, 28, 28, 0.4)` for stronger interactive boundaries.
10
+
11
+ **Key Characteristics:**
12
+ - Warm parchment background (`#f7f4ed`) — not white, not beige, a deliberate cream that feels hand-selected
13
+ - Camera Plain Variable typeface with humanist warmth and editorial letter-spacing at display sizes
14
+ - Opacity-driven color system: all grays derived from `#1c1c1c` at varying transparency levels
15
+ - Inset shadow technique on buttons: `rgba(255,255,255,0.2) 0px 0.5px 0px 0px inset, rgba(0,0,0,0.2) 0px 0px 0px 0.5px inset`
16
+ - Warm neutral border palette: `#eceae4` for subtle, `rgba(28,28,28,0.4)` for interactive elements
17
+ - Full-pill radius (`9999px`) used extensively for action buttons and icon containers
18
+ - Focus state uses `rgba(0,0,0,0.1) 0px 4px 12px` shadow for soft, warm emphasis
19
+ - shadcn/ui + Radix UI component primitives with Tailwind CSS utility styling
20
+
21
+ ## 2. Color Palette & Roles
22
+
23
+ ### Primary
24
+ - **Cream** (`#f7f4ed`): Page background, card surfaces, button surfaces. The foundation — warm, paper-like, human.
25
+ - **Charcoal** (`#1c1c1c`): Primary text, headings, dark button backgrounds. Not pure black — organic warmth.
26
+ - **Off-White** (`#fcfbf8`): Button text on dark backgrounds, subtle highlight. Barely distinguishable from pure white.
27
+
28
+ ### Neutral Scale (Opacity-Based)
29
+ - **Charcoal 100%** (`#1c1c1c`): Primary text, headings, dark surfaces.
30
+ - **Charcoal 83%** (`rgba(28,28,28,0.83)`): Strong secondary text.
31
+ - **Charcoal 82%** (`rgba(28,28,28,0.82)`): Body copy.
32
+ - **Muted Gray** (`#5f5f5d`): Secondary text, descriptions, captions.
33
+ - **Charcoal 40%** (`rgba(28,28,28,0.4)`): Interactive borders, button outlines.
34
+ - **Charcoal 4%** (`rgba(28,28,28,0.04)`): Subtle hover backgrounds, micro-tints.
35
+ - **Charcoal 3%** (`rgba(28,28,28,0.03)`): Barely-visible overlays, background depth.
36
+
37
+ ### Surface & Border
38
+ - **Light Cream** (`#eceae4`): Card borders, dividers, image outlines. The warm divider line.
39
+ - **Cream Surface** (`#f7f4ed`): Card backgrounds, section fills — same as page background for seamless integration.
40
+
41
+ ### Interactive
42
+ - **Ring Blue** (`#3b82f6` at 50% opacity): `--tw-ring-color`, Tailwind focus ring.
43
+ - **Focus Shadow** (`rgba(0,0,0,0.1) 0px 4px 12px`): Focus and active state shadow — soft, warm, diffused.
44
+
45
+ ### Inset Shadows
46
+ - **Button Inset** (`rgba(255,255,255,0.2) 0px 0.5px 0px 0px inset, rgba(0,0,0,0.2) 0px 0px 0px 0.5px inset, rgba(0,0,0,0.05) 0px 1px 2px 0px`): The signature multi-layer inset shadow on dark buttons.
47
+
48
+ ## 3. Typography Rules
49
+
50
+ ### Font Family
51
+ - **Primary**: `Camera Plain Variable`, with fallbacks: `ui-sans-serif, system-ui`
52
+ - **Weight range**: 400 (body/reading), 480 (special display), 600 (headings/emphasis)
53
+ - **Feature**: Variable font with continuous weight axis — allows fine-tuned intermediary weights like 480.
54
+
55
+ ### Hierarchy
56
+
57
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
58
+ |------|------|------|--------|-------------|----------------|-------|
59
+ | Display Hero | Camera Plain Variable | 60px (3.75rem) | 600 | 1.00–1.10 (tight) | -1.5px | Maximum impact, editorial |
60
+ | Display Alt | Camera Plain Variable | 60px (3.75rem) | 480 | 1.00 (tight) | normal | Lighter hero variant |
61
+ | Section Heading | Camera Plain Variable | 48px (3.00rem) | 600 | 1.00 (tight) | -1.2px | Feature section titles |
62
+ | Sub-heading | Camera Plain Variable | 36px (2.25rem) | 600 | 1.10 (tight) | -0.9px | Sub-sections |
63
+ | Card Title | Camera Plain Variable | 20px (1.25rem) | 400 | 1.25 (tight) | normal | Card headings |
64
+ | Body Large | Camera Plain Variable | 18px (1.13rem) | 400 | 1.38 | normal | Introductions |
65
+ | Body | Camera Plain Variable | 16px (1.00rem) | 400 | 1.50 | normal | Standard reading text |
66
+ | Button | Camera Plain Variable | 16px (1.00rem) | 400 | 1.50 | normal | Button labels |
67
+ | Button Small | Camera Plain Variable | 14px (0.88rem) | 400 | 1.50 | normal | Compact buttons |
68
+ | Link | Camera Plain Variable | 16px (1.00rem) | 400 | 1.50 | normal | Underline decoration |
69
+ | Link Small | Camera Plain Variable | 14px (0.88rem) | 400 | 1.50 | normal | Footer links |
70
+ | Caption | Camera Plain Variable | 14px (0.88rem) | 400 | 1.50 | normal | Metadata, small text |
71
+
72
+ ### Principles
73
+ - **Warm humanist voice**: Camera Plain Variable gives Lovable its approachable personality. The slightly rounded terminals and organic curves contrast with the sharp geometric sans-serifs used by most developer tools.
74
+ - **Variable weight as design tool**: The font supports continuous weight values (e.g., 480), enabling nuanced hierarchy beyond standard weight stops. Weight 480 at 60px creates a display style that feels lighter than semibold but stronger than regular.
75
+ - **Compression at scale**: Headlines use negative letter-spacing (-0.9px to -1.5px) for editorial impact. Body text stays at normal tracking for comfortable reading.
76
+ - **Two weights, clear roles**: 400 (body/UI/links/buttons) and 600 (headings/emphasis). The narrow weight range creates hierarchy through size and spacing, not weight variation.
77
+
78
+ ## 4. Component Stylings
79
+
80
+ ### Buttons
81
+
82
+ **Primary Dark (Inset Shadow)**
83
+ - Background: `#1c1c1c`
84
+ - Text: `#fcfbf8`
85
+ - Padding: 8px 16px
86
+ - Radius: 6px
87
+ - Shadow: `rgba(0,0,0,0) 0px 0px 0px 0px, rgba(0,0,0,0) 0px 0px 0px 0px, rgba(255,255,255,0.2) 0px 0.5px 0px 0px inset, rgba(0,0,0,0.2) 0px 0px 0px 0.5px inset, rgba(0,0,0,0.05) 0px 1px 2px 0px`
88
+ - Active: opacity 0.8
89
+ - Focus: `rgba(0,0,0,0.1) 0px 4px 12px` shadow
90
+ - Use: Primary CTA ("Start Building", "Get Started")
91
+
92
+ **Ghost / Outline**
93
+ - Background: transparent
94
+ - Text: `#1c1c1c`
95
+ - Padding: 8px 16px
96
+ - Radius: 6px
97
+ - Border: `1px solid rgba(28,28,28,0.4)`
98
+ - Active: opacity 0.8
99
+ - Focus: `rgba(0,0,0,0.1) 0px 4px 12px` shadow
100
+ - Use: Secondary actions ("Log In", "Documentation")
101
+
102
+ **Cream Surface**
103
+ - Background: `#f7f4ed`
104
+ - Text: `#1c1c1c`
105
+ - Padding: 8px 16px
106
+ - Radius: 6px
107
+ - No border
108
+ - Active: opacity 0.8
109
+ - Use: Tertiary actions, toolbar buttons
110
+
111
+ **Pill / Icon Button**
112
+ - Background: `#f7f4ed`
113
+ - Text: `#1c1c1c`
114
+ - Radius: 9999px (full pill)
115
+ - Shadow: same inset pattern as primary dark
116
+ - Opacity: 0.5 (default), 0.8 (active)
117
+ - Use: Additional actions, plan mode toggle, voice recording
118
+
119
+ ### Cards & Containers
120
+ - Background: `#f7f4ed` (matches page)
121
+ - Border: `1px solid #eceae4`
122
+ - Radius: 12px (standard), 16px (featured), 8px (compact)
123
+ - No box-shadow by default — borders define boundaries
124
+ - Image cards: `1px solid #eceae4` with 12px radius
125
+
126
+ ### Inputs & Forms
127
+ - Background: `#f7f4ed`
128
+ - Text: `#1c1c1c`
129
+ - Border: `1px solid #eceae4`
130
+ - Radius: 6px
131
+ - Focus: ring blue (`rgba(59,130,246,0.5)`) outline
132
+ - Placeholder: `#5f5f5d`
133
+
134
+ ### Navigation
135
+ - Clean horizontal nav on cream background, fixed
136
+ - Logo/wordmark left-aligned (128.75 x 22px)
137
+ - Links: Camera Plain 14–16px weight 400, `#1c1c1c` text
138
+ - CTA: dark button with inset shadow, 6px radius
139
+ - Mobile: hamburger menu with 6px radius button
140
+ - Subtle border or no border on scroll
141
+
142
+ ### Links
143
+ - Color: `#1c1c1c`
144
+ - Decoration: underline (default)
145
+ - Hover: primary accent (via CSS variable `hsl(var(--primary))`)
146
+ - No color change on hover — decoration carries the interactive signal
147
+
148
+ ### Image Treatment
149
+ - Showcase/portfolio images with `1px solid #eceae4` border
150
+ - Consistent 12px border radius on all image containers
151
+ - Soft gradient backgrounds behind hero content (warm multi-color wash)
152
+ - Gallery-style presentation for template/project showcases
153
+
154
+ ### Distinctive Components
155
+
156
+ **AI Chat Input**
157
+ - Large prompt input area with soft borders
158
+ - Suggestion pills with `#eceae4` borders
159
+ - Voice recording / plan mode toggle buttons as pill shapes (9999px)
160
+ - Warm, inviting input area — not clinical
161
+
162
+ **Template Gallery**
163
+ - Card grid showing project templates
164
+ - Each card: image + title, `1px solid #eceae4` border, 12px radius
165
+ - Hover: subtle shadow or border darkening
166
+ - Category labels as text links
167
+
168
+ **Stats Bar**
169
+ - Large metrics: "0M+" pattern in 48px+ weight 600
170
+ - Descriptive text below in muted gray
171
+ - Horizontal layout with generous spacing
172
+
173
+ ## 5. Layout Principles
174
+
175
+ ### Spacing System
176
+ - Base unit: 8px
177
+ - Scale: 8px, 10px, 12px, 16px, 24px, 32px, 40px, 56px, 80px, 96px, 128px, 176px, 192px, 208px
178
+ - The scale expands generously at the top end — sections use 80px–208px vertical spacing for editorial breathing room
179
+
180
+ ### Grid & Container
181
+ - Max content width: approximately 1200px (centered)
182
+ - Hero: centered single-column with massive vertical padding (96px+)
183
+ - Feature sections: 2–3 column grids
184
+ - Full-width footer with multi-column link layout
185
+ - Showcase sections with centered card grids
186
+
187
+ ### Whitespace Philosophy
188
+ - **Editorial generosity**: Lovable's spacing is lavish at section boundaries (80px–208px). The warm cream background makes these expanses feel cozy rather than empty.
189
+ - **Content-driven rhythm**: Tight internal spacing within cards (12–24px) contrasts with wide section gaps, creating a reading rhythm that alternates between focused content and visual rest.
190
+ - **Section separation**: Footer uses `1px solid #eceae4` border and 16px radius container. Sections defined by generous spacing rather than border lines.
191
+
192
+ ### Border Radius Scale
193
+ - Micro (4px): Small buttons, interactive elements
194
+ - Standard (6px): Buttons, inputs, navigation menu
195
+ - Comfortable (8px): Compact cards, divs
196
+ - Card (12px): Standard cards, image containers, templates
197
+ - Container (16px): Large containers, footer sections
198
+ - Full Pill (9999px): Action pills, icon buttons, toggles
199
+
200
+ ## 6. Depth & Elevation
201
+
202
+ | Level | Treatment | Use |
203
+ |-------|-----------|-----|
204
+ | Flat (Level 0) | No shadow, cream background | Page surface, most content |
205
+ | Bordered (Level 1) | `1px solid #eceae4` | Cards, images, dividers |
206
+ | Inset (Level 2) | `rgba(255,255,255,0.2) 0px 0.5px 0px inset, rgba(0,0,0,0.2) 0px 0px 0px 0.5px inset, rgba(0,0,0,0.05) 0px 1px 2px` | Dark buttons, primary actions |
207
+ | Focus (Level 3) | `rgba(0,0,0,0.1) 0px 4px 12px` | Active/focus states |
208
+ | Ring (Accessibility) | `rgba(59,130,246,0.5)` 2px ring | Keyboard focus on inputs |
209
+
210
+ **Shadow Philosophy**: Lovable's depth system is intentionally shallow. Instead of floating cards with dramatic drop-shadows, the system relies on warm borders (`#eceae4`) against the cream surface to create gentle containment. The only notable shadow pattern is the inset shadow on dark buttons — a subtle multi-layer technique where a white highlight line sits at the top edge while a dark ring and soft drop handle the bottom. This creates a tactile, pressed-into-surface feeling rather than a hovering-above-surface feeling. The warm focus shadow (`rgba(0,0,0,0.1) 0px 4px 12px`) is deliberately diffused and large, creating a soft glow rather than a sharp outline.
211
+
212
+ ### Decorative Depth
213
+ - Hero: soft, warm multi-color gradient wash (pinks, oranges, blues) behind hero — atmospheric, barely visible
214
+ - Footer: gradient background with warm tones transitioning to the bottom
215
+ - No harsh section dividers — spacing and background warmth handle transitions
216
+
217
+ ## 7. Do's and Don'ts
218
+
219
+ ### Do
220
+ - Use the warm cream background (`#f7f4ed`) as the page foundation — it's the brand's signature warmth
221
+ - Use Camera Plain Variable at display sizes with negative letter-spacing (-0.9px to -1.5px)
222
+ - Derive all grays from `#1c1c1c` at varying opacity levels for tonal unity
223
+ - Use the inset shadow technique on dark buttons for tactile depth
224
+ - Use `#eceae4` borders instead of shadows for card containment
225
+ - Keep the weight system narrow: 400 for body/UI, 600 for headings
226
+ - Use full-pill radius (9999px) only for action pills and icon buttons
227
+ - Apply opacity 0.8 on active states for responsive tactile feedback
228
+
229
+ ### Don't
230
+ - Don't use pure white (`#ffffff`) as a page background — the cream is intentional
231
+ - Don't use heavy box-shadows for cards — borders are the containment mechanism
232
+ - Don't introduce saturated accent colors — the palette is intentionally warm-neutral
233
+ - Don't use weight 700 (bold) — 600 is the maximum weight in the system
234
+ - Don't apply 9999px radius on rectangular buttons — pills are for icon/action toggles
235
+ - Don't use sharp focus outlines — the system uses soft shadow-based focus indicators
236
+ - Don't mix border styles — `#eceae4` for passive, `rgba(28,28,28,0.4)` for interactive
237
+ - Don't increase letter-spacing on headings — Camera Plain is designed to run tight at scale
238
+
239
+ ## 8. Responsive Behavior
240
+
241
+ ### Breakpoints
242
+ | Name | Width | Key Changes |
243
+ |------|-------|-------------|
244
+ | Mobile Small | <600px | Tight single column, reduced padding |
245
+ | Mobile | 600–640px | Standard mobile layout |
246
+ | Tablet Small | 640–700px | 2-column grids begin |
247
+ | Tablet | 700–768px | Card grids expand |
248
+ | Desktop Small | 768–1024px | Multi-column layouts |
249
+ | Desktop | 1024–1280px | Full feature layout |
250
+ | Large Desktop | 1280–1536px | Maximum content width, generous margins |
251
+
252
+ ### Touch Targets
253
+ - Buttons: 8px 16px padding (comfortable touch)
254
+ - Navigation: adequate spacing between items
255
+ - Pill buttons: 9999px radius creates large tap-friendly targets
256
+ - Menu toggle: 6px radius button with adequate sizing
257
+
258
+ ### Collapsing Strategy
259
+ - Hero: 60px → 48px → 36px headline scaling with proportional letter-spacing
260
+ - Navigation: horizontal links → hamburger menu at 768px
261
+ - Feature cards: 3-column → 2-column → single column stacked
262
+ - Template gallery: grid → stacked vertical cards
263
+ - Stats bar: horizontal → stacked vertical
264
+ - Footer: multi-column → stacked single column
265
+ - Section spacing: 128px+ → 64px on mobile
266
+
267
+ ### Image Behavior
268
+ - Template screenshots maintain `1px solid #eceae4` border at all sizes
269
+ - 12px border radius preserved across breakpoints
270
+ - Gallery images responsive with consistent aspect ratios
271
+ - Hero gradient softens/simplifies on mobile
272
+
273
+ ## 9. Agent Prompt Guide
274
+
275
+ ### Quick Color Reference
276
+ - Primary CTA: Charcoal (`#1c1c1c`)
277
+ - Background: Cream (`#f7f4ed`)
278
+ - Heading text: Charcoal (`#1c1c1c`)
279
+ - Body text: Muted Gray (`#5f5f5d`)
280
+ - Border: `#eceae4` (passive), `rgba(28,28,28,0.4)` (interactive)
281
+ - Focus: `rgba(0,0,0,0.1) 0px 4px 12px`
282
+ - Button text on dark: `#fcfbf8`
283
+
284
+ ### Example Component Prompts
285
+ - "Create a hero section on cream background (#f7f4ed). Headline at 60px Camera Plain Variable weight 600, line-height 1.10, letter-spacing -1.5px, color #1c1c1c. Subtitle at 18px weight 400, line-height 1.38, color #5f5f5d. Dark CTA button (#1c1c1c bg, #fcfbf8 text, 6px radius, 8px 16px padding, inset shadow) and ghost button (transparent bg, 1px solid rgba(28,28,28,0.4) border, 6px radius)."
286
+ - "Design a card on cream (#f7f4ed) background. Border: 1px solid #eceae4. Radius 12px. No box-shadow. Title at 20px Camera Plain Variable weight 400, line-height 1.25, color #1c1c1c. Body at 14px weight 400, color #5f5f5d."
287
+ - "Build a template gallery: grid of cards with 12px radius, 1px solid #eceae4 border, cream backgrounds. Each card: image with 12px top radius, title below. Hover: subtle border darkening."
288
+ - "Create navigation: sticky on cream (#f7f4ed). Camera Plain 16px weight 400 for links, #1c1c1c text. Dark CTA button right-aligned with inset shadow. Mobile: hamburger menu with 6px radius."
289
+ - "Design a stats section: large numbers at 48px Camera Plain weight 600, letter-spacing -1.2px, #1c1c1c. Labels below at 16px weight 400, #5f5f5d. Horizontal layout with 32px gap."
290
+
291
+ ### Iteration Guide
292
+ 1. Always use cream (`#f7f4ed`) as the base — never pure white
293
+ 2. Derive grays from `#1c1c1c` at opacity levels rather than using distinct hex values
294
+ 3. Use `#eceae4` borders for containment, not shadows
295
+ 4. Letter-spacing scales with size: -1.5px at 60px, -1.2px at 48px, -0.9px at 36px, normal at 16px
296
+ 5. Two weights: 400 (everything except headings) and 600 (headings)
297
+ 6. The inset shadow on dark buttons is the signature detail — don't skip it
298
+ 7. Camera Plain Variable at weight 480 is for special display moments only