:root{--accent-color: var(--accent-color);--text-color: #333333;--text-secondary-color: #999999;--labs-color: #f39c12;--tooltip-display: block}body{display:flex;justify-content:center;margin:0;font-family:Raleway,sans-serif;background-color:#fff;color:var(--text-color)}img{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;border:none;outline:none}::selection{background-color:var(--accent-color);color:#fff}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes logoScale{0%{opacity:0;transform:scale(.667)}to{opacity:1;transform:scale(1)}}@keyframes iconSlideUp{0%{opacity:0;transform:translateY(35px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInFromWhite{0%{opacity:0}to{opacity:1}}@keyframes projectSlideIn{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}.slide-in{opacity:0}.content-section.active .slide-in{animation:projectSlideIn .5s ease-out forwards}.content-section.active .slide-in:nth-child(1){animation-delay:.05s}.content-section.active .slide-in:nth-child(2){animation-delay:.1s}.content-section.active .slide-in:nth-child(3){animation-delay:.15s}.content-section.active .slide-in:nth-child(4){animation-delay:.2s}.content-section.active .slide-in:nth-child(5){animation-delay:.25s}.content-section.active .slide-in:nth-child(6){animation-delay:.3s}.content-section.active .slide-in:nth-child(7){animation-delay:.35s}.content-section.active .slide-in:nth-child(8){animation-delay:.4s}.content-section.active .slide-in:nth-child(n+9){animation-delay:.45s}@keyframes arrowSlideDown{0%{opacity:0;transform:translate(-50%) translateY(-20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes arrowSlideDownScaled85{0%{opacity:0;transform:translate(-50%) translateY(-20px) scale(.85)}to{opacity:1;transform:translate(-50%) translateY(0) scale(.85)}}@keyframes arrowSlideDownScaled80{0%{opacity:0;transform:translate(-50%) translateY(-20px) scale(.8)}to{opacity:1;transform:translate(-50%) translateY(0) scale(.8)}}.bottom-gradient{display:none}.project img.fade-observe,.lab-project img.fade-observe,.image-item img.fade-observe,.project-thumbnail.fade-observe{opacity:0}.project img.fade-in-view,.lab-project img.fade-in-view,.image-item img.fade-in-view,.project-thumbnail.fade-in-view{animation:fadeInFromWhite .6s ease-out forwards}.hero-section{position:fixed;top:0;left:0;width:100%;height:100vh;min-height:550px;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:#fff;z-index:10;transition:opacity .5s ease;overflow:hidden;box-sizing:border-box;animation:fadeIn .6s ease-out}.hero-section.fade-out{opacity:0;pointer-events:none}.hero-content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.hero-content .profile-image-wrapper{opacity:0;animation:logoScale .5s cubic-bezier(.175,.885,.32,1.275) forwards;animation-delay:.1s}.hero-content .profile-image-wrapper.animation-complete{opacity:1!important;animation:none!important;transform:scale(1)!important}.hero-content .profile-image{width:150px;height:150px;margin:0 auto 25px;position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .3s ease}.hero-content .profile-image:hover{transform:scale(1.1)}.hero-content .profile-image img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-content .profile-image .portrait-bg{width:100%;height:100%;object-fit:contain}.hero-content .profile-image .portrait-head{width:100%;height:100%;object-fit:contain;z-index:1}.hero-content .profile-name{font-size:1.3rem;font-weight:500;margin:0 0 8px;color:var(--text-color)}.hero-content .profile-title{font-size:.8rem;color:var(--text-secondary-color);margin:0 0 20px}.social-icons{display:flex;gap:15px;justify-content:center;align-items:center}.social-icon{display:block;width:40px;height:40px;transition:transform .3s ease,color .3s ease;opacity:0;animation:iconSlideUp .5s cubic-bezier(.175,.885,.32,1.275) forwards;color:var(--text-secondary-color)}.social-icon.animation-complete{opacity:1!important;animation:none!important;transform:translateY(0)!important;transition:transform .3s ease,color .3s ease!important}.social-icon{position:relative}.social-icon:hover,.social-icon.animation-complete:hover{transform:translateY(0) scale(1.1)!important}.social-icon img{width:100%;height:100%;display:block;object-fit:contain;position:absolute;top:0;left:0;transition:opacity .3s ease}.social-icon .icon-default{opacity:1}.social-icon .icon-hover,.social-icon:hover .icon-default,.social-icon.animation-complete:hover .icon-default{opacity:0}.social-icon:hover .icon-hover,.social-icon.animation-complete:hover .icon-hover{opacity:1}#mail-icon{animation-delay:.15s}#linkedin-icon{animation-delay:.25s}.portfolio-link-container{position:absolute;bottom:150px;left:50%;transform:translate(-50%) translateY(-20px);text-align:center;cursor:pointer;text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:40px;opacity:0;animation:arrowSlideDown .6s ease-out .5s forwards;will-change:transform,opacity}.portfolio-link-container.animation-complete{opacity:1;animation:none;will-change:auto;transform:translate(-50%) translateY(0)}.portfolio-link-text{font-size:1rem;color:var(--text-secondary-color);transition:color .2s ease}.scroll-arrow{width:47px;height:25px;transition:transform .3s ease;transform:scale(1)}.scroll-arrow img{width:100%;height:100%;transition:filter .3s ease;filter:brightness(0) saturate(100%) invert(60%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(100%) contrast(100%)}.portfolio-link-container:hover .portfolio-link-text{color:var(--text-color)}.portfolio-link-container:hover .scroll-arrow{transform:scale(1.1)}.portfolio-link-container:hover .scroll-arrow img{filter:brightness(0) saturate(100%) invert(20%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(100%) contrast(100%)}.page-container{max-width:1160px;width:100%;position:relative;margin-top:100vh;opacity:0;transition:opacity .5s ease}.content-wrapper{display:flex;align-items:flex-start;width:100%}.page-container.fade-in{opacity:1}nav{width:200px;height:100vh;position:sticky;top:0;padding:80px 0 50px;display:flex;flex-direction:column;align-items:flex-start;flex-shrink:0;z-index:10}nav h2{font-size:.84rem;letter-spacing:.5px;text-transform:uppercase;margin:2.5rem 0 .7rem;color:#666;font-weight:600;text-align:left;width:100%;padding:0 30px 0 90px}nav a{display:block;text-decoration:none;color:var(--text-secondary-color);margin:5px 0;font-size:.75rem;font-weight:400;text-align:left;width:100%;padding:0 30px 0 90px}nav a:hover{color:var(--accent-color)}nav a.active{font-weight:700;color:var(--text-color)}.nav-primary{margin-bottom:calc(1rem + 10px);width:100%}.nav-primary a,.nav-primary button{font-size:1.37rem;margin:3px 0;background:none;border:none;cursor:pointer;font-family:inherit;display:block;text-decoration:none;color:var(--text-secondary-color);text-align:left;width:100%;padding:0 30px 0 85px}.nav-primary a span,.nav-primary button span{padding:2px 8px 2px 3px;border-radius:4px;display:inline-block;position:relative}.nav-primary a:hover,.nav-primary button:hover{color:#fff}.nav-primary a:hover span,.nav-primary button:hover span{background-color:var(--accent-color)}.nav-primary button[data-section=labs]:hover span{background-color:#ff7af0}.nav-primary a.active,.nav-primary button.active{font-weight:700;color:var(--text-color)}.nav-primary button[data-tooltip] span:after{content:attr(data-tooltip);position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);background-color:#666;color:#fff;padding:10px 15px;border-radius:5px;font-size:.9rem;font-weight:400;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:99999;display:var(--tooltip-display)}.nav-primary button[data-tooltip] span:before{content:"";position:absolute;left:calc(100% + 2px);top:50%;transform:translateY(-50%);width:0;height:0;border-style:solid;border-width:4px 8px 4px 0;border-color:transparent #666666 transparent transparent;opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:99999;display:var(--tooltip-display)}.nav-primary button[data-tooltip]:hover span:after,.nav-primary button[data-tooltip]:hover span:before{opacity:0}main{padding:80px 60px 80px 50px;width:100%;max-width:750px;flex:1;position:relative;z-index:100}.content-section{display:none}.content-section.active{display:block;animation:fadeInFromWhite .6s ease-out forwards}.projects-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:35px;margin-top:0}.project-card{text-align:left;cursor:pointer;transition:opacity .2s;opacity:0;animation:projectSlideIn .5s ease-out forwards}.project-card:nth-child(1){animation-delay:.05s}.project-card:nth-child(2){animation-delay:.1s}.project-card:nth-child(3){animation-delay:.15s}.project-card:nth-child(4){animation-delay:.2s}.project-card:nth-child(5){animation-delay:.25s}.project-card:nth-child(6){animation-delay:.3s}.project-card:nth-child(7){animation-delay:.35s}.project-card:nth-child(8){animation-delay:.4s}.project-card:hover{opacity:.8}.project-card button{background:none;border:none;padding:0;cursor:pointer;text-align:left;width:100%}.project-thumbnail{width:100%;aspect-ratio:16 / 9;object-fit:cover;object-position:center;display:block;background:transparent;border-radius:8px;transition:filter .2s ease}.project-thumbnail:hover{filter:brightness(1.25)}.project-info{margin-top:12px}.project-name{font-size:1.05rem;color:var(--text-color);font-weight:600;line-height:1.4;font-family:Raleway,sans-serif}.project-description{margin-top:0;font-size:12px;color:#555;line-height:1.7;font-family:Raleway,sans-serif}.project{margin-bottom:60px}.project-header{margin-bottom:15px}.date{color:#bbb;font-size:12px;letter-spacing:.3px;font-style:italic}.project h2{margin:0 0 2px;font-size:1.5rem;font-weight:400;color:var(--text-color)}.project img{width:100%;height:auto;display:block;margin-bottom:15px;background:transparent;border-radius:8px;transition:filter .2s ease}.project img:hover{filter:brightness(1.25)}.project p{color:var(--text-color);line-height:1.7;font-size:.9rem;margin:15px 0}.project p a{color:var(--text-secondary-color);text-decoration:underline}.project p a:hover{color:var(--accent-color)}.project-labels{color:var(--text-color);font-size:.8rem;margin-top:20px}.project-labels a{display:inline;color:var(--text-secondary-color);text-decoration:none}.project-labels a:hover{text-decoration:underline}.image-stack{margin-bottom:15px}.image-stack .image-item{margin-bottom:20px}.image-stack .image-item:last-child{margin-bottom:0}.image-stack img{width:100%;height:auto;display:block;margin-bottom:0;background:transparent;border-radius:8px;transition:filter .2s ease}.image-stack img:hover{filter:brightness(1.25)}.image-caption{font-size:12px;color:#666;margin-top:8px}.video-caption{font-size:12px;color:#666;margin-top:8px;margin-bottom:28px}.image-item a{display:block;text-decoration:none;cursor:pointer}.image-item a img{transition:filter .2s ease}.image-item a:hover img{filter:brightness(1.25)}.image-grid{display:grid;gap:20px;margin-bottom:15px}.image-grid.grid-2x2,.image-grid.grid-3x2,.image-grid.grid-6x2{grid-template-columns:repeat(2,1fr)}.image-grid-2col{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:15px}.image-grid-3col{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:15px}.image-grid .image-item,.image-grid-2col .image-item,.image-grid-3col .image-item{margin-bottom:0}.image-grid img,.image-grid-2col img,.image-grid-3col img{width:100%;height:auto;display:block;margin-bottom:10px;background:transparent;border-radius:8px;transition:filter .2s ease}.image-grid img:hover,.image-grid-2col img:hover,.image-grid-3col img:hover{filter:brightness(1.25)}.lightbox-image{cursor:pointer;transition:filter .2s ease;border-radius:8px}.lightbox-image:hover{filter:brightness(1.25)}.lightbox{display:flex;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#fffffff2;z-index:200000;cursor:pointer;justify-content:center;align-items:center;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.lightbox.active{opacity:1;visibility:visible}.lightbox-content{display:flex;align-items:center;justify-content:center;max-width:80%;max-height:85%;pointer-events:none}.lightbox-image-wrapper{position:relative;display:inline-flex;align-items:center;justify-content:center;pointer-events:none}.lightbox-image-wrapper>img:not(.lightbox-arrow){pointer-events:auto;max-width:100%;max-height:90vh;display:block;object-fit:contain;cursor:zoom-in;transition:opacity .2s ease;transform-origin:center center}.lightbox-image-wrapper>img:not(.lightbox-arrow).zoomed{cursor:grab;max-width:none;max-height:none;width:auto;height:auto;transition:transform .2s ease-out}.lightbox-image-wrapper>img:not(.lightbox-arrow).zoomed.dragging{cursor:grabbing;transition:transform .15s cubic-bezier(.25,.46,.45,.94)}.lightbox-close{position:absolute;top:20px;right:30px;width:24px;height:24px;cursor:pointer;z-index:200001;opacity:.7;transition:opacity .2s ease,transform .3s ease}.lightbox-close:hover{opacity:1;transform:scale(1.1)}.lightbox-arrow{position:absolute;top:calc(50% - 23.5px);width:25px;height:47px;cursor:pointer;z-index:200001;opacity:0;pointer-events:auto;transition:opacity .2s ease,transform .2s ease;padding:40px;margin:-40px}.lightbox.active .lightbox-arrow{opacity:.6}.lightbox-arrow.zoom-hidden{opacity:0;pointer-events:none}.lightbox-arrow img{width:100%;height:100%;pointer-events:none;display:block}.lightbox-arrow:hover,.lightbox-arrow:active{opacity:1}.lightbox-arrow.hidden{display:none}.lightbox-prev{left:-80px;transform:scaleX(-1)}.lightbox-prev:hover{transform:scaleX(-1) scale(1.2)}.lightbox-next{right:-80px}.lightbox-next:hover{transform:scale(1.2)}.video-container{border-radius:8px;overflow:hidden}.video-container iframe{border-radius:8px}.about-content{max-width:700px}.about-photo{width:100%;max-width:700px;height:auto;border-radius:8px;margin-bottom:30px;display:block}.about-intro{font-size:.9rem;line-height:1.7;color:#555;margin-bottom:30px}.about-intro a{color:var(--text-secondary-color);text-decoration:underline}.about-intro a:hover{color:var(--accent-color)}.section-title{font-size:1.5rem;font-weight:600;color:var(--text-color);margin:30px 0;border-bottom:1px solid #e0e0e0;padding-bottom:10px;padding-left:0}.job{margin-bottom:35px}.job-header{margin-bottom:10px}.job-role{margin-top:20px}.job-role:first-of-type{margin-top:0}.company-name{font-size:1.2rem;font-weight:600;color:var(--text-color);margin:0 0 5px}.job-title{font-size:.95rem;color:#666;font-weight:500;margin:0 0 5px}.job-dates,.inline-dates{font-size:.85rem;color:var(--text-secondary-color);font-style:italic}.job-description{font-size:.9rem;line-height:1.7;color:#555;margin-top:10px}.job-description a{color:var(--text-secondary-color);text-decoration:underline}.job-description a:hover{color:var(--accent-color)}.education-section{margin-bottom:30px}.education-item{margin-bottom:15px}.degree{font-size:1rem;font-weight:600;color:var(--text-color);margin:0 0 5px}.school{font-size:.9rem;color:#666}.skills-list{font-size:.9rem;line-height:1.8;color:#555}.award-item{margin-bottom:30px}.award-title{font-size:1rem;font-weight:600;color:var(--text-color);margin:0 0 10px}.award-description{font-size:.9rem;line-height:1.6;color:#555;margin:0}.contact-content{max-width:600px}.contact-intro{font-size:.9rem;line-height:1.7;color:#555;margin-bottom:1rem}.contact-intro a{color:var(--text-secondary-color);text-decoration:underline}.contact-intro a:hover{color:var(--accent-color)}.contact-buttons{display:flex;gap:15px;margin-bottom:30px;padding-bottom:30px;border-bottom:1px solid #e0e0e0}.contact-buttons .action-buttons{margin:0}.contact-options{margin-top:30px}.contact-form{margin-top:0}.form-group{margin-bottom:20px}.form-group label{display:block;font-size:.9rem;font-weight:600;color:var(--text-color);margin-bottom:8px}.form-group input,.form-group textarea{width:100%;padding:12px;font-size:.9rem;font-family:inherit;border:1px solid #ddd;border-radius:4px;transition:border-color .2s ease;box-sizing:border-box}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--accent-color)}.form-group textarea{resize:vertical}.form-buttons{display:flex;gap:12px;align-items:center}.form-status{margin-top:20px;padding:12px;border-radius:4px;font-size:.9rem;text-align:center;display:none}.form-status.success{display:block;background-color:#d4edda;color:#155724;border:1px solid #c3e6cb}.form-status.error{display:block;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.action-buttons{display:flex;gap:15px;margin:40px 0}.btn{display:inline-flex;align-items:center;padding:12px 24px;text-decoration:none;font-size:.9rem;font-weight:600;border-radius:4px;transition:all .2s ease;cursor:pointer;border:none;font-family:inherit}.btn-primary{background-color:var(--accent-color);color:#fff}.btn-primary:hover{background-color:#3d8acc}.btn-secondary{background-color:#f5f5f5;color:var(--text-color);border:1px solid #ddd}.btn-secondary:hover{background-color:#e8e8e8}.back-link{display:inline-block;color:var(--accent-color);text-decoration:none;font-size:.9rem;margin-bottom:30px;cursor:pointer;background:none;border:none;padding:0;font-family:inherit}.back-link:hover{text-decoration:underline}.mobile-header{display:none;position:fixed;top:0;left:0;right:0;height:60px;background-color:#fff;z-index:1000;border-bottom:1px solid #e0e0e0;opacity:0;pointer-events:none}body.page-ready .mobile-header{transition:opacity .3s ease}.mobile-header.visible{opacity:1;pointer-events:auto}body.mobile-menu-open .mobile-header{opacity:1;pointer-events:auto;z-index:1004}.mobile-menu-toggle{position:absolute;top:50%;right:20px;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0}.mobile-menu-toggle img{display:block;width:24px;height:24px;min-width:24px;min-height:24px;max-width:24px;max-height:24px;object-fit:contain;opacity:.7;margin:0;flex-shrink:0}.mobile-menu-toggle:hover img{opacity:1}.mobile-back-btn{position:absolute;top:50%;left:20px;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;transition:opacity .3s ease}.mobile-back-btn img{display:block;width:24px;height:24px;min-width:24px;min-height:24px;max-width:24px;max-height:24px;object-fit:contain;opacity:.7;margin:0;flex-shrink:0}.mobile-back-btn:hover img{opacity:1}.copyright{padding:10px 0 0;text-align:center;width:100%}.copyright p{color:var(--text-secondary-color);font-size:12px;line-height:1.5;margin:0}#work-section .copyright{padding-top:0}#projects-section .copyright,#labs-section .copyright{padding-top:60px}.lab-post-item:last-child{margin-bottom:0;padding-bottom:0}.lab-post-divider{height:1px;background-color:#e0e0e0;margin:48px 0;border:none;width:100%;display:block}@media(max-width:768px){.nav-primary button[data-tooltip] span:after,.nav-primary button[data-tooltip] span:before{display:none!important}.mobile-header{display:block;left:-1px;right:-1px;width:calc(100% + 2px)}.hero-content{transform:translate(-50%,-60%) scale(.85)}.portfolio-link-container{bottom:120px;transform:translate(-50%) translateY(-20px) scale(.85);animation:arrowSlideDownScaled85 .6s ease-out .5s forwards}.portfolio-link-container.animation-complete{transform:translate(-50%) translateY(0) scale(.85)}.lightbox-arrow{display:none}.page-container{flex-direction:column;margin-top:100vh;padding-top:0}body.mobile-menu-open .hero-section{display:none}nav{position:fixed!important;inset:0!important;width:100%!important;height:100vh!important;background-color:#fff;z-index:999;padding:0!important;overflow-y:auto;display:none;flex-direction:column!important;align-items:center!important;justify-content:center!important}nav.mobile-menu-open{display:flex;z-index:1003;align-items:center}nav .nav-primary{text-align:center;width:100%;max-width:400px;margin:0 auto}nav .work-filters,nav .labs-filters{display:none!important}nav .filters-section{display:none}nav h2{text-align:center;padding:0;margin:2rem 0 .7rem}nav a,nav .nav-primary a,nav .nav-primary button{text-align:center;padding:0;margin:8px 0}main{padding:16px 16px 32px;width:100%;transform:scale(.85);transform-origin:top center;margin-bottom:-15%}.projects-grid{grid-template-columns:1fr;gap:20px}.labs-grid{gap:20px}.image-grid.grid-2x2,.image-grid.grid-3x2,.image-grid.grid-6x2,.image-grid-2col,.image-grid-3col{grid-template-columns:1fr}.action-buttons{flex-direction:row;flex-wrap:wrap}.btn{justify-content:center}body.mobile-menu-open main{display:none}}@media(max-width:926px)and (max-height:428px)and (orientation:landscape){.mobile-header{left:-1px;right:-1px;width:calc(100% + 2px)}.hero-section{min-height:0}.hero-content{transform:translate(-50%,-55%) scale(.8)}.portfolio-link-container{bottom:50px;gap:15px;transform:translate(-50%) translateY(-20px) scale(.8);animation:arrowSlideDownScaled80 .6s ease-out .5s forwards}.portfolio-link-container.animation-complete{transform:translate(-50%) translateY(0) scale(.8)}.portfolio-link-text{display:none}nav{padding:20px!important}nav .nav-primary,nav .work-filters{max-width:300px}}@media(orientation:landscape)and (min-height:501px)and (max-height:900px){.hero-section{min-height:0}.hero-content{transform:translate(-50%,-65%) scale(.85)}.portfolio-link-container{bottom:100px;gap:25px;transform:translate(-50%) translateY(-20px) scale(.85);animation:arrowSlideDownScaled85 .6s ease-out .5s forwards}.portfolio-link-container.animation-complete{transform:translate(-50%) translateY(0) scale(.85)}.portfolio-link-text{font-size:.95rem}}@media(orientation:landscape)and (max-height:500px){.hero-section{min-height:0}.hero-content{transform:translate(-50%,-55%) scale(.8)}.portfolio-link-container{bottom:50px;gap:20px;transform:translate(-50%) translateY(-20px) scale(.8);animation:arrowSlideDownScaled80 .6s ease-out .5s forwards}.portfolio-link-container.animation-complete{transform:translate(-50%) translateY(0) scale(.8)}.portfolio-link-text{font-size:.9rem}}
