Skip to content

Design system

Fine paper, ink, and the patina of bronze.

The primitives Margin is built from. Restyled past the defaults; nothing here is shipped as shadcn left it.

Colour

Warm civic, never neon.

  • Paper

    --paper

  • Raised

    --paper-raised

  • Sunk

    --paper-sunk

  • Ink

    --ink

  • Ink soft

    --ink-soft

  • Ink faint

    --ink-faint

  • Patina

    --patina

  • Patina tint

    --patina-tint

  • Seal

    --seal

  • Ochre

    --ochre

  • Leaf

    --leaf

  • Slate

    --slate

Type

An editorial trio.

Display · Fraunces

The solicitation already told you whether to bid.

Body · Geist Sans

Margin reads it the way a senior capture lead does — start to finish, in order, taking notes in the margin. Every finding it gives you carries the page, the section, and the line it came from.

Data · Geist Mono

TEA-2026-DLP-114 · p.47 §L.3.1 · 214 pages

Controls

Keys, not toys.

Becomes the workspace domain
A switch that reads as a latch, not a toy.

Marks

Stakes, confidence, citation.

Practice planDisqualifyingScoredInformational

Page limit

Disqualifying

Volume I is capped at 40 pages, excluding resumes and the cross-reference matrix.

Volume I, Technical, shall not exceed forty (40) pages, excluding resumes, letters of commitment, and the cross-reference matrix.

Motifs

Wax, quill, bronze gate.

Wax seal — stamps on an unmet hard gate.

Bronze gate — opens with the go/no-go reading.

Needs review

Quill mark — a finding below the confidence threshold.

Feedback

The same object, a different mark in the margin.

A hard gate is unmet

Transition-in dropped from 90 to 45 days. The bid cannot proceed until this is resolved or the decision is No-bid.

Six findings need review

Confidence fell below the threshold. A person should confirm them before they reach a proposal.

Matrix assignment sweep complete

Thirty-four rows assigned across four owners.

SharePoint sync completed

Capture Library indexed. 148 documents.

Nothing in flight

Upload a solicitation and Margin will read it end to end, then tell you what it found and what it could not find.