@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.BZdD_g9V.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.b6lpi8_2.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.Cjtb1TV-.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::-webkit-file-upload-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::-webkit-file-upload-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:-webkit-any([multiple],[size])) optgroup{font-weight:bolder}:where(select:-moz-any([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:-webkit-any([multiple],[size])) optgroup option{padding-inline-start:20px}:where(select:-moz-any([multiple],[size])) optgroup option{padding-inline-start:20px}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::-webkit-file-upload-button{margin-inline-end:4px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-year-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-month-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-day-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-hour-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-minute-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-second-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-millisecond-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-meridiem-field{padding-block-start:0;padding-block-end:0}:-moz-ui-invalid{box-shadow:none}button{-webkit-appearance:button;-moz-appearance:button;appearance:button}input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-file-upload-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}@font-face{font-family:PP Neue Montreal;src:url(/fonts/PPNeueMontreal-Variable-subset.woff2)format("woff2"),url(/fonts/PPNeueMontreal-Variable-subset.woff)format("woff");font-weight:300 900;font-stretch:75% 125%;font-feature-settings:"ss02"on,"liga"off;font-display:swap}:root{--font-base:"PP Neue Montreal",-apple-system,BlinkMacSystemFont,"SF Pro","Helvetica Neue",Helvetica,Arial,sans-serif;--font-mono:"Geist Mono Variable",monospace;--font-size-base:18px;--line-height-base:1.45;--font-weight-base:420;--font-weight-medium:500;--font-weight-bold:666;--font-variation-settings-base:"wght" var(--font-weight-base),"opsz" var(--font-weight-base);--font-variation-settings-base-bold:"wght" var(--font-weight-bold),"opsz" var(--font-weight-bold);--font-variation-settings-base-medium:"wght" var(--font-weight-medium),"opsz" var(--font-weight-medium);--letter-spacing-base:.14px;--main-content-gap:56px;--link-underline-offset:4px;--link-underline-thickness:.05rem;--link-underline-thickness-hover:1.5px;--link-underline-color:var(--color-accent);--page-padding-y:48px;--container-max-width:1100px;--container-padding-x:24px;--container-gap:48px;--image-padding-y:10px;--logo-font-size:24px;--logo-letter-spacing:-.01em;--nav-inner-gap:16px;--nav-list-gap:24px;--intro-gap:24px;--body-paragraph-spacing:24px;--body-list-spacing:12px;--h2-margin-block-start:32px;--h3-margin-block-start:48px;--expressive-code-margin-block-start:16px;--journal-header-gap:6px;--lead-font-size:24px;--lead-line-height:1.2;--heading-2-font-size:24px;--heading-2-line-height:1.25;--heading-2-letter-spacing:.24px;--heading-3-font-size:18px;--heading-3-line-height:1.25;--heading-3-letter-spacing:.14px;--meta-font-size:14px;--meta-line-height:1.25;--meta-letter-spacing:.24px;--color-background:#f5f5f5;--color-field:#e8e8e8;--color-content:#0a0a0a;--color-secondary:#616161;--color-accent:#04c751;--section-gap:20px;--section-block-start:24px;--section-border:1px solid #0a0a0a1a;--body-gap:32px;--items-gap:24px;--item-gap:6px;--item-padding-block-end:4px;--item-header-gap:6px;--arrow-size:10px;--logo-size:72px;--journal-content-space:48px}@media (min-width:1024px){:root{--nav-list-gap:12px;--page-padding-y:106px;--lead-font-size:32px;--container-gap:96px}}body{background-color:var(--color-background);font-family:var(--font-base);font-size:var(--font-size-base);line-height:var(--line-height-base);font-weight:var(--font-weight-base);font-variation-settings:var(--font-variation-settings-base);color:var(--color-content)}p{letter-spacing:var(--letter-spacing-base)}code{font-family:var(--font-mono);font-size:var(--meta-font-size);line-height:var(--meta-line-height);font-weight:var(--font-weight-base);font-variation-settings:var(--font-variation-settings-base-base);color:var(--color-content);background-color:var(--color-field);font-variant-numeric:tabular-nums;border-radius:4px;padding:2px 4px}.arrow{width:var(--arrow-size);height:var(--arrow-size);margin-bottom:2px;display:inline-block}.arrow path{stroke:var(--color-content)}a{color:var(--color-content);font-variation-settings:var(--font-variation-settings-base-medium);font-weight:var(--font-weight-medium);text-underline-offset:var(--link-underline-offset);text-decoration:underline;text-decoration-thickness:var(--link-underline-thickness);-webkit-text-decoration-color:var(--link-underline-color);text-decoration-color:var(--link-underline-color)}a:hover{color:var(--color-secondary);text-decoration-thickness:var(--link-underline-thickness-hover)}a:hover .arrow path{stroke:var(--color-accent)}p+p{margin-top:var(--body-paragraph-spacing)}.intro{gap:var(--intro-gap);flex-direction:column;display:flex}.header{flex-direction:column;padding-block-end:var(--section-block-start);display:flex}.header a{text-decoration:none}.logoIcon{width:var(--logo-size);height:var(--logo-size)}.logo{font-size:var(--logo-font-size);font-variation-settings:var(--font-variation-settings-base-bold);letter-spacing:var(--logo-letter-spacing);margin-block-start:12px;margin-block-end:6px}.logo-subtitle{font-size:var(--font-size-base);font-variation-settings:var(--font-variation-settings-base);font-weight:var(--font-weight-base);letter-spacing:var(--letter-spacing-base);line-height:1.25}.content{max-width:var(--container-max-width);padding:var(--page-padding-y) var(--container-padding-x);gap:var(--container-gap);flex-direction:column;margin:0 auto;display:flex}@media (min-width:1024px){.content{grid-template-columns:repeat(12,minmax(0,1fr));display:grid}}@media (min-width:1465px){.content{transform:translate(-6.66667%)}}@media (min-width:1724px){.content{transform:translate(-16.6667%)}}.nav-container{grid-column:span 4}@media (min-width:1024px){.nav-container{flex:1}}.nav-inner{top:var(--page-padding-y);gap:var(--nav-inner-gap);flex-direction:column;display:flex;position:sticky}.nav ul{gap:var(--nav-list-gap);flex-wrap:wrap;display:flex}@media (min-width:1024px){.nav ul{flex-direction:column}}.nav ul a{font-variation-settings:var(--font-variation-settings-base-medium);font-weight:var(--font-weight-medium);font-size:var(--font-size-base);text-transform:lowercase;text-underline-offset:var(--link-underline-offset);text-decoration:underline;text-decoration-thickness:var(--link-underline-thickness);-webkit-text-decoration-color:var(--link-underline-color);text-decoration-color:var(--link-underline-color)}.nav ul a:hover{color:var(--color-accent)}.nav ul a.active{color:var(--color-accent);font-variation-settings:var(--font-variation-settings-base-bold)}.main{gap:var(--main-content-gap);flex-direction:column;display:flex}@media (min-width:1024px){.main{grid-column:span 8}}.lead{font-size:var(--lead-font-size);line-height:var(--lead-line-height);font-family:var(--font-base);font-variation-settings:var(--font-variation-settings-base-bold);font-weight:var(--font-weight-bold)}h2,.heading-2{font-size:var(--heading-2-font-size);font-variation-settings:var(--font-variation-settings-base-bold);line-height:var(--heading-2-line-height);font-weight:var(--font-weight-bold);letter-spacing:var(--heading-2-letter-spacing)}.anchor{scroll-margin-top:var(--page-padding-y)}h3,.heading-3{font-size:var(--heading-3-font-size);font-variation-settings:var(--font-variation-settings-base-bold);font-weight:var(--font-weight-bold);line-height:var(--heading-3-line-height);letter-spacing:var(--heading-3-letter-spacing)}.image{width:100%;padding-block:var(--image-padding-y)}.section{gap:var(--section-gap);border-top:var(--section-border);flex-direction:column;padding-block-start:var(--section-block-start);display:flex}.body{text-wrap:pretty;flex-direction:column;display:flex}.items{gap:var(--items-gap);flex-direction:column;margin-block-start:var(--body-gap);display:flex}.item{gap:var(--item-gap);flex-direction:column;padding-block-end:var(--item-padding-block-end);display:flex}.item-header{gap:var(--item-header-gap);flex-direction:column;display:flex}.meta{color:var(--color-secondary);font-size:var(--meta-font-size);font-variation-settings:var(--font-variation-settings-base);font-weight:var(--font-weight-base);line-height:var(--meta-line-height);letter-spacing:var(--meta-letter-spacing);display:block}.journal-content{flex:1;width:100%;position:relative}.journal-content .journal-meta{font-size:var(--meta-font-size);line-height:var(--meta-line-height);letter-spacing:var(--meta-letter-spacing);font-variation-settings:var(--font-variation-settings-base);font-weight:var(--font-weight-base);color:var(--color-secondary)}.journal-content .journal-header{gap:var(--journal-header-gap);flex-direction:column;display:flex}.journal-content .journal-header h1{font-size:var(--lead-font-size);line-height:var(--lead-line-height);font-family:var(--font-base);font-variation-settings:var(--font-variation-settings-base-bold);font-weight:var(--font-weight-bold);text-wrap:pretty}.journal-content .journal-body>p{margin-block:var(--body-paragraph-spacing)}.journal-content .journal-body .journal-body{margin-block-start:var(--body-gap)}.journal-content .journal-body p+h2{margin-block-start:var(--journal-content-space)}.journal-content .journal-body ol+h2{margin-block-start:var(--journal-content-space)}.journal-content .journal-body ul+h2{margin-block-start:var(--journal-content-space)}.journal-content .journal-body hr{color:var(--color-field);margin-block-start:var(--main-content-gap)}.journal-content .journal-body em{color:var(--color-content);font-style:italic}.journal-content .journal-body h2{margin-block:var(--h2-margin-block-start);text-wrap:pretty}.journal-content .journal-body h3{text-wrap:pretty;margin-block-end:var(--h3-margin-block-start)}.journal-content .journal-body ul{text-wrap:pretty;font-variation-settings:var(--font-variation-settings-base);line-height:1;font-weight:var(--font-weight-base);font-size:var(--font-size-base);line-height:var(--line-height-base);letter-spacing:var(--letter-spacing-base);padding-inline-start:16px;list-style-type:disc;list-style-position:outside}.journal-content .journal-body ul li{margin-block-end:var(--body-list-spacing)}.journal-content .journal-body ol{text-wrap:pretty;font-variation-settings:var(--font-variation-settings-base);line-height:1;font-weight:var(--font-weight-base);font-size:var(--font-size-base);line-height:var(--line-height-base);letter-spacing:var(--letter-spacing-base);padding-inline-start:16px;list-style-type:disc;list-style-position:outside}.journal-content .journal-body ol li{margin-block-end:var(--body-list-spacing)}.journal-content .journal-body strong{font-variation-settings:var(--font-variation-settings-base-medium);font-weight:var(--font-weight-medium)}.journal-content .journal-body ol{list-style-type:decimal}.journal-content .journal-body .expressive-code{padding-block:var(--image-padding-y)}.journal-content .journal-body .expressive-code+h2{margin-block-start:var(--journal-content-space)}.journal-content .journal-body .expressive-code pre>code{font-family:var(--font-mono)}.journal-content .journal-body .expressive-code{margin-block-start:var(--expressive-code-margin-block-start)}.journal-footer-inner{flex-direction:column;gap:24px;display:flex}.journal-footer-label{color:var(--color-secondary)}.journal-footer-next{text-align:right}.logos{flex-wrap:wrap;justify-content:flex-start;margin-block-end:var(--h2-margin-block-start);display:flex}.logos li{flex:33%;justify-content:center;align-items:center;height:100px;display:flex}.logos svg{width:50%;height:40%}.logos svg path{fill:var(--color-secondary)}:where([data-astro-image]){object-fit:var(--fit);object-position:var(--pos);height:auto}:where([data-astro-image=full-width]){width:100%}:where([data-astro-image=constrained]){max-width:100%}