@font-face{font-family:Calibre;src:url(/_astro/Calibre-Regular.BF8rtuU2.woff2)format("woff2"),url(/_astro/Calibre-Regular.-1hlrhWf.woff)format("woff");font-weight:400;font-style:normal;font-display:auto}@font-face{font-family:Calibre;src:url(/_astro/Calibre-RegularItalic.iX0Te0iB.woff2)format("woff2"),url(/_astro/Calibre-RegularItalic.CjzLnpHV.woff)format("woff");font-weight:400;font-style:italic;font-display:auto}@font-face{font-family:Calibre;src:url(/_astro/Calibre-Medium.Dr3uPw4d.woff2)format("woff2"),url(/_astro/Calibre-Medium.CLLEtnc8.woff)format("woff");font-weight:500;font-style:normal;font-display:auto}@font-face{font-family:Calibre;src:url(/_astro/Calibre-MediumItalic.bP60ilMe.woff2)format("woff2"),url(/_astro/Calibre-MediumItalic.BO9nraGd.woff)format("woff");font-weight:500;font-style:italic;font-display:auto}@font-face{font-family:Calibre;src:url(/_astro/Calibre-Semibold.ctWswtER.woff2)format("woff2"),url(/_astro/Calibre-Semibold.4458Tx-4.woff)format("woff");font-weight:600;font-style:normal;font-display:auto}@font-face{font-family:Calibre;src:url(/_astro/Calibre-SemiboldItalic.bSpOXIzM.woff2)format("woff2"),url(/_astro/Calibre-SemiboldItalic.27xyafhv.woff)format("woff");font-weight:600;font-style:italic;font-display:auto}@font-face{font-family:SF Mono;src:url(/_astro/SFMono-Regular.CefSygqP.woff2)format("woff2"),url(/_astro/SFMono-Regular.pHQ7OiT5.woff)format("woff");font-weight:400;font-style:normal;font-display:auto}@font-face{font-family:SF Mono;src:url(/_astro/SFMono-RegularItalic.Bqi1mbuH.woff2)format("woff2"),url(/_astro/SFMono-RegularItalic.D-2lWrQW.woff)format("woff");font-weight:400;font-style:italic;font-display:auto}@font-face{font-family:SF Mono;src:url(/_astro/SFMono-Semibold.Cbwo1XB1.woff2)format("woff2"),url(/_astro/SFMono-Semibold.GntYHmax.woff)format("woff");font-weight:600;font-style:normal;font-display:auto}@font-face{font-family:SF Mono;src:url(/_astro/SFMono-SemiboldItalic.dYysnNTL.woff2)format("woff2"),url(/_astro/SFMono-SemiboldItalic.DwkXiFFS.woff)format("woff");font-weight:600;font-style:italic;font-display:auto}:root{--dark-navy:#020c1b;--navy:#0a192f;--light-navy:#112240;--lightest-navy:#233554;--navy-shadow:#020c1bb3;--dark-slate:#495670;--slate:#8892b0;--light-slate:#a8b2d1;--lightest-slate:#ccd6f6;--white:#e6f1ff;--green:#64ffda;--green-tint:#64ffda1a;--grey:#f2f2f2;--blue-grey:#e9edf3;--blue-dark-grey:#8694a8;--dark-blue:#2c3c6c;--light-blue:#5a71b4;--lightest-blue:#6474a8;--reddish-black:#5a5858;--dark-green:#04d99d;--font-sans:"Calibre", "Inter", "San Francisco", "SF Pro Text", -apple-system, system-ui, sans-serif;--font-mono:"SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", monospace;--fz-xxs:12px;--fz-xs:13px;--fz-sm:14px;--fz-md:16px;--fz-lg:18px;--fz-xl:20px;--fz-xxl:22px;--fz-heading:32px;--border-radius:4px;--nav-height:100px;--nav-scroll-height:70px;--tab-height:42px;--tab-width:120px;--easing:cubic-bezier(.645, .045, .355, 1);--transition:all .25s cubic-bezier(.645, .045, .355, 1);--hamburger-width:30px;--ham-before:top .1s ease-in .25s, opacity .1s ease-in;--ham-before-active:top .1s ease-out, opacity .1s ease-out .12s;--ham-after:bottom .1s ease-in .25s, transform .22s cubic-bezier(.55, .055, .675, .19);--ham-after-active:bottom .1s ease-out, transform .22s cubic-bezier(.215, .61, .355, 1) .12s}html{scroll-behavior:smooth;box-sizing:border-box;width:100%}*,:before,:after{box-sizing:inherit}::selection{background-color:var(--selection-bg);color:var(--tertiary-text)}:focus{outline:2px dashed var(--secondary-color);outline-offset:3px}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;background-color:var(--primary-bg);width:100%;min-height:100%;color:var(--primary-text);font-family:var(--font-sans);font-size:var(--fz-xl);margin:0;line-height:1.3;overflow-x:hidden}@media (width<=480px){body{font-size:var(--fz-lg)}}body.hidden,body.blur{overflow:hidden}body.blur header{background-color:#0000}body.blur #content>*{filter:blur(5px)brightness(.7);transition:var(--transition);pointer-events:none;user-select:none}#root{grid-template-rows:1fr auto;grid-template-columns:100%;min-height:100vh;display:grid}main{width:100%;max-width:1600px;min-height:100vh;margin:0 auto;padding:200px 150px}@media (width<=1080px){main{padding:200px 100px}}@media (width<=768px){main{padding:150px 50px}}@media (width<=480px){main{padding:125px 25px}}main.fillHeight{padding:0 150px}@media (width<=1080px){main.fillHeight{padding:0 100px}}@media (width<=768px){main.fillHeight{padding:0 50px}}@media (width<=480px){main.fillHeight{padding:0 25px}}section{max-width:1000px;margin:0 auto;padding:100px 0}@media (width<=768px){section{padding:80px 0}}@media (width<=480px){section{padding:60px 0}}h1,h2,h3,h4,h5,h6{color:var(--tertiary-text);margin:0 0 10px;font-weight:600;line-height:1.1}.big-heading{margin:0;font-size:clamp(40px,8vw,80px)}.medium-heading{margin:0;font-size:clamp(40px,8vw,60px)}.numbered-heading{width:100%;font-size:clamp(26px, 5vw, var(--fz-heading));white-space:nowrap;align-items:center;margin:10px 0 40px;display:flex;position:relative}.numbered-heading:before{counter-increment:section;content:"0" counter(section) ".";color:var(--secondary-color);font-family:var(--font-mono);font-size:clamp(var(--fz-md), 3vw, var(--fz-xl));margin-right:10px;font-weight:400;position:relative;bottom:4px}@media (width<=480px){.numbered-heading:before{margin-bottom:-3px;margin-right:5px}}.numbered-heading:after{content:"";background-color:var(--tertiary-bg);width:300px;height:1px;margin-left:20px;display:block;position:relative;top:-5px}@media (width<=1080px){.numbered-heading:after{width:200px}}@media (width<=768px){.numbered-heading:after{width:100%}}@media (width<=600px){.numbered-heading:after{margin-left:10px}}img,svg{vertical-align:middle;width:100%;max-width:100%}img[alt=""],img:not([alt]){filter:blur(5px)}svg{fill:currentColor;vertical-align:middle;width:100%;height:100%}svg.feather{fill:none}a{text-decoration-skip-ink:auto;color:inherit;transition:var(--transition);text-decoration:none;display:inline-block;position:relative}a:hover,a:focus{color:var(--secondary-color)}.inline-link,a.inline-link,p>a,.subtitle a,.breadcrumb a{text-decoration-skip-ink:auto;transition:var(--transition);color:var(--secondary-color);text-decoration:none;display:inline-block;position:relative}.inline-link:hover,.inline-link:focus,.inline-link:active,a.inline-link:hover,a.inline-link:focus,a.inline-link:active,p>a:hover,p>a:focus,p>a:active,.subtitle a:hover,.subtitle a:focus,.subtitle a:active,.breadcrumb a:hover,.breadcrumb a:focus,.breadcrumb a:active{color:var(--secondary-color);outline:0}.inline-link:hover:after,.inline-link:focus:after,.inline-link:active:after,a.inline-link:hover:after,a.inline-link:focus:after,a.inline-link:active:after,p>a:hover:after,p>a:focus:after,p>a:active:after,.subtitle a:hover:after,.subtitle a:focus:after,.subtitle a:active:after,.breadcrumb a:hover:after,.breadcrumb a:focus:after,.breadcrumb a:active:after{width:100%}.inline-link:hover>*,.inline-link:focus>*,.inline-link:active>*{transition:var(--transition);color:var(--secondary-color)!important}.inline-link:after,a.inline-link:after,p>a:after,.subtitle a:after,.breadcrumb a:after{content:"";background-color:var(--secondary-color);width:0;height:1px;transition:var(--transition);opacity:.5;display:block;position:relative;bottom:.37em}button{cursor:pointer;border:0;border-radius:0}input,textarea{border-radius:0;outline:0}input:focus,textarea:focus{outline:0}input:focus::placeholder,input:active::placeholder,textarea:focus::placeholder,textarea:active::placeholder{opacity:.5}p{margin:0 0 15px}p>code{background-color:var(--secondary-bg);color:var(--white);font-size:var(--fz-sm);border-radius:var(--border-radius);padding:.3em .5em}ul.fancy-list{font-size:var(--fz-lg);margin:0;padding:0;list-style:none}ul.fancy-list li{margin-bottom:10px;padding-left:30px;position:relative}ul.fancy-list li:before{content:"▹";color:var(--secondary-color);position:absolute;left:0}blockquote{border-left-color:var(--secondary-color);border-left-style:solid;border-left-width:1px;margin-left:0;margin-right:0;padding-left:1.5rem}blockquote p{font-size:24px;font-style:italic}hr{background-color:var(--tertiary-bg);border-width:0;border-style:initial;border-color:initial;border-image:initial;height:1px;margin:1rem}code{font-family:var(--font-mono);font-size:var(--fz-md)}.skip-to-content{color:var(--secondary-color);border:1px solid var(--secondary-color);border-radius:var(--border-radius);font-size:var(--fz-xs);font-family:var(--font-mono);cursor:pointer;transition:var(--transition);z-index:-99;background-color:#0000;width:1px;height:1px;padding:1.25rem 1.75rem;line-height:1;text-decoration:none;position:absolute;top:auto;left:-999px;overflow:hidden}.skip-to-content:hover,.skip-to-content:focus,.skip-to-content:active{background-color:var(--secondary-overlay-color);outline:none}.skip-to-content:focus,.skip-to-content:active{background-color:var(--secondary-color);color:var(--navy);z-index:99;width:auto;height:auto;top:0;left:0;overflow:auto}#logo{color:var(--secondary-color)}.overline{color:var(--secondary-color);font-family:var(--font-mono);font-size:var(--fz-md);font-weight:400}.subtitle{color:var(--secondary-color);font-size:var(--fz-md);font-family:var(--font-mono);margin:0 0 20px;font-weight:400;line-height:1.5}@media (width<=1080px){.subtitle{font-size:var(--fz-sm)}}@media (width<=768px){.subtitle{font-size:var(--fz-xs)}}.subtitle a{line-height:1.5}.breadcrumb{color:var(--secondary-color);align-items:center;margin-bottom:50px;display:flex}.breadcrumb .arrow{margin-right:10px;padding-top:4px;display:block}.breadcrumb a{font-family:var(--font-mono);font-size:var(--fz-sm);text-transform:uppercase;letter-spacing:.1em;font-weight:600;line-height:1.5}.tags-link{color:var(--tertiary-text);width:fit-content;margin-left:auto;display:block}html{scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) var(--primary-bg)}body::-webkit-scrollbar{width:12px}body::-webkit-scrollbar-track{background:var(--primary-bg)}body::-webkit-scrollbar-thumb{background-color:var(--scroll-thumb);border:3px solid var(--primary-bg);border-radius:10px}html[data-theme=Dark]{--backdrop-bg:var(--dark-navy);--primary-bg:var(--navy);--secondary-bg:var(--light-navy);--tertiary-bg:var(--lightest-navy);--primary-shadow:var(--navy-shadow);--scroll-thumb:var(--dark-slate);--primary-text:var(--slate);--secondary-text:var(--light-slate);--tertiary-text:var(--lightest-slate);--overlay-text:var(--white);--secondary-color:var(--green);--secondary-overlay-color:var(--green-tint);--nav-color:#0a192fd9;--selection-bg:var(--tertiary-bg)}html[data-theme=Light]{--white:#fff;--backdrop-bg:var(--grey);--primary-bg:var(--white);--secondary-bg:var(--blue-grey);--tertiary-bg:var(--blue-dark-grey);--primary-shadow:var(--navy-shadow);--scroll-thumb:var(--dark-slate);--primary-text:var(--dark-blue);--secondary-text:var(--light-blue);--tertiary-text:var(--lightest-blue);--overlay-text:var(--reddish-black);--secondary-color:var(--dark-green);--secondary-overlay-color:var(--green-tint);--nav-color:var(--white);--selection-bg:#a8c3e9}.flex-center{justify-content:center;align-items:center;display:flex}.flex-between{justify-content:space-between;align-items:center;display:flex}.link{text-decoration-skip-ink:auto;color:inherit;transition:var(--transition);text-decoration:none;display:inline-block;position:relative}.link:hover,.link:active,.link:focus{color:var(--secondary-color);outline:0}.btn,.btn-sm,.btn-lg{color:var(--secondary-color);border:1px solid var(--secondary-color);border-radius:var(--border-radius);font-family:var(--font-mono);cursor:pointer;transition:var(--transition);background-color:#0000;line-height:1;text-decoration:none}.btn{font-size:var(--fz-xs);padding:1.25rem 1.75rem}.btn-sm{font-size:var(--fz-xs);padding:.75rem 1rem}.btn-lg{font-size:var(--fz-sm);padding:1.25rem 1.75rem}.btn:hover,.btn:focus,.btn:active,.btn-sm:hover,.btn-sm:focus,.btn-sm:active,.btn-lg:hover,.btn-lg:focus,.btn-lg:active{background-color:var(--secondary-overlay-color);outline:none}.btn:after,.btn-sm:after,.btn-lg:after{display:none!important}.btn-link{color:var(--secondary-text);cursor:pointer;background-color:#0000;border:none}.btn-link:hover,.btn-link:focus,.btn-link:active{color:var(--secondary-color);outline:0}.btn-link:hover>*,.btn-link:focus>*,.btn-link:active>*{transition:var(--transition);color:var(--secondary-color)!important}.theme-button{color:var(--secondary-text);cursor:pointer;background-color:#0000;border:none;margin-left:2rem;line-height:0}.theme-button:hover,.theme-button:focus{color:var(--secondary-color);outline:0}.theme-button svg{width:32px;height:32px}.box-shadow{box-shadow:0 10px 30px -15px var(--primary-shadow);transition:var(--transition)}.box-shadow:hover,.box-shadow:focus{box-shadow:0 20px 30px -15px var(--primary-shadow)}.hide-on-mobile{display:none}@media (width>=769px){.hide-on-mobile{display:table-cell}}.fadeup,.fadedown,.fadefade{opacity:0}.fadeup{transform:translateY(20px)}.fadedown{transform:translateY(-20px)}.fadeup.is-enter,.fadedown.is-enter,.fadefade.is-enter{opacity:1;transition:opacity .3s var(--easing), transform .3s var(--easing);transform:translateY(0)}@media (prefers-reduced-motion:no-preference){.reveal{opacity:0;transform:translateY(20px)}.reveal.is-visible{opacity:1;transition:opacity .5s var(--easing), transform .5s var(--easing);transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.reveal.is-visible{opacity:1;transform:none}}.gatsby-highlight{color:#a2aabc;border-radius:var(--border-radius);font-family:var(--font-mono);font-size:var(--fz-md);background-color:#112340;margin:2em 0;padding:1.25em;position:relative;overflow:auto}.gatsby-highlight code[class*=language-],.gatsby-highlight pre[class*=language-]{font-size:var(--fz-sm);white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:2;hyphens:none;line-height:1.5;height:auto!important}.gatsby-highlight pre[class*=language-]{overflow:initial;float:left;background-color:#0000;min-width:100%;margin:0;padding:2em 0 0}.gatsby-code-title{font-family:var(--font-mono);font-size:var(--fz-xs);color:#a2aabc;border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);background-color:#112340;border-bottom:1px solid #1d2d50;padding:1em 1.5em}.gatsby-code-title+.gatsby-highlight{border-top-left-radius:0;border-top-right-radius:0;margin-top:0}.gatsby-highlight-code-line{border-left:2px solid var(--secondary-color);background-color:#1d2d50;margin-left:-1.35em;margin-right:-1.35em;padding-left:calc(1em + 2px);padding-right:1em;display:block}.gatsby-highlight pre[class*=language-]:before{background:var(--tertiary-bg);color:var(--white);font-size:var(--fz-xxs);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;border-radius:0 0 3px 3px;padding:.25rem .5rem;line-height:1.5;position:absolute;top:0;left:1.25rem}.gatsby-highlight pre[class=language-javascript]:before,.gatsby-highlight pre[class=language-js]:before{content:"js"}.gatsby-highlight pre[class=language-jsx]:before{content:"jsx"}.gatsby-highlight pre[class=language-graphql]:before{content:"GraphQL"}.gatsby-highlight pre[class=language-html]:before{content:"html"}.gatsby-highlight pre[class=language-css]:before{content:"css"}.gatsby-highlight pre[class=language-mdx]:before{content:"mdx"}.gatsby-highlight pre[class=language-shell]:before{content:"shell"}.gatsby-highlight pre[class=language-sh]:before{content:"sh"}.gatsby-highlight pre[class=language-bash]:before{content:"bash"}.gatsby-highlight pre[class=language-yaml]:before{content:"yaml"}.gatsby-highlight pre[class=language-markdown]:before{content:"md"}.gatsby-highlight pre[class=language-json]:before,.gatsby-highlight pre[class=language-json5]:before{content:"json"}.gatsby-highlight pre[class=language-diff]:before{content:"diff"}.gatsby-highlight pre[class=language-text]:before{content:"text"}.gatsby-highlight pre[class=language-flow]:before{content:"flow"}.token{display:inline}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#8695b799}.token.punctuation{color:#a2aabc}.token.namespace,.token.deleted{color:#ef6b73}.token.function-name,.token.function,.token.class-name,.token.constant,.token.symbol{color:#ffd580}.token.attr-name,.token.operator,.token.rule{color:#ffae57}.token.keyword,.token.boolean,.token.number,.token.property{color:#c3a6ff}.token.tag,.token.selector,.token.important,.token.atrule,.token.builtin,.token.entity,.token.url{color:#5ccfe6}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable,.token.inserted{color:#bae67e}.token.important,.token.bold{font-weight:600}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}
