Neo Minimalism is a warmer, more textured evolution of stark minimalism that emerged prominently in the early 2020s and solidified as a dominant design philosophy by 2024-2026. Where traditional minimalism stripped interfaces down to cold, clinical abstractions – pure white backgrounds, rigid grids, and sterile sans-serifs – Neo Minimalism reintroduces the human qualities that were lost in the pursuit of reduction. It retains the discipline of “less is more” but reframes it as “less, but meaningful.” Every element that remains in a Neo Minimalist composition must earn its place not only through function but through emotional resonance.
The aesthetic draws from several converging influences: the Quiet Luxury movement in fashion (brands like The Row and Khaite demonstrating that restraint communicates sophistication), the Japanese philosophy of wabi-sabi (finding beauty in imperfection and transience), Scandinavian hygge (cozy contentment), and the broader cultural fatigue with soulless corporate minimalism that dominated tech interfaces throughout the 2010s. Neo Minimalism is the design world’s answer to the question: how do we keep things simple without making them feel empty?
Visually, Neo Minimalism replaces pure whites with warm off-whites, creams, and parchment tones. Hard geometric grids give way to breathing, asymmetric layouts. Surfaces gain subtle texture – linen weaves, paper grain, soft noise overlays – that invite the eye to linger rather than slide past. Typography becomes expressive and editorial, with confident serif headlines balanced by clean humanist body text. Color palettes ground themselves in warm neutrals (sand, oat, sage, clay, chocolate) with restrained accent hues that punctuate rather than dominate. Shadows are barely perceptible, suggesting weight rather than elevation. Animations are slow, deliberate, and purposeful – a gentle fade, a measured reveal – never flashy or attention-seeking.
The philosophy is one of intentional warmth. Neo Minimalism rejects both the maximalist chaos of Dopamine Design and the sterile emptiness of pure minimalism, finding a middle path where clarity serves emotion, where simplicity creates comfort, and where every design choice communicates care. It is minimalism that has learned to breathe, to feel, and to welcome.
Neo Minimalism grounds itself in warm neutrals drawn from natural materials – sand, clay, oat, linen, stone – with muted organic accents that punctuate without overpowering. The palette avoids pure black and pure white, instead using deep warm charcoals and soft creams that feel approachable and human. Color is used with extreme restraint: the 70-20-10 rule applies, with 70% warm neutrals, 20% supporting tones, and 10% accent color.
| Swatch | Hex | Role / Usage |
|---|---|---|
| Warm Cream | #FAF6F0 |
Primary page background; the warm canvas everything sits upon |
| Parchment | #F0EBE3 |
Secondary backgrounds; card surfaces, section alternation |
| Oat | #E8E0D4 |
Tertiary surface; subtle layering, sidebar backgrounds |
| Soft Clay | #D5CABB |
Border color, divider lines, input field borders |
| Warm Sand | #C7B9A5 |
Muted UI elements, disabled states, placeholder text color |
| Taupe | #9E8E7E |
Secondary text, captions, metadata, subtle labels |
| Warm Stone | #7A6F63 |
Body text alternative on light backgrounds |
| Deep Charcoal | #2D2926 |
Primary text color; warm near-black |
| Chocolate | #4A3728 |
Dark accents, footer backgrounds, deep contrast elements |
| Sage Green | #8B9A7B |
Primary accent; buttons, links, active states, icons |
| Dusty Terracotta | #C4907A |
Secondary accent; highlights, tags, warm interactive states |
| Muted Rose | #C9A092 |
Tertiary accent; hover states, soft highlights, decorative touches |
| Warm Amber | #D4A66A |
Accent for warnings, featured badges, warm callouts |
| Soft Slate | #8E949A |
Cool neutral accent; balanced contrast, secondary icons |
| Ivory White | #FDFCF9 |
Lightest surface; modal backgrounds, elevated card surfaces |
:root {
/* --- Backgrounds --- */
--neo-bg: #FAF6F0;
--neo-bg-alt: #F0EBE3;
--neo-surface: #E8E0D4;
--neo-surface-elevated: #FDFCF9;
/* --- Borders & Dividers --- */
--neo-border: #D5CABB;
--neo-border-light: #E8E0D4;
--neo-divider: #D5CABB;
/* --- Text --- */
--neo-text: #2D2926;
--neo-text-secondary: #7A6F63;
--neo-text-muted: #9E8E7E;
--neo-text-placeholder: #C7B9A5;
/* --- Accents --- */
--neo-accent-primary: #8B9A7B;
--neo-accent-secondary: #C4907A;
--neo-accent-tertiary: #C9A092;
--neo-accent-warm: #D4A66A;
--neo-accent-cool: #8E949A;
/* --- Darks --- */
--neo-dark: #2D2926;
--neo-dark-deep: #4A3728;
/* --- Functional --- */
--neo-success: #8B9A7B;
--neo-warning: #D4A66A;
--neo-error: #C4907A;
/* --- Radii --- */
--neo-radius-sm: 6px;
--neo-radius-md: 10px;
--neo-radius-lg: 14px;
--neo-radius-xl: 20px;
/* --- Shadows --- */
--neo-shadow-sm: 0 1px 3px rgba(45, 41, 38, 0.04);
--neo-shadow-md: 0 2px 8px rgba(45, 41, 38, 0.06);
--neo-shadow-lg: 0 4px 16px rgba(45, 41, 38, 0.08);
}
Neo Minimalism treats typography as the primary expressive element. With minimal imagery and restrained decoration, typefaces carry the emotional weight of the design. The approach pairs expressive, confident serifs for headlines with warm humanist sans-serifs for body text. Weights tend toward light and regular – heavy bold weights break the tranquil restraint. Letter-spacing is slightly open on headings, creating an airy, editorial feel. Line heights are generous (1.6-1.8 for body), giving text room to breathe in alignment with the philosophy of meaningful negative space.
| Font Name | Category | Weight Range | Role |
|---|---|---|---|
| Fraunces | Serif (Variable) | 300-700 | Display headlines; warm, expressive optical sizing |
| DM Serif Display | Serif | 400 | Section headings; refined and approachable |
| Cormorant Garamond | Serif | 300-600 | Editorial headlines, pull quotes, decorative text |
| Outfit | Sans-serif | 300-600 | Primary body text; soft, humanist, highly readable |
| Albert Sans | Sans-serif | 300-600 | Alternative body; contemporary warmth and openness |
| Manrope | Sans-serif (Variable) | 300-700 | UI elements, navigation, labels; geometric-humanist balance |
| Crimson Text | Serif | 400-700 | Long-form body text in editorial contexts |
| Work Sans | Sans-serif | 300-500 | Functional text, metadata, captions, small labels |
| Pairing Name | Heading Font | Body Font | Character |
|---|---|---|---|
| Warm Editorial | Fraunces (300) | Outfit (400) | Expressive yet approachable; ideal for lifestyle and brand sites |
| Classic Comfort | Cormorant Garamond (300) | Albert Sans (400) | Elegant with contemporary warmth; suits portfolio and editorial |
| Modern Calm | DM Serif Display (400) | Manrope (400) | Refined heading with clean body; works for product and SaaS |
| Readable Heritage | Crimson Text (400) | Work Sans (400) | Traditional with functional clarity; long-form content and blogs |
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,300;9..144,400;9..144,500&family=Outfit:wght@300;400;500&family=DM+Serif+Display&family=Manrope:wght@300;400;500&display=swap');
body {
font-family: 'Outfit', 'Albert Sans', system-ui, sans-serif;
font-weight: 400;
font-size: 1.05rem;
line-height: 1.72;
color: var(--neo-text);
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
h1, h2, h3, h4 {
font-family: 'Fraunces', 'DM Serif Display', 'Georgia', serif;
font-weight: 300;
line-height: 1.2;
color: var(--neo-text);
letter-spacing: -0.01em;
}
h1 {
font-size: clamp(2.4rem, 5vw, 3.6rem);
font-weight: 300;
letter-spacing: -0.02em;
}
h2 {
font-size: clamp(1.6rem, 3.5vw, 2.2rem);
font-weight: 400;
}
h3 {
font-size: clamp(1.2rem, 2.5vw, 1.5rem);
font-weight: 400;
letter-spacing: 0.01em;
}
.label, .caption, .overline {
font-family: 'Manrope', 'Work Sans', sans-serif;
font-size: 0.75rem;
font-weight: 500;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--neo-text-muted);
}
blockquote {
font-family: 'Cormorant Garamond', 'Crimson Text', serif;
font-size: 1.4rem;
font-weight: 300;
font-style: italic;
line-height: 1.6;
color: var(--neo-text-secondary);
border-left: 2px solid var(--neo-border);
padding-left: 1.5rem;
margin: 2rem 0;
}
.neo-card {
background: var(--neo-surface-elevated);
border: 1px solid var(--neo-border-light);
border-radius: var(--neo-radius-lg);
padding: 2rem 2.25rem;
transition: all 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);
box-shadow: var(--neo-shadow-sm);
}
.neo-card:hover {
box-shadow: var(--neo-shadow-md);
transform: translateY(-2px);
border-color: var(--neo-border);
}
.neo-card__overline {
font-family: 'Manrope', sans-serif;
font-size: 0.7rem;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--neo-accent-primary);
margin-bottom: 0.75rem;
}
.neo-card__title {
font-family: 'Fraunces', serif;
font-size: 1.35rem;
font-weight: 400;
color: var(--neo-text);
margin-bottom: 0.75rem;
line-height: 1.3;
}
.neo-card__body {
font-size: 0.95rem;
color: var(--neo-text-secondary);
line-height: 1.65;
}
/* Primary button -- warm and confident */
.neo-btn {
display: inline-flex;
align-items: center;
gap: 0.5rem;
background: var(--neo-dark);
color: var(--neo-bg);
border: none;
border-radius: var(--neo-radius-md);
padding: 0.8rem 1.8rem;
font-family: 'Outfit', sans-serif;
font-weight: 400;
font-size: 0.9rem;
letter-spacing: 0.04em;
cursor: pointer;
transition: all 0.3s ease;
}
.neo-btn:hover {
background: var(--neo-dark-deep);
box-shadow: var(--neo-shadow-md);
transform: translateY(-1px);
}
/* Secondary button -- outlined, subtle */
.neo-btn--secondary {
background: transparent;
color: var(--neo-text);
border: 1px solid var(--neo-border);
padding: 0.75rem 1.75rem;
}
.neo-btn--secondary:hover {
border-color: var(--neo-text-secondary);
background: var(--neo-bg-alt);
}
/* Accent button -- sage green for positive actions */
.neo-btn--accent {
background: var(--neo-accent-primary);
color: #FDFCF9;
}
.neo-btn--accent:hover {
background: #7A8B6B;
box-shadow: 0 2px 10px rgba(139, 154, 123, 0.2);
}
/* Ghost button -- minimal presence */
.neo-btn--ghost {
background: transparent;
color: var(--neo-text-secondary);
border: none;
padding: 0.75rem 1rem;
text-decoration: underline;
text-decoration-color: var(--neo-border);
text-underline-offset: 3px;
}
.neo-btn--ghost:hover {
color: var(--neo-text);
text-decoration-color: var(--neo-text);
}
.neo-nav {
position: sticky;
top: 0;
z-index: 100;
display: flex;
align-items: center;
justify-content: space-between;
padding: 1rem 2rem;
background: rgba(250, 246, 240, 0.85);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(213, 202, 187, 0.4);
transition: all 0.3s ease;
}
.neo-nav__logo {
font-family: 'Fraunces', serif;
font-size: 1.3rem;
font-weight: 400;
color: var(--neo-text);
text-decoration: none;
letter-spacing: -0.01em;
}
.neo-nav__links {
display: flex;
gap: 2rem;
list-style: none;
margin: 0;
padding: 0;
}
.neo-nav__link {
font-family: 'Manrope', sans-serif;
font-size: 0.85rem;
font-weight: 400;
color: var(--neo-text-secondary);
text-decoration: none;
letter-spacing: 0.03em;
transition: color 0.25s ease;
position: relative;
}
.neo-nav__link:hover {
color: var(--neo-text);
}
.neo-nav__link::after {
content: '';
position: absolute;
bottom: -4px;
left: 0;
width: 0;
height: 1px;
background: var(--neo-accent-primary);
transition: width 0.3s ease;
}
.neo-nav__link:hover::after {
width: 100%;
}
.neo-hero {
display: grid;
grid-template-columns: 5fr 4fr;
gap: 4rem;
align-items: center;
min-height: 85vh;
padding: 6rem 2rem;
max-width: 1200px;
margin: 0 auto;
}
.neo-hero__content {
max-width: 560px;
}
.neo-hero__overline {
font-family: 'Manrope', sans-serif;
font-size: 0.72rem;
font-weight: 500;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--neo-accent-primary);
margin-bottom: 1.5rem;
}
.neo-hero__title {
font-family: 'Fraunces', serif;
font-size: clamp(2.6rem, 5.5vw, 4rem);
font-weight: 300;
line-height: 1.1;
color: var(--neo-text);
margin-bottom: 1.5rem;
letter-spacing: -0.02em;
}
.neo-hero__description {
font-size: 1.1rem;
line-height: 1.7;
color: var(--neo-text-secondary);
margin-bottom: 2.5rem;
max-width: 460px;
}
.neo-hero__image {
border-radius: var(--neo-radius-xl);
overflow: hidden;
aspect-ratio: 4 / 5;
}
.neo-hero__image img {
width: 100%;
height: 100%;
object-fit: cover;
filter: saturate(0.85) contrast(0.95);
}
@media (max-width: 768px) {
.neo-hero {
grid-template-columns: 1fr;
min-height: auto;
padding: 4rem 1.5rem;
gap: 2.5rem;
}
}
/* Subtle linen texture applied to any surface */
.neo-texture {
position: relative;
}
.neo-texture::after {
content: '';
position: absolute;
inset: 0;
opacity: 0.03;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Crect width='1' height='1' x='0' y='1' fill='%237A6F63' opacity='0.4'/%3E%3Crect width='1' height='1' x='3' y='4' fill='%237A6F63' opacity='0.3'/%3E%3Crect width='1' height='1' x='6' y='0' fill='%237A6F63' opacity='0.35'/%3E%3Crect width='1' height='1' x='1' y='6' fill='%237A6F63' opacity='0.25'/%3E%3Crect width='1' height='1' x='5' y='7' fill='%237A6F63' opacity='0.3'/%3E%3C/svg%3E");
background-size: 8px 8px;
pointer-events: none;
border-radius: inherit;
}
/* Parchment warmth -- default section gradient */
.neo-gradient-warm {
background: linear-gradient(
175deg,
#FAF6F0 0%,
#F0EBE3 45%,
#E8E0D4 100%
);
}
/* Sage breath -- subtle green undertone */
.neo-gradient-sage {
background: linear-gradient(
170deg,
#FAF6F0 0%,
rgba(139, 154, 123, 0.06) 50%,
#F0EBE3 100%
);
}
/* Clay warmth -- terracotta undertone for feature sections */
.neo-gradient-clay {
background: linear-gradient(
180deg,
#F0EBE3 0%,
rgba(196, 144, 122, 0.08) 50%,
#FAF6F0 100%
);
}
/* Dark mode -- warm charcoal gradient */
.neo-gradient-dark {
background: linear-gradient(
175deg,
#2D2926 0%,
#3A3430 45%,
#4A3728 100%
);
color: #F0EBE3;
}
/* Fade-in center divider */
.neo-divider {
height: 1px;
border: none;
background: linear-gradient(
90deg,
transparent 0%,
var(--neo-border) 25%,
var(--neo-border) 75%,
transparent 100%
);
margin: 5rem auto;
max-width: 50%;
}
/* Dot accent divider */
.neo-divider--dot {
height: auto;
border: none;
background: none;
text-align: center;
margin: 4rem auto;
}
.neo-divider--dot::before {
content: '\2022 \2022 \2022';
color: var(--neo-border);
font-size: 0.6rem;
letter-spacing: 0.8em;
}
.neo-input {
width: 100%;
background: var(--neo-surface-elevated);
border: 1px solid var(--neo-border);
border-radius: var(--neo-radius-md);
padding: 0.85rem 1.1rem;
font-family: 'Outfit', sans-serif;
font-size: 0.95rem;
color: var(--neo-text);
transition: all 0.3s ease;
}
.neo-input:focus {
outline: none;
border-color: var(--neo-accent-primary);
box-shadow: 0 0 0 3px rgba(139, 154, 123, 0.1);
background: #FFFFFF;
}
.neo-input::placeholder {
color: var(--neo-text-placeholder);
font-weight: 300;
}
.neo-input-label {
display: block;
font-family: 'Manrope', sans-serif;
font-size: 0.78rem;
font-weight: 500;
letter-spacing: 0.06em;
color: var(--neo-text-secondary);
margin-bottom: 0.5rem;
}
| Aesthetic | Relationship |
|---|---|
| Minimalism | Direct ancestor; Neo Minimalism evolves its reduction principles by adding warmth and texture |
| Japandi | Close sibling; shares warm neutrals, natural textures, and wabi-sabi philosophy of meaningful imperfection |
| Quiet Luxury | Fashion-world parallel; both reject excess while communicating sophistication through restraint and material quality |
| Hygge | Shares the emphasis on cozy warmth and emotional comfort; Hygge is more overtly cozy while Neo Minimalism maintains clean lines |
| Scandinavian Design | Functional simplicity and democratic design as shared foundations; Neo Minimalism adds more texture and editorial personality |
| Wabi-Sabi | Philosophical influence; the Japanese concept of beauty in imperfection and transience underpins the organic, authentic character |
| Earth Tones | Overlapping palette territory; both use warm browns, sages, and creams, though Earth Tones is more saturated and pattern-heavy |
| Flat Design | Technical precursor; Neo Minimalism takes flat design’s clean interfaces and reintroduces depth through texture and warm shadows |
| Organic Modern | Interior design sibling; both celebrate natural materials and curved forms, though Organic Modern is more sculptural |
| Light Skeuomorphism | Shares the desire to reintroduce tactile depth to flat interfaces; both use subtle shadows and material references |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Neo Minimalism -- Quick-Start 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=Fraunces:opsz,wght@9..144,300;9..144,400;9..144,500&family=Outfit:wght@300;400;500&family=Manrope:wght@300;400;500&display=swap" rel="stylesheet">
<style>
/* ===================================================
NEO MINIMALISM -- DESIGN TOKENS
=================================================== */
:root {
/* Backgrounds */
--neo-bg: #FAF6F0;
--neo-bg-alt: #F0EBE3;
--neo-surface: #E8E0D4;
--neo-surface-elevated: #FDFCF9;
/* Borders */
--neo-border: #D5CABB;
--neo-border-light: #E8E0D4;
/* Text */
--neo-text: #2D2926;
--neo-text-secondary: #7A6F63;
--neo-text-muted: #9E8E7E;
--neo-text-placeholder: #C7B9A5;
/* Accents */
--neo-accent: #8B9A7B;
--neo-accent-secondary: #C4907A;
--neo-accent-warm: #D4A66A;
/* Darks */
--neo-dark: #2D2926;
--neo-dark-deep: #4A3728;
/* Radii */
--neo-radius-sm: 6px;
--neo-radius-md: 10px;
--neo-radius-lg: 14px;
--neo-radius-xl: 20px;
/* Shadows */
--neo-shadow-sm: 0 1px 3px rgba(45, 41, 38, 0.04);
--neo-shadow-md: 0 2px 8px rgba(45, 41, 38, 0.06);
--neo-shadow-lg: 0 4px 16px rgba(45, 41, 38, 0.08);
/* Transitions */
--neo-ease: cubic-bezier(0.25, 0.46, 0.45, 0.94);
--neo-duration: 0.35s;
}
/* ===================================================
RESET & BASE
=================================================== */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
scroll-behavior: smooth;
-webkit-text-size-adjust: 100%;
}
body {
font-family: 'Outfit', system-ui, -apple-system, sans-serif;
font-weight: 400;
font-size: 1.05rem;
line-height: 1.72;
color: var(--neo-text);
background-color: var(--neo-bg);
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
img {
max-width: 100%;
height: auto;
display: block;
}
a {
color: var(--neo-accent);
text-decoration: underline;
text-decoration-color: var(--neo-border);
text-underline-offset: 3px;
transition: color var(--neo-duration) var(--neo-ease),
text-decoration-color var(--neo-duration) var(--neo-ease);
}
a:hover {
color: var(--neo-text);
text-decoration-color: var(--neo-text);
}
/* ===================================================
TYPOGRAPHY
=================================================== */
h1, h2, h3, h4 {
font-family: 'Fraunces', 'Georgia', serif;
font-weight: 300;
line-height: 1.15;
color: var(--neo-text);
letter-spacing: -0.01em;
}
h1 { font-size: clamp(2.4rem, 5vw, 3.8rem); letter-spacing: -0.02em; }
h2 { font-size: clamp(1.6rem, 3.5vw, 2.2rem); font-weight: 400; }
h3 { font-size: clamp(1.15rem, 2.5vw, 1.4rem); font-weight: 400; letter-spacing: 0.01em; }
p {
max-width: 42em;
margin-bottom: 1.5em;
}
.overline {
font-family: 'Manrope', sans-serif;
font-size: 0.72rem;
font-weight: 500;
letter-spacing: 0.13em;
text-transform: uppercase;
color: var(--neo-accent);
margin-bottom: 1rem;
display: block;
}
.text-secondary {
color: var(--neo-text-secondary);
}
.text-muted {
color: var(--neo-text-muted);
}
/* ===================================================
LAYOUT
=================================================== */
.container {
max-width: 1140px;
margin: 0 auto;
padding: 0 2rem;
}
.container--narrow {
max-width: 760px;
}
section {
padding: 6rem 0;
}
/* ===================================================
LINEN TEXTURE OVERLAY
=================================================== */
.texture::after {
content: '';
position: absolute;
inset: 0;
opacity: 0.025;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Crect width='1' height='1' x='0' y='1' fill='%237A6F63' opacity='0.4'/%3E%3Crect width='1' height='1' x='3' y='4' fill='%237A6F63' opacity='0.3'/%3E%3Crect width='1' height='1' x='6' y='0' fill='%237A6F63' opacity='0.35'/%3E%3Crect width='1' height='1' x='1' y='6' fill='%237A6F63' opacity='0.25'/%3E%3C/svg%3E");
background-size: 8px 8px;
pointer-events: none;
border-radius: inherit;
}
/* ===================================================
NAVIGATION
=================================================== */
.nav {
position: sticky;
top: 0;
z-index: 100;
display: flex;
align-items: center;
justify-content: space-between;
padding: 1.1rem 2rem;
background: rgba(250, 246, 240, 0.88);
backdrop-filter: blur(14px);
-webkit-backdrop-filter: blur(14px);
border-bottom: 1px solid rgba(213, 202, 187, 0.35);
}
.nav__logo {
font-family: 'Fraunces', serif;
font-size: 1.3rem;
font-weight: 400;
color: var(--neo-text);
text-decoration: none;
letter-spacing: -0.01em;
}
.nav__links {
display: flex;
gap: 2rem;
list-style: none;
}
.nav__links a {
font-family: 'Manrope', sans-serif;
font-size: 0.85rem;
font-weight: 400;
color: var(--neo-text-secondary);
text-decoration: none;
letter-spacing: 0.03em;
transition: color var(--neo-duration) var(--neo-ease);
}
.nav__links a:hover {
color: var(--neo-text);
}
/* ===================================================
HERO SECTION
=================================================== */
.hero {
display: grid;
grid-template-columns: 5fr 4fr;
gap: 4rem;
align-items: center;
min-height: 85vh;
padding: 6rem 2rem 4rem;
max-width: 1140px;
margin: 0 auto;
}
.hero__content {
max-width: 540px;
}
.hero__title {
font-size: clamp(2.6rem, 5.5vw, 3.8rem);
margin-bottom: 1.5rem;
line-height: 1.08;
}
.hero__description {
font-size: 1.1rem;
line-height: 1.7;
color: var(--neo-text-secondary);
margin-bottom: 2.5rem;
max-width: 440px;
}
.hero__actions {
display: flex;
gap: 1rem;
flex-wrap: wrap;
}
.hero__image {
border-radius: var(--neo-radius-xl);
overflow: hidden;
aspect-ratio: 4 / 5;
position: relative;
}
.hero__image img {
width: 100%;
height: 100%;
object-fit: cover;
filter: saturate(0.85) contrast(0.95);
}
/* ===================================================
BUTTONS
=================================================== */
.btn {
display: inline-flex;
align-items: center;
gap: 0.5rem;
border: none;
border-radius: var(--neo-radius-md);
padding: 0.8rem 1.8rem;
font-family: 'Outfit', sans-serif;
font-weight: 400;
font-size: 0.9rem;
letter-spacing: 0.04em;
cursor: pointer;
transition: all var(--neo-duration) var(--neo-ease);
text-decoration: none;
}
.btn--primary {
background: var(--neo-dark);
color: var(--neo-bg);
}
.btn--primary:hover {
background: var(--neo-dark-deep);
box-shadow: var(--neo-shadow-md);
transform: translateY(-1px);
color: var(--neo-bg);
}
.btn--secondary {
background: transparent;
color: var(--neo-text);
border: 1px solid var(--neo-border);
}
.btn--secondary:hover {
border-color: var(--neo-text-secondary);
background: var(--neo-bg-alt);
color: var(--neo-text);
}
.btn--accent {
background: var(--neo-accent);
color: #FDFCF9;
}
.btn--accent:hover {
background: #7A8B6B;
box-shadow: 0 2px 10px rgba(139, 154, 123, 0.2);
color: #FDFCF9;
}
/* ===================================================
DIVIDER
=================================================== */
.divider {
height: 1px;
border: none;
background: linear-gradient(
90deg,
transparent 0%,
var(--neo-border) 25%,
var(--neo-border) 75%,
transparent 100%
);
margin: 0 auto;
max-width: 50%;
}
/* ===================================================
FEATURE SECTION
=================================================== */
.features {
background: var(--neo-bg-alt);
position: relative;
}
.features__header {
text-align: center;
max-width: 560px;
margin: 0 auto 4rem;
}
.features__grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
}
/* ===================================================
CARDS
=================================================== */
.card {
background: var(--neo-surface-elevated);
border: 1px solid var(--neo-border-light);
border-radius: var(--neo-radius-lg);
padding: 2rem 2rem 2.25rem;
transition: all var(--neo-duration) var(--neo-ease);
box-shadow: var(--neo-shadow-sm);
}
.card:hover {
box-shadow: var(--neo-shadow-md);
transform: translateY(-2px);
border-color: var(--neo-border);
}
.card__icon {
width: 40px;
height: 40px;
border-radius: var(--neo-radius-sm);
background: rgba(139, 154, 123, 0.12);
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1.25rem;
color: var(--neo-accent);
font-size: 1.1rem;
}
.card__title {
font-family: 'Fraunces', serif;
font-size: 1.2rem;
font-weight: 400;
margin-bottom: 0.75rem;
line-height: 1.3;
}
.card__body {
font-size: 0.92rem;
color: var(--neo-text-secondary);
line-height: 1.65;
}
/* ===================================================
QUOTE / TESTIMONIAL SECTION
=================================================== */
.quote-section {
text-align: center;
max-width: 720px;
margin: 0 auto;
}
.quote-section blockquote {
font-family: 'Fraunces', serif;
font-size: clamp(1.3rem, 3vw, 1.8rem);
font-weight: 300;
font-style: italic;
line-height: 1.55;
color: var(--neo-text);
border: none;
padding: 0;
margin: 0 auto 2rem;
max-width: 600px;
}
.quote-section cite {
display: block;
font-family: 'Manrope', sans-serif;
font-size: 0.8rem;
font-style: normal;
font-weight: 500;
letter-spacing: 0.08em;
color: var(--neo-text-muted);
}
/* ===================================================
CONTENT SECTION (asymmetric split)
=================================================== */
.split {
display: grid;
grid-template-columns: 5fr 7fr;
gap: 4rem;
align-items: center;
max-width: 1140px;
margin: 0 auto;
padding: 0 2rem;
}
.split--reverse {
grid-template-columns: 7fr 5fr;
}
.split__image {
border-radius: var(--neo-radius-lg);
overflow: hidden;
aspect-ratio: 5 / 4;
}
.split__image img {
width: 100%;
height: 100%;
object-fit: cover;
filter: saturate(0.85) contrast(0.95);
}
/* ===================================================
NEWSLETTER / CTA SECTION
=================================================== */
.cta {
background: linear-gradient(
175deg,
var(--neo-bg-alt) 0%,
rgba(139, 154, 123, 0.06) 50%,
var(--neo-bg) 100%
);
text-align: center;
}
.cta__inner {
max-width: 520px;
margin: 0 auto;
}
.cta__form {
display: flex;
gap: 0.75rem;
margin-top: 2rem;
}
.cta__input {
flex: 1;
background: var(--neo-surface-elevated);
border: 1px solid var(--neo-border);
border-radius: var(--neo-radius-md);
padding: 0.85rem 1.1rem;
font-family: 'Outfit', sans-serif;
font-size: 0.95rem;
color: var(--neo-text);
transition: all 0.3s ease;
}
.cta__input:focus {
outline: none;
border-color: var(--neo-accent);
box-shadow: 0 0 0 3px rgba(139, 154, 123, 0.1);
}
.cta__input::placeholder {
color: var(--neo-text-placeholder);
font-weight: 300;
}
/* ===================================================
FOOTER
=================================================== */
.footer {
background: var(--neo-dark);
color: var(--neo-bg-alt);
padding: 4rem 2rem 2.5rem;
}
.footer__inner {
max-width: 1140px;
margin: 0 auto;
display: grid;
grid-template-columns: 2fr 1fr 1fr 1fr;
gap: 3rem;
}
.footer__brand {
font-family: 'Fraunces', serif;
font-size: 1.2rem;
font-weight: 400;
margin-bottom: 1rem;
color: var(--neo-bg);
}
.footer__desc {
font-size: 0.88rem;
line-height: 1.6;
color: var(--neo-text-muted);
max-width: 280px;
}
.footer__heading {
font-family: 'Manrope', sans-serif;
font-size: 0.72rem;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--neo-text-muted);
margin-bottom: 1.25rem;
}
.footer__links {
list-style: none;
}
.footer__links li {
margin-bottom: 0.6rem;
}
.footer__links a {
font-size: 0.88rem;
color: #C7B9A5;
text-decoration: none;
transition: color 0.25s ease;
}
.footer__links a:hover {
color: var(--neo-bg);
}
.footer__bottom {
max-width: 1140px;
margin: 3rem auto 0;
padding-top: 2rem;
border-top: 1px solid rgba(213, 202, 187, 0.15);
display: flex;
justify-content: space-between;
align-items: center;
font-size: 0.8rem;
color: var(--neo-text-muted);
}
/* ===================================================
RESPONSIVE
=================================================== */
@media (max-width: 900px) {
.features__grid {
grid-template-columns: 1fr;
gap: 1.5rem;
}
.footer__inner {
grid-template-columns: 1fr 1fr;
gap: 2rem;
}
}
@media (max-width: 768px) {
.hero {
grid-template-columns: 1fr;
min-height: auto;
padding: 4rem 1.5rem 3rem;
gap: 2.5rem;
}
.split {
grid-template-columns: 1fr;
gap: 2.5rem;
}
.split--reverse {
grid-template-columns: 1fr;
}
.nav__links {
display: none; /* Mobile menu implementation left to developer */
}
.cta__form {
flex-direction: column;
}
.footer__inner {
grid-template-columns: 1fr;
gap: 2rem;
}
.footer__bottom {
flex-direction: column;
gap: 0.75rem;
text-align: center;
}
}
</style>
</head>
<body>
<!-- ============================
NAVIGATION
============================ -->
<nav class="nav">
<a href="#" class="nav__logo">Aura</a>
<ul class="nav__links">
<li><a href="#features">Features</a></li>
<li><a href="#about">About</a></li>
<li><a href="#testimonial">Stories</a></li>
<li><a href="#newsletter">Subscribe</a></li>
</ul>
</nav>
<!-- ============================
HERO
============================ -->
<section class="hero">
<div class="hero__content">
<span class="overline">Warmth in simplicity</span>
<h1 class="hero__title">Design that feels<br>like coming home</h1>
<p class="hero__description">
We create spaces where simplicity meets soul -- where every element
exists with purpose, and every surface invites you to stay a little longer.
</p>
<div class="hero__actions">
<a href="#" class="btn btn--primary">Explore our work</a>
<a href="#" class="btn btn--secondary">Learn more</a>
</div>
</div>
<div class="hero__image">
<img src="https://images.unsplash.com/photo-1600585154340-be6161a56a0c?w=800&h=1000&fit=crop&crop=center"
alt="Warm minimalist interior with natural light and textured surfaces"
loading="lazy">
</div>
</section>
<hr class="divider">
<!-- ============================
FEATURES
============================ -->
<section class="features" id="features">
<div class="container">
<div class="features__header">
<span class="overline">Our principles</span>
<h2>Less, but meaningful</h2>
<p class="text-secondary" style="margin-top: 1rem;">
Every choice we make is intentional. We strip away the unnecessary
to reveal what truly matters -- warmth, clarity, and human connection.
</p>
</div>
<div class="features__grid">
<div class="card">
<div class="card__icon">○</div>
<h3 class="card__title">Intentional simplicity</h3>
<p class="card__body">
Every element earns its place through function or emotional
contribution. What remains is essential and purposeful.
</p>
</div>
<div class="card">
<div class="card__icon">◊</div>
<h3 class="card__title">Tactile warmth</h3>
<p class="card__body">
Natural textures, warm neutrals, and organic forms create
surfaces that feel alive and invite the sense of touch.
</p>
</div>
<div class="card">
<div class="card__icon">◽</div>
<h3 class="card__title">Breathing space</h3>
<p class="card__body">
Generous negative space gives every element room to exist
without competition, creating a calm visual rhythm.
</p>
</div>
</div>
</div>
</section>
<hr class="divider">
<!-- ============================
ABOUT / SPLIT SECTION
============================ -->
<section id="about">
<div class="split">
<div class="split__image">
<img src="https://images.unsplash.com/photo-1586023492125-27b2c045efd7?w=700&h=560&fit=crop"
alt="Natural textures -- clay, linen, and warm wood in soft light"
loading="lazy">
</div>
<div>
<span class="overline">Our philosophy</span>
<h2>Simplicity that resonates</h2>
<p class="text-secondary" style="margin-top: 1rem;">
Neo Minimalism is not about emptiness. It is about finding the exact
point where restraint becomes comfort -- where every texture tells a
story and every space invites you to breathe. We believe the most
powerful designs are the ones you feel before you see.
</p>
<a href="#" class="btn btn--accent" style="margin-top: 0.5rem;">Discover our process</a>
</div>
</div>
</section>
<hr class="divider">
<!-- ============================
TESTIMONIAL / QUOTE
============================ -->
<section id="testimonial">
<div class="container">
<div class="quote-section">
<span class="overline">What they say</span>
<blockquote>
“They understood that minimalism is not about taking things
away -- it is about making room for what matters. Every detail
feels considered, every space feels intentional.”
</blockquote>
<cite>Elena Vasquez, Creative Director</cite>
</div>
</div>
</section>
<hr class="divider">
<!-- ============================
NEWSLETTER / CTA
============================ -->
<section class="cta" id="newsletter">
<div class="container">
<div class="cta__inner">
<span class="overline">Stay connected</span>
<h2>Quiet reflections,<br>delivered thoughtfully</h2>
<p class="text-secondary" style="margin-top: 1rem;">
A monthly letter on intentional design, warm minimalism,
and the art of meaningful simplicity. No noise, just substance.
</p>
<form class="cta__form" onsubmit="return false;">
<input type="email"
class="cta__input"
placeholder="your@email.com"
aria-label="Email address">
<button type="submit" class="btn btn--primary">Subscribe</button>
</form>
</div>
</div>
</section>
<!-- ============================
FOOTER
============================ -->
<footer class="footer">
<div class="footer__inner">
<div>
<div class="footer__brand">Aura</div>
<p class="footer__desc">
Design studio practicing warm minimalism -- creating spaces and
experiences where simplicity meets soul.
</p>
</div>
<div>
<div class="footer__heading">Studio</div>
<ul class="footer__links">
<li><a href="#">About</a></li>
<li><a href="#">Work</a></li>
<li><a href="#">Process</a></li>
<li><a href="#">Careers</a></li>
</ul>
</div>
<div>
<div class="footer__heading">Resources</div>
<ul class="footer__links">
<li><a href="#">Journal</a></li>
<li><a href="#">Guidelines</a></li>
<li><a href="#">Newsletter</a></li>
<li><a href="#">Press</a></li>
</ul>
</div>
<div>
<div class="footer__heading">Connect</div>
<ul class="footer__links">
<li><a href="#">Instagram</a></li>
<li><a href="#">Dribbble</a></li>
<li><a href="#">LinkedIn</a></li>
<li><a href="#">Email</a></li>
</ul>
</div>
</div>
<div class="footer__bottom">
<span>© 2026 Aura Studio. All rights reserved.</span>
<span>Crafted with intention</span>
</div>
</footer>
</body>
</html>
rgba(0, 0, 0, ...) shadows with warm alternatives like rgba(45, 41, 38, 0.06); even at low opacity, pure black shadows introduce a coldness that undermines the warm palettefilter: saturate(0.8) contrast(0.95) to images as a baseline; this harmonizes photography with the muted warm palette and prevents vivid images from breaking the tonal consistency