Best For
e-paper inspired / grayscale dashboard / halftone
A quiet, paper-toned interface organized by ink hierarchy and restrained halftone texture. Dense information, status and navigation remain distinct in a limited grayscale palette.
Best For
e-paper inspired / grayscale dashboard / halftone
Primary Move
Use #f5f3ea paper and #20211e ink for the primary text pair.
Watch Out
Do not claim support for an e-paper device, refresh rate or gray-depth tier that was not tested.
design.md
One document describes the colour roles, type rules, spacing and component construction behind this style. Copy or download it into Claude Code or Codex.
Warm paper carries clear ink; grayscale and halftone appear only where they help organize information.
Theme: light
E-Ink treats a reading view, list or small data panel like a restrained printed page: warm paper beneath ink, with a few neutral grays for grouping, annotation and charts. The characteristic details are aligned numeric columns, short labels, fine rules and a deliberate reading order. Local halftone may mark a selected region or chart fill; body text stays solid and high-contrast. Status uses words and shapes together. Responsive layout, keyboard focus and reduced-motion preferences are stated explicitly. This is a web UI visual reference, not a hardware simulation or a claim that any screen refresh rate or bit depth has been tested.
Reference URL: <https://trmnl.com/framework/docs/3.4/open_source>
| Name | Value | Token | Role |
|---|---|---|---|
| Ink | #20211e | --e-ink-text | Body copy, headings, primary actions and focus outlines. The darkest strokes in the system. |
| Warm Paper | #f5f3ea | --e-ink-paper | Page ground and input fill. It is not a sepia filter; all body copy must remain clear against it. |
| Graphite | #555750 | --e-ink-muted | Secondary copy, chart strokes, metadata and short labels, while retaining readable contrast. |
| Rule Gray | #bab9b0 | --e-ink-rule | Card borders, dividers and non-critical grids. Never use it for body text. |
| Reading Surface | #e6e4da | --e-ink-panel | A quiet surface for list groups, table rows or a selected reading card. |
| Role | Family | Weight | Size | Line Height | Letter Spacing | Token |
|---|---|---|---|---|---|---|
| display | sans | 600 | 36px | 1.2 | -0.02em | --text-display |
| heading | sans | 600 | 28px | 1.3 | -0.01em | --text-heading |
| subheading | sans | 500 | 20px | 1.35 | — | --text-subheading |
| body | sans | 400 | 16px | 1.55 | — | --text-body |
| body-compact | sans | 400 | 13px | 1.5 | — | --text-body-compact |
| data | mono | 600 | 16px | 1.35 | 0 | --text-data |
| label | sans | 600 | 12px | 1.4 | 0.06em | --text-label |
Base unit: 4px Density: comfortable
| Name | Value | Token |
|---|---|---|
| 4 | 4px | --spacing-4 |
| 8 | 8px | --spacing-8 |
| 12 | 12px | --spacing-12 |
| 16 | 16px | --spacing-16 |
| 20 | 20px | --spacing-20 |
| 24 | 24px | --spacing-24 |
| 32 | 32px | --spacing-32 |
| 48 | 48px | --spacing-48 |
| Element | Value |
|---|---|
| cards | 0 |
| buttons | 0 |
| inputs | 0 |
| badges | 0 |
Role: The screen's primary action
Ink fill on paper, square corners and 12–16px padding. Set the label at 14px/600; keyboard focus uses a 2px ink outline offset by 2px. Do not make an icon the sole cue.
Role: A reading list row or summary item
Separate rows with one 1px rule; set indexes and numeric values in mono. Wrap supporting copy instead of shrinking below 12px. A selected row carries both a word label and an ink rule on the left.
Role: Search, filter and short-form input
Warm-paper fill, a 1px neutral rule and a 44px minimum height. Keep placeholder contrast readable, provide a visible label and show a 2px keyboard focus outline.
Role: A decorative background or grayscale chart fill
Limit the halftone to decorative blocks or chart fills, with dots at least 5px apart. Keep text and controls solid so the pattern cannot break letter edges. Retain labels and a legend whenever shades encode different values.
Role: Progress, connectivity and alerts
Pair a grayscale mark with a filled or hollow shape and an adjacent word such as “Done” or “Offline”. A dot is never the only status carrier; errors and warnings do not invent a new hue.
| Level | Name | Value | Purpose |
|---|---|---|---|
| 0 | Warm Paper | #f5f3ea | Page background, long-form reading surface. |
| 1 | Reading Surface | #e6e4da | Grouped list rows, static cards and table cells. |
| 2 | Pressed Area | #bab9b0 | Pressed state, chart marker and secondary rule, with a text or shape cue. |
none; use a single divider or offset hatch.none; use a 2px ink outline and a text marker.Prefer whitespace, readable tables and a few line drawings. Limit halftone to local chart fills. Do not copy TRMNL marks, third-party fonts, device shells or promotional images. Ask the agent to verify image rights and retain source attribution when actual imagery is needed.
Cap regular desktop content at 1120px. Use an 800×480 preview ratio only as an example canvas for e-paper screens, then collapse to one readable column on narrow screens. Prefer aligned one- or two-column grids and mono values; give dense tables an explicit small-screen collapse or scroll strategy instead of squeezing copy.
QUICK COLOR REFERENCE:
#20211e#f5f3ea#555750#bab9b0#e6e4daEXAMPLE COMPONENT PROMPTS:
monochrome) — Both avoid hue. E-Ink adds device status, aligned data and a reading-oriented density.data-dense) — Both handle dense information. E-Ink uses fewer fields, paper grouping and non-color state cues.blueprint) — Both annotate technical content. Blueprint drafts on blue; E-Ink reads on paper.This specification describes web art direction. It does not include the TRMNL runtime, e-paper control instructions, tone-quantization algorithms or vendor fonts. A real-screen preview must connect a target device, name its model and color depth, and separately inspect text edges, pagination and refresh behavior.
If preview values do not come from a connected device, label them as examples; do not invent temperatures, online state or update times and imply they are being collected.
:root {
/* Colors */
--e-ink-text: #20211e;
--e-ink-paper: #f5f3ea;
--e-ink-muted: #555750;
--e-ink-rule: #bab9b0;
--e-ink-panel: #e6e4da;
/* Typography — Font Families */
--font-sans: 'Public Sans', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
--font-mono: 'System Mono', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
/* Typography — Scale */
--text-display: 36px;
--leading-display: 1.2;
--tracking-display: -0.02em;
--text-heading: 28px;
--leading-heading: 1.3;
--tracking-heading: -0.01em;
--text-subheading: 20px;
--leading-subheading: 1.35;
--text-body: 16px;
--leading-body: 1.55;
--text-body-compact: 13px;
--leading-body-compact: 1.5;
--text-data: 16px;
--leading-data: 1.35;
--tracking-data: 0;
--text-label: 12px;
--leading-label: 1.4;
--tracking-label: 0.06em;
/* Typography — Weights */
--font-weight-regular: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--font-weight-bold: 700;
/* Spacing */
--spacing-unit: 4px;
--spacing-4: 4px;
--spacing-8: 8px;
--spacing-12: 12px;
--spacing-16: 16px;
--spacing-20: 20px;
--spacing-24: 24px;
--spacing-32: 32px;
--spacing-48: 48px;
/* Layout */
--page-max-width: 1120px;
--section-gap: 40px;
--card-padding: 20px;
--element-gap: 8px;
--density: comfortable;
/* Border Radius */
--radius-cards: 0;
--radius-buttons: 0;
--radius-inputs: 0;
--radius-badges: 0;
/* Surfaces */
--surface-warm-paper: #f5f3ea;
--surface-reading-surface: #e6e4da;
--surface-pressed-area: #bab9b0;
}
Component Templates
A high-contrast primary action with square edges and a visible focus ring.
FAQ
/* E-Ink: optional, decorative paper grain; content remains legible without it. */
:root {
--e-ink-paper: #f5f3ea;
--e-ink-text: #20211e;
--e-ink-muted: #555750;
--e-ink-rule: #bab9b0;
--e-ink-panel: #e6e4da;
}
[data-eink-grain="true"] {
background-image: radial-gradient(#555750 0.55px, transparent 0.65px);
background-size: 5px 5px;
}Related Styles
Explore these styles for ready-made tokens and components.
E-Ink and Soft Utility sit closest to each other. The table below gives the real differences in color, use case, and tags, so the choice between them is made on facts.
| Attribute | E-Ink | Soft Utility |
|---|---|---|
| Primary color | #20211e | #2d5b63 |
| Secondary color | #f5f3ea | #f4f8f6 |
| Best for | e-paper inspired / grayscale dashboard / halftone | utility app / mobile app / productivity |
| Unique tags | texture-heavy | — |
E-Ink organizes readable information with limited grays on a warm paper ground; it does not dress a web page up as a particular piece of hardware.