# Triumph Design System v4, documents

The print document class: multi-page proposals, reports, guides, registers, and pricing
plans that a person reads on paper and that ship as a PDF. US Letter, flat white paper, a
full-colour crest header bar over a navy rule, a running head, page numbers, and no weave
anywhere. The one exception is the `.sheet` one-sheet variant, which carries a header bar
and one centred footer line instead of a running head and a page footer.

If the piece is a flyer, an ad, a poster, or one graphic-led sheet, it belongs to Print v2
at `../print/`. More than one page, a running head, or page numbers means Documents. One
sheet built from type, colour blocks, and the weave means Print.

`agents.md` is the contract. Read it before the first pass, not after the review.

## Link order

```html
<link rel="stylesheet" href="tokens.css">
<link rel="stylesheet" href="logos.css">
<link rel="stylesheet" href="document.css">
```

That order, always. `tokens.css` and `logos.css` are byte copies of the files in `print/`
and are never edited here; a palette change happens in `print/` and gets copied over.
`document.css` is the grammar this system owns, and its `@version` stamp on line 1 gets
bumped on any edit.

There is no `pattern.css` in this folder. The weave never appears in this class.

## How to start a document

1. Copy the whole `templates\proposal-document` folder to the project's own folder. Do not
   build a document by hand from `document.css`; the template carries the page skeleton,
   the config, and the three checks.
2. Rename `document.html` if you like, and set the same name in `document.config.json`.
3. Fill in the cover: the kicker is organization plus subject, the title sets
   `--mast-chars` to its own character count, and the standfirst is one sentence.
4. Write the pages. Every sheet after the cover opens with `.runhead` and closes with
   `.pagefoot` carrying a literal `0`; the build renumbers every footer from page div order.
5. Run the pipeline from the project folder:

```
py -3 archive\build_document.py
py -3 archive\verify_document.py
py -3 archive\check_completeness.py
```

`build_document.py` renumbers the footers, fills the contents, resolves cross references,
renders the PDF with headless Edge or headless Chrome, and asserts the page count.
`verify_document.py` reads the rendered text and fails on a blank page, a missing key
figure, a banned phrase, or characters drawn below the footer rule. `check_completeness.py`
runs the content probes. Read all three outputs; a PASS from the first one alone is not a
finished document.

## Re-vendoring `_ds\` in a project

A project carries its own `_ds\` snapshot so the PDF renders with no network. To refresh it,
copy five items from this folder over the project's `_ds\`: `tokens.css`, `logos.css`,
`document.css`, `fonts\`, and `images\`. There is no sixth. The old "four, not five" warning
existed because the Print v2 root carried a `pattern.css` that could be copied by mistake;
this folder has none, which is the reason the warning is no longer needed.

Re-vendor from here, because this folder is canon. The standalone `Triumph Design System v2`,
`v3`, and `v4` folders are generated mirrors of the hub, and v2 mirrors `print/`, so it
carries the print sheets rather than the document sheets.

## Files

| File | What it is |
|---|---|
| `tokens.css` | byte copy of `print/tokens.css`: the seven brand colours, the ink ramp, and the font metric overrides |
| `logos.css` | byte copy of `print/logos.css`: the lockups and the GE Vernova Park padding crop |
| `document.css` | the document grammar, and the only sheet this system owns |
| `agents.md` | the contract |
| `index.html` | the system door, with every class rendered at print size |
| `preview/` | six cards: cover, page, tables, emphasis, figures, one sheet |
| `templates/proposal-document/` | the working project to copy |
| `fonts/`, `images/` | self-hosted faces and the brand marks |
