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}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion: no-preference){.App-logo{animation:App-logo-spin infinite 20s linear}}.App-header{background-color:#1e1e1e;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:calc(10px + 2vmin);color:#fff}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.header-container{background-color:#1e1e1e;padding:20px 40px;display:flex;align-items:center;justify-content:space-between;color:#fff;font-family:RobotoMono,sans-serif;position:relative;z-index:1000}.logo{font-size:24px;font-weight:700;letter-spacing:2px;color:#e1e1e1;text-decoration:none}.logo:hover{color:#9b59b6}.nav{display:flex;align-items:center}@media (max-width: 768px){.nav{position:fixed;top:0;right:-100%;width:100%;height:100%;background-color:#1e1e1e;flex-direction:column;justify-content:center;transition:right .3s ease-in-out;z-index:999}}.nav.open{right:0}.nav-link{display:flex;align-items:center;margin-left:40px;color:#d3d3d3;text-decoration:none;font-size:18px;transition:color .3s;font-family:RobotoMono,sans-serif}.nav-link:hover{color:#9b59b6}.nav-link svg{margin-right:8px}@media (max-width: 768px){.nav-link{margin-left:0;margin-bottom:20px;font-size:24px}}.hamburger{display:none;cursor:pointer}@media (max-width: 768px){.hamburger{display:block;position:absolute;top:20px;right:20px;z-index:1001}}.button{display:flex;align-items:center;margin-left:40px;padding:8px 16px;border:2px solid #9b59b6;color:#9b59b6;text-decoration:none;font-size:18px;transition:all .3s;font-family:RobotoMono,sans-serif;border-radius:5px}.button:hover{background-color:#9b59b6;color:#fff}.button svg{margin-right:8px}@media (max-width: 768px){.button{margin-left:0;margin-bottom:20px;font-size:24px}}.close-icon{display:block;z-index:1002}.about-container{width:80%;margin:0 auto;font-family:RobotoMono,sans-serif;color:#fff}.about-container h2{font-size:2em;padding-top:10px;margin:0;color:#fff;font-family:RobotoMono,sans-serif;text-align:left}.about-container .about-intro{display:flex;flex-direction:row;align-items:flex-start;margin-bottom:40px}@media (min-width: 768px){.about-container .about-intro{align-items:center}}@media (max-width: 768px){.about-container .about-intro{flex-direction:column;text-align:center}}.about-container .about-intro .about-text{flex:1;padding-right:0;text-align:left}@media (max-width: 768px){.about-container .about-intro .about-text{text-align:center;padding-right:0}}.about-container .about-intro .about-text p{font-size:1.2em;margin-bottom:20px}.about-container .about-intro .about-text .purple-text{color:#9b30ff}.about-container .about-intro .about-text a{columns:#9b30ff;text-decoration:underline}.about-container .about-intro .about-text a:visited{color:#9b30ff}.about-container .about-intro .about-text a:hover{color:#8a2be2}.about-container .about-intro .about-photo{flex:0 0 30%;padding-left:5%;display:flex;justify-content:flex-end;align-items:center}.about-container .about-intro .about-photo img{width:100%;height:auto;border:3px solid #8a2be2;border-radius:10px}@media (max-width: 768px){.about-container .about-intro .about-photo{width:70%;padding-left:0;margin-top:20px;margin-right:auto;justify-content:center;align-items:center}}.about-technologies-container{width:80%;margin:0 auto;padding:20px 0;font-family:RobotoMono,sans-serif;color:#fff}.about-technologies-container .about-technologies h2{font-size:2em;margin-bottom:20px;text-align:left;color:#fff}.about-technologies-container .about-technologies .technology-categories{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media (max-width: 1024px){.about-technologies-container .about-technologies .technology-categories{grid-template-columns:1fr}}@media (max-width: 500px){.about-technologies-container .about-technologies .technology-categories{grid-template-columns:1fr}}.about-technologies-container .about-technologies .technology-categories .technology-category{background-color:#2a2a2a;padding:20px;border-radius:10px;border:1px solid #9b30ff}.about-technologies-container .about-technologies .technology-categories .technology-category h3{font-size:1.5em;margin-bottom:30px;text-align:center;color:#fff}.about-technologies-container .about-technologies .technology-categories .technology-category .technology-items{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}@media (max-width: 1024px){.about-technologies-container .about-technologies .technology-categories .technology-category .technology-items{grid-template-columns:repeat(2,1fr)}}.about-technologies-container .about-technologies .technology-categories .technology-category .technology-items .technology-item{display:flex;flex-direction:column;align-items:center;font-size:1.2em;color:#fff;transition:color .3s ease;cursor:default}.about-technologies-container .about-technologies .technology-categories .technology-category .technology-items .technology-item i{font-size:3em;margin-bottom:10px}.about-technologies-container .about-technologies .technology-categories .technology-category .technology-items .technology-item p{margin:0;color:inherit;transition:inherit}.about-technologies-container .about-technologies .technology-categories .technology-category .technology-items .technology-item:hover{color:#9b30ff}.footer-container{background-color:#1e1e1e;color:#fff;padding:20px 40px;text-align:center;font-family:RobotoMono,sans-serif;display:grid;grid-template-columns:repeat(3,1fr);align-items:center}@media (max-width: 768px){.footer-container{display:flex;flex-direction:column;text-align:center;gap:10px}}.footer-container .footer-link{color:#8a2be2;text-decoration:underline;margin-left:5px}.footer-container .social-icons{display:flex;justify-content:flex-end;gap:20px}@media (max-width: 768px){.footer-container .social-icons{justify-content:center}}.footer-container .social-icons a{color:#d3d3d3;font-size:1.5em;transition:color .3s}.footer-container .social-icons a:hover{color:#8a2be2}@font-face{font-family:RobotoMono;src:url(/assets/RobotoMono-Medium-B0UKl2Zn.ttf) format("truetype");font-weight:500}@font-face{font-family:RobotoMono;src:url(/assets/RobotoMono-Regular-44XoGH_Y.ttf) format("truetype");font-weight:400}@font-face{font-family:Inter;src:url(/assets/Inter-Regular-DYjygwQm.ttf) format("truetype");font-weight:400}.contribution-map-container{color:#fff;font-family:RobotoMono,sans-serif;margin:0 auto;padding:20px 0}.contribution-map-container .contribution-map{margin-top:40px;display:flex;flex-direction:column;align-items:center}.contribution-map-container .contribution-map h2{font-size:2em;margin-bottom:20px;text-align:center;align-self:flex-start;width:100%}.contribution-map-container .contribution-map .react-github-calendar{width:100%;display:flex;justify-content:center;overflow-x:auto}.contribution-map-container .contribution-map .calendar-wrapper{width:100%;display:flex;justify-content:center}.experience-container{display:flex;align-items:center;flex-direction:column;color:#fff;margin:0 auto;width:80%;padding:0;font-family:RobotoMono,sans-serif}.experience-container .experience-title{font-size:2.5em;text-align:left;margin:0;padding:0;width:100%}.experience-container .content-wrapper{width:100%;gap:24px}@media (min-width: 1025px){.experience-container .content-wrapper{flex-direction:row;justify-content:space-between;align-items:flex-start}}.left-column{flex:1;margin-bottom:20px;box-sizing:border-box}@media (max-width: 1024px){.left-column{margin-right:0;width:100%}}.right-column{flex:1;display:flex;justify-content:center;align-items:flex-start;width:100%;box-sizing:border-box}.right-column iframe{width:100%;height:80vh;border:none}@media (max-width: 1200px){.right-column iframe{height:60vh}}@media (max-width: 768px){.right-column iframe{height:50vh}}.section-container{position:relative}.section-title{font-size:2.5em;margin-bottom:20px;position:relative}.line-container{position:relative}.line-container:before{content:"";position:absolute;top:0;bottom:0;width:2px;background:#d3d3d3}.job-container{margin-bottom:20px;padding-left:40px;position:relative}.job-container:before{content:"";position:absolute;top:1em;left:0;width:20px;height:2px;background:#d3d3d3}.job-title{font-size:1.5em;margin:10px 0;position:relative}.company{color:#8a2be2}.job-dates{font-size:1em;color:#d3d3d3;margin:5px 0 10px}.bullet-point{list-style-type:none;position:relative;padding-left:20px;font-size:1.3em;overflow-wrap:break-word;flex-shrink:1}.bullet-point:before{content:">";position:absolute;left:0;color:#8a2be2}.projects-container{display:flex;flex-direction:column;align-items:center;color:#fff;font-family:RobotoMono,sans-serif;margin:0 auto;padding:0 10px;overflow-x:hidden;width:80%}.projects-container .section-title{font-size:2.5em;margin-bottom:20px;text-align:left;width:100%;box-sizing:border-box}.projects-container .projects-controls{width:100%;margin-bottom:30px;display:flex;flex-direction:column;gap:20px}.projects-container .projects-controls .search-section{display:flex;flex-direction:column;gap:15px}@media (min-width: 768px){.projects-container .projects-controls .search-section{flex-direction:row;align-items:center;justify-content:space-between}}.projects-container .projects-controls .search-section .search-bar{display:flex;align-items:center;background:#2a2a2acc;border-radius:10px;padding:12px 16px;border:2px solid transparent;transition:border-color .3s ease;flex:1}.projects-container .projects-controls .search-section .search-bar:focus-within{border-color:#9b59b6}.projects-container .projects-controls .search-section .search-bar input{background:none;border:none;color:#fff;font-family:RobotoMono,sans-serif;font-size:1em;flex:1;outline:none}.projects-container .projects-controls .search-section .search-bar input::placeholder{color:#d3d3d3}.projects-container .projects-controls .search-section .search-bar .search-icon{color:#9b59b6;margin-right:10px;font-size:1.2em}.projects-container .projects-controls .search-section .show-all-button{background:#9b59b633;border:2px solid #9b59b6;color:#9b59b6;padding:12px 24px;border-radius:10px;font-family:RobotoMono,sans-serif;font-size:1em;cursor:pointer;transition:all .3s ease;white-space:nowrap}.projects-container .projects-controls .search-section .show-all-button:hover,.projects-container .projects-controls .search-section .show-all-button.active{background:#9b59b6;color:#fff}.projects-container .projects-controls .filter-tags{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}@media (min-width: 768px){.projects-container .projects-controls .filter-tags{justify-content:flex-start}}.projects-container .projects-controls .filter-tags .tag-filter{background:#2a2a2a99;border:2px solid #2a2a2a;color:#d3d3d3;padding:8px 16px;border-radius:20px;font-family:RobotoMono,sans-serif;font-size:.9em;cursor:pointer;transition:all .3s ease}.projects-container .projects-controls .filter-tags .tag-filter:hover{border-color:#9b59b6;color:#9b59b6}.projects-container .projects-controls .filter-tags .tag-filter.active{background:#9b59b6;border-color:#9b59b6;color:#fff}.projects-container .projects-display{width:100%}.projects-container .projects-display .no-results{text-align:center;color:#d3d3d3;font-size:1.2em;margin:40px 0}.projects-container .projects-display .big-projects-container{display:flex;flex-direction:column;align-items:center;width:100%;margin-bottom:40px}.projects-container .projects-display .small-projects-container{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%;gap:14px}@media (max-width: 768px){.projects-container .projects-display .small-projects-container{justify-content:center}}.project-container{width:100%;margin-bottom:40px;border-radius:15px;overflow:hidden;box-shadow:0 4px 15px #8a2be24d;transition:transform .3s ease,box-shadow .3s ease;position:relative;min-height:250px}.project-container:hover{transform:translate(-5px);box-shadow:0 8px 25px #8a2be24d}.project-container img,.project-container video{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:1}.project-container .project-content{position:relative;z-index:2;background:#1e1e1ed9;padding:20px;display:flex;flex-direction:column;height:100%}.project-container .project-content .project-header{margin-bottom:12px;text-align:center}.project-container .project-content .project-header h3{font-size:2em;margin-bottom:6px}.project-container .project-content .project-header .project-tags{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-bottom:0}.project-container .project-content .project-header .project-tags .tag{background:#9b59b633;color:#d4a1ff;padding:4px 10px;border-radius:12px;font-size:.8em;font-weight:500}.project-container .project-content .project-description{font-size:1.2em;margin-bottom:12px;color:#d3d3d3;line-height:1.4;text-align:center}.project-container .project-content .project-technologies{margin-bottom:12px;text-align:center}.project-container .project-content .project-technologies .tech-uses{color:#9b59b6;font-weight:600;font-size:.9em;margin-right:8px}.project-container .project-content .project-technologies .tech-items{display:inline-flex;flex-wrap:wrap;gap:6px}.project-container .project-content .project-technologies .tech-items .tech-item{background:#2a2a2acc;padding:3px 8px;border-radius:8px;font-size:.85em;border:1px solid rgba(155,89,182,.3)}.project-container .project-content .project-links{display:flex;justify-content:center;margin-top:auto;gap:20px}.project-container .project-content .project-links a{color:#9b59b6;font-size:1.2em;display:flex;align-items:center;gap:8px;text-decoration:none;text-shadow:1px 1px 2px rgba(0,0,0,.7);transition:color .3s ease}.project-container .project-content .project-links a:hover{color:#d4a1ff}.project-container .project-content .project-links button{background:"none";border:"none";color:"#9b59b6";font-size:"1.2em";display:"flex";align-items:"center";gap:"8px";cursor:"pointer";text-shadow:"1px 1px 2px rgba(0, 0, 0, 0.7)";font-family:"inherit"}.small-project{width:45%;margin-bottom:20px;border-radius:15px;overflow:hidden;box-shadow:0 4px 15px #8a2be24d;transition:transform .3s ease,box-shadow .3s ease;position:relative;min-height:300px}.small-project:hover{transform:translateY(-5px);box-shadow:0 8px 25px #8a2be280}.small-project img,.small-project video{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:1}.small-project .project-content{position:relative;z-index:2;background:#1e1e1ed9;padding:15px;height:100%;display:flex;flex-direction:column;text-align:center}.small-project .project-content .project-header{margin-bottom:2px;text-align:center}.small-project .project-content .project-header h3{font-size:1.4em;margin-bottom:2px;color:#fff}.small-project .project-content .project-header .project-tags{display:flex;flex-wrap:wrap;gap:4px;justify-content:center;margin-bottom:2px}.small-project .project-content .project-header .project-tags .tag{background:#9b59b633;color:#d4a1ff;padding:3px 8px;border-radius:10px;font-size:.75em;font-weight:500}.small-project .project-content .project-description{font-size:.95em;color:#d3d3d3;line-height:1.4;text-align:center;margin-bottom:2px}.small-project .project-content .project-technologies{margin-top:5px;margin-bottom:2px;text-align:center}.small-project .project-content .project-technologies .tech-uses{color:#9b59b6;font-weight:600;font-size:.8em;margin-right:6px;display:inline}.small-project .project-content .project-technologies .tech-items{display:inline-flex;flex-wrap:wrap;gap:4px;justify-content:center}.small-project .project-content .project-technologies .tech-items .tech-item{background:#2a2a2acc;color:#fff;padding:2px 6px;border-radius:6px;font-size:.75em;border:1px solid rgba(155,89,182,.3)}.small-project .project-content .project-links{display:flex;justify-content:center;gap:15px;margin-top:15px}.small-project .project-content .project-links a{color:#9b59b6;font-size:1em;display:flex;align-items:center;gap:6px;text-decoration:none;text-shadow:1px 1px 2px rgba(0,0,0,.7);transition:color .3s ease}.small-project .project-content .project-links a:hover{color:#d4a1ff}@media (max-width: 1250px){.small-project{width:45%}}@media (max-width: 968px){.small-project{width:43%}}@media (max-width: 768px){.small-project{width:100%;margin:0 auto 16px;min-height:260px}.small-project .project-content{padding:12px}.small-project .project-content .project-header h3{font-size:1.2em}.small-project .project-content .project-description{font-size:.9em;line-height:1.3}.small-project .project-content .project-technologies .tech-uses{font-size:.75em}.small-project .project-content .project-technologies .tech-items .tech-item{font-size:.7em;padding:1px 4px}.small-project .project-content .project-links a{font-size:.9em;gap:4px}}@media (max-width: 480px){.small-project{min-height:240px}.small-project .project-content{padding:10px}.small-project .project-content .project-header h3{font-size:1.1em}.small-project .project-content .project-description{font-size:.85em}.small-project .project-content .project-technologies .tech-uses{font-size:.7em}.small-project .project-content .project-technologies .tech-items .tech-item{font-size:.65em}.small-project .project-content .project-links{gap:10px}.small-project .project-content .project-links a{font-size:.85em}}.coming-soon-project{width:45%;margin-bottom:40px;background:#2a2a2a;border:2px dashed #9b59b6;border-radius:15px;box-shadow:0 4px 15px #8a2be233;transition:transform .3s ease,box-shadow .3s ease;display:flex;flex-direction:column;min-height:220px;margin-top:50px}.coming-soon-project:hover{transform:translateY(-3px);background:#9b59b61a;box-shadow:0 6px 20px #8a2be266}.coming-soon-project .project-content{padding:20px;flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.coming-soon-project .project-content h3{font-size:1.4em;margin-bottom:15px;color:#9b59b6}.coming-soon-project .project-content p{font-size:.95em;margin-bottom:20px;color:#d3d3d3;line-height:1.4}.coming-soon-project .project-content .project-links{display:flex;justify-content:center;gap:20px}.coming-soon-project .project-content .project-links a{color:#9b59b6;font-size:1em;display:flex;align-items:center;gap:8px;text-decoration:none;transition:color .3s ease}.coming-soon-project .project-content .project-links a:hover{color:#d4a1ff}@media (max-width: 768px){.coming-soon-project{width:100%;margin:0 auto 20px}}
