Biophilic Design is a design philosophy rooted in biophilia – the innate human tendency to seek connection with nature and other living systems. Coined by biologist E.O. Wilson in 1984, the concept was later adapted for architecture and interior design by Stephen Kellert, and has since expanded into graphic design, web design, and digital interfaces. At its core, Biophilic Design integrates living elements, organic forms, natural materials, and nature-derived color palettes into built and digital environments to foster well-being, reduce stress, and restore cognitive function.
In the web and digital design context, Biophilic Design translates the principles of nature connection into screen-based experiences. Rather than relying on rigid grids and sharp geometric containers, biophilic interfaces embrace flowing organic shapes, earthy color harmonies, natural textures, and imagery drawn from forests, water, stone, and botanical forms. Typography favors humanist typefaces with soft, organic curves. Layouts breathe with generous whitespace, mimicking the openness of natural landscapes. Subtle animations – rustling leaves, rippling water, gently swaying branches – bring interfaces to life without overwhelming users. The goal is an experience that feels grounded, calming, and intuitively navigable, as though the user is moving through a well-tended garden rather than clicking through a machine.
Biophilic Design has gained significant momentum in 2025-2026, driven by growing awareness of digital wellness, sustainability-focused branding, and the proven psychological benefits of nature exposure. Research consistently shows that biophilic environments reduce cortisol levels, improve focus and creativity, and enhance sleep quality. For brands in wellness, organic food, eco-tourism, sustainable fashion, environmental advocacy, and healthcare, a biophilic web presence communicates authenticity and care. The aesthetic pairs naturally with sustainable web practices – lightweight SVG graphics, efficient code, dark mode options that reduce energy consumption, and optimized imagery – making it both visually beautiful and environmentally responsible.
Biophilic color palettes are drawn directly from the natural world – the greens of forest canopies and mossy stones, the browns of earth and bark, the blues of sky and water, the warm terracotta of sun-baked clay, and the soft neutrals of sand, limestone, and fog. Colors are typically muted and desaturated rather than vivid or neon. Real nature colors are layered and complex, shifting with light; biophilic palettes reflect this through tonal variation within each hue family. The balance of warm and cool tones prevents monotony, mirroring how a forest contains both shadowy cool areas and sun-warmed bark.
| Swatch | Hex | Role/Usage |
|---|---|---|
![]() |
#2D5A3D |
Forest Green – primary accent, headers, key interactive elements |
![]() |
#4A7C59 |
Fern Green – secondary accent, hover states, active indicators |
![]() |
#87AE73 |
Sage Green – tertiary accent, tags, badges, subtle highlights |
![]() |
#B5C9A8 |
Eucalyptus – light accent backgrounds, card tints, soft fills |
![]() |
#6B7F5C |
Moss Green – borders, dividers, secondary text on light backgrounds |
![]() |
#A0522D |
Warm Brown – wood-toned accents, footer backgrounds, grounding elements |
![]() |
#CB6D51 |
Terracotta – call-to-action buttons, warm accent highlights, alerts |
![]() |
#E2CA76 |
Sand – secondary backgrounds, warm neutral fills, input field backgrounds |
![]() |
#87CEEB |
Sky Blue – informational elements, links, airy accent touches |
![]() |
#5F8A8B |
Teal Stone – secondary interactive elements, balanced cool accent |
![]() |
#808075 |
Stone Gray – muted text, disabled states, subtle borders |
![]() |
#F7F3E8 |
Parchment – primary background, page canvas, light surfaces |
![]() |
#FFFEF2 |
Ivory – card backgrounds, elevated surfaces, modal overlays |
![]() |
#2C2C28 |
Dark Loam – primary text color, headings on light backgrounds |
![]() |
#4A5446 |
Charcoal Sage – dark mode background, footer, secondary dark surfaces |
:root {
/* Greens -- forest canopy */
--bio-forest: #2D5A3D;
--bio-fern: #4A7C59;
--bio-sage: #87AE73;
--bio-eucalyptus: #B5C9A8;
--bio-moss: #6B7F5C;
/* Earth -- soil and clay */
--bio-brown: #A0522D;
--bio-terracotta: #CB6D51;
--bio-sand: #E2CA76;
/* Water and sky */
--bio-sky: #87CEEB;
--bio-teal: #5F8A8B;
/* Stone and neutral */
--bio-stone: #808075;
--bio-parchment: #F7F3E8;
--bio-ivory: #FFFEF2;
/* Dark earth */
--bio-loam: #2C2C28;
--bio-charcoal-sage: #4A5446;
/* Functional mappings */
--bio-bg-primary: var(--bio-parchment);
--bio-bg-secondary: var(--bio-ivory);
--bio-bg-dark: var(--bio-charcoal-sage);
--bio-text-primary: var(--bio-loam);
--bio-text-secondary: var(--bio-moss);
--bio-text-on-dark: var(--bio-parchment);
--bio-accent-primary: var(--bio-forest);
--bio-accent-secondary: var(--bio-terracotta);
--bio-border: var(--bio-eucalyptus);
--bio-border-dark: var(--bio-moss);
}
Biophilic typography favors humanist typefaces with organic, calligraphic roots – letterforms that feel shaped by a human hand rather than engineered by a machine. Serifs are soft and slightly irregular; sans-serifs are rounded with open apertures and friendly proportions. Display fonts may incorporate leaf-like terminals, flowing strokes, or subtle natural texture. The overall typographic voice should feel warm, approachable, and grounded – like handwritten notes in a field journal or carved lettering on a garden gate. Body text prioritizes readability and comfort for extended reading, with generous line height and moderate letter spacing that allows words to breathe.
| Font | Weight(s) | Usage | Link |
|---|---|---|---|
| Lora | 400, 500, 600, 700 | Body text, long-form reading | Google Fonts |
| Cormorant Garamond | 300, 400, 500, 600, 700 | Display headings, elegant titles | Google Fonts |
| Nunito | 300, 400, 600, 700 | UI elements, navigation, buttons | Google Fonts |
| Source Serif 4 | 300, 400, 600, 700 | Body text alternative, editorial content | Google Fonts |
| Quicksand | 300, 400, 500, 600, 700 | Subheadings, labels, friendly UI text | Google Fonts |
| Playfair Display | 400, 500, 600, 700 | Hero headlines, pull quotes | Google Fonts |
| Cabin | 400, 500, 600, 700 | Navigation, meta text, captions | Google Fonts |
| DM Serif Display | 400 | Large display titles, section headers | Google Fonts |
| Heading | Body | Vibe |
|---|---|---|
| Cormorant Garamond | Nunito | Elegant garden – refined headings with warm, rounded body text |
| Playfair Display | Lora | Botanical journal – high-contrast display with organic serif reading |
| DM Serif Display | Cabin | Modern greenhouse – bold natural headlines with clean functional body |
| Cormorant Garamond | Source Serif 4 | Heritage arboretum – all-serif pairing for rich, literary tone |
| Quicksand | Lora | Eco-friendly brand – friendly geometric headings with warm body text |
/* Import biophilic font pairing */
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;1,400&family=Nunito:wght@300;400;600;700&display=swap');
/* Headings -- organic serif */
h1, h2, h3 {
font-family: 'Cormorant Garamond', 'Georgia', serif;
color: var(--bio-loam);
font-weight: 400;
line-height: 1.2;
letter-spacing: 0.01em;
}
/* Display / Hero text */
.bio-display {
font-family: 'Cormorant Garamond', serif;
font-size: clamp(2.5rem, 6vw, 5rem);
font-weight: 600;
line-height: 1.1;
letter-spacing: -0.01em;
color: var(--bio-forest);
}
/* Body text -- warm humanist sans */
body {
font-family: 'Nunito', 'Segoe UI', sans-serif;
font-weight: 400;
font-size: 1.05rem;
line-height: 1.8;
letter-spacing: 0.015em;
color: var(--bio-loam);
}
/* Small / UI text */
.bio-meta {
font-family: 'Nunito', sans-serif;
font-size: 0.85rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--bio-moss);
}
/* Accent / Pull quote */
.bio-quote {
font-family: 'Cormorant Garamond', serif;
font-style: italic;
font-size: 1.4rem;
line-height: 1.6;
color: var(--bio-fern);
border-left: 3px solid var(--bio-eucalyptus);
padding-left: 1.5rem;
}
Cards in biophilic design feel like natural objects – rounded, softly shadowed, with subtle texture and organic decoration. They should evoke the warmth of a wooden surface or the smoothness of a river stone.
.bio-card {
background: var(--bio-ivory);
border: 1px solid var(--bio-eucalyptus);
border-radius: 16px;
padding: 2rem;
position: relative;
overflow: hidden;
transition: transform 0.4s ease, box-shadow 0.4s ease;
box-shadow:
0 2px 8px rgba(45, 90, 61, 0.06),
0 8px 24px rgba(45, 90, 61, 0.04);
}
.bio-card:hover {
transform: translateY(-4px);
box-shadow:
0 4px 12px rgba(45, 90, 61, 0.1),
0 16px 40px rgba(45, 90, 61, 0.08);
}
/* Subtle leaf pattern in corner */
.bio-card::before {
content: '';
position: absolute;
top: -20px;
right: -20px;
width: 100px;
height: 100px;
opacity: 0.06;
background: no-repeat center / contain;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M80,10 C60,20 40,50 30,80 C50,70 70,40 80,10Z' fill='%232D5A3D'/%3E%3Cpath d='M80,10 C80,10 55,45 30,80' fill='none' stroke='%232D5A3D' stroke-width='1'/%3E%3C/svg%3E");
pointer-events: none;
}
.bio-card h3 {
font-family: 'Cormorant Garamond', serif;
font-size: 1.4rem;
color: var(--bio-forest);
margin-bottom: 0.75rem;
}
.bio-card p {
color: var(--bio-loam);
line-height: 1.7;
}
Buttons should feel like natural, touchable objects – smooth stones or rounded seed pods – with warm, earthy interaction states that reward engagement.
.bio-btn {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.85rem 2rem;
font-family: 'Nunito', sans-serif;
font-weight: 600;
font-size: 0.95rem;
letter-spacing: 0.03em;
border: none;
border-radius: 50px;
cursor: pointer;
transition: all 0.3s ease;
}
/* Primary -- forest green */
.bio-btn-primary {
background: var(--bio-forest);
color: var(--bio-parchment);
box-shadow: 0 2px 8px rgba(45, 90, 61, 0.25);
}
.bio-btn-primary:hover {
background: var(--bio-fern);
box-shadow: 0 4px 16px rgba(45, 90, 61, 0.3);
transform: translateY(-2px);
}
/* Secondary -- terracotta outline */
.bio-btn-secondary {
background: transparent;
color: var(--bio-terracotta);
border: 2px solid var(--bio-terracotta);
}
.bio-btn-secondary:hover {
background: var(--bio-terracotta);
color: var(--bio-ivory);
}
/* Ghost -- subtle leaf-green */
.bio-btn-ghost {
background: rgba(45, 90, 61, 0.08);
color: var(--bio-forest);
}
.bio-btn-ghost:hover {
background: rgba(45, 90, 61, 0.15);
}
Navigation should feel like a natural pathway – clear, welcoming, and grounded. Active states use organic underlines or leaf-like indicators rather than harsh geometric markers.
.bio-nav {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1rem 2rem;
background: rgba(247, 243, 232, 0.95);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--bio-eucalyptus);
position: sticky;
top: 0;
z-index: 100;
}
.bio-nav-brand {
font-family: 'Cormorant Garamond', serif;
font-size: 1.5rem;
font-weight: 600;
color: var(--bio-forest);
text-decoration: none;
}
.bio-nav-links {
display: flex;
gap: 2rem;
list-style: none;
margin: 0;
padding: 0;
}
.bio-nav-links a {
font-family: 'Nunito', sans-serif;
font-weight: 600;
font-size: 0.9rem;
color: var(--bio-loam);
text-decoration: none;
position: relative;
padding-bottom: 4px;
transition: color 0.3s ease;
}
/* Organic growing underline */
.bio-nav-links a::after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
width: 0;
height: 2px;
background: var(--bio-fern);
border-radius: 2px;
transition: all 0.3s ease;
transform: translateX(-50%);
}
.bio-nav-links a:hover,
.bio-nav-links a.active {
color: var(--bio-forest);
}
.bio-nav-links a:hover::after,
.bio-nav-links a.active::after {
width: 100%;
}
The hero should immerse the user in nature immediately – a full-viewport scene with layered depth, organic typography, and a sense of expansive calm.
.bio-hero {
position: relative;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
padding: 4rem 2rem;
overflow: hidden;
background:
linear-gradient(
180deg,
rgba(247, 243, 232, 0.1) 0%,
rgba(247, 243, 232, 0.85) 70%,
var(--bio-parchment) 100%
),
url('hero-nature.jpg') center / cover no-repeat;
}
.bio-hero h1 {
font-family: 'Cormorant Garamond', serif;
font-size: clamp(2.8rem, 7vw, 5.5rem);
font-weight: 400;
color: var(--bio-forest);
line-height: 1.1;
margin-bottom: 1.5rem;
}
.bio-hero p {
font-family: 'Nunito', sans-serif;
font-size: clamp(1rem, 2vw, 1.25rem);
color: var(--bio-loam);
max-width: 600px;
line-height: 1.8;
margin-bottom: 2rem;
}
/* Organic wave divider at bottom of hero */
.bio-hero::after {
content: '';
position: absolute;
bottom: -1px;
left: 0;
width: 100%;
height: 80px;
background: no-repeat bottom / 100% 100%;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 80' preserveAspectRatio='none'%3E%3Cpath d='M0,40 C240,80 480,0 720,40 C960,80 1200,0 1440,40 L1440,80 L0,80Z' fill='%23F7F3E8'/%3E%3C/svg%3E");
}
Wave dividers replace harsh horizontal rules, creating a sense of flowing water or rolling hills between content sections.
.bio-wave-divider {
width: 100%;
height: 80px;
position: relative;
overflow: hidden;
}
.bio-wave-divider svg {
position: absolute;
bottom: 0;
width: 100%;
height: 100%;
}
/* Animated gentle wave */
.bio-wave-animated {
width: 100%;
height: 60px;
background: no-repeat bottom / 200% 100%;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2880 60' preserveAspectRatio='none'%3E%3Cpath d='M0,30 C360,60 720,0 1080,30 C1440,60 1800,0 2160,30 C2520,60 2880,0 2880,30 L2880,60 L0,60Z' fill='%23B5C9A8' opacity='0.3'/%3E%3Cpath d='M0,35 C400,5 800,55 1200,35 C1600,15 2000,50 2400,35 C2800,20 2880,40 2880,35 L2880,60 L0,60Z' fill='%2387AE73' opacity='0.2'/%3E%3C/svg%3E");
animation: bio-wave-drift 8s ease-in-out infinite alternate;
}
@keyframes bio-wave-drift {
0% { background-position: 0% bottom; }
100% { background-position: -50% bottom; }
}
A signature biophilic effect: gentle floating leaf particles that drift across sections, creating a sense of being outdoors in an autumn forest or beneath a canopy.
/* Floating leaf particle */
.bio-leaf {
position: fixed;
width: 20px;
height: 20px;
opacity: 0;
pointer-events: none;
z-index: 0;
background: no-repeat center / contain;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10,2 C6,4 2,10 4,16 C6,14 10,8 16,4 C14,3 12,2 10,2Z' fill='%2387AE73'/%3E%3Cpath d='M10,2 C10,2 8,10 4,16' fill='none' stroke='%234A7C59' stroke-width='0.5'/%3E%3C/svg%3E");
animation: bio-leaf-fall linear infinite;
}
.bio-leaf:nth-child(1) { left: 10%; animation-duration: 12s; animation-delay: 0s; }
.bio-leaf:nth-child(2) { left: 30%; animation-duration: 15s; animation-delay: 3s; }
.bio-leaf:nth-child(3) { left: 55%; animation-duration: 11s; animation-delay: 6s; }
.bio-leaf:nth-child(4) { left: 75%; animation-duration: 14s; animation-delay: 2s; }
.bio-leaf:nth-child(5) { left: 90%; animation-duration: 13s; animation-delay: 5s; }
@keyframes bio-leaf-fall {
0% {
transform: translateY(-10vh) rotate(0deg) scale(0.8);
opacity: 0;
}
10% {
opacity: 0.6;
}
50% {
transform: translateY(50vh) rotate(180deg) translateX(30px) scale(1);
opacity: 0.4;
}
90% {
opacity: 0.2;
}
100% {
transform: translateY(110vh) rotate(360deg) translateX(-20px) scale(0.6);
opacity: 0;
}
}
Subtle organic background patterns that evoke the feeling of natural surfaces without overpowering content.
/* Linen / woven texture */
.bio-texture-linen {
background-color: var(--bio-parchment);
background-image:
repeating-linear-gradient(
0deg,
transparent,
transparent 2px,
rgba(107, 127, 92, 0.02) 2px,
rgba(107, 127, 92, 0.02) 3px
),
repeating-linear-gradient(
90deg,
transparent,
transparent 2px,
rgba(107, 127, 92, 0.02) 2px,
rgba(107, 127, 92, 0.02) 3px
);
}
/* Topographic / contour map pattern */
.bio-texture-topo {
background-color: var(--bio-parchment);
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cellipse cx='100' cy='100' rx='80' ry='60' fill='none' stroke='%23B5C9A8' stroke-width='0.5' opacity='0.3'/%3E%3Cellipse cx='100' cy='100' rx='60' ry='45' fill='none' stroke='%23B5C9A8' stroke-width='0.5' opacity='0.25'/%3E%3Cellipse cx='100' cy='100' rx='40' ry='30' fill='none' stroke='%23B5C9A8' stroke-width='0.5' opacity='0.2'/%3E%3Cellipse cx='100' cy='100' rx='20' ry='15' fill='none' stroke='%23B5C9A8' stroke-width='0.5' opacity='0.15'/%3E%3C/svg%3E");
background-size: 200px 200px;
}
/* Organic radial glow -- dappled sunlight */
.bio-texture-dappled {
background-color: var(--bio-parchment);
background-image:
radial-gradient(ellipse at 20% 30%, rgba(181, 201, 168, 0.15) 0%, transparent 50%),
radial-gradient(ellipse at 70% 60%, rgba(226, 202, 118, 0.1) 0%, transparent 40%),
radial-gradient(ellipse at 50% 80%, rgba(135, 174, 115, 0.08) 0%, transparent 45%);
}
| Aesthetic | Relationship |
|---|---|
| Earth Tones | Closest sibling – shares the natural color palette and grounded material sensibility; Earth Tones focuses more purely on color while Biophilic adds living elements and organic forms |
| Cottagecore | Overlapping romanticism of nature and handmade craft; Cottagecore is more nostalgic and pastoral, Biophilic more contemporary and wellness-focused |
| Wabi-Sabi | Shared appreciation for natural imperfection, organic materials, and quiet beauty; Wabi-Sabi emphasizes transience and age |
| Japandi | Parallel minimalist-natural aesthetic blending Japanese and Scandinavian principles; shares clean lines with natural material warmth |
| Scandinavian Design | Mutual emphasis on natural light, clean functionality, and warm natural materials like wood and wool |
| Art Nouveau | Historical predecessor in nature-worship design; Art Nouveau stylizes nature into ornamental curves, while Biophilic aims for more direct nature integration |
| Solarpunk | Shares the vision of nature-technology harmony and sustainable futures; Solarpunk is more speculative and utopian |
| Frutiger Eco | Corporate-natural hybrid aesthetic from the late 2000s; precursor to modern biophilic web design with glossy nature photography and green branding |
| Hygge | Overlapping warmth and comfort; Hygge is interior-focused coziness while Biophilic is broader nature-connection |
| Minimalism | Shared emphasis on whitespace, simplicity, and breathing room; Biophilic adds warmth and organic texture where Minimalism tends toward austerity |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Biophilic Design -- Nature Connected</title>
<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,400;0,600;1,400&family=Nunito:wght@300;400;600;700&display=swap" rel="stylesheet">
<style>
/* =============================================
CSS Custom Properties
============================================= */
:root {
--bio-forest: #2D5A3D;
--bio-fern: #4A7C59;
--bio-sage: #87AE73;
--bio-eucalyptus: #B5C9A8;
--bio-moss: #6B7F5C;
--bio-brown: #A0522D;
--bio-terracotta: #CB6D51;
--bio-sand: #E2CA76;
--bio-sky: #87CEEB;
--bio-teal: #5F8A8B;
--bio-stone: #808075;
--bio-parchment: #F7F3E8;
--bio-ivory: #FFFEF2;
--bio-loam: #2C2C28;
--bio-charcoal-sage: #4A5446;
--bio-bg-primary: var(--bio-parchment);
--bio-bg-secondary: var(--bio-ivory);
--bio-text-primary: var(--bio-loam);
--bio-text-secondary: var(--bio-moss);
--bio-accent-primary: var(--bio-forest);
--bio-accent-secondary: var(--bio-terracotta);
--bio-border: var(--bio-eucalyptus);
}
/* =============================================
Reset and Base
============================================= */
*, *::before, *::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
font-family: 'Nunito', 'Segoe UI', sans-serif;
font-weight: 400;
font-size: 1.05rem;
line-height: 1.8;
color: var(--bio-text-primary);
background-color: var(--bio-bg-primary);
/* Subtle linen texture */
background-image:
repeating-linear-gradient(
0deg,
transparent,
transparent 2px,
rgba(107, 127, 92, 0.015) 2px,
rgba(107, 127, 92, 0.015) 3px
),
repeating-linear-gradient(
90deg,
transparent,
transparent 2px,
rgba(107, 127, 92, 0.015) 2px,
rgba(107, 127, 92, 0.015) 3px
);
}
h1, h2, h3, h4 {
font-family: 'Cormorant Garamond', 'Georgia', serif;
font-weight: 400;
line-height: 1.2;
color: var(--bio-text-primary);
}
a {
color: var(--bio-accent-primary);
text-decoration: none;
transition: color 0.3s ease;
}
a:hover {
color: var(--bio-fern);
}
img {
max-width: 100%;
height: auto;
display: block;
}
/* =============================================
Navigation
============================================= */
.nav {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1rem 2rem;
background: rgba(247, 243, 232, 0.92);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-bottom: 1px solid var(--bio-border);
position: sticky;
top: 0;
z-index: 100;
}
.nav-brand {
font-family: 'Cormorant Garamond', serif;
font-size: 1.6rem;
font-weight: 600;
color: var(--bio-accent-primary);
display: flex;
align-items: center;
gap: 0.5rem;
}
.nav-brand svg {
width: 28px;
height: 28px;
}
.nav-links {
display: flex;
gap: 2rem;
list-style: none;
}
.nav-links a {
font-family: 'Nunito', sans-serif;
font-weight: 600;
font-size: 0.9rem;
color: var(--bio-text-primary);
position: relative;
padding-bottom: 4px;
}
.nav-links a::after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
width: 0;
height: 2px;
background: var(--bio-fern);
border-radius: 2px;
transition: all 0.3s ease;
transform: translateX(-50%);
}
.nav-links a:hover::after,
.nav-links a.active::after {
width: 100%;
}
.nav-links a:hover {
color: var(--bio-accent-primary);
}
/* =============================================
Hero Section
============================================= */
.hero {
position: relative;
min-height: 90vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
padding: 6rem 2rem;
overflow: hidden;
background:
linear-gradient(
180deg,
rgba(247, 243, 232, 0.0) 0%,
rgba(247, 243, 232, 0.6) 50%,
var(--bio-bg-primary) 100%
),
linear-gradient(
135deg,
rgba(45, 90, 61, 0.08) 0%,
rgba(181, 201, 168, 0.12) 40%,
rgba(226, 202, 118, 0.06) 70%,
rgba(247, 243, 232, 0.0) 100%
);
}
/* Decorative dappled light effect */
.hero::before {
content: '';
position: absolute;
inset: 0;
background:
radial-gradient(ellipse 300px 200px at 20% 30%, rgba(135, 174, 115, 0.1) 0%, transparent 70%),
radial-gradient(ellipse 250px 300px at 75% 60%, rgba(181, 201, 168, 0.08) 0%, transparent 70%),
radial-gradient(ellipse 200px 150px at 50% 20%, rgba(226, 202, 118, 0.06) 0%, transparent 60%);
pointer-events: none;
}
.hero-content {
position: relative;
z-index: 1;
max-width: 700px;
}
.hero-tag {
font-family: 'Nunito', sans-serif;
font-size: 0.8rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.15em;
color: var(--bio-fern);
margin-bottom: 1.5rem;
}
.hero h1 {
font-family: 'Cormorant Garamond', serif;
font-size: clamp(2.8rem, 7vw, 5rem);
font-weight: 600;
color: var(--bio-accent-primary);
line-height: 1.08;
margin-bottom: 1.5rem;
}
.hero p {
font-size: 1.15rem;
color: var(--bio-text-secondary);
max-width: 550px;
margin: 0 auto 2.5rem;
}
.hero-actions {
display: flex;
gap: 1rem;
justify-content: center;
flex-wrap: wrap;
}
/* Organic wave at bottom of hero */
.hero::after {
content: '';
position: absolute;
bottom: -1px;
left: 0;
width: 100%;
height: 80px;
background: no-repeat bottom / 100% 100%;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 80' preserveAspectRatio='none'%3E%3Cpath d='M0,50 C180,80 360,20 540,40 C720,60 900,10 1080,40 C1260,70 1350,25 1440,50 L1440,80 L0,80Z' fill='%23F7F3E8'/%3E%3C/svg%3E");
}
/* =============================================
Buttons
============================================= */
.btn {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.85rem 2rem;
font-family: 'Nunito', sans-serif;
font-weight: 600;
font-size: 0.95rem;
letter-spacing: 0.02em;
border: none;
border-radius: 50px;
cursor: pointer;
transition: all 0.3s ease;
text-decoration: none;
}
.btn-primary {
background: var(--bio-accent-primary);
color: var(--bio-parchment);
box-shadow: 0 2px 12px rgba(45, 90, 61, 0.25);
}
.btn-primary:hover {
background: var(--bio-fern);
color: var(--bio-parchment);
box-shadow: 0 6px 20px rgba(45, 90, 61, 0.3);
transform: translateY(-2px);
}
.btn-secondary {
background: transparent;
color: var(--bio-accent-secondary);
border: 2px solid var(--bio-accent-secondary);
}
.btn-secondary:hover {
background: var(--bio-accent-secondary);
color: var(--bio-ivory);
}
/* =============================================
Sections
============================================= */
.section {
padding: 5rem 2rem;
max-width: 1100px;
margin: 0 auto;
}
.section-header {
text-align: center;
max-width: 600px;
margin: 0 auto 3rem;
}
.section-header h2 {
font-size: clamp(2rem, 4vw, 2.8rem);
color: var(--bio-accent-primary);
margin-bottom: 1rem;
}
.section-header p {
color: var(--bio-text-secondary);
font-size: 1.05rem;
}
/* =============================================
Feature Cards
============================================= */
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
.card {
background: var(--bio-bg-secondary);
border: 1px solid var(--bio-border);
border-radius: 16px;
padding: 2rem;
position: relative;
overflow: hidden;
transition: transform 0.4s ease, box-shadow 0.4s ease;
box-shadow:
0 2px 8px rgba(45, 90, 61, 0.05),
0 8px 24px rgba(45, 90, 61, 0.03);
}
.card:hover {
transform: translateY(-4px);
box-shadow:
0 4px 12px rgba(45, 90, 61, 0.1),
0 16px 40px rgba(45, 90, 61, 0.07);
}
.card::before {
content: '';
position: absolute;
top: -20px;
right: -20px;
width: 100px;
height: 100px;
opacity: 0.05;
background: no-repeat center / contain;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M80,10 C60,20 40,50 30,80 C50,70 70,40 80,10Z' fill='%232D5A3D'/%3E%3Cpath d='M80,10 C80,10 55,45 30,80' fill='none' stroke='%232D5A3D' stroke-width='1'/%3E%3C/svg%3E");
pointer-events: none;
}
.card-icon {
width: 48px;
height: 48px;
background: rgba(45, 90, 61, 0.08);
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1.25rem;
color: var(--bio-accent-primary);
font-size: 1.5rem;
}
.card h3 {
font-family: 'Cormorant Garamond', serif;
font-size: 1.35rem;
font-weight: 600;
color: var(--bio-accent-primary);
margin-bottom: 0.75rem;
}
.card p {
color: var(--bio-text-secondary);
font-size: 0.95rem;
line-height: 1.7;
}
/* =============================================
Quote / Testimonial
============================================= */
.quote-section {
background: var(--bio-charcoal-sage);
color: var(--bio-parchment);
padding: 5rem 2rem;
position: relative;
overflow: hidden;
}
.quote-section::before {
content: '';
position: absolute;
inset: 0;
background:
radial-gradient(ellipse at 10% 50%, rgba(135, 174, 115, 0.1) 0%, transparent 50%),
radial-gradient(ellipse at 90% 50%, rgba(45, 90, 61, 0.08) 0%, transparent 50%);
pointer-events: none;
}
.quote-content {
max-width: 700px;
margin: 0 auto;
text-align: center;
position: relative;
z-index: 1;
}
.quote-content blockquote {
font-family: 'Cormorant Garamond', serif;
font-style: italic;
font-size: clamp(1.3rem, 3vw, 1.8rem);
line-height: 1.6;
color: var(--bio-eucalyptus);
margin-bottom: 1.5rem;
}
.quote-content cite {
font-family: 'Nunito', sans-serif;
font-style: normal;
font-size: 0.9rem;
font-weight: 600;
color: var(--bio-sage);
letter-spacing: 0.05em;
}
/* =============================================
Gallery / Mosaic
============================================= */
.gallery {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, 220px);
gap: 1rem;
margin-top: 3rem;
}
.gallery-item {
background: var(--bio-eucalyptus);
border-radius: 12px;
overflow: hidden;
position: relative;
transition: transform 0.3s ease;
}
.gallery-item:first-child {
grid-row: span 2;
}
.gallery-item:hover {
transform: scale(1.02);
}
.gallery-item img {
width: 100%;
height: 100%;
object-fit: cover;
}
/* Placeholder styling for demo */
.gallery-placeholder {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
font-family: 'Nunito', sans-serif;
font-size: 0.85rem;
color: var(--bio-moss);
background:
radial-gradient(ellipse at center, rgba(135, 174, 115, 0.15) 0%, transparent 70%),
var(--bio-eucalyptus);
}
/* =============================================
Footer
============================================= */
.footer {
background: var(--bio-charcoal-sage);
color: var(--bio-parchment);
padding: 3rem 2rem 2rem;
position: relative;
}
.footer::before {
content: '';
position: absolute;
top: -1px;
left: 0;
width: 100%;
height: 60px;
background: no-repeat top / 100% 100%;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 60' preserveAspectRatio='none'%3E%3Cpath d='M0,0 L0,30 C180,60 360,10 540,30 C720,50 900,5 1080,30 C1260,55 1350,15 1440,30 L1440,0Z' fill='%23F7F3E8'/%3E%3C/svg%3E");
}
.footer-content {
max-width: 1100px;
margin: 0 auto;
display: grid;
grid-template-columns: 2fr 1fr 1fr;
gap: 3rem;
padding-top: 2rem;
}
.footer h4 {
font-family: 'Cormorant Garamond', serif;
font-size: 1.2rem;
color: var(--bio-eucalyptus);
margin-bottom: 1rem;
}
.footer p {
color: rgba(247, 243, 232, 0.7);
font-size: 0.9rem;
line-height: 1.7;
}
.footer-links {
list-style: none;
}
.footer-links li {
margin-bottom: 0.5rem;
}
.footer-links a {
color: rgba(247, 243, 232, 0.7);
font-size: 0.9rem;
transition: color 0.3s ease;
}
.footer-links a:hover {
color: var(--bio-eucalyptus);
}
.footer-bottom {
max-width: 1100px;
margin: 2rem auto 0;
padding-top: 1.5rem;
border-top: 1px solid rgba(181, 201, 168, 0.15);
text-align: center;
font-size: 0.8rem;
color: rgba(247, 243, 232, 0.5);
}
/* =============================================
Floating Leaves (optional ambient effect)
============================================= */
.leaf {
position: fixed;
width: 18px;
height: 18px;
opacity: 0;
pointer-events: none;
z-index: 0;
background: no-repeat center / contain;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10,2 C6,4 2,10 4,16 C6,14 10,8 16,4 C14,3 12,2 10,2Z' fill='%2387AE73'/%3E%3Cpath d='M10,2 C10,2 8,10 4,16' fill='none' stroke='%234A7C59' stroke-width='0.5'/%3E%3C/svg%3E");
animation: leafFall linear infinite;
}
.leaf:nth-child(1) { left: 8%; animation-duration: 14s; animation-delay: 0s; }
.leaf:nth-child(2) { left: 25%; animation-duration: 17s; animation-delay: 4s; }
.leaf:nth-child(3) { left: 50%; animation-duration: 12s; animation-delay: 7s; }
.leaf:nth-child(4) { left: 72%; animation-duration: 16s; animation-delay: 2s; }
.leaf:nth-child(5) { left: 92%; animation-duration: 13s; animation-delay: 9s; }
@keyframes leafFall {
0% {
transform: translateY(-5vh) rotate(0deg) scale(0.7);
opacity: 0;
}
8% { opacity: 0.5; }
50% {
transform: translateY(50vh) rotate(200deg) translateX(25px) scale(1);
opacity: 0.35;
}
92% { opacity: 0.15; }
100% {
transform: translateY(105vh) rotate(380deg) translateX(-15px) scale(0.5);
opacity: 0;
}
}
/* =============================================
Wave Divider Utility
============================================= */
.wave-divider {
width: 100%;
height: 60px;
background: no-repeat bottom / 200% 100%;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2880 60' preserveAspectRatio='none'%3E%3Cpath d='M0,30 C360,60 720,0 1080,30 C1440,60 1800,0 2160,30 C2520,60 2880,0 2880,30 L2880,60 L0,60Z' fill='%23B5C9A8' opacity='0.25'/%3E%3Cpath d='M0,35 C400,5 800,55 1200,35 C1600,15 2000,50 2400,35 C2800,20 2880,40 2880,35 L2880,60 L0,60Z' fill='%2387AE73' opacity='0.15'/%3E%3C/svg%3E");
animation: waveDrift 10s ease-in-out infinite alternate;
}
@keyframes waveDrift {
0% { background-position: 0% bottom; }
100% { background-position: -50% bottom; }
}
/* =============================================
Responsive
============================================= */
@media (max-width: 768px) {
.nav {
flex-direction: column;
gap: 1rem;
padding: 1rem;
}
.nav-links {
gap: 1.25rem;
}
.hero {
min-height: 70vh;
padding: 4rem 1.5rem;
}
.footer-content {
grid-template-columns: 1fr;
gap: 2rem;
}
.gallery {
grid-template-columns: 1fr 1fr;
grid-template-rows: auto;
}
.gallery-item:first-child {
grid-row: span 1;
}
.card-grid {
grid-template-columns: 1fr;
}
}
</style>
</head>
<body>
<!-- Ambient floating leaves -->
<div class="leaf"></div>
<div class="leaf"></div>
<div class="leaf"></div>
<div class="leaf"></div>
<div class="leaf"></div>
<!-- Navigation -->
<nav class="nav">
<a href="#" class="nav-brand">
<svg viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 3C10 5 5 12 7 22C10 19 14 12 22 6C19 4 16 3 14 3Z" fill="#2D5A3D"/>
<path d="M14 3C14 3 11 13 7 22" stroke="#4A7C59" stroke-width="1.2" fill="none"/>
</svg>
Verdant
</a>
<ul class="nav-links">
<li><a href="#features" class="active">Features</a></li>
<li><a href="#philosophy">Philosophy</a></li>
<li><a href="#gallery">Gallery</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</nav>
<!-- Hero -->
<section class="hero">
<div class="hero-content">
<div class="hero-tag">Nature-Connected Design</div>
<h1>Where Digital Meets the Living World</h1>
<p>We create experiences rooted in nature's wisdom -- organic forms, living color, and the quiet beauty of the world outside your window.</p>
<div class="hero-actions">
<a href="#features" class="btn btn-primary">Explore Our Work</a>
<a href="#philosophy" class="btn btn-secondary">Our Philosophy</a>
</div>
</div>
</section>
<!-- Wave Divider -->
<div class="wave-divider"></div>
<!-- Features -->
<section class="section" id="features">
<div class="section-header">
<h2>Rooted in Nature</h2>
<p>Every element is drawn from the patterns, materials, and rhythms of the natural world.</p>
</div>
<div class="card-grid">
<div class="card">
<div class="card-icon">🌱</div>
<h3>Organic Forms</h3>
<p>Flowing curves, rounded containers, and biomorphic shapes replace rigid grids. Our layouts breathe like a forest canopy, creating space for content to grow naturally.</p>
</div>
<div class="card">
<div class="card-icon">🍃</div>
<h3>Living Palettes</h3>
<p>Colors drawn from moss, stone, sky, and soil. Muted and layered like real nature -- never synthetic, always grounded in the hues you find stepping outside.</p>
</div>
<div class="card">
<div class="card-icon">💧</div>
<h3>Fluid Motion</h3>
<p>Subtle animations inspired by water ripples, drifting leaves, and swaying branches. Movement that calms rather than startles, connecting you to natural rhythms.</p>
</div>
</div>
</section>
<!-- Quote Section -->
<section class="quote-section" id="philosophy">
<div class="quote-content">
<blockquote>"In every walk with nature, one receives far more than he seeks."</blockquote>
<cite>-- John Muir</cite>
</div>
</section>
<!-- Gallery -->
<section class="section" id="gallery">
<div class="section-header">
<h2>A Living Portfolio</h2>
<p>Spaces and screens where nature is not decoration, but foundation.</p>
</div>
<div class="gallery">
<div class="gallery-item">
<div class="gallery-placeholder">Forest Canopy</div>
</div>
<div class="gallery-item">
<div class="gallery-placeholder">Morning Fog</div>
</div>
<div class="gallery-item">
<div class="gallery-placeholder">River Stone</div>
</div>
<div class="gallery-item">
<div class="gallery-placeholder">Fern Detail</div>
</div>
<div class="gallery-item">
<div class="gallery-placeholder">Moss Texture</div>
</div>
</div>
</section>
<!-- Footer -->
<footer class="footer" id="contact">
<div class="footer-content">
<div>
<h4>Verdant Studio</h4>
<p>Design that grows from the same soil we walk on. We believe technology and nature are not opposites -- they are collaborators in building a more humane, sustainable world.</p>
</div>
<div>
<h4>Explore</h4>
<ul class="footer-links">
<li><a href="#">Our Process</a></li>
<li><a href="#">Case Studies</a></li>
<li><a href="#">Journal</a></li>
<li><a href="#">Sustainability</a></li>
</ul>
</div>
<div>
<h4>Connect</h4>
<ul class="footer-links">
<li><a href="#">hello@verdant.studio</a></li>
<li><a href="#">Instagram</a></li>
<li><a href="#">LinkedIn</a></li>
<li><a href="#">Newsletter</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
© 2026 Verdant Studio. Designed with nature in mind.
</div>
</footer>
</body>
</html>
srcset attributes, and lazy loading; large unoptimized hero images undermine the sustainability values biophilic design communicates#1A2F23) or rich loam (#2C2C28) with eucalyptus and sage text; dark mode on OLED screens reduces energy consumption significantlytransform and opacity for all animations (GPU-accelerated), and respect prefers-reduced-motion by disabling leaf drifts and wave animations for users who prefer reduced motion