:root{--bg:#f7f4e8;--surface:#ede9d4;--border:#a8a390;--text:#2d2920;--muted:#545048;--error:#7a1a1a;--accent-bg:#2d2920;--accent-text:#f7f4e8;--font-mono:ui-monospace, "Courier New", Courier, monospace;--sidebar-width:min(18rem, 92vw);--shell-max:1200px;--content-max:42rem;--content-text-scale:1.1;--rhythm:1rem;--hover-overlay:color-mix(in srgb, var(--text) 9%, var(--bg));--hover-overlay-surface:color-mix(in srgb, var(--text) 9%, var(--surface))}[data-theme=dark]{--bg:#1a1814;--surface:#242119;--border:#4a4640;--text:#e8e4d8;--muted:#9a9488;--error:#c97a7a;--accent-bg:#e8e4d8;--accent-text:#1a1814;--hover-overlay:color-mix(in srgb, var(--text) 14%, var(--bg));--hover-overlay-surface:color-mix(in srgb, var(--text) 12%, var(--surface))}*,*::before,*::after{box-sizing:border-box}html{font-size:16px;-webkit-text-size-adjust:100%}body{margin:0;background-color:var(--bg);color:var(--text);font-family:var(--font-mono);font-size:.81rem;line-height:1.45}.layout{min-height:100vh;display:flex;align-items:stretch}.layout-backdrop{position:fixed;inset:0;background:rgba(45,41,32,.18);z-index:15}.mobile-header{display:none}.nav-toggle{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.28rem;padding:.3rem .4rem;background:0 0;border:none;color:var(--muted);cursor:pointer;flex-shrink:0}.nav-toggle:hover{color:var(--text)}.nav-toggle:focus-visible{outline:1px solid var(--text);outline-offset:2px}.nav-toggle-bar{display:block;width:1rem;height:1.5px;background:currentColor}.mobile-site-title{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar{position:sticky;top:0;align-self:flex-start;flex:0 0 var(--sidebar-width);width:var(--sidebar-width);min-height:100vh;overflow-y:scroll;background:var(--surface);border-right:1px solid var(--border);z-index:20;scrollbar-width:thin;scrollbar-color:var(--border)var(--surface)}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-track{background:var(--surface)}.sidebar::-webkit-scrollbar-thumb{background:var(--border)}.sidebar--open{transform:translateX(0)}.sidebar-inner{padding:1.25rem;display:flex;flex-direction:column;min-height:100%}.sidebar-brand-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:1.25rem;border-bottom:1px solid color-mix(in srgb,var(--border) 50%,transparent);padding-bottom:.75rem}.sidebar-brand{display:block;font-weight:600;color:var(--text);text-decoration:none;line-height:1.35;font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;flex:1;min-width:0}.sidebar-brand:hover,.sidebar-brand:focus-visible{background:var(--hover-overlay-surface);color:var(--text)}.theme-toggle{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.4rem;height:1.4rem;padding:0;background:0 0;border:none;color:var(--muted);cursor:pointer}.theme-toggle:hover{color:var(--text)}.theme-toggle:focus-visible{outline:1px solid var(--text);outline-offset:2px}.theme-icon{width:.9rem;height:.9rem}.sidebar-heading{margin:0 0 .5rem}.sidebar-heading-link{display:block;font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text);text-decoration:none;padding:.3rem 0;border-bottom:1px solid color-mix(in srgb,var(--border) 50%,transparent)}.sidebar-heading-link:hover{background:var(--hover-overlay-surface);color:var(--text);border-bottom-color:color-mix(in srgb,var(--border) 55%,var(--text));padding-left:.35rem}.sidebar-heading-link--active{color:var(--text)}.sidebar-block{margin-bottom:1.25rem}.sidebar-divider{border:none;border-top:1px solid var(--border);margin:1rem 0}.sidebar-chapter{margin-bottom:.25rem;border:none;border-bottom:1px dotted color-mix(in srgb,var(--border) 40%,transparent);padding-bottom:.2rem}.sidebar-chapter-title{display:flex;align-items:center;justify-content:space-between;gap:.25rem;cursor:default;font-size:.72rem;font-weight:500;color:var(--muted);list-style:none;text-transform:uppercase;letter-spacing:.04em;padding:.1rem 0}.sidebar-chapter-link{color:inherit;text-decoration:none;flex:1;min-width:0;padding:.12rem .35rem;border-radius:2px}.sidebar-chapter-link:hover{background:var(--hover-overlay-surface);color:var(--text)}.sidebar-chapter-link--active{color:var(--text)}.sidebar-chapter-caret{flex-shrink:0;width:1rem;text-align:center;cursor:pointer;color:var(--muted);opacity:.6;user-select:none;padding:0 .1rem}.sidebar-chapter-caret::after{content:"›";display:inline-block;transition:transform .15s ease;transform:rotate(90deg)}details.sidebar-chapter:not([open]) .sidebar-chapter-caret::after{transform:rotate(0)}.sidebar-list{margin:.25rem 0 0;padding:0 0 0 .25rem;list-style:none}.sidebar-list li{margin:0}.sidebar-link{display:block;padding:.18rem .5rem;color:var(--muted);text-decoration:none;border-left:2px solid transparent;font-size:.78rem}.sidebar-link:hover{background:var(--hover-overlay-surface);color:var(--text)}.sidebar-link:focus-visible{outline:1px solid var(--text);outline-offset:0}.sidebar-link--active{background:var(--accent-bg);color:var(--accent-text);border-left-color:var(--accent-text)}.sidebar-link.sidebar-link--active:hover{background:var(--accent-bg);color:var(--accent-text);border-left-color:var(--accent-text)}.sidebar-glyph{display:inline-block;width:1em;margin-right:.15rem;color:inherit;font-size:.85em;vertical-align:.05em;opacity:.85}.sidebar-link--active .sidebar-glyph{color:inherit}.sidebar-link-text{font-size:inherit}.sidebar-ellipsis{list-style:none;padding:.1rem .5rem;color:var(--muted);font-size:.72rem;letter-spacing:.15em;user-select:none;opacity:.6}.sidebar-link-meta{display:block;font-size:.68rem;color:var(--muted);line-height:1.3;margin-top:.05rem;font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-link--active .sidebar-link-meta{color:inherit;opacity:.8}.section-subtree{margin-top:1.25rem}.section-subtree-list{margin:0 0 .75rem;padding:0 0 0 1rem;list-style:disc}.section-subtree-item{margin:.2rem 0;font-size:calc(.88rem * var(--content-text-scale))}.section-subtree-rowlink{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);text-decoration:none;line-height:1.35}.section-subtree-rowlink:hover{text-decoration:none;background:var(--hover-overlay);color:var(--text);border-radius:3px}.section-subtree-rowlink:hover .section-subtree-meta,.section-subtree-rowlink:hover .section-subtree-sep{color:var(--muted)}.section-subtree-meta{color:var(--muted);font-style:italic;font-size:.92em}.section-subtree-sep{color:var(--muted);font-style:normal}.section-subtree-title{font-style:normal;font-weight:500}.section-subtree-desc{display:block;color:var(--muted);font-size:calc(.78rem * var(--content-text-scale));line-height:1.3;margin:.05rem 0 0 .35rem;padding-left:.5rem;border-left:1px solid color-mix(in srgb,var(--border) 55%,transparent)}.section-subtree-group{margin:.5rem 0 .75rem;padding-left:0}.section-subtree-heading{cursor:default;list-style:none;font-size:calc(.75rem * var(--content-text-scale));font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:.25rem;display:flex;align-items:center;gap:.3rem}.section-subtree-heading::before{content:"›";display:inline-block;transition:transform .15s ease;transform:rotate(90deg);font-size:1em;line-height:1}details.section-subtree-group:not([open]) .section-subtree-heading::before{transform:rotate(0)}.section-subtree-heading a{color:inherit;text-decoration:none;flex:1;min-width:0;padding:.08rem .3rem;border-radius:3px}.section-subtree-heading a:hover{background:var(--hover-overlay);color:var(--text)}.section-subtree-group>.section-subtree-list,.section-subtree-group>.section-subtree-group{padding-left:1rem}.main-wrap{flex:1;min-width:0;min-height:100vh;display:flex;flex-direction:column}.main{flex:1;width:100%;padding:1.5rem 1.25rem 2rem}.content{max-width:var(--content-max);margin:0 auto;font-size:calc(.81rem * var(--content-text-scale))}.content-header{margin-bottom:1.5rem}.content-title{font-size:calc(1rem * var(--content-text-scale));font-weight:600;line-height:1.35;margin:0;text-transform:uppercase;letter-spacing:.06em}.content-lastmod{margin:.25rem 0 0;font-size:calc(.72rem * var(--content-text-scale));color:var(--muted);letter-spacing:.02em}.content-lastmod-sep{margin:0 .3em;opacity:.5}.x-params{display:grid;grid-template-columns:1fr;gap:0;margin:.6rem 0 0;width:fit-content;max-width:100%;font-size:calc(.65rem * var(--content-text-scale));line-height:1.45;list-style:none;padding:0}.x-params__row{display:grid;grid-template-columns:minmax(4rem,auto)1fr;column-gap:.85rem;padding:.15rem 0;border-bottom:1px dotted color-mix(in srgb,var(--border) 35%,transparent)}.x-params__row:last-child{border-bottom:none}.x-params__key{margin:0;font-weight:600;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.x-params__val{margin:0;color:var(--text);word-break:break-word}.x-params__json{font-size:calc(.6rem * var(--content-text-scale));white-space:pre-wrap}.prose p{margin:0 0 1.25rem}.prose blockquote{margin:0 0 1.25rem;padding:.2rem 0 .2rem 1rem;border-left:3px solid color-mix(in srgb,var(--border) 38%,var(--bg));color:color-mix(in srgb,var(--muted) 72%,var(--text) 28%);font-style:italic}.prose blockquote p{margin:0 0 .65rem}.prose blockquote p:last-child{margin-bottom:0}.prose blockquote a{color:color-mix(in srgb,var(--muted) 35%,var(--text) 65%)}.prose blockquote a:visited{color:color-mix(in srgb,var(--muted) 40%,var(--text) 60%)}.prose blockquote a:hover{color:var(--text)}.prose a{color:var(--text);text-decoration:underline;text-underline-offset:2px}.prose a:visited{color:var(--text)}.prose a:hover{background:var(--hover-overlay);color:var(--text)}.prose .section-subtree a,.prose .section-subtree a:visited,.prose .section-subtree a:hover,.prose .section-subtree a:focus-visible{text-decoration:none;text-underline-offset:unset}.prose .section-subtree-rowlink{text-decoration:none;text-underline-offset:unset}.prose .section-subtree-rowlink:hover{text-decoration:none;background:var(--hover-overlay);color:var(--text);border-radius:3px}.prose .section-subtree-rowlink:hover .section-subtree-meta,.prose .section-subtree-rowlink:hover .section-subtree-sep{color:var(--muted)}.prose .section-subtree-heading a:hover{background:var(--hover-overlay);color:var(--text);text-decoration:none}.prose h1:not(.content-title){font-size:calc(.92rem * var(--content-text-scale));font-weight:700;line-height:1.35;margin:1.35rem 0 .45rem;padding:.45rem .6rem;background:color-mix(in srgb,var(--surface) 88%,var(--border) 12%);text-transform:uppercase;letter-spacing:.07em}.prose h1:not(.content-title):first-child{margin-top:0}.prose h2,.prose h3{font-weight:600;line-height:1.35;margin:1.5rem 0 .5rem;text-transform:uppercase;letter-spacing:.05em}.prose h2{font-size:calc(.85rem * var(--content-text-scale))}.prose h3{font-size:calc(.78rem * var(--content-text-scale));color:var(--muted)}.prose ul,.prose ol{margin:0 0 1.25rem;padding-left:1.25rem}.prose li{margin:.2rem 0}.prose pre{margin:0 0 1.25rem;padding:1.25rem;background:var(--surface);border:1px solid var(--border);font-family:inherit;font-size:calc(.85rem * var(--content-text-scale));line-height:1.45;overflow-x:auto}.prose code{font-family:inherit;font-size:.9em;background:var(--surface);border:1px solid var(--border);padding:0 .3em}.prose pre code{padding:0;background:0 0;border:none}.prose table{width:100%;border-collapse:collapse;font-size:calc(.85rem * var(--content-text-scale));margin:0 0 1.25rem;border:1px solid var(--border)}.prose thead th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:calc(.78rem * var(--content-text-scale));padding:.4rem .75rem;border-bottom:1px solid var(--border);background:var(--surface)}.prose td{padding:.3rem .75rem;border-bottom:1px solid var(--border)}.prose tbody tr:hover{background:var(--hover-overlay)}.tag-list{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;margin:.75rem 0 0;padding:0}.tag-pill{font-family:inherit;font-size:calc(.72rem * var(--content-text-scale));border:1px solid var(--border);color:var(--muted);padding:0 .3em;line-height:1.5;list-style:none;text-transform:uppercase;letter-spacing:.04em}.content-lastmod{margin:.4rem 0 0;font-size:calc(.72rem * var(--content-text-scale));color:var(--muted);letter-spacing:.03em}.manual-nav{display:flex;justify-content:space-between;gap:.75rem 1rem;margin:1.25rem 0 0;font-size:calc(.78rem * var(--content-text-scale))}.manual-nav__link--next{margin-left:auto}.manual-nav__link,.prose .manual-nav__link{color:var(--muted);text-decoration:none;font-size:calc(.78rem * var(--content-text-scale))}.manual-nav__link:hover,.manual-nav__link:focus-visible,.prose .manual-nav__link:hover,.prose .manual-nav__link:focus-visible{color:var(--text);background:0 0;text-decoration:none}.manual-nav__link:focus-visible{outline:1px solid var(--text);outline-offset:2px}.backlinks{margin-top:2.5rem;padding-top:1rem;border-top:1px solid var(--border);font-size:calc(.72rem * var(--content-text-scale));color:var(--muted)}.backlinks h3{margin:0 0 .5rem;font-size:calc(.7rem * var(--content-text-scale));font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.backlinks ul{margin:0;padding:0;list-style:none}.backlinks li{margin:.25em 0}.backlinks a{color:var(--muted);text-decoration:underline;text-underline-offset:2px}.backlinks a:hover{background:var(--hover-overlay);color:var(--text)}.backlink-excerpt{display:block;margin-top:.15rem;color:var(--muted);font-size:calc(.72rem * var(--content-text-scale));letter-spacing:.02em;opacity:.75}.section-list{margin:1rem 0 0;padding-left:1.25rem}.section-list a{color:var(--text);text-decoration:none;text-underline-offset:unset}.section-list a:visited{color:var(--text);text-decoration:none}.section-list a:hover,.section-list a:focus-visible{background:var(--hover-overlay);color:var(--text);text-decoration:none}.site-footer{padding:1rem 1.25rem 1.5rem;font-size:.7rem;color:var(--muted);border-top:1px solid var(--border);text-transform:uppercase;letter-spacing:.08em}.home .content-cta{display:inline-block;padding:.4rem 1rem;background:var(--accent-bg);color:var(--accent-text);border:1px solid var(--text);text-decoration:none;font-size:calc(.78rem * var(--content-text-scale));text-transform:uppercase;letter-spacing:.06em}.home .content-cta:hover{opacity:.8}.home .content-cta:active{opacity:.6}.home-note{margin-top:1.5rem;padding:1.25rem;border:1px solid var(--border);background:var(--surface);color:var(--muted);font-size:1em}.home-note strong{color:var(--text);font-weight:600;letter-spacing:.03em}.home-start{margin:1.25rem 0 0}.page-layout{display:flex;align-items:flex-start;gap:2.5rem;max-width:calc(var(--content-max) + 15rem);margin:0 auto}.page-layout .content{flex:1;min-width:0;margin:0}.toc-panel{flex:0 0 12rem;position:sticky;top:1.5rem}.toc-heading{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 .5rem;padding-bottom:.3rem;border-bottom:1px solid var(--border)}.toc-nav ul{list-style:none;margin:0;padding:0}.toc-nav ul ul{margin:.08rem 0 .12rem;padding-left:.75rem;border-left:1px solid color-mix(in srgb,var(--border) 50%,transparent)}.toc-nav ul ul ul{padding-left:.7rem;margin-bottom:0;opacity:.92}.toc-nav li{margin:0}.toc-nav a{display:block;color:var(--muted);text-decoration:none;padding:.12rem .35rem .12rem 0;border-left:2px solid transparent;font-size:.72rem;line-height:1.4}.toc-nav>ul>li>a{font-weight:600;color:var(--text)}.toc-nav a:hover{background:var(--hover-overlay);color:var(--text);border-left-color:var(--border);border-radius:2px}.toc-nav>ul>li>ul a{font-weight:500;font-size:.7rem}.toc-nav>ul>li>ul>li>ul a{font-size:.65rem;font-weight:400;opacity:.9}@media(max-width:960px){.toc-panel{display:none}.page-layout{max-width:var(--content-max)}}.sidebar-top-links{margin-bottom:1.25rem;padding-bottom:.75rem}.sidebar-top-links .sidebar-link{font-weight:600;color:var(--text)}.sidebar-top-links .sidebar-link--active,.sidebar-top-links .sidebar-link--active:hover{background:var(--accent-bg);color:var(--accent-text)}.sidebar-icon{display:inline-block;width:.8rem;height:.8rem;vertical-align:-.1em;margin-right:.35rem;flex-shrink:0}.imgurl{margin:1rem 0}.imgurl img{max-width:100%;height:auto;display:block;border:1px solid color-mix(in srgb,var(--border) 50%,transparent)}.imgurl__caption{margin-top:.4rem;font-size:.75rem;color:var(--muted)}#search{--pagefind-ui-scale:0.75;--pagefind-ui-primary:var(--text);--pagefind-ui-text:var(--text);--pagefind-ui-background:var(--bg);--pagefind-ui-border:var(--border);--pagefind-ui-tag:var(--surface);--pagefind-ui-border-width:1px;--pagefind-ui-border-radius:0;--pagefind-ui-image-border-radius:0;--pagefind-ui-font:var(--font-mono);margin-top:1rem}#search .pagefind-ui__search-input{font-family:var(--font-mono)}#search .pagefind-ui__result-title a{color:var(--text)}#search .pagefind-ui__result-excerpt{color:var(--muted)}mark{background:var(--surface);color:var(--text);padding:0 .1em}.tags-index{list-style:none;margin:1.5rem 0 0;padding:0}.tags-index-item{padding:.75rem 0;border-bottom:1px dotted color-mix(in srgb,var(--border) 40%,transparent)}.tags-index-item:first-child{border-top:1px dotted color-mix(in srgb,var(--border) 40%,transparent)}.tags-index-header{display:flex;align-items:baseline;gap:.6rem;margin-bottom:.4rem}.tags-index-name{font-size:calc(.78rem * var(--content-text-scale));font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text)}.tags-index-count{font-size:calc(.68rem * var(--content-text-scale));color:var(--muted);border:1px solid var(--border);padding:0 .35em;line-height:1.5;letter-spacing:.02em}.tags-index-pages{list-style:none;margin:0;padding:0 0 0 .75rem;border-left:2px dotted color-mix(in srgb,var(--border) 40%,transparent)}.tags-index-pages li{display:flex;align-items:baseline;gap:.5rem;padding:.1rem 0}.tags-index-pages a{font-size:calc(.78rem * var(--content-text-scale));color:var(--muted);text-decoration:none}.tags-index-pages a:hover{background:var(--hover-overlay);color:var(--text);text-decoration:underline;text-underline-offset:2px;border-radius:2px}.tags-index-type{font-size:calc(.68rem * var(--content-text-scale));color:var(--muted);opacity:.6;text-transform:uppercase;letter-spacing:.04em;flex-shrink:0}.tag-filter{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;margin:1rem 0 0;padding:0}.tag-filter-btn{font-family:inherit;font-size:calc(.72rem * var(--content-text-scale));border:1px solid var(--border);background:0 0;color:var(--muted);padding:0 .4em;line-height:1.6;cursor:pointer;text-transform:uppercase;letter-spacing:.04em}.tag-filter-btn:hover{background:var(--hover-overlay);color:var(--text)}.tag-filter-btn--active{background:var(--accent-bg);color:var(--accent-text);border-color:var(--accent-bg)}.post-list{list-style:none;margin:1.25rem 0 0;padding:0}.post-list-item{padding:1rem 0;border-bottom:1px solid var(--border)}.post-list-item:first-child{border-top:1px solid var(--border)}.post-list-meta{font-size:calc(.72rem * var(--content-text-scale));color:var(--muted);margin-bottom:.25rem;letter-spacing:.02em}.post-list-title{display:block;font-size:calc(.85rem * var(--content-text-scale));font-weight:600;color:var(--text);text-decoration:none;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}.post-list-title:hover{background:var(--hover-overlay);color:var(--text)}.post-desc{margin:0;font-size:calc(.78rem * var(--content-text-scale));color:var(--muted)}.post-meta{margin:.3rem 0 0;font-size:calc(.72rem * var(--content-text-scale));color:var(--muted);letter-spacing:.02em}.post-date{font-size:inherit}.post-author{font-size:inherit}@media(max-width:699px){.layout{max-width:none;margin:0}.mobile-header{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.sidebar{position:fixed;top:0;left:0;flex:none;max-width:min(var(--sidebar-width),88vw);height:100vh;transform:translateX(-100%);border:1px solid var(--border);border-right:1px solid var(--border)}.sidebar--open{transform:translateX(0)}.main-wrap{width:100%}}@media(max-width:559px){.main{padding-left:1rem;padding-right:1rem}}@media(max-width:479px){html{font-size:15px}.content{max-width:100%}}