Direction 03 / 06
Instrument.
Trustworthy, dense, data-first. Cool slate neutrals, a chart-grade blue, tabular everything.
Everything inside this frame is rendered in Instrument: its fonts, radius, motion and palette.
Example · Ledgerline
Revenue · last 30 days
Every metric, reconciled to the cent.
Ledgerline ties dashboards back to source transactions, so finance and product argue about decisions, not numbers.
Ledgerline
SELECT sum(amount) FROM ledger
Type
Display IBM Plex Sans 600, text IBM Plex Sans, 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 13.63:1 Lc94
light
bg #fbfcfd
Surfaces
- bg99% 0.002 255
- bg-subtle97.4% 0.004 255
- surface100% 0 0
- surface-raised100% 0 0
- surface-hover95.2% 0.006 255
Text
- fg22% 0.015 255
- fg-muted46% 0.018 255
- fg-subtle54% 0.018 255
Lines
- line-subtle25% 0.02 255 / 0.07
- line25% 0.02 255 / 0.12
- line-strong25% 0.02 255 / 0.22
- line-focus55% 0.17 255
Brand
- brand53% 0.17 255
- brand-hover49% 0.16 255
- brand-subtle95.5% 0.02 255
- brand-line80% 0.08 255
- brand-text49% 0.15 255
Status
- success49% 0.11 155
- warning52% 0.11 70
- danger51% 0.18 25
dark
bg #0d0e11
Surfaces
- bg16.5% 0.006 255
- bg-subtle19% 0.007 255
- surface20% 0.008 255
- surface-raised23.5% 0.009 255
- surface-hover25.5% 0.01 255
Text
- fg95% 0.005 255
- fg-muted78.5% 0.012 255
- fg-subtle62.5% 0.014 255
Lines
- line-subtle90% 0.02 255 / 0.06
- line90% 0.02 255 / 0.1
- line-strong90% 0.02 255 / 0.18
- line-focus70% 0.13 255
Brand
- brand55% 0.17 255
- brand-hover51% 0.16 255
- brand-subtle26% 0.055 255
- brand-line45% 0.11 255
- brand-text80% 0.102 255
Status
- success79% 0.13 155
- warning83% 0.12 80
- danger79% 0.121 25
Depth, radius, motion
Elevation
Radius · knob 0.375rem
Motion · hover to play
cubic-bezier(0.23, 1, 0.32, 1)
fast 100ms · base 150ms
slow 200ms · slower 300ms
When to use it
- Use for
- analytics, admin, finance, ops consoles, internal tools, docs for data products
- Avoid for
- marketing landing pages, big-type storytelling
- Signature
- 13-14px UI, 36px table rows, sticky header on bg-subtle, right-aligned tabular-nums slashed-zero numbers; delta chips (text-success on bg-success-subtle); panels separated by border-line-subtle, shadows only on floating layers (shadow-2/3); filters in the URL.
- Don't
- hero-size type, decorative gradients, a second accent in chrome (chart palette is separate).
Install
One import after the base, plus the fonts. Every component keeps working.
packages/tokens/css/directions/instrument.css/* src/app/globals.css */
@import "tailwindcss";
@import "@void/tokens/base.css";
@import "@void/tokens/directions/instrument.css";// src/app/layout.tsx
import { IBM_Plex_Sans, IBM_Plex_Mono } from "next/font/google";
const sans = IBM_Plex_Sans({ subsets: ["latin"], variable: "--font-plex-sans", display: "swap" });
const mono = IBM_Plex_Mono({ subsets: ["latin"], weight: ["400", "500"], variable: "--font-plex-mono", display: "swap" });