@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(*),[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}.side-element[data-astro-cid-fvhemjle]{z-index:10;width:40px;color:var(--lightslate);position:fixed;bottom:0;left:40px;right:auto}@media (width<=1080px){.side-element[data-astro-cid-fvhemjle]{left:20px}}@media (width<=768px){.side-element[data-astro-cid-fvhemjle]{display:none}}.social-list[data-astro-cid-fvhemjle]{flex-direction:column;align-items:center;margin:0;padding:0;list-style:none;display:flex}.social-list[data-astro-cid-fvhemjle]:after{content:"";background-color:var(--lightslate);width:1px;height:90px;margin:0 auto;display:block}.social-list[data-astro-cid-fvhemjle] li[data-astro-cid-fvhemjle]:last-of-type{margin-bottom:20px}.social-list[data-astro-cid-fvhemjle] li[data-astro-cid-fvhemjle] a[data-astro-cid-fvhemjle]{transition:var(--transition);padding:10px;display:inline-block}.social-list[data-astro-cid-fvhemjle] li[data-astro-cid-fvhemjle] a[data-astro-cid-fvhemjle]:hover,.social-list[data-astro-cid-fvhemjle] li[data-astro-cid-fvhemjle] a[data-astro-cid-fvhemjle]:focus{transform:translateY(-3px)}.social-list[data-astro-cid-fvhemjle] li[data-astro-cid-fvhemjle] a[data-astro-cid-fvhemjle] svg{width:20px;height:20px}.side-element[data-astro-cid-l6jsjob7].right{z-index:10;width:40px;color:var(--lightslate);position:fixed;bottom:0;left:auto;right:40px}@media (width<=1080px){.side-element[data-astro-cid-l6jsjob7].right{right:20px}}@media (width<=768px){.side-element[data-astro-cid-l6jsjob7].right{display:none}}.email-wrapper[data-astro-cid-l6jsjob7]{flex-direction:column;align-items:center;display:flex;position:relative}.email-wrapper[data-astro-cid-l6jsjob7]:after{content:"";background-color:var(--lightslate);width:1px;height:90px;margin:0 auto;display:block}.email-wrapper[data-astro-cid-l6jsjob7] a[data-astro-cid-l6jsjob7]{font-family:var(--font-mono);font-size:var(--fz-xxs);line-height:var(--fz-lg);letter-spacing:.1em;writing-mode:vertical-rl;transition:var(--transition);margin:20px auto;padding:10px}.email-wrapper[data-astro-cid-l6jsjob7] a[data-astro-cid-l6jsjob7]:hover,.email-wrapper[data-astro-cid-l6jsjob7] a[data-astro-cid-l6jsjob7]:focus{transform:translateY(-3px)}.styled-footer[data-astro-cid-jo6i4kqk]{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:auto;min-height:70px;padding:15px;display:flex}.social-links[data-astro-cid-jo6i4kqk]{display:none}@media (width<=768px){.social-links[data-astro-cid-jo6i4kqk]{width:100%;max-width:270px;color:var(--lightslate);margin:0 auto 10px;display:block}}.social-links[data-astro-cid-jo6i4kqk] ul[data-astro-cid-jo6i4kqk]{justify-content:space-between;align-items:center;margin:0;padding:0;list-style:none;display:flex}.social-links[data-astro-cid-jo6i4kqk] ul[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{padding:10px}.social-links[data-astro-cid-jo6i4kqk] ul[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk] svg{width:20px;height:20px}.credit[data-astro-cid-jo6i4kqk]{color:var(--lightslate);font-family:var(--font-mono);font-size:var(--fz-xxs);line-height:1}.credit[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{padding:10px}@font-face{font-family:Calibre;src:url(/_s/a/BF8rtuU2.woff2)format("woff2"),url(/_s/a/-1hlrhWf.woff)format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Calibre;src:url(/_s/a/Dr3uPw4d.woff2)format("woff2"),url(/_s/a/CLLEtnc8.woff)format("woff");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Calibre;src:url(/_s/a/ctWswtER.woff2)format("woff2"),url(/_s/a/4458Tx-4.woff)format("woff");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Calibre;src:url(/_s/a/iX0Te0iB.woff2)format("woff2"),url(/_s/a/CjzLnpHV.woff)format("woff");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Calibre;src:url(/_s/a/bP60ilMe.woff2)format("woff2"),url(/_s/a/BO9nraGd.woff)format("woff");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Calibre;src:url(/_s/a/bSpOXIzM.woff2)format("woff2"),url(/_s/a/27xyafhv.woff)format("woff");font-weight:600;font-style:italic;font-display:swap}@font-face{font-family:SF Mono;src:url(/_s/a/CefSygqP.woff2)format("woff2"),url(/_s/a/pHQ7OiT5.woff)format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:SF Mono;src:url(/_s/a/Cbwo1XB1.woff2)format("woff2"),url(/_s/a/GntYHmax.woff)format("woff");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:SF Mono;src:url(/_s/a/Bqi1mbuH.woff2)format("woff2"),url(/_s/a/D-2lWrQW.woff)format("woff");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:SF Mono;src:url(/_s/a/dYysnNTL.woff2)format("woff2"),url(/_s/a/DwkXiFFS.woff)format("woff");font-weight:600;font-style:italic;font-display:swap}:root{--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{box-sizing:border-box;scroll-behavior:smooth;width:100%}*,:before,:after{box-sizing:inherit}::selection{background-color:var(--lightestnavy);color:var(--lightestslate)}[data-theme=light] ::selection{background-color:var(--highlight);color:#f8fafc}:focus{outline:2px dashed var(--highlight);outline-offset:3px}:focus:not(:focus-visible){outline-offset:0px;outline:none}:focus-visible{outline:2px dashed var(--highlight);outline-offset:3px}html{scrollbar-width:thin;scrollbar-color:var(--darkslate) var(--navy)}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:var(--navy)}::-webkit-scrollbar-thumb{background-color:var(--darkslate);border:3px solid var(--navy);border-radius:10px}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;background-color:var(--navy);width:100%;min-height:100%;color:var(--slate);font-family:var(--font-sans);font-size:var(--fz-xl);margin:0;line-height:1.5;overflow-x:hidden}@media (width<=480px){body{font-size:var(--fz-lg)}}body.theme-ready{transition:background-color .3s,color .3s}body.hidden,body.blur{overflow:hidden}body.blur header{background-color:#0000}#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(--lightestslate);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)}main{counter-reset:section}.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(--highlight);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(--lightestnavy);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(--highlight)}a.inline-link,p>a{text-decoration-skip-ink:auto;transition:var(--transition);color:var(--highlight);text-decoration:none;display:inline-block;position:relative}a.inline-link:hover,a.inline-link:focus-visible,p>a:hover,p>a:focus-visible{color:var(--highlight);outline:0}a.inline-link:hover:after,a.inline-link:focus-visible:after,p>a:hover:after,p>a:focus-visible:after{width:100%}a.inline-link:hover>*,a.inline-link:focus-visible>*,p>a:hover>*,p>a:focus-visible>*{transition:var(--transition);color:var(--highlight)!important}a.inline-link:after,p>a:after{content:"";background-color:var(--highlight);opacity:.5;width:0;height:1px;display:block;position:relative;bottom:.37em}@media (prefers-reduced-motion:no-preference){a.inline-link:after,p>a:after{transition:var(--transition)}}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:last-child,p:last-of-type{margin:0}p>code{background-color:var(--lightnavy);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(--highlight);position:absolute;left:0}blockquote{border-left-color:var(--highlight);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(--lightestnavy);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(--highlight);border:1px solid var(--highlight);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{background-color:var(--highlight);color:var(--navy);z-index:99;width:auto;height:auto;box-shadow:none;top:0;left:0;overflow:auto;transform:none}#logo{color:var(--highlight)}.overline{color:var(--highlight);font-family:var(--font-mono);font-size:var(--fz-md);font-weight:400}.subtitle{color:var(--highlight);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{text-decoration-skip-ink:auto;transition:var(--transition);color:var(--highlight);line-height:1.5;text-decoration:none;display:inline-block;position:relative}.subtitle a:hover:after,.subtitle a:focus-visible:after{width:100%}.subtitle a:after{content:"";background-color:var(--highlight);opacity:.5;width:0;height:1px;transition:var(--transition);display:block;position:relative;bottom:.37em}.breadcrumb{color:var(--highlight);align-items:center;margin-bottom:50px;display:flex}.breadcrumb .arrow{margin-right:10px;padding-top:4px;display:block}.breadcrumb a{text-decoration-skip-ink:auto;transition:var(--transition);color:var(--highlight);font-family:var(--font-mono);font-size:var(--fz-sm);text-transform:uppercase;letter-spacing:.1em;font-weight:600;line-height:1.5;text-decoration:none;display:inline-block;position:relative}.breadcrumb a:hover:after,.breadcrumb a:focus-visible:after{width:100%}.breadcrumb a:after{content:"";background-color:var(--highlight);opacity:.5;width:0;height:1px;transition:var(--transition);display:block;position:relative;bottom:.37em}.btn{color:var(--highlight);border:1px solid var(--highlight);border-radius:var(--border-radius);font-size:var(--fz-xs);font-family:var(--font-mono);cursor:pointer;transition:var(--transition);background-color:#0000;padding:1.25rem 1.75rem;line-height:1;text-decoration:none}.btn:hover,.btn:focus-visible{box-shadow:4px 4px 0 0 var(--highlight);outline:none;transform:translate(-5px,-5px)}.btn:after{display:none!important}.btn-small{color:var(--highlight);border:1px solid var(--highlight);border-radius:var(--border-radius);font-size:var(--fz-xs);font-family:var(--font-mono);cursor:pointer;transition:var(--transition);background-color:#0000;padding:.75rem 1rem;line-height:1;text-decoration:none}.btn-small:hover,.btn-small:focus-visible{box-shadow:3px 3px 0 0 var(--highlight);outline:none;transform:translate(-4px,-4px)}.btn-small:after{display:none!important}.btn-big{color:var(--highlight);border:1px solid var(--highlight);border-radius:var(--border-radius);font-size:var(--fz-sm);font-family:var(--font-mono);cursor:pointer;transition:var(--transition);background-color:#0000;padding:1.25rem 1.75rem;line-height:1;text-decoration:none}.btn-big:hover,.btn-big:focus-visible{box-shadow:4px 4px 0 0 var(--highlight);outline:none;transform:translate(-5px,-5px)}.btn-big:after{display:none!important}.search-bar{width:100%;max-width:600px;margin:0 auto 40px}.search-bar input{appearance:none;background-color:var(--navy);border:1px solid var(--darkslate);border-radius:var(--border-radius);color:var(--lightslate);font-size:var(--fz-lg);outline:none;width:100%;padding:12px 15px;line-height:1.25;transition:border-color .3s ease-in-out}.search-bar input:focus{border-color:var(--highlight);background-color:var(--lightnavy)}.search-bar input::placeholder{color:var(--slate)}:root,[data-theme=dark]{--darknavy:#020c1b;--navy:#0a192f;--lightnavy:#112240;--lightestnavy:#233554;--navyshadow:#020c1bb3;--darkslate:#495670;--slate:#8892b0;--lightslate:#a8b2d1;--lightestslate:#ccd6f6;--white:#e6f1ff;--highlight:#1f6feb;--highlight-tint:#1f6feb1a;--pink:#f57dff;--blue:#57cbff;--feature-img-before-bg:#0a192f}[data-theme=light]{--darknavy:#e2e8f0;--navy:#f8fafc;--lightnavy:#f1f5f9;--lightestnavy:#e2e8f0;--navyshadow:#0f172a14;--darkslate:#0f172a;--slate:#334155;--lightslate:#64748b;--lightestslate:#0f172a;--white:#1e293b;--highlight:#2563eb;--highlight-tint:#2563eb1a;--pink:#c026d3;--blue:#0284c7;--feature-img-before-bg:#f8fafcb3}.fadeup-enter{opacity:.01;transition:opacity .3s var(--easing), transform .3s var(--easing);transform:translateY(20px)}.fadeup-enter-active{opacity:1;transition:opacity .3s var(--easing), transform .3s var(--easing);transform:translateY(0)}.fadedown-enter{opacity:.01;transition:opacity .3s var(--easing), transform .3s var(--easing);transform:translateY(-20px)}.fadedown-enter-active{opacity:1;transition:opacity .3s var(--easing), transform .3s var(--easing);transform:translateY(0)}.fade-enter{opacity:0}.fade-enter-active{opacity:1;transition:opacity .3s var(--easing)}.fade-exit{opacity:1}.fade-exit-active{opacity:0;transition:opacity .3s var(--easing)}@media (prefers-reduced-motion:no-preference){[data-sr]{opacity:0;transition:opacity .5s var(--easing), transform .5s var(--easing);transform:translateY(20px)}[data-sr].sr-visible{opacity:1;transform:translateY(0)}.hero-animate>*{opacity:0;transition:opacity .3s var(--easing), transform .3s var(--easing);transform:translateY(20px)}.hero-animate.hero-visible>*{opacity:1;transform:translateY(0)}.hero-animate.hero-visible>:first-child{transition-delay:.1s}.hero-animate.hero-visible>:nth-child(2){transition-delay:.2s}.hero-animate.hero-visible>:nth-child(3){transition-delay:.3s}.hero-animate.hero-visible>:nth-child(4){transition-delay:.4s}.hero-animate.hero-visible>:nth-child(5){transition-delay:.5s}.side-element.side-home{opacity:0;transition:opacity .3s var(--easing);transition-delay:2s}.side-element.side-home.side-visible{opacity:1}}.astro-code{border-radius:var(--border-radius);font-family:var(--font-mono);font-size:var(--fz-md);margin:2em 0;padding:1.25em;position:relative;overflow:auto}.astro-code code{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}[data-theme=dark] .astro-code,[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}.astro-code:before{background:var(--lightestnavy);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}.astro-code[data-language=javascript]:before,.astro-code[data-language=js]:before{content:"js"}.astro-code[data-language=jsx]:before{content:"jsx"}.astro-code[data-language=typescript]:before,.astro-code[data-language=ts]:before{content:"ts"}.astro-code[data-language=tsx]:before{content:"tsx"}.astro-code[data-language=graphql]:before{content:"GraphQL"}.astro-code[data-language=html]:before{content:"html"}.astro-code[data-language=css]:before{content:"css"}.astro-code[data-language=mdx]:before{content:"mdx"}.astro-code[data-language=shell]:before{content:"shell"}.astro-code[data-language=sh]:before{content:"sh"}.astro-code[data-language=bash]:before{content:"bash"}.astro-code[data-language=yaml]:before{content:"yaml"}.astro-code[data-language=markdown]:before,.astro-code[data-language=md]:before{content:"md"}.astro-code[data-language=json]:before,.astro-code[data-language=json5]:before{content:"json"}.astro-code[data-language=diff]:before{content:"diff"}.astro-code[data-language=text]:before{content:"text"}.astro-code[data-language=flow]:before{content:"flow"}.astro-code[data-language=go]:before{content:"go"}.astro-code[data-language=python]:before,.astro-code[data-language=py]:before{content:"python"}.astro-code[data-language=astro]:before{content:"astro"}.astro-code[data-language=dockerfile]:before{content:"docker"}.astro-code[data-language=sql]:before{content:"sql"}.astro-code[data-language=php]:before{content:"php"}.astro-code[data-language=ruby]:before,.astro-code[data-language=rb]:before{content:"ruby"}.astro-code[data-language=rust]:before,.astro-code[data-language=rs]:before{content:"rust"}.astro-code[data-language=toml]:before{content:"toml"}:not(pre)>code{font-size:var(--fz-sm);line-height:1.5}.styled-content{flex-direction:column;min-height:100vh;display:flex}.nav-header{z-index:11;width:100%;height:var(--nav-height);background-color:var(--navy);backdrop-filter:blur(10px);transition:var(--transition);justify-content:space-between;align-items:center;padding:0 50px;display:flex;position:fixed;top:0;filter:none!important;pointer-events:auto!important;user-select:auto!important}@media (width<=1080px){.nav-header{padding:0 40px}}@media (width<=768px){.nav-header{padding:0 25px}}@media (prefers-reduced-motion:no-preference){.nav-header.scroll-up{height:var(--nav-scroll-height);background-color:var(--darknavy);box-shadow:0 10px 30px -10px var(--navyshadow);transform:translateY(0)}.nav-header.scroll-down{height:var(--nav-scroll-height);transform:translateY(calc(var(--nav-scroll-height) * -1));box-shadow:0 10px 30px -10px var(--navyshadow)}}.nav-inner{width:100%;color:var(--lightestslate);font-family:var(--font-mono);counter-reset:item 0;z-index:12;justify-content:space-between;align-items:center;display:flex;position:relative}.nav-inner .logo{justify-content:center;align-items:center;display:flex}.nav-inner .logo a{color:var(--highlight);width:42px;height:42px}.nav-inner .logo a:hover svg,.nav-inner .logo a:focus svg{fill:var(--highlight-tint)}.nav-inner .logo a svg{fill:none;transition:var(--transition);user-select:none}.search-trigger{border:1px solid var(--lightestnavy);border-radius:var(--border-radius);color:var(--slate);font-family:var(--font-mono);font-size:var(--fz-xxs);cursor:pointer;transition:var(--transition);white-space:nowrap;background-color:#0000;align-items:center;gap:8px;padding:6px 12px;display:flex}.search-trigger:hover,.search-trigger:focus-visible{border-color:var(--highlight);color:var(--highlight)}.search-trigger svg{width:16px;height:16px;color:var(--highlight);flex-shrink:0}.search-trigger-kbd{font-family:var(--font-mono);font-size:var(--fz-xxs);border:1px solid var(--lightestnavy);background-color:var(--lightnavy);color:var(--slate);border-radius:3px;padding:2px 6px;line-height:1}@media (width<=768px){.search-trigger{border:none;justify-content:center;gap:0;width:36px;height:36px;padding:0}.search-trigger svg{width:20px;height:20px}.search-trigger-text,.search-trigger-kbd{display:none}}.dark-mode-toggle{cursor:pointer;background-color:#0000;border:none;justify-content:center;align-items:center;width:36px;height:36px;padding:0;display:flex}.dark-mode-toggle>svg{width:20px;height:20px;color:var(--highlight)}.nav-links{align-items:center;display:flex}@media (width<=768px){.nav-links{display:none}}.nav-links ol{justify-content:space-between;align-items:center;margin:0;padding:0;list-style:none;display:flex}.nav-links ol li{counter-increment:item 1;font-size:var(--fz-xs);margin:0 5px;position:relative}.nav-links ol li a{padding:10px}.nav-links ol li a:before{content:"0" counter(item) ".";color:var(--highlight);font-size:var(--fz-xxs);text-align:right;margin-right:5px}.nav-actions{align-items:center;gap:8px;display:flex}.menu-container{display:none}@media (width<=768px){.menu-container{display:block}}.hamburger-button{display:none}@media (width<=768px){.hamburger-button{z-index:10;color:inherit;text-transform:none;cursor:pointer;background-color:#0000;border:0;justify-content:center;align-items:center;margin-right:-15px;padding:15px;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;display:flex;position:relative}}.ham-box{width:var(--hamburger-width);height:24px;display:inline-block;position:relative}.ham-box-inner{width:var(--hamburger-width);border-radius:var(--border-radius);background-color:var(--highlight);height:2px;transition:transform .22s cubic-bezier(.55,.055,.675,.19);position:absolute;top:50%;right:0;transform:rotate(0)}.hamburger-button.active .ham-box-inner{transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1);transform:rotate(225deg)}.ham-box-inner:before,.ham-box-inner:after{content:"";width:var(--hamburger-width);background-color:var(--highlight);border-radius:4px;height:2px;transition-property:transform;transition-duration:.15s;transition-timing-function:ease;display:block;position:absolute;left:auto;right:0}.ham-box-inner:before{opacity:1;width:120%;transition:var(--ham-before);top:-10px}.hamburger-button.active .ham-box-inner:before{opacity:0;width:100%;transition:var(--ham-before-active);top:0}.ham-box-inner:after{width:80%;transition:var(--ham-after);bottom:-10px;transform:rotate(0)}.hamburger-button.active .ham-box-inner:after{width:100%;transition:var(--ham-after-active);bottom:0;transform:rotate(-90deg)}.sidebar{display:none}@media (width<=768px){.sidebar{background-color:var(--lightnavy);width:min(75vw,400px);height:100vh;box-shadow:-10px 0px 30px -15px var(--navyshadow);z-index:9;visibility:hidden;transition:var(--transition);outline:0;justify-content:center;align-items:center;padding:50px 10px;display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100vw)}.sidebar.open{visibility:visible;transform:translate(0)}}.sidebar nav{width:100%;color:var(--lightestslate);font-family:var(--font-mono);text-align:center;flex-direction:column;justify-content:space-between;align-items:center;display:flex}.sidebar ol{width:100%;margin:0;padding:0;list-style:none}.sidebar ol li{counter-increment:item 1;font-size:clamp(var(--fz-sm), 4vw, var(--fz-lg));margin:0 auto 20px;position:relative}@media (width<=600px){.sidebar ol li{margin:0 auto 10px}}.sidebar ol li:before{content:"0" counter(item) ".";color:var(--highlight);font-size:var(--fz-sm);margin-bottom:5px;display:block}.sidebar ol li a{width:100%;padding:3px 20px 20px}body.blur{overflow:hidden}body.blur #content>*{filter:blur(5px)brightness(.7);transition:var(--transition);pointer-events:none;user-select:none}.jobs-section{max-width:700px}.jobs-inner{display:flex}@media (width<=600px){.jobs-inner{display:block}}@media (width>=700px){.jobs-inner{min-height:300px}}.tab-list{z-index:3;width:max-content;margin:0;padding:0;list-style:none;position:relative}@media (width<=600px){.tab-list{width:calc(100% + 100px);margin-bottom:30px;margin-left:-50px;padding-left:50px;display:flex;overflow-x:auto}}@media (width<=480px){.tab-list{width:calc(100% + 50px);margin-left:-25px;padding-left:25px}}.tab-button{width:100%;height:var(--tab-height);border-left:2px solid var(--lightestnavy);color:var(--slate);font-family:var(--font-mono);font-size:var(--fz-xs);text-align:left;white-space:nowrap;cursor:pointer;transition:var(--transition);background-color:#0000;border-top:0;border-bottom:0;border-right:0;align-items:center;padding:0 20px 2px;display:flex}.tab-button.active{color:var(--highlight)}.tab-button:hover,.tab-button:focus{background-color:var(--lightnavy)}@media (width<=768px){.tab-button{padding:0 15px 2px}}@media (width<=600px){.tab-button{border-left:0;border-bottom:2px solid var(--lightestnavy);text-align:center;justify-content:center;align-items:center;min-width:120px;padding:0 15px;display:flex}}.tab-highlight{z-index:10;width:2px;height:var(--tab-height);border-radius:var(--border-radius);background:var(--highlight);transition:transform .25s cubic-bezier(.645,.045,.355,1) .1s;position:absolute;top:0;left:0}@media (width<=600px){.tab-highlight{width:100%;max-width:var(--tab-width);height:2px;margin-left:50px;top:auto;bottom:0}}@media (width<=480px){.tab-highlight{margin-left:25px}}.tab-content{flex-direction:column;width:100%;margin-left:20px;display:flex;position:relative}@media (width<=600px){.tab-content{margin-left:0}}.tab-panels{width:100%;margin-left:20px;position:relative}@media (width<=600px){.tab-panels{margin-left:0}}.tab-panel{width:100%;height:auto;padding:10px 5px}.tab-panel .job-description{font-size:var(--fz-md)}.tab-panel h3{font-size:var(--fz-xxl);margin-bottom:2px;font-weight:500;line-height:1.3}.tab-panel h3 .company{color:var(--highlight)}.tab-panel .range{color:var(--lightslate);font-family:var(--font-mono);font-size:var(--fz-xs);margin-bottom:25px}.jobs-section .archive-link{width:100%;font-family:var(--font-mono);font-size:var(--fz-md);justify-content:flex-end;align-items:center;margin-top:auto;padding-top:20px;display:flex}.jobs-section .archive-link:before{content:"";background-color:var(--lightestnavy);flex-grow:1;height:1px;margin-right:20px;display:block}.other-projects-section{flex-direction:column;align-items:center;display:flex}.other-projects-section h2{font-size:clamp(24px, 5vw, var(--fz-heading))}.other-projects-section .archive-link{font-family:var(--font-mono);font-size:var(--fz-sm)}.projects-grid{grid-gap:15px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));margin:50px 0 0;padding:0;list-style:none;display:grid;position:relative}@media (width<=1080px){.projects-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}}.more-button{margin:80px auto 0}.view-projects-button{margin:20px auto 0}.project-card{cursor:default;transition:var(--transition);position:relative}@media (prefers-reduced-motion:no-preference){.project-card:hover .project-inner,.project-card:focus-within .project-inner{transform:translateY(-7px)}}.project-card a{z-index:1;position:relative}.project-card .project-inner{box-shadow:0 10px 30px -15px var(--navyshadow);border-radius:var(--border-radius);background-color:var(--lightnavy);height:100%;transition:var(--transition);flex-direction:column;justify-content:space-between;align-items:flex-start;padding:2rem 1.75rem;display:flex;position:relative;overflow:auto}.project-card .project-top{justify-content:space-between;margin-bottom:35px;display:flex}.project-card .folder{color:var(--highlight)}.project-card .folder svg{width:40px;height:40px}.project-card .project-links{color:var(--lightslate);align-items:center;margin-right:-10px;display:flex}.project-card .project-links a{justify-content:center;align-items:center;padding:5px 7px;display:flex}.project-card .project-links a.external svg{width:22px;height:22px;margin-top:-4px}.project-card .project-links a svg{width:20px;height:20px}.project-card .project-title{color:var(--lightestslate);font-size:var(--fz-xxl);margin:0 0 10px}.project-card .project-title a{position:static}.project-card .project-title a:before{content:"";z-index:0;width:100%;height:100%;display:block;position:absolute;top:0;left:0}.project-card .project-description{color:var(--lightslate);font-size:17px}.project-card .project-tech-list{flex-wrap:wrap;flex-grow:1;align-items:flex-end;margin:20px 0 0;padding:0;list-style:none;display:flex}.project-card .project-tech-list li{font-family:var(--font-mono);font-size:var(--fz-xxs);line-height:1.75}.project-card .project-tech-list li:not(:last-of-type){margin-right:15px}.search-modal{border-radius:var(--border-radius);background-color:var(--navy);color:var(--slate);border:none;width:90vw;max-width:640px;max-height:80vh;padding:0;overflow:hidden;box-shadow:0 20px 60px -10px #00000080}.search-modal::backdrop{backdrop-filter:blur(4px);background-color:#0009}.search-modal-content{flex-direction:column;max-height:80vh;display:flex}.search-modal-header{border-bottom:1px solid var(--lightestnavy);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.search-modal-title{font-family:var(--font-mono);font-size:var(--fz-sm);color:var(--lightestslate);font-weight:600}.search-modal-close{cursor:pointer;background:0 0;border:none;padding:0}.search-modal-close kbd{font-family:var(--font-mono);font-size:var(--fz-xxs);border:1px solid var(--lightestnavy);background-color:var(--lightnavy);color:var(--slate);border-radius:3px;padding:3px 8px}.search-modal-body{flex:1;padding:16px 20px;overflow-y:auto}.search-modal-message{color:var(--slate);font-family:var(--font-mono);font-size:var(--fz-sm);text-align:center;padding:40px 20px}.search-modal-message code{background-color:var(--lightnavy);font-size:var(--fz-xs);border-radius:3px;padding:2px 6px}.search-modal .pagefind-ui{--pagefind-ui-scale:.9;--pagefind-ui-primary:var(--highlight);--pagefind-ui-text:var(--lightslate);--pagefind-ui-background:var(--lightnavy);--pagefind-ui-border:var(--lightestnavy);--pagefind-ui-tag:var(--lightnavy);--pagefind-ui-border-width:1px;--pagefind-ui-border-radius:4px;--pagefind-ui-font:var(--font-sans)}.search-modal .pagefind-ui .pagefind-ui__search-input{color:var(--lightestslate);background-color:var(--lightnavy);font-family:var(--font-sans)}.search-modal .pagefind-ui .pagefind-ui__search-input::placeholder{color:var(--darkslate)}.search-modal .pagefind-ui .pagefind-ui__form:before{background-color:var(--slate)}.search-modal .pagefind-ui .pagefind-ui__search-clear{color:var(--slate);font-family:var(--font-mono);font-size:var(--fz-xs)}.search-modal .pagefind-ui .pagefind-ui__result{border-top:1px solid var(--lightestnavy);padding:12px 0}.search-modal .pagefind-ui .pagefind-ui__result-link{color:var(--lightestslate);font-family:var(--font-sans);font-size:var(--fz-lg);font-weight:600}.search-modal .pagefind-ui .pagefind-ui__result-link:hover{color:var(--highlight)}.search-modal .pagefind-ui .pagefind-ui__result-excerpt{color:var(--slate);font-family:var(--font-sans);font-size:var(--fz-sm);line-height:1.6}.search-modal .pagefind-ui .pagefind-ui__result-title{font-weight:600}.search-modal .pagefind-ui .pagefind-ui__result-nested{padding-left:20px}.search-modal .pagefind-ui .pagefind-ui__result-nested .pagefind-ui__result-link{font-size:var(--fz-md);font-weight:500}.search-modal .pagefind-ui .pagefind-ui__message{color:var(--slate);font-family:var(--font-mono);font-size:var(--fz-sm)}.search-modal .pagefind-ui mark{background-color:var(--highlight-tint);color:var(--lightestslate);border-radius:2px;padding:1px 3px}.search-modal .pagefind-ui .pagefind-ui__button{color:var(--highlight);border:1px solid var(--highlight);border-radius:var(--border-radius);font-family:var(--font-mono);font-size:var(--fz-xs);cursor:pointer;transition:var(--transition);background-color:#0000;padding:10px 20px}.search-modal .pagefind-ui .pagefind-ui__button:hover{background-color:var(--highlight-tint)}@media (width<=768px){.search-modal{border-radius:0;width:100vw;max-width:100vw;max-height:100vh;margin:0}.search-modal-content{max-height:100vh}}.sidebar-search-button{color:var(--lightestslate);font-family:var(--font-mono);font-size:clamp(var(--fz-sm), 4vw, var(--fz-lg));cursor:pointer;text-align:center;width:100%;transition:var(--transition);background:0 0;border:none;padding:3px 20px 20px}.sidebar-search-button:hover{color:var(--highlight)}
