@font-face{font-family:iosevka;src:url(/fonts/iosevka-400-normal.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:iosevka;src:url(/fonts/iosevka-400-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:iosevka;src:url(/fonts/iosevka-700-normal.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:departure mono;src:url(/fonts/departure-mono.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{color-scheme:light dark;--bg:light-dark(#e3e4de, #151718);--bg-2:light-dark(#d6d8d1, #1c1f21);--line:light-dark(#a9ada4, #363c40);--fg:light-dark(#2b2f2e, #c3c5bd);--fg-hi:light-dark(#0f1211, #eeefe8);--fg-dim:light-dark(#575d5a, #878c87);--orange:light-dark(#a84000, #ff7a1a);--amber:light-dark(#7d5300, #e3b35b);--green:light-dark(#356219, #9cc57c);--blue:light-dark(#1d5aa0, #82b2e6);--blue-hi:light-dark(#0b3a72, #b8d5f5);--cyan:light-dark(#17635e, #82cbc4);--magenta:light-dark(#86397a, #d99bcc);--red:light-dark(#a8221a, #ee7a72);--selection:light-dark(#f0c49f, #4d2a12);--syn-keyword:var(--magenta);--syn-string:var(--green);--syn-number:var(--cyan);--syn-name:var(--blue);--syn-comment:var(--fg-dim);--font:"Iosevka", ui-monospace, "Cascadia Code", "SF Mono", Menlo, Consolas,
          "DejaVu Sans Mono", "Liberation Mono", monospace;--pixel:"Departure Mono", var(--font);--gutter:clamp(1rem, 4.5vw, 3.5rem);--indent:0;--measure:76ch}@media(min-width:48rem){:root{--indent:4ch}}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scrollbar-color:var(--line)var(--bg);background:var(--bg)}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--fg);font:1.0625rem/1.65 var(--font);font-synthesis:none;font-variant-ligatures:none;overflow-wrap:break-word}::selection{background:var(--selection);color:var(--fg-hi)}main{flex:1}a{color:var(--blue);text-decoration:underline;text-decoration-color:color-mix(in oklab,var(--blue) 40%,transparent);text-decoration-thickness:1px;text-underline-offset:.25em}a:hover{color:var(--blue-hi);text-decoration-color:initial}:focus-visible{outline:2px solid var(--orange);outline-offset:2px}img{max-width:100%;height:auto}strong,b{color:var(--fg-hi)}.dim{color:var(--fg-dim)}.skip{position:absolute;left:-999px;top:0;z-index:10;padding:.4rem .8rem;background:var(--orange);color:var(--bg)}.skip:focus{left:var(--gutter);top:4.5rem}.band{padding:2.25rem var(--gutter)2.5rem;border-bottom:1px solid var(--line)}main>.band:last-child{border-bottom:0}.col{max-width:calc(var(--measure) + var(--indent));padding-left:var(--indent)}.site-header{padding-block:1rem .9rem}.header-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 2rem}.prompt{color:var(--fg-dim);overflow-wrap:anywhere;font-weight:700}.prompt a{color:inherit;text-decoration:none}.prompt a:hover{color:var(--blue-hi)}.prompt .prompt-home{color:var(--orange)}.prompt [aria-current]{color:var(--fg-hi)}.prompt .sigil{color:var(--fg-dim);margin:0 .5ch 0 .25ch;font-weight:400}.cursor{display:inline-block;width:.6em;height:1.15em;vertical-align:-.22em;background:var(--orange);animation:blink 1.1s steps(1,end)infinite}@keyframes blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.cursor{animation:none}}.motd{margin:.15rem 0 0;color:var(--fg-dim);font-size:.875rem}.menu{display:flex;flex-wrap:wrap;gap:.25rem 1.25ch;margin:0;padding:0;list-style:none}.menu a{text-decoration:none}.menu a::before{content:"["/"";color:var(--fg-dim)}.menu a::after{content:"]"/"";color:var(--fg-dim)}.menu a:hover{color:var(--blue-hi)}.menu a[aria-current]{color:var(--fg-hi)}.menu a[aria-current]::before,.menu a[aria-current]::after{color:var(--orange)}@media(pointer:coarse){.menu a{display:inline-block;padding-block:.6rem}}h1,h2,h3,h4{margin:2.5rem 0 .75rem;color:var(--amber);font-weight:400;line-height:1.3;text-wrap:balance}h1,h2{font-family:var(--pixel)}h1{margin:0 0 1.25rem;color:var(--fg-hi);font-size:33px;line-height:1.15}h2{font-size:22px}h3{font-size:1.0625rem;font-weight:700}h4{font-size:1rem;color:var(--green);font-weight:700}article .prose>h1{margin:2.5rem 0 .75rem;color:var(--amber);font-size:22px}h1,h2,h3,h4{position:relative}.hash{margin-right:1ch;color:var(--fg-dim);font-family:var(--font);font-size:1rem;font-weight:400;text-decoration:none;user-select:none}.hash:hover{color:var(--blue-hi)}@media(min-width:48rem){.hash{position:absolute;right:100%;top:50%;transform:translateY(-50%);line-height:1}}.legend{margin:0;color:var(--green);font:11px/1 var(--pixel);text-transform:lowercase}.legend::before{content:"[ "/"";color:var(--fg-dim)}.legend::after{content:" ]"/"";color:var(--fg-dim)}.intro h1{margin-bottom:1rem;font-size:44px;line-height:1;letter-spacing:0}.panes{display:grid;grid-template-columns:minmax(0,1fr);gap:2rem 1.25rem;max-width:92rem;margin-left:var(--indent);padding-top:.5rem}@media(min-width:44rem){.panes{grid-template-columns:repeat(2,minmax(0,1fr))}.pane-feature,.pane-latest,.pane-badges{grid-column:span 2}}@media(min-width:76rem){.panes{grid-template-columns:repeat(4,minmax(0,1fr))}.pane-latest:last-child{grid-column:1/-1}}.pane{position:relative;padding:1.35rem 1.25rem 1.1rem;border:1px solid var(--line);container-type:inline-size}.pane>.legend{position:absolute;top:0;left:.85rem;transform:translateY(-50%);padding:0 .6ch;background:var(--bg)}.pane-feature .links a,.pane-feature .links .name{font-size:1.125rem}.pane{transition:border-color .2s}.pane:is(:hover,:focus-within){border-color:color-mix(in oklab,var(--green) 55%,var(--line))}@media(prefers-reduced-motion:reduce){.pane{transition:none}}.links{margin:0;padding:0;list-style:none}.links li{position:relative;padding:.3rem 0 .3rem 2ch}.links a::after{content:"";position:absolute;inset:0}.links a{text-decoration:none}.links a:hover{text-decoration:underline}.links .name{color:var(--fg)}.links a,.links .name{white-space:nowrap}.links .desc{display:block;color:var(--fg-dim);font-size:.9rem;line-height:1.45;text-wrap:pretty}.links li::before{content:"\203A"/"";position:absolute;left:0;color:var(--fg-dim);transition:color .15s,transform .2s cubic-bezier(.22,1,.36,1)}.links li:has(a:is(:hover,:focus-visible))::before{color:var(--orange);transform:translateX(.5ch)}@media(prefers-reduced-motion:reduce){.links li::before{transition:none}.links li:has(a:is(:hover,:focus-visible))::before{transform:none}}.links.pairs{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.15rem 2ch}.pairs li{display:grid;grid-column:1/-1;grid-template-columns:subgrid;align-items:baseline;padding-inline:0}.links.pairs li::before{content:none}.pairs .key{color:var(--fg-hi);font-weight:700}.links.pairs a,.links.pairs .name{overflow-wrap:anywhere;white-space:normal}@media(pointer:coarse){.links.pairs li{padding-block:.6rem}}.pane-latest .more{margin:.75rem 0 0}.more a::after{content:" \2192"/""}.badges{display:flex;flex-wrap:wrap;gap:6px;margin:.25rem 0 0;padding:0;list-style:none}.badges a,.badges span{display:block;line-height:0}.badges img{display:block;width:88px;height:31px;image-rendering:pixelated}.badges a:hover img{filter:brightness(1.15)}.entries{margin:0;padding:0;list-style:none}.entries li{display:grid;grid-template-columns:10ch 1fr;gap:0 2ch;padding-block:.3rem}.entries .when{color:var(--cyan);font-variant-numeric:tabular-nums}.entries .desc{margin:0;color:var(--fg-dim);font-size:.9rem;line-height:1.5}@media(max-width:34rem){.entries li{grid-template-columns:1fr}.entries .when{font-size:.875rem}}.year{margin:2rem 0 .5rem;color:var(--cyan)}.prose p,.prose ul,.prose ol,.prose blockquote,.prose details{margin:0 0 1.1rem}.prose p{text-wrap:pretty}.prose ul{padding-left:2ch;list-style-type:"- "}.prose ol{padding-left:3ch}.prose li::marker{color:var(--fg-dim)}.prose li+li{margin-top:.2rem}.prose li>ul,.prose li>ol{margin:.2rem 0 0}.prose .entries{padding-left:0}.prose .entries li+li{margin-top:0}.prose>header+*,.prose header+*{margin-top:0}.lede{margin-bottom:1.5rem}.intro p:last-child{margin-bottom:0}.meta{display:flex;flex-wrap:wrap;gap:.15rem 2ch;margin:-.5rem 0 2rem;color:var(--fg-dim);font-size:.9rem}.meta time{color:var(--cyan)}.meta a{color:var(--magenta);text-decoration:none}.meta a:hover{text-decoration:underline}blockquote{margin:1.5rem 0;padding-left:2ch;border-left:1px solid var(--line);color:var(--fg-dim)}blockquote>:last-child{margin-bottom:0}hr{margin:2.5rem 0;border:0;border-top:1px dashed var(--line)}figure{margin:1.5rem 0}figure img,.prose>img{border:1px solid var(--line)}figcaption{margin-top:.4rem;color:var(--fg-dim);font-size:.875rem}table{display:block;max-width:100%;margin:0 0 1.25rem;overflow-x:auto;border-collapse:collapse;font-size:.95rem;font-variant-numeric:tabular-nums}th,td{padding:.35rem 2ch .35rem 0;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{color:var(--green);font-weight:700}sup{line-height:0}sup a{text-decoration:none}.footnotes{margin-top:2.5rem;color:var(--fg-dim);font-size:.9rem}.footnotes hr{display:none}.footnotes ol{padding-left:3ch}kbd{padding:0 .35em;border:1px solid var(--line);border-bottom-width:2px;font:inherit;font-size:.9em}details>summary{cursor:pointer;list-style:none;color:var(--fg-dim)}details>summary::-webkit-details-marker{display:none}details>summary::before{content:"[+] "/"";color:var(--fg-dim)}details[open]>summary::before{content:"[-] "/""}details>summary:hover{color:var(--fg-hi)}.toc{margin:0 0 2rem;font-size:.95rem}.toc ul{margin:.35rem 0 0;padding-left:2ch;list-style:none}.toc nav>ul{padding-left:4ch}.toc li+li{margin-top:0}.post-nav{display:flex;flex-wrap:wrap;gap:.5rem 2rem;margin-top:3rem;padding-top:1rem;border-top:1px dashed var(--line);font-size:.95rem}.post-nav .newer{margin-left:auto;text-align:right}code,pre{font-family:inherit}:not(pre)>code{padding:.05em .35em;background:var(--bg-2);color:var(--fg-hi);font-size:.94em}pre{margin:0 0 1.25rem;padding:.9rem 1.1rem;overflow-x:auto;border:1px solid var(--line);background:var(--bg-2);font-size:.9375rem;line-height:1.55;tab-size:4;scrollbar-color:var(--line)var(--bg-2)}pre code{padding:0;background:0 0;color:inherit;font-size:inherit}.shell .ps{color:var(--orange);user-select:none}.shell .err{color:var(--red)}.highlight{margin:0 0 1.25rem}.highlight pre{margin:0}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .ow,.chroma .nt{color:var(--syn-keyword)}.chroma .kt,.chroma .nb,.chroma .bp,.chroma .nc,.chroma .nn,.chroma .nf,.chroma .fm,.chroma .na,.chroma .nd,.chroma .ne{color:var(--syn-name)}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s1,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .ss{color:var(--syn-string)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo,.chroma .no,.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .vm{color:var(--syn-number)}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:var(--syn-comment);font-style:italic}.chroma .gd{color:var(--red)}.chroma .gi{color:var(--green)}.chroma .gh,.chroma .gu,.chroma .gs{font-weight:700}.chroma .ge{font-style:italic}.statusbar{position:sticky;bottom:0;z-index:5;display:flex;align-items:stretch;gap:0 2ch;min-height:22px;padding-right:var(--gutter);border-top:1px solid var(--line);background:var(--bg-2);color:var(--fg-dim);font:11px/22px var(--pixel);white-space:nowrap}.statusbar p{display:flex;align-items:center;margin:0}.statusbar .session{padding:0 1.25ch 0 var(--gutter);background:var(--orange);color:var(--bg)}.statusbar .tools{gap:0 2ch;margin-left:auto}.statusbar a{color:inherit;text-decoration:none}.statusbar a:hover{color:var(--fg-hi)}.statusbar .built time{color:var(--cyan)}.statusbar .counter{display:block;height:18px;width:auto}.statusbar button{height:100%;margin:0;padding:0 0 0 .5ch;border:0;background:0 0;color:var(--fg);font:inherit;cursor:pointer}.statusbar button::before{content:"["/"";color:var(--fg-dim)}.statusbar button::after{content:"]"/"";color:var(--fg-dim)}.statusbar button:hover{color:var(--fg-hi)}@media(max-width:40rem){.statusbar .built{display:none}.statusbar .session{padding-right:1ch}}@media(max-width:30rem){.statusbar .copy{display:none}}@media(pointer:coarse){.statusbar{line-height:44px}.statusbar a,.statusbar button{display:inline-flex;align-items:center;min-height:44px;padding-inline:.5ch}}@media(prefers-reduced-motion:no-preference){:root.theme-fade,:root.theme-fade *,:root.theme-fade *::before,:root.theme-fade *::after{transition:background-color .35s ease,color .35s ease,border-color .35s ease!important}}@media print{:root{color-scheme:light}.menu,.statusbar,.cursor,.skip,.hash{display:none}.band{border:0;padding-inline:0}a{color:inherit}.prose a[href^=http]::after{content:" (" attr(href)")";font-size:.85em}pre{white-space:pre-wrap}}