Every part, drawn by the published stylesheet.
Not a picture of the components. The components, rendered by the same file anyone else links, so this page cannot show something the stylesheet does not do.
Switch the ground with the button above. Everything here works on Parchment and on Midnight, because the accent and the three state colours change with the ground: Ember is 3.3:1 on Midnight and fails, so a text accent on a dark ground is Flame.
40 components · brand system v7.1 · messaging v1.0 · generated 2026-08-20 · components.json
Primary button
button-primary · .btnThe main call to action. One per view.
Specification
- background
- #C13A24
- color
- #FFFFFF
- hover
- #A62F1B
- font
- DM Sans 700, 14.5px, letter-spacing .04em
- padding
- 14px 28px
- radius
- 3px
- contrast
- 5.4:1, passes WCAG AA
Rules
- Never Flame fill. Flame on a button is 3.3:1 and fails AA.
- The label is sentence case or title case, never all caps, never a command shouted.
- The focus ring is 2px Ember, 3px offset, and Flame when the button sits on Midnight.
Markup
<a class="btn" href="/partner">Partner With Us</a>
Ghost button
button-ghost · .btn ghostThe secondary action beside a primary button, on Midnight or over footage.
Specification
- background
- transparent
- color
- #F7F3EC
- border
- 1.5px solid rgba(247,243,236,.5)
- hover
- rgba(247,243,236,.1) fill
- radius
- 3px
Rules
- Only on dark grounds. On Parchment, the secondary action is a text link in Ember.
- Never two ghost buttons in a row. One primary, one ghost, then stop.
Markup
<a class="btn ghost" href="/happening">See What's Happening</a>
Quiet button
button-quiet · .btn quietA tertiary action beside a primary and a ghost. Toolbar and menu actions.
Specification
- background
- transparent
- color
- the themed accent
- padding
- 8px 12px
Rules
- Never the only action on a view. It is the third choice, not the first.
- Sits below 44px because it is not a primary target. Do not use it on a touch-first surface.
Markup
<button class="btn quiet">Copy link</button>
Eyebrow / kicker
eyebrow · .eyebrowOpens a section or a record. Names what the reader is about to read.
Specification
- font
- DM Sans 600, 12px
- letterSpacing
- .18em
- transform
- uppercase
- color
- #C13A24 on light grounds, #F85842 on Midnight
Rules
- Every record opens with one. Law II.
- All caps belongs here, to labels, and to the wordmark. Never to the serif.
Markup
<span class="eyebrow">03 — Color System</span>
Serif headline
headline-serif · .headlineSection and page headlines where the institution speaks.
No one told them it is already here.
Specification
- font
- DM Serif Display Regular, clamp(34px, 4.8vw, 52px)
- lineHeight
- 1.08
- case
- sentence case
- emphasis
- at most one italic word
Rules
- No bold cut exists. For more weight, go bigger.
- Never all caps.
- Below 36px, use DM Serif Text. Below 22px, use DM Sans.
Markup
<h2>No one told them it is <em>already here.</em></h2>
Body copy
body · .proseEvery extended reading passage.
The local church is the plan. Not a strategy for it, the plan itself.
Every tribe. Every tongue. Every nation.
Specification
- font
- DM Sans 400, 17px
- lineHeight
- 1.7
- color
- #0B1A2D on light grounds, #F7F3EC on Midnight
- measure
- max-width 660px
- muted
- 80% Midnight (light grounds) · 75% Parchment (dark)
Rules
- Always DM Sans. The serif never carries extended reading.
- Never Flame body text on a light ground.
- Short sentences, one idea each.
Markup
<div class="prose"> <p>The local church is the plan. Not a strategy for it, the plan itself.</p> <p class="muted">Every tribe. Every tongue. Every nation.</p> </div>
Photo caption
photo-caption · .captionEvery published photograph. A photo without its record does not publish.
The Word opened — attendees follow the teaching with Bibles and notes.
SLC Conference · [City], Uganda · 30 Jul 2026
Specification
- font
- DM Sans, 13px
- color
- 80% Midnight (light grounds) · 75% Parchment (dark)
- structure
- what happened, then event · place · date
Rules
- Names where known and permitted.
- Bracketed fields mark anything not yet verified against the ministry record.
- Written at capture, never from memory.
Markup
<p class="caption">The Word opened — attendees follow the teaching with Bibles and notes.<br><small>SLC Conference · [City], Uganda · 30 Jul 2026</small></p>
Inline link
inline-link · .linkA link inside a sentence.
Read the Brand Guide before building anything.
Specification
- color
- the themed accent: Ember on light, Flame on dark
- underline
- 1px, thickening to 2px on hover
Rules
- Always underlined. Colour alone is not a signal, and it is the first thing lost to colour blindness.
- The link text says where it goes. Never “click here”, never a bare URL in prose.
Markup
<p>Read the <a class="link" href="/brand/">Brand Guide</a> before building anything.</p>
Pull quote
blockquote · .quoteA quotation lifted out of the flow, in the serif.
The local church is not a strategy for the plan. It is the plan.Nathan Zimmer
Specification
- font
- DM Serif Text italic, body text-title
- rule
- 2px left, in the themed accent
- measure
- 44 characters
- attribution
- required
Rules
- Attributed, always. An unattributed quotation is gate G8.
- Never set over a photograph. That is the record document's job, on the scrim.
Markup
<blockquote class="quote">The local church is not a strategy for the plan. It is the plan.<cite>Nathan Zimmer</cite></blockquote>
Code
code-block · .codeA token name, a file path, or a snippet somebody will copy.
Link /assets/brand.css and the brand is in place.
<link rel="stylesheet" href="/assets/brand.css">
Specification
- font
- SF Mono, Consolas, monospace at .88em
- background
- the sunken surface
- scroll
- its own container
Rules
- A wide block scrolls inside its own frame. The page body never scrolls sideways.
Markup
<p>Link <code class="code">/assets/brand.css</code> and the brand is in place.</p> <pre class="code"><code><link rel="stylesheet" href="/assets/brand.css"></code></pre>
Card
card · .cardA repeated unit in a grid: a guide, an initiative, a document.
Specification
- background
- #FFFFFF
- border
- 1px solid rgba(11,26,45,.18)
- radius
- 4px
- padding
- 30px 28px
- hoverBorder
- #C13A24
- hoverShadow
- 0 10px 30px rgba(11,26,45,.1)
Rules
- Cards sit on Parchment, never on Midnight, unless the whole band is dark and the card inverts.
- Card text is Midnight. Watch for light-on-light inherited from a dark parent.
Markup
<a class="card" href="/brand/"> <span class="eyebrow">01</span> <h3 class="title">Brand Guide</h3> <p class="muted">Identity, voice, colour, typography, and the laws of the brand.</p> </a>
Separator
separator · .separatorA hairline between sections of a page or a menu.
Specification
- rule
- 1px the hairline
- spacing
- 32px above and below
Rules
- The hairline is the only divider in this system. No thick rules, no double rules, no ornaments.
Markup
<hr class="separator">
Panel
panel · .panelA raised container for a group of controls or a summary.
Four figures, all matched to the July record.
Specification
- background
- the raised surface
- radius
- 6px
- elevation
- 0 2px 6px rgba(11,26,45,.06)
Rules
- A panel lifts; a card sits. Use a card in a grid and a panel for something picked up out of the page.
Markup
<div class="panel"> <span class="eyebrow">Summary</span> <p class="muted">Four figures, all matched to the July record.</p> </div>
Record document
record-document · .recordThe canonical treatment for the prophecy, vision statements, official impact summaries, field reports, and initiative documents. Law II and Law IV in their purest form.
Specification
- ground
- #F7F3EC
- rules
- hairline, 1px rgba(11,26,45,.18)
- kicker
- letterspaced DM Sans 600 uppercase
- quote
- DM Serif Text italic, 22 to 34px
- dateline
- what, where, when
- signature
- scanned ink
Rules
- Never decorated. No color blocks, no illustration, no icons.
- Closes with a dateline and, where authority is claimed, real signatures.
- A script font standing in for ink is a violation.
Markup
<div class="record"><span class="qk">The Word · A Prophecy</span><div class="verse">…</div><div class="dateline">Received December 2019</div></div>
Testimony
testimony · .testimonyThe record of what God did. Four slots, always in order.
Before I had been in the city three years and knew no one.
Encounter At the tent on the second night, someone prayed with me.
Transformation I stopped drinking. My brother noticed first.
Outcome I lead a small group now. Come and see for yourself.
[Name] · [City] · Shared with permission
Specification
- slots
- Before: life as it was, in the person's own words · Encounter: the moment Jesus intervened, where and when · Transformation: what changed, specific, verifiable, honest · Outcome: life now, and the invitation to respond
- attribution
- Name · City · Shared with permission
Rules
- Real, consented, and named. Never fabricated, never composited, never anonymous.
- Closes with an invitation to respond.
Markup
<div class="testimony"> <p><b>Before</b> I had been in the city three years and knew no one.</p> <p><b>Encounter</b> At the tent on the second night, someone prayed with me.</p> <p><b>Transformation</b> I stopped drinking. My brother noticed first.</p> <p><b>Outcome</b> I lead a small group now. Come and see for yourself.</p> <p class="caption">[Name] · [City] · Shared with permission</p> </div>
Official-record figure
stat-figure · .statImpact reports and per-conference reports.
Specification
- numeral
- DM Serif Display, #F85842, on #0B1A2D
- label
- DM Sans 600 uppercase, letterspaced, #F7F3EC
Rules
- This is Flame's job: display numerals and small uppercase labels on Midnight.
- Numbers come from the official ministry record only, never estimates, never memory.
- The figure carries a source line naming the record and its period.
Markup
<div class="stat"><div class="fig">1,057</div><div class="lab">Salvations</div></div>
Sub-brand endorsement
endorsement-line · .endorseWherever an initiative's name appears.
Specification
- text
- A ministry of THE WORD FOR ALL THE WORLD
- font
- DM Sans 600, small, letterspaced
- placement
- directly beneath the initiative name or in the same lockup
Rules
- Required on every initiative surface. Law III.
- One recorded exception: the future EVERY1 app, on the YouVersion model.
- Vanity domains redirect into the initiative's page. They never become separate homes.
Markup
<div class="endorse">A ministry of THE WORD FOR ALL THE WORLD</div>
Full-bleed video hero
hero-video · .footagePage and priority-panel heroes.
Specification
- video
- muted, looping, playsinline, 6 to 15 seconds of real field footage
- poster
- required still frame
- scrim
- Midnight gradient, ~70% at text
- textColor
- #FFFFFF or #F7F3EC
Rules
- Never text over footage without the scrim.
- Never Flame or Ember text over footage.
- The still fallback is honored under prefers-reduced-motion and on slow connections.
- Nothing stock. Documentary footage from our own conferences, crusades, and streets.
Markup
<video autoplay muted loop playsinline poster="/assets/images/crowd-evening-poster.jpg"><source src="/assets/videos/crowd-evening.mp4" type="video/mp4"></video><div class="scrim"></div>
Video lower third
lower-third · .lower-thirdNaming a speaker on screen.
Specification
- font
- DM Sans, letterspaced caps
- ground
- the Midnight scrim bar
- accent
- optional Flame tick
- content
- name, then role
Rules
- Nothing animated, nothing bouncing.
- Sits on the scrim, never straight on the footage.
Markup
<div class="lower-third"> <div class="name">Nathan Zimmer</div> <div class="role">Founder, THE WORD FOR ALL THE WORLD</div> </div>
Portal navigation and footer
site-chrome · .sitenavShared chrome on every page of the brand portal.
Specification
- nav
- wordmark left, uppercase DM Sans 600 links right, over the hero, .active on the current page
- footer
- #0B1A2D ground, wordmark · tagline · domain
- tagline
- Every tribe. Every tongue. Every nation. EVERY1.
Rules
- A new page copies the chrome from an existing page and adds its own link to every other page.
- The nav sits over a full-bleed video hero with the scrim in place.
Markup
<nav class="sitenav"> <a class="logo" href="/"><img src="/assets/logos/the-word/the-word-horizontal-reversed.svg" alt="THE WORD FOR ALL THE WORLD"></a> <div class="links"><a href="/brand/">Brand Guide</a><a href="/assets/">Assets</a></div> </nav>
Breadcrumb
breadcrumb · .breadcrumbWhere this page sits, on any surface more than two levels deep.
Specification
- font
- body text-caption, muted text
- separator
- a forward slash at faint text
Rules
- The current page is the last item and is not a link.
- Never more than four levels. A fifth means the structure is wrong.
Markup
<nav class="breadcrumb" aria-label="Breadcrumb"><ol> <li><a href="/">Portal</a></li> <li><a href="/brand/">Brand Guide</a></li> <li aria-current="page">Colour</li> </ol></nav>
Tabs
tabs · .tabsSwitching between views of the same thing.
Specification
- indicator
- 2px bottom rule in the themed accent
- rest
- muted text
- active
- body text
Rules
- Tabs switch views of one thing. They never navigate to a different page.
- Between two and five. A sixth is a menu.
Markup
<div class="tabs" role="tablist"> <button role="tab" aria-selected="true">Overview</button> <button role="tab" aria-selected="false">Colour</button> <button role="tab" aria-selected="false">Type</button> </div>
Pagination
pagination · .paginationMoving through a long list of records.
Specification
- target
- 36px minimum per control
- current
- the themed accent fill with a white label
Rules
- The current page is marked with aria-current, not colour alone.
- Always show first and last. A reader needs to know how far the list goes.
Markup
<nav class="pagination" aria-label="Pagination"> <a href="#">Previous</a> <a href="#">1</a> <span aria-current="page">2</span> <a href="#">3</a> <a href="#">Next</a> </nav>
Form field
form-field · .fieldEvery input on every surface: a partner form, a sign-up, a dashboard.
Add everything after the @, for example theword.world.
Specification
- label
- DM Sans 600, 15px
- input
- 17px DM Sans on rgba(11,26,45,.05), 1px rgba(11,26,45,.18) border, 4px radius, 44px minimum height
- placeholder
- rgba(11,26,45,.60), never rgba(11,26,45,.38): a placeholder still has to be read
- error
- #8C1D13 text and border. Never Flame, never Ember.
- hint
- 13px rgba(11,26,45,.80), below the input, always present rather than appearing on failure
Rules
- The touch target is 44px whatever the visual height.
- An error names what is wrong and how to fix it. 'Invalid' is not an error message.
- Never signal an error with colour alone: the message text carries it.
- Ember is reserved for the action. An error is not an action.
Markup
<div class="field" data-state="error"> <label for="email">Email</label> <input id="email" type="email" value="nathan@" aria-describedby="email-error"> <p class="error" id="email-error">Add everything after the @, for example theword.world.</p> </div>
Checkbox and radio
choice · .choiceSelection inside a form.
Specification
- control
- the native input, tinted with accent-color
- size
- 18px
- target
- 44px including its label
Rules
- Native controls, tinted. Keyboard and screen reader behaviour is the platform's rather than something reimplemented badly.
- The label is clickable, and it is part of the touch target.
Markup
<label class="choice"><input type="checkbox" checked> Send me the field report</label> <label class="choice"><input type="radio" name="d" checked> Every month</label> <label class="choice"><input type="radio" name="d"> Only when something happens</label>
Switch
switch · .switchAn immediate on or off, with no save step.
Specification
- track
- 42x24, radius 12px
- thumb
- 18px circle at 0 2px 6px rgba(11,26,45,.06)
- on
- the themed accent fill
Rules
- A switch takes effect immediately. If it needs saving, it is a checkbox.
- The visible label says what being on means, not what the switch is called.
Markup
<label class="switch"><input type="checkbox" checked><span class="track"></span> Show unverified figures</label>
Data table
data-table · .table-scrollOfficial figures, schedules, and any grid of records.
| Conference | City | Salvations |
|---|---|---|
| SLC | [City] | [n] |
Specification
- header
- DM Sans 600 uppercase 12px, letterspaced .14em, rgba(11,26,45,.80) on #F7F3EC
- cell
- 15px DM Sans, rgba(11,26,45,.10) bottom border
- numerals
- tabular-nums wherever digits line up
- scroll
- the table scrolls inside its own container, never the page
Rules
- A wide table scrolls in its own frame. The page body never scrolls sideways.
- Figures come from the official ministry record and carry a source line.
Markup
<div class="table-scroll">
<table>
<thead><tr><th>Conference</th><th>City</th><th>Salvations</th></tr></thead>
<tbody><tr><td>SLC</td><td>[City]</td><td>[n]</td></tr></tbody>
</table>
</div>
Badge
badge · .badgeA short status or category label beside a title or in a table cell.
Specification
- font
- DM Sans 600, 11px, letterspaced .1em, uppercase
- radius
- 3px
- variants
- default, accent, solid, success, warning, error
Rules
- A badge labels, it does not shout. Never more than two words.
- The state variants take the themed state colours, which lift on a dark ground.
- Never Flame: a badge is text at small size.
Markup
<span class="badge">Draft</span> <span class="badge" data-state="accent">CLEAN</span> <span class="badge" data-state="solid">Published</span> <span class="badge" data-state="success">Confirmed</span> <span class="badge" data-state="warning">Unverified</span> <span class="badge" data-state="error">Blocked</span>
Avatar
avatar · .avatarA person or an account at small size.
Specification
- shape
- circle, the one circle in this system
- ground
- #0B1A2D
- mark
- the glyph, never the wordmark
Rules
- The wordmark is unreadable in a circle. The glyph is drawn for it.
- A photograph of a person is used only with their consent, the same as any published image.
- The image is marked aria-hidden: the name sits beside it, and a screen reader announcing the mark twice helps nobody. An avatar that is the only identification carries real alt text instead.
Markup
<span class="avatar"><img src="/assets/logos/the-word/the-word-glyph-reversed.svg" alt="" aria-hidden="true"></span>
Email layout
email-layoutEvery newsletter and transactional email.
|
Specification
- width
- 600px, the recorded email breakpoint
- structure
- nested tables, not divs. Outlook renders the table and ignores the div.
- css
- inline styles on every element. No stylesheet, no custom properties, no var().
- fonts
- Georgia for the serif and Arial for the sans. The webfont will not load and the fallback is the design.
- ground
- #F7F3EC body, #FFFFFF content table, #0B1A2D footer
- images
- PNG only, with alt text that carries the meaning when images are blocked
Rules
- No SVG. Most clients strip it.
- A dark-mode client may invert the ground: state colours explicitly on every cell and never rely on a default.
- Every email carries a preheader, a reason the person is receiving it, and a working unsubscribe.
- The logo is a PNG at 400px or 800px, never the vector.
Markup
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background:#F7F3EC;margin:0;padding:24px 0;">
<tr><td align="center">
<table role="presentation" width="600" cellpadding="0" cellspacing="0" style="width:600px;max-width:100%;background:#FFFFFF;">
<tr><td style="padding:32px;font-family:Arial,sans-serif;font-size:17px;line-height:1.7;color:#0B1A2D;">
Body copy goes here.
</td></tr>
</table>
</td></tr>
</table>
Email button
email-buttonThe single call to action in an email.
Specification
- build
- a table cell with a background, not a styled anchor: Outlook drops padding on an anchor
- background
- #C13A24
- color
- #FFFFFF
- padding
- 14px 28px
- radius
- 3px
Rules
- One per email.
- Never Flame fill: it fails contrast at 3.3:1 in an email exactly as it does on the web.
- The link text says what happens, and the URL is visible in the footer for clients that strip links.
Markup
<table role="presentation" cellpadding="0" cellspacing="0"><tr>
<td bgcolor="#C13A24" style="border-radius:3px;">
<a href="https://theword.world/partner" style="display:inline-block;padding:14px 28px;font-family:Arial,sans-serif;font-size:15px;font-weight:bold;color:#FFFFFF;text-decoration:none;">Partner With Us</a>
</td>
</tr></table>
Alert
alert · .alertA message about the state of the page or the last action.
Every published number names the record it came from. Add the record and the period it covers.
All four figures match the July conference report.
Specification
- structure
- a coloured left rule, a title, and one line of explanation
- states
- neutral, success, warning, error
- title
- DM Sans 700, body text-body-small
Rules
- Never colour alone. The title carries the meaning and the rule reinforces it.
- An error says what went wrong and how to fix it. “Invalid” is not a message.
- Never Flame and never Ember: Ember means the action, and an alert is not an action.
Markup
<div class="alert" data-state="error"> <strong>The figure has no source</strong> <p>Every published number names the record it came from. Add the record and the period it covers.</p> </div> <div class="alert" data-state="success"> <strong>Checked against the record</strong> <p>All four figures match the July conference report.</p> </div>
Toast
toast · .toastConfirmation that something the reader did has finished.
Brand system v7.0 is live.
Specification
- width
- 380px maximum
- rule
- 3px left in the themed accent
- elevation
- 0 24px 60px rgba(11,26,45,.18)
Rules
- Says what happened, in the past tense. “Published”, not “Publishing”.
- Never carries the only copy of anything. It disappears.
- Never announces an error that needs action. That is an alert, which stays.
Markup
<div class="toast" role="status"><div><strong>Published</strong><br><span class="muted">Brand system v7.0 is live.</span></div></div>
Progress
progress · .progressHow far through a known-length task the reader is.
64% of the logo set rebuilt
Specification
- height
- 6px
- fill
- the themed accent
- track
- the sunken surface
Rules
- Only for a task whose length is known. If it is not known, use a skeleton.
- Carries a text label nearby. A bar alone is not a measurement.
Markup
<div class="progress" role="progressbar" aria-valuenow="64" aria-valuemin="0" aria-valuemax="100"><span style="width:64%"></span></div> <p class="caption">64% of the logo set rebuilt</p>
Skeleton
skeleton · .skeletonThe shape of content that has not arrived yet.
Specification
- fill
- the sunken surface
- shape
- matches the content it stands in for
Rules
- Matches the shape of what is coming, so the layout does not jump when it arrives.
- Never a spinner over a blank screen. Show the shape of the answer.
Markup
<span class="skeleton" style="width:70%;height:28px"></span> <span class="skeleton" style="width:100%;height:14px"></span> <span class="skeleton" style="width:88%;height:14px"></span>
Empty state
empty-state · .emptyA list, a search, or a report with nothing in it yet.
Reports appear here once a conference record is filed.
File a reportSpecification
- border
- 1px dashed the hairline
- content
- what is missing, why, and the one thing to do about it
Rules
- Never just “No results”. Say why it is empty and what to do next.
- Invitation before information, the same as everywhere else.
Markup
<div class="empty"> <strong>No field reports yet</strong> <p class="muted">Reports appear here once a conference record is filed.</p> <a class="btn" href="#">File a report</a> </div>
Accordion
accordion · .accordionLong reference content the reader scans before reading.
What counts as an official figure
Who approves a change
Specification
- control
- native details and summary
- marker
- a plus turning to a minus, in the themed accent
Rules
- Built on details and summary, so it works with no JavaScript and reads correctly to a screen reader.
- Never hide something the reader needs in order to act. An accordion is for depth, not for tidiness.
Markup
<div class="accordion"> <details open><summary>What counts as an official figure</summary><div class="body">A number that appears in the ministry record, with the period it covers.</div></details> <details><summary>Who approves a change</summary><div class="body">A written proposal, approval by Joel Zimmer and Nathan Zimmer, a version bump, and a changelog entry.</div></details> </div>
Dialog
dialog · .dialogA decision that has to be made before anything else continues.
Retire this figure?
It stays in the archive and stops appearing in new reports.
Specification
- width
- 480px maximum
- elevation
- 0 24px 60px rgba(11,26,45,.18)
- actions
- right aligned, primary last
Rules
- One decision per dialog. A dialog with two questions is a page.
- Escape closes it, focus is trapped inside it, and focus returns to whatever opened it.
- Never for information alone. That is an alert.
Markup
<div class="dialog" role="dialog" aria-label="Retire this figure"> <h3 class="title">Retire this figure?</h3> <p class="muted">It stays in the archive and stops appearing in new reports.</p> <div class="actions"><button class="btn ghost">Cancel</button><button class="btn">Retire it</button></div> </div>
Tooltip
tooltip · .tooltipA short clarification of a control the reader is already looking at.
Specification
- ground
- #0B1A2D on both themes, so it reads as an overlay rather than a surface
- font
- body text-caption
Rules
- Never the only place information appears. A tooltip cannot be reached by touch or by a screen reader in the same way.
- One line. If it needs two, it belongs on the page.
Markup
<span class="tooltip">Measured from the artwork, not the file</span>