Legal Agency Suite

Updated 2 weeks ago

Live preview

proposal-letter

mou-engagement-letter

body-clauses

alloc-fee-table

signature-block

schedule-cover

drafting-notes

Components · Paper
7 variants Tokens-backed WCAG 2.2 AA target

A print-first (WeasyPrint) MOU / Engagement Letter / Schedules A–E document template family — the most readable-register of the three legal-document families (11.5pt / 1.5 line-height, Tinos webfont), with uniform 1in margins. One of six templates in the Paper document-family register.

Rendered from components/legal-agency-suite/recipe.json

What this template is

Legal Agency Suite is a print document register, not a screen widget. It describes the page geometry, rule-weight usage, typography, and structural elements of a real MOU / engagement-letter document suite — proposal letter, memorandum of understanding, body clauses, allocation/fee table, signature block, and Schedules A–E — as it prints through WeasyPrint to a portrait PDF. Its CSS class is paper-legal-agency.

It is one of three legal-document families in the Paper register, and it is deliberately the most readable of the three:

AxisLegal Agency SuiteSubscription AgreementProspectus
Body typeTinos, 11.5pt / 1.5Times New Roman / Liberation Serif, 9.5ptTimes New Roman / Liberation Serif, 10pt
Page marginUniform 1in, no binding asymmetry0.75in standard, 0.7–0.9in bind0.75in standard, 0.625in inline

(Sibling values from the Paper pillar's document-families table.)

Reach for this template when the deliverable is a memorandum of understanding, an engagement letter, or a proposal letter with lettered schedules — a correspondence-adjacent legal register meant to be read comfortably, not a dense fill-in booklet or a filing document. For those, use the subscription- agreement or prospectus sibling instead.

Variants

The register defines seven variants. Each is a real structural element of the delivered document suite — never invent an eighth.

VariantRole
proposal-letterLogo letterhead (inline SVG), sender address block, non-binding notice.
mou-engagement-letterText letterhead, addressee block, RE line, salutation.
body-clausesParties/recitals section, decimal <ol> clause numbering, indented sub-clauses.
alloc-fee-tableAllocation/fee table — 0.75pt cells, surface-tint header fill, subtotal/total rows.
signature-blockTable-based signature block (Word-export-safe layout), approved-connector notation.
schedule-coverPage-break schedule cover pages, per-schedule named counters (apageepage).
drafting-notesInternal change-log page — intended as a removable final page before distribution, not part of the executed document.

Two of these carry governance weight worth restating:

  • drafting-notes never ships. It is an internal change-log page whose whole purpose is to be removed before the document is distributed. Any pipeline consuming this register must treat it as a pre-distribution artifact, not executed-document content.
  • schedule-cover owns pagination. Each schedule restarts its own named page counter — apage through epage, one per Schedule A–E — behind a page break. This per-schedule named-counter pattern is shared with the subscription-agreement family (see its token-map research).

Page geometry

The family prints with a uniform 1in margin on all four sides, driven by a single token:

  • {paper.semantic.agency-suite.page-margin}{paper.primitive.page.margin-wide} (1in).

There is no binding asymmetry — unlike the subscription-agreement family's 0.9in / 0.7in left/right split. This is the "wide" margin geometry in the Paper pillar's document-families table, and it is part of what makes this the most readable of the three legal registers.

Rule-weight ladder usage

Legal Agency Suite draws from the Paper pillar's four-step rule-weight ladder — hairline 0.5pt · light 0.75pt · standard 1pt · emphasis 1.5pt — and extends it once:

  • alloc-fee-table cells sit at 0.75pt — the ladder's light step.
  • Signature lines use {paper.semantic.agency-suite.rule-signature}{paper.primitive.rule.standard} (1pt) — the ladder's standard step, the same weight the Paper pillar assigns to signature lines across families.
  • The form-note accent bar uses {paper.semantic.agency-suite.form-note-accent}{paper.primitive.rule.accent} (3pt) — a ladder extension unique to this family. It was deliberately kept as its own primitive rather than forced to reuse the prospectus's 2pt accounting-total rule: an accent bar and an accounting double-rule are visually and semantically different things, even at adjacent weights.

Typography per section

The family is single-face by design — one serif stack for both body and headings, differentiated by size and weight rather than by face:

SectionTokenFace and metrics
Body text{paper.semantic.agency-suite.body-type}Tinos (webfont-first, falling back through Times New Roman / Liberation Serif / Times / serif), 11.5pt / 1.5 line-height, weight 400.
Headings{paper.semantic.agency-suite.heading-type}Same Tinos stack, 18pt / 1.2 line-height, weight 700.

The 11.5pt / 1.5 body register is the most generous of the three legal families — a genuinely distinct reading register from the subscription agreement's dense fill-in-booklet setting (9.5pt) and the prospectus's filing-document setting (10pt).

Clause numbering

The body-clauses variant numbers clauses with real decimal <ol> elements, not visual-only numerals, with indented sub-clauses beneath. This is a semantic decision, not a styling one — see Accessibility below.

Accessibility

Because this is a print artifact, accessibility here means document semantics that survive into the tagged PDF, not keyboard or focus behaviour. The recipe carries two real aria positions:

  • Clause numbering is semantic. Clauses use real <ol> markup (not visual-only numerals) so assistive technology can announce clause position within the agreement.
  • The signature table is presentational. The signature block uses <table> only for print / Word-export layout fidelity; where the table conveys no relational data, it carries role="presentation" so it is not announced as a data table.

The recipe records a WCAG 2.2 AA target.

Print output and motion

This is a print-first static document — no interaction states. It renders to PDF via WeasyPrint.

Open questions

Two items from the recipe must travel with anyone consuming this register:

  • oq-1 — em-dash convention is unreconciled. This family uses the \2014 CSS escape; the subscription-agreement family mandates a literal UTF-8 em-dash character (its source warns that \2014 swallows the trailing space in WeasyPrint). This is a real, recorded inconsistency — not drift to silently fix. It must be reconciled before any shared draft-stamp component is built, and resolving it requires re-testing both families' actual WeasyPrint output.
  • oq-2 — pdf-home-button geometry is out of scope here. The pdf-home-button marker geometry referenced in the source draft is a tool-contract with tool-pdf-interactive.py — see the Interactive PDF Binder component — not a token or recipe concern of this component.

Related

Important Information

Design System disclosure

This site provides open-source design tokens, documentation, and self-hostable software published by Woodfine Capital Projects Inc. Information here is for general reference only and does not constitute an offer, warranty, or a guarantee of fitness for any particular purpose. Statements regarding planned, intended, or targeted future features are forward-looking and subject to change without notice; they are not undertaken to be updated except as required by law.