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.
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.
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.
Key Characteristics:
#f7f4ed) — not white, not beige, a deliberate cream that feels hand-selected#1c1c1c at varying transparency levelsrgba(255,255,255,0.2) 0px 0.5px 0px 0px inset, rgba(0,0,0,0.2) 0px 0px 0px 0.5px inset#eceae4 for subtle, rgba(28,28,28,0.4) for interactive elements9999px) used extensively for action buttons and icon containersrgba(0,0,0,0.1) 0px 4px 12px shadow for soft, warm emphasis#f7f4ed): Page background, card surfaces, button surfaces. The foundation — warm, paper-like, human.#1c1c1c): Primary text, headings, dark button backgrounds. Not pure black — organic warmth.#fcfbf8): Button text on dark backgrounds, subtle highlight. Barely distinguishable from pure white.#1c1c1c): Primary text, headings, dark surfaces.rgba(28,28,28,0.83)): Strong secondary text.rgba(28,28,28,0.82)): Body copy.#5f5f5d): Secondary text, descriptions, captions.rgba(28,28,28,0.4)): Interactive borders, button outlines.rgba(28,28,28,0.04)): Subtle hover backgrounds, micro-tints.rgba(28,28,28,0.03)): Barely-visible overlays, background depth.#eceae4): Card borders, dividers, image outlines. The warm divider line.#f7f4ed): Card backgrounds, section fills — same as page background for seamless integration.#3b82f6 at 50% opacity): --tw-ring-color, Tailwind focus ring.rgba(0,0,0,0.1) 0px 4px 12px): Focus and active state shadow — soft, warm, diffused.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.Camera Plain Variable, with fallbacks: ui-sans-serif, system-ui| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Display Hero | Camera Plain Variable | 60px (3.75rem) | 600 | 1.00–1.10 (tight) | -1.5px | Maximum impact, editorial |
| Display Alt | Camera Plain Variable | 60px (3.75rem) | 480 | 1.00 (tight) | normal | Lighter hero variant |
| Section Heading | Camera Plain Variable | 48px (3.00rem) | 600 | 1.00 (tight) | -1.2px | Feature section titles |
| Sub-heading | Camera Plain Variable | 36px (2.25rem) | 600 | 1.10 (tight) | -0.9px | Sub-sections |
| Card Title | Camera Plain Variable | 20px (1.25rem) | 400 | 1.25 (tight) | normal | Card headings |
| Body Large | Camera Plain Variable | 18px (1.13rem) | 400 | 1.38 | normal | Introductions |
| Body | Camera Plain Variable | 16px (1.00rem) | 400 | 1.50 | normal | Standard reading text |
| Button | Camera Plain Variable | 16px (1.00rem) | 400 | 1.50 | normal | Button labels |
| Button Small | Camera Plain Variable | 14px (0.88rem) | 400 | 1.50 | normal | Compact buttons |
| Link | Camera Plain Variable | 16px (1.00rem) | 400 | 1.50 | normal | Underline decoration |
| Link Small | Camera Plain Variable | 14px (0.88rem) | 400 | 1.50 | normal | Footer links |
| Caption | Camera Plain Variable | 14px (0.88rem) | 400 | 1.50 | normal | Metadata, small text |
Primary Dark (Inset Shadow)
#1c1c1c#fcfbf8rgba(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 0pxrgba(0,0,0,0.1) 0px 4px 12px shadowGhost / Outline
#1c1c1c1px solid rgba(28,28,28,0.4)rgba(0,0,0,0.1) 0px 4px 12px shadowCream Surface
#f7f4ed#1c1c1cPill / Icon Button
#f7f4ed#1c1c1c#f7f4ed (matches page)1px solid #eceae41px solid #eceae4 with 12px radius#f7f4ed#1c1c1c1px solid #eceae4rgba(59,130,246,0.5)) outline#5f5f5d#1c1c1c text#1c1c1chsl(var(--primary)))1px solid #eceae4 borderAI Chat Input
#eceae4 bordersTemplate Gallery
1px solid #eceae4 border, 12px radiusStats Bar
1px solid #eceae4 border and 16px radius container. Sections defined by generous spacing rather than border lines.| Level | Treatment | Use |
|---|---|---|
| Flat (Level 0) | No shadow, cream background | Page surface, most content |
| Bordered (Level 1) | 1px solid #eceae4 | Cards, images, dividers |
| 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 |
| Focus (Level 3) | rgba(0,0,0,0.1) 0px 4px 12px | Active/focus states |
| Ring (Accessibility) | rgba(59,130,246,0.5) 2px ring | Keyboard focus on inputs |
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.
#f7f4ed) as the page foundation — it's the brand's signature warmth#1c1c1c at varying opacity levels for tonal unity#eceae4 borders instead of shadows for card containment#ffffff) as a page background — the cream is intentional#eceae4 for passive, rgba(28,28,28,0.4) for interactive| Name | Width | Key Changes |
|---|---|---|
| Mobile Small | <600px | Tight single column, reduced padding |
| Mobile | 600–640px | Standard mobile layout |
| Tablet Small | 640–700px | 2-column grids begin |
| Tablet | 700–768px | Card grids expand |
| Desktop Small | 768–1024px | Multi-column layouts |
| Desktop | 1024–1280px | Full feature layout |
| Large Desktop | 1280–1536px | Maximum content width, generous margins |
1px solid #eceae4 border at all sizes#1c1c1c)#f7f4ed)#1c1c1c)#5f5f5d)#eceae4 (passive), rgba(28,28,28,0.4) (interactive)rgba(0,0,0,0.1) 0px 4px 12px#fcfbf8#f7f4ed) as the base — never pure white#1c1c1c at opacity levels rather than using distinct hex values#eceae4 borders for containment, not shadowsLovable'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
Top 6 hex values found in §2 of DESIGN.md, ranked by usage frequency.
A wider example card showing how content sits inside the radius and shadow combination defined by this brand. Card radius is capped at 16px even on pill systems (LINE/Wise/Spotify) so large surfaces stay readable.
Shadow recipes parsed from §6 of DESIGN.md, or default 5-tier scale if none found.