:root{--font-size-000: clamp(0.94rem, calc(0.89rem + 0.24vw), 1.06rem);--font-size-100: clamp(1.13rem, calc(1.07rem + 0.29vw), 1.28rem);--font-size-200: clamp(1.35rem, calc(1.28rem + 0.35vw), 1.53rem);--font-size-300: clamp(1.62rem, calc(1.54rem + 0.42vw), 1.84rem);--font-size-400: clamp(1.94rem, calc(1.84rem + 0.51vw), 2.20rem);--font-size-500: clamp(2.33rem, calc(2.21rem + 0.61vw), 2.64rem);--font-size-600: clamp(2.80rem, calc(2.65rem + 0.73vw), 3.17rem);--font-size-700: clamp(3.36rem, calc(3.18rem + 0.87vw), 3.81rem);--font-size-800: clamp(4.03rem, calc(3.82rem + 1.05vw), 4.57rem);--font-size-900: clamp(4.84rem, calc(4.59rem + 1.26vw), 5.48rem);--space-000: clamp(0.25rem, calc(0.18rem + 0.37vw), 0.44rem);--space-100: clamp(0.50rem, calc(0.38rem + 0.61vw), 0.81rem);--space-200: clamp(0.75rem, calc(0.55rem + 0.98vw), 1.25rem);--space-300: clamp(1.00rem, calc(0.76rem + 1.22vw), 1.63rem);--space-400: clamp(1.50rem, calc(1.13rem + 1.83vw), 2.44rem);--space-500: clamp(2.00rem, calc(1.51rem + 2.44vw), 3.25rem);--space-600: clamp(3.00rem, calc(2.27rem + 3.66vw), 4.88rem);--space-700: clamp(4.00rem, calc(3.02rem + 4.88vw), 6.50rem);--space-800: clamp(6.00rem, calc(4.54rem + 7.32vw), 9.75rem);--space-900: clamp(8.00rem, calc(6.05rem + 9.76vw), 13.00rem);--font-family-sans: 'Baton Turbo', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;--font-family-mono: 'Source Code Pro', monospace;--font-weight-regular: 400;--font-weight-bold: 700;--color-neutral-000: #fbfdfe;--color-neutral-100: #e0ebf0;--color-neutral-200: #cedce4;--color-neutral-300: #66777f;--color-neutral-400: #252e32;--color-neutral-500: #1b2022;--color-accent-000: #de250d;--color-accent-100: #4f9ac9;--color-accent-200: #eeb94f;--color-accent-300: #94be6f;--color-text: var(--color-neutral-400);--color-text-muted: var(--color-neutral-300);--color-background: var(--color-neutral-000);--color-background-accent: hsl(200, 33%, 97%);--color-border: var(--color-neutral-100);--color-link-underline: var(--color-neutral-200);--color-link-hover: var(--color-accent-000);--color-teaser-link-underline: var(--color-neutral-200);--color-code-text: var(--color-neutral-200);--color-code-background: var(--color-neutral-400);--color-code-comment: var(--color-neutral-200);--color-interactive: var(--color-accent-000);--color-graph-lines: var(--color-border);--color-current-state: var(--color-neutral-200);--measure: 840px}*,*::before,*::after{box-sizing:border-box}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}ul[role=list],ol[role=list]{list-style:none}html:focus-within{scroll-behavior:smooth}body{min-height:100vh;text-rendering:optimizeSpeed;line-height:1.5}img,picture{max-width:100%;display:block}input,button,textarea,select{font:inherit}@media(prefers-reduced-motion: reduce){html:focus-within{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}}@font-face{font-display:swap;font-family:"Source Code Pro";font-style:normal;font-weight:400;src:local(""),url("../fonts/source-code-pro/source-code-pro-latin-400-normal.woff2") format("woff2"),url("../fonts/source-code-pro/source-code-pro-latin-400-normal.woff") format("woff")}@font-face{font-family:"Source Code Pro";font-style:italic;font-weight:400;src:local(""),url("../fonts/source-code-pro/source-code-pro-latin-400-italic.woff2") format("woff2"),url("../fonts/source-code-pro/source-code-pro-latin-400-italic.woff") format("woff")}@font-face{font-display:swap;font-family:"Baton Turbo";font-style:normal;font-weight:400;src:local(""),url("../fonts/baton-turbo/BatonTurboWeb-Regular.woff2") format("woff2"),url("../fonts/baton-turbo/BatonTurboWeb-Regular.woff") format("woff")}@font-face{font-display:swap;font-family:"Baton Turbo";font-style:italic;font-weight:400;src:local(""),url("../fonts/baton-turbo/BatonTurboWeb-RegularItalic.woff2") format("woff2"),url("../fonts/baton-turbo/BatonTurboWeb-RegularItalic.woff") format("woff")}@font-face{font-display:swap;font-family:"Baton Turbo";font-style:normal;font-weight:700;src:local(""),url("../fonts/baton-turbo/BatonTurboWeb-Bold.woff2") format("woff2"),url("../fonts/baton-turbo/BatonTurboWeb-Bold.woff") format("woff")}@font-face{font-display:swap;font-family:"Baton Turbo";font-style:italic;font-weight:700;src:local(""),url("../fonts/baton-turbo/BatonTurboWeb-BoldItalic.woff2") format("woff2"),url("../fonts/baton-turbo/BatonTurboWeb-BoldItalic.woff") format("woff")}html{font-size:100%;height:100%}body{font-size:var(--font-size-200);font-family:var(--font-family-sans);line-height:1.5;color:var(--color-text);background-color:var(--color-background);height:100%;display:flex;flex-direction:column;font-feature-settings:"liga"}::selection{background-color:var(--color-interactive);color:var(--color-background)}main{flex-grow:1}:is(h1,h2,h3,h4,h5,h6){font-weight:var(--font-weight-bold)}:is(h1,h2,h3){line-height:1.1}h1{font-size:var(--font-size-500)}h2{font-size:var(--font-size-300)}h3{font-size:var(--font-size-200)}h4{font-size:var(--font-size-100)}h5{font-size:var(--font-size-100)}h6{font-size:var(--font-size-100)}a{color:var(--color-text);text-underline-offset:.25rem;text-decoration-color:var(--color-link-underline);text-decoration-thickness:.25rem;text-decoration-skip-ink:none}a:hover{text-decoration-color:var(--color-link-hover)}a:focus-visible{outline:3px dashed var(--color-interactive);outline-offset:var(--space-000)}blockquote{padding-block-end:var(--space-100);padding-inline-start:var(--space-200);border-left:var(--space-000) solid var(--color-border);color:var(--color-text-muted);font-size:var(--font-size-300);line-height:1.4;font-style:italic}blockquote cite,blockquote footer{font-size:var(--font-size-000);font-style:normal;margin-block-start:var(--space-200)}figure{margin-left:0}figure figcaption{color:var(--color-text-muted);font-size:var(--font-size-000);font-style:italic;padding-block-start:var(--space-100);padding-inline-start:var(--space-100)}pre,code{font-family:var(--font-family-mono);font-size:var(--font-size-100)}p>code,li>code{color:var(--color-text);font-size:var(--font-size-100);position:relative;white-space:nowrap;word-break:break-all;background-color:var(--color-border);padding-inline:var(--space-000);border-radius:.25rem}img{max-width:100%;height:auto}fieldset{border:none;padding:0;margin:0}input[type],textarea,select{display:block;width:100%;max-width:45ch;background-color:transparent;border:2px solid var(--color-neutral-100)}form label+span{--flow-space: .25rem;display:block;font-size:var(--font-size-000);color:var(--color-text-muted)}*:focus{outline:none}*:focus-visible{outline:2px solid var(--color-accent-000);outline-offset:.125em}time{display:inline-block;font-size:var(--font-size-000)}hr{height:1px;border:none;background-color:var(--color-border)}strong{color:var(--color-text)}.feature{list-style:none;padding-left:0}.hero{--flow-space: var(--space-600);width:100vw;margin-left:calc(50% - 50vw)}@media(min-width: 1180px){.hero{width:1180px;margin-left:calc(50% - 590px)}}@media(min-width: 45rem){.feature{display:flex;gap:var(--space-300);flex-wrap:wrap}.feature>*{flex-basis:0;flex-grow:999}}.archive__header{display:flex;align-items:baseline;justify-content:space-between;--flow-space: var(--space-600);border-bottom:1px solid var(--color-border);padding-bottom:var(--space-100)}.archive__header>[id]{color:var(--color-text-muted)}.archive h2{font-size:var(--font-size-600)}.skip-link{position:fixed;top:-6em}.skip-link:focus{top:0}/*!
  Theme: GitHub Dark
  Description: Dark theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15
  Outdated base version: https://github.com/primer/github-syntax-dark
  Current colors taken from GitHub's CSS
*/.hljs{color:var(--color-code-text);background:var(--color-code-background);padding:var(--space-200);border-radius:.5rem;overflow:auto}.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-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:var(--color-code-comment)}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:bold}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:bold}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.article-header__title{font-size:var(--font-size-700);font-weight:var(--font-weight-bold);line-height:1.1;letter-spacing:-0.025rem;margin-block-start:var(--space-000)}.article-header__title a{text-decoration:none}.article-header__title a:hover{color:var(--color-link-hover);text-decoration:underline}.article-header__description{font-size:var(--font-size-300);color:var(--color-text-muted);margin-top:var(--space-200);line-height:1.4}.article-header__date{font-size:var(--font-size-000);color:var(--color-text-muted);text-transform:uppercase;font-feature-settings:"tnum";position:relative;display:flex;align-items:center;gap:var(--space-000)}.article-header__date::before{content:"";display:block;width:var(--space-100);height:var(--space-100);background-color:var(--color-accent-000);border-radius:50%}.article-header__cta{display:inline-block;margin-top:var(--space-400);text-decoration-color:var(--color-accent-200);text-decoration-thickness:.25rem;text-underline-offset:.75rem}.post-type-article .article-header__date::before{background-color:var(--color-accent-100)}.cta,button{display:inline-block;text-decoration-color:var(--color-link-underline);text-decoration-thickness:.25rem;text-underline-offset:.75rem}.cta:hover,button:hover{text-decoration-color:var(--color-text-muted);cursor:pointer}.post .cta{--flow-space: var(--space-300)}.callout{border:3px dashed var(--color-border);padding:var(--space-300);display:flex;flex-direction:column;align-items:center;gap:var(--space-200);text-align:center;background-color:var(--color-background-accent)}.callout svg{color:var(--color-interactive)}@media(min-width: 832px){.callout{flex-direction:row;text-align:left;align-items:baseline}.callout svg{flex-shrink:0}}.pagination{display:flex;justify-content:center;gap:var(--space-400)}.pagination a{text-decoration:none;color:var(--color-accent-000)}.pagination a:hover{text-decoration:underline}.post-teaser__title{font-size:var(--font-size-200);display:block;text-decoration:none}.post-teaser__title:hover{text-decoration:underline}.post-teaser__date{font-family:var(--font-family-mono);font-size:var(--font-size-000);color:var(--color-text-muted)}.project-teaser{display:flex;gap:var(--space-400);flex-wrap:wrap;align-items:flex-end;border-bottom:1px solid var(--color-border);padding-left:var(--space-400);position:relative}.project-teaser:hover .project-teaser__cta{text-decoration:underline}.project-teaser>*{flex-basis:0;flex-grow:999;min-width:16rem}.project-teaser__body{padding-bottom:var(--space-400)}.project-teaser__body a{text-decoration:none;font-weight:var(--font-weight-bold)}.project-teaser__body a::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}.project-teaser__body p{margin-top:var(--space-200);color:var(--color-text-muted)}.project-teaser__body>a{font-size:var(--font-size-300)}@media(min-width: 45rem){.project-teaser__body{padding-inline:var(--space-500);padding-block-end:var(--space-500)}}.series-nav{border-top:1px solid var(--color-border)}.series-nav__item{flex-grow:1;text-decoration:none;padding:var(--space-200);font-family:var(--font-family-sans)}.series-nav__item:hover .series-nav__link-text{text-decoration:underline}.series-nav__label{font-size:var(--font-size-000);color:var(--color-text-muted)}.series-nav__link-text{line-height:1.3}@media(min-width: 45em){.series-nav{--flow-space: var(--space-600);display:flex}.series-nav__item{width:50%}.series-nav__item--older{text-align:right}}.site-footer{background-color:var(--color-background-accent)}.site-footer__inner{--flow-space: var(--space-100);text-align:center;padding-block-start:var(--space-500);padding-block-end:var(--space-500)}.site-footer__copyright{font-family:var(--font-family-sans);font-size:var(--font-size-100)}.site-footer__links{padding-left:0;display:flex;justify-content:center;gap:var(--space-200);margin:0}.site-footer__links li a{font-size:var(--font-size-100)}.site-header{padding-block-start:var(--space-400)}.site-header__inner{display:flex;justify-content:space-between;align-items:center;padding-block-end:var(--space-100);border-bottom:1px solid var(--color-border)}.site-header__logo{display:block;width:var(--space-500);transition:color .2s ease}.site-header__logo:hover{color:var(--color-text-muted)}.site-header__logo svg{width:100%;height:auto}.site-header__nav ul{display:flex;gap:var(--space-300);margin:0;padding:0}.site-header__nav ul li{position:relative}.site-header__nav ul li a{align-items:center;display:flex;gap:var(--space-100);text-decoration:none;font-size:var(--font-size-100)}.site-header__nav ul li a:hover{text-decoration:underline}.site-header__nav ul li a[aria-current]::after{content:"";display:block;height:.25rem;width:100%;background-color:var(--color-current-state);position:absolute;bottom:calc(var(--space-400)*-0.7);left:0}@media(min-width: 45rem){.site-header__nav ul{gap:var(--space-400)}.site-header__nav ul li a{font-size:var(--font-size-200)}.site-header__nav ul li a[aria-current]::after{bottom:calc(var(--space-400)*-0.65)}}.tag-list{padding-left:0;margin-top:0;margin-bottom:0;display:flex;flex-wrap:wrap;column-gap:var(--space-100)}.tag-list li a{text-decoration:none;line-height:1.1;font-size:var(--font-size-100);display:inline-block;padding:.25rem .25rem;color:var(--color-text-muted)}.tag-list li a:hover{text-decoration:underline;color:var(--color-accent-000)}.tag-list li a:hover span{color:var(--color-accent-000)}@media(min-width: 45rem){.tag-list ul{gap:.25rem var(--space-100)}}.layout-container{max-width:1180px;padding-inline-start:var(--space-400);padding-inline-end:var(--space-400);margin-inline:auto}.content-container{max-width:var(--measure);margin-inline:auto}.measure-container{max-width:var(--measure)}.flow>*+*{margin-block-start:var(--flow-space, var(--space-400))}.font-size-000{font-size:var(--font-size-000) !important}.font-size-100{font-size:var(--font-size-100) !important}.font-size-200{font-size:var(--font-size-200) !important}.font-size-300{font-size:var(--font-size-300) !important}.font-size-400{font-size:var(--font-size-400) !important}.font-size-500{font-size:var(--font-size-500) !important}.font-size-600{font-size:var(--font-size-600) !important}.font-size-700{font-size:var(--font-size-700) !important}.font-size-800{font-size:var(--font-size-800) !important}.font-size-900{font-size:var(--font-size-900) !important}:where(.list-reset){list-style:none;padding:0;margin:0}.teaser-list{list-style:none;padding:0}.teaser-list>li+li{margin-top:var(--space-500)}.project-list{display:flex;flex-direction:column;gap:var(--space-600);margin-bottom:0;list-style:""}.project-list__item{margin-left:calc(var(--space-400)*-1)}@media(min-width: 45rem){.project-list__item{margin-left:calc(var(--space-500)*-1)}.project-list__item:nth-child(even) .project-teaser{flex-direction:row-reverse}}.archive-list>li{padding-block:var(--space-200)}.archive-list>li time{color:var(--color-text-muted);text-transform:uppercase;display:block;font-feature-settings:"tnum"}@media(min-width: 45rem){.archive-list>li{display:flex;align-items:baseline;gap:var(--space-400);padding-block:var(--space-000)}.archive-list>li time{font-size:var(--font-size-100);min-width:var(--space-900)}}.post{position:relative;line-height:1.6}.post :is(h1,h2,h3,h4,h5,h6){--flow-space: var(--space-600);scroll-margin-block-start:var(--space-100);line-height:1.1}.post :is(h2,h3,h4,h5,h6)+*{--flow-space: var(--space-300)}.post blockquote,.post blockquote+*{--flow-space: var(--space-500)}.post figure,.post figure+*{--flow-space: var(--space-500)}.post *+pre,.post pre+*{--flow-space: var(--space-500)}.post>ul>li+li,.post>ol>li+li{margin-block-start:var(--space-200)}.p-top-000{padding-block-start:var(--space-000) !important}.p-right-000{padding-inline-end:var(--space-000) !important}.p-bottom-000{padding-block-end:var(--space-000) !important}.m-top-000{margin-block-start:var(--space-000) !important}.m-bottom-000{margin-block-end:var(--space-000) !important}.p-top-100{padding-block-start:var(--space-100) !important}.p-right-100{padding-inline-end:var(--space-100) !important}.p-bottom-100{padding-block-end:var(--space-100) !important}.m-top-100{margin-block-start:var(--space-100) !important}.m-bottom-100{margin-block-end:var(--space-100) !important}.p-top-200{padding-block-start:var(--space-200) !important}.p-right-200{padding-inline-end:var(--space-200) !important}.p-bottom-200{padding-block-end:var(--space-200) !important}.m-top-200{margin-block-start:var(--space-200) !important}.m-bottom-200{margin-block-end:var(--space-200) !important}.p-top-300{padding-block-start:var(--space-300) !important}.p-right-300{padding-inline-end:var(--space-300) !important}.p-bottom-300{padding-block-end:var(--space-300) !important}.m-top-300{margin-block-start:var(--space-300) !important}.m-bottom-300{margin-block-end:var(--space-300) !important}.p-top-400{padding-block-start:var(--space-400) !important}.p-right-400{padding-inline-end:var(--space-400) !important}.p-bottom-400{padding-block-end:var(--space-400) !important}.m-top-400{margin-block-start:var(--space-400) !important}.m-bottom-400{margin-block-end:var(--space-400) !important}.p-top-500{padding-block-start:var(--space-500) !important}.p-right-500{padding-inline-end:var(--space-500) !important}.p-bottom-500{padding-block-end:var(--space-500) !important}.m-top-500{margin-block-start:var(--space-500) !important}.m-bottom-500{margin-block-end:var(--space-500) !important}.p-top-600{padding-block-start:var(--space-600) !important}.p-right-600{padding-inline-end:var(--space-600) !important}.p-bottom-600{padding-block-end:var(--space-600) !important}.m-top-600{margin-block-start:var(--space-600) !important}.m-bottom-600{margin-block-end:var(--space-600) !important}.p-top-700{padding-block-start:var(--space-700) !important}.p-right-700{padding-inline-end:var(--space-700) !important}.p-bottom-700{padding-block-end:var(--space-700) !important}.m-top-700{margin-block-start:var(--space-700) !important}.m-bottom-700{margin-block-end:var(--space-700) !important}.p-top-800{padding-block-start:var(--space-800) !important}.p-right-800{padding-inline-end:var(--space-800) !important}.p-bottom-800{padding-block-end:var(--space-800) !important}.m-top-800{margin-block-start:var(--space-800) !important}.m-bottom-800{margin-block-end:var(--space-800) !important}.p-top-900{padding-block-start:var(--space-900) !important}.p-right-900{padding-inline-end:var(--space-900) !important}.p-bottom-900{padding-block-end:var(--space-900) !important}.m-top-900{margin-block-start:var(--space-900) !important}.m-bottom-900{margin-block-end:var(--space-900) !important}.sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only.focusable:active,.sr-only.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.block{display:block}.show-on-large{display:none}@media(min-width: 45rem){.show-on-large{display:flex}}.color-accent-primary{color:var(--color-accent-000)}.color-accent-secondary{color:var(--color-accent-100)}.color-accent-tertiary{color:var(--color-accent-200)}.color-text-muted{color:var(--color-text-muted)}.border-top{border-top:1px solid var(--color-border)}.section-heading{--color-section-accent: var(--color-text-muted);font-size:var(--font-size-000);text-transform:uppercase;letter-spacing:.025rem;font-weight:var(--font-weight-regular);letter-spacing:.05rem}.section-heading span{color:var(--color-text-muted)}.swatches{display:flex;flex-wrap:wrap;gap:var(--space-100)}.swatch{color:var(--color-background);padding:var(--space-100);flex-grow:0;min-width:240px}.article{padding-bottom:var(--space-600)}.article+article{padding-top:var(--space-500)}.graph-divider{--graph-height: 80px}.graph-divider::after{width:100%;height:var(--graph-height);content:"";display:block;background-color:var(--color-background);background-image:linear-gradient(var(--color-graph-lines) 1.5px, transparent 1.5px),linear-gradient(90deg, var(--color-graph-lines) 1.5px, transparent 1.5px),linear-gradient(var(--color-graph-lines) 1px, transparent 1px),linear-gradient(90deg, var(--color-graph-lines) 1px, transparent 1px);background-position:-1.5px -1.5px,-1.5px -1.5px,-1px -1px,-1px -1px;background-size:100px 100px,100px 100px,20px 20px,20px 20px;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.eyebrow{--eyebrow-background-1: var(--color-accent-000);--eyebrow-background-2: var(--color-accent-200);position:relative}.eyebrow::before{content:"";display:block;width:var(--space-100);height:var(--space-100);background-color:var(--eyebrow-background-1);left:0;top:calc(var(--space-200)*-1);position:absolute}.eyebrow::after{content:"";display:block;width:var(--space-100);height:var(--space-100);background-color:var(--eyebrow-background-2);left:var(--space-200);top:calc(var(--space-200)*-1);position:absolute;border-radius:999rem}sup{padding-inline-start:3px}sup a{color:var(--color-interactive)}.footnotes{--flow-space: var(--space-500);background-color:var(--color-background-accent);padding:var(--space-100);border:3px dashed var(--color-border)}.footnotes>hr{display:none}.footnotes ol li{font-size:var(--font-size-000)}/*# sourceMappingURL=styles.css.map */
