W3C Design Tokens
3 filesCross-tool design-token spec (DTCG/W3C). Light + dark mode siblings.
The Washington Post is the capital-bureau paper of record — serious, accountability-driven, with a brand voice built around the tagline "Democracy Dies in Darkness." The Washington Post Design System (WPDS) makes the brand legible at the token level: near-black ink on white, a deliberate primary blue for CTAs and trusted-source links, deep newsroom red for breaking-news emphasis, and a published 9-step gray scale. The proprietary Postoni Wide (display serif) and Franklin (sans) typefaces carry the editorial voice.
Use the [email protected] brand from brand-atoms.com.
Fetch https://brand-atoms.com/dist/brands/wapo/1.0.0/json/brand.json
and apply its role mappings (primary, accent, identity, etc.),
reference the fonts in references.fonts, and honor every rule where
severity is "error". Surface any deviation you choose to make.
All converter outputs for [email protected]. Served from
/dist/brands/wapo/1.0.0/.
Cross-tool design-token spec (DTCG/W3C). Light + dark mode siblings.
Plain JSON mirror of the resolved brand — palette, fonts, roles, rules.
CSS custom properties on :root with prefers-color-scheme dark.
SCSS variables + Sass maps for swatches, roles, and fonts.
Tailwind v3 theme.extend.colors + fontFamily.
Figma Tokens plugin JSON (Tokens Studio compatible).
Swift enums for SwiftUI / UIKit color + font tokens.
Kotlin objects for Jetpack Compose color + typography tokens.
Human-readable brand guide. Same source as the on-page Brand Guide.
Inline rendering of the Markdown brand guide. Same source as the
markdown/brand-guide.md download.
The Washington Post is the capital-bureau paper of record — serious, accountability-driven, with a brand voice built around the tagline "Democracy Dies in Darkness." The Washington Post Design System (WPDS) makes the brand legible at the token level: near-black ink on white, a deliberate primary blue for CTAs and trusted-source links, deep newsroom red for breaking-news emphasis, and a published 9-step gray scale. The proprietary Postoni Wide (display serif) and Franklin (sans) typefaces carry the editorial voice.
Tags: washington-post, wapo, news, journalism, brand, blue, serif, light-first
The Washington Post · [email protected] · Proprietary brand identity; design-token source code under repository license
The Washington Post palette, captured from the open-source Washington Post Design System (WPDS) tokens. The brand is a near-black ink ("gray20") on white, with a deliberate blue primary CTA (the WPDS "blue100") and a deep newsroom red reserved for breaking-news and emphasis. WPDS exposes a full 9-step gray scale and tonal ramps across blue, red, orange, green, gold, teal, purple, and pink.
| Role | Font | License | Classification |
|---|---|---|---|
heading |
Playfair Display ([email protected]) |
OFL-1.1 | serif |
body |
PT Serif ([email protected]) |
OFL-1.1 | serif |
sans |
Inter ([email protected]) |
OFL-1.1 | sans-serif |
mono |
JetBrainsMono Nerd Font ([email protected]) |
OFL-1.1 | monospace |
| ID | Name | Value |
|---|---|---|
gray-0 |
Gray 0 | #000000 |
gray-20 |
Gray 20 | #111111 |
gray-40 |
Gray 40 | #2A2A2A |
gray-60 |
Gray 60 | #494949 |
gray-80 |
Gray 80 | #666666 |
gray-100 |
Gray 100 | #737373 |
gray-200 |
Gray 200 | #AAAAAA |
gray-300 |
Gray 300 | #D4D4D4 |
gray-400 |
Gray 400 | #E9E9E9 |
gray-500 |
Gray 500 | #F0F0F0 |
gray-600 |
Gray 600 | #F7F7F7 |
gray-700 |
Gray 700 | #FFFFFF |
blue-40 |
Blue 40 | #0A3258 |
blue-60 |
Blue 60 | #0F4B84 |
blue-80 |
Blue 80 | #1366B3 |
blue-100 |
Blue 100 | #166DFC |
blue-200 |
Blue 200 | #5784C5 |
red-60 |
Red 60 | #8E1F1B |
red-80 |
Red 80 | #BE2C25 |
red-100 |
Red 100 | #EA0017 |
orange-80 |
Orange 80 | #D86100 |
green-80 |
Green 80 | #499327 |
gold-60 |
Gold 60 | #9E6105 |
| Role | Swatch | Hex |
|---|---|---|
background |
gray-700 |
#FFFFFF |
surface |
gray-600 |
#F7F7F7 |
surface-elevated |
gray-700 |
#FFFFFF |
text-primary |
gray-20 |
#111111 |
text-secondary |
gray-60 |
#494949 |
text-tertiary |
gray-80 |
#666666 |
primary |
blue-100 |
#166DFC |
primary-hover |
blue-80 |
#1366B3 |
accent |
red-80 |
#BE2C25 |
accent-hover |
red-60 |
#8E1F1B |
warning |
orange-80 |
#D86100 |
error |
red-100 |
#EA0017 |
success |
green-80 |
#499327 |
border |
gray-300 |
#D4D4D4 |
| Role | Swatch | Hex |
|---|---|---|
background |
gray-20 |
#111111 |
surface |
gray-40 |
#2A2A2A |
surface-elevated |
gray-60 |
#494949 |
text-primary |
gray-700 |
#FFFFFF |
text-secondary |
gray-400 |
#E9E9E9 |
text-tertiary |
gray-300 |
#D4D4D4 |
primary |
blue-200 |
#5784C5 |
primary-hover |
blue-100 |
#166DFC |
accent |
red-80 |
#BE2C25 |
accent-hover |
red-100 |
#EA0017 |
warning |
orange-80 |
#D86100 |
error |
red-100 |
#EA0017 |
success |
green-80 |
#499327 |
border |
gray-60 |
#494949 |
| Role | Swatch | Hex |
|---|---|---|
identity |
gray-700 |
#FFFFFF |
on-identity |
gray-20 |
#111111 |
primary |
blue-100 |
#166DFC |
primary-hover |
blue-80 |
#1366B3 |
accent |
red-80 |
#BE2C25 |
accent-hover |
red-60 |
#8E1F1B |
mark |
gray-0 |
#000000 |
success |
green-80 |
#499327 |
warning |
orange-80 |
#D86100 |
error |
red-100 |
#EA0017 |
text-primary-light |
gray-20 |
#111111 |
text-primary-dark |
gray-700 |
#FFFFFF |
background-light |
gray-700 |
#FFFFFF |
background-dark |
gray-20 |
#111111 |
surface-light |
gray-600 |
#F7F7F7 |
surface-dark |
gray-40 |
#2A2A2A |
text-secondary-light |
gray-60 |
#494949 |
text-tertiary-light |
gray-80 |
#666666 |
border-light |
gray-300 |
#D4D4D4 |
| Role | Font role key |
|---|---|
display |
heading |
prose |
body |
ui |
sans |
code |
mono |
contrastRatio → text-primarybackground7WCAG-AAAGray 20 (#111111) on white gives ~19:1 — well past AAA. WPDS treats the gray-20-on-gray-700 pair as the canonical text/background combination for body prose; the accountability-journalism voice and long article sessions justify the AAA enhanced contrast target.
colorChoice → roles.colors.primaryWPDS scopes blue as the primary CTA and trusted-link family. Substituting red (the breaking-news emphasis color) for the primary role would collapse two distinct semantic meanings in the design system — links and emergencies.
contextRestriction → roles.colors.accentThe WaPo red (red-80 / red-100) carries breaking-news and editorial-category meaning in WPDS. Using it as a default CTA color would dilute the semantic weight and conflict with WPDS role mappings (cta = blue100).
fontPairing → typography.displayprose1.5WaPo pairs Postoni Wide (a tall display serif) with Franklin for sans headings and Franklin / serif for body. The display-to-prose hierarchy is a defining element of the article-page identity; a 1.5× minimum size ratio preserves it when open-source substitutes stand in.
forbiddenTreatment → logoThe Old English wordmark is the institutional mark of the paper. Recoloring, rotation, gradients, or skewing conflict with the brand's voice of authority and the published WPDS asset guidance.
accessibilityRequirement → *WCAG-AAA1.4.6WCAG 2.1 Success Criterion 1.4.6 (Contrast Enhanced) — Level AAA. WaPo's accountability-journalism mission and its long-form article format justify the enhanced 7:1 target.
enumMembership → typography.heading.fontWeightPostoni Wide ships in Regular through Black. Heading weights below Regular and synthetic Heavy beyond the Black cut would degrade the masthead-character of WaPo display type.
compositionConstraint → roles.colors.primaryBlue 100 on the white canvas or against ink reads cleanly as a link or CTA. Placing it adjacent to the breaking-news red collapses the editorial-color hierarchy that WPDS establishes between informational blue and urgency red.
Proprietary brand identity; design-token source under repository license2026-05-19Generated by the brand-atoms converter. Source: [email protected] from the encyclopedia.
Every block below renders from the resolved palette + font references on this brand. Swap the brand and the same template re-themes — no per-brand component code required.
Body copy renders in the brand's prose font on the brand's background.
Inline links and highlighted phrases pick up
the brand's primary and highlight roles. Code spans like brand.references.palette
fall back to the monospace face.
A blockquote uses the brand's accent color as its rule. Useful for pulling tagline copy out of running prose.
Neutral status — provides supplemental context without urgency. Uses the brand's primary as the rule.
Confirms a completed action — palette role success determines the rule color.
Calls out something that needs attention but isn't an error — palette role warning.
Surfaces a failure that blocks progress — palette role error. Use sparingly.
| Role | Resolves to | Mode |
|---|---|---|
| primary | brand color #1 | light + dark |
| accent | brand color #2 | light + dark |
| warning | brand warning | light + dark |
| error | brand error | light + dark |
[email protected][email protected][email protected][email protected][email protected]Brand-level role overrides on top of palette-default mappings. Each role resolves to a concrete swatch or font reference.
→ red-80 #BE2C25 → red-60 #8E1F1B → gray-20 #111111 → gray-700 #FFFFFF → gray-300 #D4D4D4 → red-100 #EA0017 → gray-700 #FFFFFF → gray-0 #000000 → gray-20 #111111 → blue-100 #166DFC → blue-80 #1366B3 → green-80 #499327 → gray-40 #2A2A2A → gray-600 #F7F7F7 → gray-700 #FFFFFF → gray-20 #111111 → gray-60 #494949 → gray-80 #666666 → orange-80 #D86100 → mono JetBrainsMono Nerd Font → heading Playfair Display → body PT Serif → sans Inter → red-80 → red-60 → gray-700 → gray-300 → red-100 → blue-100 → blue-80 → green-80 → gray-600 → gray-700 → gray-20 → gray-60 → gray-80 → orange-80 → red-80 → red-100 → gray-20 → gray-60 → red-100 → blue-200 → blue-100 → green-80 → gray-40 → gray-60 → gray-700 → gray-400 → gray-300 → orange-80 contrastRatio text-primary against background minRatio 7 standard WCAG-AAA Gray 20 (#111111) on white gives ~19:1 — well past AAA. WPDS treats the gray-20-on-gray-700 pair as the canonical text/background combination for body prose; the accountability-journalism voice and long article sessions justify the AAA enhanced contrast target.
colorChoice roles.colors.primary allowed blue-100, blue-80, blue-60 forbidden red-100, red-80, orange-80 WPDS scopes blue as the primary CTA and trusted-link family. Substituting red (the breaking-news emphasis color) for the primary role would collapse two distinct semantic meanings in the design system — links and emergencies.
contextRestriction roles.colors.accent forbiddenContexts default-link, body-emphasis, default-cta allowedContexts breaking-news, editorial-emphasis, opinion-tag, live-update The WaPo red (red-80 / red-100) carries breaking-news and editorial-category meaning in WPDS. Using it as a default CTA color would dilute the semantic weight and conflict with WPDS role mappings (cta = blue100).
fontPairing typography.display requires prose minSizeRatio 1.5 WaPo pairs Postoni Wide (a tall display serif) with Franklin for sans headings and Franklin / serif for body. The display-to-prose hierarchy is a defining element of the article-page identity; a 1.5× minimum size ratio preserves it when open-source substitutes stand in.
forbiddenTreatment logo treatments stretched, rotated, recolored, drop-shadow, gradient-fill, on-busy-photo The Old English wordmark is the institutional mark of the paper. Recoloring, rotation, gradients, or skewing conflict with the brand's voice of authority and the published WPDS asset guidance.
accessibilityRequirement * standard WCAG-AAA criterion 1.4.6 WCAG 2.1 Success Criterion 1.4.6 (Contrast Enhanced) — Level AAA. WaPo's accountability-journalism mission and its long-form article format justify the enhanced 7:1 target.
enumMembership typography.heading.fontWeight allowed 400, 500, 600, 700, 900 Postoni Wide ships in Regular through Black. Heading weights below Regular and synthetic Heavy beyond the Black cut would degrade the masthead-character of WaPo display type.
compositionConstraint roles.colors.primary pairsWith gray-700, gray-20, gray-600 doesNotPairWith red-80, red-100 Blue 100 on the white canvas or against ink reads cleanly as a link or CTA. Placing it adjacent to the breaking-news red collapses the editorial-color hierarchy that WPDS establishes between informational blue and urgency red.
Proprietary brand identity; design-token source under repository license2026-05-19