/* ---- reader.css ---- */
/* Apocalypse Press — Vellum EPUB reader */
:root {
  --bg: #f7f3eb;
  --paper: #fffcf7;
  --ink: #1c1917;
  --muted: #57534e;
  --rule: rgba(28, 25, 23, 0.12);
  --accent: #9a3412;
  --accent-soft: rgba(154, 52, 18, 0.08);
  --sidebar-w: 18rem;
  --measure: 38rem;
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;
  --sans: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
@media (prefers-color-scheme: dark) {
  :root {
    --bg: #1c1917;
    --paper: #292524;
    --ink: #f5f5f4;
    --muted: #a8a29e;
    --rule: rgba(245, 245, 244, 0.12);
    --accent: #fdba74;
    --accent-soft: rgba(253, 186, 116, 0.12);
  }
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.125rem;
  line-height: 1.7;
  color: var(--ink);
  background: var(--bg);
}
a { color: var(--accent); }
a:hover { text-decoration-thickness: 2px; }

.skip {
  position: absolute; left: -999px; top: 0; z-index: 100;
  background: var(--paper); color: var(--ink); padding: .5rem 1rem;
}
.skip:focus { left: 0; }

.app { display: flex; min-height: 100vh; }

.toc {
  position: sticky; top: 0; align-self: flex-start;
  width: var(--sidebar-w); max-height: 100vh; overflow: auto;
  padding: 1.5rem 1.25rem 2rem;
  background: var(--paper);
  border-right: 1px solid var(--rule);
}
.toc .brand {
  display: inline-block;
  font-family: var(--sans); font-size: .75rem; font-weight: 600;
  letter-spacing: .06em; text-transform: uppercase; color: var(--muted);
  margin: 0 0 .75rem; text-decoration: none;
}
.toc .book-title {
  font-family: var(--sans); font-size: 1.05rem; font-weight: 650;
  line-height: 1.3; margin: 0 0 .25rem; color: var(--ink);
}
.toc .book-author {
  font-family: var(--sans); font-size: .875rem; color: var(--muted);
  margin: 0 0 1.25rem;
}
.toc nav ol {
  list-style: none; margin: 0; padding: 0;
  font-family: var(--sans); font-size: .82rem; line-height: 1.35;
}
.toc nav li { margin: 0; }
.toc nav a {
  display: block; padding: .45rem .6rem; margin: 0 -.6rem;
  border-radius: .5rem; color: var(--ink); text-decoration: none;
}
.toc nav a:hover,
.toc nav a[aria-current="true"] {
  background: var(--accent-soft); color: var(--accent);
}

.toc-toggle {
  display: none; font-family: var(--sans);
  position: fixed; top: .75rem; right: .75rem; z-index: 40;
  border: 1px solid var(--rule); background: var(--paper); color: var(--ink);
  border-radius: 999px; padding: .45rem .9rem; font-size: .85rem;
  box-shadow: 0 4px 16px rgba(0,0,0,.08); cursor: pointer;
}

.main {
  flex: 1; min-width: 0;
  padding: 2.5rem 1.5rem 4rem;
}
.article {
  max-width: var(--measure);
  margin: 0 auto;
  background: var(--paper);
  padding: 2.5rem 2.25rem 3rem;
  border-radius: 1rem;
  border: 1px solid var(--rule);
  box-shadow: 0 10px 40px rgba(28, 25, 23, 0.06);
}
.article header.book-open {
  text-align: center; margin-bottom: 2.5rem; padding-bottom: 1.75rem;
  border-bottom: 1px solid var(--rule);
}
.article header.book-open h1 {
  font-size: clamp(1.75rem, 4vw, 2.35rem);
  font-weight: 600; line-height: 1.2; margin: 0 0 .5rem;
}
.article header.book-open h1 a,
.article header.book-open h1 a:visited {
  color: inherit;
  text-decoration: none;
}
.article header.book-open h1 a:hover,
.article header.book-open h1 a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.12em;
}
.article header.book-open h1 a:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}
.article header.book-open .by {
  font-family: var(--sans); color: var(--muted); margin: 0;
}

section.chapter {
  padding: 2rem 0 2.5rem;
  border-bottom: 1px solid var(--rule);
}
section.chapter:last-of-type { border-bottom: 0; }
section.chapter > h1,
section.chapter > h2 {
  font-size: 1.55rem; font-weight: 600; line-height: 1.25;
  margin: 0 0 1.25rem; color: var(--ink);
  scroll-margin-top: 1.25rem;
}
.article p {
  margin: 0 0 1em;
  hyphens: auto; -webkit-hyphens: auto;
  text-wrap: pretty;
}
.article p.first, .article h1 + p, .article h2 + p { text-indent: 0; }
.article blockquote {
  margin: 1.25em 0; padding: .25em 0 .25em 1.1em;
  border-left: 3px solid var(--accent);
  color: var(--muted); font-style: italic;
}
.article img {
  max-width: 100%; height: auto; display: block; margin: 1.5rem auto;
  border-radius: .5rem;
}
.footer-note {
  margin-top: 2.5rem; padding-top: 1.25rem; border-top: 1px solid var(--rule);
  font-family: var(--sans); font-size: .8rem; color: var(--muted); text-align: center;
}

@media (max-width: 900px) {
  .toc-toggle { display: inline-flex; align-items: center; gap: .35rem; }
  .toc {
    position: fixed; inset: 0 auto 0 0; z-index: 30;
    transform: translateX(-105%);
    transition: transform .2s ease;
    box-shadow: 8px 0 30px rgba(0,0,0,.15);
  }
  body.toc-open .toc { transform: translateX(0); }
  body.toc-open::after {
    content: ""; position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 25;
  }
  .main { padding: 4rem 1rem 3rem; }
  .article { padding: 1.75rem 1.25rem 2.25rem; border-radius: .75rem; }
}
@media print {
  .toc, .toc-toggle, .skip { display: none !important; }
  body { background: #fff; }
  .main { padding: 0; }
  .article { box-shadow: none; border: 0; max-width: none; }
  section.chapter { break-before: page; border: 0; }
}



/* Generated scripture TOC + index */
.toc-subhead {
  font-family: var(--sans); font-size: .7rem; font-weight: 650;
  letter-spacing: .08em; text-transform: uppercase; color: var(--muted);
  margin: 1.5rem 0 .6rem; padding-top: 1rem; border-top: 1px solid var(--rule);
}
.toc-by-text { margin-top: .5rem; }
.toc-by-text .toc-group-label {
  display: block; font-family: var(--sans); font-size: .72rem; font-weight: 650;
  color: var(--accent); margin: .45rem 0 .15rem;
}
.toc-by-text ol { list-style: none; margin: 0; padding: 0; }
.toc-by-text ol ol { margin: .1rem 0 .45rem .1rem; }
.toc-by-text .toc-ref {
  display: block; font-size: .72rem; color: var(--accent); font-weight: 600;
}
.toc-by-text .toc-sermon { display: block; font-size: .78rem; color: var(--ink); }
.toc-by-text a { display: block; padding: .35rem .5rem; border-radius: 8px; text-decoration: none; }
.toc-by-text a:hover { background: color-mix(in oklab, var(--accent) 12%, transparent); }
.text-toc-list, .scripture-index-list {
  list-style: none; padding: 0; margin: 0 0 1.5rem;
  font-family: var(--sans); font-size: .95rem; line-height: 1.45;
}
.text-toc-list li, .scripture-index-list li {
  padding: .4rem 0; border-bottom: 1px solid var(--rule);
}
.index-ref { font-weight: 650; color: var(--accent); }
section.generated h3 {
  font-family: var(--sans); font-size: 1.05rem; margin: 1.75rem 0 .75rem;
  color: var(--accent); scroll-margin-top: 1.25rem;
}


/* Book cover on title page */
.book-cover-block {
  display: flex;
  justify-content: center;
  margin: 0 auto 1.75rem;
  max-width: min(22rem, 92%);
}
.book-cover-block .book-cover {
  width: 100%;
  height: auto;
  border-radius: 6px;
  box-shadow:
    0 1px 2px rgba(40, 24, 12, .12),
    0 12px 28px rgba(40, 24, 12, .22);
}
@media (max-width: 640px) {
  .book-cover-block { max-width: min(16rem, 88%); margin-bottom: 1.25rem; }
}
@media print {
  .book-cover-block { max-width: 10rem; box-shadow: none; }
}


/* Archive.org PDF link on title page */
.archive-pdf-link {
  text-align: center;
  margin: 0.25rem auto 1.5rem;
  font-family: var(--sans);
  font-size: 0.95rem;
}
.archive-pdf-link a {
  display: inline-block;
  padding: 0.55rem 1.1rem;
  border-radius: 999px;
  background: var(--accent, #6b3a1f);
  color: #fff !important;
  text-decoration: none;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.archive-pdf-link a:hover {
  filter: brightness(1.08);
}


/* Font size controls */
:root { --reader-font-scale: 1; }
article.article, .article {
  font-size: calc(1.05rem * var(--reader-font-scale));
}
.font-controls {
  position: fixed;
  top: 0.85rem;
  right: 0.85rem;
  z-index: 40;
  display: inline-flex;
  gap: 0.25rem;
  padding: 0.25rem;
  border-radius: 999px;
  background: color-mix(in oklab, var(--paper, #f7f1e6) 92%, transparent);
  border: 1px solid var(--rule, rgba(80,50,20,.18));
  box-shadow: 0 6px 18px rgba(40, 24, 12, .12);
  backdrop-filter: blur(8px);
}
.toc-toggle + .font-controls {
  /* sit left of Contents button when present */
  right: 6.5rem;
}
.font-btn {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--ink, #2a1c10);
  font-family: var(--sans, system-ui, sans-serif);
  font-weight: 700;
  font-size: 0.95rem;
  line-height: 1;
  min-width: 2.1rem;
  height: 2.1rem;
  border-radius: 999px;
  cursor: pointer;
  padding: 0 0.35rem;
}
.font-btn:hover { background: color-mix(in oklab, var(--accent, #6b3a1f) 14%, transparent); }
.font-btn:active { transform: translateY(1px); }
@media (max-width: 720px) {
  .toc-toggle + .font-controls { right: 5.75rem; }
  .font-controls { top: 0.65rem; right: 0.65rem; }
  .font-btn { min-width: 1.9rem; height: 1.9rem; font-size: 0.88rem; }
}
@media print {
  .font-controls { display: none !important; }
}


/* Reader chrome: search + font size (mobile-safe) */
.reader-chrome {
  position: fixed;
  top: .6rem;
  left: .6rem;
  right: .6rem;
  z-index: 45;
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  gap: .4rem;
  pointer-events: none;
}
.reader-chrome > * { pointer-events: auto; }
.font-controls {
  position: static !important;
  top: auto !important;
  right: auto !important;
  flex: 0 0 auto;
  display: inline-flex;
  gap: 0.15rem;
  padding: 0.2rem;
  border-radius: 999px;
  background: color-mix(in oklab, var(--paper, #f7f1e6) 94%, transparent);
  border: 1px solid var(--rule, rgba(80,50,20,.18));
  box-shadow: 0 4px 14px rgba(40, 24, 12, .12);
  backdrop-filter: blur(8px);
}
.font-btn {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--ink, #2a1c10);
  font-family: var(--sans, system-ui, sans-serif);
  font-weight: 700;
  font-size: 0.9rem;
  line-height: 1;
  min-width: 1.85rem;
  height: 1.85rem;
  border-radius: 999px;
  cursor: pointer;
  padding: 0 .3rem;
}
.font-btn:hover { background: color-mix(in oklab, var(--accent, #6b3a1f) 14%, transparent); }
.reader-search {
  position: relative;
  flex: 1 1 auto;
  max-width: 18rem;
  margin-right: auto;
}
.reader-search input[type="search"] {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--rule, rgba(80,50,20,.22));
  background: color-mix(in oklab, var(--paper, #f7f1e6) 94%, transparent);
  color: var(--ink, #2a1c10);
  font-family: var(--sans, system-ui, sans-serif);
  font-size: .9rem;
  border-radius: 999px;
  padding: .42rem .9rem;
  outline: none;
  box-shadow: 0 4px 14px rgba(40, 24, 12, .1);
  backdrop-filter: blur(8px);
}
.reader-search input[type="search"]:focus {
  border-color: color-mix(in oklab, var(--accent, #6b3a1f) 55%, var(--rule));
}
.search-results {
  position: absolute;
  top: calc(100% + .35rem);
  left: 0;
  right: 0;
  max-height: min(50vh, 22rem);
  overflow: auto;
  background: var(--paper, #f7f1e6);
  color: var(--ink, #2a1c10);
  border: 1px solid var(--rule, rgba(80,50,20,.2));
  border-radius: 12px;
  box-shadow: 0 10px 28px rgba(40,24,12,.18);
  z-index: 50;
}
.search-results[hidden] { display: none !important; }
.search-results button {
  display: block;
  width: 100%;
  text-align: left;
  border: 0;
  background: transparent;
  color: inherit;
  font-family: var(--sans, system-ui, sans-serif);
  font-size: .85rem;
  line-height: 1.35;
  padding: .55rem .75rem;
  cursor: pointer;
  border-bottom: 1px solid var(--rule, rgba(80,50,20,.12));
}
.search-results button:hover,
.search-results button:focus { background: color-mix(in oklab, var(--accent, #6b3a1f) 12%, transparent); }
.search-results .sr-title { font-weight: 650; display: block; }
.search-results .sr-snip { display: block; color: var(--muted, #6b5a48); font-size: .78rem; margin-top: .15rem; }
.search-results .sr-empty { padding: .7rem .8rem; color: var(--muted, #6b5a48); font-size: .85rem; }
mark.search-hit {
  background: color-mix(in oklab, #f5d76e 70%, transparent);
  color: inherit;
  padding: 0 .1em;
  border-radius: 2px;
}
@media (min-width: 901px) {
  /* desktop: no contents button; pin chrome to top-right, search beside fonts */
  .reader-chrome {
    left: auto;
    right: 1rem;
    top: .75rem;
    width: min(28rem, calc(100vw - 20rem));
  }
}
@media (max-width: 900px) {
  .toc-toggle {
    position: fixed;
    top: auto !important;
    right: .6rem !important;
    bottom: .75rem;
    left: auto;
    z-index: 46;
  }
  .reader-chrome {
    top: .55rem;
    left: .55rem;
    right: .55rem;
    gap: .35rem;
  }
  .reader-search { max-width: none; }
  article.article, .article { padding-top: 3.4rem; }
  body { padding-bottom: 4rem; }
}
@media print {
  .reader-chrome, .font-controls, .toc-toggle { display: none !important; }
}


/* Title-page cover as <figure> (epub_to_html.py --cover) */
.book-cover-block { flex-direction: column; align-items: center; }
.book-cover-block picture { display: block; width: 100%; }
.book-cover-caption {
  margin-top: .7rem; font-family: var(--sans); font-size: .78rem;
  color: var(--muted, #6b6158); text-align: center; line-height: 1.4;
}
.book-cover-caption a { color: inherit; }

/* Original title pages gallery (inserted front-matter section) */
.tp-gallery {
  display: grid; gap: 1.6rem 1.25rem; margin: 1.5rem 0 1rem;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 12.5rem), 1fr));
}
@media (max-width: 640px) {
  .tp-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem .9rem; }
  .tp-figure figcaption { font-size: .74rem; }
  section.chapter.inserted { scroll-margin-top: 4.25rem; }
}
.tp-figure { margin: 0; }
.tp-link { display: block; border-radius: 4px; overflow: hidden;
  box-shadow: 0 1px 2px rgba(40,24,12,.12), 0 6px 16px rgba(40,24,12,.14); }
.tp-link:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }
.tp-figure img { display: block; width: 100%; height: auto; margin: 0; border-radius: 0; box-shadow: none; background: #f6f0e2; }
.tp-figure figcaption { margin-top: .6rem; font-family: var(--sans); font-size: .8rem; line-height: 1.45; }
.tp-figure .tp-meta { color: var(--muted, #6b6158); }
.tp-badge { display: inline-block; margin-left: .3rem; padding: .05rem .4rem; border-radius: 999px;
  font-size: .68rem; font-weight: 650; background: var(--accent); color: var(--bg); vertical-align: .1em; }
.tp-credit { font-family: var(--sans); font-size: .78rem; color: var(--muted, #6b6158); }
@media print { .tp-gallery { grid-template-columns: repeat(3, 1fr); } .tp-link { box-shadow: none; } }
@media (prefers-color-scheme: dark) { .tp-figure img, .book-cover-block .book-cover { filter: brightness(.9); } }

/* ===== Unify 2026-11-09: chrome row, a11y, resume, performance ===== */
:root {
  --chrome-h: 3.25rem;
  --reader-font-scale: 1;
  --focus-ring: color-mix(in oklab, var(--accent) 75%, #000);
}
html {
  scroll-padding-top: calc(var(--chrome-h) + 0.5rem);
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
body { font-size: calc(1.125rem * var(--reader-font-scale, 1)); }

/* Content-visibility for long books */
section.chapter {
  content-visibility: auto;
  contain-intrinsic-size: 1px 720px;
}

/* Chrome: [AP] [Search] [Aa] — logo inside the row, not floating */
.reader-chrome {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 45;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.55rem;
  min-height: var(--chrome-h);
  padding: 0.5rem 0.7rem;
  padding-top: max(0.5rem, env(safe-area-inset-top));
  padding-bottom: 0.5rem;
  pointer-events: none;
  background: color-mix(in oklab, var(--bg) 88%, transparent);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--rule);
}
.reader-chrome > * { pointer-events: auto; }

.ap-reader-home {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 44px;
  height: 44px;
  margin-right: auto; /* push search+fonts to the right on full-width chrome */
  padding: 6px;
  border-radius: 12px;
  text-decoration: none;
  color: inherit;
  -webkit-tap-highlight-color: transparent;
}
.ap-reader-home:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}
.ap-reader-home img {
  display: block;
  width: 32px;
  height: 32px;
  object-fit: contain;
}
.ap-reader-home .ap-mono-light { display: none; }
@media (prefers-color-scheme: dark) {
  .ap-reader-home .ap-mono-dark { display: none; }
  .ap-reader-home .ap-mono-light { display: block; }
}

.reader-search {
  position: relative;
  flex: 1 1 auto;
  max-width: 18rem;
  margin-right: 0;
}
.reader-search input[type="search"] {
  width: 100%;
  box-sizing: border-box;
  min-height: 44px;
  border: 1px solid var(--rule);
  background: color-mix(in oklab, var(--paper) 94%, transparent);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 16px; /* prevent iOS zoom */
  border-radius: 999px;
  padding: 0.5rem 0.95rem;
  outline: none;
  box-shadow: 0 2px 10px rgba(40, 24, 12, 0.08);
}
.reader-search input[type="search"]:focus-visible {
  border-color: color-mix(in oklab, var(--accent) 55%, var(--rule));
  outline: none;
  /* 2px ring inside the pill so it doesn't bleed into logo / Aa */
  box-shadow:
    inset 0 0 0 2px color-mix(in oklab, var(--accent) 70%, transparent),
    0 2px 10px rgba(40, 24, 12, 0.08);
}
.search-icon-btn {
  display: none;
  width: 44px; height: 44px;
  border-radius: 999px;
  border: 1px solid var(--rule);
  background: color-mix(in oklab, var(--paper) 94%, transparent);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 1rem;
  cursor: pointer;
  align-items: center;
  justify-content: center;
}
.search-icon-btn:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}
.search-results {
  position: absolute;
  top: calc(100% + 0.35rem);
  left: 0; right: 0;
  max-height: min(50vh, 22rem);
  overflow: auto;
  background: var(--paper);
  color: var(--ink);
  border: 1px solid var(--rule);
  border-radius: 12px;
  box-shadow: 0 10px 28px rgba(40,24,12,.18);
  z-index: 50;
}
.search-results[hidden] { display: none !important; }
.search-results .sr-live {
  padding: 0.55rem 0.75rem;
  font-family: var(--sans);
  font-size: 0.78rem;
  color: var(--muted);
  border-bottom: 1px solid var(--rule);
}
.search-results button, .search-results .sr-more {
  display: block; width: 100%; text-align: left; border: 0;
  background: transparent; color: inherit; font-family: var(--sans);
  font-size: 0.85rem; line-height: 1.35; padding: 0.65rem 0.75rem;
  cursor: pointer; border-bottom: 1px solid var(--rule);
  min-height: 44px;
}
.search-results button:hover, .search-results button:focus-visible,
.search-results .sr-more:hover, .search-results .sr-more:focus-visible {
  background: color-mix(in oklab, var(--accent) 12%, transparent);
  outline: none;
}
.search-results .sr-title { font-weight: 650; display: block; }
.search-results .sr-snip { display: block; color: var(--muted); font-size: 0.78rem; margin-top: 0.15rem; }
.search-results .sr-empty { padding: 0.7rem 0.8rem; color: var(--muted); font-size: 0.85rem; }

.font-controls {
  position: static !important;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 0.15rem;
  padding: 0.15rem;
  border-radius: 999px;
  background: color-mix(in oklab, var(--paper) 94%, transparent);
  border: 1px solid var(--rule);
  box-shadow: 0 2px 10px rgba(40,24,12,.08);
  min-height: 44px;
}
.font-btn, .font-menu-toggle {
  appearance: none; border: 0; background: transparent;
  color: var(--ink); font-family: var(--sans); font-weight: 700;
  font-size: 0.95rem; line-height: 1;
  min-width: 44px; min-height: 44px;
  border-radius: 999px; cursor: pointer; padding: 0 0.35rem;
}
.font-btn:hover, .font-menu-toggle:hover {
  background: color-mix(in oklab, var(--accent) 14%, transparent);
}
.font-btn:focus-visible, .font-menu-toggle:focus-visible,
.toc-toggle:focus-visible, .toc nav a:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}
.font-menu-toggle { display: none; }
.font-menu {
  display: inline-flex; gap: 0.15rem; align-items: center;
}
.font-controls.is-collapsed .font-menu { display: none; }
.font-controls.is-collapsed.is-open .font-menu {
  display: inline-flex;
  position: absolute;
  top: calc(100% + 0.35rem);
  right: 0;
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: 999px;
  padding: 0.15rem;
  box-shadow: 0 8px 22px rgba(40,24,12,.16);
}
.font-controls { position: relative !important; }

.toc-toggle {
  display: none;
  font-family: var(--sans);
  position: fixed;
  top: auto !important;
  right: 0.6rem !important;
  bottom: max(0.75rem, env(safe-area-inset-bottom));
  left: auto;
  z-index: 46;
  min-height: 44px;
  min-width: 44px;
  padding: 0.55rem 1rem;
  border: 1px solid var(--rule);
  background: var(--paper);
  color: var(--ink);
  border-radius: 999px;
  font-size: 0.9rem;
  box-shadow: 0 4px 16px rgba(0,0,0,.1);
  cursor: pointer;
}

/* Sidebar: logo replaces text brand */
.toc .brand { display: none !important; }
.toc .toc-home-mark {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0 0 0.85rem;
  text-decoration: none;
  color: var(--muted);
  font-family: var(--sans);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.toc .toc-home-mark img { width: 28px; height: 28px; }
.toc .toc-home-mark:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
  border-radius: 8px;
}

/* Resume banner */
.ap-resume {
  position: sticky;
  top: var(--chrome-h);
  z-index: 20;
  margin: 0 auto 1rem;
  max-width: var(--measure);
  padding: 0.55rem 0.85rem;
  font-family: var(--sans);
  font-size: 0.88rem;
  background: color-mix(in oklab, var(--accent-soft) 80%, var(--paper));
  border: 1px solid var(--rule);
  border-radius: 999px;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  justify-content: space-between;
}
.ap-resume[hidden] { display: none !important; }
.ap-resume a { color: var(--accent); font-weight: 650; text-decoration: none; }
.ap-resume button {
  appearance: none; border: 0; background: transparent; color: var(--muted);
  cursor: pointer; font-family: var(--sans); font-size: 0.85rem;
  min-width: 44px; min-height: 36px;
}

/* Footnote popover */
.ap-note-pop {
  position: absolute;
  z-index: 60;
  max-width: min(22rem, calc(100vw - 1.5rem));
  padding: 0.75rem 0.9rem;
  background: var(--paper);
  color: var(--ink);
  border: 1px solid var(--rule);
  border-radius: 12px;
  box-shadow: 0 12px 32px rgba(40,24,12,.2);
  font-family: var(--sans);
  font-size: 0.9rem;
  line-height: 1.45;
}
.ap-note-pop[hidden] { display: none !important; }
.ap-note-pop .ap-note-go {
  display: inline-flex; margin-top: 0.55rem;
  min-height: 44px; align-items: center;
  padding: 0 0.85rem; border-radius: 999px;
  border: 1px solid var(--rule); background: var(--bg);
  color: var(--accent); font-weight: 650; text-decoration: none;
}
a.nref {
  font-size: 0.75em;
  vertical-align: super;
  line-height: 0;
  padding: 0.15rem 0.2rem;
  text-decoration: none;
}

@media (min-width: 901px) {
  .reader-chrome {
    left: var(--sidebar-w);
    width: auto;
    justify-content: flex-end;
    background: color-mix(in oklab, var(--bg) 82%, transparent);
  }
  .ap-reader-home { display: none; } /* desktop: mark lives in TOC header */
  .toc .toc-home-mark { display: inline-flex; }
  .reader-search { margin-left: auto; }
  .toc-toggle { display: none !important; }
  .main { padding-top: calc(var(--chrome-h) + 1.25rem); }
}
@media (max-width: 900px) {
  .toc-toggle { display: inline-flex; align-items: center; justify-content: center; }
  .ap-reader-home { display: inline-flex; }
  .toc .toc-home-mark { display: none; } /* phone: mark is in chrome; hide while drawer uses space */
  body.toc-open .ap-reader-home { visibility: hidden; } /* avoid covering drawer header */
  .reader-search { max-width: none; }
  article.article, .article { padding-top: 1rem; }
  .main { padding-top: calc(var(--chrome-h) + 0.75rem); padding-bottom: 5rem; }
  .toc {
    position: fixed; inset: 0 auto 0 0; z-index: 40;
    transform: translateX(-105%);
    transition: transform 0.2s ease;
    max-height: none; height: 100%;
  }
  body.toc-open .toc { transform: translateX(0); }
  .toc-scrim {
    display: none; position: fixed; inset: 0; z-index: 35;
    background: rgba(0,0,0,.35);
  }
  body.toc-open .toc-scrim { display: block; }
}
@media (max-width: 900px) and (prefers-reduced-motion: reduce) {
  .toc { transition: none; }
}
/* Collapse Aa + search icon on narrow phones */
@media (max-width: 640px) {
  .font-menu-toggle { display: inline-flex; align-items: center; justify-content: center; }
  .font-controls.is-collapsed .font-menu { display: none; }
  .font-controls { /* collapsed by JS adding is-collapsed */ }
}
@media (max-width: 480px) {
  .reader-search.is-icon .search-fields { display: none; }
  .reader-search.is-icon .search-icon-btn { display: inline-flex; }
  .reader-search.is-expanded .search-fields { display: block; }
  .reader-search.is-expanded .search-icon-btn { display: none; }
  /* Stay in flex flow so chrome gap (≥8px) separates logo / pill / Aa;
     absolute positioning was covering the logo and leaving ~1px to Aa. */
  .reader-search.is-expanded {
    position: relative;
    left: auto;
    right: auto;
    top: auto;
    transform: none;
    flex: 1 1 auto;
    max-width: none;
    min-width: 0;
  }
}
@media print {
  .reader-chrome, .font-controls, .toc-toggle, .ap-resume, .ap-note-pop, .toc-scrim { display: none !important; }
}


/* search pill neighbor clearance — keep ≥8px from logo and Aa */
.reader-chrome {
  gap: max(0.55rem, 8px);
  /* balanced vertical padding so the 44px pill is centered in the bar */
  padding-top: max(0.5rem, env(safe-area-inset-top));
  padding-bottom: 0.5rem;
}
.reader-search {
  margin-inline: 0;
  min-width: 0; /* allow flex shrink without overlapping neighbors */
}
/* Keep logo's margin-right:auto so when search collapses to an icon
   (or briefly leaves flow) the mark stays left-pinned. */
.ap-reader-home {
  margin-right: auto;
}
/* Focus: 2px inset ring only — no outer outline that bleeds into neighbors */
.reader-search input[type="search"]:focus,
.reader-search input[type="search"]:focus-visible {
  border-color: color-mix(in oklab, var(--accent) 45%, var(--rule));
  outline: none;
  box-shadow:
    inset 0 0 0 2px color-mix(in oklab, var(--accent) 55%, transparent),
    0 1px 6px rgba(40, 24, 12, 0.06);
}

/* Search drop-down panel — input + results live under the top bar, not inside it.
   Chrome order is [AP] [Search] [Aa]. Mode pills belong on the landing page. */
#reader-chrome .mode-pills { display: none !important; }
.search-toggle {
  appearance: none;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  min-width: 44px;
  padding: 0 0.95rem;
  border-radius: 999px;
  border: 1px solid var(--rule);
  background: color-mix(in oklab, var(--paper) 94%, transparent);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 0.95rem;
  font-weight: 650;
  cursor: pointer;
  box-shadow: 0 2px 10px rgba(40, 24, 12, 0.08);
  -webkit-tap-highlight-color: transparent;
}
.search-toggle:hover { background: color-mix(in oklab, var(--accent) 14%, transparent); }
.search-toggle:focus-visible,
.search-close:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}
.search-toggle[aria-expanded="true"] {
  background: var(--ink);
  color: var(--bg, #fff);
  border-color: var(--ink);
}
.search-scrim {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  top: var(--chrome-h, 3.25rem);
  z-index: 55;
  background: rgba(20, 14, 8, 0.28);
}
.search-scrim[hidden] { display: none !important; }
.search-panel {
  position: fixed;
  left: 0;
  right: 0;
  top: var(--chrome-h, 3.25rem);
  z-index: 60;
  display: flex;
  flex-direction: column;
  max-height: 70vh;
  background: var(--paper);
  color: var(--ink);
  border-bottom: 1px solid var(--rule);
  box-shadow: 0 16px 36px rgba(40, 24, 12, 0.2);
  pointer-events: auto;
}
.search-panel[hidden] { display: none !important; }
.search-panel-bar {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.65rem 0.75rem 0.5rem;
  flex: 0 0 auto;
}
.search-panel .reader-search {
  position: static;
  display: flex;
  flex-direction: column;
  min-height: 0;
  flex: 1 1 auto;
  max-width: none;
  margin: 0;
  width: 100%;
}
.search-panel .reader-search input[type="search"] {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
  border-radius: 999px;
}
.search-close {
  appearance: none;
  flex: 0 0 auto;
  min-height: 44px;
  min-width: 44px;
  padding: 0 0.8rem;
  border-radius: 999px;
  border: 1px solid var(--rule);
  background: transparent;
  color: var(--ink);
  font-family: var(--sans);
  font-size: 0.9rem;
  cursor: pointer;
}
.search-close:hover { background: color-mix(in oklab, var(--accent) 14%, transparent); }
.search-panel .search-results {
  position: static;
  left: auto; right: auto; top: auto;
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  border: 0;
  border-top: 1px solid var(--rule);
  border-radius: 0;
  box-shadow: none;
  background: var(--paper);
}
.search-panel .search-results a.sr-hit {
  display: block;
  width: 100%;
  text-align: left;
  color: inherit;
  text-decoration: none;
  font-family: var(--sans);
  font-size: 0.85rem;
  line-height: 1.35;
  padding: 0.65rem 0.75rem;
  border-bottom: 1px solid var(--rule);
  min-height: 44px;
  box-sizing: border-box;
}
.search-panel .search-results a.sr-hit:hover,
.search-panel .search-results a.sr-hit:focus-visible {
  background: color-mix(in oklab, var(--accent) 12%, transparent);
  outline: none;
}
@media (min-width: 901px) {
  .search-panel {
    left: auto;
    right: max(1rem, env(safe-area-inset-right));
    width: min(32rem, calc(100vw - 2rem));
    border: 1px solid var(--rule);
    border-top: 0;
    border-radius: 0 0 14px 14px;
  }
  .search-scrim { background: rgba(20, 14, 8, 0.18); }
}
@media print {
  .search-panel, .search-scrim, .search-toggle { display: none !important; }
}


/* ---- figures.css ---- */


/* Illustrations (epub_to_html.py --figures; only inlined when that option is used) */
.article figure.ap-fig {
  margin: 2.25rem auto; padding: 0; text-align: center;
  break-inside: avoid; page-break-inside: avoid;
}
.ap-fig-link { display: inline-block; max-width: 100%; border-radius: 3px; line-height: 0;
  background: #fbf8f1; box-shadow: 0 1px 2px rgba(40,24,12,.10), 0 8px 22px rgba(40,24,12,.12); }
.ap-fig-link:focus-visible { outline: 3px solid var(--accent); outline-offset: 4px; }
.ap-fig picture { display: block; line-height: 0; }
.article .ap-fig img {
  display: block; margin: 0 auto; border-radius: 3px; box-shadow: none;
  width: auto; height: auto; max-width: 100%;
  max-height: min(78vh, 40rem);
}
.article .ap-fig--scene img { max-height: min(80vh, 44rem); }
.article .ap-fig--frontispiece img { max-height: min(86vh, 46rem); }
.ap-fig figcaption {
  max-width: 30rem; margin: .85rem auto 0; font-family: var(--sans);
  font-size: .86rem; line-height: 1.45; text-wrap: balance;
}
.ap-fig-title { display: block; font-weight: 650; color: var(--ink); }
.ap-fig-credit { display: block; margin-top: .25rem; font-size: .74rem; color: var(--muted); }
.ap-fig-credit a { color: inherit; }
.article header.book-open + figure.ap-fig--frontispiece { margin-top: 0; margin-bottom: 2.5rem;
  padding-bottom: 2.25rem; border-bottom: 1px solid var(--rule); }
section.chapter figure.ap-fig, .ap-figlist li { scroll-margin-top: 4.5rem; }

/* List of Illustrations */
.ap-figlist { list-style: none; margin: 1.5rem 0 1.25rem; padding: 0; counter-reset: fig; }
.ap-figlist li { counter-increment: fig; border-top: 1px solid var(--rule); }
.ap-figlist li:last-child { border-bottom: 1px solid var(--rule); }
.ap-figlist a { display: grid; grid-template-columns: 3.25rem 1fr auto; gap: .35rem 1rem; align-items: center;
  padding: .7rem .25rem; color: inherit; text-decoration: none; }
.ap-figlist a:hover .ap-figlist-title, .ap-figlist a:focus-visible .ap-figlist-title { color: var(--accent); text-decoration: underline; }
.ap-figlist a:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.ap-figlist-thumb { width: 3.25rem; height: 3.25rem; overflow: hidden; border-radius: 3px; background: #fbf8f1; line-height: 0;
  box-shadow: 0 1px 2px rgba(40,24,12,.14); }
.article .ap-figlist-thumb img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; margin: 0; border-radius: 0; }
.ap-figlist-title { font-size: .98rem; line-height: 1.3; }
.ap-figlist-title::before { content: counter(fig) ". "; font-family: var(--sans); font-size: .78rem; color: var(--muted); }
.ap-figlist-src { display: block; font-family: var(--sans); font-size: .72rem; color: var(--muted); margin-top: .15rem; }
.ap-figlist-loc { font-family: var(--sans); font-size: .76rem; color: var(--muted); text-align: right; white-space: nowrap; }
@media (max-width: 640px) {
  .ap-figlist a { grid-template-columns: 2.75rem 1fr; }
  .ap-figlist-thumb { width: 2.75rem; height: 2.75rem; }
  .ap-figlist-loc { grid-column: 2; text-align: left; white-space: normal; margin-top: -.2rem; }
  .ap-fig figcaption { font-size: .82rem; }
  .article figure.ap-fig { margin: 1.75rem auto; }
}
@media (prefers-color-scheme: dark) {
  /* Mat/rule plate — never invert or brightness-filter archival scans */
  .ap-fig-link, .ap-figlist-thumb {
    background: #1a1714;
    box-shadow: 0 0 0 1px var(--rule), inset 0 0 0 1px rgba(255,255,255,.04);
  }
  .ap-fig img, .ap-figlist-thumb img { filter: none; }
}
@media print {
  .article figure.ap-fig { break-inside: avoid; page-break-inside: avoid; margin: 1.5rem auto; }
  .article .ap-fig img, .article .ap-fig--scene img, .article .ap-fig--frontispiece img { max-height: 7.25in; }
  .article header.book-open + figure.ap-fig--frontispiece { break-before: page; break-after: page; border: 0; }
  .ap-fig-link { box-shadow: none; }
  .ap-fig-credit a { text-decoration: none; }
  .ap-figlist li { break-inside: avoid; }
}


/* ---- mode-pills.css ---- */
/* Speed read + Scroll pills in the shared reader chrome. Hidden until html[data-word-pack] is set. */
.mode-pills {
  display: none;
  flex: 0 0 auto;
  align-items: center;
  gap: 0.35rem;
}
html[data-word-pack] .mode-pills {
  display: inline-flex;
}
.mode-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-height: 44px;
  padding: 0 0.8rem;
  border: 1px solid var(--rule);
  border-radius: 999px;
  background: color-mix(in oklab, var(--paper) 94%, transparent);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 0.875rem;
  line-height: 1;
  text-decoration: none;
  white-space: nowrap;
  -webkit-tap-highlight-color: transparent;
}
.mode-pill:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}
@media print {
  .mode-pills { display: none !important; }
}


/* scoped to html.speed-page */
html.speed-page{color-scheme:dark;--bg: #1c2027;--bg-deep: #171a20;--surface: rgba(38, 43, 52, .92);--surface-solid: #252a33;--surface-hover: #30363f;--text: #e4e8ee;--muted: #b3b7be;--faint: #80848b;--accent: #e6a65a;--accent-bright: #f7c785;--border: rgba(196, 206, 222, .26);--border-strong: rgba(196, 206, 222, .58);--shadow: 0 18px 48px rgba(0, 0, 0, .18);--glass-surface: rgba(38, 43, 52, .7);--glass-highlight: rgba(255, 255, 255, .07);--glass-shadow: 0 6px 18px rgba(0, 0, 0, .1);--glow: rgba(200, 215, 240, .05);--serif: Iowan Old Style, Baskerville, "Times New Roman", serif;--field-bg: rgba(255, 255, 255, .07);--field-bg-hover: rgba(255, 255, 255, .11);--field-border: rgba(196, 206, 222, .6);--sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}html.speed-page[data-theme=light]{color-scheme:light;--field-bg: #f7f7f7;--field-bg-hover: #ececec;--field-border: #767676;--bg: #ffffff;--bg-deep: #ffffff;--surface: #ffffff;--surface-solid: #ffffff;--surface-hover: #ffffff;--text: #000000;--muted: #000000;--faint: #000000;--accent: #000000;--accent-bright: #000000;--border: #000000;--border-strong: #000000;--shadow: 0 24px 54px rgba(0, 0, 0, .14);--glass-surface: rgba(255, 255, 255, .68);--glass-highlight: rgba(255, 255, 255, .96);--glass-shadow: 0 10px 30px rgba(0, 0, 0, .1)}html.speed-page *{box-sizing:border-box}html.speed-page{min-height:100%;width:100%;max-width:100%;overflow-x:clip;background:var(--bg)}html.speed-page body{min-height:100vh;width:100%;max-width:100%;margin:0;overflow-x:clip;color:var(--text);background:radial-gradient(circle at 50% 28%,var(--glow),transparent 34rem),linear-gradient(145deg,var(--bg-deep),var(--bg) 28%,var(--bg));font-family:var(--sans);transition:background-color .18s ease,color .18s ease}html.speed-page[data-theme=light] body{background:#fff}html.speed-page button, html.speed-page input, html.speed-page select{font:inherit}html.speed-page button, html.speed-page select{color:inherit}html.speed-page button{cursor:pointer;-webkit-tap-highlight-color:transparent}html.speed-page button:focus-visible, html.speed-page input:focus-visible, html.speed-page select:focus-visible{outline:2px solid var(--accent-bright);outline-offset:3px}html.speed-page .grain{position:fixed;inset:0;z-index:-1;opacity:.1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.13'/%3E%3C/svg%3E")}html.speed-page[data-theme=light] .grain{display:none}html.speed-page .site-header{width:min(1180px,calc(100% - 40px));min-height:84px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);background:var(--glass-surface);box-shadow:inset 0 1px 0 var(--glass-highlight);-webkit-backdrop-filter:blur(10px) saturate(135%);backdrop-filter:blur(10px) saturate(135%)}html.speed-page .wordmark{display:inline-flex;align-items:center;gap:12px;color:var(--text);font-family:var(--serif);font-size:1.3rem;letter-spacing:.04em;text-decoration:none}html.speed-page .wordmark-mark{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--border-strong);color:var(--accent-bright);font-size:1rem}html.speed-page .header-actions{display:flex;align-items:center;gap:10px}html.speed-page .select-wrap{position:relative}html.speed-page .select-wrap select{max-width:290px;height:42px;padding:0 38px 0 14px;border:1px solid var(--border);border-radius:4px;appearance:none;background:var(--glass-surface);box-shadow:inset 0 1px 0 var(--glass-highlight),var(--glass-shadow);-webkit-backdrop-filter:blur(10px) saturate(135%);backdrop-filter:blur(10px) saturate(135%);font-size:.78rem;font-weight:650;letter-spacing:.04em;text-overflow:ellipsis}html.speed-page .select-wrap>span{position:absolute;right:13px;top:50%;transform:translateY(-55%);color:var(--muted);pointer-events:none}html.speed-page .icon-button{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--border);border-radius:4px;background:var(--glass-surface);box-shadow:inset 0 1px 0 var(--glass-highlight),var(--glass-shadow);-webkit-backdrop-filter:blur(10px) saturate(135%);backdrop-filter:blur(10px) saturate(135%)}html.speed-page .icon-button:hover, html.speed-page .select-wrap select:hover{border-color:var(--border-strong);background:var(--surface-hover)}html.speed-page .sun-icon{width:19px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:1.5}html.speed-page main{min-height:calc(100vh - 174px);display:grid;place-items:center;padding:64px 20px 42px}html.speed-page .reader{width:min(1180px,100%)}html.speed-page .reading-layout{width:100%}html.speed-page .reading-stage{position:relative;min-width:0}html.speed-page .verse-shell{position:relative}html.speed-page .verse-card, html.speed-page .error-card{position:relative;overflow:hidden;border:1px solid var(--border-strong);border-radius:3px;background:var(--surface);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}html.speed-page .verse-card:before{position:absolute;inset:8px;border:1px solid var(--border);content:"";pointer-events:none}html.speed-page .verse-card{min-height:310px;padding:58px clamp(32px,8vw,92px) 64px;display:flex;flex-direction:column;justify-content:center}html.speed-page .reference-rule{display:grid;grid-template-columns:minmax(24px,1fr) auto minmax(24px,1fr);align-items:center;gap:18px}html.speed-page .reference-rule>span{height:1px;background:linear-gradient(90deg,transparent,var(--border-strong))}html.speed-page .reference-rule>span:last-child{background:linear-gradient(90deg,var(--border-strong),transparent)}html.speed-page .reference-rule h1{margin:0;color:var(--accent-bright);font-family:var(--serif);font-size:clamp(1.16rem,2vw,1.45rem);font-weight:500;letter-spacing:.08em}html.speed-page .loading-line{width:90%;height:22px;margin:10px auto;display:block;border-radius:3px;background:linear-gradient(90deg,var(--border),var(--surface-hover),var(--border));background-size:220% 100%;animation:shimmer 1.4s linear infinite}html.speed-page .loading-line.short{width:55%}@keyframes shimmer{to{background-position:-220% 0}}html.speed-page .error-card{min-height:240px;padding:55px 30px;display:grid;place-items:center;align-content:center;gap:18px;text-align:center}html.speed-page .error-card p{margin:0;font-family:var(--serif);font-size:1.35rem}html.speed-page .error-card button{padding:10px 16px;border:1px solid var(--border-strong);border-radius:3px;background:transparent}html.speed-page .reader-controls{margin-top:18px;display:grid;grid-template-columns:1fr auto 1fr;gap:10px}html.speed-page .play-toggle, html.speed-page .minimal-toggle{min-height:68px;border:1px solid var(--border);border-radius:3px;background:var(--glass-surface);box-shadow:inset 0 1px 0 var(--glass-highlight),var(--glass-shadow);-webkit-backdrop-filter:blur(10px) saturate(135%);backdrop-filter:blur(10px) saturate(135%)}html.speed-page .play-toggle:hover, html.speed-page .play-toggle[aria-pressed=true], html.speed-page .minimal-toggle:hover, html.speed-page .minimal-toggle[aria-pressed=true]{border-color:var(--border-strong);background:var(--surface-hover)}html.speed-page .nav-bottom{min-height:68px;padding:0 18px;display:flex;align-items:center;gap:14px;border:1px solid var(--border);border-radius:3px;background:var(--glass-surface);box-shadow:inset 0 1px 0 var(--glass-highlight),var(--glass-shadow);-webkit-backdrop-filter:blur(10px) saturate(135%);backdrop-filter:blur(10px) saturate(135%);text-align:left}html.speed-page .nav-bottom.next{justify-content:flex-end;text-align:right}html.speed-page .nav-bottom:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-hover)}html.speed-page .nav-bottom .arrow{color:var(--accent-bright);font-size:1.4rem}html.speed-page .nav-button:disabled{cursor:default;opacity:.42}html.speed-page .nav-bottom small, html.speed-page .play-toggle small, html.speed-page .minimal-toggle small{margin-bottom:4px;display:block;color:var(--muted);font-size:.63rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}html.speed-page .nav-bottom strong, html.speed-page .play-toggle strong, html.speed-page .minimal-toggle strong{display:block;font-family:var(--serif);font-size:.9rem;font-weight:500}html.speed-page .play-toggle, html.speed-page .minimal-toggle{min-width:148px;padding:0 17px;display:flex;align-items:center;justify-content:center;gap:11px}html.speed-page .minimal-toggle{grid-column:2;min-height:52px}html.speed-page .minimal-glyph{color:var(--accent-bright);font-size:1rem}html.speed-page .speed-scale{grid-column:1 / -1;grid-row:2;padding:10px 18px 8px;border:1px solid var(--border);border-radius:3px;background:var(--glass-surface);box-shadow:inset 0 1px 0 var(--glass-highlight),var(--glass-shadow);-webkit-backdrop-filter:blur(10px) saturate(135%);backdrop-filter:blur(10px) saturate(135%);text-align:center}html.speed-page .speed-title{display:block;margin-bottom:4px;color:var(--muted);font-size:.63rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}html.speed-page .speed-value{margin-left:6px;color:var(--text);font-family:var(--serif);font-size:.9rem;font-weight:500;letter-spacing:0;text-transform:none}html.speed-page .speed-scale input[type=range]{width:100%;margin:0;accent-color:var(--accent-bright)}html.speed-page .speed-ticks{display:flex;justify-content:space-between;color:var(--muted);font-family:var(--serif);font-size:.72rem}html.speed-page .reader-controls .minimal-toggle{grid-row:3}html.speed-page .minimal-mode .speed-scale{display:none}html.speed-page .minimal-mode .site-header, html.speed-page .minimal-mode footer, html.speed-page .minimal-mode .nav-bottom{display:none}html.speed-page .minimal-mode main{min-height:100vh;padding-block:28px}html.speed-page .minimal-mode .reader-controls{display:flex;flex-direction:column;align-items:center;gap:10px}html.speed-page .minimal-mode .play-toggle, html.speed-page .minimal-mode .minimal-toggle{width:170px;min-height:54px}html.speed-page footer{width:min(1180px,calc(100% - 40px));min-height:90px;margin:0 auto;padding:22px 0;display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--border);background:var(--glass-surface);box-shadow:inset 0 1px 0 var(--glass-highlight);-webkit-backdrop-filter:blur(10px) saturate(135%);backdrop-filter:blur(10px) saturate(135%);color:var(--muted);font-size:.69rem;letter-spacing:.04em}html.speed-page footer p{margin:0}html.speed-page .shortcuts{display:flex;align-items:center;gap:7px}html.speed-page .offline-note a{color:var(--muted);text-decoration:none}html.speed-page .offline-note a:hover{color:var(--accent-bright)}html.speed-page kbd{min-width:22px;height:22px;padding:0 5px;display:inline-grid;place-items:center;border:1px solid var(--border);border-bottom-color:var(--border-strong);border-radius:3px;color:var(--text);background:var(--surface);font:.64rem var(--sans)}html.speed-page .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}html.speed-page [hidden]{display:none!important}html.speed-page noscript{position:fixed;right:16px;bottom:16px;padding:12px;color:#fff;background:#8a261f}@media(max-width:720px){html.speed-page .site-header{min-height:70px}html.speed-page .wordmark>span:last-child:not(.wordmark-mark){display:none}html.speed-page .select-wrap select{max-width:205px}html.speed-page main{padding-top:38px}html.speed-page .verse-card{min-height:280px;padding:46px 28px 50px}html.speed-page .reader-controls{grid-template-columns:1fr 1fr}html.speed-page .play-toggle{grid-column:1 / -1;grid-row:2}html.speed-page .speed-scale{grid-row:3}html.speed-page .minimal-toggle, html.speed-page .reader-controls .minimal-toggle{grid-column:1 / -1;grid-row:4}html.speed-page .nav-bottom strong{font-size:.8rem}html.speed-page .play-toggle, html.speed-page .minimal-toggle{min-height:56px}html.speed-page footer{justify-content:center;text-align:center}html.speed-page .shortcuts{display:none}}@media(max-width:420px){html.speed-page .site-header{width:calc(100% - 24px)}html.speed-page .select-wrap select{width:170px}html.speed-page main{padding-inline:12px}html.speed-page footer{width:calc(100% - 24px)}}@media(prefers-reduced-motion:reduce){html.speed-page *, html.speed-page *:before, html.speed-page *:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html.speed-page{--orp: #f7705c;--word-size: clamp(2rem, 5.2vw, 3.1rem)}html.speed-page[data-theme=light]{--orp: #d0021b}@media(max-width:420px){html.speed-page{--word-size: 2rem}}html.speed-page .word-card{min-height:0}html.speed-page .reference-rule.status{width:100%;padding:0;border:0;background:none;color:inherit;cursor:pointer;transition:opacity .16s ease}html.speed-page .reference-rule.status{grid-template-columns:minmax(12px,1fr) auto minmax(12px,1fr);gap:14px}html.speed-page .reference-rule.status:focus-visible{outline:none}html.speed-page .reference-rule>.passage-field{height:auto;min-width:0;max-width:100%;min-height:44px;padding:6px 12px;display:inline-flex;align-items:center;gap:10px;border:1px solid var(--field-border);border-radius:3px;background:var(--field-bg);box-shadow:inset 0 1px 2px #0000002e;transition:border-color .14s ease,background-color .14s ease}html.speed-page .passage-field svg{width:18px;height:18px;flex:none;fill:none;stroke:var(--accent-bright);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}html.speed-page .passage-field .passage-icon{opacity:.85}html.speed-page .reference-rule.status h1{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html.speed-page .reference-rule.status:hover .passage-field{border-color:var(--accent-bright);background:var(--field-bg-hover)}html.speed-page .reference-rule.status:focus-visible .passage-field{border-color:var(--accent-bright);background:var(--field-bg-hover);outline:2px solid var(--accent-bright);outline-offset:3px}html.speed-page .reference-rule.status[data-mode=clear], html.speed-page .reference-rule.status[data-mode=semi]{opacity:1}html.speed-page .reference-rule.status[data-mode=off]{visibility:hidden}html.speed-page .rsvp-stage{position:relative;margin-top:26px;padding:18px 0;touch-action:none;user-select:none;-webkit-user-select:none;cursor:pointer}html.speed-page .focus-line{position:relative;height:1px;background:linear-gradient(90deg,transparent,var(--border-strong) 50%,transparent)}html.speed-page .tick{position:absolute;left:50%;width:1px;height:8px;margin-left:-.5px;background:var(--border-strong)}html.speed-page .focus-line.top .tick{top:1px}html.speed-page .focus-line.bottom .tick{bottom:1px}html.speed-page .word-card.no-red .tick{display:none}html.speed-page .word{font-family:var(--serif);font-size:var(--word-size);line-height:1.5;min-height:1.5em;margin:18px 0;color:var(--text);white-space:pre;text-align:center}html.speed-page .word.grid{display:grid;grid-template-columns:1fr auto 1fr}html.speed-page .word .before{text-align:right}html.speed-page .word .after{text-align:left}html.speed-page .word .orp{color:var(--orp);font-weight:700}html.speed-page .rsvp-stage.braking .word{visibility:hidden}html.speed-page .brake-strip{display:flex;justify-content:center;gap:.5em;font-family:var(--serif);font-size:calc(var(--word-size) * .55);line-height:1.5;margin:18px 0;white-space:nowrap;overflow:hidden}html.speed-page .rsvp-stage.braking .brake-strip{position:absolute;left:0;right:0;top:50%;margin:0;transform:translateY(-50%)}html.speed-page .strip-word{color:var(--muted)}html.speed-page .strip-word.current{color:var(--text);font-weight:700;text-decoration:underline;text-underline-offset:4px}html.speed-page .loading{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%)}html.speed-page .rsvp-stage.is-loading .word{visibility:hidden}html.speed-page .play-glyph{color:var(--accent-bright);font-family:var(--serif);font-size:1.15rem}html.speed-page .minimal-mode .settings-panel{display:none}html.speed-page .settings-panel{position:fixed;z-index:30;top:92px;right:max(20px,calc((100vw - 1180px)/2));width:min(340px,calc(100vw - 24px));max-height:calc(100vh - 110px);overflow-y:auto;padding:18px;display:grid;gap:16px;border:1px solid var(--border-strong);border-radius:4px;background:var(--glass-surface);box-shadow:inset 0 1px 0 var(--glass-highlight),var(--glass-shadow);-webkit-backdrop-filter:blur(10px) saturate(135%);backdrop-filter:blur(10px) saturate(135%)}html.speed-page:not([data-theme=light]) .settings-panel{background:color-mix(in srgb,var(--surface-solid) 92%,transparent)}html.speed-page .panel-title{margin:0;padding-right:36px;color:var(--accent-bright);font-family:var(--serif);font-size:1.05rem;font-weight:500;letter-spacing:.08em}html.speed-page .close-button{position:absolute;top:10px;right:10px;width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--border);border-radius:3px;background:transparent;color:var(--muted);font-size:1rem;line-height:1}html.speed-page .close-button:hover{border-color:var(--border-strong);color:var(--text)}html.speed-page .setting-row{margin:0;padding:0;border:0;display:grid;gap:8px;min-width:0}html.speed-page .setting-label, html.speed-page .setting-row legend{padding:0;display:flex;justify-content:space-between;align-items:baseline;gap:10px;color:var(--muted);font-size:.63rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}html.speed-page .setting-row output, html.speed-page .setting-value{color:var(--text);font-family:var(--serif);font-size:.9rem;font-weight:500;letter-spacing:0;text-transform:none}html.speed-page .setting-row input[type=range]{width:100%;accent-color:var(--accent-bright)}html.speed-page .setting-note{margin:0;color:var(--muted);font-size:.69rem}html.speed-page .segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:6px}html.speed-page .segmented button, html.speed-page .choice{min-height:40px;padding:0 10px;border:1px solid var(--border);border-radius:3px;background:var(--glass-surface);font-family:var(--serif);font-size:.9rem}html.speed-page .segmented button[aria-pressed=true]{border-color:var(--border-strong);color:var(--accent-bright);background:var(--surface-hover)}html.speed-page .choices{display:flex;flex-wrap:wrap;gap:6px}html.speed-page .choice{display:inline-flex;align-items:center;gap:8px;cursor:pointer}html.speed-page .choice input{margin:0;accent-color:var(--accent-bright)}html.speed-page .choice:has(input:checked){border-color:var(--border-strong);color:var(--accent-bright)}html.speed-page .check{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-size:.9rem;cursor:pointer}html.speed-page .check input{width:18px;height:18px;margin:0;accent-color:var(--accent-bright)}html.speed-page .panel-button, html.speed-page .error-card button{padding:10px 16px;border:1px solid var(--border-strong);border-radius:3px;background:transparent}html.speed-page .picker-backdrop{position:fixed;inset:0;z-index:40;background:#0000008c;display:grid;place-items:center;padding:20px}html.speed-page .picker-card{width:min(560px,100%);max-height:calc(100vh - 40px);overflow-y:auto;padding:32px clamp(18px,5vw,40px);display:grid;gap:16px;min-height:0;justify-content:stretch}html.speed-page:not([data-theme=light]) .picker-card{background:var(--surface-solid)}html.speed-page .picker-card .reference-rule{padding:0 28px}html.speed-page .picker-card:before{position:absolute;inset:8px;border:1px solid var(--border);content:"";pointer-events:none}html.speed-page .picker-close{z-index:2}html.speed-page .picker-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:28px}html.speed-page .picker-back{padding:4px 0;border:0;background:none;color:var(--accent-bright);font-family:var(--serif);font-size:.95rem}html.speed-page .picker-crumb{margin:0;color:var(--muted);font-family:var(--serif);font-size:.95rem}html.speed-page .picker-filter{width:100%;height:52px;padding:0 18px;border:1px solid var(--border);border-radius:5px;outline:0;color:var(--text);background:var(--glass-surface);box-shadow:inset 0 1px 0 var(--glass-highlight),var(--glass-shadow);font-family:var(--serif);font-size:1.08rem}html.speed-page .picker-filter:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)}html.speed-page .picker-filter::placeholder{color:var(--muted)}html.speed-page .picker-heading{margin:4px 0 0;color:var(--muted);font-size:.63rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}html.speed-page .picker-grid{display:grid;gap:6px}html.speed-page .picker-grid.books{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}html.speed-page .picker-grid.numbers{grid-template-columns:repeat(auto-fill,minmax(44px,1fr))}html.speed-page .picker-grid button{min-width:44px;min-height:44px;padding:0 8px;border:1px solid var(--border);border-radius:3px;background:var(--glass-surface);font-family:var(--serif);font-size:.9rem}html.speed-page .picker-grid.books button{text-align:left;padding:0 12px}html.speed-page .picker-grid button:hover{border-color:var(--border-strong);background:var(--surface-hover)}html.speed-page .picker-grid button.current{border-color:var(--border-strong);color:var(--accent-bright)}html.speed-page .picker-empty{margin:0;color:var(--muted);font-family:var(--serif)}@media(max-width:720px){html.speed-page .settings-panel{top:78px}}@media(max-width:420px){html.speed-page .settings-panel{right:12px}}html.speed-page .picker-hint{min-height:1.1em;margin:8px 2px;color:var(--muted);font-size:.78rem}html.speed-page .picker-hint:empty{margin:0;min-height:0}html.speed-page .picker-suggest{display:grid;gap:6px}html.speed-page .picker-suggest button{min-height:44px;padding:0 14px;display:flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:3px;background:var(--glass-surface);font-family:var(--serif);font-size:.95rem;text-align:left}html.speed-page .picker-suggest button:hover, html.speed-page .picker-suggest button[aria-selected=true]{border-color:var(--accent-bright);background:var(--field-bg-hover);color:var(--accent-bright);box-shadow:inset 0 0 0 1px var(--accent-bright)}html.speed-page .picker-suggest button[data-testid=picker-go]{font-weight:600}html.speed-page .picker-suggest .opt-ref{color:var(--muted)}@media(min-width:721px){html.speed-page footer{display:grid;grid-template-columns:1fr auto 1fr;column-gap:20px;row-gap:6px}html.speed-page footer>[data-testid=attribution], html.speed-page footer>.shortcuts{grid-row:1 / span 2}html.speed-page footer>.offline-note{grid-column:3;text-align:right}}html.speed-page .offline-note a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}html.speed-page .offline-note a:hover{text-decoration-thickness:2px}@media(max-width:720px){html.speed-page footer{flex-direction:column;gap:6px}}html.speed-page .welcome{width:min(26rem,calc(100vw - 24px));max-width:none;max-height:calc(100dvh - 24px);margin:auto;padding:0;border:1px solid var(--border-strong);border-radius:4px;background:var(--surface-solid);color:var(--text);box-shadow:var(--shadow);overflow:auto}html.speed-page .welcome::backdrop{background:#0000008c}html.speed-page .welcome-card{position:relative;padding:28px clamp(18px,6vw,30px) 24px;display:grid;gap:12px;font-family:var(--serif);font-size:1rem;line-height:1.5}html.speed-page .welcome-card p{margin:0;color:var(--text)}html.speed-page .welcome-card strong{color:var(--accent-bright);font-weight:600}html.speed-page[data-theme=light] .welcome-card strong{color:var(--text)}html.speed-page .welcome-card a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}html.speed-page .welcome-card a:hover{text-decoration-thickness:2px}html.speed-page .welcome-title{margin:0 40px 4px;font-family:var(--serif);font-size:1.35rem;font-weight:600;text-align:center;color:var(--text)}html.speed-page .welcome-close{width:44px;height:44px;top:8px;right:8px}html.speed-page .welcome-card .welcome-foot{color:var(--muted);font-family:var(--serif);font-size:.875rem}html.speed-page .welcome[data-quiet-focus] button:focus-visible{outline:none}html.speed-page .nowrap{white-space:nowrap}html.speed-page .welcome-start{justify-self:center;min-height:44px;margin-top:4px;color:var(--text);font-family:var(--sans)}html.speed-page .welcome-start:hover{background:var(--surface-hover)}html.speed-page .select-wrap select{width:214px;color:transparent}html.speed-page .select-wrap select option{color:var(--text);background:var(--surface-solid)}html.speed-page .select-wrap>.select-value{position:absolute;left:15px;right:38px;top:50%;transform:translateY(-50%);overflow:hidden;color:var(--text);font-size:.78rem;font-weight:650;letter-spacing:.04em;line-height:1.2;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}@media(max-width:720px){html.speed-page .select-wrap select{width:196px}html.speed-page .select-wrap>.select-value{left:13px;right:30px}html.speed-page .select-wrap select{padding-right:30px}html.speed-page .select-wrap>span:not(.select-value){right:10px}}@media(max-width:360px){html.speed-page .select-wrap select{width:calc(100vw - 166px);padding-right:24px}html.speed-page .select-wrap>.select-value{left:10px;right:22px;letter-spacing:0}html.speed-page .select-wrap>span:not(.select-value){right:7px}}html.speed-page .picker-backdrop{overscroll-behavior:contain;padding:max(20px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))}html.speed-page .picker-card{max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow:hidden;display:flex;flex-direction:column;-webkit-backdrop-filter:none;backdrop-filter:none}html.speed-page .picker-body{flex:1 1 auto;min-height:0;margin:-4px;padding:4px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;display:grid;align-content:start;gap:16px}html.speed-page #picker-editions button, html.speed-page .picker-grid button{position:relative}html.speed-page #picker-editions button[aria-pressed=true], html.speed-page #picker-editions button[aria-pressed=true]:hover, html.speed-page .picker-grid button.current, html.speed-page .picker-grid button.current:hover{border-color:var(--accent-bright);box-shadow:inset 0 0 0 1px var(--accent-bright);background:var(--accent-bright);color:var(--bg);font-weight:600}html.speed-page #picker-editions button[aria-pressed=true]:after, html.speed-page .picker-grid button.current:after{position:absolute;top:2px;right:4px;content:"✓";font-family:var(--sans);font-size:.7rem;font-weight:700;line-height:1}html.speed-page .picker-grid.books button.current:after{top:50%;right:10px;font-size:.8rem;transform:translateY(-50%)}html.speed-page #picker-editions button:focus-visible, html.speed-page .picker-grid button:focus-visible{outline:2px solid var(--accent-bright);outline-offset:2px}html.speed-page .minimal-ref, html.speed-page .minimal-mode .reference-rule.status{display:none}html.speed-page .minimal-mode .minimal-ref:not([hidden]){position:fixed;top:calc(12px + env(safe-area-inset-top));left:env(safe-area-inset-left);right:env(safe-area-inset-right);z-index:1;margin:0;padding:0 16px;display:block;overflow:hidden;color:var(--text);font-family:var(--serif);font-size:.95rem;font-weight:500;letter-spacing:.08em;text-align:center;text-overflow:ellipsis;white-space:nowrap;opacity:.32;pointer-events:none;user-select:none;-webkit-user-select:none}html.speed-page[data-theme=light].minimal-mode .minimal-ref:not([hidden]){opacity:.3}html.speed-page .minimal-mode .rsvp-stage{margin-top:0}html.speed-page .speed-scale{touch-action:pan-y;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}html.speed-page .speed-scale input[type=range]{pointer-events:none}html.speed-page .brand{display:flex;align-items:center;gap:8px;flex:none}@media(max-width:420px){html.speed-page .select-wrap select{width:min(196px,calc(100vw - 212px))}}@media(max-width:389px){html.speed-page .site-header{width:calc(100% - 16px)}html.speed-page .brand{gap:4px}html.speed-page .header-actions{gap:6px}html.speed-page .header-actions .icon-button{width:38px;height:38px}html.speed-page .select-wrap select{width:min(196px,calc(100vw - 180px));height:38px;padding-right:21px}html.speed-page .select-wrap>.select-value{left:9px;right:21px;font-size:.75rem;letter-spacing:0}html.speed-page .select-wrap>span:not(.select-value){right:7px}}html.speed-page .site-header{opacity:.35;transition:opacity .16s ease}html.speed-page .site-header:hover, html.speed-page .site-header:focus-within{opacity:.7}html.speed-page .reader-controls{opacity:.35;transition:opacity .16s ease}html.speed-page .reader-controls:hover, html.speed-page .reader-controls:focus-within, html.speed-page .reader-controls[data-pressed]{opacity:.7}@media(prefers-reduced-motion:reduce){html.speed-page .site-header, html.speed-page .reader-controls{transition:none}}html.speed-page .book-mode .site-header{gap:14px;padding-top:max(0px,env(safe-area-inset-top))}html.speed-page .back-link{min-height:44px;padding:0 16px;display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:3px;color:var(--text);background:var(--glass-surface);font-size:.86rem;text-decoration:none;white-space:nowrap}html.speed-page .back-link:hover, html.speed-page .back-link:focus-visible{border-color:var(--border-strong);background:var(--surface-hover)}html.speed-page .book-line{margin:0;min-width:0;flex:1;color:var(--muted);font-size:.86rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html.speed-page .book-line strong{color:var(--text)}html.speed-page .book-mode .icon-button{min-width:44px;min-height:44px}html.speed-page .book-card{display:flex;flex-direction:column;align-items:stretch}html.speed-page .book-card .reference-rule.status{cursor:pointer}html.speed-page .book-card .reference-rule.status:disabled{cursor:default}html.speed-page .pill-text{min-width:0;display:flex;white-space:nowrap}html.speed-page .pill-name{min-width:0;overflow:hidden;text-overflow:ellipsis}html.speed-page .pill-para{flex-shrink:0;white-space:pre}html.speed-page .book-controls .nav-short{display:none}html.speed-page .sec-head{margin:14px 0 0;text-align:center}html.speed-page .sec-title{margin:0;color:var(--text);font-family:var(--serif);font-size:1.15rem;font-weight:500}html.speed-page .sec-meta{margin:4px 0 0;color:var(--muted);font-size:.8rem}html.speed-page .book-loading{text-align:center}html.speed-page .book-loading p{margin:0}html.speed-page .loading-title{color:var(--text);font-family:var(--serif)}html.speed-page .loading-text{color:var(--muted);font-size:.85rem}html.speed-page .context{margin:6px auto 0;max-width:60ch;color:var(--muted);font-family:var(--serif);font-size:.98rem;line-height:1.5;text-align:center}html.speed-page .ctx-current{color:var(--text);font-weight:700;text-decoration:underline;text-underline-offset:3px}html.speed-page .boundary-row{min-height:44px;margin-top:8px;display:flex;justify-content:center}html.speed-page .boundary-btn{min-height:44px;min-width:44px;padding:0 18px;border:1px solid var(--border-strong);border-radius:3px;background:transparent;color:var(--text);font-size:.86rem;text-decoration:underline;text-underline-offset:3px}html.speed-page .boundary-btn[aria-pressed=true]{border-color:var(--accent-bright);color:var(--accent-bright)}html.speed-page .boundary-btn:focus-visible{outline:2px solid var(--accent-bright);outline-offset:2px}html.speed-page .error-actions{display:flex;gap:14px;justify-content:center;align-items:center;flex-wrap:wrap}html.speed-page .error-reader{min-height:44px;display:inline-flex;align-items:center;color:var(--accent-bright)}html.speed-page .sr-status{margin:12px 0 0;padding-left:10px;border-left:3px solid var(--accent);color:var(--text);font-size:.86rem;font-weight:600}html.speed-page .sr-status:empty{display:none}html.speed-page .progress{margin-top:10px}html.speed-page .progress-text{margin:0 0 6px;color:var(--muted);font-size:.78rem}html.speed-page .progress-bar{height:4px;border-radius:2px;background:color-mix(in srgb,var(--text) 20%,var(--bg));overflow:hidden}html.speed-page .progress-bar i{display:block;width:0;height:100%;background:var(--accent-bright)}html.speed-page .book-controls .nav-bottom strong{display:block;font-family:var(--serif);font-weight:500}html.speed-page .book-controls .play-toggle{display:flex;align-items:center;justify-content:center;gap:10px}html.speed-page .book-controls .play-toggle small{margin:0}html.speed-page .book-controls .play-toggle:disabled{cursor:progress}html.speed-page .book-footer{padding-bottom:max(22px,env(safe-area-inset-bottom))}html.speed-page .book-footer a{color:var(--accent-bright)}html.speed-page .footer-privacy-line{margin:4px 0 0;white-space:nowrap}html.speed-page .legend-item{margin-left:10px;white-space:nowrap}html.speed-page .toast{position:fixed;z-index:40;left:50%;bottom:max(18px,env(safe-area-inset-bottom));max-width:min(460px,calc(100vw - 24px));padding:12px 16px;transform:translate(-50%);border:1px solid var(--border-strong);border-radius:4px;background:var(--surface-solid);color:var(--text);font-size:.88rem}html.speed-page .book-settings{top:max(92px,calc(env(safe-area-inset-top) + 80px))}html.speed-page .settings-group{display:grid;gap:14px}html.speed-page .group-title{margin:0;padding-bottom:6px;border-bottom:1px solid var(--border);color:var(--muted);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}html.speed-page .switch-row{grid-template-columns:1fr auto;align-items:center;column-gap:12px}html.speed-page .switch-row .switch-help{grid-column:1 / -1}html.speed-page .switch-label{color:var(--text);font-size:.9rem}html.speed-page .switch-help{margin:0;color:var(--muted);font-size:.8rem}html.speed-page .switch{min-width:84px;min-height:44px;padding:0 10px 0 6px;display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border-strong);border-radius:999px;background:transparent;color:var(--text);font-size:.85rem;font-weight:700}html.speed-page .switch .knob{width:30px;height:30px;border-radius:50%;border:1px solid var(--border-strong);background:var(--surface-solid)}html.speed-page .switch[aria-checked=true]{flex-direction:row-reverse;padding:0 6px 0 12px;border-color:var(--accent-bright);background:color-mix(in srgb,var(--accent) 22%,transparent)}html.speed-page .switch[aria-checked=true] .knob{background:var(--accent-bright)}html.speed-page .switch:focus-visible{outline:2px solid var(--accent-bright);outline-offset:2px}html.speed-page .shortcut-list{margin:0;padding:0;list-style:none;display:grid;gap:6px;color:var(--text);font-size:.85rem}html.speed-page .shortcut-list li.off{color:var(--muted)}html.speed-page .pauses summary{min-height:44px;padding:4px 0;cursor:pointer;color:var(--text)}html.speed-page .pauses summary .setting-label-text{color:var(--muted);font-size:.63rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}html.speed-page .pauses summary .setting-value{display:block;margin-top:4px;font-size:.82rem}html.speed-page .pauses[open]{gap:8px}html.speed-page .book-picker .picker-card{display:flex;flex-direction:column;max-height:min(80vh,720px)}html.speed-page .picker-top{display:flex;align-items:center;justify-content:space-between;gap:12px}html.speed-page .picker-top h1{margin:0;font-family:var(--serif);font-size:1.35rem;font-weight:500}html.speed-page .picker-list{overflow-y:auto;min-height:0;margin-top:10px}html.speed-page .picker-rows{margin:0 0 10px;padding:0;list-style:none}html.speed-page .picker-row{width:100%;min-height:44px;padding:8px 10px;display:block;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);font-size:.9rem;text-align:left}html.speed-page .picker-row:hover, html.speed-page .picker-row:focus-visible{background:var(--surface-hover)}html.speed-page .picker-row.current{border-left:3px solid var(--accent-bright)}html.speed-page .row-read{color:var(--muted)}html.speed-page .picker-note{margin:10px 0 0;color:var(--muted);font-size:.8rem}html.speed-page .picker-note a{color:var(--accent-bright)}html.speed-page .resume-dialog{width:min(480px,calc(100vw - 24px));padding:22px;border:1px solid var(--border-strong);border-radius:4px;background:var(--surface-solid);color:var(--text)}html.speed-page .resume-dialog::backdrop{background:#0000008c}html.speed-page .resume-meta{color:var(--muted);font-size:.86rem}html.speed-page .resume-actions{display:grid;gap:10px}html.speed-page .panel-button{min-height:44px;padding:0 14px;border:1px solid var(--border-strong);border-radius:3px;background:transparent;color:var(--text)}html.speed-page .panel-button.primary{border-color:var(--accent-bright);background:color-mix(in srgb,var(--accent) 26%,transparent);font-weight:700}html.speed-page .link-button{min-height:44px;border:0;background:transparent;color:var(--accent-bright);text-decoration:underline}html.speed-page .resume-foot{margin-top:12px;display:flex;justify-content:flex-end}@media(max-width:720px){html.speed-page{--word-size: 2.5rem}html.speed-page .book-header{flex-wrap:wrap}html.speed-page .book-line{order:10;flex:1 0 100%;padding-bottom:10px}html.speed-page .book-controls .nav-long{display:none}html.speed-page .book-controls .nav-short{display:inline}html.speed-page .book-header .wordmark{gap:0;font-size:1rem;letter-spacing:.02em;white-space:nowrap}html.speed-page .book-mode .book-header .wordmark>.wordmark-text{display:inline}html.speed-page .book-picker{place-items:end center;padding:0}html.speed-page .book-picker .picker-card{width:100%;max-height:85vh;border-radius:6px 6px 0 0;padding-bottom:max(16px,env(safe-area-inset-bottom))}html.speed-page .legend-item{display:none}}@media(max-width:360px){html.speed-page .back-link{padding:0 10px;font-size:.8rem}html.speed-page .book-controls .nav-bottom{padding:0 10px}html.speed-page .book-mode main{padding-top:10px}html.speed-page .book-card.word-card{padding:22px 10px 18px;min-height:0}html.speed-page .context{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}html.speed-page .context[hidden]{display:none}}@media(orientation:landscape)and (max-height:500px){html.speed-page .book-card{max-height:45vh;min-height:0;padding-top:12px;padding-bottom:12px;overflow:hidden}html.speed-page .sec-head, html.speed-page .context{display:none}html.speed-page .book-mode{--word-size: 2.2rem}html.speed-page .book-mode main{padding-top:6px;padding-bottom:12px}html.speed-page .book-header{min-height:56px;padding-top:max(4px,env(safe-area-inset-top));padding-bottom:4px}html.speed-page .book-card .rsvp-stage{margin-top:2px;padding:4px 0}html.speed-page .book-card{padding-top:6px;padding-bottom:6px}}@media(prefers-reduced-motion:reduce){html.speed-page .progress-bar i{transition:none}}html.speed-page .minimal-mode .book-footer{display:flex}html.speed-page .book-header{padding-left:max(0px,env(safe-area-inset-left));padding-right:max(0px,env(safe-area-inset-right))}html.speed-page .book-mode main{padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right))}@media(max-width:420px){html.speed-page .book-mode .site-header{gap:8px}html.speed-page .book-mode main{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}}html.speed-page #footer-reader{display:inline-flex;align-items:center;min-height:44px}html.speed-page .back-short{display:none}@media(max-width:420px){html.speed-page .back-link{padding:0 10px;font-size:.8rem}html.speed-page .book-header .brand{gap:6px}}@media(max-width:389px){html.speed-page .back-link{padding:0 8px}}@media(max-width:340px){html.speed-page .book-mode .site-header{gap:6px}html.speed-page .book-header .wordmark{font-size:.9rem}}html.speed-page .book-header .ap-link{min-width:44px;min-height:44px;margin:-5px;justify-content:center}@media(max-width:374px){html.speed-page .back-link{position:relative}html.speed-page .back-link .back-long{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}html.speed-page .back-link .back-short{display:inline}}html.speed-page .book-mode[data-chrome=fade] .site-header, html.speed-page .book-mode[data-chrome=fade] .reader-controls, html.speed-page .book-mode[data-chrome=fade] .site-header:hover, html.speed-page .book-mode[data-chrome=fade] .reader-controls:hover, html.speed-page .book-mode[data-chrome=fade] .site-header:focus-within, html.speed-page .book-mode[data-chrome=fade] .reader-controls:focus-within, html.speed-page .book-mode[data-chrome=fade] .site-header:has(:focus-visible), html.speed-page .book-mode[data-chrome=fade] .reader-controls:has(:focus-visible), html.speed-page .book-mode[data-chrome=fade] .site-header:active, html.speed-page .book-mode[data-chrome=fade] .reader-controls:active, html.speed-page .book-mode[data-chrome=fade] .reader-controls[data-pressed]{opacity:.65;transition:none}html.speed-page .book-mode[data-chrome=solid] .site-header, html.speed-page .book-mode[data-chrome=solid] .reader-controls{opacity:1;transition:none}


/* scoped to html.scroll-page */
/* Codex Scroll mode — motion styles from bible_scroller, book chrome of our own. */
html.scroll-page{
  color-scheme: light;
  --bg: #ffffff;
  --ink: #16120e;
  --ink-quiet: #5c564e;
  --rule: rgba(40, 24, 12, 0.18);
  --accent: #8a4b12;
  --panel: #ffffff;
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, "Times New Roman", serif;
  --ui: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --measure: 32em;
  --verse-size: clamp(1.3rem, 0.95rem + 1.5vw, 2.15rem);
  --leading: 1.62;
  --gap: 1.9em;
}
html.scroll-page[data-theme="dark"]{
  color-scheme: dark;
  --bg: #1c2027;
  --ink: #e4e8ee;
  --ink-quiet: #b3b7be;
  --rule: rgba(196, 206, 222, 0.26);
  --accent: #e6a65a;
  --panel: #262b34;
}
html.scroll-page[data-size="s"]{ --verse-size: clamp(1.05rem, 0.8rem + 1vw, 1.5rem); }
html.scroll-page[data-size="m"]{ --verse-size: clamp(1.3rem, 0.95rem + 1.5vw, 2.15rem); }
html.scroll-page[data-size="l"]{ --verse-size: clamp(1.5rem, 1.1rem + 1.8vw, 2.5rem); }
html.scroll-page[data-size="xl"]{ --verse-size: clamp(1.75rem, 1.2rem + 2.2vw, 3rem); }

html.scroll-page *{ box-sizing: border-box; }
html.scroll-page, html.scroll-page body{ margin: 0; min-height: 100%; background: var(--bg); color: var(--ink); }
html.scroll-page body{
  -webkit-font-smoothing: antialiased;
  font-family: var(--ui);
  overflow: hidden;
  height: 100%;
}
html.scroll-page button{ font: inherit; color: inherit; background: none; border: 1px solid var(--rule); border-radius: 999px; cursor: pointer; }
html.scroll-page button:focus-visible, html.scroll-page a:focus-visible{ outline: 2px solid var(--accent); outline-offset: 2px; }

html.scroll-page .site-header{
  position: fixed; top: 0; left: 0; right: 0; z-index: 20;
  display: flex; align-items: center; gap: 0.6rem;
  min-height: 52px;
  padding: max(0.4rem, env(safe-area-inset-top)) 0.75rem 0.4rem;
  background: color-mix(in oklab, var(--bg) 88%, transparent);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--rule);
  font-family: var(--ui);
}
html.scroll-page .ap-link, html.scroll-page .back-link{ color: inherit; text-decoration: none; min-height: 44px; display: inline-flex; align-items: center; padding: 0 0.4rem; }
html.scroll-page .wordmark-mark{ font-weight: 700; letter-spacing: 0.06em; }
html.scroll-page .book-line{ margin: 0; flex: 1; min-width: 0; font-size: 0.92rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
html.scroll-page .book-line strong{ font-weight: 600; }

html.scroll-page #stage{
  position: fixed; inset: 0; top: 52px; bottom: 7.5rem;
  overflow: hidden; background: var(--bg);
  transition: bottom 0.28s ease;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 12%, #000 82%, transparent 100%);
          mask-image: linear-gradient(to bottom, transparent 0, #000 12%, #000 82%, transparent 100%);
}
html.scroll-page body.state-running #stage{ bottom: 0; }
html.scroll-page #track{
  position: absolute; left: 0; right: 0; top: 0;
  padding: 0 max(1.5rem, env(safe-area-inset-left)) 0 max(1.5rem, env(safe-area-inset-right));
  will-change: transform;
}
html.scroll-page .item{
  max-width: var(--measure); margin: 0 auto var(--gap);
  font-family: var(--serif); font-size: var(--verse-size); line-height: var(--leading);
}
html.scroll-page .item p{ margin: 0; }
html.scroll-page .ref{
  display: block; margin-bottom: 0.35em;
  font-family: var(--ui); font-size: 0.42em; line-height: 1.2; font-weight: 500;
  letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-quiet);
}


html.scroll-page .controls{
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 20;
  display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; justify-content: center;
  padding: 0.6rem 0.75rem max(0.8rem, env(safe-area-inset-bottom));
  background: color-mix(in oklab, var(--bg) 90%, transparent);
  border-top: 1px solid var(--rule);
  transform: translateY(0);
  transition: transform 0.28s ease;
}
html.scroll-page body.state-running .controls{
  transform: translateY(100%);
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
  html.scroll-page #stage, html.scroll-page .controls{ transition: none; }
}
html.scroll-page .controls button{ min-height: 44px; padding: 0 0.9rem; }
html.scroll-page .controls button[aria-checked="true"], html.scroll-page .controls button.primary{
  background: var(--ink); color: var(--bg); border-color: var(--ink);
}
html.scroll-page[data-theme="dark"] .controls button[aria-checked="true"], html.scroll-page[data-theme="dark"] .controls button.primary{ background: var(--ink); color: var(--bg); }
html.scroll-page .group{ display: flex; gap: 0.25rem; flex-wrap: wrap; justify-content: center; }
html.scroll-page .status{ margin: 0; width: 100%; text-align: center; font-size: 0.82rem; color: var(--ink-quiet); }

html.scroll-page .picker-backdrop{
  position: fixed; inset: 0; z-index: 40;
  background: rgba(0,0,0,0.4);
  display: flex; align-items: flex-end; justify-content: center;
}
html.scroll-page .picker-backdrop[hidden]{ display: none !important; }
html.scroll-page .picker-card{
  background: var(--panel); color: var(--ink);
  width: min(32rem, 100%);
  max-height: 80vh; overflow: auto;
  border-radius: 16px 16px 0 0;
  padding: 1rem 1rem 1.5rem;
}
html.scroll-page .picker-card h1{ margin: 0 0 0.6rem; font-size: 1.1rem; }
html.scroll-page .picker-list button{
  display: block; width: 100%; text-align: left; border-radius: 10px; margin: 0.2rem 0; padding: 0.7rem 0.8rem;
}
html.scroll-page .picker-group{ font-size: 0.75rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-quiet); margin: 0.8rem 0 0.2rem; }

html.scroll-page #boot, html.scroll-page #error{ position: fixed; inset: 0; display: grid; place-items: center; padding: 2rem; text-align: center; }
html.scroll-page #error[hidden], html.scroll-page #boot[hidden]{ display: none !important; }

@media (min-width: 800px) {
  html.scroll-page .picker-backdrop{ align-items: center; }
  html.scroll-page .picker-card{ border-radius: 16px; }
}
