HomeBlogDemos

“The details are not the details. They make the design.”— Eames

abhishekghoshsde@gmail.com
Join the DispatchNo spam · Unsub anytime
HomeBlogDemosGitHub
© 2026 CodeNuclei. All rights reserved.
Writing/Design Systems
Design Systems

Matte white, one theme

One light theme, no dark mode toggle, built from three Tailwind neutral ramps: stone for the canvas, zinc for ink, neutral where something must be colourless.

CN
Codenuclei@codenuclei
November 11, 2026·2 min read

The theme on this site is one light theme, no dark mode toggle, built out of three Tailwind neutral ramps: stone for the canvas, zinc for ink and UI chrome, and neutral wherever something needs to be genuinely colourless.

The three ramps, and what each one is for

  • stone is warm. Its greys lean a little toward sand, which reads as paper. It is the background: stone-50 for the page, white for cards.
  • zinc is cool. Its greys lean toward graphite, which reads as ink. It is the text and the chrome: zinc-900 for headings, zinc-600 for body copy, zinc-200 for borders.
  • neutral is neither. It is the ramp to reach for when a surface must not lean either way — muted badges, disabled states, the occasional divider that should disappear into the background.

The shadcn tokens

The stock shadcn tokens are remapped onto those ramps in globals.css. Nothing here is a custom colour: every value is a stock Tailwind neutral, so the theme stays boring and swappable.

CSS
:root {
  --background: var(--color-stone-50);
  --foreground: var(--color-zinc-900);
  --card: #ffffff;
  --muted: var(--color-neutral-100);
  --muted-foreground: var(--color-zinc-500);
  --border: var(--color-zinc-200);
  --primary: var(--color-zinc-900);
  --primary-foreground: #ffffff;
  --accent: var(--color-stone-100);
  --ring: var(--color-zinc-400);
}
TokenValueUsed for
--backgroundstone-50page canvas
--foregroundzinc-900primary text
--cardwhitecard surfaces
--mutedneutral-100muted surfaces
--muted-foregroundzinc-500secondary text
--borderzinc-200hairlines
--primaryzinc-900primary buttons
--primary-foregroundwhitetext on primary
--accentstone-100hover surfaces
--ringzinc-400focus rings

Color Token Playground

matte-white

Explore the 3 neutral ramps and test live combinations in the interactive sandbox.

Stone — Warm Paper Canvas

5 tokens

Stone provides the warm, organic substrate. Its greys lean subtly toward sandstone and bleached paper, making prolonged reading effortless on the eyes.

Color Chips (Click chip to copy value)One-click copy hex & CSS var
stone-50#fafaf9
Page Canvas

Warm paper background for pages, viewports & outer surfaces.

var(--color-stone-50)
stone-100#f5f5f4
Muted Surface

Hover surfaces, code blocks, table headers & secondary panels.

var(--color-stone-100)
stone-200#e7e5e4
Soft Hairline

Whisper-thin dividers, secondary outlines & subtle frames.

var(--color-stone-200)
stone-300#d6d3d1
Defined Hairline

Emphasized borders, quote rules & card contours.

var(--color-stone-300)
stone-500#78716c
Warm Ink

Muted timestamps, author metadata & subtle captions.

var(--color-stone-500)

Live Mini Sandbox

(Interactive token composition)
Presets:
Live UI Samplestone-50 / white
The matte-white reading experience

A warm paper canvas paired with cool graphite typography. Notice how the hairline border provides subtle structure without heavy shadow.

Why no dark mode

A dark mode doubles the surface area of every decision: every border, shadow and image needs a second value, and the second value is usually wrong. This site is a blog and a demo host. It is read in one mode, and the one mode is the one that looks like paper.

CN

Codenuclei

Author

Real-time graphics, GPU inference optimization, and bespoke mathematical UI.

All Articles
Continue Reading
Previous Article

Dissecting Memory Bandwidth & SRAM Tiling in Triton: From GEMM to FlashAttention-3

Why LLM inference is strictly memory-bound in decoding, how HBM3e vs SRAM bandwidth dictates latency, and writing a fused Triton kernel with online softmax.

7 min read
Back to all publications
Contents3 sections
The three ramps, and what each one is forThe shadcn tokensWhy no dark mode
Geist Sans