/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
html{line-height:1.15;-webkit-text-size-adjust:100%;background-color:var(--color-bg-dark-primary)}body{margin:0;display:flex;flex-direction:column;min-height:100vh;color:var(--color-text);background-color:var(--color-bg-primary);font-size:var(--font-size-7);font-family:var(--font-sans);line-height:1.3;counter-reset:section subsection subsubsection}details,main{display:block}hr{box-sizing:content-box;height:0;overflow:visible}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;color:inherit;text-decoration:inherit}abbr[title]{border-bottom:none;text-decoration:underline dotted}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{color:inherit;display:table;max-width:100%;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}[hidden],template{display:none}:root{--color-text:#24292e;--color-text-dimmed:#616a77;--color-link:#1d73ce;--color-link-visited:#8b38d0;--color-button:#3c99dc;--color-text-dark:#cbd3ea;--color-text-dimmed-dark:#9baec8;--color-link-highlight-dark:#edf2f7;--color-bg-primary:#f9f9fa;--color-bg-secondary:#f2f2f2;--color-bg-tertiary:#fafbfc;--color-bg-dark-primary:#111827;--color-bg-dark-secondary:#1f2937;--color-bg-code:#121c23;--color-border:#dee5e8;--color-border-dimmed:#ecf4f8;--color-border-dimmed-dark:#30363d;--font-sans:'Reddit Sans', sans-serif;--font-mono:'JetBrains Mono', monospace;--font-size-1:calc(1.25rem + 1.0vmin);--font-size-2:calc(1.2rem + 0.9vmin);--font-size-3:calc(1.15rem + 0.8vmin);--font-size-4:calc(1.1rem + 0.7vmin);--font-size-5:calc(1.05rem + 0.6vmin);--font-size-6:calc(1.0rem + 0.5vmin);--font-size-7:calc(0.95rem + 0.4vmin);--font-size-8:calc(0.9rem + 0.3vmin);--font-size-mono:.875em;--border-radius:.5rem}*,::after,::before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.prose ol ol,.prose ul ul,blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,ol,p,pre,ul{margin:0}pre{-moz-tab-size:4;-o-tab-size:4;tab-size:4}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}ol,ul{list-style:none;padding:0}audio,canvas,embed,iframe,img,object,svg,video{display:block}img,video{max-width:100%;height:auto}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}table{text-indent:0;border-color:inherit;border-collapse:collapse}.wrapper,code,kbd,pre,samp{font-family:var(--font-mono)}.wrapper{width:min(calc(.8125*82ch),calc(100% - 3em));margin:0 auto}.wide-wrapper{font-family:var(--font-mono);width:min(calc(.8125*100ch),calc(100% - 3em));margin:0 auto}.wide-wrapper>*,.wrapper>*{font-family:var(--font-sans)}code,kbd,pre,samp{font-variant-ligatures:none}.prose{line-height:1.5}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{margin:1.25em 0 .75em;line-height:1.3;font-weight:700}.prose h1{font-size:var(--font-size-1)}.prose h2{font-size:var(--font-size-2)}.prose h3{font-size:var(--font-size-3)}.prose h4{font-size:var(--font-size-4)}.prose h5{font-size:var(--font-size-5)}.prose h6{font-size:var(--font-size-6)}.prose ol,.prose ul{margin:1em 0;padding-left:4ch}.prose ul{list-style-type:disc}.prose ol{list-style-type:number}.prose ul ul{list-style-type:circle}.prose li{margin-top:.5em}.prose p{margin:1em 0}.prose li p{margin:.5em 0}.prose a{color:var(--color-link);text-decoration:none}.entry-card:hover .entry-title,.prose a:hover{text-decoration:underline}.prose a:visited{color:var(--color-link-visited)}.prose>pre{background-color:#ecedee;padding:calc(1ch/1.5) 1ch}.prose code:not(.hl){background-color:#0000000c;border-radius:var(--border-radius);font-size:var(--font-size-mono);color:#1b1e22;padding:.1em .2em}.prose a code:not(.hl){color:inherit}.prose pre code:not(.hl){background:0 0}.prose kbd{background-color:var(--color-bg-secondary);border:1px solid #bbb;border-radius:var(--border-radius);box-shadow:0 1px 1px #0004,0 2px 0 0#fffc inset;font-size:var(--font-size-mono);padding:0 .2em}.prose blockquote{font-style:italic;padding:0 1.5em}.prose hr{border:0;margin:1em 0}.prose table,.prose table td{border:0;border-bottom:1px solid var(--color-border)}.prose table th{border:0;border-bottom:2px solid var(--color-border)}.prose hr,.prose table{border-top:1px solid var(--color-border)}.prose table{border-collapse:collapse;width:100%;margin:0 auto}.prose table thead{text-align:left}.prose table td,.prose table th{padding:.15em .3em}.block{display:block}.hidden{display:none}.centered{text-align:center}.debug{margin:1em 0;font-size:var(--font-size-8)}.debug,.overflow-x-auto{overflow-x:auto}.site-header{color:var(--color-text-dark);background-color:var(--color-bg-dark-primary);width:100%;padding:.75em 0}.site-footer a:hover,.site-header a:hover{color:var(--color-link-highlight-dark);text-decoration:underline}.header-nav{display:flex;justify-content:space-between;align-items:center;font-size:var(--font-size-8)}.header-logo{font-family:var(--font-mono);font-weight:700;font-size:1.1em}.header-links{display:flex;justify-content:center;padding:0;gap:.25em 1em}@media screen and (max-width:20rem){.header-nav{flex-wrap:wrap}.header-links,.header-logo{width:100%}.header-logo{text-align:center}.header-links{flex-wrap:wrap;margin-top:.5em}}.site-main{flex-grow:1}.main-header{background-color:var(--color-bg-dark-secondary);color:var(--color-text-dark);overflow:hidden;text-align:center;padding:1em 0}.main-header .main-title{font-size:var(--font-size-1);font-weight:700}.main-header .main-meta{color:var(--color-text-dimmed-dark);margin-top:.25em;text-align:center}.main-header .meta-sep{margin:0 .15em}.main-content{margin-top:1.5em;margin-bottom:1.5em}.site-footer{color:var(--color-text-dimmed-dark);background-color:var(--color-bg-dark-primary);font-size:var(--font-size-8);text-align:center;padding:1em 0}.site-footer a{color:var(--color-text-dark)}.footer-links{display:flex;justify-content:center;flex-wrap:wrap;gap:.25em 1em;padding:0;align-items:center}.footer-links,.footer-rev{margin-top:.5rem}.entry-section{margin:1.25em 0}.entry-section .section-title{font-size:var(--font-size-2);font-weight:700}.entry-card{margin:1em 0;border-radius:var(--border-radius);background-color:var(--color-bg-secondary)}.entry-card.unpublished{background:repeating-linear-gradient(45deg,var(--color-bg-secondary),var(--color-bg-secondary) 15px,#eaeaea 15px,#eaeaea 30px)}.entry-link{text-decoration:none;color:inherit;padding:.5em .65em;display:block;overflow:hidden}.entry-card .entry-title{font-size:var(--font-size-6);font-weight:700}.entry-card .entry-description{color:var(--color-text-dimmed)}.panel{border:1px solid var(--color-border);border-radius:var(--border-radius);margin:1.5em 0;overflow:hidden}.panel-header{padding:.75em}.panel-title{font-size:var(--font-size-5);font-weight:700;margin-bottom:.15em}.panel-description{opacity:.9}.panel-description a{color:var(--color-link)}.panel-description a:hover{text-decoration:underline}.panel-item{padding:.75em}.panel-header+.panel-item{padding-top:0}.panel-item:not(:first-of-type){border-top:1px solid var(--color-border)}.form-group:not(:first-child){margin-top:.75em}.form-row{display:flex;gap:1em}.form-row .form-item{flex:1 1 auto}.form label{display:block;font-size:var(--font-size-8);margin-bottom:.15em}.form input[type=email],.form input[type=password],.form input[type=text],.form textarea{font-family:var(--font-mono);font-size:var(--font-size-8);line-height:inherit;color:inherit;border:1px solid var(--color-border);border-radius:var(--border-radius);padding:.25em .5em;background-color:var(--color-bg-tertiary);width:100%;resize:vertical;outline:0}.form input[type=email]:focus,.form input[type=password]:focus,.form input[type=text]:focus,.form textarea:focus{box-shadow:0 0 .1rem .15rem var(--color-button)}.form input[type=submit]{cursor:pointer;font-weight:600;border:0;color:#fff;background-color:var(--color-button)}.form input[type=submit]:hover,.wide-button:hover{opacity:.8}.form-required{font-style:italic}.view-more,.wide-button{font-size:var(--font-size-7)}.wide-button{cursor:pointer;width:100%;padding:.3em .5em;border:0;border-radius:var(--border-radius);color:#fff;background-color:var(--color-button);font-weight:700}.view-more{text-align:center;color:var(--color-link)}.view-more:hover{text-decoration:underline}.meta-rule{border:0;border-top:1px solid var(--color-border);margin:1.5em 0}.katex{font-size:1.1em!important}.katex-display{overflow:hidden;overflow-x:auto}.post-content,.post-content figure{margin:1.5em 0}.figure-content>:first-child{margin-top:0}.figure-caption{color:var(--color-text-dimmed);font-size:var(--font-size-8);margin:.75em 0;text-align:center}.post-content .wide-content{display:flex;justify-content:center}.post-content .wide-content-inner{font-family:var(--font-mono);width:min(calc(.8125*100ch),calc(100vw - 3em));flex-grow:1;flex-shrink:0}.code-snippet,.content-image{border-radius:var(--border-radius)}.content-image{display:block;margin:0 auto}.code-snippet{color:var(--color-text-dark);background-color:var(--color-bg-dark-primary);overflow-x:auto;font-family:var(--font-mono);font-size:max(.8125rem,.8125em)}.snippet-wrapper{min-width:min-content}.snippet-caption,.snippet-content{padding:calc(1ch/1.5) 1ch}.snippet-caption{background-color:var(--color-bg-dark-secondary);white-space:nowrap}.snippet-caption a{color:#52aae6}.admonition{margin:1em 0;padding:1em;background-color:#80808010;border-radius:var(--border-radius);overflow:hidden}.admonition-header{text-transform:uppercase;font-size:var(--font-size-7);font-weight:700;margin:0 0 .75em}.admonition-header+.admonition-content>p:first-child{margin-top:-.5em}.admonition-content>:first-child,.toc>ol>li:first-child{margin-top:0}.admonition-content>:last-child{margin-bottom:0}.admonition-note,.admonition-tip{background-color:#4aa6dd10}.admonition-warning{background-color:#ee972810}.admonition-danger{background-color:#e4383810}.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6{position:relative;padding-left:.7em;margin-left:-.7em}.heading-link{display:none;position:absolute;left:0;opacity:.75}.heading-link:hover{text-decoration:none!important}.post-content h2:hover .heading-link,.post-content h3:hover .heading-link,.post-content h4:hover .heading-link,.post-content h5:hover .heading-link,.post-content h6:hover .heading-link{display:initial}.post-content h2,.post-content h3,.post-content h4{display:flex}.post-content h2::before,.post-content h3::before,.post-content h4::before{margin-right:.75em}.post-content h2{counter-reset:subsection subsubsection;counter-increment:section}.post-content h2::before{content:counter(section)}.post-content h3{counter-reset:subsubsection;counter-increment:subsection}.post-content h3::before{content:counter(section)"."counter(subsection)}.post-content h4{counter-increment:subsubsection}.post-content h4::before{content:counter(section)"."counter(subsection)"."counter(subsubsection)}.toc{margin:1.5em 0;padding:1em;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--border-radius);line-height:1.3}.references a:visited,.toc a:visited{color:var(--color-link)}.toc-header{font-size:var(--font-size-7);font-weight:700;text-transform:uppercase}.toc ol{padding-left:1em}.toc li{margin-top:.25em;padding-left:.75em}.toc li::marker{color:var(--color-text-dimmed)}.toc>ol{counter-reset:tocsection tocsubsection;margin:.5em 0 0;padding-left:.5em}.toc>ol>li{counter-increment:tocsection}.toc>ol>li::marker{content:counter(tocsection)}.toc>ol>li>ol{counter-reset:tocsubsection}.toc>ol>li>ol>li{counter-increment:tocsubsection}.toc>ol>li>ol>li::marker{content:counter(tocsection)"."counter(tocsubsection)}.ref-backlinks{font-style:italic;float:left;margin-right:.25em}:target{background-color:#fbf1a2}.references p{margin:.25em 0}.post-footnotes{border-top:1px solid var(--color-border-dimmed);color:#738a94;font-size:var(--font-size-7)}.content-nav{color:var(--color-text-dark);background-color:var(--color-bg-dark-secondary)}.content-links{display:flex;justify-content:space-between;column-gap:.75em;margin:.75em -.75em}.post-card{flex:0 1 50%;border-radius:var(--border-radius)}.post-card:hover{background-color:#293546}.post-card.next{margin-left:auto;text-align:right}.card-link{display:block;width:100%;height:100%;padding:.5em .65em}.card-link:hover{text-decoration:none}.card-link::before{content:"← Previous";color:var(--color-text-dimmed-dark);font-size:var(--font-size-8)}.post-card.next .card-link::before{content:"Next →"}.card-title{font-size:var(--font-size-7);font-weight:400}.contact-result{padding:.25em}.contact-result .error-list{padding-left:1.5em;list-style-type:disc}.contact-success{background-color:#6ef2e0}.contact-error{background-color:#ff477b}.contact-form{margin:1em 0}.contact-link{color:var(--color-link)}.contact-link:hover{text-decoration:underline}