@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/46a9e2f250689b4a-s.03ez25a9g3i0n.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/76b70a1dbe058eb5-s.3i9rha7jpxn0q.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fb76073e23fd9e4-s.2o7ko1d-5m1xu.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6131cbbf5549afa2-s.1ee5w62fj497l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/45462fd7b7c12654-s.1way2z9fj6cig.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/ba63f6a0e436df8e-s.0szrwpqb9mkwe.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/07c7676b89ed2778-s.p.45535valc9rzk.woff2)format("woff2");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}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/46a9e2f250689b4a-s.03ez25a9g3i0n.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/76b70a1dbe058eb5-s.3i9rha7jpxn0q.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/2fb76073e23fd9e4-s.2o7ko1d-5m1xu.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6131cbbf5549afa2-s.1ee5w62fj497l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/45462fd7b7c12654-s.1way2z9fj6cig.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/ba63f6a0e436df8e-s.0szrwpqb9mkwe.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/07c7676b89ed2778-s.p.45535valc9rzk.woff2)format("woff2");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}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/46a9e2f250689b4a-s.03ez25a9g3i0n.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/76b70a1dbe058eb5-s.3i9rha7jpxn0q.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/2fb76073e23fd9e4-s.2o7ko1d-5m1xu.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6131cbbf5549afa2-s.1ee5w62fj497l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/45462fd7b7c12654-s.1way2z9fj6cig.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/ba63f6a0e436df8e-s.0szrwpqb9mkwe.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/07c7676b89ed2778-s.p.45535valc9rzk.woff2)format("woff2");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}@font-face{font-family:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}._7SMeHG_className{font-family:Inter,Inter Fallback;font-style:normal}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/c64053b510252f55-s.1zakzi6q17d4o.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/733da6bd8dac84c8-s.2htf8h-pf57mm.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/784318cea1dfcfa4-s.3skwie1wjplzh.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/7e114457660b62ed-s.3zhbgtelpa5ua.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/9fecbd3e5ea9bccb-s.3vf5yzuqk3fsd.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/9a321a2c78eff0b5-s.p.1wmoa0e_blxrz.woff2)format("woff2");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}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/c64053b510252f55-s.1zakzi6q17d4o.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/733da6bd8dac84c8-s.2htf8h-pf57mm.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/784318cea1dfcfa4-s.3skwie1wjplzh.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/7e114457660b62ed-s.3zhbgtelpa5ua.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/9fecbd3e5ea9bccb-s.3vf5yzuqk3fsd.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/9a321a2c78eff0b5-s.p.1wmoa0e_blxrz.woff2)format("woff2");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}@font-face{font-family:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}._2Ar-Fq_className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}
html{box-sizing:border-box;scroll-behavior:smooth;width:100%}*,:before,:after{box-sizing:inherit}::selection{background-color:var(--lightest-navy);color:var(--lightest-slate)}:focus{outline:2px dashed var(--green);outline-offset:3px}:focus:not(:focus-visible){outline-offset:0px;outline:none}:focus-visible{outline:2px dashed var(--green);outline-offset:3px}html{scrollbar-width:thin;scrollbar-color:var(--dark-slate) var(--navy)}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:var(--navy)}::-webkit-scrollbar-thumb{background-color:var(--dark-slate);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.3;overflow-x:hidden}@media (max-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;-webkit-user-select: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 (max-width:1080px){main{padding:200px 100px}}@media (max-width:768px){main{padding:150px 50px}}@media (max-width:480px){main{padding:125px 25px}}main.fillHeight{padding:0 150px}@media (max-width:1080px){main.fillHeight{padding:0 100px}}@media (max-width:768px){main.fillHeight{padding:0 50px}}@media (max-width:480px){main.fillHeight{padding:0 25px}}section{max-width:1000px;margin:0 auto;padding:100px 0}@media (max-width:768px){section{padding:80px 0}}@media (max-width:480px){section{padding:60px 0}}h1,h2,h3,h4,h5,h6{color:var(--lightest-slate);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(--green);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 (max-width:480px){.numbered-heading:before{margin-bottom:-3px;margin-right:5px}}.numbered-heading:after{content:"";background-color:var(--lightest-navy);width:300px;height:1px;margin-left:20px;display:block;position:relative;top:-5px}@media (max-width:1080px){.numbered-heading:after{width:200px}}@media (max-width:768px){.numbered-heading:after{width:100%}}@media (max-width:600px){.numbered-heading:after{margin-left:10px}}img,svg,.gatsby-image-wrapper{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(--green)}a.inline-link{text-decoration-skip-ink:auto;transition:var(--transition);color:var(--green);text-decoration:none;display:inline-block;position:relative}a.inline-link:hover,a.inline-link:focus,a.inline-link:active{color:var(--green);outline:0}a.inline-link:hover:after,a.inline-link:focus:after,a.inline-link:active:after{width:100%}a.inline-link:hover>*,a.inline-link:focus>*,a.inline-link:active>*{transition:var(--transition);color:var(--green)!important}a.inline-link:after{content:"";background-color:var(--green);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:last-child,p:last-of-type{margin:0}p>a{text-decoration-skip-ink:auto;transition:var(--transition);color:var(--green);text-decoration:none;display:inline-block;position:relative}p>a:hover,p>a:focus,p>a:active{color:var(--green);outline:0}p>a:hover:after,p>a:focus:after,p>a:active:after{width:100%}p>a:hover>*,p>a:focus>*,p>a:active>*{transition:var(--transition);color:var(--green)!important}p>a:after{content:"";background-color:var(--green);width:0;height:1px;transition:var(--transition);opacity:.5;display:block;position:relative;bottom:.37em}p>code{background-color:var(--light-navy);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(--green);position:absolute;left:0}blockquote{border-left-color:var(--green);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(--lightest-navy);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(--green);border:1px solid var(--green);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}.skip-to-content:hover,.skip-to-content:focus,.skip-to-content:active{background-color:var(--green-tint);outline:none}.skip-to-content:after{display:none!important}.skip-to-content{z-index:-99;width:1px;height:1px;position:absolute;top:auto;left:-999px;overflow:hidden}.skip-to-content:focus,.skip-to-content:active{background-color:var(--green);color:var(--navy);z-index:99;width:auto;height:auto;top:0;left:0;overflow:auto}#logo{color:var(--green)}.overline{color:var(--green);font-family:var(--font-mono);font-size:var(--fz-md);font-weight:400}.subtitle{color:var(--green);font-size:var(--fz-md);font-family:var(--font-mono);margin:0 0 20px;font-weight:400;line-height:1.5}@media (max-width:1080px){.subtitle{font-size:var(--fz-sm)}}@media (max-width:768px){.subtitle{font-size:var(--fz-xs)}}.subtitle a{text-decoration-skip-ink:auto;transition:var(--transition);color:var(--green);text-decoration:none;display:inline-block;position:relative}.subtitle a:hover,.subtitle a:focus,.subtitle a:active{color:var(--green);outline:0}.subtitle a:hover:after,.subtitle a:focus:after,.subtitle a:active:after{width:100%}.subtitle a:hover>*,.subtitle a:focus>*,.subtitle a:active>*{transition:var(--transition);color:var(--green)!important}.subtitle a:after{content:"";background-color:var(--green);width:0;height:1px;transition:var(--transition);opacity:.5;display:block;position:relative;bottom:.37em}.subtitle a{line-height:1.5}.breadcrumb{color:var(--green);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(--green);text-decoration:none;display:inline-block;position:relative}.breadcrumb a:hover,.breadcrumb a:focus,.breadcrumb a:active{color:var(--green);outline:0}.breadcrumb a:hover:after,.breadcrumb a:focus:after,.breadcrumb a:active:after{width:100%}.breadcrumb a:hover>*,.breadcrumb a:focus>*,.breadcrumb a:active>*{transition:var(--transition);color:var(--green)!important}.breadcrumb a:after{content:"";background-color:var(--green);width:0;height:1px;transition:var(--transition);opacity:.5;display:block;position:relative;bottom:.37em}.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}.gatsby-image-outer-wrapper{height:100%}.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;-webkit-hyphens:none;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(--green);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(--lightest-navy);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}.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)}: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;--pink:#f57dff;--blue:#57cbff;--font-sans:"Inter", -apple-system, system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, Menlo, 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}.loader{background-color:var(--dark-navy);z-index:99;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;inset:0}.loader .logo-wrapper{width:max-content;max-width:100px;transition:var(--transition)}.loader .logo-wrapper.hidden{opacity:1}.loader .logo-wrapper svg{fill:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;margin:0 auto;display:block}.loader .logo-wrapper svg #B{opacity:0}.loader.hidden{opacity:0;transition:opacity .2s ease-in-out}@keyframes animate-logo-path{0%{fill:#0000}to{fill:#64ffda}}.loader .logo-path{animation:.7s cubic-bezier(.47,0,.745,.715) .8s both animate-logo-path}@keyframes animate-logo-stroke{0%{stroke-dashoffset:272.108px;stroke-dasharray:272.108}to{stroke-dashoffset:0;stroke-dasharray:272.108}}.loader .logo-stroke{animation:1s cubic-bezier(.47,0,.745,.715) 30ms both animate-logo-stroke}.layout-wrapper{flex-direction:column;min-height:100vh;display:flex}.header{z-index:11;width:100%;height:var(--nav-height);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:var(--transition);background-color:#0a192fd9;justify-content:space-between;align-items:center;padding:0 50px;display:flex;position:fixed;top:0;filter:none!important;pointer-events:auto!important;-webkit-user-select:auto!important;user-select:auto!important}@media (max-width:1080px){.header{padding:0 40px}}@media (max-width:768px){.header{padding:0 25px}}@media (prefers-reduced-motion:no-preference){.header.scroll-up{height:var(--nav-scroll-height);box-shadow:0 10px 30px -10px var(--navy-shadow);background-color:#0a192fd9;transform:translateY(0)}.header.scroll-down{height:var(--nav-scroll-height);transform:translateY(calc(var(--nav-scroll-height) * -1));box-shadow:0 10px 30px -10px var(--navy-shadow)}}.nav{width:100%;color:var(--lightest-slate);font-family:var(--font-mono);counter-reset:item 0;z-index:12;justify-content:space-between;align-items:center;display:flex;position:relative}.nav .logo{justify-content:center;align-items:center;display:flex}.nav .logo a{color:var(--green);width:64px;height:64px}.nav .logo a:hover svg,.nav .logo a:focus svg{fill:var(--green-tint)}.nav .logo a svg{fill:none;transition:var(--transition);-webkit-user-select:none;user-select:none}.nav-link{align-items:center;display:flex}@media (max-width:768px){.nav-link{display:none}}.nav-link ol{justify-content:space-between;align-items:center;margin:0;padding:0;list-style:none;display:flex}.nav-link ol li{counter-increment:item 1;font-size:var(--fz-xs);margin:0 5px;position:relative}.nav-link ol li a{padding:10px}.nav-link ol li a:before{content:"0" counter(item) ".";color:var(--green);font-size:var(--fz-xxs);text-align:right;margin-right:5px}.nav-link .resume-button{color:var(--green);border:1px solid var(--green);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}.nav-link .resume-button:hover,.nav-link .resume-button:focus,.nav-link .resume-button:active{background-color:var(--green-tint);outline:none}.nav-link .resume-button:after{display:none!important}.nav-link .resume-button{font-size:var(--fz-xs);margin-left:15px}.side-element{z-index:10;width:40px;color:var(--light-slate);position:fixed;bottom:0;left:auto;right:40px}.side-element.left{left:40px;right:auto}@media (max-width:1080px){.side-element{left:auto;right:20px}.side-element.left{left:20px;right:auto}}@media (max-width:768px){.side-element{display:none}}.social-list{flex-direction:column;align-items:center;margin:0;padding:0;list-style:none;display:flex}.social-list:after{content:"";background-color:var(--light-slate);width:1px;height:90px;margin:0 auto;display:block}.social-list li:last-of-type{margin-bottom:20px}.social-list li a{padding:10px}.social-list li a:hover,.social-list li a:focus{transform:translateY(-3px)}.social-list li a svg{width:20px;height:20px}.link-wrapper{flex-direction:column;align-items:center;display:flex;position:relative}.link-wrapper:after{content:"";background-color:var(--light-slate);width:1px;height:90px;margin:0 auto;display:block}.link-wrapper a{font-family:var(--font-mono);font-size:var(--fz-xxs);line-height:var(--fz-lg);letter-spacing:.1em;writing-mode:vertical-rl;margin:20px auto;padding:10px}.link-wrapper a:hover,.link-wrapper a:focus{transform:translateY(-3px)}.footer{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:auto;min-height:70px;padding:15px;display:flex}.social-links{display:none}@media (max-width:768px){.social-links{width:100%;max-width:270px;color:var(--light-slate);margin:0 auto;display:block}}.social-links ul{justify-content:space-between;align-items:center;margin:0;padding:0;list-style:none;display:flex}.social-links ul a{padding:10px}.social-links ul a svg{width:20px;height:20px}.credit{color:var(--light-slate);font-family:var(--font-mono);font-size:var(--fz-xxs);line-height:1.5}.menu{display:none}@media (max-width:768px){.menu{display:block}}.hamburger-button{display:none}@media (max-width:768px){.hamburger-button{z-index:10;color:inherit;text-transform:none;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}}.hamburger-button .ham-box{width:var(--hamburger-width);height:24px;display:inline-block;position:relative}.hamburger-button .ham-box-inner{width:var(--hamburger-width);border-radius:var(--border-radius);background-color:var(--green);height:2px;transition:transform .22s cubic-bezier(.55,.055,.675,.19);position:absolute;top:50%;right:0;transform:rotate(0)}.hamburger-button .ham-box-inner:before,.hamburger-button .ham-box-inner:after{content:"";width:var(--hamburger-width);background-color:var(--green);border-radius:4px;height:2px;transition-property:transform;transition-duration:.15s;transition-timing-function:ease;display:block;position:absolute;left:auto;right:0}.hamburger-button .ham-box-inner:before{opacity:1;width:120%;transition:var(--ham-before);top:-10px}.hamburger-button .ham-box-inner:after{width:80%;transition:var(--ham-after);bottom:-10px;transform:rotate(0)}.hamburger-button.menu-open .ham-box-inner{transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1);transform:rotate(225deg)}.hamburger-button.menu-open .ham-box-inner:before{opacity:0;width:100%;transition:var(--ham-before-active);top:0}.hamburger-button.menu-open .ham-box-inner:after{width:100%;transition:var(--ham-after-active);bottom:0;transform:rotate(-90deg)}.aside{display:none}@media (max-width:768px){.aside{background-color:var(--light-navy);width:min(75vw,400px);height:100vh;box-shadow:-10px 0px 30px -15px var(--navy-shadow);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)}.aside.menu-open{visibility:visible;transform:translate(0)}}.aside nav{width:100%;color:var(--lightest-slate);font-family:var(--font-mono);text-align:center;flex-direction:column;justify-content:space-between;align-items:center;display:flex}.aside ol{width:100%;margin:0;padding:0;list-style:none}.aside ol li{counter-increment:item 1;font-size:clamp(var(--fz-sm),4vw,var(--fz-lg));margin:0 auto 20px;position:relative}@media (max-width:600px){.aside ol li{margin:0 auto 10px}}.aside ol li:before{content:"0" counter(item) ".";color:var(--green);font-size:var(--fz-sm);margin-bottom:5px;display:block}.aside ol a{text-decoration-skip-ink:auto;color:inherit;transition:var(--transition);text-decoration:none;display:inline-block;position:relative}.aside ol a:hover,.aside ol a:active,.aside ol a:focus{color:var(--green);outline:0}.aside ol a{width:100%;padding:3px 20px 20px}.aside .resume-link{color:var(--green);border:1px solid var(--green);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}.aside .resume-link:hover,.aside .resume-link:focus,.aside .resume-link:active{background-color:var(--green-tint);outline:none}.aside .resume-link:after{display:none!important}.aside .resume-link{width:max-content;margin:10% auto 0;padding:18px 50px}.hero-section{flex-direction:column;justify-content:center;align-items:flex-start;min-height:100vh;padding:0;display:flex}@media (max-height:700px) and (min-width:700px),(max-width:360px){.hero-section{height:auto;padding-top:var(--nav-height)}}.hero-section h1{color:var(--green);font-family:var(--font-mono);font-size:clamp(var(--fz-sm),5vw,var(--fz-md));margin:0 0 30px 4px;font-weight:400}@media (max-width:480px){.hero-section h1{margin:0 0 20px 2px}}.hero-section h3{color:var(--slate);margin-top:5px;line-height:.9}.hero-section p{max-width:540px;margin:20px 0 0}.hero-section .email-link{color:var(--green);border:1px solid var(--green);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}.hero-section .email-link:hover,.hero-section .email-link:focus,.hero-section .email-link:active{background-color:var(--green-tint);outline:none}.hero-section .email-link:after{display:none!important}.hero-section .email-link{margin-top:50px}.about-section{max-width:900px}.about-section .inner{grid-gap:50px;grid-template-columns:3fr 2fr;display:grid}@media (max-width:768px){.about-section .inner{display:block}}.about-text ul.skills-list{grid-gap:0 10px;grid-template-columns:repeat(2,minmax(140px,200px));margin:20px 0 0;padding:0;list-style:none;display:grid;overflow:hidden}.about-text ul.skills-list li{font-family:var(--font-mono);font-size:var(--fz-xs);margin-bottom:10px;padding-left:20px;position:relative}.about-text ul.skills-list li:before{content:"▹";color:var(--green);font-size:var(--fz-sm);line-height:12px;position:absolute;left:0}.about-pic{max-width:300px;position:relative}@media (max-width:768px){.about-pic{width:70%;margin:50px auto 0}}.about-pic .wrapper{box-shadow:0 10px 30px -15px var(--navy-shadow);transition:var(--transition)}.about-pic .wrapper:hover,.about-pic .wrapper:focus{box-shadow:0 20px 30px -15px var(--navy-shadow)}.about-pic .wrapper{border-radius:var(--border-radius);background-color:var(--green);width:100%;display:block;position:relative}.about-pic .wrapper:hover,.about-pic .wrapper:focus{outline:0}.about-pic .wrapper:hover:after,.about-pic .wrapper:focus:after{top:15px;left:15px}.about-pic .wrapper:hover .img,.about-pic .wrapper:focus .img{filter:none;mix-blend-mode:normal}.about-pic .wrapper .img{border-radius:var(--border-radius);mix-blend-mode:multiply;filter:grayscale()contrast();width:100%;transition:var(--transition);height:auto;display:block;position:relative}.about-pic .wrapper:before,.about-pic .wrapper:after{content:"";border-radius:var(--border-radius);width:100%;height:100%;transition:var(--transition);display:block;position:absolute}.about-pic .wrapper:before{background-color:var(--navy);mix-blend-mode:screen;top:0;left:0}.about-pic .wrapper:after{border:2px solid var(--green);z-index:-1;top:20px;left:20px}.jobs-section{max-width:700px}.jobs-section .inner{display:flex}@media (max-width:600px){.jobs-section .inner{display:block}}@media (min-width:700px){.jobs-section .inner{min-height:340px}}.jobs-tab-list{z-index:3;width:max-content;margin:0;padding:0;list-style:none;position:relative}@media (max-width:600px){.jobs-tab-list{width:calc(100% + 100px);margin-bottom:30px;margin-left:-50px;padding-left:50px;display:flex;overflow-x:auto}}@media (max-width:480px){.jobs-tab-list{width:calc(100% + 50px);margin-left:-25px;padding-left:25px}}@media (max-width:600px){.jobs-tab-list li:first-of-type{margin-left:50px}}@media (max-width:480px){.jobs-tab-list li:first-of-type{margin-left:25px}}@media (max-width:600px){.jobs-tab-list li:last-of-type{padding-right:50px}}@media (max-width:480px){.jobs-tab-list li:last-of-type{padding-right:25px}}.jobs-tab-button{text-decoration-skip-ink:auto;color:inherit;transition:var(--transition);text-decoration:none;display:inline-block;position:relative}.jobs-tab-button:hover,.jobs-tab-button:active,.jobs-tab-button:focus{color:var(--green);outline:0}.jobs-tab-button{width:100%;height:var(--tab-height);border-left:2px solid var(--lightest-navy);color:var(--slate);font-family:var(--font-mono);font-size:var(--fz-xs);text-align:left;white-space:nowrap;background-color:#0000;align-items:center;padding:0 20px 2px;display:flex}.jobs-tab-button.active{color:var(--green)}@media (max-width:768px){.jobs-tab-button{padding:0 15px 2px}}@media (max-width:600px){.jobs-tab-button{border-left:0;border-bottom:2px solid var(--lightest-navy);text-align:center;justify-content:center;align-items:center;min-width:120px;padding:0 15px;display:flex}}.jobs-tab-button:hover,.jobs-tab-button:focus{background-color:var(--light-navy)}.jobs-highlight{z-index:10;width:2px;height:var(--tab-height);border-radius:var(--border-radius);background:var(--green);transform:translateY(calc(var(--active-tab,0) * var(--tab-height)));transition:transform .25s cubic-bezier(.645,.045,.355,1) .1s;position:absolute;top:0;left:0}@media (max-width:600px){.jobs-highlight{width:100%;max-width:var(--tab-width);height:2px;transform:translateX(calc(var(--active-tab,0) * var(--tab-width)));margin-left:50px;top:auto;bottom:0}}@media (max-width:480px){.jobs-highlight{margin-left:25px}}.jobs-tab-panels{width:100%;margin-left:20px;position:relative}@media (max-width:600px){.jobs-tab-panels{margin-left:0}}.jobs-tab-panel{width:100%;height:auto;padding:10px 5px}.jobs-tab-panel ul{font-size:var(--fz-lg);margin:0;padding:0;list-style:none}.jobs-tab-panel ul li{margin-bottom:10px;padding-left:30px;position:relative}.jobs-tab-panel ul li:before{content:"▹";color:var(--green);position:absolute;left:0}.jobs-tab-panel h3{font-size:var(--fz-xxl);margin-bottom:2px;font-weight:500;line-height:1.3}.jobs-tab-panel h3 .company{color:var(--green)}.jobs-tab-panel .range{color:var(--light-slate);font-family:var(--font-mono);font-size:var(--fz-xs);margin-bottom:25px}.featured-projects-grid{margin:0;padding:0;list-style:none}.featured-projects-grid a{z-index:1;position:relative}.featured-projects-project{grid-gap:10px;grid-template-columns:repeat(12,1fr);align-items:center;display:grid;position:relative}@media (max-width:768px){.featured-projects-project{box-shadow:0 10px 30px -15px var(--navy-shadow);transition:var(--transition)}.featured-projects-project:hover,.featured-projects-project:focus{box-shadow:0 20px 30px -15px var(--navy-shadow)}}.featured-projects-project:not(:last-of-type){margin-bottom:100px}@media (max-width:768px){.featured-projects-project:not(:last-of-type){margin-bottom:70px}}@media (max-width:480px){.featured-projects-project:not(:last-of-type){margin-bottom:30px}}.featured-projects-project:nth-of-type(odd) .project-content{text-align:right;grid-column:7/-1}@media (max-width:1080px){.featured-projects-project:nth-of-type(odd) .project-content{grid-column:5/-1}}@media (max-width:768px){.featured-projects-project:nth-of-type(odd) .project-content{text-align:left;grid-column:1/-1;padding:40px 40px 30px}}@media (max-width:480px){.featured-projects-project:nth-of-type(odd) .project-content{padding:25px 25px 20px}}.featured-projects-project:nth-of-type(odd) .project-tech-list{justify-content:flex-end}@media (max-width:768px){.featured-projects-project:nth-of-type(odd) .project-tech-list{justify-content:flex-start}}.featured-projects-project:nth-of-type(odd) .project-tech-list li{margin:0 0 5px 20px}@media (max-width:768px){.featured-projects-project:nth-of-type(odd) .project-tech-list li{margin:0 10px 5px 0}}.featured-projects-project:nth-of-type(odd) .project-links{justify-content:flex-end;margin-left:0;margin-right:-10px}@media (max-width:768px){.featured-projects-project:nth-of-type(odd) .project-links{justify-content:flex-start;margin-left:-10px;margin-right:0}}.featured-projects-project:nth-of-type(odd) .project-image{grid-column:1/8}@media (max-width:768px){.featured-projects-project:nth-of-type(odd) .project-image{grid-column:1/-1}}.featured-projects-project .project-content{grid-area:1/1/-1/7;position:relative}@media (max-width:1080px){.featured-projects-project .project-content{grid-column:1/9}}@media (max-width:768px){.featured-projects-project .project-content{z-index:5;flex-direction:column;grid-column:1/-1;justify-content:center;height:100%;padding:40px 40px 30px;display:flex}}@media (max-width:480px){.featured-projects-project .project-content{padding:30px 25px 20px}}.featured-projects-project .project-overline{color:var(--green);font-family:var(--font-mono);font-size:var(--fz-xs);margin:10px 0;font-weight:400}.featured-projects-project .project-title{color:var(--lightest-slate);font-size:clamp(24px,5vw,28px)}@media (min-width:768px){.featured-projects-project .project-title{margin:0 0 20px}}@media (max-width:768px){.featured-projects-project .project-title{color:var(--white)}.featured-projects-project .project-title a{position:static}.featured-projects-project .project-title a:before{content:"";z-index:0;width:100%;height:100%;display:block;position:absolute;top:0;left:0}}.featured-projects-project .project-description{box-shadow:0 10px 30px -15px var(--navy-shadow);transition:var(--transition)}.featured-projects-project .project-description:hover,.featured-projects-project .project-description:focus{box-shadow:0 20px 30px -15px var(--navy-shadow)}.featured-projects-project .project-description{z-index:2;border-radius:var(--border-radius);background-color:var(--light-navy);color:var(--light-slate);font-size:var(--fz-lg);padding:25px;position:relative}@media (max-width:768px){.featured-projects-project .project-description{box-shadow:none;background-color:#0000;padding:20px 0}.featured-projects-project .project-description:hover{box-shadow:none}}.featured-projects-project .project-description a{text-decoration-skip-ink:auto;transition:var(--transition);color:var(--green);text-decoration:none;display:inline-block;position:relative}.featured-projects-project .project-description a:hover,.featured-projects-project .project-description a:focus,.featured-projects-project .project-description a:active{color:var(--green);outline:0}.featured-projects-project .project-description a:hover:after,.featured-projects-project .project-description a:focus:after,.featured-projects-project .project-description a:active:after{width:100%}.featured-projects-project .project-description a:hover>*,.featured-projects-project .project-description a:focus>*,.featured-projects-project .project-description a:active>*{transition:var(--transition);color:var(--green)!important}.featured-projects-project .project-description a:after{content:"";background-color:var(--green);width:0;height:1px;transition:var(--transition);opacity:.5;display:block;position:relative;bottom:.37em}.featured-projects-project .project-description strong{color:var(--white);font-weight:400}.featured-projects-project .project-tech-list{z-index:2;flex-wrap:wrap;margin:25px 0 10px;padding:0;list-style:none;display:flex;position:relative}.featured-projects-project .project-tech-list li{color:var(--light-slate);font-family:var(--font-mono);font-size:var(--fz-xs);white-space:nowrap;margin:0 20px 5px 0}@media (max-width:768px){.featured-projects-project .project-tech-list{margin:10px 0}.featured-projects-project .project-tech-list li{color:var(--lightest-slate);margin:0 10px 5px 0}}.featured-projects-project .project-links{color:var(--lightest-slate);align-items:center;margin-top:10px;margin-left:-10px;display:flex;position:relative}.featured-projects-project .project-links a{justify-content:center;align-items:center;padding:10px;display:flex}.featured-projects-project .project-links a.external svg{width:22px;height:22px;margin-top:-4px}.featured-projects-project .project-links a svg{width:20px;height:20px}.featured-projects-project .project-links .cta{color:var(--green);border:1px solid var(--green);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}.featured-projects-project .project-links .cta:hover,.featured-projects-project .project-links .cta:focus,.featured-projects-project .project-links .cta:active{background-color:var(--green-tint);outline:none}.featured-projects-project .project-links .cta:after{display:none!important}.featured-projects-project .project-links .cta{margin:10px}.featured-projects-project .project-image{box-shadow:0 10px 30px -15px var(--navy-shadow);transition:var(--transition)}.featured-projects-project .project-image:hover,.featured-projects-project .project-image:focus{box-shadow:0 20px 30px -15px var(--navy-shadow)}.featured-projects-project .project-image{z-index:1;grid-area:1/6/-1/-1;position:relative}@media (max-width:768px){.featured-projects-project .project-image{opacity:.25;grid-column:1/-1;height:100%}}.featured-projects-project .project-image a,.featured-projects-project .project-image .frame{background-color:var(--green);border-radius:var(--border-radius);vertical-align:middle;width:100%;height:100%;display:block}.featured-projects-project .project-image a:hover,.featured-projects-project .project-image a:focus,.featured-projects-project .project-image .frame:hover,.featured-projects-project .project-image .frame:focus{background:0 0;outline:0}.featured-projects-project .project-image a:hover:before,.featured-projects-project .project-image a:hover .img,.featured-projects-project .project-image a:focus:before,.featured-projects-project .project-image a:focus .img,.featured-projects-project .project-image .frame:hover:before,.featured-projects-project .project-image .frame:hover .img,.featured-projects-project .project-image .frame:focus:before,.featured-projects-project .project-image .frame:focus .img{filter:none;background:0 0}.featured-projects-project .project-image a:before,.featured-projects-project .project-image .frame:before{content:"";z-index:3;width:100%;height:100%;transition:var(--transition);background-color:var(--navy);mix-blend-mode:screen;position:absolute;inset:0}.featured-projects-project .project-image .img{border-radius:var(--border-radius);mix-blend-mode:multiply;filter:grayscale()contrast()brightness(90%);width:100%;height:auto;display:block}@media (max-width:768px){.featured-projects-project .project-image .img{object-fit:cover;filter:grayscale()contrast()brightness(50%);width:auto;height:100%}}.projects-section{flex-direction:column;align-items:center;display:flex}.projects-section h2{font-size:clamp(24px,5vw,var(--fz-heading))}.projects-section .archive-link{font-family:var(--font-mono);font-size:var(--fz-sm)}.projects-section .archive-link:after{bottom:.1em}.projects-section .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 (max-width:1080px){.projects-section .projects-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}}.projects-section .more-button{color:var(--green);border:1px solid var(--green);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}.projects-section .more-button:hover,.projects-section .more-button:focus,.projects-section .more-button:active{background-color:var(--green-tint);outline:none}.projects-section .more-button:after{display:none!important}.projects-section .more-button{margin:80px auto 0}.projects-project{cursor:default;transition:var(--transition);position:relative}@media (prefers-reduced-motion:no-preference){.projects-project:hover .project-inner,.projects-project:focus-within .project-inner{transform:translateY(-7px)}}.projects-project a{z-index:1;position:relative}.projects-project .project-inner{box-shadow:0 10px 30px -15px var(--navy-shadow);transition:var(--transition)}.projects-project .project-inner:hover,.projects-project .project-inner:focus{box-shadow:0 20px 30px -15px var(--navy-shadow)}.projects-project .project-inner{border-radius:var(--border-radius);background-color:var(--light-navy);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}.projects-project .project-top{justify-content:space-between;align-items:center;margin-bottom:35px;display:flex}.projects-project .project-top .folder{color:var(--green)}.projects-project .project-top .folder svg{width:40px;height:40px}.projects-project .project-top .project-links{color:var(--light-slate);align-items:center;margin-right:-10px;display:flex}.projects-project .project-top .project-links a{justify-content:center;align-items:center;padding:5px 7px;display:flex}.projects-project .project-top .project-links a.external svg{width:22px;height:22px;margin-top:-4px}.projects-project .project-top .project-links a svg{width:20px;height:20px}.projects-project .project-title{color:var(--lightest-slate);font-size:var(--fz-xxl);margin:0 0 10px}.projects-project .project-title a{position:static}.projects-project .project-title a:before{content:"";z-index:0;width:100%;height:100%;display:block;position:absolute;top:0;left:0}.projects-project .project-description{color:var(--light-slate);font-size:17px}.projects-project .project-description a{text-decoration-skip-ink:auto;transition:var(--transition);color:var(--green);text-decoration:none;display:inline-block;position:relative}.projects-project .project-description a:hover,.projects-project .project-description a:focus,.projects-project .project-description a:active{color:var(--green);outline:0}.projects-project .project-description a:hover:after,.projects-project .project-description a:focus:after,.projects-project .project-description a:active:after{width:100%}.projects-project .project-description a:hover>*,.projects-project .project-description a:focus>*,.projects-project .project-description a:active>*{transition:var(--transition);color:var(--green)!important}.projects-project .project-description a:after{content:"";background-color:var(--green);width:0;height:1px;transition:var(--transition);opacity:.5;display:block;position:relative;bottom:.37em}.projects-project .project-tech-list{flex-wrap:wrap;flex-grow:1;align-items:flex-end;margin:20px 0 0;padding:0;list-style:none;display:flex}.projects-project .project-tech-list li{font-family:var(--font-mono);font-size:var(--fz-xxs);line-height:1.75}.projects-project .project-tech-list li:not(:last-of-type){margin-right:15px}.contact-section{text-align:center;max-width:600px;margin:0 auto 100px}@media (max-width:768px){.contact-section{margin:0 auto 50px}}.contact-section .overline{color:var(--green);font-family:var(--font-mono);font-size:var(--fz-md);margin-bottom:20px;font-weight:400;display:block}.contact-section .overline:before{font-size:var(--fz-sm);bottom:0}.contact-section .overline:after{display:none}.contact-section .title{font-size:clamp(40px,5vw,60px)}.contact-section .email-link{color:var(--green);border:1px solid var(--green);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}.contact-section .email-link:hover,.contact-section .email-link:focus,.contact-section .email-link:active{background-color:var(--green-tint);outline:none}.contact-section .email-link:after{display:none!important}.contact-section .email-link{margin-top:50px}.reveal{opacity:0;transition:opacity .5s var(--easing),transform .5s var(--easing);transform:translateY(20px)}.reveal.revealed{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}}.archive-header{margin-bottom:100px}@media (max-width:768px){.archive-header{margin-bottom:50px}}.archive-header .subtitle{color:var(--green);font-family:var(--font-mono);font-size:var(--fz-md)}.archive-table{margin:100px -20px}@media (max-width:768px){.archive-table{margin:50px -10px}}.archive-table table{border-collapse:collapse;width:100%}@media (max-width:768px){.archive-table table .hide-on-mobile{display:none}}.archive-table table tbody tr:hover,.archive-table table tbody tr:focus{background-color:var(--light-navy)}.archive-table table th,.archive-table table td{text-align:left;padding:10px}.archive-table table th:first-child,.archive-table table td:first-child{padding-left:20px}@media (max-width:768px){.archive-table table th:first-child,.archive-table table td:first-child{padding-left:10px}}.archive-table table th:last-child,.archive-table table td:last-child{padding-right:20px}@media (max-width:768px){.archive-table table th:last-child,.archive-table table td:last-child{padding-right:10px}}.archive-table table th svg,.archive-table table td svg{width:20px;height:20px}.archive-table table tr{cursor:default}.archive-table table tr td:first-child{border-top-left-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}.archive-table table tr td:last-child{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.archive-table table td.year{color:var(--green);font-family:var(--font-mono);font-size:var(--fz-sm);padding-right:20px}@media (max-width:768px){.archive-table table td.year{font-size:var(--fz-xs);padding-right:10px}}.archive-table table td.title{color:var(--lightest-slate);font-size:var(--fz-xl);padding-top:15px;padding-right:20px;font-weight:600;line-height:1.25}.archive-table table td.company{font-size:var(--fz-lg);white-space:nowrap}.archive-table table td.tech{font-family:var(--font-mono);font-size:var(--fz-xxs);line-height:1.5}.archive-table table td.tech .separator{margin:0 5px}.archive-table table td.tech span{display:inline-block}.archive-table table td.links{min-width:100px}.archive-table table td.links .links-list{align-items:center;display:flex}.archive-table table td.links .links-list a{flex-shrink:0;justify-content:center;align-items:center;display:flex}.archive-table table td.links .links-list a+a{margin-left:10px}
