:root{--bg:#262626;--bg-chip:#151515;--accent:#3b7eca;--white:#fff;--white-70:#ffffffb3;--grey-card:#cacaca;--grey-placeholder:#aaa;--dark-text:#121212;--font-main:"Poppins", sans-serif;--font-form:"Inter", sans-serif;--page-width:1680px;--rail-x:33px;--entry-x:222px;--entry-col:418px}*{box-sizing:border-box;margin:0;padding:0}[data-reveal]{opacity:0;transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transition-delay:var(--reveal-delay,0s);will-change:opacity, transform;transform:translateY(40px)}[data-reveal=left]{transform:translate(-60px)}[data-reveal=right]{transform:translate(60px)}[data-reveal=down]{transform:translateY(-70px)}[data-reveal=fade]{transform:none}[data-reveal].is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transition:none;transform:none}}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--white);font-family:var(--font-main);-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;font-family:inherit}.page{max-width:var(--page-width);margin:0 auto;padding:0 40px;overflow-x:clip}.landing{flex-direction:column;min-height:100svh;display:flex}.section-heading{color:var(--accent);font-size:48px;font-weight:600;line-height:1.5}.rail{position:relative}.rail:before{content:"";top:80px;bottom:0;left:var(--rail-x);background:var(--white);width:1.5px;position:absolute}.rail>*{position:relative}.rail-terminal{height:0}.rail-terminal:before{content:"";left:var(--rail-x);background:var(--white);height:1.5px;position:absolute;top:0;right:0}.rail-terminal:after{content:"";left:var(--rail-x);background:var(--white);border-radius:50%;width:18px;height:18px;position:absolute;top:0;transform:translate(-50%,-50%)}.rail .section-heading{background:var(--bg);z-index:1;padding-right:24px;display:table;position:relative}.rail-marker{left:var(--rail-x);background:var(--white);border-radius:50%;width:18px;height:18px;position:absolute;transform:translate(-50%,-50%)}.rail-marker:after{content:"";background:var(--white);width:98px;height:1.5px;position:absolute;top:50%;left:18px}@media (width<=900px){:root{--rail-x:4px}.rail:before{top:60px}[data-reveal=left],[data-reveal=right],[data-reveal=down]{transform:translateY(40px)}.page{padding:0 20px}.section-heading{font-size:34px}.rail-marker:after{display:none}}.header{z-index:10;justify-content:space-between;align-items:center;padding:24px 0;display:flex;position:relative}.logo{font-size:48px;font-weight:600;line-height:1.5}.logo-d{color:var(--white)}.logo-m{color:var(--white-70);font-weight:300}.logo-dot{color:var(--accent)}.resume-button{background:var(--accent);color:var(--dark-text);padding:14px 36px;font-size:16px;font-weight:600;line-height:1.5;transition:filter .2s}.resume-button:hover{filter:brightness(1.1)}.header-actions{align-items:center;gap:clamp(8px,2vw,16px);display:flex}.section-menu{display:none;position:relative}.section-menu-toggle{cursor:pointer;background:var(--bg-chip);color:var(--white);white-space:nowrap;align-items:center;gap:clamp(5px,1.6vw,8px);padding:clamp(7px,1.8vw,9px) clamp(7px,2.6vw,14px);font-size:clamp(10px,2.6vw,13px);font-weight:600;line-height:1.5;display:inline-flex}.section-menu-toggle:after{content:"";border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);width:6px;height:6px;transition:transform .3s cubic-bezier(.16,1,.3,1);transform:translateY(-2px)rotate(45deg)}.section-menu-toggle[aria-expanded=true]:after{transform:translateY(1px)rotate(-135deg)}.section-menu ul{z-index:20;background:var(--bg-chip);opacity:0;visibility:hidden;transform-origin:100% 0;min-width:150px;padding:6px 0;list-style:none;transition:opacity .22s,transform .32s cubic-bezier(.16,1,.3,1),visibility .32s;position:absolute;top:calc(100% + 6px);right:0;transform:translateY(-10px)scale(.96);box-shadow:0 12px 28px #00000073}.section-menu ul.is-open{opacity:1;visibility:visible;transform:none}.section-menu li{opacity:0;transition:opacity .26s,transform .26s cubic-bezier(.16,1,.3,1);transform:translateY(-6px)}.section-menu ul.is-open li{opacity:1;transition-delay:calc(60ms + var(--item-index) * 45ms);transform:none}.section-menu ul a{color:var(--accent);padding:10px 16px;font-size:14px;font-weight:600;line-height:1.5;transition:background .2s,color .2s;display:block}@media (prefers-reduced-motion:reduce){.section-menu ul,.section-menu li,.section-menu-toggle:after{transition-duration:.01ms;transition-delay:0s}}.section-menu ul a:hover,.section-menu ul a:focus-visible{color:var(--white);background:#ffffff14}@media (width<=900px){.logo{font-size:clamp(26px,5.6vw,36px)}.header{gap:10px}.header-actions .resume-button{display:none}.section-menu{display:block}.section-menu-toggle{gap:9px;padding:12px 18px;font-size:15px}}.hero{flex:1;grid-template-columns:.95fr 1.15fr 1.4fr;grid-template-areas:"left center right""left bottom bottom";align-content:center;column-gap:40px;padding-bottom:24px;display:grid}.hero [data-reveal]{transition-duration:1.2s}.hero-left{flex-direction:column;grid-area:left;align-items:flex-start;display:flex}.hero-chip{background:var(--bg-chip);align-items:center;gap:10px;padding:8px 16px;font-size:14px;font-weight:600;line-height:1.5;display:inline-flex}.hero-name{margin-top:8px;font-size:80px;font-weight:600;line-height:1.5}.hero-lastname{align-items:center;gap:24px;margin-top:-20px;margin-left:60px;font-size:48px;font-weight:300;display:flex}.hero-dash{background:var(--accent);width:70px;height:4px}.hero-dash-small{width:28px;height:3px}.contact-button{border:1.5px solid var(--accent);color:var(--white);border-radius:0 24px;margin-top:40px;padding:10px 60px;font-size:24px;font-weight:300;line-height:1.5;transition:background .25s,color .25s}.contact-button:hover{background:var(--accent);color:var(--white)}.hero-socials{margin-top:48px}.socials-list{margin-top:28px;list-style:none;display:flex}.socials-list li{align-items:center;display:flex}.socials-list li+li:before{content:"";background:var(--white-70);width:1px;height:28px;margin:0 20px}.socials-list a{color:var(--white-70);flex-direction:column;align-items:center;gap:10px;font-size:14px;font-weight:600;transition:color .2s;display:flex}.socials-list a:hover{color:var(--white)}.hero-center{grid-area:center;align-self:end}.hero-photo{justify-content:center;display:flex;position:relative;overflow:hidden}.hero-photo:before{content:"";aspect-ratio:1;background:var(--accent);border-radius:50%;width:min(470px,100%);position:absolute;top:20px;left:50%;transform:translate(-50%)}.hero-photo img{width:min(460px,100%);position:relative}.hero-right{grid-area:right;padding-top:40px}.hero-title{color:var(--accent);font-size:48px;font-weight:600;line-height:1.5}.hero-subtitle{margin-top:4px;font-size:30px;font-weight:600;line-height:1.5}.hero-description{color:var(--white-70);max-width:480px;margin-top:32px;font-size:14px;font-weight:600;line-height:1.5}.hero-resume{display:none}.hero-bottom{flex-direction:column;grid-area:bottom;margin-top:-13.5px;display:flex}.hero-nav{align-items:center;gap:24px;display:flex}.nav-rule{background:var(--white);flex:1;height:1px}.hero-nav a{color:var(--accent);font-size:18px;font-weight:600;line-height:1.5;transition:color .2s}.hero-nav a:hover{color:var(--white)}.nav-dash{background:var(--white);width:46px;height:1px}.hero-quote{border-left:4px solid var(--accent);align-self:center;margin-top:68px;padding-left:32px;font-size:18px;font-weight:300;line-height:1.5}.hero-quote cite{margin-top:4px;font-style:normal;display:block}@media (width<=1100px){.hero{grid-template-columns:1fr 1fr;grid-template-areas:"left center""right right""bottom bottom";row-gap:40px}}@media (width<=900px){.hero{gap:clamp(20px,4vw,40px) clamp(12px,3vw,40px)}.hero-chip{gap:clamp(6px,1.4vw,10px);padding:clamp(5px,1.2vw,8px) clamp(9px,2.4vw,16px);font-size:clamp(11px,1.9vw,14px)}.hero-name{font-size:clamp(30px,6.6vw,56px)}.hero-lastname{gap:clamp(10px,2.6vw,24px);margin-top:-10px;margin-left:clamp(14px,4.4vw,40px);font-size:clamp(20px,4.2vw,36px)}.hero-dash{width:clamp(26px,6vw,70px);height:clamp(2px,.4vw,4px)}.contact-button{margin-top:clamp(18px,3.6vw,40px);padding:clamp(6px,1.2vw,10px) clamp(14px,4.8vw,60px);font-size:clamp(14px,2.6vw,24px)}.hero-socials{display:none}.hero-center{align-self:end}.hero-photo img{width:min(460px,78%)}.hero-photo:before{width:min(470px,80%)}.hero-right{padding-top:clamp(28px,7vw,56px)}.hero-title{font-size:clamp(26px,4.6vw,36px)}.hero-subtitle{font-size:clamp(18px,3.2vw,24px)}.hero-resume{margin-top:32px;padding:10px 22px;font-size:14px;display:inline-block}.hero-nav{display:none}.hero-bottom{margin-top:0}.hero-quote{align-self:flex-start}}.about-heading{margin-top:30px}.qualifications-heading{margin-top:100px}.qual-entry{margin:62px 0 0 var(--entry-x);max-width:1030px;position:relative}.qual-entry:first-of-type{margin-top:84px}.qual-entry .rail-marker{top:69px;left:calc(var(--rail-x) - var(--entry-x))}.entry-year{background:var(--bg-chip);padding:6px 14px;font-size:14px;font-weight:600;line-height:1.5;display:inline-block}.entry-title{margin-top:8px;font-size:40px;font-weight:600;line-height:1.5}.entry-institution{align-items:center;gap:13px;margin-top:8px;font-size:32px;font-weight:300;line-height:1.5;display:flex}.entry-dash{background:var(--accent);flex-shrink:0;width:58px;height:4px}.entry-body{grid-template-columns:var(--entry-col) minmax(0, 1fr);align-items:start;margin-top:33px;display:grid}.grade-label{border:1.5px solid var(--accent);padding:6px 24px;font-size:20px;font-weight:400;line-height:1.5;display:inline-block}.grade-rows{flex-direction:column;gap:4px;margin-top:18px;display:flex}.grade-rows div{display:flex}.grade-rows dt{width:90px;font-size:20px;font-weight:300}.grade-rows dd{font-size:20px;font-weight:400}.thesis{border-left:4px solid var(--accent);padding-left:37px}.thesis h4{font-size:40px;font-weight:600;line-height:1.5}.thesis p{max-width:540px;margin-top:8px;font-size:20px;font-weight:300;line-height:1.5}.thesis .grade-box{margin-top:32px}@media (width<=900px){.qual-entry{margin-top:120px;margin-left:40px}.qual-entry .rail-marker{display:none}.entry-title{font-size:28px}.entry-institution{align-items:flex-start;gap:12px;font-size:22px}.entry-dash{width:40px;margin-top:15px}.entry-body{grid-template-columns:1fr;gap:40px}.thesis h4{font-size:28px}}.internship-heading{margin-top:110px}.intern-entry{margin:84px 0 0 var(--entry-x);max-width:1030px;position:relative}.intern-entry .rail-marker{top:69px;left:calc(var(--rail-x) - var(--entry-x))}.intern-tasks{border-left:4px solid var(--accent);flex-direction:column;gap:22px;margin-top:48px;padding:6px 0 6px 36px;list-style:none;display:flex}.intern-tasks li{align-items:center;gap:20px;font-size:20px;font-weight:300;line-height:1.5;display:flex}.intern-tasks li:before{content:"";border:1.5px solid var(--accent);flex-shrink:0;width:19px;height:19px}@media (width<=900px){.internship-heading{margin-top:80px}.intern-entry{max-width:none;margin:48px 0 0 40px}.intern-entry .rail-marker{display:none}.intern-tasks{gap:18px;margin-top:32px;padding-left:22px}.intern-tasks li{align-items:flex-start;gap:14px}.intern-tasks li:before{margin-top:6px}}.skills-heading{margin-top:110px}.skills-grid{gap:144px;margin:70px 0 0 155px;display:flex}.skills-column{flex-direction:column;flex:1;gap:46px;max-width:540px;display:flex}.skill{align-items:flex-end;gap:18px;display:flex}.skill-icon{object-fit:contain;width:42px;height:42px;margin-bottom:4px}.skill-info{flex:1}.skill-head{justify-content:space-between;align-items:flex-end;display:flex}.skill-name{font-size:24px;font-weight:600;line-height:1.5}.skill-level{color:var(--accent);font-size:14px;font-weight:600;line-height:1.5}.skill-bar{border:1px solid var(--white);border-radius:9px;align-items:center;height:17px;margin-top:4px;padding:2px;display:flex}.skill-fill{background:var(--accent);width:0;height:11px;transition:width 1s cubic-bezier(.16,1,.3,1);transition-delay:calc(var(--reveal-delay,0s) + .2s);border-radius:6px;display:block}.skill.is-visible .skill-fill{width:var(--level)}@media (prefers-reduced-motion:reduce){.skill-fill{width:var(--level);transition:none}}@media (width<=1100px){.skills-grid{gap:60px;margin-left:60px}}@media (width<=900px){.skills-grid{flex-direction:column;gap:46px;margin-left:40px}}.projects-heading{margin-top:120px}.projects-deck{z-index:2;margin:70px 0 0 155px;padding-bottom:120px;position:relative}.project-slot{top:calc(72px + var(--i) * 14px);z-index:calc(var(--i) + 1);position:sticky}.project-slot+.project-slot{margin-top:190px}.project-card{background:linear-gradient(155deg,#2f2f2f 0%,#1b1b1b 100%);border:1px solid #ffffff1f;border-radius:32px;grid-template-columns:minmax(0,1.6fr) minmax(0,.8fr);gap:60px;min-height:470px;padding:46px 50px;display:grid;box-shadow:0 -22px 60px #00000080}.project-main{flex-direction:column;display:flex}.project-kicker{color:var(--accent);letter-spacing:.18em;text-transform:uppercase;align-items:center;gap:14px;font-size:13px;font-weight:500;display:flex}.project-index{color:var(--white-70)}.project-index:after{content:"";vertical-align:middle;background:#ffffff4d;width:26px;height:1px;margin-left:14px;display:inline-block}.project-title{letter-spacing:-.02em;margin-top:22px;font-size:38px;font-weight:500;line-height:1.22}.project-description{max-width:62ch;color:var(--white-70);margin-top:22px;font-size:17px;font-weight:300;line-height:1.75}.project-tech{flex-wrap:wrap;gap:10px;margin-top:auto;padding-top:34px;list-style:none;display:flex}.project-tech li{background:var(--bg-chip);color:var(--white-70);border:1px solid #ffffff24;border-radius:999px;padding:7px 15px;font-size:13px;font-weight:300}.project-spec{border-left:1px solid #ffffff1f;flex-direction:column;justify-content:center;gap:34px;padding-left:44px;display:flex}.project-figure-value{color:var(--accent);letter-spacing:-.03em;font-size:46px;font-weight:200;line-height:1.1;display:block}.project-figure-label{color:var(--white-70);margin-top:10px;font-size:13px;font-weight:300;line-height:1.5;display:block}.project-meta dt{color:var(--grey-placeholder);letter-spacing:.14em;text-transform:uppercase;font-size:11px;font-weight:300}.project-meta dd{margin:6px 0 20px;font-size:14px;font-weight:300;line-height:1.5}.project-meta dd:last-child{margin-bottom:0}@media (width<=1100px){.projects-deck{margin-left:60px}.project-card{gap:36px;padding:38px 34px}.project-title{font-size:30px}.project-spec{padding-left:30px}}@media (width<=900px){.projects-deck{margin:50px 0 0 40px;padding-bottom:0}.project-slot{position:static}.project-slot+.project-slot{margin-top:24px}.project-card{border-radius:24px;grid-template-columns:1fr;gap:30px;min-height:0;padding:32px 26px}.project-title{font-size:26px}.project-description{font-size:16px}.project-spec{border-top:1px solid #ffffff1f;border-left:none;gap:26px;padding:28px 0 0}.project-figure-value{font-size:38px}}@media (prefers-reduced-motion:reduce){.project-slot{position:static}.project-slot+.project-slot{margin-top:24px}.projects-deck{padding-bottom:0}}.contact-heading{margin-top:110px}.contact-grid{margin:64px 0 0 var(--entry-x);grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:120px;padding-bottom:110px;display:grid}.contact-say{letter-spacing:-.02em;font-size:56px;font-weight:600;line-height:1.15}.contact-say span{color:var(--accent)}.contact-sub{max-width:38ch;color:var(--white-70);font-family:var(--font-form);margin-top:24px;font-size:16px;font-weight:300;line-height:1.7}.contact-direct{flex-direction:column;gap:6px;margin-top:44px;display:inline-flex}.contact-direct small{color:var(--grey-placeholder);font-family:var(--font-form);letter-spacing:.16em;text-transform:uppercase;font-size:11px;font-weight:500}.contact-direct b{border-bottom:1px solid var(--accent);padding-bottom:4px;font-size:22px;font-weight:400;transition:color .2s}.contact-direct:hover b{color:var(--accent)}.contact-social{gap:26px;margin-top:40px;list-style:none;display:flex}.contact-social a{color:var(--white-70);font-family:var(--font-form);border-bottom:1px solid #0000;padding-bottom:3px;font-size:14px;transition:color .2s,border-color .2s}.contact-social a:hover{color:var(--white);border-bottom-color:var(--accent)}.contact-form{font-family:var(--font-form)}.botcheck{opacity:0;position:absolute;left:-9999px}.contact-row{grid-template-columns:1fr 1fr;gap:40px;display:grid}.contact-field{color:var(--grey-placeholder);letter-spacing:.16em;text-transform:uppercase;flex-direction:column;gap:10px;margin-bottom:34px;font-size:11px;font-weight:500;display:flex}.contact-field input,.contact-field textarea{color:var(--white);font-family:var(--font-form);letter-spacing:0;resize:none;text-transform:none;background:0 0;border:none;border-bottom:1px solid #ffffff40;padding:8px 2px;font-size:18px;font-weight:300;line-height:1.6;transition:border-color .2s}.contact-field input:focus,.contact-field textarea:focus{border-bottom-color:var(--accent);outline:none}.contact-field ::placeholder{color:var(--grey-placeholder)}.h-captcha{min-height:78px;margin:8px 0 28px}.send-button{background:var(--accent);color:var(--white);font-family:var(--font-form);letter-spacing:.04em;border-radius:999px;align-items:center;gap:14px;margin-top:8px;padding:20px 38px;font-size:15px;font-weight:600;line-height:1;transition:gap .25s,background .25s;display:inline-flex}.send-button:hover:enabled{background:#4a8fd8;gap:20px}.send-button:disabled{opacity:.7;cursor:default}.contact-status{color:var(--accent);margin-top:24px;font-size:15px}.contact-status-error{color:#ee4c2c}@media (width<=1100px){.contact-grid{gap:60px}.contact-say{font-size:42px}}@media (width<=900px){.contact-grid{grid-template-columns:minmax(0,1fr);gap:56px;margin:44px 0 0 40px;padding-bottom:70px}.contact-say{font-size:34px}.contact-direct b{overflow-wrap:anywhere;font-size:clamp(12px,3.6vw,22px)}.contact-row{grid-template-columns:1fr;gap:0}.contact-social{flex-wrap:wrap;gap:18px}.send-button{justify-content:center;width:100%}}.site-footer{height:96px;padding-left:var(--entry-x);color:var(--grey-placeholder);font-family:var(--font-form);justify-content:space-between;align-items:center;font-size:13px;font-weight:300;display:flex}.site-footer a{transition:color .2s}.site-footer a:hover{color:var(--accent)}@media (width<=900px){.site-footer{gap:16px;height:auto;padding:26px 0 40px 40px}}
