Every token and component on this page is rendered live with the production
stylesheet at /css/style.css — no copied styles, no
screenshots. If it looks wrong here, it looks wrong in production. Brand Vol. 01
(July 2026): a monochrome reader with one break of Signal red, three type roles,
and a counting rule for every number a reader trusts.
Color
The brand palette lives in :root as --ps-* tokens. The
site's older alias names (--ink, --gray-*, --paper,
--rule) are repointed onto the brand palette, so every existing rule
inherits the new colours without being rewritten.
The one-signal rule. Signal red appears exactly once per view, and on the
site it lives only in the masthead mark. This page respects that: the swatch below is the
single instance of red on the whole page. Nothing else is coloured with it.
Brand palette — --ps-*
Swatch
Token
Hex
Usage
--ps-ink
#0E1417
Type, mark, masthead + footer ground. The near-black.
--ps-stock
#EEF1F0
Page background; reversed type on ink chrome.
--ps-signal
#C8102E
The break — one per view, and it lives in the masthead mark. Never sprinkled.
--ps-slate
#3A464D
Body copy, secondary text, meta/labels. Passes AA on stock (8.54:1).
--ps-mist
#7E8B92
AA-fail 3.08:1
Large-text / decorative only. Not used for small text — site meta
was darkened to Slate for this reason. Survives only in --link-underline
(a hairline decoration, not text).
--ps-rule
#D2D8D7
Hairlines, borders, section rules.
--ps-stockdeep
#E4E9E8
Alternating zebra bands, quiet fills (aliased to --gray-100).
--ps-card
#FFFFFF
Surfaces, tables, leaderboard cards (raised above the stock page).
Site aliases — repointed onto the brand palette
Swatch
Alias
Points to
Usage / note
--ink
--ps-ink
Primary text, headings.
--ink-soft
--ps-slate
Dissent / quote body.
--gray-900 … 500
--ps-slate
Secondary text, meta, labels. AA-pass — was Mist, darkened to Slate.
--gray-400
--ps-slate
List markers, underlines — darkened for the same a11y reason.
--gray-300 / 200
--ps-rule
Borders, dashed link underlines.
--gray-100
--ps-stockdeep
Zebra bands, subtle fills.
--paper
--ps-stock
Body background.
--rule
--ps-rule
Standard hairline.
--rule-strong
--ps-ink
Emphatic rule (Take Away top border, dissent left bar).
--link
--ps-ink
Link colour.
--link-underline
--ps-mist
Link underline hairline (decorative, so Mist is allowed here).
:root tokens
/* Brand tokens (Vol. 01) */--ps-ink: #0E1417;
--ps-stock: #EEF1F0;
--ps-signal: #C8102E; /* one per view; masthead mark only */--ps-slate: #3A464D;
--ps-mist: #7E8B92; /* AA-fail on stock 3.08:1 — large/decorative only */--ps-rule: #D2D8D7;
--ps-stockdeep: #E4E9E8;
--ps-card: #FFFFFF;
/* Site aliases repointed onto the brand palette */--ink: var(--ps-ink);
--gray-500: var(--ps-slate); /* meta/labels — Slate passes 8.54:1 */--paper: var(--ps-stock);
--rule: var(--ps-rule);
--link-underline: var(--ps-mist);
Typography
Three roles, three families. Voice carries the argument, Interface runs the
machinery, and Evidence sets every number a reader is asked to trust.
Voice · --font-serif
Source Serif 4
Headlines, the closer, deks, standfirsts. The editorial voice. Applied to
.report-thematic, .reader h2, .pattern-title,
.archive-title, .closer.
Interface · --font-sans
Inter
Body copy, navigation, labels, buttons. The default — everything not a
headline and not a countable number.
Evidence · --font-mono
IBM Plex Mono
Dates, counts, scores, ranks, credits. Every number a reader trusts —
the counting rule.
The counting rule. Every number a reader is asked to trust — dates, signal
counts, scores, ranks, credits — is set in IBM Plex Mono. Nothing decorative is ever set in
mono, and nothing countable is ever set in anything else. In CSS this is a mono allow-list:
.eyebrow, .archive-meta, .report-hero-credit,
.lb-flow-num, .col-rank, .col-mentions,
.scoring-table .num, .signal-quality-score,
.archive-tab-count.
Type scale — real specimens
.report-thematic · Voice · 1.85rem / 800 · the page hero line
The field is louder about agents than it is sure about them.
.reader h2 · Voice · 1.55rem / 800 · top rule · section head
.reader p · Interface · 1.0625rem / 1.7 · body copy
The industry press keeps publishing the confident version of the story while
the practitioner community keeps publishing the caveats. Held side by side, the
asymmetry is the signal.
.eyebrow · Evidence · 0.72rem / 600 · uppercase · date range
Confidence is cheap this quarter; the caveats are where the work is.
Type scale markup
<h1class="report-thematic">The field is louder…</h1><h2>Industry Leaderboard</h2><h3class="pattern-title">Design systems are absorbing…</h3><h3>Primary signals from industry</h3><p>The industry press keeps publishing…</p><pclass="eyebrow">Jul 14 – Jul 20, 2026</p><pclass="closer">Confidence is cheap this quarter…</p>
Buttons & Controls
The site has no form buttons — its controls are navigation pills, a disclosure toggle,
and archive tabs. Each is shown here in its default and active states.
.cadence-pill — masthead nav (renders on ink)
.is-active inverts to a white fill; the plain pill goes to #1a1a1a
on hover. .masthead-archive is a quieter uppercase text link that lives beside
the pills. Focus ring flips to white on ink (see States).
.scoring-disclosure summary — a pill-shaped <details> toggle
How we ranked these patterns
Industry patterns are ranked by distinct publishers first — more
publishers backing a position means more independent voices, not one prolific writer.
Native <details>, no JS. The marker is hidden and replaced by a rotating
▾ that points down when open. Try opening it — the summary hover/focus fill is
the same treatment used everywhere.
.scoring-disclosure markup
<detailsclass="scoring-disclosure"><summary>How we ranked these patterns</summary><pclass="scoring-rule">Industry patterns are ranked by <strong>distinct publishers</strong>…</p><!-- scoring-table follows --></details>
.archive-tab — cadence tabs with count pill
.is-active underlines with an ink border and inverts the count pill to
ink-on-white. The count is set in mono (the counting rule).
The leaderboard is the site's signature surface: a raised white card carrying a
funnel, a ranked table, and a collapsible scoring disclosure. Zebra striping and
tabular-nums keep the numbers legible; every count is mono.
Framed as table stakes rather than a late-stage check.
27
4
Research ops quietly re-centralizes
19
The funnel (.lb-flow) wraps to two columns at 640px and one at 360px; arrows
hide on wrap. Rows 1–3 anchor-link to their pattern blocks below the table; rows 4+ are
plain. Zebra bands use --gray-100; ranks and counts are mono, right-aligned,
tabular.
The editorial primitives that carry an issue — the hero, the two flavours of
blockquote, the signal lists, the take-away footnote, the closer, and the
signal-quality footer.
.report-hero + .report-hero-credit
A quiet studio at dusk · Qwen-Image · July 2026
Full-bleed within the reader column, 4px radius. Credit is mono (counting rule — it's a credit line).
This pattern showed up in six publications but almost never in the practitioner threads — an industry story the community hasn't picked up yet.
Not everyone agrees. A vocal minority argued the agent framing is premature and that the tooling isn't there to back the claims.
Both share an ink left-bar and a ::before label (DISSENT /
VISIBILITY). Same shape, different label — the label is generated in CSS,
not typed in the markup.
.dissent / .visibility markup
<pclass="visibility">This pattern showed up in six publications…</p><pclass="dissent">Not everyone agrees…</p><!-- The "Dissent" / "Visibility" labels are CSS ::before, not markup -->
Disc markers in muted grey; the author is a small slate suffix. Community lists use the "The r/{name} subreddit" phrasing.
.signal-list markup
<ulclass="signal-list"><li><ahref="…"rel="noopener"target="_blank">Designing for agent hand-off</a><spanclass="signal-author">— A. Rivera</span></li><li>The <ahref="…">r/UXDesign</a> subreddit</li></ul>
.closer & .notably-absent — the Take Away close
Confidence is cheap this quarter; the caveats are where the work is.
Notably absent this week: any serious discussion of what agent design costs the people who have to maintain it.
The closer (Voice serif, heavy) sits above the rule; the "notably absent" footnote sits
below it as the quieter meta-observation. Order matters — the ink rule separates the
editorial close from the note of absence.
.closer / .notably-absent markup
<pclass="closer">Confidence is cheap this quarter…</p><pclass="notably-absent"><spanclass="notably-absent-label">Notably absent this week:</span> any serious discussion…</p>
.signal-quality — editorial confidence footer
The score is mono (counting rule); the note is italic mist. Renders only when a composite score exists.
.signal-quality markup
<footerclass="signal-quality"aria-label="Editorial signal quality"><spanclass="signal-quality-label">Editorial signal</span><spanclass="signal-quality-score">4.2 / 5</span><spanclass="signal-quality-note">— per-section composite…</span></footer>
Navigation
Two ink chrome bars bracket every page — the masthead (mark + cadence pills) and the
footer (copyright + wordmark). The archive adds cadence tabs and pagination.
.masthead — the ink header (the one place Signal red lives)
The reversed horizontal lockup carries the single instance of Signal red in the offset
rule of the mark. Inner content maxes at 1080px. Logo drops to 30px under 640px.
.masthead markup
<headerclass="masthead"role="banner"><divclass="masthead-inner"><aclass="masthead-logo"href="/"aria-label="Patterns and Signals — home"><imgsrc="/images/ps-horizontal-reversed.svg"alt="Patterns and Signals"></a><navclass="masthead-nav"aria-label="Primary"> … </nav></div></header>
.footer — the ink footer
Centered column: copyright then wordmark, both centered at every width. The wordmark is white on ink.
Predicted needs on the property's trajectory, spec'd lightly so the visual language is
already decided when it's time to build. Each stays inside the monochrome-plus-one-break
system and the counting rule.
1 · .bluf-marker — the Bottom-Line-Up-Front break
The brand rulebook names a second legitimate home for Signal red: "on the BLUF marker."
A short, single lead sentence per issue could carry a red marker — the one break for that
view — replacing the masthead as the red instance on issue pages that lead with a BLUF.
Would need the one-signal rule enforced at the template level (red in the mark or
the BLUF, never both).
Proposed .bluf-marker
/* one break per view — mutually exclusive with the masthead mark's red */.bluf { border-left: 4px solid var(--ps-signal); padding-left: 1rem; }
.bluf-marker { font-family: var(--font-mono); color: var(--ps-signal);
text-transform: uppercase; letter-spacing: 0.1em; font-size: 0.7rem; }
<pclass="bluf"><spanclass="bluf-marker">Bottom line</span> The field is louder than it is sure.</p>
2 · .register-split — Industry ⇄ Community side-by-side
The whole editorial premise is the asymmetry between what industry publishes and what
the community discusses. On wide viewports the two leaderboards could sit in a two-column
split so the asymmetry is visible at a glance rather than by scrolling. Collapses to the
current stacked order below 900px.
3 · .trend-sparkline — a pattern's rank across issues
With an archive of weekly + monthly issues, a pattern's movement over time is the natural
next signal. A tiny inline sparkline (mono-labelled, ink stroke, no second colour) beside a
pattern title would show whether it's climbing or fading — evidence, so any numeric label is
mono.
4 · .mitopromo-card — the cross-promo that fills .mitopromo-slot
.mitopromo-slot already exists as an empty hole in issue.html,
styled to add a top rule only when filled. The card that lands in it is unbuilt. It should
read as a quiet aside, not an ad — Interface type, card surface, no red.