Design — motir.co/legal: the index and the document page, drawn inside the public chrome
Type: design · Executor: coding_agent · Repo: motir-marketing · ONE PR. Ships the three-file asset at design/legal/ — design-notes.md + legal.mock.html + legal.png.
motir.co is about to serve seven legal documents and an index for them, and nothing draws that reading surface anywhere. MOTIR-3880 draws the CHROME — one header, nav and footer for the landing, /explore, /docs and /legal, with /legal marked current on neither nav item — and its acceptance criteria are all about the asset's own header and footer. A chrome asset naming /legal among its states is a DOOR; it is not the room (plan-rules/core.md gate 5's read-a-design inverse). This card draws the room.
⚠️ RE-FILED 2026-08-30 — this card now lives under MOTIR-3932
It was authored under MOTIR-3909 and carried a cross-parent leaf edge to MOTIR-3880 under plan-rules/fixtures/phase-skeleton.md's no-legal-lift limb. That exemption did not apply: phase-skeleton.md offers RE-FILE as remedy (b), and it was never tested. This card's repo is motir-marketing, which is MOTIR-3932's entire repository set, and MOTIR-3880 — the chrome this composes — is that story's child. Re-filed here, the edge is an ordinary same-parent sibling edge and no exemption is needed.
The two surfaces, and what is in them today
Read on motir-core origin/main e76d1afdd — app/(public)/legal/page.tsx and app/(public)/legal/[slug]/page.tsx are what exists, and they are the behaviour to draw to, not the layout to copy:
| surface | what it holds |
|---|---|
/legal — the index | one row per published document, in PREFERRED_ORDER (terms · privacy · cookies · acceptable-use · dpa · subprocessors · model-providers), each row a title linking to /legal/<slug>; a contact line (legal@motir.co) |
/legal/<slug> — one document | a ← All legal documents breadcrumb, an h1 title, a version-and-effective-date line, a rule, then the Markdown body at max-w-[46rem] |
⚠️ The states the asset must draw, per VALUE — not just the happy one
lib/legal/documents.ts maps a front-matter effectiveDate of TBD (or absent) to null, and its own comment says the literal must never reach a rendered page. So the date line has two arms, and today's copy keys are versionAndEffective and versionNotYetEffective. Both are drawn, because the null arm is the one in force until the service opens — it is the CURRENT state, not an edge case.
Also drawn:
- The long-document reading experience — a Terms of Service is thousands of words. Draw the measure, the heading hierarchy inside the body, list and table treatment, and whether the page offers in-page navigation.
motir-marketinghas no long-form prose surface today; this asset is where that treatment is decided rather than improvised by whoever renders the Markdown. - An unknown slug — a 404, and what it looks like inside this chrome.
- Mobile. Measured at 1280 and 390 CSS px, with the fold stated for each.
⚠️ The ACCESS PATH, drawn in its parent surface
Per plan-rules/type-design.md, the entrance is part of the scope and is drawn where it lives, not described:
/legalis reached from the FOOTER. That is where it is reached from today, and MOTIR-3880 pins it there for a reason it takes from the shippedExploreTopBar: marking Explore asaria-currenton a legal page "would tell a screen reader the wrong thing". Draw the footer rows — Privacy · Terms · All legal — in the composed chrome, and do not move them into the nav.- A document is reached from the index row, and the index from the document's breadcrumb — draw both directions.
app.motir.coreaches these documents cross-origin, from sign-up, the rail and the re-consent screen. The asset states that these pages are linked to from another host and therefore carry no application chrome and no session affordance of their own.
Composition, not redrawing
- COMPOSE MOTIR-3880's chrome; do NOT redraw it. Cite
motir-core/design/public-site/(that card's asset path) and state that this asset draws only what sits BETWEEN the header and the footer. - Compose
@motir/design-systemprimitives and the--el-*element tokens plus the element-semantic shape tokens. No Tier-0--color-*, no rawrounded-*/p-*. motir-marketing/design/marketing/design-notes.mdis the house style for the notes file — the surface table, the panel index, the measured contrast rows.
Boundary
- It draws no application surface.
app.motir.co's sign-up notice, rail row and re-consent rows are the motir-core design amendment's, in MOTIR-3909 — a different story, and that separation is the open-core line this epic draws. - It does not rewrite the documents. Their prose is moooon B.V.'s legal work and ports across unchanged.
- It draws no chrome. MOTIR-3880 owns the header, nav and footer, and this asset composes them.
Ordering
blocked_by MOTIR-3880, a sibling subtask under this same story — the chrome has to exist before the room inside it can be drawn. It blocks the render card, also a sibling here.
Acceptance criteria
- The three-file set exists at
motir-marketing/design/legal/—design-notes.md,legal.mock.html,legal.png(same basename) — with the notes' surface table and panel index in the house style ofdesign/marketing/design-notes.md. - Both surfaces are drawn: the index with all seven rows in
PREFERRED_ORDER, and a document page with a real long body, not lorem. - Both arms of the effective-date line are drawn — a document in force, and one whose date is not yet set — and the notes name which is current today and why.
- The 404 for an unknown slug is drawn inside the chrome.
- The long-form body treatment is drawn: measure, heading levels, lists, tables, and the decision on in-page navigation stated with its reason.
- The access path is VISUALISED IN THE ASSET: the footer rows in the composed chrome, the index row → document, and the document's breadcrumb → index.
- The notes state that the asset COMPOSES MOTIR-3880's chrome and redraws none of it, CITING that asset's
motir-corepath as a reference this card READS. Every file this card creates or modifies is undermotir-marketing/design/legal/— themotir-corepath is evidence, not a deliverable. - Every colour is an
--el-*token and every shape an element-semantic token; the notes list the primitives composed and cite@motir/design-systemrather than re-specifying them. - Measured at 1280 and 390 CSS px, with the fold stated for each, and an AA contrast table in both themes for everything the asset introduces.
- The notes'
## ⚠️ Planning flagssection names anything the asset found that no card owns, with a key for each — a flag naming no card is not a flag. - The GIVES / TAKES sweep is run and recorded:
grepthe asset for everyMOTIR-<n>, say for each whether it gives or takes an ELEMENT, a STRUCTURE or a PREMISE, andupdate_work_itemthat card's acceptance criteria in the same pass. The sweep starts at the keys the asset names and is bounded by MOTIR-3932's subtree, not by that list — and note that the consumers of this asset are split across two stories, so the sweep crosses into MOTIR-3909 wherever a key there takes an element from it.
Context refs
motir-core/app/(public)/legal/page.tsx·app/(public)/legal/[slug]/page.tsx·app/(public)/legal/layout.tsx— the shipped behaviour to draw tomotir-core/lib/legal/documents.ts—PREFERRED_ORDER, and theTBD→nullmapping that makes the date line two-armedmotir-core/messages/en.jsonlegal.*— the copy keys these surfaces use todaymotir-marketing/design/marketing/design-notes.md— the notes house style and the measured-contrast table shapemotir-marketing/app/_components/SiteFooter.tsx— whereLEGAL_INDEX/LEGAL_PRIVACY/LEGAL_TERMSare rendered today- MOTIR-3880 — the chrome this composes;
blocked_by, sibling - the card that renders these pages — this asset's consumer, sibling
Advisory dispositions
shape/likely-repo-straddle(criterion 7,motir-core/design/public-site,unpinnable): ACTED ON. The detector reads the PATH a criterion names and cannot tell a deliverable from a citation. Criterion 7 now says themotir-corepath is evidence this card READS, and states that every file this card writes is undermotir-marketing/design/legal/—plan-rules/core.mdgate 1: where only the refs do, say on the card that they are EVIDENCE and not deliverables. The repository set is unchanged and remainsmotir-marketingalone.- The remaining
referenceadvisories name cards this one's Boundary excludes. A boundary exists to say a deliverable is somebody else's, and naming the owner is what makes the exclusion checkable — so the reference is deliberate and no edge is owed.