.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}#back-to-top:where(.astro-wlspcwf4)[data-visible=true]{opacity:1;transform:translateY(0);pointer-events:auto}#command-palette:where(.astro-wozhyvwc)::-webkit-scrollbar{width:0}#theme-toggle:where(.astro-3ef6ksr2) .theme-icon-light:where(.astro-3ef6ksr2),#theme-toggle:where(.astro-3ef6ksr2) .theme-icon-dark:where(.astro-3ef6ksr2),#theme-toggle:where(.astro-3ef6ksr2) .theme-icon-system:where(.astro-3ef6ksr2){display:none}#theme-toggle:where(.astro-3ef6ksr2)[data-theme=light] .theme-icon-light:where(.astro-3ef6ksr2){display:block}#theme-toggle:where(.astro-3ef6ksr2)[data-theme=dark] .theme-icon-dark:where(.astro-3ef6ksr2){display:block}#theme-toggle:where(.astro-3ef6ksr2)[data-theme=system] .theme-icon-system:where(.astro-3ef6ksr2){display:block}body{font-family:var(--font-satoshi)}:root{--accent: 243 75% 52%;--accent-foreground: 0 0% 100%;--foreground: 240 10% 9%;--muted-foreground: 240 5% 38%;--background: 240 20% 99%;--muted: 240 14% 95%;--card: 0 0% 100%;--border: 240 10% 88%;--input: 240 10% 88%;--ring: 243 75% 52%;--radius: .75rem;--prose-width: 72ch}.dark{--accent: 243 100% 75%;--accent-foreground: 240 25% 8%;--foreground: 0 0% 97%;--muted-foreground: 240 8% 68%;--background: 240 26% 5.2%;--muted: 240 16% 10%;--card: 240 18% 12.5%;--border: 240 13% 20%;--input: 240 13% 20%;--ring: 243 100% 75%}:root{--un-default-border-color: hsl(var(--border) / 1)}html.dark{color-scheme:dark}*{border-color:hsl(var(--border) / 1)}html{scroll-behavior:smooth}body{background-color:hsl(var(--background) / 1);color:hsl(var(--foreground) / 1);font-family:var(--font-satoshi),ui-sans-serif,system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}html.dark body{background-image:radial-gradient(120% 60% at 50% -10%,hsl(var(--accent) / .05),transparent 60%);background-repeat:no-repeat}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}::selection{background-color:hsl(var(--accent) / .25);color:hsl(var(--foreground) / 1)}a{transition:color .2s ease}a:hover{color:hsl(var(--accent) / 1)}:focus-visible{outline:2px solid hsl(var(--accent) / 1);outline-offset:2px;border-radius:.2rem}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:hsl(var(--muted-foreground) / .25);border-radius:999px;border:2px solid hsl(var(--background) / 1)}::-webkit-scrollbar-thumb:hover{background-color:hsl(var(--muted-foreground) / .4)}.js-reveal [data-reveal]{opacity:0;transform:translateY(1.1rem);transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}.js-reveal [data-reveal].is-revealed{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.js-reveal [data-reveal]{transition:opacity .25s ease;transform:none}}.article-prose{max-width:var(--prose-width);font-size:.9375rem;line-height:1.7}@media(min-width:640px){.article-prose{font-size:1rem}}.article-prose>:first-child{margin-top:0}#reading-progress{position:fixed;inset-inline:0;top:0;height:2.5px;width:0%;background:hsl(var(--accent) / 1);z-index:60;transform-origin:left}.site-header{position:sticky;top:0;z-index:50;background-color:hsl(var(--background) / .75);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid hsl(var(--border) / 1)}.toc-rail{position:sticky;top:6.5rem;max-height:calc(100vh - 9rem);overflow-y:auto}.toc-rail::-webkit-scrollbar{width:0}.toc-rail a{display:block;padding-block:.3rem;padding-inline-start:.85rem;border-inline-start:2px solid hsl(var(--border) / 1);color:hsl(var(--muted-foreground) / 1);font-size:.8125rem;line-height:1.4;text-decoration:none;transition:color .15s ease,border-color .15s ease}.toc-rail a:hover{color:hsl(var(--foreground) / 1)}.toc-rail a[data-active=true]{color:hsl(var(--accent) / 1);border-inline-start-color:hsl(var(--accent) / 1);font-weight:500}.toc-rail a[data-depth="3"]{padding-inline-start:1.6rem}dialog#command-palette{margin:10vh auto auto;padding:0;width:min(38rem,calc(100vw - 2.5rem));max-height:min(28rem,70vh);border:1px solid hsl(var(--border) / 1);border-radius:calc(var(--radius) * 1.4);background:hsl(var(--card) / 1);color:hsl(var(--foreground) / 1);box-shadow:0 20px 60px -15px #00000059,0 0 0 1px hsl(var(--border) / .5);overflow:hidden}dialog#command-palette::backdrop{background:hsl(var(--background) / .55);backdrop-filter:blur(3px)}dialog#command-palette[open]{animation:palette-in .16s cubic-bezier(.16,1,.3,1)}@keyframes palette-in{0%{opacity:0;transform:translateY(-.5rem) scale(.98)}to{opacity:1;transform:none}}.hero-field{position:relative;overflow:hidden}.hero-field:before{content:"";position:absolute;inset:-10%;background:radial-gradient(55% 55% at 50% 0%,hsl(var(--accent) / .16),transparent 70%);pointer-events:none}.hero-field:after{content:"";position:absolute;inset:0;opacity:.05;mix-blend-mode:overlay;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.hero-field>*{position:relative}:root{--cursor-x: 50%;--cursor-y: 50%}.spotlight-grid{position:fixed;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(circle,hsl(var(--foreground) / .55) 1px,transparent 1px);background-size:22px 22px;opacity:.12;-webkit-mask-image:radial-gradient(280px 280px at var(--cursor-x) var(--cursor-y),black,transparent 70%);mask-image:radial-gradient(280px 280px at var(--cursor-x) var(--cursor-y),black,transparent 70%)}[data-magnetic]{transition:transform .2s cubic-bezier(.16,1,.3,1);will-change:transform}.typing-cursor{display:inline-block;margin-inline-start:2px;color:hsl(var(--accent) / 1);animation:typing-blink 1s steps(1) infinite}@keyframes typing-blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.typing-cursor{animation:none}}span.katex-display{overflow-y:scroll;padding:.5rem}.katex-html{overflow:auto hidden;padding:3px}.katex-html .base{margin-block:0;margin-inline:auto}.katex-html .tag{position:relative!important;display:inline-block;padding-inline-start:.5rem}.astro-code{margin-top:.75rem;margin-bottom:.75rem;border-radius:calc(var(--radius) * 1.15);border:1px solid hsl(var(--border) / 1);background-color:hsl(var(--muted) / var(--un-bg-opacity, 1))!important;display:flex;flex-direction:column;min-width:0;& pre{min-width:0;margin:0;padding-top:.85rem;padding-bottom:.85rem;padding-inline:0;background:none;overflow-x:auto;& code{display:block;width:fit-content;min-width:100%;min-height:1.5rem;counter-reset:step;counter-increment:step 0;&:before{position:absolute;inset-inline-start:0;width:2.75rem;top:.8571429em;bottom:0;content:"";display:block;background-color:hsl(var(--muted) / var(--un-bg-opacity, 1));z-index:1}.line{padding-inline-end:3rem;&:before{position:sticky;content:counter(step);counter-increment:step;color:hsl(var(--muted-foreground) / .55);background-color:hsl(var(--muted) / var(--un-bg-opacity, 1));inset-inline-start:0;justify-content:end;display:inline-flex;width:2rem;padding-inline-end:.75rem;box-sizing:content-box;z-index:2;font-family:var(--font-mono),ui-monospace,monospace;font-size:.75em}&:last-child:empty,&:last-child:has(>span:empty:only-child){display:none}}}}}.dark .astro-code pre span{color:var(--shiki-dark)!important}.astro-code{&:has(code){position:relative}&:has(div.title){padding-top:2.25rem;& code:before{top:calc(2.25rem + .8571429em)}}.title{position:absolute;top:0;left:0;margin:.6rem .85rem;font-family:var(--font-mono),ui-monospace,monospace;font-size:.75rem;color:hsl(var(--muted-foreground) / 1)}.language{transition:opacity .3s;position:absolute;top:.7rem;right:.85rem;font-family:var(--font-mono),ui-monospace,monospace;font-size:.7rem;letter-spacing:.02em;text-transform:uppercase;color:hsl(var(--accent) / .8)}& button.copy{transition:opacity .3s;opacity:0;position:absolute;top:.6rem;right:.6rem;padding:.35rem;border-radius:calc(var(--radius) * .6);user-select:none;color:hsl(var(--muted-foreground) / 1);&:hover{background-color:hsl(var(--card) / 1);color:hsl(var(--foreground) / 1)}.success:before{content:"Copied!";position:absolute;right:100%;top:0;bottom:0;display:flex;justify-content:center;align-items:center;font-size:.75rem;padding:.5rem;margin-right:.5rem;border-radius:calc(var(--radius) * .5);color:hsl(var(--muted-foreground) / var(--un-text-opacity, 1));background-color:hsl(var(--card) / var(--un-bg-opacity, 1));border:1px solid hsl(var(--border) / var(--un-border-opacity, 1))}&.copied{.success{display:block}.ready{display:none}}}&:hover,&:focus-within{& button.copy{opacity:1}.language{opacity:0}}.highlighted,.diff{min-width:100%;display:inline-block}.highlighted,.highlighted:before{background-color:hsl(var(--accent) / .12)!important}.diff{&.remove{background-color:#f43f5e24;&:before{background-color:#f43f5e24;content:"-"}}&.add{background-color:#10b98124;&:before{background-color:#10b98124;content:"+"}}}.collapse-toggle{z-index:3;padding:.25rem;user-select:none;display:flex;justify-content:center;align-items:center;column-gap:.3rem;box-sizing:border-box;margin:0;font-family:var(--font-mono),ui-monospace,monospace;font-size:.75rem;color:hsl(var(--muted-foreground) / 1);border-top:1px solid hsl(var(--border) / var(--un-border-opacity, 1));.desc:before{content:"Collapse"}& svg{transition:transform .2s ease;transform:rotate(180deg)}}&.collapsed{& pre{max-height:15rem;overflow:hidden}.collapse-toggle{margin:.5rem;border:1px solid hsl(var(--border) / var(--un-border-opacity, 1));border-radius:calc(var(--radius) * .6);.desc:before{content:"Show all"}& svg{transform:rotate(0)}}.collapse-fade{z-index:2;user-select:none;pointer-events:none;position:absolute;bottom:0;left:0;right:0;height:8rem;background:linear-gradient(to bottom,transparent 0%,hsl(var(--muted) / var(--un-bg-opacity, 1)) 60%)}}}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
