Gradient Mesh is a contemporary design aesthetic built around complex, multi-point color gradients that flow organically across surfaces, creating rich, painterly fields of blended hues. Unlike simple linear or radial gradients that transition between two colors along a single axis, mesh gradients employ multiple color control points scattered across a two-dimensional plane, allowing colors to blend in every direction simultaneously. The result is a lush, almost liquid visual language reminiscent of aurora borealis, oil-on-water iridescence, or soft-focus watercolor washes. Popularized by brands like Stripe, Instagram, and Apple, and fueled by tools like Figma and dedicated mesh generators, this aesthetic has become a defining visual trend of the 2020s – conveying modernity, creativity, and premium quality. In web and UI design, Gradient Mesh translates to vibrant multi-hue backgrounds, softly glowing hero sections, translucent glassmorphic overlays atop color fields, and typography that either floats on these rich canvases or absorbs their colors through gradient text effects.
| Color Name | Hex | Role / Usage |
|---|---|---|
| Electric Violet | #7B2FFF |
Primary mesh anchor, hero gradient focal point |
| Hot Magenta | #FF2D87 |
Secondary mesh point, accent buttons, active states |
| Coral Flame | #FF6B4A |
Warm mesh anchor, hover highlights, warm accents |
| Sunset Amber | #FFAA33 |
Warm gradient terminus, badges, notification dots |
| Vivid Teal | #00D4AA |
Cool mesh anchor, success states, secondary CTAs |
| Ocean Blue | #2E7CF6 |
Cool gradient midpoint, link color, informational elements |
| Deep Indigo | #1A0A4B |
Dark mesh edge, deep backgrounds, footer surfaces |
| Soft Lavender | #C4B5FD |
Muted text on dark backgrounds, secondary labels |
| Blush Pink | #FFB5C8 |
Light mesh accent, soft highlights, decorative elements |
| Arctic White | #F8F9FF |
Primary text on dark mesh, card backgrounds in light mode |
| Frosted Glass | rgba(255,255,255,0.12) |
Glass panel surfaces, card overlays on mesh |
| Charcoal Base | #0F0B1A |
Deepest background layer beneath mesh |
| Mist Gray | #8B8DA3 |
Secondary text, captions, placeholder content |
| Warm Cream | #FFF5E6 |
Light-mode background, soft contrast to vibrant mesh |
:root {
/* Mesh anchor colors */
--mesh-violet: #7b2fff;
--mesh-magenta: #ff2d87;
--mesh-coral: #ff6b4a;
--mesh-amber: #ffaa33;
--mesh-teal: #00d4aa;
--mesh-blue: #2e7cf6;
/* Soft accents */
--mesh-lavender: #c4b5fd;
--mesh-blush: #ffb5c8;
/* Backgrounds */
--mesh-bg-deep: #0f0b1a;
--mesh-bg-indigo: #1a0a4b;
--mesh-bg-cream: #fff5e6;
--mesh-bg-white: #f8f9ff;
/* Glass */
--mesh-glass: rgba(255, 255, 255, 0.12);
--mesh-glass-border: rgba(255, 255, 255, 0.18);
--mesh-glass-strong: rgba(255, 255, 255, 0.22);
/* Text */
--mesh-text-light: #f8f9ff;
--mesh-text-muted: #8b8da3;
--mesh-text-dark: #1a0a4b;
/* Mesh gradient backgrounds */
--mesh-gradient-aurora: radial-gradient(at 20% 30%, #7b2fff 0%, transparent 60%),
radial-gradient(at 75% 20%, #ff2d87 0%, transparent 55%),
radial-gradient(at 50% 80%, #00d4aa 0%, transparent 50%),
radial-gradient(at 90% 70%, #ff6b4a 0%, transparent 55%),
linear-gradient(135deg, #1a0a4b, #0f0b1a);
--mesh-gradient-sunset: radial-gradient(at 30% 40%, #ff2d87 0%, transparent 55%),
radial-gradient(at 70% 30%, #ff6b4a 0%, transparent 50%),
radial-gradient(at 50% 70%, #ffaa33 0%, transparent 55%),
radial-gradient(at 85% 80%, #7b2fff 0%, transparent 50%),
linear-gradient(160deg, #1a0a4b, #0f0b1a);
--mesh-gradient-ocean: radial-gradient(at 25% 25%, #2e7cf6 0%, transparent 55%),
radial-gradient(at 70% 40%, #00d4aa 0%, transparent 50%),
radial-gradient(at 40% 75%, #7b2fff 0%, transparent 55%),
radial-gradient(at 90% 85%, #c4b5fd 0%, transparent 45%),
linear-gradient(140deg, #0f0b1a, #1a0a4b);
/* Shadows and glows */
--mesh-shadow-soft: 0 8px 32px rgba(123, 47, 255, 0.15);
--mesh-shadow-card: 0 4px 24px rgba(0, 0, 0, 0.12);
--mesh-glow-violet: 0 0 20px rgba(123, 47, 255, 0.35), 0 0 60px rgba(123, 47, 255, 0.1);
--mesh-glow-magenta: 0 0 20px rgba(255, 45, 135, 0.35), 0 0 60px rgba(255, 45, 135, 0.1);
}
Gradient Mesh typography is:
background-clip: text to absorb the mesh colors into the letterforms themselves| Font | Style | Best For |
|---|---|---|
| Inter | Geometric, clean, variable | Body text, UI elements, versatile workhorse |
| Sora | Geometric, modern, friendly | Headlines, subheadings, brand text |
| Plus Jakarta Sans | Rounded geometric | Headlines, body text, warm modern feel |
| Outfit | Geometric, contemporary | Headings, labels, clean UI text |
| Space Grotesk | Geometric, slightly quirky | Headlines, tech-forward contexts |
| DM Sans | Clean, neutral geometric | Body text, form labels, UI elements |
| Manrope | Semi-rounded, modern | Subheadings, body text, accessible feel |
| Satoshi | Geometric grotesque | Headlines, brand text (self-hosted) |
| Poppins | Geometric, rounded | Friendly headlines, approachable UI |
| General Sans | Neutral geometric | Body text, editorial content (self-hosted) |
| Heading Font | Body Font | Character |
|---|---|---|
| Sora (700) | Inter (400) | Modern, professional, tech-forward |
| Plus Jakarta Sans (700) | DM Sans (400) | Warm, approachable, rounded harmony |
| Space Grotesk (600) | Inter (400) | Quirky headlines, clean body text |
| Outfit (700) | Manrope (400) | Contemporary, balanced, editorial |
| Poppins (600) | DM Sans (400) | Friendly, soft geometry throughout |
/* Import fonts */
@import url('https://fonts.googleapis.com/css2?family=Sora:wght@400;600;700&family=Inter:wght@400;500;600&display=swap');
/* Headings */
h1, h2, h3, h4, h5, h6 {
font-family: 'Sora', sans-serif;
font-weight: 700;
color: var(--mesh-text-light);
line-height: 1.15;
letter-spacing: -0.01em;
}
/* Display / Hero text with gradient fill */
.mesh-display {
font-family: 'Sora', sans-serif;
font-size: clamp(2.5rem, 6vw, 5rem);
font-weight: 700;
letter-spacing: -0.02em;
line-height: 1.05;
background: linear-gradient(135deg, var(--mesh-violet), var(--mesh-magenta), var(--mesh-coral));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* Light text on mesh backgrounds */
.mesh-heading-light {
font-family: 'Sora', sans-serif;
color: var(--mesh-text-light);
text-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
}
/* Body text */
body {
font-family: 'Inter', sans-serif;
font-weight: 400;
font-size: 1rem;
line-height: 1.7;
color: var(--mesh-text-light);
}
/* Labels and captions */
.mesh-label {
font-family: 'Inter', sans-serif;
font-size: 0.75rem;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--mesh-text-muted);
}
/* Subtle mono for code or data */
.mesh-mono {
font-family: 'JetBrains Mono', 'Fira Code', monospace;
font-size: 0.875rem;
letter-spacing: -0.01em;
}
clamp() to stay impactful on small screensbackdrop-filter with solid semi-transparent backgrounds@supports to provide graceful fallbacks for older browsers lacking backdrop-filter.mesh-card {
background: var(--mesh-glass);
border: 1px solid var(--mesh-glass-border);
border-radius: 16px;
padding: 32px;
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}
.mesh-card:hover {
transform: translateY(-4px);
box-shadow: var(--mesh-shadow-soft);
border-color: rgba(255, 255, 255, 0.3);
}
/* Colored top accent */
.mesh-card::before {
content: '';
position: absolute;
top: 0;
left: 24px;
right: 24px;
height: 3px;
border-radius: 0 0 3px 3px;
background: linear-gradient(90deg, var(--mesh-violet), var(--mesh-magenta), var(--mesh-coral));
opacity: 0;
transition: opacity 0.3s ease;
}
.mesh-card:hover::before {
opacity: 1;
}
/* Card grid layout */
.mesh-card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 24px;
}
.mesh-button {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 14px 36px;
border: none;
border-radius: 12px;
font-family: 'Sora', sans-serif;
font-weight: 600;
font-size: 0.9rem;
letter-spacing: 0.01em;
color: #ffffff;
background: linear-gradient(135deg, var(--mesh-violet), var(--mesh-magenta));
cursor: pointer;
transition: transform 0.2s ease, box-shadow 0.3s ease, filter 0.2s ease;
text-decoration: none;
}
.mesh-button:hover {
transform: translateY(-2px);
box-shadow: var(--mesh-glow-violet);
filter: brightness(1.1);
}
.mesh-button:active {
transform: translateY(0);
filter: brightness(0.95);
}
/* Ghost / outline variant on mesh backgrounds */
.mesh-button--ghost {
background: transparent;
color: var(--mesh-text-light);
border: 1.5px solid rgba(255, 255, 255, 0.3);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
.mesh-button--ghost:hover {
background: rgba(255, 255, 255, 0.1);
border-color: rgba(255, 255, 255, 0.5);
box-shadow: none;
filter: none;
}
/* Teal variant */
.mesh-button--teal {
background: linear-gradient(135deg, var(--mesh-teal), var(--mesh-blue));
}
.mesh-button--teal:hover {
box-shadow: 0 0 20px rgba(0, 212, 170, 0.35), 0 0 60px rgba(0, 212, 170, 0.1);
}
.mesh-nav {
display: flex;
align-items: center;
justify-content: space-between;
max-width: 1200px;
margin: 0 auto;
padding: 20px 40px;
position: relative;
z-index: 10;
}
.mesh-nav__logo {
font-family: 'Sora', sans-serif;
font-size: 1.25rem;
font-weight: 700;
color: var(--mesh-text-light);
text-decoration: none;
letter-spacing: -0.01em;
}
.mesh-nav__links {
display: flex;
align-items: center;
gap: 32px;
list-style: none;
margin: 0;
padding: 0;
}
.mesh-nav__links a {
font-family: 'Inter', sans-serif;
font-weight: 500;
font-size: 0.9rem;
color: rgba(248, 249, 255, 0.65);
text-decoration: none;
transition: color 0.2s ease;
}
.mesh-nav__links a:hover {
color: var(--mesh-text-light);
}
/* Frosted nav variant */
.mesh-nav--frosted {
background: rgba(15, 11, 26, 0.4);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
max-width: 100%;
padding: 16px 40px;
}
.mesh-hero {
position: relative;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
padding: 100px 40px;
overflow: hidden;
background: var(--mesh-gradient-aurora);
background-color: var(--mesh-bg-deep);
}
/* Noise texture overlay */
.mesh-hero::before {
content: '';
position: absolute;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
background-size: 256px 256px;
opacity: 0.5;
pointer-events: none;
z-index: 1;
}
.mesh-hero__content {
position: relative;
z-index: 5;
max-width: 720px;
}
.mesh-hero__content h1 {
font-size: clamp(2.5rem, 6vw, 5rem);
margin-bottom: 1.5rem;
color: var(--mesh-text-light);
text-shadow: 0 2px 20px rgba(0, 0, 0, 0.3);
}
.mesh-hero__content p {
font-size: 1.15rem;
color: rgba(248, 249, 255, 0.75);
margin-bottom: 2.5rem;
max-width: 560px;
margin-left: auto;
margin-right: auto;
}
@media (max-width: 768px) {
.mesh-hero {
min-height: auto;
padding: 80px 20px;
}
}
/* The core technique: layering multiple radial gradients
at different positions to create a mesh effect */
.mesh-background {
background:
radial-gradient(at 15% 25%, #7b2fff 0%, transparent 55%),
radial-gradient(at 70% 15%, #ff2d87 0%, transparent 50%),
radial-gradient(at 85% 60%, #ff6b4a 0%, transparent 45%),
radial-gradient(at 40% 80%, #00d4aa 0%, transparent 50%),
radial-gradient(at 60% 50%, #2e7cf6 0%, transparent 40%);
background-color: var(--mesh-bg-deep);
}
/* Animated mesh -- subtle color drift */
.mesh-background--animated {
background-size: 200% 200%;
animation: meshDrift 20s ease-in-out infinite alternate;
}
@keyframes meshDrift {
0% { background-position: 0% 0%; }
25% { background-position: 50% 20%; }
50% { background-position: 100% 50%; }
75% { background-position: 50% 80%; }
100% { background-position: 0% 100%; }
}
.mesh-glass-panel {
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 20px;
padding: 40px;
backdrop-filter: blur(24px) saturate(1.2);
-webkit-backdrop-filter: blur(24px) saturate(1.2);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
}
/* Light mode glass variant */
.mesh-glass-panel--light {
background: rgba(255, 255, 255, 0.6);
border-color: rgba(255, 255, 255, 0.5);
backdrop-filter: blur(20px) saturate(1.5);
-webkit-backdrop-filter: blur(20px) saturate(1.5);
}
/* @supports fallback for browsers without backdrop-filter */
@supports not (backdrop-filter: blur(1px)) {
.mesh-glass-panel {
background: rgba(15, 11, 26, 0.85);
}
}
/* SVG-based noise texture to add grain to smooth mesh gradients */
.mesh-noise {
position: relative;
}
.mesh-noise::after {
content: '';
position: absolute;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
background-size: 256px 256px;
pointer-events: none;
z-index: 2;
border-radius: inherit;
mix-blend-mode: overlay;
}
.mesh-gradient-text {
font-family: 'Sora', sans-serif;
font-weight: 700;
background: linear-gradient(
135deg,
var(--mesh-violet) 0%,
var(--mesh-magenta) 35%,
var(--mesh-coral) 65%,
var(--mesh-amber) 100%
);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* Animated gradient text */
.mesh-gradient-text--animated {
background-size: 200% 200%;
animation: textShimmer 4s ease-in-out infinite alternate;
}
@keyframes textShimmer {
0% { background-position: 0% 50%; }
100% { background-position: 100% 50%; }
}
radial-gradient() values at different positions to create complex, multi-point mesh effectsclamp() for display text to keep headlines impactful across all screen sizes@supports fallbacks for backdrop-filter to ensure older browsers still get a usable experiencebackdrop-filter and large animated gradients can tax mobile GPUs| Aesthetic | Relationship to Gradient Mesh |
|---|---|
| Glassmorphism | Natural companion; glass panels with backdrop-blur are the primary technique for overlaying content on mesh backgrounds |
| Aurora Design | A close sibling specifically inspired by the northern lights; aurora tends toward cooler greens, teals, and purples with horizontal banding |
| Vaporwave | Both use vivid color gradients, but Vaporwave is ironic and retro-nostalgic while Gradient Mesh is forward-looking and premium |
| Holographic | Shares the iridescent, multi-hue quality; Holographic specifically mimics light-diffracting foil with rainbow spectral shifts |
| Neomorphism | Both use soft visual treatments; Neomorphism uses subtle shadows on flat surfaces while Gradient Mesh uses rich color fields |
| Flat Design 2.0 | Gradient Mesh emerged as flat design evolved to reintroduce depth and richness through color gradients rather than skeuomorphic textures |
| Brutalism | Polar opposite: Brutalism embraces raw, stark contrast and visible structure, while Gradient Mesh is soft, flowing, and polished |
| Material Design | Material uses subtle gradients for elevation and shadows; Gradient Mesh uses bold, artistic gradients as the primary visual language |
| Synthwave | Both employ vivid color gradients; Synthwave follows strict warm-to-cool sunset logic while Gradient Mesh is freeform and multi-directional |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gradient Mesh Page</title>
<link href="https://fonts.googleapis.com/css2?family=Sora:wght@400;600;700&family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
<style>
:root {
--mesh-violet: #7b2fff;
--mesh-magenta: #ff2d87;
--mesh-coral: #ff6b4a;
--mesh-amber: #ffaa33;
--mesh-teal: #00d4aa;
--mesh-blue: #2e7cf6;
--mesh-lavender: #c4b5fd;
--mesh-blush: #ffb5c8;
--mesh-bg-deep: #0f0b1a;
--mesh-bg-indigo: #1a0a4b;
--mesh-text-light: #f8f9ff;
--mesh-text-muted: #8b8da3;
--mesh-glass: rgba(255, 255, 255, 0.08);
--mesh-glass-border: rgba(255, 255, 255, 0.12);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: var(--mesh-bg-deep);
color: var(--mesh-text-light);
font-family: 'Inter', sans-serif;
font-size: 1rem;
line-height: 1.7;
}
h1, h2, h3 {
font-family: 'Sora', sans-serif;
font-weight: 700;
line-height: 1.15;
letter-spacing: -0.01em;
}
/* Navigation */
nav {
display: flex;
align-items: center;
justify-content: space-between;
max-width: 1200px;
margin: 0 auto;
padding: 20px 40px;
position: relative;
z-index: 20;
}
nav a.logo {
font-family: 'Sora', sans-serif;
font-size: 1.2rem;
font-weight: 700;
color: var(--mesh-text-light);
text-decoration: none;
}
nav ul {
display: flex;
gap: 32px;
list-style: none;
}
nav ul a {
font-family: 'Inter', sans-serif;
font-weight: 500;
font-size: 0.9rem;
color: rgba(248, 249, 255, 0.6);
text-decoration: none;
transition: color 0.2s ease;
}
nav ul a:hover {
color: var(--mesh-text-light);
}
/* Hero Section */
.hero {
position: relative;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
min-height: 92vh;
padding: 100px 40px;
overflow: hidden;
background:
radial-gradient(ellipse at 20% 30%, rgba(123, 47, 255, 0.7) 0%, transparent 55%),
radial-gradient(ellipse at 75% 20%, rgba(255, 45, 135, 0.6) 0%, transparent 50%),
radial-gradient(ellipse at 50% 80%, rgba(0, 212, 170, 0.5) 0%, transparent 50%),
radial-gradient(ellipse at 90% 65%, rgba(255, 107, 74, 0.5) 0%, transparent 50%),
radial-gradient(ellipse at 35% 55%, rgba(46, 124, 246, 0.3) 0%, transparent 45%);
background-color: var(--mesh-bg-deep);
}
/* Noise overlay */
.hero::before {
content: '';
position: absolute;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
background-size: 200px 200px;
opacity: 0.6;
pointer-events: none;
z-index: 1;
}
.hero-content {
position: relative;
z-index: 5;
max-width: 700px;
}
.hero h1 {
font-size: clamp(2.5rem, 6vw, 4.5rem);
margin-bottom: 1.5rem;
color: var(--mesh-text-light);
text-shadow: 0 2px 20px rgba(0, 0, 0, 0.25);
letter-spacing: -0.02em;
}
.hero p {
font-size: 1.1rem;
color: rgba(248, 249, 255, 0.72);
margin-bottom: 2.5rem;
max-width: 520px;
margin-left: auto;
margin-right: auto;
}
.btn {
display: inline-block;
padding: 14px 36px;
border: none;
border-radius: 12px;
font-family: 'Sora', sans-serif;
font-weight: 600;
font-size: 0.9rem;
color: #ffffff;
background: linear-gradient(135deg, var(--mesh-violet), var(--mesh-magenta));
text-decoration: none;
cursor: pointer;
transition: transform 0.2s ease, box-shadow 0.3s ease, filter 0.2s ease;
}
.btn:hover {
transform: translateY(-2px);
box-shadow: 0 0 20px rgba(123, 47, 255, 0.4), 0 0 60px rgba(123, 47, 255, 0.1);
filter: brightness(1.1);
}
.btn--ghost {
background: transparent;
border: 1.5px solid rgba(255, 255, 255, 0.3);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
margin-left: 12px;
}
.btn--ghost:hover {
background: rgba(255, 255, 255, 0.1);
border-color: rgba(255, 255, 255, 0.5);
box-shadow: none;
filter: none;
}
/* Features Section */
.features {
padding: 100px 0;
background: var(--mesh-bg-deep);
}
.features h2 {
text-align: center;
font-size: 2rem;
margin-bottom: 16px;
background: linear-gradient(135deg, var(--mesh-violet), var(--mesh-magenta), var(--mesh-coral));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.features .subtitle {
text-align: center;
color: var(--mesh-text-muted);
margin-bottom: 56px;
font-size: 1.05rem;
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 24px;
max-width: 1200px;
margin: 0 auto;
padding: 0 40px;
}
.feature {
background: var(--mesh-glass);
border: 1px solid var(--mesh-glass-border);
border-radius: 16px;
padding: 32px;
position: relative;
overflow: hidden;
transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}
.feature:hover {
transform: translateY(-4px);
box-shadow: 0 8px 32px rgba(123, 47, 255, 0.15);
border-color: rgba(255, 255, 255, 0.22);
}
.feature-icon {
width: 48px;
height: 48px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.4rem;
margin-bottom: 20px;
}
.feature-icon--violet {
background: linear-gradient(135deg, rgba(123, 47, 255, 0.2), rgba(255, 45, 135, 0.2));
}
.feature-icon--teal {
background: linear-gradient(135deg, rgba(0, 212, 170, 0.2), rgba(46, 124, 246, 0.2));
}
.feature-icon--coral {
background: linear-gradient(135deg, rgba(255, 107, 74, 0.2), rgba(255, 170, 51, 0.2));
}
.feature h3 {
font-size: 1.1rem;
margin-bottom: 10px;
}
.feature p {
color: var(--mesh-text-muted);
font-size: 0.92rem;
line-height: 1.65;
}
/* Showcase Section with Mesh Background */
.showcase {
position: relative;
padding: 100px 40px;
overflow: hidden;
background:
radial-gradient(ellipse at 30% 40%, rgba(255, 45, 135, 0.5) 0%, transparent 50%),
radial-gradient(ellipse at 70% 30%, rgba(255, 107, 74, 0.4) 0%, transparent 45%),
radial-gradient(ellipse at 50% 75%, rgba(255, 170, 51, 0.4) 0%, transparent 50%),
radial-gradient(ellipse at 85% 80%, rgba(123, 47, 255, 0.4) 0%, transparent 45%);
background-color: var(--mesh-bg-deep);
}
.showcase::before {
content: '';
position: absolute;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
background-size: 200px 200px;
opacity: 0.6;
pointer-events: none;
z-index: 1;
}
.showcase-content {
position: relative;
z-index: 5;
max-width: 1200px;
margin: 0 auto;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 60px;
align-items: center;
}
.showcase-text h2 {
font-size: 2.2rem;
color: var(--mesh-text-light);
text-shadow: 0 2px 16px rgba(0, 0, 0, 0.25);
margin-bottom: 1rem;
}
.showcase-text p {
color: rgba(248, 249, 255, 0.72);
font-size: 1.05rem;
margin-bottom: 2rem;
}
.showcase-panel {
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 20px;
padding: 40px;
backdrop-filter: blur(24px) saturate(1.2);
-webkit-backdrop-filter: blur(24px) saturate(1.2);
}
.stat-row {
display: flex;
justify-content: space-between;
text-align: center;
gap: 24px;
}
.stat {
flex: 1;
}
.stat-number {
font-family: 'Sora', sans-serif;
font-size: 2.2rem;
font-weight: 700;
background: linear-gradient(135deg, var(--mesh-violet), var(--mesh-magenta));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
line-height: 1.1;
margin-bottom: 6px;
}
.stat-label {
font-size: 0.8rem;
color: var(--mesh-text-muted);
text-transform: uppercase;
letter-spacing: 0.06em;
}
/* CTA Section */
.cta {
text-align: center;
padding: 100px 40px;
background: var(--mesh-bg-deep);
}
.cta h2 {
font-size: 2.2rem;
margin-bottom: 1rem;
background: linear-gradient(135deg, var(--mesh-teal), var(--mesh-blue), var(--mesh-violet));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.cta p {
color: var(--mesh-text-muted);
font-size: 1.05rem;
max-width: 480px;
margin: 0 auto 2rem;
}
/* Divider */
.divider {
border: none;
height: 1px;
max-width: 1200px;
margin: 0 auto;
background: linear-gradient(
90deg,
transparent 0%,
rgba(123, 47, 255, 0.3) 20%,
rgba(255, 45, 135, 0.3) 50%,
rgba(0, 212, 170, 0.3) 80%,
transparent 100%
);
}
/* Footer */
footer {
background: #080510;
text-align: center;
padding: 32px 40px;
color: var(--mesh-text-muted);
font-size: 0.85rem;
}
footer a {
color: var(--mesh-lavender);
text-decoration: none;
}
footer a:hover {
color: var(--mesh-text-light);
}
/* Responsive */
@media (max-width: 768px) {
nav { padding: 16px 20px; }
nav ul { gap: 20px; }
.hero { min-height: auto; padding: 80px 20px; }
.features { padding: 60px 0; }
.features-grid { padding: 0 20px; }
.showcase { padding: 60px 20px; }
.showcase-content { grid-template-columns: 1fr; gap: 32px; }
.stat-row { flex-direction: column; gap: 16px; }
.cta { padding: 60px 20px; }
}
</style>
</head>
<body>
<nav>
<a href="#" class="logo">Lumina</a>
<ul>
<li><a href="#">Canvas</a></li>
<li><a href="#">Palette</a></li>
<li><a href="#">Studio</a></li>
<li><a href="#">About</a></li>
</ul>
</nav>
<section class="hero">
<div class="hero-content">
<h1>Color in Motion</h1>
<p>Where light bends and hues dissolve into one another. A living canvas of vibrant gradients that shift, breathe, and flow.</p>
<a href="#" class="btn">Explore</a>
<a href="#" class="btn btn--ghost">Learn More</a>
</div>
</section>
<hr class="divider">
<section class="features">
<h2>Built for Brilliance</h2>
<p class="subtitle">Every pixel blends with purpose. Every transition tells a story.</p>
<div class="features-grid">
<div class="feature">
<div class="feature-icon feature-icon--violet">◆</div>
<h3>Fluid Color Fields</h3>
<p>Multi-point gradients that flow organically across the canvas, creating depth and dimension through pure color interaction.</p>
</div>
<div class="feature">
<div class="feature-icon feature-icon--teal">▸</div>
<h3>Glass Layers</h3>
<p>Frosted panels float above vivid backgrounds, letting color wash through while keeping content crisp and readable.</p>
</div>
<div class="feature">
<div class="feature-icon feature-icon--coral">○</div>
<h3>Living Surfaces</h3>
<p>Subtle animation brings the mesh to life. Colors drift and shift like light moving across water, always evolving.</p>
</div>
</div>
</section>
<section class="showcase">
<div class="showcase-content">
<div class="showcase-text">
<h2>Designed to Captivate</h2>
<p>Our mesh gradient approach creates immersive visual experiences that feel premium, modern, and alive. Each composition balances warmth and coolness for maximum impact.</p>
<a href="#" class="btn">Get Started</a>
</div>
<div class="showcase-panel">
<div class="stat-row">
<div class="stat">
<div class="stat-number">5M+</div>
<div class="stat-label">Color Points</div>
</div>
<div class="stat">
<div class="stat-number">360°</div>
<div class="stat-label">Hue Range</div>
</div>
<div class="stat">
<div class="stat-number">∞</div>
<div class="stat-label">Variations</div>
</div>
</div>
</div>
</div>
</section>
<hr class="divider">
<section class="cta">
<h2>Start Creating</h2>
<p>Step into a world where color has no boundaries. Build interfaces that feel alive with light and movement.</p>
<a href="#" class="btn">Launch Studio</a>
</section>
<footer>
<p>Lumina Studio — Crafted with flowing color and quiet precision</p>
</footer>
</body>
</html>