.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}.footer[data-astro-cid-sz7xmlte]{border-top:1px solid color-mix(in oklch,var(--fg) 5%,transparent);margin-top:4rem;color:var(--muted)}.footer__inner[data-astro-cid-sz7xmlte]{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding-block:2rem 3rem}.footer[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{color:inherit}.footer__links[data-astro-cid-sz7xmlte]{display:flex;gap:.5rem;align-items:center}.grain[data-astro-cid-rqqfbmvm]{position:fixed;inset:0;pointer-events:none;z-index:9999;background-image:url(/noise.svg);background-size:240px 240px;mix-blend-mode:overlay;opacity:.06}:root[data-theme=dark] .grain[data-astro-cid-rqqfbmvm]{opacity:.1}@media(prefers-reduced-motion:reduce){.grain[data-astro-cid-rqqfbmvm]{opacity:.04}}.lang-switch-form[data-astro-cid-su6xvggn]{display:inline-flex;margin:0;padding:0}.lang-switch[data-astro-cid-su6xvggn]{font-family:var(--ff-sans);font-size:.8em;font-weight:500;letter-spacing:.04em;color:var(--muted);padding:.3em .6em;border-radius:var(--r-pill);border:1px solid color-mix(in oklch,var(--fg) 12%,transparent);background:color-mix(in oklch,var(--bg) 40%,transparent);transition:color .2s,background .2s,border-color .2s;position:relative;user-select:none;-webkit-tap-highlight-color:transparent}.lang-switch[data-astro-cid-su6xvggn]:hover{color:var(--fg);border-color:color-mix(in oklch,var(--fg) 28%,transparent);background:color-mix(in oklch,var(--bg) 60%,transparent)}.lang-switch--missing[data-astro-cid-su6xvggn]:after{content:"";position:absolute;top:.25em;right:.25em;width:4px;height:4px;border-radius:50%;background:var(--accent-2)}.header[data-astro-cid-3ef6ksr2]{position:sticky;top:0;z-index:50;background:var(--glass-hi);backdrop-filter:blur(var(--blur-1)) saturate(120%);-webkit-backdrop-filter:blur(var(--blur-1)) saturate(120%);border-bottom:1px solid color-mix(in oklch,var(--fg) 6%,transparent);view-transition-name:site-header}.header__inner[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;justify-content:space-between;gap:var(--space);padding-block:clamp(1rem,.6rem + .6vw,1.4rem);max-width:1100px}.brand[data-astro-cid-3ef6ksr2]{display:inline-flex;flex-direction:column;line-height:1.05;text-decoration:none;color:var(--fg)}.brand__domain[data-astro-cid-3ef6ksr2]{font-family:var(--ff-serif);font-size:var(--fs-2);font-weight:500;letter-spacing:-.01em}.nav[data-astro-cid-3ef6ksr2]{display:flex;gap:clamp(.75rem,.4rem + 1vw,1.5rem);margin-left:auto}.nav[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{color:var(--muted);text-decoration:none;font-size:var(--fs-0)}.nav[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]:hover{color:var(--fg)}.header__tools[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;gap:.5rem}@media(max-width:540px){.header__inner[data-astro-cid-3ef6ksr2]{flex-wrap:wrap;row-gap:.6rem}.nav[data-astro-cid-3ef6ksr2]{order:3;flex-basis:100%}}.theme-toggle{appearance:none;display:inline-flex;align-items:center;justify-content:center;width:2em;height:2em;font-family:var(--ff-sans);font-size:.95em;line-height:1;color:var(--muted);border-radius:var(--r-pill);border:1px solid color-mix(in oklch,var(--fg) 12%,transparent);background:color-mix(in oklch,var(--bg) 40%,transparent);cursor:pointer;transition:color .2s,background .2s,border-color .2s;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.theme-toggle:hover{color:var(--fg);border-color:color-mix(in oklch,var(--fg) 28%,transparent);background:color-mix(in oklch,var(--bg) 60%,transparent)}.theme-toggle__icon{display:inline-block;pointer-events:none}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%}html,body{height:100%}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}button{background:none;border:0;padding:0;cursor:pointer}a{color:inherit}p,li,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}ul,ol{padding:0;list-style:none}main,#__astro{isolation:isolate}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@font-face{font-family:Geist;font-weight:100 900;font-style:normal;font-display:swap;src:url(/fonts/geist-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist;font-weight:100 900;font-style:normal;font-display:swap;src:url(/fonts/geist-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Source Serif";font-weight:200 900;font-style:normal;font-display:swap;src:url(/fonts/source-serif-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif";font-weight:200 900;font-style:normal;font-display:swap;src:url(/fonts/source-serif-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Source Sans;font-weight:200 900;font-style:normal;font-display:swap;src:url(/fonts/source-sans-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Source Sans;font-weight:200 900;font-style:normal;font-display:swap;src:url(/fonts/source-sans-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-weight:100 900;font-style:normal;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-weight:100 900;font-style:normal;font-display:swap;src:url(/fonts/jetbrains-mono-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}:root{--bg: oklch(98% .01 95);--fg: oklch(22% .02 270);--muted: oklch(45% .02 270);--line: oklch(90% .01 270);--accent: oklch(82% .07 200);--accent-2: oklch(86% .06 30);--accent-3: oklch(87% .05 320);--glass: color-mix(in oklch, var(--bg) 60%, transparent);--glass-hi: color-mix(in oklch, var(--bg) 78%, transparent);--blur-1: 8px;--blur-2: 16px;--blur-3: 32px;--r-1: 8px;--r-2: 14px;--r-3: 22px;--r-pill: 999px;--shadow-1: 0 1px 2px oklch(0% 0 0 / .04), 0 2px 8px oklch(0% 0 0 / .04);--shadow-2: 0 4px 14px oklch(0% 0 0 / .06), 0 12px 40px oklch(0% 0 0 / .08);--space: clamp(.875rem, .6rem + .8vw, 1.1rem);--fs-0: clamp(.95rem, .9rem + .2vw, 1.05rem);--fs-1: calc(var(--fs-0) * 1.2);--fs-2: calc(var(--fs-1) * 1.2);--fs-3: calc(var(--fs-2) * 1.25);--fs-4: calc(var(--fs-3) * 1.3);--fs-5: calc(var(--fs-4) * 1.35);--ff-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--ff-sans-pair: "Source Sans", "Source Sans 3", ui-sans-serif, system-ui, sans-serif;--ff-serif: "Source Serif", ui-serif, Georgia, "Times New Roman", serif;--ff-mono: "JetBrains Mono", ui-monospace, "SF Mono", Consolas, monospace;color-scheme:light}:root[data-theme=dark]{--bg: oklch(16% .015 270);--fg: oklch(94% .01 95);--muted: oklch(70% .02 270);--line: oklch(28% .015 270);--accent: oklch(84% .08 200);--accent-2: oklch(86% .07 30);--accent-3: oklch(88% .06 320);--glass: color-mix(in oklch, var(--bg) 55%, transparent);--glass-hi: color-mix(in oklch, var(--bg) 72%, transparent);color-scheme:dark}html{background:var(--bg)}body{background:transparent;color:var(--fg);font-family:var(--ff-sans);font-size:var(--fs-0);font-feature-settings:"kern","ss01";font-optical-sizing:auto;min-height:100dvh;display:flex;flex-direction:column}@property --scroll-px{syntax: "<number>"; inherits: true; initial-value: 0;}@property --aurora-size-min{syntax: "<percentage>"; inherits: true; initial-value: 18%;}@property --aurora-size-max{syntax: "<percentage>"; inherits: true; initial-value: 320%;}@property --aurora-pos-amp{syntax: "<percentage>"; inherits: true; initial-value: 25%;}@property --aurora-opacity{syntax: "<number>"; inherits: true; initial-value: .67;}@property --aurora-color-amount{syntax: "<number>"; inherits: true; initial-value: 11;}@property --aurora-freq-scale{syntax: "<number>"; inherits: true; initial-value: 1;}@property --aurora-hue-shift{syntax: "<angle>"; inherits: true; initial-value: 54deg;}@property --aurora-hue-rate{syntax: "<number>"; inherits: true; initial-value: .012;}@property --w-size-1{syntax: "<number>"; inherits: true; initial-value: .35;}@property --w-size-2{syntax: "<number>"; inherits: true; initial-value: .15;}@property --w-pos-1{syntax: "<number>"; inherits: true; initial-value: .7;}@property --w-pos-2{syntax: "<number>"; inherits: true; initial-value: .3;}@property --aurora-color-1{syntax: "<color>"; inherits: true; initial-value: oklch(86% .06 30);}@property --aurora-color-2{syntax: "<color>"; inherits: true; initial-value: oklch(87% .05 320);}@property --aurora-color-3{syntax: "<color>"; inherits: true; initial-value: oklch(86% .06 260);}@property --aurora-color-4{syntax: "<color>"; inherits: true; initial-value: oklch(82% .07 200);}body:before{content:"";position:fixed;inset:-15vh -15vw;z-index:-1;pointer-events:none;background-repeat:no-repeat;will-change:background-size,background-position,filter;background-image:radial-gradient(closest-side at center,color-mix(in oklch,var(--aurora-color-1) calc(var(--aurora-color-amount) * 1%),transparent),transparent 75%),radial-gradient(closest-side at center,color-mix(in oklch,var(--aurora-color-2) calc(var(--aurora-color-amount) * 1%),transparent),transparent 75%),radial-gradient(closest-side at center,color-mix(in oklch,var(--aurora-color-3) calc(var(--aurora-color-amount) * 1%),transparent),transparent 75%),radial-gradient(closest-side at center,color-mix(in oklch,var(--aurora-color-4) calc(var(--aurora-color-amount) * 1%),transparent),transparent 75%);background-size:calc(var(--aurora-size-min) + ((sin(var(--scroll-px) * .22 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-1) + (cos(var(--scroll-px) * .07 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-2)) * var(--aurora-size-max)) calc(var(--aurora-size-min) + ((cos(var(--scroll-px) * .2 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-1) + (sin(var(--scroll-px) * .09 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-2)) * var(--aurora-size-max)),calc(var(--aurora-size-min) + ((cos(var(--scroll-px) * .27 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-1) + (sin(var(--scroll-px) * .1 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-2)) * var(--aurora-size-max)) calc(var(--aurora-size-min) + ((sin(var(--scroll-px) * .25 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-1) + (cos(var(--scroll-px) * .08 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-2)) * var(--aurora-size-max)),calc(var(--aurora-size-min) + ((sin(var(--scroll-px) * .17 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-1) + (cos(var(--scroll-px) * .06 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-2)) * var(--aurora-size-max)) calc(var(--aurora-size-min) + ((cos(var(--scroll-px) * .16 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-1) + (sin(var(--scroll-px) * .05 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-2)) * var(--aurora-size-max)),calc(var(--aurora-size-min) + ((cos(var(--scroll-px) * .21 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-1) + (sin(var(--scroll-px) * .08 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-2)) * var(--aurora-size-max)) calc(var(--aurora-size-min) + ((sin(var(--scroll-px) * .24 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-1) + (cos(var(--scroll-px) * .09 * var(--aurora-freq-scale) * 1deg) + 1) * var(--w-size-2)) * var(--aurora-size-max));background-position:calc(20% + (sin(var(--scroll-px) * .25 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-1) + cos(var(--scroll-px) * .08 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-2)) * var(--aurora-pos-amp)) calc(25% + (cos(var(--scroll-px) * .2 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-1) + sin(var(--scroll-px) * .11 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-2)) * var(--aurora-pos-amp)),calc(80% + (cos(var(--scroll-px) * .27 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-1) + sin(var(--scroll-px) * .09 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-2)) * var(--aurora-pos-amp)) calc(20% + (sin(var(--scroll-px) * .22 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-1) + cos(var(--scroll-px) * .07 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-2)) * var(--aurora-pos-amp)),calc(85% + (sin(var(--scroll-px) * .3 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-1) + cos(var(--scroll-px) * .1 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-2)) * var(--aurora-pos-amp)) calc(60% + (cos(var(--scroll-px) * .19 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-1) + sin(var(--scroll-px) * .08 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-2)) * var(--aurora-pos-amp)),calc(15% + (cos(var(--scroll-px) * .17 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-1) + sin(var(--scroll-px) * .06 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-2)) * var(--aurora-pos-amp)) calc(75% + (sin(var(--scroll-px) * .21 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-1) + cos(var(--scroll-px) * .08 * var(--aurora-freq-scale) * 1deg) * var(--w-pos-2)) * var(--aurora-pos-amp));opacity:var(--aurora-opacity);filter:hue-rotate(calc(var(--aurora-hue-shift) + var(--scroll-px) * var(--aurora-hue-rate) * 1deg))}@media(prefers-reduced-motion:reduce){body:before{filter:none}}main{flex:1}::selection{background:color-mix(in oklch,var(--accent) 60%,transparent);color:var(--bg)}a{color:var(--fg);text-decoration-color:color-mix(in oklch,var(--fg) 30%,transparent);text-underline-offset:.18em;transition:text-decoration-color .2s}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}h1,h2,h3,h4,h5,h6{font-family:var(--ff-serif);font-weight:400;letter-spacing:-.02em;text-wrap:balance}p{text-wrap:pretty}.glass{background:var(--glass);backdrop-filter:blur(var(--blur-2)) saturate(140%);-webkit-backdrop-filter:blur(var(--blur-2)) saturate(140%);border:1px solid color-mix(in oklch,var(--fg) 8%,transparent);border-radius:var(--r-2);box-shadow:var(--shadow-1)}.stack>*+*{margin-top:var(--space)}.cluster{display:flex;flex-wrap:wrap;gap:var(--space);align-items:center}.center{display:grid;place-items:center}.muted{color:var(--muted)}.container{width:100%;max-width:76ch;margin-inline:auto;padding-inline:clamp(1rem,.6rem + 1.5vw,2rem)}.prose-width{max-width:76ch;margin-inline:auto}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@view-transition{navigation:auto}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){animation:fade-out .24s cubic-bezier(.4,0,.2,1) both}::view-transition-new(root){animation:fade-in .24s cubic-bezier(.4,0,.2,1) both}@keyframes fade-out{to{opacity:0}}@keyframes fade-in{0%{opacity:0}}html[data-vt=theme]::view-transition-old(root){animation:none}html[data-vt=theme]::view-transition-new(root){animation:reveal .42s cubic-bezier(.4,0,.2,1);mix-blend-mode:normal}@keyframes reveal{0%{clip-path:circle(0 at var(--vt-x, 50%) var(--vt-y, 50%))}to{clip-path:circle(150% at var(--vt-x, 50%) var(--vt-y, 50%))}}@media(prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root){animation:none!important}}@scope(.prose){:scope{font-size:var(--fs-1);line-height:1.7;color:var(--fg)}:scope>*+*{margin-top:1rem}h1,h2,h3,h4{font-family:var(--ff-serif);font-weight:500;letter-spacing:-.01em;line-height:1.15;text-wrap:balance;margin-top:2.5rem;margin-bottom:.5rem}h1{font-size:var(--fs-4)}h2{font-size:var(--fs-3)}h3{font-size:var(--fs-2)}p{text-wrap:pretty}a{text-decoration:underline;text-decoration-color:color-mix(in oklch,var(--accent) 50%,transparent);text-decoration-thickness:1.5px;text-underline-offset:.18em}blockquote{border-left:2px solid var(--accent);padding-left:1rem;color:var(--muted);font-style:italic}code:not(pre code){font-family:var(--ff-mono);font-size:.92em;background:color-mix(in oklch,var(--fg) 8%,transparent);padding:.1em .35em;border-radius:4px}pre{font-family:var(--ff-mono);background:color-mix(in oklch,var(--fg) 4%,transparent);border:1px solid var(--line);border-radius:var(--r-1);padding:1rem;overflow-x:auto;line-height:1.5}pre code{font-size:.95em}pre.astro-code code,pre.astro-code span{color:var(--shiki-light)}img{border-radius:var(--r-2);margin-block:1.5rem}hr{border:0;height:1px;background:var(--line);margin-block:2rem}ul,ol{padding-left:1.5rem;list-style:revert}li+li{margin-top:.25rem}}:root[data-theme=dark] .prose pre.astro-code code,:root[data-theme=dark] .prose pre.astro-code span{color:var(--shiki-dark)}.skip{position:absolute;top:-100px;left:1rem;background:var(--bg);color:var(--fg);padding:.5rem .75rem;border-radius:var(--r-1);border:1px solid var(--line);z-index:100}.skip:focus{top:1rem}
