#logo{color:var(--theme-color);height:100%;width:100%;fill:none}:root{--navy: #0a192f;--light-navy: #112240;--lightest-navy: #233554;--teal: #64ffda;--slate: #8892b0;--light-slate: #a8b2d1;--white: #ccd6f6;--navy-shadow: rgba(0, 0, 0, .25);--font-sans: "Inter", "San Francisco", "SF Pro Display", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "SF Mono", "Consolas", monospace;--tsm: 13px;--tsm1: 14px;--tsm2: 15px;--tbase: 16px;--tlarge: 18px;--tlarge2: 22px;--txlarge: 25px;--tx2large: 32px;--tgiant: clamp(40px, 8vw, 80px)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--navy)}::-webkit-scrollbar-thumb{background-color:var(--slate);border:1px solid var(--navy);border-radius:10px}@supports (scrollbar-width: thin){html{scrollbar-width:thin;scrollbar-color:var(--slate) var(--navy)}::-webkit-scrollbar{width:8px}}@supports not (scrollbar-width: thin){::-webkit-scrollbar{width:8px}}body{background-color:var(--navy);color:var(--white);font-family:var(--font-sans);line-height:1.3;max-width:100vw;overflow-x:hidden;counter-reset:title}main{margin:0 150px;padding-top:100px}@media screen and (max-width: 1080px){main{margin:0 100px}}@media screen and (max-width: 768px){main{margin:0 50px}}@media screen and (max-width: 480px){main{margin:0 25px}}::selection{color:var(--navy);background:var(--teal)}.app{min-height:100vh;display:flex;flex-direction:column}.btn{color:var(--teal);background-color:transparent;border:1px solid var(--teal);border-radius:4px;padding:.75rem 1rem;font-family:var(--font-mono);font-size:var(--tsm);line-height:1;text-decoration:none;cursor:pointer;transition:all .25s cubic-bezier(.645,.045,.355,1);display:inline-block;text-align:center}.btn:hover,.btn:focus{background-color:#64ffda1a;box-shadow:3px 3px 0 0 var(--teal);transform:translate(-4px,-4px)}.link{display:inline-block;text-decoration:none;color:var(--teal);position:relative;transition:all .25s cubic-bezier(.645,.045,.355,1)}.link:after{content:"";position:absolute;width:100%;height:1px;bottom:.37em;left:0;background-color:var(--teal);opacity:0;transition:opacity .25s cubic-bezier(.645,.045,.355,1)}.link:hover:after,.link:focus:after{opacity:1}.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(--navy);z-index:99}.loader svg{height:100px;width:100px}.nav-wrapper{position:fixed;top:0;z-index:11;padding:0 50px;width:100%;height:100px;background-color:#0a192fd9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(1px);transition:all .25s cubic-bezier(.645,.045,.355,1)}.nav-wrapper.blur-nav{box-shadow:0 10px 30px -10px var(--navy-shadow)}.nav-wrapper .wrapper{display:flex;justify-content:space-between;align-items:center;position:relative;width:100%;color:var(--white);font-family:var(--font-mono);counter-reset:item 0;z-index:12;height:100px}.nav-wrapper .brand{z-index:11}.nav-wrapper .brand a{color:var(--teal);width:42px;height:42px;display:block;text-decoration:none;transition:all .3s ease}.nav-wrapper .brand a:hover{transform:translateY(-2px)}.nav-wrapper .brand svg{width:100%;height:100%;transition:all .3s ease}.nav-wrapper .nav-items{display:flex;align-items:center}.nav-wrapper .nav-items-list{display:flex;justify-content:space-between;align-items:center;padding:0;margin:0;list-style:none}.nav-wrapper .nav-items-list-item{margin:0 5px;position:relative;counter-increment:item 1;font-size:var(--tsm1)}.nav-wrapper .nav-items-list-item a{padding:10px;text-decoration:none;color:inherit;transition:all .25s cubic-bezier(.645,.045,.355,1)}.nav-wrapper .nav-items-list-item a:before{content:"0" counter(item) ".";margin-right:5px;color:var(--teal);font-size:var(--tsm2);text-align:right}.nav-wrapper .nav-items-list-item a:hover,.nav-wrapper .nav-items-list-item a:focus{color:var(--teal)}.nav-responsive-toggle{display:none;background:transparent;border:none;color:var(--teal);font-size:24px;cursor:pointer;padding:15px;z-index:15;position:relative;flex-direction:column;justify-content:center;align-items:center;width:50px;height:50px;border-radius:4px;transition:all .3s ease}.nav-responsive-toggle:hover{background-color:#64ffda1a;transform:scale(1.1)}.nav-responsive-toggle:focus{outline:2px solid var(--teal);outline-offset:2px}.nav-responsive-toggle span{display:block;font-size:20px;line-height:1;transition:all .3s ease}.hamburger-lines{display:flex;flex-direction:column;justify-content:space-between;width:24px;height:18px;cursor:pointer}.line{display:block;width:100%;height:2px;background-color:var(--teal);border-radius:1px;transform-origin:center}.menu-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#0a192fcc;z-index:9;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.mobile-menu{position:fixed;top:0;bottom:0;right:0;width:min(75vw,400px);height:100vh;outline:0;background-color:var(--light-navy);box-shadow:-10px 0 30px -15px var(--navy-shadow);z-index:10;overflow-y:auto}.mobile-menu ul{padding:80px 50px 50px;list-style:none;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;margin:0}.mobile-menu li{margin:0 auto 25px;position:relative;counter-increment:item 1;font-size:clamp(var(--tlarge),4vw,var(--txlarge));text-align:center;width:100%}.mobile-menu a{display:inline-block;text-decoration:none;color:var(--white);padding:15px 20px;width:100%;transition:all .3s ease;border-radius:4px}.mobile-menu a:hover{color:var(--teal);background-color:#64ffda1a;transform:translate(-5px)}.mobile-menu a:before{content:"0" counter(item) ".";display:block;margin-bottom:8px;color:var(--teal);font-size:var(--tsm1);font-family:var(--font-mono)}@media (max-width: 1080px){.nav-wrapper{padding:0 30px}.nav-wrapper .nav-items-list-item{margin:0 3px}.nav-wrapper .nav-items-list-item a{padding:8px}}@media (max-width: 768px){.nav-wrapper{padding:0 20px;height:80px}.nav-wrapper .wrapper{height:80px}.nav-wrapper .brand a{width:36px;height:36px}.nav-items{display:none}.nav-responsive-toggle{display:flex}.mobile-menu{width:min(80vw,350px)}.mobile-menu ul{padding:60px 30px 40px}.mobile-menu li{margin:0 auto 20px;font-size:clamp(var(--tlarge),4vw,var(--txlarge))}.mobile-menu a{padding:12px 15px}}@media (max-width: 480px){.nav-wrapper{padding:0 15px;height:70px}.nav-wrapper .wrapper{height:70px}.nav-wrapper .brand a{width:32px;height:32px}.mobile-menu{width:100vw}.mobile-menu ul{padding:30px 20px}.mobile-menu li{margin:0 auto 12px;font-size:var(--tbase)}.mobile-menu a{padding:10px 12px}.mobile-menu a:before{font-size:var(--tsm);margin-bottom:6px}.hamburger-lines{width:20px;height:16px}}.hero{margin-top:4rem;display:flex;flex-direction:column;align-items:flex-start;gap:1rem;justify-content:center;min-height:60vh}.hero-title{color:var(--teal);font-size:var(--tsm2);font-family:var(--font-mono)}.hero-title-large{font-size:var(--tgiant);font-family:var(--font-sans);color:var(--light-slate)}.hero-title-sub{color:var(--white)}.hero-text{color:var(--slate);margin-right:40%;font-size:var(--tlarge);letter-spacing:.07rem;line-height:1.6rem;font-weight:600;font-family:var(--font-sans)}.hero-button{margin-top:2rem}.hero-button .btn{padding:1rem 2rem;font-size:var(--tsm1)}@media screen and (max-width: 1080px){.hero{padding:0 2rem}.hero-text{margin-right:20%}}@media screen and (max-width: 768px){.hero{padding:0 1.5rem;min-height:70vh}.hero-content{gap:.75rem}.hero-title-large{font-size:clamp(32px,6vw,60px)}.hero-text{width:100%;margin-right:0;font-size:var(--tbase);line-height:1.5rem}.hero-button{margin-top:1.5rem}.hero-button .btn{padding:.875rem 1.75rem;font-size:var(--tsm)}}@media screen and (max-width: 480px){.hero{padding:0 1rem;min-height:60vh}.hero-content{gap:.5rem}.hero-title{font-size:var(--tsm1)}.hero-title-large{font-size:clamp(28px,8vw,48px);line-height:1.1}.hero-text{font-size:var(--tsm2);line-height:1.4rem;letter-spacing:.02rem}.hero-button .btn{padding:.75rem 1.5rem;font-size:var(--tsm)}}.about{margin:15rem 0}.about .title{font-family:var(--font-sans);color:var(--white);position:relative}.about .title h2{margin-bottom:2rem;font-size:var(--tx2large);font-weight:700}.about .title h2:before{counter-increment:title;content:"0" counter(title) ".";margin-right:.5rem;color:var(--teal)}.about .title h2:after{content:"";display:block;position:absolute;top:20px;width:300px;height:2px;margin-left:220px;background-color:var(--lightest-navy)}.about-grid{display:grid;grid-template-columns:60% 40%;gap:1rem}.about-grid-info{display:flex;flex-direction:column;gap:1rem}.about-grid-info-text{color:var(--slate);margin-right:10%;font-size:var(--tlarge);letter-spacing:.07rem;line-height:1.6rem;font-weight:500;font-family:var(--font-sans)}.about-grid-info-list{display:grid;grid-template-columns:1fr 1fr;list-style-type:none;padding:0;gap:.5rem}.about-grid-info-list-item{font-family:var(--font-sans);line-height:1.6rem;font-weight:500;font-size:var(--tbase);color:var(--slate);position:relative;padding-left:20px}.about-grid-info-list-item:before{content:"▹";position:absolute;left:0;color:var(--teal);line-height:12px}.about-grid-photo{position:relative;width:max-content;height:max-content}.about-grid-photo:hover .overlay{background-color:#0000}.about-grid-photo:hover .overlay-border{top:.5rem;left:.5rem}.about-grid-photo:hover img{filter:none}.about-grid-photo .overlay-border{z-index:-3;height:100%;width:100%;position:absolute;border:2px solid var(--teal);top:1rem;left:1rem;border-radius:.2rem;transition:.3s ease-in-out}.about-grid-photo-container{position:relative;height:350px;width:350px;object-fit:cover}.about-grid-photo-container img{z-index:0;filter:grayscale(100%);transition:.3s ease-in-out;border-radius:.2rem;width:100%;height:100%;object-fit:cover}@media screen and (max-width: 1080px){.about{margin:12rem 0}.about .title h2:after{width:250px;margin-left:200px}.about-grid{grid-template-columns:58% 42%;gap:2rem}.about-grid-photo-container{height:320px;width:320px}}@media screen and (max-width: 768px){.about{margin:8rem 0;padding:0 1.5rem}.about .title h2{font-size:var(--txlarge)}.about .title h2:after{display:none}.about-grid{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:2rem}.about-grid-info{order:2;text-align:center}.about-grid-photo{order:1;margin-top:0}.about-grid-photo-container{height:280px;width:280px}.about-grid-info-text{margin-right:0;font-size:var(--tbase);text-align:left}.about-grid-info-list{grid-template-columns:1fr 1fr;gap:.5rem;justify-items:start}}@media screen and (max-width: 480px){.about{margin:6rem 0;padding:0 1rem}.about .title h2{font-size:var(--tlarge2);text-align:center}.about-grid-photo-container{height:240px;width:240px}.about-grid-info-text{font-size:var(--tsm2);line-height:1.4rem}.about-grid-info-list{grid-template-columns:1fr;gap:.25rem}.about-grid-info-list-item{font-size:var(--tsm1)}}.projects{margin:15rem 0}.projects .title{font-family:var(--font-sans);color:var(--white);position:relative}.projects .title h2{margin-bottom:2rem;font-size:var(--tx2large);font-weight:700}.projects .title h2:before{counter-increment:title;content:"0" counter(title) ".";margin-right:.5rem;color:var(--teal)}.projects .title h2:after{content:"";display:block;position:absolute;top:20px;width:300px;height:2px;margin-left:420px;background-color:var(--lightest-navy)}.projects-container{display:flex;flex-direction:column;gap:5rem}.projects-container .project{position:relative;display:flex;justify-content:flex-end}.projects-container .project-image{position:absolute;top:0;left:0}.projects-container .project-image-container{position:relative;width:600px;height:300px}.projects-container .project-image:hover .project-image-overlay{background-color:#0000}.projects-container .project-image:hover img{filter:none}.projects-container .project-image img{z-index:0;filter:grayscale(100%);transition:.3s ease-in-out;width:100%;height:100%;object-fit:cover;border-radius:.2rem}.projects-container .project-info{z-index:5;width:600px;display:flex;flex-direction:column;align-items:flex-end;gap:.5rem}.projects-container .project-info-overline{color:var(--teal);font-family:var(--font-mono)}.projects-container .project-info-title{width:max-content;color:var(--white);font-size:var(--txlarge);font-family:var(--font-sans);cursor:pointer;transition:.3s ease-in-out}.projects-container .project-info-title:hover{color:var(--teal)}.projects-container .project-info-title a{color:inherit;text-decoration:none}.projects-container .project-info-description{background-color:var(--light-navy);border-radius:.2rem}.projects-container .project-info-description p{color:var(--light-slate);font-family:var(--font-sans);padding:2rem;text-align:end}.projects-container .project-info-tech-list{display:flex;list-style-type:none;gap:1rem;flex-wrap:wrap;justify-content:flex-end}.projects-container .project-info-tech-list-item{color:var(--light-slate);font-family:var(--font-sans)}.projects-container .project-info-links{font-size:var(--tlarge2);list-style-type:none;display:flex;gap:1rem}.projects-container .project-info-links-item{transition:.3s ease-in-out;display:flex;justify-content:center;align-items:center}.projects-container .project-info-links-item-link{padding:10px;color:var(--white);transition:.3s ease-in-out;outline:2px dashed transparent}.projects-container .project-info-links-item-link:hover{color:var(--teal)}.projects-container .project:nth-of-type(2n){justify-content:flex-start}.projects-container .project:nth-of-type(2n) .project-image{right:0;left:initial}.projects-container .project:nth-of-type(2n) .project-info{align-items:flex-start}.projects-container .project:nth-of-type(2n) .project-info-tech-list{justify-content:flex-start}.projects-container .project:nth-of-type(2n) .project-info-description p{text-align:start}@media screen and (max-width: 1080px){.projects{margin:10rem 0}.projects .title h2:after{width:200px;margin-left:350px}.projects-container .project-image-container{width:500px;height:280px}.projects-container .project-info{width:500px}}@media screen and (max-width: 768px){.projects{margin:8rem 0;padding:0 1rem}.projects .title{text-align:center}.projects .title h2{font-size:var(--txlarge);margin-bottom:3rem}.projects .title h2:after{display:none}.projects-container{gap:3rem}.projects-container .project{flex-direction:column;justify-content:center;align-items:center;position:relative;width:100%;max-width:100%}.projects-container .project-image{position:relative;width:100%;left:auto;right:auto;top:auto}.projects-container .project-image-container{width:100%;max-width:100%;height:200px;border-radius:8px;overflow:hidden}.projects-container .project-image img{width:100%;height:100%;object-fit:cover}.projects-container .project-info{width:100%;max-width:100%;background-color:var(--light-navy);border-radius:8px;padding:1.5rem;margin-top:-50px;z-index:10;position:relative;box-shadow:0 10px 30px #0000004d;align-items:flex-start}.projects-container .project-info-title{font-size:var(--tlarge2);width:100%;text-align:left}.projects-container .project-info-description{background-color:transparent;width:100%}.projects-container .project-info-description p{padding:0;text-align:left;font-size:var(--tbase);line-height:1.6}.projects-container .project-info-tech-list{justify-content:flex-start;flex-wrap:wrap;gap:.5rem;width:100%}.projects-container .project-info-tech-list-item{font-size:var(--tsm);background-color:var(--lightest-navy);padding:.25rem .5rem;border-radius:4px}.projects-container .project-info-links{justify-content:flex-start}.projects-container .project:nth-of-type(2n){flex-direction:column;justify-content:center;align-items:center}.projects-container .project:nth-of-type(2n) .project-image{position:relative;left:auto;right:auto;width:100%}.projects-container .project:nth-of-type(2n) .project-info{align-items:flex-start;width:100%}.projects-container .project:nth-of-type(2n) .project-info-tech-list{justify-content:flex-start}.projects-container .project:nth-of-type(2n) .project-info-description p{text-align:left}}@media screen and (max-width: 480px){.projects{margin:5rem 0;padding:0 .5rem}.projects .title h2{font-size:var(--tlarge)}.projects-container{gap:2rem}.projects-container .project-image-container{height:180px}.projects-container .project-info{padding:1rem;margin-top:-30px}.projects-container .project-info-title{font-size:var(--tlarge)}.projects-container .project-info-description p{font-size:var(--tsm1)}.projects-container .project-info-tech-list-item{font-size:var(--tsm);padding:.2rem .4rem}}.contact{max-width:700px;margin:15rem auto;display:flex;gap:1.5rem;justify-content:center;align-items:center;flex-direction:column;text-align:center;padding:0 2rem}.contact .contact-title{color:var(--teal);font-size:var(--tbase);font-family:var(--font-mono);font-weight:300;text-align:center}.contact .contact-title:before{counter-increment:title;content:"0" counter(title) ".";margin-right:.5rem;color:var(--teal)}.contact .contact-sub-title{font-size:var(--tgiant);font-family:var(--font-sans);color:var(--light-slate);text-align:center;margin:0}.contact .contact-text{color:var(--slate);font-size:var(--tlarge);letter-spacing:.07rem;line-height:1.6rem;font-weight:500;font-family:var(--font-sans);text-align:center;max-width:600px;margin:0 auto}.contact .contact-form-container{width:100%;max-width:500px;margin:2rem auto 0;display:flex;justify-content:center}.contact form{width:100%;display:flex;flex-direction:column;gap:1rem;align-items:center}.contact input,.contact textarea{width:100%;padding:.75rem;background-color:var(--light-navy);border:1px solid var(--lightest-navy);border-radius:4px;color:var(--white);font-size:var(--tbase);font-family:inherit;box-sizing:border-box}.contact input:focus,.contact textarea:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #64ffda33}.contact button[type=submit]{align-self:center;padding:1rem 2rem;margin-top:1rem}.contact .contact-cta{margin-top:1rem;text-align:center}.contact .contact-cta .btn{padding:1rem 2rem}@media screen and (max-width: 768px){.contact{margin:8rem auto;padding:0 1rem;gap:1rem}.contact .contact-sub-title{font-size:var(--txlarge)}.contact .contact-text{font-size:var(--tbase)}.contact .contact-form-container{max-width:100%}}@media screen and (max-width: 480px){.contact{margin:5rem auto;padding:0 .5rem}.contact .contact-sub-title{font-size:var(--tlarge)}.contact input,.contact textarea{padding:.5rem}.contact button[type=submit]{padding:.75rem 1.5rem}}footer{display:flex;justify-content:center;align-content:center;padding:15px;min-height:70px}footer .footer-link{text-decoration:none;display:flex;flex-direction:column;gap:.5rem;color:var(--teal);outline:2px dashed transparent;transition:.3s ease-in-out;padding:10px;font-size:var(--tsm1)}footer .footer-link .footer-info{font-family:var(--font-mono);text-align:center}footer .footer-link .footer-git{display:flex;justify-content:center;align-items:baseline;gap:1rem}footer .footer-link .footer-git-item{display:flex;gap:.3rem}footer .footer-link .footer-git-item-icon{display:flex;justify-content:center;align-items:center}.social-icons{position:fixed;bottom:0;left:4rem;z-index:10}.social-icons-list{list-style-type:none;display:flex;flex-direction:column;gap:.5rem}.social-icons-list-item{font-size:var(--tlarge2);transition:.3s ease-in-out;display:flex;justify-content:center;align-items:center}.social-icons-list-item-link{padding:10px;color:var(--white);transition:.3s ease-in-out;outline:2px dashed transparent}.social-icons-list-item-link:hover{color:var(--teal);transform:translateY(-4px)}.social-icons-list-item:last-child{margin-bottom:2rem}.social-icons-list:after{content:"";display:block;width:2px;height:90px;margin:0 auto;background-color:var(--light-slate)}@media screen and (max-width: 768px){.social-icons{display:none}}.email{position:fixed;bottom:0;right:4rem;display:flex;flex-direction:column;gap:1.5rem;z-index:10}.email-link{writing-mode:vertical-rl;text-decoration:none;color:var(--light-slate);font-family:var(--font-mono);font-size:var(--tsm2);letter-spacing:.1rem;margin-bottom:20px;outline:2px dashed transparent;padding:10px;transition:.3s ease-in-out}.email-link:hover{color:var(--teal)}.email:after{content:"";display:block;width:2px;height:90px;margin:0 auto;background-color:var(--light-slate)}@media screen and (max-width: 768px){.email{display:none}}.loader{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:var(--navy);display:flex;justify-content:center;align-items:center;z-index:9999;overflow:hidden}.loader svg{height:10rem;width:10rem;opacity:1;animation:fadeInScale 1s ease-out}@keyframes fadeInScale{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}
