:root{--bg:#fbfaf7;--surface:#fff;--ink:#15171c;--muted:#5d6370;--faint:#8a909b;--line:#e7e4dd;--accent:#0f766e;--accent-ink:#fff;--accent-soft:#e5f2ef;--c0:#ebedf0;--c1:#9be9a8;--c2:#40c463;--c3:#30a14e;--c4:#216e39;--radius:14px;--shadow:0 1px 2px #14141e0a, 0 4px 16px #14141e0a;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e1013;--surface:#15181d;--ink:#e9e7e2;--muted:#a0a6b1;--faint:#757c88;--line:#262a31;--accent:#2dd4bf;--accent-ink:#062a26;--accent-soft:#11302c;--c0:#1d2229;--c1:#0e4429;--c2:#006d32;--c3:#26a641;--c4:#39d353;--shadow:none;color-scheme:dark}}:root[data-theme=dark]{--bg:#0e1013;--surface:#15181d;--ink:#e9e7e2;--muted:#a0a6b1;--faint:#757c88;--line:#262a31;--accent:#2dd4bf;--accent-ink:#062a26;--accent-soft:#11302c;--c0:#1d2229;--c1:#0e4429;--c2:#006d32;--c3:#26a641;--c4:#39d353;--shadow:none;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:72px}body{background:var(--bg);color:var(--ink);font-feature-settings:"ss01";-webkit-font-smoothing:antialiased;margin:0;font:400 16px/1.6 Plus Jakarta Sans,system-ui,-apple-system,Segoe UI,sans-serif}img{max-width:100%;display:block}a{color:inherit;text-decoration-color:color-mix(in srgb, currentColor 35%, transparent);text-underline-offset:3px}a:hover{color:var(--accent)}p{margin:0}h1,h2,h3{letter-spacing:-.02em;margin:0;line-height:1.2}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.muted{color:var(--faint)}.wrap{width:min(1080px,100% - 32px);margin-inline:auto}.masthead{z-index:10;background:color-mix(in srgb, var(--bg) 85%, transparent);backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0}.masthead__inner{align-items:center;gap:24px;height:60px;display:flex}.brand{letter-spacing:-.01em;font-weight:700;text-decoration:none}.masthead nav{scrollbar-width:none;margin-left:auto;overflow-x:auto}.masthead nav::-webkit-scrollbar{display:none}.masthead ul{gap:22px;margin:0;padding:0;list-style:none;display:flex}.masthead nav a{color:var(--muted);white-space:nowrap;font-size:14px;font-weight:500;text-decoration:none}.masthead nav a:hover{color:var(--ink)}.theme{border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--muted);cursor:pointer;border-radius:50%;flex:none;place-items:center;display:grid}.theme:hover{color:var(--ink)}.hero{grid-template-columns:280px 1fr;align-items:center;gap:56px;padding:72px 0 40px;display:grid}.hero__photo img{object-fit:cover;width:280px;height:280px;box-shadow:var(--shadow);border-radius:22px}.eyebrow{color:var(--accent);letter-spacing:.01em;margin-bottom:10px;font-size:14px;font-weight:600}h1{font-size:clamp(34px,5vw,52px);font-weight:800}.hero__lede{max-width:34ch;margin:14px 0 16px;font-size:clamp(18px,2.2vw,22px);font-weight:500;line-height:1.45}.hero__bio{color:var(--muted);max-width:62ch;margin-bottom:10px}.links{flex-wrap:wrap;gap:10px;margin:22px 0 0;padding:0;list-style:none;display:flex}.btn{border:1px solid var(--line);background:var(--surface);border-radius:999px;align-items:center;height:40px;padding:0 16px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--ink);color:var(--ink)}.btn--primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn--primary:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.stats{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin:0;display:grid;overflow:hidden}.stat{border-right:1px solid var(--line);margin-right:-1px;padding:20px 22px}.stat dt{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:28px;font-weight:800}.stat dd{color:var(--muted);margin:2px 0 0;font-size:14px;line-height:1.4}.section{padding:88px 0 0}.section__head{margin-bottom:28px}.section__head h2{font-size:28px;font-weight:800}.section__head p{color:var(--muted);margin-top:6px}.subhead{margin:48px 0 16px;font-size:18px;font-weight:700}.cards{grid-template-columns:repeat(2,1fr);gap:20px;display:grid}.cards--compact{grid-template-columns:repeat(3,1fr);gap:16px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:16px;padding:26px;display:flex}.card--compact{gap:12px;padding:20px}.card__org{color:var(--accent);font-size:13px;font-weight:600}.card__ctx{color:var(--faint);font-weight:500}.card__title{margin-top:6px;font-size:20px;font-weight:700}.card--compact .card__title{font-size:16px}.card__summary{color:var(--muted);font-size:15px}.card--compact .card__summary{font-size:14px}.card__note{color:var(--faint);margin-top:-4px;font-size:12px;font-style:italic}.card__fit{background:var(--accent-soft);border-radius:10px;padding:10px 12px;font-size:14px;font-weight:600}.card__foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:auto;padding-top:4px;display:flex}.card__link{color:var(--muted);white-space:nowrap;font-size:13px;font-weight:600;text-decoration:none}.card__link:hover{color:var(--accent)}.metrics{border-block:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:14px;margin:0;padding:16px 0;display:grid}.metric__v{letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:24px;font-weight:800}.metric__l{color:var(--muted);margin:2px 0 0;font-size:12.5px;line-height:1.4}.card--compact .metrics{grid-template-columns:1fr;gap:8px;padding:12px 0}.card--compact .metric{align-items:baseline;gap:10px;display:flex}.card--compact .metric__v{min-width:4.6em;font-size:17px}.card--compact .metric__l{margin:0}.tech{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.tech li{border:1px solid var(--line);height:26px;color:var(--muted);border-radius:999px;align-items:center;gap:6px;padding:0 9px;font-size:12px;font-weight:500;display:inline-flex}.tech svg{flex:none}.tech__dot{background:var(--faint);border-radius:50%;width:6px;height:6px}.timeline{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.timeline li{border-bottom:1px solid var(--line);grid-template-columns:180px 1fr;gap:24px;padding:18px 0;display:grid}.timeline__when{color:var(--faint);font-variant-numeric:tabular-nums;padding-top:1px;font-size:14px}.timeline__line{color:var(--muted);margin-top:2px;font-size:15px}.pubs{grid-template-columns:repeat(2,1fr);gap:16px;margin:0;padding:0;list-style:none;display:grid}.pub{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:22px}.pub__title{font-size:16px;font-weight:700}.pub__venue{color:var(--accent);margin-top:4px;font-size:13px;font-weight:600}.pub__summary{color:var(--muted);margin-top:10px;font-size:14px}.pub__metrics{color:var(--muted);flex-wrap:wrap;gap:6px 18px;margin:12px 0 0;padding:0;font-size:13px;list-style:none;display:flex}.pub__metrics strong{color:var(--ink);font-variant-numeric:tabular-nums;font-size:15px}.awards{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.awards li{border-bottom:1px solid var(--line);grid-template-columns:180px 1fr;gap:24px;padding:16px 0;display:grid}.awards__year{color:var(--faint);font-variant-numeric:tabular-nums;font-size:14px}.awards__title{font-weight:600}.awards__detail{color:var(--muted);font-size:14px}.orgs{flex-wrap:wrap;gap:8px;margin:14px 0 0;padding:0;list-style:none;display:flex}.orgs a{border:1px solid var(--line);background:var(--surface);border-radius:8px;align-items:center;gap:8px;height:32px;padding:0 12px 0 6px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.orgs img{border-radius:4px}.contrib{--cell:11px;--gap:3px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:22px}.contrib__stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;margin-bottom:22px;display:grid}.contrib__stats strong{font-variant-numeric:tabular-nums;font-size:22px;font-weight:800;display:block}.contrib__stats span{color:var(--muted);font-size:13px}.contrib__scroll{padding-bottom:6px;overflow-x:auto;container-type:inline-size}.contrib__grid{--cell:max(10px, min(18px, calc((100cqw - 34px - (var(--weeks) - 1) * var(--gap)) / var(--weeks))));grid-template-rows:auto auto;grid-template-columns:28px auto;gap:4px 6px;width:max-content;display:grid}.contrib__months{grid-column:2;grid-template-columns:repeat(var(--weeks), var(--cell));column-gap:var(--gap);color:var(--faint);height:14px;font-size:11px;display:grid}.contrib__months span{white-space:nowrap}.contrib__days{grid-row:2;grid-template-rows:repeat(7, var(--cell));row-gap:var(--gap);font-size:10px;line-height:var(--cell);color:var(--faint);display:grid}.contrib__cells{grid-area:2/2;grid-auto-flow:column;grid-template-rows:repeat(7, var(--cell));grid-auto-columns:var(--cell);gap:var(--gap);display:grid}.contrib i{width:var(--cell);height:var(--cell);border-radius:2px;display:block}.contrib i.empty{visibility:hidden}.l0{background:var(--c0)}.l1{background:var(--c1)}.l2{background:var(--c2)}.l3{background:var(--c3)}.l4{background:var(--c4)}.contrib__foot{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:14px;font-size:13px;display:flex}.contrib__foot a{font-weight:600;text-decoration:none}.contrib__legend{align-items:center;gap:3px;display:inline-flex}.contrib__legend i{width:11px;height:11px;display:inline-block}.contrib__legend{gap:4px}.footer{border-top:1px solid var(--line);margin-top:104px}.footer__inner{color:var(--faint);flex-wrap:wrap;justify-content:space-between;gap:12px;padding:28px 0 40px;font-size:14px;display:flex}.footer a{color:var(--muted)}@media (width<=960px){.cards--compact{grid-template-columns:repeat(2,1fr)}}@media (width<=720px){.masthead nav{display:none}.theme{margin-left:auto}.hero{grid-template-columns:1fr;gap:24px;padding:40px 0 28px}.hero__photo img{border-radius:18px;width:160px;height:160px}.cards,.cards--compact,.pubs{grid-template-columns:1fr}.card{padding:20px}.metrics{grid-template-columns:1fr;gap:10px}.metric{align-items:baseline;gap:12px;display:flex}.metric__v{min-width:4.6em;font-size:20px}.metric__l{margin:0}.timeline li,.awards li{grid-template-columns:1fr;gap:2px}.section{padding-top:64px}.stats{grid-template-columns:repeat(2,1fr)}.stat{border-bottom:1px solid var(--line);margin-bottom:-1px;padding:16px}.stat dt{font-size:22px}.stat dd{font-size:13px}.contrib{padding:16px}.contrib__stats{grid-template-columns:repeat(2,1fr)}}
