AI
Lovable
“Lovable AI Builder”
gradient-aurora-herowarm-neutral-surfacevariable-weight-serif-displaysoft-radius-card-systemchat-first-interaction
Lovable's design system pairs a dramatic full-bleed aurora gradient hero (cycling through pink, magenta, blue, and orange) with a warm off-white surface palette (#eceae4, #fcfbf8). The primary typeface is Camera Plain Variable — a contemporary variable serif — used across all text roles from 14px body to 60px display. Interaction is centered on a prominent chat input card with rounded corners (12px), floating over the gradient. Navigation is minimal and transparent. The overall tone is warm, expressive, and AI-product-forward.
6Colors
9Type styles
17Spacing
6Radii
Colors
Brand
Surface Baseprimary
Primary page background, borders, and structural fills across header, main, and footerSurface
Surface Warm Whitebackground
Hero section background and card surfaces in the header zoneSurface Mutedbackground
Muted surface areas, footer, and secondary content zonesText
Foreground Primarytext
Body text, headings, nav links, and all primary foreground contentText Secondarytext
Subtitle text, secondary labels, and muted foreground elementsAction Primarytext
Get started CTA button background (near-black), primary action colorTypography
Hero headline — largest display text on the page
The quick brown fox jumps
Camera Plain Variable60px · 480 · 60px
Section hero headings with tight tracking
The quick brown fox jumps
Camera Plain Variable60px · 600 · 66px · -1.5px
Primary section headings — confirmed by h2 probe (48px)
The quick brown fox jumps
Camera Plain Variable48px · 600 · 52.8px · -1.2px
Sub-section headings
The quick brown fox jumps
Camera Plain Variable36px · 600 · 39.6px · -0.9px
Lead paragraph and subtitle text
The quick brown fox jumps
Camera Plain Variable18px · 400 · 24.75px
Primary body text, nav items, and general UI text (highest frequency)
The quick brown fox jumps
Camera Plain Variable16px · 400 · 24px
Mid-size body text for callouts and feature descriptions
The quick brown fox jumps
Camera Plain Variable15px · 400 · 24px
Secondary body text, labels, and button text (second highest frequency)
The quick brown fox jumps
Camera Plain Variable14px · 400 · 21px
Emphasized labels and badge text
The quick brown fox jumps
Camera Plain Variable14px · 480 · 21px
Fonts
Camera Plain VariableCustom
Spacing & Shape
Spacing
spacing-1
2px
spacing-2
4px
spacing-3
6px
spacing-4
8px
spacing-5
10px
spacing-6
12px
spacing-7
16px
spacing-8
20px
spacing-9
24px
spacing-10
32px
spacing-11
40px
spacing-12
48px
spacing-13
56px
spacing-14
80px
spacing-15
144px
spacing-16
160px
spacing-17
192px
Border Radius
radius-sm6px
radius-md8px
radius-lg12px
radius-xl16px
radius-2xl24px
radius-3xl28px
---
version: alpha
name: "Lovable AI Builder"
description: "Primary visual anchor uses #eceae4 with primary page background, borders, and structural fills across header, main, and footer. Typography baseline relies on Camera Plain Variable for hero headline — largest display text on the page."
colors:
surface-base: "#eceae4"
surface-muted: "#f7f4ed"
surface-warm-white: "#fcfbf8"
action-primary: "#1c1c1c"
foreground-primary: "#1c1c1c"
text-secondary: "#5f5f5d"
typography:
display-hero:
fontFamily: "Camera Plain Variable"
fontSize: "60px"
fontWeight: "480"
lineHeight: "60px"
display-large:
fontFamily: "Camera Plain Variable"
fontSize: "60px"
fontWeight: "600"
lineHeight: "66px"
letterSpacing: "-1.5px"
heading-xl:
fontFamily: "Camera Plain Variable"
fontSize: "48px"
fontWeight: "600"
lineHeight: "52.8px"
letterSpacing: "-1.2px"
heading-lg:
fontFamily: "Camera Plain Variable"
fontSize: "36px"
fontWeight: "600"
lineHeight: "39.6px"
letterSpacing: "-0.9px"
body-base:
fontFamily: "Camera Plain Variable"
fontSize: "16px"
fontWeight: "400"
lineHeight: "24px"
body-small:
fontFamily: "Camera Plain Variable"
fontSize: "14px"
fontWeight: "400"
lineHeight: "21px"
body-medium:
fontFamily: "Camera Plain Variable"
fontSize: "15px"
fontWeight: "400"
lineHeight: "24px"
label-emphasis:
fontFamily: "Camera Plain Variable"
fontSize: "14px"
fontWeight: "480"
lineHeight: "21px"
body-large:
fontFamily: "Camera Plain Variable"
fontSize: "18px"
fontWeight: "400"
lineHeight: "24.75px"
rounded:
radius-sm: "6px"
radius-md: "8px"
radius-lg: "12px"
radius-xl: "16px"
radius-2xl: "24px"
radius-3xl: "28px"
spacing:
spacing-1: "2px"
spacing-2: "4px"
spacing-3: "6px"
spacing-4: "8px"
spacing-5: "10px"
spacing-6: "12px"
spacing-7: "16px"
spacing-8: "20px"
spacing-9: "24px"
spacing-10: "32px"
spacing-11: "40px"
spacing-12: "48px"
spacing-13: "56px"
spacing-14: "80px"
spacing-15: "144px"
spacing-16: "160px"
---
## Overview
Primary visual anchor uses #eceae4 with primary page background, borders, and structural fills across header, main, and footer. Typography baseline relies on Camera Plain Variable for hero headline — largest display text on the page.
This system uses a 4px base grid with scale values 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 80, 144, 160, 192.
**Signature traits:**
- Core token rhythm: Token evidence indicates consistent color, spacing, and radius rhythm across visible UI.
## Colors
The palette uses 6 validated color tokens across 1 theme profile. Semantic roles stay attached to observed usage so generation agents can choose accents without inventing new color meaning.
**Semantic naming:**
- **surface-primary** maps to `surface-base`: Role "primary" is grounded by usage context "Primary page background, borders, and structural fills across header, main, and footer".
- **action-text** maps to `foreground-primary`: Role "text" is grounded by usage context "Body text, headings, nav links, and all primary foreground content".
- **surface-background** maps to `surface-warm-white`: Role "background" is grounded by usage context "Hero section background and card surfaces in the header zone".
- **content-text** maps to `text-secondary`: Role "text" is grounded by usage context "Subtitle text, secondary labels, and muted foreground elements".
### Primary Brand
- **Surface Base** (#eceae4): Primary page background, borders, and structural fills across header, main, and footer. Role: primary. {authored: rgb(236, 234, 228), space: rgb}
### Text Scale
- **Action Primary** (#1c1c1c): Get started CTA button background (near-black), primary action color. Role: text. {authored: rgb(28, 28, 28), space: rgb}
- **Foreground Primary** (#1c1c1c): Body text, headings, nav links, and all primary foreground content. Role: text. {authored: rgb(28, 28, 28), space: rgb}
- **Text Secondary** (#5f5f5d): Subtitle text, secondary labels, and muted foreground elements. Role: text. {authored: rgb(95, 95, 93), space: rgb}
### Surface & Shadows
- **Surface Muted** (#f7f4ed): Muted surface areas, footer, and secondary content zones. Role: background. {authored: rgb(247, 244, 237), space: rgb}
- **Surface Warm White** (#fcfbf8): Hero section background and card surfaces in the header zone. Role: background. {authored: rgb(252, 251, 248), space: rgb}
## Typography
Typography uses Camera Plain Variable across extracted hierarchy roles. Keep hierarchy mapped to these token rows before adding decorative type styles.
Uses Camera Plain Variable throughout for a uniform feel. Weight range spans medium, semi-bold, regular. Sizes range from 14px to 60px.
### Font Roles
- **Headline Font**: Camera Plain Variable
- **Body Font**: Camera Plain Variable
### Type Scale Evidence
| Role | Font | Size | Weight | Line Height | Letter Spacing | Stack / Features | Notes |
|------|------|------|--------|-------------|----------------|------------------|-------|
| Hero headline — largest display text on the page | Camera Plain Variable | 60px | 480 | 60px | normal | Camera Plain Variable, ui-sans-serif, system-ui, sans-serif | Extracted token |
| Section hero headings with tight tracking | Camera Plain Variable | 60px | 600 | 66px | -1.5px | Camera Plain Variable, ui-sans-serif, system-ui, sans-serif | Extracted token |
| Primary section headings — confirmed by h2 probe (48px) | Camera Plain Variable | 48px | 600 | 52.8px | -1.2px | Camera Plain Variable, ui-sans-serif, system-ui, sans-serif | Extracted token |
| Sub-section headings | Camera Plain Variable | 36px | 600 | 39.6px | -0.9px | Camera Plain Variable, ui-sans-serif, system-ui, sans-serif | Extracted token |
| Primary body text, nav items, and general UI text (highest frequency) | Camera Plain Variable | 16px | 400 | 24px | normal | Camera Plain Variable, ui-sans-serif, system-ui, sans-serif | Extracted token |
| Secondary body text, labels, and button text (second highest frequency) | Camera Plain Variable | 14px | 400 | 21px | normal | Camera Plain Variable, ui-sans-serif, system-ui, sans-serif | Extracted token |
| Mid-size body text for callouts and feature descriptions | Camera Plain Variable | 15px | 400 | 24px | normal | Camera Plain Variable, ui-sans-serif, system-ui, sans-serif | Extracted token |
| Emphasized labels and badge text | Camera Plain Variable | 14px | 480 | 21px | normal | Camera Plain Variable, ui-sans-serif, system-ui, sans-serif | Extracted token |
| Lead paragraph and subtitle text | Camera Plain Variable | 18px | 400 | 24.75px | normal | Camera Plain Variable, ui-sans-serif, system-ui, sans-serif | Extracted token |
## Layout
Responsive system uses 2 breakpoint tier(s): mobile, desktop.
### Responsive Strategy
- **mobile (<= 600px)**: Constrain layout for small viewports and prioritize vertical stacking.
- **desktop (Unknown)**: Expand layout density and horizontal composition for wide viewports.
### Spacing System
| Token | Value | Px | Notes |
|------|-------|----|-------|
| spacing-1 | 2px | 2 | Extracted spacing token |
| spacing-2 | 4px | 4 | Extracted spacing token |
| spacing-3 | 6px | 6 | Extracted spacing token |
| spacing-4 | 8px | 8 | Extracted spacing token |
| spacing-5 | 10px | 10 | Extracted spacing token |
| spacing-6 | 12px | 12 | Extracted spacing token |
| spacing-7 | 16px | 16 | Extracted spacing token |
| spacing-8 | 20px | 20 | Extracted spacing token |
| spacing-9 | 24px | 24 | Extracted spacing token |
| spacing-10 | 32px | 32 | Extracted spacing token |
| spacing-11 | 40px | 40 | Extracted spacing token |
| spacing-12 | 48px | 48 | Extracted spacing token |
| spacing-13 | 56px | 56 | Extracted spacing token |
| spacing-14 | 80px | 80 | Extracted spacing token |
| spacing-15 | 144px | 144 | Extracted spacing token |
| spacing-16 | 160px | 160 | Extracted spacing token |
| spacing-17 | 192px | 192 | Extracted spacing token |
## Elevation & Depth
Keep depth flat unless validated shadow or interaction evidence appears in the extraction payload. Do not invent shadows beyond this evidence boundary.
### Shadow Evidence
| Shadow Token | Layers | Details |
|--------------|--------|---------|
| shadow-card-subtle | 2 | 0 0 0px 2px |
### Interaction Signals
| Theme | Signal | Evidence |
|-------|--------|----------|
| Light | outline-style | solid |
| Light | outline-color | rgb(28, 28, 28) ; lab(0.903296 0 0) ; lab(98.2716 0 0) |
| Light | outline-width | 3px ; 2px |
| Light | outline-offset | 0px ; 2px |
| Light | transform | matrix(1, 0, 0, 1, 0, 0) ; matrix(1, 0, 0, 1, -1280, 0) ; matrix(1, 0, 0, 1, -602.518, 0) |
## Shapes
Shape language maps directly to rounded tokens. Keep component corners consistent with the role mapping below before introducing bespoke geometry.
### Radius Roles
| Token | Value | Px | Role Mapping |
|------|-------|----|--------------|
| radius-sm | 6px | 6 | Subtle corner |
| radius-md | 8px | 8 | Control corner |
| radius-lg | 12px | 12 | Control corner |
| radius-xl | 16px | 16 | Card corner |
| radius-2xl | 24px | 24 | Large surface corner |
| radius-3xl | 28px | 28 | Large surface corner |
### Geometry Evidence
| Radius Token | Shape | Units |
|--------------|-------|-------|
| radius-sm | 6px | px |
| radius-md | 8px | px |
| radius-lg | 12px | px |
| radius-xl | 16px | px |
| radius-2xl | 24px | px |
| radius-3xl | 28px | px |
## Components
(none detected)
## Do's and Don'ts
Guardrails protect Core token rhythm without adding unsupported visual claims.
| Do | Don't |
|----|---------|
| Do maintain consistent spacing using the base grid | Don't make unsupported claims about absent visual features |
| Do maintain WCAG AA contrast ratios (4.5:1 for normal text) | Don't mix rounded and sharp corners in the same view |
| Do use the primary color only for the single most important action per screen | |
| Do verify evidence before writing new design-system guidance | |
## Responsive Evidence
### Breakpoints
| Name | Width | Key Changes |
|------|-------|-------------|
| Mobile | <= 600px | (max-width: 600px) |
| Breakpoint 2 | Unknown | (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2x) |
## Agent Prompt Guide
### Example Component Prompts
- Create button component using validated primary color role and spacing tokens.
- Create card component with mapped radius role and evidence-backed elevation.
- Create form input component using inferred typography hierarchy and border roles.
### Iteration Guide
1. Start with extracted palette and typography roles only.
2. Map spacing and radius directly from token tables before visual polish.
3. Apply component patterns one section at a time and compare against source intent.
4. Keep elevation claims tied to explicit evidence in output.
5. Iterate with smallest diffs and re-check section hierarchy after each change.