/* light is a daylight chart room; dark is deep space. both share one set of tokens */
:root{--rail:264px;--mono:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace;--sans:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
--paper:#f6f5f0;--surface:#fffefa;--ink:#1d282e;--muted:#5d6a70;--faint:#9aa5a2;--line:#dcded6;--line-strong:#c4ccc5;--accent:#087871;--accent-strong:#045851;--on-accent:#fff;--warm:#c96a33;--lead:#3f5357;--hover:#eaf3ee;
--code-bg:#e9ece5;--code-line:#dbe1d9;--pre-bg:#11232c;--pre-ink:#d6e9e3;--kbd-bg:#fffef9;--quote-bg:#ecf2ec;--quote-ink:#3c5256;--note-bg:#eef0e6;--note-line:#7e9477;--shadow:#0717211f;--focus:#d98a3d;
--star:#6f8389;--stars:.22;--glow-a:#0878710f;--glow-b:#c96a330a;--bar:#f6f5f0d9;--clearing:#f6f5f0e6;
--night:#0b1520;--night-line:#1e2e3a;--night-ink:#b9c8ce;--night-hover:#132834;color-scheme:light}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#060b13;--surface:#0c1620;--ink:#d9e4e8;--muted:#8899a1;--faint:#55666e;--line:#182531;--line-strong:#283a47;--accent:#5ccfbd;--accent-strong:#9af0e2;--on-accent:#03120e;--warm:#f3ad76;--lead:#b4c5ca;--hover:#11232f;
--code-bg:#0f1d29;--code-line:#1d2f3e;--pre-bg:#09141d;--pre-ink:#cfe6df;--kbd-bg:#0e1a25;--quote-bg:#0b1820;--quote-ink:#b3c6c9;--note-bg:#0c191b;--note-line:#4f8a74;--shadow:#000000a0;--focus:#f3ad76;
--star:#e6efff;--stars:.8;--glow-a:#1f6f8a2e;--glow-b:#7a3fa01f;--bar:#060b13cc;--clearing:#060b13e0;--night:#08111b;--night-line:#15222d;--night-hover:#10212c;color-scheme:dark}}
:root[data-theme=dark]{--paper:#060b13;--surface:#0c1620;--ink:#d9e4e8;--muted:#8899a1;--faint:#55666e;--line:#182531;--line-strong:#283a47;--accent:#5ccfbd;--accent-strong:#9af0e2;--on-accent:#03120e;--warm:#f3ad76;--lead:#b4c5ca;--hover:#11232f;
--code-bg:#0f1d29;--code-line:#1d2f3e;--pre-bg:#09141d;--pre-ink:#cfe6df;--kbd-bg:#0e1a25;--quote-bg:#0b1820;--quote-ink:#b3c6c9;--note-bg:#0c191b;--note-line:#4f8a74;--shadow:#000000a0;--focus:#f3ad76;
--star:#e6efff;--stars:.8;--glow-a:#1f6f8a2e;--glow-b:#7a3fa01f;--bar:#060b13cc;--clearing:#060b13e0;--night:#08111b;--night-line:#15222d;--night-hover:#10212c;color-scheme:dark}

*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}
body{margin:0;background-color:var(--paper);background-image:radial-gradient(ellipse 70% 55% at 88% -12%,var(--glow-a),transparent 70%),radial-gradient(ellipse 60% 50% at 8% 112%,var(--glow-b),transparent 70%);background-attachment:fixed;color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.75}
/* the starfield: tiled dots at three tile sizes so the repeat doesn't show */
body::before,.sidebar{background-image:radial-gradient(1px 1px at 23px 41px,var(--star) 50%,transparent 100%),radial-gradient(1px 1px at 151px 97px,var(--star) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 89px 183px,var(--star) 50%,transparent 100%),radial-gradient(1px 1px at 211px 12px,var(--star) 50%,transparent 100%),radial-gradient(1px 1px at 61px 229px,var(--star) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 277px 133px,var(--star) 50%,transparent 100%),radial-gradient(2px 2px at 140px 300px,var(--star) 50%,transparent 100%),radial-gradient(1px 1px at 371px 58px,var(--star) 50%,transparent 100%);background-size:240px 220px,240px 220px,240px 220px,330px 310px,330px 310px,410px 370px,410px 370px,410px 370px}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:var(--stars)}
::selection{background:color-mix(in srgb,var(--accent) 32%,transparent)}
a{color:var(--accent);text-underline-offset:4px}a:hover{color:var(--accent-strong)}button,input{font:inherit}button{cursor:pointer}
button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--focus);outline-offset:4px}button[hidden],[hidden]{display:none!important}
.skip{position:fixed;top:-70px;left:20px;z-index:10;background:var(--surface);color:var(--ink);padding:10px 16px}.skip:focus{top:12px}

.sidebar{--star:#dce8f470;position:fixed;inset:0 auto 0 0;width:var(--rail);background-color:var(--night);color:var(--night-ink);padding:33px 24px 24px;overflow-y:auto;border-right:1px solid var(--night-line);z-index:5}
.brand{display:flex;align-items:center;gap:12px;color:#f1f3e9;text-decoration:none;font:600 16px/1.4 var(--mono);letter-spacing:.1em}.brand:hover{color:#fff}
.brand-mark{color:#f3ad76;font-size:28px;line-height:1;text-shadow:0 0 14px #f3ad7699;animation:pulse 5s ease-in-out infinite}@keyframes pulse{50%{text-shadow:0 0 22px #f3ad76dd,0 0 4px #fff6}}
.edition{font:10px/1.5 var(--mono);letter-spacing:.17em;color:#81969e;margin:17px 0 31px 36px}
.nav-group{margin:22px 0 7px;font:10px/1.5 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:#80969e}
.chapter-nav a{display:flex;gap:10px;text-decoration:none;color:#b9c8ce;font-size:12px;line-height:1.55;padding:9px 10px;margin:2px -10px;border-radius:4px}
.chapter-nav a:hover{background:var(--night-hover);color:#fff}.chapter-nav a[aria-current=page]{background:#19373bd0;color:#a9e7cf;box-shadow:inset 2px 0 #82c9b1}
.chapter-number{font:10px/1.9 var(--mono);opacity:.55}
.sidebar-footer{border-top:1px solid var(--night-line);margin-top:26px;padding-top:18px;display:flex;justify-content:space-between;font:10px var(--mono)}.sidebar-footer a{color:#b9c8ce;text-decoration:none}

.shell{margin-left:var(--rail)}
.topbar{position:sticky;top:0;z-index:3;min-height:82px;padding:0 48px;background:var(--bar);-webkit-backdrop-filter:blur(12px) saturate(1.2);backdrop-filter:blur(12px) saturate(1.2);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:20px}
.breadcrumb{font:11px var(--mono);color:var(--muted);letter-spacing:.02em}.breadcrumb span{color:var(--faint);margin:0 10px}
.tools{display:flex;align-items:center;gap:8px;min-width:0}
.tool-button{height:38px;min-width:38px;padding:0 10px;border:1px solid var(--line-strong);border-radius:5px;background:var(--surface);color:var(--muted);font:14px/1 var(--mono)}.tool-button:hover{color:var(--ink);border-color:var(--accent)}
.search-wrap{position:relative;width:240px;min-width:0}
.search-box{display:flex;align-items:center;border:1px solid var(--line-strong);border-radius:5px;background:var(--surface);padding:7px 12px;gap:8px;color:var(--muted)}
.search-box input{min-width:0;width:100%;border:0;background:transparent;font-size:12px;outline:none;color:var(--ink)}.search-box input::placeholder{color:var(--faint)}
.search-box:focus-within{outline:2px solid var(--accent);outline-offset:2px}.search-box kbd{background:transparent;padding:0 5px;line-height:1.6;color:var(--faint)}
.search-results{position:absolute;z-index:6;top:46px;right:0;width:400px;max-width:calc(100vw - 28px);max-height:65vh;overflow:auto;background:var(--surface);border:1px solid var(--line-strong);border-radius:6px;box-shadow:0 14px 34px var(--shadow);padding:8px}
.search-results a{display:block;padding:10px 12px;text-decoration:none;border-radius:4px}.search-results a:hover,.search-results a:focus{background:var(--hover)}
.search-results strong{display:block;font-size:13px}.search-results small{font-size:11px;line-height:1.5;display:block;color:var(--muted)}.search-results p{margin:12px;font-size:13px}

.layout{max-width:1220px;margin:auto;padding:52px 48px 30px;display:grid;grid-template-columns:minmax(0,760px) 170px;gap:48px}.article{position:relative;min-width:0}
/* a soft-edged clearing so stars stay in the margins, never between letters */
.article::before,.toc::before{content:"";position:absolute;inset:-12px -20px;z-index:-1;pointer-events:none;border-radius:40px;background:var(--clearing);box-shadow:0 0 40px 28px var(--clearing)}
.eyebrow{font:10px/1.4 var(--mono);color:var(--accent);letter-spacing:.16em;text-transform:uppercase;margin:0 0 16px}
.article h1{font-size:clamp(32px,3.3vw,49px);font-weight:570;line-height:1.12;letter-spacing:-.045em;margin:0 0 26px}
.description{color:var(--muted);font-size:17px;margin:0 0 30px;max-width:650px}.article p{margin:17px 0}
.article .lead{font-size:21px;line-height:1.6;color:var(--lead);letter-spacing:-.015em;margin-bottom:25px}
.article h2{font-size:25px;line-height:1.3;letter-spacing:-.03em;font-weight:580;margin:48px 0 18px;padding-top:6px;scroll-margin-top:20px}
.article h2::before{content:"✦";content:"✦"/"";color:var(--warm);font-size:.55em;margin-right:.7em;vertical-align:.3em}
.article h3{font-size:17px;margin:26px 0 8px}.article ul,.article ol{padding-left:24px}.article li{padding-left:4px;margin:11px 0}.article strong{font-weight:650}
.article figure{margin:34px 0}.article img{display:block;width:100%;height:auto;border-radius:7px;border:1px solid var(--line-strong);box-shadow:0 8px 24px var(--shadow)}
.article figcaption{color:var(--muted);font:11px/1.65 var(--mono);margin-top:12px}
.start-links{display:flex;align-items:center;gap:24px;margin:28px 0 32px;font-size:13px}
.primary-link{background:var(--accent);color:var(--on-accent);padding:10px 17px;border-radius:4px;text-decoration:none;box-shadow:0 0 0 0 transparent;transition:box-shadow .2s}.primary-link:hover{background:var(--accent-strong);color:var(--on-accent);box-shadow:0 0 22px color-mix(in srgb,var(--accent) 45%,transparent)}.primary-link span{padding-left:14px}

/* on this page: a star map, the current section lit */
.toc{align-self:start;position:sticky;top:122px;padding-top:4px}.toc p{font:10px var(--mono);color:var(--muted);letter-spacing:.1em;margin:0 0 19px}
.toc a{position:relative;display:block;color:var(--muted);font-size:11px;line-height:1.55;text-decoration:none;padding:6px 0 6px 14px;border-left:1px solid var(--line)}
.toc a::before{content:"";position:absolute;left:-4.5px;top:50%;width:8px;height:8px;margin-top:-4px;border-radius:50%;background:var(--paper);border:1px solid var(--line-strong);transition:background .2s,box-shadow .2s}
.toc a:hover{color:var(--accent)}.toc a:hover::before{border-color:var(--accent)}
.toc a[aria-current]{color:var(--ink)}.toc a[aria-current]::before{background:var(--warm);border-color:var(--warm);box-shadow:0 0 9px var(--warm)}

table{border-collapse:collapse;width:100%;font-size:13px;line-height:1.7;margin:25px 0;overflow-wrap:anywhere}
th{text-align:left;font:10px/1.5 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:12px 14px;border-bottom:2px solid var(--line-strong)}
td{padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:top}td:first-child{width:38%;color:var(--lead)}tr:last-child td{border-bottom:0}
code{font-family:var(--mono);font-size:.84em;background:var(--code-bg);border:1px solid var(--code-line);border-radius:3px;padding:2px 4px;overflow-wrap:anywhere}
pre{position:relative;margin:24px 0;background:var(--pre-bg);color:var(--pre-ink);border:1px solid var(--code-line);border-radius:6px;padding:22px;overflow:auto;font-size:13px;line-height:1.85}
pre code{background:none;border:0;padding:0;white-space:pre;font-size:inherit;overflow-wrap:normal}
kbd{font:11px/1.6 var(--mono);display:inline-block;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:4px;background:var(--kbd-bg);color:var(--ink);padding:0 5px;white-space:nowrap}
blockquote{margin:25px 0;padding:18px 24px;border-left:2px solid var(--accent);background:var(--quote-bg);color:var(--quote-ink);font-size:17px}
.note{padding:20px 23px;background:var(--note-bg);border-left:3px solid var(--note-line);margin:28px 0;font-size:14px;line-height:1.7}.note strong{display:block;margin-bottom:5px}
.chapter-links{border-top:1px solid var(--line);margin-top:24px}
.chapter-links a{display:grid;grid-template-columns:140px 1fr;text-decoration:none;padding:22px 0;border-bottom:1px solid var(--line);gap:4px 20px}
.chapter-links span{grid-row:span 2;font:10px/1.8 var(--mono);color:var(--muted);letter-spacing:.04em}.chapter-links strong{font-size:17px;color:var(--ink)}.chapter-links small{font-size:13px;color:var(--muted)}
.chapter-links a:hover strong{color:var(--accent)}
.pagination{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);margin-top:60px;padding-top:28px}
.pagination a{text-decoration:none;max-width:48%;font-size:14px}.pagination a:last-child{text-align:right;margin-left:auto}
.pagination span{display:block;text-transform:uppercase;font:9px/1.5 var(--mono);letter-spacing:.12em;color:var(--muted);margin-bottom:5px}
.page-footer{margin:38px 0 15px;font:10px/1.8 var(--mono);color:var(--muted);display:flex;justify-content:space-between;gap:20px}.page-footer a{color:var(--muted)}
.menu-toggle{display:none;border:1px solid var(--line-strong);background:none;color:var(--ink);border-radius:4px;padding:5px 10px;font-size:12px}.sidebar .menu-toggle{color:#d6e9e3;border-color:#2c3f4b;margin-top:16px}.scrim{display:none}

/* keyboard shortcuts panel */
.shortcuts{border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);color:var(--ink);padding:26px 28px 20px;width:min(460px,calc(100vw - 32px));box-shadow:0 24px 70px var(--shadow),0 0 0 1px color-mix(in srgb,var(--accent) 12%,transparent)}
.shortcuts::backdrop{background:#02060bb8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.shortcuts h2{font:600 11px/1.4 var(--mono);letter-spacing:.16em;color:var(--accent);margin:0 0 10px}.shortcuts h2::before{content:"✦ ";color:var(--warm)}
.shortcuts table{margin:0 0 12px}.shortcuts td{padding:9px 6px}.shortcuts td:first-child{width:28%;white-space:nowrap}
.shortcuts p{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:0;font:11px/1.5 var(--mono);color:var(--muted)}

@media(min-width:1550px){.layout{padding-top:65px}.article{font-size:17px}}
@media(max-width:1180px){.layout{grid-template-columns:minmax(0,1fr);max-width:850px}.toc{display:none}.topbar{padding:0 36px}.layout{padding:42px 36px 25px}}
@media(max-width:800px){:root{--rail:230px}.sidebar{padding:25px 20px}.topbar{padding:0 24px}.breadcrumb{display:none}.tools{flex:1;justify-content:flex-end}.search-wrap{width:100%}.layout{padding:34px 24px 20px}.article h1{font-size:36px}.article .lead{font-size:19px}td,th{padding:10px}.chapter-links a{grid-template-columns:1fr}.chapter-links span{grid-row:auto}.page-footer{display:block}.start-links{gap:16px;flex-wrap:wrap}}
@media(max-width:680px){html{scroll-padding-top:90px}.sidebar{position:relative;width:100%;max-height:none}.edition{margin-bottom:15px}.chapter-nav{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.nav-group{grid-column:1/-1}.sidebar-footer{max-width:250px}.shell{margin-left:0}
.js-enabled .sidebar{position:fixed;width:260px;transform:translateX(-100%);transition:transform .15s ease}.js-enabled .chapter-nav{display:block}.js-enabled .sidebar.is-open{transform:translateX(0)}.js-enabled .menu-toggle{display:block}.js-enabled .scrim.is-open{display:block;position:fixed;inset:0;background:#0007;border:0;z-index:4}
.topbar{min-height:68px;gap:12px;padding:0 16px}.tools{gap:6px}#shortcuts-button{display:none}.layout{padding:30px 16px 20px}.article h1{font-size:35px}.description{font-size:16px}.article h2{font-size:23px}pre{font-size:11px;padding:17px}.pagination a{font-size:12px}.article td{font-size:12px}td:first-child{width:42%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
@media print{:root:root:root{--ink:#111;--muted:#444;--lead:#333;--line:#ccc;--line-strong:#bbb;--accent:#087871;--warm:#c96a33;--code-bg:#eee;--code-line:#ddd;--kbd-bg:#fff;--quote-bg:#f2f2f2;--quote-ink:#333;--note-bg:#f2f2f2;color-scheme:light}.sidebar,.topbar,.toc,.pagination,.page-footer,.start-links{display:none}body::before{display:none}.shell{margin:0}.layout{display:block;padding:0;max-width:none}body{background:white;color:#111;font-size:11pt}.article h1{font-size:28pt}pre{white-space:pre-wrap;background:#eee;color:#111}pre code{white-space:pre-wrap}a{color:inherit}figure,table,.note{break-inside:avoid}}
