:root{--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--fs-xs: .75rem;--fs-sm: .8125rem;--fs-base: .9375rem;--fs-md: 1.0625rem;--fs-lg: 1.25rem;--fs-xl: 1.5rem;--fs-2xl: 2rem;--fs-hero: clamp(2.5rem, 6vw, 4rem);--lh-tight: 1.15;--lh-snug: 1.35;--lh-base: 1.65;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--tracking-tight: -.02em;--tracking-wide: .08em;--tracking-wider: .14em;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.5rem;--sp-6: 2rem;--sp-7: 3rem;--sp-8: 4rem;--sp-9: 6rem;--sp-10: 8rem;--container: 56rem;--container-wide: 68rem;--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--bg: #ffffff;--bg-subtle: #fafafa;--surface: #ffffff;--surface-hover: #f6f6f7;--text: #18181b;--text-secondary: #52525b;--text-muted: #8a8a93;--border: #ececef;--border-strong: #d8d8dd;--accent: #3a5bd9;--accent-hover: #2f49ad;--accent-soft: rgba(58, 91, 217, .08);--shadow-sm: 0 1px 2px rgba(24, 24, 27, .04);--shadow: 0 4px 24px -8px rgba(24, 24, 27, .12);color-scheme:light}:root[data-theme=dark]{--bg: #0b0b0d;--bg-subtle: #111114;--surface: #141418;--surface-hover: #1b1b20;--text: #f4f4f5;--text-secondary: #b4b4bd;--text-muted: #7c7c87;--border: #232329;--border-strong: #34343c;--accent: #7c93f5;--accent-hover: #94a6f7;--accent-soft: rgba(124, 147, 245, .12);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 4px 28px -8px rgba(0, 0, 0, .6);color-scheme:dark}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:5rem}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"cv05" 1,"ss01" 1}img,svg{display:block;max-width:100%}a{color:inherit;text-decoration:none}ul,ol{list-style:none}::selection{background:var(--accent-soft);color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}h1,h2,h3,h4{font-weight:var(--fw-semibold);line-height:var(--lh-tight);letter-spacing:var(--tracking-tight);color:var(--text)}p{text-wrap:pretty}strong{font-weight:var(--fw-semibold);color:var(--text)}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--sp-5)}.section{padding-block:var(--sp-9);border-top:1px solid var(--border)}.section--flush{border-top:none}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-medium);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--text-muted);display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-5)}.eyebrow:before{content:"";width:1.5rem;height:1px;background:var(--border-strong)}.section-title{font-size:var(--fs-2xl);margin-bottom:var(--sp-6)}.link{color:var(--accent);font-weight:var(--fw-medium);transition:color .15s ease}.link:hover{color:var(--accent-hover)}.link-underline{position:relative;display:inline-flex;align-items:center;gap:.3em;transition:color .15s ease}.link-underline:after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background:currentColor;opacity:.25;transform:scaleX(.001);transform-origin:left;transition:transform .25s ease,opacity .2s ease}.link-underline:hover{color:var(--accent)}.link-underline:hover:after{transform:scaleX(1);opacity:.6}.tag{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.02em;color:var(--text-secondary);background:var(--bg-subtle);border:1px solid var(--border);border-radius:100px;padding:.2rem .6rem}.skip-link{position:fixed;top:.75rem;left:.75rem;z-index:100;padding:.6rem 1rem;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--bg);background:var(--text);border-radius:var(--radius-sm);transform:translateY(-150%);transition:transform .18s ease}.skip-link:focus-visible{transform:translateY(0);outline-offset:2px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.btn{display:inline-flex;align-items:center;gap:.5em;font-size:var(--fs-sm);font-weight:var(--fw-medium);line-height:1;padding:.7rem 1.1rem;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .15s ease}.btn:hover{background:var(--surface-hover);border-color:var(--text-muted)}.btn:active{transform:translateY(1px)}.btn--primary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn--primary:hover{background:var(--accent);border-color:var(--accent);color:#fff}.nav{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid transparent;transition:border-color .2s ease,background .2s ease}.nav--scrolled{border-bottom-color:var(--border)}.nav__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);height:4rem}.nav__brand{font-weight:var(--fw-semibold);font-size:var(--fs-sm);letter-spacing:var(--tracking-tight);white-space:nowrap}.nav__brand-dot{margin-inline:.4rem;color:var(--text-muted)}.nav__brand-role{color:var(--text-secondary);font-weight:var(--fw-regular)}.nav__links{display:flex;align-items:center;gap:var(--sp-5);margin-left:auto;margin-right:var(--sp-5)}.nav__link{font-size:var(--fs-sm);color:var(--text-secondary);transition:color .15s ease}.nav__link:hover{color:var(--text)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.1rem;height:2.1rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);cursor:pointer;flex-shrink:0;transition:background .15s ease,color .15s ease,border-color .15s ease}.theme-toggle:hover{color:var(--text);background:var(--surface-hover);border-color:var(--border-strong)}.hero{padding-block:clamp(var(--sp-8),12vh,var(--sp-10)) var(--sp-9)}.hero__eyebrow{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--sp-4)}.hero__name{font-size:var(--fs-hero);font-weight:var(--fw-bold);letter-spacing:-.035em;margin-bottom:var(--sp-2)}.hero__title{font-size:var(--fs-lg);color:var(--text-secondary);font-weight:var(--fw-medium);margin-bottom:var(--sp-5)}.hero__tagline{max-width:40rem;font-size:var(--fs-md);color:var(--text-secondary);line-height:var(--lh-base);margin-bottom:var(--sp-6)}.hero__actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-bottom:var(--sp-6)}.hero__socials{display:flex;flex-wrap:wrap;gap:var(--sp-5)}.social{display:inline-flex;align-items:center;gap:.45rem;font-size:var(--fs-sm);color:var(--text-secondary);transition:color .15s ease}.social:hover{color:var(--text)}.social__ext{color:var(--text-muted)}.about{display:grid;grid-template-columns:14rem 1fr;gap:var(--sp-6)}.about__header{position:sticky;top:5rem;align-self:start}.about__header .eyebrow{margin-bottom:var(--sp-4)}.about__header .section-title{margin-bottom:0;font-size:var(--fs-xl)}.about__body{max-width:42rem}.about__p{color:var(--text-secondary);margin-bottom:var(--sp-4)}.about__p em{color:var(--text);font-style:italic}.about__interests{margin-top:var(--sp-5)}.about__interests-label{display:block;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--sp-3)}.about__tags{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.pill{display:inline-flex;align-items:center;gap:.4em;font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-medium);letter-spacing:.02em;padding:.18rem .55rem;border-radius:100px;border:1px solid var(--border-strong);color:var(--text-secondary);white-space:nowrap}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.pill--published{color:#1a7f4b;border-color:color-mix(in srgb,#1a7f4b 30%,transparent);background:color-mix(in srgb,#1a7f4b 8%,transparent)}.pill--in-submission{color:#9a6a00;border-color:color-mix(in srgb,#9a6a00 30%,transparent);background:color-mix(in srgb,#9a6a00 9%,transparent)}.pill--in-preparation{color:var(--text-muted)}:root[data-theme=dark] .pill--published{color:#4ed089}:root[data-theme=dark] .pill--in-submission{color:#e3b341}.flagship{border:1px solid var(--border);border-radius:var(--radius-lg);background:linear-gradient(180deg,var(--bg-subtle),var(--surface));padding:clamp(var(--sp-5),4vw,var(--sp-7));box-shadow:var(--shadow-sm)}.flagship__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-4)}.flagship__kicker{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--accent);margin-bottom:var(--sp-2)}.flagship__title{font-size:var(--fs-2xl)}.flagship__title a{display:inline-flex;align-items:center;gap:.3em}.flagship__url{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-muted);white-space:nowrap;transition:color .15s ease}.flagship__url:hover{color:var(--accent)}.flagship__blurb{max-width:44rem;color:var(--text-secondary);margin-bottom:var(--sp-6)}.stages{display:flex;flex-direction:column}.stage{display:grid;grid-template-columns:1.5rem 1fr;gap:var(--sp-4)}.stage__rail{position:relative;display:flex;justify-content:center}.stage__rail:before{content:"";position:absolute;top:0;bottom:0;width:1.5px;background:var(--border-strong)}.stage:first-child .stage__rail:before{top:.5rem}.stage:last-child .stage__rail:before{bottom:calc(100% - .5rem)}.stage__node{position:relative;margin-top:.35rem;width:11px;height:11px;border-radius:50%;background:var(--bg);border:2px solid var(--border-strong);z-index:1}.stage--published .stage__node{background:#1a7f4b;border-color:#1a7f4b}.stage--in-submission .stage__node{background:#d8a32a;border-color:#d8a32a}.stage__content{padding-bottom:var(--sp-6)}.stage:last-child .stage__content{padding-bottom:0}.stage__meta{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-2)}.stage__num{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-muted)}.stage__title{font-size:var(--fs-md);line-height:var(--lh-snug);margin-bottom:var(--sp-1)}.stage__title a{display:inline}.stage__title a svg{display:inline;vertical-align:-2px;margin-left:2px}.stage__venue{font-size:var(--fs-sm);color:var(--accent);margin-bottom:var(--sp-2)}.stage__summary{font-size:var(--fs-base);color:var(--text-secondary);max-width:44rem}.other-research{margin-top:var(--sp-7)}.other-research__label{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--sp-4);font-weight:var(--fw-medium)}.research-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-4)}.rcard{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:var(--sp-5);transition:border-color .15s ease,transform .15s ease}.rcard:hover{border-color:var(--border-strong)}.rcard__top{margin-bottom:var(--sp-3)}.rcard__title{font-size:var(--fs-md);line-height:var(--lh-snug);margin-bottom:var(--sp-2)}.rcard__title a svg{display:inline;vertical-align:-1px;margin-left:2px}.rcard__venue{font-size:var(--fs-sm);color:var(--accent);margin-bottom:var(--sp-3)}.rcard__summary{font-size:var(--fs-base);color:var(--text-secondary);margin-bottom:var(--sp-4)}.rcard__tags{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.pubs{display:flex;flex-direction:column}.pub{display:grid;grid-template-columns:4rem 1fr;gap:var(--sp-4);padding-block:var(--sp-5);border-top:1px solid var(--border)}.pub:first-child{border-top:none;padding-top:0}.pub__year{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-muted);padding-top:.15rem}.pub__body{display:block}.pub__body--link{transition:opacity .15s ease}.pub__title{font-size:var(--fs-md);line-height:var(--lh-snug);margin-bottom:var(--sp-2)}.pub__ext{display:inline;vertical-align:-2px;margin-left:4px;color:var(--text-muted);transition:color .15s ease}.pub__body--link:hover .pub__title,.pub__body--link:hover .pub__ext{color:var(--accent)}.pub__meta{font-size:var(--fs-sm);color:var(--text-secondary);display:flex;flex-wrap:wrap;gap:.4rem}.pub__sep{color:var(--text-muted)}.pub__type{margin-left:.2rem;padding-block:.05rem}.pub__venue{color:var(--text-secondary)}.pub__status{display:inline-block;margin-top:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted)}.exp{display:flex;flex-direction:column}.job{display:grid;grid-template-columns:9rem 1fr;gap:var(--sp-5);padding-block:var(--sp-6);border-top:1px solid var(--border)}.job:first-child{border-top:none;padding-top:0}.job__period{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-muted)}.job__org{font-size:var(--fs-md);margin-bottom:.1rem}.job__role{font-size:var(--fs-sm);color:var(--accent);margin-bottom:var(--sp-3)}.job__points{display:flex;flex-direction:column;gap:var(--sp-2);max-width:44rem}.job__points li{position:relative;padding-left:var(--sp-4);color:var(--text-secondary);font-size:var(--fs-base)}.job__points li:before{content:"";position:absolute;left:2px;top:.65em;width:5px;height:5px;border-radius:50%;background:var(--border-strong)}.job__stack{margin-top:var(--sp-3);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted)}.edu{margin-top:var(--sp-7)}.edu__label{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-muted);font-weight:var(--fw-medium);margin-bottom:var(--sp-4)}.edu__list{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-5)}.edu__item{display:flex;flex-direction:column;gap:.15rem}.edu__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3)}.edu__degree{font-weight:var(--fw-semibold);color:var(--text)}.edu__year{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-muted)}.edu__school{font-size:var(--fs-sm);color:var(--text-secondary)}.edu__detail{font-size:var(--fs-sm);color:var(--text-muted)}.projects{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-4)}.project{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-5);background:var(--surface);transition:border-color .15s ease,transform .15s ease}.project--link:hover{border-color:var(--border-strong);transform:translateY(-2px)}.project__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-2);margin-bottom:var(--sp-2)}.project__name{font-size:var(--fs-base);font-weight:var(--fw-semibold)}.project__year{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted)}.project__summary{font-size:var(--fs-sm);color:var(--text-secondary);flex:1}.project__link{display:inline-flex;align-items:center;gap:.3rem;margin-top:var(--sp-4);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--accent)}.contact__title{font-size:var(--fs-2xl);max-width:32rem;margin-bottom:var(--sp-5)}.contact__email{display:inline-block;font-size:var(--fs-lg);color:var(--accent);margin-bottom:var(--sp-6);transition:color .15s ease}.contact__email:hover{color:var(--accent-hover)}.contact__links{display:flex;flex-wrap:wrap;gap:var(--sp-5)}.footer{margin-top:var(--sp-9);border-top:1px solid var(--border);padding-block:var(--sp-5)}.footer__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);font-size:var(--fs-sm);color:var(--text-muted)}.footer__meta{font-family:var(--font-mono);font-size:var(--fs-xs)}@media (max-width: 800px){.about{grid-template-columns:1fr;gap:var(--sp-4)}.about__header{position:static}.research-grid,.projects,.edu__list{grid-template-columns:1fr}}@media (max-width: 640px){.nav__links{display:none}.flagship__head{flex-direction:column;gap:var(--sp-2)}.job,.pub{grid-template-columns:1fr;gap:var(--sp-2)}.footer__inner{flex-direction:column;align-items:flex-start;gap:var(--sp-2)}}
