Solarpunk is a utopian green-futures aesthetic that envisions a world where technology and nature coexist in harmony. It blends Art Nouveau curves, living architecture, warm sunlight, and lush botanical technology into a vision of sustainable abundance. Unlike the dystopian warnings of Cyberpunk or the ironic nostalgia of Vaporwave, Solarpunk is earnestly optimistic – it imagines communities powered by renewable energy, buildings wrapped in climbing plants, and technology that serves ecological well-being. In web design, Solarpunk translates to warm sunlit color palettes, organic curves, botanical illustrations, glass-and-greenery textures, and a design language that feels simultaneously natural and futuristic.
| Color Name | Hex | Role / Usage |
|---|---|---|
| Sunbeam Gold | #F0A830 |
Primary accent, CTAs, energy motifs |
| Honey Amber | #D4922A |
Hover states, warm emphasis |
| Solar Orange | #E8762B |
Secondary warm accent, highlights |
| Living Green | #3A8C3F |
Primary green, success states, botanical accents |
| Sage | #6B9E6B |
Secondary green, softer plant tones |
| Deep Canopy | #1E5631 |
Dark green accent, text on light backgrounds |
| Fresh Leaf | #8BC34A |
Bright accent, growth indicators, badges |
| Sky Blue | #5DADE2 |
Water motifs, secondary cool accent |
| Terracotta | #C67A4B |
Earth-toned accent, warm surfaces |
| Warm Cream | #FFF9ED |
Primary light background |
| Sunlit Linen | #F5ECD7 |
Secondary background, card surfaces |
| Greenhouse Glass | #E8F0E0 |
Tinted background, translucent panels |
| Rich Earth | #3E2F23 |
Dark text, footer background |
| Bark Brown | #5C4033 |
Secondary text, headers on light backgrounds |
| Warm Gray | #8A7E72 |
Muted text, captions, borders |
:root {
/* Warm accents */
--solar-gold: #f0a830;
--solar-amber: #d4922a;
--solar-orange: #e8762b;
--solar-terracotta: #c67a4b;
/* Greens */
--solar-green: #3a8c3f;
--solar-sage: #6b9e6b;
--solar-canopy: #1e5631;
--solar-leaf: #8bc34a;
/* Cool accent */
--solar-sky: #5dade2;
/* Backgrounds */
--solar-bg-cream: #fff9ed;
--solar-bg-linen: #f5ecd7;
--solar-bg-glass: #e8f0e0;
--solar-bg-dark: #3e2f23;
/* Text */
--solar-text-dark: #3e2f23;
--solar-text-brown: #5c4033;
--solar-text-muted: #8a7e72;
--solar-text-light: #fff9ed;
/* Gradients */
--solar-gradient-sunrise: linear-gradient(135deg, #f0a830 0%, #e8762b 30%, #c67a4b 60%, #3a8c3f 100%);
--solar-gradient-canopy: linear-gradient(180deg, #e8f0e0 0%, #6b9e6b 50%, #1e5631 100%);
--solar-gradient-glass: linear-gradient(135deg, rgba(232, 240, 224, 0.8), rgba(255, 249, 237, 0.6));
}
Solarpunk typography is:
| Font | Style | Best For |
|---|---|---|
| Fraunces | Soft serif, old-style | Headlines, display text, warm editorial |
| Cormorant Garamond | Elegant, high-contrast serif | Headlines, refined display text |
| Lora | Contemporary serif, brushed curves | Body text, readable long-form content |
| Nunito | Rounded sans-serif | Body text, friendly interfaces |
| Quicksand | Rounded geometric sans | Subheadings, labels, soft UI elements |
| Josefin Sans | Elegant geometric, Art Deco touch | Headlines, navigation, display |
| DM Serif Display | Refined serif display | Large headlines, hero text |
| Atkinson Hyperlegible | Maximum legibility sans | Body text, accessibility-focused content |
| Cabin | Humanist sans, warm | Body text, versatile UI |
| Merriweather | Screen-optimized serif | Body text, content-heavy layouts |
| Heading Font | Body Font | Character |
|---|---|---|
| Fraunces (700) | Nunito (400) | Warm organic heading, friendly rounded body |
| DM Serif Display (400) | Cabin (400) | Elegant serif display, humanist sans body |
| Cormorant Garamond (600) | Quicksand (400) | Art Nouveau elegance, soft geometric body |
| Josefin Sans (600) | Lora (400) | Clean geometric heading, warm serif body |
| Fraunces (700) | Atkinson Hyperlegible (400) | Accessible, inclusive, legible at all sizes |
/* Import fonts */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,700;9..144,900&family=Nunito:wght@400;500;600&display=swap');
/* Headings */
h1, h2, h3, h4, h5, h6 {
font-family: 'Fraunces', 'DM Serif Display', serif;
font-weight: 700;
color: var(--solar-text-dark);
line-height: 1.2;
}
/* Display / Hero text */
.solar-display {
font-family: 'Fraunces', serif;
font-size: clamp(2.5rem, 5vw, 4.5rem);
font-weight: 900;
color: var(--solar-canopy);
line-height: 1.1;
}
/* Body text */
body {
font-family: 'Nunito', 'Cabin', sans-serif;
font-weight: 400;
font-size: 1rem;
line-height: 1.8;
color: var(--solar-text-brown);
}
/* Labels and accents */
.solar-label {
font-family: 'Nunito', sans-serif;
font-weight: 600;
font-size: 0.8rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--solar-text-muted);
}
/* Decorative botanical caption */
.solar-caption {
font-family: 'Fraunces', serif;
font-weight: 500;
font-size: 0.9rem;
font-style: italic;
color: var(--solar-sage);
}
border-radius, SVG wave dividers, and curved clip-paths instead of straight horizontal lines.solar-card {
background: rgba(255, 249, 237, 0.75);
border: 1px solid rgba(107, 158, 107, 0.25);
border-radius: 16px;
padding: 32px;
backdrop-filter: blur(8px);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.solar-card:hover {
transform: translateY(-4px);
box-shadow: 0 12px 32px rgba(30, 86, 49, 0.1);
}
/* Leaf accent */
.solar-card__icon {
width: 48px;
height: 48px;
border-radius: 50%;
background: var(--solar-bg-glass);
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 16px;
font-size: 1.5rem;
}
/* Card grid */
.solar-card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 24px;
}
.solar-button {
display: inline-flex;
align-items: center;
justify-content: center;
background: var(--solar-green);
color: #ffffff;
border: none;
border-radius: 50px;
padding: 14px 36px;
font-family: 'Nunito', sans-serif;
font-weight: 600;
font-size: 0.95rem;
cursor: pointer;
transition: all 0.2s ease;
text-decoration: none;
box-shadow: 0 4px 12px rgba(58, 140, 63, 0.25);
}
.solar-button:hover {
background: var(--solar-canopy);
box-shadow: 0 6px 20px rgba(30, 86, 49, 0.3);
transform: translateY(-2px);
}
.solar-button:active {
transform: translateY(0);
box-shadow: 0 2px 8px rgba(30, 86, 49, 0.2);
}
/* Gold variant */
.solar-button--gold {
background: var(--solar-gold);
color: var(--solar-text-dark);
box-shadow: 0 4px 12px rgba(240, 168, 48, 0.3);
}
.solar-button--gold:hover {
background: var(--solar-amber);
box-shadow: 0 6px 20px rgba(212, 146, 42, 0.35);
}
/* Glass variant */
.solar-button--glass {
background: rgba(255, 249, 237, 0.6);
color: var(--solar-canopy);
border: 1px solid rgba(107, 158, 107, 0.3);
box-shadow: none;
backdrop-filter: blur(6px);
}
.solar-button--glass:hover {
background: rgba(255, 249, 237, 0.85);
box-shadow: 0 4px 12px rgba(30, 86, 49, 0.1);
}
.solar-nav {
display: flex;
align-items: center;
justify-content: space-between;
max-width: 1200px;
margin: 0 auto;
padding: 20px 40px;
}
.solar-nav__logo {
font-family: 'Fraunces', serif;
font-weight: 900;
font-size: 1.4rem;
color: var(--solar-canopy);
text-decoration: none;
}
.solar-nav__links {
display: flex;
gap: 32px;
list-style: none;
margin: 0;
padding: 0;
}
.solar-nav__links a {
font-family: 'Nunito', sans-serif;
font-weight: 600;
font-size: 0.9rem;
color: var(--solar-text-muted);
text-decoration: none;
transition: color 0.2s;
}
.solar-nav__links a:hover {
color: var(--solar-green);
}
.solar-nav__links a.active {
color: var(--solar-green);
}
.solar-hero {
display: flex;
align-items: center;
justify-content: space-between;
max-width: 1200px;
margin: 0 auto;
padding: 80px 40px;
gap: 60px;
}
.solar-hero__content {
flex: 1;
max-width: 540px;
}
.solar-hero__content h1 {
font-size: clamp(2.5rem, 5vw, 4rem);
color: var(--solar-canopy);
margin-bottom: 1rem;
line-height: 1.1;
}
.solar-hero__content p {
font-size: 1.1rem;
color: var(--solar-text-muted);
margin-bottom: 2rem;
line-height: 1.8;
}
.solar-hero__visual {
flex: 1;
display: flex;
justify-content: center;
}
@media (max-width: 768px) {
.solar-hero {
flex-direction: column-reverse;
text-align: center;
padding: 40px 20px;
gap: 40px;
}
}
.solar-wave {
width: 100%;
height: 80px;
overflow: hidden;
position: relative;
}
.solar-wave svg {
position: absolute;
bottom: 0;
width: 100%;
height: 100%;
}
/* Usage: place between sections */
/* <div class="solar-wave">
<svg viewBox="0 0 1440 80" preserveAspectRatio="none">
<path d="M0,40 C360,80 720,0 1440,40 L1440,80 L0,80 Z" fill="#e8f0e0"/>
</svg>
</div> */
.solar-glass {
background: rgba(232, 240, 224, 0.5);
border: 1px solid rgba(107, 158, 107, 0.2);
border-radius: 20px;
padding: 40px;
backdrop-filter: blur(12px);
box-shadow: 0 8px 32px rgba(30, 86, 49, 0.06);
}
.solar-metric {
text-align: center;
padding: 24px;
}
.solar-metric__number {
font-family: 'Fraunces', serif;
font-size: 3rem;
font-weight: 900;
color: var(--solar-gold);
line-height: 1.1;
margin-bottom: 4px;
}
.solar-metric__label {
font-family: 'Nunito', sans-serif;
font-size: 0.85rem;
font-weight: 600;
color: var(--solar-text-muted);
text-transform: uppercase;
letter-spacing: 0.08em;
}
.solar-metric__trend {
font-family: 'Nunito', sans-serif;
font-size: 0.8rem;
font-weight: 600;
color: var(--solar-green);
margin-top: 4px;
}
.solar-features {
padding: 80px 0;
}
.solar-features__grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 28px;
max-width: 1200px;
margin: 0 auto;
padding: 0 40px;
}
.solar-feature {
text-align: center;
padding: 32px 24px;
}
.solar-feature__icon {
width: 64px;
height: 64px;
border-radius: 50%;
background: var(--solar-bg-glass);
margin: 0 auto 16px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.75rem;
border: 1px solid rgba(107, 158, 107, 0.2);
}
.solar-feature h3 {
font-family: 'Fraunces', serif;
font-size: 1.15rem;
font-weight: 700;
color: var(--solar-text-dark);
margin-bottom: 0.5rem;
}
.solar-feature p {
font-size: 0.95rem;
color: var(--solar-text-muted);
line-height: 1.7;
}
backdrop-filter: blur() and translucent backgrounds| Aesthetic | Relationship to Solarpunk |
|---|---|
| Art Nouveau | Primary historical influence; Solarpunk inherits its flowing organic curves, botanical motifs, and integration of art with function |
| Cottagecore | Shares the pastoral, nature-positive values; Cottagecore is nostalgic and rural, Solarpunk is futuristic and urban-green |
| Cyberpunk | Philosophical opposite; both imagine technology-rich futures, but Cyberpunk is dystopian while Solarpunk is utopian |
| Biophilic Design | Architectural sibling; both integrate living plants into built environments and prioritize human-nature connection |
| Scandinavian Design | Shares values of functionality, sustainability, and clean living; Scandinavian is minimalist, Solarpunk is more ornamental |
| Studio Ghibli | Shares the warm, nature-harmonious, hopeful worldview; Ghibli’s visual language is a direct aesthetic cousin |
| Lunarpunk | Sister aesthetic; applies Solarpunk values with a nocturnal, bioluminescent, and mystical twist |
| Goblincore | Shares appreciation for nature but celebrates the messy, decomposing, mushroom-and-moss side rather than curated gardens |
| Arts and Crafts | Historical parallel; both reject industrialism in favor of handmade quality and natural materials |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Solarpunk Page</title>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,700;9..144,900&family=Nunito:wght@400;500;600&display=swap" rel="stylesheet">
<style>
:root {
--solar-gold: #f0a830;
--solar-amber: #d4922a;
--solar-orange: #e8762b;
--solar-green: #3a8c3f;
--solar-sage: #6b9e6b;
--solar-canopy: #1e5631;
--solar-leaf: #8bc34a;
--solar-sky: #5dade2;
--solar-terracotta: #c67a4b;
--solar-bg-cream: #fff9ed;
--solar-bg-linen: #f5ecd7;
--solar-bg-glass: #e8f0e0;
--solar-bg-dark: #3e2f23;
--solar-text-dark: #3e2f23;
--solar-text-brown: #5c4033;
--solar-text-muted: #8a7e72;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: var(--solar-bg-cream);
color: var(--solar-text-brown);
font-family: 'Nunito', sans-serif;
font-size: 1rem;
line-height: 1.8;
}
h1, h2, h3 {
font-family: 'Fraunces', serif;
font-weight: 700;
line-height: 1.2;
}
/* Navigation */
nav {
display: flex;
align-items: center;
justify-content: space-between;
max-width: 1200px;
margin: 0 auto;
padding: 20px 40px;
}
nav a.logo {
font-family: 'Fraunces', serif;
font-weight: 900;
font-size: 1.3rem;
color: var(--solar-canopy);
text-decoration: none;
}
nav ul { display: flex; gap: 28px; list-style: none; }
nav ul a {
font-family: 'Nunito', sans-serif;
font-weight: 600;
font-size: 0.9rem;
color: var(--solar-text-muted);
text-decoration: none;
transition: color 0.2s;
}
nav ul a:hover { color: var(--solar-green); }
/* Hero */
.hero {
display: flex;
align-items: center;
justify-content: space-between;
max-width: 1200px;
margin: 0 auto;
padding: 80px 40px;
gap: 60px;
}
.hero-content { flex: 1; max-width: 540px; }
.hero h1 {
font-size: clamp(2.5rem, 5vw, 4rem);
color: var(--solar-canopy);
margin-bottom: 1rem;
}
.hero p {
font-size: 1.1rem;
color: var(--solar-text-muted);
margin-bottom: 2rem;
}
.hero-visual {
flex: 1;
display: flex;
justify-content: center;
}
.btn {
display: inline-block;
background: var(--solar-green);
color: #fff;
border: none;
border-radius: 50px;
padding: 14px 36px;
font-family: 'Nunito', sans-serif;
font-weight: 600;
font-size: 0.95rem;
text-decoration: none;
cursor: pointer;
box-shadow: 0 4px 12px rgba(58, 140, 63, 0.25);
transition: all 0.2s;
}
.btn:hover {
background: var(--solar-canopy);
box-shadow: 0 6px 20px rgba(30, 86, 49, 0.3);
transform: translateY(-2px);
}
/* Wave divider */
.wave {
width: 100%;
overflow: hidden;
line-height: 0;
}
.wave svg { width: 100%; height: 60px; }
/* Features */
.features {
padding: 60px 0 80px;
background: var(--solar-bg-glass);
}
.features h2 {
text-align: center;
font-size: 1.8rem;
color: var(--solar-text-dark);
margin-bottom: 8px;
}
.features .subtitle {
text-align: center;
font-size: 0.9rem;
color: var(--solar-text-muted);
margin-bottom: 48px;
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 24px;
max-width: 1200px;
margin: 0 auto;
padding: 0 40px;
}
.feature {
background: rgba(255, 249, 237, 0.75);
border: 1px solid rgba(107, 158, 107, 0.2);
border-radius: 16px;
padding: 32px;
text-align: center;
backdrop-filter: blur(6px);
transition: transform 0.2s, box-shadow 0.2s;
}
.feature:hover {
transform: translateY(-4px);
box-shadow: 0 8px 24px rgba(30, 86, 49, 0.08);
}
.feature-icon {
width: 56px;
height: 56px;
border-radius: 50%;
background: var(--solar-bg-glass);
border: 1px solid rgba(107, 158, 107, 0.2);
margin: 0 auto 16px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
}
.feature h3 { font-size: 1.1rem; margin-bottom: 0.5rem; color: var(--solar-canopy); }
.feature p { color: var(--solar-text-muted); font-size: 0.95rem; }
/* CTA */
.cta {
background: var(--solar-canopy);
text-align: center;
padding: 80px 40px;
}
.cta h2 {
font-size: 2rem;
color: var(--solar-gold);
margin-bottom: 1rem;
}
.cta p {
color: rgba(255, 249, 237, 0.8);
font-size: 1.05rem;
margin-bottom: 2rem;
}
.cta .btn {
background: var(--solar-gold);
color: var(--solar-bg-dark);
box-shadow: 0 4px 12px rgba(240, 168, 48, 0.3);
}
.cta .btn:hover {
background: var(--solar-amber);
}
/* Footer */
footer {
background: var(--solar-bg-dark);
text-align: center;
padding: 30px 40px;
color: var(--solar-text-muted);
font-size: 0.9rem;
}
@media (max-width: 768px) {
.hero {
flex-direction: column-reverse;
text-align: center;
padding: 40px 20px;
gap: 40px;
}
nav { padding: 16px 20px; }
nav ul { gap: 16px; }
}
</style>
</head>
<body>
<nav>
<a href="#" class="logo">Luminos</a>
<ul>
<li><a href="#">Gardens</a></li>
<li><a href="#">Energy</a></li>
<li><a href="#">Community</a></li>
<li><a href="#">About</a></li>
</ul>
</nav>
<section class="hero">
<div class="hero-content">
<h1>Growing futures, together</h1>
<p>Sustainable technology rooted in community. We build living systems that power neighborhoods, nourish ecosystems, and brighten every day.</p>
<a href="#" class="btn">Explore</a>
</div>
<div class="hero-visual">
<svg width="400" height="320" viewBox="0 0 400 320" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Building with plants -->
<rect x="120" y="80" width="160" height="200" rx="8" fill="#e8f0e0" stroke="#6b9e6b" stroke-width="2"/>
<!-- Windows -->
<rect x="140" y="100" width="40" height="30" rx="4" fill="#fff9ed" stroke="#8a7e72" stroke-width="1"/>
<rect x="220" y="100" width="40" height="30" rx="4" fill="#fff9ed" stroke="#8a7e72" stroke-width="1"/>
<rect x="140" y="150" width="40" height="30" rx="4" fill="#fff9ed" stroke="#8a7e72" stroke-width="1"/>
<rect x="220" y="150" width="40" height="30" rx="4" fill="#fff9ed" stroke="#8a7e72" stroke-width="1"/>
<!-- Solar panels on roof -->
<rect x="130" y="65" width="55" height="15" rx="2" fill="#5dade2" stroke="#3a8c3f" stroke-width="1"/>
<rect x="215" y="65" width="55" height="15" rx="2" fill="#5dade2" stroke="#3a8c3f" stroke-width="1"/>
<!-- Climbing vines -->
<path d="M120 280 Q115 240 125 200 Q120 160 130 120" stroke="#3a8c3f" stroke-width="3" fill="none"/>
<circle cx="125" cy="200" r="6" fill="#8bc34a"/>
<circle cx="130" cy="160" r="5" fill="#6b9e6b"/>
<circle cx="125" cy="130" r="4" fill="#8bc34a"/>
<!-- Ground garden -->
<ellipse cx="200" cy="290" rx="160" ry="15" fill="#6b9e6b" opacity="0.3"/>
<!-- Sun -->
<circle cx="330" cy="50" r="30" fill="#f0a830" opacity="0.4"/>
<circle cx="330" cy="50" r="20" fill="#f0a830" opacity="0.6"/>
<!-- Trees -->
<circle cx="60" cy="240" r="25" fill="#3a8c3f" opacity="0.5"/>
<rect x="57" y="260" width="6" height="25" rx="2" fill="#5c4033" opacity="0.5"/>
<circle cx="340" cy="230" r="20" fill="#6b9e6b" opacity="0.5"/>
<rect x="337" y="245" width="6" height="30" rx="2" fill="#5c4033" opacity="0.5"/>
</svg>
</div>
</section>
<div class="wave">
<svg viewBox="0 0 1440 60" preserveAspectRatio="none">
<path d="M0,30 C240,60 480,0 720,30 C960,60 1200,0 1440,30 L1440,60 L0,60 Z" fill="#e8f0e0"/>
</svg>
</div>
<section class="features">
<h2>What we cultivate</h2>
<p class="subtitle">Technology that grows with the world, not against it</p>
<div class="features-grid">
<div class="feature">
<div class="feature-icon">🌱</div>
<h3>Living Rooftops</h3>
<p>Transform unused rooftop space into thriving gardens that feed communities and cool buildings naturally.</p>
</div>
<div class="feature">
<div class="feature-icon">☀️</div>
<h3>Solar Commons</h3>
<p>Community-owned solar arrays that distribute clean energy equitably across neighborhoods.</p>
</div>
<div class="feature">
<div class="feature-icon">🌳</div>
<h3>Urban Forests</h3>
<p>Dense pocket forests planted using Miyawaki method, creating biodiversity hotspots in city centers.</p>
</div>
</div>
</section>
<div class="wave" style="transform: scaleY(-1);">
<svg viewBox="0 0 1440 60" preserveAspectRatio="none">
<path d="M0,30 C240,60 480,0 720,30 C960,60 1200,0 1440,30 L1440,60 L0,60 Z" fill="#e8f0e0"/>
</svg>
</div>
<section class="cta">
<h2>Join the garden</h2>
<p>Every seed planted is a vote for the future we want. Start growing with us today.</p>
<a href="#" class="btn">Get started</a>
</section>
<footer>
<p>Luminos Collective -- Building solarpunk futures since 2024</p>
</footer>
</body>
</html>