/*! modern-normalize v2.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */*,:before,:after{box-sizing:border-box}html{font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";line-height:1.15;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{margin:0}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}:root{line-height:1.5;-webkit-font-smoothing:antialiased}*{overflow-wrap:break-word}:where(a){text-decoration-thickness:max(.08em,1px);text-underline-offset:.1em}:where(h1,h2,h3,h4,h5,figure,p,ol,ul){margin:0}:where(ol,ul){list-style:none;padding-inline:0}:where(h1,h2,h3,h4,h5){font-size:inherit;font-weight:inherit}:where(img){display:block;max-inline-size:100%}:where(h1,h2,h3,h4,h5,h6):not([tabindex]):focus{outline:none}:root{--font-size-xs:.8125rem;--font-size-s:.875rem;--font-size-l:1.125rem;--font-size-xl:1.25rem;--font-size-xxl:1.625rem;--blue-200: #b2dfff;--blue-500: #0679cc;--red-800: #914646;--stone-100: #f9f8f8;--stone-200: #f2f1f1;--stone-300: #d9d8d8;--stone-500: #777373;--stone-600: #575353;--stone-700: #4d4949;--stone-750: #403a3a;--stone-800: #2e2a2a;--stone-900: #120e0e;color:var(--stone-900)}:where(a:-moz-any-link){color:var(--blue-500)}:where(a:any-link){color:var(--blue-500)}:where([data-theme=dark]){color:var(--stone-100)}:where([data-theme=dark]) :where(a:-moz-any-link){color:var(--blue-200)}:where([data-theme=dark]) :where(a:any-link){color:var(--blue-200)}@media only screen and (width >= 321px){:root{font-size:1.0625em}}@media only screen and (width >= 480px){:root{font-size:1.125em}}@media only screen and (width >= 1024px){:root{--font-size-xs: calc(14rem / 18);--font-size-s: calc(16rem / 18);--font-size-l: calc(23rem / 18);--font-size-xl: calc(32rem / 18);--font-size-xxl:2rem}}@media only screen and (width >= 1281px){:root{font-size:1.25em}}.byline{color:var(--stone-500);display:grid;gap:0 .7rem;grid-template-columns:auto 1fr;grid-template-rows:1fr 1fr;line-height:1.3}.byline__photo{align-self:center;grid-row:1 / span 2}.byline__photo>img{border-radius:50%;box-shadow:0 0 0 1px var(--stone-700);display:block;height:3.25rem;width:3.25rem}.byline__name{align-self:end;color:var(--stone-900);font-weight:700;text-decoration:none}.byline__name:hover,.byline__photo:hover+.byline__name{text-decoration:underline}:root{--container-padding: clamp(20rem / 16, 5.33vw, 60rem / 18);--container-max-width: calc(1280rem / 18)}.container{margin-inline:auto;max-width:var(--container-max-width);padding-inline:var(--container-padding)}.container--narrow{max-width:calc(886rem / 18)}.flow{--block-code-background-color: var(--stone-100);--block-code-foreground-color: inherit}@media only screen and (prefers-color-scheme: dark){.flow{--block-code-background-color: var(--stone-800);--block-code-foreground-color: var(--stone-100)}}.flow :where(ol,ul){all:revert}.flow>*+*{margin-block:1.5rem 0}.flow :where(h2,h3){font-weight:700}.flow :where(h2,h3) a[href^="#"]{color:inherit}.flow :where(h2,h3) a[href^="#"]:not(:hover){text-decoration:none}.flow :where(blockquote){font-style:italic}.flow h2{font-size:var(--font-size-l);line-height:1.2;margin-block-start:4.5rem}.flow h2:before{background-color:var(--red-800);content:"";display:block;height:6px;margin-block-end:1em;width:2em}.flow h3{font-weight:700;margin-block-start:3rem}.flow li{margin-block-start:.75em}.flow li:first-child:nth-last-child(n + 6),.flow li:first-child:nth-last-child(n + 6)~li{margin-block-start:initial}.flow pre{background-color:var(--block-code-background-color);color:var(--block-code-foreground-color);font-size:var(--font-size-xs);line-height:1.4;margin-inline-start:50%;overflow-x:auto;padding-block:1.2rem;transform:translate(-50.1%);width:100.1vw}.flow pre+pre{margin-block-start:0}.flow figure>pre{margin-block:0}.flow pre>code{background-color:var(--block-code-background-color);margin-inline:auto;max-width:calc(100vw - 2 * var(--container-padding))}.flow figcaption{color:var(--stone-500);font-size:var(--font-size-s);line-height:1.4;padding-block:.75rem;max-width:38em}.flow .icon-tabler-file{margin-inline:-5px 0;vertical-align:bottom}.flow sup{line-height:1}.flow>.footnotes{font-size:var(--font-size-s);margin-block:5rem 0}.flow>.footnotes>hr{display:none}.flow>.footnotes>ol{padding-inline:1.5em 0}.flow .footnotes li+li{margin-block:1.5rem 0}@media only screen and (width >= 768px){.flow pre{border-radius:.25rem;padding-inline:1.2rem;margin-inline:-1.2rem;transform:none;width:auto}}.footer{background-color:var(--stone-700);box-sizing:content-box;color:var(--stone-300);font-size:var(--font-size-s);padding-block:60px 24px;padding-inline:max(20px,5.33vw)}.footer a:-moz-any-link{color:inherit}.footer a:any-link{color:inherit}.footer__social_link{align-items:center;display:flex;gap:.2em}.footer__columns{display:flex;flex-direction:column;gap:24px;max-width:36rem}.footer__column{display:flex;flex-direction:column;gap:20px}.footer__column:last-child{border-top:1px solid var(--stone-600);margin-block-start:4px;padding-block-start:28px}@media only screen and (width >= 1024px){.footer{padding-block:80px 60px}.footer__columns{display:flex;flex-direction:row-reverse;gap:24px;max-width:calc(766rem / 18);margin-inline:auto}.footer__column:last-child{border:none;flex:0 0 calc(271rem / 18);margin:0;padding:0}}.github_repo_card{background-color:var(--stone-750);border:1px solid var(--stone-700);border-radius:6px;border-top-color:var(--stone-500);color:inherit;padding:20px;text-decoration:none}.github_repo_card__title{font-weight:700;margin-block-end:8px}.github_repo_card:hover .github_repo_card__title{text-decoration:underline}.github_repo_card__description{color:var(--stone-300);font-size:var(--font-size-s);margin-block-end:24px}.github_repo_card__meta{color:var(--stone-300);font-size:var(--font-size-s);margin-block-start:auto}.github_repo_card__meta svg{height:1.2em;width:1.2em;vertical-align:text-bottom}@media only screen and (width >= 1024px){.github_repo_card{display:flex;flex-direction:column}}.header__tag{color:var(--red-800);font-size:var(--font-size-s);font-weight:700;margin-block:-12px 24px;text-transform:uppercase}.header__title{font-size:var(--font-size-xxl);font-weight:700;line-height:1.2;max-width:24ch}.header__subtitle{font-size:var(--font-size-l);margin-block:16px 0;max-width:44ch}.header__byline{margin-block:32px 0}@media only screen and (width >= 480px){.header__subtitle{line-height:1.3}}pre code.hljs{display:block}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}@media only screen and (prefers-color-scheme: dark){.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}}.postcard{background-color:#fff;border-top:4px solid var(--red-800);box-shadow:2px 2px #0000000a;display:flex;flex-direction:column;overflow-wrap:break-word;padding:20px 24px;text-decoration:initial}.postcard__tag{color:var(--red-800);font-size:var(--font-size-xs);font-weight:700;text-transform:uppercase;margin-block-end:20px}.postcard__title{color:var(--stone-900);font-weight:700;line-height:1.2}.postcard:hover .postcard__title{text-decoration:underline}.postcard__subtitle{color:var(--stone-900);font-size:var(--font-size-s);margin-block-start:20px}.postcard__meta{color:var(--stone-500);font-size:var(--font-size-s);margin-block-start:auto;padding-block-start:40px}.postcard_carousel{display:flex;margin-inline:auto;max-width:var(--container-max-width);overflow-x:auto;padding-block-end:20px}.postcard_carousel>.postcard{flex:1 0 15rem}.postcard_carousel>.postcard+.postcard{margin-inline-start:24px}.postcard_carousel__spacer{flex:0 0 var(--container-padding)}.social_link{align-items:center;display:flex;gap:.2em}.home__intro_section{padding-block:72px 60px}.home__avatar{border-radius:50%;box-shadow:0 0 0 1px var(--stone-700);display:block;height:76px;margin-block-end:32px;width:76px}.home__title{font-size:var(--font-size-xl);line-height:1.2;margin-block-end:40px}.home__social{display:flex;flex-direction:column;gap:4px}.home__social_link>svg{color:var(--stone-500)}.home__blog_section{background-color:var(--stone-100);padding-block:52px 60px}.home__blog_heading{font-size:var(--font-size-xl);line-height:1.2;margin-block-end:44px}.home__blog_links{display:flex;gap:1.2em}.home__opensource_section{background-image:radial-gradient(64.15% 64.15% at 50% 0%,var(--stone-700) 13.16%,var(--stone-900) 100%);background-color:var(--stone-900);padding-block:52px 60px}.home__opensource_heading{font-size:var(--font-size-xl);line-height:1.2;margin-block-end:16px}.home__opensource_subheading{font-size:var(--font-size-l);line-height:1.2;margin-block:48px 16px}.home__project_cards,.home__project_list{display:flex;flex-direction:column;gap:12px}.home__project_row{background-color:var(--stone-800);border-radius:6px;color:inherit;font-size:var(--font-size-s);padding:20px;text-decoration:none}.home__project_row_title{font-weight:700;margin-block-end:4px}.home__project_row:hover .home__project_row_title{text-decoration:underline}.home__project_row_description{color:var(--stone-300)}.home__project_row_stars{display:none}@media only screen and (width >= 1024px){.home__title,.home__blog_heading,.home__opensource_heading{max-width:26ch}.home__intro_section{padding-block:100px}.home__blog_heading{margin-block-end:60px}.home__blog_links{margin-block-start:20px}.home__blog_section,.home__opensource_section{padding-block:80px}.home__opensource_heading{margin-block-end:32px}.home__opensource_subheading{margin-block:80px 32px}.home__project_cards{flex-direction:row;gap:24px;margin-block-end:108px}.home__project_cards>*{flex:1 0 0}.home__project_columns{display:grid;gap:2rem;grid-template-columns:calc(260rem / 18) 1fr}.home__project_columns:not(:last-child){margin-block-end:80px}.home__project_columns .home__opensource_subheading{margin-block:0}.home__project_row{display:flex}.home__project_row_title{margin-block:0;white-space:nowrap}.home__project_row_description{margin-inline:1.2em}.home__project_row_stars{color:var(--stone-300);display:initial;margin-inline-start:auto;white-space:nowrap}.home__project_row_stars svg{height:1.2em;width:1.2em;vertical-align:text-bottom}}.post{border-top:10px solid var(--red-800);padding-block-start:60px}.post__article :not(pre)>code{background-color:var(--stone-200);border-radius:6px;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.875em;margin:0;padding:.1em .4em;white-space:break-spaces}.post__header{margin-block-end:72px}.post__actions{display:flex;flex-direction:column;gap:16px;margin-block:60px}.post__action{align-items:center;background-color:var(--stone-100);border-radius:1.75rem;display:flex;justify-content:center;gap:.5em;height:3.5em}.post__trailer_section{background-color:var(--stone-100);padding-block:56px}.post__trailer_columns{display:flex;flex-direction:column;font-size:var(--font-size-s);gap:24px}.post__recent_section{background-color:var(--stone-100);padding-block:8px 44px}.post__recent_header{align-items:baseline;display:flex;gap:.8em;margin-block-end:24px}.post__recent_heading,.post__opensource_heading{font-size:var(--font-size-l);line-height:1.2}.post__opensource_section{background-image:radial-gradient(64.15% 64.15% at 50% 0%,var(--stone-700) 13.16%,var(--stone-900) 100%);background-color:var(--stone-900);padding-block:52px}.post__opensource_cards{display:flex;flex-direction:column;gap:12px;margin-block:24px}@media only screen and (width >= 768px){.post__header{margin-block-end:100px}.post__actions{flex-direction:row;justify-content:center;gap:2px;margin-block:88px}.post__action{flex:0 0 16em}.post__action:first-child{border-bottom-right-radius:0;border-top-right-radius:0;padding-inline-start:1em}.post__action:last-child{border-bottom-left-radius:0;border-top-left-radius:0;padding-inline-end:1em}}@media only screen and (width >= 1024px){.post{padding-block-start:120px}.post__header{margin-block-end:120px}.post__trailer_section{padding-block:92px}.post__trailer_columns{flex-direction:row;gap:48px}.post__trailer_columns>*:last-child{flex:1 0}.post__recent_header{margin-block-end:32px}.post__opensource_section{padding-block:64px}.post__opensource_heading{margin-block-end:32px}.post__opensource_cards{flex-direction:row;gap:24px}.post__opensource_cards>*{flex:1 0 0}}.posts__intro{padding-block:48px}.posts__archive{padding-block:48px 60px}.posts__spacer{flex:0 0 var(--container-padding, 0)}.posts__back{font-size:var(--font-size-s);margin-block:0 40px}.posts__title{font-size:var(--font-size-xxl);font-weight:700;margin-block:0 32px}.posts__intro_paragraph{margin-block:0 28px}.posts__feed_info{color:var(--stone-700);font-size:var(--font-size-s)}.posts__link_with_icon{align-items:center;display:inline-flex;gap:.2em}.posts__link_with_icon>svg{color:initial;height:1em;width:1em}.posts__featured{background-color:var(--stone-100);padding-block:48px 40px}.posts__heading{font-size:var(--font-size-l);font-weight:700;margin-block:0 40px}.posts__subheading{font-size:var(--font-size-s);font-weight:700;margin-block-end:20px}.posts__subheading:not(:first-child){margin-block-start:40px}.posts__list{display:flex;flex-direction:column;gap:24px}.posts__subtitle{color:var(--stone-700);font-size:var(--font-size-s)}@media only screen and (width >= 1024px){.posts__intro,.posts__archive{padding-block:64px}.posts__back{margin-block-end:64px}.posts__intro_columns{display:grid;grid-template-columns:1fr 272px;gap:min(8.75vw,112px)}.posts__intro_paragraph{margin-block-end:0}.posts__archive_columns{align-items:baseline;display:grid;grid-template-columns:1fr 568px 1fr}.posts__subheading{margin-block-end:24px}.posts__subheading:not(:first-child){margin-block-start:56px}.posts__list{gap:28px}}
