/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{--font-mono: "JetBrains Mono", monospace;--font-title: "Barlow", sans-serif;--transition-all: all .25s ease-in-out}.icon-email,.icon-twitter,.icon-instagram,.icon-linkedin,.icon-github{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:currentColor}@keyframes fade-down{0%{opacity:0;transform:translateY(-120px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-up{0%{opacity:0;transform:translateY(120px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-left{0%{opacity:0;transform:translate(120px)}to{opacity:1;transform:translate(0)}}@keyframes fade-right{0%{opacity:0;transform:translate(-120px)}to{opacity:1;transform:translate(0)}}@keyframes down-arrow-before{50%{transform:rotate(45deg) translate(70%,70%)}to{transform:rotate(45deg) translate(70%,70%)}}@keyframes down-arrow-after{50%{transform:rotate(45deg) translate(110%,110%);opacity:0}51%{transform:rotate(45deg) translate(-130%,-130%)}to{transform:rotate(45deg) translate(-70%,-70%);opacity:1}}*,*:after,*:before{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;width:100%;min-height:100vh;overflow-x:hidden}a{display:inline-block;text-decoration:none;color:inherit;transition:var(--transition-all)}a:hover{color:var(--color-accent)}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/Inter-roman.var-17fe38ab.woff2?v=3.19) format("woff2")}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/Inter-italic.var-d1401419.woff2?v=3.19) format("woff2")}@font-face{font-family:Barlow;font-weight:700;font-display:swap;font-style:normal;font-named-instance:"Italic";src:url(/assets/Barlow-Bold-8fd2f8ad.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:400;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/JetBrainsMono-Regular-a9cb1cd8.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:700;font-display:swap;font-style:normal;font-named-instance:"Bold";src:url(/assets/JetBrainsMono-Bold-c503cc5e.woff2) format("woff2")}html{font-size:62.5%}body{font-family:Inter var,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;font-size:1.6rem}h1,h2,h3,h4{margin-bottom:1rem;font-family:var(--font-title)}h1{font-size:3.8rem}h2{font-size:3.1rem}h3{font-size:2.4rem}h4{font-size:2rem}.stroke-left,.stroke-center{display:flex;flex-direction:column;width:-moz-fit-content;width:fit-content}.stroke-left:after,.stroke-center:after{background-color:var(--color-accent);content:"";width:5rem;height:2px;margin-top:.5rem}.stroke-left{align-items:flex-start}.stroke-center{align-items:center}.flex-center{display:flex;justify-content:center;text-align:center}.flex-left{display:flex;justify-content:flex-start}.list{list-style:"+";padding-left:2.5rem}.overflow-hidden{overflow:hidden!important}.list li{padding-left:1rem}.btn{background:none;display:inline-block;line-height:1.5;white-space:nowrap;border:none;text-decoration:none;text-transform:uppercase;letter-spacing:clamp(1px,.5vw,4px);padding:1rem 2rem;cursor:pointer;transition:var(--transition-all);font-family:var(--font-mono)}.btn-lg{padding:1.5rem 3rem}.btn-solid{color:var(--color-surface);background-color:var(--color-text)}.btn-solid:hover,.btn-solid:focus-visible{background-color:var(--color-accent-fill);color:var(--color-on-accent)}.btn-outlined{color:var(--color-text);border:1px solid currentColor}.btn-outlined:hover,.btn-outlined:focus-visible{color:var(--color-accent)}.btn:disabled{color:var(--color-disabled-text);background-color:var(--color-disabled-surface);cursor:not-allowed}.link{display:inline!important;cursor:pointer;font-style:italic;border-bottom:1px solid var(--color-accent)}.link:hover{color:var(--color-accent)}@media screen and (min-width: 1024px){.btn-lg{padding:2rem 3rem}}.icon-github,.icon-linkedin,.icon-instagram,.icon-twitter,.icon-email{display:inline-block;width:2.4rem;height:2.4rem;color:var(--color-text);transition:var(--transition-all)}.icon-github:hover,.icon-linkedin:hover,.icon-instagram:hover,.icon-twitter:hover,.icon-email:hover{color:var(--color-accent)}.icon-github{-webkit-mask-image:url(/assets/github-3025836a.svg);mask-image:url(/assets/github-3025836a.svg)}.icon-linkedin{-webkit-mask-image:url(/assets/linkedin-81bc9863.svg);mask-image:url(/assets/linkedin-81bc9863.svg)}.icon-instagram{-webkit-mask-image:url(/assets/instagram-974c55e2.svg);mask-image:url(/assets/instagram-974c55e2.svg)}.icon-twitter{-webkit-mask-image:url(/assets/twitter-1091edab.svg);mask-image:url(/assets/twitter-1091edab.svg)}.icon-email{-webkit-mask-image:url(/assets/email-fdaa74f0.svg);mask-image:url(/assets/email-fdaa74f0.svg)}.socials-desktop{display:none}.socials-footer .social-link:not(:last-child),.socials-mobile-nav .social-link:not(:last-child){margin-right:1rem}.socials-mobile-nav{margin-top:clamp(0rem,4vh,5rem)}@media screen and (min-width: 1024px){.socials-desktop{display:block;background-color:var(--color-surface-raised);z-index:100;position:fixed;left:0;top:calc((100vh - 17.6rem)/2);padding:1rem;animation:fade-right 1s ease-in-out 1.25s backwards}.socials-desktop .social-icons{display:grid;gap:1rem}.socials-footer,.socials-mobile-nav{display:none}}.main{min-height:100vh;display:grid;grid-template-rows:1fr auto;grid-template-columns:100%}.section,.section-full{padding:5rem 2rem;margin-left:auto;margin-right:auto}.section.reveal,.section-full.reveal{animation:fade-up 1s ease-in-out backwards}.section{max-width:90rem}.section-full{width:100%}:focus-visible{outline:2px solid var(--color-accent);outline-offset:5px}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}.about-content{display:flex;flex-direction:column;margin-top:2rem}.about-content__image-container{width:60%;margin-left:auto;margin-right:auto}.about-content__image-wrapper{position:relative;isolation:isolate;width:-moz-fit-content;width:fit-content}.about-content__image-wrapper:after{position:absolute;content:"";border:1px solid var(--color-border);top:clamp(1rem,2vw,1.5rem);left:clamp(1rem,2vw,1.5rem);width:100%;height:100%;z-index:-1;transition:var(--transition-all)}.about-content__image{position:relative;display:block;aspect-ratio:1 / 1;width:100%;filter:grayscale(100%);transition:var(--transition-all)}.about-content__image:hover{filter:none}.about-content__details{margin-top:4rem}.about-content__details p{margin-top:0}@media screen and (min-width: 768px){.about-content{display:block}.about-content__details{margin-top:0}.about-content__image-container{width:40%;margin-left:3rem;margin-right:0;margin-bottom:3rem;float:right}}.skills-card{width:-moz-fit-content;width:fit-content;margin-left:auto;margin-right:auto;text-align:center}.skills-card__title{font-family:var(--font-mono);border-bottom:1px solid var(--color-text);font-weight:700;font-size:1.6rem;margin:1em 0 0;padding-bottom:1rem}.skills-card__body{line-height:1}.skill-icons{margin:0;list-style:none;padding:0 1rem;display:inline-block}.skill-icon{display:inline-block;margin-top:1rem;width:5rem;position:relative;vertical-align:top}.skill-icon:not(:last-child){margin-right:clamp(1rem,2vw,2rem)}.skill-icon__button{position:relative;display:block;width:5rem;min-height:5rem;padding:0;border:0;color:var(--color-text);background:transparent;cursor:pointer}.skill-icon__button:hover,.skill-icon__button:focus-visible{color:color-mix(in srgb,var(--skill-color) 50%,var(--color-text))}.skill-icon__svg,.skill-icon__svg svg{display:block;width:5rem;height:5rem}.skill-icon__svg svg{pointer-events:none;fill:currentColor;transition:var(--transition-all)}.skill-icon .icon-label{display:inline-block;position:absolute;font-size:1rem;line-height:1.5;background-color:var(--color-label-background);color:var(--color-label-text);border:1px solid var(--color-label-text);font-family:var(--font-mono);padding:.5rem 1rem;width:-moz-max-content;width:max-content;z-index:1;left:50%;top:100%;transform:translate(-50%);opacity:0;pointer-events:none;transition:opacity .25s ease-in-out}.skill-icon__button:hover .icon-label,.skill-icon__button:focus-visible .icon-label{opacity:1}.section-careers{max-width:700px}.careers{list-style:none;padding-left:0}.career{position:relative;isolation:isolate;padding-left:2rem}.career:not(:last-child){padding-bottom:4rem}.career:before{position:absolute;content:"";width:1.2rem;height:1.2rem;background-color:var(--color-border);border:1px solid var(--color-border);left:-1rem;top:3rem;transition:var(--transition-all)}.career:not(:last-child):after{position:absolute;content:"";background-color:var(--color-border);width:1px;height:100%;top:3.5rem;left:-.5rem;z-index:-1;overflow:hidden}.career:hover:before{background-color:var(--color-accent)}.career-heading{display:flex;flex-direction:column;position:relative;align-items:flex-start;padding-bottom:1rem}.career-heading__title{font-family:var(--font-mono);font-size:2rem;margin:0}.career-heading__time,.career__employer{font-size:1.3rem;margin:0}.career__description{padding-left:3rem;margin:0}.section-edu{margin-top:5rem}@media screen and (min-width: 768px){.career-heading{flex-direction:row;justify-content:space-between;align-items:center}}.project-card{width:100%;padding:5rem 2rem}.project-card:last-child{padding-bottom:0}.project-card__body{display:flex;flex-direction:column}.project__preview a{width:100%}.project__preview__image{width:100%;filter:grayscale(100%);transition:filter .25s ease-in-out}.project__preview__image:hover{filter:none}.project__title{font-family:var(--font-mono)}.project__details{width:100%;margin:auto}.project__details>img{width:100%;padding:0 1rem}.project__tags{margin:0;list-style:none;display:inline-block;padding-left:0}.project__tag{display:inline-block;color:var(--color-label-text);background-color:var(--color-label-background);font-family:var(--font-mono);border:1px solid var(--color-label-text);font-size:1rem;margin-right:.5rem;margin-bottom:1rem;padding:.5rem 1rem}.project__buttons{margin-top:4rem}.project__buttons a,.project__buttons button{display:inline-block;margin-right:.5rem;margin-bottom:1rem}.project__summary{font-weight:600}@media screen and (min-width: 1024px){.project-card{padding:7rem 5rem;max-width:144rem;margin-left:auto;margin-right:auto}.project-card:nth-of-type(even) .project-card__body{flex-direction:row;justify-content:space-between}.project-card__body{flex-direction:row-reverse;justify-content:space-between}.project__preview,.project__details{width:48%}.project__title{margin-top:0}}.footer{padding:1rem 0;color:var(--color-text);text-align:center;background-color:var(--color-surface-raised)}.footer p{font-size:1.3rem;margin:0}.footer a{color:var(--color-accent);text-decoration:none}.callout{margin-top:10rem;color:var(--color-text);text-align:center;background-color:var(--color-surface-raised)}.callout-content{max-width:90rem;margin-left:auto;margin-right:auto;padding:0 2rem}.callout-message{margin-bottom:3rem;font-family:var(--font-mono);font-size:1.8rem}.modal{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;overflow-x:hidden;overflow-y:auto;color:var(--color-text);background:transparent}.modal::backdrop{background-color:var(--color-backdrop);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.modal-dialog{background-color:var(--color-surface);width:-moz-fit-content;width:fit-content;margin:1rem}.modal__close:before,.icon-success{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:currentColor;display:inline-block}.modal__close{cursor:pointer;background:transparent;color:var(--color-text);width:2.4rem;height:2.4rem;flex-shrink:0;padding:0;margin:0;border:0;transition:var(--transition-all)}.modal__close:before{content:"";-webkit-mask-image:url(/assets/close-18f12b7a.svg);mask-image:url(/assets/close-18f12b7a.svg);width:100%;height:100%}.modal__close:hover,.modal__close:focus-visible{color:var(--color-accent)}.modal__header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--color-border);padding:1rem 2rem}.modal__body{padding:2rem;max-width:65rem}.modal__title{margin:0;font-size:clamp(2rem,2vw,3rem)}.form-input,.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:1rem;width:100%;margin-top:2rem;border:1px solid var(--color-border);color:var(--color-text);background-color:var(--color-surface);transition:border .25s ease-in-out;font-family:var(--font-mono)}.form-input::-moz-placeholder,.form-textarea::-moz-placeholder{color:var(--color-muted)}.form-input::placeholder,.form-textarea::placeholder{color:var(--color-muted)}.form-input:focus,.form-textarea:focus{border-color:var(--color-accent)}.form-textarea{resize:vertical;min-height:10rem}.input-group{display:flex;flex-direction:column}.btn-form{width:100%;margin-top:1rem}.form-status{margin:0;padding:2rem;color:var(--color-text);background-color:var(--color-label-background);border:1px solid var(--color-label-text)}.notice-success{text-align:center}.icon-success{-webkit-mask-image:url(/assets/success-439bcb5d.svg);mask-image:url(/assets/success-439bcb5d.svg);width:10rem;height:10rem;color:var(--color-accent)}.visually-hidden,.contact-honeypot{position:absolute;width:1px;height:1px;padding:0;border:0;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}@media (min-width: 576px){.modal-dialog{margin-left:auto;margin-right:auto}.modal__body{padding:3rem}.form-input,.form-textarea{padding:2rem}.input-group{flex-direction:row;justify-content:space-between}.input-group .form-input{width:49%}.form-textarea{min-height:20rem}}@media (min-width: 768px){.modal-dialog{margin-top:3rem}.modal__body{padding:3rem 5rem 5rem}}.nav{z-index:10;position:fixed;top:0;width:100%;display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background-color:var(--color-surface-raised);transition:var(--transition-all);animation:fade-down 1s ease-in-out 1s backwards}.nav--hidden{transform:translateY(-100%)}.nav:has(:focus-visible){transform:translateY(0)}.nav__logo{height:48px;width:48px;z-index:11;flex-shrink:0}.theme-selector{display:flex;align-items:center;gap:.4rem;margin-top:2rem}.theme-selector__button{display:grid;place-items:center;width:4.4rem;height:4.4rem;padding:0;color:var(--color-text);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:0;cursor:pointer}.theme-selector__button:hover{border-color:var(--color-accent)}.theme-selector__button[aria-pressed=true]{color:var(--color-on-accent);background:var(--color-accent-fill);border-color:var(--color-on-accent)}.nav__content{z-index:9;position:fixed;inset:0;height:100vh;height:100dvh;overflow-y:auto;padding:7rem 2rem 2rem;width:100%;color:var(--color-text);background-color:var(--color-surface-raised);text-align:center;display:flex;flex-direction:column;justify-content:safe center;align-items:center;opacity:0;visibility:hidden;transition:opacity .25s ease-in-out,visibility .25s ease-in-out}.nav__content--open{opacity:1;visibility:visible}.nav__list{list-style:none;padding:0 3rem;margin-bottom:clamp(0rem,4vh,5rem)}.nav__item{font-family:var(--font-mono);letter-spacing:clamp(1px,.5vw,4px);text-transform:uppercase;position:relative}.nav__item:not(:first-child){padding-top:clamp(2rem,4vh,5rem)}.nav__link{display:flex;flex-direction:column;align-items:center;color:var(--color-text);font-size:2rem;transition:color .25s ease-in-out}.nav__link:after{position:absolute;background-color:var(--color-accent);content:"";width:0;height:2px;bottom:-.5rem;transition:width .25s ease-in-out}.nav__link:hover,.nav__link:focus-visible{color:var(--color-accent)}.nav__link:hover:after{width:4rem}.hamburger{cursor:pointer;width:3rem;height:3rem;padding:0;border:0;background:none;color:var(--color-text);display:flex;flex-direction:column;justify-content:space-between;z-index:11}.hamburger__bar{width:100%;height:3px;background-color:currentColor;transition:var(--transition-all)}.hamburger[aria-expanded=true] .hamburger__bar:nth-child(1){transform:translateY(1.35rem) rotate(45deg)}.hamburger[aria-expanded=true] .hamburger__bar:nth-child(2){opacity:0}.hamburger[aria-expanded=true] .hamburger__bar:nth-child(3){transform:translateY(-1.35rem) rotate(-45deg)}@media (min-width: 1024px){.nav{padding:1rem 3rem}.nav__content{position:static;flex-direction:row;justify-content:flex-end;opacity:1;visibility:visible;height:auto;padding:0;overflow:visible}.nav__list{display:flex;margin:0 auto;padding:0 1.5rem}.nav__item:not(:first-child){padding-top:0;margin-left:clamp(1rem,1.5vw,2rem)}.nav__link{font-size:1.6rem;position:relative}.hamburger{display:none}.theme-selector{margin:0 0 0 2rem;flex-shrink:0}.nav__item{letter-spacing:clamp(1px,.2vw,4px)}}.hero__content,.section-hero{display:flex;flex-direction:column}.section-hero{width:100%;align-items:center;justify-content:center;padding:0 2rem;color:var(--color-text);background-color:var(--color-surface-raised);height:100vh}.hero__btn{font-size:clamp(1.6rem,2vw,2rem);margin:2rem 0;animation:fade-up 1s ease-in-out .75s backwards}.hero__title,.hero__greet,.hero__subtitle{margin:0 0 1rem}.hero__title{font-size:clamp(4rem,5vw,8rem);animation:fade-right 1s ease-in-out .25s backwards}.hero__greet{font-family:var(--font-mono);font-size:clamp(1.6rem,4vw,2rem);margin-top:5rem;margin-bottom:0;animation:fade-down 1s ease-in-out}.hero__subtitle{font-family:var(--font-mono);color:var(--color-accent);font-size:clamp(1.6rem,4vw,2.4rem);margin-bottom:0;animation:fade-left 1s ease-in-out .5s backwards}.hero__content{flex-grow:1;align-items:center;justify-content:center;text-align:center}.hero__scroll-down{padding:5rem 0}.hero__scroll-down:before,.hero__scroll-down:after{content:"";display:block;width:1rem;height:1rem;transform:rotate(45deg);border-bottom:1px solid var(--color-text);border-right:1px solid var(--color-text)}.hero__scroll-down:before{animation:down-arrow-before 2.5s cubic-bezier(.77,0,.175,1) 5}.hero__scroll-down:after{animation:down-arrow-after 2.5s cubic-bezier(.77,0,.175,1) 5}
