MacTech / Design System
Cyan

doc-templates · navy / Arial · Letter

What MacTech looks like on paper.

The print system is deliberately separate from the mood/palette matrix. Moods are a screen concern — glow, mesh, easing, rgba surface stacks — and none of that survives a printer. More to the point, this identity is fixed, not swappable: it is the one that has been through customer review. Offering it in six palettes would be the wrong affordance.

Every specimen below is rendered by the same functions that produce a real QMS controlled-document PDF. Nothing here is a mock — if a template changes, this page changes with it.

The palette

Navy

#1F4E79

Titles, section rules, price-box border

Ink

#000000

Body text. True black, not near-black

Gray

#595959

Company block, metadata labels, conditions

Rule

#A6A6A6

Hairlines and heading underlines

Price box

#EAF0F9

Base-bid fill, with a navy border

Alternate

#F7EFD8

Option boxes, with gold title text

Alternate text

#8A6D1D

Alternate box titles and amounts

The type scale

Anchored on 9.5pt body and hand-set rather than derived from a ratio — print scales are chosen, and every step here matches something in the approved documents. The face is Arimo, which is metric-compatible with Arial: identical advance widths, measured at 0.000px difference over a 44-character string. That is what makes pagination match documents originally set in Arial.

Cover26ptCover-page title
Title20ptDocument title on the letterhead
H114ptDocument section
H212.5ptMajor section, with hairline underline
H311ptSection heading
Body9.5ptBody copy. The anchor for everything else
Small8.5ptTable cells, running header and footer
Caption7.5ptTable headers, metadata labels
Micro6.5ptHashes, CAGE/UEI line, footnotes

Page geometry and rules

Geometry is stated once. The @page rule declares size only and the margin comes from the PDF call, because Chromium has never implemented CSS Paged Media margin boxes and the running header and footer render inside that margin. Stating it twice is what makes the letterhead collide with the header.

Page size
Letter · 215.9 × 279.4 mm
Margins
22mm / 16mm / 18mm / 16mm
Header band
14 mm
Footer band
10 mm
Letterhead rule
2.25 pt, black
Hairline
0.5 pt, #A6A6A6
Logo width
26 mm max — the honest limit for the raster at 300dpi

Controlled document

Controlled document, released

An EFFECTIVE CUI-marked plan with a complete signature ledger. This is what an assessor receives.

  • CUI banner top and bottom of every page, monochrome
  • Process Owner and Document Owner as distinct people
  • Supersedes and Next Review printed - neither appeared in the old renderer
  • Declared approvals shown apart from the verified ledger
Letter · 8.5 × 11 in · rendered live

Controlled document, pre-release

The same shell in IN REVIEW, carrying the status watermark. Six of nine statuses used to print APPROVED here.

  • Status watermark derived from one shared status table
  • An unrecognised status degrades to a pre-release mark, never to unmarked
  • No classification banner when the document is INTERNAL_USE
Letter · 8.5 × 11 in · rendered live

Correspondence

Letter

Letterhead correspondence with an inside address, enclosures and a copy list.

  • Signature block carries CAGE and UEI
  • Enclosure and copy-to lists
  • Running footer with reference number and page count
Letter · 8.5 × 11 in · rendered live

Memorandum

Internal memorandum, CUI-marked, using the labelled TO/FROM head block.

  • Same shell as the letter, different head block
  • Marking banner behaves exactly as on a controlled document
Letter · 8.5 × 11 in · rendered live

Document transmittal

Item-by-item transmittal with copy counts, medium and an acknowledgement of receipt.

  • Per-item copy count and medium, so sealed controlled copies are expressible
  • Fillable acknowledgement grid
Letter · 8.5 × 11 in · rendered live

Using it

import { renderControlledDocument, LETTER, pdfOptionsFor }
  from '@mactech-solutions-llc/doc-templates/print';

const { html, headerTemplate, footerTemplate } =
  renderControlledDocument(model, LETTER);

await page.setContent(html, { waitUntil: 'load' });
await page.evaluateHandle('document.fonts.ready');
const pdf = await page.pdf({ ...pdfOptionsFor(LETTER), headerTemplate, footerTemplate });

The /print entry has zero runtime dependencies — no React, no filesystem, no network. That is what lets the contracting workspace, which has neither a database nor React, render the same letterhead as the QMS.