:root{--bg: #11141c;--bg-secondary: #171b26;--bg-tertiary: #1d2230;--text: #f1f3f8;--text-secondary: rgba(241, 243, 248, .75);--text-muted: rgba(241, 243, 248, .55);--accent: #a6b8da;--accent-strong: #8a9bd6;--on-accent: #0d1018;--border-color: rgba(241, 243, 248, .08);--border-color-hover: rgba(241, 243, 248, .16);--gradient-primary: linear-gradient(135deg, var(--bg) 0%, var(--bg-tertiary) 100%);--gradient-secondary: linear-gradient(135deg, var(--bg-secondary) 0%, var(--bg-tertiary) 100%);--glass-bg: rgba(32, 38, 52, .92);--glass-border: rgba(241, 243, 248, .08);--nav-bg: rgba(241, 243, 248, .04);--shadow-sm: 0 4px 16px rgba(0, 0, 0, .25);--shadow-md: 0 12px 32px rgba(0, 0, 0, .3);--font-primary: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-display: "Fraunces", Georgia, serif;--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2rem;--spacing-xl: 3rem;--spacing-2xl: 4rem;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}*{margin:0;padding:0;box-sizing:border-box;color:var(--text)}html{scroll-behavior:smooth;background-color:var(--bg);background-image:linear-gradient(rgba(241,243,248,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(241,243,248,.035) 1px,transparent 1px),linear-gradient(135deg,var(--bg) 0%,var(--bg-secondary) 50%,var(--bg-tertiary) 100%);background-size:40px 40px,40px 40px,100% 100%;background-attachment:fixed,fixed,fixed}body{font-family:var(--font-primary);max-width:1000px;margin:0 auto;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;min-height:100vh}a{color:var(--accent);text-decoration:none;transition:color .25s ease}a:hover{color:var(--accent-strong)}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}header{display:contents}main section{padding:0 40px;margin-bottom:100px;scroll-margin-top:90px}main section:not(.hero-section){opacity:0;transform:translateY(28px);transition:opacity .6s ease,transform .6s ease}main section.animate-in{opacity:1;transform:translateY(0)}main section h2{text-align:center;font-family:var(--font-display);font-size:clamp(28px,3.5vw,36px);font-weight:600;margin-bottom:40px;color:var(--text)}@media(max-width:650px){main section{padding:0 24px}}nav{position:sticky;top:10px;z-index:1000;display:flex;justify-content:space-between;align-items:center;padding:0 28px;max-width:95%;margin:0 auto 50px;height:56px;background:var(--nav-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:14px;box-shadow:var(--shadow-sm);transition:border-color .25s ease}nav:hover{border-color:var(--border-color-hover)}nav .left a{color:var(--accent);font-family:var(--font-display);font-size:21px;font-weight:600;text-shadow:0 1px 4px rgba(0,0,0,.95),0 0 10px rgba(0,0,0,.85),0 0 16px rgba(0,0,0,.6)}nav .right{display:flex;align-items:center}nav .right a{color:var(--text);margin:0 8px;padding:8px 12px;border-radius:8px;text-shadow:0 1px 4px rgba(0,0,0,.95),0 0 10px rgba(0,0,0,.85),0 0 16px rgba(0,0,0,.6);transition:background .2s ease,border-color .2s ease,transform .2s ease}nav .right a:hover{background:var(--nav-bg);border:1px solid var(--glass-border);transform:translateY(-1px);color:var(--text)}nav .right a span{margin-left:5px}@media(max-width:550px){nav{padding:0 18px}nav .right a{font-size:20px}nav .right a span{display:none}}.glass-panel{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.glow-card{position:relative}.glow-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(220px circle at var(--glow-x, 50%) var(--glow-y, 50%),rgba(166,184,218,.14),transparent 70%);opacity:0;transition:opacity .3s ease;pointer-events:none}.glow-card:hover:before{opacity:1}@media(prefers-reduced-motion:reduce){.glow-card:before{display:none}}.progress-indicator{position:fixed;top:0;left:0;width:0%;height:3px;background:var(--accent);z-index:9999;transition:width .3s ease}.back-to-top{position:fixed;bottom:30px;right:30px;width:48px;height:48px;background:var(--accent);border:none;border-radius:50%;color:var(--on-accent);font-size:17px;cursor:pointer;opacity:0;visibility:hidden;transform:translateY(20px);transition:opacity .25s ease,visibility .25s ease,transform .25s ease,box-shadow .25s ease;z-index:1000;box-shadow:0 4px 15px #a6b8da40}.back-to-top.visible{opacity:1;visibility:visible;transform:translateY(0)}.back-to-top:hover{transform:translateY(-3px);box-shadow:0 8px 25px #a6b8da59}@media(max-width:480px){.back-to-top{bottom:20px;right:20px;width:44px;height:44px;font-size:15px}}.cta-button{display:inline-flex;align-items:center;gap:8px;padding:13px 26px;border:1px solid var(--glass-border);border-radius:var(--radius-md);font-weight:600;text-decoration:none;transition:background .25s ease,color .25s ease,border-color .25s ease,transform .25s ease,box-shadow .25s ease;margin:0 8px 8px 0;background:var(--glass-bg);color:var(--text);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.cta-button:hover{background:var(--accent);color:var(--on-accent);border-color:var(--accent);transform:translateY(-2px);box-shadow:0 10px 24px #a6b8da40}.cta-button:hover i,.cta-button:hover span{color:var(--on-accent)}.back-link{display:inline-flex;align-items:center;gap:10px;margin-bottom:30px;color:var(--text-secondary);font-weight:500;font-size:15px;transition:color .2s ease,transform .2s ease}.back-link:hover{color:var(--accent);transform:translate(-3px)}.hero-section{position:relative;display:flex;justify-content:space-between;align-items:center;padding:clamp(30px,5vw,56px) clamp(20px,4vw,48px);gap:clamp(20px,4vw,40px);max-width:78%;margin:0 auto 100px;min-height:clamp(420px,65vh,640px)}.hero-section .text{flex:1;position:relative;z-index:2;min-width:0;max-width:60%}.hero-section .headshot{flex:0 0 auto;display:flex;justify-content:center;position:relative;z-index:2}.headshot-container{position:relative}.hero-section .headshot img{border-radius:32px;width:190px;height:auto;aspect-ratio:1 / 1;border:4px solid var(--accent);box-shadow:var(--shadow-md);position:relative;z-index:2}.hero-section .headshot img.shake{animation:headshot-shake .4s ease}@keyframes headshot-shake{0%,to{transform:rotate(0)}20%{transform:rotate(-6deg)}40%{transform:rotate(5deg)}60%{transform:rotate(-3deg)}80%{transform:rotate(2deg)}}.sparkle{position:absolute;color:var(--accent);font-size:14px;pointer-events:none;z-index:3;transform:translate(-50%,-50%);animation:sparkle-rise .8s ease-out forwards}@keyframes sparkle-rise{0%{opacity:1;transform:translate(-50%,-50%) scale(.6)}40%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1)}}.headshot-glow{position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px;border-radius:42px;background:var(--accent);opacity:.18;filter:blur(20px);z-index:1}.hero-background{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.floating-shapes{position:absolute;width:100%;height:100%}.shape{position:absolute;border-radius:50%;background:var(--accent);filter:blur(30px);opacity:.3;will-change:transform}.shape-1{width:150px;height:150px;top:10%;left:8%;animation:drift-a 11s ease-in-out infinite}.shape-2{width:260px;height:260px;top:58%;right:8%;opacity:.22;animation:drift-b 15s ease-in-out infinite;animation-delay:1.5s}.shape-3{width:90px;height:90px;bottom:10%;left:20%;animation:drift-c 8s ease-in-out infinite;animation-delay:3s}.shape-4{width:200px;height:200px;top:4%;right:26%;opacity:.18;animation:drift-b 13s ease-in-out infinite reverse;animation-delay:5s}@keyframes drift-a{0%,to{transform:translate(0)}33%{transform:translate(60px,-70px)}66%{transform:translate(-45px,35px)}}@keyframes drift-b{0%,to{transform:translate(0)}50%{transform:translate(-80px,-55px)}}@keyframes drift-c{0%,to{transform:translate(0)}40%{transform:translate(50px,55px)}70%{transform:translate(-35px,-30px)}}.hero-title{display:flex;align-items:center;gap:clamp(10px,2vw,15px);font-family:var(--font-display);font-size:clamp(34px,4.5vw,50px);font-weight:600;margin-bottom:22px;color:var(--accent);flex-wrap:nowrap;white-space:nowrap}.wave{animation:wave 2.5s ease-in-out infinite;transform-origin:70% 70%;display:inline-block;font-size:clamp(32px,4vw,46px);line-height:1;flex-shrink:0}@keyframes wave{0%{transform:rotate(0)}10%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}30%{transform:rotate(14deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}60%,to{transform:rotate(0)}}.hero-description{font-size:17px;margin-bottom:28px;line-height:1.7;color:var(--text-secondary)}.hero-section .links{display:flex;flex-wrap:nowrap;gap:10px}.hero-section .links .cta-button{margin:0;padding:12px 18px;font-size:14px;white-space:nowrap}@media(max-width:900px){.hero-section .links{flex-wrap:wrap}}@media(max-width:650px){.hero-section{flex-direction:column-reverse;text-align:center;padding:40px 30px;margin-bottom:70px;gap:28px;max-width:92%}.hero-section .text{max-width:100%}.hero-section .links{justify-content:center}.hero-section .headshot img{width:180px}}@media(max-width:550px){.hero-section{padding:30px 20px;margin-bottom:50px}.hero-section .headshot img{width:150px}}@media(max-width:480px){.hero-title{font-size:clamp(28px,6vw,36px);flex-direction:column;gap:10px;white-space:normal}.cta-button{padding:11px 22px;font-size:.9rem}}.projects-grid{display:flex;gap:24px;overflow-x:auto;overflow-y:visible;scroll-snap-type:x proximity;max-width:1000px;margin:0 auto;padding:24px 24px 28px;-webkit-mask-image:linear-gradient(to right,transparent,black 32px,black calc(100% - 32px),transparent);mask-image:linear-gradient(to right,transparent,black 32px,black calc(100% - 32px),transparent);scrollbar-width:thin;scrollbar-color:var(--accent) transparent}.projects-grid::-webkit-scrollbar{height:6px}.projects-grid::-webkit-scrollbar-thumb{background:var(--accent);border-radius:10px}.projects-grid::-webkit-scrollbar-track{background:transparent}.projects-scroll-hint{display:none;align-items:center;justify-content:center;gap:8px;margin-top:4px;font-size:13px;color:var(--text-muted)}.projects-scroll-hint.visible{display:flex}.projects-scroll-hint i{font-size:12px}.project-card{display:block;flex:1 1 calc((100% - 48px) / 3);min-width:240px;scroll-snap-align:center;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);overflow:hidden;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,opacity .5s ease;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);opacity:0;cursor:default}a.project-card{cursor:pointer}main section.animate-in .project-card{opacity:1}.project-card:nth-child(1){transition-delay:.05s}.project-card:nth-child(2){transition-delay:.15s}.project-card:nth-child(3){transition-delay:.25s}.project-card:nth-child(4){transition-delay:.35s}.project-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-md);border-color:var(--accent)}.project-icon{width:44px;height:44px;border-radius:var(--radius-md);background:var(--gradient-secondary);border:1px solid var(--glass-border);display:flex;align-items:center;justify-content:center;margin-bottom:18px}.project-icon i{font-size:18px;color:var(--accent)}.project-content{padding:28px}.project-content h3{font-size:22px;margin-bottom:14px;font-weight:600}.project-content p{margin-bottom:18px;line-height:1.6;color:var(--text-secondary)}.project-tech{display:flex;flex-wrap:wrap;gap:8px}.tech-tag{background:var(--glass-bg);border:1px solid rgba(166,184,218,.35);color:var(--accent);padding:5px 12px;border-radius:20px;font-size:12px;font-weight:500}.project-links{display:flex;flex-wrap:wrap;gap:18px;margin-top:18px}.project-links .project-link{margin-top:0}.project-link{display:inline-flex;align-items:center;gap:8px;margin-top:18px;font-size:14px;font-weight:600;color:var(--accent);transition:color .25s ease}.project-link:hover{color:var(--accent-strong)}.project-link:hover span{text-decoration:underline}a.project-card:hover .project-link:not(.project-link--report){color:var(--accent-strong)}a.project-card:hover .project-link:not(.project-link--report) span{text-decoration:underline}a.project-card:has(.project-link--report:hover) .project-link:not(.project-link--report){color:var(--accent)}a.project-card:has(.project-link--report:hover) .project-link:not(.project-link--report) span{text-decoration:none}.project-link--report{cursor:pointer;position:relative;z-index:3}.project-link--private,.project-link--private:hover{color:var(--text-muted)}.project-link--private:hover span{text-decoration:none}@media(max-width:725px){.projects-grid{gap:18px;padding:24px 30px 28px;-webkit-mask-image:linear-gradient(to right,transparent,black 30px,black calc(100% - 30px),transparent);mask-image:linear-gradient(to right,transparent,black 30px,black calc(100% - 30px),transparent)}.project-card{flex:0 0 84vw}}.experience-tabs{display:flex;justify-content:center;gap:6px;margin-bottom:56px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:16px;padding:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);max-width:380px;margin-left:auto;margin-right:auto}.tab-button{display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 28px;background:transparent;border:none;border-radius:12px;color:var(--text-secondary);cursor:pointer;transition:background .25s ease,color .25s ease,transform .25s ease;font-family:var(--font-primary);font-size:15px;font-weight:500;flex:1}.tab-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tab-button.active{background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-sm)}.tab-button.active i,.tab-button.active span{color:var(--on-accent)}.timeline{display:block;max-width:680px;margin:0 auto;position:relative;opacity:0;transform:translateY(6px);transition:opacity .18s ease,transform .18s ease}.timeline[hidden]{display:none!important}.timeline.active{opacity:1;transform:translateY(0)}.timeline:before{content:"";position:absolute;left:28px;top:0;bottom:0;width:2px;background:var(--accent);opacity:.35}.timeline-item{position:relative;padding-left:76px;margin-bottom:52px}.timeline-item:last-child{margin-bottom:0}.timeline-marker{position:absolute;left:0;top:0;width:56px;height:56px;display:flex;align-items:center;justify-content:center}.timeline-logo{width:46px;height:46px;background:var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;border:3px solid var(--bg);box-shadow:var(--shadow-sm);transition:box-shadow .25s ease,transform .25s ease}.timeline-logo i{font-size:18px;color:var(--on-accent)}.timeline-item:hover .timeline-logo{transform:scale(1.08);box-shadow:var(--shadow-sm),0 0 0 6px #a6b8da2e}.timeline-content{padding:0 0 28px;text-shadow:0 1px 6px rgba(0,0,0,.45)}.timeline-item:last-child .timeline-content{padding-bottom:0}.timeline-header{margin-bottom:20px}.timeline-date{display:block;font-size:13px;color:var(--text-muted);margin-bottom:6px;font-weight:500}.timeline-content h3{font-size:22px;margin-bottom:6px;font-weight:600}.timeline-role{font-size:15px;color:var(--accent);font-weight:500}.timeline-description{margin-top:18px}.timeline-description ul{list-style:none}.timeline-description li{position:relative;padding-left:22px;margin-bottom:10px;line-height:1.6;color:var(--text-secondary)}.timeline-description li:last-child{margin-bottom:0}.timeline-description li:before{content:"•";position:absolute;left:0;color:var(--accent);font-weight:700}@media(max-width:650px){.experience-tabs{flex-direction:column;align-items:center;gap:8px;max-width:280px;padding:12px}.tab-button{width:100%;padding:13px 24px}.timeline{max-width:100%}.timeline:before{left:24px}.timeline-item{padding-left:66px}.timeline-marker{width:48px;height:48px}.timeline-logo{width:38px;height:38px}.timeline-logo i{font-size:15px}.timeline-content{padding:0 0 22px}}.skills-section .text{text-align:center;margin-bottom:44px;max-width:600px;margin-left:auto;margin-right:auto;text-shadow:0 1px 6px rgba(0,0,0,.45)}.skills-section .text p{font-size:16px;line-height:1.7;color:var(--text-secondary)}.skills-categories{display:flex;flex-direction:column;gap:32px;max-width:700px;margin:0 auto}.skill-category{position:relative;padding-bottom:28px;opacity:0;transition:opacity .5s ease;text-shadow:0 1px 6px rgba(0,0,0,.45)}.skill-category:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(to right,transparent,rgba(166,184,218,.4),transparent)}.skill-category:last-child{padding-bottom:0}.skill-category:last-child:after{display:none}main section.animate-in .skill-category{opacity:1}.skill-category:nth-child(1){transition-delay:.05s}.skill-category:nth-child(2){transition-delay:.15s}.skill-category:nth-child(3){transition-delay:.25s}.category-title{display:flex;align-items:center;gap:12px;font-size:1.2rem;font-weight:600;margin-bottom:18px;color:var(--accent)}.category-title i{font-size:1.05rem}.cells{display:flex;flex-wrap:wrap;gap:10px}.skill-tag{padding:7px 16px;border:1px solid var(--glass-border);border-radius:20px;background:var(--glass-bg);font-size:14px;font-weight:500;color:var(--text-secondary);transition:border-color .25s ease,color .25s ease}.skill-tag:hover{border-color:var(--accent);color:var(--text)}@media(max-width:768px){.skills-categories{gap:26px}}@media(max-width:550px){.skill-tag{font-size:13px;padding:6px 14px}}.contact-section h2{margin-bottom:32px}.contact-content{display:flex;flex-direction:column;align-items:center;gap:40px;max-width:600px;margin:0 auto;text-align:center}.contact-text h3{font-size:1.7rem;margin-bottom:20px;color:var(--accent)}.contact-text p{font-size:16px;line-height:1.7;color:var(--text-secondary)}.contact-actions{display:flex;flex-direction:column;align-items:center;gap:18px;padding:36px 28px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-align:center}.email-cta{display:flex;align-items:center;gap:12px;padding:16px 26px;background:var(--accent);color:var(--on-accent);border-radius:var(--radius-md);font-weight:600;font-size:1.05rem;box-shadow:0 4px 15px #a6b8da40;transition:transform .25s ease,box-shadow .25s ease}.email-cta:hover{transform:translateY(-3px);box-shadow:0 8px 25px #a6b8da59;color:var(--on-accent)}.email-cta i,.email-cta span{color:var(--on-accent)}.contact-note{font-size:14px;color:var(--text-muted);font-style:italic}.contact-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;width:100%;max-width:400px}.contact-info-item{display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 18px;background:transparent;border:1px solid var(--glass-border);border-radius:var(--radius-md);font-weight:500;font-size:.9rem;transition:border-color .25s ease,transform .25s ease;min-height:52px}.contact-info-item:hover{border-color:var(--accent);transform:translateY(-2px)}.contact-info-item i{font-size:15px;color:var(--text-secondary);flex-shrink:0;transition:color .25s ease}.contact-info-item:hover i{color:var(--accent)}.status-dot{width:8px;height:8px;border-radius:50%;background:#6fd38a;box-shadow:0 0 #6fd38a99;flex-shrink:0;animation:status-pulse 2s infinite}@keyframes status-pulse{0%{box-shadow:0 0 #6fd38a80}70%{box-shadow:0 0 0 6px #6fd38a00}to{box-shadow:0 0 #6fd38a00}}@media(max-width:550px){.contact-content{gap:24px}.contact-info-grid{grid-template-columns:1fr;gap:12px}}.resume-section{padding:0 40px;margin-bottom:100px}.resume-actions{display:flex;justify-content:center;gap:14px;margin-bottom:36px;flex-wrap:wrap}.resume-viewer{max-width:680px;margin:0 auto;aspect-ratio:8.5 / 11;border:1px solid var(--glass-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--glass-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.resume-viewer embed{width:100%;height:100%;border:none}@media(max-width:650px){.resume-section{padding:0 30px}}@media(max-width:550px){.resume-section{padding:0 20px}}.site-footer{position:relative;text-align:center;padding:40px 24px 32px}.site-footer:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(to right,transparent,rgba(166,184,218,.4),transparent)}.site-footer p{font-size:13px;color:var(--text-muted)}.footer-links{display:flex;justify-content:center;gap:18px;margin:16px 0}.footer-links a{color:var(--text-secondary);font-size:18px;transition:color .2s ease,transform .2s ease}.footer-links a:hover{color:var(--accent);transform:translateY(-2px)}.footer-note{font-size:12px;color:var(--text-muted);opacity:.7}
