website_designs

Ink Wash Design Reference

Overview

Ink Wash is a web design aesthetic rooted in the centuries-old East Asian tradition of ink wash painting, known as sumi-e (墨絵) in Japanese, shui-mo hua (水墨画) in Chinese, and sumukhwa (수묵화) in Korean. This art form, which originated during the Tang Dynasty in China and later flourished in Japan under the influence of Zen Buddhism, distills visual expression down to its barest essentials: black ink, water, a brush, and paper. In sumi-e, the artist captures the spirit or essence (called ki-in or 気韻) of a subject rather than its photographic likeness, using fluid brush strokes that range from bold and decisive to gossamer-thin washes of diluted ink. An ancient aphorism states that “sumi is black and yet it is not black,” meaning that the monochromatic ink paradoxically suggests the full spectrum of color through its infinite gradations of tone.

Translated into digital design, the Ink Wash aesthetic embraces radical restraint. Color palettes are overwhelmingly monochromatic, built from graduated shades of ink-black, warm grays, cool grays, and the luminous white of untouched paper. Typography draws from calligraphic traditions, favoring serifs and brush-influenced letterforms that honor the shared heritage of East Asian calligraphy and painting. Layouts are governed by the Japanese concept of ma (間) – the meaningful void between elements – where negative space is not emptiness but a deliberate compositional force that gives weight and significance to every stroke that does appear. Compositions tend toward asymmetry, echoing the traditional ink painting principle that perfect symmetry is lifeless while deliberate imbalance creates visual tension and energy.

The emotional register of Ink Wash design is one of meditative calm, intellectual clarity, and quiet sophistication. It rejects visual noise, gratuitous decoration, and saturated color in favor of atmospheric depth, tonal subtlety, and the beauty of imperfection. Surfaces feel like handmade paper. Transitions evoke the slow diffusion of ink into wet fibers. Interactions are gentle and unhurried. The result is a digital experience that feels closer to a contemplative scroll painting than a commercial billboard – an invitation to slow down, breathe, and perceive the essential nature of content stripped of all excess.


Visual Characteristics

Core Design Traits

Design Principles


Color Palette

The Ink Wash palette is built on a monochromatic foundation of ink tones, from the deepest concentrated black to the faintest diluted gray, set against the warm luminosity of traditional East Asian paper. Occasional warm or cool undertones in the grays reflect the natural chemistry of sumi ink, which shifts subtly between warm brown-blacks and cool blue-blacks depending on concentration and the grinding of the ink stick. A single restrained accent – traditionally a vermilion red drawn from the artist’s seal stamp (hanko/rakkan) – provides the only chromatic punctuation.

Swatch Hex Role/Usage
#0D0D0D #0D0D0D Concentrated ink – headings, primary text, strongest visual anchors
#1A1A1A #1A1A1A Rich ink – subheadings, navigation text, active states
#333333 #333333 Dark wash – body text, secondary content, strong borders
#4D4D4D #4D4D4D Medium-dark wash – supporting text, icon fills
#6B6B6B #6B6B6B Medium wash – tertiary text, captions, metadata
#8A8A8A #8A8A8A Light-medium wash – placeholders, disabled states
#A8A8A8 #A8A8A8 Pale wash – subtle dividers, ghost text
#C4C4C4 #C4C4C4 Faint wash – card borders, hairline rules
#DCDCDC #DCDCDC Mist wash – section dividers, hover backgrounds
#EDECE8 #EDECE8 Warm paper – alternate surface, card backgrounds
#F5F4F0 #F5F4F0 Rice paper – primary background, the luminous ground
#FAF9F6 #FAF9F6 Pure xuan paper – lightest surface, modal backgrounds
#C23B22 #C23B22 Vermilion seal (rakkan) – sole chromatic accent, CTAs, links, alerts
#8B2500 #8B2500 Dark vermilion – hover/active accent, emphasis borders
#4A3728 #4A3728 Warm ink (sepia undertone) – alternate text color for warm compositions

CSS Custom Properties

:root {
  /* Ink tones (dark to light) */
  --ink-concentrated:    #0D0D0D;
  --ink-rich:            #1A1A1A;
  --ink-dark-wash:       #333333;
  --ink-medium-dark:     #4D4D4D;
  --ink-medium:          #6B6B6B;
  --ink-light-medium:    #8A8A8A;
  --ink-pale:            #A8A8A8;
  --ink-faint:           #C4C4C4;
  --ink-mist:            #DCDCDC;

  /* Paper tones (warm whites) */
  --paper-warm:          #EDECE8;
  --paper-rice:          #F5F4F0;
  --paper-xuan:          #FAF9F6;

  /* Accent */
  --vermilion:           #C23B22;
  --vermilion-dark:      #8B2500;
  --ink-warm:            #4A3728;

  /* Semantic aliases */
  --color-bg:            var(--paper-rice);
  --color-surface:       var(--paper-warm);
  --color-text:          var(--ink-dark-wash);
  --color-text-heading:  var(--ink-concentrated);
  --color-text-muted:    var(--ink-medium);
  --color-border:        var(--ink-faint);
  --color-accent:        var(--vermilion);
  --color-accent-hover:  var(--vermilion-dark);
}

Typography

Ink Wash typography bridges two worlds: the calligraphic tradition of East Asian brush writing, where each character is a gestural painting, and the Western typographic tradition of structured, readable text. The ideal typeface selections echo the qualities of brush-written letterforms – visible stroke modulation, organic contrast between thick and thin, and a sense of the hand behind the form – while remaining fully legible in digital contexts. Weight usage skews toward light and regular; bold weights feel antithetical to the restrained, meditative spirit of the aesthetic. Generous line height and letter spacing honor the principle of ma, allowing each word breathing room.

Google Fonts Recommendations

Font Category Weight Range Role Character
Noto Serif JP Serif (CJK) 200-900 Headings, bilingual content Bridges Japanese and Latin with harmonious proportions
Zen Old Mincho Serif (CJK) 400-900 Display, editorial headings Classical Japanese printing aesthetic with brush heritage
Cormorant Garamond Serif 300-700 Headings, pull quotes High stroke contrast, calligraphic origins, elegant at large sizes
EB Garamond Serif 400-800 Body text, long-form reading Renaissance humanist serif with organic, pen-derived forms
Crimson Pro Serif 200-900 Body text, editorial Refined book face with gentle stroke modulation
Zen Kaku Gothic New Sans-serif (CJK) 300-900 UI text, bilingual labels Clean Japanese gothic with subtle brush influence
Inter Sans-serif 100-900 UI, meta text, captions Neutral, highly legible sans for functional elements
Cormorant Serif (display) 300-700 Large display, hero text Dramatic stroke contrast that echoes brush calligraphy

Font Pairings

Pairing Heading Body Best For
Classical Scroll Cormorant Garamond (300) EB Garamond (400) Editorial, long-form, literary content
East Meets West Zen Old Mincho (400) Crimson Pro (300) Bilingual sites, cultural content
Contemplative Modern Cormorant (300) Inter (300) Portfolios, galleries, minimal sites
Zen Digital Noto Serif JP (300) Zen Kaku Gothic New (400) Japanese-focused sites, apps

CSS Typography Example

/* Google Fonts import */
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;1,300;1,400&family=EB+Garamond:ital,wght@0,400;0,500;1,400&family=Inter:wght@300;400;500&family=Zen+Old+Mincho:wght@400;500&display=swap');

/* Base typography */
body {
  font-family: 'EB Garamond', 'Crimson Pro', Georgia, serif;
  font-size: 1.125rem;
  font-weight: 400;
  line-height: 1.8;
  color: var(--ink-dark-wash);
  letter-spacing: 0.01em;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
  font-family: 'Cormorant Garamond', 'Cormorant', Georgia, serif;
  font-weight: 300;
  line-height: 1.2;
  color: var(--ink-concentrated);
  letter-spacing: 0.02em;
}

h1 {
  font-size: clamp(2.5rem, 5vw, 4rem);
  font-weight: 300;
  letter-spacing: 0.04em;
}

h2 {
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  letter-spacing: 0.03em;
}

h3 {
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  font-weight: 400;
}

/* Captions and metadata */
.meta, .caption, figcaption {
  font-family: 'Inter', sans-serif;
  font-size: 0.8rem;
  font-weight: 300;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-medium);
}

/* Calligraphic accent text */
.brush-text {
  font-family: 'Zen Old Mincho', serif;
  font-style: normal;
  font-weight: 400;
  letter-spacing: 0.06em;
}

/* Pull quotes */
blockquote {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.5rem;
  font-weight: 300;
  font-style: italic;
  line-height: 1.6;
  color: var(--ink-medium-dark);
  border-left: 2px solid var(--ink-faint);
  padding-left: 1.5rem;
  margin: 2.5rem 0;
}

Layout Principles


CSS / Design Techniques

Card Component

.card-ink {
  background: var(--paper-xuan);
  border: 1px solid var(--ink-faint);
  border-radius: 2px;
  padding: 2.5rem;
  position: relative;
  transition: all 0.4s ease;
  overflow: hidden;
}

/* Ink bleed edge -- subtle top border that mimics brush contact */
.card-ink::before {
  content: '';
  position: absolute;
  top: 0;
  left: 10%;
  right: 10%;
  height: 2px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    var(--ink-pale) 20%,
    var(--ink-medium) 50%,
    var(--ink-pale) 80%,
    transparent 100%
  );
  opacity: 0.5;
}

.card-ink:hover {
  border-color: var(--ink-pale);
  box-shadow: 0 8px 32px rgba(13, 13, 13, 0.06);
  transform: translateY(-2px);
}

.card-ink h3 {
  margin-bottom: 0.75rem;
}

.card-ink p {
  color: var(--ink-medium-dark);
  line-height: 1.75;
}

/* Seal stamp accent on card */
.card-ink .card-seal {
  width: 28px;
  height: 28px;
  background: var(--vermilion);
  border-radius: 2px;
  opacity: 0.8;
  position: absolute;
  bottom: 1.5rem;
  right: 1.5rem;
}

Button Styles

/* Primary -- ink stroke button */
.btn-ink {
  background: var(--ink-concentrated);
  color: var(--paper-rice);
  border: none;
  border-radius: 1px;
  padding: 14px 36px;
  font-family: 'Inter', sans-serif;
  font-size: 0.8rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  cursor: pointer;
  position: relative;
  transition: all 0.3s ease;
}

.btn-ink:hover {
  background: var(--ink-rich);
  box-shadow: 0 4px 16px rgba(13, 13, 13, 0.15);
}

.btn-ink:active {
  transform: scale(0.98);
}

/* Secondary -- ghost button with ink border */
.btn-ink-ghost {
  background: transparent;
  color: var(--ink-dark-wash);
  border: 1px solid var(--ink-medium);
  border-radius: 1px;
  padding: 13px 35px;
  font-family: 'Inter', sans-serif;
  font-size: 0.8rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.3s ease;
}

.btn-ink-ghost:hover {
  border-color: var(--ink-concentrated);
  background: rgba(13, 13, 13, 0.03);
}

/* Vermilion accent button -- for primary CTAs */
.btn-vermilion {
  background: var(--vermilion);
  color: var(--paper-xuan);
  border: none;
  border-radius: 1px;
  padding: 14px 36px;
  font-family: 'Inter', sans-serif;
  font-size: 0.8rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.3s ease;
}

.btn-vermilion:hover {
  background: var(--vermilion-dark);
  box-shadow: 0 4px 16px rgba(194, 59, 34, 0.2);
}
.nav-ink {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 2rem 3rem;
  background: var(--paper-rice);
  border-bottom: 1px solid var(--ink-mist);
  position: sticky;
  top: 0;
  z-index: 100;
}

.nav-ink .wordmark {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.4rem;
  font-weight: 300;
  letter-spacing: 0.08em;
  color: var(--ink-concentrated);
  text-decoration: none;
}

/* Seal stamp logo element */
.nav-ink .seal-logo {
  width: 32px;
  height: 32px;
  background: var(--vermilion);
  border-radius: 2px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--paper-xuan);
  font-family: 'Zen Old Mincho', serif;
  font-size: 0.9rem;
}

.nav-ink ul {
  list-style: none;
  display: flex;
  gap: 2.5rem;
  margin: 0;
  padding: 0;
}

.nav-ink a {
  font-family: 'Inter', sans-serif;
  font-size: 0.78rem;
  font-weight: 400;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-medium-dark);
  text-decoration: none;
  position: relative;
  transition: color 0.3s ease;
}

.nav-ink a:hover {
  color: var(--ink-concentrated);
}

/* Brush stroke underline on hover */
.nav-ink a::after {
  content: '';
  position: absolute;
  bottom: -4px;
  left: 0;
  width: 0;
  height: 1.5px;
  background: linear-gradient(
    90deg,
    var(--ink-concentrated) 0%,
    var(--ink-medium) 70%,
    transparent 100%
  );
  transition: width 0.4s ease;
}

.nav-ink a:hover::after {
  width: 100%;
}

Hero Section

.hero-ink {
  min-height: 90vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  padding: 6rem 3rem;
  position: relative;
  overflow: hidden;
  background: var(--paper-rice);
}

/* Atmospheric ink wash background */
.hero-ink::before {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 50%;
  background: radial-gradient(
    ellipse at 70% 40%,
    rgba(13, 13, 13, 0.04) 0%,
    rgba(13, 13, 13, 0.02) 30%,
    transparent 70%
  );
  pointer-events: none;
}

/* Distant mountain silhouette */
.hero-ink::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 30%;
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgba(13, 13, 13, 0.015) 40%,
    rgba(13, 13, 13, 0.03) 100%
  );
  pointer-events: none;
}

.hero-ink h1 {
  font-family: 'Cormorant Garamond', serif;
  font-size: clamp(3rem, 6vw, 5rem);
  font-weight: 300;
  line-height: 1.1;
  color: var(--ink-concentrated);
  margin-bottom: 1.5rem;
  max-width: 14ch;
  letter-spacing: 0.02em;
}

.hero-ink .subtitle {
  font-family: 'EB Garamond', serif;
  font-size: 1.25rem;
  font-weight: 400;
  color: var(--ink-medium);
  max-width: 36ch;
  line-height: 1.7;
  margin-bottom: 3rem;
}

.hero-ink .scroll-hint {
  font-family: 'Inter', sans-serif;
  font-size: 0.7rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ink-light-medium);
  position: absolute;
  bottom: 3rem;
  left: 3rem;
}

Ink Wash Gradient Backgrounds

/* Horizontal mist -- like fog rolling across a valley */
.wash-horizontal {
  background: linear-gradient(
    90deg,
    var(--paper-rice) 0%,
    rgba(13, 13, 13, 0.025) 40%,
    rgba(13, 13, 13, 0.04) 60%,
    var(--paper-rice) 100%
  );
}

/* Vertical atmospheric depth -- distant mountains */
.wash-vertical {
  background: linear-gradient(
    180deg,
    var(--paper-rice) 0%,
    rgba(13, 13, 13, 0.02) 30%,
    rgba(13, 13, 13, 0.05) 70%,
    rgba(13, 13, 13, 0.03) 100%
  );
}

/* Radial ink bleed -- centered ink drop diffusion */
.wash-radial {
  background: radial-gradient(
    circle at 50% 50%,
    rgba(13, 13, 13, 0.06) 0%,
    rgba(13, 13, 13, 0.03) 30%,
    rgba(13, 13, 13, 0.01) 60%,
    transparent 80%
  );
}

/* Corner ink spill -- asymmetric wash pooling in one corner */
.wash-corner {
  background: radial-gradient(
    ellipse at 85% 15%,
    rgba(13, 13, 13, 0.05) 0%,
    rgba(13, 13, 13, 0.02) 30%,
    transparent 60%
  );
}

Brush Stroke Dividers

/* Tapered horizontal rule -- mimics a single brush stroke */
.brush-divider {
  border: none;
  height: 2px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    var(--ink-pale) 15%,
    var(--ink-medium) 45%,
    var(--ink-dark-wash) 50%,
    var(--ink-medium) 55%,
    var(--ink-pale) 85%,
    transparent 100%
  );
  max-width: 200px;
  margin: 5rem auto;
  opacity: 0.4;
}

/* Asymmetric brush stroke -- thicker start, trailing end */
.brush-divider-asym {
  border: none;
  height: 2px;
  background: linear-gradient(
    90deg,
    var(--ink-dark-wash) 0%,
    var(--ink-medium) 20%,
    var(--ink-pale) 50%,
    var(--ink-faint) 75%,
    transparent 100%
  );
  max-width: 180px;
  margin: 4rem 0 4rem 10%;
  opacity: 0.5;
}

/* Enso circle divider */
.enso-divider {
  text-align: center;
  margin: 5rem auto;
}

.enso-divider::before {
  content: '';
  display: inline-block;
  width: 48px;
  height: 48px;
  border: 2px solid var(--ink-medium);
  border-radius: 50%;
  border-top-width: 1px;
  border-right-width: 3px;
  border-bottom-width: 2px;
  border-left-width: 1px;
  border-top-color: transparent;
  opacity: 0.25;
  transform: rotate(-25deg);
}

Paper Texture Overlay

/* Rice paper grain -- subtle fibrous texture */
.paper-texture {
  position: relative;
}

.paper-texture::after {
  content: '';
  position: absolute;
  inset: 0;
  opacity: 0.02;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Crect width='1' height='1' x='2' y='1' fill='%23333' opacity='0.4'/%3E%3Crect width='1' height='1' x='5' y='4' fill='%23333' opacity='0.3'/%3E%3Crect width='1' height='1' x='1' y='6' fill='%23333' opacity='0.5'/%3E%3Crect width='1' height='1' x='7' y='2' fill='%23333' opacity='0.2'/%3E%3C/svg%3E");
  background-size: 8px 8px;
  pointer-events: none;
  mix-blend-mode: multiply;
}

/* Wet edge bleed effect for containers */
.ink-bleed {
  box-shadow:
    0 0 20px rgba(13, 13, 13, 0.03),
    0 0 60px rgba(13, 13, 13, 0.02);
  border: 1px solid rgba(13, 13, 13, 0.06);
}

Full Page Scaffold

:root {
  --ink-concentrated:    #0D0D0D;
  --ink-rich:            #1A1A1A;
  --ink-dark-wash:       #333333;
  --ink-medium-dark:     #4D4D4D;
  --ink-medium:          #6B6B6B;
  --ink-light-medium:    #8A8A8A;
  --ink-pale:            #A8A8A8;
  --ink-faint:           #C4C4C4;
  --ink-mist:            #DCDCDC;
  --paper-warm:          #EDECE8;
  --paper-rice:          #F5F4F0;
  --paper-xuan:          #FAF9F6;
  --vermilion:           #C23B22;
  --vermilion-dark:      #8B2500;
  --ink-warm:            #4A3728;
}

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: 'EB Garamond', Georgia, serif;
  background-color: var(--paper-rice);
  color: var(--ink-dark-wash);
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4 {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-weight: 300;
  color: var(--ink-concentrated);
}

a {
  color: var(--ink-dark-wash);
  text-decoration: underline;
  text-decoration-color: var(--ink-faint);
  text-underline-offset: 3px;
  transition: color 0.3s ease, text-decoration-color 0.3s ease;
}

a:hover {
  color: var(--vermilion);
  text-decoration-color: var(--vermilion);
}

.container {
  max-width: 780px;
  margin: 0 auto;
  padding: 0 2rem;
}

section {
  padding: 6rem 0;
}

img {
  max-width: 100%;
  height: auto;
  filter: grayscale(100%) contrast(1.05);
}

::selection {
  background: rgba(194, 59, 34, 0.15);
  color: var(--ink-concentrated);
}

Design Do’s and Don’ts

Do’s

Don’ts


Aesthetic Relationship
Japandi Shares Zen minimalism and ma (negative space); Japandi is warmer with Scandinavian material influence
Wabi-Sabi Philosophical foundation – embracing imperfection, transience, and incompleteness
Minimalism Parallel commitment to reduction and essentialism, though Ink Wash is more atmospheric and organic
Zen Design Spiritual sibling; Zen design applies the same Buddhist principles across all media and materials
Chinoiserie Western interpretation of Chinese aesthetic motifs; Ink Wash is the authentic source tradition
Monochrome Design Shares the single-hue constraint, though Ink Wash is specifically rooted in East Asian ink painting tradition
Dark Academia Shares intellectual, literary atmosphere and muted tones, but differs in warmth and cultural reference
Brutalism (Web) Shares the raw, unadorned quality and embrace of stark contrast, though Brutalism is aggressive where Ink Wash is contemplative
Earth Tones Related through natural material palette; Earth Tones uses warm chromatic range, Ink Wash limits to achromatic with warm undertones
Flat Design Shares rejection of 3D effects and gradients-as-decoration, though Flat Design uses bold color where Ink Wash uses tonal gray

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>Ink Wash -- Sumi-e Design</title>

  <!-- Google Fonts -->
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;1,300;1,400&family=EB+Garamond:ital,wght@0,400;0,500;1,400&family=Inter:wght@300;400;500&family=Zen+Old+Mincho:wght@400;500&display=swap" rel="stylesheet">

  <style>
    /* ============================================
       CSS CUSTOM PROPERTIES
       ============================================ */
    :root {
      /* Ink tones */
      --ink-concentrated:    #0D0D0D;
      --ink-rich:            #1A1A1A;
      --ink-dark-wash:       #333333;
      --ink-medium-dark:     #4D4D4D;
      --ink-medium:          #6B6B6B;
      --ink-light-medium:    #8A8A8A;
      --ink-pale:            #A8A8A8;
      --ink-faint:           #C4C4C4;
      --ink-mist:            #DCDCDC;

      /* Paper tones */
      --paper-warm:          #EDECE8;
      --paper-rice:          #F5F4F0;
      --paper-xuan:          #FAF9F6;

      /* Accent */
      --vermilion:           #C23B22;
      --vermilion-dark:      #8B2500;
      --ink-warm:            #4A3728;

      /* Spacing */
      --space-xs:  0.5rem;
      --space-sm:  1rem;
      --space-md:  2rem;
      --space-lg:  4rem;
      --space-xl:  6rem;
      --space-2xl: 8rem;
    }

    /* ============================================
       RESET & BASE
       ============================================ */
    *, *::before, *::after {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
    }

    html {
      scroll-behavior: smooth;
      font-size: 16px;
    }

    body {
      font-family: 'EB Garamond', Georgia, serif;
      font-size: 1.125rem;
      line-height: 1.8;
      color: var(--ink-dark-wash);
      background-color: var(--paper-rice);
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
    }

    /* Paper texture overlay on body */
    body::after {
      content: '';
      position: fixed;
      inset: 0;
      opacity: 0.018;
      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Crect width='1' height='1' x='2' y='1' fill='%23333' opacity='0.4'/%3E%3Crect width='1' height='1' x='5' y='4' fill='%23333' opacity='0.3'/%3E%3Crect width='1' height='1' x='1' y='6' fill='%23333' opacity='0.5'/%3E%3Crect width='1' height='1' x='7' y='2' fill='%23333' opacity='0.2'/%3E%3C/svg%3E");
      background-size: 8px 8px;
      pointer-events: none;
      z-index: 9999;
      mix-blend-mode: multiply;
    }

    ::selection {
      background: rgba(194, 59, 34, 0.15);
      color: var(--ink-concentrated);
    }

    img {
      max-width: 100%;
      height: auto;
      display: block;
    }

    /* ============================================
       TYPOGRAPHY
       ============================================ */
    h1, h2, h3, h4 {
      font-family: 'Cormorant Garamond', Georgia, serif;
      font-weight: 300;
      color: var(--ink-concentrated);
      line-height: 1.2;
    }

    h1 {
      font-size: clamp(2.75rem, 6vw, 4.5rem);
      letter-spacing: 0.03em;
    }

    h2 {
      font-size: clamp(1.75rem, 3.5vw, 2.75rem);
      letter-spacing: 0.02em;
    }

    h3 {
      font-size: clamp(1.25rem, 2vw, 1.5rem);
      font-weight: 400;
      letter-spacing: 0.02em;
    }

    p {
      max-width: 38em;
      margin-bottom: 1.5em;
    }

    a {
      color: var(--ink-dark-wash);
      text-decoration: underline;
      text-decoration-color: var(--ink-faint);
      text-underline-offset: 3px;
      transition: color 0.3s ease, text-decoration-color 0.3s ease;
    }

    a:hover {
      color: var(--vermilion);
      text-decoration-color: var(--vermilion);
    }

    .meta {
      font-family: 'Inter', sans-serif;
      font-size: 0.75rem;
      font-weight: 400;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--ink-light-medium);
    }

    blockquote {
      font-family: 'Cormorant Garamond', serif;
      font-size: 1.5rem;
      font-weight: 300;
      font-style: italic;
      line-height: 1.6;
      color: var(--ink-medium-dark);
      border-left: 2px solid var(--ink-faint);
      padding-left: 1.5rem;
      margin: var(--space-lg) 0;
    }

    /* ============================================
       LAYOUT
       ============================================ */
    .container {
      max-width: 780px;
      margin: 0 auto;
      padding: 0 var(--space-md);
    }

    .container--wide {
      max-width: 1100px;
    }

    section {
      padding: var(--space-xl) 0;
    }

    /* ============================================
       NAVIGATION
       ============================================ */
    .nav {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: var(--space-md) var(--space-lg);
      background: var(--paper-rice);
      border-bottom: 1px solid var(--ink-mist);
      position: sticky;
      top: 0;
      z-index: 100;
    }

    .nav__brand {
      display: flex;
      align-items: center;
      gap: var(--space-sm);
      text-decoration: none;
    }

    .nav__seal {
      width: 30px;
      height: 30px;
      background: var(--vermilion);
      border-radius: 2px;
      display: flex;
      align-items: center;
      justify-content: center;
      color: var(--paper-xuan);
      font-family: 'Zen Old Mincho', serif;
      font-size: 0.85rem;
      line-height: 1;
    }

    .nav__wordmark {
      font-family: 'Cormorant Garamond', serif;
      font-size: 1.35rem;
      font-weight: 300;
      letter-spacing: 0.06em;
      color: var(--ink-concentrated);
    }

    .nav__links {
      list-style: none;
      display: flex;
      gap: var(--space-md);
    }

    .nav__links a {
      font-family: 'Inter', sans-serif;
      font-size: 0.75rem;
      font-weight: 400;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--ink-medium-dark);
      text-decoration: none;
      position: relative;
      transition: color 0.3s ease;
    }

    .nav__links a:hover {
      color: var(--ink-concentrated);
    }

    .nav__links a::after {
      content: '';
      position: absolute;
      bottom: -4px;
      left: 0;
      width: 0;
      height: 1.5px;
      background: linear-gradient(
        90deg,
        var(--ink-concentrated),
        var(--ink-medium),
        transparent
      );
      transition: width 0.4s ease;
    }

    .nav__links a:hover::after {
      width: 100%;
    }

    /* ============================================
       HERO
       ============================================ */
    .hero {
      min-height: 92vh;
      display: flex;
      flex-direction: column;
      justify-content: center;
      padding: var(--space-2xl) var(--space-lg);
      position: relative;
      overflow: hidden;
    }

    /* Atmospheric wash */
    .hero::before {
      content: '';
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      width: 55%;
      background: radial-gradient(
        ellipse at 65% 35%,
        rgba(13, 13, 13, 0.045) 0%,
        rgba(13, 13, 13, 0.02) 35%,
        transparent 70%
      );
      pointer-events: none;
    }

    /* Ground mist */
    .hero::after {
      content: '';
      position: absolute;
      bottom: 0;
      left: 0;
      right: 0;
      height: 25%;
      background: linear-gradient(
        180deg,
        transparent,
        rgba(13, 13, 13, 0.02) 50%,
        rgba(13, 13, 13, 0.035)
      );
      pointer-events: none;
    }

    .hero__content {
      position: relative;
      z-index: 1;
      max-width: 680px;
    }

    .hero__label {
      font-family: 'Inter', sans-serif;
      font-size: 0.7rem;
      font-weight: 400;
      letter-spacing: 0.18em;
      text-transform: uppercase;
      color: var(--ink-light-medium);
      margin-bottom: var(--space-md);
      display: block;
    }

    .hero h1 {
      margin-bottom: var(--space-md);
      max-width: 14ch;
    }

    .hero__subtitle {
      font-family: 'EB Garamond', serif;
      font-size: 1.25rem;
      color: var(--ink-medium);
      max-width: 36ch;
      line-height: 1.7;
      margin-bottom: var(--space-lg);
    }

    .hero__cta {
      display: flex;
      gap: var(--space-sm);
      flex-wrap: wrap;
    }

    .hero__scroll {
      font-family: 'Inter', sans-serif;
      font-size: 0.65rem;
      letter-spacing: 0.18em;
      text-transform: uppercase;
      color: var(--ink-pale);
      position: absolute;
      bottom: var(--space-lg);
      left: var(--space-lg);
      z-index: 1;
    }

    .hero__scroll span {
      display: block;
      width: 1px;
      height: 40px;
      background: linear-gradient(180deg, var(--ink-pale), transparent);
      margin-top: var(--space-xs);
    }

    /* ============================================
       BUTTONS
       ============================================ */
    .btn {
      display: inline-block;
      font-family: 'Inter', sans-serif;
      font-size: 0.78rem;
      font-weight: 400;
      letter-spacing: 0.12em;
      text-transform: uppercase;
      text-decoration: none;
      padding: 14px 36px;
      border-radius: 1px;
      cursor: pointer;
      transition: all 0.35s ease;
      border: none;
    }

    .btn--primary {
      background: var(--ink-concentrated);
      color: var(--paper-rice);
    }

    .btn--primary:hover {
      background: var(--ink-rich);
      color: var(--paper-rice);
      box-shadow: 0 4px 20px rgba(13, 13, 13, 0.15);
    }

    .btn--ghost {
      background: transparent;
      color: var(--ink-dark-wash);
      border: 1px solid var(--ink-medium);
    }

    .btn--ghost:hover {
      color: var(--ink-concentrated);
      border-color: var(--ink-concentrated);
      background: rgba(13, 13, 13, 0.025);
    }

    .btn--vermilion {
      background: var(--vermilion);
      color: var(--paper-xuan);
    }

    .btn--vermilion:hover {
      background: var(--vermilion-dark);
      color: var(--paper-xuan);
      box-shadow: 0 4px 20px rgba(194, 59, 34, 0.2);
    }

    /* ============================================
       BRUSH DIVIDER
       ============================================ */
    .divider {
      border: none;
      height: 2px;
      max-width: 180px;
      margin: var(--space-xl) auto;
      opacity: 0.35;
    }

    .divider--center {
      background: linear-gradient(
        90deg,
        transparent,
        var(--ink-pale) 15%,
        var(--ink-medium) 50%,
        var(--ink-pale) 85%,
        transparent
      );
    }

    .divider--asym {
      background: linear-gradient(
        90deg,
        var(--ink-dark-wash),
        var(--ink-medium) 25%,
        var(--ink-pale) 55%,
        transparent
      );
      margin-left: 10%;
      margin-right: auto;
    }

    /* ============================================
       ABOUT / FEATURE SECTION
       ============================================ */
    .about {
      padding: var(--space-2xl) 0;
    }

    .about__grid {
      display: grid;
      grid-template-columns: 1fr 2fr;
      gap: var(--space-lg);
      align-items: start;
    }

    .about__label {
      font-family: 'Inter', sans-serif;
      font-size: 0.72rem;
      font-weight: 400;
      letter-spacing: 0.14em;
      text-transform: uppercase;
      color: var(--ink-light-medium);
      padding-top: 0.4rem;
    }

    .about__text p {
      color: var(--ink-medium-dark);
    }

    /* ============================================
       CARDS
       ============================================ */
    .cards {
      padding: var(--space-xl) 0;
    }

    .cards__header {
      text-align: center;
      margin-bottom: var(--space-xl);
    }

    .cards__header .meta {
      margin-bottom: var(--space-sm);
      display: block;
    }

    .cards__grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: var(--space-md);
    }

    .card {
      background: var(--paper-xuan);
      border: 1px solid var(--ink-mist);
      border-radius: 2px;
      padding: var(--space-md) var(--space-md) 3.5rem;
      position: relative;
      transition: all 0.4s ease;
      overflow: hidden;
    }

    .card::before {
      content: '';
      position: absolute;
      top: 0;
      left: 12%;
      right: 12%;
      height: 2px;
      background: linear-gradient(
        90deg,
        transparent,
        var(--ink-pale) 25%,
        var(--ink-medium) 50%,
        var(--ink-pale) 75%,
        transparent
      );
      opacity: 0.4;
    }

    .card:hover {
      border-color: var(--ink-pale);
      box-shadow: 0 8px 32px rgba(13, 13, 13, 0.06);
      transform: translateY(-2px);
    }

    .card__number {
      font-family: 'Cormorant Garamond', serif;
      font-size: 2.5rem;
      font-weight: 300;
      color: var(--ink-mist);
      line-height: 1;
      margin-bottom: var(--space-sm);
    }

    .card h3 {
      margin-bottom: 0.6rem;
    }

    .card p {
      font-size: 1rem;
      color: var(--ink-medium);
      line-height: 1.7;
    }

    .card__seal {
      width: 22px;
      height: 22px;
      background: var(--vermilion);
      border-radius: 2px;
      opacity: 0.7;
      position: absolute;
      bottom: var(--space-sm);
      right: var(--space-sm);
    }

    /* ============================================
       QUOTE / BLOCKQUOTE SECTION
       ============================================ */
    .quote-section {
      padding: var(--space-2xl) 0;
      text-align: center;
      position: relative;
    }

    .quote-section::before {
      content: '';
      position: absolute;
      inset: 0;
      background: radial-gradient(
        ellipse at 50% 50%,
        rgba(13, 13, 13, 0.025),
        transparent 70%
      );
      pointer-events: none;
    }

    .quote-section blockquote {
      border-left: none;
      padding-left: 0;
      max-width: 32ch;
      margin: 0 auto;
      font-size: clamp(1.5rem, 3vw, 2rem);
      position: relative;
      z-index: 1;
    }

    .quote-section cite {
      display: block;
      font-family: 'Inter', sans-serif;
      font-size: 0.75rem;
      font-style: normal;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--ink-light-medium);
      margin-top: var(--space-md);
    }

    /* ============================================
       GALLERY
       ============================================ */
    .gallery {
      padding: var(--space-xl) 0;
    }

    .gallery__grid {
      display: grid;
      grid-template-columns: 2fr 1fr;
      grid-template-rows: auto auto;
      gap: var(--space-sm);
    }

    .gallery__item {
      overflow: hidden;
      border-radius: 2px;
      position: relative;
    }

    .gallery__item img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      filter: grayscale(100%) contrast(1.05);
      transition: filter 0.6s ease, transform 0.6s ease;
    }

    .gallery__item:hover img {
      filter: grayscale(80%) contrast(1.1);
      transform: scale(1.02);
    }

    .gallery__item--tall {
      grid-row: span 2;
    }

    /* ============================================
       FOOTER
       ============================================ */
    .footer {
      padding: var(--space-xl) var(--space-lg) var(--space-lg);
      border-top: 1px solid var(--ink-mist);
    }

    .footer__inner {
      display: flex;
      justify-content: space-between;
      align-items: flex-end;
      max-width: 1100px;
      margin: 0 auto;
    }

    .footer__brand {
      display: flex;
      align-items: center;
      gap: var(--space-xs);
    }

    .footer__seal {
      width: 24px;
      height: 24px;
      background: var(--vermilion);
      border-radius: 2px;
      opacity: 0.7;
    }

    .footer__name {
      font-family: 'Cormorant Garamond', serif;
      font-size: 1.1rem;
      font-weight: 300;
      letter-spacing: 0.06em;
      color: var(--ink-medium-dark);
    }

    .footer__copy {
      font-family: 'Inter', sans-serif;
      font-size: 0.7rem;
      letter-spacing: 0.08em;
      color: var(--ink-pale);
    }

    /* ============================================
       RESPONSIVE
       ============================================ */
    @media (max-width: 900px) {
      .cards__grid {
        grid-template-columns: 1fr;
        gap: var(--space-md);
      }

      .about__grid {
        grid-template-columns: 1fr;
        gap: var(--space-md);
      }

      .gallery__grid {
        grid-template-columns: 1fr;
      }

      .gallery__item--tall {
        grid-row: span 1;
      }
    }

    @media (max-width: 640px) {
      .nav {
        padding: var(--space-sm) var(--space-md);
      }

      .nav__links {
        gap: var(--space-sm);
      }

      .nav__links a {
        font-size: 0.68rem;
      }

      .hero {
        min-height: 80vh;
        padding: var(--space-xl) var(--space-md);
      }

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

      .footer__inner {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--space-sm);
      }
    }

    /* ============================================
       ANIMATION (subtle, contemplative)
       ============================================ */
    @keyframes fadeInUp {
      from {
        opacity: 0;
        transform: translateY(20px);
      }
      to {
        opacity: 1;
        transform: translateY(0);
      }
    }

    .animate-in {
      animation: fadeInUp 0.8s ease-out both;
    }

    .animate-in:nth-child(2) { animation-delay: 0.15s; }
    .animate-in:nth-child(3) { animation-delay: 0.3s; }
    .animate-in:nth-child(4) { animation-delay: 0.45s; }
  </style>
</head>

<body>

  <!-- ========== NAVIGATION ========== -->
  <nav class="nav">
    <a href="#" class="nav__brand">
      <div class="nav__seal"></div>
      <span class="nav__wordmark">Ink & Wash</span>
    </a>
    <ul class="nav__links">
      <li><a href="#about">About</a></li>
      <li><a href="#work">Work</a></li>
      <li><a href="#gallery">Gallery</a></li>
      <li><a href="#contact">Contact</a></li>
    </ul>
  </nav>

  <!-- ========== HERO ========== -->
  <section class="hero">
    <div class="hero__content">
      <span class="hero__label">Sumi-e Inspired Design</span>
      <h1>The Essence of the Brush</h1>
      <p class="hero__subtitle">
        Where ink meets silence, and the space between strokes
        holds as much meaning as the marks themselves.
      </p>
      <div class="hero__cta">
        <a href="#work" class="btn btn--primary">Explore Work</a>
        <a href="#about" class="btn btn--ghost">Learn More</a>
      </div>
    </div>
    <div class="hero__scroll">
      Scroll
      <span></span>
    </div>
  </section>

  <!-- ========== DIVIDER ========== -->
  <hr class="divider divider--asym">

  <!-- ========== ABOUT ========== -->
  <section class="about container" id="about">
    <div class="about__grid">
      <div class="about__label">Philosophy</div>
      <div class="about__text">
        <h2>Emptiness is Form</h2>
        <p>
          In the tradition of sumi-e, the artist does not seek to reproduce
          what the eye sees but to capture the spirit that animates the subject.
          A bamboo stalk painted in six strokes carries more life than a
          photographic rendering, because the brush conveys ki -- vital energy --
          through its movement.
        </p>
        <p>
          We apply this principle to digital design. Every element earns its
          place through purpose, not decoration. The generous emptiness between
          components is not absence but presence -- the ma that gives each
          element its weight and significance.
        </p>
      </div>
    </div>
  </section>

  <!-- ========== DIVIDER ========== -->
  <hr class="divider divider--center">

  <!-- ========== CARDS ========== -->
  <section class="cards container container--wide" id="work">
    <div class="cards__header">
      <span class="meta">Principles</span>
      <h2>The Four Treasures</h2>
    </div>
    <div class="cards__grid">
      <div class="card animate-in">
        <div class="card__number">01</div>
        <h3>Brush (Fude)</h3>
        <p>
          The tool is an extension of the mind. Every interaction must feel
          as intentional and alive as a loaded brush touching paper.
        </p>
        <div class="card__seal"></div>
      </div>
      <div class="card animate-in">
        <div class="card__number">02</div>
        <h3>Ink (Sumi)</h3>
        <p>
          From a single pigment, infinite expression. Our monochromatic
          palette contains all the tonal depth needed to communicate clearly.
        </p>
        <div class="card__seal"></div>
      </div>
      <div class="card animate-in">
        <div class="card__number">03</div>
        <h3>Paper (Kami)</h3>
        <p>
          The ground receives and transforms. White space is not empty canvas
          waiting to be filled but a luminous presence that shapes every mark.
        </p>
        <div class="card__seal"></div>
      </div>
    </div>
  </section>

  <!-- ========== QUOTE ========== -->
  <section class="quote-section">
    <blockquote>
      "In ink painting, the void speaks louder than the brush."
    </blockquote>
    <cite>Traditional Saying</cite>
  </section>

  <!-- ========== DIVIDER ========== -->
  <hr class="divider divider--asym">

  <!-- ========== GALLERY ========== -->
  <section class="gallery container container--wide" id="gallery">
    <div class="cards__header">
      <span class="meta">Selected Works</span>
      <h2>Impressions</h2>
    </div>
    <div class="gallery__grid">
      <div class="gallery__item">
        <img src="https://images.unsplash.com/photo-1544947950-fa07a98d237f?w=800&h=500&fit=crop&auto=format"
             alt="Mountain landscape in ink wash style">
      </div>
      <div class="gallery__item gallery__item--tall">
        <img src="https://images.unsplash.com/photo-1513364776144-60967b0f800f?w=400&h=600&fit=crop&auto=format"
             alt="Bamboo grove in morning mist">
      </div>
      <div class="gallery__item">
        <img src="https://images.unsplash.com/photo-1501084817091-a4f3d1d19e07?w=800&h=500&fit=crop&auto=format"
             alt="Still water reflecting mountains">
      </div>
    </div>
  </section>

  <!-- ========== CONTACT CTA ========== -->
  <section class="about container" id="contact" style="padding-bottom: var(--space-2xl);">
    <div class="about__grid">
      <div class="about__label">Connect</div>
      <div class="about__text">
        <h2>Begin a Conversation</h2>
        <p>
          Like the meeting of brush and paper, every collaboration begins
          with a single point of contact. We would welcome the opportunity
          to bring contemplative clarity to your next project.
        </p>
        <a href="#" class="btn btn--vermilion">Get in Touch</a>
      </div>
    </div>
  </section>

  <!-- ========== FOOTER ========== -->
  <footer class="footer">
    <div class="footer__inner">
      <div class="footer__brand">
        <div class="footer__seal"></div>
        <span class="footer__name">Ink & Wash Studio</span>
      </div>
      <span class="footer__copy">&copy; 2026 Ink & Wash. All rights reserved.</span>
    </div>
  </footer>

</body>
</html>

Implementation Tips