:root{--bg: #fbfaf7;--surface: #ffffff;--border: #e7e5e0;--text: #18181b;--text-secondary: #4b4b54;--text-muted: #8b8b94;--accent: #4f46e5;--accent-2: #9333ea;--accent-3: #06b6d4;--accent-soft: #eef0fe;--grad: linear-gradient(115deg, var(--accent) 0%, var(--accent-2) 55%, var(--accent-3) 120%);--font-ui: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--max: 1320px;--ease: cubic-bezier(.22, 1, .36, 1)}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:1.1rem;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}a{color:inherit;text-decoration:none}::selection{background:var(--accent-soft)}.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-2;overflow:hidden}.bg__blob{position:absolute;border-radius:50%;filter:blur(90px);opacity:.18}.bg__blob--1{width:46vw;height:46vw;background:var(--accent);top:-12%;right:-8%;animation:drift 26s var(--ease) infinite}.bg__blob--2{width:38vw;height:38vw;background:var(--accent-3);bottom:-14%;left:-10%;animation:drift 32s var(--ease) infinite reverse}@keyframes drift{0%,to{transform:translate(0) scale(1)}50%{transform:translate(4vw,5vh) scale(1.12)}}.bg__grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(79,70,229,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(79,70,229,.05) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(ellipse 70% 55% at 50% 0%,#000 30%,transparent 100%);mask-image:radial-gradient(ellipse 70% 55% at 50% 0%,#000 30%,transparent 100%)}.scroll-progress{position:fixed;top:0;left:0;height:3px;width:0%;background:var(--grad);z-index:100}.page{position:relative;z-index:1;max-width:var(--max);margin:0 auto;padding:clamp(2.5rem,7vw,5rem) 1.5rem 4rem}.head{position:relative;min-height:calc(100vh - clamp(2.5rem,7vw,5rem) - 3rem);display:flex;flex-direction:column;justify-content:center;padding-bottom:2.6rem;border-bottom:1px solid var(--border)}.head__grid{display:grid;grid-template-columns:1fr auto;align-items:center;gap:clamp(2rem,6vw,5rem)}.head__eyebrow{font-size:1.2rem;color:var(--text-muted);margin-bottom:.4rem}.head__name{font-size:clamp(2.6rem,7vw,4.2rem);font-weight:800;letter-spacing:-.035em;line-height:1.02}.head__summary{font-size:clamp(1.15rem,2vw,1.45rem);color:var(--text-secondary);margin-top:1.2rem;max-width:46ch}.head__roles{margin-top:1rem;font-size:.95rem;font-weight:600;font-family:var(--font-mono);color:var(--text-secondary)}.head__actions{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.8rem}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.62rem 1.25rem;border-radius:10px;font-size:.95rem;font-weight:600;border:1px solid var(--border);color:var(--text);transition:transform .15s ease,border-color .15s ease,background .15s ease,box-shadow .15s ease}.btn:hover{transform:translateY(-1px);border-color:#cfd0fb;color:var(--accent)}.btn--primary{background:var(--grad);color:#fff;border-color:transparent;box-shadow:0 8px 22px #4f46e547}.btn--primary:hover{color:#fff;box-shadow:0 12px 30px #4f46e566}.btn--icon{padding:.62rem;width:2.9rem}.btn--icon svg{display:block}.head__photo{flex-shrink:0;padding:4px;border-radius:50%;background:var(--grad);box-shadow:0 16px 44px #4f46e538}.head__photo img{width:clamp(180px,20vw,260px);height:clamp(180px,20vw,260px);border-radius:50%;object-fit:cover;display:block;border:5px solid var(--bg)}.dot-sep{color:var(--text-muted)}.head__scroll{position:absolute;left:0;bottom:1.6rem;display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-mono);font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);transition:color .2s ease}.head__scroll:hover{color:var(--accent)}.head__scroll-arrow{font-size:1.05rem;animation:bob 1.8s var(--ease) infinite}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}@media (max-width: 760px){.head__grid{grid-template-columns:1fr;gap:2rem}.head__photo{order:-1;justify-self:start}.head__photo img{width:120px;height:120px}}.job__paper-link{display:inline-block;margin-top:.9rem;font-size:.82rem;font-family:var(--font-mono);color:var(--text-muted);border-bottom:1px solid transparent;transition:color .15s ease,border-color .15s ease}.job__paper-link:hover{color:var(--accent);border-bottom-color:var(--accent)}.section{margin-top:3.4rem}.section__head{display:flex;align-items:center;gap:.9rem;margin-bottom:1.6rem}.section__num{font-family:var(--font-mono);font-size:.95rem;font-weight:700;color:var(--accent)}.section__title{font-size:1.05rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.section__rule{flex:1;height:1px;background:linear-gradient(90deg,var(--border),transparent)}.timeline{position:relative;padding-left:1.7rem}.timeline:before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:linear-gradient(var(--accent),var(--accent-3),transparent)}.job{position:relative;padding:1.5rem 0;border-top:1px solid var(--border)}.job:first-of-type{border-top:none;padding-top:0}.job__node{position:absolute;left:-1.7rem;top:1.85rem;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--accent);box-shadow:0 0 0 4px #4f46e51f;transform:translate(-1px)}.job:first-of-type .job__node{top:.35rem}.job__head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap}.job__role{font-size:1.25rem;font-weight:680}.job__org{font-size:1rem;color:var(--text-secondary);margin-top:.15rem}.job__date{font-size:.85rem;color:var(--text-muted);font-family:var(--font-mono);white-space:nowrap}.job__points{list-style:none;margin:1rem 0 0;display:flex;flex-direction:column;gap:.6rem}.job__points li{position:relative;padding-left:1.4rem;font-size:1.02rem;color:var(--text-secondary);line-height:1.6}.job__points li:before{content:"";position:absolute;left:.25rem;top:.7rem;width:6px;height:6px;border-radius:50%;background:var(--accent)}.job__points strong{color:var(--text);font-weight:600}.tags{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:1rem}.tag{font-size:.82rem;font-family:var(--font-mono);padding:.32rem .72rem;border-radius:8px;background:var(--surface);color:var(--text-secondary);border:1px solid var(--border);transition:transform .18s ease,border-color .18s ease,color .18s ease}.tag:hover{transform:translateY(-2px);color:var(--accent);border-color:#cfd0fb}.tag--strong{background:var(--accent-soft);color:var(--accent);border-color:#d9dcfc;font-weight:600}.skills{display:grid;grid-template-columns:1fr 1fr;gap:1.6rem}.skill-group__title{font-size:1rem;font-weight:680;margin-bottom:.65rem}.edu{padding:1.3rem 0;border-top:1px solid var(--border)}.edu:first-of-type{border-top:none;padding-top:0}.edu__head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap}.edu__degree{font-size:1.15rem;font-weight:680}.edu__date{font-size:.85rem;color:var(--text-muted);font-family:var(--font-mono);white-space:nowrap}.edu__org{font-size:1rem;color:var(--text-secondary);margin-top:.15rem}.edu__detail{font-size:.98rem;color:var(--text-muted);margin-top:.5rem}.edu__detail em{font-style:italic}.certs{margin-top:1.8rem;padding-top:1.5rem;border-top:1px solid var(--border)}.certs__title{font-size:1rem;font-weight:680;margin-bottom:.9rem}.certs__list{list-style:none;display:flex;flex-direction:column;gap:.7rem}.certs__list li{display:flex;align-items:center;gap:.7rem;font-size:.98rem;color:var(--text-secondary)}.certs__tag{flex-shrink:0;min-width:78px;text-align:center;font-size:.72rem;font-family:var(--font-mono);color:var(--accent);background:var(--accent-soft);border:1px solid #d9dcfc;padding:.2rem .5rem;border-radius:6px}.beyond{display:flex;flex-wrap:wrap;gap:.55rem}.beyond__chip{display:inline-flex;align-items:center;gap:.5rem;font-size:.92rem;color:var(--text-secondary);font-weight:550;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:.42rem .9rem;transition:transform .18s ease,border-color .18s ease,color .18s ease}.beyond__chip:hover{transform:translateY(-2px);color:var(--text);border-color:#d4d2fb}.beyond__emoji{font-size:1.1rem;line-height:1}.contact__big{font-size:clamp(1.9rem,5vw,2.8rem);font-weight:800;letter-spacing:-.03em;line-height:1.05;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.contact__sub{color:var(--text-secondary);margin-top:.8rem;max-width:48ch}.contact__email{display:inline-block;margin-top:1.6rem;font-size:clamp(1.3rem,3vw,1.9rem);font-weight:700;letter-spacing:-.02em;border-bottom:2px solid transparent;transition:color .18s ease,border-color .18s ease}.contact__email:hover{color:var(--accent);border-bottom-color:var(--accent)}.contact__row{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem;margin-top:1.8rem}.contact__loc{color:var(--text-muted);font-size:.95rem;margin-left:.3rem}.foot{margin-top:4rem;padding-top:2rem;border-top:1px solid var(--border);text-align:center;color:var(--text-muted);font-size:.9rem}.projects{display:flex;flex-direction:column;gap:1.1rem}.proj{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:1.4rem 1.5rem;transition:transform .25s var(--ease),border-color .25s ease,box-shadow .25s ease}.proj:hover{transform:translateY(-4px);border-color:#d4d2fb;box-shadow:0 12px 34px #4f46e51a}.proj__head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap}.proj__name{font-size:1.2rem;font-weight:680}.proj__blurb{font-size:.8rem;color:var(--accent);font-family:var(--font-mono);white-space:nowrap}.proj__points{list-style:none;margin:.9rem 0 0;display:flex;flex-direction:column;gap:.55rem}.proj__points li{position:relative;padding-left:1.4rem;font-size:1rem;color:var(--text-secondary);line-height:1.6}.proj__points li:before{content:"";position:absolute;left:.25rem;top:.7rem;width:6px;height:6px;border-radius:50%;background:var(--accent)}.proj__points strong{color:var(--text);font-weight:600}.proj__links{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.1rem}.proj__link{display:inline-flex;align-items:center;gap:.4rem;font-size:.85rem;font-weight:600;font-family:var(--font-ui);color:#fff;background:var(--grad);border-radius:999px;padding:.5rem 1.05rem;box-shadow:0 6px 18px #4f46e538;transition:transform .15s var(--ease),box-shadow .15s var(--ease)}.proj__link:hover{transform:translateY(-2px);box-shadow:0 10px 26px #4f46e552}.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s var(--ease),transform .6s var(--ease)}.reveal.is-visible{opacity:1;transform:translateY(0)}.sidenav{position:fixed;left:clamp(1.5rem,3vw,3.5rem);top:50%;transform:translateY(-50%);z-index:50}.sidenav ul{list-style:none;display:flex;flex-direction:column;gap:.55rem}.sidenav a{display:inline-block;padding:.1rem 0;color:var(--text-muted);font-size:1rem;font-weight:500;transition:color .2s ease,transform .2s ease}.sidenav a:hover{color:var(--text-secondary);transform:translate(2px)}.sidenav a.is-active{color:var(--text);font-weight:650}.section,#top{scroll-margin-top:1.5rem}@media (min-width: 1121px){.page{padding-left:clamp(9rem,3vw + 7rem,12rem)}}@media (max-width: 1120px){.sidenav{display:none}}@media (max-width: 600px){.skills{grid-template-columns:1fr}.head__top{gap:1rem}.head__avatar img{width:68px;height:68px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}
