← Về thư mục
📄 / / root / .hermes / profiles / glv-director / skills / creative / popular-web-designs / templates / lovable.md

Design System: Lovable

Hermes Agent — Implementation Notes

The original site uses proprietary fonts. For self-contained HTML output, use these CDN substitutes: - Primary: DM Sans | Mono: system monospace stack - Font stack (CSS): font-family: 'DM Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; - Mono stack (CSS): font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; html <link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap" rel="stylesheet"> Use write_file to create HTML, serve via generative-widgets skill (cloudflared tunnel). Verify visual accuracy with browser_vision after generating.

1. Visual Theme & Atmosphere

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: - Warm parchment background (#f7f4ed) — not white, not beige, a deliberate cream that feels hand-selected - Camera Plain Variable typeface with humanist warmth and editorial letter-spacing at display sizes - Opacity-driven color system: all grays derived from #1c1c1c at varying transparency levels - 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 - Warm neutral border palette: #eceae4 for subtle, rgba(28,28,28,0.4) for interactive elements - Full-pill radius (9999px) used extensively for action buttons and icon containers - Focus state uses rgba(0,0,0,0.1) 0px 4px 12px shadow for soft, warm emphasis - shadcn/ui + Radix UI component primitives with Tailwind CSS utility styling

2. Color Palette & Roles

Primary

Neutral Scale (Opacity-Based)

Surface & Border

Interactive

Inset Shadows

3. Typography Rules

Font Family

Hierarchy

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

Principles

4. Component Stylings

Buttons

Primary Dark (Inset Shadow) - Background: #1c1c1c - Text: #fcfbf8 - Padding: 8px 16px - Radius: 6px - 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 - Active: opacity 0.8 - Focus: rgba(0,0,0,0.1) 0px 4px 12px shadow - Use: Primary CTA ("Start Building", "Get Started")

Ghost / Outline - Background: transparent - Text: #1c1c1c - Padding: 8px 16px - Radius: 6px - Border: 1px solid rgba(28,28,28,0.4) - Active: opacity 0.8 - Focus: rgba(0,0,0,0.1) 0px 4px 12px shadow - Use: Secondary actions ("Log In", "Documentation")

Cream Surface - Background: #f7f4ed - Text: #1c1c1c - Padding: 8px 16px - Radius: 6px - No border - Active: opacity 0.8 - Use: Tertiary actions, toolbar buttons

Pill / Icon Button - Background: #f7f4ed - Text: #1c1c1c - Radius: 9999px (full pill) - Shadow: same inset pattern as primary dark - Opacity: 0.5 (default), 0.8 (active) - Use: Additional actions, plan mode toggle, voice recording

Cards & Containers

Inputs & Forms

Image Treatment

Distinctive Components

AI Chat Input - Large prompt input area with soft borders - Suggestion pills with #eceae4 borders - Voice recording / plan mode toggle buttons as pill shapes (9999px) - Warm, inviting input area — not clinical

Template Gallery - Card grid showing project templates - Each card: image + title, 1px solid #eceae4 border, 12px radius - Hover: subtle shadow or border darkening - Category labels as text links

Stats Bar - Large metrics: "0M+" pattern in 48px+ weight 600 - Descriptive text below in muted gray - Horizontal layout with generous spacing

5. Layout Principles

Spacing System

Grid & Container

Whitespace Philosophy

Border Radius Scale

6. Depth & Elevation

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.

Decorative Depth

7. Do's and Don'ts

Do

Don't

8. Responsive Behavior

Breakpoints

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

Touch Targets

Collapsing Strategy

Image Behavior

9. Agent Prompt Guide

Quick Color Reference

Example Component Prompts

Iteration Guide

  1. Always use cream (#f7f4ed) as the base — never pure white
  2. Derive grays from #1c1c1c at opacity levels rather than using distinct hex values
  3. Use #eceae4 borders for containment, not shadows
  4. Letter-spacing scales with size: -1.5px at 60px, -1.2px at 48px, -0.9px at 36px, normal at 16px
  5. Two weights: 400 (everything except headings) and 600 (headings)
  6. The inset shadow on dark buttons is the signature detail — don't skip it
  7. Camera Plain Variable at weight 480 is for special display moments only