:root{--bg:#ffffff;--bg-soft:#f6f7f8;--fg:#1c1f23;--fg-soft:#5b636d;--rule:#dfe3e8;--accent:#8a5a00;--accent-soft:#fdf6e3;--code-bg:#272822;--code-fg:#f8f8f2;--sidebar-w:17rem;--measure:46rem}*{box-sizing:border-box}html{font-size:17px}@media(max-width:50rem){html{font-size:16px}}body{margin:0;background:var(--bg);color:var(--fg);font-family:ui-sans-serif,system-ui,-apple-system,segoe ui,Roboto,helvetica neue,Arial,sans-serif;line-height:1.6;-webkit-text-size-adjust:100%}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.15em}a:hover{text-decoration-thickness:2px}.site{display:flex;align-items:flex-start;min-height:100vh}.sidebar{position:sticky;top:0;flex:0 0 var(--sidebar-w);width:var(--sidebar-w);height:100vh;overflow-y:auto;padding:1.75rem 1.25rem 2rem;border-right:1px solid var(--rule);background:var(--bg-soft);font-size:.9rem}@media(max-width:50rem){.site{display:block}.sidebar{position:static;width:auto;height:auto;border-right:0;border-bottom:1px solid var(--rule)}}.brand{display:block;text-decoration:none;margin-bottom:1.75rem}.brand-name{display:block;font-family:ui-monospace,SFMono-Regular,sf mono,Menlo,Consolas,liberation mono,monospace;font-size:1.5rem;font-weight:700;letter-spacing:-.02em;color:var(--fg)}.brand-line{display:block;margin-top:.15rem;color:var(--fg-soft);font-size:.8rem;line-height:1.4}.nav-section{margin-bottom:1.4rem}.nav-title{display:block;margin:0 0 .35rem;font-weight:600;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;color:var(--fg-soft);text-decoration:none}a.nav-title:hover{color:var(--fg)}.nav ul{list-style:none;margin:0;padding:0}.nav li{margin:0}.nav li a{display:block;padding:.15rem 0;color:var(--fg);text-decoration:none;border-left:2px solid transparent;padding-left:.6rem}.nav li a:hover{border-left-color:var(--rule)}.nav a.current,.nav li a.current{border-left-color:var(--accent);font-weight:600;color:var(--accent)}.nav-project{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--rule)}.nav-note{margin:.5rem 0 0;font-size:.78rem;line-height:1.35;color:var(--fg-soft)}.content{flex:auto;min-width:0;padding:2.5rem 2rem 4rem}@media(max-width:50rem){.content{padding:1.75rem 1.25rem 3rem}}.single,.list,.home{max-width:var(--measure)}h1,h2,h3,h4{line-height:1.25;font-weight:650;letter-spacing:-.01em;scroll-margin-top:1rem}h1{font-size:2rem;margin:0 0 .5rem}h2{font-size:1.35rem;margin:2.5rem 0 .6rem;padding-top:.2rem}h3{font-size:1.1rem;margin:1.9rem 0 .4rem}h4{font-size:1rem;margin:1.4rem 0 .3rem}.eyebrow{margin:0 0 .35rem;font-size:.8rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--fg-soft)}.eyebrow a{color:inherit;text-decoration:none}.lead{margin-top:.25rem;font-size:1.1rem;color:var(--fg-soft)}.prose p,.prose li,.prose dd{max-width:var(--measure)}.prose ul,.prose ol{padding-left:1.4rem}.prose li{margin:.2rem 0}.prose li>p{margin:.3rem 0}blockquote{margin:1.25rem 0;padding:.2rem 1rem;border-left:3px solid var(--rule);color:var(--fg-soft)}hr{border:0;border-top:1px solid var(--rule);margin:2.5rem 0}code{font-family:ui-monospace,SFMono-Regular,sf mono,Menlo,Consolas,liberation mono,monospace;font-size:.875em;padding:.1em .3em;border-radius:3px;background:var(--bg-soft);border:1px solid var(--rule)}pre{overflow-x:auto;padding:1rem 1.1rem;border-radius:6px;background:var(--code-bg);color:var(--code-fg);font-size:.85rem;line-height:1.5}pre code{padding:0;border:0;background:0 0;color:inherit;font-size:inherit}pre code .c,pre code .c1,pre code .cm{font-style:italic}table{width:100%;border-collapse:collapse;margin:1.25rem 0;font-size:.9rem}.table-wrap{overflow-x:auto}th,td{text-align:left;vertical-align:top;padding:.45rem .6rem;border-bottom:1px solid var(--rule)}th{font-weight:650;background:var(--bg-soft);border-bottom:2px solid var(--rule)}.toc{margin:1.75rem 0 2rem;padding:.9rem 1.1rem;border:1px solid var(--rule);border-radius:6px;background:var(--bg-soft);font-size:.9rem}.toc-title{margin:0 0 .4rem;font-weight:650;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;color:var(--fg-soft)}.toc ul{margin:0;padding-left:1rem;list-style:none}.toc ul ul{padding-left:1rem}.toc a{color:var(--fg);text-decoration:none}.toc a:hover{text-decoration:underline}.page-list{list-style:none;margin:2rem 0 0;padding:0}.page-list li{padding:1rem 0;border-top:1px solid var(--rule)}.page-list a{font-size:1.1rem;font-weight:600;text-decoration:none}.page-list p{margin:.3rem 0 0;color:var(--fg-soft)}.pager{display:flex;justify-content:space-between;gap:1rem;margin-top:3rem;padding-top:1.25rem;border-top:1px solid var(--rule);font-size:.95rem}.pager-next{margin-left:auto;text-align:right}.home-header{margin-bottom:2rem}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1rem;margin:2.5rem 0}.card{display:block;padding:1.1rem 1.2rem;border:1px solid var(--rule);border-radius:8px;text-decoration:none;color:var(--fg)}.card:hover{border-color:var(--accent)}.card h2{margin:0 0 .35rem;font-size:1.1rem;color:var(--accent)}.card p{margin:0 0 .6rem;color:var(--fg-soft);font-size:.92rem}.card ul{margin:0;padding-left:1.1rem;font-size:.88rem;color:var(--fg-soft)}.footer{max-width:var(--measure);margin-top:4rem;padding-top:1.25rem;border-top:1px solid var(--rule);color:var(--fg-soft);font-size:.85rem}