/* Source Serif 4 (the open fonts-project build, latin subset), Source Sans 3 and Source Code Pro (Adobe release files, unmodified).
   All SIL Open Font License 1.1; the licence texts ship beside the files in fonts/. Self-hosted: no third-party request.
   A few print strings are filled by the build: Radigrade, 2, 226d01ea46f4, 1.0.0. */
@font-face {
  font-family: "Source Serif 4";
  src: url("fonts/SourceSerif4-Variable-Roman.woff2") format("woff2");
  font-weight: 200 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Source Serif 4";
  src: url("fonts/SourceSerif4-Variable-Italic.woff2") format("woff2");
  font-weight: 200 900;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: "Source Sans 3";
  src: url("fonts/SourceSans3VF-Upright.woff2") format("woff2");
  font-weight: 200 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Source Code Pro";
  src: url("fonts/SourceCodeVF-Upright.woff2") format("woff2");
  font-weight: 200 900;
  font-style: normal;
  font-display: swap;
}

/* Tokens (palette B, Reza 19/10/26: white paper, cool greys, a navy accent; the dark scheme neutral with a faint warmth, his calls the same day). One accent with one meaning: a pin to the record (DOI, ORCID, fingerprint, version 2 passages).
   The proof colour marks draft placeholders and provenance tags and never prints on a live page. */
:root {
  color-scheme: light dark;
  --paper: light-dark(#ffffff, #121418);
  --paper-2: light-dark(#f0f2f5, #1a1e24);
  --ink: light-dark(#14181f, #e6e9ee);
  --ink-2: light-dark(#3e4652, #b4bbc6);
  --ink-3: light-dark(#646e7b, #8b93a0);
  --rule: light-dark(#d8dce2, #2b3039);
  --rule-2: light-dark(#aeb5bf, #474e59);
  --accent: light-dark(#1b3a6b, #9db6e6);
  --accent-soft: light-dark(#e8eef8, #1f2534);
  --proof: light-dark(#8a5a00, #e0b45a);
  --proof-soft: light-dark(#fff3d1, #2b2210);
  --serif: "Source Serif 4", Georgia, "Times New Roman", serif;
  --sans: "Source Sans 3", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --mono: "Source Code Pro", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --measure: 66ch;
  --numcol: 4rem;
  --colgap: 2rem;
  --gutter: clamp(16px, 4vw, 48px);
}
:root[data-theme="light"] { color-scheme: light; }
:root[data-theme="dark"] { color-scheme: dark; }
/* Browsers without light-dark() (Safari before 17.5, Chrome before 123, Firefox before 120) get the same two palettes as plain values. */
@supports not (color: light-dark(#000, #fff)) {
  :root { --paper: #ffffff; --paper-2: #f0f2f5; --ink: #14181f; --ink-2: #3e4652; --ink-3: #646e7b; --rule: #d8dce2; --rule-2: #aeb5bf; --accent: #1b3a6b; --accent-soft: #e8eef8; --proof: #8a5a00; --proof-soft: #fff3d1; }
  @media (prefers-color-scheme: dark) and (not print) {
    :root:not([data-theme="light"]) { --paper: #121418; --paper-2: #1a1e24; --ink: #e6e9ee; --ink-2: #b4bbc6; --ink-3: #8b93a0; --rule: #2b3039; --rule-2: #474e59; --accent: #9db6e6; --accent-soft: #1f2534; --proof: #e0b45a; --proof-soft: #2b2210; }
  }
  @media screen {
    :root[data-theme="dark"] { --paper: #121418; --paper-2: #1a1e24; --ink: #e6e9ee; --ink-2: #b4bbc6; --ink-3: #8b93a0; --rule: #2b3039; --rule-2: #474e59; --accent: #9db6e6; --accent-soft: #1f2534; --proof: #e0b45a; --proof-soft: #2b2210; }
  }
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 24px; }
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--serif);
  font-size: 1.125rem;
  line-height: 1.55;
  font-optical-sizing: auto;
  font-variant-numeric: lining-nums proportional-nums;
  font-kerning: normal;
  text-rendering: optimizeLegibility;
}
@media (max-width: 760px) { body { font-size: 1.0625rem; } }
code, pre, .seal, .hash, .hashsm { font-family: var(--mono); font-variant-numeric: lining-nums tabular-nums slashed-zero; }
code { font-size: 0.875em; }
a { color: var(--ink); text-decoration-thickness: 1px; text-underline-offset: 0.18em; text-decoration-color: var(--rule-2); }
a:hover { text-decoration-color: var(--ink); }
a.pin, .pin a, .orcid a { color: var(--accent); text-decoration-color: var(--accent-soft); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
p, ul, ol, dl { margin: 0 0 1em; }
ul, ol { padding-left: 1.25em; }
li + li { margin-top: 0.35em; }
strong { font-weight: 600; }
em { font-style: italic; }
h1, h2, h3, h4 { font-weight: 600; line-height: 1.2; margin: 0 0 0.5em; text-wrap: balance; }
sup { line-height: 0; font-size: 0.75em; }
sup a { text-decoration: none; color: var(--accent); }
.shell { max-width: 1080px; margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }
.js-only { display: none; }
.js .js-only { display: inline; }
.print-only { display: none; }
.vh { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.sep { color: var(--ink-3); padding: 0 0.15em; }

/* Labels: the sans in true small capitals, lightly tracked. Never as eyebrows above headings. */
.sc, .label, .colophon dt, .toc .n, .gnum, .gtag, .figno, .results .ax, .credentials dt, .cite-label, .reg-head__label, .ax-block h3 .ax, .headline .pin, .results .unit, .topline__id, p.lh {
  font-family: var(--sans);
  font-variant-caps: all-small-caps;
  letter-spacing: 0.08em;
  font-weight: 500;
  font-synthesis: none;
}
.textbtn {
  font: inherit; font-family: var(--sans); font-size: 0.875rem; color: var(--ink-2);
  background: none; border: 0; padding: 0; cursor: pointer;
  text-decoration: underline; text-decoration-color: var(--rule-2); text-underline-offset: 0.18em;
}
.textbtn:hover { color: var(--ink); text-decoration-color: var(--ink); }

/* Skip link */
.skip { position: absolute; left: 8px; top: -60px; z-index: 100; background: var(--ink); color: var(--paper); padding: 8px 12px; font-family: var(--sans); text-decoration: none; }
.skip:focus { top: 8px; }

/* Draft notice: one line, present only while the status is draft. Prints too, by design. */
.draft-banner { background: var(--proof-soft); border-bottom: 1px solid var(--proof); color: var(--ink); font-family: var(--sans); font-size: 0.8125rem; line-height: 1.5; }
.draft-banner .shell { padding-top: 8px; padding-bottom: 8px; }
.draft-banner strong { color: var(--proof); font-weight: 600; }

/* Masthead: a title block, not a hero. */
.masthead { border-top: 6px solid var(--ink); }
.topline { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 24px; padding: 10px 0; border-bottom: 1px solid var(--rule); font-family: var(--sans); font-size: 0.8125rem; color: var(--ink-2); }
.topline p { margin: 0; }
.topline__id .sc { color: var(--ink); font-weight: 600; }
.masthead__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px 56px; padding: 40px 0 28px; align-items: end; }
@media (min-width: 900px) { .masthead__grid { grid-template-columns: minmax(0, 1fr) minmax(280px, 340px); } }
.title {
  font-family: var(--serif); font-weight: 500; letter-spacing: -0.015em; line-height: 0.98;
  font-size: clamp(3rem, 2rem + 4.5vw, 5.5rem); margin: 0 0 0.3em;
  font-variation-settings: "opsz" 60;
}
.deck { font-size: clamp(1.125rem, 1rem + 0.5vw, 1.3125rem); line-height: 1.4; color: var(--ink-2); max-width: 36em; text-wrap: pretty; margin-bottom: 1.25em; }
.byline { font-style: normal; font-family: var(--sans); font-size: 0.9375rem; line-height: 1.45; color: var(--ink-2); margin: 0; }
.byline .name { display: block; font-family: var(--serif); font-size: 1.125rem; font-weight: 600; color: var(--ink); }
.byline .line { display: block; }
.byline .orcid a { font-family: var(--mono); font-size: 0.875rem; white-space: nowrap; }

/* The day-one headline figure. No model name here, by ruling. */
.headline { border-left: 1px solid var(--rule-2); padding: 4px 0 4px 28px; }
.headline .big { display: block; font-family: var(--serif); font-weight: 500; line-height: 0.95; font-size: clamp(4.5rem, 3rem + 5vw, 6.5rem); letter-spacing: -0.02em; font-variant-numeric: lining-nums tabular-nums; margin-bottom: 8px; }
.headline .what { display: block; font-size: 1.0625rem; line-height: 1.35; margin: 0 0 10px; text-wrap: pretty; }
.headline .pin { display: block; font-family: var(--sans); font-variant-caps: normal; letter-spacing: 0; font-weight: 400; font-size: 0.875rem; line-height: 1.45; color: var(--ink-3); }
.headline .pin a { color: var(--accent); text-decoration: underline; text-decoration-color: var(--rule-2); text-underline-offset: 0.18em; }
@media (max-width: 899px) { .headline { border-left: 0; border-top: 1px solid var(--rule-2); padding: 20px 0 0; } }

/* The colophon: registration, reference, page, between two rules. */
.colophon { display: grid; grid-template-columns: 1fr; gap: 12px 40px; margin: 0; padding: 16px 0; border-top: 2px solid var(--ink); border-bottom: 1px solid var(--rule); font-family: var(--sans); font-size: 0.9375rem; line-height: 1.45; }
@media (min-width: 760px) { .colophon { grid-template-columns: 1.2fr 1.2fr 1fr; } }
.colophon dt { color: var(--ink-3); margin-bottom: 2px; }
.colophon dd { margin: 0; color: var(--ink-2); }
.colophon .reg { display: block; }
.colophon .reg + .reg { margin-top: 4px; }
.seal {
  display: inline-block; color: var(--accent); border: 1px solid var(--accent); padding: 0.05em 0.45em;
  font-size: 0.9375em; letter-spacing: 0.02em; white-space: nowrap; vertical-align: 0.05em;
}
.seal span + span { margin-left: 0.4em; } /* three groups of four; a copy yields the exact twelve characters */
.hashsm { font-size: 0.875em; }
.hash { font-size: 0.8125em; word-break: break-all; }

/* Contents: one line, in the masthead. */
.toc ol { list-style: none; padding: 12px 0 18px; margin: 0; display: flex; flex-wrap: wrap; gap: 4px 22px; font-family: var(--sans); font-size: 0.9375rem; }
.toc li { margin: 0; }
.toc a { text-decoration: none; color: var(--ink-2); }
.toc a:hover, .toc a[aria-current="true"] { color: var(--ink); }
.toc .n { color: var(--ink-3); margin-right: 0.35em; letter-spacing: 0; font-variant-caps: normal; }

/* Sections: the numeral hung in the left margin, text at measure, wide elements across. */
.content { padding-bottom: 40px; }
.section { display: grid; grid-template-columns: var(--numcol) minmax(0, var(--measure)) minmax(0, 1fr); column-gap: var(--colgap); padding: 40px 0 44px; border-top: 1px solid var(--rule); }
.section:first-child { border-top: 0; }
.section > * { grid-column: 2; }
.section > h2 { grid-column: 1 / 3; display: grid; grid-template-columns: var(--numcol) minmax(0, 1fr); column-gap: var(--colgap); align-items: baseline; font-size: clamp(1.625rem, 1.35rem + 1vw, 2.125rem); font-weight: 500; margin: 0 0 0.9em; letter-spacing: -0.01em; }
.section > h2 .num { font-family: var(--serif); font-weight: 400; color: var(--ink-3); text-align: right; font-variant-numeric: lining-nums tabular-nums; }
.section > .wide, .section > .results-wrap, .section > .results-axis, .section > .forest, .section > .gate-figure, .section > .card-row { grid-column: 2 / -1; }
@media (max-width: 760px) {
  .section { display: block; padding: 28px 0 32px; }
  .section > h2 { display: block; }
  .section > h2 .num { text-align: left; margin-right: 0.25em; }
}
/* Contents link at the foot of each section: phones only (the page is about 38 screens long there), never in print. */
.backtop { display: none; }
@media (max-width: 760px) { .backtop { display: block; font-family: var(--sans); font-size: 0.875rem; margin: 20px 0 0; } .backtop a { color: var(--ink-3); } }
.lead { font-size: 1.1875em; line-height: 1.45; text-wrap: pretty; }
.h-plain { font-size: 1.0625rem; margin-top: 1.6em; font-weight: 600; }
.ruled { list-style: none; padding: 0; }
.ruled li { padding: 10px 0; border-top: 1px solid var(--rule); margin: 0; }
.ruled li:last-child { border-bottom: 1px solid var(--rule); }
.provenance { font-family: var(--sans); font-size: 0.9375rem; color: var(--ink-2); line-height: 1.45; }

/* Provenance tags and placeholders: draft only. The build strips the tags when the page is live. */
.prov { display: inline-block; font-family: var(--sans); font-size: 0.8125rem; font-style: italic; color: var(--proof); margin: -8px 0 12px; }
.prov[data-prov="signature"] { color: var(--accent); }
mark.blank { background: var(--proof-soft); color: var(--proof); border-bottom: 1px dotted var(--proof); padding: 0 0.25em; font-family: var(--sans); font-size: 0.9em; font-style: normal; box-decoration-break: clone; -webkit-box-decoration-break: clone; }

/* Figures */
figure { margin: 1.5em 0 1em; }
figcaption { font-family: var(--sans); font-size: 0.9375rem; color: var(--ink-2); line-height: 1.45; margin-bottom: 10px; text-wrap: pretty; }
.figno { color: var(--ink); margin-right: 0.35em; }

/* Figure 1: the record, a dated ledger. */
.timeline { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.timeline li { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr); column-gap: 24px; margin: 0; }
.timeline .t { font-family: var(--sans); font-size: 0.9375rem; color: var(--ink-2); text-align: right; padding: 10px 0; font-variant-numeric: lining-nums tabular-nums; }
.timeline .e { position: relative; border-left: 1px solid var(--rule-2); padding: 10px 0 10px 22px; font-size: 1rem; line-height: 1.45; }
.timeline .e::before { content: ""; position: absolute; left: -4px; top: 18px; width: 7px; height: 7px; background: var(--ink); border-radius: 50%; }
.timeline li.now .e::before { background: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.timeline li.now .e { font-weight: 500; }
@media (max-width: 560px) {
  .timeline li { grid-template-columns: 1fr; }
  .timeline .t { text-align: left; padding: 10px 0 0 22px; }
  .timeline .e { padding-top: 2px; }
  .timeline .e::before { top: 8px; }
}

/* Figure 2: the gate order. Ink strokes, the first gate keyed to the table's first column. */
.gate-figure__scroll { overflow-x: auto; padding: 14px 0 4px; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.gd { display: block; width: 100%; max-width: 860px; height: auto; }
@media (max-width: 760px) { .gd { min-width: 760px; } }
.gd text { font-family: var(--sans); fill: var(--ink); }
.gd .gd-t { font-size: 12.5px; }
.gd .gd-l { font-size: 14px; font-weight: 600; }
.gd .gd-f { font-size: 12px; font-weight: 600; fill: var(--ink); }
.gd .gd-n { font-family: var(--serif); font-size: 26px; font-weight: 500; fill: var(--ink); }
.gd .gd-s { font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; fill: var(--ink-2); }
.gd .gd-muted { fill: var(--ink-3); }
.gd .gd-mid { text-anchor: middle; }
.gd .main, .gd .fail { fill: none; stroke: var(--ink); stroke-width: 1.5; }
.gd .arrow { fill: var(--ink); }
.gd .node { fill: var(--paper); stroke: var(--rule-2); stroke-width: 1.25; }
.gd .node--1 { fill: var(--paper-2); stroke: var(--ink); stroke-width: 2; }
.gd .node--stop { fill: var(--paper); stroke: var(--ink); stroke-dasharray: 3 3; }
.gd .node--out { fill: var(--paper-2); stroke: var(--ink); }
.gd .lane { fill: none; stroke: var(--ink-3); stroke-width: 1.25; stroke-dasharray: 5 5; }

/* The gates as ruled definitions. */
.gates { margin: 1.25em 0 0; }
.gate { padding: 16px 0; border-top: 1px solid var(--rule); margin: 0; }
.gate:last-child { border-bottom: 1px solid var(--rule); }
.gate--first { border-top: 2px solid var(--ink); background: linear-gradient(to right, var(--paper-2), var(--paper-2)) no-repeat left / 100% 100%; padding-left: 14px; padding-right: 14px; margin-left: -14px; margin-right: -14px; }
.gate dt { font-size: 1.125rem; font-weight: 600; margin-bottom: 6px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; }
.gate .gnum { color: var(--ink-3); font-size: 0.9375rem; }
.gate .gtag { font-size: 0.8125rem; color: var(--ink); border: 1px solid var(--ink); padding: 0 0.5em; line-height: 1.5; }
.gate .gtag--muted { color: var(--ink-3); border-color: var(--rule-2); }
@media (max-width: 760px) { .gate--first, .ax-block--first { margin-left: calc(-1 * var(--gutter)); margin-right: calc(-1 * var(--gutter)); padding-left: var(--gutter); padding-right: var(--gutter); } }
.gate dd { margin: 0; }
.gate dd p { margin-bottom: 0.5em; }
.gate dd p:last-child { margin-bottom: 0; }
.gate__rule { font-family: var(--sans); font-size: 0.9375rem; color: var(--ink-2); }

/* Results: the centrepiece. Three-rule table, one entry per graded system, no vertical rules except after the decisive column. */
.results-wrap { margin: 20px 0 10px; }
.results { width: 100%; border-collapse: collapse; font-family: var(--sans); font-size: 0.9375rem; line-height: 1.4; border-top: 2px solid var(--ink); border-bottom: 2px solid var(--ink); }
.results caption { caption-side: bottom; text-align: left; padding: 10px 0 0; font-size: 0.875rem; color: var(--ink-3); }
.results th.g1, .results td.g1 { background: var(--paper-2); }
.results thead th { text-align: left; vertical-align: bottom; padding: 12px 16px 10px 16px; border-bottom: 1px solid var(--ink); font-weight: 600; font-size: 1rem; line-height: 1.25; }
.results thead th.g1 { padding-left: 14px; }
.results thead th .ax { display: block; color: var(--ink-3); font-size: 0.875rem; margin-bottom: 2px; }
.results thead th .sub { display: block; font-weight: 400; font-size: 0.8125rem; color: var(--ink-3); margin-top: 3px; }
.results tbody.entry { border-top: 1px solid var(--rule-2); }
.results tbody.entry:first-of-type { border-top: 0; }
.results tr.sys th { text-align: left; padding: 18px 16px 4px 14px; font-weight: 400; }
.results .sysname { font-family: var(--serif); font-size: 1.375rem; font-weight: 600; color: var(--ink); margin-right: 0.36em; }
.results .model { font-size: 0.875rem; color: var(--ink-2); }
.results .pins { display: block; font-size: 0.8125rem; color: var(--ink-3); margin-top: 2px; line-height: 1.45; }
.results .pins code { font-size: 0.9em; }
.results tr.fig td { vertical-align: top; padding: 8px 16px 14px 16px; }
.results tr.fig td.g1 { padding-left: 14px; border-right: 1px solid var(--rule-2); }
.results .big { display: block; font-family: var(--serif); font-weight: 500; font-size: 2.25rem; line-height: 1; letter-spacing: -0.01em; font-variant-numeric: lining-nums tabular-nums; margin: 2px 0 6px; color: var(--ink); }
.results td.g1 .big { font-size: 3rem; }
.results .units { display: flex; flex-wrap: wrap; gap: 4px 28px; margin-bottom: 4px; }
.results .units > span { display: block; }
.results .units .big { margin-bottom: 0; }
.results .unit { display: block; font-size: 0.8125rem; color: var(--ink-3); margin: 0 0 8px; }
.results .comp, .results .cases, .results .ci, .results .sub2 { display: block; font-size: 0.875rem; color: var(--ink-2); line-height: 1.4; }
.results .cases { color: var(--ink); font-weight: 500; margin-top: 4px; }
.results .ci { font-variant-numeric: lining-nums tabular-nums; }
.results .sub2 { margin-top: 10px; }
.results .sub2 b { font-family: var(--serif); font-weight: 500; color: var(--ink); font-size: 1.0625rem; }
.results tr.detail td { padding: 12px 16px 20px 14px; font-size: 0.875rem; color: var(--ink-2); line-height: 1.45; }
.results tr.detail .unit-sentence { font-family: var(--serif); font-size: 0.9375rem; color: var(--ink); max-width: 72ch; margin: 0 0 10px; padding: 8px 0; border-top: 1px dotted var(--rule-2); border-bottom: 1px dotted var(--rule-2); text-wrap: pretty; }
p.lh { font-size: 0.8125rem; color: var(--ink-3); margin: 0 0 4px; max-width: 72ch; }
.ledger { margin: 0; max-width: 72ch; }
.ledger .row { display: grid; grid-template-columns: minmax(0, 1fr) 3.5rem; column-gap: 12px; padding: 4px 0; border-top: 1px solid var(--rule); }
.ledger .row dt { font-weight: 400; }
.ledger .row dd { margin: 0; text-align: right; font-variant-numeric: lining-nums tabular-nums; color: var(--ink); font-weight: 600; }
.ledger .row.row--full, .ledger .row.row--text { grid-template-columns: minmax(0, 1fr); }
.ledger .row.row--full dd, .ledger .row.row--text dd { text-align: left; font-weight: 400; color: var(--ink-2); font-variant-numeric: lining-nums proportional-nums; }
.ledger .row.row--full { padding: 0; }
.ledger .row.row--text dt { margin-bottom: 2px; }
.ledger .sorting { list-style: none; padding: 2px 0 4px 1.25rem; margin: 0; }
.ledger .sorting li { display: grid; grid-template-columns: 2.25rem minmax(0, 1fr); column-gap: 8px; margin: 0; padding: 3px 0; }
.ledger .sorting .n { text-align: right; font-variant-numeric: lining-nums tabular-nums; font-weight: 600; color: var(--ink); }
.ledger .sorting-within { list-style: none; grid-column: 2; padding: 0; margin: 2px 0 0; }
.ledger .sorting-within li { color: var(--ink-3); padding: 2px 0; }
.ledger .sorting-within .n { color: var(--ink-2); font-weight: 500; }
.ledger .note { font-family: var(--serif); font-style: italic; color: var(--ink-3); padding: 4px 0 2px 1.25rem; margin: 0; }
.results .outcome { font-family: var(--serif); font-style: italic; color: var(--ink); margin: 10px 0 0; font-size: 0.9375rem; }
.data-line { font-family: var(--sans); font-size: 0.9375rem; color: var(--ink-2); }
.notes { margin-top: 24px; }
.notes .ruled { font-size: 1rem; }
.notes h3 { margin-top: 1.4em; }

/* Axis-major view: one block per axis, systems side by side. Phone and paper. */
.results-axis { display: none; }
.ax-block { border-top: 1px solid var(--ink); padding: 10px 0 12px; }
.ax-block:first-child { border-top: 2px solid var(--ink); }
.ax-block h3 { font-family: var(--sans); font-size: 1rem; font-weight: 600; margin: 0 0 8px; }
.ax-block h3 .ax { color: var(--ink-3); font-weight: 500; margin-right: 0.25em; }
.ax-block h3 .sub { display: block; font-weight: 400; font-size: 0.8125rem; color: var(--ink-3); }
.ax-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px 20px; }
.ax-cell { font-family: var(--sans); font-size: 0.875rem; color: var(--ink-2); line-height: 1.4; }
.ax-cell .who { display: block; color: var(--ink-3); font-size: 0.8125rem; margin-bottom: 4px; }
.ax-cell .big { display: block; font-family: var(--serif); font-size: 1.875rem; font-weight: 500; line-height: 1; color: var(--ink); margin-bottom: 4px; font-variant-numeric: lining-nums tabular-nums; }
.ax-cell .units { display: flex; gap: 16px; }
.ax-cell .unit { display: block; font-size: 0.75rem; }
.ax-cell .cases { display: block; color: var(--ink); font-weight: 500; }
.ax-cell span { display: block; }
.ax-block--first { background: var(--paper-2); margin: 0 -14px; padding-left: 14px; padding-right: 14px; }
.ax-ledger { border-top: 1px solid var(--rule); padding: 10px 0; font-family: var(--sans); font-size: 0.875rem; color: var(--ink-2); }
.ax-ledger h3 { font-family: var(--sans); font-size: 0.9375rem; font-weight: 600; margin: 0 0 6px; color: var(--ink); }
.ax-ledger .pins { display: block; font-size: 0.8125rem; color: var(--ink-3); margin-bottom: 8px; }
.ax-ledger .unit-sentence { font-family: var(--serif); color: var(--ink); margin: 0 0 8px; }
.ax-ledger .outcome { font-family: var(--serif); font-style: italic; color: var(--ink); margin: 8px 0 0; }
@media (max-width: 760px) {
  .results-wrap { display: none; }
  .results-axis { display: block; margin: 16px 0; }
}

/* Figure 3: the forest plot. Built from the same data as the table. */
.forest { margin-top: 28px; }
.forest__scroll { overflow-x: auto; }
.forest__scroll:focus-visible { outline-offset: 0; }
.forest .fp { display: block; width: 100%; height: auto; max-width: 820px; min-width: 620px; }
.forest .fp--narrow { display: none; min-width: 0; max-width: 100%; }
@media (max-width: 760px) { .forest .fp:not(.fp--narrow) { display: none; } .forest .fp--narrow { display: block; } .forest__scroll { overflow: visible; } }
.fp--narrow text { font-size: 13px; }
.fp--narrow .fp-ser { font-size: 13px; }
.fp--narrow .fp-val { font-size: 12.5px; }
.fp--narrow .fp-axis { font-size: 15px; }
.fp--narrow .fp-tick--start { text-anchor: start; }
.fp--narrow .fp-tick--end { text-anchor: end; }
.fp text { font-family: var(--sans); fill: var(--ink); font-size: 13px; }
.fp .fp-axis { font-family: var(--serif); font-weight: 600; font-size: 15px; }
.fp .fp-ser { fill: var(--ink-2); font-size: 12.5px; }
.fp .fp-val { fill: var(--ink-2); font-size: 12.5px; font-variant-numeric: lining-nums tabular-nums; }
.fp .fp-tick { fill: var(--ink-3); font-size: 11.5px; text-anchor: middle; }
.fp .fp-grid { stroke: var(--rule); stroke-width: 1; }
.fp .fp-base { stroke: var(--ink); stroke-width: 1; }
.fp .fp-ci { stroke: var(--ink); stroke-width: 1.5; }
.fp .fp-cap { stroke: var(--ink); stroke-width: 1; }
.fp .fp-pt { fill: var(--ink); stroke: var(--ink); stroke-width: 1.5; }
.fp .fp-pt--open { fill: var(--paper); }
.fp .fp-leg { fill: var(--ink-2); font-size: 12.5px; }
.fp .fp-rule { stroke: var(--rule-2); stroke-width: 1; }

/* The registered protocol: a bounded document with a spine and change bars. */
.reg-head { border-top: 2px solid var(--ink); padding: 12px 0 8px; margin: 0 0 20px; }
.reg-head p { margin-bottom: 4px; }
.reg-head__label { color: var(--ink-3); font-size: 0.9375rem; }
.protocol { position: relative; border-left: 1px solid var(--rule-2); padding-left: 24px; margin-left: 0; }
.protocol__supersedes { font-style: italic; color: var(--ink-2); }
.protocol h3 { font-size: 1.1875rem; margin: 1.6em 0 0.5em; display: grid; grid-template-columns: 2.6rem minmax(0, 1fr); column-gap: 24px; align-items: baseline; margin-left: calc(-2.6rem - 24px); padding-left: 0; }
.protocol h3 .pnum { font-family: var(--serif); font-weight: 400; color: var(--ink-3); text-align: right; font-size: 0.95em; padding-right: 0; }
@media (max-width: 760px) { .protocol h3 { display: block; margin-left: 0; } .protocol h3 .pnum { margin-right: 0.4em; } }
.protocol p, .protocol ul, .protocol ol { font-size: 1.0625rem; line-height: 1.5; }
.protocol > ul, .protocol > ol { padding-left: 1.4em; }
.changed-list li { margin-bottom: 0.5em; }
.protocol span.v2 { text-decoration: underline; text-decoration-color: var(--accent); text-decoration-thickness: 1.5px; text-underline-offset: 0.22em; text-decoration-skip-ink: auto; }
.protocol p.v2, .protocol li.v2 { position: relative; }
.protocol p.v2::before, .protocol li.v2::before { content: ""; position: absolute; top: 0.2em; bottom: 0.2em; width: 3px; background: var(--accent); }
.protocol p.v2::before { left: calc(-24px - 2px); }
.protocol li.v2::before { left: calc(-24px - 1.4em - 2px); }
.frozen { list-style: none; padding-left: 0 !important; }
.frozen li { padding: 10px 0; border-top: 1px solid var(--rule); margin: 0; }
.frozen li:last-child { border-bottom: 1px solid var(--rule); }
.protocol__end { font-family: var(--sans); font-size: 0.9375rem; color: var(--ink-2); margin-top: 1.5em; }

/* Citation */
.cite-block { margin: 0 0 18px; }
.cite-label { color: var(--ink-3); margin: 0 0 6px; font-size: 0.875rem; }
.cite-label .textbtn { font-variant-caps: normal; letter-spacing: 0; margin-left: 0.6em; }
.cite { margin: 0; padding: 12px 16px; background: var(--paper-2); font-size: 0.9375rem; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; color: var(--ink); font-family: var(--serif); }
.cite--mono { font-family: var(--mono); font-size: 0.8125rem; }
.refs { padding-left: 1.4em; font-size: 1rem; }
.refs li { margin-bottom: 0.4em; }
.backref { text-decoration: none; color: var(--ink-3); margin-left: 0.3em; }

/* Author and credentials: a ruled card and a ruled list. */
.card-row { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px 48px; align-items: start; }
@media (min-width: 760px) { .card-row { grid-template-columns: minmax(280px, 400px) minmax(0, 1fr); } }
.card { font-style: normal; border: 1px solid var(--ink); padding: 26px 28px 24px; font-family: var(--sans); font-size: 0.9375rem; line-height: 1.5; color: var(--ink-2); }
.card .name { display: block; font-family: var(--serif); font-size: 1.5rem; font-weight: 600; color: var(--ink); margin-bottom: 4px; letter-spacing: -0.005em; }
.card .line { display: block; }
.card .title-line { font-family: var(--serif); font-style: italic; font-size: 1.0625rem; color: var(--ink); }
.card .orcid { display: block; margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--rule); }
.card .orcid a { font-family: var(--mono); font-size: 0.875rem; white-space: nowrap; }
.credentials { margin: 0; }
.credentials dt { color: var(--ink-3); margin-bottom: 4px; }
.credentials dd { margin: 0; }
.credentials ul { list-style: none; padding: 0; margin: 0; }
.credentials li { padding: 8px 0; border-top: 1px solid var(--rule); margin: 0; font-size: 1rem; }
.credentials li:last-child { border-bottom: 1px solid var(--rule); }
.credentials .pointer { font-family: var(--sans); font-size: 0.9375rem; color: var(--ink-2); }
.credentials .pointer a { color: var(--accent); }

/* Change log */
.changelog { width: 100%; border-collapse: collapse; font-size: 1rem; border-top: 2px solid var(--ink); border-bottom: 1px solid var(--ink); }
.changelog th, .changelog td { text-align: left; padding: 10px 16px 10px 0; border-bottom: 1px solid var(--rule); vertical-align: top; }
.changelog th { font-family: var(--sans); font-weight: 600; font-size: 0.875rem; color: var(--ink-3); }
.changelog td:first-child { font-family: var(--mono); font-size: 0.875rem; white-space: nowrap; }
.changelog td:nth-child(2) { font-family: var(--sans); font-size: 0.9375rem; white-space: nowrap; color: var(--ink-2); }
@media (max-width: 560px) { .changelog thead { display: none; } .changelog tr { display: block; padding: 8px 0; border-bottom: 1px solid var(--rule); } .changelog td { display: block; border: 0; padding: 2px 0; white-space: normal; } }

/* Imprint: a block of plain lines. */
p.imprint { margin: 0 0 1.25em; line-height: 1.5; }

/* Footer */
.footer { border-top: 2px solid var(--ink); }
.footer__inner { padding-top: 22px; padding-bottom: 40px; font-family: var(--sans); font-size: 0.875rem; color: var(--ink-3); line-height: 1.5; }
.footer p { margin-bottom: 0.4em; }
.footer strong { color: var(--ink); }
.footer a { color: var(--ink-2); }

/* Print: an A4 document with a title page, running heads and page numbers. */
@media print {
  :root, :root[data-theme] { color-scheme: light; }
  @page {
    size: A4;
    margin: 18mm 16mm 20mm;
    @top-left { content: "Radigrade, protocol version 2"; font: 8pt "Source Sans 3", sans-serif; color: #555; }
    @top-right { content: "reference fingerprint 226d01ea46f4"; font: 8pt "Source Code Pro", monospace; color: #555; }
    @bottom-left { content: "page version 1.0.0"; font: 8pt "Source Sans 3", sans-serif; color: #555; }
    @bottom-right { content: "page " counter(page) " of " counter(pages); font: 8pt "Source Sans 3", sans-serif; color: #555; }
  }
  @page :first { @top-left { content: none; } @top-right { content: none; } }
  html { scroll-behavior: auto; font-size: 10.5pt; }
  body { font-size: 1rem; line-height: 1.42; background: #fff; color: #000; }
  .topline__controls, .skip, .js-only, .textbtn, .backref { display: none !important; }
  .print-only { display: block; }
  .masthead { border-top-width: 2pt; break-after: page; }
  .masthead__grid { grid-template-columns: minmax(0, 1fr) 62mm; padding: 10mm 0 6mm; }
  .title { font-size: 34pt; }
  .headline .big { font-size: 44pt; }
  .colophon { grid-template-columns: 1.2fr 1.2fr 1fr; font-size: 9pt; }
  .toc ol { font-size: 9pt; }
  .shell { max-width: none; padding-left: 0; padding-right: 0; }
  .section { grid-template-columns: 12mm minmax(0, 1fr); padding: 6mm 0 7mm; }
  .section > * { grid-column: 2; }
  .section > h2 { grid-template-columns: 12mm minmax(0, 1fr); font-size: 16pt; }
  .section > .wide, .section > .results-wrap, .section > .results-axis, .section > .forest, .section > .gate-figure, .section > .card-row { grid-column: 2; }
  #protocol { break-before: page; }
  h2, h3, h4, figcaption { break-after: avoid; }
  .gate-figure, .forest, figure.record, .gate, .ax-block, .ax-ledger, .card, .cite, .cite-block, .credentials, tr, .ruled li, .timeline li, .frozen li { break-inside: avoid; }
  .cite-label { break-after: avoid; }
  p.imprint, #privacy + p { break-inside: avoid; }
  #imprint, #privacy { break-after: avoid; }
  .gate--first, .ax-block--first { margin-left: 0; margin-right: 0; padding-left: 8px; padding-right: 8px; }
  .backtop { display: none; }
  .forest .fp--narrow { display: none; }
  .forest .fp:not(.fp--narrow) { display: block; }
  .results-wrap { display: none; }
  .results-axis { display: block; }
  .ax-block--first, .gate--first, .results th.g1, .results td.g1 { background: #f0f0f0; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .seal, mark.blank, .prov, .draft-banner, .protocol span.v2, .protocol p.v2::before, .protocol li.v2::before, .timeline li.now .e::before { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .protocol span.v2 { text-decoration-color: #1b3a6b; }
  .seal { color: #1b3a6b; border-color: #1b3a6b; }
  mark.blank { background: #fff3d1; color: #5a3a00; border-color: #8a5a00; }
  .draft-banner { background: #fff3d1; border-bottom: 1px solid #8a5a00; }
  a { color: #000; text-decoration: none; }
  a.pin, .pin a, .orcid a, .credentials .pointer a { color: #1b3a6b; }
  a[href^="http"]:not(.pin):not(.orcid a):not(.credentials .pointer a):not(.footer a)::after { content: " (" attr(href) ")"; font-size: 0.85em; color: #444; }
  .gate-figure__scroll { overflow: visible; }
  .gd { min-width: 0; max-width: 100%; }
  .forest .fp { max-width: 100%; min-width: 0; }
  .forest__scroll { overflow: visible; }
  .footer { border-top: 1px solid #000; }
}
