@font-face{font-family:Calibre;src:url(/assets/fonts/Calibre/Calibre-Regular.woff2) format("woff2"),url(/assets/fonts/Calibre/Calibre-Regular.woff) format("woff");font-weight:400;font-style:normal;font-display:auto}/*!sc*/@font-face{font-family:Calibre;src:url(/assets/fonts/Calibre/Calibre-Medium.woff2) format("woff2"),url(/assets/fonts/Calibre/Calibre-Medium.woff) format("woff");font-weight:500;font-style:normal;font-display:auto}/*!sc*/@font-face{font-family:Calibre;src:url(/assets/fonts/Calibre/Calibre-Semibold.woff2) format("woff2"),url(/assets/fonts/Calibre/Calibre-Semibold.woff) format("woff");font-weight:600;font-style:normal;font-display:auto}/*!sc*/@font-face{font-family:Calibre;src:url(/assets/fonts/Calibre/Calibre-RegularItalic.woff2) format("woff2"),url(/assets/fonts/Calibre/Calibre-RegularItalic.woff) format("woff");font-weight:400;font-style:italic;font-display:auto}/*!sc*/@font-face{font-family:Calibre;src:url(/assets/fonts/Calibre/Calibre-MediumItalic.woff2) format("woff2"),url(/assets/fonts/Calibre/Calibre-MediumItalic.woff) format("woff");font-weight:500;font-style:italic;font-display:auto}/*!sc*/@font-face{font-family:Calibre;src:url(/assets/fonts/Calibre/Calibre-SemiboldItalic.woff2) format("woff2"),url(/assets/fonts/Calibre/Calibre-SemiboldItalic.woff) format("woff");font-weight:600;font-style:italic;font-display:auto}/*!sc*/@font-face{font-family:SF Mono;src:url(/assets/fonts/SFMono/SFMono-Regular.woff2) format("woff2"),url(/assets/fonts/SFMono/SFMono-Regular.woff) format("woff");font-weight:400;font-style:normal;font-display:auto}/*!sc*/@font-face{font-family:SF Mono;src:url(/assets/fonts/SFMono/SFMono-Semibold.woff2) format("woff2"),url(/assets/fonts/SFMono/SFMono-Semibold.woff) format("woff");font-weight:600;font-style:normal;font-display:auto}/*!sc*/@font-face{font-family:SF Mono;src:url(/assets/fonts/SFMono/SFMono-RegularItalic.woff2) format("woff2"),url(/assets/fonts/SFMono/SFMono-RegularItalic.woff) format("woff");font-weight:400;font-style:italic;font-display:auto}/*!sc*/@font-face{font-family:SF Mono;src:url(/assets/fonts/SFMono/SFMono-SemiboldItalic.woff2) format("woff2"),url(/assets/fonts/SFMono/SFMono-SemiboldItalic.woff) format("woff");font-weight:600;font-style:italic;font-display:auto}html{box-sizing:border-box;width:100%;scroll-behavior:smooth}*,:after,:before{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:none;outline-offset:0}: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{margin:0;width:100%;min-height:100%;overflow-x:hidden;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;background-color:var(--navy);color:var(--slate);font-family:var(--font-sans);font-size:var(--fz-xl);line-height:1.3}@media(max-width:480px){body{font-size:var(--fz-lg)}}body.blur,body.hidden{overflow:hidden}body.blur header{background-color:transparent}body.blur #content>*{filter:blur(5px) brightness(.7);transition:var(--transition);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}#root{display:grid;grid-template-rows:1fr auto;grid-template-columns:100%}#root,main{min-height:100vh}main{margin:0 auto;width:100%;max-width:1600px;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{margin:0 auto;padding:100px 0;max-width:1000px}@media(max-width:768px){section{padding:80px 0}}@media(max-width:480px){section{padding:60px 0}}h1,h2,h3,h4,h5,h6{margin:0 0 10px;font-weight:600;color:var(--lightest-slate);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{display:flex;align-items:center;position:relative;margin:10px 0 40px;width:100%;font-size:clamp(26px,5vw,var(--fz-heading));white-space:nowrap}.numbered-heading:before{position:relative;bottom:4px;counter-increment:section;content:"0" counter(section) ".";margin-right:10px;color:var(--green);font-family:var(--font-mono);font-size:clamp(var(--fz-md),3vw,var(--fz-xl));font-weight:400}@media(max-width:480px){.numbered-heading:before{margin-bottom:-3px;margin-right:5px}}.numbered-heading:after{content:"";display:block;position:relative;top:-5px;width:300px;height:1px;margin-left:20px;background-color:var(--lightest-navy)}@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}}.gatsby-image-wrapper,img,svg{width:100%;max-width:100%;vertical-align:middle}img:not([alt]),img[alt=""]{filter:blur(5px)}svg{width:100%;height:100%;fill:currentColor;vertical-align:middle}svg.feather{fill:none}a{display:inline-block;text-decoration:none;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;color:inherit;position:relative;transition:var(--transition)}a.inline-link,a:focus,a:hover{color:var(--green)}a.inline-link{display:inline-block;text-decoration:none;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;position:relative;transition:var(--transition)}a.inline-link:active,a.inline-link:focus,a.inline-link:hover{color:var(--green);outline:0}a.inline-link:active:after,a.inline-link:focus:after,a.inline-link:hover:after{width:100%}a.inline-link:active>*,a.inline-link:focus>*,a.inline-link:hover>*{color:var(--green)!important;transition:var(--transition)}a.inline-link:after{content:"";display:block;width:0;height:1px;position:relative;bottom:.37em;background-color:var(--green);transition:var(--transition);opacity:.5}button{cursor:pointer;border:0;border-radius:0}input,textarea{border-radius:0;outline:0}input:focus,textarea:focus{outline:0}input:active::placeholder,input:focus::placeholder,textarea:active::placeholder,textarea:focus::placeholder{opacity:.5}p{margin:0 0 15px}p:last-child,p:last-of-type{margin:0}p>a{display:inline-block;text-decoration:none;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;position:relative;transition:var(--transition);color:var(--green)}p>a:active,p>a:focus,p>a:hover{color:var(--green);outline:0}p>a:active:after,p>a:focus:after,p>a:hover:after{width:100%}p>a:active>*,p>a:focus>*,p>a:hover>*{color:var(--green)!important;transition:var(--transition)}p>a:after{content:"";display:block;width:0;height:1px;position:relative;bottom:.37em;background-color:var(--green);transition:var(--transition);opacity:.5}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{padding:0;margin:0;list-style:none;font-size:var(--fz-lg)}ul.fancy-list li{position:relative;padding-left:30px;margin-bottom:10px}ul.fancy-list li:before{content:"▹";position:absolute;left:0;color:var(--green)}blockquote{border-left:1px solid var(--green);margin-left:0;margin-right:0;padding-left:1.5rem}blockquote p{font-style:italic;font-size:24px}hr{background-color:var(--lightest-navy);height:1px;border:0 initial;border-color:initial;border-image:initial;margin:1rem}code{font-size:var(--fz-md)}.skip-to-content,code{font-family:var(--font-mono)}.skip-to-content{color:var(--green);background-color:transparent;border:1px solid var(--green);border-radius:var(--border-radius);font-size:var(--fz-xs);line-height:1;text-decoration:none;cursor:pointer;transition:var(--transition);padding:1.25rem 1.75rem;position:absolute;top:auto;left:-999px;width:1px;height:1px;overflow:hidden;z-index:-99}.skip-to-content:active,.skip-to-content:focus,.skip-to-content:hover{background-color:var(--green-tint);outline:none}.skip-to-content:after{display:none!important}.skip-to-content:active,.skip-to-content:focus{background-color:var(--green);color:var(--navy);top:0;left:0;width:auto;height:auto;overflow:auto;z-index:99}#logo{color:var(--green)}.overline,.subtitle{color:var(--green);font-family:var(--font-mono);font-size:var(--fz-md);font-weight:400}.subtitle{margin:0 0 20px;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{display:inline-block;text-decoration:none;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;position:relative;transition:var(--transition);color:var(--green);line-height:1.5}.subtitle a:active,.subtitle a:focus,.subtitle a:hover{color:var(--green);outline:0}.subtitle a:active:after,.subtitle a:focus:after,.subtitle a:hover:after{width:100%}.subtitle a:active>*,.subtitle a:focus>*,.subtitle a:hover>*{color:var(--green)!important;transition:var(--transition)}.subtitle a:after{content:"";display:block;width:0;height:1px;position:relative;bottom:.37em;background-color:var(--green);transition:var(--transition);opacity:.5}.breadcrumb{display:flex;align-items:center;margin-bottom:50px;color:var(--green)}.breadcrumb .arrow{display:block;margin-right:10px;padding-top:4px}.breadcrumb a{display:inline-block;text-decoration:none;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;position:relative;transition:var(--transition);color:var(--green);font-family:var(--font-mono);font-size:var(--fz-sm);font-weight:600;line-height:1.5;text-transform:uppercase;letter-spacing:.1em}.breadcrumb a:active,.breadcrumb a:focus,.breadcrumb a:hover{color:var(--green);outline:0}.breadcrumb a:active:after,.breadcrumb a:focus:after,.breadcrumb a:hover:after{width:100%}.breadcrumb a:active>*,.breadcrumb a:focus>*,.breadcrumb a:hover>*{color:var(--green)!important;transition:var(--transition)}.breadcrumb a:after{content:"";display:block;width:0;height:1px;position:relative;bottom:.37em;background-color:var(--green);transition:var(--transition);opacity:.5}.gatsby-image-outer-wrapper{height:100%}.gatsby-highlight{background-color:#112340;color:#a2aabc;border-radius:var(--border-radius);margin:2em 0;padding:1.25em;overflow:auto;position:relative;font-family:var(--font-mono);font-size:var(--fz-md)}.gatsby-highlight code[class*=language-],.gatsby-highlight pre[class*=language-]{height:auto!important;font-size:var(--fz-sm);line-height:1.5;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:2;tab-size:2;-webkit-hyphens:none;hyphens:none}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;overflow:initial;float:left;min-width:100%;padding:2em 0 0}.gatsby-code-title{padding:1em 1.5em;font-family:var(--font-mono);font-size:var(--fz-xs);background-color:#112340;color:#a2aabc;border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom:1px solid #1d2d50}.gatsby-code-title+.gatsby-highlight{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.gatsby-highlight-code-line{display:block;background-color:#1d2d50;border-left:2px solid var(--green);padding-left:calc(1em + 2px);padding-right:1em;margin-right:-1.35em;margin-left:-1.35em}.gatsby-highlight pre[class*=language-]:before{background:var(--lightest-navy);color:var(--white);font-size:var(--fz-xxs);font-family:var(--font-mono);line-height:1.5;letter-spacing:.1em;text-transform:uppercase;border-radius:0 0 3px 3px;position:absolute;top:0;left:1.25rem;padding:.25rem .5rem}.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-json5]:before,.gatsby-highlight pre[class=language-json]: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.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:rgba(134,149,183,.6)}.token.punctuation{color:#a2aabc}.token.deleted,.token.namespace{color:#ef6b73}.token.class-name,.token.constant,.token.function,.token.function-name,.token.symbol{color:#ffd580}.token.attr-name,.token.operator,.token.rule{color:#ffae57}.token.boolean,.token.keyword,.token.number,.token.property{color:#c3a6ff}.token.atrule,.token.builtin,.token.entity,.token.important,.token.selector,.token.tag,.token.url{color:#5ccfe6}.token.attr-value,.token.char,.token.inserted,.token.regex,.token.string,.token.variable{color:#bae67e}.token.bold,.token.important{font-weight:600}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}.fadeup-enter{opacity:.01;transform:translateY(20px)}.fadeup-enter,.fadeup-enter-active{transition:opacity .3s var(--easing),transform .3s var(--easing)}.fadeup-enter-active{opacity:1;transform:translateY(0)}.fadedown-enter{opacity:.01;transform:translateY(-20px)}.fadedown-enter,.fadedown-enter-active{transition:opacity .3s var(--easing),transform .3s var(--easing)}.fadedown-enter-active{opacity:1;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:rgba(2,12,27,.7);--dark-slate:#495670;--slate:#8892b0;--light-slate:#a8b2d1;--lightest-slate:#ccd6f6;--white:#e6f1ff;--green:#64ffda;--green-tint:rgba(100,255,218,.1);--pink:#f57dff;--blue:#57cbff;--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(0.645,0.045,0.355,1);--transition:all 0.25s cubic-bezier(0.645,0.045,0.355,1);--hamburger-width:30px;--ham-before:top 0.1s ease-in 0.25s,opacity 0.1s ease-in;--ham-before-active:top 0.1s ease-out,opacity 0.1s ease-out 0.12s;--ham-after:bottom 0.1s ease-in 0.25s,transform 0.22s cubic-bezier(0.55,0.055,0.675,0.19);--ham-after-active:bottom 0.1s ease-out,transform 0.22s cubic-bezier(0.215,0.61,0.355,1) 0.12s}.loader{display:flex;justify-content:center;align-items:center;position:fixed;top:0;bottom:0;left:0;right:0;width:100%;height:100%;background-color:var(--dark-navy);z-index:99}.loader .logo-wrapper{width:max-content;max-width:100px;transition:var(--transition)}.loader .logo-wrapper.hidden{opacity:1}.loader .logo-wrapper svg{display:block;width:100%;height:100%;margin:0 auto;fill:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.loader .logo-wrapper svg #B{opacity:0}.loader.hidden{opacity:0;transition:opacity .2s ease-in-out}@keyframes animate-logo-path{0%{fill:transparent}to{fill:#64ffda}}.loader .logo-path{animation:animate-logo-path .7s cubic-bezier(.47,0,.745,.715) .8s both}@keyframes animate-logo-stroke{0%{stroke-dashoffset:272.1082763672px;stroke-dasharray:272.1082763672px}to{stroke-dashoffset:0;stroke-dasharray:272.1082763672px}}.loader .logo-stroke{animation:animate-logo-stroke 1s cubic-bezier(.47,0,.745,.715) .03s both}.layout-wrapper{display:flex;flex-direction:column;min-height:100vh}.header{display:flex;justify-content:space-between;align-items:center;position:fixed;top:0;z-index:11;padding:0 50px;width:100%;height:var(--nav-height);background-color:rgba(10,25,47,.85);filter:none!important;pointer-events:auto!important;-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:var(--transition)}@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{transform:translateY(0);background-color:rgba(10,25,47,.85)}.header.scroll-down,.header.scroll-up{height:var(--nav-scroll-height);box-shadow:0 10px 30px -10px var(--navy-shadow)}.header.scroll-down{transform:translateY(calc(var(--nav-scroll-height) * -1))}}.nav{justify-content:space-between;position:relative;width:100%;color:var(--lightest-slate);font-family:var(--font-mono);counter-reset:item 0;z-index:12}.nav,.nav .logo{display:flex;align-items:center}.nav .logo{justify-content:center}.nav .logo a{color:var(--green);width:64px;height:64px}.nav .logo a:focus svg,.nav .logo a:hover svg{fill:var(--green-tint)}.nav .logo a svg{fill:none;transition:var(--transition);-webkit-user-select:none;-moz-user-select:none;user-select:none}.nav-link{display:flex;align-items:center}@media(max-width:768px){.nav-link{display:none}}.nav-link ol{display:flex;justify-content:space-between;align-items:center;padding:0;margin:0;list-style:none}.nav-link ol li{margin:0 5px;position:relative;counter-increment:item 1;font-size:var(--fz-xs)}.nav-link ol li a{padding:10px}.nav-link ol li a:before{content:"0" counter(item) ".";margin-right:5px;color:var(--green);font-size:var(--fz-xxs);text-align:right}.nav-link .resume-button{color:var(--green);background-color:transparent;border:1px solid var(--green);border-radius:var(--border-radius);padding:.75rem 1rem;font-family:var(--font-mono);line-height:1;text-decoration:none;cursor:pointer;transition:var(--transition);margin-left:15px;font-size:var(--fz-xs)}.nav-link .resume-button:active,.nav-link .resume-button:focus,.nav-link .resume-button:hover{background-color:var(--green-tint);outline:none}.nav-link .resume-button:after{display:none!important}.side-element{width:40px;position:fixed;bottom:0;left:auto;right:40px;z-index:10;color:var(--light-slate)}.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{display:flex;flex-direction:column;align-items:center;margin:0;padding:0;list-style:none}.social-list:after{content:"";display:block;width:1px;height:90px;margin:0 auto;background-color:var(--light-slate)}.social-list li:last-of-type{margin-bottom:20px}.social-list li a{padding:10px}.social-list li a:focus,.social-list li a:hover{transform:translateY(-3px)}.social-list li a svg{width:20px;height:20px}.link-wrapper{display:flex;flex-direction:column;align-items:center;position:relative}.link-wrapper:after{content:"";display:block;width:1px;height:90px;margin:0 auto;background-color:var(--light-slate)}.link-wrapper a{margin:20px auto;padding:10px;font-family:var(--font-mono);font-size:var(--fz-xxs);line-height:var(--fz-lg);letter-spacing:.1em;writing-mode:vertical-rl}.link-wrapper a:focus,.link-wrapper a:hover{transform:translateY(-3px)}.footer{display:flex;justify-content:center;align-items:center;flex-direction:column;height:auto;min-height:70px;padding:15px;text-align:center}.social-links{display:none}@media(max-width:768px){.social-links{display:block;width:100%;max-width:270px;margin:0 auto;color:var(--light-slate)}}.social-links ul{display:flex;justify-content:space-between;align-items:center;padding:0;margin:0;list-style:none}.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{display:flex;justify-content:center;align-items:center;position:relative;z-index:10;margin-right:-15px;padding:15px;border:0;background-color:transparent;color:inherit;text-transform:none;transition-timing-function:linear;transition-duration:.15s;transition-property:opacity,filter}}.hamburger-button .ham-box{display:inline-block;position:relative;width:var(--hamburger-width);height:24px}.hamburger-button .ham-box-inner{position:absolute;top:50%;right:0;width:var(--hamburger-width);height:2px;border-radius:var(--border-radius);background-color:var(--green);transition-duration:.22s;transition-property:transform;transition-delay:0s;transform:rotate(0deg);transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger-button .ham-box-inner:after,.hamburger-button .ham-box-inner:before{content:"";display:block;position:absolute;left:auto;right:0;width:var(--hamburger-width);height:2px;border-radius:4px;background-color:var(--green);transition-timing-function:ease;transition-duration:.15s;transition-property:transform}.hamburger-button .ham-box-inner:before{width:120%;top:-10px;opacity:1;transition:var(--ham-before)}.hamburger-button .ham-box-inner:after{width:80%;bottom:-10px;transform:rotate(0);transition:var(--ham-after)}.hamburger-button.menu-open .ham-box-inner{transition-delay:.12s;transform:rotate(225deg);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger-button.menu-open .ham-box-inner:before{width:100%;top:0;opacity:0;transition:var(--ham-before-active)}.hamburger-button.menu-open .ham-box-inner:after{width:100%;bottom:0;transform:rotate(-90deg);transition:var(--ham-after-active)}.aside{display:none}@media(max-width:768px){.aside{display:flex;justify-content:center;align-items:center;position:fixed;top:0;bottom:0;right:0;padding:50px 10px;width:min(75vw,400px);height:100vh;outline:0;background-color:var(--light-navy);box-shadow:-10px 0 30px -15px var(--navy-shadow);z-index:9;transform:translateX(100vw);visibility:hidden;transition:var(--transition)}.aside.menu-open{transform:translateX(0);visibility:visible}}.aside nav{display:flex;justify-content:space-between;align-items:center;width:100%;flex-direction:column;color:var(--lightest-slate);font-family:var(--font-mono);text-align:center}.aside ol{padding:0;margin:0;list-style:none;width:100%}.aside ol li{position:relative;margin:0 auto 20px;counter-increment:item 1;font-size:clamp(var(--fz-sm),4vw,var(--fz-lg))}@media(max-width:600px){.aside ol li{margin:0 auto 10px}}.aside ol li:before{content:"0" counter(item) ".";display:block;margin-bottom:5px;color:var(--green);font-size:var(--fz-sm)}.aside ol a{display:inline-block;text-decoration:none;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;color:inherit;position:relative;transition:var(--transition);width:100%;padding:3px 20px 20px}.aside ol a:active,.aside ol a:focus,.aside ol a:hover{color:var(--green);outline:0}.aside .resume-link{color:var(--green);background-color:transparent;border:1px solid var(--green);border-radius:var(--border-radius);font-size:var(--fz-sm);font-family:var(--font-mono);line-height:1;text-decoration:none;cursor:pointer;transition:var(--transition);padding:18px 50px;margin:10% auto 0;width:max-content}.aside .resume-link:active,.aside .resume-link:focus,.aside .resume-link:hover{background-color:var(--green-tint);outline:none}.aside .resume-link:after{display:none!important}.hero-section{display:flex;justify-content:center;align-items:center;flex-direction:column;align-items:flex-start;min-height:100vh;padding:0}@media(max-height:700px)and (min-width:700px),(max-width:360px){.hero-section{height:auto;padding-top:var(--nav-height)}}.hero-section h1{margin:0 0 30px 4px;color:var(--green);font-family:var(--font-mono);font-size:clamp(var(--fz-sm),5vw,var(--fz-md));font-weight:400}@media(max-width:480px){.hero-section h1{margin:0 0 20px 2px}}.hero-section h3{margin-top:5px;color:var(--slate);line-height:.9}.hero-section p{margin:20px 0 0}.hero-section .email-link{color:var(--green);background-color:transparent;border:1px solid var(--green);border-radius:var(--border-radius);padding:1.25rem 1.75rem;font-size:var(--fz-sm);font-family:var(--font-mono);line-height:1;text-decoration:none;cursor:pointer;transition:var(--transition);margin-top:50px}.hero-section .email-link:active,.hero-section .email-link:focus,.hero-section .email-link:hover{background-color:var(--green-tint);outline:none}.hero-section .email-link:after{display:none!important}.about-section{max-width:900px}.about-section .inner{display:grid;grid-template-columns:3fr 2fr;grid-gap:50px}@media(max-width:768px){.about-section .inner{display:block}}.about-text ul.skills-list{display:grid;grid-template-columns:repeat(2,minmax(140px,200px));grid-gap:0 10px;padding:0;margin:20px 0 0;overflow:hidden;list-style:none}.about-text ul.skills-list li{position:relative;margin-bottom:10px;padding-left:20px;font-family:var(--font-mono);font-size:var(--fz-xs)}.about-text ul.skills-list li:before{content:"▹";position:absolute;left:0;color:var(--green);font-size:var(--fz-sm);line-height:12px}.about-pic{position:relative;max-width:300px}@media(max-width:768px){.about-pic{margin:50px auto 0;width:70%}}.about-pic .wrapper{box-shadow:0 10px 30px -15px var(--navy-shadow);transition:var(--transition);display:block;position:relative;width:100%;border-radius:var(--border-radius);background-color:var(--green)}.about-pic .wrapper:focus,.about-pic .wrapper:hover{box-shadow:0 20px 30px -15px var(--navy-shadow);outline:0}.about-pic .wrapper:focus:after,.about-pic .wrapper:hover:after{top:15px;left:15px}.about-pic .wrapper:focus .img,.about-pic .wrapper:hover .img{filter:none;mix-blend-mode:normal}.about-pic .wrapper .img{position:relative;border-radius:var(--border-radius);mix-blend-mode:multiply;filter:grayscale(100%) contrast(1);transition:var(--transition);height:auto}.about-pic .wrapper:after,.about-pic .wrapper:before{content:"";display:block;position:absolute;width:100%;height:100%;border-radius:var(--border-radius);transition:var(--transition)}.about-pic .wrapper:before{top:0;left:0;background-color:var(--navy);mix-blend-mode:screen}.about-pic .wrapper:after{border:2px solid var(--green);top:20px;left:20px;z-index:-1}.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{position:relative;z-index:3;width:max-content;padding:0;margin:0;list-style:none}@media(max-width:600px){.jobs-tab-list{display:flex;overflow-x:auto;width:calc(100% + 100px);padding-left:50px;margin-left:-50px;margin-bottom:30px}}@media(max-width:480px){.jobs-tab-list{width:calc(100% + 50px);padding-left:25px;margin-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{display:inline-block;text-decoration:none;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;color:inherit;position:relative;transition:var(--transition);display:flex;align-items:center;width:100%;height:var(--tab-height);padding:0 20px 2px;border-left:2px solid var(--lightest-navy);background-color:transparent;color:var(--slate);font-family:var(--font-mono);font-size:var(--fz-xs);text-align:left;white-space:nowrap}.jobs-tab-button:active,.jobs-tab-button:focus,.jobs-tab-button:hover{color:var(--green);outline:0}.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{display:flex;justify-content:center;align-items:center;min-width:120px;padding:0 15px;border-left:0;border-bottom:2px solid var(--lightest-navy);text-align:center}}.jobs-tab-button:focus,.jobs-tab-button:hover{background-color:var(--light-navy)}.jobs-highlight{position:absolute;top:0;left:0;z-index:10;width:2px;height:var(--tab-height);border-radius:var(--border-radius);background:var(--green);transition:transform .25s cubic-bezier(.645,.045,.355,1);transition-delay:.1s}@media(max-width:600px){.jobs-highlight{top:auto;bottom:0;width:100%;max-width:var(--tab-width);height:2px;margin-left:50px;transform:translateX(calc(attr(active-tab-id) * var(--tab-width)))}}@media(max-width:480px){.jobs-highlight{margin-left:25px}}.jobs-tab-panels{position:relative;width:100%;margin-left:20px}@media(max-width:600px){.jobs-tab-panels{margin-left:0}}.jobs-tab-panel{width:100%;height:auto;padding:10px 5px}.jobs-tab-panel ul{padding:0;margin:0;list-style:none;font-size:var(--fz-lg)}.jobs-tab-panel ul li{position:relative;padding-left:30px;margin-bottom:10px}.jobs-tab-panel ul li:before{content:"▹";position:absolute;left:0;color:var(--green)}.jobs-tab-panel h3{margin-bottom:2px;font-size:var(--fz-xxl);font-weight:500;line-height:1.3}.jobs-tab-panel h3 .company{color:var(--green)}.jobs-tab-panel .range{margin-bottom:25px;color:var(--light-slate);font-family:var(--font-mono);font-size:var(--fz-xs)}.featured-projects-grid{list-style:none;padding:0;margin:0}.featured-projects-grid a{position:relative;z-index:1}.featured-projects-project{position:relative;display:grid;grid-gap:10px;grid-template-columns:repeat(12,1fr);align-items:center}@media(max-width:768px){.featured-projects-project{box-shadow:0 10px 30px -15px var(--navy-shadow);transition:var(--transition)}.featured-projects-project:focus,.featured-projects-project:hover{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{grid-column:7/-1;text-align:right}@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{grid-column:1/-1;padding:40px 40px 30px;text-align:left}}@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{position:relative;grid-column:1/7;grid-row:1/-1}@media(max-width:1080px){.featured-projects-project .project-content{grid-column:1/9}}@media(max-width:768px){.featured-projects-project .project-content{display:flex;flex-direction:column;justify-content:center;height:100%;grid-column:1/-1;padding:40px 40px 30px;z-index:5}}@media(max-width:480px){.featured-projects-project .project-content{padding:30px 25px 20px}}.featured-projects-project .project-overline{margin:10px 0;color:var(--green);font-family:var(--font-mono);font-size:var(--fz-xs);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:"";display:block;position:absolute;z-index:0;width:100%;height:100%;top:0;left:0}}.featured-projects-project .project-description{box-shadow:0 10px 30px -15px var(--navy-shadow);transition:var(--transition);position:relative;z-index:2;padding:25px;border-radius:var(--border-radius);background-color:var(--light-navy);color:var(--light-slate);font-size:var(--fz-lg)}.featured-projects-project .project-description:focus,.featured-projects-project .project-description:hover{box-shadow:0 20px 30px -15px var(--navy-shadow)}@media(max-width:768px){.featured-projects-project .project-description{padding:20px 0;background-color:transparent;box-shadow:none}.featured-projects-project .project-description:hover{box-shadow:none}}.featured-projects-project .project-description a{display:inline-block;text-decoration:none;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;position:relative;transition:var(--transition);color:var(--green)}.featured-projects-project .project-description a:active,.featured-projects-project .project-description a:focus,.featured-projects-project .project-description a:hover{color:var(--green);outline:0}.featured-projects-project .project-description a:active:after,.featured-projects-project .project-description a:focus:after,.featured-projects-project .project-description a:hover:after{width:100%}.featured-projects-project .project-description a:active>*,.featured-projects-project .project-description a:focus>*,.featured-projects-project .project-description a:hover>*{color:var(--green)!important;transition:var(--transition)}.featured-projects-project .project-description a:after{content:"";display:block;width:0;height:1px;position:relative;bottom:.37em;background-color:var(--green);transition:var(--transition);opacity:.5}.featured-projects-project .project-description strong{color:var(--white);font-weight:400}.featured-projects-project .project-tech-list{display:flex;flex-wrap:wrap;position:relative;z-index:2;margin:25px 0 10px;padding:0;list-style:none}.featured-projects-project .project-tech-list li{margin:0 20px 5px 0;color:var(--light-slate);font-family:var(--font-mono);font-size:var(--fz-xs);white-space:nowrap}@media(max-width:768px){.featured-projects-project .project-tech-list{margin:10px 0}.featured-projects-project .project-tech-list li{margin:0 10px 5px 0;color:var(--lightest-slate)}}.featured-projects-project .project-links{display:flex;align-items:center;position:relative;margin-top:10px;margin-left:-10px;color:var(--lightest-slate)}.featured-projects-project .project-links a{display:flex;justify-content:center;align-items:center;padding:10px}.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);background-color:transparent;border:1px solid var(--green);border-radius:var(--border-radius);padding:.75rem 1rem;font-size:var(--fz-xs);font-family:var(--font-mono);line-height:1;text-decoration:none;cursor:pointer;transition:var(--transition);margin:10px}.featured-projects-project .project-links .cta:active,.featured-projects-project .project-links .cta:focus,.featured-projects-project .project-links .cta:hover{background-color:var(--green-tint);outline:none}.featured-projects-project .project-links .cta:after{display:none!important}.featured-projects-project .project-image{box-shadow:0 10px 30px -15px var(--navy-shadow);transition:var(--transition);grid-column:6/-1;grid-row:1/-1;position:relative;z-index:1}.featured-projects-project .project-image:focus,.featured-projects-project .project-image:hover{box-shadow:0 20px 30px -15px var(--navy-shadow)}@media(max-width:768px){.featured-projects-project .project-image{grid-column:1/-1;height:100%;opacity:.25}}.featured-projects-project .project-image a{width:100%;height:100%;background-color:var(--green);border-radius:var(--border-radius);vertical-align:middle}.featured-projects-project .project-image a:focus,.featured-projects-project .project-image a:hover{background:transparent;outline:0}.featured-projects-project .project-image a:focus .img,.featured-projects-project .project-image a:focus:before,.featured-projects-project .project-image a:hover .img,.featured-projects-project .project-image a:hover:before{background:transparent;filter:none}.featured-projects-project .project-image a:before{content:"";position:absolute;width:100%;height:100%;top:0;left:0;right:0;bottom:0;z-index:3;transition:var(--transition);background-color:var(--navy);mix-blend-mode:screen}.featured-projects-project .project-image .img{height:auto;border-radius:var(--border-radius);mix-blend-mode:multiply;filter:grayscale(100%) contrast(1) brightness(90%)}@media(max-width:768px){.featured-projects-project .project-image .img{object-fit:cover;width:auto;height:100%;filter:grayscale(100%) contrast(1) brightness(50%)}}.projects-section{display:flex;flex-direction:column;align-items:center}.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{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:15px;position:relative;margin:50px 0 0}@media(max-width:1080px){.projects-section .projects-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}}.projects-section .more-button{color:var(--green);background-color:transparent;border:1px solid var(--green);border-radius:var(--border-radius);font-size:var(--fz-xs);font-family:var(--font-mono);line-height:1;text-decoration:none;cursor:pointer;transition:var(--transition);padding:1.25rem 1.75rem;margin:80px auto 0}.projects-section .more-button:active,.projects-section .more-button:focus,.projects-section .more-button:hover{background-color:var(--green-tint);outline:none}.projects-section .more-button:after{display:none!important}.projects-project{position:relative;cursor:default;transition:var(--transition)}@media(prefers-reduced-motion:no-preference){.projects-project:focus-within .project-inner,.projects-project:hover .project-inner{transform:translateY(-7px)}}.projects-project a{position:relative;z-index:1}.projects-project .project-inner{box-shadow:0 10px 30px -15px var(--navy-shadow);display:flex;justify-content:space-between;align-items:center;flex-direction:column;align-items:flex-start;position:relative;height:100%;padding:2rem 1.75rem;border-radius:var(--border-radius);background-color:var(--light-navy);transition:var(--transition);overflow:auto}.projects-project .project-inner:focus,.projects-project .project-inner:hover{box-shadow:0 20px 30px -15px var(--navy-shadow)}.projects-project .project-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:35px}.projects-project .project-top .folder{color:var(--green)}.projects-project .project-top .folder svg{width:40px;height:40px}.projects-project .project-top .project-links{display:flex;align-items:center;margin-right:-10px;color:var(--light-slate)}.projects-project .project-top .project-links a{display:flex;justify-content:center;align-items:center;padding:5px 7px}.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{margin:0 0 10px;color:var(--lightest-slate);font-size:var(--fz-xxl)}.projects-project .project-title a{position:static}.projects-project .project-title a:before{content:"";display:block;position:absolute;z-index:0;width:100%;height:100%;top:0;left:0}.projects-project .project-description{color:var(--light-slate);font-size:17px}.projects-project .project-description a{display:inline-block;text-decoration:none;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;position:relative;transition:var(--transition);color:var(--green)}.projects-project .project-description a:active,.projects-project .project-description a:focus,.projects-project .project-description a:hover{color:var(--green);outline:0}.projects-project .project-description a:active:after,.projects-project .project-description a:focus:after,.projects-project .project-description a:hover:after{width:100%}.projects-project .project-description a:active>*,.projects-project .project-description a:focus>*,.projects-project .project-description a:hover>*{color:var(--green)!important;transition:var(--transition)}.projects-project .project-description a:after{content:"";display:block;width:0;height:1px;position:relative;bottom:.37em;background-color:var(--green);transition:var(--transition);opacity:.5}.projects-project .project-tech-list{display:flex;align-items:flex-end;flex-grow:1;flex-wrap:wrap;padding:0;margin:20px 0 0;list-style:none}.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{max-width:600px;margin:0 auto 100px;text-align:center}@media(max-width:768px){.contact-section{margin:0 auto 50px}}.contact-section .overline{display:block;margin-bottom:20px;color:var(--green);font-family:var(--font-mono);font-size:var(--fz-md);font-weight:400}.contact-section .overline:before{bottom:0;font-size:var(--fz-sm)}.contact-section .overline:after{display:none}.contact-section .title{font-size:clamp(40px,5vw,60px)}.contact-section .email-link{color:var(--green);background-color:transparent;border:1px solid var(--green);border-radius:var(--border-radius);padding:1.25rem 1.75rem;font-size:var(--fz-sm);font-family:var(--font-mono);line-height:1;text-decoration:none;cursor:pointer;transition:var(--transition);margin-top:50px}.contact-section .email-link:active,.contact-section .email-link:focus,.contact-section .email-link:hover{background-color:var(--green-tint);outline:none}.contact-section .email-link:after{display:none!important}