website_designs

Clean Girl Design Reference

Overview

Clean Girl is a minimalist, polished, and fresh aesthetic that emerged on TikTok in late 2021 and early 2022, quickly evolving from a beauty microtrend into a full lifestyle and design philosophy. Rooted in the idea of disciplined effortlessness, the Clean Girl look celebrates dewy skin, slicked-back hair, neutral wardrobes, and immaculately organized spaces. Celebrities like Hailey Bieber and Bella Hadid are often credited as the visual archetypes, though the aesthetic draws heavily from earlier “that girl” wellness culture – early risers, green juice, Pilates, and curated simplicity.

In digital and web design, Clean Girl translates into interfaces that feel spa-like and editorial: generous white space, warm neutral palettes of ivory, beige, and taupe, whisper-thin typography, and imagery that emphasizes luminous skin, natural light, and uncluttered surfaces. The visual language borrows from high-end skincare branding and fashion editorial layouts – think Glossier’s product pages, Aesop’s typographic restraint, and the quiet luxury of a well-organized vanity. Every element serves a purpose; nothing competes for attention. Backgrounds are soft and creamy, text is refined and understated, and interactive elements feel smooth and intentional.

What distinguishes Clean Girl from broader minimalism is its warmth and femininity. Where Swiss-style minimalism is cold and systematic, Clean Girl is approachable and luminous. Where Japandi embraces imperfection and craft, Clean Girl pursues a polished, almost glass-like perfection – dewy finishes, seamless gradients, and edges so clean they feel curated by algorithm. The palette avoids stark white-and-black contrasts in favor of soft warm neutrals that feel like a cashmere sweater or a satin pillowcase. Typography is airy and elegant, never heavy or industrial. The overall impression is one of quiet confidence: someone who has everything effortlessly together, and whose digital spaces reflect that same serene discipline.


Visual Characteristics

Core Design Traits

Design Principles


Color Palette

The Clean Girl palette is drawn from the world of skincare, cashmere, and latte foam – warm neutrals that feel luminous and polished. Colors should layer together seamlessly, creating tonal depth without contrast shock. Accents are muted and organic: a hint of dusty rose, a breath of sage, a touch of warm cocoa. The overall impression should feel like soft natural light filtering through sheer linen curtains onto a marble vanity.

Swatch Hex Role/Usage
Ivory Cream #FAF7F2 Primary page background, the canvas of the entire design
Warm White #FFFDF8 Card backgrounds, modal overlays, elevated surfaces
Oat Milk #F0EAE0 Secondary background, section alternation, soft fills
Soft Beige #E8DFD2 Tertiary surface, input field backgrounds, subtle containers
Champagne #D9CEBD Border color, divider lines, quiet structural elements
Warm Taupe #B5A898 Secondary text, captions, placeholder text, muted labels
Latte #A08E7D Icon color, subtle accent elements, inactive states
Cocoa #7A6B5D Primary text on light backgrounds, headings, body copy
Espresso #4A3F35 High-contrast text, bold headings, primary action text
Dusty Rose #D4A5A5 Warm accent, highlight states, subtle call-to-action tint
Blush Nude #E8C4B8 Decorative accent, hover glow, soft badge backgrounds
Sage Whisper #B8C4B2 Secondary accent, success states, organic freshness
Cloud Gray #E5E1DC Disabled states, skeleton loaders, neutral fill
Dewy Highlight #FFF5EC Hero gradient endpoint, glow overlays, luminous highlights

CSS Custom Properties

:root {
  --clean-ivory: #FAF7F2;
  --clean-white: #FFFDF8;
  --clean-oat: #F0EAE0;
  --clean-beige: #E8DFD2;
  --clean-champagne: #D9CEBD;
  --clean-taupe: #B5A898;
  --clean-latte: #A08E7D;
  --clean-cocoa: #7A6B5D;
  --clean-espresso: #4A3F35;
  --clean-rose: #D4A5A5;
  --clean-blush: #E8C4B8;
  --clean-sage: #B8C4B2;
  --clean-cloud: #E5E1DC;
  --clean-highlight: #FFF5EC;
}

Typography

Clean Girl typography is understated and refined. Fonts lean toward light-weight geometric sans-serifs and elegant modern serifs with generous letter-spacing and airy line heights. The goal is readability wrapped in quiet sophistication – nothing heavy, nothing decorative, nothing that demands attention. Text should feel like it was placed by a high-end editorial art director: precise, minimal, and effortlessly legible.

Font Weight(s) Usage Link
Outfit 200, 300, 400, 500 Clean geometric sans-serif for headings and UI Outfit
DM Sans 300, 400, 500 Versatile humanist sans for body text and labels DM Sans
Cormorant Garamond 300, 400, 500 Elegant serif for editorial headings and pull quotes Cormorant Garamond
Inter 300, 400, 500 Neutral, highly readable sans for UI elements and small text Inter
Jost 200, 300, 400 Geometric sans-serif with a modern, refined character Jost

Font Pairing Suggestions

Heading Body Mood
Cormorant Garamond 300 DM Sans 400 Editorial luxury, skincare branding, quiet elegance
Outfit 300 Inter 400 Modern minimalism, app-like clarity, polished simplicity
Jost 200 DM Sans 300 Airy sophistication, fashion-forward, ultra-light
Cormorant Garamond 400 Jost 300 Refined editorial, serif-sans contrast, high-end feel

CSS Example

@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;1,300;1,400&family=DM+Sans:wght@300;400;500&family=Outfit:wght@200;300;400;500&display=swap');

body {
  font-family: 'DM Sans', 'Inter', -apple-system, sans-serif;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.75;
  color: var(--clean-cocoa);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3 {
  font-family: 'Cormorant Garamond', 'Georgia', serif;
  font-weight: 300;
  line-height: 1.25;
  color: var(--clean-espresso);
  letter-spacing: 0.01em;
}

h1 { font-size: 2.75rem; }
h2 { font-size: 1.85rem; }
h3 { font-size: 1.25rem; font-weight: 400; }

.label, .caption {
  font-family: 'Outfit', 'DM Sans', sans-serif;
  font-size: 0.75rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--clean-taupe);
}

Layout Principles


CSS / Design Techniques

Clean Girl Card

.clean-card {
  background: var(--clean-white);
  border: 1px solid rgba(217, 206, 189, 0.5);
  border-radius: 12px;
  padding: 36px;
  box-shadow:
    0 1px 3px rgba(74, 63, 53, 0.03),
    0 4px 16px rgba(74, 63, 53, 0.04);
  transition: all 0.35s ease;
}

.clean-card:hover {
  box-shadow:
    0 2px 6px rgba(74, 63, 53, 0.05),
    0 8px 28px rgba(74, 63, 53, 0.06);
  transform: translateY(-2px);
}

.clean-card h3 {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 400;
  font-size: 1.35rem;
  color: var(--clean-espresso);
  margin-bottom: 12px;
}

.clean-card p {
  font-family: 'DM Sans', sans-serif;
  font-size: 0.95rem;
  color: var(--clean-cocoa);
  line-height: 1.7;
}

Polished Button

/* Primary -- warm and understated */
.clean-btn {
  background: var(--clean-espresso);
  color: var(--clean-ivory);
  border: none;
  border-radius: 8px;
  padding: 14px 32px;
  font-family: 'Outfit', 'DM Sans', sans-serif;
  font-weight: 400;
  font-size: 0.85rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.3s ease;
}

.clean-btn:hover {
  background: var(--clean-cocoa);
  box-shadow: 0 4px 16px rgba(74, 63, 53, 0.15);
  transform: translateY(-1px);
}

/* Secondary -- ghost outline */
.clean-btn-secondary {
  background: transparent;
  color: var(--clean-espresso);
  border: 1px solid var(--clean-champagne);
  border-radius: 8px;
  padding: 13px 31px;
  font-family: 'Outfit', 'DM Sans', sans-serif;
  font-weight: 400;
  font-size: 0.85rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.3s ease;
}

.clean-btn-secondary:hover {
  border-color: var(--clean-taupe);
  background: rgba(240, 234, 224, 0.4);
}

/* Blush accent -- soft call-to-action */
.clean-btn-blush {
  background: var(--clean-rose);
  color: #FFFDF8;
  border: none;
  border-radius: 8px;
  padding: 14px 32px;
  font-family: 'Outfit', 'DM Sans', sans-serif;
  font-weight: 400;
  font-size: 0.85rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.3s ease;
}

.clean-btn-blush:hover {
  background: #C89494;
  box-shadow: 0 4px 16px rgba(212, 165, 165, 0.3);
}

Minimal Navigation

.clean-nav {
  background: rgba(250, 247, 242, 0.9);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(217, 206, 189, 0.35);
  padding: 18px 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 48px;
  position: sticky;
  top: 0;
  z-index: 100;
}

.clean-nav .brand {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 400;
  font-size: 1.2rem;
  color: var(--clean-espresso);
  letter-spacing: 0.06em;
  text-decoration: none;
}

.clean-nav a {
  font-family: 'Outfit', 'DM Sans', sans-serif;
  font-size: 0.75rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--clean-cocoa);
  text-decoration: none;
  transition: color 0.25s ease;
  position: relative;
}

.clean-nav a:hover {
  color: var(--clean-espresso);
}

.clean-nav a::after {
  content: '';
  position: absolute;
  bottom: -4px;
  left: 0;
  width: 0;
  height: 1px;
  background: var(--clean-espresso);
  transition: width 0.3s ease;
}

.clean-nav a:hover::after {
  width: 100%;
}

Dewy Hero Section

.clean-hero {
  background: linear-gradient(
    180deg,
    var(--clean-highlight) 0%,
    var(--clean-ivory) 60%,
    var(--clean-oat) 100%
  );
  text-align: center;
  padding: 120px 40px 100px;
  position: relative;
  overflow: hidden;
}

/* Soft radial glow -- the dewy luminous effect */
.clean-hero::before {
  content: '';
  position: absolute;
  top: -30%;
  left: 50%;
  transform: translateX(-50%);
  width: 120%;
  height: 80%;
  background: radial-gradient(
    ellipse at 50% 50%,
    rgba(232, 196, 184, 0.15) 0%,
    transparent 65%
  );
  pointer-events: none;
}

.clean-hero .overline {
  font-family: 'Outfit', sans-serif;
  font-size: 0.7rem;
  font-weight: 400;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--clean-taupe);
  margin-bottom: 16px;
  display: block;
  position: relative;
}

.clean-hero h1 {
  font-family: 'Cormorant Garamond', serif;
  font-size: 3.5rem;
  font-weight: 300;
  color: var(--clean-espresso);
  line-height: 1.15;
  position: relative;
  margin-bottom: 20px;
}

.clean-hero p {
  font-family: 'DM Sans', sans-serif;
  font-size: 1.05rem;
  color: var(--clean-latte);
  max-width: 480px;
  margin: 0 auto 32px;
  line-height: 1.7;
  position: relative;
}

Soft Divider

/* Thin gradient fade divider */
.clean-divider {
  border: none;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    var(--clean-champagne) 30%,
    var(--clean-champagne) 70%,
    transparent 100%
  );
  margin: 64px auto;
  max-width: 280px;
}

/* Dot divider -- minimal pearl-like accent */
.clean-divider-dot {
  border: none;
  text-align: center;
  margin: 56px auto;
}

.clean-divider-dot::before {
  content: '';
  display: inline-block;
  width: 5px;
  height: 5px;
  background: var(--clean-champagne);
  border-radius: 50%;
}

Luminous Section Background

/* Alternating section tones for visual rhythm */
.section-ivory {
  background: var(--clean-ivory);
  padding: 80px 0;
}

.section-oat {
  background: var(--clean-oat);
  padding: 80px 0;
}

/* Dewy glow overlay for feature sections */
.section-glow {
  position: relative;
  background: var(--clean-ivory);
  padding: 80px 0;
}

.section-glow::before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 80%;
  height: 100%;
  background: radial-gradient(
    ellipse at 50% 0%,
    rgba(232, 196, 184, 0.08) 0%,
    transparent 60%
  );
  pointer-events: none;
}

Glass Skin Input

.clean-input {
  background: var(--clean-white);
  border: 1px solid var(--clean-champagne);
  border-radius: 8px;
  padding: 14px 18px;
  font-family: 'DM Sans', sans-serif;
  font-size: 0.95rem;
  color: var(--clean-espresso);
  width: 100%;
  transition: all 0.3s ease;
}

.clean-input:focus {
  outline: none;
  border-color: var(--clean-taupe);
  background: #FFFFFF;
  box-shadow: 0 0 0 3px rgba(181, 168, 152, 0.1);
}

.clean-input::placeholder {
  color: var(--clean-champagne);
  font-weight: 300;
  letter-spacing: 0.02em;
}

/* Label above input */
.clean-label {
  display: block;
  font-family: 'Outfit', sans-serif;
  font-size: 0.7rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--clean-taupe);
  margin-bottom: 8px;
}

Full Page Scaffold

:root {
  --clean-ivory: #FAF7F2;
  --clean-white: #FFFDF8;
  --clean-oat: #F0EAE0;
  --clean-beige: #E8DFD2;
  --clean-champagne: #D9CEBD;
  --clean-taupe: #B5A898;
  --clean-latte: #A08E7D;
  --clean-cocoa: #7A6B5D;
  --clean-espresso: #4A3F35;
  --clean-rose: #D4A5A5;
  --clean-blush: #E8C4B8;
  --clean-sage: #B8C4B2;
  --clean-cloud: #E5E1DC;
  --clean-highlight: #FFF5EC;
  --clean-radius-sm: 6px;
  --clean-radius-md: 8px;
  --clean-radius-lg: 12px;
  --clean-radius-xl: 16px;
}

*, *::before, *::after {
  box-sizing: border-box;
}

body {
  font-family: 'DM Sans', -apple-system, sans-serif;
  background-color: var(--clean-ivory);
  color: var(--clean-cocoa);
  line-height: 1.75;
  margin: 0;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3 {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-weight: 300;
  line-height: 1.25;
  color: var(--clean-espresso);
}

h1 { font-size: 2.75rem; letter-spacing: 0.01em; }
h2 { font-size: 1.85rem; letter-spacing: 0.01em; }
h3 { font-size: 1.25rem; font-weight: 400; }

p {
  max-width: 38em;
  margin-bottom: 1.5em;
}

a {
  color: var(--clean-cocoa);
  text-decoration: underline;
  text-decoration-color: var(--clean-champagne);
  text-underline-offset: 3px;
  transition: color 0.25s ease, text-decoration-color 0.25s ease;
}

a:hover {
  color: var(--clean-espresso);
  text-decoration-color: var(--clean-taupe);
}

.container {
  max-width: 800px;
  margin: 0 auto;
  padding: 0 2rem;
}

section {
  padding: 80px 0;
}

Design Do’s and Don’ts

Do

Don’t


Aesthetic Relationship
Minimalism Shares the commitment to simplicity and reduction, but Clean Girl is warmer and more feminine, rooted in lifestyle rather than philosophy
Japandi Both value natural palettes and negative space; Japandi embraces imperfection and craft, while Clean Girl pursues polished perfection
Hygge Overlapping warmth and comfort, but Hygge is cozier and more textural; Clean Girl is sleeker and more curated
Quiet Luxury Close cousin in the fashion world; both reject logos and loud branding in favor of quality materials and understated elegance
That Girl Direct predecessor on TikTok; “that girl” wellness culture (journaling, green smoothies, early mornings) laid the groundwork for Clean Girl
Coastal Style Shares light, airy palettes and an emphasis on natural light; Coastal is nautical and breezy while Clean Girl is urban and polished
Glossier Pink The Glossier brand aesthetic is a close parallel in the beauty industry: dewy, minimal, warm pink, millennial-friendly
Soft Girl Both are TikTok-born feminine aesthetics; Soft Girl is more pastel, playful, and youthful while Clean Girl is more mature and refined

Quick-Start HTML Template

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Clean Girl -- Aesthetic Layout</title>
  <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;1,300;1,400&family=DM+Sans:wght@300;400;500&family=Outfit:wght@200;300;400;500&display=swap" rel="stylesheet">
  <style>
    /* ========================================
       Clean Girl -- CSS Foundation
       ======================================== */

    :root {
      --clean-ivory: #FAF7F2;
      --clean-white: #FFFDF8;
      --clean-oat: #F0EAE0;
      --clean-beige: #E8DFD2;
      --clean-champagne: #D9CEBD;
      --clean-taupe: #B5A898;
      --clean-latte: #A08E7D;
      --clean-cocoa: #7A6B5D;
      --clean-espresso: #4A3F35;
      --clean-rose: #D4A5A5;
      --clean-blush: #E8C4B8;
      --clean-sage: #B8C4B2;
      --clean-cloud: #E5E1DC;
      --clean-highlight: #FFF5EC;
    }

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

    html {
      scroll-behavior: smooth;
    }

    body {
      font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif;
      font-size: 1rem;
      font-weight: 400;
      line-height: 1.75;
      color: var(--clean-cocoa);
      background-color: var(--clean-ivory);
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
    }

    /* ========================================
       Navigation
       ======================================== */

    .nav {
      background: rgba(250, 247, 242, 0.92);
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      border-bottom: 1px solid rgba(217, 206, 189, 0.35);
      padding: 18px 40px;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 48px;
      position: sticky;
      top: 0;
      z-index: 100;
    }

    .nav .brand {
      font-family: 'Cormorant Garamond', serif;
      font-weight: 400;
      font-size: 1.2rem;
      color: var(--clean-espresso);
      letter-spacing: 0.06em;
      text-decoration: none;
    }

    .nav-links {
      display: flex;
      align-items: center;
      gap: 36px;
    }

    .nav-links a {
      font-family: 'Outfit', sans-serif;
      font-size: 0.72rem;
      font-weight: 400;
      letter-spacing: 0.12em;
      text-transform: uppercase;
      color: var(--clean-cocoa);
      text-decoration: none;
      transition: color 0.25s ease;
      position: relative;
    }

    .nav-links a::after {
      content: '';
      position: absolute;
      bottom: -4px;
      left: 0;
      width: 0;
      height: 1px;
      background: var(--clean-espresso);
      transition: width 0.3s ease;
    }

    .nav-links a:hover {
      color: var(--clean-espresso);
    }

    .nav-links a:hover::after {
      width: 100%;
    }

    /* ========================================
       Hero Section
       ======================================== */

    .hero {
      background: linear-gradient(
        180deg,
        var(--clean-highlight) 0%,
        var(--clean-ivory) 60%,
        var(--clean-oat) 100%
      );
      text-align: center;
      padding: 120px 40px 100px;
      position: relative;
      overflow: hidden;
    }

    .hero::before {
      content: '';
      position: absolute;
      top: -30%;
      left: 50%;
      transform: translateX(-50%);
      width: 120%;
      height: 80%;
      background: radial-gradient(
        ellipse at 50% 50%,
        rgba(232, 196, 184, 0.15) 0%,
        transparent 65%
      );
      pointer-events: none;
    }

    .hero .overline {
      font-family: 'Outfit', sans-serif;
      font-size: 0.7rem;
      font-weight: 400;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      color: var(--clean-taupe);
      margin-bottom: 16px;
      display: block;
      position: relative;
    }

    .hero h1 {
      font-family: 'Cormorant Garamond', serif;
      font-size: 3.5rem;
      font-weight: 300;
      color: var(--clean-espresso);
      line-height: 1.15;
      position: relative;
      margin-bottom: 20px;
    }

    .hero h1 em {
      font-style: italic;
      color: var(--clean-rose);
    }

    .hero p {
      font-size: 1.05rem;
      color: var(--clean-latte);
      max-width: 460px;
      margin: 0 auto 36px;
      line-height: 1.7;
      position: relative;
    }

    .hero .btn-group {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 16px;
      position: relative;
    }

    /* ========================================
       Buttons
       ======================================== */

    .btn {
      display: inline-block;
      border-radius: 8px;
      padding: 14px 32px;
      font-family: 'Outfit', sans-serif;
      font-weight: 400;
      font-size: 0.8rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      text-decoration: none;
      cursor: pointer;
      transition: all 0.3s ease;
    }

    .btn-primary {
      background: var(--clean-espresso);
      color: var(--clean-ivory);
      border: none;
    }

    .btn-primary:hover {
      background: var(--clean-cocoa);
      box-shadow: 0 4px 16px rgba(74, 63, 53, 0.15);
      transform: translateY(-1px);
    }

    .btn-outline {
      background: transparent;
      color: var(--clean-espresso);
      border: 1px solid var(--clean-champagne);
    }

    .btn-outline:hover {
      border-color: var(--clean-taupe);
      background: rgba(240, 234, 224, 0.4);
    }

    /* ========================================
       Divider
       ======================================== */

    .divider {
      border: none;
      height: 1px;
      background: linear-gradient(
        90deg,
        transparent 0%,
        var(--clean-champagne) 30%,
        var(--clean-champagne) 70%,
        transparent 100%
      );
      margin: 0 auto;
      max-width: 240px;
    }

    /* ========================================
       Content Sections
       ======================================== */

    .container {
      max-width: 800px;
      margin: 0 auto;
      padding: 0 2rem;
    }

    .section {
      padding: 80px 0;
    }

    .section-alt {
      padding: 80px 0;
      background: var(--clean-oat);
    }

    .section-header {
      text-align: center;
      margin-bottom: 48px;
    }

    .section-header .overline {
      font-family: 'Outfit', sans-serif;
      font-size: 0.68rem;
      font-weight: 400;
      letter-spacing: 0.16em;
      text-transform: uppercase;
      color: var(--clean-taupe);
      margin-bottom: 12px;
      display: block;
    }

    .section-header h2 {
      font-family: 'Cormorant Garamond', serif;
      font-size: 2rem;
      font-weight: 300;
      color: var(--clean-espresso);
      margin-bottom: 12px;
    }

    .section-header p {
      font-size: 0.95rem;
      color: var(--clean-latte);
      max-width: 420px;
      margin: 0 auto;
      line-height: 1.7;
    }

    /* ========================================
       Card Grid
       ======================================== */

    .card-grid {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      gap: 28px;
    }

    .card {
      background: var(--clean-white);
      border: 1px solid rgba(217, 206, 189, 0.5);
      border-radius: 12px;
      padding: 36px;
      box-shadow:
        0 1px 3px rgba(74, 63, 53, 0.03),
        0 4px 16px rgba(74, 63, 53, 0.04);
      transition: all 0.35s ease;
    }

    .card:hover {
      box-shadow:
        0 2px 6px rgba(74, 63, 53, 0.05),
        0 8px 28px rgba(74, 63, 53, 0.06);
      transform: translateY(-2px);
    }

    .card .icon {
      width: 40px;
      height: 40px;
      border-radius: 10px;
      background: var(--clean-oat);
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 1.1rem;
      margin-bottom: 20px;
      color: var(--clean-latte);
    }

    .card h3 {
      font-family: 'Cormorant Garamond', serif;
      font-weight: 400;
      font-size: 1.3rem;
      color: var(--clean-espresso);
      margin-bottom: 10px;
    }

    .card p {
      font-size: 0.92rem;
      color: var(--clean-cocoa);
      line-height: 1.7;
    }

    /* ========================================
       Feature -- Image + Text Split
       ======================================== */

    .feature {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 48px;
      align-items: center;
    }

    .feature-img {
      width: 100%;
      aspect-ratio: 4 / 5;
      background: linear-gradient(
        135deg,
        var(--clean-beige) 0%,
        var(--clean-oat) 50%,
        var(--clean-blush) 100%
      );
      border-radius: 12px;
    }

    .feature-text .overline {
      font-family: 'Outfit', sans-serif;
      font-size: 0.68rem;
      font-weight: 400;
      letter-spacing: 0.14em;
      text-transform: uppercase;
      color: var(--clean-taupe);
      margin-bottom: 12px;
      display: block;
    }

    .feature-text h2 {
      font-family: 'Cormorant Garamond', serif;
      font-size: 1.85rem;
      font-weight: 300;
      color: var(--clean-espresso);
      margin-bottom: 16px;
    }

    .feature-text p {
      font-size: 0.95rem;
      color: var(--clean-cocoa);
      line-height: 1.75;
      margin-bottom: 24px;
    }

    /* ========================================
       Testimonial / Quote
       ======================================== */

    .quote-block {
      text-align: center;
      max-width: 560px;
      margin: 0 auto;
    }

    .quote-block blockquote {
      font-family: 'Cormorant Garamond', serif;
      font-size: 1.5rem;
      font-weight: 300;
      font-style: italic;
      color: var(--clean-espresso);
      line-height: 1.5;
      margin-bottom: 20px;
    }

    .quote-block cite {
      font-family: 'Outfit', sans-serif;
      font-size: 0.72rem;
      font-weight: 400;
      font-style: normal;
      letter-spacing: 0.12em;
      text-transform: uppercase;
      color: var(--clean-taupe);
    }

    /* ========================================
       Newsletter / CTA Section
       ======================================== */

    .cta-section {
      text-align: center;
      padding: 80px 40px;
      background: linear-gradient(
        180deg,
        var(--clean-oat) 0%,
        var(--clean-ivory) 100%
      );
    }

    .cta-section h2 {
      font-family: 'Cormorant Garamond', serif;
      font-size: 2rem;
      font-weight: 300;
      color: var(--clean-espresso);
      margin-bottom: 12px;
    }

    .cta-section p {
      font-size: 0.95rem;
      color: var(--clean-latte);
      max-width: 380px;
      margin: 0 auto 28px;
    }

    .cta-form {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 12px;
      max-width: 440px;
      margin: 0 auto;
    }

    .cta-form input {
      flex: 1;
      background: var(--clean-white);
      border: 1px solid var(--clean-champagne);
      border-radius: 8px;
      padding: 14px 18px;
      font-family: 'DM Sans', sans-serif;
      font-size: 0.92rem;
      color: var(--clean-espresso);
      transition: all 0.3s ease;
    }

    .cta-form input:focus {
      outline: none;
      border-color: var(--clean-taupe);
      box-shadow: 0 0 0 3px rgba(181, 168, 152, 0.1);
    }

    .cta-form input::placeholder {
      color: var(--clean-champagne);
      font-weight: 300;
    }

    .cta-form .btn {
      white-space: nowrap;
    }

    /* ========================================
       Footer
       ======================================== */

    .footer {
      padding: 40px;
      text-align: center;
      border-top: 1px solid rgba(217, 206, 189, 0.35);
    }

    .footer p {
      font-family: 'Outfit', sans-serif;
      font-size: 0.72rem;
      font-weight: 400;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--clean-taupe);
      max-width: none;
      margin: 0;
    }

    /* ========================================
       Responsive
       ======================================== */

    @media (max-width: 768px) {
      .nav {
        flex-direction: column;
        gap: 16px;
        padding: 16px 24px;
      }

      .nav-links {
        gap: 20px;
      }

      .hero {
        padding: 80px 24px 60px;
      }

      .hero h1 {
        font-size: 2.4rem;
      }

      .hero .btn-group {
        flex-direction: column;
        gap: 12px;
      }

      .card-grid {
        grid-template-columns: 1fr;
        gap: 20px;
      }

      .feature {
        grid-template-columns: 1fr;
        gap: 32px;
      }

      .cta-form {
        flex-direction: column;
      }

      .cta-form input,
      .cta-form .btn {
        width: 100%;
        text-align: center;
      }

      .container {
        padding: 0 1.25rem;
      }

      .section, .section-alt {
        padding: 56px 0;
      }
    }
  </style>
</head>
<body>

  <!-- Navigation -->
  <nav class="nav">
    <a href="#" class="brand">Clean Girl</a>
    <div class="nav-links">
      <a href="#routine">Routine</a>
      <a href="#essentials">Essentials</a>
      <a href="#lifestyle">Lifestyle</a>
      <a href="#about">About</a>
    </div>
  </nav>

  <!-- Hero Section -->
  <header class="hero">
    <span class="overline">Minimalist &middot; Polished &middot; Fresh</span>
    <h1>Less Is <em>Luminous</em></h1>
    <p>Effortless elegance for those who believe simplicity
       is the ultimate form of sophistication.</p>
    <div class="btn-group">
      <a href="#routine" class="btn btn-primary">Discover</a>
      <a href="#essentials" class="btn btn-outline">Explore</a>
    </div>
  </header>

  <!-- Divider -->
  <hr class="divider" style="margin: 0 auto;">

  <!-- Cards Section -->
  <section class="section" id="routine">
    <div class="container">
      <div class="section-header">
        <span class="overline">Daily Ritual</span>
        <h2>The Clean Girl Routine</h2>
        <p>A curated approach to beauty, wellness, and everyday living.</p>
      </div>
      <div class="card-grid">
        <div class="card">
          <div class="icon">&#9702;</div>
          <h3>Glass Skin</h3>
          <p>Luminous, dewy skin achieved through intentional
             skincare: serums, moisturizers, and SPF layered
             with care for a lit-from-within glow.</p>
        </div>
        <div class="card">
          <div class="icon">&#9702;</div>
          <h3>Slicked Back</h3>
          <p>Clean, effortless hair styled into sleek buns, low
             ponytails, or soft claw clips. Never fussy,
             always polished.</p>
        </div>
        <div class="card">
          <div class="icon">&#9702;</div>
          <h3>Neutral Palette</h3>
          <p>A capsule wardrobe of elevated basics in ivory,
             beige, taupe, and soft camel. Every piece
             mixes seamlessly with every other.</p>
        </div>
        <div class="card">
          <div class="icon">&#9702;</div>
          <h3>Mindful Living</h3>
          <p>Early mornings, green juice, Pilates, journaling,
             and an immaculately organized space. Order as
             a form of self-care.</p>
        </div>
      </div>
    </div>
  </section>

  <!-- Feature Section -->
  <section class="section-alt" id="essentials">
    <div class="container">
      <div class="feature">
        <div class="feature-img" aria-label="Soft neutral product arrangement"></div>
        <div class="feature-text">
          <span class="overline">Curated Essentials</span>
          <h2>Fewer Things, Better Things</h2>
          <p>The Clean Girl philosophy extends beyond beauty into
             every corner of life. A capsule wardrobe, a minimal
             vanity, a clear desk. Each object earns its place
             through quality and intention, not quantity.</p>
          <a href="#" class="btn btn-primary">Shop Essentials</a>
        </div>
      </div>
    </div>
  </section>

  <!-- Quote Section -->
  <section class="section" id="lifestyle">
    <div class="container">
      <div class="quote-block">
        <blockquote>&ldquo;Simplicity is the keynote of all
          true elegance.&rdquo;</blockquote>
        <cite>Coco Chanel</cite>
      </div>
    </div>
  </section>

  <!-- CTA / Newsletter -->
  <section class="cta-section" id="about">
    <h2>Stay Effortless</h2>
    <p>Curated inspiration for the clean, polished life
       you are building.</p>
    <form class="cta-form" onsubmit="return false;">
      <input type="email" placeholder="Your email address">
      <button type="submit" class="btn btn-primary">Subscribe</button>
    </form>
  </section>

  <!-- Footer -->
  <footer class="footer">
    <p>Clean Girl &middot; Minimalist Polished Fresh</p>
  </footer>

</body>
</html>

Implementation Tips