@font-face{font-family:DM Sans;font-style:normal;font-weight:300;font-display:swap;src:url(../media/c3cb240f9c892514-s.3z_x6eowsw16y.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:300;font-display:swap;src:url(../media/5c285b27cdda1fe8-s.p.2_mbdogr7ni8i.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/c3cb240f9c892514-s.3z_x6eowsw16y.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/5c285b27cdda1fe8-s.p.2_mbdogr7ni8i.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/c3cb240f9c892514-s.3z_x6eowsw16y.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5c285b27cdda1fe8-s.p.2_mbdogr7ni8i.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/c3cb240f9c892514-s.3z_x6eowsw16y.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/5c285b27cdda1fe8-s.p.2_mbdogr7ni8i.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans Fallback;src:local(Arial);ascent-override:94.9%;descent-override:29.66%;line-gap-override:0.0%;size-adjust:104.53%}.dm_sans_79d9740c-module__8xworW__className{font-family:DM Sans,DM Sans Fallback;font-style:normal}.dm_sans_79d9740c-module__8xworW__variable{--font-dm-sans:"DM Sans", "DM Sans Fallback"}
@font-face{font-family:DM Serif Display;font-style:italic;font-weight:400;font-display:swap;src:url(../media/26a0a19eb96a029d-s.2ajvp03xtic_0.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Serif Display;font-style:italic;font-weight:400;font-display:swap;src:url(../media/fad69795a077455b-s.p.0t285orp4l5or.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Serif Display;font-style:normal;font-weight:400;font-display:swap;src:url(../media/8dd8a3188b79fd8f-s.2o9_j983y90g0.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Serif Display;font-style:normal;font-weight:400;font-display:swap;src:url(../media/0c8f209abc35ee02-s.p.0c0g8ifvh7k7-.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Serif Display Fallback;src:local(Times New Roman);ascent-override:94.37%;descent-override:30.51%;line-gap-override:0.0%;size-adjust:109.78%}.dm_serif_display_fbc10fa1-module__LwA81a__className{font-family:DM Serif Display,DM Serif Display Fallback;font-weight:400}.dm_serif_display_fbc10fa1-module__LwA81a__variable{--font-dm-serif:"DM Serif Display", "DM Serif Display Fallback"}
@font-face{font-family:DM Mono;font-style:normal;font-weight:300;font-display:swap;src:url(../media/ba8e772932784a28-s.1ma0lyyj3vj55.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-weight:300;font-display:swap;src:url(../media/7546fe8f902b88b8-s.p.1agee208_hwfr.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/b12e986493c137cf-s.2njitm-prmz2_.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/36363bfb06833f56-s.p.38hmww4cj4vme.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b2fa3ef4ca165ab4-s.12_ml6bnugnre.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a73419dd2ba2d841-s.p.2yee423r7ahpo.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono Fallback;src:local(Arial);ascent-override:73.71%;descent-override:23.03%;line-gap-override:0.0%;size-adjust:134.59%}.dm_mono_d911da9a-module__ksbUaa__className{font-family:DM Mono,DM Mono Fallback;font-style:normal}.dm_mono_d911da9a-module__ksbUaa__variable{--font-dm-mono:"DM Mono", "DM Mono Fallback"}
*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--r:#7b70d0;--i:#29a074;--p:#df7a35;--serif:var(--font-dm-serif), Georgia, serif;--mono:var(--font-dm-mono), "Courier New", monospace;--sans:var(--font-dm-sans), system-ui, sans-serif;--max:1060px;--px:clamp(20px, 4vw, 52px);--bg:#f3f2ed;--bg-alt:#fff;--fg:#131210;--fg2:#5d5c56;--fg3:#9c9b92;--bdr:#00000015;--bdr2:#00000024;--nav-bg:#f3f2ede0}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0b0b09;--bg-alt:#151512;--fg:#edede8;--fg2:#87877e;--fg3:#4e4e47;--bdr:#ffffff10;--bdr2:#ffffff1d;--nav-bg:#0b0b09e0}}[data-theme=dark]{--bg:#0b0b09;--bg-alt:#151512;--fg:#edede8;--fg2:#87877e;--fg3:#4e4e47;--bdr:#ffffff10;--bdr2:#ffffff1d;--nav-bg:#0b0b09e0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;line-height:1.65}a{color:inherit;text-decoration:none}a:hover{opacity:.72}img{display:block}@keyframes up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.a1{animation:.65s both up}.a2{animation:.65s .13s both up}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.a1,.a2,.pulse:after{animation:none}}.container{max-width:var(--max);margin:0 auto}.section{background:var(--bg);padding:96px var(--px)}.section-alt{background:var(--bg-alt)}.page-top{min-height:100svh;padding-top:120px}.page-back{font-family:var(--mono);color:var(--fg3);margin-top:48px;font-size:12px}.page-back a{color:var(--fg2)}.eyebrow{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg3);margin-bottom:14px;font-size:11px}.section-title{font-family:var(--serif);letter-spacing:-.02em;font-size:clamp(30px,4vw,46px);line-height:1.06}.mono{font-family:var(--mono)}.tag{font-family:var(--mono);letter-spacing:.02em;border:1px solid var(--bdr2);color:var(--fg2);border-radius:4px;align-items:center;padding:3px 9px;font-size:11px;display:inline-flex}.tags{flex-wrap:wrap;gap:6px;display:flex}.hl{color:var(--fg);font-weight:500}.nav{z-index:99;padding:0 var(--px);transition:background .22s,border .22s,-webkit-backdrop-filter .22s,backdrop-filter .22s;position:fixed;top:0;left:0;right:0}.nav-on{background:var(--nav-bg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid var(--bdr)}.nav-inner{max-width:var(--max);justify-content:space-between;align-items:center;gap:16px;height:56px;margin:0 auto;display:flex}.nav-brand{font-family:var(--mono);letter-spacing:.07em;color:var(--fg);align-items:center;gap:9px;font-size:13px;font-weight:500;display:inline-flex}.brand-mark{width:auto;height:17px}.brand-mark-dark{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .brand-mark-light{display:none}:root:not([data-theme=light]) .brand-mark-dark{display:block}}[data-theme=dark] .brand-mark-light{display:none}[data-theme=dark] .brand-mark-dark{display:block}.nav-links{align-items:center;gap:28px;display:flex}.nav-link{color:var(--fg2);font-size:13px}.theme-btn{font-family:var(--mono);color:var(--fg3);border:1px solid var(--bdr2);cursor:pointer;letter-spacing:.04em;background:0 0;border-radius:5px;flex-shrink:0;padding:4px 10px;font-size:12px}.hero{min-height:100svh;max-width:var(--max);padding:80px var(--px) 64px;grid-template-columns:55fr 45fr;align-items:center;gap:clamp(32px,5vw,72px);margin:0 auto;display:grid}.hero-text{flex-direction:column;gap:28px;display:flex}.hero-title{font-family:var(--serif);letter-spacing:-.025em;font-size:clamp(58px,8.5vw,98px);line-height:.92}.hero-lede{color:var(--fg2);max-width:400px;font-size:18px;line-height:1.55}.hero-jump{flex-wrap:wrap;gap:22px;display:flex}.jump{font-family:var(--mono);letter-spacing:.02em;color:var(--fg2);align-items:center;gap:7px;font-size:12px;display:flex}.dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:7px;height:7px}.hero-socials{border-top:1px solid var(--bdr);flex-wrap:wrap;gap:24px;padding-top:20px;display:flex}.hero-social{font-family:var(--mono);color:var(--fg3);font-size:12px}.hero-media{justify-content:flex-end;align-items:center;display:flex}.hero-photo-wrap{width:min(100%,360px);position:relative}.hero-photo{aspect-ratio:1/1.18;object-fit:cover;object-position:center top;border-radius:10px;width:100%;height:auto}.hero-photo-meta{background:linear-gradient(to top, var(--bg-alt) 55%, transparent);border-radius:0 0 10px 10px;flex-direction:column;gap:5px;padding:40px 20px 18px;display:flex;position:absolute;bottom:0;left:0;right:0}.hero-photo-meta p{font-family:var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--fg3);font-size:10.5px}.hero-photo-meta .hero-photo-now{color:var(--fg2);align-items:center;gap:8px;display:flex}.pulse{background:var(--i);border-radius:50%;flex-shrink:0;width:6px;height:6px;position:relative}.pulse:after{content:"";border:1px solid var(--i);border-radius:50%;animation:2.6s ease-out infinite pulse-ring;position:absolute;inset:-4px}@keyframes pulse-ring{0%{opacity:.7;transform:scale(.55)}70%,to{opacity:0;transform:scale(1.15)}}.about-grid{grid-template-columns:1fr 1fr;align-items:start;gap:clamp(32px,5vw,80px);display:grid}.about-heading{margin-bottom:28px}.about-body{color:var(--fg2);flex-direction:column;gap:16px;font-size:16px;line-height:1.7;display:flex}.stats{background:var(--bdr);border:1px solid var(--bdr);border-radius:10px;grid-template-columns:1fr 1fr;gap:1px;display:grid;overflow:hidden}.stat{background:var(--bg-alt);padding:28px 24px}.stat-num{font-family:var(--serif);color:var(--accent);margin-bottom:8px;font-size:46px;line-height:1}.stat-label{color:var(--fg2);font-size:13px;line-height:1.4}.timeline{border-left:2px solid var(--bdr2);flex-direction:column;margin-left:8px;padding-left:36px;display:flex}.timeline-item{padding-bottom:52px;position:relative}.timeline-item:last-child{padding-bottom:0}.timeline-dot{background:var(--bdr2);border:3px solid var(--bg);border-radius:50%;width:12px;height:12px;position:absolute;top:5px;left:-44px}.timeline-dot.is-major{background:var(--accent);width:14px;height:14px}.timeline-date{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--fg3);margin-bottom:6px;font-size:11px}.timeline-role{margin-bottom:3px;font-size:20px;font-weight:600}.timeline-org{color:var(--accent,var(--fg2));font-size:15px;font-weight:500}.timeline-org.has-desc{margin-bottom:14px}.timeline-org-note{color:var(--fg3);font-size:14px;font-weight:400}.timeline-desc{color:var(--fg2);max-width:620px;margin-bottom:14px;font-size:15px;line-height:1.65}.pub-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:52px;display:flex}.pub-head-link{font-family:var(--mono);color:var(--fg3);white-space:nowrap;flex-shrink:0;font-size:12px}.pub-list{flex-direction:column;display:flex}.pub{border-top:1px solid var(--bdr);grid-template-columns:84px 1fr auto;align-items:start;gap:16px 20px;padding:24px 0;display:grid}.pub-list .pub:last-child{border-bottom:1px solid var(--bdr)}.pub-media{flex-direction:column;align-items:center;gap:14px;display:flex}.pub-thumb{object-fit:cover;border:2px solid var(--bg-alt);width:72px;height:72px;box-shadow:0 0 0 1.5px color-mix(in srgb, var(--r) 55%, var(--bdr)), 0 0 0 5px var(--bg-alt), 0 0 0 6.5px color-mix(in srgb, var(--r) 22%, var(--bdr));border-radius:50%}.pub-year{font-family:var(--mono);letter-spacing:.06em;color:var(--fg3);font-size:10.5px}.pub-title-row{flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.pub-title{margin-bottom:4px;font-size:15px;font-weight:500;line-height:1.45}.pub-title-row .pub-title{margin-bottom:0}.pub-award{font-family:var(--mono);background:var(--r);color:#fff;letter-spacing:.03em;white-space:nowrap;border-radius:3px;flex-shrink:0;padding:2px 7px;font-size:10px}.pub-authors{color:var(--fg2);margin-bottom:4px;font-size:13px;font-style:italic}.pub-authors .me{color:var(--fg);font-style:normal}.pub-venue{font-family:var(--mono);color:var(--fg3);font-size:11px}.pub-venue.has-press{margin-bottom:4px}.pub-press{color:var(--fg3);font-size:12px;font-style:italic}.pub-links{flex-direction:column;align-items:flex-end;gap:6px;padding-top:2px;display:flex}.pub-link{font-family:var(--mono);color:var(--r);white-space:nowrap;font-size:11px}.projects-lede{color:var(--fg2);max-width:500px;margin-bottom:48px;font-size:16px}.projects{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.card{background:var(--bg-alt);border:1px solid var(--bdr);border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.card-accent{background:var(--accent);height:3px}.card-banner{aspect-ratio:16/9;background:color-mix(in srgb, var(--accent) 12%, var(--bg));position:relative;overflow:hidden}.card-banner-img{object-fit:cover;object-position:center;width:100%;height:100%;display:block}.card-banner.is-logo{background:color-mix(in srgb, var(--accent) 10%, var(--bg-alt))}.card-banner.is-logo .card-banner-img{object-fit:contain;padding:18% 22%}.card-banner-fallback{background:linear-gradient(145deg, color-mix(in srgb, var(--accent) 28%, transparent), color-mix(in srgb, var(--accent) 6%, var(--bg)));place-items:center;width:100%;height:100%;display:grid}.card-banner-fallback span{font-family:var(--serif);letter-spacing:-.02em;color:var(--accent);opacity:.85;font-size:clamp(28px,4vw,36px)}.card-body{flex-direction:column;flex:1;gap:14px;padding:28px 24px;display:flex}.card-kicker{font-family:var(--mono);color:var(--fg3);letter-spacing:.07em;text-transform:uppercase;margin-bottom:10px;font-size:10.5px}.card-title{margin-bottom:8px;font-size:20px;font-weight:600}.card-desc{color:var(--fg2);font-size:14px;line-height:1.65}.card-link{font-family:var(--mono);color:var(--accent);margin-top:auto;font-size:12px}.updates{max-width:680px}.update{border-top:1px solid var(--bdr);grid-template-columns:116px 1fr;gap:20px;padding:20px 0;display:grid}.update:last-child{border-bottom:1px solid var(--bdr)}.update-date{font-family:var(--mono);color:var(--fg3);padding-top:2px;font-size:12px}.update-text{color:var(--fg2);font-size:15px}.update-text a{color:var(--r)}.contact-grid{grid-template-columns:1fr 1fr;align-items:start;gap:clamp(32px,5vw,80px);display:grid}.contact-title{margin-bottom:20px}.contact-lede{color:var(--fg2);max-width:360px;font-size:16px;line-height:1.7}.contact-row{border-top:1px solid var(--bdr);justify-content:space-between;align-items:center;padding:20px 0;display:flex}.contact-row:last-child{border-bottom:1px solid var(--bdr)}.contact-label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.07em;color:var(--fg3);margin-bottom:4px;font-size:10.5px}.contact-value{font-size:15px}.contact-arrow{font-family:var(--mono);color:var(--fg3);font-size:13px}.footer{background:var(--bg);padding:32px var(--px);border-top:1px solid var(--bdr)}.footer-inner{max-width:var(--max);justify-content:space-between;align-items:center;gap:16px;margin:0 auto;display:flex}.footer-inner p{font-family:var(--mono);color:var(--fg3);font-size:12px}@media (max-width:900px){.projects{grid-template-columns:1fr 1fr}}@media (max-width:760px){.section{padding:72px var(--px)}.nav-links{gap:18px}.nav-link{display:none}.hero{grid-template-columns:1fr;min-height:auto;padding-top:104px}.hero-media{justify-content:flex-start}.about-grid,.contact-grid,.projects{grid-template-columns:1fr}.pub{grid-template-columns:84px 1fr;gap:12px 16px}.pub-media{grid-area:1/1}.pub-body{grid-area:1/2}.pub-links{flex-direction:row;grid-area:2/1/3/-1;align-items:center;gap:16px}.update{grid-template-columns:1fr;gap:6px}.footer-inner{flex-direction:column;align-items:flex-start;gap:6px}}
