:root{--font-display:"Syne", sans-serif;--font-serif:"DM Serif Display", serif;--font-body:"Inter", sans-serif}[data-theme=emerald]{--accent:#1aa63c;--accent-rgb:26, 166, 60;--navy:#020c06;--navy-rgb:2, 12, 6;--navy-mid:#041a0a;--navy-light:#0a2e12;--cream:#e8f5ec;--cream-rgb:232, 245, 236;--text-muted:#e8f5ec8c}[data-theme=ice]{--accent:#1875b7;--accent-rgb:24, 117, 183;--navy:#010810;--navy-rgb:1, 8, 16;--navy-mid:#021020;--navy-light:#041a35;--cream:#e8f2fa;--cream-rgb:232, 242, 250;--text-muted:#e8f2fa8c}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--navy);color:var(--cream);font-family:var(--font-body);cursor:none;width:100%;min-height:100vh;overflow-x:hidden}#root{width:100%;min-height:100vh}ul,ol{margin:0;padding:0;list-style:none}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{cursor:pointer;font:inherit;background:0 0;border:none;padding:0}.cursor{background:var(--accent);pointer-events:none;z-index:9999;border-radius:50%;width:12px;height:12px;transition:width .15s,height .15s,background .15s;position:fixed;transform:translate(-50%,-50%)}.cursor-ring{border:1.5px solid rgba(var(--accent-rgb), .5);pointer-events:none;z-index:9998;border-radius:50%;width:36px;height:36px;transition:width .3s,height .3s,border-color .3s;position:fixed;transform:translate(-50%,-50%)}:is(body:has(a:hover) .cursor,body:has(button:hover) .cursor){width:20px;height:20px}:is(body:has(a:hover) .cursor-ring,body:has(button:hover) .cursor-ring){border-color:rgba(var(--accent-rgb), .8);width:54px;height:54px}.scroll-progress-track{background:rgba(var(--cream-rgb), .08);z-index:9999;pointer-events:none;height:2px;position:fixed;top:0;left:0;right:0}.scroll-progress-bar{background:var(--cream);height:100%;box-shadow:0 0 6px rgba(var(--cream-rgb), .5);transition:width 50ms linear}nav{z-index:100;justify-content:space-between;align-items:center;padding:1.5rem 3rem;transition:background .4s,-webkit-backdrop-filter .4s,backdrop-filter .4s;display:flex;position:fixed;top:0;left:0;right:0}nav.scrolled{background:rgba(var(--navy-rgb), .85);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid rgba(var(--cream-rgb), .08)}.nav-logo{font-family:var(--font-display);letter-spacing:.04em;color:var(--cream);font-size:1.1rem;font-weight:800;text-decoration:none}.nav-logo-short{display:none}.nav-logo-full{display:inline}.nav-logo-full,.nav-logo-short{transition:color .5s ease-in-out;position:relative}.nav-logo-full:before,.nav-logo-short:before{content:attr(data-item);color:var(--accent);white-space:nowrap;width:0;transition:width .5s ease-in-out;position:absolute;inset:0;overflow:hidden}.nav-logo:hover .nav-logo-full:before,.nav-logo:hover .nav-logo-short:before{width:100%}@media (width<=900px){.nav-logo-full{display:none}.nav-logo-short{display:inline}}.nav-links{flex-direction:row;align-items:center;gap:1.75rem;margin:0;padding:0;list-style:none;display:flex}.nav-links li{margin:0;padding:0;list-style:none}.nav-links a{font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);font-size:.75rem;font-weight:600;text-decoration:none;transition:color .3s}.nav-links a:hover{color:var(--cream)}.nav-cta{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);border:1px solid rgba(var(--accent-rgb), .4);border-radius:4px;padding:.55rem 1.25rem;font-size:.75rem;font-weight:600;text-decoration:none;transition:background .3s,border-color .3s}.nav-cta:hover{background:rgba(var(--accent-rgb), .12);border-color:var(--accent)}#hero{justify-content:center;align-items:center;width:100%;height:100vh;display:flex;position:relative;overflow:hidden}#hero:after{content:"";background:linear-gradient(to bottom, transparent 0%, rgba(var(--navy-rgb), .5) 40%, rgba(var(--navy-rgb), .85) 65%, var(--navy) 100%);z-index:5;pointer-events:none;height:280px;position:absolute;bottom:0;left:0;right:0}#webGLApp{z-index:1;width:100%;height:100%;display:block;position:absolute;top:0;left:0}.hero-content{z-index:10;text-align:center;pointer-events:none;position:relative}.hero-eyebrow{font-family:var(--font-display);letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:1.5rem;font-size:.72rem;font-weight:600}.hero-name{font-family:var(--font-serif);color:#fff;margin-bottom:.2em;font-size:clamp(4rem,10vw,9.5rem);font-weight:400;line-height:.92}.hero-name em{color:#ffffffbf;font-style:italic}.hero-tagline{font-family:var(--font-display);letter-spacing:.06em;color:var(--text-muted);margin-top:1.8rem;font-size:clamp(.85rem,1.5vw,1.05rem);font-weight:400}.hero-scroll{z-index:10;flex-direction:column;align-items:center;gap:.5rem;display:flex;position:absolute;bottom:2.5rem;left:50%;transform:translate(-50%)}.hero-socials{z-index:10;flex-direction:column;align-items:center;gap:1.25rem;display:flex;position:absolute;top:50%;left:2.5rem;transform:translateY(-50%)}.hero-socials:before{content:"";background:linear-gradient(to bottom, transparent, rgba(var(--cream-rgb), .25));width:1px;height:60px;margin-bottom:.25rem;display:block}.hero-socials:after{content:"";background:linear-gradient(to bottom, rgba(var(--cream-rgb), .25), transparent);width:1px;height:60px;margin-top:.25rem;display:block}.hero-social-link{width:44px;height:44px;color:rgba(var(--cream-rgb), .45);justify-content:center;align-items:center;transition:color .25s,transform .25s;display:flex}.hero-social-link:hover{color:var(--accent);transform:translate(3px)}@media (width<=900px){.hero-socials{left:unset;top:unset;gap:.75rem;bottom:5rem;right:1.25rem;transform:none}.hero-socials:before,.hero-socials:after{display:none}}.hero-scroll span{font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);font-size:.65rem}.scroll-line{background:linear-gradient(to bottom, var(--accent), transparent);width:1px;height:50px;animation:2s ease-in-out infinite scrollPulse}@keyframes scrollPulse{0%,to{opacity:.4;transform:scaleY(1)}50%{opacity:1;transform:scaleY(1.15)}}.nav-right{align-items:center;gap:1rem;display:flex}.theme-toggle{cursor:pointer;background:0 0;border:none;align-items:center;gap:.5rem;padding:0;display:flex}.theme-toggle-track{background:#ffffff1a;border:1px solid #fff3;border-radius:11px;width:40px;height:22px;transition:background .3s,border-color .3s;display:block;position:relative}.theme-toggle:hover .theme-toggle-track{border-color:var(--accent);background:rgba(var(--accent-rgb), .15)}.theme-toggle-thumb{background:var(--accent);border-radius:50%;width:14px;height:14px;transition:transform .3s,background .3s;position:absolute;top:3px;left:3px}[data-theme=ice] .theme-toggle-thumb{transform:translate(18px)}.theme-toggle-icon{color:var(--accent);opacity:.7;align-items:center;transition:opacity .2s;display:flex}.theme-toggle:hover .theme-toggle-icon{opacity:1}section{width:100%;position:relative}.container{max-width:1180px;margin:0 auto;padding:0 3rem}.section-pad{padding-top:4rem;padding-bottom:5rem}@media (width>=901px){.section-pad{padding-top:7rem;padding-bottom:7rem}}.section-label{font-family:var(--font-display);letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem;font-size:.68rem;font-weight:700}.section-title{font-family:var(--font-serif);color:var(--cream);margin-bottom:1rem;font-size:clamp(2.4rem,5vw,4rem);font-weight:400;line-height:1.05}.section-title em{color:rgba(var(--cream-rgb), .6);font-style:italic}.divider{background:rgba(var(--cream-rgb), .07);width:100%;height:1px}.about-grid{grid-template-columns:1fr 1fr;align-items:start;gap:5rem;margin-top:4rem;display:grid}.about-text p{color:rgba(var(--cream-rgb), .72);margin-bottom:1.5rem;font-size:1.05rem;line-height:1.85}.about-text p strong{color:var(--cream);font-weight:500}.about-photos{grid-template-rows:auto auto;grid-template-columns:1fr 1fr;gap:1rem;display:grid}.photo-placeholder{background:var(--navy-light);border:1px solid rgba(var(--cream-rgb), .07);border-radius:6px;overflow:hidden}.photo-placeholder:first-child{background:linear-gradient(135deg, var(--navy-light), color-mix(in srgb, var(--accent) 8%, transparent));grid-column:1/-1;height:260px}.photo-placeholder:not(:first-child){height:160px}.photo-img{object-fit:cover;width:100%;height:100%;transition:transform .6s;display:block}.photo-placeholder:hover .photo-img{transform:scale(1.04)}.skills-grid{grid-template-columns:repeat(3,1fr);gap:2rem;margin-top:3.5rem;display:grid}.skill-group{border:1px solid rgba(var(--cream-rgb), .07);background:rgba(var(--cream-rgb), .02);border-radius:8px;padding:2rem;transition:border-color .25s,transform .25s,box-shadow .25s}.skill-group:hover{border-color:rgba(var(--accent-rgb), .35);box-shadow:0 0 8px rgba(var(--accent-rgb), .25);transform:scale(1.02)}.skill-group-title{font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-bottom:1.5rem;font-size:.7rem;font-weight:700}.skill-tags{flex-wrap:wrap;gap:.5rem;display:flex}.skill-tag{font-family:var(--font-display);color:rgba(var(--cream-rgb), .7);border:1px solid rgba(var(--cream-rgb), .12);border-radius:3px;padding:.35rem .85rem;font-size:.78rem;font-weight:500;transition:color .25s,border-color .25s,box-shadow .25s}.skill-tag:hover{color:var(--cream);border-color:rgba(var(--accent-rgb), .6);box-shadow:0 0 8px rgba(var(--accent-rgb), .25)}.projects-grid{grid-template-columns:repeat(2,1fr);gap:1.5rem;margin-top:3.5rem;display:grid}.project-card{border:1px solid rgba(var(--cream-rgb), .08);background:rgba(var(--cream-rgb), .02);color:inherit;border-radius:8px;text-decoration:none;transition:border-color .3s,transform .3s;display:block;overflow:hidden}.project-card:hover{border-color:rgba(var(--accent-rgb), .3);transform:translateY(-4px)}.project-card.featured{grid-column:1/-1;grid-template-columns:1.2fr 1fr;display:grid}.project-img{background:var(--navy-light);width:100%;height:220px;position:relative;overflow:hidden}.project-card.featured .project-img{height:100%;min-height:280px}.project-img img{object-fit:cover;opacity:.85;width:100%;height:100%;transition:transform .5s;display:block}.project-card:hover .project-img img{transform:scale(1.05)}.project-img-placeholder{background:linear-gradient(135deg, var(--navy-light) 0%, rgba(var(--accent-rgb), .06) 100%);justify-content:center;align-items:center;width:100%;height:100%;display:flex}.project-img-placeholder span{font-family:var(--font-display);letter-spacing:.15em;text-transform:uppercase;color:rgba(var(--cream-rgb), .2);font-size:.65rem}.project-body{padding:1.75rem}.project-tech-row{flex-wrap:wrap;gap:.4rem;margin-bottom:1rem;display:flex}.project-tech{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);background:rgba(var(--accent-rgb), .1);border-radius:3px;padding:.25rem .6rem;font-size:.62rem;font-weight:600}.project-title{font-family:var(--font-serif);color:var(--cream);margin-bottom:.75rem;font-size:1.4rem;font-weight:400;line-height:1.25}.project-desc{color:rgba(var(--cream-rgb), .55);margin-bottom:1.25rem;font-size:.875rem;line-height:1.7}.project-link{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--cream);align-items:center;gap:.4rem;font-size:.72rem;font-weight:600;transition:color .2s,gap .2s;display:inline-flex}.project-card:hover .project-link{color:var(--accent);gap:.65rem}.timeline{margin-top:3.5rem;padding-left:2.5rem;position:relative}.timeline:before{content:"";background:rgba(var(--cream-rgb), .1);width:1px;position:absolute;top:8px;bottom:0;left:0}.timeline-item{border-bottom:1px solid rgba(var(--cream-rgb), .05);margin-bottom:3.5rem;padding-bottom:3.5rem;position:relative}.timeline-item:last-child{border-bottom:none;margin-bottom:0}.timeline-dot{background:var(--accent);width:9px;height:9px;box-shadow:0 0 12px rgba(var(--accent-rgb), .5);border-radius:50%;position:absolute;top:6px;left:-2.5rem;transform:translate(4px)}.timeline-date{font-family:var(--font-display);letter-spacing:.15em;text-transform:uppercase;color:var(--accent);margin-bottom:.6rem;font-size:.68rem;font-weight:600}.timeline-role{font-family:var(--font-serif);color:var(--cream);margin-bottom:.2rem;font-size:1.5rem;font-weight:400}.timeline-company{font-family:var(--font-display);color:rgba(var(--cream-rgb), .5);letter-spacing:.04em;margin-bottom:1rem;font-size:.82rem;font-weight:500}.timeline-desc{color:rgba(var(--cream-rgb), .6);max-width:680px;font-size:.925rem;line-height:1.75}.timeline-upcoming{font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);background:rgba(var(--accent-rgb), .1);border-radius:3px;align-items:center;gap:.5rem;margin-bottom:.8rem;padding:.3rem .7rem;font-size:.65rem;font-weight:600;display:inline-flex}.dot-pulse{background:var(--accent);border-radius:50%;width:6px;height:6px;animation:1.5s ease-in-out infinite dotPulse}@keyframes dotPulse{0%,to{opacity:.4;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}.edu-card{border:1px solid rgba(var(--cream-rgb), .08);border-radius:8px;grid-template-columns:auto 1fr;align-items:center;gap:1.75rem;margin-top:3rem;padding:2.5rem;display:grid}.edu-logo{background:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:150px;height:150px;display:flex;overflow:hidden}.edu-logo img{object-fit:cover;width:100%;height:100%}.edu-logo-fallback{color:#c00;text-align:center;padding:.25rem;font-size:.7rem;font-weight:700}.edu-school{font-family:var(--font-serif);color:var(--cream);margin-bottom:.35rem;font-size:1.6rem}.edu-degree{font-family:var(--font-display);color:rgba(var(--cream-rgb), .5);letter-spacing:.04em;margin-bottom:1.25rem;font-size:.82rem;font-weight:500}.courses-title{font-family:var(--font-display);letter-spacing:.15em;text-transform:uppercase;color:var(--accent);margin-bottom:.75rem;font-size:.65rem;font-weight:700}.course-tags{flex-wrap:wrap;gap:.5rem;display:flex}.course-tag{color:rgba(var(--cream-rgb), .6);border:1px solid rgba(var(--cream-rgb), .1);font-size:.8rem;font-family:var(--font-body);border-radius:3px;padding:.3rem .75rem;transition:color .25s,border-color .25s,box-shadow .25s}.course-tag:hover{color:var(--cream);border-color:rgba(var(--accent-rgb), .6);box-shadow:0 0 8px rgba(var(--accent-rgb), .25)}.contact-inner{text-align:center;border-top:1px solid rgba(var(--cream-rgb), .07);padding:6rem 3rem 8rem;position:relative;overflow:hidden}#contact{padding:0}.contact-glow{background:radial-gradient(circle, color-mix(in srgb, var(--accent) 6%, transparent) 0%, transparent 70%);pointer-events:none;border-radius:50%;width:600px;height:600px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.contact-title{font-family:var(--font-serif);color:var(--cream);margin-bottom:1.25rem;font-size:clamp(2.5rem,6vw,5rem);font-weight:400;position:relative}.contact-sub{color:rgba(var(--cream-rgb), .5);font-size:1rem;font-family:var(--font-body);margin-bottom:2.75rem;position:relative}.contact-actions{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex;position:relative}.btn-primary{font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;color:#fff;background:var(--accent);cursor:pointer;border:none;border-radius:4px;padding:.85rem 2.2rem;font-size:.78rem;font-weight:700;text-decoration:none;transition:background .3s,transform .2s;display:inline-block}.btn-primary:hover{background:color-mix(in srgb, var(--accent) 80%, black);transform:translateY(-2px)}.btn-secondary{font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--cream);border:1px solid rgba(var(--cream-rgb), .25);cursor:pointer;background:0 0;border-radius:4px;padding:.85rem 2.2rem;font-size:.78rem;font-weight:700;text-decoration:none;transition:border-color .3s,background .3s,transform .2s;display:inline-block}.btn-secondary:hover{border-color:rgba(var(--cream-rgb), .5);background:rgba(var(--cream-rgb), .04);transform:translateY(-2px)}footer{border-top:1px solid rgba(var(--cream-rgb), .06);background:var(--navy);justify-content:space-between;align-items:center;padding:1.75rem 3rem;display:flex}.footer-copy{font-family:var(--font-display);letter-spacing:.1em;color:rgba(var(--cream-rgb), .3);font-size:.72rem;font-weight:500}.footer-links{flex-direction:row;gap:1.5rem;display:flex}.footer-links a{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:rgba(var(--cream-rgb), .35);font-size:.72rem;font-weight:600;text-decoration:none;transition:color .2s}.footer-links a:hover{color:var(--accent)}.reveal{will-change:opacity, transform}.skills-edu-grid{grid-template-columns:1fr 1fr;align-items:stretch;gap:4rem;margin-top:3.5rem;display:grid}.skills-edu-sub{font-family:var(--font-display);letter-spacing:.2em;text-transform:uppercase;color:rgba(var(--cream-rgb), .4);margin-bottom:1.75rem;font-size:.68rem;font-weight:700}.skills-edu-left{flex-direction:column;display:flex}.skills-stack{flex-direction:column;flex:1;gap:1.25rem;display:flex}.skills-edu-right{flex-direction:column;display:flex}.edu-card-inline{border:1px solid rgba(var(--cream-rgb), .07);background:rgba(var(--cream-rgb), .02);border-radius:8px;flex-direction:column;flex:1;gap:1.5rem;padding:2rem;transition:border-color .25s,transform .25s,box-shadow .25s;display:flex}.edu-card-inline:hover{border-color:rgba(var(--accent-rgb), .35);box-shadow:0 0 8px rgba(var(--accent-rgb), .25);transform:scale(1.02)}.edu-info{flex-direction:column;gap:.25rem;display:flex}.project-img{aspect-ratio:16/9;height:auto}.project-card.featured .project-img{aspect-ratio:4/3;height:auto;min-height:280px}.about-photos .photo-placeholder:first-child{aspect-ratio:21/9;height:auto}.about-photos .photo-placeholder:not(:first-child){aspect-ratio:4/3;height:auto}@media (width<=900px){section{padding:4rem 0 5rem}.container{padding:0 1.5rem}nav{padding:1.25rem 1.5rem}.nav-links{display:none}.about-grid{grid-template-columns:1fr;gap:2.5rem}.about-photos{grid-template:auto auto/1fr 1fr;gap:.6rem;height:auto}.photo-bike{grid-area:unset;grid-column:1/-1;height:220px}.photo-dsmlc{grid-area:unset;height:160px}.photo-bottom{grid-column:1/-1;grid-template-columns:1fr 1fr;height:160px}.photo-placeholder{height:160px}.skills-edu-grid{grid-template-columns:1fr;gap:2rem}.skills-stack{gap:1rem}.skill-group,.edu-card-inline{padding:1.25rem}.projects-grid{grid-template-columns:1fr;gap:1.25rem}.project-card.featured{grid-template-columns:1fr}.project-card.featured .project-img{height:220px}.project-img{height:180px}.project-body{padding:1.25rem}.edu-card{grid-template-columns:1fr;gap:1.5rem;padding:1.5rem}.edu-logo{width:60px;height:60px}.contact-title{font-size:clamp(2rem,8vw,3rem)}footer{text-align:center;flex-direction:column;gap:1rem;padding:1.5rem}}
