@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin-wght-normal.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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin-ext-wght-normal.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:JetBrains Mono;font-style:italic;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin-wght-italic.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:JetBrains Mono;font-style:italic;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin-ext-wght-italic.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}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--surface:#0b0e12;--surface-2:#11161c;--border:#1d242c;--border-strong:#2c3742;--ink:#c3cbd4;--ink-strong:#eef2f6;--muted:#8a96a3;--accent:#22d3ee;--accent-strong:#67e8f9;--accent-ink:#001318;--accent-soft:#22d3ee14;--accent-line:#22d3ee52;--ok:#4ade80;--wip:#fbbf24;--warn:#fbbf24;--code-string:#a5e3c8;--code-number:#e8c98f;--code-removed:#f2a191;--font:"JetBrains Mono", ui-monospace, "Cascadia Mono", Menlo, Consolas, monospace;--font-display:var(--font);--font-text:var(--font);--step-small:.8125rem;--step-body:clamp(.9375rem, .91rem + .12vw, 1rem);--step-lead:clamp(1rem, .94rem + .3vw, 1.125rem);--step-h3:clamp(1.0625rem, 1rem + .3vw, 1.25rem);--step-head:clamp(1.75rem, 1.3rem + 2vw, 2.5rem);--step-display:clamp(2.25rem, 1.4rem + 3.8vw, 3.75rem);--margin:clamp(1rem, 4vw, 2rem);--wrap:72rem;--gutter:clamp(1rem, 2vw, 1.5rem);--section:clamp(4rem, 9vw, 6.5rem);--radius:.75rem;--radius-sm:.5rem;--header-h:4rem;--ease-out:cubic-bezier(.22, 1, .36, 1);--t-press:.12s;--t-hover:.16s;--t-ui:.22s;--t-enter:.52s;--t-stagger:70ms}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg);scroll-padding-top:calc(var(--header-h) + 1rem)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--bg);min-height:100svh;color:var(--ink);font-family:var(--font);font-size:var(--step-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.7;overflow-x:clip}h1,h2,h3,h4,p,figure,blockquote,ul,ol,dl,dd{margin:0}ul[class],ol[class]{padding:0;list-style:none}h1,h2,h3,h4{color:var(--ink-strong);text-wrap:balance;font-weight:700;line-height:1.2}p{text-wrap:pretty}img,svg,video{max-width:100%;display:block}img{height:auto}a{color:inherit}button,input,textarea,select{font:inherit;color:inherit}code,kbd,pre,samp{font-family:var(--font);font-size:1em}::selection{background:var(--accent);color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}[hidden],html:not(.js) .js-only{display:none!important}.accent{color:var(--accent)}.muted{color:var(--muted)}.small{font-size:var(--step-small)}.lead{font-size:var(--step-lead);color:var(--ink)}.head{font-size:var(--step-head);letter-spacing:-.01em}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.wrap{width:100%;max-width:calc(var(--wrap) + 2 * var(--margin));padding-inline:var(--margin);margin-inline:auto}.section{padding-block:var(--section)}.section+.section{border-top:1px solid var(--border)}.grid-cards{gap:var(--gutter);grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr));display:grid}.section-head{text-align:center;justify-items:center;gap:.875rem;margin-bottom:clamp(2rem,5vw,3rem);display:grid}.section-head p{max-width:38rem;color:var(--muted)}.section-head--start{text-align:start;justify-items:start}.pill{border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--accent);border-radius:999px;align-items:center;gap:.4rem;padding:.25rem .75rem;font-size:.75rem;font-weight:500;line-height:1.5;display:inline-flex}.pill svg{width:.875rem;height:.875rem}.btn{border:1px solid var(--border-strong);border-radius:var(--radius-sm);min-height:2.75rem;color:var(--ink-strong);overflow-wrap:anywhere;cursor:pointer;transition:border-color var(--t-hover) ease, background-color var(--t-hover) ease, color var(--t-hover) ease, transform var(--t-press) ease;background:0 0;justify-content:center;align-items:center;gap:.5rem;padding:.5rem 1.125rem;font-size:.875rem;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.btn svg{width:1rem;height:1rem;transition:translate var(--t-hover) var(--ease-out);flex:none}.btn:active{transform:translateY(1px)}.btn--primary{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.btn--small{min-height:2.25rem;padding:.375rem .75rem;font-size:.8125rem}@media (hover:hover) and (pointer:fine){.btn:hover{border-color:var(--accent);color:var(--accent)}.btn--primary:hover{border-color:var(--accent-strong);background:var(--accent-strong);color:var(--accent-ink)}}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.btn:hover>svg:last-child:not(:first-child){translate:3px}}.link{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:var(--accent-line);text-decoration-color:var(--accent-line);text-underline-offset:.2em;transition:text-decoration-color var(--t-hover) ease}@media (hover:hover) and (pointer:fine){.link:hover{text-decoration-color:currentColor}}.link-arrow{color:var(--accent);align-items:center;gap:.375rem;font-size:.875rem;font-weight:600;text-decoration:none;display:inline-flex}.link-arrow svg{width:1rem;height:1rem;transition:transform var(--t-hover) var(--ease-out)}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.link-arrow:hover svg,.card--link:hover .link-arrow svg{transform:translate(3px)}}.chips{flex-wrap:wrap;gap:.5rem;display:flex}.chip{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);max-width:100%;color:var(--ink);overflow-wrap:anywhere;align-items:center;padding:.1875rem .625rem;font-size:.75rem;line-height:1.6;display:inline-flex}.chip--accent{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent)}a.chip{text-decoration:none}@media (hover:hover) and (pointer:fine){a.chip:hover{border-color:var(--accent);color:var(--accent)}}.badge{border:1px solid;border-radius:999px;align-items:center;gap:.375rem;padding:.125rem .5rem;font-size:.6875rem;font-weight:600;line-height:1.6;display:inline-flex}.badge:before{content:"";background:currentColor;border-radius:50%;width:.375rem;height:.375rem}.badge--ok{color:var(--ok)}.badge--wip{color:var(--wip)}.badge--accent{color:var(--accent)}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);transition:border-color var(--t-hover) ease, transform var(--t-ui) var(--ease-out);flex-direction:column;display:flex;position:relative;overflow:hidden}.card--link .title,.card--link .cover{transition:color var(--t-hover) ease, scale var(--t-enter) var(--ease-out)}@media (hover:hover) and (pointer:fine){.card--link:hover{border-color:var(--accent-line)}.card--link:hover .title{color:var(--accent)}}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.card--link:hover{transform:translateY(-3px)}.card--link:hover .cover{scale:1.03}}.card :is(h2,h3){overflow-wrap:anywhere}.window-bar{border-bottom:1px solid var(--border);min-height:2.25rem;color:var(--muted);align-items:center;gap:.75rem;padding:0 .875rem;font-size:.75rem;display:flex}.window-bar:before{content:"";background:#ff5f57;border-radius:50%;flex:none;width:.5rem;height:.5rem;margin-right:1.75rem;box-shadow:.875rem 0 #febc2e,1.75rem 0 #28c840}.window-bar span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.clamp-2,.clamp-3{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.clamp-2{-webkit-line-clamp:2;line-clamp:2}.clamp-3{-webkit-line-clamp:3;line-clamp:3}.field{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);width:100%;min-height:2.75rem;color:var(--ink-strong);padding:.625rem .875rem;font-size:.9375rem}.field::placeholder{color:var(--muted)}.field:focus-visible{border-color:var(--accent);outline:none}.lightbox{width:100vw;max-width:none;height:100svh;max-height:none;padding:var(--margin);color:var(--ink);background:#000000f0;border:0;margin:0}.lightbox::backdrop{background:0 0}.lightbox[open]{place-items:center;display:grid}.lightbox figure{gap:.75rem;max-width:min(100%,90rem);max-height:100%;display:grid}.lightbox img{object-fit:contain;border-radius:var(--radius-sm);max-height:calc(100svh - 8rem)}.lightbox figcaption{color:var(--muted);font-size:var(--step-small);text-align:center}.lightbox button{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);min-width:2.75rem;min-height:2.75rem;color:var(--ink-strong);cursor:pointer;position:absolute}.lightbox-close{top:var(--margin);right:var(--margin)}.lightbox-prev{left:var(--margin);top:50%;translate:0 -50%}.lightbox-next{right:var(--margin);top:50%;translate:0 -50%}.lightbox-count{bottom:var(--margin);color:var(--muted);font-size:var(--step-small);position:absolute;left:50%;translate:-50%}.to-top{right:var(--margin);bottom:var(--margin);z-index:30;border:1px solid var(--border-strong);background:var(--surface);width:2.75rem;height:2.75rem;color:var(--ink-strong);transition:opacity var(--t-ui) ease, translate var(--t-ui) var(--ease-out), visibility var(--t-ui), border-color var(--t-hover) ease, color var(--t-hover) ease;border-radius:50%;place-items:center;display:grid;position:fixed}.to-top[data-hidden]{opacity:0;visibility:hidden;pointer-events:none}@media (prefers-reduced-motion:no-preference){.to-top[data-hidden]{translate:0 .75rem}}@media (hover:hover) and (pointer:fine){.to-top:hover{border-color:var(--accent);color:var(--accent)}}@keyframes rise{0%{opacity:0;translate:0 .75rem}}@keyframes pop-in{0%{opacity:0;scale:.97}}@keyframes cursor-blink{50%{opacity:0}}@keyframes page-out{to{opacity:0}}@keyframes page-in{0%{opacity:0}}@media (prefers-reduced-motion:reduce){@keyframes rise{0%{opacity:0}}@keyframes pop-in{0%{opacity:0}}}.grid-cards>:nth-child(2){--i:1}.grid-cards>:nth-child(3){--i:2}.grid-cards>:nth-child(4){--i:3}.grid-cards>:nth-child(n+5){--i:4}.stagger>*{--n:0}.stagger>:nth-child(2){--n:1}.stagger>:nth-child(3){--n:2}.stagger>:nth-child(4){--n:3}.stagger>:nth-child(5){--n:4}.stagger>:nth-child(n+6){--n:5}@view-transition{navigation:auto}.site-header{view-transition-name:site-header}::view-transition-old(root){animation:.14s both page-out}::view-transition-new(root){animation:.26s 60ms both page-in}::view-transition-group(nav-pill){animation-duration:.34s;animation-timing-function:var(--ease-out)}.first .section-head>*{animation:rise var(--t-enter) var(--ease-out) both}.first .section-head>:nth-child(2){animation-delay:var(--t-stagger)}.first .section-head>:nth-child(3){animation-delay:calc(2 * var(--t-stagger))}.first .card:not(.reveal,.pop-in),.enter:not(.reveal){animation:rise var(--t-enter) var(--ease-out) both;animation-delay:calc(3 * var(--t-stagger) + var(--i,0) * var(--t-stagger))}.reveal{opacity:0}.reveal.is-in{opacity:1;animation:rise var(--t-enter) var(--ease-out) both;animation-delay:calc(var(--i,0) * var(--t-stagger));translate:none}@media (prefers-reduced-motion:no-preference){.reveal:not(.is-in){translate:0 .75rem}}.stagger>*{animation:rise var(--t-enter) var(--ease-out) both;animation-delay:calc((3 + var(--n)) * var(--t-stagger))}.reveal:not(.is-in) .stagger>*{animation-play-state:paused}.pop-in{animation:pop-in .32s var(--ease-out) both;animation-delay:calc(var(--i,0) * 40ms)}.site-footer[data-astro-cid-nns7i3if]{border-top:1px solid var(--border)}.top[data-astro-cid-nns7i3if],.bottom[data-astro-cid-nns7i3if]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 2rem;display:flex}.top[data-astro-cid-nns7i3if]{padding-block:2rem 1.5rem}.bottom[data-astro-cid-nns7i3if]{border-top:1px solid var(--border);padding-block:1.25rem 2rem}.about[data-astro-cid-nns7i3if]{gap:.375rem;display:grid}.wordmark[data-astro-cid-nns7i3if]{color:var(--ink-strong);align-items:center;gap:.5rem;font-weight:700;text-decoration:none;display:inline-flex}.socials[data-astro-cid-nns7i3if]{gap:.5rem;display:flex}.socials[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{border:1px solid var(--border-strong);border-radius:var(--radius-sm);width:2.5rem;height:2.5rem;color:var(--ink);transition:color var(--t-hover) ease, border-color var(--t-hover) ease;place-items:center;display:grid}nav[data-astro-cid-nns7i3if] ul[data-astro-cid-nns7i3if]{flex-wrap:wrap;gap:.25rem 1.25rem;margin:0;padding:0;list-style:none;display:flex}nav[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{color:var(--muted);font-size:var(--step-small);text-decoration:none}@media (hover:hover) and (pointer:fine){.socials[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]:hover{border-color:var(--accent);color:var(--accent)}nav[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]:hover{color:var(--accent)}}.site-header[data-astro-cid-fzpbxy5g]{z-index:40;height:var(--header-h);border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0}.bar[data-astro-cid-fzpbxy5g]{justify-content:space-between;align-items:center;gap:1.5rem;height:100%;display:flex}.wordmark[data-astro-cid-fzpbxy5g]{color:var(--ink-strong);white-space:nowrap;align-items:center;gap:.5rem;font-size:.9375rem;font-weight:700;text-decoration:none;display:inline-flex}.prompt[data-astro-cid-fzpbxy5g]{color:var(--accent)}@media (prefers-reduced-motion:no-preference){.cursor[data-astro-cid-fzpbxy5g]{animation:1.1s step-end infinite cursor-blink}}.nav[data-astro-cid-fzpbxy5g] ul[data-astro-cid-fzpbxy5g]{align-items:center;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{isolation:isolate;border-radius:var(--radius-sm);color:var(--ink);transition:color var(--t-hover) ease;align-items:center;gap:.4rem;padding:.4rem .625rem;font-size:.8125rem;font-weight:500;text-decoration:none;display:inline-flex;position:relative}.nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g][aria-current=page]{color:var(--accent)}.nav-pill[data-astro-cid-fzpbxy5g]{z-index:-1;border-radius:inherit;background:var(--accent-soft);view-transition-name:nav-pill;position:absolute;inset:0}@media (prefers-reduced-motion:reduce){.nav-pill[data-astro-cid-fzpbxy5g]{view-transition-name:none}}.scroll-progress[data-astro-cid-fzpbxy5g]{display:none}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:scroll()){.scroll-progress[data-astro-cid-fzpbxy5g]{background:var(--accent);transform-origin:0;height:2px;animation:linear both grow-x;animation-timeline:scroll(root);display:block;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}}}@keyframes grow-x{to{transform:scaleX(1)}}@media (hover:hover) and (pointer:fine){.nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]:hover{color:var(--accent)}}.menu-trigger[data-astro-cid-fzpbxy5g]{border:1px solid var(--border-strong);border-radius:var(--radius-sm);min-width:2.75rem;min-height:2.75rem;color:var(--ink-strong);cursor:pointer;background:0 0;justify-content:center;align-items:center;font-size:.8125rem;text-decoration:none;display:none}@media (width<=63.99em){.nav[data-astro-cid-fzpbxy5g]{display:none}.menu-trigger[data-astro-cid-fzpbxy5g].js-only{display:inline-flex}}html:not(.js) .menu-trigger[data-astro-cid-fzpbxy5g].js-only{display:none}@media (width<=63.99em){html:not(.js) .menu-trigger[data-astro-cid-fzpbxy5g].no-js-only{padding-inline:.75rem;display:inline-flex}}.menu[data-astro-cid-fzpbxy5g]{width:100%;max-width:none;height:100svh;max-height:none;padding:0 var(--margin) var(--margin);background:var(--bg);color:var(--ink);border:0;margin:0}.menu[data-astro-cid-fzpbxy5g]::backdrop{background:var(--bg)}.menu-top[data-astro-cid-fzpbxy5g]{height:var(--header-h);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.menu-close[data-astro-cid-fzpbxy5g]{border:1px solid var(--border-strong);border-radius:var(--radius-sm);width:2.75rem;height:2.75rem;color:var(--ink-strong);cursor:pointer;background:0 0;place-items:center;display:grid}.menu-list[data-astro-cid-fzpbxy5g]{gap:.25rem;margin-top:1rem;display:grid}.menu-list[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{border-radius:var(--radius-sm);min-height:3.25rem;color:var(--ink-strong);align-items:center;gap:.875rem;padding:0 .875rem;font-size:1.0625rem;font-weight:600;text-decoration:none;display:flex}.menu-list[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g][aria-current=page]{background:var(--accent-soft);color:var(--accent)}.menu[data-astro-cid-fzpbxy5g]{opacity:0;transition-property:opacity,translate,display,overlay;transition-duration:var(--t-ui);transition-timing-function:var(--ease-out);transition-behavior:allow-discrete}.menu[data-astro-cid-fzpbxy5g]::backdrop{opacity:0;transition-property:opacity,display,overlay;transition-duration:var(--t-ui);transition-behavior:allow-discrete}.menu[data-astro-cid-fzpbxy5g][open]:not([data-closing]){opacity:1;translate:none}.menu[data-astro-cid-fzpbxy5g][open]:not([data-closing])::backdrop{opacity:1}@starting-style{.menu[data-astro-cid-fzpbxy5g][open]:not([data-closing]),.menu[data-astro-cid-fzpbxy5g][open]:not([data-closing])::backdrop{opacity:0}}@media (prefers-reduced-motion:no-preference){.menu[data-astro-cid-fzpbxy5g]{translate:0 -.5rem}@starting-style{.menu[data-astro-cid-fzpbxy5g][open]:not([data-closing]){translate:0 -.5rem}}}.menu[data-astro-cid-fzpbxy5g][open] .menu-list[data-astro-cid-fzpbxy5g] li[data-astro-cid-fzpbxy5g]{animation:rise var(--t-enter) var(--ease-out) both;animation-delay:calc(60ms + var(--i,0) * 40ms)}.menu-list[data-astro-cid-fzpbxy5g] li[data-astro-cid-fzpbxy5g]:nth-child(2){--i:1}.menu-list[data-astro-cid-fzpbxy5g] li[data-astro-cid-fzpbxy5g]:nth-child(3){--i:2}.menu-list[data-astro-cid-fzpbxy5g] li[data-astro-cid-fzpbxy5g]:nth-child(4){--i:3}.menu-list[data-astro-cid-fzpbxy5g] li[data-astro-cid-fzpbxy5g]:nth-child(5){--i:4}.menu-list[data-astro-cid-fzpbxy5g] li[data-astro-cid-fzpbxy5g]:nth-child(6){--i:5}.menu-list[data-astro-cid-fzpbxy5g] li[data-astro-cid-fzpbxy5g]:nth-child(n+7){--i:6}.skip-link[data-astro-cid-hkbrpulz]{left:var(--margin);z-index:60;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-ink);font-size:var(--step-small);padding:.625rem 1rem;font-weight:700;text-decoration:none;position:fixed;top:.75rem;transform:translateY(-200%)}.skip-link[data-astro-cid-hkbrpulz]:focus-visible{transform:none}main[data-astro-cid-hkbrpulz]:focus{outline:none}
