/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.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}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{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}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}@font-face{font-family:Roboto;font-weight:400;font-style:normal;src:url("fonts/roboto.woff2") format("woff2"),url("fonts/roboto.woff") format("woff");font-display:swap}@font-face{font-family:Roboto;font-weight:700;font-style:normal;src:url("fonts/roboto-bold.woff2") format("woff2"),url("fonts/roboto-bold.woff") format("woff");font-display:swap}@font-face{font-family:Roboto;font-weight:700;font-style:italic;src:url("fonts/roboto-bolditalic.woff2") format("woff2"),url("fonts/roboto-bolditalic.woff") format("woff");font-display:swap}@font-face{font-family:Roboto;font-weight:400;font-style:italic;src:url("fonts/roboto-italic.woff2") format("woff2"),url("fonts/roboto-italic.woff") format("woff");font-display:swap}@font-face{font-family:Cousine;font-weight:400;font-style:normal;src:url("fonts/cousine.woff2") format("woff2"),url("fonts/cousine.woff") format("woff");font-display:swap}@font-face{font-family:Cousine;font-weight:700;font-style:normal;src:url("fonts/cousine-bold.woff2") format("woff2"),url("fonts/cousine-bold.woff") format("woff");font-display:swap}@font-face{font-family:Cousine;font-weight:700;font-style:italic;src:url("fonts/cousine-bolditalic.woff2") format("woff2"),url("fonts/cousine-bolditalic.woff") format("woff");font-display:swap}@font-face{font-family:Cousine;font-weight:400;font-style:italic;src:url("fonts/cousine-italic.woff2") format("woff2"),url("fonts/cousine-italic.woff") format("woff");font-display:swap}:root{--pf-modal-max-width: 50rem !important}pagefind-modal-trigger{display:block !important}.bg{color:#272822;background-color:#fafafa}.chroma{color:#272822;background-color:#fafafa}.chroma .err{color:#960050;background-color:#1e0010}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#e1e1e1}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#00a8c8}.chroma .kc{color:#00a8c8}.chroma .kd{color:#00a8c8}.chroma .kn{color:#f92672}.chroma .kp{color:#00a8c8}.chroma .kr{color:#00a8c8}.chroma .kt{color:#00a8c8}.chroma .n{color:#111111}.chroma .na{color:#75af00}.chroma .nb{color:#111111}.chroma .bp{color:#111111}.chroma .nc{color:#75af00}.chroma .no{color:#00a8c8}.chroma .nd{color:#75af00}.chroma .ni{color:#111111}.chroma .ne{color:#75af00}.chroma .nf{color:#75af00}.chroma .fm{color:#111111}.chroma .nl{color:#111111}.chroma .nn{color:#111111}.chroma .nx{color:#75af00}.chroma .py{color:#111111}.chroma .nt{color:#f92672}.chroma .nv{color:#111111}.chroma .vc{color:#111111}.chroma .vg{color:#111111}.chroma .vi{color:#111111}.chroma .vm{color:#111111}.chroma .l{color:#ae81ff}.chroma .ld{color:#d88200}.chroma .s{color:#d88200}.chroma .sa{color:#d88200}.chroma .sb{color:#d88200}.chroma .sc{color:#d88200}.chroma .dl{color:#d88200}.chroma .sd{color:#d88200}.chroma .s2{color:#d88200}.chroma .se{color:#8045ff}.chroma .sh{color:#d88200}.chroma .si{color:#d88200}.chroma .sx{color:#d88200}.chroma .sr{color:#d88200}.chroma .s1{color:#d88200}.chroma .ss{color:#d88200}.chroma .m{color:#ae81ff}.chroma .mb{color:#ae81ff}.chroma .mf{color:#ae81ff}.chroma .mh{color:#ae81ff}.chroma .mi{color:#ae81ff}.chroma .il{color:#ae81ff}.chroma .mo{color:#ae81ff}.chroma .o{color:#f92672}.chroma .ow{color:#f92672}.chroma .p{color:#111111}.chroma .c{color:#75715e}.chroma .ch{color:#75715e}.chroma .cm{color:#75715e}.chroma .c1{color:#75715e}.chroma .cs{color:#75715e}.chroma .cp{color:#75715e}.chroma .cpf{color:#75715e}.chroma .ge{font-style:italic}.chroma .gs{font-weight:bold}html{font-family:Roboto, sans-serif;font-size:18px;letter-spacing:0.33px}code,pre,samp{font-family:Cousine, monospace;font-size:0.9em;letter-spacing:normal}.goat{font-family:Cousine, monospace;font-size:0.8em;font-weight:bold}.goat svg{display:block}.on-disk-hint-sheet code{font-size:0.85em}kbd{background:#ececec !important;border:1px solid #d9d9d9;border-radius:0.15rem;padding:0 0.25em;font-family:inherit;font-weight:bold}body{overflow-x:auto;color:#1a1a1a;background:#fff;box-sizing:border-box}body *{box-sizing:inherit}a{text-decoration:none;color:#06f}a:hover{color:rgba(0,102,255,0.5)}main{display:flex;max-width:52rem;margin:0 auto}#main-menu{flex:0 0 12rem}#main-menu nav{width:12rem;padding:1rem;position:fixed;top:0;bottom:0;overflow-x:hidden;scrollbar-width:thin;background:#fff}#main-menu nav a{font-size:0.875em;color:#333}#main-menu nav h2{position:sticky;z-index:10;top:-1rem;margin:0 0 1.25rem;background:#fff}#main-menu nav ul{padding:0;list-style:none}#main-menu nav ul li{margin:0.75em 0}#main-menu nav ul li.active>a{color:#c35600;font-weight:bold}#main-menu nav ul ul{padding-left:1rem}#main-page{min-width:20rem;padding:1rem;overflow-wrap:break-word}#main-page footer{margin-top:2rem;padding:1rem 0;border-top:0.2rem solid #ccc}#main-page footer p{text-align:center;font-style:italic}#toc-container{display:inline-block;padding-right:2rem;border:1px solid #ccc;background:#f7f7f7}#prev-next{text-align:center}#prev-next ul{padding:0}#prev-next li{display:inline}#prev-next li+li::before{content:" | "}.markdown{line-height:1.7}.markdown .chroma .line{display:inline}.markdown aside,.markdown blockquote{margin:1rem 2rem;padding:1rem 1rem;border-left:1rem solid #ccc;background:#f2f2f2;overflow-x:auto}.markdown aside.armchair-engineer,.markdown blockquote.armchair-engineer{border-left-color:#fff5cc;background:#fffcf2}.markdown aside.fun-fact,.markdown blockquote.fun-fact{border-left-color:#ccffe7;background:#f2fff9}.markdown aside.note,.markdown blockquote.note{border-left-color:#ffd6cc;background:#fff5f2}.markdown aside.speculation,.markdown blockquote.speculation{border-left-color:#cce7ff;background:#f2f9ff}.markdown aside :first-child,.markdown blockquote :first-child{margin-top:0}.markdown aside :last-child,.markdown blockquote :last-child{margin-bottom:0}.markdown audio{display:block;width:100%}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{line-height:normal}.markdown h1:first-child,.markdown h2:first-child,.markdown h3:first-child,.markdown h4:first-child,.markdown h5:first-child,.markdown h6:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3{font-weight:normal}.markdown img{max-width:100%;height:auto;vertical-align:bottom}.markdown pre{background:#ececec !important;border:1px solid #d9d9d9;border-radius:0.15rem;padding:0.25em;overflow-x:auto;line-height:normal}.markdown :not(pre)>code{background:#ececec !important;border:1px solid #d9d9d9;border-radius:0.15rem}.markdown table{max-width:fit-content;margin:1em auto;border-collapse:collapse;overflow-x:auto}.markdown table tr:nth-child(even){background:#e6e6e6}.markdown table th{background:#ccc}.markdown table th,.markdown table td{padding:0.5rem 0.25rem;border:1px solid #b3b3b3;font-size:0.8em;line-height:1.2}.markdown table th p:first-child,.markdown table td p:first-child{margin-top:0}.markdown table th p:last-child,.markdown table td p:last-child{margin-bottom:0}.markdown table th.sideways,.markdown table td.sideways{min-width:1.4rem;vertical-align:bottom}.markdown table th.sideways div,.markdown table td.sideways div{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap}.markdown .overline{text-decoration-line:underline;text-underline-offset:-0.9em}@media screen and (min-width: 32rem){.markdown .float-image{float:right;width:13em;margin:0 0 0 1rem}}.markdown .footnotes{font-size:0.8em;line-height:normal;color:#595959;overflow-x:auto}.markdown .footnotes hr{display:none}#main-menu nav,#main-page,.responsive-header label,.markdown{transition:0.2s ease-in-out;transition-property:opacity, transform}.responsive-header{display:none;margin-bottom:1rem;font-size:0}.responsive-header label{cursor:pointer}@media screen and (max-width: 51rem){#main-menu{margin-left:-12rem}.responsive-header{display:flex}#main-menu-control:checked+main #main-page{position:fixed}#main-menu-control:checked+main #main-menu nav,#main-menu-control:checked+main #main-page{transform:translateX(12rem)}#main-menu-control:checked+main .responsive-header label{transform:rotate(90deg)}#main-menu-control:checked+main .markdown{pointer-events:none;opacity:0.25}.markdown aside,.markdown blockquote{margin-left:-1rem;margin-right:-1rem}.markdown table{display:block}}@media print{#main-menu,#prev-next,#main-page footer{display:none}}.definition{cursor:help;text-decoration:underline dotted #595959}.centered{text-align:center}.full-width{width:100%;min-width:100%}
