﻿/*! 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:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:rgba(0,0,0,0)}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:.35em .75em .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}code[class*=language-],pre[class*=language-],pre:not([class*=language-])>code,pre:not([class*=language-]){background:hsl(220,13%,18%);color:hsl(220,14%,71%);text-shadow:0 1px rgba(0,0,0,.3);font-family:"Iosevka",Menlo,Consolas,"DejaVu Sans Mono",monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] *::-moz-selection,pre[class*=language-] *::-moz-selection,pre:not([class*=language-])>code::-moz-selection,pre:not([class*=language-])>code *::-moz-selection,pre:not([class*=language-]) *::-moz-selection{background:hsl(220,13%,28%);color:inherit;text-shadow:none}code[class*=language-]::selection,code[class*=language-] *::selection,pre[class*=language-] *::selection,pre:not([class*=language-])>code::selection,pre:not([class*=language-])>code *::selection,pre:not([class*=language-]) *::selection{background:hsl(220,13%,28%);color:inherit;text-shadow:none}pre[class*=language-],pre:not([class*=language-]){padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-]{padding:.2em .3em;border-radius:.3em;white-space:normal}@media print{code[class*=language-],pre[class*=language-],pre:not([class*=language-])>code,pre:not([class*=language-]){text-shadow:none}}.token.comment,.token.prolog,.token.cdata{color:hsl(220,10%,40%)}.token.doctype,.token.punctuation,.token.entity{color:hsl(220,14%,71%)}.token.attr-name,.token.class-name,.token.boolean,.token.constant,.token.number,.token.atrule{color:hsl(29,54%,61%)}.token.keyword{color:hsl(286,60%,67%)}.token.property,.token.tag,.token.symbol,.token.deleted,.token.important{color:hsl(355,65%,65%)}.token.selector,.token.string,.token.char,.token.builtin,.token.inserted,.token.regex,.token.attr-value,.token.attr-value>.token.punctuation{color:hsl(95,38%,62%)}.token.variable,.token.operator,.token.function{color:hsl(207,82%,66%)}.token.url{color:hsl(187,47%,55%)}.token.attr-value>.token.punctuation.attr-equals,.token.special-attr>.token.attr-value>.token.value.css{color:hsl(220,14%,71%)}.language-css .token.selector{color:hsl(355,65%,65%)}.language-css .token.property{color:hsl(220,14%,71%)}.language-css .token.function,.language-css .token.url>.token.function{color:hsl(187,47%,55%)}.language-css .token.url>.token.string.url{color:hsl(95,38%,62%)}.language-css .token.important,.language-css .token.atrule .token.rule{color:hsl(286,60%,67%)}.language-javascript .token.operator{color:hsl(286,60%,67%)}.language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:hsl(5,48%,51%)}.language-json .token.operator{color:hsl(220,14%,71%)}.language-json .token.null.keyword{color:hsl(29,54%,61%)}.language-markdown .token.url,.language-markdown .token.url>.token.operator,.language-markdown .token.url-reference.url>.token.string{color:hsl(220,14%,71%)}.language-markdown .token.url>.token.content{color:hsl(207,82%,66%)}.language-markdown .token.url>.token.url,.language-markdown .token.url-reference.url{color:hsl(187,47%,55%)}.language-markdown .token.blockquote.punctuation,.language-markdown .token.hr.punctuation{color:hsl(220,10%,40%);font-style:italic}.language-markdown .token.code-snippet{color:hsl(95,38%,62%)}.language-markdown .token.bold .token.content{color:hsl(29,54%,61%)}.language-markdown .token.italic .token.content{color:hsl(286,60%,67%)}.language-markdown .token.strike .token.content,.language-markdown .token.strike .token.punctuation,.language-markdown .token.list.punctuation,.language-markdown .token.title.important>.token.punctuation{color:hsl(355,65%,65%)}.token.bold{font-weight:bold}.token.comment,.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.8}.token.token.tab:not(:empty):before,.token.token.cr:before,.token.token.lf:before,.token.token.space:before{color:hsla(220,14%,71%,.15);text-shadow:none}div.code-toolbar>.toolbar.toolbar>.toolbar-item{margin-right:.4em}div.code-toolbar>.toolbar.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span{background:hsl(220,13%,26%);color:hsl(220,9%,55%);padding:.1em .4em;border-radius:.3em}div.code-toolbar>.toolbar.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span:focus{background:hsl(220,13%,28%);color:hsl(220,14%,71%)}.line-highlight.line-highlight{background:rgba(153,187,255,.04)}.line-highlight.line-highlight:before,.line-highlight.line-highlight[data-end]:after{background:hsl(220,13%,26%);color:hsl(220,14%,71%);padding:.1em .6em;border-radius:.3em;box-shadow:0 2px 0 0 rgba(0,0,0,.2)}pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:rgba(153,187,255,.04)}.line-numbers.line-numbers .line-numbers-rows,.command-line .command-line-prompt{border-right-color:hsla(220,14%,71%,.15)}.line-numbers .line-numbers-rows>span:before,.command-line .command-line-prompt>span:before{color:hsl(220,14%,45%)}.rainbow-braces .token.token.punctuation.brace-level-1,.rainbow-braces .token.token.punctuation.brace-level-5,.rainbow-braces .token.token.punctuation.brace-level-9{color:hsl(355,65%,65%)}.rainbow-braces .token.token.punctuation.brace-level-2,.rainbow-braces .token.token.punctuation.brace-level-6,.rainbow-braces .token.token.punctuation.brace-level-10{color:hsl(95,38%,62%)}.rainbow-braces .token.token.punctuation.brace-level-3,.rainbow-braces .token.token.punctuation.brace-level-7,.rainbow-braces .token.token.punctuation.brace-level-11{color:hsl(207,82%,66%)}.rainbow-braces .token.token.punctuation.brace-level-4,.rainbow-braces .token.token.punctuation.brace-level-8,.rainbow-braces .token.token.punctuation.brace-level-12{color:hsl(286,60%,67%)}pre.diff-highlight>code .token.token.deleted:not(.prefix),pre>code.diff-highlight .token.token.deleted:not(.prefix){background-color:hsla(353,100%,66%,.15)}pre.diff-highlight>code .token.token.deleted:not(.prefix)::-moz-selection,pre.diff-highlight>code .token.token.deleted:not(.prefix) *::-moz-selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection{background-color:hsla(353,95%,66%,.25)}pre.diff-highlight>code .token.token.deleted:not(.prefix)::selection,pre.diff-highlight>code .token.token.deleted:not(.prefix) *::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) *::selection{background-color:hsla(353,95%,66%,.25)}pre.diff-highlight>code .token.token.inserted:not(.prefix),pre>code.diff-highlight .token.token.inserted:not(.prefix){background-color:hsla(137,100%,55%,.15)}pre.diff-highlight>code .token.token.inserted:not(.prefix)::-moz-selection,pre.diff-highlight>code .token.token.inserted:not(.prefix) *::-moz-selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection{background-color:hsla(135,73%,55%,.25)}pre.diff-highlight>code .token.token.inserted:not(.prefix)::selection,pre.diff-highlight>code .token.token.inserted:not(.prefix) *::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) *::selection{background-color:hsla(135,73%,55%,.25)}.prism-previewer.prism-previewer:before,.prism-previewer-gradient.prism-previewer-gradient div{border-color:hsl(224,13%,17%)}.prism-previewer-color.prism-previewer-color:before,.prism-previewer-gradient.prism-previewer-gradient div,.prism-previewer-easing.prism-previewer-easing:before{border-radius:.3em}.prism-previewer.prism-previewer:after{border-top-color:hsl(224,13%,17%)}.prism-previewer-flipped.prism-previewer-flipped.after{border-bottom-color:hsl(224,13%,17%)}.prism-previewer-angle.prism-previewer-angle:before,.prism-previewer-time.prism-previewer-time:before,.prism-previewer-easing.prism-previewer-easing{background:hsl(219,13%,22%)}.prism-previewer-angle.prism-previewer-angle circle,.prism-previewer-time.prism-previewer-time circle{stroke:hsl(220,14%,71%);stroke-opacity:1}.prism-previewer-easing.prism-previewer-easing circle,.prism-previewer-easing.prism-previewer-easing path,.prism-previewer-easing.prism-previewer-easing line{stroke:hsl(220,14%,71%)}.prism-previewer-easing.prism-previewer-easing circle{fill:rgba(0,0,0,0)}@font-face{font-family:"Iosevka";src:url("/assets/fonts/IosevkaCustom-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-stretch:normal;font-display:swap}@font-face{font-family:"Iosevka";src:url("/assets/fonts/IosevkaCustom-Italic.woff2") format("woff2");font-weight:400;font-style:italic;font-stretch:normal;font-display:swap}@font-face{font-family:"Iosevka";src:url("/assets/fonts/IosevkaCustom-Bold.woff2") format("woff2");font-weight:700;font-style:normal;font-stretch:normal;font-display:swap}@font-face{font-family:"Iosevka";src:url("/assets/fonts/IosevkaCustom-BoldItalic.woff2") format("woff2");font-weight:700;font-style:italic;font-stretch:normal;font-display:swap}:root{--accent: #23b0ff;--accent-contrast-color: black;--article-link-color: inherit;--background: color-mix(in srgb, var(--accent) 2%, #1d1e28 98%);--border-color: rgba(255, 255, 255, 0.1);--color: #ddd;--dismissive: #888;--dotted-border-width: 4px;--dashed-border-width: 2px;--border-color: var(--accent);--dotted-border: var(--dotted-border-width) dotted var(--border-color);--dashed-border: var(--dashed-border-width) dashed var(--border-color)}html{height:100%;box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}body{display:grid;grid-template-rows:min-content auto min-content;grid-template-columns:minmax(auto, 900px);justify-content:safe center;min-height:100%;padding:1rem;font-family:"Iosevka",Monaco,Consolas,Ubuntu Mono,monospace;font-size:1.1rem;letter-spacing:-0.5px;line-height:1.54;background-color:var(--background);color:var(--color);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-webkit-overflow-scrolling:touch;-webkit-text-size-adjust:100%;overflow-x:hidden}@media(max-width: 900px){body{grid-template-columns:100%}}.title .metadata{display:flex;flex-direction:column}.title .metadata>time,.title .metadata>.reading-time{color:var(--dismissive)}.title .metadata>ul.tags{all:unset;display:flex;flex-wrap:wrap;gap:.8rem;color:var(--dismissive);word-wrap:break-word}.title .metadata>ul.tags li{display:inline}.title .metadata>ul.tags li::before{content:"#"}h1{margin:0;color:var(--accent)}h1::after{content:"";display:block;padding-top:2px;border-top:var(--dotted-border);border-bottom:var(--dotted-border);margin-top:.4rem;margin-bottom:.4rem}h1 a{text-decoration:none}h1,h2{font-size:1.5rem}.header-anchor{text-decoration:none;font-family:"Courier New",monospace}h1 code{font-size:.9em}h2 code{font-size:.9em}h3 code{font-size:.9em}h4 code{font-size:.9em}h5 code{font-size:.9em}h6 code{font-size:.9em}h2{margin-top:4rem}h2::after{content:"";display:block;border-bottom:var(--dotted-border);margin-top:.4rem;margin-bottom:.4rem}h3{margin-top:4rem}h3::after{content:"";display:block;border-bottom:var(--dotted-border);margin-top:.4rem;margin-bottom:.4rem}h4{margin-top:4rem}h4::after{content:"";display:block;border-bottom:var(--dotted-border);margin-top:.4rem;margin-bottom:.4rem}h5{margin-top:4rem}h5::after{content:"";display:block;border-bottom:var(--dotted-border);margin-top:.4rem;margin-bottom:.4rem}h6{margin-top:4rem}h6::after{content:"";display:block;border-bottom:var(--dotted-border);margin-top:.4rem;margin-bottom:.4rem}img{display:block;border:var(--dashed-border);margin:2rem 0 1rem 0;padding:1rem;max-width:100%;height:auto;object-fit:scale-down;margin-left:auto;margin-right:auto;object-fit:scale-down}img.cover{width:450px;aspect-ratio:1/1}a{position:relative;color:var(--accent)}a:hover{filter:brightness(120%)}a:active{filter:brightness(110%)}a[target=_blank]::after{content:"⮳";position:absolute;font-size:.8em;top:-0.7em;right:-0.9em}.cursor-blink{animation:blinker 1s linear infinite}@keyframes blinker{0%,49%{opacity:0}50%,100%{opacity:100%}}code,kbd{font-family:"Iosevka",Monaco,Consolas,Ubuntu Mono,monospace !important;font-feature-settings:normal;background:color-mix(in srgb, var(--accent), transparent 80%);color:var(--accent);padding:1px 6px;margin:0 2px;font-size:.95rem}code code,code kbd,kbd code,kbd kbd{background:rgba(0,0,0,0);padding:0;margin:0}pre{background:rgba(0,0,0,0) !important;padding:20px 10px;margin:40px 0;font-size:1.1rem;border-top:1px solid hsla(0,0%,100%,.1);border-bottom:1px solid hsla(0,0%,100%,.1)}pre+pre{border-top:0;margin-top:-40px}pre code{background:none !important;margin:0;padding:0;font-size:inherit;border:none}blockquote{border-top:1px solid var(--accent);border-bottom:1px solid var(--accent);margin:40px 0;padding:25px}@media(max-width: 684px){blockquote{padding-right:0}}blockquote p:first-of-type{margin-top:0}blockquote p:last-of-type{margin-bottom:0}blockquote p{position:relative}blockquote p:first-of-type::before{content:">";display:block;position:absolute;left:-25px;color:var(--accent)}table{table-layout:auto;border-collapse:collapse;width:100%;margin:40px 0}table,th,td{border:1px dashed var(--accent);padding:10px}th{color:var(--accent)}ul,ol{margin-left:22px;padding:0}ul li,ol li{position:relative}@media(max-width: 684px){ul,ol{margin-left:20px}}ol{list-style:none;counter-reset:li}ol>li{counter-increment:li}ol>li::before{content:counter(li) ") ";position:absolute;right:calc(100% + 10px);color:var(--accent);display:inline-block;text-align:right}ol>li>ol{margin-left:38px}ol>li>ol>li{counter-increment:li}ol>li>ol>li::before{content:counters(li, ".") ") "}mark{background:var(--accent);color:var(--accent-contrast-color)}hr{width:100%;border:none;background:var(--border-color);height:1px}sup{line-height:0}input,textarea,select{background:rgba(0,0,0,0);color:var(--accent);border:1px solid var(--accent);border-radius:0;padding:10px;margin:5px 0;font:inherit;appearance:none}input:focus,input :active,textarea:focus,textarea :active,select:focus,select :active{border-color:var(--color);outline:1px solid var(--color)}input:active,textarea:active,select:active{box-shadow:none}select{background:var(--background)}select option{background:var(--background)}::placeholder{color:color-mix(in srgb, var(--accent), transparent 50%)}input[type=checkbox],input[type=radio]{vertical-align:middle;padding:10px;box-shadow:inset 0 0 0 3px var(--background)}input[type=checkbox]:checked,input[type=radio]:checked{background:var(--accent)}input[type=radio]{border-radius:100%}header{display:grid;grid-template-columns:auto max-content;align-items:center;margin-bottom:3rem}header a{white-space:nowrap}header>nav{display:contents}header ul{all:unset;display:flex}header ul li{display:contents}header .left-nav{gap:2rem;padding:1rem 0}header .right-nav{gap:.5rem}header .right-nav>*{display:flex}header .logo{grid-column:span 2;display:flex}header .logo::after{content:"";flex-grow:1;background-image:linear-gradient(90deg, transparent 75%, var(--accent) 50%);background-size:10px 10px;background-color:rgba(0,0,0,0)}header .logo .logo-text{padding:5px 10px;background-color:var(--accent);color:color-mix(in srgb, var(--accent), var(--accent-contrast-color) 90%);text-decoration:none}footer{text-align:center;padding:4rem 0}footer span{white-space:nowrap}footer span,footer a{color:var(--dismissive)}