/* Math and Theory. A typographic system in system fonts: serif text, small-caps labels, hairline rules. */
:root {
  color-scheme: light;
  --paper: #f3eee4;
  --ink: #1c1b19;
  --muted: #5d574f;
  --rule: #d6cdbc;
  --accent: #7a1f1f;
  --serif: Charter, "Bitstream Charter", "Sitka Text", "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, "TeX Gyre Pagella", P052, Georgia, serif;
  --mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
  --measure: 38rem;
  --left: 7.5rem;
  --right: 17rem;
  --note: 14rem;
  --gutter: clamp(1rem, 4vw, 1.5rem);
}
@media (prefers-color-scheme: dark) {
  :root {
    color-scheme: dark;
    --paper: #1a1815;
    --ink: #ece5d8;
    --muted: #b0a796;
    --rule: #3b362f;
    --accent: #e6a597;
  }
}

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { background: var(--paper); -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
@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: clamp(1.0625rem, 1rem + .25vw, 1.1875rem); line-height: 1.55;
  font-kerning: normal; font-variant-ligatures: common-ligatures; font-variant-numeric: oldstyle-nums proportional-nums;
  hanging-punctuation: first allow-end last; overflow-wrap: break-word;
}
h1, h2, h3, h4 { font-family: var(--serif); font-weight: 400; line-height: 1.2; margin: 0; text-wrap: balance; }
p, li, dd { text-wrap: pretty; }
p { margin: 0 0 .9rem; }
a {
  color: var(--accent); text-decoration-line: underline; text-decoration-thickness: 1px; text-underline-offset: .2em;
  text-decoration-color: var(--rule); text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
}
a:hover { text-decoration-color: currentColor; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 1px; }
a, button, input, pre, [id] { scroll-margin-block: 2.5rem; }
main:focus { outline: none; }
/* A filtered index link is revealed once filtered, so it never shifts; the animation reveals it anyway after 2 s. */
.pending main, .pending .colophon { visibility: hidden; animation: reveal 0s 2s forwards; }
@keyframes reveal { to { visibility: visible; } }
code, pre { font-family: var(--mono); font-size: .8em; font-variant-numeric: lining-nums; font-variant-ligatures: none; }
code { overflow-wrap: anywhere; }
pre {
  margin: .4rem 0 1.1rem; padding: .5rem 0 .5rem 1rem; border-left: 1px solid var(--rule);
  white-space: pre; overflow-x: auto; line-height: 1.5;
}
pre.wrap { white-space: pre-wrap; overflow-wrap: anywhere; }
pre code { font-size: 1em; }
i, em { font-style: italic; }
.sc, .kicker, .flag, .mark, .label, legend, .search-label, .section-title, .part > h2, .runin, .facts dt, .files dt, .caption {
  font-variant-caps: all-small-caps; letter-spacing: .06em; font-variant-numeric: lining-nums;
}
.muted { color: var(--muted); }
.abstract, .statement, .scope, .title, h1 { font-variant-numeric: lining-nums proportional-nums; }
.small { font-size: .9em; }
.vh {
  position: absolute !important; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.skip {
  position: absolute; left: var(--gutter); top: -10rem; z-index: 10; padding: .5rem .8rem;
  background: var(--paper); color: var(--ink); border: 1px solid var(--ink);
}
.skip:focus { top: .5rem; }

/* The sheet: a text column with a left margin for markers and a right margin for notes on wide screens. */
.sheet { max-width: calc(var(--measure) + 2 * var(--gutter)); margin-inline: auto; padding-inline: var(--gutter); }
@media (min-width: 70rem) {
  .sheet {
    max-width: calc(var(--left) + var(--measure) + var(--right) + 2 * var(--gutter));
    padding-left: calc(var(--gutter) + var(--left)); padding-right: calc(var(--gutter) + var(--right));
  }
  .topline .sheet, .colophon .sheet { padding-right: var(--gutter); }
}

/* Top line and colophon */
.topline { border-bottom: 1px solid var(--rule); }
.topline .sheet { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0 1.5rem; padding-block: .55rem; }
.topline .name { color: var(--ink); text-decoration: none; font-size: 1.05rem; padding-block: .3rem; }
.topline ul { display: flex; flex-wrap: wrap; gap: 0 1rem; margin: 0 0 0 -.2rem; padding: 0; list-style: none; }
.topline nav a {
  display: inline-block; padding: .3rem .2rem; color: var(--ink); text-decoration: none;
  font-variant-caps: all-small-caps; letter-spacing: .07em;
}
.topline nav a:hover { color: var(--accent); }
.topline nav a[aria-current="page"] { color: var(--accent); text-decoration: underline; text-decoration-color: currentColor; }
main { display: block; padding-block: clamp(1.75rem, 5vw, 3.25rem) 3.5rem; }
.colophon { border-top: 1px solid var(--rule); font-size: .875rem; color: var(--muted); }
.colophon .sheet { padding-block: 1.5rem 2.5rem; }
.colophon p { max-width: var(--measure); margin: 0 0 .5rem; }
.sep { color: var(--muted); }

/* Home */
.masthead { margin-bottom: 1.5rem; }
.masthead h1 { font-size: clamp(2.6rem, 1.6rem + 4.5vw, 4.25rem); line-height: 1.02; letter-spacing: -.015em; }
.masthead .subtitle { margin: .7rem 0 0; color: var(--muted); font-size: 1.05rem; font-variant-caps: all-small-caps; letter-spacing: .08em; font-variant-numeric: lining-nums; }
.intro { font-size: 1.1em; }
.disclosure { margin-top: 1.25rem; padding-top: .7rem; border-top: 1px solid var(--rule); font-style: italic; font-size: .95em; }
.block { margin-top: clamp(2.75rem, 7vw, 4rem); }
.section-title { font-size: 1.5rem; letter-spacing: .09em; padding-top: .6rem; border-top: 1px solid var(--ink); margin-bottom: .6rem; }
.section-note { color: var(--muted); font-size: .95em; }

/* Numbered and plain entry lists */
.numbered { list-style: none; margin: 1.5rem 0 0; padding: 0 0 0 2.75rem; counter-reset: item; }
.numbered > li { position: relative; counter-increment: item; }
.numbered > li::before {
  content: counter(item, upper-roman) "."; position: absolute; right: 100%; margin-right: .8rem; top: .12rem;
  color: var(--muted); font-variant-caps: all-small-caps; letter-spacing: .04em; font-variant-numeric: lining-nums;
}
.entries { list-style: none; margin: 1.5rem 0 0; padding: 0; }
.numbered > li, .entries > li { margin-bottom: 1.6rem; }
.title { font-size: 1.18rem; line-height: 1.3; margin-bottom: .3rem; }
.statement { margin-bottom: .3rem; }
.scope { font-size: .95em; margin-bottom: .3rem; }
.links-line { font-size: .92em; margin: 0; }
.entry-meta { display: block; color: var(--muted); font-size: .875em; font-variant-numeric: lining-nums; }
p.entry-meta { margin: 0 0 .35rem; }
.mark { color: var(--accent); margin-right: .45em; }
@media (min-width: 70rem) {
  .numbered { padding-left: 0; }
  .numbered > li::before { margin-right: 1.4rem; }
  .entries > li, .toc > li { position: relative; }
  .entries .mark, .toc .mark { position: absolute; right: 100%; margin-right: 1.4rem; white-space: nowrap; }
  .entries .mark { top: .15rem; }
}

/* Index of results */
.finder { display: none; margin: 1.5rem 0 1.75rem; }
.js .finder { display: block; }
.search-label { display: block; color: var(--muted); }
.finder input[type="search"], .lookup input[type="search"] {
  width: 100%; margin: 0; padding: .3rem 0; font: inherit; font-size: 1.15em; color: var(--ink);
  background: transparent; border: 0; border-bottom: 1px solid var(--ink); border-radius: 0; -webkit-appearance: none; appearance: none;
}
.finder input::placeholder, .lookup input::placeholder { color: var(--muted); opacity: 1; font-style: italic; }
.menus { margin-top: .9rem; display: grid; gap: .2rem; }
.menu { border: 0; margin: 0; padding: 0; min-width: 0; }
.menu legend { float: left; margin-right: .7rem; padding: .15rem 0; color: var(--muted); }
.toggle { position: relative; display: inline-block; padding: .15rem .1rem; }
.toggle input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.toggle span { color: var(--muted); }
.toggle input:hover + span { color: var(--ink); }
.toggle input:checked + span { color: var(--ink); text-decoration: underline; text-decoration-thickness: 1.5px; text-underline-offset: .3em; }
.toggle input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 3px; }
.status { margin: .9rem 0 0; color: var(--muted); }
.lookup { margin: 1.5rem 0; }
.lookup input[type="search"] { width: min(100%, 22rem); margin-right: .75rem; }
.textbutton {
  font: inherit; color: var(--accent); background: none; border: 0; padding: .15rem 0; cursor: pointer;
  text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em;
}
.empty { font-style: italic; color: var(--muted); }
.discipline { margin-top: 2.25rem; }
.discipline > h3 { font-size: 1.3rem; letter-spacing: .08em; font-variant-caps: all-small-caps; padding-bottom: .3rem; border-bottom: 1px solid var(--rule); }
.subject > h4 { font-size: 1.1rem; font-style: italic; margin: 1.4rem 0 .35rem; }
.subject > h4 a { color: var(--ink); }
.toc { list-style: none; margin: 0; padding: 0; }
.toc > li { padding: .32rem 0; }
.toc .mark { top: .32rem; }

/* Page heads and kickers */
.kicker { color: var(--muted); margin: 0 0 .8rem; }
.kicker ol { display: flex; flex-wrap: wrap; gap: 0 .45rem; margin: 0; padding: 0; list-style: none; }
.kicker li + li::before { content: "›"; content: "›" / ""; margin-right: .45rem; }
.page-head h1 { font-size: clamp(2rem, 1.4rem + 2.4vw, 2.8rem); line-height: 1.12; letter-spacing: -.01em; }
.page-head .intro { margin-top: 1rem; }
.inline-list { line-height: 1.8; }

/* Result page */
.paper-head h1 { font-size: clamp(1.85rem, 1.3rem + 2.2vw, 2.65rem); line-height: 1.14; letter-spacing: -.01em; }
.byline { margin: .9rem 0 0; color: var(--muted); }
.flag { margin: .35rem 0 0; color: var(--accent); }
.contents { margin: 1.1rem 0 0; font-size: .9em; }
.contents p { margin: 0; }
.abstract { margin-top: 2rem; }
.claim { margin-top: 1.6rem; padding: .85rem 1.1rem; border-left: 3px solid var(--accent); border-radius: 0 8px 8px 0; background: var(--tint); }
.claim-facts { margin: 0; display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: .35rem 1rem; }
.claim-facts dt { color: var(--muted); font-variant: small-caps; letter-spacing: .05em; }
.claim-facts dd { margin: 0; }
@media (max-width: 30rem) { .claim-facts { grid-template-columns: minmax(0, 1fr); gap: 0; } .claim-facts dd { margin-bottom: .45rem; } }
.runin { float: left; margin: 0 .55em 0 0; font-size: 1em; line-height: inherit; font-weight: 600; letter-spacing: .07em; }
.part { margin-top: 2.4rem; padding-top: .8rem; border-top: 1px solid var(--rule); }
.part > h2 { font-size: 1.2rem; letter-spacing: .08em; margin-bottom: .8rem; }
.part h3 { font-size: 1rem; margin: 1.2rem 0 .4rem; }
.caveat { color: var(--muted); font-size: .92em; }
.files { margin: 0 0 .5rem; display: grid; grid-template-columns: minmax(0, 1fr); }
.files dt { color: var(--muted); margin-top: .55rem; }
.files dd { margin: 0; }
.files code, .mono-list code, .part p code { overflow-wrap: break-word; }
.files .note { color: var(--muted); font-size: .9em; font-variant-numeric: lining-nums; }
.mono-list { list-style: none; margin: .2rem 0 0; padding: 0; }
.mono-list li { padding: .08rem 0; }
.caption { margin: 1rem 0 .1rem; color: var(--muted); }
.copy-row { display: none; margin: -.4rem 0 0; font-size: .92em; }
.js .copy-row { display: block; }
.copy-status { color: var(--muted); margin-left: .6em; }
.margin { margin: 1.25rem 0 0; padding: .7rem 0; border-block: 1px solid var(--rule); font-size: .85rem; line-height: 1.45; font-variant-numeric: lining-nums tabular-nums; }
.facts { margin: 0; display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: .3rem 1rem; }
.facts dt { color: var(--muted); }
.facts dd { margin: 0; }
@media (min-width: 40rem) {
  .files { grid-template-columns: 12rem minmax(0, 1fr); column-gap: 1rem; row-gap: .45rem; }
  .files dt { margin-top: 0; }
}
@media (min-width: 70rem) {
  .paper { display: grid; grid-template-columns: minmax(0, 1fr) var(--note); column-gap: calc(var(--right) - var(--note)); margin-right: calc(-1 * var(--right)); }
  .paper > * { grid-column: 1; }
  .paper > .paper-head { grid-column: 1 / -1; }
  .paper-head h1 { max-width: 21em; }
  .paper-head .byline, .paper-head .contents { max-width: var(--measure); }
  .paper > .margin { grid-column: 2; grid-row: 2 / span 30; align-self: start; margin-top: 2.15rem; padding: 0; border: 0; }
  .facts { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .facts dd { margin-bottom: .55rem; }
}

@media (max-width: 30rem) {
  .topline ul { gap: 0 .7rem; margin-left: -.1rem; }
  .topline nav a { padding-inline: .1rem; letter-spacing: .045em; }
}

@media print {
  .topline nav, .finder, .copy-row, .contents, .skip, .colophon p + p { display: none !important; }
  body { font-size: 10.5pt; background: #fff; color: #000; }
  a { color: #000; text-decoration: none; }
  .part a[href^="http"]::after { content: " <" attr(href) ">"; font-family: var(--mono); font-size: .75em; overflow-wrap: anywhere; }
  .sheet { max-width: none; padding: 0; }
  .paper { display: block; margin: 0; }
  .numbered > li, .entries > li, .toc > li, pre { break-inside: avoid; }
}
.models { margin: .4rem 0 .9rem; padding-left: 1.2rem; }
.models li { margin-bottom: .45rem; }
.models b { font-weight: 600; }

/* Status chips, cards and the home figures */
:root { --proved: #2f6140; --partial: #8a5a12; --card: #f8f4ec; --tint: #efe6da; --shadow: rgba(40, 30, 15, .18); }
@media (prefers-color-scheme: dark) {
  :root { --proved: #9ccaa6; --partial: #e2b66e; --card: #211e1a; --tint: #26201b; --shadow: rgba(0, 0, 0, .5); }
}
.topline .name { display: inline-flex; align-items: center; gap: .55rem; }
.topline .name img { width: 1.4rem; height: 1.4rem; border-radius: 4px; flex: none; }
.masthead h1::after { content: ""; display: block; width: 3.5rem; height: 3px; margin-top: .85rem; background: var(--accent); }
.outcome {
  display: inline-block; margin-right: .5em; padding: 0 .6em; border: 1px solid currentColor; border-radius: 999px;
  font-size: .8em; line-height: 1.55; white-space: nowrap; vertical-align: .06em;
  font-variant-caps: all-small-caps; letter-spacing: .07em; font-variant-numeric: lining-nums; font-style: normal;
  color: var(--muted); background: color-mix(in srgb, currentColor 8%, transparent);
}
.outcome[data-tone="proved"] { color: var(--proved); }
.outcome[data-tone="refuted"] { color: var(--accent); }
.outcome[data-tone="partial"] { color: var(--partial); }
.problem-line { margin: .1rem 0 .45rem; font-size: .95em; line-height: 1.45; }
.problem-line .problem-name { color: var(--muted); font-style: italic; }
.claim-facts dd .outcome { margin-right: 0; }
.cards > li {
  padding: 1rem 1.2rem .95rem; border: 1px solid var(--rule); border-radius: 8px; background: var(--card);
  transition: border-color .15s ease, box-shadow .15s ease;
}
.cards > li:hover { border-color: color-mix(in srgb, var(--accent) 40%, var(--rule)); box-shadow: 0 10px 24px -18px var(--shadow); }
.numbered.cards > li { margin-bottom: 1rem; }
.numbered.cards > li::before { top: 1.08rem; }
.cards .title { margin-bottom: .2rem; }
.cards .title a { text-decoration-color: transparent; }
.cards .title a:hover { text-decoration-color: currentColor; }
.figures {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr)); gap: .75rem;
  margin: 1.6rem 0 0; padding: 0; list-style: none;
}
.figures a {
  display: flex; flex-direction: column; height: 100%; padding: .75rem .9rem .7rem; border: 1px solid var(--rule);
  border-radius: 8px; background: var(--card); color: var(--ink); text-decoration: none; transition: border-color .15s ease;
}
.figures a:hover { border-color: var(--accent); }
.figures .n { font-size: 1.9rem; line-height: 1; font-variant-numeric: lining-nums tabular-nums; color: var(--accent); }
.figures .l { margin-top: .35rem; color: var(--muted); font-size: .92em; line-height: 1.25; font-variant-caps: all-small-caps; letter-spacing: .06em; }
.toc .entry-meta .outcome { font-size: .85em; }
@media print {
  .cards > li, .figures a { border-color: #999; background: none; box-shadow: none; }
  .outcome { background: none; }
}

/* Search: a header link that opens a quiet palette in the same paper, serif and small-capital style. */
.topline nav a.search-trigger { display: inline-flex; align-items: center; gap: .4rem; }
kbd {
  font-family: var(--mono); font-size: .68rem; line-height: 1; padding: .14rem .32rem; border: 1px solid var(--rule);
  border-radius: 3px; color: var(--muted); font-variant-caps: normal; letter-spacing: 0;
}
.palette {
  width: min(40rem, calc(100vw - 1.5rem)); max-height: min(76vh, 44rem); margin: 10vh auto auto; padding: 0;
  color: var(--ink); background: var(--paper); border: 1px solid var(--rule); border-radius: 4px;
  box-shadow: 0 18px 50px -18px rgba(28, 27, 25, .35); overflow: hidden;
}
.palette[open] { display: flex; flex-direction: column; }
.palette::backdrop { background: rgba(28, 27, 25, .28); }
.palette-form { display: flex; align-items: baseline; gap: .6rem; padding: .9rem 1.1rem .6rem; border-bottom: 1px solid var(--ink); }
.palette-form input {
  flex: 1; min-width: 0; padding: .2rem 0; border: 0; outline: none; background: transparent;
  color: var(--ink); font: 1.2rem/1.4 var(--serif); -webkit-appearance: none; appearance: none;
}
.palette-form input::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }
.palette-form input::placeholder { color: var(--muted); font-style: italic; }
.palette-close { font-family: var(--mono); font-size: .68rem; color: var(--muted); background: none; border: 1px solid var(--rule); border-radius: 3px; padding: .14rem .32rem; cursor: pointer; }
.palette-filters { display: flex; flex-wrap: wrap; gap: .1rem .9rem; padding: .55rem 1.1rem 0; }
.palette-filters button {
  font: inherit; font-size: .95rem; color: var(--muted); background: none; border: 0; padding: .1rem 0; cursor: pointer;
  font-variant-caps: all-small-caps; letter-spacing: .06em;
}
.palette-filters button:hover { color: var(--ink); }
.palette-filters button[aria-pressed="true"] { color: var(--ink); text-decoration: underline; text-decoration-thickness: 1.5px; text-underline-offset: .3em; }
.palette-count { margin: .45rem 1.1rem .2rem; font-size: .85rem; color: var(--muted); font-style: italic; }
.palette-results { flex: 1; overflow-y: auto; margin: 0; padding: 0 0 .4rem; list-style: none; overscroll-behavior: contain; }
.palette-results a { display: block; padding: .6rem 1.1rem .65rem; color: var(--ink); text-decoration: none; border-left: 2px solid transparent; }
.palette-results a:hover, .palette-results li[aria-selected="true"] a { background: var(--tint); border-left-color: var(--accent); }
.palette-title { display: block; color: var(--accent); font-size: 1.02rem; line-height: 1.3; }
.palette-problem { display: block; margin-top: .15rem; font-size: .88rem; color: var(--muted); font-style: italic; line-height: 1.4; }
.palette-problem .outcome { font-style: normal; }
.palette-claim { display: -webkit-box; margin-top: .2rem; font-size: .88rem; line-height: 1.45; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.palette-meta { display: block; margin-top: .15rem; font-size: .8rem; color: var(--muted); font-variant-caps: all-small-caps; letter-spacing: .05em; }
.palette mark { background: none; color: inherit; text-decoration: underline; text-decoration-color: var(--accent); text-decoration-thickness: 2px; text-underline-offset: .18em; }
.palette-hint { margin: 0; padding: .5rem 1.1rem; border-top: 1px solid var(--rule); font-size: .8rem; color: var(--muted); }
@media (max-width: 40rem) { .palette { margin-top: .6rem; max-height: calc(100vh - 1.2rem); } .palette-hint { display: none; } }
@media print { .search-trigger, .palette { display: none !important; } }

/* Refinements: the collection in one sentence, quiet status marks, and a calmer search palette. */
.tally { max-width: var(--measure); margin: 1.1rem 0 0; font-size: 1.1em; }
.outcome {
  display: inline; margin: 0 .5em 0 0; padding: 0; border: 0; border-radius: 0; background: none;
  font: inherit; font-size: .92em; font-style: normal; font-variant-caps: normal; letter-spacing: 0; text-transform: none;
  white-space: nowrap; vertical-align: baseline; color: var(--muted);
}
.outcome::before { content: ""; display: inline-block; width: .42em; height: .42em; margin-right: .38em; border-radius: 50%; background: currentColor; vertical-align: .14em; }
.palette-filters button { font-variant-caps: normal; letter-spacing: 0; font-size: .92rem; }
.palette-meta { font-variant-caps: normal; letter-spacing: 0; font-style: italic; font-size: .84rem; }
.palette-claim { color: var(--muted); }
.palette mark { text-decoration: none; background: color-mix(in srgb, var(--accent) 13%, transparent); border-radius: 2px; padding: 0 .04em; }
.cards > li, .cards > li:hover { padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
.numbered.cards > li { margin-bottom: 1.9rem; }
.numbered.cards > li::before { top: .12rem; }

/* Typeset motion. The site's hairline rules are drawn like ruler strokes: once on load under the title, then as each
   section arrives. Everything else moves only in answer to the reader. */
:root { --ease: cubic-bezier(.22, .61, .36, 1); }
.masthead .subtitle { font-variant-caps: normal; letter-spacing: 0; font-style: italic; font-size: 1.08rem; }
.links-line { display: flex; flex-wrap: wrap; gap: .15rem 1.1rem; }
.links-line .sep { display: none; }
.numbered > li::before { transition: color .25s ease; }
.numbered > li:hover::before, .numbered > li:focus-within::before { color: var(--accent); }
.progress { position: fixed; z-index: 50; left: 0; right: 0; top: 0; height: 2px; background: var(--accent); transform-origin: left; transform: scaleX(0); }
@media (prefers-reduced-motion: no-preference) {
  .masthead h1 { animation: settle .9s var(--ease) both; }
  .masthead h1::after { transform-origin: left; animation: stroke .9s .35s var(--ease) both; }
  .masthead .subtitle, .masthead ~ .intro, .masthead ~ .tally, .masthead ~ .disclosure { animation: appear .8s var(--ease) both; }
  .masthead .subtitle { animation-delay: .55s; }
  .masthead ~ .intro { animation-delay: .7s; }
  .masthead ~ .tally { animation-delay: .85s; }
  .masthead ~ .disclosure { animation-delay: 1s; }
  .js .section-title, .js .part { border-top-color: transparent; position: relative; }
  .js .discipline > h3 { border-bottom-color: transparent; position: relative; }
  .js .section-title::before, .js .part::before, .js .discipline > h3::after {
    content: ""; position: absolute; left: 0; right: 0; height: 1px; background: var(--ink);
    transform: scaleX(0); transform-origin: left; transition: transform 1.2s var(--ease);
  }
  .js .section-title::before, .js .part::before { top: -1px; }
  .js .part::before, .js .discipline > h3::after { background: var(--rule); }
  .js .discipline > h3::after { bottom: -1px; }
  .js .drawn::before, .js .discipline > h3.drawn::after { transform: scaleX(1); }
  .js .numbered.staged > li { opacity: 0; transform: translateY(10px); transition: opacity .7s var(--ease), transform .7s var(--ease); transition-delay: var(--d, 0ms); }
  .js .numbered.staged > li.in { opacity: 1; transform: none; }
  #index .entry:not([hidden]) { animation: appear .35s ease-out both; }
  .palette[open] { animation: lift .2s var(--ease); }
  .palette::backdrop { animation: appear .2s ease-out; }
}
@keyframes settle { from { opacity: 0; transform: translateY(12px); } }
@keyframes stroke { from { transform: scaleX(0); } }
@keyframes appear { from { opacity: 0; } }
@keyframes lift { from { opacity: 0; transform: translateY(8px); } }
