/* ODDDT ODT-SYS001-R6 — TYPE ROLES (verbatim) */
/* 2N* REM SCALE (2026-08-10): 1rem = body text. Root pinned to the body size — the whole
   ramp is exact in rem (12=.8 · 15=1 · 21=1.4 · 30=2 · 36=2.4 · 48=3.2 · 69=4.6 · 90=6 · 126=8.4 · 204=13.6).
   One knob (--od-rem-base) re-proportions type + rem-spaced layout together. */
html{font-size:15px}
:root{
  /* ---- TYPESCALE RAMP in rem (law 6A tiers) ---- */
  --od-t-12:.8rem; --od-t-15:1rem; --od-t-21:1.4rem; --od-t-30:2rem; --od-t-36:2.4rem;
  --od-t-48:3.2rem; --od-t-69:4.6rem; --od-t-90:6rem; --od-t-126:8.4rem; --od-t-204:13.6rem;
}
:root{
  /* ---- TYPE ROLES (5 roles, x3 scale: 12·15·21·30·36·48·69·90·126·204) ---- */
  --od-font-monument:'TRIMOD','Arial Black',sans-serif;
  --od-font-emphasis:'TRIMOD','Arial Black',sans-serif;
  --od-font-headline:'DIMOD','Arial Narrow',sans-serif;
  --od-font-logo:'TRIMOD','Arial Black',sans-serif;
  --od-font-logo-2:'DIMOD','Arial Narrow',sans-serif;
  --od-font-label:'DIMOD','Arial Narrow',sans-serif;
  --od-font-dust:'Chakra Petch','Kode Mono',ui-monospace,monospace; /* 2H* 2026-08-10 — Chakra Petch is the DUST voice; Kode Mono fallback */
  --od-font-dust-tabular:'Kode Mono',ui-monospace,monospace; /* 2H* — true-tabular columns where digit alignment is load-bearing */
  --od-font-payload:'Jura',system-ui,sans-serif;
  --od-font-decor:'Turing',ui-monospace,monospace;
  --od-font-barcode:'Libre Barcode 128',monospace;
  --od-dust-size:var(--od-t-12);  --od-dust-leading:1.2rem;
  --od-label-size:var(--od-t-21); --od-label-leading:1.6rem; --od-label-track:.05em;
  --od-body-size:var(--od-t-15);  --od-body-leading:1.6rem;
  --od-headline-size:var(--od-t-36); --od-headline-leading:1.1; --od-headline-track:0em;
  --od-monument-size:clamp(var(--od-t-48),6vw,var(--od-t-90));
  --od-monument-leading:.95;  --od-monument-track:-.01em;
  /* ---- R6.1 LEGIBILITY FLOOR (2026-07-23) ----
     Fixes: thin Jura on carbon, sub-scale 9px dust, monument line-box collision.
     These are FLOORS — components may go larger, never smaller. */
  --od-body-weight:500;        /* Jura floor on dark — raised 460→500 (2M* 2026-08-10, legibility ruling) @kind other */
  --od-body-weight-strong:600; /* emphasis within body @kind other */
  --od-dust-min:var(--od-t-12);          /* DUST never renders below .8rem/12 */
  --od-dust-weight-flare:700; /* 2H* amended 2026-08-10 (Luke): Chakra on/in FLARE is BOLD — every page, no exceptions */
  --od-decor-opacity:.5;       /* 2I* 2026-08-10 — decorative dust ornament (DataStrip, readouts, registry strings) renders de-emphasized at 50%; ink/plate 16/06 tiers are the color-tier equivalent @kind other */
  --od-decrypt-dur:900ms;      /* 2J* 2026-08-10 — hero decrypt reveal duration; runs once on load + replays on hover; killed by reduced-motion @kind other */
  --od-label-min:var(--od-t-21);         /* DIMOD label floor */
  /* Monument safety: tight leading is legal, but a stacked monument MUST clear
     its subhead. Use --od-monument-leading-safe on the giant word and --od-subhead-gap
     beneath it so line boxes can never overlap (Law 6, enforced structurally). */
  --od-monument-leading-safe:1.02;  /* when a monument may wrap or stacks over a subhead @kind other */
  --od-subhead-gap:12px;            /* minimum clearance monument -> subhead */
}
/* ---- MOD CAPS LOCK (ratified) — TRIMOD + DIMOD are UPPERCASE ONLY ----
   The MOD faces have no lowercase forms (DIMOD R rebuilt from P+K). Any element
   set in a MOD role is forced to caps so mixed-case input can never render broken.
   Applies to: monument, headline (DIMOD), label, logo, emphasis. Jura + Kode Mono
   are unaffected. ---- */
.od-monument,.od-headline,.od-label,.od-logo,.od-emphasis,
[data-od-face="mod"]{text-transform:uppercase!important;}
