Organic Modern is a contemporary design aesthetic that harmonizes the clean, uncluttered lines of modern minimalism with the warmth, texture, and irregularity of the natural world. It emerged in the late 2010s as a reaction against cold, sterile minimalism and overly curated industrial interiors, drawing influence from Scandinavian functionalism, Japanese wabi-sabi philosophy, mid-century organic architecture (particularly the work of Frank Lloyd Wright and Alvar Aalto), and the broader biophilic design movement. The style prioritizes natural materials – wood, stone, linen, clay, rattan, and wool – and softens rigid modern geometry with curved silhouettes, organic shapes, and tactile surfaces that invite touch.
At its core, Organic Modern is about creating spaces and interfaces that feel both refined and lived-in: sophisticated enough to convey intentionality, yet warm enough to feel like a place you want to linger. Color palettes are drawn from the landscape – warm sand, soft clay, weathered stone, dried sage, and muted terracotta – layered with creamy whites and deep charcoals rather than harsh pure black or pure white. Typography is clean and humanist, favoring soft serifs and rounded sans-serifs over geometric or mechanical typefaces. Layouts breathe with generous whitespace, asymmetric compositions, and a preference for horizontal, grounded proportions over tall, dramatic structures.
On the web, Organic Modern translates into interfaces that combine the usability rigor of flat and minimal design with subtle textural depth, soft shadows, rounded corners, and nature-inspired imagery. It rejects ornamentation for its own sake but welcomes visual warmth through material-honest textures, muted gradients, and biophilic photography. Buttons feel smooth and tactile, cards sit gently on surfaces with barely-there shadows, and transitions are slow and deliberate rather than snappy or bouncy. The overall impression is one of quiet luxury – a digital environment that feels handcrafted, grounded, and deeply connected to the physical world.
Organic Modern palettes are drawn directly from the natural landscape: the warm sand of a riverbed, the soft gray of weathered stone, the muted green of dried sage, the rich brown of raw clay. Colors are desaturated, warm-leaning, and tonal – building depth through value shifts within a narrow hue range rather than through bold chromatic contrast. Avoid pure black (#000) and pure white (#FFF); substitute with deep charcoal-brown and warm off-white to maintain the organic warmth throughout.
| Swatch | Hex | Role/Usage |
|---|---|---|
#FAF6F0 |
Page background – warm parchment white | |
#F0EBE3 |
Surface / card background – soft linen | |
#E4DCD3 |
Alternate surface – warm sand | |
#D4C9BD |
Borders and dividers – pale driftwood | |
#B8A99A |
Secondary text / muted elements – river stone | |
#A47864 |
Primary warm accent – mocha clay | |
#8B6F5E |
Warm brown – walnut wood | |
#6B5445 |
Deep warm brown – dark timber | |
#C2A68C |
Warm gold accent – raw honey | |
#8A9A7B |
Muted sage green – dried herb | |
#6B7F5E |
Deep sage – forest moss | |
#BFA98F |
Soft terracotta – sun-dried clay | |
#C4AE96 |
Light warm tan – sandstone | |
#3B332D |
Primary text – deep charcoal-brown | |
#5C534B |
Secondary text – warm dark gray |
:root {
/* Backgrounds */
--om-bg-primary: #FAF6F0;
--om-bg-surface: #F0EBE3;
--om-bg-surface-alt: #E4DCD3;
/* Neutrals */
--om-sand: #D4C9BD;
--om-stone: #B8A99A;
--om-sandstone: #C4AE96;
/* Warm browns */
--om-clay: #A47864;
--om-walnut: #8B6F5E;
--om-timber: #6B5445;
--om-honey: #C2A68C;
--om-terracotta: #BFA98F;
/* Greens */
--om-sage: #8A9A7B;
--om-moss: #6B7F5E;
/* Text */
--om-text-primary: #3B332D;
--om-text-secondary: #5C534B;
--om-text-muted: #B8A99A;
/* Borders */
--om-border: #D4C9BD;
--om-border-light: #E4DCD3;
/* Functional aliases */
--om-accent: var(--om-clay);
--om-accent-secondary: var(--om-sage);
--om-heading: var(--om-timber);
/* Radii */
--om-radius-sm: 8px;
--om-radius-md: 12px;
--om-radius-lg: 20px;
--om-radius-xl: 28px;
--om-radius-pill: 50px;
--om-radius-round: 50%;
}
Organic Modern typography is clean, humanist, and quietly warm. Headings use refined serifs or soft humanist sans-serifs that convey natural elegance without stiffness. Body text favors highly readable, open sans-serifs with generous x-heights and rounded terminals. The overall typographic tone is one of calm confidence – neither cold and geometric nor overly decorative. Weight usage is restrained: light to regular for body, medium for headings, and bold used only sparingly for emphasis. Line heights are generous (1.6-1.8 for body) to create a spacious, breathable reading experience.
| Font | Style | Usage |
|---|---|---|
| DM Serif Display | Warm, refined serif | Display headlines, hero text |
| Lora | Humanist calligraphic serif | Headlines, subheadings |
| Source Serif 4 | Organic, warm serif | Long-form body text, editorials |
| DM Sans | Geometric humanist sans | Body text, UI elements |
| Inter | Neutral humanist sans | Body text, interfaces |
| Outfit | Soft geometric sans | Headlines, navigation, labels |
| Nunito | Rounded sans-serif | Buttons, captions, friendly UI |
| Cormorant Garamond | Elegant light serif | Pull quotes, accent text |
| Josefin Sans | Thin geometric sans | Display text, uppercase labels |
| Caveat | Casual handwritten | Annotations, personal accents |
| Heading Font | Body Font | Character |
|---|---|---|
| DM Serif Display | DM Sans | Warm elegance with clean readability |
| Lora | Inter | Classic organic warmth, modern body |
| Outfit | Source Serif 4 | Soft modern headings, rich readable body |
| Josefin Sans | Nunito | Airy minimal headings, friendly body text |
| Cormorant Garamond | DM Sans | Refined editorial display, clean UI body |
/* Import from Google Fonts */
@import url('https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500&family=Lora:ital,wght@0,400;0,500;1,400&family=Outfit:wght@300;400;500&family=Nunito:wght@400;600&display=swap');
/* Headings -- warm, organic serif */
h1, h2, h3 {
font-family: 'DM Serif Display', 'Lora', Georgia, serif;
color: var(--om-heading);
font-weight: 400;
line-height: 1.25;
letter-spacing: -0.01em;
}
h1 {
font-size: clamp(2.5rem, 5vw, 4rem);
line-height: 1.15;
}
h2 {
font-size: clamp(1.75rem, 3vw, 2.5rem);
}
h3 {
font-size: clamp(1.25rem, 2vw, 1.5rem);
font-family: 'Outfit', 'DM Sans', sans-serif;
font-weight: 500;
letter-spacing: 0.01em;
}
/* Body text -- clean, humanist sans */
body {
font-family: 'DM Sans', 'Inter', -apple-system, sans-serif;
font-weight: 400;
font-size: 1rem;
line-height: 1.75;
color: var(--om-text-primary);
letter-spacing: 0.01em;
}
/* Uppercase labels */
.label-organic {
font-family: 'Outfit', 'DM Sans', sans-serif;
font-size: 0.75rem;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--om-text-muted);
}
/* Pull quote / accent text */
.organic-quote {
font-family: 'Lora', 'Cormorant Garamond', Georgia, serif;
font-style: italic;
font-size: 1.3rem;
line-height: 1.6;
color: var(--om-walnut);
}
/* Organic Modern card -- soft, grounded, tactile */
.om-card {
background: var(--om-bg-surface);
border: 1px solid var(--om-border-light);
border-radius: var(--om-radius-lg);
padding: 2rem;
box-shadow:
0 1px 3px rgba(59, 51, 45, 0.04),
0 4px 16px rgba(59, 51, 45, 0.03);
transition: box-shadow 0.4s ease, transform 0.4s ease;
}
.om-card:hover {
box-shadow:
0 2px 6px rgba(59, 51, 45, 0.06),
0 8px 24px rgba(59, 51, 45, 0.05);
transform: translateY(-2px);
}
/* Card with organic accent border */
.om-card--accent {
border-left: 3px solid var(--om-clay);
border-radius: 4px var(--om-radius-lg) var(--om-radius-lg) 4px;
}
/* Card with image -- rounded image top */
.om-card img {
width: 100%;
border-radius: var(--om-radius-md) var(--om-radius-md) 0 0;
margin: -2rem -2rem 1.5rem -2rem;
width: calc(100% + 4rem);
object-fit: cover;
}
/* Primary button -- warm, tactile, rounded */
.om-btn {
font-family: 'Outfit', 'DM Sans', sans-serif;
font-weight: 500;
font-size: 0.9rem;
letter-spacing: 0.04em;
padding: 0.8rem 2rem;
border: none;
border-radius: var(--om-radius-pill);
cursor: pointer;
transition: all 0.35s ease;
}
.om-btn--primary {
background: var(--om-timber);
color: var(--om-bg-primary);
}
.om-btn--primary:hover {
background: var(--om-clay);
box-shadow: 0 4px 16px rgba(107, 84, 69, 0.2);
transform: translateY(-1px);
}
/* Secondary button -- soft outline */
.om-btn--secondary {
background: transparent;
color: var(--om-timber);
border: 1.5px solid var(--om-border);
}
.om-btn--secondary:hover {
border-color: var(--om-clay);
background: rgba(164, 120, 100, 0.06);
color: var(--om-clay);
}
/* Subtle text button */
.om-btn--ghost {
background: transparent;
color: var(--om-clay);
border: none;
padding: 0.6rem 1rem;
text-decoration: underline;
text-decoration-color: var(--om-border);
text-underline-offset: 4px;
}
.om-btn--ghost:hover {
text-decoration-color: var(--om-clay);
}
/* Organic Modern navigation -- warm, understated, grounded */
.om-nav {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1.25rem 2.5rem;
background: var(--om-bg-primary);
border-bottom: 1px solid var(--om-border-light);
font-family: 'Outfit', 'DM Sans', sans-serif;
position: sticky;
top: 0;
z-index: 100;
backdrop-filter: blur(12px);
background: rgba(250, 246, 240, 0.9);
}
.om-nav__brand {
font-family: 'DM Serif Display', serif;
font-size: 1.4rem;
color: var(--om-heading);
text-decoration: none;
}
.om-nav__links {
display: flex;
gap: 2rem;
list-style: none;
margin: 0;
padding: 0;
}
.om-nav__links a {
color: var(--om-text-secondary);
text-decoration: none;
font-weight: 400;
font-size: 0.9rem;
letter-spacing: 0.03em;
transition: color 0.3s ease;
position: relative;
}
.om-nav__links a:hover {
color: var(--om-clay);
}
.om-nav__links a::after {
content: '';
position: absolute;
bottom: -4px;
left: 0;
width: 0;
height: 1.5px;
background: var(--om-clay);
transition: width 0.3s ease;
}
.om-nav__links a:hover::after {
width: 100%;
}
/* Organic Modern hero -- calm, spacious, nature-grounded */
.om-hero {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
min-height: 70vh;
padding: 6rem 2rem;
text-align: center;
position: relative;
overflow: hidden;
background: linear-gradient(
170deg,
var(--om-bg-primary) 0%,
var(--om-bg-surface) 50%,
rgba(138, 154, 123, 0.06) 100%
);
}
/* Decorative organic blob */
.om-hero::before {
content: '';
position: absolute;
width: 600px;
height: 600px;
border-radius: 47% 53% 61% 39% / 45% 51% 49% 55%;
background: radial-gradient(
ellipse at 30% 40%,
rgba(164, 120, 100, 0.06) 0%,
rgba(164, 120, 100, 0.02) 50%,
transparent 70%
);
top: -150px;
right: -100px;
pointer-events: none;
animation: organic-float 20s ease-in-out infinite;
}
.om-hero::after {
content: '';
position: absolute;
width: 400px;
height: 400px;
border-radius: 53% 47% 39% 61% / 55% 45% 55% 45%;
background: radial-gradient(
ellipse at 60% 50%,
rgba(138, 154, 123, 0.05) 0%,
transparent 60%
);
bottom: -100px;
left: -80px;
pointer-events: none;
animation: organic-float 25s ease-in-out infinite reverse;
}
@keyframes organic-float {
0%, 100% { transform: translate(0, 0) rotate(0deg); }
33% { transform: translate(10px, -10px) rotate(2deg); }
66% { transform: translate(-5px, 5px) rotate(-1deg); }
}
.om-hero h1 {
font-size: clamp(2.5rem, 6vw, 4.5rem);
color: var(--om-heading);
margin-bottom: 1.25rem;
position: relative;
z-index: 1;
}
.om-hero p {
font-size: 1.15rem;
color: var(--om-text-secondary);
max-width: 540px;
margin: 0 auto 2rem;
position: relative;
z-index: 1;
}
/* Subtle linen texture for backgrounds */
.om-linen-texture {
position: relative;
}
.om-linen-texture::after {
content: '';
position: absolute;
inset: 0;
opacity: 0.02;
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='0' fill='%235C534B' opacity='0.5'/%3E%3Crect width='1' height='1' x='4' y='4' fill='%235C534B' opacity='0.3'/%3E%3Crect width='1' height='1' x='2' y='6' fill='%235C534B' opacity='0.4'/%3E%3Crect width='1' height='1' x='6' y='2' fill='%235C534B' opacity='0.2'/%3E%3C/svg%3E");
background-size: 8px 8px;
pointer-events: none;
border-radius: inherit;
}
/* Wavy SVG section divider */
.om-wave-divider {
width: 100%;
height: 60px;
overflow: hidden;
position: relative;
}
.om-wave-divider svg {
display: block;
width: 100%;
height: 100%;
}
/* Simple CSS organic divider */
.om-organic-divider {
border: none;
height: auto;
text-align: center;
margin: 4rem auto;
}
.om-organic-divider::before {
content: '';
display: inline-block;
width: 80px;
height: 2px;
background: linear-gradient(
90deg,
transparent 0%,
var(--om-sand) 30%,
var(--om-clay) 50%,
var(--om-sand) 70%,
transparent 100%
);
border-radius: 2px;
}
/* Sunrise warmth -- default organic modern atmosphere */
.om-gradient-sunrise {
background: linear-gradient(
170deg,
#FAF6F0 0%,
#F0EBE3 40%,
rgba(191, 169, 143, 0.12) 100%
);
}
/* Forest breath -- subtle sage undertone */
.om-gradient-forest {
background: linear-gradient(
175deg,
#FAF6F0 0%,
rgba(138, 154, 123, 0.06) 50%,
#F0EBE3 100%
);
}
/* Clay earth -- warm grounded footer/section */
.om-gradient-earth {
background: linear-gradient(
180deg,
#F0EBE3 0%,
#E4DCD3 60%,
rgba(164, 120, 100, 0.1) 100%
);
}
/* Organic Modern form inputs */
.om-input {
font-family: 'DM Sans', sans-serif;
font-size: 0.95rem;
padding: 0.85rem 1.25rem;
border: 1.5px solid var(--om-border);
border-radius: var(--om-radius-md);
background: var(--om-bg-primary);
color: var(--om-text-primary);
transition: all 0.3s ease;
width: 100%;
}
.om-input:focus {
outline: none;
border-color: var(--om-clay);
background: #FFFFFF;
box-shadow: 0 0 0 4px rgba(164, 120, 100, 0.08);
}
.om-input::placeholder {
color: var(--om-stone);
letter-spacing: 0.02em;
}
/* Textarea with organic feel */
.om-textarea {
min-height: 120px;
resize: vertical;
border-radius: var(--om-radius-lg);
}
| Aesthetic | Relationship to Organic Modern |
|---|---|
| Japandi | Closest sibling; shares warm neutrals, natural materials, and minimalism, but Japandi leans more toward Japanese-Scandinavian cultural fusion and wabi-sabi imperfection |
| Earth Tones | Shares the warm brown/beige/green palette but Earth Tones is more retro (1970s), bolder, and uses supergraphic shapes |
| Hygge | Overlapping warmth and comfort; Hygge is cozier and more textile-focused, while Organic Modern is cleaner and more architectural |
| Scandinavian Design | The modern, functional foundation that Organic Modern softens with natural warmth and curved forms |
| Wabi-Sabi | Philosophical ancestor; Organic Modern adopts the embrace of imperfection and natural materials but applies them in a more refined, contemporary framework |
| Biophilic Design | Shares the commitment to nature integration; Biophilic is a broader architectural movement while Organic Modern is a specific visual aesthetic |
| Minimalism | Organic Modern’s structural skeleton; pure Minimalism is colder and more austere, while Organic Modern adds warmth and texture |
| Cottagecore | Both celebrate natural materials and warmth, but Cottagecore is nostalgic, rural, and maximalist where Organic Modern is contemporary and restrained |
| Coastal Style | Shares the calm, light, natural palette; Coastal is more blue/white and beach-specific, while Organic Modern is landlocked and earth-focused |
| Craftcore | Overlapping appreciation for handmade textures and material honesty; Craftcore is more visibly artisanal and rustic |
| Mid-Century Modern | Organic Modern borrows the organic furniture forms and clean lines of MCM but replaces its bold color confidence with warmer, more muted tones |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Organic Modern</title>
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500&family=Outfit:wght@300;400;500&family=Lora:ital,wght@0,400;1,400&display=swap" rel="stylesheet">
<style>
/* ============================================
ORGANIC MODERN -- Quick-Start Template
============================================ */
:root {
/* Backgrounds */
--om-bg-primary: #FAF6F0;
--om-bg-surface: #F0EBE3;
--om-bg-surface-alt: #E4DCD3;
/* Neutrals */
--om-sand: #D4C9BD;
--om-stone: #B8A99A;
--om-sandstone: #C4AE96;
/* Warm browns */
--om-clay: #A47864;
--om-walnut: #8B6F5E;
--om-timber: #6B5445;
--om-honey: #C2A68C;
--om-terracotta: #BFA98F;
/* Greens */
--om-sage: #8A9A7B;
--om-moss: #6B7F5E;
/* Text */
--om-text-primary: #3B332D;
--om-text-secondary: #5C534B;
--om-text-muted: #B8A99A;
/* Borders */
--om-border: #D4C9BD;
--om-border-light: #E4DCD3;
/* Aliases */
--om-accent: var(--om-clay);
--om-heading: var(--om-timber);
/* Radii */
--om-radius-sm: 8px;
--om-radius-md: 12px;
--om-radius-lg: 20px;
--om-radius-xl: 28px;
--om-radius-pill: 50px;
}
/* ---- Reset ---- */
*, *::before, *::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* ---- Base ---- */
html {
scroll-behavior: smooth;
}
body {
font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif;
font-weight: 400;
font-size: 1rem;
line-height: 1.75;
color: var(--om-text-primary);
background: var(--om-bg-primary);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
h1, h2, h3 {
font-family: 'DM Serif Display', 'Lora', Georgia, serif;
font-weight: 400;
color: var(--om-heading);
line-height: 1.2;
}
h1 { font-size: clamp(2.5rem, 5vw, 4rem); }
h2 { font-size: clamp(1.75rem, 3.5vw, 2.5rem); margin-bottom: 1rem; }
h3 { font-size: 1.25rem; font-family: 'Outfit', sans-serif; font-weight: 500; }
p {
max-width: 38em;
margin-bottom: 1.5em;
color: var(--om-text-secondary);
}
a {
color: var(--om-clay);
text-decoration: underline;
text-decoration-color: var(--om-sand);
text-underline-offset: 3px;
transition: color 0.3s ease, text-decoration-color 0.3s ease;
}
a:hover {
color: var(--om-timber);
text-decoration-color: var(--om-clay);
}
img {
max-width: 100%;
height: auto;
display: block;
}
/* ---- Navigation ---- */
.nav {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1.25rem 2.5rem;
background: rgba(250, 246, 240, 0.92);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-bottom: 1px solid var(--om-border-light);
position: sticky;
top: 0;
z-index: 100;
}
.nav__brand {
font-family: 'DM Serif Display', serif;
font-size: 1.4rem;
color: var(--om-heading);
text-decoration: none;
}
.nav__links {
display: flex;
gap: 2rem;
list-style: none;
}
.nav__links a {
color: var(--om-text-secondary);
text-decoration: none;
font-family: 'Outfit', sans-serif;
font-size: 0.9rem;
font-weight: 400;
letter-spacing: 0.03em;
transition: color 0.3s ease;
}
.nav__links a:hover {
color: var(--om-clay);
}
/* ---- Hero Section ---- */
.hero {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
text-align: center;
min-height: 75vh;
padding: 6rem 2rem;
position: relative;
overflow: hidden;
background: linear-gradient(
170deg,
var(--om-bg-primary) 0%,
var(--om-bg-surface) 50%,
rgba(138, 154, 123, 0.05) 100%
);
}
/* Decorative organic blobs */
.hero::before {
content: '';
position: absolute;
width: 550px;
height: 550px;
border-radius: 47% 53% 61% 39% / 45% 51% 49% 55%;
background: radial-gradient(
ellipse at 30% 40%,
rgba(164, 120, 100, 0.06) 0%,
rgba(164, 120, 100, 0.02) 50%,
transparent 70%
);
top: -120px;
right: -80px;
pointer-events: none;
animation: blob-drift 22s ease-in-out infinite;
}
.hero::after {
content: '';
position: absolute;
width: 400px;
height: 400px;
border-radius: 53% 47% 39% 61% / 55% 45% 55% 45%;
background: radial-gradient(
ellipse at 60% 50%,
rgba(138, 154, 123, 0.05) 0%,
transparent 60%
);
bottom: -80px;
left: -60px;
pointer-events: none;
animation: blob-drift 28s ease-in-out infinite reverse;
}
@keyframes blob-drift {
0%, 100% { transform: translate(0, 0) rotate(0deg); }
33% { transform: translate(12px, -8px) rotate(2deg); }
66% { transform: translate(-6px, 6px) rotate(-1deg); }
}
.hero h1 {
margin-bottom: 1.25rem;
position: relative;
z-index: 1;
}
.hero p {
font-size: 1.15rem;
max-width: 520px;
margin: 0 auto 2.5rem;
position: relative;
z-index: 1;
}
.hero__label {
font-family: 'Outfit', sans-serif;
font-size: 0.75rem;
font-weight: 500;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--om-text-muted);
margin-bottom: 1.5rem;
position: relative;
z-index: 1;
}
.hero__actions {
display: flex;
gap: 1rem;
position: relative;
z-index: 1;
}
/* ---- Buttons ---- */
.btn {
font-family: 'Outfit', sans-serif;
font-weight: 500;
font-size: 0.9rem;
letter-spacing: 0.04em;
padding: 0.8rem 2rem;
border: none;
border-radius: var(--om-radius-pill);
cursor: pointer;
transition: all 0.35s ease;
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 0.5rem;
}
.btn--primary {
background: var(--om-timber);
color: var(--om-bg-primary);
}
.btn--primary:hover {
background: var(--om-clay);
box-shadow: 0 4px 16px rgba(107, 84, 69, 0.2);
transform: translateY(-1px);
}
.btn--secondary {
background: transparent;
color: var(--om-timber);
border: 1.5px solid var(--om-border);
}
.btn--secondary:hover {
border-color: var(--om-clay);
background: rgba(164, 120, 100, 0.06);
color: var(--om-clay);
}
/* ---- Section ---- */
.section {
max-width: 1100px;
margin: 0 auto;
padding: 5rem 2rem;
}
.section--narrow {
max-width: 800px;
}
.section__label {
font-family: 'Outfit', sans-serif;
font-size: 0.75rem;
font-weight: 500;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--om-text-muted);
margin-bottom: 0.75rem;
}
.section__header {
margin-bottom: 3rem;
}
/* ---- Organic Divider ---- */
.divider {
border: none;
text-align: center;
margin: 0;
padding: 2rem 0;
}
.divider::before {
content: '';
display: inline-block;
width: 80px;
height: 2px;
background: linear-gradient(
90deg,
transparent 0%,
var(--om-sand) 30%,
var(--om-clay) 50%,
var(--om-sand) 70%,
transparent 100%
);
border-radius: 2px;
}
/* ---- Card Grid ---- */
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
.card {
background: var(--om-bg-surface);
border: 1px solid var(--om-border-light);
border-radius: var(--om-radius-lg);
padding: 2rem;
box-shadow:
0 1px 3px rgba(59, 51, 45, 0.04),
0 4px 16px rgba(59, 51, 45, 0.03);
transition: box-shadow 0.4s ease, transform 0.4s ease;
}
.card:hover {
box-shadow:
0 2px 6px rgba(59, 51, 45, 0.06),
0 8px 24px rgba(59, 51, 45, 0.05);
transform: translateY(-2px);
}
.card__icon {
width: 48px;
height: 48px;
border-radius: var(--om-radius-md);
background: var(--om-bg-surface-alt);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.4rem;
margin-bottom: 1.25rem;
color: var(--om-clay);
}
.card h3 {
margin-bottom: 0.75rem;
color: var(--om-timber);
}
.card p {
font-size: 0.95rem;
margin-bottom: 0;
color: var(--om-text-secondary);
}
/* ---- Split Section (Asymmetric) ---- */
.split {
display: grid;
grid-template-columns: 1fr 1.2fr;
gap: 4rem;
align-items: center;
max-width: 1100px;
margin: 0 auto;
padding: 5rem 2rem;
}
.split--reverse {
grid-template-columns: 1.2fr 1fr;
}
.split__image {
border-radius: var(--om-radius-xl);
overflow: hidden;
background: var(--om-bg-surface-alt);
aspect-ratio: 4 / 3;
display: flex;
align-items: center;
justify-content: center;
color: var(--om-stone);
font-family: 'Outfit', sans-serif;
font-size: 0.85rem;
letter-spacing: 0.06em;
}
.split__content h2 {
margin-bottom: 1rem;
}
/* ---- Testimonial / Quote ---- */
.quote-section {
background: var(--om-bg-surface);
padding: 5rem 2rem;
text-align: center;
}
.quote {
font-family: 'Lora', Georgia, serif;
font-style: italic;
font-size: clamp(1.2rem, 2.5vw, 1.6rem);
line-height: 1.7;
color: var(--om-walnut);
max-width: 640px;
margin: 0 auto 1.5rem;
}
.quote-author {
font-family: 'Outfit', sans-serif;
font-size: 0.8rem;
font-weight: 500;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--om-text-muted);
}
/* ---- Contact / Form Section ---- */
.form-section {
max-width: 600px;
margin: 0 auto;
padding: 5rem 2rem;
text-align: center;
}
.form-section form {
display: flex;
flex-direction: column;
gap: 1.25rem;
margin-top: 2rem;
text-align: left;
}
.form-section label {
font-family: 'Outfit', sans-serif;
font-size: 0.8rem;
font-weight: 500;
letter-spacing: 0.06em;
color: var(--om-text-secondary);
margin-bottom: 0.25rem;
display: block;
}
.form-section input,
.form-section textarea {
font-family: 'DM Sans', sans-serif;
font-size: 0.95rem;
padding: 0.85rem 1.25rem;
border: 1.5px solid var(--om-border);
border-radius: var(--om-radius-md);
background: var(--om-bg-primary);
color: var(--om-text-primary);
transition: all 0.3s ease;
width: 100%;
}
.form-section input:focus,
.form-section textarea:focus {
outline: none;
border-color: var(--om-clay);
box-shadow: 0 0 0 4px rgba(164, 120, 100, 0.08);
}
.form-section input::placeholder,
.form-section textarea::placeholder {
color: var(--om-stone);
}
.form-section textarea {
min-height: 120px;
resize: vertical;
border-radius: var(--om-radius-lg);
}
.form-section button {
align-self: flex-start;
}
/* ---- Footer ---- */
.footer {
background: var(--om-bg-surface);
border-top: 1px solid var(--om-border-light);
padding: 3rem 2rem;
text-align: center;
}
.footer__inner {
max-width: 1100px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
}
.footer__brand {
font-family: 'DM Serif Display', serif;
font-size: 1.2rem;
color: var(--om-heading);
}
.footer__links {
display: flex;
gap: 1.5rem;
list-style: none;
}
.footer__links a {
color: var(--om-text-muted);
text-decoration: none;
font-family: 'Outfit', sans-serif;
font-size: 0.85rem;
transition: color 0.3s ease;
}
.footer__links a:hover {
color: var(--om-clay);
}
.footer__copy {
font-size: 0.8rem;
color: var(--om-text-muted);
margin-top: 2rem;
}
/* ---- Linen Texture Overlay ---- */
.linen-bg {
position: relative;
}
.linen-bg::after {
content: '';
position: absolute;
inset: 0;
opacity: 0.02;
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='0' fill='%235C534B' opacity='0.5'/%3E%3Crect width='1' height='1' x='4' y='4' fill='%235C534B' opacity='0.3'/%3E%3Crect width='1' height='1' x='2' y='6' fill='%235C534B' opacity='0.4'/%3E%3Crect width='1' height='1' x='6' y='2' fill='%235C534B' opacity='0.2'/%3E%3C/svg%3E");
background-size: 8px 8px;
pointer-events: none;
}
/* ---- Responsive ---- */
@media (max-width: 768px) {
.nav {
padding: 1rem 1.5rem;
}
.nav__links {
gap: 1.25rem;
}
.nav__links a {
font-size: 0.8rem;
}
.hero {
min-height: 60vh;
padding: 4rem 1.5rem;
}
.hero__actions {
flex-direction: column;
align-items: center;
}
.card-grid {
grid-template-columns: 1fr;
}
.split,
.split--reverse {
grid-template-columns: 1fr;
gap: 2rem;
}
.split__image {
order: -1;
}
.footer__inner {
flex-direction: column;
gap: 1.5rem;
}
}
</style>
</head>
<body>
<!-- ====== Navigation ====== -->
<nav class="nav">
<a href="#" class="nav__brand">Terraverde</a>
<ul class="nav__links">
<li><a href="#about">About</a></li>
<li><a href="#features">Features</a></li>
<li><a href="#philosophy">Philosophy</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</nav>
<!-- ====== Hero ====== -->
<section class="hero linen-bg">
<span class="hero__label">Organic Modern Living</span>
<h1>Rooted in Nature,<br>Refined by Design</h1>
<p>
We create spaces where clean modern lines meet the warmth of
natural materials -- wood, stone, linen, and light working
in quiet harmony.
</p>
<div class="hero__actions">
<a href="#features" class="btn btn--primary">Explore</a>
<a href="#contact" class="btn btn--secondary">Get in Touch</a>
</div>
</section>
<!-- ====== Divider ====== -->
<hr class="divider">
<!-- ====== About / Split ====== -->
<div class="split" id="about">
<div class="split__image">
[ Natural wood + stone photograph ]
</div>
<div class="split__content">
<span class="section__label">Our Approach</span>
<h2>Design That Breathes</h2>
<p>
Organic Modern is born from the belief that beautiful spaces
do not need to choose between warmth and sophistication. We
pair the clarity of minimalist architecture with the tactile
richness of natural materials -- raw timber, hand-thrown
ceramics, woven linen, and living greenery.
</p>
<p>
Every curve is intentional. Every texture is honest. The
result is an environment that feels both curated and
effortlessly inviting.
</p>
</div>
</div>
<!-- ====== Features / Cards ====== -->
<section class="section" id="features">
<div class="section__header">
<span class="section__label">What Defines Us</span>
<h2>Core Principles</h2>
</div>
<div class="card-grid">
<div class="card">
<div class="card__icon">○</div>
<h3>Organic Forms</h3>
<p>
Curved silhouettes and flowing shapes replace rigid geometry,
creating spaces that mirror the gentle irregularity of nature.
</p>
</div>
<div class="card">
<div class="card__icon">▴</div>
<h3>Natural Materials</h3>
<p>
Wood, stone, clay, and linen are celebrated in their honest
state -- unvarnished, tactile, and beautifully imperfect.
</p>
</div>
<div class="card">
<div class="card__icon">✧</div>
<h3>Warm Minimalism</h3>
<p>
A restrained palette of warm neutrals creates calm without
coldness. Every element earns its place through purpose and craft.
</p>
</div>
<div class="card">
<div class="card__icon">◦</div>
<h3>Biophilic Connection</h3>
<p>
Indoor plants, natural light, and earth-toned palettes create
a persistent connection to the living world beyond the walls.
</p>
</div>
<div class="card">
<div class="card__icon">⋮</div>
<h3>Tactile Surfaces</h3>
<p>
Textures you want to touch -- handwoven fabrics, rough-hewn
stone, soft matte ceramics -- bring depth and sensory richness.
</p>
</div>
<div class="card">
<div class="card__icon">◯</div>
<h3>Quiet Luxury</h3>
<p>
Sophistication expressed through quality materials and careful
proportions rather than ornamentation or visible branding.
</p>
</div>
</div>
</section>
<!-- ====== Quote ====== -->
<section class="quote-section">
<p class="quote">
"The best designs are the ones you feel before you see --
spaces that settle you, surfaces that invite your hand,
light that warms without glare."
</p>
<span class="quote-author">Design Philosophy</span>
</section>
<!-- ====== Split Reverse ====== -->
<div class="split split--reverse" id="philosophy">
<div class="split__content">
<span class="section__label">Philosophy</span>
<h2>Less, but Warmer</h2>
<p>
We believe minimalism should not mean austerity. By layering
natural textures, softening geometric lines with curves, and
grounding every surface in an earthy palette, we create spaces
that are both uncluttered and deeply comforting.
</p>
<a href="#contact" class="btn btn--secondary">Learn More</a>
</div>
<div class="split__image">
[ Ceramic vessels + dried botanicals ]
</div>
</div>
<!-- ====== Divider ====== -->
<hr class="divider">
<!-- ====== Contact Form ====== -->
<section class="form-section" id="contact">
<span class="section__label">Say Hello</span>
<h2>Get in Touch</h2>
<p style="margin: 0 auto;">
Interested in bringing organic warmth to your next project?
We would love to hear from you.
</p>
<form>
<div>
<label for="name">Name</label>
<input type="text" id="name" placeholder="Your name">
</div>
<div>
<label for="email">Email</label>
<input type="email" id="email" placeholder="you@example.com">
</div>
<div>
<label for="message">Message</label>
<textarea id="message" placeholder="Tell us about your project..."></textarea>
</div>
<button type="submit" class="btn btn--primary">Send Message</button>
</form>
</section>
<!-- ====== Footer ====== -->
<footer class="footer">
<div class="footer__inner">
<span class="footer__brand">Terraverde</span>
<ul class="footer__links">
<li><a href="#about">About</a></li>
<li><a href="#features">Features</a></li>
<li><a href="#philosophy">Philosophy</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
<p class="footer__copy">Handcrafted with natural intention.</p>
</footer>
</body>
</html>
background: #FAF6F0 on body and color: #3B332D for text before adding any other styling; this single step immediately establishes the Organic Modern atmosphere--om- tokens above) so that tweaking warmth, saturation, or accent colors propagates globally without searching through individual rules::after overlays with fine SVG noise patterns at very low opacity (0.02-0.04) to give flat surfaces a tactile, material quality without impacting load times24-32px radius, while smaller elements (buttons, tags) look best at 8-12px or pill-shaped; avoid a single radius value everywhereease-out transitions at 300-400ms – this timing curve feels natural and unhurried; faster durations feel snappy and mechanical, which breaks the organic calmclamp() for responsive typography – expressions like font-size: clamp(2rem, 4vw, 3.5rem) ensure headings scale gracefully between mobile and desktop without jarring breakpoint jumps#000, #fff, #000000, and #ffffff and replace them with the charcoal-brown and warm off-white equivalents; even small amounts of pure black or white can feel cold and break the cohesion