Direction 04 / 06
Editorial.
Literary, considered, slow. Warm paper, near-black ink, an oxblood red pencil, hairline rules.
Everything inside this frame is rendered in Editorial: its fonts, radius, motion and palette.
Example · The Margin
Essay · 14 minute read
Why the best tools feel slower than they are.
On latency, anticipation and the small pauses that make software feel considered rather than rushed.
The Margin
Issue 38 · Autumn
Type
Display Newsreader 400, text Newsreader, mono IBM Plex Mono. SIL OFL 1.1.
text-display-lgAa Bb 0123
text-display-smMeasure twice, ship once
text-2xlSection heading at reading size
text-mdBody copy runs at sixteen pixels with a comfortable measure and pretty wrapping.
text-smInterface text: buttons, navigation, table cells.
label-monoLabel · 11px · tracked
font-monoconst lcp = 1180; // ms
Palette
Semantic tokens in OKLCH, a separate scale per scheme. Contrast gate: 66 checks passed, 0 failed.
tightest: dark --fg on --surface-hover 12.66:1 Lc90
light
bg #fcf9f3
Surfaces
- bg98.3% 0.008 85
- bg-subtle96.4% 0.011 85
- surface99.3% 0.004 85
- surface-raised99.6% 0.003 85
- surface-hover94.4% 0.013 85
Text
- fg21% 0.015 60
- fg-muted45% 0.02 65
- fg-subtle53.5% 0.02 70
Lines
- line-subtle25% 0.02 60 / 0.09
- line25% 0.02 60 / 0.16
- line-strong22% 0.02 60 / 0.7
- line-focus47% 0.15 22
Brand
- brand46% 0.15 22
- brand-hover41% 0.14 22
- brand-subtle94.5% 0.025 30
- brand-line76% 0.08 25
- brand-text46% 0.15 22
Status
- success47% 0.1 150
- warning49% 0.1 70
- danger50% 0.19 32
dark
bg #13100d
Surfaces
- bg17.5% 0.008 70
- bg-subtle20% 0.009 70
- surface21% 0.009 70
- surface-raised24% 0.01 70
- surface-hover26% 0.011 70
Text
- fg93% 0.012 85
- fg-muted78.5% 0.015 80
- fg-subtle62.5% 0.015 75
Lines
- line-subtle95% 0.02 85 / 0.08
- line95% 0.02 85 / 0.13
- line-strong95% 0.02 85 / 0.6
- line-focus72% 0.12 28
Brand
- brand52% 0.15 24
- brand-hover48% 0.14 24
- brand-subtle27% 0.05 25
- brand-line46% 0.1 25
- brand-text80% 0.1 28
Status
- success79% 0.11 150
- warning80% 0.11 80
- danger79% 0.123 35
Depth, radius, motion
Elevation
Radius · knob 0.125rem
Motion · hover to play
cubic-bezier(0.23, 1, 0.32, 1)
fast 150ms · base 250ms
slow 400ms · slower 600ms
When to use it
- Use for
- publications, essays, research, studios, premium brands, long-form docs
- Avoid for
- dense data apps, dashboards
- Signature
- body 17-19px/1.65 in 65ch columns; structure from 1px rules (border-line-strong for section heads) not boxes; mono uppercase kickers and bylines; underlined links (decoration-brand-line, underline-offset-4); italic decks; drop caps; grain on paper.
- Don't
- cards, pills, icon grids, sans headlines, gradients, bouncy or scaling motion.
Install
One import after the base, plus the fonts. Every component keeps working.
packages/tokens/css/directions/editorial.css/* src/app/globals.css */
@import "tailwindcss";
@import "@void/tokens/base.css";
@import "@void/tokens/directions/editorial.css";// src/app/layout.tsx
import { Newsreader, IBM_Plex_Mono } from "next/font/google";
const serif = Newsreader({ subsets: ["latin"], variable: "--font-newsreader", display: "swap", style: ["normal", "italic"] });
const mono = IBM_Plex_Mono({ subsets: ["latin"], weight: ["400", "500"], variable: "--font-plex-mono", display: "swap" });