@font-face{font-family:"source sans 3";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/source-sans-3/source-sans-3-latin-normal-v20.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:"source sans 3";font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/source-sans-3/source-sans-3-latin-italic-v20.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:"source serif 4";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/source-serif-4/source-serif-4-latin-normal-v15.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}:root{--bg:#ffffff;--heading:#1e293b;--text:#374151;--muted:#626e7c;--link:#245e83;--link-hover:#174765;--link-underline:#245e8340;--rule:#e1e5e7;--selection-bg:#dcebf0;--font-heading:"Source Serif 4", Georgia, "Times New Roman", serif;--font-sans:"Source Sans 3", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", "PingFang SC",
    "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Noto Sans SC",
    "WenQuanYi Micro Hei", sans-serif;--font-sans-zh:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC",
    "Noto Sans SC", "WenQuanYi Micro Hei", var(--font-sans);--font-size-small:0.875rem;--font-size-meta:0.9375rem;--font-size-body:1rem;--font-size-intro:clamp(1rem, 0.9375rem + 0.2vw, 1.0625rem);--font-size-title:clamp(1.0625rem, 1rem + 0.25vw, 1.125rem);--font-size-section:1.25rem;--font-size-name:clamp(2rem, 1.6rem + 1.5vw, 2.5rem);--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{max-width:58rem;margin:0 auto;padding:3.5rem 1.5rem 2rem;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--font-size-body);font-weight:var(--font-weight-regular);font-optical-sizing:auto;font-kerning:normal;line-height:1.7}:lang(zh-hans),:lang(zh-cn){font-family:var(--font-sans-zh)}::selection{color:var(--heading);background:var(--selection-bg)}a{color:var(--link);text-decoration:underline;text-decoration-color:var(--link-underline);text-decoration-thickness:1px;text-underline-offset:3px;transition:color 180ms ease,text-decoration-color 180ms ease}a:focus-visible{color:var(--link-hover);text-decoration-color:initial;outline:2px solid var(--link);outline-offset:4px}h1,h2,h3,p{margin:0}h1,h2,h3{color:var(--heading)}p+p{margin-top:1rem}ul{margin:0;padding:0;list-style:none}ol{margin:0;padding-left:1.1rem}li+li{margin-top:.4rem}.profile{display:grid;grid-template-columns:minmax(0,1fr)12rem;gap:1.25rem 3rem;align-items:start}.profile-heading,.bio,.links{grid-column:1}h1{font-family:var(--font-heading);font-size:var(--font-size-name);font-weight:var(--font-weight-semibold);line-height:1.15;letter-spacing:-.025em}h1 span{display:inline-block;margin-left:.5rem;color:var(--muted);font-size:1.125rem;font-weight:var(--font-weight-regular);line-height:1.5;letter-spacing:0;vertical-align:middle}.affiliation{margin-top:.625rem;color:var(--muted);font-size:var(--font-size-meta);line-height:1.6}.bio{font-size:var(--font-size-intro);line-height:1.75}.bio p{text-wrap:pretty}.portrait-frame{grid-column:2;grid-row:1/4;align-self:center;width:100%}.portrait{display:block;width:100%;height:auto;border-radius:2px}.links,.pub-links{display:flex;flex-wrap:wrap;gap:.35rem 1.25rem;font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);line-height:1.5}.links a,.pub-links a{display:inline-flex;align-items:center;gap:.35rem;padding-block:.1rem}.link-icon{width:1em;height:1em;flex-shrink:0;transition:transform 180ms ease}.section{display:grid;grid-template-columns:minmax(0,1fr);gap:.75rem;margin-top:2.25rem}.section:first-of-type{margin-top:1.75rem;padding-top:1.5rem;border-top:1px solid var(--rule)}.section>h2{font-family:var(--font-heading);font-size:var(--font-size-section);font-weight:var(--font-weight-semibold);line-height:1.4;letter-spacing:-.015em}.section-body{min-width:0}.publications>li+li{margin-top:1.5rem}.publications .title{color:var(--heading);font-size:var(--font-size-title);font-weight:var(--font-weight-semibold);line-height:1.5;letter-spacing:-.01em;text-wrap:balance}.publications .title a{color:inherit;text-decoration:none;padding-bottom:2px;background:linear-gradient(currentColor,currentColor)0 100%/0 1px no-repeat;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:color 180ms ease,background-size 260ms ease}.publications .title a:focus-visible{color:var(--link);background-size:100% 1px}.publications>li>p+p{margin-top:.375rem}.pub-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem 1.25rem;margin-top:.375rem}.pub-meta>p{margin:0}.authors,.venue{color:var(--muted);font-size:var(--font-size-meta);line-height:1.65}.authors strong{color:var(--heading);font-weight:var(--font-weight-semibold)}.venue{font-size:var(--font-size-small);font-style:italic}.publications-note{margin-top:1rem;color:var(--muted);font-size:var(--font-size-small);line-height:1.6}.item-list{line-height:1.6}.item-list>li{display:grid;grid-template-columns:minmax(0,1fr);align-items:baseline;gap:1.25rem}.item-list>li+li{margin-top:.75rem}.item-list>.has-date{grid-template-columns:minmax(0,1fr)auto}.item-list>.has-logo{grid-template-columns:2rem minmax(0,1fr);align-items:center;gap:.75rem}.item-list>.has-logo.has-date{grid-template-columns:2rem minmax(0,1fr)auto}.item-list .logo{width:2rem;height:2rem;object-fit:contain}.date{color:var(--muted);font-size:var(--font-size-small);line-height:1.5;font-variant-numeric:tabular-nums;white-space:nowrap}footer{margin-top:3rem;padding-top:1rem;border-top:1px solid var(--rule);color:var(--muted);font-size:var(--font-size-small);line-height:1.6}@media(hover:hover) and (pointer:fine){a:hover{color:var(--link-hover);text-decoration-color:initial}.publications .title a:hover{color:var(--link);background-size:100% 1px}.links a:hover .link-icon,.pub-links a:hover .link-icon{transform:translateY(-2px)}}@media(prefers-reduced-motion:reduce){a,.publications .title a,.link-icon{transition:none}.links a:hover .link-icon,.pub-links a:hover .link-icon{transform:none}}@media(forced-colors:active){.publications .title a:hover,.publications .title a:focus-visible{text-decoration:underline}}@media(max-width:44rem){body{padding-top:2.5rem}.profile{grid-template-columns:minmax(0,1fr)7rem;gap:1.25rem}.portrait-frame{grid-row:1;align-self:start}h1 span{display:block;margin:.4rem 0 0}.bio,.links{grid-column:1/-1}.section{margin-top:2rem}.section:first-of-type{margin-top:1.5rem;padding-top:1.25rem}.pub-meta{flex-direction:column;align-items:flex-start}}@media(max-width:30rem){body{padding:1.75rem 1.25rem}.profile{grid-template-columns:minmax(0,1fr)6rem;gap:1rem}.links,.pub-links{column-gap:1rem}.publications .title{text-wrap:pretty}.item-list>.has-date{grid-template-columns:minmax(0,1fr);gap:.1rem}.item-list>.has-logo,.item-list>.has-logo.has-date{grid-template-columns:2rem minmax(0,1fr);gap:.1rem .75rem}.item-list>.has-logo.has-date .logo{grid-row:span 2}}.portrait-frame{perspective:900px}.portrait{backface-visibility:hidden;transition:transform 220ms cubic-bezier(.22,1,.36,1)}.link-label{position:relative;overflow:hidden}.link-label-text,.link-label-copy{display:block;transition:transform 320ms cubic-bezier(.22,1,.36,1)}.link-label-copy{position:absolute;inset:0;transform:translateY(100%)}.links a:focus-visible .link-label-text{transform:translateY(-100%)}.links a:focus-visible .link-label-copy{transform:translateY(0)}.contact-email{display:inline-flex;align-items:center;gap:.3rem}.copy-email{position:relative;display:inline-grid;width:1.75rem;height:1.75rem;place-items:center;padding:0;border:0;border-radius:.35rem;background:0 0;color:var(--muted);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:color 180ms ease,background-color 180ms ease}.copy-email[hidden]{display:none}.copy-email svg{width:1rem;height:1rem}.copy-email:focus-visible{color:var(--link-hover);background:#edf4f8;outline:2px solid var(--link);outline-offset:3px}.copy-email::after{content:attr(data-feedback);position:absolute;bottom:calc(100% + .4rem);left:0;z-index:2;width:max-content;padding:.35rem .6rem;border-radius:.35rem;background:var(--heading);color:var(--bg);font-size:.75rem;line-height:1.5;opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity 180ms ease,transform 180ms ease}.copy-email.is-copied::after,.copy-email.is-error::after,.copy-email:focus-visible::after{opacity:1;transform:translateY(0)}.copy-status{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.section>h2{display:flex;align-items:center;gap:1rem}.section>h2::after{content:"";flex:1;height:1px;background:linear-gradient(to right,var(--rule),transparent);transform-origin:left}.section.is-revealing>h2::after{animation:section-rule-reveal 650ms cubic-bezier(.22,1,.36,1)both}@keyframes section-rule-reveal{from{transform:scaleX(0)}to{transform:scaleX(1)}}.publications>li{position:relative;isolation:isolate}.publications>li::before{content:"";position:absolute;inset:-.35rem -.65rem;z-index:-1;border-radius:.4rem;background:#eef5fa;opacity:0;transform:scale(.992);pointer-events:none;transition:opacity 220ms ease,transform 220ms ease}.publications>li:focus-within::before{opacity:1;transform:scale(1)}.publications>li:focus-within .pub-links a{color:var(--link-hover);text-decoration-color:initial}@media(hover:hover) and (pointer:fine){.links a:hover .link-label-text{transform:translateY(-100%)}.links a:hover .link-label-copy{transform:translateY(0)}.copy-email:hover{color:var(--link-hover);background:#edf4f8}.copy-email:hover::after{opacity:1;transform:translateY(0)}.publications>li:hover::before{opacity:1;transform:scale(1)}.publications>li:hover .pub-links a{color:var(--link-hover);text-decoration-color:initial}}@media(max-width:30rem){.section>h2{gap:.75rem}.publications>li::before{inset-inline:-.45rem}}@media(pointer:coarse){.copy-email{width:2rem;height:2rem}}@media(prefers-reduced-motion:reduce),print{.link-label-text,.link-label-copy,.copy-email,.copy-email::after,.publications>li::before,.publications .pub-links a{transition:none}.links a:hover .link-label-text,.links a:focus-visible .link-label-text,.publications>li::before{transform:none}.link-label-copy{display:none}.portrait{transform:none!important;transition:none}.section.is-revealing>h2::after{animation:none}}@media print{.copy-email,.publications>li::before{display:none}}