:root{--header-height:4rem;--footer-height:5rem;--content-max-width:1080px;--white:255,255,255;--black:0,0,0;--slate-grey:110,126,133}*{box-sizing:border-box;font-family:Open Sans;font-weight:400;margin:0;min-width:min-content;padding:0}html{font-size:16px;scroll-behavior:smooth}body{position:relative;z-index:99}::-webkit-scrollbar{width:.6rem}::-webkit-scrollbar-thumb{background:#6e7e8580;background:rgba(var(--slate-grey),.5);border-radius:20px}::-webkit-scrollbar-thumb:hover{background:#6e7e85b3;background:rgba(var(--slate-grey),.7)}.site-container{height:100%;width:100%}.page-container{display:flex;flex-wrap:wrap;height:100vh;justify-content:center;overflow-y:scroll;position:relative;scroll-snap-type:y mandatory;width:100%;z-index:auto}@media only screen and (max-width:640px){.page-container{height:100%;overflow-y:visible;scroll-snap-type:none}}.content-container{filter:blur(0);max-width:1080px;max-width:var(--content-max-width);padding:0 4rem}@media only screen and (max-width:640px){.content-container{padding-left:2rem;padding-right:2rem}}.light{--bg:var(--white);--main:69,149,141;--selector:var(--white);--selector-outer:64,70,94;--text:var(--black);--hyperlink:var(--black);--graphic-filter:grayscale(100%) invert(0%);--footer:var(--black)}.dark{--bg:34,34,34;--main:110,238,226;--selector:var(--slate-grey);--selector-outer:232,233,237;--text:var(--white);--hyperlink:var(--white);--graphic-filter:grayscale(100%) invert(100%);--footer:var(--white)}.dark.testing{color:#fff}.dark .theme-switch .selector{left:-5%;transform:translateX(150%)}.dark .theme-switch .selector.slide{animation:slideRight .25s linear forwards}.light.testing{color:red}.light .theme-switch .selector{left:5%;transform:translateX(0)}.light .theme-switch .selector.slide{animation:slideLeft .25s linear forwards}.light .theme-switch .graphic.invert{filter:invert(100%)}.page-spacer{display:flex;flex-direction:column;justify-content:center;min-height:100vh;min-width:100%;position:relative;width:100%}@media only screen and (min-width:640px){.page-spacer{padding-top:var(--header-height);scroll-snap-align:start}}.enclosed{border-radius:50px;height:auto;padding:1rem;position:relative;width:auto}.enclosed,.general-flex{align-items:center;display:flex;justify-content:center}.background{background-color:rgb(var(--bg))}.footer.outer{bottom:0;color:rgb(var(--text));display:flex;height:var(--footer-height);justify-content:center;left:0;position:absolute;width:100%}@media only screen and (max-width:640px){.footer.outer{text-align:center}}.footer .inner{display:flex;flex-wrap:wrap;height:100%;max-width:var(--content-max-width);padding:.5rem 3rem 1rem;width:100%}.footer p{font-size:clamp(13px,1.1vw,.9rem);text-align:center;width:100%}.portrait{background-image:url(/static/media/relaxed_pfp.70659c916843ced46104.jpg);background-size:contain;height:clamp(150px,30vw,250px);width:clamp(150px,30vw,250px)}.graphic,.portrait{-webkit-user-select:none;user-select:none}.graphic{max-height:100%;max-width:100%}.graphic.large{height:clamp(120px,21vw,165px);width:clamp(120px,21vw,165px)}.graphic.medium{height:clamp(40px,7vw,55px);width:clamp(40px,7vw,55px)}.graphic.small{height:clamp(25px,4vw,30px);width:clamp(25px,4vw,30px)}.graphic.x-small{height:clamp(15px,3vw,20px);width:clamp(15px,3vw,20px)}.graphic img{height:auto;max-width:100%;min-width:1px;width:100%}.graphic .invert,.graphic.invert{filter:var(--graphic-filter)}.enclosed.bounce a{animation:bounce 1.2s ease-out forwards}.enclosed:hover>a{animation:slideUp .15s ease-in forwards}.enclosed:hover>a .graphic img{filter:grayscale(0) invert(0)}.dark .enclosed:hover>a .graphic.keep-invert img{filter:grayscale(100%) invert(100%)}.sun{background-image:url(/static/media/sun.542974aca38b7c2dc86f.svg)}.moon{background-image:url(/static/media/moon.3faf560f51b0b30d37d0.svg)}.x-mark{background-image:url(/static/media/x-mark.072f33cf7e9b773e88a0.svg);background-size:contain}.header.outer{background-color:rgb(var(--bg));height:var(--header-height);position:sticky;top:0;width:100%;z-index:999}.header.outer.show{animation:slide-down-and-appear .75s forwards}.header.outer.hide{animation-delay:0s,.45s;animation-duration:.45s,.2s;animation-fill-mode:forwards,forwards;animation-name:slide-up-and-disappear,add-shadow}.header.outer.show.shadow{box-shadow:0 1px 5px 2px #22222280}.header .inner{justify-content:flex-end;position:sticky;top:0;width:100%}.header .inner,.hyperlink{align-items:center;display:flex;height:100%}.hyperlink{color:rgb(var(--hyperlink));flex-wrap:wrap;justify-content:center;min-width:5rem;padding:0 .5rem;text-decoration:none;-webkit-user-select:none;user-select:none}.footer .hyperlink,.text .hyperlink{background-image:linear-gradient(rgb(var(--main)),rgb(var(--main)));background-position:0 100%;background-repeat:no-repeat;background-size:0 1px;color:rgb(var(--main));display:inline;font-size:inherit;padding:0;transition:background .2s ease-out}.footer .hyperlink:hover,.text .hyperlink:hover{background-size:100% 1px}.footer .hyperlink:hover:after,.text .hyperlink:hover:after{width:100%}.nav{padding:0 1rem}.nav,.nav .content{height:100%;width:100%}.nav .content{align-items:center;display:flex;justify-content:flex-end;.hyperlink-container{display:flex;height:var(--header-height)}}.menu.toggle,.nav .socials{display:none;height:0;width:0}@media only screen and (max-width:640px){.nav{height:0;width:0}.nav:has(.content.display){display:flex;height:100vh;justify-content:flex-end;padding:0;position:absolute;right:0;top:0;width:100%;z-index:1}.nav .content{display:none;height:0;width:0}.nav .content.display{align-items:center;background-color:rgb(var(--bg));display:flex;flex-direction:column;height:100%;justify-content:center;padding-top:var(--header-height);position:relative;width:70%;.hyperlink-container{display:flex;flex-direction:column;height:60%;justify-content:space-evenly;position:relative;top:-3rem}}.menu.toggle{display:block;height:100%;margin-left:.5rem}}.project-container{margin:2rem 0 5rem;width:100%}.img-desc-container{.graphic{margin:0 auto 1rem}}.socials{width:100%}.socials,.socials .text-bubble{align-items:center;display:flex;justify-content:center}.socials .text-bubble{animation:display-handle .25s linear forwards;background-color:rgba(var(--main),.6);border-radius:1rem;color:#fff;font-size:clamp(14px,1.1vw,.9rem);padding:0 .5rem;position:absolute;white-space:nowrap}.textbox-container{border-radius:50px 15px;height:auto;margin:1rem 0;min-height:6rem;min-width:min-content;padding:1.5rem 2rem 1rem;width:100%}.theme-switch.outer{background-color:rgb(var(--selector-outer));border-radius:40px;height:2rem;margin-right:.5rem;max-width:4rem;position:relative;width:4rem}.theme-switch .inner{align-items:center;display:flex;height:100%;justify-content:space-between;overflow-x:hidden;padding:.2rem .4rem;width:4rem}.theme-switch .selector{background-color:rgb(var(--selector));border-radius:100%;height:1.6rem;position:absolute;top:10%;width:1.6rem}.hidden{display:none;height:0;width:0}.parent-height{height:100%}#Interactables{margin-right:1rem;width:6rem;z-index:2}svg{min-width:0}.straight{transform:rotate(0deg)}.sideways{transform:rotate(45deg)}.nav .hyperlink{font-size:clamp(16px,1.6vw,1.2rem);height:100%;opacity:.6;.section-number{color:rgb(var(--main))}}.nav .hyperlink:hover{background-color:rgba(var(--main),.5);border-radius:0 0 10px 10px;opacity:1}.nav .hyperlink.active{-webkit-text-decoration:underline rgb(var(--main)) .1rem;text-decoration:underline rgb(var(--main)) .1rem;text-underline-offset:6px}@media only screen and (max-width:640px){.nav .hyperlink{font-size:clamp(16px,1.6vw,1.2rem);height:fit-content;opacity:1;padding:2rem}.nav .hyperlink:hover{background-color:rgb(var(--bg));border-radius:0;opacity:1}}.text{color:rgb(var(--text));font-size:clamp(14.5px,1.3vw,1rem)}.text .italic{font-style:italic}.text .title{font-size:clamp(20px,2vw,1.5rem);font-weight:700;letter-spacing:2px;margin:.5rem 0;text-align:justify;text-decoration-line:underline;text-underline-offset:4px;width:100%}.text .subtitle{color:rgba(var(--text),.5);font-size:clamp(16px,1.4vw,1.2rem);min-height:1rem;width:100%}.text .paragraph{font-size:clamp(14px,1.2vw,1rem);letter-spacing:.8px;line-height:1.5rem;margin:0 0 .5rem;min-height:1rem;padding:.5rem 0;text-indent:1rem;width:100%}.text .paragraph *{font-size:clamp(14px,1.2vw,1rem);text-indent:0}.text .list{height:auto;letter-spacing:1.2px;margin:0 0 .5rem;min-height:2rem}.text .indent{text-indent:1rem}.text .paragraph ul{list-style-type:none;margin:.25rem 0;max-width:100%;>li{font-size:clamp(15px,1.1vw,.9rem);margin:.5rem .5rem 0 0;padding:.25rem 1rem}}.text .paragraph ul.logos{display:flex;flex-wrap:wrap;>li{align-items:center;border:2px solid rgba(var(--main),.5);border-radius:1rem;display:flex;padding:.25rem .5rem;>svg{height:1rem;margin-right:.3rem;width:1rem}}}.list .date{color:rgb(var(--main));float:left;font-style:italic;font-weight:600;max-width:10rem;text-align:left;width:20%}.list .date,.list .desc{overflow-x:hidden;overflow-y:auto}.list .desc{font-size:clamp(14px,1vw,1rem);line-height:1.5rem;padding-left:1rem}@media only screen and (max-width:640px){.text .date{float:none;padding:0 0 .5rem;width:100%}.text .desc{float:none;padding-left:0;width:100%}.text .indent{text-indent:0}}#opening{--delay-offset:.1s;--wave-duration:3s;--name-duration:.3s;--occ1-duration:.6s;--occ2-duration:.3s;--occ1-delay:calc(var(--name-duration) + var(--delay-offset));--occ2-delay:calc(var(--occ1-duration)*0.75 + var(--occ1-delay) + var(--delay-offset));--occ3-delay:calc(var(--occ2-duration) + var(--occ2-delay) + var(--delay-offset));--occ4-delay:calc(var(--occ2-duration) + var(--occ3-delay) + var(--delay-offset));--preface-delay:calc(var(--occ4-delay) + var(--occ2-duration) + var(--delay-offset));--wave-iterations:10;.hand-wave{display:inline-block;margin:0 .1rem;transform-origin:center 70%}.socials{justify-content:space-around;margin-top:3rem;padding:0 3rem}.subtitle{font-size:clamp(16px,1.4vw,1.2rem);margin-bottom:.3rem}#Greeting{font-size:clamp(16px,1.4vw,1.1rem)}#Greeting,#Name{margin-bottom:.5rem}#Name{font-size:clamp(32px,4.5vw,4rem);left:-3px;position:relative}#Occupation1{min-width:0;overflow:hidden;width:0}#Introduction{display:block;margin-bottom:1rem;margin-top:1rem}}#opening.run{.hand-wave{animation:wave var(--wave-duration) var(--wave-iterations) both;animation-delay:var(--preface-delay)}#Name{animation:appear-overshoot-from-below var(--name-duration)}#Occupation1{animation:typing var(--occ1-duration) steps(11) var(--occ1-delay) forwards}#Occupation2{animation:appear-from-below var(--occ2-duration) var(--occ2-delay) both}#Occupation3{animation:appear-from-below var(--occ2-duration) var(--occ3-delay) both}#Occupation4{animation:appear-from-below var(--occ2-duration) var(--occ4-delay) both}#History,#Introduction,.socials{animation:appear-from-below var(--occ2-duration) var(--preface-delay) both}}#about{--duration:.8s;.portrait{left:-1rem;position:relative;top:-1rem}#Portrait{border:.2rem solid rgba(var(--main),.5);float:right;height:min-content;margin-left:2rem}#Portrait,.skills{visibility:hidden}}#about.run{#Portrait{animation:drop-from-above var(--duration) both}#Portrait,.skills{visibility:visible}.skills{animation:appear-from-below var(--duration) both}}#projects{.project-container ul{display:flex;justify-content:flex-end;>li{border:none;color:rgba(var(--text),.5);font-size:clamp(13px,1vw,.9rem);margin:0 0 0 .5rem;padding:0}>li:after{content:","}>li:last-of-type:after{content:""}}.categories,.tech-stack{color:rgb(var(--text));font-size:clamp(13px,1vw,.9rem);text-align:right}.categories li{color:rgb(var(--))}}#contact.page-spacer{justify-content:center;padding-top:5rem;position:relative}#contact{.textbox-container{align-items:center;display:flex;flex-direction:column;justify-content:center;padding-bottom:calc(var(--footer-height) + 1rem);.paragraph,.title{text-align:center;text-indent:0;width:auto}.title{color:rgb(var(--main));text-decoration:none}}.info-container{display:flex;flex-direction:column;margin-top:1rem}.contact-info{margin:.5rem 0;padding:1rem 0;.container,.graphic{display:flex}.graphic{align-items:center;margin-right:2rem}.hyperlink{color:rgb(var(--text));margin-top:.5rem}.paragraph{margin-bottom:0}}.resume-container{align-items:center;display:flex;flex-direction:column;margin-top:2rem;text-align:center;.resume-link{border:1px solid rgb(var(--main));border-radius:10px;color:rgb(var(--main));margin-top:1rem;padding:1rem 2rem;text-decoration:none}.resume-link:hover{background-color:rgb(var(--main));color:rgb(var(--text))}}}@media only screen and (min-width:641px){.project-container .img-desc-container{min-height:clamp(200px,30vw,250px)}.project-container.odd .img-desc-container .graphic{float:left;margin-right:2rem}.project-container.even .img-desc-container .graphic{float:right;margin-left:2rem}.project-container .img-desc-container .desc{display:flex;flex-direction:column;justify-content:center;min-height:clamp(200px,30vw,250px);padding:0 1.5rem;>p.paragraph{margin-bottom:0}}}@media only screen and (max-width:640px){#opening{flex-direction:column;.textbox-container{position:relative;top:-5rem}.hand-wave{margin:0 .1rem}.portrait{left:.5rem}.socials{justify-content:space-around;padding:0}*{margin-bottom:0}}#about{.portrait{left:.5rem}#Portrait{float:none;margin:0 auto 2rem;width:min-content}}}.rotateRight{animation:rotateRight .175s linear forwards}.rotateLeft{animation:rotateLeft .175s linear forwards}@keyframes slide-up-and-disappear{0%{top:0}35%{transform:translateY(calc((var(--header-height) - 3rem)*-1))}to{transform:translateY(calc(var(--header-height)*-1))}}@keyframes add-shadow{to{box-shadow:0 1px .5rem 2px #222}}@keyframes slide-down-and-appear{0%{transform:translateY(calc(var(--header-height)*-1))}35%{transform:translateY(calc((var(--header-height) - 2rem)*-1))}to{transform:translateY(0)}}@keyframes rotateRight{to{transform:rotate(-135deg)}}@keyframes rotateLeft{to{transform:rotate(90deg)}}@keyframes slideRight{0%{transform:translateX(0)}to{transform:translateX(150%)}}@keyframes slideLeft{0%{transform:translateX(150%)}to{transform:translateX(0)}}@keyframes slideUp{0%{transform:translateY(0)}to{transform:translateY(-15%)}}@keyframes wave{0%,to{transform:rotate(0deg)}20%,60%{transform:rotate(10deg)}40%,80%{transform:rotate(-5deg)}}@keyframes appear-overshoot-from-below{0%{opacity:0;transform:translateY(3rem)}30%{opacity:65%;transform:translateY(1rem)}70%{opacity:1;transform:translateY(-2rem)}to{transform:translateY(0)}}@keyframes appear-from-below{0%{opacity:0;transform:translateY(3rem)}30%{opacity:65%;transform:translateY(1rem)}to{opacity:1;transform:translateY(0)}}@keyframes typing{0%{width:0}99%{width:9ch}to{width:auto}}@keyframes color-change{0%{color:rgb(var(--text))}to{color:rgb(var(--main))}}@keyframes drop-from-above{0%{opacity:0;transform:translateY(-5rem)}to{opacity:1;transform:translateY(0)}}@keyframes display-handle{0%{opacity:0;top:0}to{opacity:1;top:-1.5rem}}@keyframes bounce{0%{transform:translateY(-25%)}25%{transform:translateY(-8%)}42%{transform:translateY(-4.5%)}55%{transform:translateY(-2.5%)}62%{transform:translateY(-1.7%)}10%,33%,50%,59%,65%,to{transform:translateY(0)}}