:root {
  color-scheme: light dark;
  --bg: #f7f6f2;
  --surface: #ffffff;
  --surface-2: #efeee9;
  --text: #171714;
  --muted: #66645d;
  --line: #d8d5cc;
  --accent: #1c5e4b;
  --accent-2: #124335;
  --focus: #8b3d00;
  --shadow: 0 10px 30px rgba(0,0,0,.08);
  --font-scale: 1;
  --reader: 72ch;
}
html[data-theme="dark"] {
  color-scheme: dark;
  --bg: #111411; --surface:#181d19; --surface-2:#222822; --text:#f1f4ee; --muted:#b3baaf; --line:#394039; --accent:#84cdb4; --accent-2:#b6e5d4; --focus:#ffb777; --shadow:0 10px 30px rgba(0,0,0,.35);
}
@media (prefers-color-scheme: dark) {
  html[data-theme="system"] { color-scheme:dark; --bg:#111411; --surface:#181d19; --surface-2:#222822; --text:#f1f4ee; --muted:#b3baaf; --line:#394039; --accent:#84cdb4; --accent-2:#b6e5d4; --focus:#ffb777; --shadow:0 10px 30px rgba(0,0,0,.35); }
}
html[data-font-size="small"] { --font-scale: .9; }
html[data-font-size="default"] { --font-scale: 1; }
html[data-font-size="large"] { --font-scale: 1.18; }
html[data-font-size="xlarge"] { --font-scale: 1.38; }
* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--bg); }
body { margin:0; background:var(--bg); color:var(--text); font-family: ui-serif, Georgia, Cambria, "Times New Roman", serif; font-size:calc(18px * var(--font-scale)); line-height:1.62; overflow-wrap:anywhere; }
a { color:var(--accent); text-decoration-thickness:.08em; text-underline-offset:.16em; }
a:hover { color:var(--accent-2); }
a:focus-visible, button:focus-visible, select:focus-visible, input:focus-visible, summary:focus-visible { outline:3px solid var(--focus); outline-offset:3px; border-radius:.2rem; }
.skip-link { position:fixed; z-index:1000; left:1rem; top:1rem; transform:translateY(-160%); padding:.65rem .9rem; background:var(--surface); color:var(--text); border:1px solid var(--line); border-radius:.4rem; box-shadow:var(--shadow); }
.skip-link:focus { transform:none; }
.site-header { position:sticky; top:0; z-index:40; background:color-mix(in srgb, var(--surface) 94%, transparent); backdrop-filter:blur(12px); border-bottom:1px solid var(--line); }
.header-inner { max-width:1480px; margin:auto; min-height:3.5rem; padding:.45rem 1rem; display:flex; gap:.75rem; align-items:center; }
.brand { font-family: ui-sans-serif, system-ui, sans-serif; font-weight:750; color:var(--text); text-decoration:none; white-space:nowrap; }
.top-nav { display:flex; gap:.65rem; align-items:center; margin-left:auto; font:600 .84rem/1.2 ui-sans-serif, system-ui, sans-serif; }
.top-nav a { color:var(--text); text-decoration:none; padding:.4rem .48rem; }
.utility { display:flex; gap:.45rem; align-items:center; }
.utility label { display:flex; gap:.35rem; align-items:center; font:600 .76rem/1.1 ui-sans-serif,system-ui,sans-serif; color:var(--muted); }
select, input[type="search"] { background:var(--surface); color:var(--text); border:1px solid var(--line); border-radius:.4rem; padding:.36rem .5rem; font:inherit; }
.menu-button { display:none; border:1px solid var(--line); background:var(--surface); color:var(--text); border-radius:.4rem; padding:.45rem .6rem; font:600 .82rem ui-sans-serif,system-ui,sans-serif; }
.progress-track { position:absolute; left:0; right:0; bottom:-1px; height:3px; background:transparent; }
.progress-bar { display:block; width:0; height:100%; background:var(--accent); }
.reader-layout { max-width:1480px; margin:auto; display:grid; grid-template-columns:minmax(14rem, 18rem) minmax(0, 1fr); gap:clamp(1rem,3vw,3.5rem); padding:1.6rem 1.2rem 4rem; align-items:start; }
.reader-sidebar { position:sticky; top:4.5rem; max-height:calc(100vh - 5.5rem); overflow:auto; padding-right:.5rem; font:500 .84rem/1.35 ui-sans-serif,system-ui,sans-serif; }
.reader-sidebar h2 { font-size:.76rem; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); margin:.3rem 0 .7rem; }
.toc-list { list-style:none; margin:0; padding:0; }
.toc-list li { margin:.12rem 0; }
.toc-list a { display:block; padding:.32rem .44rem; border-radius:.35rem; color:var(--muted); text-decoration:none; }
.toc-list a:hover { background:var(--surface-2); color:var(--text); }
.toc-list a[aria-current="page"] { background:var(--surface-2); color:var(--text); font-weight:700; box-shadow:inset 3px 0 var(--accent); }
.toc-list .part-link { margin-top:.7rem; color:var(--text); font-weight:750; }
.reader-main { min-width:0; }
.book-article { width:min(100%, var(--reader)); margin:0 auto; background:var(--surface); border:1px solid var(--line); border-radius:.75rem; padding:clamp(1.15rem,4vw,3.1rem); box-shadow:var(--shadow); }
.book-article.landing { width:min(100%, 82ch); }
.book-article h1, .book-article h2, .book-article h3, .book-article h4 { line-height:1.16; text-wrap:balance; overflow-wrap:normal; hyphens:auto; }
.book-article h1 { font-size:clamp(2rem, 5vw, 3.4rem); margin:.1rem 0 1.25rem; }
.book-article h2 { font-size:clamp(1.55rem,3.5vw,2.25rem); margin:2.35rem 0 .85rem; }
.book-article h3 { font-size:clamp(1.22rem,2.4vw,1.6rem); margin:1.7rem 0 .65rem; }
.book-article p, .book-article li, .book-article dd { text-wrap:pretty; }
.book-article p { margin:.85em 0; }
.book-article blockquote { border-left:.22rem solid var(--accent); margin:1.5rem 0; padding:.3rem 0 .3rem 1.2rem; color:var(--muted); }
.callout, .card { margin:1.45rem 0; padding:1rem 1.15rem; border:1px solid var(--line); border-radius:.6rem; background:var(--surface-2); }
.callout > :first-child, .card > :first-child { margin-top:0; }
.callout > :last-child, .card > :last-child { margin-bottom:0; }
.source-page { position:relative; }
.page-anchor, .cid-anchor { display:block; position:relative; top:-5rem; visibility:hidden; width:0; height:0; }
.book-article img { max-width:100%; height:auto; }
figure { margin:2rem auto; max-width:100%; }
figure img { display:block; max-width:100%; height:auto; margin:auto; object-fit:contain; }
figure.clean-figure { padding:.35rem; border-radius:.45rem; background:var(--surface); }
figure[hidden], .deferred-figure { display:none !important; }
figcaption { font-size:.9em; color:var(--muted); margin-top:.55rem; text-align:center; }
.figure-tools { display:flex; justify-content:center; gap:.6rem; margin-top:.55rem; }
.figure-zoom { border:1px solid var(--line); background:var(--surface-2); color:var(--text); border-radius:.4rem; padding:.42rem .7rem; cursor:pointer; font:600 .78rem ui-sans-serif,system-ui,sans-serif; }
.figure-description { margin:1rem 0 1.5rem; border:1px solid var(--line); border-radius:.55rem; background:var(--surface-2); padding:.2rem .9rem .75rem; }
.figure-description summary { cursor:pointer; font:700 .9rem ui-sans-serif,system-ui,sans-serif; padding:.7rem 0; }
.figure-description-body { font-size:.94em; }
.figure-description-body h2, .figure-description-body h3 { font-size:1.1em; margin:1rem 0 .4rem; }
.table-scroll { max-width:100%; overflow-x:auto; overscroll-behavior-inline:contain; margin:1.4rem 0; border:1px solid var(--line); border-radius:.45rem; }
table { width:100%; border-collapse:collapse; font-size:.88em; background:var(--surface); }
th, td { border:1px solid var(--line); padding:.48rem .6rem; text-align:left; vertical-align:top; min-width:6rem; }
th { background:var(--surface-2); font-weight:750; }
.chapter-nav { width:min(100%, var(--reader)); margin:1.25rem auto 0; display:grid; grid-template-columns:1fr auto 1fr; gap:.75rem; align-items:stretch; font:600 .88rem/1.3 ui-sans-serif,system-ui,sans-serif; }
.chapter-nav a { display:flex; align-items:center; min-height:3rem; padding:.65rem .8rem; background:var(--surface); border:1px solid var(--line); border-radius:.55rem; text-decoration:none; box-shadow:0 4px 18px rgba(0,0,0,.03); }
.chapter-nav .next { justify-content:flex-end; text-align:right; }
.chapter-nav .contents { justify-content:center; }
.landing-actions { display:flex; flex-wrap:wrap; gap:.7rem; margin:1.4rem 0 2rem; font:700 .9rem ui-sans-serif,system-ui,sans-serif; }
.button-link { display:inline-flex; align-items:center; justify-content:center; min-height:2.7rem; padding:.65rem .9rem; border:1px solid var(--accent); border-radius:.5rem; text-decoration:none; }
.button-link.primary { color:white; background:var(--accent-2); }
html[data-theme="dark"] .button-link.primary { color:#07110d; background:var(--accent); }
.continue-link[hidden] { display:none; }
.web-intro { font-family:ui-sans-serif,system-ui,sans-serif; color:var(--muted); font-size:.94em; }
.downloads { display:flex; flex-wrap:wrap; gap:.6rem; margin:1rem 0; font:600 .85rem ui-sans-serif,system-ui,sans-serif; }
.web-contents { width:min(100%, 84ch); margin:auto; background:var(--surface); border:1px solid var(--line); border-radius:.75rem; padding:clamp(1.2rem,4vw,3rem); box-shadow:var(--shadow); }
.web-contents ol { padding-left:1.3rem; }
.web-contents .toc-part { margin-top:1.15rem; font-weight:750; }
.search-page { width:min(100%, 84ch); margin:auto; background:var(--surface); border:1px solid var(--line); border-radius:.75rem; padding:clamp(1.2rem,4vw,3rem); box-shadow:var(--shadow); }
.search-form { display:flex; gap:.6rem; margin:1.3rem 0 1.6rem; }
.search-form input { flex:1; min-width:0; padding:.65rem .75rem; }
.search-form button { border:0; border-radius:.45rem; background:var(--accent-2); color:#fff; padding:.6rem 1rem; font:700 .9rem ui-sans-serif,system-ui,sans-serif; }
.search-results { list-style:none; padding:0; }
.search-results li { padding:1rem 0; border-top:1px solid var(--line); }
.search-results h2 { font-size:1.1rem; margin:0 0 .25rem; }
.search-results p { margin:.25rem 0; color:var(--muted); }
.site-footer { max-width:1480px; margin:0 auto; padding:1rem 1.2rem 3rem; color:var(--muted); font:500 .78rem/1.4 ui-sans-serif,system-ui,sans-serif; }
dialog { max-width:min(92vw, 72rem); max-height:90vh; border:1px solid var(--line); border-radius:.75rem; background:var(--surface); color:var(--text); box-shadow:0 20px 80px rgba(0,0,0,.4); padding:1rem; }
dialog::backdrop { background:rgba(0,0,0,.62); }
#figure-dialog img { display:block; max-width:calc(92vw - 2rem); max-height:calc(82vh - 4rem); width:auto; height:auto; margin:auto; }
.dialog-bar { display:flex; justify-content:flex-end; margin-bottom:.5rem; }
.dialog-close { border:1px solid var(--line); background:var(--surface-2); color:var(--text); border-radius:.4rem; padding:.45rem .7rem; cursor:pointer; font:700 .82rem ui-sans-serif,system-ui,sans-serif; }
#mobile-toc { width:min(92vw, 28rem); margin:0 0 0 auto; height:100dvh; max-height:100dvh; border-radius:0; padding:1rem; }
.mobile-toc-list { list-style:none; padding:0; font:500 .95rem/1.35 ui-sans-serif,system-ui,sans-serif; }
.mobile-toc-list a { display:block; padding:.55rem .35rem; }
.formula-transcript { margin:.8rem 0 1rem; border:1px solid var(--line); border-radius:.5rem; background:var(--surface-2); padding:.15rem .8rem .7rem; }
.formula-transcript summary { cursor:pointer; font:700 .88rem ui-sans-serif,system-ui,sans-serif; padding:.65rem 0; }
.formula-transcript__content { max-width:100%; }
.formula-exact { font-family: ui-monospace, SFMono-Regular, Consolas, monospace; white-space:pre-wrap; overflow-wrap:anywhere; word-break:normal; margin:.45rem 0 .15rem; }
.timeline { display:grid; grid-template-columns:auto 1fr; gap:.4rem 1rem; }
.timeline dt { font-weight:800; }
.timeline dd { margin:0; }

@media (max-width: 900px) {
  .header-inner { flex-wrap:wrap; }
  .brand { flex:1 1 12rem; min-width:0; }
  .top-nav { margin-left:0; }
  .utility { flex:1 0 100%; width:100%; justify-content:flex-end; }
}
@media (max-width: 1023px) {
  .reader-layout { grid-template-columns:1fr; padding:.8rem .65rem 3rem; }
  .reader-sidebar { display:none; }
  .menu-button { display:inline-flex; }
  .top-nav .desktop-only { display:none; }
  .header-inner { padding-inline:.65rem; }
  .utility label > span { position:absolute; clip:rect(0,0,0,0); clip-path:inset(50%); width:1px; height:1px; overflow:hidden; white-space:nowrap; }
  .book-article { border-radius:.55rem; padding:clamp(1rem,4vw,2rem); }
}
@media (max-width: 560px) {
  body { font-size:calc(17px * var(--font-scale)); }
  .brand { max-width:8.5rem; overflow:hidden; text-overflow:ellipsis; }
  .top-nav { gap:.25rem; }
  .top-nav a { padding:.35rem; }
  .utility { gap:.25rem; }
  .utility select { max-width:6.5rem; font-size:.75rem; }
  .book-article h1 { font-size:clamp(1.75rem,10vw,2.6rem); }
  .chapter-nav { grid-template-columns:1fr 1fr; }
  .chapter-nav .contents { grid-column:1/-1; grid-row:2; }
  .search-form { flex-direction:column; }
}
@media print {
  .site-header,.reader-sidebar,.chapter-nav,.site-footer,.figure-tools,.progress-track,.menu-button { display:none !important; }
  body { background:white; color:black; font-size:11pt; }
  .reader-layout,.book-article { display:block; width:auto; max-width:none; margin:0; padding:0; border:0; box-shadow:none; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior:auto !important; transition-duration:.001ms !important; animation-duration:.001ms !important; animation-iteration-count:1 !important; }
}
