*,:before,:after{box-sizing:border-box;margin:0}html{font-size:calc(var(--root-font-size) / 16 * 100%);line-height:var(--global-line-height);background-color:var(--global-backgroundColor);font-family:var(--global-font-family-alpha);color:var(--global-text-color);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{min-height:100vh;display:flex;flex-direction:column;align-items:center}::selection{background-color:var(--global-selection-backgroundColor);color:var(--global-selection-color)}a:any-link{color:var(--link-color, var(--global-link-color));text-decoration-thickness:1px;text-underline-offset:.05em;text-decoration-color:var( --link-underline-color, var(--global-link-underline-color) );transition:all .1s ease}a:hover{color:var(--global-link-hover-color);text-decoration-color:var(--global-link-hover-color)}a:focus-visible{outline:1px solid var(--global-accent-color);outline-offset:.2em}hr{height:1px;color:inherit;border:0;background-color:var(--global-borderColor)}label{color:var(--global-muted-color);display:block;padding-bottom:var(--global-whitespace-4xs);--fs: var(--ms-1);font-size:calc(var(--fs) / var(--root-font-size) * 1rem);line-height:calc(var(--global-baseline) * 5)}input,select,textarea{--input-color: var(--global-text-color);--input-borderColor: var(--global-input-borderColor);--input-backgroundColor: var(--global-input-backgroundColor);--input-fontSize: var(--ms-1);--input-borderRadius: var(--global-borderRadius);--input-whitespace: var(--global-whitespace-3xs) var(--global-whitespace-2xs);display:block;width:100%;font-family:inherit;font-size:calc(var(--input-fontSize) / var(--root-font-size) * 1rem);line-height:calc(var(--global-baseline) * 5);padding:var(--input-whitespace);border:1px solid var(--input-borderColor);background-color:var(--input-backgroundColor);color:var(--input-color);border-radius:var(--input-borderRadius)}input:focus-visible,select:focus-visible,button:focus-visible{outline:1px solid var(--global-accent-color);outline-offset:3px}input:focus:not(:focus-visible),select:focus:not(:focus-visible){outline:none}input:disabled,select:disabled,button:disabled{opacity:.5}select{appearance:none}button{display:block;border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:inherit;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}code{font-family:var(--global-font-family-code);--fs: var(--ms-2);font-size:calc(var(--fs) / var(--root-font-size) * 1rem);padding:2px 7px 3px;position:relative;bottom:1px;border-radius:var(--global-borderRadius);border:1px solid var(--global-borderColor);color:var(--global-title-color)}pre{display:block;line-height:calc(var(--global-baseline) * 4)}pre code{background-color:transparent;padding:0;border:none}.astro-code{position:relative;border-radius:var(--global-borderRadius-lg);background-color:var(--global-code-background);overflow:hidden;--fs: var(--ms-1);font-size:calc(var(--fs) / var(--root-font-size) * 1rem);--astro-code-background: var(--global-code-background);--astro-code-foreground: var(--global-text-color);--astro-code-token-link: var(--astro-code-foreground);--astro-code-token-string: var(--astro-code-foreground);--astro-code-token-parameter: var(--astro-code-foreground);--astro-code-token-constant: var(--global-text-color);--astro-code-token-keyword: var(--global-text-color);--astro-code-token-string-expression: var(--global-text-color);--astro-code-token-comment: var(--global-meta-color);--astro-code-token-punctuation: var(--global-meta-color);--astro-code-token-function: var(--global-title-color);& code{--fs: var(--ms-2);display:block;padding:var(--global-whitespace);overflow:auto}&:after{content:attr(data-language);position:absolute;top:0;right:0;text-transform:uppercase;color:var(--global-meta-color);padding:var(--global-whitespace-2xs) var(--global-whitespace-2xs);line-height:1;font-size:calc(var(--ms-3) / var(--root-font-size) * 1rem)}}[data-suffix]{display:grid;--suffix-color: var(--global-muted-color)}[data-suffix] input,[data-suffix]:after{grid-column:1 / -1;grid-row:1}[data-suffix] input{padding-right:var(--global-whitespace-l)}[data-suffix]:after{--fs: var(--ms-1);content:attr(data-suffix);justify-self:end;align-self:center;color:var(--suffix-color);padding-right:var(--global-whitespace-2xs);font-family:var(--global-font-family-code);font-size:calc(var(--fs) / var(--root-font-size) * 1rem)}fieldset{border:var(--global-borderWidth) solid var(--global-fieldset-borderColor);border-radius:var(--global-borderRadius);padding:var(--global-whitespace-s)}legend{--fs: var(--ms-1);font-size:calc(var(--fs) / var(--root-font-size) * 1rem);line-height:calc(var(--global-baseline) * 5);font-family:var(--global-font-family-title);padding:0;color:var(--global-muted-color);padding:0 var(--global-whitespace-3xs);margin-left:calc(var(--global-whitespace-3xs) * -1)}input[type=number]{font-feature-settings:"tnum"}input[type=range]{padding:0;width:100%;border:0;--range-borderWidth: var(--global-borderWidth);--range-track-height: 1px;--range-track-borderRadius: var(--global-borderRadius-sm);--range-track-borderRadius: var(--range-track-height);--range-track-backgroundColor: var(--global-borderColor2);--range-thumb-height: var(--global-whitespace-s);--range-thumb-width: var(--global-whitespace-2xs);--range-thumb-borderRadius: var(--global-borderRadius-lg);--range-thumb-width: var(--range-thumb-height);--range-thumb-borderRadius: 50%;--range-thumb-borderColor: var(--global-borderColor2);--range-thumb-borderWidth: var(--range-borderWidth);--range-thumb-backgroundColor: var(--global-backgroundColor);--range-thumb-pointer: ew-resize;--range-focus-color: var(--global-accent-color);appearance:none;background-color:transparent;outline:none}input[type=range]::-webkit-slider-runnable-track{width:100%;height:var(--range-track-height);cursor:pointer;background:var(--range-track-backgroundColor);border-radius:var(--range-track-borderRadius)}input[type=range]::-webkit-slider-thumb{border:var(--range-thumb-borderWidth) solid var(--range-thumb-borderColor);height:var(--range-thumb-height);width:var(--range-thumb-width);border-radius:var(--range-thumb-borderRadius);background:var(--range-thumb-backgroundColor);cursor:var(--range-thumb-pointer);-webkit-appearance:none;margin-top:calc(var(--range-thumb-height) * -.5 - var(--range-track-height) * -.5 - var(--range-thumb-borderWidth) * -.5);opacity:var(--range-thumb-opacity, 1);box-shadow:var(--range-thumb-boxShadow)}input[type=range]::-moz-range-track{width:100%;height:var(--range-track-height);cursor:var(--range-thumb-pointer);background:var(--range-track-backgroundColor);border-radius:var(--range-track-borderRadius)}input[type=range]::-moz-range-thumb{border:var(--range-thumb-borderWidth) solid var(--range-thumb-borderColor);height:var(--range-thumb-height);width:var(--range-thumb-width);border-radius:var(--range-thumb-borderRadius);background:var(--range-thumb-backgroundColor);cursor:var(--range-thumb-pointer);box-shadow:var(--range-thumb-boxShadow)}input[type=range]::-ms-track{width:100%;height:var(--range-track-height);cursor:pointer;background:transparent;border-color:transparent;color:transparent;border-radius:var(--range-track-borderRadius)}input[type=range]::-ms-fill-lower{background:var(--range-track-backgroundColor)}input[type=range]::-ms-fill-upper{background:var(--range-track-backgroundColor)}input[type=range]::-ms-thumb{margin-top:calc(var(--range-thumb-height) * -.5 + var(--range-thumb-borderWidth) / 2);border:var(--range-thumb-borderWidth) solid var(--range-thumb-borderColor);height:var(--range-thumb-height);width:var(--range-thumb-width);border-radius:var(--range-thumb-borderRadius);background:var(--range-thumb-backgroundColor);cursor:pointer;box-shadow:var(--range-thumb-boxShadow)}input[type=range]:focus-visible{--range-track-backgroundColor: var(--global-accent-color);--range-thumb-borderColor: var(--global-accent-color)}@media (prefers-color-scheme: dark){input[type=range]:focus-visible{--range-thumb-borderColor: white}}img,svg{max-width:100%;height:auto;display:block}h1,h2,h3,h4,h5,h6{--fs: var(--ms0);font-size:calc(var(--fs) / var(--root-font-size) * 1rem);font-weight:var(--global-font-weight-title);font-family:var(--global-font-family-title);color:var(--global-title-color)}ul{padding-left:0;list-style:none}ul li::marker{color:var(--global-meta-color)}strong{color:var(--global-title-color);font-weight:var(--global-font-weight-strong)}em,i{font-style:italic;font-family:var(--global-font-family-beta);color:var(--global-text-color)}.heading-anchor{margin-left:calc(var(--global-whitespace) * -1);padding-right:calc(var(--global-whitespace) / 2);opacity:0}h2:has(.heading-anchor):hover .heading-anchor{opacity:1}.flow>*+*{margin-top:var(--global-whitespace)}.flow-s>*+*{margin-top:var(--global-whitespace-s)}.flow-xs>*+*{margin-top:var(--global-whitespace-xs)}.flow-2xs>*+*{margin-top:var(--global-whitespace-2xs)}.flow>*+.demo,.flow>.demo+*,.flow>astro-island+*,.flow>.astro-code+*,.flow>*+.astro-code{margin-top:calc(var(--global-whitespace) + var(--global-whitespace-2xs))}.flow>*+h2,.flow>.astro-code+h2,.flow>.demo+h2,.flow>.note+h2,.flow>*+.note,.flow>.note+*,.flow>.math+*,.flow>*+.math{margin-top:calc(var(--global-whitespace) + var(--global-whitespace))}.flow>*:has(+style),.flow>*:has(+astro-island){margin-bottom:calc(var(--global-whitespace) + var(--global-whitespace-2xs))}.flow>h3+*{margin-top:0}.row{width:100%;position:relative;display:flow-root;padding:0 var(--global-whitespace);padding-top:calc(var(--global-whitespace-4xl))}.row .row{padding-left:0;padding-right:0;padding-top:0}.row .row+.row{margin-top:calc(var(--global-whitespace-4xl))}.row--page-footer{margin-top:auto;padding-bottom:var(--global-whitespace)}.container{max-width:38rem;margin-left:auto;margin-right:auto}.list-reset{list-style:none;padding:0}.link-meta{--link-color: var(--global-meta-color);text-decoration:none;&:hover{color:var(--global-text-color)}}.link-icon{display:block;max-width:max-content}.icon{width:var(--global-icon-size);height:var(--global-icon-size);fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:var(--global-icon-stroke)}.page-header{display:flex;justify-content:space-between;align-items:start;gap:0 var(--global-whitespace);scroll-margin:var(--global-whitespace-4xl)}.page-header__title{font-size:var(--ms0);line-height:calc(var(--global-baseline) * 5);font-family:var(--global-font-family-title);font-weight:var(--global-font-weight-title);color:var(--global-title-color)}.page-header__meta{font-size:var(--ms0);line-height:calc(var(--global-baseline) * 5);font-weight:var(--global-font-weight-regular);color:var(--global-meta-color)}.page-header__me,.page-header__visual{width:var(--global-whitespace-xl);height:var(--global-whitespace-xl);border-radius:100%;overflow:hidden;flex-shrink:0;background-color:var(--global-foregroundColor2);display:grid;place-items:center;img{aspect-ratio:1;object-fit:cover}svg{width:100%}}.page-footer{color:var(--global-meta-color)}.demo{--demo-whitespace: var(--global-whitespace);border-radius:var(--global-borderRadius-lg);background-color:var(--global-foregroundColor);color:var(--global-text-color);overflow:hidden}.demo-empty{background-color:transparent}.demo__title{--fs: var(--ms-1);font-size:calc(var(--fs) / var(--root-font-size) * 1rem);line-height:calc(var(--global-baseline) * 5);font-family:var(--global-font-family-alpha)}.demo__header{padding:var(--global-whitespace-s) var(--demo-whitespace) 0;display:flex;align-items:center;justify-content:space-between}.demo__body{padding:var(--demo-whitespace)}.custom-select{--custom-select-extra-whitespace: var(--global-whitespace-xs);display:grid}.custom-select__select,.custom-select__down{grid-row:1;grid-column:-1}.custom-select__select{padding-right:calc(var(--custom-select-extra-whitespace) * 3)}.custom-select__down{align-self:center;justify-self:flex-end;pointer-events:none;margin-right:var(--custom-select-extra-whitespace)}.badge{--fs: var(--ms-2);--link-color: var(--global-muted-color);display:inline-block;border-radius:var(--global-borderRadius);padding:var(--global-whitespace-3xs) var(--global-whitespace-2xs);font-size:calc(var(--fs) / var(--root-font-size) * 1rem);line-height:calc(var(--global-baseline) * 4);font-family:var(--global-font-family-alpha);font-weight:400;background-color:var(--global-input-backgroundColor);text-decoration:none}.postlist{--postlist-whitespace: var(--global-whitespace-xs);--postlist-inline-whitespace: var(--global-whitespace-xs)}.postlist__link{position:relative;display:flex;gap:0 var(--postlist-inline-whitespace);font-family:var(--global-font-family-title);flex-direction:column;text-decoration:none;border-radius:var(--global-borderRadius-lg);&:hover .postlist__title{color:var(--global-meta-color)}}.postlist__title{text-decoration:none;transition:inherit}.postlist__meta{text-decoration:none;color:var(--global-meta-color)}.postlist__item+.postlist__item{padding-top:var(--global-whitespace-xs)}.postlist__link--active:any-link{color:var(--global-meta-color)}.postlist__link--active:before{content:"";width:var(--global-whitespace-3xs);aspect-ratio:1 / 1;background-color:var(--global-accent-color);border-radius:100%;position:absolute;left:calc(-1 * var(--global-whitespace-xs));top:var(--global-whitespace-2xs)}.postlist__image{border-radius:100%;width:calc(var(--global-whitespace-xl) * 1);aspect-ratio:1}.postlist__item--project .postlist__link{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"image title" "image description"}.postlist__item--project .postlist__image{grid-area:image}.postlist__item--project .postlist__title{grid-area:title}.postlist__item--project .postlist__meta{grid-area:description}.math{max-width:fit-content;margin:0 auto;& path{fill:currentColor}& line{stroke:currentColor}}.color-meta{color:var(--global-meta-color);& a:any-link{--link-color: var(--global-meta-color);--link-underline-color: var(--global-meta-color)}}.color-border{color:var(--global-borderColor)}.color-muted{color:var(--global-muted-color)}.mt-clear{margin-top:0}.mb-clear{margin-bottom:0}.mb-xs{margin-bottom:var(--global-whitespace-xs)}.mb-2xs{margin-bottom:var(--global-whitespace-2xs)}.mb-3xs{margin-bottom:var(--global-whitespace-3xs)}.mb-4xs{margin-bottom:var(--global-whitespace-4xs)}.mb-s{margin-bottom:var(--global-whitespace-s)}.mb-base{margin-bottom:var(--global-whitespace)}.mb-m{margin-bottom:var(--global-whitespace-m)}.mb-l{margin-bottom:var(--global-whitespace-l)}.mb-xl{margin-bottom:var(--global-whitespace-xl)}.pt-clear{padding-top:0}.pb-clear{padding-bottom:0}.max-width-md{max-width:36em}.text-italic{font-style:italic}.text-num{font-feature-settings:"tnum"}.text-code{font-family:var(--global-font-family-code)}.text-sans,.text-date{font-family:var(--global-font-family-alpha)}.text-s{--fs: var(--ms-1);font-size:calc(var(--fs) / var(--root-font-size) * 1rem);line-height:calc(var(--global-baseline) * 4.5)}.text-xs{--fs: var(--ms-2);font-size:calc(var(--fs) / var(--root-font-size) * 1rem);line-height:calc(var(--global-baseline) * 4)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.flex{display:flex}.flex-wrap{flex-wrap:wrap}.align-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-4xs{gap:var(--global-whitespace-4xs)}.gap-3xs{gap:var(--global-whitespace-3xs)}.gap-2xs{gap:var(--global-whitespace-2xs)}.gap-xs{gap:var(--global-whitespace-xs)}.gap-s{gap:var(--global-whitespace-s)}.gap{gap:var(--global-whitespace)}.gap-m{gap:var(--global-whitespace-m)}.gap-l{gap:var(--global-whitespace-l)}.gap-xl{gap:var(--global-whitespace-xl)}.shrink-0{flex-shrink:0}.grow-1{flex-grow:1}.page-footer[data-astro-cid-sz7xmlte]{display:flex;justify-content:space-between;align-items:start;gap:var(--global-whitespace)}.link-icon[data-astro-cid-sz7xmlte]{flex-shrink:0;margin-top:calc(var(--global-whitespace-4xs))}ul[data-astro-cid-sz7xmlte]{display:flex;flex-wrap:wrap;gap:0 var(--global-whitespace)}.top[data-astro-cid-sz7xmlte]{display:none}@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}}
