:root {
  --paper:#E7E9E4; --paper-2:#EEF0EB; --ink:#18211E; --muted:#66706A;
  --accent:#2E6C5E; --accent-ink:#24564A; --accent-soft:rgba(46,108,94,.12); --line:#CDD1C9;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
  --mono:ui-monospace,"SF Mono","Cascadia Code",Menlo,Consolas,monospace;
}
@media (prefers-color-scheme:dark){
  :root{--paper:#0F1413;--paper-2:#131A18;--ink:#E6E9E3;--muted:#8B938C;
    --accent:#79B9A8;--accent-ink:#9AD0C1;--accent-soft:rgba(121,185,168,.13);--line:#243029;}
}
:root[data-theme="light"]{--paper:#E7E9E4;--paper-2:#EEF0EB;--ink:#18211E;--muted:#66706A;--accent:#2E6C5E;--accent-ink:#24564A;--accent-soft:rgba(46,108,94,.12);--line:#CDD1C9;}
:root[data-theme="dark"]{--paper:#0F1413;--paper-2:#131A18;--ink:#E6E9E3;--muted:#8B938C;--accent:#79B9A8;--accent-ink:#9AD0C1;--accent-soft:rgba(121,185,168,.13);--line:#243029;}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
a{color:inherit;}

.shell{display:grid;grid-template-columns:320px minmax(0,1fr);max-width:1280px;margin:0 auto;min-height:100vh;}

/* ——— Rail ——— */
.rail{border-right:1px solid var(--line);background:linear-gradient(180deg,var(--paper-2),var(--paper));}
.rail-inner{position:sticky;top:0;max-height:100vh;display:flex;flex-direction:column;padding:30px 24px 16px;gap:18px;}
.rail-head{display:flex;align-items:center;gap:13px;text-decoration:none;}
.rail-emblem{width:42px;height:42px;color:var(--accent);flex:none;}
.rail-mark{font-family:var(--mono);font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:var(--muted);line-height:1.5;}
.rail-mark strong{color:var(--ink);font-weight:600;letter-spacing:.3em;}
.rail-stat{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:var(--muted);display:flex;justify-content:space-between;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:11px 2px;}
.rail-stat b{color:var(--accent-ink);font-weight:600;font-variant-numeric:tabular-nums;}

.search{position:relative;}
.search input{width:100%;font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:3px;padding:9px 11px;}
.search input::placeholder{color:var(--muted);}
.search input:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent);}

.scroller{overflow-y:auto;min-height:0;}
.toc-hd{font-family:var(--mono);font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--muted);padding:2px 0 8px;}
details.toc>summary{font-family:var(--mono);font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--muted);cursor:pointer;padding:6px 0;list-style:none;}
details.toc>summary::-webkit-details-marker{display:none;}
.toc-list{list-style:none;margin:0;padding:0;}
.toc-list a{display:grid;grid-template-columns:44px 1fr;gap:10px;align-items:baseline;padding:5px 8px 5px 10px;text-decoration:none;border-left:2px solid transparent;color:var(--muted);transition:color .18s,border-color .18s,background .18s;}
.toc-list a .n{font-family:var(--mono);font-size:10px;letter-spacing:.02em;color:var(--accent);text-align:right;font-variant-numeric:tabular-nums;}
.toc-list a .t{font-family:var(--serif);font-size:12.5px;line-height:1.35;}
.toc-list a:hover{color:var(--ink);background:var(--accent-soft);}
.toc-list a:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.toc-list li.current a{color:var(--ink);border-left-color:var(--accent);background:var(--accent-soft);}
.toc-list li.current a .t{font-weight:600;}

.results{list-style:none;margin:0;padding:0;}
.results a{display:block;text-decoration:none;padding:8px 10px;border-left:2px solid transparent;transition:background .15s;}
.results a:hover{background:var(--accent-soft);border-left-color:var(--accent);}
.results .rn{font-family:var(--mono);font-size:10px;color:var(--accent);letter-spacing:.04em;}
.results .rt{font-family:var(--serif);font-size:13px;color:var(--ink);line-height:1.3;}
.results .rs{font-size:11.5px;color:var(--muted);line-height:1.4;margin-top:2px;}
.results mark{background:var(--accent-soft);color:var(--accent-ink);padding:0 1px;}
.results .empty{font-family:var(--mono);font-size:11px;color:var(--muted);padding:8px 10px;}
[hidden]{display:none !important;}

/* ——— Document ——— */
.doc{padding:0 clamp(24px,6vw,92px) 90px;background:radial-gradient(130% 60% at 50% -4%,var(--accent-soft),transparent 56%);}
.measure{max-width:40rem;margin:0 auto;}

.hero{text-align:center;padding:clamp(44px,8vh,96px) 0 38px;}
.hero-emblem{width:96px;height:96px;color:var(--accent);margin:0 auto 24px;display:block;}
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.4em;text-transform:uppercase;color:var(--muted);margin:0 0 20px;}
.wordmark{font-family:var(--serif);font-weight:600;font-size:clamp(2.3rem,6vw,3.9rem);line-height:.98;letter-spacing:.015em;margin:0;text-wrap:balance;}
.wordmark span{display:block;}
.rule{height:1px;background:var(--line);width:min(320px,70%);margin:28px auto 24px;position:relative;}
.rule::after{content:"";position:absolute;left:50%;top:-3px;width:1px;height:7px;background:var(--accent);transform:translateX(-50%);}
.thesis{font-family:var(--serif);font-style:italic;font-size:clamp(1.05rem,2.4vw,1.3rem);line-height:1.5;color:var(--ink);max-width:34rem;margin:0 auto;text-wrap:balance;}
.hero-meta{font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-top:28px;}
.hero-meta b{color:var(--accent-ink);font-weight:600;}

.part-label{font-family:var(--mono);font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:14px;margin:52px 0 24px;}
.part-label::after{content:"";height:1px;flex:1;background:var(--line);}

p.body{font-size:1.075rem;line-height:1.72;margin:0 0 1.35em;color:var(--ink);}
p.lede::first-letter{float:left;font-family:var(--serif);font-weight:600;font-size:4.4rem;line-height:.74;padding:.04em .09em 0 0;color:var(--accent);}
ul.list{margin:0 0 1.35em;padding:0;list-style:none;}
ul.list li{position:relative;padding-left:1.4em;margin:0 0 .7em;font-size:1.075rem;line-height:1.65;}
ul.list li::before{content:"";position:absolute;left:.2em;top:.62em;width:6px;height:6px;background:var(--accent);border-radius:50%;}
.subhead{font-family:var(--mono);font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent-ink);margin:38px 0 16px;}

.chapter-open{display:flex;align-items:baseline;gap:22px;margin:8px 0 6px;}
.chapter-num{font-family:var(--serif);font-size:clamp(3rem,9vw,5rem);line-height:.8;color:var(--accent);font-weight:600;}
.chapter-title{font-family:var(--serif);font-weight:600;font-size:clamp(1.6rem,4vw,2.3rem);line-height:1.08;margin:0;text-wrap:balance;}

.cta{margin:44px 0 0;}
.cta a,.pn a{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;text-decoration:none;color:var(--ink);border:1px solid var(--line);padding:12px 18px;border-radius:2px;display:inline-block;transition:background .18s,border-color .18s;}
.cta a:hover,.pn a:hover{background:var(--accent-soft);border-color:var(--accent);}

.pn{max-width:40rem;margin:64px auto 0;padding-top:24px;border-top:1px solid var(--line);display:flex;gap:16px;justify-content:space-between;align-items:center;flex-wrap:wrap;}
.pn a{max-width:47%;}
.pn .lbl{display:block;font-size:9px;color:var(--muted);margin-bottom:3px;}
.pn .ttl{font-family:var(--serif);text-transform:none;letter-spacing:0;font-size:13px;color:var(--ink);}
.pn a.next{margin-left:auto;text-align:right;}

footer.foot{max-width:40rem;margin:56px auto 0;font-family:var(--mono);font-size:11px;letter-spacing:.06em;line-height:1.7;color:var(--muted);}
footer.foot a{color:var(--accent-ink);}

@media (min-width:900px){details.toc>summary{display:none;}details.toc>.toc-list{display:block !important;}}
@media (max-width:899px){
  .shell{grid-template-columns:1fr;}
  .rail{border-right:none;border-bottom:1px solid var(--line);}
  .rail-inner{position:static;max-height:none;padding:20px 20px 16px;}
  .scroller{max-height:none;}
  details.toc .toc-list{max-height:50vh;overflow-y:auto;}
}
