Live Bulletin № 014 Design system v2

The Bulletin.
In one document.

Tokens, type, components and patterns for building d8m.io pages in the v2 voice — bright, mechanical, near-white. A reference, not a rulebook; every page on this site is also a working example.

§ 01 · Voice & principlesThe Bulletin in one paragraph.

d8m.io v2 reads like a research-lab bulletin: near-white paper, ink-black type, one signature red. Headlines are Geist Medium — tightly tracked, set very large. Substance is Geist regular. Facts, numbers and labels are JetBrains Mono. No editorial italics, no rounded corners, no gradient washes.

  • 01Receipts, not reassurance. Reference numbers, endpoint paths, version stamps. The vocabulary is "on file," not "trust us."
  • 02One accent at a time. Red is for the live, the recoverable, the in-force. Use it for highlights, signal blocks, and the underline on a single phrase per headline — not as a wash.
  • 03Mono is for facts. Numbers, codes, endpoint paths, eyebrows, labels. Anything the reader parses as data, not prose.
  • 04No emoji, no decorative SVG. Iconography is reserved for actual diagrams (architecture, schematic). If a metaphor is needed, a placeholder card is better than a drawn glyph.
  • 05Whitespace earns trust. Section gutters scale with the viewport; type tracking is tight; rhythm is generous. Don't tighten to fit — earn the space.

§ 02 · ColorNear-white. Ink. Signal.

A three-axis palette: a near-white warm bg, a deep ink for substance, and one bright signal red. Two darker panels (ink, blackout) host the architecture diagram and inverse content. Use red sparingly; it has to keep meaning something.

Surface → --bg · --bg-alt · --bg-deep · --bg-blackout

--bg
Paper#FAF8F3 · default
--bg-alt
Paper alt#F1EEE5 · band
--bg-deep
Ink panel#1A1A18 · cards
--bg-blackout
Blackout#0B0B0A · full

Ink & line → --ink · --ink-soft · --ink-mute · --line

--ink
Ink#0E0E0C · text
--ink-soft
Ink soft#3A3833 · body
--ink-mute
Ink mute#7A766B · meta
--line
Rule#D9D4C3 · borders

Signal → --red · --red-deep · --red-wash

--red
Signaloklch(.625 .225 27) · the live
--red-deep
Signal deephover / pressed
--red-wash
Signal washrow highlight
CSS tokens
/* signal.css :root */
--bg:          #FAF8F3;
--bg-alt:      #F1EEE5;
--ink:         #0E0E0C;
--ink-soft:    #3A3833;
--ink-mute:    #7A766B;
--line:        #D9D4C3;
--red:         oklch(0.625 0.225 27);
--red-deep:    oklch(0.515 0.215 28);
--red-wash:    oklch(0.92 0.06 28);

§ 03 · TypographyTwo families. Discipline.

Geist for everything that's read; JetBrains Mono for everything that's parsed. Headlines are always Geist Medium with a tight letter-spacing (-0.035 to -0.04em). Never italic; never serif.

h-1 display
Geist 500
clamp(56, 11vw, 180)
Vendor data, on the record.
h-2 display
Geist 500
clamp(40, 6.5vw, 96)
Raw at the bottom. Apps at the top.
h-3 display
Geist 500
clamp(28, 3.6vw, 52)
SLA credits, with full evidence.
h-4 ui
Geist 500
20–26
Recovery agent · AllCaps
lede
Geist 400
18–22 / 1.45
d8m.io ingests every contract, amendment, and invoice across your vendor portfolio.
body
Geist 400
16 / 1.6
Reads every clause. Reconciles it against every invoice. Every day. Cites every answer. Declines what it cannot prove.
mono
JetBrains 400
tabular
GET /v1/entitlements · 200 OK · 1840ms · v1.4
label
JetBrains 500
11 / 0.18em
Bulletin № 014 · On file since 2024

Red discipline

Use red for at most one phrase per headline, via .mark-red. Reserve .mark-line (red underline beneath the baseline) for the surprising word. Don't bold-and-color the same word — pick one.

Font imports
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap">

§ 04 · Layout & spacingWide gutters. Tight type.

Two container widths and a fluid section padding. Spacing inside layouts uses CSS gap, not margins. Every section's contents wrap in .wrap — never style sections directly with horizontal padding.

--gutterclamp(18, 3vw, 48) · page edges
--col-max1360px · default wrap
--col-narrow760px · focus content
section padclamp(80, 9vw, 144) · top + bottom
tight padclamp(56, 6vw, 96) · .section.tight
sec-head1fr / 2fr grid · meta + heading
Section skeleton
<section class="section" data-screen-label="Page · Topic">
  <div class="wrap">
    <div class="sec-head">
      <div class="meta">
        <span class="num">§ 03 / Architecture</span>
        <span class="kind">Three layers</span>
      </div>
      <div>
        <h2 class="display h-2"></h2>
        <p class="lede"></p>
      </div>
    </div>
    <!-- body -->
  </div>
</section>

§ 05 · MotionTwo motions only.

Live status (pulsing red dot) and data flow (red dots riding along SVG arrows in the architecture diagram). Hover transitions use --t-fast / --t-med with --ease. Never animate for ornament.

Pulse · live status
Hover me Background to red · 140ms
Marquee · 50s linear Marquee · 50s linear Marquee · 50s linear

§ 06 · ComponentsThe catalog.

All components are unscoped CSS classes in signal.css. No JS dependencies.

Buttons .btn · .btn-red · .btn-ghost · .btn-lg

Chips, tags & eyebrows .chip · .chip.live · .tag · .eyebrow

cited · MSA §8.4(b) Live 200 OK $84,200 owed 3 entitlements claim deadline 2026-04-30 Bulletin № 014 Fig. 01 — Sample response

Endpoint pill .endpoint · .verb · .verb.post

GET/v1/entitlements POST/v1/query PUT/v1/contracts/{id} DEL/v1/sessions

Figure number .figure-num · .figure-num .unit · .plus

40+
$84.2k
~2s
100+

Cards .card · .card.hairline · .card.dark · .card.red · .reg

Hairline
Default surface card with a soft rule. For body content blocks.
Registered
Adds red corner ticks. For "Fig." sample exhibits.
Signal
For featured exhibits — at most one per section.

Marquee strip .strip · .strip-track

Cited at the clauseScoped at runtime40+ endpoints livep95 ≈ 2sOn file since 2024 Cited at the clauseScoped at runtime40+ endpoints livep95 ≈ 2sOn file since 2024

Compare row .compare · .compare-row · .cell.them/.us

CLM
d8m.io
Cross-doc reasoning
Document-level metadata.
Clause-level supersession.
Operational output
Workflow + reminders.
Submission-ready claim packages.

Pull quote .pull

Every team was rebuilding the floor.

§ 07 · PatternsHow sections combine.

A page is usually: nav, hero, marquee strip, sample exhibit, ledger stats, editorial body, architecture diagram, endpoints grid, compare, trust three-up, pull quote, two-door filing CTA, footer. Vary the order; keep the cadence.

Hero .section / .display.h-1 + .lede + dual buttons

Open with a chip-eyebrow row, then a giant 14–18ch headline with one .mark-red phrase. Lede in left column; primary + ghost CTAs stacked in right column.

Section header .sec-head · .meta · num + kind

Every section opens with a 1fr/2fr grid: .meta on the left with a red § number and a kind label; headline and lede on the right. The black top rule sets a strong rhythm.

Architecture band .section.band-dark + svg

Diagrams live in the dark band. Stage cards are #1A1A18 on #0B0B0A; arrows use SVG animateMotion with red dots.

Filing CTA .filing · two doors

Closing CTA is always two doors side-by-side: one on paper (primary), one on red (ghost-over-red). Title format is "Door 01 / Door 02" + a giant headline each. Every page ends with one of these before the footer.

§ 08 · Brand markOne wordmark. One dot.

The wordmark is Geist Medium at tight tracking. The dot before io is always red — that's the entire identity system. Don't outline, italicize, or letter-spread the mark.

d8m.io
Header lockup · 56–64px · paper
d8m.io
Display lockup · 96px+ · hero / footer
d8m.io
On ink · footer
d8m.io
Monochrome · favicon only

§ 09 · Building a pageThe cheat sheet.

Copy the section closest to what you need. Keep the page rhythm: nav → hero → strip → exhibit → stats → editorial → diagram → grid → compare → trust → quote → filing → footer. Skip 2–4 of these per page; never reorder them.

Page shell
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <link href="https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
  <link rel="stylesheet" href="signal.css"/>
</head>
<body>
  <header class="nav"></header>
  <main>
    <!-- hero / strip / sections -->
  </main>
  <footer class="foot"></footer>
</body>
</html>

When in doubt, view source on the homepage — every section in this system is in production there.