:root {
  color-scheme: light;
  --book-font-publication: Georgia, "Iowan Old Style", "Times New Roman", serif;
  --book-font-body: var(--book-font-publication);
  --book-font-heading: var(--book-font-publication);
  --book-font-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  --book-font-scale: 100%;
  --book-line-height: 1.6;
  --book-column-width: 48rem;
  --book-link-margin-width: 11rem;
  --book-link-margin-gap: 1.25rem;
  --book-readable-width: calc(var(--book-column-width) + var(--book-link-margin-gap) + var(--book-link-margin-width));
  --book-page-padding-inline: 3.5rem;
  --book-page-width: calc(var(--book-readable-width) + var(--book-page-padding-inline) + var(--book-page-padding-inline));
  --book-page-gap: clamp(1.5rem, 4vw, 3.5rem);
  --book-last-page-extra: 0px;
  --book-shell-padding: clamp(16px, 3vw, 40px);
  --layout-nav-width: 10rem;
  --layout-margin-width: 12rem;
  --layout-panel-width: min(22rem, calc(100vw - 2rem));
  --layout-panel-gap: clamp(0.75rem, 1.5vw, 1.5rem);
  --layout-panel-offset: max(
    var(--book-shell-padding),
    calc((100vw - var(--book-page-width)) / 2 - var(--layout-panel-gap) - var(--layout-panel-width))
  );
  --reader-label-height: 30px;
  --reader-control-height: 42px;
  --reader-row-height: 78px;
  --color-page: #f5f5f1;
  --color-panel: #ffffff;
  --color-ink: #1f2421;
  --color-muted: #646a61;
  --color-line: #dcded6;
  --color-soft: #eceee7;
  --color-accent: #a77d32;
  --color-blue-ink: #315d72;
  --color-rule: #7d2636;
  --color-rule-soft: #f7ecec;
  --color-exhibit: #1f6f62;
  --color-exhibit-soft: #e8f2ef;
  --color-code: #f0f1ed;
  --color-focus: #005fcc;
  --shadow-soft: 0 8px 24px rgb(31 36 33 / 0.06);
}

@view-transition {
  navigation: auto;
}

::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 180ms;
  animation-timing-function: ease;
}

[data-font="simple-sans"] {
  --book-font-body: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --book-font-heading: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

[data-font="simple-serif"] {
  --book-font-body: Georgia, "Times New Roman", serif;
  --book-font-heading: Georgia, "Times New Roman", serif;
}

[data-font="high-legibility"] {
  --book-font-body: Atkinson Hyperlegible, "Segoe UI", Verdana, sans-serif;
  --book-font-heading: Atkinson Hyperlegible, "Segoe UI", Verdana, sans-serif;
}

[data-theme="dark"] {
  color-scheme: dark;
  --color-page: #181916;
  --color-panel: #22241f;
  --color-ink: #f3f3ed;
  --color-muted: #b9bba9;
  --color-line: #4a4d42;
  --color-soft: #2c2e27;
  --color-accent: #d1b166;
  --color-blue-ink: #9bb7c6;
  --color-rule: #f0a3a6;
  --color-rule-soft: #321c21;
  --color-exhibit: #8fd6c6;
  --color-exhibit-soft: #17352f;
  --color-code: #10120f;
  --color-focus: #8fbdff;
}

[data-theme="contrast"] {
  color-scheme: light;
  --color-page: #ffffff;
  --color-panel: #ffffff;
  --color-ink: #000000;
  --color-muted: #202020;
  --color-line: #000000;
  --color-soft: #ffffff;
  --color-accent: #000000;
  --color-blue-ink: #000000;
  --color-rule: #8b0000;
  --color-rule-soft: #ffffff;
  --color-exhibit: #005a4a;
  --color-exhibit-soft: #ffffff;
  --color-code: #ffffff;
  --color-focus: #0000ff;
}

* {
  box-sizing: border-box;
}

html {
  background: var(--color-page);
  color: var(--color-ink);
  font-size: 100%;
  line-height: var(--book-line-height);
}

body {
  background: var(--color-page);
  margin: 0;
  font-family: var(--book-font-body);
}

a {
  color: var(--color-rule);
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.18em;
}

a:hover {
  text-decoration-thickness: 0.14em;
}

:focus-visible {
  outline: 3px solid var(--color-focus);
  outline-offset: 3px;
}

.skip-link {
  background: var(--color-panel);
  border: 2px solid var(--color-focus);
  color: var(--color-ink);
  left: 1rem;
  padding: 0.5rem 0.75rem;
  position: fixed;
  top: 1rem;
  transform: translateY(-150%);
  z-index: 10;
}

.skip-link:focus {
  transform: translateY(0);
}

.book-shell {
  display: grid;
  grid-template-columns: minmax(0, var(--book-page-width));
  justify-content: center;
  margin: 0 auto;
  min-height: 100vh;
  padding: var(--book-shell-padding);
  position: relative;
}

.chapter-map,
.reader-margin {
  display: grid;
  font-size: 1rem;
  gap: 12px;
  line-height: 1.35;
  max-height: calc(100vh - var(--book-shell-padding) - var(--book-shell-padding));
  overflow: visible;
  position: fixed;
  top: var(--book-shell-padding);
  z-index: 8;
}

.chapter-map {
  inline-size: var(--layout-nav-width);
  inset-inline-start: var(--layout-panel-offset);
}

.reader-margin {
  inline-size: var(--layout-margin-width);
  inset-inline-end: var(--layout-panel-offset);
}

.chapter-map-toggle,
.reader-toggle {
  align-items: center;
  background: color-mix(in srgb, var(--color-panel), transparent 18%);
  border: 1px solid transparent;
  border-radius: 8px;
  color: var(--color-ink);
  cursor: pointer;
  display: flex;
  font: inherit;
  font-weight: 700;
  gap: 0.75rem;
  inline-size: 100%;
  justify-content: space-between;
  min-block-size: 44px;
  padding: 10px 12px;
  text-align: left;
}

.chapter-map-toggle:hover,
.reader-toggle:hover {
  color: var(--color-rule);
}

.chapter-map-toggle:focus-visible,
.reader-toggle:focus-visible {
  outline: 3px solid var(--color-focus);
  outline-offset: 2px;
}

.reader-toggle-name {
  align-items: center;
  display: flex;
  gap: 0.55rem;
}

.reader-toggle-ornament {
  color: var(--color-blue-ink);
  flex: 0 0 auto;
  fill: none;
  block-size: 32px;
  inline-size: 44px;
  opacity: 0.9;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2;
}

.reader-toggle-ornament circle {
  fill: color-mix(in srgb, var(--color-accent), transparent 72%);
  stroke: currentColor;
}

[data-reader-tools="open"] .reader-toggle-ornament {
  color: var(--color-exhibit);
}

.chapter-map-toggle-state,
.reader-toggle-state {
  color: var(--color-muted);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.chapter-map-panel {
  display: block;
}

.chapter-map-panel[hidden] {
  display: none;
}

.chapter-map-panel,
.reader-tools {
  background: color-mix(in srgb, var(--color-panel), transparent 4%);
  border: 1px solid var(--color-line);
  border-radius: 8px;
  box-shadow: var(--shadow-soft);
  inline-size: var(--layout-panel-width);
  inset-block-start: calc(100% + 12px);
  inset-inline-start: 0;
  max-block-size: calc(100vh - 7rem);
  overflow: auto;
  padding: 1rem;
  position: absolute;
}

.reader-tools {
  inset-inline-start: auto;
  inset-inline-end: 0;
}

.reader-tools {
  display: block;
}

.reader-tools[hidden] {
  display: none;
}

.reader-panel-ornament {
  color: var(--color-blue-ink);
  display: block;
  fill: none;
  block-size: 88px;
  inline-size: 100%;
  margin: -2px 0 -4px;
  opacity: 0.82;
  pointer-events: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2.4;
}

.reader-panel-ornament .ornament-wire {
  stroke: currentColor;
}

.reader-panel-ornament .ornament-leaf,
.reader-panel-ornament .ornament-node {
  fill: color-mix(in srgb, var(--color-exhibit), transparent 78%);
  stroke: currentColor;
}

.reader-panel-ornament .ornament-chip {
  fill: color-mix(in srgb, var(--color-panel), transparent 16%);
  stroke: currentColor;
}

.reader-panel-ornament .ornament-chip-line,
.reader-panel-ornament .ornament-pin {
  stroke: var(--color-accent);
}

[data-theme="contrast"] .reader-toggle-ornament circle,
[data-theme="contrast"] .reader-panel-ornament .ornament-leaf,
[data-theme="contrast"] .reader-panel-ornament .ornament-node,
[data-theme="contrast"] .reader-panel-ornament .ornament-chip {
  fill: var(--color-page);
}

[data-theme="contrast"] .reader-panel-ornament .ornament-chip-line,
[data-theme="contrast"] .reader-panel-ornament .ornament-pin {
  stroke: currentColor;
}

.book-title {
  color: var(--color-ink);
  display: inline-block;
  font-family: var(--book-font-heading);
  font-size: 1.15rem;
  font-weight: 700;
  line-height: 1.2;
  margin-bottom: 1.5rem;
  text-decoration: none;
}

.book-title::before {
  background: var(--color-accent);
  border-radius: 999px;
  content: "";
  display: inline-block;
  height: 0.48em;
  margin-right: 0.45em;
  width: 0.48em;
}

.map-section {
  padding: 0.65rem 0;
}

.map-section h2,
.reader-panel h2 {
  color: var(--color-muted);
  font-family: var(--book-font-body);
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  margin: 0 0 0.65rem;
  text-transform: uppercase;
}

.reader-panel h2 {
  block-size: 22px;
  line-height: 22px;
  margin-block-end: 10px;
  overflow: hidden;
}

.map-section ol,
.index-toc ol {
  list-style: none;
  margin: 0;
  padding: 0;
}

.map-section li + li {
  margin-top: 0.45rem;
}

.map-section a,
.index-toc a {
  align-items: baseline;
  color: var(--color-ink);
  display: grid;
  gap: 0.55rem;
  grid-template-columns: 2.2rem 1fr;
  line-height: 1.25;
  text-decoration: none;
}

.map-section a:hover,
.index-toc a:hover,
.map-section a[aria-current="page"] {
  color: var(--color-rule);
}

.map-section a[aria-current="page"] span {
  color: var(--color-rule);
  font-weight: 700;
}

.map-section span,
.index-toc span {
  color: var(--color-muted);
  font-variant-numeric: tabular-nums;
}

.reader-panel {
  background: color-mix(in srgb, var(--color-panel), transparent 18%);
  border: 0;
  border-radius: 8px;
  box-shadow: none;
  inline-size: 100%;
  padding: 16px;
}

.reader-panel + .reader-panel {
  margin-top: 16px;
}

.reader-panel label {
  display: grid;
  gap: 6px;
  grid-template-rows: var(--reader-label-height) var(--reader-control-height);
  margin-top: 10px;
  min-block-size: var(--reader-row-height);
}

.reader-panel select,
.reader-panel input {
  accent-color: var(--color-rule);
  background: var(--color-panel);
  border: 1px solid var(--color-line);
  border-radius: 6px;
  color: var(--color-ink);
  font: inherit;
  block-size: var(--reader-control-height);
  inline-size: 100%;
  padding: 4px 8px;
}

.reader-panel input[type="range"] {
  padding-inline: 0;
}

.manuscript {
  justify-self: center;
  background: transparent;
  border: 0;
  box-shadow: none;
  font-size: var(--book-font-scale);
  min-width: 0;
  overflow: hidden;
  position: relative;
  width: min(100%, var(--book-readable-width));
  padding: clamp(1.25rem, 4vw, 4rem) 0 clamp(1.25rem, 4vw, 4rem);
}

[data-flow="paged"][data-page-kind="chapter"] body {
  overflow: hidden;
}

[data-flow="paged"][data-page-kind="chapter"] .book-shell {
  height: 100vh;
  overflow: hidden;
}

[data-flow="paged"][data-page-kind="chapter"] .manuscript {
  align-self: start;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  height: calc(100vh - clamp(32px, 6vw, 80px));
  max-height: calc(100vh - clamp(32px, 6vw, 80px));
  overflow: hidden;
  padding: clamp(1.25rem, 3vw, 3rem) var(--book-page-padding-inline) clamp(4.25rem, 7vw, 6rem);
  width: min(100%, var(--book-page-width));
}

[data-flow="paged"][data-page-kind="chapter"] .manuscript-pages {
  column-count: 1;
  column-fill: auto;
  column-gap: var(--book-page-gap);
  column-width: auto;
  height: calc(100% + var(--book-last-page-extra));
  overflow: hidden;
  transition: opacity 140ms ease;
}

[data-reader-boot="pending"] .manuscript-pages,
[data-initial-page-position="pending"] .manuscript-pages {
  opacity: 0;
  pointer-events: none;
}

.book-progress {
  background: color-mix(in srgb, var(--color-line), transparent 44%);
  block-size: 3px;
  display: none;
  inline-size: 100%;
  inset-block-start: 0;
  inset-inline: 0;
  overflow: hidden;
  position: absolute;
  z-index: 4;
}

.book-progress span {
  background: color-mix(in srgb, var(--color-rule), transparent 18%);
  block-size: 100%;
  display: block;
  inline-size: 100%;
  transform: scaleX(0);
  transform-origin: left center;
}

[data-flow="paged"][data-page-kind="chapter"] .book-progress {
  display: block;
  inline-size: min(calc(100vw - var(--book-shell-padding) - var(--book-shell-padding)), var(--book-page-width));
  inset-block-start: auto;
  inset-inline: auto;
  left: 0;
  position: fixed;
  top: 0;
}

[data-flow="paged"][data-page-kind="chapter"] h1,
[data-flow="paged"][data-page-kind="chapter"] h2,
[data-flow="paged"][data-page-kind="chapter"] h3,
[data-flow="paged"][data-page-kind="chapter"] h4,
[data-flow="paged"][data-page-kind="chapter"] h5,
[data-flow="paged"][data-page-kind="chapter"] h6 {
  break-after: avoid;
}

[data-flow="paged"][data-page-kind="chapter"] .wizard-rule,
[data-flow="paged"][data-page-kind="chapter"] .exhibit-placeholder,
[data-flow="paged"][data-page-kind="chapter"] figure,
[data-flow="paged"][data-page-kind="chapter"] .chapter-header,
[data-flow="paged"][data-page-kind="chapter"] .chapter-pagination {
  break-inside: avoid;
}

[data-flow="paged"][data-page-kind="chapter"] .code-figure-breakable {
  break-inside: auto;
}

[data-flow="paged"][data-page-kind="chapter"] .code-figure-start-next-page {
  break-before: column;
  page-break-before: always;
  -webkit-column-break-before: always;
}

[data-flow="paged"][data-page-kind="chapter"] .code-figure-breakable figcaption {
  break-after: avoid;
}

[data-flow="paged"][data-page-kind="chapter"] .code-figure-breakable pre {
  break-inside: auto;
  orphans: 3;
  overflow-x: visible;
  white-space: pre-wrap;
  widows: 3;
}

.chapter-header {
  align-items: start;
  border-bottom: 0;
  display: grid;
  gap: 0.35rem 1.25rem;
  grid-template-columns: minmax(0, 1fr) auto;
  margin-bottom: 2rem;
  padding-bottom: 0.25rem;
}

.manuscript-pages > :where(h1, h2, h3, h4, h5, h6, p, ul, ol, blockquote, figure, .wizard-rule, .exhibit-placeholder) {
  max-inline-size: var(--book-column-width);
}

.chapter-header > :not(.chapter-glyph) {
  grid-column: 1;
}

.chapter-kicker,
.chapter-number,
.exhibit-kicker,
.rule-label,
figcaption {
  color: var(--color-muted);
  font-family: var(--book-font-body);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  margin: 0;
  text-transform: uppercase;
}

.chapter-number {
  margin-top: 0.35rem;
}

.chapter-glyph {
  color: var(--color-blue-ink);
  grid-column: 2;
  grid-row: 1 / span 2;
  height: clamp(4rem, 12vw, 6.5rem);
  opacity: 0.88;
  overflow: visible;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 3;
  width: clamp(4rem, 12vw, 6.5rem);
}

.chapter-glyph circle {
  fill: color-mix(in srgb, var(--color-accent), transparent 75%);
  stroke: currentColor;
}

.manuscript-index .chapter-glyph {
  grid-row: 1 / span 3;
}

.lede {
  color: var(--color-muted);
  font-size: 1.25rem;
  max-width: 36rem;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: var(--book-font-heading);
  letter-spacing: 0;
  line-height: 1.15;
  margin: 2rem 0 0.8rem;
  text-wrap: balance;
}

h1 {
  color: var(--color-ink);
  font-size: 1.5em;
  margin-top: 0;
}

h2 {
  font-size: 1.25em;
}

h3 {
  font-size: 1.15em;
}

h4,
h5,
h6 {
  font-size: 1.05em;
}

.manuscript-index h1 {
  font-size: clamp(2.2rem, 8vw, 4.5rem);
}

.manuscript-index h2 {
  font-size: clamp(1.45rem, 3vw, 2rem);
}

.manuscript-index h3 {
  font-size: 1.25rem;
}

p,
li {
  overflow-wrap: anywhere;
}

.manuscript-pages p,
.manuscript-pages li {
  hyphens: auto;
  overflow-wrap: normal;
  text-align: justify;
}

.manuscript-pages p {
  position: relative;
}

.passage-margin {
  clear: right;
  clear: inline-end;
  float: right;
  float: inline-end;
  inline-size: var(--book-link-margin-width);
  margin-block-start: calc(0.25lh - var(--wizard-portrait-lift, 0px));
  margin-inline-end: calc((var(--book-link-margin-width) + var(--book-link-margin-gap)) * -1);
  margin-inline-start: var(--book-link-margin-gap);
  min-block-size: 0;
  position: relative;
  text-align: start;
}

.passage-margin-notes {
  display: block;
  min-block-size: 2.25rem;
  position: relative;
}

.side-links {
  display: grid;
  font-size: 0.78rem;
  gap: 0.35rem;
  line-height: 1.25;
  text-align: start;
}

.side-links-margin {
  inline-size: 100%;
}

.side-links-margin-overlap {
  display: none;
}

.side-links-inline {
  display: none;
  margin-block-start: 0.35rem;
}

.side-links-margin-overlap ~ .side-links-inline {
  display: grid;
}

p:has(> .passage-margin .side-links-margin-overlap) > .side-links-inline {
  display: grid;
}

.side-links a {
  color: var(--color-rule);
  display: block;
  overflow: hidden;
  text-decoration: none;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.side-links-margin .wizard-card {
  display: grid;
  gap: 0.35rem;
  inline-size: 100%;
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
}

.wizard-card-image {
  aspect-ratio: 4 / 5;
  background: var(--color-panel);
  border: 1px solid var(--color-line);
  border-radius: 6px;
  display: grid;
  overflow: hidden;
  place-items: center;
}

.wizard-card-image img {
  block-size: 100%;
  filter: grayscale(1) contrast(1.05);
  inline-size: 100%;
  object-fit: cover;
  object-position: var(--wizard-portrait-position, 50% 50%);
}

.wizard-card-name {
  color: var(--color-rule);
  font-size: 0.78rem;
  line-height: 1.2;
}

.wizard-card-note {
  color: var(--color-muted);
  font-size: 0.7rem;
  line-height: 1.2;
}

.wizard-card:hover .wizard-card-name {
  text-decoration: underline;
  text-decoration-thickness: 0.1em;
  text-underline-offset: 0.16em;
}

[data-flow="scroll"] .side-links-margin {
  display: none;
}

[data-flow="scroll"] .passage-margin {
  clear: none;
  float: none;
  inline-size: min(100%, 28rem);
  margin-block: 0.5lh;
  margin-inline: 0;
}

[data-flow="scroll"] .side-links-inline {
  display: grid;
}

p {
  margin-block: 0.5lh;
  orphans: 3;
  widows: 3;
}

.manuscript:not(.manuscript-index) > h1 + p::first-letter,
.manuscript-pages > h1 + p::first-letter {
  color: var(--color-rule);
  float: left;
  font-family: var(--book-font-heading);
  font-size: 4.35rem;
  font-weight: 700;
  line-height: 0.82;
  margin: 0.2rem 0.65rem 0.1rem 0;
  padding: 0.06rem 0.12rem 0 0;
}

.anchor-link {
  color: var(--color-muted);
  float: left;
  font-size: 0.85rem;
  margin-left: -1.25rem;
  opacity: 0;
  text-decoration: none;
}

h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link,
.anchor-link:focus {
  opacity: 1;
}

blockquote {
  color: var(--color-muted);
  margin: 1.5rem 0;
  padding-left: 1.25rem;
}

.wizard-rule,
.exhibit-placeholder {
  border: 0;
  border-radius: 8px;
  margin: 2rem 0;
  padding: 1.15rem;
  position: relative;
}

.wizard-rule {
  background: var(--color-rule-soft);
}

.wizard-rule p:last-child,
.exhibit-placeholder p:last-child {
  margin-bottom: 0;
}

.rule-label {
  color: var(--color-rule);
}

.exhibit-placeholder {
  background: var(--color-exhibit-soft);
}

.exhibit-placeholder h2 {
  border: 0;
  font-size: 1.25em;
  margin: 0.35rem 0 0.75rem;
  padding-top: 0;
}

.exhibit-kicker {
  color: var(--color-exhibit);
}

.static-fallback {
  margin-top: 1rem;
}

.static-fallback p {
  color: var(--color-muted);
  font-size: 0.95rem;
}

figure {
  margin: 1.5rem 0;
}

.manuscript-pages figure:has(img) {
  margin-block: 1lh;
  text-align: center;
}

.manuscript-pages > img,
.manuscript-pages :where(p, figure).image-block {
  margin-block: 1lh;
  text-align: center;
}

.code-figure {
  background: var(--color-code);
  border: 1px solid var(--color-line);
  border-radius: 8px;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
  overflow: visible;
  padding: 0.85rem;
}

.math-block {
  background: transparent;
  border: 0;
  margin-block: 1lh;
  overflow: visible;
  padding: 0;
  position: relative;
  text-align: center;
}

.math-display {
  min-width: 0;
}

.math-block mjx-container[display="true"] {
  margin: 0.3rem 0;
}

pre,
code {
  font-family: var(--book-font-mono);
}

pre {
  font-size: 0.9rem;
  line-height: 1.5;
  margin: 0.55rem 0 0;
  overflow-x: auto;
}

:not(pre) > code {
  background: var(--color-code);
  border: 1px solid var(--color-line);
  border-radius: 5px;
  padding: 0.08rem 0.25rem;
}

img {
  height: auto;
  max-width: 100%;
}

.manuscript-pages p:not(.image-block) > img {
  background: #ffffff;
  border: 1px solid var(--color-line);
  border-radius: 4px;
  padding: 0.05em 0.16em;
  vertical-align: -0.18em;
}

.manuscript-pages figure:has(img) > img,
.manuscript-pages :where(p, figure).image-block > img {
  display: block;
  margin: 0 auto;
  max-block-size: 8lh;
  object-fit: contain;
  width: auto;
}

table {
  border-collapse: collapse;
  font-size: 0.95rem;
  width: 100%;
}

th,
td {
  border: 1px solid var(--color-line);
  padding: 0.45rem 0.55rem;
  text-align: left;
  vertical-align: top;
}

th {
  background: color-mix(in srgb, var(--color-accent), var(--color-code) 88%);
}

.table-figure {
  overflow-x: auto;
}



.screen-reader-only {
  block-size: 1px;
  border: 0;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  inline-size: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  white-space: nowrap;
}

.book-cover {
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--color-panel), white 6%), color-mix(in srgb, var(--color-panel), var(--color-page) 18%)),
    color-mix(in srgb, var(--color-panel), transparent 8%);
  border: 1px solid var(--color-line);
  border-radius: 20px;
  box-shadow: var(--shadow-soft);
  display: grid;
  gap: clamp(1.4rem, 4vw, 2.6rem);
  isolation: isolate;
  min-block-size: min(65rem, calc(100vh - var(--book-shell-padding) - var(--book-shell-padding)));
  overflow: hidden;
  padding: clamp(1.25rem, 4vw, 3rem);
  position: relative;
}

.cover-border {
  color: var(--color-accent);
  inset: 0;
  opacity: 0.7;
  pointer-events: none;
  position: absolute;
  z-index: -1;
}

.cover-ornament {
  block-size: 100%;
  display: block;
  fill: none;
  inline-size: 100%;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.cover-ornament-frame,
.cover-ornament-inner {
  stroke-width: 1.6;
}

.cover-ornament-inner {
  opacity: 0.44;
}

.cover-ornament-corner,
.cover-ornament-rule {
  opacity: 0.62;
  stroke-width: 2;
}

.cover-ornament-seal {
  fill: color-mix(in srgb, var(--color-rule), transparent 8%);
  stroke: none;
}

.cover-art {
  align-self: end;
  background: color-mix(in srgb, var(--color-panel), white 20%);
  border: 1px solid color-mix(in srgb, var(--color-line), var(--color-ink) 10%);
  box-shadow: 0 1rem 2.2rem color-mix(in srgb, var(--color-ink), transparent 88%);
  inline-size: min(100%, 44rem);
  justify-self: center;
  margin: 0;
  padding: clamp(0.45rem, 1.4vw, 0.75rem);
}

.cover-art img {
  aspect-ratio: 1280 / 1072;
  display: block;
  filter: sepia(0.14) contrast(1.03);
  inline-size: 100%;
  object-fit: contain;
}

.cover-art figcaption {
  color: var(--color-muted);
  font-size: 0.72rem;
  line-height: 1.35;
  margin-block-start: 0.45rem;
  text-align: center;
}

.cover-art figcaption a {
  color: inherit;
}

.cover-copy {
  display: grid;
  gap: clamp(0.65rem, 2vw, 1rem);
  justify-items: center;
  margin: 0 auto;
  max-inline-size: 44rem;
  text-align: center;
}

.cover-copy h1 {
  display: grid;
  font-size: clamp(3.3rem, 10vw, 7rem);
  letter-spacing: 0.045em;
  line-height: 0.92;
  margin: 0;
  text-transform: uppercase;
}

.cover-title-line {
  display: block;
}

.cover-title-small {
  color: var(--color-muted);
  display: block;
  font-family: var(--book-font-heading);
  font-size: 0.28em;
  font-style: italic;
  font-weight: 400;
  letter-spacing: 0.02em;
  line-height: 1.4;
  text-transform: none;
}

.cover-kicker,
.cover-author {
  color: var(--color-muted);
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.11em;
  margin: 0;
  text-transform: uppercase;
}

.cover-kicker {
  border-block: 1px solid color-mix(in srgb, var(--color-line), transparent 24%);
  padding-block: 0.7rem;
}

.cover-author {
  color: var(--color-rule);
  margin-block-start: 0.35rem;
}

.cover-icons {
  align-items: center;
  color: color-mix(in srgb, var(--color-rule), var(--color-ink) 8%);
  display: flex;
  gap: clamp(0.55rem, 2vw, 1.2rem);
  justify-content: center;
  margin-block: 0.3rem;
}

.cover-icons::before,
.cover-icons::after {
  background: currentColor;
  content: "";
  display: block;
  block-size: 1px;
  inline-size: clamp(2rem, 8vw, 6rem);
  opacity: 0.55;
}

.cover-icons svg {
  block-size: clamp(1.6rem, 4vw, 2.1rem);
  fill: none;
  inline-size: clamp(1.6rem, 4vw, 2.1rem);
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2;
}

.cover-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  justify-content: center;
  margin-block-start: 0.25rem;
}

.cover-actions a,
.cover-actions button {
  background: color-mix(in srgb, var(--color-rule), transparent 10%);
  border: 1px solid color-mix(in srgb, var(--color-rule), transparent 20%);
  border-radius: 999px;
  color: var(--color-panel);
  cursor: pointer;
  font: inherit;
  font-weight: 700;
  padding: 0.7rem 1rem;
  text-decoration: none;
}

.cover-actions [hidden] {
  display: none;
}

.cover-actions :is(a, button) + :is(a, button) {
  background: transparent;
  color: var(--color-rule);
}

.cover-note {
  border-block-start: 1px solid var(--color-line);
  color: var(--color-muted);
  justify-self: center;
  max-inline-size: 44rem;
  padding-block-start: 1.25rem;
  text-align: center;
}

.cover-note p {
  font-size: 1.04rem;
  line-height: 1.55;
  margin-inline: auto;
  max-inline-size: 36rem;
  text-wrap: pretty;
}

.cover-note .anchor-link {
  display: none;
}

.chapter-header-back-matter .chapter-glyph {
  color: var(--color-accent);
}


.book-cover-fixed {
  align-content: start;
  justify-items: center;
  min-block-size: auto;
}

.cover-full-art {
  inline-size: min(100%, 42rem);
  margin: 0 auto;
}

.cover-full-art img {
  background: color-mix(in srgb, var(--color-panel), white 10%);
  border-radius: 0.7rem;
  box-shadow: 0 1.4rem 3rem color-mix(in srgb, var(--color-ink), transparent 84%);
  display: block;
  block-size: auto;
  inline-size: 100%;
}

.cover-full-art figcaption {
  color: var(--color-muted);
  font-size: 0.78rem;
  line-height: 1.4;
  margin-block-start: 0.75rem;
  text-align: center;
}

.cover-full-art figcaption a {
  color: inherit;
}

.book-cover-fixed .cover-actions {
  margin-block-start: 0.3rem;
}

.book-cover-fixed .cover-note {
  max-inline-size: 42rem;
}

.index-toc {
  margin-top: clamp(2rem, 6vw, 4rem);
}

.index-toc section {
  padding: 0.75rem 0;
}

.index-toc h3 {
  color: var(--color-muted);
  font-size: 0.85rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.index-toc li + li {
  margin-top: 0.55rem;
}

.chapter-pagination {
  display: grid;
  gap: 1rem;
  grid-template-columns: 1fr 1fr;
  margin-top: 3rem;
  padding-top: 0;
}

[data-reader-runtime="active"][data-flow="paged"][data-page-kind="chapter"] .chapter-pagination {
  display: none;
}

.chapter-pagination a {
  background: color-mix(in srgb, var(--color-panel), transparent 16%);
  border: 0;
  border-radius: 8px;
  color: var(--color-ink);
  display: grid;
  padding: 0.85rem;
  text-decoration: none;
}

.chapter-pagination a[rel="next"] {
  text-align: right;
}

.chapter-pagination span {
  color: var(--color-muted);
  font-size: 0.8rem;
  text-transform: uppercase;
}

.page-turner {
  inset: 0;
  pointer-events: none;
  position: fixed;
  z-index: 3;
}

.page-turner[hidden] {
  display: none;
}

.page-turner button {
  align-items: center;
  background: transparent;
  border: 0;
  border-radius: 999px;
  color: color-mix(in srgb, var(--color-muted), var(--color-page) 24%);
  cursor: pointer;
  display: flex;
  font: inherit;
  font-size: var(--book-font-scale);
  inline-size: 2.5lh;
  justify-content: center;
  min-block-size: 3lh;
  padding: 0;
  pointer-events: auto;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

.page-turner button::before {
  font-size: 2.6em;
  font-weight: 400;
  line-height: 1;
}

.page-turner button:hover,
.page-turner button:focus-visible {
  color: color-mix(in srgb, var(--color-muted), var(--color-ink) 22%);
}

.page-turner [data-page-prev] {
  left: max(0.25rem, calc((100vw - var(--book-page-width)) / 2 - 2.75lh));
}

.page-turner [data-page-prev]::before {
  content: "\2039";
}

.page-turner [data-page-next] {
  right: max(0.25rem, calc((100vw - var(--book-page-width)) / 2 - 2.75lh));
}

.page-turner [data-page-next]::before {
  content: "\203A";
}

.page-turner button:disabled {
  color: var(--color-muted);
  cursor: default;
  opacity: 0.25;
}

.margin-anchor {
  color: var(--color-muted);
  font-family: var(--book-font-mono);
  font-size: 0.75rem;
  left: var(--margin-anchor-left, -100vw);
  line-height: 1;
  margin-left: 0;
  opacity: 0;
  position: fixed;
  text-decoration: none;
  top: var(--margin-anchor-top, -100vh);
  z-index: 2;
}

[data-note-target]:hover > .margin-anchor,
.margin-anchor:hover,
.margin-anchor:focus {
  opacity: 1;
}

[data-note-target] {
  position: relative;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after,
  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation-duration: 0.001ms !important;
    scroll-behavior: auto !important;
    transition-duration: 0.001ms !important;
  }
}

[data-motion="reduced"] *,
[data-motion="reduced"] *::before,
[data-motion="reduced"] *::after,
[data-motion="reduced"]::view-transition-old(root),
[data-motion="reduced"]::view-transition-new(root) {
  animation-duration: 0.001ms !important;
  scroll-behavior: auto !important;
  transition-duration: 0.001ms !important;
}

@media (max-width: 40rem) {
  :root {
    --book-page-padding-inline: clamp(1rem, 5vw, 2rem);
  }

  html,
  body {
    max-inline-size: 100%;
    overflow-x: hidden;
  }

  .book-shell {
    grid-template-columns: minmax(0, 1fr);
    inline-size: 100vw;
    justify-content: stretch;
    max-inline-size: 100vw;
    overflow-x: hidden;
  }

  [data-flow="paged"][data-page-kind="chapter"] body {
    overflow: auto;
  }

  [data-flow="paged"][data-page-kind="chapter"] .book-shell {
    height: auto;
    overflow: visible;
  }

  .chapter-map,
  .reader-margin {
    inline-size: calc(100vw - var(--book-shell-padding) - var(--book-shell-padding));
    justify-self: stretch;
    max-inline-size: 100%;
    max-height: none;
    overflow: visible;
    position: static;
  }

  .chapter-map {
    background: var(--color-panel);
    border: 1px solid var(--color-line);
    border-radius: 8px;
    padding: 1rem;
  }

  .chapter-map-panel,
  .reader-tools {
    background: transparent;
    border: 0;
    box-shadow: none;
    inline-size: auto;
    max-block-size: none;
    overflow: visible;
    padding: 0;
    position: static;
  }

  .manuscript {
    inline-size: calc(100vw - var(--book-shell-padding) - var(--book-shell-padding));
    max-inline-size: 100%;
    min-inline-size: 0;
    overflow: visible;
    width: 100%;
    padding: clamp(1rem, 5vw, 2rem);
  }

  [data-flow="paged"][data-page-kind="chapter"] .manuscript {
    height: auto;
    max-height: none;
    overflow: visible;
    padding: clamp(1rem, 5vw, 2rem) clamp(1rem, 5vw, 2rem) 5rem;
  }

  [data-flow="paged"][data-page-kind="chapter"] .manuscript-pages {
    column-count: auto;
    column-gap: normal;
    height: auto;
    overflow: visible;
  }

  .manuscript-pages {
    inline-size: 100%;
    max-inline-size: 100%;
    min-inline-size: 0;
  }

  .manuscript-pages > :where(h1, h2, h3, h4, h5, h6, p, ul, ol, blockquote, figure, .wizard-rule, .exhibit-placeholder) {
    inline-size: 100%;
    max-inline-size: 100%;
    min-inline-size: 0;
  }

  .anchor-link {
    float: none;
    margin-left: 0;
    margin-right: 0.35rem;
    opacity: 1;
  }

  .passage-margin {
    clear: none;
    float: none;
    inline-size: min(100%, 28rem);
    margin-block: 0.5lh;
    margin-inline: 0;
  }

  .side-links-margin {
    display: none;
  }

  .side-links-inline {
    display: grid;
  }
}

@media (max-width: 36rem) {
  .book-shell {
    padding: 0.75rem;
  }

  .chapter-pagination {
    grid-template-columns: 1fr;
  }

  h1 {
    font-size: 2.25rem;
  }
}


@media (max-width: 40rem) {
  .book-cover {
    min-block-size: auto;
    padding: clamp(2rem, 12vw, 3rem) clamp(1rem, 7vw, 1.5rem);
  }

  .cover-copy h1 {
    font-size: clamp(2.7rem, 17vw, 4.1rem);
  }

  .cover-actions {
    align-items: stretch;
    flex-direction: column;
    inline-size: min(100%, 18rem);
  }

  .cover-full-art {
    inline-size: min(100%, 28rem);
  }

  .cover-actions a,
  .cover-actions button {
    text-align: center;
  }
}

/* Untitled dialogue interludes between book parts. */
.manuscript-interlude {
  --interlude-bg: #f6e6cb;
  --interlude-border: color-mix(in srgb, var(--color-accent), transparent 35%);
  --interlude-ink: #241f1a;
  --interlude-muted: #6d6050;
  --interlude-accent: color-mix(in srgb, var(--color-rule), var(--color-ink) 18%);
  --interlude-soft: color-mix(in srgb, var(--color-accent), transparent 70%);
  --interlude-card-gap: clamp(0.9rem, 2.4vw, 1.7rem);
  --interlude-page-padding-block-total: clamp(4rem, 10vw, 9rem);
}

.manuscript-interlude.interlude-theme-saffron {
  --interlude-bg: #f6e6cb;
  --interlude-accent: #8c4b29;
}

.manuscript-interlude.interlude-theme-sage {
  --interlude-bg: #d3cfb7;
  --interlude-accent: #496f55;
}

.manuscript-interlude.interlude-theme-sky {
  --interlude-bg: #d7dbdb;
  --interlude-accent: #315d72;
}

.manuscript-interlude.interlude-theme-rose {
  --interlude-bg: #eccfbe;
  --interlude-accent: #7d2636;
}

.manuscript-interlude.interlude-theme-parchment {
  --interlude-bg: #f5e4c7;
  --interlude-accent: #79603c;
}

.manuscript-interlude.interlude-theme-violet {
  --interlude-bg: #d7ccd2;
  --interlude-accent: #5e4f7a;
}

[data-theme="contrast"] .manuscript-interlude {
  --interlude-bg: #ffffff;
  --interlude-border: #000000;
  --interlude-ink: #000000;
  --interlude-muted: #000000;
  --interlude-accent: #000000;
  --interlude-soft: #ffffff;
}

.interlude-pages {
  background: var(--interlude-bg);
  border: 1px solid var(--interlude-border);
  border-radius: 18px;
  box-shadow: var(--shadow-soft);
  color: var(--interlude-ink);
  min-block-size: min(42rem, 100%);
  padding: clamp(2rem, 5vw, 4.5rem);
  position: relative;
}

[data-flow="paged"][data-page-kind="chapter"] .manuscript-interlude .interlude-pages {
  align-content: stretch;
  column-count: auto;
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  justify-items: center;
  overflow: hidden;
}

[data-flow="paged"][data-page-kind="chapter"] .manuscript-interlude .interlude-card {
  align-items: stretch;
  block-size: 100%;
  grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
  max-block-size: 100%;
  min-block-size: 0;
}

[data-flow="paged"][data-page-kind="chapter"] .manuscript-interlude .interlude-illustration {
  align-items: center;
  block-size: 100%;
  inline-size: 100%;
  max-block-size: 100%;
  overflow: hidden;
}

[data-flow="paged"][data-page-kind="chapter"] .manuscript-interlude .interlude-illustration > img {
  block-size: auto;
  inline-size: auto;
  max-block-size: calc((100vh - clamp(32px, 6vw, 80px) - var(--interlude-page-padding-block-total) - var(--interlude-card-gap)) / 2);
  max-inline-size: 100%;
  object-fit: contain;
}

[data-flow="paged"][data-page-kind="chapter"] .manuscript-interlude .interlude-dialogue {
  align-content: center;
  block-size: 100%;
  max-block-size: 100%;
}

.interlude-card {
  align-items: center;
  display: grid;
  gap: var(--interlude-card-gap);
  justify-items: center;
  max-inline-size: min(100%, 42rem);
}

.interlude-illustration {
  display: grid;
  inline-size: min(100%, clamp(16rem, 30vh, 29rem));
  justify-items: center;
  margin: 0;
  max-inline-size: min(100%, 34rem);
}

.manuscript-pages .interlude-illustration > img {
  block-size: auto;
  display: block;
  filter: contrast(1.02);
  inline-size: 100%;
  max-block-size: none;
  mix-blend-mode: normal;
}

[data-theme="contrast"] .manuscript-pages .interlude-illustration > img {
  filter: grayscale(1) contrast(1.2);
  mix-blend-mode: normal;
}

.interlude-theme-saffron .manuscript-pages .interlude-illustration > img,
.interlude-theme-sky .manuscript-pages .interlude-illustration > img,
.interlude-theme-parchment .manuscript-pages .interlude-illustration > img {
  clip-path: inset(0 1% 0 0);
}

.interlude-dialogue {
  display: grid;
  gap: 0.2rem;
  inline-size: min(100%, 36rem);
  justify-self: center;
}

.manuscript-interlude .interlude-dialogue p {
  color: var(--interlude-ink);
  font-size: clamp(1.08rem, 2vw, 1.34rem);
  line-height: 1.45;
  margin: 0;
  overflow-wrap: normal;
  text-align: start;
  text-wrap: pretty;
}

.manuscript-interlude .interlude-dialogue strong {
  color: var(--interlude-accent);
  font-variant-caps: small-caps;
  letter-spacing: 0.03em;
}

.manuscript-interlude .chapter-pagination {
  align-self: end;
  inline-size: min(100%, var(--book-column-width));
  justify-self: center;
  margin-block-start: clamp(1.5rem, 4vw, 3rem);
}

[data-reader-runtime="active"][data-flow="paged"][data-page-kind="chapter"] .manuscript-interlude .chapter-pagination {
  display: none;
}

[data-flow="scroll"] .manuscript-interlude .interlude-pages {
  display: grid;
  justify-items: center;
}

@media (max-width: 40rem) {
  .interlude-pages {
    border-radius: 14px;
    min-block-size: 30rem;
    padding: clamp(1.5rem, 8vw, 2.5rem) clamp(1rem, 7vw, 1.5rem);
  }

  .manuscript-pages .interlude-illustration > img {
    inline-size: 100%;
  }
}
