:root{--primary-color: #0a192f;--sidebar-color: #112240;--green: rgb(100 255 218);--white: #e6f1ff;--menu-text-color: #bbc5e5;--header-spacing: 2rem;--transition: all .25s cubic-bezier(.645, .045, .355, 1);--font-mono: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", monospace;--font-sans: "Calibre", "Inter", "San Francisco", "SF Pro Text", -apple-system, system-ui, sans-serif;--border-radius: .25rem;--fz-xxs: .75rem;--fx-xs: .813rem;--fz-xs: .813rem;--fz-sm: .875rem;--fz-md: 1.1rem;--fz-lg: 1.125rem;--fz-xl: 1.375rem;--fz-xxl: 1.375rem;--fz-heading: 2rem;--nav-height: 6.25rem;--text-line-height: 1.056;--nav-scroll-height: 4.375rem;--navy-shadow: rgba(2 12 27 / 70%);--light-navy: #112240;--lightest-navy: rgb(35 53 84);--light-slate: #a8b2d1;--lightest-slate: #ccd6f6;--slate: #8892b0;--tab-height: 2.625rem}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0;font:inherit}ul[role=list],ol[role=list]{list-style:none}html,body{height:100%;background-color:var(--primary-color);line-height:var(--text-line-height);scroll-behavior:smooth}html:focus-within{scroll-behavior:smooth}body{text-rendering:optimizespeed;line-height:1.5;font-family:var(--font-sans);color:#8892b0}a{display:inline-block;text-decoration:none;text-decoration-skip-ink:auto;color:inherit;position:relative;transition:var(--transition)}a:not([class]){text-decoration-skip-ink:auto}img,picture,svg{max-width:100%;display:block}svg{vertical-align:middle;width:100%;height:100%;fill:currentcolor}h1,h2,h3,h4,h5,h6{margin:0 0 .625rem;font-weight:600;color:var(--lightest-slate);line-height:1.1}section{margin:0 auto;padding:6.25rem 0 0;max-width:62.5rem}.numbered-heading{display:flex;align-items:center;position:relative;margin:.625rem 0 2.5rem;width:100%;font-size:clamp(1.625rem,5vw,var(--fz-heading));white-space:nowrap}.numbered-heading:before{position:relative;counter-increment:section 1;content:"0" counter(section) ".";margin-top:.25rem;margin-right:.625rem;color:var(--green);font-family:var(--font-mono);font-size:clamp(var(--fz-md),3vw,var(--fz-xl));font-weight:400}.numbered-heading:not(.overline):after{content:"";display:block;position:relative;top:-.313rem;width:18.75rem;height:.063rem;margin-left:1.25rem;background-color:var(--lightest-navy)}button{cursor:pointer;border:0;border-radius:0}@media (prefers-reduced-motion: reduce){html:focus-within{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}#app{display:flex;flex-direction:column;height:100vh}.hamburger-menu{display:block}.blur{filter:blur(.313rem) brightness(.7);transition:var(--transition);pointer-events:none;-webkit-user-select:none;user-select:none}.skip-link{position:fixed;top:0;left:0;right:0;text-align:center;background-color:#333;color:#fff;padding:.5rem;translate:0 -100%;transition:translate .15s ease-in-out}.skip-link:focus{translate:0}img,svg,.image-wrapper{width:100%;max-width:100%;vertical-align:middle}.image-wrapper-constrained{display:inline-block}.image-wrapper{position:relative;overflow:hidden}.image-wrapper img{bottom:0;height:100%;left:0;margin:0;max-width:none;padding:0;position:absolute;right:0;top:0;width:100%;object-fit:cover}.overline{color:var(--green);font-family:var(--font-mono);font-size:var(--fz-md);font-weight:400}@media screen and (min-width: 48rem){.hamburger-menu{display:none}.numbered-heading:after{width:100%}}@media (max-width: 67.5rem){.numbered-heading:after{width:12.5rem}}@media (max-width: 48rem){section{padding:5rem 0 0}}@media (max-width: 30rem){section{padding:3.75rem 0 0}.numbered-heading:before{margin-bottom:.188rem;margin-right:.313rem}}.menu-box{display:block;position:fixed;top:0;right:-100%;width:min(75vw,25rem);height:100%;margin:0;padding:5rem 0;list-style:none;background-color:var(--sidebar-color);box-shadow:.125rem .125rem .375rem #0006;transition-duration:.25s}.menu-box li{margin:0 auto 1.25rem;font-size:clamp(var(--fz-sm),4vw,var(--fz-lg))}#menu-toggle{opacity:0}.menu-btn{display:block;position:relative;width:1.625rem;height:1.625rem;cursor:pointer;z-index:1}.menu-btn>span,.menu-btn>span:before,.menu-btn>span:after{display:block;position:absolute;width:100%;height:.125rem;background-color:#616161;transition-duration:.25s}.menu-btn>span:before{content:"";top:-.5rem}.menu-btn>span:after{content:"";top:.5rem}.menu-item-num{text-align:center;color:var(--green);font-size:var(--fz-sm);font-family:var(--font-mono)}.menu-item{display:block;padding:0 1.5rem .75rem;font-family:var(--font-mono);font-size:var(--fz-lg);font-weight:600;text-decoration:none;transition-duration:.25s;text-align:center;color:var(--menu-text-color)}.menu-item:hover{background-color:#cfd8dc}.sidebar-button-li{display:flex;justify-content:center}.sidebar-button-container.sidebar-button-container{margin:10% auto 0;padding:1.125rem 3.125rem}.sidebar-button.sidebar-button{font-weight:700}#menu-toggle:checked+.menu-btn>span{transform:rotate(45deg)}#menu-toggle:checked+.menu-btn>span:before{top:0;transform:rotate(0)}#menu-toggle:checked+.menu-btn>span:after{top:0;transform:rotate(90deg)}#menu-toggle:checked~.menu-box{right:0!important}.button-container{border:.063rem solid var(--green);border-radius:var(--border-radius)}.button{color:var(--green);background-color:transparent;font-size:var(--fz-sm);font-family:var(--font-mono);line-height:1;text-decoration:none;cursor:pointer;transition:var(--transition);padding:.75rem 1rem;width:max-content}.button:hover{opacity:.5}.header-main{display:flex;flex-direction:row;justify-content:space-between;align-items:center;width:100%;height:var(--nav-height);position:fixed;top:0;z-index:11;padding:0 3.125rem;background-color:#0a192ff2;transition:var(--transition);filter:none;pointer-events:auto;-webkit-user-select:auto;user-select:auto}.header-main.hide{top:calc(var(--nav-height) * -1)}.header-menu{display:none}.header-container{display:flex;flex-direction:row;justify-content:space-between;align-items:center;width:100%}.header-logo{height:2.5rem;width:2.5rem}.header-button-container.header-button-container{display:flex;justify-content:center;margin-left:.938rem;height:2.438rem;width:6.077rem}.nav-list{display:flex;list-style:none}.nav-list li{margin:0 .313rem;position:relative;counter-increment:item 1;font-size:var(--fz-xs)}.nav-list li a:before{content:"0" counter(item) ".";margin-right:.313rem;color:var(--green);font-size:var(--fz-xxs);text-align:right}.nav-list li a{padding:.625rem;display:inline-block;text-decoration:none;text-decoration-skip-ink:auto;color:var(--menu-text-color);position:relative;transition:var(--transition);line-height:var(--text-line-height)}@media screen and (min-width: 48rem){.header-menu{display:flex;align-items:center}}.main-bio{display:flex;justify-content:center;flex-direction:column;align-items:flex-start;min-height:100vh;padding:0}.main-bio h1{margin:0 0 1.875rem .25rem;color:var(--green);font-family:var(--font-mono);font-size:clamp(var(--fz-sm),5vw,var(--fz-md));font-weight:400}.main-bio h3{margin-top:.625rem;color:var(--slate);line-height:.9}.main-bio p{margin:1.25rem 0 0;max-width:33.75rem}@media (max-width: 30rem){.main-bio{min-height:70vh}}.about-section{visibility:visible;opacity:1;transform:scaleZ(1);transition:opacity .5s cubic-bezier(.645,.045,.355,1) .2s,transform .5s cubic-bezier(.645,.045,.355,1) .2s;max-width:56.25rem}.about-section .inner{display:grid;grid-template-columns:3fr 2fr;gap:3.125rem}.about-skills ul.skills-list{display:grid;grid-template-columns:repeat(2,minmax(8.75rem,12.5rem));gap:0 .625rem;padding:0;margin:1.25rem 0 0;overflow:hidden;list-style:none}.about-skills ul.skills-list li{position:relative;margin-bottom:.625rem;padding-left:1.25rem;font-family:var(--font-mono);font-size:var(--fz-xs)}.about-skills ul.skills-list li:before{content:"▹";position:absolute;left:0;color:var(--green);font-size:var(--fz-sm);line-height:.75rem}.about-headshot{position:relative;max-width:18.75rem}.about-headshot-wrapper{box-shadow:0 .625rem 1.875rem -.938rem var(--navy-shadow);transition:var(--transition);display:block;position:relative;width:100%;border-radius:var(--border-radius);background-color:var(--green)}.about-headshot-wrapper:after{border:.125rem solid var(--green);top:1.25rem;left:1.25rem;z-index:-1}.about-headshot-wrapper:before,.about-headshot-wrapper:after{content:"";display:block;position:absolute;width:100%;height:100%;border-radius:var(--border-radius);transition:var(--transition)}.about-image-wrapper{position:relative;border-radius:var(--border-radius);mix-blend-mode:multiply;filter:grayscale(100%) contrast(1);transition:var(--transition);width:100%;max-width:100%;vertical-align:middle;display:inline-block;overflow:hidden}.about-image-container{max-width:31.25rem;display:block}.about-image-container img{max-width:100%;display:block;position:static;bottom:0;height:100%;left:0;margin:0;padding:0;right:0;top:0;width:100%;object-fit:cover}.about-image-placeholder{opacity:0;transition:opacity .5s linear 0s;background-color:#e8e8e8;position:absolute;top:0;right:0;bottom:0;left:0;object-fit:cover}@media (max-width: 30rem){.about-skills ul.skills-list{grid-template-columns:repeat(1,minmax(8.75rem,12.5rem))}}@media (max-width: 48rem){.about-section{margin-bottom:4rem}}@media (max-width: 48rem){.about-section .inner{display:block}.about-headshot{margin:3.125rem auto 0;width:70%}}:root{--selected-tab: 0}.jobs-section{max-width:43.75rem}.jobs-section .inner{display:block}.jobs-tabs{position:relative;z-index:3;width:max-content;padding:0;margin:0;list-style:none}.jobs-tab{text-decoration:none;text-decoration-skip-ink:auto;position:relative;transition:var(--transition);display:flex;align-items:center;width:100%;height:var(--tab-height);padding:0 1.25rem .125rem;border-left:.125rem solid var(--lightest-navy);background-color:transparent;color:var(--green);font-family:var(--font-mono);font-size:var(--fz-xs);text-align:left;white-space:nowrap}.jobs-selected-tab{position:absolute;top:0;left:0;z-index:10;width:.125rem;height:var(--tab-height);border-radius:var(--border-radius);background:var(--green);transition:transform .25s cubic-bezier(.645,.045,.355,1) .1s}.jobs-tab-0{transform:translateY(calc(0 * var(--tab-height)))}.jobs-tab-1{transform:translateY(calc(1 * var(--tab-height)))}.jobs-tab-2{transform:translateY(calc(2 * var(--tab-height)))}.jobs-tab-3{transform:translateY(calc(3 * var(--tab-height)))}.jobs-tab-4{transform:translateY(calc(4 * var(--tab-height)))}.jobs-tab-panels{position:relative;width:100%;margin-left:1.25rem}.jobs-tab-panel{width:100%;height:auto;padding:.625rem .313rem}.jobs-tab-panel h3{margin-bottom:.125rem;font-size:var(--fz-xxl);font-weight:500;line-height:1.3}.jobs-tab-panel h3 .jobs-company{color:var(--green)}.jobs-tab-panel .jobs-range{margin-bottom:1.563rem;color:var(--light-slate);font-family:var(--font-mono);font-size:var(--fz-xs)}.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:1.875rem;margin-bottom:.625rem}.jobs-tab-panel ul li:before{content:"▹";position:absolute;left:0;color:var(--green)}@media (min-width: 37.5rem){.jobs-section .inner{display:flex}}@media (min-width: 43.75rem){.jobs-section .inner{min-height:21.25rem}}main{margin:0 auto;width:100%;max-width:100rem;padding:12.5rem 9.375rem}.main-content{counter-reset:section 0}main.fill-height{padding:0 9.375rem}section{margin:0 auto;max-width:62.5rem}.big-heading{margin:0;font-size:clamp(2.5rem,8vw,5rem)}p{margin:0 0 .938rem;color:var(--slate)}p a.company-link{content:"";display:block;width:0;height:.063rem;position:relative;bottom:.37em;color:var(--green);transition:var(--transition);opacity:.5}::selection{background-color:var(--lightest-navy);color:var(--lightest-slate)}@media (max-width: 67.5rem){main.fill-height{padding:0 6.25rem}}@media screen and (max-width: 48rem){main.fill-height{padding:0 3.125rem 4rem}}@media (max-width: 30rem){main.fill-height{padding:0 2.25rem 4rem}}.project-portfolio{position:relative;display:grid;gap:.625rem;grid-template-columns:repeat(12,1fr);align-items:center;visibility:visible;opacity:1;transform:scaleZ(1);transition:opacity .5s cubic-bezier(.645,.045,.355,1) 0s,transform .5s cubic-bezier(.645,.045,.355,1) 0s}.project-portfolio:not(:last-of-type){margin-bottom:6.25rem}.project-portfolio .project-content{position:relative;grid-area:1 / 1 / -1 / 7}.project-portfolio:nth-of-type(odd) .project-content{grid-column:7 / -1;text-align:right}.project-portfolio .project-overline{margin:.625rem 0;color:var(--green);font-family:var(--font-mono);font-size:var(--fz-xs);font-weight:400}.project-portfolio .project-title{color:var(--light-slate);font-size:clamp(1.5rem,5vw,1.75rem)}.project-links a,.project-portfolio .project-title a{position:relative;z-index:1}.project-portfolio .project-description{box-shadow:0 .625rem 1.875rem -.938rem var(--navy-shadow);transition:var(--transition);position:relative;z-index:2;padding:1.563rem;border-radius:var(--border-radius);background-color:var(--light-navy);color:var(--light-slate);font-size:var(--fz-lg)}.project-portfolio .project-tech-list{display:flex;flex-wrap:wrap;position:relative;z-index:2;margin:1.563rem 0 .625rem;padding:0;list-style:none}.project-portfolio:nth-of-type(odd) .project-tech-list{justify-content:flex-end}.project-portfolio .project-tech-list li{margin:0 1.25rem .313rem 0;color:var(--light-slate);font-family:var(--font-mono);font-size:var(--fz-xs);white-space:nowrap}.project-portfolio:nth-of-type(odd) .project-tech-list li{margin:0 0 .313rem 1.25rem}.project-portfolio .project-links{display:flex;align-items:center;position:relative;margin-top:.625rem;color:var(--lightest-slate)}.project-portfolio:nth-of-type(odd) .project-links{justify-content:flex-end;margin-left:0;margin-right:-.625rem}.project-portfolio:nth-of-type(2n) .project-links a{padding-left:0;padding-right:1.5rem}.project-portfolio:nth-of-type(odd) .project-links a{display:flex;justify-content:center;align-items:center;padding:.625rem .625rem .625rem 0}.project-portfolio .project-links a svg{width:1.25rem;height:1.25rem}.project-portfolio .project-image{box-shadow:0 .625rem 1.875rem -.938rem var(--navy-shadow);transition:var(--transition);grid-area:1 / 6 / -1 / -1;position:relative;z-index:1}.project-portfolio:nth-of-type(odd) .project-image{grid-column:1 / 8}.project-portfolio .project-image a:before{content:"";position:absolute;width:100%;height:100%;top:0;right:0;bottom:0;left:0;z-index:3;transition:var(--transition);background-color:var(--navy);mix-blend-mode:screen}.project-portfolio .project-image .img{border-radius:var(--border-radius);mix-blend-mode:multiply;filter:grayscale(100%) contrast(1) brightness(90%)}.weather-external{margin-top:-.25rem;margin-left:1rem}@media (min-width: 48rem){.project-portfolio .project-title{margin:0 0 1.25rem}}@media (max-width: 67.5rem){.project-portfolio .project-content{grid-column:1 / 9}.project-portfolio:nth-of-type(odd) .project-content{grid-column:5 / -1}}@media (max-width: 48rem){.project-portfolio{box-shadow:0 .625rem 1.875rem -.938rem var(--navy-shadow);transition:var(--transition)}.project-portfolio .project-content{display:flex;flex-direction:column;justify-content:center;height:100%;grid-column:1 / -1;padding:2.5rem 2.5rem 1.875rem;z-index:5}.project-portfolio:not(:last-of-type){margin-bottom:4.375rem}.project-portfolio:nth-of-type(odd) .project-content{grid-column:1 / -1;padding:2.5rem 2.5rem 1.875rem;text-align:left}.project-portfolio .project-title{color:var(--white)}.project-portfolio .project-title a{position:static}.project-portfolio .project-description{padding:1.25rem 0;background-color:transparent;box-shadow:none}.project-portfolio .project-tech-list{margin:.625rem 0}.project-portfolio:nth-of-type(odd) .project-tech-list{justify-content:flex-start}.project-portfolio .project-tech-list li{margin:0 .625rem .313rem 0;color:var(--lightest-slate)}.project-portfolio:nth-of-type(odd) .project-tech-list li{margin:0 .625rem .313rem 0}.project-portfolio:nth-of-type(2n) .project-links{margin-left:0}.project-portfolio:nth-of-type(odd) .project-links{justify-content:flex-start;margin-left:-.625rem;margin-right:0}.project-portfolio .project-image{grid-column:1 / -1;height:100%;opacity:.15}.project-portfolio:nth-of-type(odd) .project-image{grid-column:1 / -1}.project-portfolio .project-image .img{object-fit:cover;width:auto;height:100%;filter:grayscale(100%) contrast(1) brightness(50%)}}@media (max-width: 30rem){.project-portfolio:not(:last-of-type){margin-bottom:1.875rem}.project-portfolio:nth-of-type(odd) .project-content{padding:1.563rem 1.563rem 1.25rem}}.projects-list{list-style-type:none;padding:0;margin:0}.projects-heading{visibility:visible;opacity:1;transform:scaleZ(1);transition:opacity .5s cubic-bezier(.645,.045,.355,1) .2s,transform .5s cubic-bezier(.645,.045,.355,1) .2s}.highlighted-text{color:var(--green)}.contact-section{max-width:37.5rem;margin:0 auto 6.25rem;text-align:center}.contact-section .overline{display:block;margin-bottom:1.25rem;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 .title{font-size:clamp(2.5rem,5vw,3.75rem)}.contact-section .email-link{color:var(--green);background-color:transparent;border:.063rem 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:3.125rem}@media (max-width: 48rem){.contact-section{margin:0 auto 3.125rem}}.social-media-container{width:2.5rem;position:fixed;bottom:0;left:2.5rem;right:auto;z-index:10;color:var(--light-slate)}.social-media-list{display:flex;flex-direction:column;align-items:center;margin:0;padding:0;list-style:none}.social-media-list:after{content:"";display:block;width:.063rem;height:13rem;margin:0 auto;background-color:var(--light-slate)}.social-media-list li a{padding:.625rem}svg{transition:all .3s}svg.feather{fill:none}svg:hover{transform:translateY(-.5rem);color:var(--green)}.social-media-list li a svg{width:1.25rem;height:1.25rem}@media screen and (max-width: 48rem){.social-media-container{display:none}}@media (max-width: 67.5rem){.social-media-container{left:1.25rem;right:auto}}.email-container{width:2.5rem;position:fixed;bottom:0;left:auto;right:2.5rem;z-index:10;color:var(--light-slate)}.email-wrapper{display:flex;flex-direction:column;align-items:center;position:relative}.email-wrapper a{margin:1.25rem auto;padding:.625rem;font-family:var(--font-mono);font-size:var(--fz-xxs);line-height:var(--fz-lg);letter-spacing:.1em;writing-mode:vertical-rl}.email-wrapper:after{content:"";display:block;width:.063rem;height:6rem;margin:0 auto;background-color:var(--light-slate)}@media screen and (max-width: 48rem){.email-container{display:none}}@media (max-width: 67.5rem){.email-container{left:auto;right:1.25rem}}.footer{display:flex;justify-content:center;align-items:center;flex-direction:column;height:auto;min-height:9rem;padding:.938rem;text-align:center}.footer-social-links{display:none}.footer-social-links ul{display:flex;justify-content:space-evenly;align-items:center;padding:0;margin:0;list-style:none}.footer-built-by a,.footer-designed-by a,.footer-social-links ul a{padding:.625rem}.footer-social-links ul a svg{width:1.25rem;height:1.25rem}.footer-built-by,.footer-designed-by{color:var(--light-slate);font-family:var(--font-mono);font-size:var(--fz-xxs);line-height:1}.footer-built-by:hover,.footer-designed-by:hover{color:var(--green)}.footer-built-by .github-stats{margin-top:.625rem}.footer-built-by .github-stats svg{display:inline-block;margin-right:.313rem;width:.875rem;height:.875rem}.footer-built-by .github-stats>span{display:inline-flex;align-items:center;margin:0 .438rem}@media (max-width: 48rem){.footer-social-links{display:block;width:100%;max-width:16.875rem;margin:0 auto .625rem;color:var(--light-slate)}}
