website_designs

Chromatic Blur Design Reference

Overview

Chromatic Blur is a dreamy, atmospheric design aesthetic built on out-of-focus color fields, soft gradient transitions, and intentionally defocused palettes. Inspired by the optical phenomenon of chromatic aberration – where a camera lens fails to converge all wavelengths of light to a single focal point, producing separated color fringes and beautifully blurred color halos – Chromatic Blur translates this photographic artifact into a deliberate digital design language. The result is interfaces that feel like looking through frosted glass at a sunset: warm, immersive, and gently disorienting.

Where most design systems chase sharpness and pixel-perfect clarity, Chromatic Blur embraces the opposite. It treats defocus as a feature, not a flaw. Large, overlapping color fields with heavy Gaussian blur create ambient backgrounds that shift and breathe. Colors bleed into one another without hard boundaries, producing painterly transitions that feel organic and alive. The aesthetic draws from bokeh photography (the quality of blur in out-of-focus areas), color field painting (think Mark Rothko’s luminous rectangles of pure color), and the smoky, ambient gradient trends that have emerged in web design since 2024, where gradients function as atmospheric lighting rather than decorative stripes.

The Chromatic Blur palette favors soft, desaturated tones – lavenders, peach, powder blue, sage – punctuated by warmer focal points of coral, amber, or rose. Typography sits atop these diffused color beds with careful contrast management, often using semi-transparent background chips or subtle text shadows to remain legible against the shifting hues beneath. Layouts are spacious and unhurried, with generous whitespace that lets the color fields expand and merge. Cards, buttons, and UI elements use frosted-glass effects (backdrop-filter blur) to maintain the defocused language at every layer. The overall mood is meditative, ethereal, and sensory – a visual whisper rather than a shout.


Visual Characteristics

Core Design Traits

Design Principles


Color Palette

Chromatic Blur Core Palette

Colors drawn from defocused photography, bokeh light studies, and color field painting. The palette balances soft, chalky pastels for ambient fields with warmer saturated tones for focal accents, all designed to look beautiful when blurred and overlapped.

Swatch Hex Role / Usage
Cloud White #F7F5F2 Page background, lightest base surface
Warm Mist #EDE8E3 Secondary background, card surfaces
Lavender Haze #C8B8E8 Primary blur field, decorative gradient stop
Powder Blush #E8C4C8 Warm blur field, secondary gradient stop
Peach Glow #F0CDB5 Warm accent blur field, highlight areas
Sky Wash #B5CCE0 Cool blur field, balancing gradient stop
Sage Mist #B8CCBA Neutral-cool blur field, secondary accents
Coral Focus #E07A6B Primary CTA, focal accent, active states
Rose Lens #D4728A Secondary accent, hover states, badges
Amber Flare #D4A24E Tertiary accent, warm highlights, alerts
Soft Indigo #7B6FA0 Primary text on light backgrounds
Charcoal Fog #4A4550 Headings, high-contrast text
Muted Plum #8A7F96 Secondary text, descriptions, captions
Faded Dusk #A899B8 Tertiary text, placeholders, disabled states
Glass Frost rgba(255,255,255,0.55) Frosted glass card background

CSS Custom Properties

:root {
  /* Backgrounds */
  --cb-bg-primary: #f7f5f2;
  --cb-bg-secondary: #ede8e3;
  --cb-bg-glass: rgba(255, 255, 255, 0.55);
  --cb-bg-glass-border: rgba(255, 255, 255, 0.7);

  /* Blur color fields */
  --cb-lavender: #c8b8e8;
  --cb-blush: #e8c4c8;
  --cb-peach: #f0cdb5;
  --cb-sky: #b5cce0;
  --cb-sage: #b8ccba;

  /* Accent / focal colors */
  --cb-coral: #e07a6b;
  --cb-rose: #d4728a;
  --cb-amber: #d4a24e;

  /* Text */
  --cb-text-primary: #4a4550;
  --cb-text-secondary: #8a7f96;
  --cb-text-muted: #a899b8;
  --cb-text-body: #7b6fa0;

  /* Blur values */
  --cb-blur-sm: 20px;
  --cb-blur-md: 40px;
  --cb-blur-lg: 80px;
  --cb-blur-xl: 120px;
  --cb-glass-blur: 16px;

  /* Signature gradients (pre-blurred via radial-gradient) */
  --cb-gradient-warm: radial-gradient(circle at 30% 40%, rgba(232,196,200,0.6), rgba(240,205,181,0.4), transparent 70%);
  --cb-gradient-cool: radial-gradient(circle at 70% 60%, rgba(181,204,224,0.5), rgba(200,184,232,0.4), transparent 70%);
  --cb-gradient-full: radial-gradient(circle at 25% 35%, rgba(200,184,232,0.5) 0%, transparent 50%),
                       radial-gradient(circle at 75% 25%, rgba(232,196,200,0.4) 0%, transparent 50%),
                       radial-gradient(circle at 50% 75%, rgba(181,204,224,0.4) 0%, transparent 50%);

  /* Radii */
  --cb-radius-sm: 12px;
  --cb-radius-md: 20px;
  --cb-radius-lg: 32px;
  --cb-radius-pill: 9999px;
}

Typography

Typeface Characteristics

Chromatic Blur typography is:

Font Style Best For
DM Sans Geometric, low contrast, clean Headlines, hero text – soft geometry matches blur fields
Nunito Rounded terminals, friendly Body text, UI elements – warmth without whimsy
Outfit Geometric, contemporary, variable Headlines, display text, metrics
Source Sans 3 Humanist, highly readable Body text, long-form content
Figtree Geometric, open, friendly Body text, approachable interfaces
Josefin Sans Elegant, thin, geometric Display headlines, hero statements
Karla Grotesque, slightly quirky Body text, captions, secondary content
Manrope Semi-condensed, modern Navigation, labels, UI components

Font Pairing Suggestions

Heading Font Body Font Character
DM Sans (600) Nunito (400) Clean and soft, warm and rounded
Outfit (600) Source Sans 3 (400) Contemporary display, excellent readability
Josefin Sans (300) Figtree (400) Elegant thin headlines, friendly body
DM Sans (700) Karla (400) Bold geometric headers, relaxed body text
Manrope (600) Nunito (400) Compact navigation, warm content

Typography CSS Example

@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600;700&family=Nunito:wght@400;500;600&display=swap');

h1, h2, h3, h4, h5, h6 {
  font-family: 'DM Sans', sans-serif;
  font-weight: 600;
  color: var(--cb-text-primary);
  line-height: 1.2;
  letter-spacing: -0.01em;
}

.cb-display {
  font-family: 'DM Sans', sans-serif;
  font-size: clamp(2.5rem, 5vw, 4.5rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.1;
  color: var(--cb-text-primary);
}

body {
  font-family: 'Nunito', sans-serif;
  font-weight: 400;
  font-size: 1rem;
  line-height: 1.75;
  color: var(--cb-text-body);
}

.cb-label {
  font-family: 'DM Sans', sans-serif;
  font-weight: 500;
  font-size: 0.8rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--cb-text-muted);
}

.cb-caption {
  font-family: 'Nunito', sans-serif;
  font-weight: 400;
  font-size: 0.85rem;
  color: var(--cb-text-secondary);
}

Layout Principles


CSS / Design Techniques

Chromatic Blur Background

.cb-background {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
  background: var(--cb-bg-primary);
  overflow: hidden;
}

.cb-background::before,
.cb-background::after {
  content: '';
  position: absolute;
  border-radius: 50%;
  filter: blur(var(--cb-blur-xl));
  animation: cbDrift 25s ease-in-out infinite alternate;
}

.cb-background::before {
  width: 60vw;
  height: 60vw;
  top: -10%;
  left: -10%;
  background: radial-gradient(circle, rgba(200,184,232,0.5) 0%, rgba(232,196,200,0.3) 50%, transparent 70%);
}

.cb-background::after {
  width: 50vw;
  height: 50vw;
  bottom: -15%;
  right: -10%;
  background: radial-gradient(circle, rgba(181,204,224,0.45) 0%, rgba(240,205,181,0.3) 50%, transparent 70%);
  animation-delay: -12s;
  animation-direction: alternate-reverse;
}

@keyframes cbDrift {
  0% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(3%, -2%) scale(1.05); }
  66% { transform: translate(-2%, 3%) scale(0.97); }
  100% { transform: translate(1%, -1%) scale(1.02); }
}

/* Additional blur blobs as child elements */
.cb-blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(var(--cb-blur-lg));
  pointer-events: none;
  animation: cbDrift 30s ease-in-out infinite alternate;
}

.cb-blob--lavender {
  width: 40vw;
  height: 40vw;
  background: rgba(200, 184, 232, 0.35);
}

.cb-blob--blush {
  width: 35vw;
  height: 35vw;
  background: rgba(232, 196, 200, 0.3);
}

.cb-blob--sky {
  width: 45vw;
  height: 45vw;
  background: rgba(181, 204, 224, 0.3);
}

/* Grain overlay for tactile warmth */
.cb-grain {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  pointer-events: none;
  opacity: 0.04;
  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)'/%3E%3C/svg%3E");
  background-repeat: repeat;
  background-size: 256px 256px;
}

Card

.cb-card {
  background: var(--cb-bg-glass);
  backdrop-filter: blur(var(--cb-glass-blur));
  -webkit-backdrop-filter: blur(var(--cb-glass-blur));
  border: 1px solid var(--cb-bg-glass-border);
  border-radius: var(--cb-radius-md);
  padding: 32px;
  transition: transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;
  box-shadow: 0 8px 32px rgba(74, 69, 80, 0.06);
}

.cb-card:hover {
  transform: translateY(-4px);
  background: rgba(255, 255, 255, 0.65);
  box-shadow: 0 16px 48px rgba(74, 69, 80, 0.1);
}

.cb-card h3 {
  font-size: 1.15rem;
  margin-bottom: 0.75rem;
  color: var(--cb-text-primary);
}

.cb-card p {
  font-size: 0.95rem;
  line-height: 1.65;
  color: var(--cb-text-body);
}

/* Card with colored blur accent */
.cb-card--accent {
  position: relative;
  overflow: hidden;
}

.cb-card--accent::before {
  content: '';
  position: absolute;
  width: 120px;
  height: 120px;
  top: -30px;
  right: -30px;
  border-radius: 50%;
  background: rgba(200, 184, 232, 0.3);
  filter: blur(30px);
  pointer-events: none;
}

Button

.cb-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: var(--cb-coral);
  color: #ffffff;
  border: none;
  border-radius: var(--cb-radius-pill);
  padding: 14px 36px;
  font-family: 'DM Sans', sans-serif;
  font-weight: 600;
  font-size: 0.95rem;
  cursor: pointer;
  text-decoration: none;
  transition: transform 0.2s ease, box-shadow 0.3s ease, filter 0.3s ease;
  box-shadow: 0 4px 20px rgba(224, 122, 107, 0.25);
}

.cb-button:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 30px rgba(224, 122, 107, 0.35);
  filter: blur(0px) brightness(1.05);
}

.cb-button:active {
  transform: translateY(0px);
  box-shadow: 0 2px 12px rgba(224, 122, 107, 0.2);
}

/* Ghost / glass variant */
.cb-button--ghost {
  background: var(--cb-bg-glass);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(200, 184, 232, 0.4);
  color: var(--cb-text-primary);
  box-shadow: none;
}

.cb-button--ghost:hover {
  background: rgba(255, 255, 255, 0.7);
  border-color: rgba(200, 184, 232, 0.6);
  box-shadow: 0 8px 24px rgba(74, 69, 80, 0.08);
}

/* Soft secondary */
.cb-button--soft {
  background: rgba(200, 184, 232, 0.2);
  color: var(--cb-text-primary);
  box-shadow: none;
}

.cb-button--soft:hover {
  background: rgba(200, 184, 232, 0.35);
}
.cb-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 1100px;
  margin: 0 auto;
  padding: 20px 40px;
  position: relative;
  z-index: 10;
}

.cb-nav--sticky {
  position: sticky;
  top: 0;
  background: rgba(247, 245, 242, 0.7);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom: 1px solid rgba(200, 184, 232, 0.15);
  z-index: 100;
  max-width: 100%;
  padding: 16px 40px;
}

.cb-nav__logo {
  font-family: 'DM Sans', sans-serif;
  font-weight: 700;
  font-size: 1.3rem;
  color: var(--cb-text-primary);
  text-decoration: none;
  letter-spacing: -0.02em;
}

.cb-nav__links {
  display: flex;
  gap: 32px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.cb-nav__links a {
  font-family: 'Nunito', sans-serif;
  font-weight: 500;
  font-size: 0.9rem;
  color: var(--cb-text-secondary);
  text-decoration: none;
  transition: color 0.2s ease;
  position: relative;
}

.cb-nav__links a:hover {
  color: var(--cb-text-primary);
}

.cb-nav__links a::after {
  content: '';
  position: absolute;
  bottom: -4px;
  left: 50%;
  width: 0;
  height: 2px;
  background: var(--cb-coral);
  border-radius: 1px;
  transition: width 0.2s ease, left 0.2s ease;
}

.cb-nav__links a:hover::after {
  width: 100%;
  left: 0;
}

Hero Section

.cb-hero {
  min-height: 85vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 100px 40px;
  position: relative;
  z-index: 2;
}

.cb-hero__inner {
  max-width: 720px;
  margin: 0 auto;
}

.cb-hero h1 {
  font-size: clamp(2.5rem, 6vw, 4.5rem);
  font-weight: 700;
  margin-bottom: 1.5rem;
  letter-spacing: -0.03em;
  color: var(--cb-text-primary);
  line-height: 1.08;
}

.cb-hero p {
  font-size: 1.2rem;
  color: var(--cb-text-body);
  margin-bottom: 2.5rem;
  max-width: 560px;
  margin-left: auto;
  margin-right: auto;
  line-height: 1.8;
}

/* Chromatic text effect -- color-separated shadow */
.cb-hero__chromatic {
  position: relative;
  display: inline-block;
}

.cb-hero__chromatic::before,
.cb-hero__chromatic::after {
  content: attr(data-text);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.cb-hero__chromatic::before {
  color: rgba(200, 184, 232, 0.5);
  transform: translate(-3px, -2px);
  filter: blur(2px);
}

.cb-hero__chromatic::after {
  color: rgba(232, 196, 200, 0.5);
  transform: translate(3px, 2px);
  filter: blur(2px);
}

Bokeh Decorative Elements

.cb-bokeh {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  opacity: 0.4;
  animation: cbFloat 20s ease-in-out infinite;
}

.cb-bokeh--sm {
  width: 60px;
  height: 60px;
  filter: blur(15px);
}

.cb-bokeh--md {
  width: 120px;
  height: 120px;
  filter: blur(30px);
}

.cb-bokeh--lg {
  width: 200px;
  height: 200px;
  filter: blur(50px);
}

.cb-bokeh--lavender { background: var(--cb-lavender); }
.cb-bokeh--blush { background: var(--cb-blush); }
.cb-bokeh--sky { background: var(--cb-sky); }
.cb-bokeh--peach { background: var(--cb-peach); }

@keyframes cbFloat {
  0%, 100% { transform: translate(0, 0) scale(1); }
  25% { transform: translate(10px, -15px) scale(1.05); }
  50% { transform: translate(-5px, 10px) scale(0.95); }
  75% { transform: translate(8px, 5px) scale(1.02); }
}

Section Container

.cb-section {
  padding: 100px 40px;
  max-width: 1100px;
  margin: 0 auto;
  position: relative;
  z-index: 2;
}

.cb-section__header {
  text-align: center;
  margin-bottom: 60px;
}

.cb-section__header h2 {
  font-size: clamp(1.75rem, 3.5vw, 2.5rem);
  margin-bottom: 1rem;
  color: var(--cb-text-primary);
}

.cb-section__header p {
  font-size: 1.05rem;
  color: var(--cb-text-secondary);
  max-width: 520px;
  margin: 0 auto;
}

.cb-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 28px;
}

/* Frosted divider between sections */
.cb-divider {
  width: 80px;
  height: 3px;
  background: linear-gradient(90deg, var(--cb-lavender), var(--cb-blush), var(--cb-sky));
  border: none;
  border-radius: 2px;
  margin: 0 auto;
  opacity: 0.5;
  filter: blur(1px);
}

CTA / Call-to-Action Block

.cb-cta {
  text-align: center;
  padding: 100px 40px;
  position: relative;
  z-index: 2;
}

.cb-cta__inner {
  background: var(--cb-bg-glass);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  border: 1px solid var(--cb-bg-glass-border);
  border-radius: var(--cb-radius-lg);
  padding: 72px 48px;
  max-width: 780px;
  margin: 0 auto;
  position: relative;
  overflow: hidden;
}

/* Ambient color blob inside the CTA */
.cb-cta__inner::before {
  content: '';
  position: absolute;
  width: 250px;
  height: 250px;
  top: -60px;
  right: -60px;
  background: rgba(232, 196, 200, 0.3);
  border-radius: 50%;
  filter: blur(60px);
  pointer-events: none;
}

.cb-cta__inner::after {
  content: '';
  position: absolute;
  width: 200px;
  height: 200px;
  bottom: -50px;
  left: -50px;
  background: rgba(181, 204, 224, 0.25);
  border-radius: 50%;
  filter: blur(50px);
  pointer-events: none;
}

.cb-cta h2 {
  font-size: 2rem;
  margin-bottom: 1rem;
  position: relative;
  z-index: 1;
}

.cb-cta p {
  margin-bottom: 2rem;
  position: relative;
  z-index: 1;
}

Design Do’s and Don’ts

Do

Don’t


Aesthetic Relationship to Chromatic Blur
Aurora Gradient Shares flowing gradient language but uses vivid, saturated aurora-spectrum colors on dark backgrounds; Chromatic Blur is lighter and softer
Glassmorphism Core technique overlap; both use frosted glass and backdrop-filter blur, but Chromatic Blur builds entire environments from blur, not just UI panels
Frosted Touch Close sibling; both use translucent glass surfaces, but Chromatic Blur foregrounds the color fields themselves as the primary visual element
Danish Pastel Shares the muted, soft pastel palette but with flat, solid color blocks rather than defocused gradients
Dreamcore Both pursue dreamy, surreal atmospheres, but Dreamcore leans nostalgic and liminal while Chromatic Blur stays polished and contemporary
Flat Design Opposite approach; Flat Design eliminates all blur, gradient, and depth in favor of crisp, solid surfaces
Acid Design Both use blur and color overlap, but Acid Design pushes toward chaotic, neon intensity while Chromatic Blur maintains soft restraint
Dopamine Design Shares color richness but through bold, saturated, sharp-edged maximalism rather than diffused, muted fields
Bright Tertiaries Adjacent palette territory with tertiary color mixing, but rendered as solid fills rather than defocused fields
Minimalism Chromatic Blur borrows minimalist layout restraint but adds atmospheric color depth that pure minimalism avoids

Quick-Start HTML Template

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Chromatic Blur Page</title>
  <link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600;700&family=Nunito:wght@400;500;600&display=swap" rel="stylesheet">
  <style>
    :root {
      --cb-bg-primary: #f7f5f2;
      --cb-bg-secondary: #ede8e3;
      --cb-bg-glass: rgba(255, 255, 255, 0.55);
      --cb-bg-glass-border: rgba(255, 255, 255, 0.7);

      --cb-lavender: #c8b8e8;
      --cb-blush: #e8c4c8;
      --cb-peach: #f0cdb5;
      --cb-sky: #b5cce0;
      --cb-sage: #b8ccba;

      --cb-coral: #e07a6b;
      --cb-rose: #d4728a;
      --cb-amber: #d4a24e;

      --cb-text-primary: #4a4550;
      --cb-text-secondary: #8a7f96;
      --cb-text-muted: #a899b8;
      --cb-text-body: #7b6fa0;

      --cb-blur-sm: 20px;
      --cb-blur-md: 40px;
      --cb-blur-lg: 80px;
      --cb-blur-xl: 120px;
      --cb-glass-blur: 16px;

      --cb-radius-sm: 12px;
      --cb-radius-md: 20px;
      --cb-radius-lg: 32px;
      --cb-radius-pill: 9999px;
    }

    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    body {
      background: var(--cb-bg-primary);
      color: var(--cb-text-body);
      font-family: 'Nunito', sans-serif;
      font-weight: 400;
      line-height: 1.75;
      overflow-x: hidden;
      min-height: 100vh;
    }

    h1, h2, h3, h4 {
      font-family: 'DM Sans', sans-serif;
      font-weight: 600;
      color: var(--cb-text-primary);
      line-height: 1.2;
      letter-spacing: -0.01em;
    }

    /* ===== Ambient Background ===== */
    .cb-background {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      z-index: 0;
      pointer-events: none;
      overflow: hidden;
    }

    .cb-background .blob {
      position: absolute;
      border-radius: 50%;
    }

    .blob--1 {
      width: 55vw;
      height: 55vw;
      top: -15%;
      left: -10%;
      background: radial-gradient(circle, rgba(200,184,232,0.45) 0%, transparent 70%);
      filter: blur(100px);
      animation: drift1 28s ease-in-out infinite alternate;
    }

    .blob--2 {
      width: 45vw;
      height: 45vw;
      top: 10%;
      right: -15%;
      background: radial-gradient(circle, rgba(232,196,200,0.4) 0%, transparent 70%);
      filter: blur(90px);
      animation: drift2 24s ease-in-out infinite alternate;
    }

    .blob--3 {
      width: 50vw;
      height: 50vw;
      bottom: -20%;
      left: 20%;
      background: radial-gradient(circle, rgba(181,204,224,0.4) 0%, transparent 70%);
      filter: blur(110px);
      animation: drift3 32s ease-in-out infinite alternate;
    }

    .blob--4 {
      width: 30vw;
      height: 30vw;
      top: 45%;
      left: 55%;
      background: radial-gradient(circle, rgba(240,205,181,0.3) 0%, transparent 70%);
      filter: blur(80px);
      animation: drift1 20s ease-in-out infinite alternate-reverse;
    }

    .blob--5 {
      width: 25vw;
      height: 25vw;
      bottom: 10%;
      right: 10%;
      background: radial-gradient(circle, rgba(184,204,186,0.25) 0%, transparent 70%);
      filter: blur(70px);
      animation: drift2 26s ease-in-out infinite alternate-reverse;
    }

    @keyframes drift1 {
      0% { transform: translate(0, 0) scale(1); }
      50% { transform: translate(4%, -3%) scale(1.06); }
      100% { transform: translate(-2%, 2%) scale(0.97); }
    }

    @keyframes drift2 {
      0% { transform: translate(0, 0) scale(1); }
      50% { transform: translate(-3%, 4%) scale(0.95); }
      100% { transform: translate(2%, -1%) scale(1.04); }
    }

    @keyframes drift3 {
      0% { transform: translate(0, 0) scale(1); }
      50% { transform: translate(2%, 3%) scale(1.03); }
      100% { transform: translate(-3%, -2%) scale(0.98); }
    }

    /* Grain overlay */
    .cb-grain {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      z-index: 1;
      pointer-events: none;
      opacity: 0.035;
      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)'/%3E%3C/svg%3E");
      background-repeat: repeat;
      background-size: 256px 256px;
    }

    /* ===== Content Layer ===== */
    .content {
      position: relative;
      z-index: 2;
    }

    /* ===== Navigation ===== */
    nav {
      display: flex;
      align-items: center;
      justify-content: space-between;
      max-width: 1100px;
      margin: 0 auto;
      padding: 24px 40px;
    }

    nav .logo {
      font-family: 'DM Sans', sans-serif;
      font-weight: 700;
      font-size: 1.35rem;
      color: var(--cb-text-primary);
      text-decoration: none;
      letter-spacing: -0.02em;
    }

    nav ul {
      display: flex;
      gap: 32px;
      list-style: none;
    }

    nav ul a {
      font-family: 'Nunito', sans-serif;
      font-weight: 500;
      font-size: 0.9rem;
      color: var(--cb-text-secondary);
      text-decoration: none;
      transition: color 0.2s ease;
    }

    nav ul a:hover {
      color: var(--cb-text-primary);
    }

    /* ===== Hero ===== */
    .hero {
      min-height: 85vh;
      display: flex;
      align-items: center;
      justify-content: center;
      text-align: center;
      padding: 80px 40px;
      position: relative;
    }

    .hero__inner {
      max-width: 680px;
    }

    .hero .overline {
      font-family: 'DM Sans', sans-serif;
      font-size: 0.8rem;
      font-weight: 500;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--cb-text-muted);
      margin-bottom: 1.25rem;
      display: block;
    }

    .hero h1 {
      font-size: clamp(2.5rem, 6vw, 4.2rem);
      font-weight: 700;
      letter-spacing: -0.03em;
      line-height: 1.08;
      margin-bottom: 1.5rem;
      color: var(--cb-text-primary);
    }

    /* Chromatic text shift effect */
    .chromatic-text {
      position: relative;
      display: inline;
    }

    .chromatic-text::before {
      content: attr(data-text);
      position: absolute;
      top: 0;
      left: -3px;
      color: rgba(200, 184, 232, 0.4);
      filter: blur(2px);
      pointer-events: none;
      z-index: -1;
    }

    .chromatic-text::after {
      content: attr(data-text);
      position: absolute;
      top: 0;
      left: 3px;
      color: rgba(232, 196, 200, 0.4);
      filter: blur(2px);
      pointer-events: none;
      z-index: -1;
    }

    .hero p {
      font-size: 1.15rem;
      margin-bottom: 2.5rem;
      color: var(--cb-text-body);
      max-width: 520px;
      margin-left: auto;
      margin-right: auto;
      line-height: 1.8;
    }

    .hero__actions {
      display: flex;
      gap: 16px;
      justify-content: center;
      flex-wrap: wrap;
    }

    /* ===== Buttons ===== */
    .btn {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      border: none;
      border-radius: var(--cb-radius-pill);
      padding: 14px 36px;
      font-family: 'DM Sans', sans-serif;
      font-weight: 600;
      font-size: 0.95rem;
      cursor: pointer;
      text-decoration: none;
      transition: transform 0.2s ease, box-shadow 0.3s ease;
    }

    .btn--primary {
      background: var(--cb-coral);
      color: #ffffff;
      box-shadow: 0 4px 20px rgba(224, 122, 107, 0.25);
    }

    .btn--primary:hover {
      transform: translateY(-2px);
      box-shadow: 0 8px 30px rgba(224, 122, 107, 0.35);
    }

    .btn--ghost {
      background: var(--cb-bg-glass);
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      border: 1px solid rgba(200, 184, 232, 0.35);
      color: var(--cb-text-primary);
    }

    .btn--ghost:hover {
      background: rgba(255, 255, 255, 0.7);
      transform: translateY(-2px);
      box-shadow: 0 8px 24px rgba(74, 69, 80, 0.08);
    }

    /* ===== Features Section ===== */
    .features {
      padding: 100px 40px;
      max-width: 1100px;
      margin: 0 auto;
    }

    .features__header {
      text-align: center;
      margin-bottom: 60px;
    }

    .features__header h2 {
      font-size: clamp(1.75rem, 3.5vw, 2.5rem);
      margin-bottom: 0.75rem;
    }

    .features__header p {
      font-size: 1.05rem;
      color: var(--cb-text-secondary);
      max-width: 480px;
      margin: 0 auto;
    }

    .features__grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
      gap: 28px;
    }

    .feature-card {
      background: var(--cb-bg-glass);
      backdrop-filter: blur(var(--cb-glass-blur));
      -webkit-backdrop-filter: blur(var(--cb-glass-blur));
      border: 1px solid var(--cb-bg-glass-border);
      border-radius: var(--cb-radius-md);
      padding: 36px;
      transition: transform 0.3s ease, box-shadow 0.3s ease;
      position: relative;
      overflow: hidden;
    }

    .feature-card:hover {
      transform: translateY(-4px);
      box-shadow: 0 16px 48px rgba(74, 69, 80, 0.1);
    }

    /* Ambient color accent per card */
    .feature-card::after {
      content: '';
      position: absolute;
      width: 100px;
      height: 100px;
      border-radius: 50%;
      top: -25px;
      right: -25px;
      filter: blur(35px);
      pointer-events: none;
      opacity: 0.4;
    }

    .feature-card:nth-child(1)::after { background: var(--cb-lavender); }
    .feature-card:nth-child(2)::after { background: var(--cb-blush); }
    .feature-card:nth-child(3)::after { background: var(--cb-sky); }

    .feature-card__icon {
      width: 48px;
      height: 48px;
      border-radius: var(--cb-radius-sm);
      display: flex;
      align-items: center;
      justify-content: center;
      margin-bottom: 20px;
    }

    .feature-card h3 {
      font-size: 1.15rem;
      margin-bottom: 0.75rem;
    }

    .feature-card p {
      font-size: 0.95rem;
      line-height: 1.65;
    }

    /* ===== Showcase / Metrics ===== */
    .showcase {
      padding: 80px 40px;
      max-width: 1100px;
      margin: 0 auto;
    }

    .showcase__grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 28px;
      text-align: center;
    }

    .metric-card {
      background: var(--cb-bg-glass);
      backdrop-filter: blur(var(--cb-glass-blur));
      -webkit-backdrop-filter: blur(var(--cb-glass-blur));
      border: 1px solid var(--cb-bg-glass-border);
      border-radius: var(--cb-radius-md);
      padding: 40px 24px;
    }

    .metric-card__number {
      font-family: 'DM Sans', sans-serif;
      font-size: 2.5rem;
      font-weight: 700;
      color: var(--cb-coral);
      letter-spacing: -0.02em;
      line-height: 1;
      margin-bottom: 0.5rem;
    }

    .metric-card__label {
      font-size: 0.9rem;
      color: var(--cb-text-secondary);
    }

    /* ===== CTA Section ===== */
    .cta {
      text-align: center;
      padding: 100px 40px;
    }

    .cta__inner {
      background: var(--cb-bg-glass);
      backdrop-filter: blur(24px);
      -webkit-backdrop-filter: blur(24px);
      border: 1px solid var(--cb-bg-glass-border);
      border-radius: var(--cb-radius-lg);
      padding: 72px 48px;
      max-width: 780px;
      margin: 0 auto;
      position: relative;
      overflow: hidden;
    }

    .cta__inner::before {
      content: '';
      position: absolute;
      width: 220px;
      height: 220px;
      top: -50px;
      right: -50px;
      background: rgba(232, 196, 200, 0.3);
      border-radius: 50%;
      filter: blur(55px);
      pointer-events: none;
    }

    .cta__inner::after {
      content: '';
      position: absolute;
      width: 180px;
      height: 180px;
      bottom: -40px;
      left: -40px;
      background: rgba(200, 184, 232, 0.25);
      border-radius: 50%;
      filter: blur(50px);
      pointer-events: none;
    }

    .cta h2 {
      font-size: 2rem;
      margin-bottom: 1rem;
      position: relative;
      z-index: 1;
    }

    .cta p {
      margin-bottom: 2rem;
      position: relative;
      z-index: 1;
      color: var(--cb-text-secondary);
    }

    .cta .btn {
      position: relative;
      z-index: 1;
    }

    /* ===== Footer ===== */
    footer {
      text-align: center;
      padding: 48px 40px;
      font-size: 0.85rem;
      color: var(--cb-text-muted);
    }

    footer a {
      color: var(--cb-text-secondary);
      text-decoration: none;
    }

    footer a:hover {
      color: var(--cb-text-primary);
    }

    /* ===== Responsive ===== */
    @media (max-width: 768px) {
      nav {
        padding: 16px 20px;
      }

      nav ul {
        gap: 16px;
      }

      .hero {
        min-height: 70vh;
        padding: 60px 20px;
      }

      .hero h1 {
        font-size: clamp(2rem, 8vw, 2.8rem);
      }

      .features,
      .showcase,
      .cta {
        padding: 60px 20px;
      }

      .showcase__grid {
        grid-template-columns: 1fr;
        gap: 20px;
      }

      .cta__inner {
        padding: 48px 28px;
      }

      .blob--1,
      .blob--2,
      .blob--3 {
        filter: blur(60px);
      }

      .blob--4,
      .blob--5 {
        display: none;
      }
    }

    @media (prefers-reduced-motion: reduce) {
      .blob--1,
      .blob--2,
      .blob--3,
      .blob--4,
      .blob--5 {
        animation: none;
      }
    }
  </style>
</head>
<body>
  <!-- Ambient blur background -->
  <div class="cb-background">
    <div class="blob blob--1"></div>
    <div class="blob blob--2"></div>
    <div class="blob blob--3"></div>
    <div class="blob blob--4"></div>
    <div class="blob blob--5"></div>
  </div>

  <!-- Grain texture overlay -->
  <div class="cb-grain"></div>

  <!-- Page content -->
  <div class="content">
    <nav>
      <a href="#" class="logo">Chroma</a>
      <ul>
        <li><a href="#">Studio</a></li>
        <li><a href="#">Gallery</a></li>
        <li><a href="#">Process</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </nav>

    <section class="hero">
      <div class="hero__inner">
        <span class="overline">A new way to see</span>
        <h1>
          Design through the
          <span class="chromatic-text" data-text="soft lens">soft lens</span>
          of color
        </h1>
        <p>
          Embrace the beauty of defocus. Let color fields drift
          and merge, creating interfaces that feel alive, warm,
          and gently immersive.
        </p>
        <div class="hero__actions">
          <a href="#" class="btn btn--primary">Explore Gallery</a>
          <a href="#" class="btn btn--ghost">Learn More</a>
        </div>
      </div>
    </section>

    <section class="features">
      <div class="features__header">
        <h2>Dreamy by design</h2>
        <p>Every element is crafted to feel soft, ambient, and beautifully out of focus.</p>
      </div>
      <div class="features__grid">
        <div class="feature-card">
          <div class="feature-card__icon" style="background: rgba(200,184,232,0.2);">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#7b6fa0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
              <circle cx="12" cy="12" r="10"/>
              <circle cx="12" cy="12" r="4"/>
            </svg>
          </div>
          <h3>Ambient Color Fields</h3>
          <p>Large, blurred color gradients create living backgrounds that shift and breathe with gentle motion.</p>
        </div>
        <div class="feature-card">
          <div class="feature-card__icon" style="background: rgba(232,196,200,0.2);">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#d4728a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
              <path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7S2 12 2 12z"/>
              <circle cx="12" cy="12" r="3"/>
            </svg>
          </div>
          <h3>Frosted Layers</h3>
          <p>Translucent glass surfaces separate content from the ambient background while maintaining the dreamy atmosphere.</p>
        </div>
        <div class="feature-card">
          <div class="feature-card__icon" style="background: rgba(181,204,224,0.2);">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#5a8bb0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
              <path d="M12 3v18M3 12h18"/>
              <circle cx="12" cy="12" r="9"/>
            </svg>
          </div>
          <h3>Soft Precision</h3>
          <p>Intentional imprecision meets careful craft. Every blur, every fade, every transition is deliberately designed.</p>
        </div>
      </div>
    </section>

    <section class="showcase">
      <div class="showcase__grid">
        <div class="metric-card">
          <div class="metric-card__number">120px</div>
          <div class="metric-card__label">Maximum blur radius</div>
        </div>
        <div class="metric-card">
          <div class="metric-card__number">0.55</div>
          <div class="metric-card__label">Glass opacity</div>
        </div>
        <div class="metric-card">
          <div class="metric-card__number">28s</div>
          <div class="metric-card__label">Animation cycle</div>
        </div>
      </div>
    </section>

    <section class="cta">
      <div class="cta__inner">
        <h2>Ready to blur the lines?</h2>
        <p>Start creating interfaces that feel as warm and immersive as light through a soft lens.</p>
        <a href="#" class="btn btn--primary">Get Started</a>
      </div>
    </section>

    <footer>
      <p>Built with the Chromatic Blur aesthetic. Soft, warm, deliberately out of focus.</p>
    </footer>
  </div>
</body>
</html>

Implementation Tips