.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@font-face{font-family:Lobster;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/lobster-latin-400-normal.VmWungf4.woff2)format("woff2"),url(/_astro/lobster-latin-400-normal.Cc8ENR_t.woff)format("woff")}.ae-storm{z-index:999;pointer-events:none;position:fixed;inset:0;overflow:hidden}.ae-storm span{font-family:"Lobster", var(--font-mono);will-change:transform, opacity;text-shadow:0 2px #00000059;line-height:1;position:absolute}:root{--box-shadow:0 2px 6px rgba(var(--gray), 25%), 0 8px 24px rgba(var(--gray), 33%), 0 16px 32px rgba(var(--gray), 33%);--accent:#f6722b;--chrome-shift:24;--radius-small:2px;--radius-medium:4px;--radius-large:8px;--radius-pill:999px;--lift:.2;--flb:#fff3;--groove-cut:#00000059;--groove-edge:#ffffff0f;--ink-step:.085;--ink-100:#ddd6c4;--ink-200:#c2bba9;--ink-300:#a7a08f;--ink-400:#8d8676;--ink-500:#746d5d;--ink-600:#5b5546;--font-mono:ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Consolas, "DejaVu Sans Mono", "Liberation Mono", monospace;--font-code:"Source Code Pro", var(--font-mono);--font-prose:"Iowan Old Style", "Palatino Linotype", Palatino, "Source Serif 4", serif;--font-sans:"Source Sans 3", system-ui, sans-serif;--type-body:.82rem;--type-label:.625rem;--track-body:.02em;--track-label:.12em;--track-brand:.26em;--ground-step:.028;--ground-100:#100e0a;--ground-200:#161410;--ground-300:#1c1a16;--ground-400:#23211d;--ground-500:#292823;--ground-600:#302f2a;--edge-100:#373531;--edge-200:#3d3b37;--edge-300:#43413d;--edge-400:#494742;--edge-500:#4f4d48;--edge-600:#55534e;--ink-link:#7d93a6;--ink-accent:#f1a547;--ink-viz:#9d8cf0;--header-height:3.5rem;--accent-200:#ffa200;--accent-300:oklch(86% .15 88);--chrome-orbit-x:calc(50% + cos(var(--chrome-turn)) * 40%);--chrome-orbit-y:calc(20% + sin(var(--chrome-turn)) * 30%);--chrome-glow-at:calc(var(--chrome-orbit-x) * (1 - var(--glow-pull)) + var(--pointer-x) * var(--glow-pull)) calc(var(--chrome-orbit-y) * (1 - var(--glow-pull)) + var(--pointer-y) * var(--glow-pull));--chrome:radial-gradient(42vmax 28vmax at var(--chrome-glow-at),  oklch(.86 .15 88 / calc(1 - .6 * var(--glow-pull))), oklch(86% .15 88/0) 70%), linear-gradient(var(--chrome-turn), var(--accent), var(--accent-200), var(--accent));--chrome-edge:linear-gradient(#ffb028, #ffb028);--page-border:4px;--frame-bottom:var(--page-border);--chrome-top:var(--header-height);--content-radius:0px;padding:var(--page-border) var(--page-border) var(--frame-bottom);background:url(/assets/chrome-noise.png) var(--noise-x) var(--noise-y) / 128px 128px, url(/assets/chrome-dots.png) var(--dots-x) var(--dots-y) / 26px 26px, var(--chrome);background-blend-mode:soft-light, overlay, normal, normal;box-sizing:border-box;background-attachment:fixed;min-height:100vh;font-size:16px}@supports (color:oklch(from white l c h)){:root{--accent-200:oklch(from var(--accent) calc(l + .087) calc(c - .009) calc(h + var(--chrome-shift)));--accent-300:oklch(from var(--accent) calc(l + .16) calc(c - .031) calc(h + var(--chrome-shift) * 1.8));--ink-accent:oklch(from var(--accent-200) .78 min(c, .14) h);--ink-viz:oklch(from var(--ink-accent) l clamp(.1, c, .14) calc(h + 180));--ink-200:oklch(from var(--ink-100) calc(l - var(--ink-step)) c h);--ink-300:oklch(from var(--ink-100) calc(l - 2 * var(--ink-step)) c h);--ink-400:oklch(from var(--ink-100) calc(l - 3 * var(--ink-step)) c h);--ink-500:oklch(from var(--ink-100) calc(l - 4 * var(--ink-step)) c h);--ink-600:oklch(from var(--ink-100) calc(l - 5 * var(--ink-step)) c h);--ground-200:oklch(from var(--ground-100) calc(l + var(--ground-step)) c h);--ground-300:oklch(from var(--ground-100) calc(l + 2 * var(--ground-step)) c h);--ground-400:oklch(from var(--ground-100) calc(l + 3 * var(--ground-step)) c h);--ground-500:oklch(from var(--ground-100) calc(l + 4 * var(--ground-step)) c h);--ground-600:oklch(from var(--ground-100) calc(l + 5 * var(--ground-step)) c h);--edge-100:oklch(from var(--ground-100) calc(l + var(--lift) * (1 - l)) c h);--edge-200:oklch(from var(--ground-200) calc(l + var(--lift) * (1 - l)) c h);--edge-300:oklch(from var(--ground-300) calc(l + var(--lift) * (1 - l)) c h);--edge-400:oklch(from var(--ground-400) calc(l + var(--lift) * (1 - l)) c h);--edge-500:oklch(from var(--ground-500) calc(l + var(--lift) * (1 - l)) c h);--edge-600:oklch(from var(--ground-600) calc(l + var(--lift) * (1 - l)) c h);--chrome:radial-gradient(42vmax 28vmax at var(--chrome-glow-at), oklch(from var(--accent-300) l c h / calc(1 - .6 * var(--glow-pull))), oklch(from var(--accent-300) l c h / 0) 70%), linear-gradient(var(--chrome-turn), var(--accent), var(--accent-200), var(--accent));--chrome-edge:radial-gradient(42vmax 28vmax at var(--chrome-glow-at), oklch(from var(--accent-300) calc(l + var(--lift) * (1 - l)) c h / calc(1 - .6 * var(--glow-pull))), oklch(from var(--accent-300) calc(l + var(--lift) * (1 - l)) c h / 0) 70%), linear-gradient(var(--chrome-turn), oklch(from var(--accent) calc(l + var(--lift) * (1 - l)) c h), oklch(from var(--accent-200) calc(l + var(--lift) * (1 - l)) c h), oklch(from var(--accent) calc(l + var(--lift) * (1 - l)) c h))}}@property --chrome-turn{syntax:"<angle>";inherits:true;initial-value:110deg}@property --glow-pull{syntax:"<number>";inherits:true;initial-value:0}@property --pointer-x{syntax:"<percentage>";inherits:true;initial-value:50%}@property --pointer-y{syntax:"<percentage>";inherits:true;initial-value:20%}:root{overscroll-behavior:none;transition:--glow-pull 1.6s,--pointer-x .15s ease-out,--pointer-y .15s ease-out;animation:78s steps(780,end) infinite chrome-turn,1.6s steps(16,end) infinite grain-drift,240s steps(2400,end) infinite grain-creep}:root.is-idle{animation-play-state:paused}@keyframes chrome-turn{0%{--chrome-turn:110deg}to{--chrome-turn:470deg}}@property --dots-x{syntax:"<length>";inherits:false;initial-value:0}@property --dots-y{syntax:"<length>";inherits:false;initial-value:0}@property --noise-x{syntax:"<length>";inherits:false;initial-value:0}@property --noise-y{syntax:"<length>";inherits:false;initial-value:0}@keyframes grain-drift{to{--dots-x:2.3853px;--dots-y:.7156px}}@keyframes grain-creep{to{--noise-x:-256px;--noise-y:-128px}}@media (prefers-reduced-motion:reduce){:root{animation:none}}body{font-family:var(--font-mono);text-align:left;word-wrap:break-word;overflow-wrap:break-word;color:var(--ink-100);font-size:var(--type-body);letter-spacing:var(--track-body);box-sizing:border-box;max-width:100vw;min-height:calc(100dvh - var(--page-border) - var(--frame-bottom));--chrome-turn:0deg;--glow-pull:0;--pointer-x:50%;--pointer-y:20%;--chrome-orbit-x:initial;--chrome-orbit-y:initial;--chrome-glow-at:initial;--chrome:initial;--chrome-edge:initial;background:0 0;flex-direction:column;margin:0;padding:0;line-height:1.7;display:flex;position:relative}:root{position:relative}:root:after{content:"";inset:calc(var(--page-border) + var(--chrome-top) - 1px) max(calc(var(--page-border) - 1px), 0px) max(calc(var(--frame-bottom) - 1px), 0px);z-index:10;border-radius:calc(var(--content-radius) + 1px);background:var(--chrome-edge);pointer-events:none;background-attachment:fixed;background-origin:border-box;background-clip:border-box;border:1px solid #0000;position:absolute;mask:linear-gradient(#000 0 0) padding-box exclude,linear-gradient(#000 0 0)}:root:before{--r:var(--content-radius);--foot:var(--content-radius);content:"";inset:calc(var(--page-border) + var(--chrome-top)) var(--page-border) var(--frame-bottom);z-index:10;background:var(--chrome);mask:radial-gradient(circle at 100% 100%, transparent calc(var(--r) - .5px), #000 calc(var(--r) + .5px)) 0 0 / var(--r) var(--r) no-repeat, radial-gradient(circle at 0 100%, transparent calc(var(--r) - .5px), #000 calc(var(--r) + .5px)) 100% 0 / var(--r) var(--r) no-repeat, radial-gradient(circle at 100% 0, transparent calc(var(--foot) - .5px), #000 calc(var(--foot) + .5px)) 0 100% / var(--foot) var(--foot) no-repeat, radial-gradient(circle at 0 0, transparent calc(var(--foot) - .5px), #000 calc(var(--foot) + .5px)) 100% 100% / var(--foot) var(--foot) no-repeat;pointer-events:none;background-attachment:fixed;position:absolute}@media (width<=1099px){:root{--frame-bottom:0px}:root:before{--foot:0px}:root:after{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}}:root{color-scheme:dark}*{scrollbar-width:thin;scrollbar-color:var(--ground-500) transparent}:hover{scrollbar-color:var(--ink-500) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background:0 0}::-webkit-scrollbar-thumb{background:var(--ground-500);background-clip:padding-box;border:2px solid #0000;border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:var(--ink-500)}main{box-sizing:border-box;max-width:calc(min(100%,720px));margin:auto;padding:4em 2em}@media (width<=720px){main{padding:.5em 0}.prose:not(.deck-prose){padding-inline:1rem}.deck-prose p,.deck-prose ul,.deck-prose ol,.deck-prose h1,.deck-prose h2,.deck-prose h3,.deck-prose h4,.deck-prose h5,.deck-prose h6,.deck-prose pre,.deck-prose blockquote{padding-left:1rem;padding-right:1rem}}h1,h3,h4,h5,h6{margin:0 0 .5rem;line-height:1.2}h1{font-size:2.25em}h2{font-size:2em;line-height:1.2}*+h2{margin:5rem 0 .5rem}h2:before{content:"##";margin-right:.5rem;display:inline-block}h3{font-size:1.437em}h3:before{content:"###";margin-right:.5rem;display:inline-block}h4{font-size:1.333em}h4:before{content:"####";margin-right:.5rem;display:inline-block}h5{font-size:1.25em}h5:before{content:"#####";margin-right:.5rem;display:inline-block}strong,b{font-weight:700}a{color:var(--ink-link)}a:hover{color:var(--ink-accent)}a.footnote,a.footnote:visited,a.footnote:hover,a.footnote:active,a.footnote:focus,a.footnote:focus-visible{color:inherit;cursor:text;text-decoration:none}p{margin-bottom:1em}textarea{width:100%;font-size:16px}input{font-size:16px}table{width:100%}img{border-radius:var(--radius-large);border:1px solid var(--edge-100);box-sizing:border-box;max-width:100%;height:auto;padding:1em}code,pre{font-family:var(--font-code);border:1px solid var(--flb);background-image:url(/assets/code-noise.png),url(/assets/code-dots.png);background-size:128px 128px,26px 26px}code{border-radius:var(--radius-medium);background-color:var(--ground-500);white-space:nowrap;overflow-wrap:break-word;padding:3px 6px}pre{image-rendering:pixelated;border:1px solid var(--groove-cut);box-shadow:inset 0 0 0 1px var(--groove-edge);border-radius:var(--radius-medium);overflow-wrap:break-word;white-space:pre-wrap;background-image:radial-gradient(circle,#ffffff0d .4px,#0000 .7px),url(/assets/grain-side.png);background-size:2.5px 2.5px,128px 128px;padding:1.5em;background-color:var(--ground-300)!important}pre>code{all:unset}blockquote{border-left:4px solid var(--ink-accent);color:var(--ink-300);margin:0;padding:0 0 0 20px}@media (width<=720px){body{font-size:.9375rem}}.glass{background:var(--viz-glass,#ffffff0f);box-shadow:inset 0 0 0 1px var(--viz-glass-rim,#ffffff14), 0 4px 16px #00000026;backdrop-filter:blur(6px);border-radius:var(--radius-large)}hr{border:none;border-top:1px solid var(--edge-100);margin:2em 0}strong,em{color:var(--ink-accent)}.sr-only{clip:rect(1px 1px 1px 1px);clip:rect(1px, 1px, 1px, 1px);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:0;padding:0;overflow:hidden;position:absolute!important}.prose{font-family:var(--font-prose);color:var(--ink-100);letter-spacing:normal;max-width:37rem;margin-inline:auto;font-size:1.125rem;line-height:1.7}.prose p{text-wrap:pretty;margin:0 0 1.3em}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{font-family:var(--font-mono);text-wrap:balance}.prose h2{font-size:1.6em}.prose h3{font-size:1.3em}.prose h4{font-size:1.15em}.prose h5{font-size:1.05em}.prose h2:before,.prose h3:before,.prose h4:before,.prose h5:before{color:var(--ink-500)}.prose *+h2{margin:3.5rem 0 1rem}.prose *+h3{margin:2.5rem 0 .75rem}.prose *+h4,.prose *+h5{margin:2rem 0 .5rem}.prose ul,.prose ol{margin:0 0 1.3em;padding-left:1.5em}.prose li{margin-bottom:.4em}.prose li>ul,.prose li>ol{margin:.4em 0 0}.prose blockquote{margin:1.8em 0;padding-left:1.25em}.prose pre,.prose pre>code{font-family:var(--font-code)}.prose pre{margin:1.6em 0;font-size:.85em;line-height:1.6}.prose :not(pre)>code{font-family:var(--font-code);white-space:normal;overflow-wrap:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em}.prose a{text-underline-offset:.18em;text-decoration-thickness:1px}:is(.prose .title,.prose.title) .date{font-family:var(--font-mono);font-size:var(--type-label);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ink-300)}.prose img,.prose table{margin:1.6em 0}@media (width<=720px){.prose{font-size:1rem}.deck-prose ul,.deck-prose ol{padding-left:2rem}}@media (width>=1100px){.prose:not(.deck-prose)>pre,.prose:not(.deck-prose)>figure,.prose:not(.deck-prose)>table,.prose:not(.deck-prose)>p:has(>img),.prose:not(.deck-prose)>p:has(>video){box-sizing:border-box;width:max-content;min-width:100%;max-width:min(55.5rem,100cqw);margin-left:50%;display:block;transform:translate(-50%)}}.deck-prose h1,.deck-prose h2,.deck-prose h3,.deck-prose h4,.deck-prose h5,.deck-prose h6{font-family:var(--font-prose);letter-spacing:-.005em;color:var(--ink-100);font-weight:700}.deck-prose h1:before,.deck-prose h2:before,.deck-prose h3:before,.deck-prose h4:before,.deck-prose h5:before,.deck-prose h6:before{content:none}.deck-prose h2{font-size:1.5em;line-height:1.25}.deck-prose h3{font-size:1.2em}.viz-range{--range-track:.4rem;--range-fill:transparent;--range-rest:#ffffff29;--range-at:0;--range-radius:var(--radius-small);--range-thumb-w:.55rem;--range-thumb-h:1.1rem;--range-thumb-ink:currentColor;--range-thumb-radius:var(--radius-small);--range-thumb-ring:0 0;--range-thumb-offset:calc((var(--range-track) - var(--range-thumb-h)) / 2);-webkit-appearance:none;appearance:none;touch-action:none;background:0 0;margin:0;padding:0}.viz-range::-webkit-slider-runnable-track{height:var(--range-track);border-radius:var(--range-radius);background:linear-gradient(to right, var(--range-fill) 0 calc(var(--range-at) * 100%), var(--range-rest) calc(var(--range-at) * 100%) 100%)}.viz-range::-moz-range-track{height:var(--range-track);border-radius:var(--range-radius);background:linear-gradient(to right, var(--range-fill) 0 calc(var(--range-at) * 100%), var(--range-rest) calc(var(--range-at) * 100%) 100%)}.viz-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:var(--range-thumb-w);height:var(--range-thumb-h);margin-top:var(--range-thumb-offset);border-radius:var(--range-thumb-radius);background:var(--range-thumb-ink);box-shadow:var(--range-thumb-ring);border:0}.viz-range::-moz-range-thumb{width:var(--range-thumb-w);height:var(--range-thumb-h);border-radius:var(--range-thumb-radius);background:var(--range-thumb-ink);box-shadow:var(--range-thumb-ring);border:0}.viz-range:focus-visible{outline:2px solid var(--ink-accent);outline-offset:4px;border-radius:var(--radius-small)}.viz-range.is-silent{--range-fill:transparent;--range-rest:transparent;--range-thumb-w:1px;--range-thumb-h:100%;--range-thumb-ink:transparent}@view-transition{navigation:auto}::view-transition-old(root),::view-transition-new(root){animation-duration:.26s}::view-transition-group(site-header),::view-transition-new(site-header),::view-transition-group(tree),::view-transition-new(tree){animation:none}::view-transition-old(site-header),::view-transition-old(tree){display:none}@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}.t3-mark[data-astro-cid-v6fe52ki]{display:block}
