@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&display=swap";/*! 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:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;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:-.25em}sup{top:-.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}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-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}[hidden],template{display:none}:root{--accent:#6366f1;--accent-dark:#4f46e5;--accent-rgb:99,102,241;--accent-dark-rgb:79,70,229;--secondary:#f97316;--secondary-rgb:249,115,22;--tertiary:#8b5cf6;--tertiary-rgb:139,92,246;--featured:#a17c2f;--featured-rgb:161,124,47;--black:24,24,27;--grey:113,113,122;--grey-light:228,228,231;--grey-dark:63,63,70;--grey-gradient:hsla(60,9%,98%,.9),#fafaf9;--surface:255,255,255;--surface-2:250,250,249;--border:228,228,231;--shadow-sm:0 1px 2px rgba(0,0,0,.05);--shadow-md:0 4px 6px -1px rgba(0,0,0,.07),0 2px 4px -2px rgba(0,0,0,.05);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.08),0 4px 6px -4px rgba(0,0,0,.05);--font-heading:"JetBrains Mono",monospace;--font-body:"Plus Jakarta Sans",sans-serif;--font-mono:"JetBrains Mono",monospace;--font-base:17px;--font-input:.875em;--font-code:.8em;--font-code-block:.875em;--font-quote:1.15em;--line-base:1.7;--font-h1:3.25rem;--line-h1:1.15;--font-h2:1.75rem;--line-h2:1.2;--font-h3:1.35em;--line-h3:1.25;--font-h4:1.15em;--line-h4:1.3;--font-h5:1em;--line-h5:1.3;--font-h6:.95em;--line-h6:1.3;--font-caption:.8rem;--color-heading:rgb(var(--black));--color-text:rgb(var(--grey-dark));--color-muted:rgb(var(--grey));--color-border:rgb(var(--border));--chrome-max-width:1100px;--main-max-width: calc(100% - 2em) ;--main-padding:2rem 0;--main-padding-mobile:1.5rem 0;--base-bg:rgb(var(--surface-2));--img-radius:6px;--img-shadow:var(--shadow-sm);--radius-xs:4px;--radius-sm:6px;--duration-fast:.18s;--prose-p-margin:1.75em;--prose-blockquote-accent:var(--accent);--prose-code-bg:rgb(var(--surface));--prose-code-radius:4px}@media(max-width:720px){:root{--font-base:16px;--font-h1:2rem;--font-h2:1.5rem}}body{color:var(--color-text);font-family:var(--font-body);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{color:var(--color-heading);font-family:var(--font-heading);font-weight:600;letter-spacing:-.01em;margin:0 0 .5rem}a{color:var(--accent);text-decoration:none;transition:color var(--duration-fast) ease}a:hover{color:var(--accent-dark)}p{margin-bottom:1em}b,strong{font-weight:700}::-moz-selection{background:rgba(var(--accent-rgb),15%)}::selection{background:rgba(var(--accent-rgb),15%)}h1{font-size:var(--font-h1);line-height:var(--line-h1)}h2{font-size:var(--font-h2);line-height:var(--line-h2)}h3{font-size:var(--font-h3);line-height:var(--line-h3)}h4{font-size:var(--font-h4);line-height:var(--line-h4)}h5{font-size:var(--font-h5);line-height:var(--line-h5)}h6{font-size:var(--font-h6);line-height:var(--line-h6)}body{font-size:var(--font-base);line-height:var(--line-base)}code{font-size:var(--font-code)}pre{font-size:var(--font-code-block)}blockquote{font-size:var(--font-quote)}img{border-radius:var(--img-radius);height:auto;max-width:100%}@keyframes reveal-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes cursor-blink{0%,to{opacity:1}50%{opacity:0}}@media(prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}body.base{background-color:var(--base-bg);display:flex;flex-direction:column;min-height:100vh}body.base main{flex:1;margin:auto;max-width:var(--main-max-width);padding:var(--main-padding)}@media(max-width:720px){body.base main{padding:var(--main-padding-mobile)}}body.base .page{gap:4rem}body.base .page,body.base .section{align-items:stretch;display:flex;flex-direction:column}body.base .section{gap:1.35rem}body.base .section-header{align-items:baseline;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between}body.base .kicker{color:var(--accent);font-family:var(--font-mono);font-size:var(--font-caption);font-weight:500;letter-spacing:.04em}body.base .lead{color:var(--color-muted);font-size:1.15em;line-height:1.65;max-width:55ch}body.base .meta{color:var(--color-muted);font-size:.95em;margin:0}.social-links[data-astro-cid-o4cuvvz2]{display:flex;gap:1em}.social-links[data-astro-cid-o4cuvvz2] a[data-astro-cid-o4cuvvz2]{align-items:center;color:rgba(var(--grey),.65);display:flex;transform:translateZ(0);transition:color .16s ease}.social-links[data-astro-cid-o4cuvvz2] a[data-astro-cid-o4cuvvz2]:hover{color:rgb(var(--black))}footer[data-astro-cid-mrti4z7t]{background:rgb(var(--surface-2));position:relative}.footer-border[data-astro-cid-mrti4z7t]{background:var(--color-border);height:1px;opacity:.6}.footer-inner[data-astro-cid-mrti4z7t]{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:var(--chrome-max-width);padding:1.5em 2em}.footer-col[data-astro-cid-mrti4z7t]{display:flex;flex-direction:column;gap:.2em}.footer-name[data-astro-cid-mrti4z7t]{color:var(--color-heading);font-family:var(--font-mono);font-weight:600}.footer-copy[data-astro-cid-mrti4z7t],.footer-name[data-astro-cid-mrti4z7t]{font-size:var(--font-caption)}.footer-copy[data-astro-cid-mrti4z7t]{color:var(--color-muted)}@media(max-width:720px){.footer-inner[data-astro-cid-mrti4z7t]{flex-direction:column;gap:1rem;padding:1.5em 1em;text-align:center}}header[data-astro-cid-f4nfjzvx]{backdrop-filter:blur(16px);background:rgba(var(--surface-2),.85);position:sticky;top:0;z-index:10}.header-inner[data-astro-cid-f4nfjzvx]{align-items:center;display:flex;height:3.75rem;justify-content:space-between;margin:0 auto;max-width:var(--chrome-max-width);padding:0 2em}.logo[data-astro-cid-f4nfjzvx]{align-items:center;color:var(--color-heading);display:inline-flex;gap:.15em;text-decoration:none}.logo[data-astro-cid-f4nfjzvx] .logo-symbol[data-astro-cid-f4nfjzvx]{color:var(--accent);font-family:var(--font-mono);font-size:.85em;font-weight:700;transition:transform var(--duration-fast) ease}.logo[data-astro-cid-f4nfjzvx] .logo-text[data-astro-cid-f4nfjzvx]{font-family:var(--font-heading);font-size:.85em;font-weight:700;letter-spacing:-.01em;padding:0 .15em}.logo[data-astro-cid-f4nfjzvx] .logo-cursor[data-astro-cid-f4nfjzvx]{animation:cursor-blink 1.2s step-end infinite;background:var(--accent);display:inline-block;height:1em;opacity:.5;width:2px}.logo[data-astro-cid-f4nfjzvx]:hover .logo-symbol[data-astro-cid-f4nfjzvx]{transform:translate(-2px)}.logo[data-astro-cid-f4nfjzvx]:hover .logo-cursor[data-astro-cid-f4nfjzvx]{opacity:1}nav[data-astro-cid-f4nfjzvx]{display:flex;gap:.25rem;height:100%}nav[data-astro-cid-f4nfjzvx],nav[data-astro-cid-f4nfjzvx] a[data-astro-cid-f4nfjzvx]{align-items:center}nav[data-astro-cid-f4nfjzvx] a[data-astro-cid-f4nfjzvx]{border-radius:var(--radius-sm);color:var(--color-muted);display:inline-flex;font-family:var(--font-body);font-size:.9em;font-weight:600;height:55%;padding:0 .9em;text-decoration:none;transition:color var(--duration-fast) ease,background var(--duration-fast) ease}nav[data-astro-cid-f4nfjzvx] a[data-astro-cid-f4nfjzvx]:hover{background:rgba(var(--accent-rgb),.06);color:var(--color-heading)}nav[data-astro-cid-f4nfjzvx] a[data-astro-cid-f4nfjzvx].active{background:rgba(var(--accent-rgb),.08);color:var(--accent)}.header-right[data-astro-cid-f4nfjzvx]{align-items:center;display:flex}.header-border[data-astro-cid-f4nfjzvx]{background:var(--color-border);height:1px;opacity:.6}@media(max-width:720px){.header-inner[data-astro-cid-f4nfjzvx]{padding:0 1em}.logo[data-astro-cid-f4nfjzvx] .logo-cursor[data-astro-cid-f4nfjzvx],.social-links{display:none}nav[data-astro-cid-f4nfjzvx] a[data-astro-cid-f4nfjzvx]{font-size:.85em;padding:0 .6em}}.bg-canvas[data-astro-cid-mipntdvn]{background:rgb(var(--surface-2));inset:0;overflow:hidden;position:fixed;z-index:-1}.dot-grid[data-astro-cid-mipntdvn]{background-image:radial-gradient(circle,rgba(var(--accent-rgb),.08) 1px,transparent 1px);background-size:32px 32px;-webkit-mask-image:radial-gradient(ellipse 80% 60% at 50% 0,#000 20%,transparent 70%);mask-image:radial-gradient(ellipse 80% 60% at 50% 0,#000 20%,transparent 70%)}.dot-grid[data-astro-cid-mipntdvn],.gradient-wash[data-astro-cid-mipntdvn]{inset:0;position:absolute}.gradient-wash[data-astro-cid-mipntdvn]{background:radial-gradient(ellipse 600px 400px at 15% 10%,rgba(var(--accent-rgb),.04),transparent),radial-gradient(ellipse 500px 350px at 85% 60%,rgba(var(--tertiary-rgb),.03),transparent)}@media(max-width:720px){.dot-grid[data-astro-cid-mipntdvn]{background-size:24px 24px}}
