website_designs

Ligne Claire Reference

Ligne Claire (French for “clear line”) is an illustration and visual design aesthetic pioneered by Belgian cartoonist Herge, creator of The Adventures of Tintin. It is defined by uniform-weight outlines, flat unmodulated color, minimal shading, and a balance of cartoonish simplicity in foreground elements against realistically detailed backgrounds. The style prioritizes clarity, readability, and structured visual storytelling above all else. Herge’s guiding maxim was: “the line must prevail over the tint, clarity over virtuosity.”


Visual Characteristics

Core Design Traits

Design Principles


Color Palette

Ligne Claire Primary Palette

The canonical Ligne Claire palette draws from Herge’s Tintin albums: strong, saturated primaries and secondaries applied flat, with warm cream or off-white backgrounds. Every color is chosen to be instantly readable and narratively functional.

Color Name Hex Role / Usage
Tintin Blue #3B7DD8 Primary blue, skies, clothing (Tintin’s iconic sweater), water
Signal Red #D42B2B Accent red, danger signals, key objects, Haddock’s sweater
Sunshine Yellow #F5C842 Warm highlights, Tintin’s hair, desert scenes, optimism
Herge Green #4AA84E Vegetation, landscapes, secondary clothing elements
Warm Orange #E87D2F Earthy warmth, adventure settings, brick, terracotta
Deep Brown #6B3A2A Woodwork, earth tones, furniture, leather
Cream White #FAF5E8 Primary page background, open sky, negative space
Ink Black #1A1A1A All outlines, text, defining lines (never pure #000)
Sky Cerulean #7AB8E0 Open skies, horizon backgrounds, calm water
Soft Sand #E8D5A3 Desert settings, aged paper, warm neutrals
Muted Mauve #9C7BAD Twilight scenes, shadow tinting, indoor atmospherics
Slate Grey #7A8B96 Machinery, urban surfaces, overcast skies

Extended Tint Scale

Each base color extends into lighter tints for backgrounds and panels, maintaining the flat-fill principle:

Level Purpose Example (Tintin Blue)
100 Tinted panel backgrounds #E0EBF7
200 Section backgrounds, sky washes #B8D4EE
300 Secondary fills, water highlights #8FBDE5
400 Mid-tone fills #5F9DDC
500 Base color #3B7DD8
600 Shaded variant #2F64AD
700 Dark accent #234B82
800 Deep contrast #183257

CSS Custom Properties

:root {
  /* Primary palette */
  --lc-blue: #3b7dd8;
  --lc-red: #d42b2b;
  --lc-yellow: #f5c842;
  --lc-green: #4aa84e;
  --lc-orange: #e87d2f;
  --lc-brown: #6b3a2a;

  /* Neutrals */
  --lc-cream: #faf5e8;
  --lc-ink: #1a1a1a;
  --lc-sand: #e8d5a3;
  --lc-slate: #7a8b96;

  /* Atmospheric */
  --lc-cerulean: #7ab8e0;
  --lc-mauve: #9c7bad;

  /* Tinted backgrounds */
  --lc-blue-tint: #e0ebf7;
  --lc-red-tint: #f8e0e0;
  --lc-yellow-tint: #fdf3d6;
  --lc-green-tint: #dff0df;

  /* Page surfaces */
  --lc-bg-page: #faf5e8;
  --lc-bg-panel: #ffffff;
  --lc-bg-muted: #f2ece0;

  /* Text */
  --lc-text-primary: #1a1a1a;
  --lc-text-secondary: #5a5245;
  --lc-text-caption: #7a8b96;

  /* Outline -- the defining element */
  --lc-outline: #1a1a1a;
  --lc-outline-width: 2px;
}

Color Usage Guidelines


Typography

Typeface Characteristics

Ligne Claire typography mirrors the aesthetic’s core principle: clear, legible, unpretentious. Text in the original comics used hand-lettered capitals; for web applications, this translates to:

Font Style Best For
Nunito Rounded geometric sans-serif Body text – rounded terminals echo the smooth, clear linework
Quicksand Rounded geometric, friendly Headlines and display – soft geometry matches the style’s warmth
Comfortaa Rounded geometric, modern Display titles – distinctive rounded character evokes comic lettering
Baloo 2 Rounded, slightly playful Headers – bridges comic lettering and web typography
Fredoka Bold rounded, comic-inspired Display headlines – direct reference to comic book aesthetics
Varela Round Simple rounded sans Body text – clean, unassuming, highly legible
Nunito Sans Rounded humanist sans Body text, UI elements – slightly more neutral than Nunito
Lexend Optimized readability, clean Long-form body text – maximizes readability, the core Ligne Claire value
Outfit Modern geometric sans Navigation, labels – clean and contemporary feel
Bangers Comic book display font Large hero text only – authentic comic lettering for impact

Font Pairing Suggestions

Heading Font Body Font Character
Fredoka (600) Nunito (400) Comic-inspired, warm, approachable – closest to authentic Ligne Claire
Quicksand (600) Lexend (400) Modern clarity, geometric precision, highly readable
Comfortaa (700) Varela Round (400) Distinctly rounded, playful yet refined
Bangers (400) Nunito Sans (400) Bold comic impact for headers, clean reading for body
Outfit (600) Nunito (400) Contemporary, clean, versatile for professional contexts

Typography CSS Example

/* Import fonts */
@import url('https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=Nunito:wght@400;500;600;700&display=swap');

/* Headings -- comic-inspired clarity */
h1, h2, h3, h4, h5, h6 {
  font-family: 'Fredoka', 'Quicksand', sans-serif;
  font-weight: 600;
  color: var(--lc-text-primary);
  line-height: 1.2;
  letter-spacing: 0.01em;
  text-transform: uppercase;
}

/* Display / Hero text */
.lc-display {
  font-family: 'Fredoka', sans-serif;
  font-size: clamp(2.5rem, 5vw, 4.5rem);
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.1;
  text-transform: uppercase;
}

/* Body text */
body {
  font-family: 'Nunito', 'Varela Round', sans-serif;
  font-weight: 400;
  font-size: 1rem;
  line-height: 1.75;
  color: var(--lc-text-primary);
}

/* Caption / secondary text */
.lc-caption {
  font-family: 'Nunito', sans-serif;
  font-weight: 400;
  font-size: 0.85rem;
  color: var(--lc-text-caption);
  line-height: 1.5;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

/* Comic speech-bubble style callout text */
.lc-callout {
  font-family: 'Fredoka', sans-serif;
  font-weight: 500;
  font-size: 1.1rem;
  line-height: 1.5;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

Layout Principles

Grid and Structure

Section Organization

Responsive Approach


CSS / Design Techniques

The Clear-Line Panel Component

.lc-panel {
  background: var(--lc-bg-panel);
  border: var(--lc-outline-width) solid var(--lc-outline);
  border-radius: 4px;
  padding: 28px;
  /* No box-shadow -- outlines define everything in Ligne Claire */
  position: relative;
}

/* Panel with colored header band */
.lc-panel--headed {
  padding-top: 0;
}

.lc-panel--headed .lc-panel__header {
  background: var(--lc-blue);
  color: #ffffff;
  margin: -1px -1px 24px -1px;
  padding: 16px 28px;
  border-radius: 3px 3px 0 0;
  border-bottom: var(--lc-outline-width) solid var(--lc-outline);
  font-family: 'Fredoka', sans-serif;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

/* Panel grid */
.lc-panel-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 20px;
}

Comic-Strip Row Layout

.lc-strip {
  display: flex;
  gap: 0;
  border: var(--lc-outline-width) solid var(--lc-outline);
  border-radius: 4px;
  overflow: hidden;
}

.lc-strip__cell {
  flex: 1;
  padding: 24px;
  text-align: center;
  border-right: var(--lc-outline-width) solid var(--lc-outline);
}

.lc-strip__cell:last-child {
  border-right: none;
}

.lc-strip__cell h3 {
  font-family: 'Fredoka', sans-serif;
  font-size: 1rem;
  text-transform: uppercase;
  margin-top: 12px;
}

@media (max-width: 768px) {
  .lc-strip {
    flex-direction: column;
  }

  .lc-strip__cell {
    border-right: none;
    border-bottom: var(--lc-outline-width) solid var(--lc-outline);
  }

  .lc-strip__cell:last-child {
    border-bottom: none;
  }
}

Clear-Line Button

.lc-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--lc-blue);
  color: #ffffff;
  border: var(--lc-outline-width) solid var(--lc-outline);
  border-radius: 4px;
  padding: 12px 32px;
  font-family: 'Fredoka', sans-serif;
  font-weight: 600;
  font-size: 0.95rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  cursor: pointer;
  transition: background 0.15s ease;
  text-decoration: none;
  /* No box-shadow -- the outline IS the definition */
}

.lc-button:hover {
  background: var(--lc-cerulean);
}

.lc-button:active {
  background: #2f64ad;
}

/* Red variant */
.lc-button--red {
  background: var(--lc-red);
}

.lc-button--red:hover {
  background: #b02323;
}

/* Yellow variant */
.lc-button--yellow {
  background: var(--lc-yellow);
  color: var(--lc-text-primary);
}

.lc-button--yellow:hover {
  background: #e0b53a;
}

/* Ghost / outline variant */
.lc-button--ghost {
  background: transparent;
  color: var(--lc-text-primary);
}

.lc-button--ghost:hover {
  background: var(--lc-cream);
}
.lc-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 1200px;
  margin: 0 auto;
  padding: 16px 40px;
  border-bottom: var(--lc-outline-width) solid var(--lc-outline);
  background: var(--lc-bg-page);
}

.lc-nav__logo {
  font-family: 'Fredoka', sans-serif;
  font-weight: 700;
  font-size: 1.5rem;
  color: var(--lc-text-primary);
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.lc-nav__links {
  display: flex;
  gap: 28px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.lc-nav__links a {
  font-family: 'Nunito', sans-serif;
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--lc-text-secondary);
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 4px 0;
  border-bottom: 2px solid transparent;
  transition: color 0.15s ease, border-color 0.15s ease;
}

.lc-nav__links a:hover {
  color: var(--lc-blue);
  border-bottom-color: var(--lc-blue);
}

.lc-nav__links a.active {
  color: var(--lc-blue);
  border-bottom-color: var(--lc-blue);
}

Hero Section

.lc-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 1200px;
  margin: 0 auto;
  padding: 60px 40px;
  gap: 48px;
}

.lc-hero__content {
  flex: 1;
  max-width: 500px;
}

.lc-hero__content h1 {
  font-size: clamp(2.2rem, 5vw, 3.8rem);
  font-weight: 700;
  margin-bottom: 1rem;
  line-height: 1.1;
  text-transform: uppercase;
}

.lc-hero__content p {
  font-size: 1.1rem;
  color: var(--lc-text-secondary);
  margin-bottom: 2rem;
  line-height: 1.75;
}

.lc-hero__visual {
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
}

/* The hero illustration panel -- bordered like a comic panel */
.lc-hero__illustration {
  border: var(--lc-outline-width) solid var(--lc-outline);
  border-radius: 4px;
  overflow: hidden;
  background: var(--lc-cerulean);
  width: 100%;
  max-width: 480px;
  aspect-ratio: 4 / 3;
}

.lc-hero__illustration img,
.lc-hero__illustration svg {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@media (max-width: 768px) {
  .lc-hero {
    flex-direction: column-reverse;
    text-align: center;
    padding: 40px 20px;
    gap: 32px;
  }
}

Speech Bubble / Callout Component

.lc-speech-bubble {
  position: relative;
  background: var(--lc-bg-panel);
  border: var(--lc-outline-width) solid var(--lc-outline);
  border-radius: 20px;
  padding: 24px 32px;
  font-family: 'Fredoka', sans-serif;
  font-weight: 500;
  font-size: 1.05rem;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  line-height: 1.5;
  max-width: 400px;
}

/* Tail pointing down */
.lc-speech-bubble::after {
  content: '';
  position: absolute;
  bottom: -16px;
  left: 50%;
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left: 12px solid transparent;
  border-right: 12px solid transparent;
  border-top: 16px solid var(--lc-bg-panel);
}

.lc-speech-bubble::before {
  content: '';
  position: absolute;
  bottom: -19px;
  left: 50%;
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left: 14px solid transparent;
  border-right: 14px solid transparent;
  border-top: 18px solid var(--lc-outline);
}

Highlighted Element (Ligne Claire style)

/* Clear-line highlight: thick uniform outline in accent color */
.lc-highlight {
  outline: 3px solid var(--lc-red);
  outline-offset: 4px;
  border-radius: 2px;
  transition: outline-color 0.2s ease;
}

/* Flat color badge */
.lc-badge {
  display: inline-flex;
  align-items: center;
  padding: 4px 12px;
  background: var(--lc-yellow);
  color: var(--lc-text-primary);
  border: var(--lc-outline-width) solid var(--lc-outline);
  border-radius: 3px;
  font-family: 'Fredoka', sans-serif;
  font-weight: 600;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

Section Color Blocks

.lc-section {
  padding: 80px 0;
}

.lc-section--cream {
  background: var(--lc-bg-page);
}

.lc-section--white {
  background: var(--lc-bg-panel);
}

.lc-section--muted {
  background: var(--lc-bg-muted);
}

.lc-section--blue {
  background: var(--lc-blue);
  color: #ffffff;
}

.lc-section--red {
  background: var(--lc-red);
  color: #ffffff;
}

.lc-section--yellow {
  background: var(--lc-yellow);
  color: var(--lc-text-primary);
}

/* Bordered section separator -- the clear line as a structural device */
.lc-section + .lc-section {
  border-top: var(--lc-outline-width) solid var(--lc-outline);
}

/* Text color overrides on colored sections */
.lc-section--blue h1,
.lc-section--blue h2,
.lc-section--blue h3,
.lc-section--red h1,
.lc-section--red h2,
.lc-section--red h3 {
  color: #ffffff;
}

.lc-section--blue p,
.lc-section--red p {
  color: rgba(255, 255, 255, 0.9);
}

Form Elements

.lc-input {
  width: 100%;
  padding: 12px 16px;
  border: var(--lc-outline-width) solid var(--lc-outline);
  border-radius: 4px;
  font-family: 'Nunito', sans-serif;
  font-size: 0.95rem;
  color: var(--lc-text-primary);
  background: var(--lc-bg-panel);
  transition: border-color 0.15s ease;
  outline: none;
  /* No box-shadow -- clear line only */
}

.lc-input:focus {
  border-color: var(--lc-blue);
}

.lc-input::placeholder {
  color: var(--lc-text-caption);
}

/* Select dropdown */
.lc-select {
  appearance: none;
  width: 100%;
  padding: 12px 40px 12px 16px;
  border: var(--lc-outline-width) solid var(--lc-outline);
  border-radius: 4px;
  font-family: 'Nunito', sans-serif;
  font-size: 0.95rem;
  color: var(--lc-text-primary);
  background: var(--lc-bg-panel) url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%231a1a1a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 14px center;
  cursor: pointer;
  outline: none;
}

.lc-select:focus {
  border-color: var(--lc-blue);
}

Ligne Claire Icon Style (SVG)

/* Icons should use uniform stroke weight, no fills -- pure outline */
.lc-icon {
  stroke: var(--lc-outline);
  stroke-width: 2px;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
  width: 24px;
  height: 24px;
}

/* Icon with flat-color fill behind outline */
.lc-icon--filled {
  fill: var(--lc-blue);
  stroke: var(--lc-outline);
  stroke-width: 2px;
}

/* Icon in a bordered circle container */
.lc-icon-circle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  border: var(--lc-outline-width) solid var(--lc-outline);
  background: var(--lc-yellow-tint);
}

Design Do’s and Don’ts

Do

Don’t


Aesthetic Relationship to Ligne Claire
Adventurecore Shares the sense of exploration and travel narrative; Tintin’s globe-trotting adventures are a foundational reference for Adventurecore
Fleischer Style Contemporary early-animation aesthetic with similar clear outlines and flat color, though with more rubbery, exaggerated proportions
Vintage Hero Overlapping visual vocabulary of clear outlines, primary colors, and narrative-driven illustration from the golden age of comics
Flat Design Modern digital descendant; shares the flat color, no-shadow, no-gradient principles but strips away the defining outline and illustrative warmth
Atoomstijl (Atomic Style) Direct stylistic offspring; applied Ligne Claire principles to posters, LP covers, and graphic design with mid-century modernist influence
Franco-Belgian Comics The broader tradition from which Ligne Claire emerged; includes related but distinct styles from Moebius, Franquin, and others
Pop Art Shares bold outlines, flat color, and comic-book visual language, though Pop Art embraces irony and appropriation that Ligne Claire avoids
Ukiyo-e / Shin-hanga Japanese woodblock prints contributed compositional principles and flat-color-within-outline techniques that influenced Herge
Corporate Memphis Modern flat illustration style that echoes the flat-fill, outline-defined approach but with a distinctly corporate, disproportionate human figure vocabulary

Quick-Start: Minimal Ligne Claire Page Template

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Ligne Claire Page</title>
  <link href="https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=Nunito:wght@400;500;600;700&display=swap" rel="stylesheet">
  <style>
    :root {
      --lc-blue: #3b7dd8;
      --lc-red: #d42b2b;
      --lc-yellow: #f5c842;
      --lc-green: #4aa84e;
      --lc-orange: #e87d2f;
      --lc-cream: #faf5e8;
      --lc-ink: #1a1a1a;
      --lc-cerulean: #7ab8e0;
      --lc-sand: #e8d5a3;
      --lc-slate: #7a8b96;
      --lc-outline: #1a1a1a;
      --lc-outline-width: 2px;
    }

    * { margin: 0; padding: 0; box-sizing: border-box; }

    body {
      background: var(--lc-cream);
      color: var(--lc-ink);
      font-family: 'Nunito', sans-serif;
      font-weight: 400;
      line-height: 1.75;
    }

    h1, h2, h3 {
      font-family: 'Fredoka', sans-serif;
      font-weight: 600;
      line-height: 1.2;
      text-transform: uppercase;
      letter-spacing: 0.01em;
    }

    /* Navigation */
    nav {
      display: flex;
      align-items: center;
      justify-content: space-between;
      max-width: 1200px;
      margin: 0 auto;
      padding: 16px 40px;
      border-bottom: var(--lc-outline-width) solid var(--lc-outline);
    }

    nav a.logo {
      font-family: 'Fredoka', sans-serif;
      font-weight: 700;
      font-size: 1.5rem;
      color: var(--lc-ink);
      text-decoration: none;
      text-transform: uppercase;
    }

    nav ul {
      display: flex;
      gap: 24px;
      list-style: none;
    }

    nav ul a {
      color: #5a5245;
      text-decoration: none;
      font-weight: 600;
      font-size: 0.9rem;
      text-transform: uppercase;
      letter-spacing: 0.03em;
      transition: color 0.15s;
    }

    nav ul a:hover { color: var(--lc-blue); }

    /* Hero */
    .hero {
      display: flex;
      align-items: center;
      justify-content: space-between;
      max-width: 1200px;
      margin: 0 auto;
      padding: 60px 40px;
      gap: 48px;
    }

    .hero-content { flex: 1; max-width: 480px; }

    .hero h1 {
      font-size: clamp(2.2rem, 5vw, 3.6rem);
      margin-bottom: 1rem;
    }

    .hero p {
      font-size: 1.05rem;
      color: #5a5245;
      margin-bottom: 2rem;
    }

    .hero-visual {
      flex: 1;
      display: flex;
      justify-content: center;
    }

    /* Clear-line button */
    .btn {
      display: inline-block;
      background: var(--lc-blue);
      color: #fff;
      border: var(--lc-outline-width) solid var(--lc-outline);
      border-radius: 4px;
      padding: 12px 32px;
      font-family: 'Fredoka', sans-serif;
      font-weight: 600;
      font-size: 0.95rem;
      text-transform: uppercase;
      letter-spacing: 0.03em;
      cursor: pointer;
      text-decoration: none;
      transition: background 0.15s;
    }

    .btn:hover { background: var(--lc-cerulean); }

    /* Feature strip */
    .features {
      border-top: var(--lc-outline-width) solid var(--lc-outline);
      border-bottom: var(--lc-outline-width) solid var(--lc-outline);
      padding: 0;
    }

    .features h2 {
      text-align: center;
      font-size: 1.8rem;
      padding: 48px 40px 0;
    }

    .features-strip {
      display: flex;
      max-width: 1200px;
      margin: 40px auto;
      border: var(--lc-outline-width) solid var(--lc-outline);
      border-radius: 4px;
      overflow: hidden;
      margin-left: 40px;
      margin-right: 40px;
    }

    .feature-cell {
      flex: 1;
      padding: 28px 20px;
      text-align: center;
      border-right: var(--lc-outline-width) solid var(--lc-outline);
    }

    .feature-cell:last-child { border-right: none; }

    .feature-icon {
      width: 52px;
      height: 52px;
      border-radius: 50%;
      border: var(--lc-outline-width) solid var(--lc-outline);
      margin: 0 auto 16px;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .feature-cell h3 {
      font-size: 0.95rem;
      margin-bottom: 8px;
    }

    .feature-cell p {
      font-size: 0.9rem;
      color: #5a5245;
    }

    /* CTA section */
    .cta {
      background: var(--lc-blue);
      color: #ffffff;
      text-align: center;
      padding: 60px 40px;
      border-top: var(--lc-outline-width) solid var(--lc-outline);
      border-bottom: var(--lc-outline-width) solid var(--lc-outline);
    }

    .cta h2 {
      font-size: 2rem;
      margin-bottom: 0.75rem;
      color: #ffffff;
    }

    .cta p {
      font-size: 1.05rem;
      opacity: 0.92;
      margin-bottom: 1.5rem;
    }

    .cta .btn {
      background: var(--lc-yellow);
      color: var(--lc-ink);
    }

    .cta .btn:hover {
      background: #e0b53a;
    }

    /* Footer */
    footer {
      background: var(--lc-ink);
      color: var(--lc-sand);
      text-align: center;
      padding: 32px 40px;
      font-size: 0.85rem;
      letter-spacing: 0.02em;
    }

    @media (max-width: 768px) {
      .hero {
        flex-direction: column-reverse;
        text-align: center;
        padding: 40px 20px;
      }
      nav { padding: 12px 20px; }
      nav ul { gap: 16px; }
      .features-strip {
        flex-direction: column;
        margin-left: 20px;
        margin-right: 20px;
      }
      .feature-cell {
        border-right: none;
        border-bottom: var(--lc-outline-width) solid var(--lc-outline);
      }
      .feature-cell:last-child { border-bottom: none; }
    }
  </style>
</head>
<body>
  <nav>
    <a href="#" class="logo">ClearLine</a>
    <ul>
      <li><a href="#">Explore</a></li>
      <li><a href="#">Features</a></li>
      <li><a href="#">Gallery</a></li>
      <li><a href="#">About</a></li>
    </ul>
  </nav>

  <section class="hero">
    <div class="hero-content">
      <h1>Adventures in clarity</h1>
      <p>Clean lines, bold colors, and stories that speak for themselves. A design philosophy where every element earns its place.</p>
      <a href="#" class="btn">Begin the journey</a>
    </div>
    <div class="hero-visual">
      <svg width="420" height="320" viewBox="0 0 420 320" fill="none" xmlns="http://www.w3.org/2000/svg">
        <!-- Sky background -->
        <rect width="420" height="320" rx="4" fill="#7AB8E0" stroke="#1a1a1a" stroke-width="2"/>
        <!-- Clouds -->
        <ellipse cx="100" cy="60" rx="40" ry="18" fill="#FAF5E8" stroke="#1a1a1a" stroke-width="2"/>
        <ellipse cx="80" cy="56" rx="24" ry="14" fill="#FAF5E8" stroke="#1a1a1a" stroke-width="2"/>
        <ellipse cx="310" cy="80" rx="32" ry="14" fill="#FAF5E8" stroke="#1a1a1a" stroke-width="2"/>
        <!-- Building -->
        <rect x="50" y="120" width="100" height="180" fill="#E8D5A3" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="65" y="140" width="24" height="32" rx="2" fill="#3B7DD8" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="110" y="140" width="24" height="32" rx="2" fill="#3B7DD8" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="65" y="200" width="24" height="32" rx="2" fill="#3B7DD8" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="110" y="200" width="24" height="32" rx="2" fill="#3B7DD8" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="82" y="260" width="36" height="40" rx="2" fill="#6B3A2A" stroke="#1a1a1a" stroke-width="2"/>
        <!-- Second building -->
        <rect x="170" y="90" width="80" height="210" fill="#D42B2B" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="185" y="110" width="20" height="28" rx="2" fill="#F5C842" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="215" y="110" width="20" height="28" rx="2" fill="#F5C842" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="185" y="160" width="20" height="28" rx="2" fill="#F5C842" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="215" y="160" width="20" height="28" rx="2" fill="#F5C842" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="185" y="210" width="20" height="28" rx="2" fill="#F5C842" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="215" y="210" width="20" height="28" rx="2" fill="#F5C842" stroke="#1a1a1a" stroke-width="2"/>
        <!-- Third building -->
        <rect x="270" y="150" width="90" height="150" fill="#4AA84E" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="285" y="170" width="22" height="28" rx="2" fill="#FAF5E8" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="323" y="170" width="22" height="28" rx="2" fill="#FAF5E8" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="285" y="220" width="22" height="28" rx="2" fill="#FAF5E8" stroke="#1a1a1a" stroke-width="2"/>
        <rect x="323" y="220" width="22" height="28" rx="2" fill="#FAF5E8" stroke="#1a1a1a" stroke-width="2"/>
        <!-- Ground -->
        <rect x="0" y="298" width="420" height="22" fill="#E8D5A3" stroke="#1a1a1a" stroke-width="2"/>
        <!-- Sun -->
        <circle cx="370" cy="40" r="22" fill="#F5C842" stroke="#1a1a1a" stroke-width="2"/>
      </svg>
    </div>
  </section>

  <section class="features">
    <h2>The clear line approach</h2>
    <div class="features-strip">
      <div class="feature-cell">
        <div class="feature-icon" style="background: #e0ebf7;">
          <svg width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M12 2L2 7l10 5 10-5-10-5z" fill="#3B7DD8" stroke="#1a1a1a" stroke-width="2"/><path d="M2 17l10 5 10-5" stroke="#1a1a1a" stroke-width="2" fill="none"/><path d="M2 12l10 5 10-5" stroke="#1a1a1a" stroke-width="2" fill="none"/></svg>
        </div>
        <h3>Uniform lines</h3>
        <p>Every outline drawn at consistent weight, creating visual harmony across the entire composition.</p>
      </div>
      <div class="feature-cell">
        <div class="feature-icon" style="background: #f8e0e0;">
          <svg width="24" height="24" viewBox="0 0 24 24" fill="none"><rect x="3" y="3" width="18" height="18" rx="3" fill="#D42B2B" stroke="#1a1a1a" stroke-width="2"/><rect x="7" y="7" width="10" height="10" rx="1" fill="#FAF5E8" stroke="#1a1a1a" stroke-width="2"/></svg>
        </div>
        <h3>Flat color</h3>
        <p>Solid, unmodulated fills that enhance clarity and let the linework define every form.</p>
      </div>
      <div class="feature-cell">
        <div class="feature-icon" style="background: #fdf3d6;">
          <svg width="24" height="24" viewBox="0 0 24 24" fill="none"><circle cx="12" cy="12" r="9" fill="#F5C842" stroke="#1a1a1a" stroke-width="2"/><circle cx="12" cy="12" r="4" fill="#FAF5E8" stroke="#1a1a1a" stroke-width="2"/></svg>
        </div>
        <h3>Total clarity</h3>
        <p>Readability above all. Every element is instantly understood, crossing language barriers.</p>
      </div>
    </div>
  </section>

  <section class="cta">
    <h2>Draw your own clear line</h2>
    <p>Join a tradition of clarity and precision that spans nearly a century of visual storytelling.</p>
    <a href="#" class="btn">Start creating</a>
  </section>

  <footer>
    <p>Designed in the Ligne Claire tradition. Clear lines, bold colors, honest craft.</p>
  </footer>
</body>
</html>