@font-face {
  font-family: "Yuval Hand";
  src: url("/assets/fonts/yuval-hand.woff2") format("woff2");
  font-style: normal; font-weight: 400; font-display: swap;
}
:root {
  color-scheme: light dark;
  --paper: light-dark(#f6f3e9, #20231f);
  --rule: light-dark(#dcdcd5, #363b35);
  --ink: light-dark(#292c29, #e9e7df);
  --quiet: light-dark(#545f57, #adb9af);
  --action: light-dark(#215946, #abd0b8);
  --focus: light-dark(#9b3b23, #f0b393);
  --selection: light-dark(#d3e4d7, #41604b);
  --selection-ink: light-dark(#163927, #fffdf4);
  --cue-quiet: light-dark(#87988b, #768c7c);
  --face-formal: "Notebook Serif", serif;
  --pitch: 40px;
  --size: var(--step-1);
  --leading: var(--pitch);
  --ease-out: cubic-bezier(.16,1,.3,1);
}
* { box-sizing: border-box; }
html, body { background: var(--paper); }
body {
  margin: 0; color: var(--ink); font-family: "Yuval Hand", sans-serif;
  font-size: var(--size); line-height: var(--leading); font-weight: 400;
  font-synthesis: none; font-kerning: normal; font-variant-ligatures: contextual;
  -webkit-font-smoothing: antialiased;
}
::selection { color: var(--selection-ink); background: var(--selection); }
a { color: inherit; }
button { font: inherit; color: inherit; }
:where(a[href], button, label[for]) { cursor: pointer; }
button, a { -webkit-tap-highlight-color: var(--selection); }
button:focus-visible, a:focus-visible { outline: 2px solid var(--focus); outline-offset: 4px; }
[hidden] { display: none !important; }
/* The sheet is plain paper. Rules belong to measured lines of writing. */
.page {
  width: min(100% - 64px, 1320px); margin-inline: auto;
  min-height: 100vh; padding: var(--pitch) 32px calc(2 * var(--pitch));
}
/* hhea: ascent 850, descent -550, UPM 1000. Baseline in a line box:
   L/2 + .15S. Shift each text run to nP-.5 without changing its grid-sized flow.
   The bottom alignment leaves one common rule for every font size. */
.nav-word, .identity, .project-sentence, .closing-thought, .inquiries,
.reading-entry > :is(h1,p), .home-link, .skip-link {
  position: relative;
  top: 0;
  font-size: var(--size); line-height: var(--leading);
}
.skip-link { position: fixed; left: 12px; z-index: 10; padding: var(--pitch); background: var(--paper); transform: translateY(-200%); }
.skip-link:focus { transform: none; }
.navigation { display: grid; grid-template-columns: 1fr auto 1fr; align-items: start; height: calc(2 * var(--pitch)); }
.nav-word { display: block; width: fit-content; min-height: var(--pitch); text-decoration: none; }
.navigation > .nav-word:last-child { justify-self: end; }
.social-links { display: flex; align-items: center; height: calc(2 * var(--pitch)); }
.icon-link { display: grid; place-items: center; width: 44px; height: calc(2 * var(--pitch)); text-decoration: none; }
.icon-link svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.65; stroke-linecap: round; stroke-linejoin: round; }
.icon-link .linkedin-mark { width: 20px; height: 20px; fill: currentColor; stroke: none; }
.home-main { margin-top: 0; }
.subpage-main { margin-top: var(--pitch); }
.identity { --size: var(--step-1); margin: 0; height: 40px; color: var(--ink); }
.project-entry { margin: 0; padding: 0; }
.project-copy { margin: 0; }
.project-sentence { --size: var(--step-4); --leading: calc(2 * var(--pitch)); margin: 0; font-weight: 400; text-indent: -.48em; text-align: left; overflow-wrap: normal; word-break: normal; hyphens: none; }
.phrase-control { font-size: inherit; position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.phrase-control:focus-visible + .phrase { outline: 2px solid var(--focus); outline-offset: 4px; }
.phrase { color: var(--action); text-decoration: none; }
.phrase-label { position: relative; }
.phrase-control[aria-expanded="true"] + .phrase { color: var(--selection-ink); background: var(--selection); }
.phrase:active { color: var(--ink); }
.phrase-control:disabled + .phrase { cursor: text; color: inherit; text-decoration: none; }
.meanings { position: relative; }
.explanation { margin-top: 40px; max-width: 880px; color: var(--quiet); font-size: var(--size); line-height: 32px; }
.explanation-term { display: block; font-size: var(--step-down); line-height: 24px; font-weight: 600; margin: 0 0 8px; }
.closing-entry { margin-top: 32px; text-align: center; }
.closing-thought { --size: var(--step-2); margin: 0; }
.inquiries { --size: var(--step-1); display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline; column-gap: 16px; margin: 0; color: var(--quiet); }
#contact-email { user-select: text; text-decoration: none; }
#contact-email:is(:hover,:focus-visible) { text-decoration: underline; text-underline-offset: .15em; }
.inquiry-text { white-space: normal; }
#contact-email { white-space: nowrap; }
.contact-actions { display: inline-flex; flex-shrink: 0; align-items: baseline; }
.copy-button { min-width: 68px; height: var(--pitch); padding: 0; border: 0; background: none; color: var(--action); font-size: inherit; line-height: var(--pitch); }
.copy-status { position: absolute; width: 1px; height: 1px; padding: 0; margin: 0; overflow: hidden; clip-path: inset(50%); }
.subpage-footer { margin-top: var(--pitch); }
.home-link { --size: var(--step-1); display: inline-block; min-height: var(--pitch); text-decoration: none; color: var(--quiet); }
.reading-entry { width: min(100%, 800px); }
.reading-entry h1 { --size: var(--step-4); --leading: calc(2 * var(--pitch)); margin: var(--pitch) 0; font-weight: 400; }
.reading-entry p { margin: var(--pitch) 0 0; }
.reading-entry[aria-label="about"] p { max-width: 720px; }
.reading-entry .draft-note { margin: 0; color: var(--quiet); }
.nav-word, .icon-link, .home-link, .copy-button { position: relative; }
:is(.nav-word,.icon-link,.home-link,.copy-button):is(:hover,:focus-visible),
.nav-word[aria-current="page"] { text-decoration: none; color: var(--action); }
@media (min-width: 701px) and (max-width: 1100px) {
  .project-sentence { --size: var(--step-3); }
}
@media (max-width: 700px) {
  :root { --size: var(--step-1); }
  .page { width: calc(100% - 24px); padding-inline: 16px; }
  .navigation { --size: var(--step-1); }
  .project-sentence { --size: var(--step-2); }
  .reading-entry h1 { --size: var(--step-3); }
  .closing-thought { --size: var(--step-1); }
  .inquiries { --size: var(--step-down); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
@media print {
  .page { width: 100%; }
  .top-line, .copy-button { display: none; }
  .explanation[hidden] { display: block !important; }
  .closing-entry { break-inside: avoid; }
}

/* Chromium rounds the font ascent/descent to device-independent pixels before
   distributing leading. Baseline-marker measurements supply the subpixel
   correction below; these do not change flow heights or the 40px grid. */
.nav-word, .reading-entry > p { --baseline-correction: 0px; }
.project-sentence, .reading-entry h1 { --baseline-correction: 0px; }
.inquiries, .home-link { --baseline-correction: 0px; }
@media (max-width: 700px) {
  .nav-word { --baseline-correction: 0px; }
  .project-sentence { --baseline-correction: 0px; }
  .closing-thought, .reading-entry > p { --baseline-correction: 0px; }
  .inquiries { --baseline-correction: 0px; }
  .reading-entry h1 { --baseline-correction: 0px; }
}

/* Project section labels are handwriting; formal entries use normal document flow. */
.work h2 {
  position: relative; margin: 0; font-weight: 400;
  top: 0;
  font-size: var(--size); line-height: var(--leading);
}
.work { margin-top: 120px; }
.entry h3, .entry p { margin: 0; font-weight: 400; font-size: var(--size); line-height: var(--leading); }
.work h2 { --size: var(--step-2); --leading: calc(2 * var(--pitch)); }
.work h2:not(:first-child) { margin-top: calc(2 * var(--pitch)); }
.entry { margin-top: var(--pitch); }
.entry-when { --size: var(--step-0); --leading: 24px; color: var(--quiet); }
.entry h3 { --size: var(--step-2); --leading: 40px; margin-top: 8px; }
.entry p:not(.entry-when) { --size: var(--step-1); --leading: 32px; max-width: 760px; margin-top: 8px; }
@media (max-width: 700px) {
  .entry h3 { --size: var(--step-1); }
  .entry p:not(.entry-when) { --size: var(--step-0); }
}

/* Each block owns one background layer. Its disjoint segments cover only the
   occupied writing lines. An action segment REPLACES grey, never overlays it. */
.writing-block { position: relative; isolation: isolate; }
.writing-rules { position: absolute; inset: 0; pointer-events: none; z-index: -1; }
.writing-rule { position: absolute; height: 1px; background: var(--rule); }
.writing-rule.action { background: var(--action); }
.writing-rule.traced {
  height: 3px; background: var(--action);
  mask: url("/assets/underline.svg") center / 100% 100% no-repeat;
}
.writing-rule.selected { background: var(--ink); }

/* One document voice, beside the author's own hand. Optical size is fixed at 20. */
@font-face { font-family: "Notebook Serif"; src: url("/assets/fonts/notebook-serif-regular.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Notebook Serif"; src: url("/assets/fonts/notebook-serif-italic.woff2") format("woff2"); font-weight: 400; font-style: italic; font-display: block; }
@font-face { font-family: "Notebook Serif"; src: url("/assets/fonts/notebook-serif-semibold.woff2") format("woff2"); font-weight: 600; font-style: normal; font-display: block; }
.phrase { font-family: var(--face-formal); font-size: calc(1em * var(--voice-match)); line-height: 0; vertical-align: baseline; }
.phrase-control[aria-expanded="true"] + .phrase { color: var(--ink); background: none; }
.explanation, .entry h3, .entry p { font-family: var(--face-formal); }
.explanation { --size: var(--step-0); }
.entry-when { --size: var(--step-down); }
.entry h3 { --size: var(--step-1); }
.entry p:not(.entry-when) { --size: var(--step-0); }
.entry h3 a { color: var(--action); text-decoration: none; }
.entry h3 a:is(:hover,:focus-visible) { text-decoration: underline; text-underline-offset: .18em; }
@media(max-width:700px) {
 .explanation { --size: var(--step-0); }
 .entry h3 { --size: var(--step-0); }
 .entry p:not(.entry-when) { --size: var(--step-down); }
}
/* Papers are unruled documents, not entries in the notebook. */
.paper-page { font-family: var(--face-formal); font-size: var(--step-down); line-height:32px; }
.paper-page .top-line, .paper-draft { font-family: "Yuval Hand", sans-serif; }
.paper-page .navigation { --size: var(--step-1); --leading: 40px; line-height: 40px; }
.paper-main { width: min(100%, 700px); margin: 40px auto 0; }
.paper-draft { font-size: var(--step-1); line-height: 40px; margin: 0 0 24px; color: var(--quiet); }
.paper-document h1 { font-size: var(--step-3); line-height:32px; font-weight: 600; margin: 0 0 32px; text-wrap: balance; }
.paper-document h2 { font-size: var(--step-1); line-height:32px; font-weight: 600; margin: 48px 0 16px; }
.paper-document h3 { font-size: var(--step-0); line-height:32px; font-weight: 600; margin: 32px 0 16px; }
.paper-document p { margin: 0 0 24px; }
.paper-document strong { font-weight: 600; }
.paper-document a, .paper-back { color: var(--action); text-underline-offset: .2em; }
/* Prose keeps whole words; only literal URLs and hashes may wrap anywhere. */
body { overflow-wrap: normal; word-break: normal; hyphens: none; }
.paper-document :is(p,li,h1,h2,h3) { overflow-wrap: normal; }
a[href] { overflow-wrap: normal; }
a.literal-url { overflow-wrap: anywhere; }
.table-scroll { max-width: 100%; overflow-x: auto; margin: 32px 0; border: 1px solid var(--rule); border-radius: 3px; }
.table-scroll:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
.paper-document table { border-collapse: collapse; width: 100%; min-width: 0; font-size: var(--step-down); line-height:32px; }
.paper-document th, .paper-document td { padding: 16px 16px; border-bottom: 1px solid var(--rule); text-align: left; vertical-align: top; }
.paper-document th { font-weight: 600; background: color-mix(in srgb, var(--ink) 4%, var(--paper)); }
.paper-document tr:last-child td { border-bottom: 0; }
.paper-back { display: inline-block; margin-top: 32px; font-size: var(--step-down); }
@media(max-width:700px) {
 .paper-page { font-size: var(--step-down); }
 .paper-page .navigation { --size: var(--step-1); }
 .paper-document h1 { font-size: var(--step-2); }
 .paper-main { margin-top: 32px; }
}

/* Measured rules belong to the handwritten runs; terms own their SVG strokes. */
.project-sentence .writing-rules { display: block; }
.phrase { border-radius: 3px; transition: background-color 120ms var(--ease-out), color 120ms var(--ease-out); }
.phrase:hover, .phrase-control:focus-visible + .phrase { color: var(--action); background:none; }
.phrase-control[aria-expanded="true"] + .phrase { color: var(--action); background:none; }
@media (prefers-reduced-motion: reduce) { .phrase { transition: none; } }

/* Phone composition: preserve the 24px inset; shared rhythm is defined below. */
@media (max-width: 700px) {
  .page { padding-top: 16px; }
  .navigation, .social-links, .icon-link { height: 60px; }
  .home-main { margin-top: 16px; }
  .project-sentence { --leading: 56px; }
  .closing-entry { margin-top: 40px; }
  .inquiries { --size: var(--step-0); }
  .explanation { margin-top: 24px; }
}

/* Shared document apparatus, plain and unruled. */
.paper-document h1 { margin-bottom: 0; }
.paper-document .paper-subtitle { font-size: var(--step-0); line-height: 32px; font-weight: 400; margin: 16px 0 0; }
.paper-document .paper-meta { font-size: var(--step-down); line-height: 24px; margin: 16px 0 24px; color: var(--quiet); }
.paper-meta > span { display: block; }
.paper-meta .paper-author { font-weight: 600; color: var(--ink); }
.paper-back-top { margin: 0 0 24px; }
.paper-contents { font-size: var(--step-down); line-height: 24px; margin: 24px 0; }
.paper-contents summary { cursor: pointer; min-height: 44px; display: list-item; padding: 8px 0; }
.paper-contents ul ul { margin-top: 8px; margin-bottom: 8px; }
.paper-document .back-to-contents { font-size: var(--step-down); line-height: 24px; margin: 0 0 16px; }
.paper-contents ul { margin: 0; padding-left: 24px; }
.paper-document :is(h2,h3) { scroll-margin-top: 24px; }
.paper-document .paper-citation, .paper-document .paper-contact { font-size: var(--step-down); line-height: 24px; margin-top: 24px; }
.record-label { display: none; }
@media (max-width: 700px) {
  .paper-document .paper-subtitle { font-size: var(--step-down); line-height: 32px; }
  .table-scroll { overflow: visible; border: 0; border-radius: 0; }
  .paper-document table, .paper-document tbody, .paper-document tr, .paper-document td { display: block; width: 100%; min-width: 0; }
  .paper-document thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .paper-document tbody tr { border-bottom: 1px solid var(--rule); padding-bottom: 16px; margin-bottom: 16px; }
  .paper-document tbody tr:last-child { margin-bottom: 0; }
  .paper-document td { padding: 0; border: 0; }
  .paper-document td + td { margin-top: 16px; }
  .paper-document td:first-child { font-weight: 600; }
  .paper-document td:first-child .record-label { display: none; }
  .record-label { display: block; font-weight: 600; }
}

/* Each chart carries its values once as real HTML; decorative fills are hidden
   from assistive technology. Shared origins, no uncertainty or chance plot. */
.paper-figure, .recorded-example { margin: 32px 0; padding: 8px 0; font-family: var(--face-formal); font-size: var(--step-down); line-height: 32px; }
.paper-document .paper-figure p, .paper-document .recorded-example p { margin: 0 0 16px; }
.paper-figure strong, .recorded-example strong { font-weight: 600; }
.paper-figure figcaption { font-size: var(--step-down); line-height: 24px; margin-top: 16px; }
.figure-axis-title { margin-bottom: 8px; }
.figure-axis { display: flex; justify-content: space-between; border-top: 1px solid var(--quiet); font-size: var(--step-down); line-height: 24px; padding-top: 0px; }
.figure-axis span { position: relative; }
.figure-axis span::before { content: ""; position: absolute; height: 5px; width: 1px; background: var(--quiet); top: -5px; left: 50%; }
.reconstruction-row { margin: 16px 0; }
.reconstruction-label { margin-bottom: 0px; }
.reconstruction-track { height: 28px; position: relative; background: color-mix(in srgb, var(--ink) 6%, var(--paper)); }
.reconstruction-fill { display: block; height: 100%; background: color-mix(in srgb, var(--action) 28%, var(--paper)); }
.reconstruction-value { position: absolute; top: 0; left: 8px; color: var(--ink); font-weight: 600; }
.correction-records { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.correction-record { margin: 0; }
.correction-record h4 { font-size: inherit; line-height: inherit; font-weight: 400; margin: 0 0 8px; }
.paper-document .correction-record p { margin: 0 0 0px; }
.outcome-labels { display: flex; justify-content: space-between; gap: 16px; margin: 16px 0 8px; }
.outcome-labels span:last-child { text-align: right; }
.outcome-bar { display: flex; height: 64px; }
.outcome-correct { background: var(--action); }
.outcome-incorrect { background: transparent; border: 1px solid var(--quiet); border-left: 0; }
.paper-document .figure-condition { font-size: var(--step-down); line-height: 24px; margin-top: 16px; }
.recorded-example h4 { font-size: var(--step-down); line-height: 24px; margin: 0 0 8px; font-weight: 600; }
.term-space { font-family: var(--face-formal); font-size: calc(1em * var(--voice-match)); line-height: 0; }
.project-route { font-size: var(--step-0); line-height: 24px; margin: 0; }
.project-route a { color: var(--action); text-decoration: none; }
.project-route a:is(:hover,:focus-visible) { text-decoration: underline; text-underline-offset: .15em; }
.paper-document tbody tr, #projects-title, .paper-contents { scroll-margin-top: 24px; }
@media (min-width: 701px) and (max-width: 1100px) {
  .page { width: 100%; padding-inline: 32px; }
}
@media (max-width: 700px) {
  .paper-figure, .recorded-example { font-size: var(--step-down); line-height: 24px; }
  .correction-records { grid-template-columns: 1fr; gap: 24px; }
  .work { margin-top: 80px; }
  .explanation-term { font-size: var(--step-down); }
}

/* Print is a document independent of screen theme or the selected interaction. */
@media print {
  :root { color-scheme: light; --paper: #fff; --ink: #161916; --quiet: #343c35; --action: #163927; --rule: #bbb; }
  html, body { background: #fff !important; color: #161916 !important; }
  .page { width: 100%; padding: 0; min-height: 0; }
  .top-line, .skip-link, .copy-button, .copy-status, .writing-rules, .phrase-control, .paper-contents, .paper-back, .home-link, .paper-figure .tip, .paper-figure .hit { display: none !important; }
  *, *::before, *::after { animation: none !important; transition: none !important; box-shadow: none !important; outline: none !important; }
  .phrase { background: none !important; color: var(--ink) !important; }
  .explanation[hidden] { display: block !important; }
  .explanation-term { display: block; font-family: var(--face-formal); font-size: var(--step-down); line-height: 24px; margin: 0 0 8px; font-weight: 600; break-after: avoid; }
  .explanation { break-inside: avoid; }
  .entry-when, .entry h3, .work h2 { break-after: avoid; }
  .project-route, .back-to-contents { display: none; }
  .outgoing { display: none !important; }
  .paper-main { width: 100%; margin: 0; }
  .paper-page { font-size: var(--step-down); line-height:32px; }
  .paper-document :is(h1,h2,h3) { break-after: avoid; }
  .table-scroll { overflow: visible; border: 0; }
  .paper-document table { display: table; min-width: 0; width: 100%; table-layout: fixed; font-size: var(--step-down); }
  .paper-document thead { display: table-header-group; position: static; width: auto; height: auto; clip-path: none; overflow: visible; }
  .paper-document tbody { display: table-row-group; }
  .paper-document tr { display: table-row; break-inside: avoid; }
  .paper-document th, .paper-document td { display: table-cell; width: auto; padding: 8px; overflow-wrap: normal; }
  .record-label { display: none; }
  .paper-figure, .paper-figure figcaption, .closing-entry { break-inside: avoid; }
  .paper-figure { font-size: var(--step-down); line-height:32px; }
}

/* Evidence is a serif document; scroll only inside dense record apparatus. */
.evidence-page .paper-document { min-width: 0; }
.evidence-record { margin: 56px 0 64px; scroll-margin-top: 24px; }
.evidence-record > h2 { margin-top: 0; }
.evidence-contents { margin: 32px 0 48px; }
.evidence-contents p { margin-bottom: 8px; }
.evidence-contents ol { padding-left: 32px; }
.result-record-link { display: inline-block; font-size: var(--step-down); margin-left: 8px; }
.record-run { color: var(--quiet); }
.record-limit { margin-top: 24px !important; }
.record-downloads { margin-top: 24px; }
.paper-document .record-download { font-size: var(--step-down); line-height:32px; margin-bottom: 16px; }
.record-download code { font: inherit; overflow-wrap: anywhere; word-break: normal; }
.record-return { font-size: var(--step-down); }
.evidence-page summary { cursor: pointer; min-height: 44px; padding: 8px 0; overflow-wrap: normal; }
.evidence-page details { margin: 16px 0; }
.evidence-page output { display: block; min-height: 3em; font-size: var(--step-down); line-height:32px; margin: 8px 0 16px; }
.evidence-scroll { max-width: 100%; overflow: auto; margin: 24px 0; max-height: 540px; }
.evidence-table { font-variant-numeric: tabular-nums; }
.evidence-page .evidence-table caption { text-align: left; color: var(--quiet); font-size: var(--step-down); padding-bottom: 16px; }
.evidence-page .evidence-table :is(th,td) { padding: 8px 16px; overflow-wrap: normal; }
.evidence-page .evidence-table th { background: none; }
.evidence-page .evidence-table tbody th { font-weight: 400; border-bottom: 1px solid var(--rule); }
.evidence-page .evidence-table tr:last-child th { border-bottom: 0; }
.evidence-page .evidence-table thead th { background: var(--paper); position: sticky; top: 0; z-index: 1; }
.evidence-page .grid-table { min-width: 1300px; }
.evidence-page .grid-table :is(th,td) { padding: 8px; text-align: right; }
.rule-views { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 24px; }
.evidence-page figure { margin: 32px 0; }
.evidence-page figcaption { font-size: var(--step-down); line-height:32px; margin-bottom: 16px; }
.rule-view { min-width: 0; }
.rule-view figcaption { min-height: 132px; }
.rule-view summary { font-size: var(--step-down); }
.rule-grid, .candidate-grid { display: block; width: 100%; height: auto; shape-rendering: crispEdges; touch-action: manipulation; }
.rule-grid { aspect-ratio: 1; }
.rule-grid .inspected { stroke: var(--ink); stroke-width: .35; }
.candidate-grid [class^="candidate-step"] { fill: var(--quiet); opacity: .36; }
.candidate-grid .candidate-step-8 { fill: var(--action); opacity: 1; stroke: var(--ink); stroke-width: .15; }
.candidate-grid .inspected { opacity: 1; stroke: var(--focus); stroke-width: .4; }
:is(.rule-grid,.candidate-grid,.daily-plot,.evidence-scroll):focus-visible { outline: 2px solid var(--focus); outline-offset: 4px; }
.probability-scale { display: flex; justify-content: space-between; font-size: var(--step-down); padding: 0 8px 8px; border-bottom: 1px solid var(--quiet); }
.probability-track { position: relative; height: 24px; margin: 8px; background: none; }
.probability-track::before { content: ''; position: absolute; left: 0; right: 0; top: 11px; border-top: 1px solid var(--rule); }
.record-dot { position: absolute; top: 7px; width: 9px; height: 9px; border-radius: 50%; transform: translateX(-50%); background: var(--action); }
.record-dot.diamond { background: var(--paper); border: 2px solid var(--ink); border-radius: 0; transform: translateX(-50%) rotate(45deg); z-index: 1; }
.chain-row, .half-row { margin: 16px 0 24px; }
.chain-label { display: flex; flex-wrap: wrap; gap: 0px 16px; font-size: var(--step-down); }
.chain-label span { font-size: var(--step-down); color: var(--quiet); overflow-wrap: normal; }
.paper-document :is(.chain-exact,.half-row p) { font-size: var(--step-down); line-height:32px; margin-bottom: 0; }
.pair-line { position: absolute; height: 2px; top: 10px; background: var(--quiet); }
.daily-plot { display: block; min-width: 660px; width: 100%; height: auto; color: var(--ink); }
.daily-plot text { fill: var(--quiet); font: var(--step-down) var(--face-formal); }
.daily-plot circle { fill: var(--action); }
.daily-plot path { fill: none; stroke: var(--quiet); stroke-width: 1; }
.daily-plot .plot-axis { stroke: var(--rule); }
.daily-plot .inspected { stroke: var(--focus); stroke-width: 3; }
@media(max-width:700px) {
 .rule-views { display: block; }
 .rule-view { max-width: 100%; margin: 32px 0 !important; }
 .rule-view figcaption { min-height: 0; }
 .evidence-page .evidence-table { display: table; width: max-content; min-width: 100%; max-width: none; }
 .evidence-page .evidence-table thead { display: table-header-group; position: static; width: auto; height: auto; clip-path: none; overflow: visible; }
 .evidence-page .evidence-table tbody { display: table-row-group; }
 .evidence-page .evidence-table tr { display: table-row; width: auto; padding: 0; margin: 0; }
 .evidence-page .evidence-table :is(th,td) { display: table-cell; width: auto; max-width: 220px; padding: 8px 8px; font-size: var(--step-down); }
 .evidence-page .evidence-table td + td { margin: 0; }
 .evidence-page .evidence-table td:first-child { font-weight: 400; }
 .evidence-page .evidence-table tbody tr:last-child td { border-bottom: 0; }
}
@media print {
 .evidence-scroll { max-height: none; overflow: visible; }
 .record-download code { font-size: var(--step-down); }
 .evidence-page .daily-plot { min-width: 0; }
 .evidence-page .grid-table { min-width: 0; }
}
.evidence-page section[id], .paper-figure[id], #result-xlf-correction-may-11 { scroll-margin-top: 24px; }

/* Home studies: one modular scale, a metric-derived voice pairing, one rhythm.
   FontTools: hand x ink = 319/1000 em, serif x ink = 475/1000 em.
   OS/2 hand sxHeight is 300; the real x outline reaches 319. Use the outline
   rather than the advisory field to match the actual visible lowercase body.
   These home composition rules sit on the shared notebook tokens below. */
@media screen {
  .home-page {
    --type-base: 24px;
    --type-ratio: 1.25;
    --step-down: calc(var(--type-base) / var(--type-ratio));
    --step-0: var(--type-base);
    --step-1: calc(var(--step-0) * var(--type-ratio));
    --step-2: calc(var(--step-1) * var(--type-ratio));
    --step-3: calc(var(--step-2) * var(--type-ratio));
    --step-4: calc(var(--step-3) * var(--type-ratio));
    --voice-match: calc(319 / 475);
    --rhythm: calc(var(--type-base) / 3);
    --pitch: var(--rhythm);
    --size: var(--step-1);
    --leading: calc(6 * var(--rhythm));
    font-size: var(--size);
    line-height: var(--leading);
  }
  .home-page .page {
    width: min(calc(100% - 6 * var(--rhythm)), calc(156 * var(--rhythm)));
    padding: calc(3 * var(--rhythm)) 0 calc(8 * var(--rhythm));
  }
  /* Remove the old per-size baseline nudges: normal inline baselines are shared
     by the two fonts; the rule painter still measures each handwritten run. */
  .home-page :is(.nav-word,.identity,.project-sentence,.closing-thought,.inquiries,.skip-link,.work h2) {
    top: 0;
    --baseline-correction: 0px;
  }
  .home-page .navigation { --size: var(--step-1); height: calc(6 * var(--rhythm)); }
  .home-page :is(.social-links,.icon-link) { height: calc(6 * var(--rhythm)); }
  .home-page .nav-word { min-height: calc(6 * var(--rhythm)); }
  .home-page .icon-link { width: calc(6 * var(--rhythm)); }
  .home-page .icon-link svg { width: calc(3 * var(--rhythm)); height: calc(3 * var(--rhythm)); }
  .home-page .icon-link .linkedin-mark { width: calc(2.5 * var(--rhythm)); height: calc(2.5 * var(--rhythm)); }
  .home-page .home-composition {
    margin-top: calc(3 * var(--rhythm));
    min-height: calc(100svh - 27 * var(--rhythm));
  }
  .home-page .home-main { margin: 0; min-width: 0; }
  .home-page .identity {
    --size: var(--step-3); --leading: calc(7 * var(--rhythm));
    height: auto; margin: 0 0 calc(2 * var(--rhythm));
    color: var(--ink);
  }
  .home-page .project-sentence {
    --size: var(--step-4); --leading: calc(9 * var(--rhythm));
    margin: 0; text-indent: 0; font-weight: 400;
  }
  .home-page :is(.phrase,.term-space) { font-size: calc(1em * var(--voice-match)); line-height: 0; }
  .home-page .explanation {
    --size: var(--step-0);
    font-size: var(--size); line-height: calc(4 * var(--rhythm));
    margin-top: calc(3 * var(--rhythm));
    max-width: calc(112 * var(--rhythm));
  }
  .home-page .explanation-term {
    font-size: var(--step-down); line-height: calc(3 * var(--rhythm));
    margin: 0 0 var(--rhythm);
  }
  .home-page .closing-entry { margin: calc(3 * var(--rhythm)) 0 0; }
  .home-page .project-route {
    font-size: var(--step-0); line-height: calc(4 * var(--rhythm));
    margin: 0 0 var(--rhythm);
  }
  .home-page .closing-thought {
    --size: var(--step-2); --leading: calc(6 * var(--rhythm));
    margin: 0;
  }
  .home-page .inquiries {
    --size: var(--step-1); --leading: calc(4 * var(--rhythm));
    gap: 0 calc(2 * var(--rhythm)); margin: 0;
  }
  .home-page .copy-button {
    min-width: 0; height: calc(4 * var(--rhythm)); text-align: inherit;
    line-height: calc(4 * var(--rhythm));
  }
  .home-page .work { margin-top: calc(15 * var(--rhythm)); }
  .home-page .work h2 {
    --size: var(--step-2); --leading: calc(6 * var(--rhythm));
  }
  .home-page .work h2:not(:first-child) { margin-top: calc(8 * var(--rhythm)); }
  .home-page .entry { margin-top: calc(4 * var(--rhythm)); }
  .home-page .entry-when { --size: var(--step-down); --leading: calc(3 * var(--rhythm)); }
  .home-page .entry h3 {
    --size: var(--step-1); --leading: calc(5 * var(--rhythm));
    margin-top: var(--rhythm);
  }
  .home-page .entry p:not(.entry-when) {
    --size: var(--step-0); --leading: calc(4 * var(--rhythm));
    max-width: calc(96 * var(--rhythm)); margin-top: var(--rhythm);
  }
  .home-page #projects-title { scroll-margin-top: calc(3 * var(--rhythm)); }
  .home-page .skip-link { padding: calc(3 * var(--rhythm)); }
}
@media screen and (min-width: 701px) and (max-width: 1100px) {
  .home-page .project-sentence { --size: var(--step-3); --leading: calc(8 * var(--rhythm)); }
}
@media screen and (max-width: 700px) {
  .home-page .home-composition { margin-top: calc(2 * var(--rhythm)); min-height: 0; }
  .home-page .identity { --size: var(--step-2); --leading: calc(6 * var(--rhythm)); }
  .home-page .project-sentence { --size: var(--step-2); --leading: calc(6 * var(--rhythm)); }
  .home-page .closing-thought { --size: var(--step-1); --leading: calc(5 * var(--rhythm)); }
  .home-page .inquiries { --size: var(--step-0); }
  .home-page .explanation { --size: var(--step-down); }
  .home-page .entry h3 { --size: var(--step-0); --leading: calc(4 * var(--rhythm)); }
  .home-page .entry p:not(.entry-when) { --size: var(--step-down); }
  .home-page .work { margin-top: calc(10 * var(--rhythm)); }
}

/* A: a single left-hand writing edge, from identification to the records. */
@media screen {
  .variant-a :is(.identity,.project-sentence,.explanation,.closing-entry,.work) { text-align: left; }
  .variant-a .inquiries { justify-content: flex-start; }
}

/* Notebook system, shared across every page and media mode.
   24 × 1.25^k; serif pairing uses the fonts' actual x ink heights. */
:root {
 --type-base:24px; --type-ratio:1.25;
 --step-down:calc(var(--type-base) / var(--type-ratio));
 --step-0:var(--type-base); --step-1:calc(var(--step-0) * var(--type-ratio));
 --step-2:calc(var(--step-1) * var(--type-ratio));
 --step-3:calc(var(--step-2) * var(--type-ratio));
 --step-4:calc(var(--step-3) * var(--type-ratio));
 --voice-match:calc(319 / 475); --rhythm:8px; --pitch:var(--rhythm);
 --size:var(--step-1); --leading:48px;
 font-size:var(--step-0);
}
body { font-size:var(--step-1); line-height:48px; }
button,input,textarea,select,code,pre { font:inherit; }
.page { width:min(calc(100% - 48px),1248px); padding:24px 0 64px; }
.navigation { --size:var(--step-1); --leading:48px; height:48px; line-height:48px; }
.social-links,.icon-link { height:48px; }
.icon-link { width:48px; }
:is(.nav-word,.reading-entry > h1,.reading-entry > p,.home-link,.skip-link) { top:0; --baseline-correction:0px; }
.skip-link { position:fixed; inset:8px auto auto 8px; padding:8px 16px; font-size:var(--step-down); line-height:32px; }
.skip-link:not(:focus) { width:1px; height:1px; padding:0; overflow:hidden; clip-path:inset(50%); transform:translateY(-200%); }
.skip-link:focus { width:auto; height:auto; clip-path:none; transform:none; }
.subpage-main { margin-top:24px; }
.reading-entry { width:min(100%,720px); }
.reading-entry > h1 { --size:var(--step-4); --leading:72px; margin:32px 0; }
.reading-entry > p { --size:var(--step-2); --leading:48px; margin:24px 0 0; }
.reading-entry .draft-note { margin:0; }
.subpage-footer { margin-top:32px; }
.home-link { --size:var(--step-1); --leading:48px; min-height:48px; }
.paper-page { font-size:var(--step-0); line-height:40px; }
.paper-page .navigation { --size:var(--step-1); --leading:48px; line-height:48px; }
.paper-main { width:min(100%,720px); margin:32px auto 0; }
.paper-draft { font-size:var(--step-1); line-height:40px; margin:0 0 24px; }
.paper-document h1 { font-size:var(--step-3); line-height:56px; margin:0; }
.paper-document h2 { font-size:var(--step-1); line-height:40px; margin:48px 0 24px; }
.paper-document h3 { font-size:var(--step-0); line-height:32px; margin:32px 0 16px; }
.paper-document h4 { font-size:inherit; line-height:inherit; }
.paper-document p { margin:0 0 24px; }
.paper-document :is(ul,ol) { margin:16px 0; padding-left:24px; }
.paper-document .paper-subtitle { font-size:var(--step-0); line-height:32px; margin:16px 0 0; }
.paper-document .paper-meta { font-size:var(--step-down); line-height:32px; margin:24px 0; }
.paper-back,.paper-contents,.paper-document :is(.back-to-contents,.paper-citation,.paper-contact),.result-record-link { font-size:var(--step-down); line-height:32px; }
.paper-contents { margin:24px 0; }
.paper-contents summary,.evidence-page summary { min-height:48px; padding:8px 0; }
.paper-contents ul { margin:0; }
.paper-document .back-to-contents { margin:0 0 24px; }
.paper-back { margin-top:32px; }
.paper-back-top { margin:0 0 24px; }
.table-scroll { margin:32px 0; }
.paper-document table { font-size:var(--step-down); line-height:32px; }
.paper-document :is(th,td) { padding:16px; }
.paper-figure,.recorded-example { margin:32px 0; padding:8px 0; font-size:var(--step-down); line-height:32px; }
.paper-figure :is(figcaption,.figure-axis),.paper-document .figure-condition,.recorded-example h4 { font-size:var(--step-down); line-height:32px; }
.paper-document :is(.paper-figure,.recorded-example) p { margin-bottom:16px; }
.paper-figure figcaption { margin-top:16px; }
.reconstruction-track { height:32px; }
.reconstruction-label { margin-bottom:8px; }
.figure-axis { padding-top:8px; }
.outcome-labels { margin:24px 0 8px; }
.paper-document .correction-record p { margin-bottom:8px; }
.evidence-page output { font-size:var(--step-down); line-height:32px; margin:8px 0 24px; min-height:64px; }
.evidence-page :is(figcaption,.chain-label,.chain-label span,.chain-exact,.half-row p,.probability-scale,.record-return,.record-download,.rule-view summary) { font-size:var(--step-down); line-height:32px; }
.evidence-page .evidence-table :is(th,td) { padding:8px 16px; font-size:var(--step-down); }
.evidence-page .evidence-table caption { font-size:var(--step-down); padding-bottom:16px; }
.evidence-page figure { margin:32px 0; }
.evidence-contents ol { padding-left:24px; }
@media (max-width:700px) {
 .page { width:calc(100% - 48px); padding:24px 0 64px; }
 .reading-entry > h1 { --size:var(--step-2); --leading:48px; }
 .reading-entry > p { --size:var(--step-1); --leading:40px; }
 .paper-page { font-size:var(--step-down); line-height:32px; }
 .paper-document h1 { font-size:var(--step-2); line-height:48px; }
 .paper-document tbody tr { padding-bottom:16px; margin-bottom:16px; }
 .paper-document td { padding:0; }
 .paper-document td + td { margin-top:16px; }
 .evidence-page .evidence-table :is(th,td) { padding:8px; }
}

/* Reading aids: count, comparison and order; no decorative imagery. */
.road-map { margin:32px 0 48px; font-size:var(--step-down); line-height:32px; }
.paper-document .road-map p { margin:0 0 16px; }
.paper-document .road-map ol { display:grid; grid-template-columns:1fr; gap:16px; list-style:none; padding:0; margin:0; }
.road-map li { min-width:0; border-left:2px solid var(--quiet); padding:0 0 0 16px; }
.road-map a { text-decoration:none; }
.road-map a:hover { text-decoration:underline; }
.road-map time,.road-map strong,.road-map li > span { display:block; }
.road-map strong { margin:0; }
.road-map li > span { color:var(--quiet); }
@media(min-width:701px) {
 .road-map li { display:grid; grid-template-columns:128px minmax(0,1fr); column-gap:16px; }
 .road-map a { display:contents; }
 .road-map time { grid-column:1; grid-row:1 / 3; }
 .road-map strong,.road-map li > span { grid-column:2; }
 .road-map a:is(:hover,:focus-visible) strong { text-decoration:underline; }
}
.result-visual > figcaption { margin:0 0 16px; }
.paper-document .visual-limit { margin:16px 0 0; color:var(--quiet); }
.probability-scale { font-size:var(--step-down); line-height:32px; padding:0 8px 8px; }
.compact-chains > .probability-scale { margin-left:64px; margin-right:224px; }
.compact-chain { display:grid; grid-template-columns:56px minmax(0,1fr) 80px 128px; gap:8px; align-items:center; min-height:32px; font-size:var(--step-down); line-height:32px; font-variant-numeric:tabular-nums; }
.compact-chain .probability-track { margin:0; }
.compact-chain > span { white-space:nowrap; }
.compact-chain .sample-n { color:var(--quiet); }
.half-summary-labels { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.half-summary { margin:16px 8px; }
.elimination-chart { display:grid; grid-template-columns:64px minmax(0,1fr); height:320px; margin:16px 0; }
.elimination-ticks { position:relative; font-variant-numeric:tabular-nums; }
.elimination-ticks span { position:absolute; right:8px; transform:translateY(-50%); line-height:32px; }
.elimination-plot { width:100%; height:320px; display:block; color:var(--action); overflow:visible; }
.elimination-plot .plot-grid { fill:none; stroke:var(--rule); vector-effect:non-scaling-stroke; }
.elimination-plot .plot-axis { fill:none; stroke:var(--quiet); vector-effect:non-scaling-stroke; }
.elimination-plot .step-line { fill:none; stroke:currentColor; stroke-width:2; vector-effect:non-scaling-stroke; }
.elimination-plot circle { fill:currentColor; }
.step-values { display:grid; grid-template-columns:repeat(9,minmax(0,1fr)); gap:8px; font-variant-numeric:tabular-nums; }
.step-values span,.step-values strong { display:block; }
.conceptual-diagram { margin:32px 0; font-size:var(--step-down); line-height:32px; }
.conceptual-diagram figcaption { color:var(--quiet); margin-bottom:16px; }
.paper-document .conceptual-diagram ol { display:flex; gap:16px; margin:0; padding:0; list-style:none; }
.conceptual-diagram li { flex:1; min-width:0; }
.conceptual-diagram li + li::before { content:'→ '; color:var(--action); }
.paper-document .conceptual-diagram p { color:var(--quiet); margin:16px 0 0; }
.full-results { margin:32px 0; }
.full-results > summary { font-size:var(--step-down); line-height:32px; min-height:48px; padding:8px 0; cursor:pointer; color:var(--action); }
@media(max-width:700px) {
 .paper-document .road-map ol { grid-template-columns:1fr; gap:16px; }
 .road-map li { border-top:0; border-left:2px solid var(--quiet); padding:0 0 0 16px; }
 .road-map strong { margin:0; }
 .compact-chain { grid-template-columns:56px minmax(24px,1fr) 72px 96px; gap:8px; }
 .compact-chain .probability-track { margin:0; }
 .compact-chains > .probability-scale { margin:0; }
 .half-summary-labels { grid-template-columns:1fr; }
 .step-values { grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
 .paper-document .conceptual-diagram ol { flex-direction:column; gap:16px; }
 .conceptual-diagram li + li::before { content:'↓ '; }
}
/* Record-first evidence: direct marks/labels, short scope, on-demand provenance. */
.evidence-record { margin:48px 0 64px; }
.evidence-record > h2 { margin:0 0 24px; }
.record-view { min-width:0; }
.evidence-page .compact-chain.chain-row { margin:0; }
.evidence-page .record-limit { margin-top:24px !important; font-size:var(--step-down); line-height:32px; }
.paper-document .record-limit h3 { font-size:var(--step-down); line-height:32px; margin:0 0 8px; }
.paper-document .record-limit ul { list-style:none; margin:0; padding:0; }
.record-limit li + li { margin-top:8px; }
.evidence-page .compact-halves > .probability-scale { margin-left:112px; margin-right:0; }
.evidence-page .half-row { display:grid; grid-template-columns:104px minmax(0,1fr) 200px; gap:0 8px; align-items:center; font-size:var(--step-down); line-height:32px; margin:0 0 8px; }
.evidence-page .half-row > strong { grid-row:1 / 3; }
.evidence-page .half-row > .probability-track { grid-row:1 / 3; margin:0 8px; }
.evidence-page .half-row > span { grid-column:3; white-space:nowrap; }
.evidence-page .rule-view figcaption { min-height:0; margin:0 0 16px; }
.evidence-page .rule-view { margin:16px 0 !important; }
.evidence-page .rule-view output { min-height:64px; }
.evidence-page output { visibility:hidden; min-height:32px; margin:8px 0; font-size:var(--step-down); line-height:32px; }
.evidence-page output.is-inspecting { visibility:visible; }
.evidence-page .record-download { font-size:var(--step-down); line-height:32px; margin:0 0 16px; }
.evidence-page .record-context,.evidence-page .extract-method,.evidence-page .exact-values { font-size:var(--step-down); line-height:32px; }
.evidence-page .record-view > .paper-figure { margin-top:0; }
@media(max-width:700px) {
 .evidence-page .half-row { grid-template-columns:72px minmax(24px,1fr) 176px; gap:0; }
 .evidence-page .compact-halves > .probability-scale { margin-left:0; }
 .rule-views { display:grid; grid-template-columns:1fr; gap:16px; }
}
/* Shared scale ticks align with the marks' actual plotting columns, not labels/n. */
.evidence-page .compact-halves > .probability-scale { margin-right:208px; }
@media(max-width:700px) {
 .compact-chains > .probability-scale { margin-left:64px; margin-right:184px; }
 .evidence-page .compact-halves > .probability-scale { margin-left:80px; margin-right:184px; }
 :is(.compact-chains,.compact-halves) > .probability-scale { position:relative; display:block; height:40px; padding:0; }
 :is(.compact-chains,.compact-halves) > .probability-scale > span { position:absolute; top:0; }
 :is(.compact-chains,.compact-halves) > .probability-scale > span:first-child { left:0; transform:translateX(-100%); }
 :is(.compact-chains,.compact-halves) > .probability-scale > span:nth-child(2) { display:none; }
 :is(.compact-chains,.compact-halves) > .probability-scale > span:last-child { left:100%; }
 :is(.compact-chains,.compact-halves) > .probability-scale::before,
 :is(.compact-chains,.compact-halves) > .probability-scale::after { content:''; position:absolute; bottom:0; height:8px; border-left:1px solid var(--quiet); }
 :is(.compact-chains,.compact-halves) > .probability-scale::before { left:0; }
 :is(.compact-chains,.compact-halves) > .probability-scale::after { right:0; }
}

/* Selection is a committed state, never an entrance fade. */
.phrase-control[aria-expanded="true"] + .phrase { transition:none; }
/* Instructions remain visible; the separate readout reserves its line. */
.evidence-page .inspection-instruction { font-size:var(--step-down); line-height:32px; color:var(--quiet); margin:8px 0 0; }
.evidence-page output { visibility:visible; }
@media(max-width:700px) {
 .evidence-page .half-row { grid-template-columns:minmax(0,1fr); gap:0; margin-bottom:24px; }
 .evidence-page .half-row > strong { grid-row:auto; }
 .evidence-page .half-row > span { grid-column:1; white-space:normal; }
 .evidence-page .half-row > .probability-track { grid-row:4; grid-column:1; margin:8px; }
 .evidence-page .compact-halves > .probability-scale { display:flex; justify-content:space-between; height:40px; margin:0 8px 8px; padding:0; }
 .evidence-page .compact-halves > .probability-scale > span { display:block; position:static; transform:none; }
 .evidence-page .compact-halves > .probability-scale::before,
 .evidence-page .compact-halves > .probability-scale::after { display:none; }
}

/* Locate just the destination's identifying text, including wrapped lines. */
.arrival-destination { position:relative; isolation:isolate; }
.arrival-mark { position:absolute; pointer-events:none; background:color-mix(in srgb,var(--action) 18%,transparent); z-index:-1; }
.arrival-destination:focus-visible { outline:none; }
.arrival-destination.arrival-keyboard:focus-visible { outline:2px solid var(--focus); outline-offset:4px; }
/* Native disclosure semantics and immediate layout; only the empty caret moves. */
summary { list-style:none; cursor:pointer; min-height:48px; padding:8px 0; }
summary::-webkit-details-marker { display:none; }
summary::marker { content:''; }
summary::before { content:''; display:inline-block; width:7px; height:7px; background:currentColor; clip-path:polygon(15% 0,85% 50%,15% 100%); transform:rotate(0deg); margin:0 12px 2px 2px; transition:transform 120ms var(--ease-out); }
details[open] > summary::before { transform:rotate(90deg); }
summary:is(:hover,:focus-visible) { background:color-mix(in srgb,var(--action) 8%,transparent); }
summary:focus-visible { outline:2px solid var(--focus); outline-offset:4px; }
/* Revision emphasis belongs only to documented changes of mind. */
.revision-event { position:relative; padding-left:0; margin-block:32px; }
.revision-event::before { content:none; }
.revision-prior { color:var(--quiet); }
.revision-correction { font-weight:600; }
.revision-consequence { display:block; margin-top:16px; font-weight:400; }
.correction-record h4 { font-weight:600; }
.paper-document .correction-record p:last-child { margin-top:16px; }
#vtr-direction li { padding-left:0; }
#vtr-direction li + li::before { content:''; }
#vtr-direction li:last-child { font-weight:600; }
.revision-event .record-limit { padding-top:8px; }

/* A stable normal rule remains beneath the separate ink response. */
.ink-trace { position:absolute; left:0; width:100%; top:-1px; height:3px; background:var(--action); mask:url('/assets/underline.svg') center / 100% 100% no-repeat; transform:scaleX(0); transform-origin:left; opacity:0; transition:opacity 100ms; }
:is(.nav-word,.home-link):is(:hover,:focus-visible) .ink-trace,
.inquiries:has(.copy-button:is(:hover,:focus-visible)) .copy-rule .ink-trace { transform:scaleX(1); opacity:1; transition:transform 160ms cubic-bezier(.22,1,.36,1); }
/* Keep the completed trace while it fades out, then reset its scale. */
.ink-trace { transition:opacity 100ms, transform 0ms 100ms; }
.icon-link { transition:color 120ms var(--ease-out); }
.home-page .project-route { margin:8px 0 0; }
.home-page .inquiries { column-gap:24px; }
.home-page .copy-button::before { content:''; position:absolute; inset:-8px -8px -16px; }
.camera-unit { white-space:nowrap; }
#result-xlf-correction-may-11 { position:relative; padding-left:0; }
#result-xlf-correction-may-11::before { content:none; }
@media(max-width:375px) { .produce-pair { white-space:nowrap; } }
@media(prefers-reduced-motion:reduce) {
 *,*::before,*::after { animation:none !important; transition:none !important; }
}
/* On the paper too, phone comparisons put their values before the shared track. */
@media(max-width:700px) {
 #ebrc-half-plot { display:flex; flex-direction:column; }
 #ebrc-half-plot > figcaption { order:0; }
 #ebrc-half-plot > .half-summary-labels { order:1; }
 #ebrc-half-plot > .probability-scale { order:2; margin-top:16px; }
 #ebrc-half-plot > .half-summary { order:3; }
 #ebrc-half-plot > .visual-limit { order:4; }
}

/* Pencil is real static text; the identical aria-hidden ink layer never affects flow. */
.ink-word { display:inline-block; position:relative; text-indent:0; }
.ink-fill { position:absolute; inset:0; white-space:nowrap; pointer-events:none; }
@media(prefers-reduced-motion:no-preference) {
 .ink-pencil { opacity:.25; }
 .ink-fill { clip-path:inset(-40% 100% -40% 0); }
 .ink-arriving [data-writing] .writing-rule { transform:scaleX(0); }
}
.ink-done .ink-pencil { opacity:1; }
.ink-done .ink-fill { display:none; }
[data-writing] .writing-rule { transform-origin:left; }
/* Reserve the tallest definition before first paint; JS refines at the real width. */
@media screen and (min-width:701px) {
 .home-page .meanings { height:var(--meaning-height,152px); display:flow-root; }
}
/* A full guide, never seven disconnected title borders. */
.paper-document .road-map ol { position:relative; padding-left:24px; }
.road-map ol::before,.road-line { content:''; position:absolute; left:3px; top:0; bottom:0; width:2px; background:color-mix(in srgb,var(--quiet) 25%,transparent); pointer-events:none; }
.road-line { background:var(--quiet); transform-origin:top; }
.road-map li { position:relative; border:0; padding:0; }
.road-marker { position:absolute; left:-23px; top:12px; width:6px; height:6px; border-radius:50%; background:var(--action); pointer-events:none; }
.road-map li > .road-marker { display:block; grid-column:1 / -1; grid-row:1 / -1; }
/* Larger handwritten route labels remain on the same line rhythm. */
.nav-word,.home-page .nav-word { --size:var(--step-2); }
.home-page .project-route { font-size:var(--step-1); }
.project-route a { position:relative; display:inline-block; }
.phrase-word { position:relative; }
.term-stroke { position:absolute; left:0; bottom:-5px; width:100%; height:7px; overflow:visible; pointer-events:none; }
.term-stroke path { fill:none; stroke:var(--action); stroke-width:2; stroke-linecap:round; stroke-dasharray:1; stroke-dashoffset:1; }
.phrase:hover .term-stroke path,
.phrase-control:focus-visible + .phrase .term-stroke path { stroke-dashoffset:0; transition:stroke-dashoffset 220ms cubic-bezier(.22,1,.36,1); }
.phrase-control[aria-expanded="true"] + .phrase .term-stroke path { stroke-dashoffset:0; transition:none; }
/* Detail axes are explicit, directly beneath their honest full-scale tracks. */
.half-detail { margin:16px 8px 24px; min-width:0; }
.half-detail-label { font-size:var(--step-down); line-height:32px; }
.half-detail .probability-scale { padding-inline:0; }
.half-detail .probability-track { margin:8px 0; }
.half-detail .record-dot { top:7px; }
.half-detail .record-dot.diamond { top:7px; }
.half-detail .pair-line { display:none; }
@media(max-width:700px) {
 #ebrc-half-plot > .half-detail { order:3; }
}
@media(prefers-reduced-motion:reduce) {
 .ink-pencil { opacity:1 !important; }
 .ink-fill { display:none !important; }
 .term-stroke path { transition:none !important; }
}
@media print {
 .ink-pencil { opacity:1 !important; }
 .ink-fill { display:none !important; }
}

/* Voice changes get one consistent space, not the handwriting font's wide space. */
.project-sentence .voice-space { font-size:inherit; word-spacing:calc(.22em - .331em); }
/* Scale borders and end labels share the exact endpoints of their plot track. */
.compact-chains > .probability-scale { padding-inline:0; position:relative; }
.compact-chains > .probability-scale > span { position:relative; }
.compact-chains > .probability-scale > span:first-child { transform:translateX(-50%); }
.compact-chains > .probability-scale > span:last-child { transform:translateX(50%); }
/* Every detail marker has its own complete 95–100 reference lane. */
.half-detail .detail-lane { margin:8px 0; }
@media(min-width:701px) {
 .evidence-page .compact-halves > .probability-scale { margin-left:128px; margin-right:216px; padding-inline:0; }
 .evidence-page .half-row { grid-template-columns:112px minmax(0,1fr) 200px; }
}

/* Axis endpoints are the plotting endpoints, including in the narrow layout. */
.compact-chains > .probability-scale { display:block; height:40px; }
.compact-chains > .probability-scale > span { position:absolute; top:0; }
.compact-chains > .probability-scale > span:first-child { left:0; transform:translateX(-50%); }
.compact-chains > .probability-scale > span:nth-child(2) { left:50%; transform:translateX(-50%); }
.compact-chains > .probability-scale > span:last-child { left:100%; transform:translateX(-50%); }
#ebrc-half-plot > .probability-scale { margin-inline:8px; padding-inline:0; }

/* The current work shares the left writing edge; its small arrow is source ink. */
.current-project-label {
 position:relative; width:fit-content; margin:0; height:40px;
 font-family:"Yuval Hand",sans-serif; font-size:var(--step-1); line-height:40px;
 font-weight:400; color:var(--ink);
}
.current-project-arrow { position:absolute; left:calc(100% + 8px); top:8px; width:62px; height:35px; overflow:visible; color:var(--ink); }
.arrow-reveal { stroke-dasharray:1; stroke-dashoffset:0; }
@media(prefers-reduced-motion:no-preference) {
 .ink-arriving .arrow-reveal { stroke-dashoffset:1; }
}
.progress-log { margin:32px 0 48px; }
.progress-log > h3,.progress-log > .progress-draft {
 position:relative; width:fit-content; margin:0;
 font-family:"Yuval Hand",sans-serif; font-size:var(--step-2); line-height:48px; font-weight:400;
}
.progress-log > .progress-draft { font-size:var(--step-1); line-height:40px; color:var(--quiet); }
.progress-log > .progress-year,.progress-log > .progress-item {
 font-family:var(--face-formal); font-size:var(--step-0); line-height:32px;
 max-width:768px; margin:16px 0 0; font-weight:400;
}
.progress-log > .progress-year { color:var(--quiet); }
@media(max-width:700px) {
 .current-project-label { font-size:var(--step-0); }
 .current-project-arrow { width:54px; height:30px; }
 .progress-log > .progress-item,.progress-log > .progress-year { font-size:var(--step-down); }
}
@media(prefers-reduced-motion:reduce) { .arrow-reveal { stroke-dashoffset:0 !important; } }

/* The latest entry waits under the sentence until a meaning takes its place. */
.progress-latest { margin-top:40px; max-width:880px; }
.meanings:has(> .explanation:not([hidden])) > .progress-latest { display:none; }
.progress-latest-head { display:flex; gap:24px; align-items:baseline; margin:0; font-family:"Yuval Hand",sans-serif; font-size:var(--step-1); line-height:40px; color:var(--quiet); }
.progress-latest-head a { color:var(--action); text-decoration:none; position:relative; }
.progress-latest-head a:is(:hover,:focus-visible) { text-decoration:underline; }
.progress-latest-entry { margin:0; font-family:var(--face-formal); font-size:var(--step-0); line-height:32px; color:var(--quiet); }
.progress-latest-entry time { color:var(--ink); }
@media(max-width:700px) { .progress-latest { margin-top:24px; } .progress-latest-entry { font-size:var(--step-down); } }
/* An undrawn stroke must be invisible: a round cap alone paints a dot. */
.term-stroke path { opacity:0; }
.phrase:hover .term-stroke path,
.phrase-control:focus-visible + .phrase .term-stroke path,
.phrase-control[aria-expanded="true"] + .phrase .term-stroke path { opacity:1; }
