12 · Chassis

Three chassis. One kit.

Every page in the design system uses one of three canonical chassis patterns. Pick by role, never invent a new one. The shared atoms (.section-label, .specimen, .tile, .spark, .api-block) are built once in preview.css and used across all three.

The three chassis · pick by role
Chassis A

Card

The default. Content, docs, spec pages, and component reference. One white card with a header (eyebrow + title + right-aligned subtitle), then section-labels and content blocks.

<div class="card">
  <div class="card-header">
    <div class="card-eyebrow">NN · …</div>
    <h1 class="card-title">Title</h1>
  </div>
  <div class="section-label">SECTION</div></div>
Chassis B

Hub

Landing and index pages that grid into sub-pages. Cobalt-900 hero with crumb + h1 + lede + meta strip, then a hub-grid of tiles. Top-level index, identity, pages, print/index, downloads, decks, diagrams.

<div class="hero">
  <div class="crumb">… / …</div>
  <h1>Title.</h1>
  <p>Lede…</p>
</div>
<div class="hub-grid">
  <a class="tile"></a></div>
Chassis C

Chrome

Print artefacts. Lightweight chrome with crumb + h1 + lede, then a two-column stage (paper specimen on the left, "why we built it this way" spark aside on the right). Defined in print/print.css.

<div class="chrome">
  <div class="crumb">… / …</div>
  <h1>Artefact</h1>
</div>
<div class="stage">
  <div class="paper"></div>
  <aside class="spark"></aside>
</div>
Shared atoms · used inside any chassis
ClassPurpose
.card-header / .card-eyebrow / .card-title / .card-subtitlePage header pattern for the card chassis. Eyebrow on the left + right-aligned subtitle in a flex row.
.section-labelUppercase code-font block header. Marks every content section inside any chassis.
.tileWhite card grid item used by every hub. Adds .todo for greyed/dashed planned state.
.specimenNeutral cobalt-50 demo container for live element samples. Used on type, color, components, diagrams reference pages.
.api-block / .apiAPI table for component reference pages. Cobalt-50 header row, sentence-case body cells.
.spark"Why we built it this way" rationale aside. Add .sticky when used inside a 2-column stage.
.diagrams-ctaCobalt-900 panel with eyebrow + h2 + lede + orange button. Used on components.html to link out to diagrams.
.hub-footerBottom-of-hub link strip with breadcrumb-style nav back to parent.
Page roster · which page uses which chassis
ChassisPages
Card apps · brand · colors · components · spacing · type · conduction-bg · cookie-cli · cut-corners · hex-prism · side-box · diagrams · diagrams/cn-hex · identity/audience · identity/foundation · identity/products · identity/slogans · identity/system · identity/voice · identity/websites
Hub index · identity · pages · print · downloads · decks
Chrome Every page in print/ (business-cards, letterhead, envelope, invoice, quotation, report, app-factsheet, one-pager, banner, plus the email artefacts) and decks/template.html.
Why three, not one

A single chassis would force compromises. The card pattern reads as documentation, with breathing room and a printed-spec feel. The hub pattern is built for visual punch, dark hero, sub-page tiles, almost a landing page in miniature. The chrome pattern is meant to disappear at print time, leaving only the paper. Each chassis is the right tool for its job. Mixing them inside a single page is what made the kit feel inconsistent before this normalisation.