*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--color-gray: #f8f8f8;--color-border: #f2f2f2;--color-link: blue;--text-xs: .7rem;--text-sm: .85rem;--text-lg: 1.1rem;--text-xl: 1.3rem;--font-size: 16px;--line-height: 1.6;--font-sans: "Karla", system-ui, sans-serif;--font-mono: "Berkeley Mono", monospace;--spacing: 1rem;--border-radius: 2px}@media (max-width: 600px){:root{--spacing: .5rem}}html{font-size:var(--font-size)}body{margin:0;line-height:var(--line-height);font-family:var(--font-sans)}a{color:currentColor;text-decoration:none}h1{font-size:1em}i{font-family:system-ui}hr{border:none}hr:after{content:"▯▯▯";display:block;padding:calc(var(--spacing) * 4) 0 calc(var(--spacing) * 3);text-align:center;color:#00f}article header{font-family:var(--font-mono);margin-bottom:var(--spacing);margin-top:calc(var(--spacing) * 2)}article header p{font-size:.8rem;color:#f0f;margin-top:calc(var(--spacing) * .5);background-color:#fff}article header a,article header a:visited{color:currentColor;text-decoration:none}article header a:hover{text-decoration:underline}article header a[aria-current=page]{background-color:#ff0}article header h1,article header h2{font-weight:700;line-height:1.5;font-size:var(--text-lg);margin-top:0}article h2{font-size:var(--text-lg);font-weight:700;margin-top:calc(var(--spacing) * 2)}article h3{font-weight:700;text-transform:uppercase;font-size:.9em;margin-top:calc(var(--spacing) * 2)}article .heading-permalink{display:inline-block;width:1rem;margin-left:-1rem;text-decoration:none;position:absolute;top:0;left:0;color:#f0f;scroll-margin-top:var(--spacing)}article .heading-permalink:after{content:"#";opacity:0}article :is(h2,h3,h4,h5,h6){position:relative}article :is(h2,h3,h4,h5,h6):hover .heading-permalink:after{opacity:1}article p,article figure{margin-top:var(--spacing)}article ol,article ul{margin-top:var(--spacing);margin-left:1em}article dt{margin-top:var(--spacing)}article dd{padding-left:var(--spacing)}article a{color:#00f;text-decoration:underline}article a:visited{color:#f0f}article details{margin-top:var(--spacing)}article iframe{margin-top:var(--spacing);width:100%;border:none}article table{margin-top:var(--spacing);width:100%;font-family:var(--font-mono);font-variant-numeric:tabular-nums;border-collapse:collapse}article th{font-weight:400}article th,article td{font-size:var(--text-sm);padding:.25rem calc(var(--spacing) / 2);border-bottom:1px solid var(--color-border)}article blockquote{margin-top:calc(var(--spacing) * 2);margin-bottom:var(--spacing);padding:calc(var(--spacing) * 2);border:1px solid black;box-shadow:2px 2px #fff,3px 3px #000}article blockquote>:first-child{margin-top:0}article pre{overflow:scroll}article pre,article code,article kbd{font-family:var(--font-mono);font-size:var(--text-sm)}article pre code{display:block;background-color:var(--color-gray);overflow-x:auto;border-radius:var(--border-radius);line-height:2.2;margin-top:calc(var(--spacing) * 2);margin-bottom:var(--spacing);padding:var(--spacing) calc(var(--spacing) * 2)}article pre+pre{margin-top:0}article code:not(pre code),article kbd{padding:.1em .25em;background-color:#f0f;color:#ff0}article p>img,article figure>img{display:block;max-width:100%;margin:0 auto;border-radius:var(--border-radius)}article figcaption{font-size:var(--text-sm);text-align:center}.footer{padding:calc(var(--spacing) * 5) var(--spacing) calc(var(--spacing) * 1);color:gray;text-align:left;font-size:var(--text-xs);font-family:var(--font-mono);display:flex;justify-content:flex-end}.footer a:hover{text-decoration:underline}.grid{display:grid;grid-template-columns:[left-edge] minmax(calc(var(--spacing) * 2),1fr) [sidebar-start] auto [sidebar-end content-start] minmax(20rem,32rem) [content-end] minmax(calc(var(--spacing) * 2),1fr) [right-edge];-moz-column-gap:calc(var(--spacing) * 3);column-gap:calc(var(--spacing) * 3);padding:0 calc(var(--spacing) * 2)}@media (max-width: 600px){.grid{grid-template-columns:[left-edge] calc(var(--spacing) * 2) [sidebar-start content-start] auto [sidebar-end content-end] calc(var(--spacing) * 2) [right-edge];-moz-column-gap:0;column-gap:0;padding:0}}.grid>.sidebar{grid-column:sidebar-start / sidebar-end;grid-row:1 / 999}.grid>article{display:contents}.grid>*,.grid>article>*{grid-column:content-start / content-end}.grid>article>pre:has(code):not(.short){grid-column:sidebar-start / right-edge}.grid>article>blockquote{grid-column:content-start / content-end}@media (max-width: 600px){.grid>article>pre:not(.short){grid-column:left-edge / right-edge}.grid>article>blockquote{grid-column:content-start / content-end}}.grid>article>p:not(.short):has(img:not(.short)){grid-column:left-edge / right-edge}.grid>.footer{grid-column:left-edge / right-edge}.newsletter-form{margin-top:calc(var(--spacing) * 2)}.newsletter-form-input-wrapper{display:flex;gap:1rem}.newsletter-form p{font-size:var(--text-sm);margin-top:.5em;color:gray}.newsletter-form p a{color:currentColor;text-decoration:none}input[type=email],input[type=submit]{--shadow-color: cyan;display:inline-block;font:inherit;font-family:var(--font-mono);border-radius:0;-webkit-appearance:none;border:1px solid transparent;margin:0;box-shadow:2px 2px #fff,4px 4px 0 0 var(--shadow-color)}input[type=email]:focus,input[type=submit]:focus{--shadow-color: magenta;outline:none}input[type=email]{border:2px solid black;padding:.25rem .5rem}input[type=submit]{background-color:#000;color:#fff;font-weight:500;padding:.25rem .75rem}.pagination{display:flex;justify-content:center;list-style:none;gap:1rem;font-family:var(--font-mono);font-size:var(--text-sm);margin-top:calc(var(--spacing) * 2);margin-bottom:var(--spacing)}.pagination a{color:#00f}.pagination a[aria-disabled]{color:gray}.pagination a:not([aria-disabled],[aria-current=page]){text-decoration:underline}.sidebar{display:grid;grid-template-areas:"header" "main" "pages" "follow";align-content:start;padding-top:calc(var(--spacing) * 2 + 3px);padding-bottom:var(--spacing);font-family:var(--font-mono);font-size:var(--text-sm);border-right:1px solid gainsboro;padding-right:calc(var(--spacing) * 3)}@media (max-width: 600px){.sidebar{grid-template-areas:"header header" "main main" "pages follow";border:none;padding:0;margin:calc(var(--spacing) * 2) 0}}.sidebar-header{grid-area:header}.sidebar-main{grid-area:main}.sidebar-pages{grid-area:pages}.sidebar-follow{grid-area:follow}.sidebar ul{list-style:none;margin-top:var(--spacing)}.sidebar header{text-transform:uppercase;font-weight:700}.sidebar a:hover{text-decoration:underline}.sidebar a[aria-current=page]:after{content:"#";position:absolute;color:#00f}.sidebar a:not([href^="/"]):hover:after{position:absolute;content:"↗";font-family:system-ui;color:#f0f}.toc{border-radius:2px;margin-bottom:1.5rem;background-color:var(--color-gray);border-radius:var(--border-radius);padding:1.5rem;font-size:var(--text-sm);line-height:1.5;margin-top:calc(var(--spacing) * 2)}@media (min-width: 640px){.toc{display:grid;grid-template-columns:repeat(2,auto);grid-column-gap:1.5rem}}.toc h2{font-weight:600;margin-bottom:.75rem}.toc ol{margin:0;counter-reset:toc;list-style:none}.toc ol ol{margin-left:1.5rem}.toc li:before{display:inline-block;counter-increment:toc;content:counter(toc) ".";width:1.5rem}.toc li.active:before{content:"→";font-weight:300}.toc a{text-decoration:underline}@font-face{font-family:Berkeley Mono;font-style:normal;font-weight:400;src:local(""),url(/build/assets/BerkeleyMono-Regular-733036b5.woff2) format("woff2"),url(/build/assets/BerkeleyMono-Regular-dfc3ea3b.woff) format("woff")}@font-face{font-family:Berkeley Mono;font-style:normal;font-weight:700;src:local(""),url(/build/assets/BerkeleyMono-Bold-9c349922.woff2) format("woff2"),url(/build/assets/BerkeleyMono-Bold-97781793.woff) format("woff")}@font-face{font-family:Berkeley Mono;font-style:italic;font-weight:400;src:local(""),url(/build/assets/BerkeleyMono-Italic-4673cd24.woff2) format("woff2"),url(/build/assets/BerkeleyMono-Italic-5373add0.woff) format("woff")}@font-face{font-family:Berkeley Mono;font-style:italic;font-weight:700;src:local(""),url(/build/assets/BerkeleyMono-BoldItalic-06c7c992.woff2) format("woff2"),url(/build/assets/BerkeleyMono-BoldItalic-bfa0183d.woff) format("woff")}@font-face{font-family:Karla;font-style:normal;font-weight:400;src:local(""),url(/build/assets/Karla-Regular-bb02ccb2.woff2) format("woff2"),url(/build/assets/Karla-Regular-ad44caa1.woff) format("woff")}@font-face{font-family:Karla;font-style:normal;font-weight:700;src:local(""),url(/build/assets/Karla-Bold-8749b480.woff2) format("woff2"),url(/build/assets/Karla-Bold-f55d27a3.woff) format("woff")}@font-face{font-family:Karla;font-style:italic;font-weight:400;src:local(""),url(/build/assets/Karla-Italic-1acfa545.woff2) format("woff2"),url(/build/assets/Karla-Italic-50319128.woff) format("woff")}@font-face{font-family:Karla;font-style:italic;font-weight:700;src:local(""),url(/build/assets/Karla-BoldItalic-557b8b15.woff2) format("woff2"),url(/build/assets/Karla-BoldItalic-b404c4a1.woff) format("woff")}
