Polychrome is a graphic design aesthetic that originated in the early 2010s. It is characterized by liquid ink splatters, paint explosions, and colors merging and blurring together. The visual style is defined by colors flowing together in abstract designs over simple, clean backgrounds. The name references multi-colored expression – from the Greek “poly” (many) and “chroma” (color). Unlike aesthetics that constrain their palette, Polychrome celebrates the full chromatic spectrum rendered through organic, fluid media: ink dispersing in water, smoke formations, oil mixing, and paint detonations. The mood is simultaneously elegant and explosive – controlled chaos captured at the moment of maximum chromatic intensity.
| Role | Colors |
|---|---|
| Background | Pure white, off-white, light gray, or deep black |
| Primary chromatic accents | Full spectrum – vivid magenta, cyan, cobalt blue, emerald green, golden yellow, hot orange, deep violet |
| Secondary blending tones | Intermediate hues formed by color mixing – teal, coral, amber, lavender, chartreuse |
| Diffusion edges | Softened, desaturated versions of primary hues where colors fade into the background |
| Color | Hex | Usage |
|---|---|---|
| Pure White | #FFFFFF |
Primary light background |
| Soft White | #F7F7F7 |
Slightly softened light background |
| Light Mist | #EBEBEB |
Subtle background variation |
| Void Black | #0A0A0A |
Primary dark background variant |
| Deep Ink | #1A1A2E |
Dark background with blue undertone |
| Vivid Magenta | #E91E8C |
Primary warm-cool accent, ink blooms |
| Hot Pink | #FF2D7B |
High-energy accent, paint explosions |
| Deep Fuchsia | #C2185B |
Rich warm accent, concentrated ink |
| Cobalt Blue | #1565C0 |
Primary cool accent, water-dispersed ink |
| Electric Cyan | #00BCD4 |
Bright cool accent, liquid flows |
| Sky Blue | #42A5F5 |
Lighter cool accent, diffused edges |
| Emerald Green | #00C853 |
Primary green accent, vivid ink drops |
| Teal | #009688 |
Blue-green intermediate, color blending zones |
| Golden Yellow | #FFD600 |
Warm bright accent, paint splatter |
| Amber Orange | #FF8F00 |
Warm accent, explosive elements |
| Hot Orange | #FF5722 |
Aggressive warm accent |
| Deep Violet | #7B1FA2 |
Rich purple accent, smoke elements |
| Lavender | #AB47BC |
Soft purple, diffusion and blending |
| Coral | #FF7043 |
Warm intermediate, color merging |
| Chartreuse | #C6FF00 |
Yellow-green intermediate, vivid mixing |
:root {
/* Background tones */
--poly-white: #ffffff;
--poly-soft-white: #f7f7f7;
--poly-mist: #ebebeb;
--poly-light-gray: #d0d0d0;
--poly-medium-gray: #888888;
--poly-dark: #1a1a2e;
--poly-black: #0a0a0a;
/* Primary chromatic accents */
--poly-magenta: #e91e8c;
--poly-pink: #ff2d7b;
--poly-fuchsia: #c2185b;
--poly-cobalt: #1565c0;
--poly-cyan: #00bcd4;
--poly-sky: #42a5f5;
--poly-emerald: #00c853;
--poly-teal: #009688;
--poly-yellow: #ffd600;
--poly-amber: #ff8f00;
--poly-orange: #ff5722;
--poly-violet: #7b1fa2;
--poly-lavender: #ab47bc;
--poly-coral: #ff7043;
--poly-chartreuse: #c6ff00;
/* Translucent variants for layering and glow */
--poly-glow-magenta: rgba(233, 30, 140, 0.5);
--poly-glow-cyan: rgba(0, 188, 212, 0.5);
--poly-glow-cobalt: rgba(21, 101, 192, 0.5);
--poly-glow-emerald: rgba(0, 200, 83, 0.5);
--poly-glow-violet: rgba(123, 31, 162, 0.5);
--poly-glow-yellow: rgba(255, 214, 0, 0.5);
--poly-glow-orange: rgba(255, 87, 34, 0.4);
/* Mist / diffusion variants (very low opacity for soft edges) */
--poly-mist-magenta: rgba(233, 30, 140, 0.15);
--poly-mist-cyan: rgba(0, 188, 212, 0.15);
--poly-mist-cobalt: rgba(21, 101, 192, 0.12);
--poly-mist-emerald: rgba(0, 200, 83, 0.12);
--poly-mist-violet: rgba(123, 31, 162, 0.12);
--poly-mist-yellow: rgba(255, 214, 0, 0.12);
/* Functional mappings */
--poly-bg-primary: var(--poly-white);
--poly-bg-secondary: var(--poly-soft-white);
--poly-bg-surface: var(--poly-mist);
--poly-text-primary: var(--poly-dark);
--poly-text-secondary: #444444;
--poly-text-muted: var(--poly-medium-gray);
--poly-accent-1: var(--poly-magenta);
--poly-accent-2: var(--poly-cobalt);
--poly-accent-3: var(--poly-cyan);
--poly-border: var(--poly-light-gray);
}
Polychrome typography is clean, modern, and subordinate to the chromatic visual elements:
| Font | Style | Usage |
|---|---|---|
| Poppins | Geometric, rounded, modern | Body text, paragraphs, general content |
| Montserrat | Clean geometric sans | Headings, section titles, navigation |
| Raleway | Elegant thin-to-bold sans | Display headings, hero text |
| Quicksand | Rounded, friendly, modern | Subheadings, labels, captions |
| DM Sans | Clean, neutral, contemporary | Body text, UI elements |
| Josefin Sans | Geometric, elegant, light | Display text, artistic headings |
| Outfit | Modern, versatile sans | All-purpose: headings and body |
| Sora | Clean, geometric, slightly rounded | Headings, UI text |
| Work Sans | Neutral, professional, clean | Body text, descriptions |
| Space Grotesk | Modern grotesk with character | Display headings, accent text |
/* Import Polychrome fonts */
@import url('https://fonts.googleapis.com/css2?family=Raleway:wght@200;300;400;600&family=Montserrat:wght@300;400;500;600&family=Poppins:wght@300;400;500&family=Quicksand:wght@400;500;600&display=swap');
/* Hero / Display text with chromatic gradient */
h1 {
font-family: 'Raleway', 'Montserrat', sans-serif;
font-weight: 200;
font-size: clamp(2.5rem, 7vw, 5.5rem);
letter-spacing: 0.06em;
line-height: 1.1;
color: var(--poly-dark);
}
/* Gradient text variant for display */
.poly-gradient-text {
background: linear-gradient(
135deg,
var(--poly-magenta) 0%,
var(--poly-violet) 20%,
var(--poly-cobalt) 40%,
var(--poly-cyan) 60%,
var(--poly-emerald) 80%,
var(--poly-yellow) 100%
);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* Section headings */
h2 {
font-family: 'Montserrat', 'Outfit', sans-serif;
font-weight: 500;
font-size: clamp(1.5rem, 3.5vw, 2.5rem);
letter-spacing: 0.04em;
color: var(--poly-dark);
}
/* Subheadings with accent color */
h3 {
font-family: 'Montserrat', sans-serif;
font-weight: 400;
font-size: clamp(1.1rem, 2vw, 1.5rem);
letter-spacing: 0.03em;
color: var(--poly-cobalt);
}
/* Body text */
body {
font-family: 'Poppins', 'DM Sans', sans-serif;
font-weight: 300;
font-size: 1rem;
line-height: 1.75;
letter-spacing: 0.01em;
color: var(--poly-text-secondary);
}
/* Label / caption text */
.poly-label {
font-family: 'Quicksand', 'Poppins', sans-serif;
font-size: 0.8rem;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--poly-text-muted);
}
backdrop-filter/* Simulates ink dispersing in water using layered radial gradients */
.poly-ink-water {
position: relative;
background: var(--poly-white);
overflow: hidden;
}
.poly-ink-water::before {
content: '';
position: absolute;
inset: -10%;
background:
radial-gradient(ellipse 25% 35% at 20% 30%, var(--poly-glow-magenta) 0%, transparent 70%),
radial-gradient(ellipse 30% 25% at 70% 25%, var(--poly-glow-cobalt) 0%, transparent 65%),
radial-gradient(ellipse 20% 30% at 50% 70%, var(--poly-glow-cyan) 0%, transparent 60%),
radial-gradient(ellipse 22% 28% at 80% 65%, var(--poly-glow-violet) 0%, transparent 65%),
radial-gradient(ellipse 18% 22% at 30% 80%, var(--poly-glow-emerald) 0%, transparent 60%);
filter: blur(40px);
pointer-events: none;
z-index: 0;
}
/* Concentrated color burst radiating outward */
.poly-explosion {
position: absolute;
width: 400px;
height: 400px;
border-radius: 42% 56% 65% 38% / 55% 38% 62% 45%;
background:
radial-gradient(
ellipse at center,
var(--poly-magenta) 0%,
var(--poly-glow-magenta) 25%,
rgba(233, 30, 140, 0.1) 50%,
transparent 70%
);
filter: blur(20px);
mix-blend-mode: multiply;
pointer-events: none;
animation: poly-morph 10s ease-in-out infinite;
}
@keyframes poly-morph {
0% { border-radius: 42% 56% 65% 38% / 55% 38% 62% 45%; transform: scale(1) rotate(0deg); }
33% { border-radius: 55% 38% 42% 62% / 38% 65% 45% 56%; transform: scale(1.05) rotate(5deg); }
66% { border-radius: 38% 62% 56% 45% / 65% 42% 38% 55%; transform: scale(0.97) rotate(-3deg); }
100% { border-radius: 42% 56% 65% 38% / 55% 38% 62% 45%; transform: scale(1) rotate(0deg); }
}
/* Full-spectrum gradient text for hero headings */
.poly-chromatic-text {
background: linear-gradient(
90deg,
var(--poly-magenta) 0%,
var(--poly-orange) 15%,
var(--poly-yellow) 30%,
var(--poly-emerald) 45%,
var(--poly-cyan) 60%,
var(--poly-cobalt) 75%,
var(--poly-violet) 90%,
var(--poly-magenta) 100%
);
background-size: 200% 100%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* Animated variant -- colors slowly shift */
.poly-chromatic-text--animated {
animation: poly-hue-shift 8s linear infinite;
}
@keyframes poly-hue-shift {
0% { background-position: 0% 50%; }
100% { background-position: 200% 50%; }
}
/* Abstract floating color blob for decorative backgrounds */
.poly-blob {
position: absolute;
border-radius: 50%;
filter: blur(60px);
opacity: 0.5;
pointer-events: none;
mix-blend-mode: normal;
}
.poly-blob--magenta {
width: 300px;
height: 300px;
background: var(--poly-magenta);
}
.poly-blob--cobalt {
width: 250px;
height: 350px;
background: var(--poly-cobalt);
}
.poly-blob--cyan {
width: 280px;
height: 280px;
background: var(--poly-cyan);
}
.poly-blob--emerald {
width: 200px;
height: 260px;
background: var(--poly-emerald);
}
.poly-blob--violet {
width: 260px;
height: 300px;
background: var(--poly-violet);
}
/* On dark backgrounds, use screen blend mode for glowing effect */
.poly-blob--glow {
mix-blend-mode: screen;
opacity: 0.7;
}
/* Organic curved section divider using SVG-style clip-path */
.poly-flow-divider {
position: relative;
margin-top: -80px;
height: 120px;
background: var(--poly-soft-white);
clip-path: ellipse(55% 60% at 50% 100%);
}
/* Colored variant with gradient */
.poly-flow-divider--chromatic {
background: linear-gradient(
90deg,
var(--poly-mist-magenta),
var(--poly-mist-cobalt),
var(--poly-mist-cyan),
var(--poly-mist-emerald)
);
clip-path: ellipse(55% 70% at 50% 100%);
}
/* Frosted glass panel for content over colorful backgrounds */
.poly-glass {
background: rgba(255, 255, 255, 0.65);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.5);
border-radius: 16px;
padding: 2.5rem;
box-shadow:
0 8px 32px rgba(0, 0, 0, 0.06),
inset 0 1px 0 rgba(255, 255, 255, 0.8);
}
/* Dark variant for light-on-dark sections */
.poly-glass--dark {
background: rgba(26, 26, 46, 0.6);
border: 1px solid rgba(255, 255, 255, 0.08);
color: var(--poly-soft-white);
box-shadow:
0 8px 32px rgba(0, 0, 0, 0.3),
inset 0 1px 0 rgba(255, 255, 255, 0.05);
}
/* Ink splatter using layered box-shadows */
.poly-splatter {
position: absolute;
width: 12px;
height: 12px;
border-radius: 50%;
background: var(--poly-magenta);
box-shadow:
/* Core splash */
18px -10px 0 14px var(--poly-magenta),
-12px 18px 0 10px var(--poly-magenta),
30px 22px 0 6px var(--poly-magenta),
-24px -8px 0 12px var(--poly-magenta),
/* Satellite drops */
45px 12px 0 3px var(--poly-magenta),
-40px 30px 0 4px var(--poly-magenta),
15px 45px 0 2px var(--poly-magenta),
-18px -35px 0 5px var(--poly-magenta),
/* Fine spray */
55px -18px 0 1px var(--poly-magenta),
-50px 8px 0 2px var(--poly-magenta);
filter: blur(1px);
pointer-events: none;
}
/* Cobalt variant */
.poly-splatter--cobalt {
background: var(--poly-cobalt);
box-shadow:
14px -16px 0 10px var(--poly-cobalt),
-20px 12px 0 14px var(--poly-cobalt),
35px 8px 0 7px var(--poly-cobalt),
-10px 28px 0 5px var(--poly-cobalt),
25px -25px 0 4px var(--poly-cobalt),
-35px -12px 0 8px var(--poly-cobalt);
filter: blur(1px);
}
.poly-button {
display: inline-block;
padding: 0.75rem 2.2rem;
font-family: 'Montserrat', 'Poppins', sans-serif;
font-size: 0.85rem;
font-weight: 500;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--poly-white);
background: linear-gradient(
135deg,
var(--poly-magenta) 0%,
var(--poly-violet) 50%,
var(--poly-cobalt) 100%
);
background-size: 200% 200%;
border: none;
border-radius: 50px;
cursor: pointer;
box-shadow:
0 4px 15px rgba(233, 30, 140, 0.3),
0 2px 6px rgba(0, 0, 0, 0.1);
transition: all 0.3s ease;
}
.poly-button:hover {
background-position: 100% 100%;
box-shadow:
0 6px 25px rgba(123, 31, 162, 0.4),
0 3px 10px rgba(0, 0, 0, 0.12);
transform: translateY(-1px);
}
.poly-button:active {
transform: translateY(0);
box-shadow:
0 2px 8px rgba(233, 30, 140, 0.25),
0 1px 3px rgba(0, 0, 0, 0.1);
}
/* Outlined variant */
.poly-button--outline {
background: transparent;
border: 2px solid var(--poly-magenta);
color: var(--poly-magenta);
box-shadow: none;
}
.poly-button--outline:hover {
background: var(--poly-magenta);
color: var(--poly-white);
box-shadow: 0 4px 15px var(--poly-glow-magenta);
}
/* Two color blobs slowly merging and separating */
@keyframes poly-merge-a {
0% { transform: translate(0, 0) scale(1); }
50% { transform: translate(40px, 20px) scale(1.1); }
100% { transform: translate(0, 0) scale(1); }
}
@keyframes poly-merge-b {
0% { transform: translate(0, 0) scale(1); }
50% { transform: translate(-35px, -15px) scale(1.05); }
100% { transform: translate(0, 0) scale(1); }
}
.poly-merge-container {
position: relative;
width: 400px;
height: 400px;
}
.poly-merge-a {
position: absolute;
width: 200px;
height: 200px;
border-radius: 50%;
background: var(--poly-magenta);
filter: blur(30px);
opacity: 0.6;
top: 25%;
left: 20%;
animation: poly-merge-a 8s ease-in-out infinite;
}
.poly-merge-b {
position: absolute;
width: 220px;
height: 220px;
border-radius: 50%;
background: var(--poly-cobalt);
filter: blur(30px);
opacity: 0.6;
top: 30%;
left: 35%;
animation: poly-merge-b 8s ease-in-out infinite;
}
/* Slowly drifting colored smoke using animated pseudo-elements */
@keyframes poly-drift {
0% { transform: translateX(0) translateY(0) scale(1); opacity: 0.4; }
50% { transform: translateX(30px) translateY(-20px) scale(1.15); opacity: 0.6; }
100% { transform: translateX(0) translateY(0) scale(1); opacity: 0.4; }
}
.poly-smoke {
position: absolute;
width: 350px;
height: 250px;
border-radius: 50%;
filter: blur(50px);
pointer-events: none;
animation: poly-drift 12s ease-in-out infinite;
}
.poly-smoke--warm {
background: linear-gradient(
135deg,
var(--poly-glow-magenta),
var(--poly-glow-orange)
);
}
.poly-smoke--cool {
background: linear-gradient(
135deg,
var(--poly-glow-cobalt),
var(--poly-glow-cyan)
);
animation-delay: -4s;
animation-duration: 14s;
}
Physical Polychrome media and their web equivalents:
| Physical Material | Web Equivalent |
|---|---|
| Ink dispersing in water | Large radial-gradient blobs with heavy filter: blur() and organic border-radius deformation |
| Paint explosion | Multiple layered box-shadow clusters of varying size, plus radial gradients with mix-blend-mode: multiply |
| Colored smoke | Gradient-filled pseudo-elements with heavy blur (50-80px), animated with translateX/Y for slow drift |
| Oil swirl / marble | Multi-stop linear-gradient or conic-gradient with adjacent vivid hues and slight blur |
| Color blending / merge | Overlapping semi-transparent radial-gradient elements; where they overlap, colors naturally blend |
| Ink splatter drops | Small border-radius: 50% elements with extended box-shadow lists for satellite droplets |
| Watercolor wash | Low-opacity (0.1-0.2) radial-gradient washes with wide spread, applied as backgrounds |
| Liquid tendrils | SVG path elements with organic curves, or CSS clip-path with flowing polygon coordinates |
| Chromatic gradient field | Multi-color linear-gradient with 4+ stops spanning the full spectrum |
| Frosted glass over color | backdrop-filter: blur() on semi-transparent white panels placed over chromatic backgrounds |
The following define the Polychrome visual language and serve as design references:
| Aesthetic | Relationship to Polychrome |
|---|---|
| Hexatron | Related; shares abstract, non-figurative digital composition but uses geometric forms rather than organic fluids |
| Metalheart | Related; shares abstract composition and digital art focus but uses metallic surfaces and dark backgrounds rather than chromatic fluids |
| Fitness Splatter | Related; shares ink splatter and paint explosion motifs but applies them to athletic subjects with neon-on-black rather than abstract-on-white |
| Colorful Pop | Related; shares maximum color saturation and chromatic intensity but is illustrative and maximalist rather than abstract and minimal |
| Frutiger Aero | Related; shares clean, light backgrounds and organic forms but uses photorealistic nature imagery rather than abstract color fields |
| Glassmorphism | Related; shares frosted glass and translucent layering techniques, but lacks the vivid chromatic expression |
| Vaporwave | Tangentially related; both use vivid color but Vaporwave is nostalgic, digital, and grid-based while Polychrome is organic and fluid |
| Acid Design | Related; both celebrate vivid color and abstract forms but Acid Design uses distortion, warping, and typographic play |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Polychrome Page</title>
<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@200;300;400;600&family=Montserrat:wght@300;400;500;600&family=Poppins:wght@300;400;500&family=Quicksand:wght@400;500;600&display=swap" rel="stylesheet">
<style>
:root {
--poly-white: #ffffff;
--poly-soft-white: #f7f7f7;
--poly-mist: #ebebeb;
--poly-dark: #1a1a2e;
--poly-magenta: #e91e8c;
--poly-cobalt: #1565c0;
--poly-cyan: #00bcd4;
--poly-emerald: #00c853;
--poly-violet: #7b1fa2;
--poly-yellow: #ffd600;
--poly-orange: #ff5722;
--poly-glow-magenta: rgba(233, 30, 140, 0.5);
--poly-glow-cobalt: rgba(21, 101, 192, 0.5);
--poly-glow-cyan: rgba(0, 188, 212, 0.5);
--poly-glow-emerald: rgba(0, 200, 83, 0.5);
--poly-glow-violet: rgba(123, 31, 162, 0.5);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: var(--poly-white);
color: #444444;
font-family: 'Poppins', sans-serif;
font-weight: 300;
line-height: 1.75;
overflow-x: hidden;
}
/* Hero section with ink-in-water color effect */
.hero {
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
padding: 4rem 2rem;
position: relative;
overflow: hidden;
}
/* Ink-in-water color blobs */
.hero::before {
content: '';
position: absolute;
inset: -15%;
background:
radial-gradient(ellipse 28% 35% at 18% 35%, var(--poly-glow-magenta) 0%, transparent 70%),
radial-gradient(ellipse 32% 28% at 72% 22%, var(--poly-glow-cobalt) 0%, transparent 65%),
radial-gradient(ellipse 22% 32% at 50% 75%, var(--poly-glow-cyan) 0%, transparent 60%),
radial-gradient(ellipse 24% 30% at 82% 60%, var(--poly-glow-violet) 0%, transparent 65%),
radial-gradient(ellipse 20% 24% at 28% 80%, var(--poly-glow-emerald) 0%, transparent 60%);
filter: blur(45px);
pointer-events: none;
z-index: 0;
}
.hero h1 {
font-family: 'Raleway', sans-serif;
font-weight: 200;
font-size: clamp(2.5rem, 8vw, 6rem);
letter-spacing: 0.06em;
color: var(--poly-dark);
position: relative;
z-index: 1;
}
/* Chromatic gradient text on hero */
.hero h1 span {
background: linear-gradient(
135deg,
var(--poly-magenta) 0%,
var(--poly-violet) 25%,
var(--poly-cobalt) 50%,
var(--poly-cyan) 75%,
var(--poly-emerald) 100%
);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
font-weight: 300;
}
.hero p {
margin-top: 1.5rem;
font-size: 1.05rem;
color: #777777;
letter-spacing: 0.08em;
font-family: 'Quicksand', sans-serif;
font-weight: 500;
position: relative;
z-index: 1;
}
/* Soft gradient divider */
.gradient-divider {
height: 4px;
width: 120px;
margin: 2.5rem auto;
border: none;
border-radius: 2px;
background: linear-gradient(
90deg,
var(--poly-magenta),
var(--poly-cobalt),
var(--poly-cyan),
var(--poly-emerald)
);
position: relative;
z-index: 1;
}
section {
max-width: 800px;
margin: 0 auto;
padding: 4rem 2rem;
position: relative;
z-index: 1;
}
section h2 {
font-family: 'Montserrat', sans-serif;
font-weight: 500;
font-size: clamp(1.5rem, 3.5vw, 2.2rem);
letter-spacing: 0.04em;
color: var(--poly-dark);
margin-bottom: 1.5rem;
}
/* Glass-panel card */
.poly-card {
background: rgba(255, 255, 255, 0.65);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.5);
border-radius: 16px;
padding: 2rem;
margin: 1.5rem 0;
box-shadow:
0 8px 32px rgba(0, 0, 0, 0.05),
inset 0 1px 0 rgba(255, 255, 255, 0.8);
}
.poly-card h3 {
font-family: 'Montserrat', sans-serif;
font-weight: 400;
font-size: 1.2rem;
color: var(--poly-cobalt);
margin-bottom: 0.5rem;
}
/* Polychrome button */
.poly-button {
display: inline-block;
padding: 0.75rem 2.2rem;
font-family: 'Montserrat', sans-serif;
font-size: 0.85rem;
font-weight: 500;
letter-spacing: 0.1em;
text-transform: uppercase;
text-decoration: none;
color: var(--poly-white);
background: linear-gradient(135deg, var(--poly-magenta), var(--poly-violet), var(--poly-cobalt));
background-size: 200% 200%;
border: none;
border-radius: 50px;
cursor: pointer;
box-shadow: 0 4px 15px rgba(233, 30, 140, 0.25);
transition: all 0.3s ease;
}
.poly-button:hover {
background-position: 100% 100%;
box-shadow: 0 6px 25px rgba(123, 31, 162, 0.35);
transform: translateY(-1px);
}
.poly-label {
font-family: 'Quicksand', sans-serif;
font-size: 0.75rem;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: #999999;
}
a {
color: var(--poly-cobalt);
text-decoration: none;
border-bottom: 1px solid rgba(21, 101, 192, 0.2);
transition: color 0.2s, border-color 0.2s;
}
a:hover {
color: var(--poly-magenta);
border-bottom-color: rgba(233, 30, 140, 0.3);
}
/* Decorative floating blobs */
.blob {
position: fixed;
border-radius: 50%;
filter: blur(60px);
opacity: 0.25;
pointer-events: none;
z-index: 0;
}
.blob--1 {
width: 300px; height: 300px;
background: var(--poly-magenta);
top: 60%; left: -5%;
}
.blob--2 {
width: 250px; height: 250px;
background: var(--poly-cyan);
top: 30%; right: -8%;
}
.blob--3 {
width: 200px; height: 280px;
background: var(--poly-violet);
bottom: 10%; right: 20%;
}
</style>
</head>
<body>
<!-- Decorative background blobs -->
<div class="blob blob--1"></div>
<div class="blob blob--2"></div>
<div class="blob blob--3"></div>
<div class="hero">
<h1>Colors in <span>Motion</span></h1>
<hr class="gradient-divider">
<p>Where chromatic expression meets fluid form</p>
</div>
<section>
<h2>Flowing Abstractions</h2>
<div class="poly-card">
<span class="poly-label">Chromatic expression</span>
<h3>Liquid Color</h3>
<p>Content rendered in the Polychrome aesthetic. Vivid ink-in-water color fields flow over a clean white background, with frosted glass panels, organic forms, and the full chromatic spectrum on display.</p>
<br>
<a href="#" class="poly-button">Explore</a>
</div>
</section>
</body>
</html>