@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(*),[data-astro-transition-scope]{animation:none!important}}.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}.header[data-astro-cid-wltanily]{max-width:var(--container-page);padding-inline:var(--page-horizontal-padding);padding-top:var(--spacing-s);border-bottom:1px solid var(--color-border);letter-spacing:normal;flex-wrap:wrap;justify-content:space-between;align-items:baseline;margin-inline:auto;display:flex;position:relative}.site-name[data-astro-cid-wltanily]{font-size:var(--step--1);margin-right:var(--spacing-l);color:var(--color-text-primary);padding-bottom:var(--spacing-s);font-weight:600;text-decoration:none}.nav--desktop[data-astro-cid-wltanily]{gap:var(--spacing-m);padding-bottom:var(--spacing-s);align-items:center;display:flex}@media (width>=45rem){.nav--desktop[data-astro-cid-wltanily]{gap:var(--spacing-l)}}.nav-link[data-astro-cid-wltanily]{font-size:var(--step--1);color:var(--color-text-primary);margin-block:-.125rem;padding-block:.125rem;text-decoration:none;position:relative}.nav-link[data-astro-cid-wltanily]:after{content:"";top:calc(var(--spacing-m) + .125rem);background:var(--color-accent-decoration);transform-origin:0;width:100%;height:2px;transition:transform .3s;position:absolute;left:0;transform:scaleX(0)}.nav-link[data-astro-cid-wltanily]:hover:after,.nav-link[data-astro-cid-wltanily][aria-current=page]:after{transform:scaleX(1)}.nav-link[data-astro-cid-wltanily]:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px;border-radius:2px}.nav-link--rss[data-astro-cid-wltanily]{align-items:center;gap:var(--spacing-3xs);display:inline-flex}.rss-icon[data-astro-cid-wltanily]{vertical-align:baseline;display:inline}.copyright[data-astro-cid-e4few6zu]{margin-top:var(--spacing-xl);font-size:var(--step--1);opacity:.8;color:var(--color-text-secondary)}.theme-picker[data-astro-cid-j73xcqxu]{align-items:center;gap:var(--spacing-2xs);display:flex}.theme-label[data-astro-cid-j73xcqxu]{font-size:var(--step--2);text-transform:uppercase;letter-spacing:.09em;color:var(--color-text-secondary);font-weight:600}.theme-select[data-astro-cid-j73xcqxu]{appearance:none;border:1px solid var(--color-border);padding:var(--spacing-3xs) var(--spacing-m) var(--spacing-3xs) var(--spacing-2xs);font-family:inherit;font-size:var(--step--1);color:var(--color-text-secondary);cursor:pointer;background-color:#0000;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M3 4.5L6 8l3-3.5H3z'/%3E%3C/svg%3E");background-position:right 6px center;background-repeat:no-repeat;border-radius:4px}.theme-select[data-astro-cid-j73xcqxu]:hover{border-color:var(--color-accent-decoration);color:var(--color-accent-hover)}.theme-select[data-astro-cid-j73xcqxu]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.footer[data-astro-cid-tcz3g3y3]{max-width:var(--container-page);padding-inline:var(--page-horizontal-padding);border-top:1px solid var(--color-border);color:var(--color-text-secondary);margin-inline:auto;padding-block:40px}.contact-links[data-astro-cid-tcz3g3y3]{align-items:center;gap:var(--spacing-xs);font-size:var(--step--1);flex-wrap:wrap;display:flex}.contact-link[data-astro-cid-tcz3g3y3]{color:var(--color-text-secondary);transition:color .15s}.contact-link[data-astro-cid-tcz3g3y3]:hover{text-decoration:underline;text-decoration-color:var(--color-accent-decoration);color:var(--color-accent-hover)}.separator[data-astro-cid-tcz3g3y3]{color:var(--color-text-secondary);opacity:.5}.footer-row[data-astro-cid-tcz3g3y3]{justify-content:space-between;align-items:center;gap:var(--spacing-s);font-size:var(--step--1);flex-wrap:wrap;display:flex}:root{color-scheme:light dark;--color-bg-primary:light-dark(#f3f5f7,#151f28);--color-bg-secondary:light-dark(#e4e8ec,#1c2631);--color-bg-elevated:light-dark(#fff,#222e3a);--color-text-primary:light-dark(#17212b,#e6ebef);--color-text-secondary:light-dark(#303d4b,#c7cfd6);--color-text-muted:light-dark(#5a6672,#9ba6b0);--color-text-tertiary:var(--color-text-muted);--color-code-text:light-dark(#0c546e,#addaeb);--color-accent:light-dark(#2e4052,#ffc757);--color-accent-hover:light-dark(#1c2e40,#ffdd8f);--color-accent-subtle:light-dark(#ffc75780,#ffc75724);--color-text-on-accent:light-dark(#fff,#151f28);--color-accent-decoration:light-dark(#e69900,#ffc757);--color-heart:light-dark(#ef4444,#f88477);--color-border:light-dark(#d5dbe2,#2e4052);--color-border-strong:light-dark(#818f9c,#647a90);--color-border-faint:light-dark(#d5dbe280,#2e405280);--grid-size:24px;--color-underline:light-dark(#17212b38,#e6ebef38);--color-underline-hover:light-dark(#17212b99,#e6ebef99);--color-hover-state:light-dark(#17212b0d,#ffffff0f);--color-btn-bg:light-dark(#fff,#222e3a);--color-btn-primary:var(--color-accent);--color-btn-primary-hover:var(--color-accent-hover);--color-code-bg:light-dark(#eaedf0,#1c2631);--color-code-border:light-dark(#fb3,#ffc757);--color-code-header:light-dark(#dce0e5,#0c1118);--color-code-line-highlight:light-dark(#ffc7571f,#ffc7571a);--spacing-3xs:clamp(.25rem, calc(.23rem + .11vw), .31rem);--spacing-2xs:clamp(.5rem, calc(.45rem + .22vw), .63rem);--spacing-xs:clamp(.75rem, calc(.68rem + .33vw), .94rem);--spacing-s:clamp(1rem, calc(.91rem + .43vw), 1.25rem);--spacing-m:clamp(1.5rem, calc(1.36rem + .65vw), 1.88rem);--spacing-l:clamp(2rem, calc(1.82rem + .87vw), 2.5rem);--spacing-xl:clamp(3rem, calc(2.73rem + 1.3vw), 3.75rem);--spacing-2xl:clamp(4rem, calc(3.64rem + 1.74vw), 5rem);--spacing-3xl:clamp(6rem, calc(5.45rem + 2.61vw), 7.5rem);--page-horizontal-padding:clamp(1rem, .6rem + 1.7778vw, 3rem);--figure-vertical-spacing:var(--spacing-l);--step--2:clamp(.7813rem, .7651rem + .0718vw, .88rem);--step--1:clamp(.9375rem, .9109rem + .1182vw, 1.1rem);--step-0:clamp(1.125rem, 1.0841rem + .1818vw, 1.375rem);--step-1:clamp(1.35rem, 1.2897rem + .2682vw, 1.7188rem);--step-2:clamp(1.62rem, 1.5335rem + .3843vw, 2.1484rem);--step-3:clamp(1.944rem, 1.8227rem + .5393vw, 2.6855rem);--step-4:clamp(2.3328rem, 2.1652rem + .7448vw, 3.3569rem);--step-5:clamp(2.7994rem, 2.5708rem + 1.0159vw, 4.1962rem);--step-6:clamp(3.3592rem, 3.0506rem + 1.3716vw, 5.2452rem);--step-7:clamp(4.0311rem, 3.6178rem + 1.8367vw, 6.5565rem);--step-8:clamp(4.8373rem, 4.2877rem + 2.4424vw, 8.1956rem);--step-9:clamp(5.8048rem, 5.0782rem + 3.2289vw, 10.2445rem);--step-10:clamp(6.9657rem, 6.0101rem + 4.2473vw, 12.8057rem);--step-title-size:clamp(var(--step-4), 4vw + 1rem, var(--step-6));--step-subtitle-size:var(--step-2);--container-measure:45ch;--container-measure-fixed:calc(var(--step-0) * 36);--container-measure-compact:45ch;--container-measure-wide:85ch;--container-hero:min(900px, 85%);--container-page:1800px;--container-prose:var(--container-measure-fixed);--font-sans:var(--font-space-grotesk);--font-serif:var(--font-fk-roman);--font-mono:var(--font-ibm-plex-mono);--leading-header:1.1;--leading-body-text:1.55;--letter-spacing-body-text:-.015em;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -1px #0000000f;--shadow-color:light-dark(#17212b,#04070b);--shadow-elevation-low:.8px .8px 1.1px color-mix(in srgb, var(--shadow-color) 31%, transparent), 1.2px 1.2px 1.7px -1.6px color-mix(in srgb, var(--shadow-color) 26%, transparent), 2.8px 2.8px 4px -3.3px color-mix(in srgb, var(--shadow-color) 21%, transparent);--shadow-elevation-medium:.8px .8px 1.1px color-mix(in srgb, var(--shadow-color) 32%, transparent), 2.1px 2.1px 3px -1.1px color-mix(in srgb, var(--shadow-color) 28%, transparent), 5.5px 5.6px 7.9px -2.2px color-mix(in srgb, var(--shadow-color) 25%, transparent), 14.1px 14.2px 20.1px -3.3px color-mix(in srgb, var(--shadow-color) 21%, transparent);--shadow-elevation-high:.3px .5px .7px color-mix(in srgb, var(--shadow-color) 35%, transparent), 2.1px 2.8px 3.9px -.4px color-mix(in srgb, var(--shadow-color) 35%, transparent), 3.9px 5.2px 7.3px -.7px color-mix(in srgb, var(--shadow-color) 35%, transparent), 6.4px 8.5px 12px -1.1px color-mix(in srgb, var(--shadow-color) 35%, transparent), 10.3px 13.6px 19.2px -1.4px color-mix(in srgb, var(--shadow-color) 35%, transparent), 16.1px 21.3px 30px -1.8px color-mix(in srgb, var(--shadow-color) 35%, transparent), 24.5px 32.5px 45.8px -2.1px color-mix(in srgb, var(--shadow-color) 35%, transparent), 36px 47.8px 67.3px -2.5px color-mix(in srgb, var(--shadow-color) 35%, transparent);--radius-xs:2px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px}@media (width>=112rem){:root{--page-horizontal-padding:0}}*,:before,:after{box-sizing:border-box}:not(dialog){margin:0}@media (prefers-reduced-motion:no-preference){html{interpolate-size:allow-keywords}}html{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{line-height:1.5}input,button,textarea,select{font:inherit}img,picture,video,canvas,svg{max-width:100%;height:auto;display:block}figure{margin:0}#root,#__next{isolation:isolate}a{color:inherit;text-decoration-color:var(--color-underline)}a:hover{text-decoration-color:currentColor}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{color:var(--color-text-primary);font-family:var(--font-sans);font-weight:600;line-height:var(--leading-header)}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-align:left}p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}h1{font-size:var(--step-4);letter-spacing:-.03em}h2{font-size:var(--step-2);letter-spacing:-.02em}h3{font-size:var(--step-1)}h4{font-size:var(--step-0)}.layout-stack{gap:var(--stack-gap,var(--spacing-m));flex-direction:column;display:flex}.layout-stack>*{margin-block:0}.layout-center-no-padding{max-width:var(--container-page);padding-inline:var(--spacing-s);margin-inline:auto}.layout-center{max-width:var(--container-page);padding-inline:var(--padding-inline,var(--spacing-s));padding-block:var(----spacing-xl);margin-inline:auto}.layout-cluster{gap:var(--spacing-s);flex-wrap:wrap;align-items:center;display:flex}.layout-sidebar{gap:var(--spacing-m);flex-wrap:wrap;display:flex}.layout-sidebar>:first-child{flex-basis:var(--sidebar-width,15rem);flex-grow:1}.layout-sidebar>:last-child{flex-grow:999;flex-basis:0;min-width:50%}.flow>*+*{margin-block-start:var(--spacing-s)}.flow-lg>*+*{margin-block-start:var(--spacing-l)}.flow-xl>*+*{margin-block-start:var(--spacing-xl)}.measure{max-width:var(--container-measure)}.measure-compact{max-width:var(--container-measure-compact)}.measure-wide{max-width:var(--container-measure-wide)}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.link-button{gap:var(--spacing-3xs);font-size:var(--step--1);letter-spacing:0;font-family:var(--font-sans);align-items:center;width:fit-content;display:flex}.link-button svg{stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;fill:none;width:1.25rem;height:1.25rem}.layout-stack.layout-stack--lg{gap:var(--spacing-l)}.layout-stack.layout-stack--xl{gap:var(--spacing-xl)}.layout-cluster.layout-cluster--sm{gap:var(--spacing-xs)}.layout-cluster.layout-cluster--lg{gap:var(--spacing-l)}.rule-thick{border:none;border-top:3px solid var(--color-text-primary);margin-block:2rem}.rule-thin{border:none;border-top:1px solid var(--color-border,#e0dfdc);margin:0}.rule-faint{border:none;border-top:1px solid var(--color-border-faint);margin-block:var(--spacing-xl)}.font-serif{font-family:var(--font-serif)}.font-sans{font-family:var(--font-sans)}.text-muted{color:var(--color-text-muted)}.section-divider{border-bottom:1px dashed var(--color-border);padding-bottom:var(--spacing-m)}.feather-rss{color:var(--color-accent)}.dark-mode-toggle{border-radius:var(--radius-md);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:2rem;height:2rem;transition:background-color .2s;display:flex}.dark-mode-toggle:hover{background-color:var(--color-hover-state)}.icon-sun{width:1.25rem;height:1.25rem;color:var(--color-accent)}.icon-moon{width:1.25rem;height:1.25rem;color:var(--color-text-muted)}.figure-card{background-color:var(--color-bg-elevated);box-shadow:var(--shadow-md);border-radius:var(--radius-md);padding:var(--spacing-m);@media (width<=45rem){border-radius:0}}.figure-card--flush{padding:0}.figure--breakout{display:grid}.figure--breakout>.figure-card{justify-self:center;width:min(120%,100vw)}.figcaption{font-size:var(--step--1);margin-top:var(--spacing-xs);color:var(--color-text-secondary)}.hide-above-sm{display:block}.show-above-sm{display:none}@media (width>=640px){.hide-above-sm{display:none}.show-above-sm{display:block}}.share-btn{justify-content:center;align-items:center;gap:var(--spacing-2xs);padding-inline:var(--spacing-xs);padding-block:var(--spacing-xs);font-size:var(--step--1);border-radius:var(--radius-md);border:1px solid var(--color-border);background-color:var(--color-btn-bg);font-family:var(--font-sans);color:var(--color-text-secondary);cursor:pointer;line-height:1;text-decoration:none;transition:background-color .2s;display:inline-flex}.share-btn svg{flex-shrink:0;width:16px;max-width:none;height:16px}.share-btn:hover{background-color:var(--color-hover-state);color:var(--color-accent-hover)}.share-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (width>=640px){.share-btn{padding-block:var(--spacing-2xs)}}@media (width>=1200px){.share-btn{background-color:#0000;border-color:#0000;transition:background-color .2s,transform .2s,box-shadow .2s;position:relative}.share-btn:hover{background-color:var(--color-hover-state)}.share-btn:after{content:attr(aria-label);white-space:nowrap;font-size:var(--step--2);font-family:var(--font-sans);color:var(--color-text-secondary);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-sm);opacity:0;pointer-events:none;padding:.25rem .5rem;transition:opacity .15s,transform .15s;position:absolute;top:50%;left:calc(100% + .5rem);transform:translateY(-50%)translate(-4px)}.share-btn:hover:after{opacity:1;transform:translateY(-50%)translate(0)}}.large-title-size{font-size:var(--step-title-size)}.large-subtitle-size{font-size:var(--step-subtitle-size)}.subtitle{font-family:var(--font-serif);letter-spacing:var(--letter-spacing-body-text);font-size:var(--step-subtitle-size);max-width:50ch;color:var(--color-text-secondary);text-wrap:pretty;letter-spacing:-.02em;font-weight:400;line-height:1.4}.section-label{font-size:var(--step--2);text-transform:uppercase;color:var(--color-text-secondary);letter-spacing:.09em;margin-bottom:var(--spacing-2xs);font-weight:600}.slub{font-size:var(--step--2);text-transform:uppercase;color:var(--color-text-secondary);opacity:.8;letter-spacing:.09em;font-family:var(--font-sans);font-variant-numeric:lining-nums;width:fit-content;font-weight:500;display:block}.prose{font-size:var(--step-0);max-width:var(--container-measure-fixed);line-height:var(--leading-body-text);text-wrap:pretty;hanging-punctuation:first last;width:100%;& h1,& h2{margin-block:2.5em 1em}& h3,& h4{margin-block:2em .75em}& h2,& h3,& h4,& h5,& h6{scroll-margin-top:var(--spacing-xl);text-wrap:balance;position:relative}& .heading-anchor{width:1em;font-family:var(--font-mono);color:var(--color-text-secondary);opacity:0;font-weight:400;text-decoration:none;transition:opacity .15s ease-in-out;position:absolute;left:-1em}& h2:hover .heading-anchor,& h3:hover .heading-anchor,& h4:hover .heading-anchor,& h5:hover .heading-anchor,& h6:hover .heading-anchor,& .heading-anchor:focus{opacity:1}& .heading-anchor:focus{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}& .heading-anchor:hover{color:var(--color-accent)}@media (width<=640px){& .heading-anchor{opacity:.5;margin-left:.25em;position:static}}& p,& ol,& ul{font-family:var(--font-serif);font-size:calc(var(--step-0));letter-spacing:var(--letter-spacing-body-text);color:var(--color-text-primary)}& li{margin-block-start:.25lh}& ul li,& #contents+ul li{list-style:outside}& ul,& ol{padding-inline-start:1lh;display:block}& li>ul,& li>ol{margin-block:0}& p:not(.prose li>p){font-size:calc(var(--step-0));line-height:var(--leading-body-text);display:block}& p+p,& ul+p,& ol+p{margin-block-start:1lh}& strong{font-weight:600}& p a,& ol a,& ul a,& #contents+ul li a{text-underline-offset:6px;text-decoration:underline 1px;transition:text-decoration-color .2s,color .2s}& a:hover{color:var(--color-accent-hover);text-decoration-color:var(--color-accent-decoration)}& #contents+ul li::marker,& ul li::marker,& ol li::marker{color:var(--color-text-tertiary);font-size:.8em}& ol{list-style-type:decimal}& p+ul,& p+ol{margin-block-start:0}& pre{padding:var(--spacing-m);font-size:var(--step--1);margin-block:var(--spacing-l);border-radius:var(--radius-md);box-sizing:border-box;max-width:100%;overflow-x:auto}& blockquote{border-inline-start:var(--spacing-3xs) solid var(--color-text-secondary);margin-block:var(--spacing-m);padding-inline-start:var(--spacing-m);font-style:italic}& p>code,& li>code{color:var(--color-text-secondary);font-weight:500!important}& code{font-family:var(--font-mono);margin:0}& aside>p{margin-block-start:0!important}& figure{max-width:100%}}.equation{width:fit-content;margin-left:auto;margin-right:auto}.katex{hanging-punctuation:none;color:var(--color-text-secondary);overflow:scroll hidden}.table-wrapper{margin-block:var(--spacing-l);overflow-x:auto}.prose table{font-family:var(--font-sans);font-size:var(--step--1);border-collapse:collapse;width:100%;margin-block:1em}.prose table thead{border-bottom:2px solid var(--color-text-primary)}.prose table th{color:var(--color-text-primary);text-align:left;padding:var(--spacing-xs) var(--spacing-s);font-weight:600}.prose table td{color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);padding:var(--spacing-xs) var(--spacing-s);text-align:left;font-variant-numeric:tabular-nums}.prose table tbody th{color:var(--color-text-secondary);text-align:left;padding:var(--spacing-xs) var(--spacing-s);font-weight:600}.prose table tbody tr:last-child td,.prose table tbody tr:last-child th{border-bottom:none}.prose table tbody tr:hover{background-color:var(--color-hover-state)}.prose table caption{caption-side:bottom;font-size:var(--step--2);color:var(--color-text-secondary);text-align:left;padding-block-start:var(--spacing-xs)}pre:has(code){position:relative}code .highlighted{background-color:var(--color-code-line-highlight);width:calc(100% + 60px);margin:0 -30px;padding:0 30px;transition:background-color .5s;display:inline-block}.code-block-wrapper{margin-block:var(--spacing-l);border-radius:var(--radius-sm);overflow:hidden}.code-header{z-index:10;background:var(--color-code-header);justify-content:flex-end;padding:8px 12px;display:flex;position:sticky;top:0}.code-block-wrapper pre{border-radius:0;margin-block:0}.code-header button.copy{padding:0;cursor:pointer;line-height:1;font-family:var(--font-sans);font-size:var(--step--2);color:var(--color-text-primary);background:0 0;border:none;align-items:center;gap:6px;padding:6px 10px;transition:color .2s;display:flex;& svg{flex-shrink:0;width:16px;height:16px}& .ready{align-items:center;gap:6px;display:flex}& .success{align-items:center;gap:6px;display:none}&:hover{color:var(--color-text-primary)}&.copied{color:var(--color-accent-hover)}&.copied .success{display:flex}&.copied .ready{display:none}}html{height:100%;overflow-y:scroll}body{font-family:var(--font-sans)}.base-layout[data-astro-cid-z4jru4n3]{gap:var(--spacing-2xl);background-color:var(--color-bg-primary);--padding-inline:var(--page-horizontal-padding);flex-direction:column;min-height:100%;display:flex}.main-content[data-astro-cid-z4jru4n3]{flex:1}
