website_designs

Luxury Minimalism Design Reference

Overview

Luxury Minimalism is a refined digital design aesthetic that distills high-end branding into its purest visual expression. Rather than communicating premium value through ornamentation or excess, it achieves prestige through editorial restraint, impeccable typography, and the strategic deployment of whitespace. Every element that appears on the page has earned its place through a rigorous curation process – if something does not serve the message, it does not exist. The result is a design language that feels simultaneously effortless and deeply intentional, mirroring the “quiet luxury” philosophy that has come to define modern premium branding.

The aesthetic draws from the visual traditions of high-fashion editorial design, fine-art gallery spaces, and luxury print advertising. Brands such as Celine, Bottega Veneta, The Row, and Aesop have championed this approach – stripping away logos, reducing palettes to carefully calibrated neutrals, and allowing generous negative space to communicate confidence. In web design, this translates to layouts that breathe, typographic hierarchies that guide without shouting, and color palettes built on warm ivories, soft taupes, deep charcoals, and carefully placed metallic accents. The philosophy is clear: brands that do not over-explain feel more expensive, and luxury audiences trust brands that visually curate their world.

Typography is the structural backbone of Luxury Minimalism. Headlines favor refined serif typefaces with classical proportions – fonts that carry the weight of tradition without feeling heavy. Body text employs clean, light-weight sans-serifs with generous line-height and letter-spacing, creating a reading experience that feels open and unhurried. The contrast between serif and sans-serif is not decorative; it is architectural, establishing a clear hierarchy that allows content to speak with quiet authority.

The defining characteristic of Luxury Minimalism is its discipline. Where maximalist aesthetics fill every surface with stimulation, Luxury Minimalism understands that restraint is the ultimate expression of confidence. A single perfectly set headline on a field of warm white conveys more authority than a page crowded with competing elements. Texture is introduced through typography, through the quality of photography, and through subtle material cues – not through pattern or decoration. The overall effect is one of serene, unhurried sophistication: a design that invites the viewer to slow down, to notice the details, and to appreciate the craft behind the apparent simplicity.


Visual Characteristics

Core Design Traits

Design Principles


Color Palette

Luxury Minimalism palettes are built on a foundation of warm neutrals – not stark, cold whites but carefully calibrated creams, ivories, and taupes that feel organic and inviting. The dark end of the spectrum uses charcoals and near-blacks with warm undertones rather than pure black. Accent colors are used with extreme restraint: a single muted gold, a deep olive, or a soft blush introduced at key moments to create focal points without disrupting the tonal harmony. The overall impression is one of natural, understated richness – colors you might find in raw linen, unbleached paper, aged marble, or brushed stone.

Swatch Hex Role / Usage
Parchment #FAF7F2 Primary background, page base, content areas
Warm White #F5F1EB Section backgrounds, card surfaces, modal overlays
Ivory #EFEBE4 Alternate section backgrounds, subtle contrast panels
Linen #E8E2D9 Dividers, border fills, muted background accents
Sandstone #D4CBC0 Disabled states, placeholder text, subtle separators
Warm Taupe #B0A89E Secondary text, captions, metadata, timestamps
Stone #8A837B Tertiary text, muted labels, inactive navigation
Charcoal #3D3A37 Primary text, headings, high-emphasis body copy
Deep Charcoal #2A2826 Display headlines, hero text, maximum contrast
Near Black #1A1918 Footer backgrounds, dark section inversions
Champagne #C9B98F Primary accent, decorative borders, highlight details
Muted Gold #B89D62 Hover accents, active states, premium indicators
Sage #88856A Secondary accent, tags, subtle emphasis
Blush #C9ADA7 Tertiary accent, feminine warmth, soft callouts
Deep Olive #5C5A47 Dark accent, footer text highlights, badge tones

CSS Custom Properties

:root {
  /* Warm neutral foundations */
  --lm-parchment: #faf7f2;
  --lm-warm-white: #f5f1eb;
  --lm-ivory: #efebe4;
  --lm-linen: #e8e2d9;
  --lm-sandstone: #d4cbc0;

  /* Text tones */
  --lm-taupe: #b0a89e;
  --lm-stone: #8a837b;
  --lm-charcoal: #3d3a37;
  --lm-deep-charcoal: #2a2826;
  --lm-near-black: #1a1918;

  /* Accents */
  --lm-champagne: #c9b98f;
  --lm-gold: #b89d62;
  --lm-sage: #88856a;
  --lm-blush: #c9ada7;
  --lm-olive: #5c5a47;

  /* Functional mappings */
  --lm-bg-primary: var(--lm-parchment);
  --lm-bg-surface: var(--lm-warm-white);
  --lm-bg-elevated: var(--lm-ivory);
  --lm-bg-invert: var(--lm-near-black);
  --lm-text-primary: var(--lm-charcoal);
  --lm-text-secondary: var(--lm-taupe);
  --lm-text-heading: var(--lm-deep-charcoal);
  --lm-accent: var(--lm-champagne);
  --lm-accent-hover: var(--lm-gold);
  --lm-border: var(--lm-linen);
  --lm-border-subtle: var(--lm-ivory);

  /* Shadows -- warm undertone */
  --lm-shadow-sm: 0 1px 3px rgba(58, 54, 50, 0.06);
  --lm-shadow-md: 0 4px 16px rgba(58, 54, 50, 0.08);
  --lm-shadow-lg: 0 8px 40px rgba(58, 54, 50, 0.10);
  --lm-shadow-xl: 0 16px 64px rgba(58, 54, 50, 0.12);
}

Typography

Luxury Minimalism typography draws from the editorial traditions of high-end fashion magazines, museum catalogues, and premium brand identity systems. Headlines use refined serif typefaces with classical proportions – fonts that carry the gravitas of centuries of typographic craft without appearing ornate. Body text relies on clean, humanist or geometric sans-serifs set at lighter weights with generous line-height and tracking, creating a reading experience that feels airy, considered, and unhurried. The interplay between serif and sans-serif is the primary source of visual contrast and hierarchy – a controlled tension between tradition and modernity that defines the aesthetic.

Font Style Best For
Cormorant Garamond Elegant, refined display serif Headlines, hero text, pull quotes
Playfair Display High-contrast transitional serif Feature headings, editorial titles
Libre Baskerville Classical serif, excellent screen rendering Subheadings, blockquotes, secondary headings
Spectral Modern serif designed for screens Long-form body text, editorial articles
DM Serif Display Warm, approachable display serif Hero headlines, brand statements
Inter Clean, modern sans-serif Body text, navigation, UI elements
Jost Geometric sans with humanist warmth Subheadings, buttons, form labels
Outfit Contemporary geometric sans Navigation, captions, metadata
Lato Humanist sans-serif, warm neutrality Body copy, descriptions, long-form text
Raleway Elegant thin geometric sans Uppercase labels, tracking-heavy elements

Font Pairing Suggestions

Heading Font Body Font Character
Cormorant Garamond (500/600) Inter (300/400) Refined editorial elegance, modern readability
Playfair Display (400/700) Lato (300/400) Classic luxury publishing, warm and approachable
DM Serif Display (400) Jost (300/400) Contemporary premium, clean and inviting
Libre Baskerville (400/700) Outfit (300/400) Understated heritage luxury, crisp interface
Cormorant Garamond (600) Raleway (300) High-fashion editorial, maximum typographic contrast

Typography CSS Example

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

h1, h2, h3, h4, h5, h6 {
  font-family: 'Cormorant Garamond', 'Georgia', serif;
  font-weight: 500;
  color: var(--lm-text-heading);
  line-height: 1.15;
  letter-spacing: -0.01em;
}

h1 {
  font-size: clamp(2.75rem, 6vw, 5rem);
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: -0.02em;
}

h2 {
  font-size: clamp(2rem, 4vw, 3.25rem);
  font-weight: 500;
}

h3 {
  font-size: clamp(1.5rem, 2.5vw, 2rem);
  font-weight: 600;
}

body {
  font-family: 'Inter', 'Helvetica Neue', sans-serif;
  font-weight: 300;
  font-size: 1rem;
  line-height: 1.85;
  color: var(--lm-text-primary);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Uppercase label style -- navigation, categories, metadata */
.lm-label {
  font-family: 'Inter', sans-serif;
  font-weight: 400;
  font-size: 0.7rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--lm-taupe);
}

/* Pull quote style */
.lm-quote {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 400;
  font-size: 1.75rem;
  color: var(--lm-stone);
  line-height: 1.5;
  letter-spacing: 0.01em;
}

/* Display headline -- oversized hero text */
.lm-display {
  font-family: 'Cormorant Garamond', serif;
  font-size: clamp(3.5rem, 8vw, 7rem);
  font-weight: 300;
  line-height: 1.0;
  letter-spacing: -0.03em;
  color: var(--lm-deep-charcoal);
}

/* Accent tracking for brand details */
.lm-tracked {
  font-family: 'Raleway', sans-serif;
  font-weight: 400;
  font-size: 0.65rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--lm-champagne);
}

Layout Principles


CSS / Design Techniques

Luxury Card Component

.lm-card {
  background: var(--lm-bg-surface);
  border: 1px solid var(--lm-border-subtle);
  padding: 48px 40px;
  position: relative;
  transition: box-shadow 0.5s ease, border-color 0.5s ease;
}

.lm-card:hover {
  border-color: var(--lm-sandstone);
  box-shadow: var(--lm-shadow-lg);
}

.lm-card__label {
  font-family: 'Inter', sans-serif;
  font-weight: 400;
  font-size: 0.65rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--lm-taupe);
  margin-bottom: 20px;
}

.lm-card__title {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.75rem;
  font-weight: 500;
  color: var(--lm-text-heading);
  margin-bottom: 16px;
  line-height: 1.25;
}

.lm-card__text {
  font-family: 'Inter', sans-serif;
  font-weight: 300;
  font-size: 0.95rem;
  line-height: 1.75;
  color: var(--lm-stone);
}

.lm-card__link {
  display: inline-block;
  margin-top: 24px;
  font-family: 'Inter', sans-serif;
  font-weight: 400;
  font-size: 0.7rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--lm-charcoal);
  text-decoration: none;
  border-bottom: 1px solid var(--lm-champagne);
  padding-bottom: 2px;
  transition: color 0.3s ease, border-color 0.3s ease;
}

.lm-card__link:hover {
  color: var(--lm-gold);
  border-color: var(--lm-gold);
}

Premium Button Styles

/* Primary button -- outlined, minimal */
.lm-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  color: var(--lm-charcoal);
  border: 1px solid var(--lm-charcoal);
  padding: 14px 40px;
  font-family: 'Inter', sans-serif;
  font-weight: 400;
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.4s ease, color 0.4s ease, border-color 0.4s ease;
}

.lm-btn:hover {
  background: var(--lm-charcoal);
  color: var(--lm-parchment);
}

/* Secondary button -- champagne accent border */
.lm-btn--secondary {
  border-color: var(--lm-champagne);
  color: var(--lm-stone);
}

.lm-btn--secondary:hover {
  background: var(--lm-champagne);
  color: var(--lm-near-black);
  border-color: var(--lm-champagne);
}

/* Inverted button for dark backgrounds */
.lm-btn--invert {
  border-color: var(--lm-parchment);
  color: var(--lm-parchment);
}

.lm-btn--invert:hover {
  background: var(--lm-parchment);
  color: var(--lm-near-black);
}

/* Text-only button with underline */
.lm-btn--text {
  border: none;
  padding: 0;
  font-family: 'Inter', sans-serif;
  font-weight: 400;
  font-size: 0.7rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--lm-charcoal);
  background: transparent;
  cursor: pointer;
  position: relative;
}

.lm-btn--text::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 100%;
  height: 1px;
  background: var(--lm-champagne);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.4s ease;
}

.lm-btn--text:hover::after {
  transform: scaleX(1);
  transform-origin: left;
}
.lm-nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 24px 5vw;
  background: rgba(250, 247, 242, 0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--lm-border-subtle);
  transition: padding 0.4s ease, background 0.4s ease;
}

.lm-nav--scrolled {
  padding: 16px 5vw;
  background: rgba(250, 247, 242, 0.97);
  box-shadow: var(--lm-shadow-sm);
}

.lm-nav__logo {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--lm-text-heading);
  text-decoration: none;
  letter-spacing: 0.05em;
}

.lm-nav__links {
  display: flex;
  align-items: center;
  gap: 36px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.lm-nav__link {
  font-family: 'Inter', sans-serif;
  font-weight: 400;
  font-size: 0.65rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--lm-stone);
  text-decoration: none;
  position: relative;
  transition: color 0.3s ease;
}

.lm-nav__link:hover {
  color: var(--lm-charcoal);
}

.lm-nav__link::after {
  content: '';
  position: absolute;
  bottom: -4px;
  left: 0;
  width: 100%;
  height: 1px;
  background: var(--lm-champagne);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.4s ease;
}

.lm-nav__link:hover::after {
  transform: scaleX(1);
  transform-origin: left;
}

Hero Section

.lm-hero {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: 120px 5vw;
  text-align: center;
  background: var(--lm-bg-primary);
  position: relative;
}

.lm-hero__content {
  max-width: 800px;
}

.lm-hero__label {
  font-family: 'Inter', sans-serif;
  font-weight: 400;
  font-size: 0.65rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--lm-champagne);
  margin-bottom: 32px;
}

.lm-hero__title {
  font-family: 'Cormorant Garamond', serif;
  font-size: clamp(3rem, 8vw, 6.5rem);
  font-weight: 300;
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--lm-deep-charcoal);
  margin-bottom: 32px;
}

.lm-hero__subtitle {
  font-family: 'Inter', sans-serif;
  font-weight: 300;
  font-size: 1.05rem;
  line-height: 1.8;
  color: var(--lm-stone);
  max-width: 540px;
  margin: 0 auto 48px;
}

/* Hairline accent below hero */
.lm-hero::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 60px;
  height: 1px;
  background: var(--lm-champagne);
}

Editorial Image-Text Section

.lm-editorial {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: 0;
  min-height: 80vh;
  align-items: center;
}

.lm-editorial--reverse {
  grid-template-columns: 1fr 1.2fr;
}

.lm-editorial__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  filter: saturate(0.85) contrast(1.02);
}

.lm-editorial__content {
  padding: 80px 72px;
  max-width: 520px;
}

.lm-editorial--reverse .lm-editorial__content {
  margin-left: auto;
}

.lm-editorial__label {
  font-family: 'Inter', sans-serif;
  font-weight: 400;
  font-size: 0.65rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--lm-champagne);
  margin-bottom: 24px;
}

.lm-editorial__title {
  font-family: 'Cormorant Garamond', serif;
  font-size: clamp(2rem, 3vw, 2.75rem);
  font-weight: 500;
  line-height: 1.2;
  color: var(--lm-text-heading);
  margin-bottom: 24px;
}

.lm-editorial__text {
  font-family: 'Inter', sans-serif;
  font-weight: 300;
  font-size: 0.95rem;
  line-height: 1.85;
  color: var(--lm-stone);
  margin-bottom: 32px;
}

@media (max-width: 768px) {
  .lm-editorial,
  .lm-editorial--reverse {
    grid-template-columns: 1fr;
  }

  .lm-editorial__content {
    padding: 48px 24px;
  }
}

Hairline Divider

.lm-divider {
  width: 60px;
  height: 1px;
  background: var(--lm-champagne);
  margin: 0 auto;
  border: none;
}

.lm-divider--wide {
  width: 120px;
}

.lm-divider--full {
  width: 100%;
  background: var(--lm-border);
}

.lm-divider--left {
  margin: 0;
}

Scroll Reveal Animation

.lm-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94),
              transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.lm-reveal--visible {
  opacity: 1;
  transform: translateY(0);
}

.lm-reveal--delay-1 { transition-delay: 0.1s; }
.lm-reveal--delay-2 { transition-delay: 0.2s; }
.lm-reveal--delay-3 { transition-delay: 0.3s; }
.lm-reveal--delay-4 { transition-delay: 0.4s; }

/* Stagger children within a grid */
.lm-reveal-stagger > * {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}

.lm-reveal-stagger--visible > *:nth-child(1) { transition-delay: 0.05s; }
.lm-reveal-stagger--visible > *:nth-child(2) { transition-delay: 0.15s; }
.lm-reveal-stagger--visible > *:nth-child(3) { transition-delay: 0.25s; }
.lm-reveal-stagger--visible > *:nth-child(4) { transition-delay: 0.35s; }

.lm-reveal-stagger--visible > * {
  opacity: 1;
  transform: translateY(0);
}

Dark Section Inversion

.lm-section--dark {
  background: var(--lm-bg-invert);
  color: var(--lm-parchment);
  padding: 120px 5vw;
}

.lm-section--dark h2,
.lm-section--dark h3 {
  color: var(--lm-warm-white);
}

.lm-section--dark p {
  color: var(--lm-sandstone);
}

.lm-section--dark .lm-label {
  color: var(--lm-champagne);
}

.lm-section--dark .lm-divider {
  background: var(--lm-champagne);
  opacity: 0.5;
}

.lm-section--dark .lm-card {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.08);
}

.lm-section--dark .lm-card:hover {
  border-color: rgba(201, 185, 143, 0.3);
}

Design Do’s and Don’ts

Do’s

Don’ts


Aesthetic Relationship
Dark Luxe Shares premium positioning and refined typography; inverts the palette to dark foundations with metallic accents
Editorial Magazine Layout Shares asymmetric compositions, typographic hierarchy, and image-text pairings; more content-dense
Swiss / International Typographic Shares emphasis on typographic structure and grid systems; more rigid and systematic, less warm
Japandi Shares appreciation for simplicity, natural materials, and restrained palettes; adds Japanese wabi-sabi warmth
Scandinavian Minimal Shares light palettes and clean layouts; more functional and democratic, less explicitly luxurious
Art Deco Shares luxury positioning; differs dramatically in use of geometric ornamentation and metallic excess
Quiet Luxury / Old Money The fashion-world equivalent; translates directly to web as Luxury Minimalism with its emphasis on understatement
Clean Corporate Shares minimal layouts but prioritizes conversion and utility over editorial beauty and atmosphere

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>Luxury Minimalism -- Template</title>

  <!-- Google Fonts -->
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400;1,500&family=Inter:wght@300;400;500&family=Raleway:wght@300;400;500&display=swap" rel="stylesheet">

  <style>
    /* ============================================
       CSS Custom Properties
    ============================================ */
    :root {
      /* Warm neutral foundations */
      --lm-parchment: #faf7f2;
      --lm-warm-white: #f5f1eb;
      --lm-ivory: #efebe4;
      --lm-linen: #e8e2d9;
      --lm-sandstone: #d4cbc0;

      /* Text tones */
      --lm-taupe: #b0a89e;
      --lm-stone: #8a837b;
      --lm-charcoal: #3d3a37;
      --lm-deep-charcoal: #2a2826;
      --lm-near-black: #1a1918;

      /* Accents */
      --lm-champagne: #c9b98f;
      --lm-gold: #b89d62;
      --lm-sage: #88856a;
      --lm-blush: #c9ada7;
      --lm-olive: #5c5a47;

      /* Functional */
      --lm-bg-primary: var(--lm-parchment);
      --lm-bg-surface: var(--lm-warm-white);
      --lm-bg-elevated: var(--lm-ivory);
      --lm-bg-invert: var(--lm-near-black);
      --lm-text-primary: var(--lm-charcoal);
      --lm-text-secondary: var(--lm-taupe);
      --lm-text-heading: var(--lm-deep-charcoal);
      --lm-accent: var(--lm-champagne);
      --lm-accent-hover: var(--lm-gold);
      --lm-border: var(--lm-linen);
      --lm-border-subtle: var(--lm-ivory);

      /* Shadows */
      --lm-shadow-sm: 0 1px 3px rgba(58, 54, 50, 0.06);
      --lm-shadow-md: 0 4px 16px rgba(58, 54, 50, 0.08);
      --lm-shadow-lg: 0 8px 40px rgba(58, 54, 50, 0.10);
    }

    /* ============================================
       Reset & Base
    ============================================ */
    *, *::before, *::after {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    html {
      scroll-behavior: smooth;
      font-size: 16px;
    }

    body {
      font-family: 'Inter', 'Helvetica Neue', sans-serif;
      font-weight: 300;
      font-size: 1rem;
      line-height: 1.85;
      color: var(--lm-text-primary);
      background: var(--lm-bg-primary);
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
    }

    img {
      max-width: 100%;
      height: auto;
      display: block;
    }

    a {
      color: inherit;
      text-decoration: none;
    }

    /* ============================================
       Typography
    ============================================ */
    h1, h2, h3, h4, h5, h6 {
      font-family: 'Cormorant Garamond', 'Georgia', serif;
      font-weight: 500;
      color: var(--lm-text-heading);
      line-height: 1.15;
    }

    h1 {
      font-size: clamp(3rem, 8vw, 6.5rem);
      font-weight: 300;
      line-height: 1.05;
      letter-spacing: -0.02em;
    }

    h2 {
      font-size: clamp(2rem, 4vw, 3.25rem);
    }

    h3 {
      font-size: clamp(1.5rem, 2.5vw, 2rem);
      font-weight: 600;
    }

    p {
      margin-bottom: 1.5em;
    }

    .label {
      font-family: 'Inter', sans-serif;
      font-weight: 400;
      font-size: 0.65rem;
      letter-spacing: 0.25em;
      text-transform: uppercase;
      color: var(--lm-taupe);
    }

    .label--accent {
      color: var(--lm-champagne);
    }

    .tracked {
      font-family: 'Raleway', sans-serif;
      font-weight: 400;
      font-size: 0.65rem;
      letter-spacing: 0.25em;
      text-transform: uppercase;
      color: var(--lm-champagne);
    }

    blockquote {
      font-family: 'Cormorant Garamond', serif;
      font-style: italic;
      font-weight: 400;
      font-size: 1.75rem;
      color: var(--lm-stone);
      line-height: 1.5;
      border-left: 1px solid var(--lm-champagne);
      padding-left: 32px;
      margin: 48px 0;
    }

    /* ============================================
       Layout Utilities
    ============================================ */
    .container {
      max-width: 1040px;
      margin: 0 auto;
      padding: 0 5vw;
    }

    .container--narrow {
      max-width: 720px;
    }

    .container--wide {
      max-width: 1280px;
    }

    .section {
      padding: 120px 0;
    }

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

    .text-center {
      text-align: center;
    }

    .divider {
      width: 60px;
      height: 1px;
      background: var(--lm-champagne);
      border: none;
      margin: 0 auto;
    }

    /* ============================================
       Navigation
    ============================================ */
    .nav {
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      z-index: 100;
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 28px 5vw;
      background: rgba(250, 247, 242, 0.9);
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      transition: padding 0.4s ease;
    }

    .nav--scrolled {
      padding: 16px 5vw;
      border-bottom: 1px solid var(--lm-border-subtle);
    }

    .nav__logo {
      font-family: 'Cormorant Garamond', serif;
      font-size: 1.3rem;
      font-weight: 600;
      color: var(--lm-text-heading);
      letter-spacing: 0.05em;
    }

    .nav__links {
      display: flex;
      align-items: center;
      gap: 40px;
      list-style: none;
    }

    .nav__link {
      font-family: 'Inter', sans-serif;
      font-weight: 400;
      font-size: 0.65rem;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      color: var(--lm-stone);
      position: relative;
      transition: color 0.3s ease;
    }

    .nav__link:hover {
      color: var(--lm-charcoal);
    }

    .nav__link::after {
      content: '';
      position: absolute;
      bottom: -4px;
      left: 0;
      width: 100%;
      height: 1px;
      background: var(--lm-champagne);
      transform: scaleX(0);
      transform-origin: right;
      transition: transform 0.4s ease;
    }

    .nav__link:hover::after {
      transform: scaleX(1);
      transform-origin: left;
    }

    /* ============================================
       Hero
    ============================================ */
    .hero {
      display: flex;
      align-items: center;
      justify-content: center;
      min-height: 100vh;
      padding: 120px 5vw;
      text-align: center;
      position: relative;
    }

    .hero__content {
      max-width: 780px;
    }

    .hero__label {
      margin-bottom: 32px;
    }

    .hero__title {
      margin-bottom: 32px;
    }

    .hero__subtitle {
      font-weight: 300;
      font-size: 1.05rem;
      line-height: 1.85;
      color: var(--lm-stone);
      max-width: 520px;
      margin: 0 auto 48px;
    }

    .hero::after {
      content: '';
      position: absolute;
      bottom: 0;
      left: 50%;
      transform: translateX(-50%);
      width: 60px;
      height: 1px;
      background: var(--lm-champagne);
    }

    /* ============================================
       Buttons
    ============================================ */
    .btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      background: transparent;
      color: var(--lm-charcoal);
      border: 1px solid var(--lm-charcoal);
      padding: 14px 44px;
      font-family: 'Inter', sans-serif;
      font-weight: 400;
      font-size: 0.7rem;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      cursor: pointer;
      transition: background 0.4s ease, color 0.4s ease;
    }

    .btn:hover {
      background: var(--lm-charcoal);
      color: var(--lm-parchment);
    }

    .btn--secondary {
      border-color: var(--lm-champagne);
      color: var(--lm-stone);
    }

    .btn--secondary:hover {
      background: var(--lm-champagne);
      color: var(--lm-near-black);
      border-color: var(--lm-champagne);
    }

    .btn--invert {
      border-color: var(--lm-parchment);
      color: var(--lm-parchment);
    }

    .btn--invert:hover {
      background: var(--lm-parchment);
      color: var(--lm-near-black);
    }

    /* ============================================
       Editorial Section
    ============================================ */
    .editorial {
      display: grid;
      grid-template-columns: 1.2fr 1fr;
      gap: 0;
      min-height: 75vh;
      align-items: center;
    }

    .editorial--reverse {
      grid-template-columns: 1fr 1.2fr;
    }

    .editorial__image {
      width: 100%;
      height: 100%;
      min-height: 500px;
      object-fit: cover;
      filter: saturate(0.85) contrast(1.02);
    }

    .editorial__content {
      padding: 80px 72px;
      max-width: 500px;
    }

    .editorial--reverse .editorial__content {
      margin-left: auto;
    }

    .editorial__label {
      margin-bottom: 24px;
    }

    .editorial__title {
      font-size: clamp(1.75rem, 3vw, 2.5rem);
      margin-bottom: 24px;
    }

    .editorial__text {
      font-size: 0.95rem;
      line-height: 1.85;
      color: var(--lm-stone);
      margin-bottom: 32px;
    }

    /* ============================================
       Cards
    ============================================ */
    .card-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 48px;
    }

    .card {
      background: var(--lm-bg-surface);
      border: 1px solid var(--lm-border-subtle);
      padding: 48px 36px;
      transition: box-shadow 0.5s ease, border-color 0.5s ease;
    }

    .card:hover {
      border-color: var(--lm-sandstone);
      box-shadow: var(--lm-shadow-lg);
    }

    .card__label {
      font-family: 'Inter', sans-serif;
      font-weight: 400;
      font-size: 0.6rem;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      color: var(--lm-taupe);
      margin-bottom: 20px;
    }

    .card__title {
      font-family: 'Cormorant Garamond', serif;
      font-size: 1.6rem;
      font-weight: 500;
      color: var(--lm-text-heading);
      margin-bottom: 16px;
      line-height: 1.25;
    }

    .card__text {
      font-size: 0.9rem;
      line-height: 1.75;
      color: var(--lm-stone);
      margin-bottom: 24px;
    }

    .card__link {
      font-family: 'Inter', sans-serif;
      font-weight: 400;
      font-size: 0.65rem;
      letter-spacing: 0.18em;
      text-transform: uppercase;
      color: var(--lm-charcoal);
      border-bottom: 1px solid var(--lm-champagne);
      padding-bottom: 2px;
      transition: color 0.3s ease, border-color 0.3s ease;
    }

    .card__link:hover {
      color: var(--lm-gold);
      border-color: var(--lm-gold);
    }

    /* ============================================
       Dark Inverted Section
    ============================================ */
    .section--dark {
      background: var(--lm-bg-invert);
      color: var(--lm-parchment);
    }

    .section--dark h2,
    .section--dark h3 {
      color: var(--lm-warm-white);
    }

    .section--dark p {
      color: var(--lm-sandstone);
    }

    .section--dark .label {
      color: var(--lm-champagne);
    }

    .section--dark .btn--invert {
      border-color: rgba(250, 247, 242, 0.4);
      color: var(--lm-parchment);
    }

    .section--dark .btn--invert:hover {
      border-color: var(--lm-parchment);
      background: var(--lm-parchment);
      color: var(--lm-near-black);
    }

    /* ============================================
       Blockquote / Pull Quote
    ============================================ */
    .pull-quote {
      text-align: center;
      padding: 100px 5vw;
    }

    .pull-quote__text {
      font-family: 'Cormorant Garamond', serif;
      font-style: italic;
      font-weight: 400;
      font-size: clamp(1.5rem, 3vw, 2.25rem);
      color: var(--lm-stone);
      line-height: 1.55;
      max-width: 700px;
      margin: 0 auto 24px;
    }

    .pull-quote__attribution {
      font-family: 'Inter', sans-serif;
      font-weight: 400;
      font-size: 0.65rem;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      color: var(--lm-taupe);
    }

    /* ============================================
       Footer
    ============================================ */
    .footer {
      padding: 80px 5vw;
      text-align: center;
      border-top: 1px solid var(--lm-border);
    }

    .footer__logo {
      font-family: 'Cormorant Garamond', serif;
      font-size: 1.5rem;
      font-weight: 500;
      color: var(--lm-text-heading);
      margin-bottom: 24px;
    }

    .footer__links {
      display: flex;
      justify-content: center;
      gap: 32px;
      list-style: none;
      margin-bottom: 40px;
    }

    .footer__link {
      font-family: 'Inter', sans-serif;
      font-weight: 400;
      font-size: 0.65rem;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      color: var(--lm-taupe);
      transition: color 0.3s ease;
    }

    .footer__link:hover {
      color: var(--lm-charcoal);
    }

    .footer__copy {
      font-size: 0.75rem;
      color: var(--lm-taupe);
    }

    /* ============================================
       Scroll Reveal
    ============================================ */
    .reveal {
      opacity: 0;
      transform: translateY(24px);
      transition: opacity 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94),
                  transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    }

    .reveal--visible {
      opacity: 1;
      transform: translateY(0);
    }

    /* ============================================
       Responsive
    ============================================ */
    @media (max-width: 900px) {
      .card-grid {
        grid-template-columns: 1fr;
        gap: 32px;
      }

      .editorial,
      .editorial--reverse {
        grid-template-columns: 1fr;
      }

      .editorial__content {
        padding: 48px 24px;
      }

      .nav__links {
        gap: 24px;
      }
    }

    @media (max-width: 600px) {
      .hero {
        padding: 100px 6vw;
        min-height: 90vh;
      }

      .section {
        padding: 80px 0;
      }

      .nav {
        padding: 20px 5vw;
      }

      .nav__links {
        display: none;
      }
    }
  </style>
</head>
<body>

  <!-- ========================================
       Navigation
  ========================================== -->
  <nav class="nav" id="nav">
    <a href="#" class="nav__logo">Maison</a>
    <ul class="nav__links">
      <li><a href="#about" class="nav__link">About</a></li>
      <li><a href="#collection" class="nav__link">Collection</a></li>
      <li><a href="#philosophy" class="nav__link">Philosophy</a></li>
      <li><a href="#contact" class="nav__link">Contact</a></li>
    </ul>
  </nav>

  <!-- ========================================
       Hero
  ========================================== -->
  <section class="hero">
    <div class="hero__content">
      <p class="label label--accent hero__label">Established 2024</p>
      <h1 class="hero__title">The Art of<br>Refined Living</h1>
      <p class="hero__subtitle">
        Curated objects and considered spaces for those who
        understand that true luxury lies in simplicity.
      </p>
      <a href="#collection" class="btn">Explore Collection</a>
    </div>
  </section>

  <!-- ========================================
       About / Editorial
  ========================================== -->
  <section id="about">
    <div class="editorial reveal">
      <img
        src="https://images.unsplash.com/photo-1600585154340-be6161a56a0c?w=900&q=80"
        alt="Minimalist interior with natural light"
        class="editorial__image"
      >
      <div class="editorial__content">
        <p class="label label--accent editorial__label">Our Philosophy</p>
        <h2 class="editorial__title">Less, But Better</h2>
        <p class="editorial__text">
          We believe that every object in a space should earn its presence.
          Our curation process is one of subtraction -- removing the unnecessary
          until only the essential remains. What stays is crafted with
          intention, built from honest materials, and designed to age
          with grace.
        </p>
        <a href="#" class="btn--secondary btn">Learn More</a>
      </div>
    </div>
  </section>

  <!-- ========================================
       Pull Quote
  ========================================== -->
  <section class="pull-quote reveal">
    <hr class="divider" style="margin-bottom: 48px;">
    <p class="pull-quote__text">
      "Perfection is achieved not when there is nothing more to add,
      but when there is nothing left to take away."
    </p>
    <p class="pull-quote__attribution">Antoine de Saint-Exupery</p>
    <hr class="divider" style="margin-top: 48px;">
  </section>

  <!-- ========================================
       Collection Cards
  ========================================== -->
  <section id="collection" class="section">
    <div class="container">
      <div class="text-center reveal" style="margin-bottom: 72px;">
        <p class="label label--accent" style="margin-bottom: 16px;">The Collection</p>
        <h2>Considered Objects</h2>
      </div>

      <div class="card-grid">
        <div class="card reveal">
          <p class="card__label">Ceramics</p>
          <h3 class="card__title">Stoneware Vessels</h3>
          <p class="card__text">
            Hand-thrown in small batches from locally sourced clay.
            Each piece carries the quiet imperfections that mark
            authentic craftsmanship.
          </p>
          <a href="#" class="card__link">View Pieces</a>
        </div>

        <div class="card reveal">
          <p class="card__label">Textiles</p>
          <h3 class="card__title">Linen Collection</h3>
          <p class="card__text">
            Woven from European flax and finished without chemical
            softeners. The texture improves with every wash, growing
            softer and more characterful over time.
          </p>
          <a href="#" class="card__link">View Pieces</a>
        </div>

        <div class="card reveal">
          <p class="card__label">Lighting</p>
          <h3 class="card__title">Sculptural Lamps</h3>
          <p class="card__text">
            Minimal forms in brushed brass and hand-blown glass.
            Designed to cast warm, ambient light that transforms
            the atmosphere of a room.
          </p>
          <a href="#" class="card__link">View Pieces</a>
        </div>
      </div>
    </div>
  </section>

  <!-- ========================================
       Dark Inverted Section
  ========================================== -->
  <section id="philosophy" class="section section--dark">
    <div class="container container--narrow text-center">
      <div class="reveal">
        <p class="label" style="margin-bottom: 16px;">Philosophy</p>
        <h2 style="margin-bottom: 32px;">Crafted With Intention</h2>
        <p style="max-width: 560px; margin: 0 auto 48px;">
          Every material is chosen for its honesty. Every form is refined
          until nothing remains but purpose. We work with artisans who
          share our belief that the most beautiful objects are those
          that reveal their making.
        </p>
        <a href="#" class="btn btn--invert">Our Process</a>
      </div>
    </div>
  </section>

  <!-- ========================================
       Editorial (Reversed)
  ========================================== -->
  <section>
    <div class="editorial editorial--reverse reveal">
      <div class="editorial__content">
        <p class="label label--accent editorial__label">Materials</p>
        <h2 class="editorial__title">Honest Materials,<br>Timeless Forms</h2>
        <p class="editorial__text">
          Natural stone, unfinished wood, hand-forged metal, organic
          linen. We source materials that age beautifully -- developing
          patina, softening with use, and becoming more personal
          with time. Nothing synthetic. Nothing disposable.
        </p>
        <a href="#" class="btn">Discover Materials</a>
      </div>
      <img
        src="https://images.unsplash.com/photo-1616486338812-3dadae4b4ace?w=900&q=80"
        alt="Natural materials and textures"
        class="editorial__image"
      >
    </div>
  </section>

  <!-- ========================================
       Footer
  ========================================== -->
  <footer id="contact" class="footer">
    <p class="footer__logo">Maison</p>
    <ul class="footer__links">
      <li><a href="#" class="footer__link">About</a></li>
      <li><a href="#" class="footer__link">Collection</a></li>
      <li><a href="#" class="footer__link">Journal</a></li>
      <li><a href="#" class="footer__link">Contact</a></li>
      <li><a href="#" class="footer__link">Instagram</a></li>
    </ul>
    <p class="footer__copy">&copy; 2026 Maison. All rights reserved.</p>
  </footer>

  <!-- ========================================
       Scroll Reveal Script
  ========================================== -->
  <script>
    // Scroll reveal
    const revealElements = document.querySelectorAll('.reveal');

    const revealObserver = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) {
          entry.target.classList.add('reveal--visible');
          revealObserver.unobserve(entry.target);
        }
      });
    }, {
      threshold: 0.15,
      rootMargin: '0px 0px -40px 0px'
    });

    revealElements.forEach(el => revealObserver.observe(el));

    // Nav scroll behavior
    const nav = document.getElementById('nav');
    let lastScroll = 0;

    window.addEventListener('scroll', () => {
      const currentScroll = window.scrollY;
      if (currentScroll > 60) {
        nav.classList.add('nav--scrolled');
      } else {
        nav.classList.remove('nav--scrolled');
      }
      lastScroll = currentScroll;
    });
  </script>

</body>
</html>

Implementation Tips