Internal reference
Design System
Tokens, scale, type, and components for Coffee Not Sleep.
Source of truth is src/styles/global.css.
This page demonstrates while it documents — everything rendered here uses the live tokens.
Colour
Accent palette
Dual-palette — the accent token names are constant but their values change
completely between light and dark mode. Light mode is warm earth (espresso, terracotta, brick rose);
dark mode is cool spectral (indigo, violet, periwinkle). Overrides live in
[data-theme="dark"] in global.css.
Light mode accents
Dark mode accents
Base tokens — light mode
#F0E3D4 --color-bg-primary #E8D4C0 --color-bg-secondary #FAF5EF --color-bg-elevated #2A1608 --color-text-primary #6A3C24 --color-text-secondary #9A6248 --color-text-muted Base tokens — dark mode
#1A1228 --color-bg-primary #231838 --color-bg-secondary #2E2044 --color-bg-elevated #EAE6F0 --color-text-primary #A8A0C0 --color-text-secondary #706880 --color-text-muted Typography
Typefaces
--font-display
Editorial New
Headlines, display type, zine mastheads. Pangram Pangram Foundry.
--font-body
Lora
All long-form prose. Warm, legible at reading sizes. Cyreal.
--font-ui
DM Sans
Tags, labels, metadata, small UI text. Colophon Foundry.
--font-mono
JetBrains Mono
Code blocks only. JetBrains.
Editorial New — all available weights
6 styles from the free licence: ultralight, regular, ultrabold — each with matching italic.
The light through the canopy at dawn.
What the root knows about patience.
A place for things that connect across categories.
I want to find something I didn't know I needed.
PULL A THREAD. SEE WHERE IT LEADS.
Against the shelf life.
Type scale
Fluid via CSS clamp(). Golden Ratio (φ=1.618) for steps ≥ 0; Major Third (1.25) below. Viewport: 375px → 1440px.
Coffee
Not Sleep
Everything is connected.
One thread leads to another.
The structure is mycelial — no hierarchy, no center, everything linked to everything else through multiple possible paths. Recipes beside theory. Illustration beside fermentation notes.
Reading time · published date · tag labels · supporting information that earns its smaller size.
Coffee Not Sleep · Est. 2024
Space scale
Harmonically related to the type scale. --space-s = body text size. Use these tokens for all major layout spacing.
Components
TagPill
Three dimensions, three colour families. Pills link to their respective tag archive pages.
Topics — accent-topic
Type — accent-action
Vibe — accent-vibe
Text & links
Body text in Lora. Inline links use accent-action underline and are warm without being aggressive. The line height is generous — 1.75 — to give long-form content room to breathe between lines.
Small text in DM Sans. Used for metadata, captions, reading time. Links still work here at this size.
LABEL TEXT · UPPERCASE · TRACKED · DM SANS
Borders
Editorial Layouts
Set via entryLayout: in entry frontmatter. Note: the key is entryLayout
(not layout) — Astro MDX reserves layout as a module import path.
Full authoring reference at docs/EDITORIAL.md.
standard default Handled by EntryLayout. 68ch reading column. Drop cap applied automatically for type: writing and type: opinion. No injected MDX components.
Short-to-medium pieces, recipes, photographs, lists.
longform Handled by LongformLayout. 38em column, drop cap always on, reading progress bar, display: flow-root for floated Aside support.
Extended essays, anything over ~1500 words.
PullQuote SectionBreak Aside feature Handled by FeatureLayout. Full-bleed 70vh hero with gradient overlay + italic title. Standard 68ch reading column below. Hero image strongly recommended.
Photographic essays, field dispatches, hero-image-led pieces.
FullBleedImage ImagePair custom Per-entry bespoke layouts. Register in src/components/custom/index.ts — maps entry slug → layout component. Falls back to EntryLayout if slug not found.
Rare. Use only when none of the above layouts fit.