body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--bg-primary: rgba(255, 255, 255, .6);--bg-hero: rgba(255, 255, 255, .7);--text-primary: #333;--text-body: rgba(0, 0, 0, 1);--text-heading-bg: #333;--nav-bg-desktop: rgba(15, 15, 25, 0);--nav-bg-mobile: rgba(255, 255, 255, 1);--nav-blur-mobile: blur(0px);--font-xs: .8rem;--font-sm: 1rem;--font-base: 1.2rem;--font-lg: 1.5rem;--font-xl: 1.8rem;--font-2xl: 2rem;--font-3xl: 2.8rem;--space-xs: .5rem;--space-sm: 1rem;--space-md: 2rem;--space-lg: 3rem;--space-xl: 4rem;--space-2xl: 5rem;--space-3xl: 10rem}.apod-active{--bg-primary: rgba(15, 15, 25, .8);--bg-hero: rgba(15, 15, 25, 0);--text-primary: rgb(201, 201, 201);--text-body: rgb(201, 201, 201);--text-heading-bg: rgb(201, 201, 201);--nav-bg-desktop: rgba(15, 15, 25, 0);--nav-bg-mobile: rgba(15, 15, 25, .5);--nav-blur-mobile: blur(5px)}.App{text-align:center;width:100%;position:relative;overflow-y:scroll;overflow-x:hidden}.route-container{width:100%;height:100%}.route-container>*{position:absolute;top:0;left:0;width:100%}.main-content-area.menu-open .home-container{z-index:-2;display:none}.fade-enter{opacity:0}.fade-enter-active{opacity:1;transition:opacity 2.5s ease-in-out}.fade-exit{opacity:1}.fade-exit-active{opacity:0;transition:opacity 2.5s ease-in-out}.App-header{height:100vh;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;font-size:calc(10px + 2vmin);overflow-x:hidden;overflow-y:hidden}*{-webkit-tap-highlight-color:transparent}.bg-primary{background-color:var(--bg-primary)}.bg-hero{background-color:var(--bg-hero)}.text-primary{color:var(--text-primary)}.text-body{color:var(--text-body)}.text-heading-bg{background-color:var(--text-heading-bg)}.mobile-menu-active .hide-on-mobile-menu{display:none!important}.sidebar-nav-container{display:flex;background-color:var(--nav-bg-desktop);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px)}@media(max-width:768px){.sidebar-nav-container{background-color:var(--nav-bg-mobile);-webkit-backdrop-filter:var(--nav-blur-mobile);backdrop-filter:var(--nav-blur-mobile)}}.navbar{height:7rem;width:100%;margin:0 auto;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:7;margin-top:1rem}.menuItem{padding-left:calc(20px + 2vw);padding-right:calc(20px + 2vw);padding-bottom:calc(20px + 2vw);font-size:calc(5px + 2vmin);z-index:10}.menuItem a:hover{cursor:pointer}.logo-container{display:flex;align-items:center;font-size:calc(20px + 2vmin);padding-left:1rem}.desktopMenu{display:flex;margin-top:80px}.mobileMenuButton{background-color:transparent;color:#ca1313;border:none;padding:.5rem 2rem;cursor:pointer;display:none}@media(max-width:800px){.desktopMenu{display:flex;flex-direction:column;height:100vh}.mobileMenuButton{display:block;width:100px;height:100px;font-size:3rem}.mobileMenuButton .btn-line{width:28px;height:3px;margin:0 0 5px;background:#000;transition:all .5s ease-out}.mobileMenuButton.light-theme .btn-line{background:#fff}.line1{transform:rotate(45deg) translate(5px,5px)}.line2{opacity:0}.line3{transform:rotate(-45deg) translate(5px,-5px)}.menu{position:absolute;top:9rem;left:0;width:100%;overflow:auto;max-height:0;display:flex;flex-direction:column;align-items:center;transition:max-height .3s ease-out}.menu.open{max-height:100vh;display:flex;width:100%}.menu div{padding:1rem 0;width:100%;text-align:center}}circle.outer{transition:opacity .5s,fill .5s}circle.outer.connected-circle{fill:#00d4ffe6;filter:drop-shadow(0px 0px 5px rgba(0,212,255,.7))}circle.outer.unconnected-circle{pointer-events:none}.home-container{display:flex;justify-content:center;align-items:center;height:100vh;width:100%;z-index:5;position:absolute}.inner-container-home{width:100%;max-width:1200px;height:70vh;max-height:800px;flex-direction:column}.visualization-selector{display:flex;flex-direction:row;gap:10px}.vis-square{width:15px;height:15px;background-color:#000;border:solid #000000 1px;cursor:pointer;transition:background-color .3s}.vis-square.active{background-color:red}#my_dataviz svg{width:80%;z-index:5}@media(max-width:768px){.home-container{display:flex;flex-direction:column;justify-content:center;align-items:center;position:fixed}.visualization-selector{display:flex;flex-direction:row;gap:10px}.inner-container-home{max-width:100%;height:60vh;max-height:500px}}.p5-background-container{position:fixed;top:0;left:0;z-index:-1;width:100%;height:100vh;overflow:hidden}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#0009;display:flex;align-items:center;justify-content:center;z-index:1050;opacity:0;animation:fadeIn .3s forwards}.modal-content{background-color:#fff;color:#333;padding:25px 30px;border-radius:8px;box-shadow:0 5px 15px #0000004d;text-align:center;max-width:450px;width:90%;transform:scale(.9);animation:scaleUp .3s forwards}.modal-content p{margin-top:0;margin-bottom:20px;font-size:1rem;line-height:1.6}.modal-close-button{padding:10px 25px;background-color:#007bff;color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:.95rem;font-weight:500;transition:background-color .2s ease-in-out}.modal-close-button:hover{background-color:#0056b3}@keyframes fadeIn{to{opacity:1}}@keyframes scaleUp{to{transform:scale(1)}}.portfolio-container{display:flex;flex-direction:row;justify-content:center;align-items:flex-start;padding:25rem 5rem 5rem;margin:0 auto;box-sizing:border-box;min-height:100vh}.portfolio-sub-menu{padding:50px;display:flex;flex-direction:column;position:sticky;top:50px;text-align:left;background-color:#fff;z-index:10;width:300px}.portfolio-sub-menu h3{text-align:left;font-size:2.8rem;font-weight:900;margin-bottom:12px;text-transform:uppercase;color:#333;margin-top:1rem}.portfolio-nav{display:flex;flex-direction:column;list-style:none;padding:0;font-family:Fira Code,monospace;font-size:1.2rem;color:#2d3386;margin-bottom:.5rem;font-weight:500;letter-spacing:.5px;position:relative;z-index:10;justify-content:space-between}.portfolio-nav a{color:#64748b;text-decoration:none;font-weight:500;border-left:2px solid transparent;padding:.2rem 0 .2rem .5rem;transition:all .3s ease;display:block}.portfolio-nav a:hover{color:#2d3386;border-left-color:#a855f7}.portfolio-inner{width:1200px;display:flex;padding:1rem;flex-direction:column;align-items:center}.portfolio-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,250px));gap:20px;width:100%}.portfolio-item{position:relative;overflow:hidden;break-inside:avoid;transition:box-shadow .3s ease,transform .3s ease;display:flex;background:#fff;box-shadow:0 2px 6px #0000001a;aspect-ratio:1 / 1;padding:0;flex-direction:column;align-items:center;justify-content:center}.portfolio-item a{display:block;text-decoration:none;color:inherit;width:100%;height:100%}.portfolio-item img{width:100%;height:100%;object-fit:contain;display:block;transition:transform .3s ease}.portfolio-item:hover img{transform:scale(.91)}.portfolio-item:hover{box-shadow:0 4px 12px #0003;transform:translateY(-2px)}.project-title-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000080;color:#fff;text-align:center;opacity:0;transition:opacity .3s ease;display:flex;justify-content:center;align-items:center;padding:10px;box-sizing:border-box}.project-title-overlay h4{margin:0;font-size:1em;width:100%}.portfolio-item:hover .project-title-overlay{opacity:1}.portfolio-category{width:100%;text-align:left;display:flex;flex-direction:column;align-items:left;padding-top:3.5rem;max-width:1200px;margin:0 auto}.category-main-title{text-align:left;font-size:1.8rem;font-weight:900;margin-bottom:12px;text-transform:uppercase;color:#333}.category-summary{font-size:1rem;color:#555;margin-bottom:30px;max-width:700px;text-align:left;line-height:1.6}@media(max-width:1024px){.portfolio-nav{font-size:.8rem}}@media(max-width:768px){.portfolio-sub-menu{position:sticky;top:0;padding:10px;width:100%}.portfolio-nav{display:flex;flex-direction:row;font-size:.7rem}.portfolio-container{padding:15rem 5rem 5rem;flex-direction:column;align-items:center}.portfolio-inner{width:100%}.portfolio-grid{grid-template-columns:repeat(2,1fr);gap:15px;padding-bottom:200px}.category-main-title{font-size:1.6rem}.category-summary{font-size:.95rem}}@media(max-width:480px){.portfolio-grid{grid-template-columns:repeat(2,1fr);gap:10px;padding-bottom:200px}.portfolio-nav{display:flex;flex-direction:row;font-size:.6rem;margin-right:10px}.portfolio-container{padding:15px;padding-top:10rem;align-items:center}.category-main-title{font-size:1.4rem}.category-summary{font-size:.9rem}}.about-page{padding-top:20rem;min-height:100vh}.about-content{position:relative;display:grid;justify-content:center;flex-direction:row;align-items:flex-start;padding:5rem}.about-sidebar{padding:50px;position:sticky;top:0rem;text-align:left;display:flex;z-index:2;background-color:var(--bg-primary);flex-direction:column;align-items:flex-start;width:300px;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);border-radius:25px}.about-title{text-align:left;font-size:2.8rem;font-weight:900;margin-bottom:12px;text-transform:uppercase;color:var(--text-primary);margin-top:1rem}.container{max-width:1200px;padding:1rem;position:relative;z-index:1}.hero{display:grid;grid-template-columns:1fr auto;gap:4rem;margin-bottom:.5rem;padding-top:6rem;padding-right:5rem}.hero-content{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border-radius:24px;position:relative;overflow:hidden;padding:1rem;text-align:left;background-color:var(--bg-hero)}.hero h1{font-size:1.8rem;font-weight:800;color:var(--text-heading-bg);line-height:1.1;letter-spacing:-.02em}.hero .subtitle{font-family:Fira Code,monospace;font-size:1rem;color:var(--text-primary);margin-bottom:2rem;font-weight:500;letter-spacing:.5px;position:relative}.hero .subtitle:after{content:"";position:absolute;bottom:-8px;left:0;width:60px;height:2px;background:linear-gradient(90deg,#a855f7,#ec4899);border-radius:1px}.hero .bio{font-size:1.25rem;line-height:1.3;color:var(--text-body);font-weight:500;text-align:left}.profile-section{display:flex;flex-direction:column;align-items:center;gap:1.5rem}.profile-card{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border:1px solid rgba(255,255,255,.1);border-radius:24px;padding:2rem;width:300px;position:relative;overflow:hidden}.profile-image{width:100%;height:280px;background:linear-gradient(135deg,#fff,#fff3);border-radius:16px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.2);overflow:hidden;position:relative}.profile-image:after{content:"PORTFOLIO";position:absolute;color:#ffffff1a;font-size:2rem;font-weight:800;letter-spacing:4px;transform:rotate(-45deg)}.stats-grid{display:flex;justify-content:space-around;width:100%}.stat-item{background-color:var(--bg-hero);border-radius:12px;padding:1rem;text-align:center;border:1px solid rgba(255,255,255,.1)}.stat-number{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:.25rem}.stat-label{font-size:.8rem;color:var(--text-body);text-transform:uppercase;letter-spacing:1px}.about-section{display:flex;grid-template-columns:1fr 2fr;gap:4rem;align-items:start;padding-bottom:5rem}.about-sidebar ul{width:100%}.side-element{position:sticky;top:10rem}.about-nav{list-style:none;padding:0;font-family:Fira Code,monospace;font-size:1.2rem;color:var(--text-primary);margin-bottom:.5rem;font-weight:500;letter-spacing:.5px;justify-content:space-between;position:relative}.about-nav a{color:var(--text-body);text-decoration:none;font-weight:500;border-left:2px solid transparent;padding:.2rem 0 .2rem .5rem;transition:all .3s ease;display:block}.about-nav a:hover{color:var(--text-primary);border-left-color:#a855f7}.about-content2{background:var(--bg-primary);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border-radius:24px;padding:0rem 10rem 0rem 0rem;text-align:left;position:relative;overflow:hidden}.content-section{margin-bottom:3rem;font-weight:400}.content-section:last-child{margin-bottom:0}.section-title{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:1rem;position:relative;padding-left:1rem;text-align:left}.section-title:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:4px;height:100%;background:linear-gradient(180deg,#a855f7,#ec4899);border-radius:2px}.content-section p{font-size:1rem;line-height:1.8;color:var(--text-body);margin-bottom:1rem;padding:1rem}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1rem;margin-top:1.5rem}.skill-tag{background:#0e1a271a;border:1px solid rgba(168,85,247,.3);border-radius:8px;padding:.5rem 1rem;text-align:center;font-size:.9rem;color:var(--text-primary);font-weight:500;transition:all .3s ease}.skill-tag:hover{background:#a855f733;transform:translateY(-2px)}@media(max-width:1024px){.about-nav{font-size:.8rem;display:flex;flex-direction:column}.about-content2{padding-right:0rem}.hero{grid-template-columns:1fr;gap:3rem;text-align:center;padding-right:0}.about-page{padding-top:20rem}.about-section{grid-template-columns:1fr;gap:3rem}.about-title{font-size:2rem;text-align:center}}@media(max-width:768px){.hero h1{font-size:2rem}.hero-content{padding:1rem}.about-content{padding-top:5rem;flex-direction:row}.about-content2{padding:0}.profile-card{width:100%;max-width:350px}.stats-grid{grid-template-columns:1fr 1fr}.about-title{font-size:2.8rem}.about-sidebar{position:sticky;top:0;width:100%;padding-top:10px;padding-left:0;padding-right:0}.container{padding:0rem}.about-page{padding-top:10rem}.about-nav{font-size:.6rem;flex-direction:row}.about-content{padding:5rem;flex-direction:column}}@media(max-width:480px){.hero{padding-top:3rem}.about-sidebar{position:sticky;top:0;width:100%;padding:0}.about-page{padding-top:10rem}.about-nav{display:flex;flex-direction:row;font-size:.6rem;margin-right:10px}.about-content{padding-left:15px;padding-right:15px;padding-top:10px}}.footer{background-color:#333;color:#fff;padding:20px 0;text-align:center;width:100%;position:relative;bottom:0;z-index:5}.footer-content{display:flex;justify-content:center;align-items:center;margin:0 auto;font-size:.5em}.footer-links{list-style:none;display:flex;gap:15px;padding:0;padding-left:2rem}.footer-links a{color:#fff;text-decoration:none}.footer-links a:hover{text-decoration:underline}.resume-container{max-width:800px;margin:50px auto;padding:100px 20px 20px;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-start;font-size:calc(5px + 1vmin)}.resume-details{flex:2}.contact-container{display:flex;flex-direction:row;justify-content:space-between;align-items:center;font-size:calc(5px + 1vmin);height:100%}.contact-details{flex:2}.project-page-container{display:flex;flex-direction:column;width:100%;margin:0 auto;padding-top:15vh;padding-bottom:20vh;text-align:left;align-items:center;background-color:var(--bg-primary);z-index:5;box-sizing:border-box}.project-hero{display:flex;flex-direction:column;width:100%;max-width:1000px;padding:100px 5vw;margin-bottom:8vh;gap:1.5rem;box-sizing:border-box}.project-hero-header{display:flex;justify-content:space-between;align-items:flex-start;width:100%}.project-title-group{display:flex;flex-direction:column;gap:.5rem}.project-title-text{font-size:clamp(2rem,5vw,3.5rem);font-weight:500;line-height:1.1;margin:0;color:inherit}.project-subtitle-text{font-size:clamp(1rem,2vw,1.5rem);font-style:italic;font-weight:300;opacity:.8;margin:0}.project-close-button{text-decoration:none;color:#333;font-size:1.5rem;font-weight:700;padding:5px 15px;transition:all .2s ease}.project-close-button:hover{color:#000;transform:scale(1.1)}.project-meta{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:1rem}.tech-tags{display:flex;flex-wrap:wrap;gap:.8rem}.tech-tag-pill{font-size:.8rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;padding:.4rem .8rem;border-radius:50px;background-color:#0000000d;border:1px solid rgba(0,0,0,.1);color:#444}.project-links{display:flex;gap:1rem}.icon-link{width:34px;height:34px;transition:opacity .2s ease}.icon-link:hover{opacity:.7}.project-description-block{margin-top:2rem;max-width:850px}.project-description-block p{font-size:clamp(1rem,1.5vw,1.15rem);font-weight:400;line-height:1.6;word-wrap:break-word;white-space:pre-line;color:#222}.project-gallery{display:flex;flex-direction:column;align-items:center;width:100%;margin-top:5vh;gap:8vh}.gallery-item{width:100%;max-width:1400px;padding:0 2vw;display:flex;justify-content:center;box-sizing:border-box}.project-page-image{width:100%;max-width:1200px;height:auto;border-radius:8px;box-shadow:0 10px 30px #0000000d;object-fit:contain}.project-context-blocks{display:flex;flex-direction:column;gap:4rem;width:100%;max-width:850px;padding:0 5vw;box-sizing:border-box}.context-block h2{font-size:1.8rem;font-weight:500;margin-bottom:1rem;border-bottom:1px solid rgba(0,0,0,.1);padding-bottom:.5rem}.context-block p{font-size:1.1rem;line-height:1.6;color:#444}@media(max-width:768px){.project-page-container{padding-top:10vh}.project-hero,.project-context-blocks,.gallery-item{padding-left:20px;padding-right:20px}.project-meta{flex-direction:column;align-items:flex-start}.project-gallery{gap:5vh}.project-title-text{font-size:2.2rem}}.scrollToTopButton{position:fixed;width:40px;height:40px;bottom:30px;right:30px;z-index:100;padding:10px 15px;font-size:18px;background-color:#555;color:#fff;border:none;border-radius:5px;cursor:pointer;opacity:.8;transition:opacity .2s ease-in-out}.scrollToTopButton:hover{opacity:1}.controls-wrapper{position:fixed;bottom:25px;z-index:10;background:#000000a6;border-radius:8px;display:flex;align-items:center;padding:5px;transition:width .35s ease-in-out,background-color .35s ease-in-out;overflow:hidden}.expand-toggle-button{background:#333;border:1px solid #555;color:#fff;cursor:pointer;width:35px;height:35px;padding:6px 10px;border-radius:4px;font-size:18px;line-height:1;margin-right:0;transition:background-color .2s ease,margin-right .35s ease-in-out;flex-shrink:0;align-self:stretch}.expand-toggle-button:hover{background:#4e4e4e}.controls-wrapper.expanded .expand-toggle-button{margin-right:10px}.actual-controls-content{display:flex;align-items:center;opacity:0;visibility:hidden;width:0;transform:translate(-20px);transition:opacity .3s ease-in-out .1s,visibility 0s linear .4s,width .35s ease-in-out,transform .35s ease-in-out;white-space:nowrap;overflow:hidden}.controls-wrapper.expanded .actual-controls-content{opacity:1;visibility:visible;width:auto;transform:translate(0);transition-delay:0s,0s,0s,0s}.sleek-button{padding:8px 12px;color:#fff;background:#2c2c2c;border:none;border-radius:4px;cursor:pointer;margin-right:10px;font-size:.35em;white-space:nowrap}.sleek-button:hover{background:#404040}.info-text{color:#fff;font-size:.25em;white-space:nowrap}.copyright-text{font-size:.9em;opacity:.75;display:inline-block;margin-top:2px}
