Refined
Brutalism

The governing design system for imjustdex.com — a printed, rigid, inevitable editorial brand. This guide is not a description of the system. It is the system. The masthead, footer, type, color, grid, and components you see on this page are the exact same files every production surface runs. If a rule fails here, it fails everywhere.
System Scope

This guide governs the full Dexter Jakes brand across every surface: imjustdex.com (editorial site), social carousels, post graphics, story formats, presentation decks, print, merch, signage, motion, and any future medium. It is not an aspirational document — it is the operating system.

What this document controls: logo usage, color, typography, component design, editorial voice, microcopy, structural rules, social templates, platform adaptation, accessibility, responsive behavior, interaction states, and motion. If a decision is not addressed here, it defaults to the nearest existing rule — not to the designer’s preference.

What this document does not control: content strategy, publishing cadence, topic selection, audience targeting, or third-party platform UI the brand cannot modify. Those are editorial and operational decisions, not design-system decisions.

Enforcement principle: this system should not require taste to apply correctly. If an implementer follows every rule here and produces something that looks wrong, the document is incomplete — not the implementer. File the gap. Update the guide.

Dogfood rule. The /brand page runs the same tokens.css, shell.css, plates.css, home-augment.css, and article.css as the live site. Component demos below Section 13 render production classes directly — not guide clones. If a live component breaks, this page breaks too. That is intentional.

00. Logo — DX Monogram

The Dexter Jakes monogram — “DX” — set in False Regular. Two letters, no tagline, no explanation. The mark carries the same weight as the writing: dense, architectural, unapologetic.

On Light
Primary — #050505 on #f4f4f1
On Dark
Inverse — #ffffff on #060606
On Accent
Restricted — #ffffff on var(--accent). Brand-mark context only.

Usage Rules

  • Typeface: False Regular — never substitute, never outline, never warp. Delivered as outlined SVG paths; no runtime font dependency (see Typography Layer 1).
  • Minimum clear space: 1× the cap-height of the “D” on all sides.
  • Only three approved colorways: dark-on-light, white-on-dark, white-on-accent.
  • The on-accent colorway (white mark on #c00 ground) is a brand-mark presentation context only — it does not grant permission for red backgrounds in layouts, cards, banners, or any production surface. It exists for logo lockups, brand stamps, and identity moments. If the red ground extends beyond the logo’s clear-space boundary, it has exceeded its scope.
  • Never place the monogram on a busy image, gradient, or pattern without a solid backing panel.
  • No drop shadows, bevels, strokes, or effects — the letterforms are the design.
  • Never lock up with a tagline, wordmark, or secondary text adjacent to the mark.
  • Production pages serve the mark as a runtime-swapped <img> with data-base="/img/"mode.js rewrites the src between logo-dark.svg and logo-white.svg at the class flip.

Download Pack

↓  IMJUSTDEX Logo Pack

SVG · PDF · PNG (512 / 1024 / 2048 / 4096 px) — black (#050505) and white (#f4f4f1) variants. Google Drive.

01. Color System

Two authored modes. Light and dark are not audience-facing moods — they are editorial decisions. The mode toggle in the masthead above is the real, production mode toggle: a cookie-persisted user preference that controls every page on imjustdex.com. Flip it and watch the site respond. It is the same control served to every reader, not a preview.

Policy: no color may be introduced outside this palette. No opacity values may be created ad hoc — use only the defined alpha variants. Dark mode is a complete variable inversion, not a filter or overlay. Never mix light and dark elements on the same surface. If a new token is needed, it is added to tokens.css first — not in a component stylesheet.

--bg
#f4f4f1
--panel
#f8f8f6
--ink
#050505
--border
#0a0a0a
--accent
#c00
--rule
rgba(0,0,0,.14)
--body-color
rgba(5,5,5,.82)
--body-muted
rgba(5,5,5,.56)

02. Accent Red — #c00

Red marks editorial emphasis. Never decoration. It is the only color outside the monochrome palette, and its scarcity is what gives it power. Accent is for signal, not garnish. The moment red becomes frequent, it becomes invisible.

Hard limits. Maximum 1–2 accent moments per viewport on any surface. Maximum 4 per full article page across all scroll positions. Maximum 2 per carousel slide. If you are debating whether something needs red, it does not. Red is earned by function: section structure, scripture citation, callout emphasis, focus rings, and plate hover borders. Nothing else.

Background prohibition. Red is never used as a background fill on any surface — no red panels, no red cards, no red banners. The only exception is the on-accent logo colorway (white mark on red ground), which is a brand-mark context, not a layout context. If it fills more than a 3px line or a single text span, it has gone too far.

Stacking prohibition. No more than one red-led component may appear in the same module or viewport region unless the layout is intentionally designated as a high-emphasis moment (e.g., a section head directly above a scripture block). Two accent elements side by side is a signal. Three is noise.

Cross-surface rule. #c00 is the only red permitted on any DX surface — site, carousel, deck, print, merch, motion. Never warm it, never cool it, never lighten it, never use it at reduced opacity except where the system explicitly defines an alpha variant.

One structural red, both modes. --accent holds at #c00 in light and dark — same value, zero flip. WCAG non-text contrast (borders, fills, underlines, large display text) only requires 3:1, and #c00 on #060606 clears at 3.45:1. Every structural consumer of red — section rules, callout borders, scripture cites, plate hover borders, focus rings — stays on #c00 in both modes.

The small-text exception. AA normal text requires 4.5:1, which #c00 does not clear on #060606. A second token, --accent-text, handles this: #c00 in light, #ff4d4d in dark (7.54:1, AAA). Reserved for text-tier consumers only — inline link hover, uppercase micro-labels, sub-18px metadata, callout emphasis spans, scripture citation text. If the element is a line, fill, or border, it uses --accent. If it is readable type under 18px, it uses --accent-text.

Permitted
Section head labels + rule lines
Callout left border + emphasis spans
Scripture citation text
Stat block vertical bar
Identity tagline text
Article link underlines + hover
Plate border on hover
Focus-visible outline rings
Prohibited
Backgrounds
Titles (except section heads)
Navigation elements
Footer elements
Body text
Tags or metadata
Reading progress bar (uses --ink)

03. Typography

Layer 1 — Brand Mark Typography

Three distinct typographic layers. They do not overlap. Each has a single job and a hard boundary.

Typeface: False Regular. Used exclusively for the DX monogram. Never substituted, never approximated, never set in any other weight. The mark is always delivered as outlined SVG paths — the font file is a source asset, not a runtime dependency. No surface should ever require False Regular to be installed.

Scope: Logo only
Format: Outlined SVG paths
Runtime font dependency: None
Layer 2 — Editorial Display Typography

Two web fonts, surgically applied. Anton (self-hosted WOFF2) is the loaded display typeface — Impact and Haettenschweiler remain as system-native fallbacks in the stack. IBM Plex Sans (self-hosted WOFF2) is the body typeface. IBM Plex Sans Italic is self-hosted as a fourth file — the body sets font-synthesis: none site-wide, so faked italics are impossible. No Google Fonts dependency — every font is served from /fonts/.

--display · Anton / Impact · Titles, Headlines, Pull Quotes, Stat Blocks

The Structure Is the Beauty

--body · IBM Plex Sans · Article Body, Scripture, Long-form Reading

Every decision — border weight, title scale, metadata format, accent placement — exists to make every surface feel printed, rigid, and inevitable. If a change makes any artifact feel more like “content” and less like a “publication,” the change is wrong.

Layer 3 — Utility & Interface Typography

The mechanical layer. Metadata, navigation, tags, labels, eyebrows, slide numbers. Always uppercase, always monospaced or narrow. Never draws attention to itself — it stamps and recedes.

--mono · SF Mono / Fira Code / Cascadia Code / Courier New · Metadata, Tags, Section Heads, Navigation, Eyebrows

Faith · Identity · Work · Grief · 8 Min · Apr 19, 2026

--body · IBM Plex Sans · Homepage Plates, Base Interface Copy, Reading Copy

No highlight reel. Just the full human, documented.

Letter-Spacing Scale — 12 Semantic Slots

Every distinct tracking value on a brand surface earns its own token. No consolidation. At uppercase chrome sizes, a .03em delta is visibly perceptible side-by-side — collapsing near-neighbors would introduce drift on every tag chip, meta rail, and chrome label in the system.

Two directions, one doctrine. Negative tracking (--track-display, --track-title) is display-tier only — tight letterforms at h1, plate title, pull-quote scale read as editorial confidence. Never applied below 18px. Positive tracking (--track-brand through --track-eyebrow) is chrome and uppercase: the wider the tracking, the smaller and more label-like the element. Tiny eyebrows get .22em. Brand wordmark gets a restrained .03em.

Display Tier — Negative Tracking

--track-display   −.03em  ·  h1, plate titles, stat block, 404 headline
--track-title     −.02em  ·  pull-quote, nav title, identity tagline

Chrome Tier — Positive Tracking

--track-brand     .03em  ·  brand mark / wordmark only
--track-nav       .04em  ·  mode toggle, eyebrow date
--track-footer    .06em  ·  footer-strip items
--track-badge     .08em  ·  meta-rail, identity-sub, 404 actions
--track-chrome    .1em   ·  article meta, back button, share bar
--track-tag       .12em  ·  tag chip, stat microlabel, nav label
--track-teaser    .14em  ·  identity meta-rail, teaser date
--track-label     .15em  ·  section heads, scripture cite, CTA
--track-indicator .18em  ·  section indicator (fixed mark)
--track-eyebrow   .22em  ·  404 eyebrow (widest on the system)

Rule: every letter-spacing declaration in production CSS points at a --track-* token. Zero exceptions. Raw values are drift.

Font-Weight Scale — Binary

Font-weight is tokenized as a binary: regular and bold. No intermediate weights. The brand uses exactly two — 400 for all body and display type, 700 for all chrome, labels, tags, and strong emphasis. No medium, semibold, or black.

The Binary

--weight-regular   400  ·  body, display, drop caps, article copy
--weight-bold      700  ·  chrome, labels, tags, strong emphasis

Why binary? The tokens earn their keep by making the binary legible at the call site. var(--weight-bold) tells you the element belongs to the chrome vocabulary; 700 does not. A medium or semibold intermediate would dilute the hierarchy — the system’s whole visual logic depends on the gap between the two.

Exception: @font-face declarations hold raw 400 / 700 values because CSS custom properties do not resolve inside @font-face at-rules. This is a language constraint, not a drift.

Typography Scale — 19 Primitives, 19 Semantic Aliases

Every font-size in production CSS points at a semantic alias. The scale is a two-tier system: --size-1 through --size-19 hold raw rem and clamp() values; --text-* aliases give the call site its intent. Consumers declare what they are, not how big they are.

Why 19 steps and not 7. A modular scale would force every existing size to round up or down, breaking calibration tuned by eye across months of editorial work. Phase 5 clustered the 42+ raw values found in production CSS and snapped near-neighbors only where differences sat below the perception threshold (sub-pixel noise: .7rem ≈ .72rem, .8rem ≈ .82rem). Display sizes preserve every distinct clamp() — those were tuned with editorial intent and collapsing them would visibly shift the site.

Chrome & Body Tier

--text-meta       .6rem  ·  meta rail
--text-micro      .72rem  ·  micro label
--text-label      .75rem  ·  chip / eyebrow
--text-citation   .82rem  ·  scripture citation
--text-nav        .88rem  ·  nav chrome
--text-chrome     .92rem  ·  chrome-md — buttons, share bar
--text-body       1rem  ·  article body base
--text-lede       1.08rem  ·  article lede
--text-quote      1.15rem  ·  pull-quote base

Display Tier — Responsive Clamps

--text-h3         clamp(1.2rem, 2vw, 1.6rem)  ·  article h3, nav title
--text-tagline    clamp(1.35rem, 2.4vw, 2.4rem)  ·  identity tagline
--text-h2         clamp(1.6rem, 4vw, 2.4rem)  ·  pull quote, section h2
--text-stat       clamp(1.6rem, 5vw, 2.6rem)  ·  stat block
--text-plate      clamp(2rem, 4vw, 4rem)  ·  plate-title base
--text-plate-med  clamp(2.35rem, 5vw, 5rem)  ·  plate-title medium
--text-h1         clamp(2.8rem, 7vw, 5rem)  ·  article h1
--text-display    clamp(3rem, 10vw, 9rem)  ·  404 display
--text-plate-lg   clamp(3.5rem, 7vw, 7.2rem)  ·  plate-title large
--text-identity  clamp(3.8rem, 10vw, 7.5rem)  ·  identity name

Rule: every font-size declaration in production CSS points at a --text-* token. Consumers never reach past the alias to the primitive. If a new size is needed, add a primitive slot — do not inline a raw rem.

Line-Height Scale — 5 Slots

Five resolved leading values cover every surface on the brand. Display-tier headlines ride .86; pull quotes and h2/h3 ride 1.05; chrome rides 1.4; article body rides 1.7; the article lede rides 1.85. Anything outside this ladder is an editorial exception documented at the call site (drop cap multipliers, badge-style line-height: 1, the identity name’s .82).

The Ladder

--lh-display   .86  ·  headlines, plate mega, 404
--lh-tight     1.05  ·  h2, h3, pull quote
--lh-snug      1.4  ·  chrome, nav, meta
--lh-normal    1.7  ·  article body
--lh-loose     1.85  ·  article lede

04. Homepage Plate Grid

12-column CSS grid. Rows must sum to 12. Adjacent plates must never share the same background treatment — textures and plain surfaces alternate so every card contrasts its neighbor.

Policy. Plates are the homepage architecture. They are not cards, not tiles, not thumbnails. Every plate is a self-contained unit with a title, metadata, and a texture or color fill. Plates never contain body text, images of people, or calls to action. Plate borders are 3px solid — never reduced. Hover state: border shifts to var(--accent) plus a subtle scale. On mobile plates stack single-column but retain full border, texture, and typography. A plate that loses its structure on any breakpoint is a broken plate.

Plate variants. .plate-lead is the issue-opener — split body over image, latest-badge, lead-rail. Documented in full in Section 17. .plate-wide spans the row at plate-med scale. .plate-secondary is the three-up row cell. .plate-banner is a wide image-forward card. .plate-row is a modifier that drops the cell into a row layout (title + deck + meta rail on one line) for archive-density moments — see the Reckonings card at the bottom of the homepage.

Semantic rule. Every plate is a single block-level anchor — the whole card is the link. There are no nested focusable elements, no absolutely-positioned overlay links, no <article> wrappers with a separate <a> inside. The card’s semantics, its focus ring, and its hover state all live on one element. Non-negotiable for accessibility and predictable tab order.

Image plates stay dark in both modes. The grayscale filter and black-to-transparent gradient on image plates hold identically in light and dark. There is no invert(1) flip and no mirrored gradient. One visual field, both modes. Image plates never lighten.

Dexter Jakes

About

The Groan Beneath the Song

9 Min

The Nets Were Already Full

14 Min
Texture Classes

img-concrete

img-noise

img-lines

05. Article Components

Italic Doctrine

Italics are a real font, not a synthesized slant. IBMPlexSans-Italic.woff2 is preloaded alongside regular and bold. body { font-synthesis: none } is set site-wide — if the italic file fails to load, the browser falls back to upright text rather than producing a faked oblique. Scripture blocks, editorial emphasis inside body copy, and the rare titling italic all resolve to the authored file. Never set font-style: italic on a font that has no italic variant authored (Anton does not — never italicize display).

--body · IBM Plex Sans Italic · Scripture & Editorial Emphasis

“For we know that the whole creation groaneth and travaileth in pain together until now.”

Section Head

II. The Theology of Catching

Pull Quote · Max 2 Per Article

The net didn’t break because of the fish. It broke because they tried to carry the blessing alone.

Callout + Callout Emphasis

If your grace only extends to people whose Christ-brand enhances yours, it was never grace. It was partnership.

Scripture Block

And he said to them, “Follow me, and I will make you fishers of men.”

Matthew 4:19 (ESV)
Stat Block · Max 2 Per Article
The calling was never about the catch. It was about the leaving.
Reading Progress Bar
Section Indicator (Stamp) · Fixed Bottom-Left While Reading
III. What the Nets Actually Held

Stamped editorial mark. The indicator reads as a printed stamp, not a floating tooltip. No border-radius, no box-shadow, no hairline — just a content-weight hard border on var(--ink). An earlier pattern used a 1px rule + radius + shadow, which made it feel like a JavaScript chip hovering over the text. Pulled in favor of the stamp.

Meta Rail + Tag
9 Min Coming Soon Faith Identity
Research CTA · Links to Backing Study
This essay is built on a verse-by-verse study of the calling narratives across all three synoptic gospels. Read the Full Study →
Ghost Teaser Plate · Pre-Launch Placeholder

The Groan Beneath the Song

Publishing Apr 19
Coming Soon
Study Note · Scripture Articles · Collapsible Footnote
Psalms 13, 88 · Lament as Liturgy

The psalms of lament are the longest category in the psalter — more than the praise songs, more than the thanksgiving. That ratio alone is a doctrinal statement: the worship of Israel expected the worshipper to bring their grief, not leave it at the door. Psalm 88 never resolves. It ends in the dark. That the ancient liturgy included a prayer with no happy ending is the whole point — the full in-depth treatment is hosted in the essay itself (see The Groan Beneath the Song). The demo you’re reading is a shortened preview of the component’s behavior.

Component Governance

Pull Quote. Purpose: arrest the scroll, surface the single line that reframes the argument. Max 2 per article, max 1 per carousel. Never adjacent to a callout or stat block. Never within the first 300 words. Placement: between major sections, never opening or closing.

Callout. Purpose: editorial aside or reframing statement. Max 2 per article. Never adjacent to another callout or a pull quote. Never in the first paragraph. Must contain at least one emphasis span if making a pointed claim.

Scripture Block. Purpose: primary textual anchor. Max 3 per article, 1 per carousel slide. Never adjacent to another scripture block. Always includes book, chapter:verse, and translation abbreviation. Never paraphrased — exact text only.

Stat Block. Purpose: typographic emphasis on a single data point or declarative statement. Max 2 per article. Never adjacent to a pull quote. Never used for opinions — only verifiable claims or theological declarations.

Research CTA. Purpose: link to backing study or source material. Max 1 per article, always after the final section. Never mid-article. Never decorative — only appears when a real study exists.

Study Note. Purpose: collapsed footnote surfacing translation, historical, or cross-reference context without disrupting the reading flow. Pattern: <details class="study-note"> with a <summary> label and a body. Appears under the scripture block it annotates. No limit, but use sparingly — only when the context genuinely changes the reading. Closed by default. Keyboard-expandable (Enter / Space).

Ghost Teaser. Purpose: pre-launch placeholder. Only on homepage plates. Never on article pages. Removed the moment the article publishes.

Meta Rail + Tags. Purpose: classification and reading metadata. Always present. Tags are single-word categorical labels from the approved vocabulary. Never more than 3 tags per article. Read time is always shown.

Section Head. Purpose: structural division of the argument. Always numbered (Roman numerals). Always accompanied by the red rule line. Never skipped — every section gets one. Never nested. One level of hierarchy only.

Prohibited Pairings. Pull quote + callout in the same viewport. Two scripture blocks within 200 words of each other. Stat block immediately following a pull quote. Any ornamental component used without editorial purpose.

Responsive Behavior by Component. Pull quotes: full-width within the article frame at all breakpoints; font-size scales via clamp() but never below 1.4rem. Callouts: left border and padding unchanged; text reflows naturally. Scripture blocks: maintain 2px left border; citation wraps below verse text below 480px. Stat blocks: bar + text remain side by side above 480px; stack vertically below. Meta rail: items wrap; never truncated. Tags: always visible, never collapsed into a “more” dropdown. Ghost teasers: maintain full structure at all widths; title scales down but never hides. Study note: summary wraps onto 2 lines if needed; body reflows with the article frame.

06. Editorial Voice

The writing voice is Poetic Brutalism + Dry Humor. Like brutalist architecture: raw material, no ornamentation, the structure is the beauty. Every word is load-bearing. The humor creates breathing room. Neither works without the other. The brutalism without humor becomes a sermon. The humor without brutalism becomes a podcast.

Policy: this voice governs all authored text across the brand — articles, captions, carousels, deck copy, email subject lines, and any surface where DX speaks in first person. The voice does not soften for social. It does not formalize for decks. It does not simplify for wider audiences. If the reader cannot handle the register, they are not the audience. Ghostwritten or collaborative copy must pass through this filter before publishing. No exclamation points. No rhetorical questions used as engagement bait. No hashtag-driven language. No emoji in body text. Humor is dry, never self-deprecating. Vulnerability is precise, never performed.

Brutalist Poetic
A gathered, called-out, living community.
Not a building. Not a brand. Not a broadcast.
Dry Conversational
Nobody told me that in Sunday school.
Tender / Grave
We lost the pregnancy. Just over four weeks. Early enough for some people to minimize it. But there is no “barely” in loss. There is only before and after.
Intimate / Vulnerable
I held his hand and begged God not to take him. I told Him I still needed my dad. Not as Bishop. Not as a leader. Just as my father.

07. Microcopy & Interface Voice

All language — on-screen, on-slide, in print — follows one register: terse, stamped, authored. No articles or prepositions in labels. No verbs in metadata. No friendliness. The brand does not greet. It presents.

“8 min” — not “Takes 8 minutes to read.”
“Mode: Light” — not “Switch to dark mode.”
“Est. 1994” — not “Established in 1994.”
“Publishing Apr 19” — not “Coming soon on April 19th!”

Tags are classification, not decoration. Single-word categorical labels. Never cute. Never clever. Permitted vocabulary: Faith, Identity, Work, Grief, Inheritance, Language, Calling, Strategy.

08. Structural Rules

Policy: The border system is the skeleton of the brand. It is not decorative. Borders define hierarchy, separate modules, and signal structural intent. If a surface has no border, it is either background or it is wrong. Border weights are never improvised — use only the two approved weights below. These rules apply identically across site, carousels, decks, and print.

3px solid var(--border) — primary structural borders. Plate outlines, article header, article body, share bar, pull quote top/bottom, section head rule, callout left border, carousel slide-inner frame.

2px solid var(--border) — secondary borders. Tags, meta rail edges, scripture blocks, brand block, mode toggle, footer items, back button, logo card labels, eyebrow rules on carousels (1px exception for eyebrow accent rule).

46px repeating grid lines at var(--rule) opacity on every background surface — pages, slides, print layouts, deck backgrounds. Non-negotiable. Never scaled, never recolored, never removed for “cleaner” layouts.

Rulers: Fixed-position decorative rulers (.ruler-top, .ruler-left) on all web pages. Hidden on mobile. Not present on social or print — the grid lines carry that function instead.

Article frame: max-width 680px. All articles self-contained HTML with shared production CSS. No inline styles in body copy. This constraint extends to any long-form reading surface — Substack, email newsletters, or any future publishing channel.

Spacing Scale — 10 Slots

Every padding, margin, and gap on a brand surface points at a --space-* token. Ten slots, no improvisation. Like the type scale, spacing snaps to natural editorial steps rather than a rigid modular ramp — the ladder maps to actual component needs, not geometric progression.

The Ladder

--space-0         0  ·  zero-reset
--space-hairline  4px  ·  icon gutters, tiny offsets
--space-xs        8px  ·  tight internal padding
--space-sm       12px  ·  standard internal, grid gaps
--space-chrome   14px  ·  chrome tier — buttons, share bar, meta rails
--space-md       16px  ·  primary component padding
--space-lg       24px  ·  generous component padding
--space-xl       32px  ·  block gaps
--space-2xl      48px  ·  section gaps, closing block
--space-3xl      80px  ·  page rhythm, article bottom

Rule: if a component needs a value between slots, it does not mean the ladder is wrong — it means the component is off-rhythm. Snap to the nearest real step. The ladder is the doctrine, not the default.

Border Weight & Focus Ring — Tokenized

The border system is tokenized as two weights, no more: --border-weight-content at 3px for primary structural borders (plate outlines, article frame, pull quote rules, callout left border, section head rule) and --border-weight-chrome at 2px for secondary borders (tags, meta rail, scripture blocks, mode toggle, footer items, back button). Focus rings use --focus-ring-width at 2px, unified across both modes.

The Skeleton

--border-weight-content  3px  ·  structural borders — frames, plates, section rules
--border-weight-chrome   2px  ·  chrome borders — tags, meta, toggles
--focus-ring-width      2px  ·  :focus-visible outline, both modes

09. Social Carousels

c1 carousel cover slide — sectional masthead, headline, swipe rail
c1 · Cover
c3 carousel pull-quote slide — framed Anton display
c3 · Pull Quote
c6 carousel key-idea slide — doctrinal proposition in Anton
c6 · Key Idea
c7 carousel scripture slide — verse ref, verbatim KJV, cite
c7 · Scripture
c5 carousel closing slide — CTA url, pagination, — DEX sign-off
c5 · Closing
Recipe template — two-column ingredients + method, yield row
Recipe · Craft
Liner Notes template — album title, track list with gloss, side note
Liner Notes · Sound

10. Platform Dimensions

Every social template ships in four canonical formats. One campaign file, four dimensional variants, plus opt-in safe-zone modifiers for per-platform UI chrome. All inherit Refined Brutalism — grid, panel border, mono metadata, display headlines. Upload the matching format per destination.

Portrait · 1080 × 1440

Aspect3 : 4
Instagram feednative
IG profile gridsurvives 3:4 crop
Pinterestaccepted

Story · 1080 × 1920

Aspect9 : 16
Instagram Storiesdefault 250 / 250
Facebook Stories.fb-stories 270 / 380
Instagram Reels.reels 210 / 440 / 90
TikTok.tiktok 140 / 324 / 164

Square · 1080 × 1080

Aspect1 : 1
Threadsnative
X / Twitternative
Facebook feednative
LinkedIn feednative
IG grid crop.ig-grid-safe 135 / 135

Landscape · 1200 × 630

Aspect1.91 : 1
OG meta imagenative
X link cardnative
LinkedIn previewnative
Facebook linknative
Mobile crop.og-safe horiz +120
Blog heronative

Out of scope (not currently shipped)

Facebook Reels (needs ~670px bottom, not currently a variant), YouTube video thumbnails (1280×720 landscape adjacent), LinkedIn 1584×396 profile banner, full-bleed TikTok video thumbnail frames. Add as new dimensional classes or modifiers when a distribution channel commits.

11. Accessibility Standards

12. Responsive Behavior

13. Motion & Interaction States

14. Issue Head + Standfirst

The masthead of the editorial issue. Sits directly under the site chrome on the homepage. Carries the issue number, the week stamp, and a “latest” standfirst that deep-links to the current essay. Modeled on newspaper front-matter — the reader knows which edition they landed on before they read a word.

Rules. Issue number increments only with a new lead essay. Week stamp is always the publication week, not the current week. The standfirst block is the only place an essay link coexists with editorial metadata above the archive — everything else lives on the plates.

Live component · class="issue-head"
Entry No. 05 Week of April 19, 2026
Latest The Groan Beneath the Song Faith · Apr 19 · 18 min

15. Identity Hero

The author block. Split main/side layout — the name on one side at display scale, a short bio + two actions on the other. Never more than two actions. Primary action links to the full about page; secondary anchors the subscribe manifesto.

Hard rules. One identity hero per site. Never on article pages. Never duplicated on social. The name is always “Dexter Jakes” — no first-name-only, no handle-as-name. The corner eyebrow is the edition marker (“The Writer → 01”) and maps to issue numbering.

Live component · class="identity-hero"
The Writer → 01
ImJustDex

Dexter
Jakes

No highlight reel. Just the full human, documented.

About — Est. 2026

Someone working the line between faith, art, and identity. Essays here are the long form — slow paragraphs, no hot takes, no calls to action.

16. Lane Index + Filter

A three-cell classification rail. Each cell is a filter trigger — click “Faith” and the archive hides every plate not on that lane. The third cell is the queued state: a lane with no essays yet, rendered dashed and non-interactive. The cell stays visible so the taxonomy is always legible, even when a lane is empty.

Rules. Three lanes max: Faith, Identity, Art. No sub-lanes. No badges. Click toggles aria-pressed on the button and adds a filter class to the archive root. One lane active at a time; clicking the active lane resets to “all.” Queued cells carry aria-disabled="true" and a descriptive aria-label.

Live component · class="lane-index"
Art In the queue

17. Plate Lead + Row Modifier

The issue opener. A two-column plate that splits a textured image (with latest-badge overlay) against an editorial body panel (eyebrow, title, deck, rail). This is the only plate variant that carries a deck — every other plate is title + meta. Used exactly once per issue.

.plate-row is an archive-density modifier. Drops a .plate-secondary card into a single-row layout so the title, deck, and meta sit inline. Use at the bottom of the archive for older entries where scale-parity with newer plates would be visual noise.

18. Subscribe Manifesto

The subscribe block. A two-column split — ink-saturated title wall on the left (4-line stack, one word in the accent ink slot), receipt-style checklist and email capture on the right. Anti-pattern for every other subscribe block on the web: no hero image, no urgency copy, no social proof, no testimonials. The promise is the design.

Rules. One per site. Always at the bottom of the homepage. The title is fixed at four lines — rewording is allowed, restructuring is not. The form action on production points at /api/subscribe (Netlify function, Mailchimp REST v3). The demo below is inert — no submission endpoint, no form action. Previewing markup only.

Live component · class="subscribe-manifesto" · Demo inert

19. Issue Next

The teaser strip. A single-line announcement for the next essay in the queue — title, lane, estimated drop date, read time, and a “notify me” affordance that anchors back to the subscribe manifesto. Sits between the archive and the subscribe block. Disappears the moment the next essay publishes and is replaced by the next-next.

Rules. One per homepage. Dated in absolute format (“Apr 23”) — never “Next week” or relative. Never includes a deck. If a drop date is uncertain, the strip is hidden — do not publish “TBD.”

20. Study Note

Collapsible footnotes surfacing translation, historical, or cross-reference context beneath a scripture block. Native <details>/<summary> — no JavaScript, no ARIA polyfill, keyboard-accessible by default. Closed at first paint. The trigger carries the reference and a mono label; the body carries the actual note, sources, and cross-references.

Rules. Only on scripture-backed essays (currently all nine). Always appears directly under the scripture block it annotates. Never used for author commentary on the main argument — that belongs in the body. Include at least one source citation per note. Use sparingly: if every scripture block has a note, the reader is being trained to ignore them.

Markup. <details class="study-note"><summary class="study-note-trigger"> with .study-note-label, .study-note-ref, and .study-note-toggle.study-note-body containing the note plus optional .study-note-sources and .study-note-cross rails. Full CSS lives in article.css.

Live component · demo markup
Romans 8:26 · Stenagmos & Alālētos

Paul’s phrase in Romans 8:26 — stenagmois alālētois — is usually rendered “groanings which cannot be uttered.” Stenagmos is the deep, involuntary groan of the body under compression (the word is used of a siege wall about to collapse). Alālētos is the negation of articulate speech — not wordless, but prior to words. The text is saying the Spirit prays the groan itself, not a translation of it. Commentary: Dunn (1988), Moo (1996), Jewett (2007). See also Psalm 6:6, where the same body-in-grief posture is set to song.