Tokens
A design token is a named, versioned decision — a color, a spacing value, a type size — stored once and referenced everywhere it's used. Change the token, and every consumer updates together: this site's own CSS, a Figma file, a line of AI-generated code.
The primitive tier below holds the raw values — colors, type sizes,
spacing steps. The theme tier maps those primitives to semantic roles
(interactive-primary, surface-elevated, and so on) that components
and pages actually consume. Nothing here is illustrative — every value shown is read directly
from this repository's own token bundle, the same source this site's own CSS consumes.
What this enables beyond this site:
- One source of truth across design tools and code. See Get Started — Designing for the import path.
- AI code generators can query tokens, components, and research directly through this
site's
/mcpendpoint at decode time, so generated UI matches your brand without re-deciding the same questions every session. - A customer-owned, self-hosted vault — fork the whole graph into your own Git history, signed by your own key. Download everything below as a portable bundle.
curl -O https://design.pointsav.com/bundles/tokens/tokens.full.jsonPoint the free Tokens Studio plugin at the same URL to sync this release's values directly into your Figma file — no export/import step, no manual re-entry.
How the registry works
One registry, every surface
Every token on this page — its tier, its value — is read from the same
tokens.full.json registry that answers the machine API and backs this site's
own CSS. There is no separate CMS layer for tokens to drift out of sync with: the count in
this page's stat strip and the swatches below come from the same source.
The same registry file backs the MCP endpoint documented under
Developing — an agent asking for the current value of
theme.semantic.interactive-primary gets exactly what's below. On a self-hosted
instance, that answer is served from your own infrastructure and never leaves it; consuming
the tokens as files requires no instance at all.
Reference primitive
The raw palette. A hex value, a rem number, a duration, a breakpoint — no meaning attached to where or why it's used.
primitive.color.primary-60: #234ed8
System theme
Attaches intent. Says what a value means, so the reference token behind it can change — or swap for dark mode — without touching anything that consumes the meaning.
theme.semantic.interactive-primary: {color.primary-60}
Primitive
Border
border.corner-1
0.125rem
2px — chip, badge
border.corner-2
0.25rem
4px — button, input default
border.corner-3
0.5rem
8px — surface, dialog
border.stroke-1
1px
Default border
border.stroke-2
2px
Focus ring, error state
Brand Accent
brand-accent.documentation
oklch(55% 0.18 250)
PointSav blue -- default/reference value
Category Tile
category-tile.architecture
oklch(55% 0.18 250)
blue
category-tile.default
oklch(50% 0.10 250)
neutral blue
category-tile.governance
oklch(50% 0.14 300)
purple
category-tile.infrastructure
oklch(53% 0.16 200)
slate
category-tile.reference
oklch(48% 0.12 80)
gold
category-tile.services
oklch(54% 0.17 30)
amber
category-tile.systems
oklch(52% 0.16 160)
teal
Color
Read the full color guidance →
color.amber-10
#FDF4E0
1.09:1 vs white
10% tint of amber-60
color.amber-60
#C4880E
3.05:1 vs white
Complement highlight accent -- absorbed from pointsav-media-assets/token-global-color.yaml (operator-ratified 2026-07-27)
color.black
#000000
21.00:1 vs white
color.caution-10
#fff5e1
1.08:1 vs white
color.caution-30
#f5cd7a
1.51:1 vs white
color.caution-50
#d49b1f
2.47:1 vs white
color.caution-60
#a87514
4.02:1 vs white
color.caution-70
#7a520a
6.91:1 vs white
color.critical-10
#fceaea
1.16:1 vs white
color.critical-30
#f0a3a3
2.01:1 vs white
color.critical-50
#d24747
4.44:1 vs white
color.critical-60
#a52323
7.33:1 vs white
color.critical-70
#7d1414
10.59:1 vs white
color.indigo-10
#EDEAFA
1.18:1 vs white
10% tint of indigo-60
color.indigo-60
#5040C8
7.22:1 vs white
Intelligence/AI domain accent -- absorbed from pointsav-media-assets/token-global-color.yaml (operator-ratified 2026-07-27)
color.neutral-10
#f5f6f8
1.08:1 vs white
color.neutral-100
#0e0f12
19.17:1 vs white
color.neutral-20
#e6e8ec
1.23:1 vs white
color.neutral-30
#cdd1d8
1.53:1 vs white
color.neutral-40
#aab0bb
2.18:1 vs white
color.neutral-50
#878d99
3.33:1 vs white
color.neutral-60
#666c78
5.27:1 vs white
color.neutral-70
#4a4f59
8.22:1 vs white
color.neutral-80
#33373e
11.95:1 vs white
color.neutral-90
#1f2125
16.12:1 vs white
color.orgchart.blue
#164679
9.61:1 vs white
Investment-unit border
color.orgchart.blue-bg
#E8EFF7
1.16:1 vs white
Investment-unit surface
color.orgchart.green
#54924E
3.75:1 vs white
Holding-entity border
color.orgchart.green-bg
#EEF6EC
1.10:1 vs white
Holding-entity surface
color.orgchart.grey
#9CA3AF
2.54:1 vs white
Admin entity / titleco border
color.orgchart.grey-bg
#E6E7E8
1.24:1 vs white
Admin entity surface
color.orgchart.grey-dark
#374151
10.31:1 vs white
Strong border variant
color.orgchart.grey-light-bg
#F7F9FA
1.06:1 vs white
Dashed placeholder / service provider surface
color.orgchart.magenta
#9F1853
7.69:1 vs white
Legacy entity A border -- predecessor structure prior to reorganization
color.orgchart.magenta-bg
#FFD6E8
1.31:1 vs white
Legacy entity A surface
color.orgchart.orange
#F15F22
3.28:1 vs white
Principal entity (named individual / equity partner) border
color.orgchart.orange-bg
#FDE8DD
1.18:1 vs white
Principal entity surface
color.orgchart.purple
#7C468C
6.75:1 vs white
Intermediary (broker-dealer / asset manager) border
color.orgchart.purple-bg
#EEE6F1
1.22:1 vs white
Intermediary surface
color.orgchart.teal
#005D5D
7.71:1 vs white
Legacy entity B border -- predecessor asset-holding structure prior to reorganization
color.orgchart.teal-bg
#9EF0F0
1.30:1 vs white
Legacy entity B surface
color.orgchart.yellow
#EAB308
1.92:1 vs white
Fund vehicle / LP / limited partnership border -- dashed pill
color.orgchart.yellow-bg
#FFFDE7
1.03:1 vs white
Fund vehicle surface
color.positive-10
#e8f6ed
1.11:1 vs white
color.positive-30
#9fdaae
1.60:1 vs white
color.positive-50
#3fa55c
3.11:1 vs white
color.positive-60
#26823f
4.83:1 vs white
color.positive-70
#16602b
7.66:1 vs white
color.primary-10
#eef3ff
1.11:1 vs white
color.primary-20
#d3deff
1.34:1 vs white
color.primary-30
#a6bcff
1.87:1 vs white
color.primary-40
#7392ff
2.88:1 vs white
color.primary-50
#3f6cf2
4.53:1 vs white
color.primary-60
#234ed8
6.66:1 vs white
color.primary-70
#173ab1
9.22:1 vs white
color.primary-80
#0c2785
12.77:1 vs white
color.primary-90
#04165a
16.57:1 vs white
color.teal-10
#DFF5F8
1.13:1 vs white
10% tint of teal-60
color.teal-60
#0D8FA0
3.85:1 vs white
Data/infrastructure domain accent -- absorbed from pointsav-media-assets/token-global-color.yaml (operator-ratified 2026-07-27)
color.white
#ffffff
1.00:1 vs white
Duration
duration.speed-1
70ms
Imperceptible — color hover
duration.speed-2
120ms
Quick — button press, focus ring fade
duration.speed-3
200ms
Snappy — tab switch
duration.speed-4
320ms
Smooth — toast appearance, drawer slide
duration.speed-5
480ms
Considered — modal entrance
duration.speed-6
720ms
Deliberate — hero animation
Elevation
elevation.shadow.subtle-down
0 4px 12px rgba(0,0,0,0.05)
Faint downward-cast shadow — header/top-anchored chrome
elevation.shadow.subtle-up
0 -4px 12px rgba(0,0,0,0.05)
Faint upward-cast shadow — dock/bottom-anchored chrome
elevation.z-index.base
0
Default document flow
elevation.z-index.dock
999
Top-most persistent chrome (toasts, docks)
elevation.z-index.header
100
Sticky/fixed site header
elevation.z-index.modal
500
Modal dialogs, overlays
Focus
focus.ring
{"color":"{color.primary-60}","offset":"2px","style":"solid","width":"{border.stroke-2}"}
WCAG 2.2 AAA-conformant focus ring; 3:1 contrast against any tenant background
Motion
Read the full motion guidance →
motion.ease-display
[0.4,0.14,0.3,1.0]
Expressive interaction — toasts, modals, hero
motion.ease-enter
[0.0,0.0,0.4,1.0]
motion.ease-exit
[0.2,0.0,1.0,1.0]
motion.ease-utility
[0.2,0,0.4,1.0]
Productive interaction — buttons, inputs, tabs
Size
Read the full spacing guidance →
size.space-1
0.125rem
2px @ 16px base — hairline gutter
size.space-10
4rem
64px @ 16px base — major section
size.space-11
5rem
80px @ 16px base
size.space-12
6rem
96px @ 16px base
size.space-13
10rem
160px @ 16px base — hero spacing
size.space-2
0.25rem
4px @ 16px base
size.space-3
0.5rem
8px @ 16px base — paragraph rhythm floor
size.space-4
0.75rem
12px @ 16px base
size.space-5
1rem
16px @ 16px base — body grid unit
size.space-6
1.5rem
24px @ 16px base
size.space-7
2rem
32px @ 16px base — section gutter
size.space-8
2.5rem
40px @ 16px base
size.space-9
3rem
48px @ 16px base
Surface
surface.bg-elevated
oklch(16% 0.05 250)
surface.bg-overlay
oklch(20% 0.05 250)
surface.bg-primary
oklch(10% 0.04 255)
surface.bg-secondary
oklch(13% 0.04 255)
surface.fg-1
oklch(92% 0.01 255)
primary text
surface.fg-2
oklch(72% 0.01 255)
secondary text
surface.fg-3
oklch(55% 0.01 255)
muted text
Typography
Read the full typography guidance →
typography.display-1
{"fontFamily":"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"1.25rem","fontWeight":500,"letterSpacing":"-0.01em","lineHeight":1.4}
20/28 — sub-heading
typography.display-2
{"fontFamily":"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"1.5rem","fontWeight":500,"letterSpacing":"-0.01em","lineHeight":1.34}
24/32 — section heading
typography.display-3
{"fontFamily":"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"2rem","fontWeight":400,"letterSpacing":"-0.015em","lineHeight":1.25}
32/40 — page title
typography.display-4
{"fontFamily":"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"2.625rem","fontWeight":300,"letterSpacing":"-0.02em","lineHeight":1.2}
42/50 — hero / landing
typography.utility-1
{"fontFamily":"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"0.75rem","fontWeight":400,"letterSpacing":"0.16px","lineHeight":1.34}
12/16 — caption, label, table cell
typography.utility-2
{"fontFamily":"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"0.875rem","fontWeight":400,"letterSpacing":"0.16px","lineHeight":1.43}
14/20 — secondary body, helper text
typography.utility-3
{"fontFamily":"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"1rem","fontWeight":400,"letterSpacing":"0px","lineHeight":1.5}
16/24 — body floor
typography.utility-4
{"fontFamily":"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"1rem","fontWeight":600,"letterSpacing":"0px","lineHeight":1.5}
16/24 — UI heading, button label, table heading
typography.wiki-body
{"fontFamily":"'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"1.0625rem","fontWeight":400,"letterSpacing":"0px","lineHeight":1.6}
17/27 — wiki article body (IBM Plex Sans, 106.25% base, 1.6 leading, 65ch measure)
typography.wiki-code
{"fontFamily":"'IBM Plex Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', monospace","fontSize":"0.9375rem","fontWeight":400,"letterSpacing":"0px","lineHeight":1.6}
15/24 — wiki inline and block code (IBM Plex Mono)
typography.wiki-h1
{"fontFamily":"'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"2.25rem","fontWeight":600,"letterSpacing":"-0.015em","lineHeight":1.22}
36/44 — wiki article h1; 2.25rem per editorial research pass 2026-05-06
typography.wiki-h2
{"fontFamily":"'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"1.75rem","fontWeight":600,"letterSpacing":"-0.01em","lineHeight":1.28}
28/36 — wiki section heading; 1.75rem per editorial research pass 2026-05-06
typography.wiki-h3
{"fontFamily":"'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"1.375rem","fontWeight":600,"letterSpacing":"0px","lineHeight":1.36}
22/30 — wiki subsection heading; 1.375rem per editorial research pass 2026-05-06
typography.wiki-h4
{"fontFamily":"'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"1.125rem","fontWeight":600,"letterSpacing":"0px","lineHeight":1.44}
18/26 — wiki heading level 4; 1.125rem per editorial research pass 2026-05-06
Viewport
viewport.compact
799px
≤ 799px — single-column mobile layout; sidebar collapses to drawer
viewport.medium
1151px
800px – 1151px — two-column layout; TOC inline with content
viewport.wide
1152px
≥ 1152px — three-column layout; sidebar + content + TOC
Theme
Accessibility
theme.accessibility.contrast-floor-focus-ring
3
Minimum contrast ratio, focus ring against its surface
theme.accessibility.contrast-floor-text
7
Minimum contrast ratio, body text against its surface
theme.accessibility.min-touch-target
44px
Minimum interactive touch-target size
theme.accessibility.motion-respect
prefers-reduced-motion honored at all interaction layers
Motion-reduction conformance statement
theme.accessibility.wcag-target
2.2 AAA
WCAG conformance target for this design system
Dark
theme.dark.border-interactive
#7392ff
2.88:1 vs white
primary-40 — input border, interactive element outline on dark bg
theme.dark.border-strong
#878d99
3.33:1 vs white
neutral-50 — strong borders, table rules
theme.dark.border-subtle
#4a4f59
8.22:1 vs white
neutral-70 — hairline borders on dark surface
theme.dark.focus-ring
#7392ff
2.88:1 vs white
primary-40 — focus ring; 5.59:1 vs surface-base (AA non-text; corrected 2026-07-15, was mislabeled 3.1:1)
theme.dark.ink-disabled
#4a4f59
8.22:1 vs white
neutral-70 — disabled text on dark surface
theme.dark.ink-on-inverse
#0e0f12
19.17:1 vs white
neutral-100 — text on light chip within dark page
theme.dark.ink-primary
#f5f6f8
1.08:1 vs white
neutral-10 — primary text on dark surface; 14.5:1 vs surface-base
theme.dark.ink-secondary
#aab0bb
2.18:1 vs white
neutral-40 — secondary text; 6.2:1 vs surface-base (AA)
theme.dark.interactive-ghost-hover
rgba(255,255,255,0.08)
semi-transparent white — ghost button hover on dark
theme.dark.interactive-ghost-pressed
rgba(255,255,255,0.12)
semi-transparent white — ghost button press on dark
theme.dark.interactive-primary
#234ed8
6.66:1 vs white
primary-60 — button fill; 6.66:1 with white text (fixed 2026-07-15: was primary-50 at a hair's-width 4.53:1 pass with a wrong 4.8:1 description; moved to match light theme's own resting value for a real safety margin)
theme.dark.interactive-primary-hover
#173ab1
9.22:1 vs white
primary-70 — hover state on dark; 9.22:1 with white text (fixed 2026-07-15: was primary-40, a real AA failure at 2.88:1 — dark mode was lightening on hover instead of darkening, the opposite of light theme's own pattern)
theme.dark.interactive-primary-pressed
#0c2785
12.77:1 vs white
primary-80 — pressed state on dark; 12.77:1 with white text (added 2026-07-15: this token had no entry anywhere in this governed source at all — only a hand-added, non-compliant value in the generated CSS at 1.87:1, a severe real AA failure)
theme.dark.support-caution
#f5cd7a
1.51:1 vs white
caution-30 — warning text on dark background
theme.dark.support-caution-bg
#3d2e0a
13.18:1 vs white
dark caution tint — warning banner fill on dark page
theme.dark.support-critical
#f0a3a3
2.01:1 vs white
critical-30 — error text on dark background (AA)
theme.dark.support-critical-bg
#3d1515
15.95:1 vs white
dark critical tint — error banner fill on dark page
theme.dark.support-positive
#9fdaae
1.60:1 vs white
positive-30 — success text on dark background
theme.dark.surface-base
#1f2125
16.12:1 vs white
neutral-90 — wiki page background in dark mode
theme.dark.surface-code
#151618
18.11:1 vs white
near-black — code block background; darker than page to create depth
theme.dark.surface-elevated
#33373e
11.95:1 vs white
neutral-80 — card, panel, sidebar surface in dark mode
theme.dark.surface-inverse
#f5f6f8
1.08:1 vs white
neutral-10 — inverted surface (light chip on dark page)
theme.dark.surface-subtle
#2a2d33
13.80:1 vs white
between neutral-80 and neutral-90 — subtle dividers, table rows
theme.dark.wiki-code-comment
#878d99
3.33:1 vs white
neutral-50 — syntax highlight comment on dark code block
theme.dark.wiki-code-keyword
#f5cd7a
1.51:1 vs white
caution-30 — syntax highlight keyword on dark code block
theme.dark.wiki-code-string
#9fdaae
1.60:1 vs white
positive-30 — syntax highlight string literal on dark code block
theme.dark.wiki-link
#a6bcff
1.87:1 vs white
primary-30 — wiki hyperlink on dark page; 8.64:1 vs surface-base, 6.41:1 vs surface-elevated (AA on both; corrected 2026-07-17 — the prior primary-40 value only verified against surface-base and failed at 4.15:1 against surface-elevated, the card/panel/sidebar surface this token is also used against in dark mode)
theme.dark.wiki-redlink
#f0a3a3
2.01:1 vs white
critical-30 — wiki red (missing) link on dark page
Semantic
theme.semantic.border-interactive
{color.primary-60}
theme.semantic.border-strong
{color.neutral-50}
neutral-50 — 3.33:1 vs surface-base (AA non-text, WCAG 1.4.11). Was neutral-40 (2.18:1, real failure — corrected 2026-07-17; used as the resting-state border on select/input-text/checkbox and the off-state track fill on switch, all real required control boundaries, not decorative). Matches the dark theme's own border-strong, which already used this same neutral-50 step.
theme.semantic.border-subtle
{color.neutral-20}
theme.semantic.focus-ring
{color.primary-60}
theme.semantic.ink-disabled
{color.neutral-50}
theme.semantic.ink-on-caution
{color.neutral-100}
theme.semantic.ink-on-critical
{color.white}
theme.semantic.ink-on-interactive
{color.white}
theme.semantic.ink-on-positive
{color.white}
theme.semantic.ink-placeholder
{color.neutral-60}
neutral-60 — 5.27:1 vs surface-base (AA). Was neutral-50 (3.33:1, real AA failure — corrected 2026-07-17); shares no value with ink-disabled since disabled text is WCAG-exempt (1.4.3) but placeholder text is not.
theme.semantic.ink-primary
{color.neutral-100}
theme.semantic.ink-secondary
{color.neutral-70}
theme.semantic.interactive-critical
{color.critical-60}
theme.semantic.interactive-critical-hover
{color.critical-70}
theme.semantic.interactive-critical-pressed
{color.critical-70}
theme.semantic.interactive-ghost
transparent
theme.semantic.interactive-ghost-hover
{color.neutral-10}
theme.semantic.interactive-ghost-pressed
{color.neutral-20}
theme.semantic.interactive-primary
{color.primary-60}
theme.semantic.interactive-primary-disabled
{color.neutral-20}
theme.semantic.interactive-primary-hover
{color.primary-70}
theme.semantic.interactive-primary-pressed
{color.primary-80}
theme.semantic.interactive-secondary
{color.neutral-80}
theme.semantic.interactive-secondary-hover
{color.neutral-90}
theme.semantic.interactive-secondary-pressed
{color.neutral-100}
theme.semantic.orgchart.admin-entity.border
{color.orgchart.grey}
theme.semantic.orgchart.admin-entity.surface
{color.orgchart.grey-bg}
theme.semantic.orgchart.broker-dealer.border
{color.orgchart.purple}
theme.semantic.orgchart.broker-dealer.surface
{color.orgchart.purple-bg}
theme.semantic.orgchart.corporate-holding.border
{color.orgchart.green}
theme.semantic.orgchart.corporate-holding.surface
{color.orgchart.green-bg}
theme.semantic.orgchart.equity-partner.border
{color.orgchart.orange}
theme.semantic.orgchart.equity-partner.surface
{color.orgchart.orange-bg}
theme.semantic.orgchart.fund-vehicle.border
{color.orgchart.yellow}
theme.semantic.orgchart.fund-vehicle.surface
{color.orgchart.yellow-bg}
theme.semantic.orgchart.investment-vehicle.border
{color.orgchart.blue}
theme.semantic.orgchart.investment-vehicle.surface
{color.orgchart.blue-bg}
theme.semantic.orgchart.legacy-asset.border
{color.orgchart.teal}
theme.semantic.orgchart.legacy-asset.surface
{color.orgchart.teal-bg}
theme.semantic.orgchart.legacy-corporate.border
{color.orgchart.magenta}
theme.semantic.orgchart.legacy-corporate.surface
{color.orgchart.magenta-bg}
theme.semantic.support-caution
{color.caution-70}
theme.semantic.support-caution-bg
{color.caution-10}
theme.semantic.support-critical
{color.critical-60}
theme.semantic.support-critical-bg
{color.critical-10}
theme.semantic.support-info
{color.primary-60}
theme.semantic.support-info-bg
{color.primary-10}
theme.semantic.support-positive
{color.positive-70}
theme.semantic.support-positive-bg
{color.positive-10}
theme.semantic.surface-base
{color.white}
theme.semantic.surface-elevated
{color.white}
theme.semantic.surface-inverse
{color.neutral-100}
theme.semantic.surface-subtle
{color.neutral-10}
Paper
Primitive
paper.primitive.color.financial-cell-divider
#e3e3e3
1.28:1 vs white
Financial-report-layout V5 default cell border-bottom (border:0;border-bottom:1px solid #e3e3e3) -- the faint horizontal-rules-only grid, distinct from the heavier header/subtotal/total structural rules.
paper.primitive.color.financial-gutter
#aaaaaa
2.32:1 vs white
Financial-report-layout line-number gutter (dashboard theme only, JS-injected, absent from print)
paper.primitive.color.financial-hairline
#cccccc
1.61:1 vs white
Financial-report-layout h2 hairline
paper.primitive.color.financial-primary
#111111
18.88:1 vs white
Financial-report-layout (proforma dashboard) primary ink
paper.primitive.color.financial-row-banner-bg
#f2f4f7
1.10:1 vs white
Financial-report-layout section-banner fill -- the ONLY filled row in the V5 canonical scheme (was #e3edf7 with a separate navy ink; V5 drops both the old saturation and the navy ink, using plain financial-primary ink instead). Corrected 2026-07-29 (V5 canonical spec).
paper.primitive.color.financial-row-subtotal-rule
#aaaaaa
2.32:1 vs white
paper.primitive.color.financial-row-total-rule
#888888
3.54:1 vs white
paper.primitive.color.financial-secondary
#555555
7.46:1 vs white
Financial-report-layout secondary text / notes
paper.primitive.color.ink
#000000
21.00:1 vs white
text-primary — shared by legal agreements and financial-statement-yearend (pure black, no tints, audited-statement look)
paper.primitive.color.ink-attribution
#333333
12.63:1 vs white
Legal signature-attribution / drafting-notes text
paper.primitive.color.ink-secondary
#444444
9.74:1 vs white
Legal hint/progress guidance text
paper.primitive.color.org-chart-label-ink
#334155
10.35:1 vs white
Org-chart edge-label ink -- from the Mexico FIBRA prospectus reference implementation (org-chart-print component).
paper.primitive.color.org-chart-role-blue
#164679
9.61:1 vs white
Org-chart-print role band -- Mexico FIBRA reference (securities/debt-instrument role).
paper.primitive.color.org-chart-role-green
#54924E
3.75:1 vs white
Org-chart-print role band -- from the Mexico FIBRA prospectus reference (Woodfine ownership chain role, consumer-assigned per document). NOT the same as theme-woodfine.css's --wf-green (#198038, the separate Client A chart family's own role color) -- two different real charts, two different real role-color choices.
paper.primitive.color.org-chart-role-grey-border
#9CA3AF
2.54:1 vs white
Org-chart-print grey role band border -- Mexico FIBRA reference (property/asset-entity role).
paper.primitive.color.org-chart-role-grey-edge
#374151
10.31:1 vs white
Org-chart-print grey-role SVG arrowhead/edge-stroke fill -- deliberately darker than role-grey-border (#9CA3AF); a border-matched arrow reads too faint against the page. Do not derive this from the border color for any role -- confirmed only grey needs the split, but model each role's edge-ink as its own slot.
paper.primitive.color.org-chart-role-orange
#F15F22
3.28:1 vs white
Org-chart-print role band -- Mexico FIBRA reference (trustee-bank role).
paper.primitive.color.org-chart-role-vehicle
#EAB308
1.92:1 vs white
Org-chart-print vehicle/trust role (dashed oval shape) -- Mexico FIBRA reference. Matches theme-woodfine.css's --wf-yellow (corrected 2026-07-30) by coincidence of both tracing to the same org-chart palette family, not a forced alias.
paper.primitive.color.org-chart-role-warm-gray-bg
#E5E0DB
1.31:1 vs white
Org-chart-print role band, tinted treatment -- background fill for the warm-gray role (holding companies / passive entities above the management layer). Generic value (not a tenant brand color) -- re-homed 2026-08-02 from a retired standalone color pillar; pairs with org-chart-role-warm-gray-border.
paper.primitive.color.org-chart-role-warm-gray-border
#565151
7.80:1 vs white
Org-chart-print role band, tinted treatment -- border for the warm-gray role. Pairs with org-chart-role-warm-gray-bg.
paper.primitive.color.pdf-nav-grey-dark
#4d4d4d
8.45:1 vs white
Interactive PDF-binder — subtitle, footer instruction
paper.primitive.color.pdf-nav-grey-label
#737373
4.74:1 vs white
Interactive PDF-binder — draft/version label
paper.primitive.color.pdf-nav-grey-light
#f5f5f5
1.09:1 vs white
Interactive PDF-binder — active-entry highlight fill (same value as legal/financial surface-tint)
paper.primitive.color.pdf-nav-navy
#002e63
13.37:1 vs white
Interactive PDF-binder — inactive TOC entry text, HOME button fill
paper.primitive.color.pdf-nav-on-navy
#ffffff
1.00:1 vs white
Interactive PDF-binder — HOME button label
paper.primitive.color.placeholder-mark
#ffff00
1.07:1 vs white
Legal TBD-highlight mark; pair with mso-highlight:yellow in recipe CSS for Word compatibility
paper.primitive.color.placeholder-mark-soft
#FDF3B3
1.13:1 vs white
Shared soft fill-in-sentinel highlight for the mx-fibra-trust and mx-fibra-prospectus families -- 'visible on review, not garish in print' (source CSS comment, both files). A softer amber than the existing placeholder-mark (#ffff00). Do NOT alias to #ffff00 -- a deliberate register choice for Mexican civil-law/securities instruments, not drift.
paper.primitive.color.regulatory-red-herring
#c00000
6.48:1 vs white
BCSC/OSC preliminary-prospectus red-herring notice color — NOT brand-derived, a statutory filing convention. Kept brand-neutral deliberately: this design system ships to other tenants.
paper.primitive.color.rule-grey-mid
#999999
2.85:1 vs white
Shared inter-row/rule grey for the mx-fibra-trust and mx-fibra-prospectus families -- distinct from the financial-report-layout greys (financial-hairline #cccccc, financial-row-total-rule #888888). RESOLVED NAMING COLLISION (2026-07-29): the two families' concurrently-drafted DESIGN-TOKEN-CHANGE proposals independently minted this identical value under two different names at two different layers (mx-fibra-trust proposed a semantic-layer literal 'table-rule-grey'; mx-fibra-prospectus proposed this primitive-layer name 'rule-grey-mid', per its own oq-3 flagging the collision and recommending single-name/single-layer reconciliation). This primitive-layer name won -- matches how the other shared cross-family value (placeholder-mark-soft, above) already works. Both families' semantic layers reference this one primitive.
paper.primitive.color.surface-tint
#f5f5f5
1.09:1 vs white
Legal table-header/form-note tint; same value reused by financial-statement header-bg
paper.primitive.counter.fibra-alpha
system: extends lower-alpha; prefix: "("; suffix: ") "
paper.primitive.counter.fibra-roman
system: extends lower-roman; prefix: "("; suffix: ") "
paper.primitive.font.pdf-nav
["Helvetica","Arial","sans-serif"]
Interactive PDF-binder — Helvetica core-14 PDF fonts (no embedding required)
paper.primitive.font.proforma-sans
["Carlito","Calibri","Liberation Sans","Arial","sans-serif"]
Financial-report-layout dashboard theme. CORRECTED 2026-07-29 (V5 canonical spec, Fable design audit): was ['system-ui','sans-serif'] -- system-ui is a silent WeasyPrint no-op, falls back to DejaVu Sans (wide, heavy), never the intended font. Carlito is Calibri-metric; render host needs fonts-crosextra-carlito installed. font-variant-numeric:tabular-nums lining-nums is mandatory on every cell -- Carlito's default figures are proportional and would break column alignment without it.
paper.primitive.font.sans-fill
["Verdana","Tahoma","DejaVu Sans","sans-serif"]
Subscription-agreement tier-2 fill zones (accessible completion register)
paper.primitive.font.serif-legal
["Times New Roman","Liberation Serif","Times","serif"]
Subscription-agreement and prospectus body/heading text (byte-identical stack)
paper.primitive.font.serif-tinos
["Tinos","Times New Roman","Liberation Serif","Times","serif"]
Agency-suite — Tinos webfont-first
paper.primitive.font.statement-serif
["Georgia","Times New Roman","serif"]
PROVISIONAL — financial-report-layout's classic statement theme; not yet pinned by the not-yet-implemented proforma engine work
paper.primitive.font.statutory-sans
["Calibri","Carlito","Liberation Sans","Arial","sans-serif"]
Financial-statement-yearend — Calibri source-theme font
paper.primitive.org-chart.canvas-width
680px
Fixed print-pixel canvas width. Drives the page-margin check: max_side_margin_in ~= (page_width_in - canvas_width_px/96) / 2. Not a universal constant -- a different jurisdiction's chart with a different node count computes its own canvas width and re-checks this relationship.
paper.primitive.org-chart.edge-dash-loose
6 4
SVG stroke-dasharray for a loose/standard dashed connector (contractual/referral relationship). String-valued (no DTCG strokeStyle $type used here, matching this file's own convention for non-standard-DTCG values).
paper.primitive.org-chart.edge-dash-tight
4 4
SVG stroke-dasharray for a tight dashed connector (flow-through relationship). Pairs with edge-dash-loose.
paper.primitive.org-chart.edge-stroke-width
2px
SVG connector line stroke width.
paper.primitive.org-chart.label-max-width
92px
Edge-label box max width -- tuned to Spanish two/three-line role phrases (e.g. PROPIETARIO BENEFICIARIO) in the reference; English or longer Spanish phrases will wrap differently, re-check per document.
paper.primitive.org-chart.node-height-base
110px
Org-chart node box height, base size. Pairs with node-width-base.
paper.primitive.org-chart.node-height-short
80px
Org-chart node box height, short variant (fewer label lines).
paper.primitive.org-chart.node-height-tall
145px
Org-chart node box height, tall variant (more label lines).
paper.primitive.org-chart.node-pill-radius
110px
Border-radius for the pill/vehicle node shape (role-vehicle's dashed-oval treatment).
paper.primitive.org-chart.node-width-base
210px
Org-chart node box width, base size. Fixed-pixel print-canvas geometry, same convention as canvas-width/edge-stroke-width above. Extracted from legacy pre-generalization org-chart CSS (nodes.css) that hardcoded this with no token backing it.
paper.primitive.page.content-width-portrait
468pt
612pt - 2x72pt(1in) margins; running-header rule width on 1in-margin portrait pages
paper.primitive.page.footer-distance
0.32in
Statutory financial-statement @page footer distance
paper.primitive.page.header-distance
0.5in
Statutory financial-statement @page header distance
paper.primitive.page.margin-bind-block
1.5cm
Financial-report-layout (landscape) top/bottom and non-bind side
paper.primitive.page.margin-bind-inline
2cm
Financial-report-layout (landscape) wider bind/punch edge
paper.primitive.page.margin-bind-left
0.9in
Subscription-agreement left margin (binding-wide side)
paper.primitive.page.margin-bind-right
0.7in
Subscription-agreement right margin (binding-narrow side)
paper.primitive.page.margin-cover-top
0.375in
Prospectus cover page reduced top margin
paper.primitive.page.margin-financial-bottom
1.2cm
Financial-report-layout V5 @page bottom margin -- from the same @page rule; larger than top to seat the @bottom-center page-number counter.
paper.primitive.page.margin-financial-side
1.1cm
Financial-report-layout V5 @page right+left margin (both sides equal) -- from the same @page rule.
paper.primitive.page.margin-financial-top
1.05cm
Financial-report-layout V5 @page top margin -- from 'margin:1.05cm 1.1cm 1.2cm 1.1cm'. Four independently-set values; no existing 2-token pair could represent this, hence three new discrete primitives (top/side/bottom) rather than forcing a symmetric shape.
paper.primitive.page.margin-narrow
0.625in
Prospectus left/right
paper.primitive.page.margin-standard
0.75in
Shared top/bottom — subscription-agreement and prospectus
paper.primitive.page.margin-trust-bottom
0.9in
FIBRA Contrato de Fideicomiso bottom @page margin -- from mx-fibra-trust_V2.css `@page { margin: 1in 1in 0.9in 1in; }` (also `@page toc-page`). Top/right/left of the same rule reuse the existing margin-wide (1in); only the bottom is asymmetric, to seat the `- N -` folio. Value-collides with margin-bind-left (0.9in) but is semantically unrelated (that is subscription's binding-wide SIDE margin).
paper.primitive.page.margin-wide
1in
Agency-suite uniform margin; also the statutory financial-statement margin (all four sides)
paper.primitive.page.print-body-min-size
10.5pt
Minimum body-text size for web-to-print document egress (a legal/financial document viewer's print stylesheet, distinct from the letter-agreement/financial-statement print sub-domains above).
paper.primitive.page.print-header-border
2px solid #000000
Regulatory print-engine header-anchor border rule.
paper.primitive.page.print-orphans
4
CSS orphans value for regulated-document print/PDF output -- string-valued (no DTCG numeric $type applies, matching this file's own counter-family convention). Extracted from a legacy document-viewer print stylesheet that hardcoded this with no token backing it.
paper.primitive.page.print-size-h1
20pt
Regulatory print-engine H1 size (legal-agreement/financial-statement @page rules) -- migrated 2026-08-02 from the legacy tokens/global/token-global-print.yaml, alongside print-size-h3/print-size-wordmark/print-header-border below.
paper.primitive.page.print-size-h3
14pt
Regulatory print-engine H3 size, pairs with print-size-h1.
paper.primitive.page.print-size-wordmark
14pt
Regulatory print-engine wordmark/masthead size.
paper.primitive.page.print-widows
4
CSS widows value for regulated-document print/PDF output -- string-valued, pairs with print-orphans.
paper.primitive.page.size-letter-height
11in
US Letter height (portrait); financial-report-layout's landscape orientation swaps width/height in its own @page rule
paper.primitive.page.size-letter-landscape-height
8.5in
US Letter landscape height (96dpi equivalent: 816px). Pairs with size-letter-landscape-width.
paper.primitive.page.size-letter-landscape-width
11in
US Letter landscape width (96dpi equivalent: 1056px) -- generic wide-page geometry, previously duplicated ad hoc across several org-chart-print predecessor files as a hardcoded 1056px canvas with no token backing it. Same page, rotated -- pairs with size-letter-landscape-height.
paper.primitive.page.size-letter-width
8.5in
US Letter width — shared by every Paper CSS-print document
paper.primitive.pdf-nav.active-marker-size
7.2pt
Filled square, deterministic replacement for a WinAnsi-undefined glyph (U+25BA) that readers previously substituted as .notdef, which happened to render as a filled box in some viewers but is undefined behavior. Drawn as a rectangle instead -- same appearance, reader-independent.
paper.primitive.pdf-nav.home-corner-radius
3pt
CORRECTED 2026-07-29 (project-jennifer, was 4pt -- never matched shipped code; the original value came from an early draft, not measurement. Verified against 3 production binders (MOU, Agency Agreements, MX Prospectus) + the Client A reference generator.)
paper.primitive.pdf-nav.home-height
14pt
CORRECTED 2026-07-29 (project-jennifer, was 20pt -- never matched shipped code; the original value came from an early draft, not measurement. Verified against 3 production binders (MOU, Agency Agreements, MX Prospectus) + the Client A reference generator.)
paper.primitive.pdf-nav.home-width
54pt
CORRECTED 2026-07-29 (project-jennifer, was 64pt -- never matched shipped code; the original value came from an early draft, not measurement. Verified against 3 production binders (MOU, Agency Agreements, MX Prospectus) + the Client A reference generator.)
paper.primitive.pdf-nav.margin-left
72pt
paper.primitive.pdf-nav.margin-right
540pt
paper.primitive.pdf-nav.page-height
792pt
paper.primitive.pdf-nav.page-width
612pt
paper.primitive.pdf-nav.rule-stroke
1.5pt
paper.primitive.pdf-nav.toc-child-dash-x
120pt
En-dash x-position for a grouped TOC child row -- hangs in the gutter, left of toc-title-x.
paper.primitive.pdf-nav.toc-child-rect-dy
-7pt
Offset from the row's y baseline to the highlight/link rect's bottom edge. NOT -25pt -- the reference generator's -25/h:24 band sits entirely below the text baseline (a bug, not copied here); -7pt brackets the baseline correctly.
paper.primitive.pdf-nav.toc-child-rect-height
22pt
paper.primitive.pdf-nav.toc-child-rect-width
442pt
paper.primitive.pdf-nav.toc-child-rect-x
98pt
paper.primitive.pdf-nav.toc-child-step
26pt
Centre-to-centre pitch for a grouped child row -- tighter than a top-level row's toc-entry-step (48pt) so hugging children read as a group.
paper.primitive.pdf-nav.toc-docparent-link-dy
-15pt
A doc-parented header's own /GoTo link rect is narrower than its drawn highlight box (which stays at the standard row height) so it cannot overlap the first child's link rect.
paper.primitive.pdf-nav.toc-docparent-link-height
36pt
paper.primitive.pdf-nav.toc-docparent-to-child-step
36pt
Pitch from a doc-parented group header (a clickable document that is itself a parent, e.g. Schedules under a Long-Form Agreement) to its first child -- wider than toc-child-step (26pt) so the parent's own grey highlight box clears the child's text by ~3pt.
paper.primitive.pdf-nav.toc-entry-first-y
595pt
CORRECTED 2026-07-29 (project-jennifer, was 565pt -- never matched shipped code; the original value came from an early draft, not measurement. Verified against 3 production binders (MOU, Agency Agreements, MX Prospectus) + the Client A reference generator.)
paper.primitive.pdf-nav.toc-entry-height
46pt
paper.primitive.pdf-nav.toc-entry-step
48pt
centre-to-centre CORRECTED 2026-07-29 (project-jennifer, was 65pt -- never matched shipped code; the original value came from an early draft, not measurement. Verified against 3 production binders (MOU, Agency Agreements, MX Prospectus) + the Client A reference generator.)
paper.primitive.pdf-nav.toc-entry-width
468pt
CORRECTED 2026-07-29 (project-jennifer, was 530pt -- never matched shipped code; the original value came from an early draft, not measurement. Verified against 3 production binders (MOU, Agency Agreements, MX Prospectus) + the Client A reference generator.)
paper.primitive.pdf-nav.toc-num-x
96pt
CORRECTED 2026-07-29 (project-jennifer, was 64pt -- never matched shipped code; the original value came from an early draft, not measurement. Verified against 3 production binders (MOU, Agency Agreements, MX Prospectus) + the Client A reference generator.)
paper.primitive.pdf-nav.toc-title-x
114pt
CORRECTED 2026-07-29 (project-jennifer, was 82pt -- never matched shipped code; the original value came from an early draft, not measurement. Verified against 3 production binders (MOU, Agency Agreements, MX Prospectus) + the Client A reference generator.)
paper.primitive.rule.accent
3pt
Agency-suite form-note left accent bar
paper.primitive.rule.accounting-total
2pt
Prospectus data-table total-row double rule
paper.primitive.rule.cover-heavy
2.25pt
FIBRA portada framing rule weight -- from mx-fibra-trust_V2.css `hr.portada-rule { border-top: 2.25pt solid #000; }` (the two heavy rules that frame the cover title block). Sits between the existing ladder's accounting-total (2pt) and accent/total-double (both 3pt) -- a genuinely new intermediate weight.
paper.primitive.rule.emphasis
1.5pt
Warning box, cover-rule, summary-page border (legal); source financial total rule before the yearend bundle's double-rule upgrade
paper.primitive.rule.hairline
0.5pt
Key-terms table, running-header border, data-table header bottom, financial subtotal top rule (statutory)
paper.primitive.rule.light
0.75pt
Fill lines/table enclosure (legal); subtotal top rule (financial-report-layout statement theme)
paper.primitive.rule.standard
1pt
Form cells, signature line, dividers, hr; financial grand-total top rule
paper.primitive.rule.total-double
3pt
Financial-statement-yearend grand-total bottom rule, rendered border-style:double (upgraded from the source docx's single 1.5pt per the bundle's own deliberate refinement)
paper.primitive.table.cell-pad-x
4pt
paper.primitive.table.cell-pad-y
2pt
paper.primitive.table.indent-1
16pt
paper.primitive.table.indent-2
28pt
paper.primitive.table.num-min-width
105px
Statutory value-column min-width (the one px value in an otherwise pt-based domain — matches the source docx)
paper.primitive.type.financial-report.body
{"fontFamily":"{paper.primitive.font.proforma-sans}","fontSize":"10px","fontWeight":400,"letterSpacing":"0","lineHeight":1.3}
paper.primitive.type.financial-report.h1
{"fontFamily":"{paper.primitive.font.proforma-sans}","fontSize":"17px","fontWeight":700,"letterSpacing":"0","lineHeight":1.2}
Document title. Carries string-set:doctitle for the running header.
paper.primitive.type.financial-report.h2
{"fontFamily":"{paper.primitive.font.proforma-sans}","fontSize":"13px","fontWeight":700,"letterSpacing":"0","lineHeight":1.2}
Statement section heading. 1.5px bottom rule (see rule-table-header-top), no fill.
paper.primitive.type.financial-report.h3
{"fontFamily":"{paper.primitive.font.proforma-sans}","fontSize":"11.5px","fontWeight":700,"letterSpacing":"0","lineHeight":1.2}
paper.primitive.type.financial-report.h4
{"fontFamily":"{paper.primitive.font.proforma-sans}","fontSize":"10.5px","fontWeight":700,"letterSpacing":"0","lineHeight":1.2}
paper.primitive.type.financial-report.note
{"fontFamily":"{paper.primitive.font.proforma-sans}","fontSize":"9.5pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.3}
Italic set in recipe CSS -- no italic field in this repo's typography composite convention.
paper.primitive.type.financial-report.table
{"fontFamily":"{paper.primitive.font.proforma-sans}","fontSize":"10px","fontWeight":400,"letterSpacing":"0","lineHeight":1.3}
font-variant-numeric:tabular-nums lining-nums is mandatory in recipe CSS -- not expressible in this typography composite shape, documented here as a hard requirement.
paper.primitive.type.financial-running-header.currency
{"fontFamily":"{paper.primitive.font.statutory-sans}","fontSize":"9pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.0}
Set font-style:italic in recipe CSS — typography composite has no italic-style field in this repo's convention
paper.primitive.type.financial-running-header.entity
{"fontFamily":"{paper.primitive.font.statutory-sans}","fontSize":"12pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.0}
paper.primitive.type.financial-running-header.statement
{"fontFamily":"{paper.primitive.font.statutory-sans}","fontSize":"11pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.0}
paper.primitive.type.financial-title.entity
{"fontFamily":"{paper.primitive.font.statutory-sans}","fontSize":"16pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.2}
paper.primitive.type.financial-title.report-heading
{"fontFamily":"{paper.primitive.font.statutory-sans}","fontSize":"10pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.2}
paper.primitive.type.financial-title.subtitle
{"fontFamily":"{paper.primitive.font.statutory-sans}","fontSize":"14pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.2}
paper.primitive.type.legal-agency.body
{"fontFamily":"{paper.primitive.font.serif-tinos}","fontSize":"11.5pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.5}
paper.primitive.type.legal-agency.h1
{"fontFamily":"{paper.primitive.font.serif-tinos}","fontSize":"18pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.2}
paper.primitive.type.legal-prospectus.body
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"10pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.35}
paper.primitive.type.legal-prospectus.h1
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"12pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.2}
paper.primitive.type.legal-prospectus.running-header
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"8.5pt","fontWeight":400,"letterSpacing":"0.5pt","lineHeight":1.2}
paper.primitive.type.legal-subscription.body
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"9.5pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.28}
paper.primitive.type.legal-subscription.fill-label
{"fontFamily":"{paper.primitive.font.sans-fill}","fontSize":"10pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.35}
paper.primitive.type.legal-subscription.h1
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"14pt","fontWeight":700,"letterSpacing":"0.5pt","lineHeight":1.2}
paper.primitive.type.legal-trust.body
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"10.5pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.4}
The family's base register. Cover parties/date reuse this size.
paper.primitive.type.legal-trust.cover-subtitle
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"11.5pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.35}
Portada subtitle.
paper.primitive.type.legal-trust.cover-title
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"12.5pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.35}
Portada main title.
paper.primitive.type.legal-trust.draft-stamp
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"8pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.0}
The cover draft stamp. Non-italic, plain black.
paper.primitive.type.legal-trust.h2-seccion
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"11pt","fontWeight":700,"letterSpacing":"0.25pt","lineHeight":1.4}
SECCIÓN / ANTECEDENTES / DECLARACIONES / ANEXOS / FIRMAS heads.
paper.primitive.type.legal-trust.h3-clausula
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"10.5pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.4}
Cláusula x.y heads, declaración leads, Anexo heads.
paper.primitive.type.legal-trust.proemio-title
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"11pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.4}
The two bold uppercase opening headline lines of the proemio.
paper.primitive.type.legal-trust.sig-cargo
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"9.5pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.35}
The cargo (title) line under a signatory. Set font-style:italic in recipe CSS.
paper.primitive.type.legal-trust.table-body
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"10pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.4}
Comité roster / criterios data tables.
paper.primitive.type.legal-trust.toc-body
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"10pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.3}
Índice entry rows.
paper.primitive.type.legal-trust.toc-title
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"12pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.4}
The 'Índice' heading.
paper.primitive.type.mx-fibra.body
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"10.5pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.4}
paper.primitive.type.mx-fibra.h1
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"12pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.4}
paper.primitive.type.mx-fibra.h2
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"11pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.4}
paper.primitive.type.mx-fibra.h3
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"10.5pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.4}
paper.primitive.type.mx-fibra.h4
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"10.5pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.4}
Set font-style:italic in recipe CSS -- this repo's typography composite carries no italic field.
paper.primitive.type.org-chart-alias
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"9.5px","fontWeight":400,"letterSpacing":"0","lineHeight":1.25}
Node defined-term alias zone -- italic set in recipe CSS (no italic field in this composite shape).
paper.primitive.type.org-chart-code
{"fontFamily":"'Courier New', monospace","fontSize":"8.5px","fontWeight":400,"letterSpacing":"0","lineHeight":1.2}
Node internal entity-code zone -- monospace.
paper.primitive.type.org-chart-country
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"9.5px","fontWeight":400,"letterSpacing":"0","lineHeight":1.25}
Node jurisdiction zone.
paper.primitive.type.org-chart-legal
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"9.5px","fontWeight":400,"letterSpacing":"0","lineHeight":1.25}
Node regulatory/status-line zone.
paper.primitive.type.org-chart-title
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"11.5px","fontWeight":700,"letterSpacing":"0","lineHeight":1.2}
Node legal-name zone.
paper.primitive.type.pdf-nav.binder-title
{"fontFamily":"{paper.primitive.font.pdf-nav}","fontSize":"16pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.0}
paper.primitive.type.pdf-nav.draft-label
{"fontFamily":"{paper.primitive.font.pdf-nav}","fontSize":"9pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.0}
paper.primitive.type.pdf-nav.footer
{"fontFamily":"{paper.primitive.font.pdf-nav}","fontSize":"9pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.0}
Rendered italic (Helvetica-Oblique) in the PDF generator
paper.primitive.type.pdf-nav.home-label
{"fontFamily":"{paper.primitive.font.pdf-nav}","fontSize":"8pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.0}
paper.primitive.type.pdf-nav.subtitle
{"fontFamily":"{paper.primitive.font.pdf-nav}","fontSize":"10pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.0}
paper.primitive.type.pdf-nav.toc-entry
{"fontFamily":"{paper.primitive.font.pdf-nav}","fontSize":"11pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.0}
Semantic
paper.semantic.agency-suite.body-type
{paper.primitive.type.legal-agency.body}
paper.semantic.agency-suite.form-note-accent
{paper.primitive.rule.accent}
paper.semantic.agency-suite.heading-type
{paper.primitive.type.legal-agency.h1}
paper.semantic.agency-suite.page-margin
{paper.primitive.page.margin-wide}
paper.semantic.agency-suite.rule-signature
{paper.primitive.rule.standard}
paper.semantic.financial-report-layout.body-type
{paper.primitive.type.financial-report.body}
paper.semantic.financial-report-layout.cell-divider-color
{paper.primitive.color.financial-cell-divider}
th/td default border-bottom -- the faint horizontal-rules-only cell grid (V5).
paper.semantic.financial-report-layout.column-label-width
25%
Wide multi-period table; up to 11 data columns
paper.semantic.financial-report-layout.h1-type
{paper.primitive.type.financial-report.h1}
paper.semantic.financial-report-layout.h2-type
{paper.primitive.type.financial-report.h2}
paper.semantic.financial-report-layout.h3-type
{paper.primitive.type.financial-report.h3}
paper.semantic.financial-report-layout.h4-type
{paper.primitive.type.financial-report.h4}
paper.semantic.financial-report-layout.hairline-rule
{paper.primitive.rule.hairline}
Interior divider rules (not the header/subtotal/total structural rules below).
paper.semantic.financial-report-layout.header-rule
{paper.primitive.rule.emphasis}
th bottom rule -- 1.5px, no fill (V5).
paper.semantic.financial-report-layout.ink-gutter
{paper.primitive.color.financial-gutter}
Dashboard theme only -- absent in print/statement theme
paper.semantic.financial-report-layout.ink-hairline
{paper.primitive.color.financial-hairline}
paper.semantic.financial-report-layout.ink-primary
{paper.primitive.color.financial-primary}
paper.semantic.financial-report-layout.ink-secondary
{paper.primitive.color.financial-secondary}
paper.semantic.financial-report-layout.note-type
{paper.primitive.type.financial-report.note}
paper.semantic.financial-report-layout.page-margin-bottom
{paper.primitive.page.margin-financial-bottom}
paper.semantic.financial-report-layout.page-margin-left
{paper.primitive.page.margin-financial-side}
paper.semantic.financial-report-layout.page-margin-right
{paper.primitive.page.margin-financial-side}
paper.semantic.financial-report-layout.page-margin-top
{paper.primitive.page.margin-financial-top}
paper.semantic.financial-report-layout.row-banner-bg
{paper.primitive.color.financial-row-banner-bg}
tr.section-banner -- the ONLY filled row in the V5 scheme (#f2f4f7, was #e3edf7). Ink is ink-primary, not a dedicated navy (V5 drops row-banner-ink).
paper.semantic.financial-report-layout.row-subtotal-rule
{paper.primitive.color.financial-row-subtotal-rule}
paper.semantic.financial-report-layout.row-total-rule
{paper.primitive.color.financial-row-total-rule}
paper.semantic.financial-report-layout.subtotal-rule
{paper.primitive.rule.standard}
tr.subtotal top rule -- 1px, no fill (V5).
paper.semantic.financial-report-layout.table-type
{paper.primitive.type.financial-report.table}
paper.semantic.financial-report-layout.total-rule-bottom
{paper.primitive.rule.accounting-total}
tr.total bottom rule -- 2px, no fill (V5).
paper.semantic.financial-report-layout.total-rule-top
{paper.primitive.rule.accounting-total}
tr.total top rule -- 2px, no fill (V5; was the old 3pt total-double single rule).
paper.semantic.financial-statement-yearend.cell-pad-x
{paper.primitive.table.cell-pad-x}
paper.semantic.financial-statement-yearend.cell-pad-y
{paper.primitive.table.cell-pad-y}
paper.semantic.financial-statement-yearend.column-label-width
55%
3-column statement layout (label + 2 equal value columns)
paper.semantic.financial-statement-yearend.column-value-width
22.5%
paper.semantic.financial-statement-yearend.footer-distance
{paper.primitive.page.footer-distance}
paper.semantic.financial-statement-yearend.grand-total-rule-bottom
{paper.primitive.rule.total-double}
paper.semantic.financial-statement-yearend.grand-total-rule-top
{paper.primitive.rule.standard}
paper.semantic.financial-statement-yearend.header-distance
{paper.primitive.page.header-distance}
paper.semantic.financial-statement-yearend.header-row-rule
{paper.primitive.rule.hairline}
paper.semantic.financial-statement-yearend.indent-1
{paper.primitive.table.indent-1}
paper.semantic.financial-statement-yearend.indent-2
{paper.primitive.table.indent-2}
paper.semantic.financial-statement-yearend.ink
{paper.primitive.color.ink}
paper.semantic.financial-statement-yearend.num-min-width
{paper.primitive.table.num-min-width}
paper.semantic.financial-statement-yearend.page-margin
{paper.primitive.page.margin-wide}
paper.semantic.financial-statement-yearend.running-header-currency-type
{paper.primitive.type.financial-running-header.currency}
paper.semantic.financial-statement-yearend.running-header-entity-type
{paper.primitive.type.financial-running-header.entity}
paper.semantic.financial-statement-yearend.running-header-rule-width
{paper.primitive.page.content-width-portrait}
paper.semantic.financial-statement-yearend.running-header-statement-type
{paper.primitive.type.financial-running-header.statement}
paper.semantic.financial-statement-yearend.signature-rule
{paper.primitive.rule.hairline}
paper.semantic.financial-statement-yearend.subtotal-rule
{paper.primitive.rule.hairline}
paper.semantic.financial-statement-yearend.title-entity-type
{paper.primitive.type.financial-title.entity}
paper.semantic.financial-statement-yearend.title-report-heading-type
{paper.primitive.type.financial-title.report-heading}
paper.semantic.financial-statement-yearend.title-subtitle-type
{paper.primitive.type.financial-title.subtitle}
paper.semantic.legal-subscription-agreement.address-block.margin
4pt 0 4pt 20pt
paper.semantic.legal-subscription-agreement.address-block.page-break
avoid
paper.semantic.legal-subscription-agreement.address-block.text-align
left
paper.semantic.legal-subscription-agreement.body-type
{paper.primitive.type.legal-subscription.body}
paper.semantic.legal-subscription-agreement.fill-label-type
{paper.primitive.type.legal-subscription.fill-label}
paper.semantic.legal-subscription-agreement.heading-type
{paper.primitive.type.legal-subscription.h1}
paper.semantic.legal-subscription-agreement.ink
{paper.primitive.color.ink}
paper.semantic.legal-subscription-agreement.ordinal-marker.continuation-indent
20pt
Shares the ordinal system's 20pt indent grid — used by .indent for plain indented paragraphs outside a list (e.g. continuation text that isn't itself a sub-clause).
paper.semantic.legal-subscription-agreement.ordinal-marker.nested-format
"(" counter(sub-item, lower-roman) ")"
paper.semantic.legal-subscription-agreement.ordinal-marker.nested-indent
20pt
paper.semantic.legal-subscription-agreement.ordinal-marker.nested-top-margin
3pt
paper.semantic.legal-subscription-agreement.ordinal-marker.outer-format
"(" counter(outer-item, lower-alpha) ")"
paper.semantic.legal-subscription-agreement.ordinal-marker.outer-indent
20pt
paper.semantic.legal-subscription-agreement.ordinal-marker.outer-item-margin
0 0 4pt 0
paper.semantic.legal-subscription-agreement.ordinal-marker.outer-list-margin
0 0 5pt 0
paper.semantic.legal-subscription-agreement.ordinal-marker.third-level
none — (A)/(B)/(C) sub-markers stay inline text within the nested item, per the source docx's own structure; not a real third list level
paper.semantic.legal-subscription-agreement.page-margin-bottom
{paper.primitive.page.margin-standard}
paper.semantic.legal-subscription-agreement.page-margin-left
{paper.primitive.page.margin-bind-left}
paper.semantic.legal-subscription-agreement.page-margin-right
{paper.primitive.page.margin-bind-right}
paper.semantic.legal-subscription-agreement.page-margin-top
{paper.primitive.page.margin-standard}
paper.semantic.legal-subscription-agreement.placeholder-mark
{paper.primitive.color.placeholder-mark}
paper.semantic.legal-subscription-agreement.rule-fill-line
{paper.primitive.rule.light}
paper.semantic.legal-subscription-agreement.rule-form-cell
{paper.primitive.rule.standard}
paper.semantic.legal-subscription-agreement.rule-warning-box
{paper.primitive.rule.emphasis}
paper.semantic.legal-subscription-agreement.schedule-footer-format.multi-character
"- " id "-" counter(idpage) " -", e.g. "- B1-1 -", "- B2-3 -"
PROVENANCE CORRECTION (caught by Fable coverage review, 2026-07-23): this rule does NOT currently exist in templates/subscription-form.css — it lives only inline in the Friends & Family HTML's own <style> block. Transcribed from the live HTML, not the canonical CSS mirror. The canonical file arguably should gain these rules — that's a project-documents-side CSS change, out of scope for this token draft.
paper.semantic.legal-subscription-agreement.schedule-footer-format.single-letter
"- " letter counter(letterpage) " -", e.g. "- A1 -", "- B2 -"
Backed by templates/subscription-form.css's own @page schedule-a/b/c rules — verified present in the canonical file.
paper.semantic.legal-subscription-agreement.schedule-instruction.font-size
9pt
paper.semantic.legal-subscription-agreement.schedule-instruction.font-style
italic
paper.semantic.legal-subscription-agreement.schedule-instruction.margin
0 0 12pt 0
paper.semantic.legal-subscription-agreement.schedule-instruction.text-align
center
paper.semantic.mx-fibra-prospectus.aviso-border
{paper.primitive.rule.standard}
Distinct from aviso-importante -- a lighter interior notice box, sentence case, not bold, 9.5pt.
paper.semantic.mx-fibra-prospectus.aviso-importante-border
{paper.primitive.rule.standard}
paper.semantic.mx-fibra-prospectus.aviso-importante-type
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"9pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.35}
paper.semantic.mx-fibra-prospectus.aviso-type
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"9.5pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.35}
paper.semantic.mx-fibra-prospectus.body-type
{paper.primitive.type.mx-fibra.body}
paper.semantic.mx-fibra-prospectus.cover-doc-type-type
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"12pt","fontWeight":700,"letterSpacing":"0.75pt","lineHeight":1.4}
paper.semantic.mx-fibra-prospectus.cover-header-row-type
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"10pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.4}
paper.semantic.mx-fibra-prospectus.cover-headline-type
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"12.5pt","fontWeight":700,"letterSpacing":"0","lineHeight":1.3}
paper.semantic.mx-fibra-prospectus.cover-issuer-type
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"14pt","fontWeight":700,"letterSpacing":"0.25pt","lineHeight":1.4}
paper.semantic.mx-fibra-prospectus.cover-legend-type
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"8.5pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.3}
paper.semantic.mx-fibra-prospectus.cover-logo-max-width
200pt
paper.semantic.mx-fibra-prospectus.cover-margin-top
{paper.primitive.page.margin-cover-top}
paper.semantic.mx-fibra-prospectus.cover-rule
{paper.primitive.rule.emphasis}
1.5pt cover rule. Two other rule sites in this family: hr.rule (1pt, rule.standard) and hr.rule-light (0.5pt, rule-grey-mid color).
paper.semantic.mx-fibra-prospectus.data-table-body-type
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"10pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.4}
paper.semantic.mx-fibra-prospectus.data-table-closing-rule
{paper.primitive.rule.standard}
paper.semantic.mx-fibra-prospectus.data-table-footnote-type
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"9.5pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.35}
paper.semantic.mx-fibra-prospectus.data-table-header-rule-bottom
{paper.primitive.rule.light}
paper.semantic.mx-fibra-prospectus.data-table-header-rule-top
{paper.primitive.rule.standard}
paper.semantic.mx-fibra-prospectus.data-table-num-cell
text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums
paper.semantic.mx-fibra-prospectus.data-table-row-rule
0.5pt solid {paper.primitive.color.rule-grey-mid}
0.5pt weight in #999 grey, not black -- shares this grey with hr.rule-light.
paper.semantic.mx-fibra-prospectus.data-table-subtotal-rule
{paper.primitive.rule.hairline}
paper.semantic.mx-fibra-prospectus.data-table-total-rule-bottom
{paper.primitive.rule.accounting-total}
Rendered border-style:double at 2pt weight.
paper.semantic.mx-fibra-prospectus.data-table-total-rule-top
{paper.primitive.rule.hairline}
paper.semantic.mx-fibra-prospectus.draft-stamp
DRAFT — <date> — V<n>, @page :first @top-right, 8pt serif-legal, non-italic, #000
paper.semantic.mx-fibra-prospectus.folio-format
"- " counter(page) " -", bottom-center, 9pt serif-legal, #000; suppressed on cover-page and toc-page
paper.semantic.mx-fibra-prospectus.glosario-body-type
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"10.5pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.35}
paper.semantic.mx-fibra-prospectus.glosario-header-rule
{paper.primitive.rule.light}
paper.semantic.mx-fibra-prospectus.glosario-term-width
26%
paper.semantic.mx-fibra-prospectus.h1-type
{paper.primitive.type.mx-fibra.h1}
paper.semantic.mx-fibra-prospectus.h2-type
{paper.primitive.type.mx-fibra.h2}
paper.semantic.mx-fibra-prospectus.h3-type
{paper.primitive.type.mx-fibra.h3}
paper.semantic.mx-fibra-prospectus.h4-type
{paper.primitive.type.mx-fibra.h4}
paper.semantic.mx-fibra-prospectus.heading-keep-with-next
break-before: avoid; page-break-before: avoid
Protects the element following a heading from being orphaned onto the next page.
paper.semantic.mx-fibra-prospectus.ink
{paper.primitive.color.ink}
paper.semantic.mx-fibra-prospectus.list-marker-alpha
{paper.primitive.counter.fibra-alpha}
Present so any clause-style enumeration inherits the register -- unused in the current prospectus body.
paper.semantic.mx-fibra-prospectus.list-marker-roman
{paper.primitive.counter.fibra-roman}
paper.semantic.mx-fibra-prospectus.page-margin-block
{paper.primitive.page.margin-standard}
paper.semantic.mx-fibra-prospectus.page-margin-inline
{paper.primitive.page.margin-narrow}
0.625in -- deliberately narrower than mx-fibra-trust's ~1in; pinned by the org-chart-print component's fixed-width canvas. Cannot be widened without revisiting that component's canvas width first.
paper.semantic.mx-fibra-prospectus.placeholder-mark
{paper.primitive.color.placeholder-mark-soft}
paper.semantic.mx-fibra-prospectus.signature-block-top-margin
26pt
paper.semantic.mx-fibra-prospectus.signature-entity-type
font-weight: bold; padding-bottom: 34pt
paper.semantic.mx-fibra-prospectus.signature-line
0.75pt solid #000, width 220pt inline-block
paper.semantic.mx-fibra-prospectus.signature-one-per-page
break-before: page
One responsible party per page -- eight parties: Fideicomitente, Administrador, Fiduciario, Representante Común, Intermediario Colocador, Agente Estructurador, Auditor Externo, Asesor Legal Independiente.
paper.semantic.mx-fibra-prospectus.term-block-label-width
30%
paper.semantic.mx-fibra-prospectus.term-block-value-align
justify
paper.semantic.mx-fibra-prospectus.term-label-inline
font-weight: bold
paper.semantic.mx-fibra-prospectus.toc-body-type
{"fontFamily":"{paper.primitive.font.serif-legal}","fontSize":"10.5pt","fontWeight":400,"letterSpacing":"0","lineHeight":1.4}
paper.semantic.mx-fibra-prospectus.toc-l1-emphasis
font-weight: bold; text-transform: uppercase (title) / bold (page)
paper.semantic.mx-fibra-prospectus.toc-leader
leader('. ')
paper.semantic.mx-fibra-trust.body-type
{paper.primitive.type.legal-trust.body}
paper.semantic.mx-fibra-trust.cover-margin
{paper.primitive.page.margin-wide}
paper.semantic.mx-fibra-trust.cover-subtitle-type
{paper.primitive.type.legal-trust.cover-subtitle}
paper.semantic.mx-fibra-trust.cover-title-type
{paper.primitive.type.legal-trust.cover-title}
paper.semantic.mx-fibra-trust.draft-stamp-style
font-style: normal; color: #000
Plain black, non-italic -- a deliberate operator-directed departure from the SOMA precedent.
paper.semantic.mx-fibra-trust.draft-stamp-type
{paper.primitive.type.legal-trust.draft-stamp}
paper.semantic.mx-fibra-trust.heading-clausula-type
{paper.primitive.type.legal-trust.h3-clausula}
paper.semantic.mx-fibra-trust.heading-seccion-type
{paper.primitive.type.legal-trust.h2-seccion}
paper.semantic.mx-fibra-trust.inciso-marker-position
list-style-position: inside
Load-bearing third leg of the inciso mechanism, alongside the counter glyph and the 26pt indent -- makes the (a) marker ride the indented first line and lets wrapped lines return to the left margin.
paper.semantic.mx-fibra-trust.indent-notarial
26pt
The recurring 26pt indent grid: body first-line indent, clause-head run-in, inciso marker line, Índice Cláusula-row indent, Definiciones hanging entry, and the generic list fallback. Held as one token so the notarial indent is never hand-typed twice.
paper.semantic.mx-fibra-trust.ink
{paper.primitive.color.ink}
paper.semantic.mx-fibra-trust.list-marker-alpha
{paper.primitive.counter.fibra-alpha}
Parenthetical inciso counter -- (a), (b), (c)... Shares the primitive-layer counter definition with mx-fibra-prospectus rather than each family carrying its own copy.
paper.semantic.mx-fibra-trust.list-marker-roman
{paper.primitive.counter.fibra-roman}
Nested/second-level inciso counter, parenthesized lower-roman. .upper-alpha incisos pass through native upper-alpha with no parenthesis -- a deliberate third case.
paper.semantic.mx-fibra-trust.page-margin-bottom
{paper.primitive.page.margin-trust-bottom}
paper.semantic.mx-fibra-trust.page-margin-left
{paper.primitive.page.margin-wide}
paper.semantic.mx-fibra-trust.page-margin-right
{paper.primitive.page.margin-wide}
paper.semantic.mx-fibra-trust.page-margin-top
{paper.primitive.page.margin-wide}
paper.semantic.mx-fibra-trust.page-size-height
{paper.primitive.page.size-letter-height}
paper.semantic.mx-fibra-trust.page-size-width
{paper.primitive.page.size-letter-width}
paper.semantic.mx-fibra-trust.paragraph-gap
7pt
The family's vertical-rhythm base unit.
paper.semantic.mx-fibra-trust.placeholder-mark
{paper.primitive.color.placeholder-mark-soft}
paper.semantic.mx-fibra-trust.proemio-title-type
{paper.primitive.type.legal-trust.proemio-title}
paper.semantic.mx-fibra-trust.rule-cover
{paper.primitive.rule.cover-heavy}
paper.semantic.mx-fibra-trust.rule-signature-line
{paper.primitive.rule.light}
paper.semantic.mx-fibra-trust.rule-table-close
{paper.primitive.rule.standard}
paper.semantic.mx-fibra-trust.rule-table-header-bottom
{paper.primitive.rule.light}
paper.semantic.mx-fibra-trust.rule-table-header-top
{paper.primitive.rule.standard}
paper.semantic.mx-fibra-trust.rule-table-row
{paper.primitive.rule.hairline}
paper.semantic.mx-fibra-trust.running-header-body
content: ""
DELIBERATE: body pages carry no running-header text, a departure from the SOMA precedent. See oq-3 in the originating draft.
paper.semantic.mx-fibra-trust.signature-cargo-type
{paper.primitive.type.legal-trust.sig-cargo}
paper.semantic.mx-fibra-trust.signature-ink-space
34pt
paper.semantic.mx-fibra-trust.signature-line-width
220pt
paper.semantic.mx-fibra-trust.table-body-type
{paper.primitive.type.legal-trust.table-body}
paper.semantic.mx-fibra-trust.table-rule-grey
{paper.primitive.color.rule-grey-mid}
The body-row separator color paired with rule-table-row. References the shared rule-grey-mid primitive (naming collision with mx-fibra-prospectus's identical value resolved 2026-07-29 -- see that primitive's own $description).
paper.semantic.mx-fibra-trust.toc-body-type
{paper.primitive.type.legal-trust.toc-body}
paper.semantic.mx-fibra-trust.toc-hyphens
hyphens: none
Without it, long SECCIÓN titles broke mid-word under the body's inherited hyphens:auto. A fix, not an incidental default.
paper.semantic.mx-fibra-trust.toc-leader
content: leader(".")
paper.semantic.mx-fibra-trust.toc-title-type
{paper.primitive.type.legal-trust.toc-title}
paper.semantic.org-chart.alias-type
{paper.primitive.type.org-chart-alias}
paper.semantic.org-chart.canvas-width
{paper.primitive.org-chart.canvas-width}
paper.semantic.org-chart.code-type
{paper.primitive.type.org-chart-code}
paper.semantic.org-chart.country-type
{paper.primitive.type.org-chart-country}
paper.semantic.org-chart.edge-dash-loose
{paper.primitive.org-chart.edge-dash-loose}
paper.semantic.org-chart.edge-dash-tight
{paper.primitive.org-chart.edge-dash-tight}
paper.semantic.org-chart.edge-stroke-width
{paper.primitive.org-chart.edge-stroke-width}
paper.semantic.org-chart.label-ink
{paper.primitive.color.org-chart-label-ink}
Edge-label text color.
paper.semantic.org-chart.label-max-width
{paper.primitive.org-chart.label-max-width}
paper.semantic.org-chart.legal-type
{paper.primitive.type.org-chart-legal}
paper.semantic.org-chart.node-height-base
{paper.primitive.org-chart.node-height-base}
paper.semantic.org-chart.node-height-short
{paper.primitive.org-chart.node-height-short}
paper.semantic.org-chart.node-height-tall
{paper.primitive.org-chart.node-height-tall}
paper.semantic.org-chart.node-ink
{paper.primitive.color.ink}
Node body text color -- near-black, shared with the rest of the Paper pillar.
paper.semantic.org-chart.node-pill-radius
{paper.primitive.org-chart.node-pill-radius}
paper.semantic.org-chart.node-width-base
{paper.primitive.org-chart.node-width-base}
paper.semantic.org-chart.role-blue
{paper.primitive.color.org-chart-role-blue}
Fill+border for the blue role band; also the SVG arrowhead/edge-stroke fill for blue edges.
paper.semantic.org-chart.role-green
{paper.primitive.color.org-chart-role-green}
Fill+border for the green role band; also the SVG arrowhead/edge-stroke fill for green edges.
paper.semantic.org-chart.role-grey-border
{paper.primitive.color.org-chart-role-grey-border}
Grey role band border. Deliberately NOT the same as role-grey-edge -- a border-matched arrow reads too faint against the page.
paper.semantic.org-chart.role-grey-edge
{paper.primitive.color.org-chart-role-grey-edge}
Grey role's own SVG arrowhead/edge-stroke fill -- darker than role-grey-border by design.
paper.semantic.org-chart.role-orange
{paper.primitive.color.org-chart-role-orange}
Fill+border for the orange role band; also the SVG arrowhead/edge-stroke fill for orange edges.
paper.semantic.org-chart.role-vehicle
{paper.primitive.color.org-chart-role-vehicle}
Fill+border for the dashed-oval trust/SPV vehicle shape; also its SVG arrowhead/edge-stroke fill.
paper.semantic.org-chart.role-warm-gray-bg
{paper.primitive.color.org-chart-role-warm-gray-bg}
Fill for the warm-gray role band (holding companies / passive entities above the management layer). Re-homed 2026-08-02 from a retired standalone color pillar -- see role-warm-gray-border for the paired border color.
paper.semantic.org-chart.role-warm-gray-border
{paper.primitive.color.org-chart-role-warm-gray-border}
Border for the warm-gray role band. Pairs with role-warm-gray-bg.
paper.semantic.org-chart.title-type
{paper.primitive.type.org-chart-title}
paper.semantic.paper-legal.legal-base.body-font-family
{paper.primitive.font.serif-tinos}
paper.semantic.paper-legal.legal-base.rule-hairline
{paper.primitive.rule.hairline}
paper.semantic.paper-legal.legal-base.rule-signature
{paper.primitive.rule.standard}
paper.semantic.pdf-binder.active-marker-fill
{paper.primitive.color.ink}
The drawn active-row marker box -- filled ink, same colour as toc-entry-active text.
paper.semantic.pdf-binder.binder-title-type
{paper.primitive.type.pdf-nav.binder-title}
paper.semantic.pdf-binder.header-ink
{paper.primitive.color.ink}
paper.semantic.pdf-binder.home-button-fill
{paper.primitive.color.pdf-nav-navy}
paper.semantic.pdf-binder.home-button-label
{paper.primitive.color.pdf-nav-on-navy}
paper.semantic.pdf-binder.home-label-type
{paper.primitive.type.pdf-nav.home-label}
paper.semantic.pdf-binder.supporting-ink
{paper.primitive.color.pdf-nav-grey-dark}
paper.semantic.pdf-binder.toc-entry-active
{paper.primitive.color.ink}
paper.semantic.pdf-binder.toc-entry-highlight
{paper.primitive.color.pdf-nav-grey-light}
paper.semantic.pdf-binder.toc-entry-inactive
{paper.primitive.color.pdf-nav-navy}
paper.semantic.pdf-binder.toc-group-header
{paper.primitive.color.ink}
A group header is not navigable, so navy (which means 'this row links') would be a lie -- ink is the already-established 'this is not a link' signal (same as toc-entry-active).
paper.semantic.pdf-binder.version-label-ink
{paper.primitive.color.pdf-nav-grey-label}
paper.semantic.print.body-min-size
{paper.primitive.page.print-body-min-size}
paper.semantic.print.orphans
{paper.primitive.page.print-orphans}
paper.semantic.print.widows
{paper.primitive.page.print-widows}
paper.semantic.prospectus.body-type
{paper.primitive.type.legal-prospectus.body}
paper.semantic.prospectus.cover-margin-top
{paper.primitive.page.margin-cover-top}
paper.semantic.prospectus.heading-type
{paper.primitive.type.legal-prospectus.h1}
paper.semantic.prospectus.page-margin-inline
{paper.primitive.page.margin-narrow}
paper.semantic.prospectus.page-margin-top
{paper.primitive.page.margin-standard}
paper.semantic.prospectus.red-herring-ink
{paper.primitive.color.regulatory-red-herring}
paper.semantic.prospectus.running-header-border
{paper.primitive.rule.hairline}
paper.semantic.prospectus.running-header-type
{paper.primitive.type.legal-prospectus.running-header}
paper.semantic.prospectus.summary-page-border
{paper.primitive.rule.emphasis}
paper.semantic.prospectus.total-row-rule
{paper.primitive.rule.accounting-total}
Writing
Primitive
writing.primitive.casing.heading
sentence-case-keyword-first
writing.primitive.casing.leading-article
forbidden
No title, heading, or slug begins with the/a/an
writing.primitive.casing.slug
lowercase-kebab
writing.primitive.casing.title
sentence-case-keyword-first
Capitalize the first word plus proper nouns/acronyms/code identifiers only
writing.primitive.loop.standard
draft-improves-draft
Each revision pass sets up a clearly better next pass; revise one altitude per pass, top-down
writing.primitive.rhythm.heading-density-words
130
Roughly one heading per 120-140 body words
writing.primitive.rhythm.lead-words-max
400
writing.primitive.rhythm.lead-words-min
100
writing.primitive.rhythm.paragraph-line-max
7
Past this a paragraph usually carries two ideas
writing.primitive.rhythm.paragraph-line-min
3
writing.primitive.rhythm.sentence-avg-words
18
House target sentence length — 15-20 word band
writing.primitive.rhythm.sentence-fact-of-record-max
25
Ceiling for a definition/compliance/legal claim sentence — a target, not a hard gate
writing.primitive.voice.concrete-word
prefer-concrete-over-abstract
use>utilize; end>terminate; explain>elucidate; named-number>vague-quantifier
writing.primitive.voice.credibility
mechanism-number-verifiable-claim
Never borrow a named institution for prestige
writing.primitive.voice.default
active
Name the actor and the consequence
writing.primitive.voice.forward-looking
planned|intended|may|target
Not-yet-true capabilities wear their status visibly — the BCSC disclosure posture
Semantic
writing.semantic.disclaimer.contact-block
{role}, {entity}, {address}, {email}, {phone}
writing.semantic.disclaimer.privacy-posture
This interface operates on a {telemetry_scope} architecture.
writing.semantic.disclaimer.securities-forward-looking
{corporate_entity} operates {technology_subsidiary} as {entity_relationship}. This material contains forward-looking statements under {act_citations}. Material risks include {specific_risks}. {corporate_entity} disclaims any obligation to update except as required by law.
writing.semantic.disclaimer.trademark-footer
{marks} are trademarks of {owner_entity}, used in {jurisdictions}. This notice asserts continuous use in commerce regardless of ™/® omission elsewhere. All other trademarks are the property of their respective owners.
writing.semantic.page-title.content-page
{pageTitle} — {siteDisplayName}
writing.semantic.page-title.homepage
{siteDisplayName}
writing.semantic.page-title.separator
—
em dash, one space each side
writing.semantic.pattern.financial-disclosure.basis-of-preparation
State issuer type, security issued, holdings/carrying basis, cost-recovery mechanism, tax treatment, and structural caveat, in that order, each clause factual and unhedged; omit an inapplicable clause rather than stating its absence, unless a reader would otherwise wonder whether it applies.
writing.semantic.pattern.financial-disclosure.fixed-sum-not-conditioned-on-evidence
State the fixed amount, then explicitly disclaim that it is conditioned on submitting or evidencing any specific cost, whenever 'reimbursement' framing could otherwise imply a documentation requirement that doesn't exist.
writing.semantic.pattern.financial-disclosure.form-note-overlay-opening
One paragraph, three moves in order: what the base document assumes; what triggers the alternate scenario and what specifically changes; what stays the same and who the overlay does not apply to.
writing.semantic.pattern.financial-disclosure.forward-looking-inline-hedge
Name what's uncertain and the reason, in a clause not a sentence, reusing the document-level BCSC footer's planned/intended/may/target vocabulary rather than inventing new hedge language.
writing.semantic.profile.corporate
reference
writing.semantic.profile.documentation
reference+how-to
writing.semantic.profile.projects
reference
writing.semantic.register.communications
institutional
writing.semantic.register.financial-disclosure
precise-compliance-disclosure
writing.semantic.register.how-to
operational-imperative
writing.semantic.register.journal
academic
writing.semantic.register.legal
plain-language-binding
writing.semantic.register.reference
neutral-factual-clause
writing.semantic.register.specialist
prescriptive-normative
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.