:root {
  /* ui/v2 Literati Editorial palette. */
  --background: #fff8ef;
  --surface-container-lowest: #fff;
  --surface-container-low: #fbf3e3;
  --surface-container: #f5eddd;
  --surface-container-highest: #eae2d2;
  --on-surface: #1e1b12;
  --on-surface-variant: #57423e;
  --primary: #8c271c;
  --on-primary: #fff;
  --primary-container: #ac3e31;
  --primary-fixed: #ffdad5;
  --secondary: #516071;
  --on-secondary: #fff;
  --secondary-fixed: #d4e4f9;
  --on-secondary-fixed-variant: #394858;
  --tertiary: #444d4c;
  --outline: #8b716d;
  --outline-variant: #dec0bb;
  --error: #ba1a1a;
  --wechat: #07c160;
  --wechat-soft: #e1efd9;
  --alipay: #1677ff;
  --alipay-soft: #e7edf8;
  --paypal: #1238a0;
  --paypal-soft: #e3e3e8;

  /* Compatibility aliases keep component and layout rules independent of palette revisions. */
  --paper: var(--background);
  --paper-deep: var(--surface-container);
  --surface: var(--surface-container-lowest);
  --surface-soft: var(--surface-container-low);
  --ink: var(--on-surface);
  --ink-muted: var(--on-surface-variant);
  --green: var(--primary);
  --green-2: var(--primary-container);
  --green-soft: var(--primary-fixed);
  --green-pale: var(--primary-fixed);
  --persimmon: var(--secondary);
  --persimmon-light: var(--primary-fixed);
  --line: var(--outline-variant);
  --line-soft: color-mix(in srgb, var(--outline-variant) 62%, var(--background));
  --focus: var(--secondary);
  --serif: "Roboto Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  --sans: "Roboto Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  --container: 1280px;
  --radius-sm: 4px;
  --radius: 10px;
  --radius-lg: 16px;
  --shadow: 0 10px 30px rgb(140 39 28 / 8%);
}

*, *::before, *::after { box-sizing: border-box; }

html {
  color-scheme: light;
  scroll-behavior: smooth;
}

body {
  margin: 0;
  min-width: 280px;
  background: var(--paper);
  color: var(--ink);
  font: 400 16px/1.75 var(--sans);
  -webkit-font-smoothing: antialiased;
}

img, svg { display: block; max-width: 100%; }
a { color: var(--green); text-underline-offset: .2em; }
a:hover { color: var(--primary-container); }
a:focus-visible, button:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.container {
  width: min(calc(100% - 64px), var(--container));
  margin-inline: auto;
}

.skip-link {
  position: fixed;
  z-index: 100;
  top: 12px;
  left: 12px;
  padding: 10px 16px;
  background: var(--green);
  color: var(--on-primary);
  transform: translateY(-160%);
}
.skip-link:focus { transform: translateY(0); }

.eyebrow {
  margin: 0 0 10px;
  color: var(--persimmon);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .14em;
}

.site-header {
  position: relative;
  z-index: 20;
  min-height: 80px;
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--paper) 94%, transparent);
}

.site-header__inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  min-height: 80px;
}

.wordmark, .footer-wordmark {
  display: inline-flex;
  width: 168px;
  height: 61px;
  align-items: center;
  color: var(--green);
  font: 600 29px/1.2 var(--serif);
  text-decoration: none;
}

.brand-logo {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}

.desktop-nav {
  display: flex;
  gap: 44px;
  height: 80px;
  align-items: stretch;
}

.desktop-nav a {
  position: relative;
  display: grid;
  place-items: center;
  min-width: 44px;
  color: var(--ink);
  text-decoration: none;
}

.desktop-nav a::after {
  position: absolute;
  right: 2px;
  bottom: 20px;
  left: 2px;
  height: 2px;
  background: var(--persimmon);
  content: "";
  opacity: 0;
  transform: scaleX(.5);
  transition: opacity 150ms ease, transform 150ms ease;
}

.desktop-nav a:hover, .desktop-nav a.is-active { color: var(--persimmon); }
.desktop-nav a:hover::after, .desktop-nav a.is-active::after { opacity: 1; transform: scaleX(1); }
.mobile-nav { display: none; justify-self: end; }

.header-actions {
  display: flex;
  justify-self: end;
  align-items: center;
  gap: 8px;
}

.search-link {
  position: relative;
  display: grid;
  width: 44px;
  height: 44px;
  place-items: center;
  color: var(--primary);
  text-decoration: none;
}
.search-link svg { width: 25px; height: 25px; fill: currentColor; }
.search-link:hover { color: var(--primary-container); }
.search-link.is-active { background: var(--primary-fixed); box-shadow: inset 0 -2px var(--primary); }

.announcement {
  display: flex;
  align-items: center;
  gap: 20px;
  margin: 72px 0 64px;
  padding: 20px 26px;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
  background: var(--paper-deep);
}

.announcement__badge {
  flex: 0 0 auto;
  padding: 5px 11px;
  border-radius: var(--radius-sm);
  background: var(--persimmon);
  color: var(--on-secondary);
  font-size: 13px;
  font-weight: 700;
}

.announcement__content { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: baseline; }
.announcement__content strong { font-family: var(--serif); font-size: 17px; }
.announcement__content a { white-space: nowrap; font-weight: 600; }

.category-rail {
  display: none;
  gap: 10px;
  margin-bottom: 40px;
  overflow-x: auto;
  scrollbar-width: thin;
}

.category-rail a, .tag-cloud a {
  flex: 0 0 auto;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--ink);
  text-decoration: none;
}
.category-rail a { min-width: 84px; padding: 7px 20px; text-align: center; }
.category-rail a.is-active, .category-rail a:hover { border-color: var(--green); background: var(--green-pale); color: var(--green); }

.catalog-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 40px;
  margin-bottom: 64px;
  padding-bottom: 26px;
  border-bottom: 1px solid var(--line);
}

.catalog-heading h1, .page-heading h1, .term-heading h1, .book-identity h1, .not-found h1 {
  margin: 0;
  color: var(--green);
  font-family: var(--serif);
  font-weight: 650;
  line-height: 1.2;
}
.catalog-heading h1 { color: var(--ink); font-size: clamp(40px, 4.2vw, 64px); }
.catalog-heading div > p:last-child { margin: 14px 0 0; color: var(--ink-muted); }
.catalog-count { flex: 0 0 auto; margin: 0 0 8px; white-space: nowrap; }

.book-grid {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  gap: 44px 16px;
}

.book-card { min-width: 0; }
.book-card__link { display: block; color: inherit; text-decoration: none; }
.book-card__cover-wrap {
  aspect-ratio: 2 / 3;
  overflow: hidden;
  border: 1px solid var(--line-soft);
  border-radius: 2px;
  background: var(--surface-soft);
  box-shadow: 0 4px 16px rgb(140 39 28 / 6%);
  transition: transform 160ms ease, box-shadow 160ms ease;
}
.book-card__link:hover .book-card__cover-wrap { transform: translateY(-4px); box-shadow: var(--shadow); }
.book-card__link:focus-visible { border-radius: 2px; outline: 3px solid var(--focus); outline-offset: 5px; }
.book-card__link:focus-visible .book-card__cover-wrap { transform: translateY(-3px); }
.book-card__cover, .book-detail__cover { width: 100%; height: 100%; object-fit: cover; }

.book-cover--missing {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  width: 100%;
  height: 100%;
  padding: 28px;
  border: 2px dashed var(--line);
  background: var(--surface-soft);
  color: var(--ink-muted);
  text-align: center;
}
.book-cover--missing svg { fill: currentColor; }
.book-cover--missing strong { color: var(--ink); font: 500 18px/1.5 var(--serif); }
.book-cover--missing span { font-size: 13px; }

.book-card__body { padding-top: 9px; }
.book-card__title {
  display: -webkit-box;
  margin: 0;
  overflow: hidden;
  font: 600 16px/1.4 var(--serif);
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.book-card__author {
  margin: 4px 0 6px;
  overflow: hidden;
  color: var(--ink-muted);
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.book-card__summary {
  display: -webkit-box;
  min-height: 5.1em;
  margin: 0 0 9px;
  overflow: hidden;
  color: var(--ink-muted);
  font-size: 12px;
  line-height: 1.7;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}
.book-card__tags { display: flex; flex-wrap: wrap; gap: 4px; margin: 0; padding: 0; list-style: none; }
.metadata-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.book-card__tag {
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--green-soft);
  color: var(--green);
  font-size: 10px;
  font-weight: 600;
  text-decoration: none;
}
.metadata-tags a {
  padding: 3px 10px;
  border-radius: 999px;
  background: var(--green-soft);
  color: var(--green);
  font-size: 12px;
  font-weight: 600;
  text-decoration: none;
}
.book-card__tag:nth-child(even) { background: var(--paper-deep); color: var(--ink-muted); }
.book-card .book-cover--missing { gap: 8px; padding: 14px; }
.book-card .book-cover--missing svg { width: 30px; height: 30px; }
.book-card .book-cover--missing strong { font-size: 14px; line-height: 1.35; }
.book-card .book-cover--missing span { font-size: 11px; }

.pagination { margin: 72px 0 86px; }
.pagination__track {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  max-width: 100%;
  padding: 4px;
  overflow-x: auto;
}
.pagination a { text-decoration: none; }
.pagination__number, .pagination__edge {
  display: inline-grid;
  flex: 0 0 auto;
  min-width: 44px;
  min-height: 44px;
  place-items: center;
  border-radius: 6px;
  color: var(--ink);
}
.pagination__edge { grid-auto-flow: column; gap: 6px; padding-inline: 10px; }
.pagination__number:hover, .pagination__edge:hover { background: var(--paper-deep); color: var(--green); }
.pagination__number.is-current { background: var(--secondary); color: var(--on-secondary); font-weight: 700; }
.pagination__edge.is-disabled { color: var(--outline); }

.site-footer { border-top: 1px solid var(--line); background: var(--paper-deep); }
.site-footer__inner { display: flex; justify-content: space-between; gap: 48px; padding-block: 58px; }
.footer-wordmark { color: var(--ink); }
.site-footer p { margin: 20px 0 0; color: var(--ink-muted); font-size: 14px; }
.footer-nav { display: flex; align-items: center; gap: 34px; }
.footer-nav a { color: var(--ink-muted); text-decoration: none; }
.footer-nav a:hover { color: var(--primary); }

.search-page { max-width: 980px; padding-bottom: 100px; }
.search-page .page-heading { margin-bottom: 44px; }
.search-form {
  max-width: 820px;
  margin-inline: auto;
  padding: 28px;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
  background: var(--paper-deep);
}
.search-form > label { display: block; margin-bottom: 12px; color: var(--primary); font: 600 20px/1.4 var(--serif); }
.search-form__controls { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; }
.search-form input {
  width: 100%;
  min-height: 52px;
  padding: 10px 16px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  font: inherit;
}
.search-form input::placeholder { color: var(--outline); }
.search-form input:focus-visible { border-color: var(--focus); outline: 3px solid var(--focus); outline-offset: 2px; }
.search-form .button { min-width: 96px; cursor: pointer; }
.search-form > p { margin: 12px 0 0; color: var(--ink-muted); font-size: 13px; }
.search-status { max-width: 820px; margin: 38px auto 14px; color: var(--ink-muted); }
.search-results { max-width: 820px; margin: 0 auto; padding: 0; border-bottom: 1px solid var(--line-soft); list-style: none; }
.search-result { padding: 28px 0; border-top: 1px solid var(--line-soft); }
.search-result__title { margin: 0; font: 600 24px/1.4 var(--serif); }
.search-result__title a { text-decoration-thickness: 1px; }
.search-result__meta { margin: 5px 0 10px; color: var(--secondary); font-size: 13px; font-weight: 600; }
.search-result__summary { margin: 0; color: var(--ink-muted); }
.search-result__tags { display: flex; flex-wrap: wrap; gap: 7px; margin: 14px 0 0; padding: 0; list-style: none; }
.search-result__tags li { padding: 2px 9px; border-radius: 999px; background: var(--primary-fixed); color: var(--primary); font-size: 12px; }
.search-message { max-width: 820px; margin: 24px auto; padding: 18px; border: 1px solid var(--line-soft); background: var(--surface-soft); }
.search-message--error { color: var(--error); }

.page-heading { max-width: 850px; margin: 80px 0 56px; }
.page-heading--centered { margin-inline: auto; text-align: center; }
.page-heading--left { margin-left: 0; }
.page-heading h1 { font-size: clamp(42px, 5vw, 60px); }
.page-heading > p:last-child { margin: 22px 0 0; font-size: 18px; line-height: 1.8; }
.page-heading__lead { margin-top: 20px; }
.listing-page, .taxonomy-index, .term-page, .book-detail-page, .simple-page { padding-bottom: 96px; }

.category-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 32px; padding-bottom: 64px; }
.category-card {
  position: relative;
  display: grid;
  grid-template-columns: 1fr auto;
  min-height: 300px;
  padding: 34px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: color-mix(in srgb, var(--surface) 76%, transparent);
  color: inherit;
  text-decoration: none;
  transition: border-color 150ms ease, transform 150ms ease;
}
.category-card:hover { border-color: var(--green); transform: translateY(-2px); }
.category-card__icon { display: grid; width: 54px; height: 54px; place-items: center; border-radius: 50%; background: var(--green-2); color: var(--on-primary); font: 600 22px var(--serif); }
.category-card__count { align-self: start; padding: 4px 13px; border-radius: 999px; background: var(--green-soft); color: var(--green); font-size: 13px; }
.category-card h2 { grid-column: 1 / -1; align-self: end; margin: 44px 0 8px; color: var(--green); font: 600 28px var(--serif); }
.category-card p { grid-column: 1 / -1; margin: 0; color: var(--ink-muted); }
.category-card__examples { grid-column: 1 / -1; align-self: end; margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--line-soft); color: var(--ink-muted); font-size: 13px; }

.tag-cloud { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px 20px; max-width: 780px; margin: 20px auto 90px; }
.tag-cloud a { display: flex; gap: 12px; min-width: 110px; justify-content: center; padding: 10px 20px; }
.tag-cloud a:hover { border-color: var(--green); background: var(--green-soft); color: var(--green); }
.tag-cloud small { color: var(--ink-muted); }

.term-heading { display: flex; align-items: end; gap: 16px; margin: 80px 0 52px; padding-bottom: 22px; border-bottom: 1px solid var(--line); }
.term-heading .eyebrow { flex-basis: 100%; display: none; }
.term-heading h1 { font-size: 36px; }
.term-heading > span { margin-bottom: 5px; padding: 3px 12px; border-radius: 999px; background: var(--persimmon-light); font-size: 13px; }

.breadcrumbs { margin: 28px 0 52px; }
.breadcrumbs ol { display: flex; flex-wrap: wrap; gap: 10px; margin: 0; padding: 0; list-style: none; }
.breadcrumbs li:not(:last-child)::after { margin-left: 10px; color: var(--line); content: "/"; }
.breadcrumbs a { color: var(--ink-muted); text-decoration: none; }

.book-detail-shell { display: grid; grid-template-areas: "aside main"; grid-template-columns: 310px minmax(0, 1fr); gap: 64px; align-items: start; }
.book-detail-main { grid-area: main; min-width: 0; }
.book-identity { display: grid; grid-template-columns: minmax(220px, 280px) 1fr; gap: 48px; align-items: center; }
.book-identity__cover { margin: 0; }
.book-identity__cover > :first-child { width: 100%; aspect-ratio: 2 / 3; border: 1px solid var(--line-soft); border-radius: 4px; box-shadow: var(--shadow); }
.book-identity__cover > .book-cover--missing { height: auto; }
.book-identity__cover > a { display: inline-block; margin-top: 10px; font-size: 13px; }
.book-identity h1 { color: var(--ink); font-size: clamp(32px, 3.4vw, 48px); }
.book-byline { margin: 10px 0; color: var(--ink-muted); font: 500 24px/1.5 var(--serif); }
.book-deck { max-width: 640px; margin: 18px 0 0; color: var(--ink-muted); font-size: 17px; }
.format-actions {
  display: flex;
  width: min(100%, 200px);
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
  margin-top: 20px;
}
.support-anchor { display: none; margin-top: 18px; }

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 10px 24px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-weight: 700;
  text-decoration: none;
}
.button--primary { background: var(--green); color: var(--on-primary); }
.button--primary:hover { background: var(--green-2); color: var(--on-primary); }
.button--outline { border-color: var(--green); color: var(--green); }
a.button--outline:hover { background: var(--green-pale); color: var(--green-2); }
.format-action { display: grid; gap: 5px; }
.button--download { width: 100%; min-height: 44px; gap: 6px; padding: 7px 16px; font-size: 13px; }
.button--download svg { flex: 0 0 auto; fill: currentColor; }
.button--unavailable { border-color: var(--line); color: var(--ink-muted); cursor: default; }
.format-action__note { color: var(--ink-muted); font-size: 12px; line-height: 1.5; text-align: center; }
.button--accent { width: 100%; border-radius: 8px; background: var(--secondary); color: var(--on-secondary); }
.button--accent:hover { background: var(--on-secondary-fixed-variant); color: var(--on-secondary); }
.button--disabled { width: 100%; border-radius: 8px; background: var(--surface-container-highest); color: var(--ink-muted); cursor: not-allowed; }

.book-metadata { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px 42px; margin: 48px 0 62px; padding: 30px 0; border-block: 1px solid var(--line-soft); }
.book-metadata > div, .rights-note dl > div { display: grid; grid-template-columns: 90px 1fr; gap: 12px; }
.book-metadata dt, .rights-note dt { color: var(--ink-muted); }
.book-metadata dd, .rights-note dd { margin: 0; }
.book-description { max-width: 760px; }
.book-description h2, .rights-note h2, .transparency h2, .timeline > h2 { color: var(--green); font: 600 34px/1.3 var(--serif); }
.book-downloads { max-width: 760px; margin-top: 56px; padding-top: 40px; border-top: 1px solid var(--line-soft); }
.book-downloads h2 { margin: 0 0 20px; color: var(--green); font: 600 28px/1.3 var(--serif); }
.book-downloads__actions { display: grid; max-width: 360px; gap: 16px; }
.book-downloads .format-action__note { text-align: left; }
.rights-note { max-width: 760px; margin-top: 56px; padding: 24px; border-left: 3px solid var(--persimmon); background: var(--surface-soft); }
.rights-note h2 { margin-top: 0; font-size: 24px; }
.rights-note dl { display: grid; gap: 10px; margin-bottom: 0; }

.donation-sidebar { position: sticky; top: 24px; grid-area: aside; padding: 30px; border: 1px solid var(--line-soft); border-radius: var(--radius-lg); background: var(--paper-deep); }
.donation-sidebar h2 { margin: 0 0 20px; color: var(--green); font: 600 25px/1.35 var(--serif); }
.donation-sidebar > p { color: var(--ink-muted); }
.donation-sidebar__qr { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin: 28px 0; }
.donation-sidebar figure { margin: 0; padding: 8px; border: 1px solid var(--line-soft); border-radius: 8px; background: var(--surface-container-lowest); text-align: center; }
.donation-sidebar figure img { width: 100%; height: auto; aspect-ratio: 1; object-fit: contain; }
.donation-sidebar figcaption { padding-top: 6px; color: var(--ink-muted); font-size: 13px; }
.donation-sidebar small { display: block; margin-top: 16px; color: var(--ink-muted); line-height: 1.6; }

.donate-page { max-width: 1040px; padding-bottom: 100px; }
.donate-intro { max-width: 760px; margin: -24px auto 52px; text-align: center; }
.donation-options { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.donation-option { display: flex; min-height: 500px; flex-direction: column; align-items: center; padding: 36px; border: 1px solid var(--line-soft); border-radius: var(--radius-lg); background: var(--paper-deep); text-align: center; }
.payment-icon { display: grid; width: 66px; height: 66px; place-items: center; border-radius: 50%; background: var(--wechat-soft); color: var(--wechat); font: 700 23px var(--serif); }
.payment-icon--alipay { background: var(--alipay-soft); color: var(--alipay); }
.payment-icon--paypal { background: var(--paypal-soft); color: var(--paypal); }
.donation-option h2 { margin: 24px 0 2px; font: 600 26px var(--serif); }
.donation-option > p { margin: 0 0 24px; color: var(--ink-muted); }
.donation-option img { width: min(100%, 220px); height: auto; margin-top: auto; border: 10px solid var(--surface-container-lowest); aspect-ratio: 1; object-fit: contain; }
.donation-option--paypal .button { margin-top: auto; width: 100%; }
.transparency { max-width: 760px; margin: 80px auto 0; padding-top: 42px; border-top: 1px solid var(--line); text-align: center; }
.transparency h2 { margin-top: 0; }

.about-page { max-width: 920px; padding-bottom: 100px; }
.about-prose { max-width: 760px; margin-inline: auto; }
.about-prose h2:first-child { padding: 32px; border: 1px solid var(--line-soft); border-radius: var(--radius); background: var(--surface-soft); }
.timeline { max-width: 760px; margin: 80px auto 0; }
.timeline > h2 { text-align: center; }
.timeline ol { position: relative; margin: 36px 0 0; padding: 0 0 0 32px; list-style: none; }
.timeline ol::before { position: absolute; top: 8px; bottom: 8px; left: 7px; width: 1px; background: var(--line); content: ""; }
.timeline li { position: relative; padding: 0 0 34px; }
.timeline li::before { position: absolute; top: 7px; left: -31px; width: 13px; height: 13px; border: 3px solid var(--paper); border-radius: 50%; background: var(--line); content: ""; }
.timeline li:first-child::before { background: var(--persimmon); }
.timeline time { color: var(--persimmon); font-size: 13px; }
.timeline h3 { margin: 3px 0; color: var(--green); font: 600 23px var(--serif); }
.timeline p { margin: 0; color: var(--ink-muted); }

.simple-page { max-width: 900px; min-height: 65vh; }
.simple-page .prose { max-width: 760px; }
.prose { font-size: 17px; line-height: 1.9; }
.prose h2 { margin: 2em 0 .7em; color: var(--green); font: 600 28px/1.4 var(--serif); }
.prose h3 { color: var(--green); font: 600 22px/1.4 var(--serif); }
.prose p { margin: 0 0 1.35em; }
.prose li { margin: .45em 0; }
.prose code { padding: .12em .35em; border-radius: 4px; background: var(--paper-deep); font-size: .9em; }

.empty-state, .not-found { display: grid; min-height: 52vh; place-items: center; align-content: center; gap: 10px; text-align: center; }
.empty-state svg { fill: var(--line); }
.empty-state h2 { margin: 0; font: 600 28px var(--serif); }
.empty-state p, .not-found p { margin: 0 0 16px; color: var(--ink-muted); }
.not-found h1 { font-size: 48px; }

@media (max-width: 1180px) {
  .book-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); gap-inline: 16px; }
  .book-detail-shell { grid-template-columns: 280px minmax(0, 1fr); gap: 40px; }
  .book-identity { grid-template-columns: 230px 1fr; gap: 34px; }
}

@media (max-width: 900px) {
  .container { width: min(calc(100% - 48px), var(--container)); }
  .book-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap-inline: 16px; }
  .book-detail-shell { grid-template-areas: "main" "aside"; grid-template-columns: 1fr; }
  .donation-sidebar { position: static; max-width: 620px; }
  .support-anchor { display: inline-block; }
  .category-grid { grid-template-columns: 1fr; }
  .donation-options { grid-template-columns: 1fr; max-width: 620px; margin-inline: auto; }
  .donation-option { min-height: auto; }
  .donation-option img, .donation-option--paypal .button { margin-top: 24px; }
  .footer-nav { flex-wrap: wrap; justify-content: end; }
}

@media (max-width: 680px) {
  .container { width: min(calc(100% - 32px), var(--container)); }
  .site-header, .site-header__inner { min-height: 66px; }
  .site-header__inner { grid-template-columns: 1fr auto; }
  .wordmark { width: 142px; height: 51px; }
  .desktop-nav { display: none; }
  .header-actions { gap: 0; }
  .mobile-nav { position: relative; display: block; }
  .mobile-nav summary { display: grid; width: 46px; height: 46px; place-content: center; gap: 5px; cursor: pointer; list-style: none; }
  .mobile-nav summary::-webkit-details-marker { display: none; }
  .mobile-nav summary span { width: 24px; height: 2px; background: var(--green); transition: transform 150ms ease, opacity 150ms ease; }
  .mobile-nav[open] summary span:first-child { transform: translateY(7px) rotate(45deg); }
  .mobile-nav[open] summary span:nth-child(2) { opacity: 0; }
  .mobile-nav[open] summary span:last-child { transform: translateY(-7px) rotate(-45deg); }
  .mobile-nav nav { position: absolute; top: 52px; right: 0; display: grid; min-width: 180px; padding: 8px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); box-shadow: var(--shadow); }
  .mobile-nav nav a { min-height: 44px; padding: 8px 14px; border-radius: 6px; color: var(--ink); text-decoration: none; }
  .mobile-nav nav a.is-active { background: var(--green-pale); color: var(--green); font-weight: 700; }

  .announcement { align-items: flex-start; margin: 22px 0 40px; padding: 18px; }
  .announcement__badge { margin-top: 2px; }
  .announcement__content { display: block; }
  .announcement__content strong { display: block; }
  .announcement__content a { display: inline-block; margin-top: 6px; }
  .category-rail { display: flex; }
  .catalog-heading { align-items: start; margin-bottom: 34px; padding-bottom: 20px; }
  .catalog-heading .eyebrow, .catalog-heading div > p:last-child, .catalog-count { display: none; }
  .catalog-heading h1 { font-size: 36px; }
  .book-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 34px 22px; }
  .book-card__body { padding-top: 10px; }
  .book-card__title { font-size: 19px; }
  .book-card__author { min-height: 1.7em; margin-bottom: 6px; font-size: 13px; }
  .book-card__summary { min-height: 3.2em; font-size: 12px; line-height: 1.6; -webkit-line-clamp: 2; }
  .book-card__tags { gap: 4px; }
  .book-card__tag { padding: 2px 7px; font-size: 10px; }
  .book-card .book-cover--missing { gap: 10px; padding: 18px; }
  .book-card .book-cover--missing svg { width: 36px; height: 36px; }
  .book-card .book-cover--missing strong { font-size: 16px; line-height: 1.4; }
  .book-card .book-cover--missing span { font-size: 12px; }
  .pagination { margin: 48px 0 62px; }
  .pagination__track { justify-content: start; }
  .pagination__edge span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }

  .site-footer__inner { flex-direction: column; align-items: center; padding-block: 54px; text-align: center; }
  .footer-wordmark { width: 168px; height: 61px; }
  .footer-nav { justify-content: center; gap: 14px 24px; }
  .site-footer p { order: 3; }

  .search-page { padding-bottom: 72px; }
  .search-page .page-heading { margin-bottom: 32px; }
  .search-form { padding: 20px; }
  .search-form__controls { grid-template-columns: minmax(0, 1fr) 88px; gap: 8px; }
  .search-form .button { min-width: 0; padding-inline: 14px; }
  .search-status { margin-top: 30px; }
  .search-result { padding: 24px 0; }
  .search-result__title { font-size: 21px; }

  .page-heading { margin: 52px 0 40px; }
  .page-heading h1 { font-size: 40px; }
  .page-heading > p:last-child { font-size: 16px; }
  .category-card { min-height: 250px; padding: 26px; }
  .tag-cloud { margin-bottom: 60px; }
  .term-heading { align-items: start; flex-direction: column; margin-top: 52px; }
  .term-heading h1 { font-size: 30px; }

  .breadcrumbs { margin: 22px 0 32px; font-size: 13px; }
  .book-identity { grid-template-columns: 1fr; }
  .book-identity__cover { width: min(78%, 300px); }
  .book-identity h1 { font-size: 32px; }
  .book-byline { font-size: 21px; }
  .book-metadata { grid-template-columns: 1fr; margin: 38px 0 46px; }
  .book-description h2 { font-size: 30px; }
  .donation-sidebar { padding: 24px; }
  .donation-sidebar__qr { gap: 8px; }
  .donation-options { gap: 18px; }
  .donation-option { padding: 28px 22px; }
  .about-prose h2:first-child { padding: 24px; }
  .prose { font-size: 16px; }
}

@media (max-width: 330px) {
  .book-grid { grid-template-columns: 1fr; }
  .book-card__cover-wrap { max-width: 230px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
