.header[data-astro-cid-fzpbxy5g]{z-index:20;border-block-end:1px solid var(--line);background:color-mix(in srgb, var(--bg) 82%, transparent);backdrop-filter:blur(12px);position:sticky;top:0}.header__inner[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--space-5);min-height:4rem;display:flex}.brand[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--space-3);margin-inline-end:auto;text-decoration:none;display:flex}.brand__mark[data-astro-cid-fzpbxy5g]{width:2.125rem;height:2.125rem;transition:transform var(--duration) var(--ease)}.brand__name[data-astro-cid-fzpbxy5g]{width:auto;height:1rem}.brand[data-astro-cid-fzpbxy5g]:hover .brand__mark[data-astro-cid-fzpbxy5g]{transform:translateY(-1px)}.nav[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--space-6);display:flex}.nav__list[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--space-5);padding:0;list-style:none;display:flex}.nav__list[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{padding-block:var(--space-2);color:var(--ink-dim);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;transition:color var(--duration) var(--ease);font-weight:700;text-decoration:none;display:block;position:relative}.nav__list[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]:hover,.nav__list[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g][aria-current=page]{color:var(--ink)}.nav__list[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g][aria-current=page]:before{content:">";color:var(--accent);position:absolute;inset-inline-start:-.75em}.lang[data-astro-cid-fzpbxy5g]{border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:1px;padding:2px;display:flex}.lang__item[data-astro-cid-fzpbxy5g]{font-size:var(--step--2);letter-spacing:.08em;color:var(--ink-faint);transition:color var(--duration) var(--ease), background-color var(--duration) var(--ease);padding:.25rem .5rem;font-weight:700;text-decoration:none}a[data-astro-cid-fzpbxy5g].lang__item:hover{color:var(--ink);background:var(--bg-raised)}.lang__item[data-astro-cid-fzpbxy5g].is-current{background:var(--accent);color:#fff}.menu[data-astro-cid-fzpbxy5g]{display:none}.burger[data-astro-cid-fzpbxy5g]{border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:0 0;place-items:center;width:2.5rem;height:2.5rem;padding:0;list-style:none;display:grid}.burger[data-astro-cid-fzpbxy5g]::-webkit-details-marker{display:none}.burger__bars[data-astro-cid-fzpbxy5g],.burger__bars[data-astro-cid-fzpbxy5g]:before,.burger__bars[data-astro-cid-fzpbxy5g]:after{background:var(--ink);width:1rem;height:2px;transition:transform var(--duration) var(--ease);display:block}.burger__bars[data-astro-cid-fzpbxy5g]{margin-inline:auto;position:relative}.burger__bars[data-astro-cid-fzpbxy5g]:before,.burger__bars[data-astro-cid-fzpbxy5g]:after{content:"";position:absolute}.burger__bars[data-astro-cid-fzpbxy5g]:before{top:-5px}.burger__bars[data-astro-cid-fzpbxy5g]:after{top:5px}.menu[data-astro-cid-fzpbxy5g][open] .burger__bars[data-astro-cid-fzpbxy5g]{background:0 0}.menu[data-astro-cid-fzpbxy5g][open] .burger__bars[data-astro-cid-fzpbxy5g]:before{top:0;transform:rotate(45deg)}.menu[data-astro-cid-fzpbxy5g][open] .burger__bars[data-astro-cid-fzpbxy5g]:after{top:0;transform:rotate(-45deg)}@media (width<=52rem){.menu[data-astro-cid-fzpbxy5g]{display:block}.nav[data-astro-cid-fzpbxy5g]{display:none}.header[data-astro-cid-fzpbxy5g]:has(.menu[open]) .nav[data-astro-cid-fzpbxy5g]{inset-inline:0;padding:var(--space-4) var(--gutter) var(--space-5);border-block-end:1px solid var(--line);background:var(--bg);flex-direction:column;align-items:stretch;gap:0;display:flex;position:absolute;top:100%}.nav__list[data-astro-cid-fzpbxy5g]{flex-direction:column;align-items:stretch;gap:0}.nav__list[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{padding:var(--space-3) 0 var(--space-3) var(--space-4);border-block-end:1px solid var(--line-soft);font-size:var(--step-0)}.nav__list[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g][aria-current=page]:before{inset-inline-start:0}.lang[data-astro-cid-fzpbxy5g]{align-self:flex-start;margin-block-start:var(--space-4)}}.footer[data-astro-cid-nns7i3if]{border-block-start:1px solid var(--line);background:var(--bg-inset);margin-block-start:var(--space-9)}.footer__inner[data-astro-cid-nns7i3if]{gap:var(--space-7);padding-block:var(--space-8);grid-template-columns:2fr 1fr 1fr;display:grid}.footer__lockup[data-astro-cid-nns7i3if]{align-items:center;gap:var(--space-4);display:flex}.footer__lockup[data-astro-cid-nns7i3if] img[data-astro-cid-nns7i3if]:first-child{width:3.25rem;height:3.25rem}.footer__lockup[data-astro-cid-nns7i3if] img[data-astro-cid-nns7i3if]:last-child{width:auto;height:1.25rem}.footer__tagline[data-astro-cid-nns7i3if]{max-width:30ch;font-size:var(--step--1);color:var(--ink-dim);margin-block-start:var(--space-4)}.footer__where[data-astro-cid-nns7i3if]{font-size:var(--step--2);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-faint);margin-block-start:var(--space-3)}.footer__heading[data-astro-cid-nns7i3if]{font-size:var(--step--2);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-faint);margin-block-end:var(--space-4);font-weight:700}.footer__links[data-astro-cid-nns7i3if] ul[data-astro-cid-nns7i3if]{gap:var(--space-3);padding:0;list-style:none;display:grid}.footer__links[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{font-size:var(--step--1);color:var(--ink-dim);overflow-wrap:anywhere;text-decoration:none}.footer__links[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]:hover{color:var(--accent-text-hover);text-underline-offset:.2em;text-decoration:underline}.footer__base[data-astro-cid-nns7i3if]{justify-content:space-between;gap:var(--space-3);padding-block:var(--space-5);border-block-start:1px solid var(--line);font-size:var(--step--2);color:var(--ink-faint);flex-wrap:wrap;display:flex}.footer__credit[data-astro-cid-nns7i3if]{color:var(--ink-faint)}@media (width<=52rem){.footer__inner[data-astro-cid-nns7i3if]{gap:var(--space-6);grid-template-columns:1fr 1fr}.footer__brand[data-astro-cid-nns7i3if]{grid-column:1/-1}}@font-face{font-family:Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-mono-400-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-mono-400-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/plex-mono-700-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/plex-mono-700-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plex Sans;font-style:normal;font-weight:100 700;font-display:swap;src:url(/fonts/plex-sans-latin-ext.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plex Sans;font-style:normal;font-weight:100 700;font-display:swap;src:url(/fonts/plex-sans-latin.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plex Sans;font-style:italic;font-weight:100 700;font-display:swap;src:url(/fonts/plex-sans-italic-latin-ext.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plex Sans;font-style:italic;font-weight:100 700;font-display:swap;src:url(/fonts/plex-sans-italic-latin.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Press Start 2P";font-style:normal;font-weight:400;font-display:block;src:url(/fonts/press-start-2p-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Press Start 2P";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/press-start-2p-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sixtyfour;font-style:normal;font-weight:400;font-display:block;src:url(/fonts/sixtyfour-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#000;--bg-panel:#0f1115;--bg-inset:#0b0c0f;--bg-raised:#14171d;--line:#1c1f26;--line-soft:#131519;--line-strong:#2a2f38;--ink:#f3f5f9;--ink-dim:#a7aeba;--ink-faint:#6f7783;--heat-0:#bf1e2d;--heat-1:#ed1c24;--heat-2:#f15a29;--heat-3:#f7931d;--heat-4:#fbb61b;--accent:var(--heat-0);--accent-hot:var(--heat-2);--accent-signal:var(--heat-4);--focus:var(--heat-3);--accent-text:#ff6b5e;--accent-text-hover:#ffa07a;--term-phosphor:#2fe07a;--cat-reviews:var(--heat-0);--cat-software:var(--heat-1);--cat-development:var(--heat-2);--cat-ai:var(--heat-3);--cat-gaming:var(--heat-4);--font-mono:"Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--font-sans:"Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-terminal:"Press Start 2P", var(--font-mono);--font-brandline:"Sixtyfour", var(--font-mono);--step--2:.75rem;--step--1:.8125rem;--step-0:1rem;--step-1:1.1875rem;--step-2:1.4375rem;--step-3:1.75rem;--step-4:clamp(2rem, 1.5rem + 2.2vw, 2.875rem);--step-5:clamp(2.5rem, 1.6rem + 4vw, 4rem);--tracking-label:.14em;--tracking-tight:-.015em;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--space-9:6rem;--measure:68ch;--width-reading:56rem;--width-content:68rem;--width-wide:82rem;--gutter:clamp(1rem, .5rem + 2.5vw, 2.5rem);--radius:2px;--radius-panel:4px;--ring:2px solid var(--focus);--ring-offset:2px;--ease:cubic-bezier(.2, 0, 0, 1);--duration:.16s;color-scheme:dark}@media (prefers-reduced-motion:reduce){:root{--duration:0s}}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:5rem}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{background:var(--bg);min-height:100vh;color:var(--ink);font-family:var(--font-mono);font-size:var(--step-0);font-synthesis-weight:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;line-height:1.6}body:before{content:"";z-index:0;pointer-events:none;background-image:linear-gradient(to right, var(--line-soft) 1px, transparent 1px), linear-gradient(to bottom, var(--line-soft) 1px, transparent 1px);background-size:4.5rem 4.5rem;position:fixed;inset:0;mask-image:radial-gradient(120% 60% at 50% 0,#000 10%,#0000 75%)}#top{z-index:1;flex-direction:column;min-height:100vh;display:flex;position:relative}main{flex:1}img,picture,svg,video{max-width:100%;display:block}input,button,textarea,select{font:inherit;color:inherit}:where(a){color:var(--accent-text);text-decoration-color:color-mix(in srgb, var(--accent-text) 40%, transparent);text-underline-offset:.2em;transition:color var(--duration) var(--ease)}:where(a:hover){color:var(--accent-text-hover);text-decoration-color:currentColor}:focus-visible{outline:var(--ring);outline-offset:var(--ring-offset);border-radius:var(--radius)}::selection{background:var(--heat-0);color:#fff}hr{border:0;border-top:1px solid var(--line)}.shell{width:100%;max-width:var(--width-content);padding-inline:var(--gutter);margin-inline:auto}.shell--wide{max-width:var(--width-wide)}.shell--reading{max-width:var(--width-reading)}.stack>*+*{margin-block-start:var(--flow,var(--space-4))}.section{padding-block:var(--space-8)}.section+.section{padding-block-start:0}.eyebrow{align-items:center;gap:var(--space-3);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-dim);margin-block-end:var(--space-5);font-weight:700;display:flex}.eyebrow:before{content:">";color:var(--accent);font-weight:700}.eyebrow:after{content:"";background:var(--line);flex:1;height:1px}.meta{font-size:var(--step--1);color:var(--ink-faint);font-variant-numeric:tabular-nums}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{top:var(--space-2);left:var(--space-2);z-index:100;padding:var(--space-2) var(--space-4);background:var(--heat-0);color:#fff;font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;font-weight:700;text-decoration:none;position:absolute;transform:translateY(-200%)}.skip-link:focus-visible{transform:translateY(0)}.chip{align-items:center;gap:var(--space-2);font-size:var(--step--2);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--chip-color,var(--ink-dim));font-weight:700;text-decoration:none;display:inline-flex}.chip:before{content:"";background:var(--chip-color,var(--ink-faint));flex:none;width:.5rem;height:.5rem}a.chip:hover{color:var(--chip-color,var(--ink));text-underline-offset:.25em;text-decoration:underline}.button{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--ink);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;cursor:pointer;transition:border-color var(--duration) var(--ease), color var(--duration) var(--ease), background-color var(--duration) var(--ease);background:0 0;font-weight:700;text-decoration:none;display:inline-flex}.button:hover{border-color:var(--accent-hot);color:var(--ink);background:color-mix(in srgb, var(--accent-hot) 12%, transparent)}.button--primary{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 18%, transparent)}.prose{font-family:var(--font-sans);font-size:var(--step-1);color:var(--ink-dim);max-width:var(--measure);line-height:1.75}.prose>*+*{margin-block-start:1.4em}.prose p{text-wrap:pretty}.prose :is(h2,h3,h4){font-family:var(--font-mono);color:var(--ink);letter-spacing:var(--tracking-tight);text-wrap:balance;scroll-margin-top:6rem;line-height:1.25}.prose h2{border-block-start:1px solid var(--line);font-size:var(--step-2);margin-block-start:2.2em;padding-block-start:.9em;font-weight:700}.prose h3{font-size:var(--step-1);margin-block-start:1.8em;font-weight:700}.prose h4{font-size:var(--step-0);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-dim);margin-block-start:1.6em;font-weight:700}.prose strong{color:var(--ink);font-weight:600}.prose a{color:var(--accent-text);text-underline-offset:.18em;text-decoration:underline 1px}.prose :is(ul,ol){padding-inline-start:1.4em}.prose li+li{margin-block-start:.5em}.prose li::marker{color:var(--accent)}.prose blockquote{border-inline-start:2px solid var(--accent);color:var(--ink);padding-inline-start:var(--space-5);font-style:italic}.prose :not(pre)>code{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-panel);font-family:var(--font-mono);color:var(--accent-signal);overflow-wrap:break-word;padding:.15em .4em;font-size:.875em}.prose pre{padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-panel);background:var(--bg-inset);font-size:var(--step--1);max-width:min(100%, calc(var(--measure) + 8rem));line-height:1.6;overflow-x:auto}.prose pre code{font-family:var(--font-mono)}.prose img{border:1px solid var(--line);border-radius:var(--radius-panel);width:100%;height:auto}.prose figure{max-width:min(100%, calc(var(--measure) + 8rem))}.prose figcaption{font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-faint);margin-block-start:var(--space-3)}.prose hr{margin-block:var(--space-7);border-top:1px solid var(--line)}.prose .table-wrap{max-width:min(100%, calc(var(--measure) + 8rem));overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-family:var(--font-mono);font-size:var(--step--1);font-variant-numeric:tabular-nums}.prose :is(th,td){padding:var(--space-3) var(--space-4);border-block-end:1px solid var(--line);text-align:left}.prose th{color:var(--ink);letter-spacing:var(--tracking-label);text-transform:uppercase;font-weight:700;font-size:var(--step--2);border-block-end-color:var(--line-strong)}.prose td{color:var(--ink-dim)}
