/* Buildless academic homepage. Local system fonts keep loading fast and reliable. */
/* Keep the group name on one line across header sizes. */
:root{--bg:#f8f9f6;--paper:#fff;--ink:#202e3c;--muted:#5c686e;--accent:#28615b;--line:#dce2db;--soft:#edf2ec;--serif:Georgia,'Times New Roman','Noto Serif SC',serif;--sans:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI','Microsoft YaHei',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.8;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none;text-underline-offset:4px}a:hover{text-decoration:underline}button,input{font:inherit}button{cursor:pointer}button,a,input,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #4f8f88;outline-offset:5px}p{margin:0 0 18px}h1,h2,h3{margin:0;line-height:1.3}h2{font-family:var(--serif);font-size:33px;font-weight:400;letter-spacing:-.7px}strong{font-weight:600}::selection{background:#d8e9dd;color:#1b3931}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;left:20px;top:-100px;padding:10px 20px;background:var(--ink);color:#fff;z-index:100}.skip-link:focus{top:14px}
.site-header{position:sticky;top:0;z-index:20;background:rgba(248,249,246,.96);border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.header-inner{max-width:1192px;margin:auto;min-height:82px;display:flex;align-items:center;padding:0 36px;gap:40px}.wordmark{font-family:var(--serif);font-size:29px;font-weight:bold;letter-spacing:-2px;color:var(--ink);line-height:1}.wordmark-dot{color:var(--accent)}.wordmark:hover{text-decoration:none}.top-nav{display:flex;gap:29px;margin-left:auto}.top-nav a{color:var(--muted);font-size:15px;position:relative;padding:28px 0}.top-nav a:hover,.top-nav a.active{color:var(--accent);text-decoration:none}.top-nav a.active:after{content:'';height:2px;position:absolute;bottom:20px;left:0;right:0;background:var(--accent)}.language-link{font-size:14px;color:var(--muted);border-left:1px solid var(--line);padding-left:26px;white-space:nowrap}
.page-layout{max-width:1192px;margin:auto;padding:64px 36px 0;display:grid;grid-template-columns:218px minmax(0,1fr);gap:76px}.profile{position:sticky;top:126px;align-self:start}.portrait{width:144px;height:172px;object-fit:cover;object-position:center 27%;border-radius:6px;background:#e1e4e1;display:block;margin-bottom:23px}.profile-name{font-size:21px;font-family:var(--serif);font-weight:bold;line-height:1.4;margin-bottom:10px}.profile-name span{font-size:18px;font-weight:400;margin-left:7px}.profile-role{font-size:14px;line-height:1.85;margin-bottom:19px;color:var(--ink)}.affiliation{font-size:14px;color:var(--muted);line-height:1.9}.affiliation a{display:block;margin-top:6px;color:var(--muted)}.profile-divider{width:34px;height:1px;background:var(--line);margin:25px 0}.profile-email{font-size:14px;white-space:nowrap}.profile-email>span{margin-right:4px}.profile-links{display:grid;gap:6px;margin-top:16px;font-size:14px}.profile-links a{display:flex;justify-content:space-between;max-width:167px;color:var(--muted)}.profile-links a span{color:var(--accent)}.location{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);margin:24px 0 15px}.location-dot{height:6px;width:6px;border:1px solid var(--accent);border-radius:50%}.profile-join{font-size:14px;display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:16px;max-width:190px}main{min-width:0}.hero{padding:5px 0 0}.eyebrow{font-size:12px;letter-spacing:2.1px;font-weight:600;color:var(--accent);line-height:1.5;margin-bottom:17px}.hero>.eyebrow{display:flex;align-items:center;gap:9px}.hero>.eyebrow>span{width:6px;height:6px;background:var(--accent);border-radius:50%}h1{font-family:var(--serif);font-size:69px;font-weight:400;letter-spacing:-2.8px;margin-bottom:17px}h1 span{font-family:var(--sans);font-size:35px;font-weight:400;color:#5b6b6c;margin-left:15px;letter-spacing:1px}.hero-subtitle{font-family:var(--serif);font-size:27px;line-height:1.45;color:#536967;letter-spacing:-.4px;margin-bottom:28px}.hero-rule{width:52px;height:2px;background:var(--accent);margin:29px 0}.hero>p:not(.eyebrow):not(.hero-subtitle){color:var(--muted);font-size:16px;line-height:1.9}.hero .intro strong{color:var(--ink)}.hero .chinese-intro{font-size:14px!important;line-height:2!important;margin-top:23px}.join-note{display:flex;align-items:center;gap:22px;background:var(--soft);border-left:3px solid var(--accent);padding:21px 22px;margin-top:30px}.note-label{font-size:11px;font-weight:700;letter-spacing:1.4px;color:var(--accent);white-space:nowrap}.join-note p{font-size:16px;font-weight:600;line-height:1.5;margin:0 0 3px}.join-note div>span{font-size:13px;color:var(--muted)}.join-note>a{margin-left:auto;font-size:24px}
.section{margin-top:64px;padding-top:40px;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:28px}.section-heading .eyebrow{margin-bottom:9px}.section-aside{font-size:13px;color:var(--muted);margin-bottom:5px}.subtle-link{font-size:14px;white-space:nowrap;padding-bottom:3px}.section-description{font-size:14px;color:var(--muted);margin-top:-10px;margin-bottom:23px}.section-description>span{display:block;font-size:13px;margin-top:5px}.research-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:36px;row-gap:30px}.research-item{position:relative;padding-left:31px}.research-number{position:absolute;left:0;top:1px;font-size:12px;color:#7b8d84;line-height:2}.research-item h3{font-size:17px;font-weight:600;margin-bottom:8px}.research-item p{font-size:14px;color:var(--muted);line-height:1.9;margin-bottom:7px}.research-item>span:last-child{color:#79847f;font-size:12px}.project-strip{display:flex;align-items:center;flex-wrap:wrap;gap:10px 20px;border-top:1px dashed var(--line);margin-top:29px;padding-top:18px;font-size:12px}.project-strip>span{font-size:10px;letter-spacing:1.3px;color:var(--muted)}.project-strip a{white-space:nowrap}
.publication-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:26px 0 12px}.filter-group{display:flex;gap:4px;flex-wrap:wrap}.filter{border:0;background:transparent;color:var(--muted);border-radius:4px;font-size:13px;padding:7px 12px;white-space:nowrap}.filter:hover{background:#e9eee8}.filter.active{color:#fff;background:var(--accent)}.search-label{display:flex;align-items:center;gap:8px;border-bottom:1px solid #bac6be;padding:4px 0;max-width:170px}.search-label svg{width:16px;height:16px;flex-shrink:0;color:var(--muted)}.search-label input{width:100%;min-width:0;border:0;background:transparent;outline-offset:3px;font-size:13px;color:var(--ink);padding:3px 0}.pub-count{font-size:12px;color:var(--muted);margin:12px 0 0}.publication,.book-entry{display:grid;grid-template-columns:90px minmax(0,1fr);gap:20px;padding:25px 0;border-bottom:1px solid var(--line)}.pub-mark{padding-top:3px}.pub-mark>span{font-family:var(--serif);font-size:23px;line-height:1.2;display:block;color:#65746b}.pub-mark small{font-size:11px;font-weight:600;line-height:1.5;display:inline-block;background:#eaf0e9;color:var(--accent);border-radius:3px;padding:3px 6px;margin-top:7px;max-width:100%;overflow-wrap:anywhere}.pub-body h3{font-size:18px;line-height:1.5;font-weight:600;margin-bottom:8px;letter-spacing:-.15px}.authors{font-size:13px;color:var(--muted);line-height:1.85;margin-bottom:4px}.authors strong{font-weight:600;color:var(--ink)}.venue{font-size:13px;color:#667569;font-style:italic;line-height:1.7;margin:0}.paper-links{display:flex;gap:15px;margin-top:9px}.paper-link{font-size:12px;font-weight:600}.outline-button{display:block;width:100%;padding:12px 20px;border:1px solid #c5d0c6;border-radius:4px;color:var(--accent);background:transparent;font-size:14px;margin-top:22px;text-align:center}.outline-button span{margin-left:12px}.outline-button:hover{background:var(--soft)}.empty-state{padding:28px;background:var(--soft);font-size:15px;color:var(--muted)}.books{margin-top:28px}
.accordion{border-bottom:1px solid var(--line)}.accordion summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px;cursor:pointer;padding:19px 0;font-size:16px;font-weight:500}.accordion summary::-webkit-details-marker{display:none}.accordion summary:after{content:'+';font-size:21px;font-weight:400;color:var(--accent);margin-left:4px;flex-shrink:0}.accordion[open] summary:after{content:'−'}.accordion summary>span:first-child{flex:1}.accordion summary small{font-size:12px;font-weight:400;color:var(--muted);margin-left:8px}.details-count{font-size:12px;font-weight:400;color:var(--muted);white-space:nowrap}.detail-list{margin:0;padding:2px 0 20px 19px;color:var(--muted);font-size:14px;line-height:1.9}.detail-list li{padding:5px 0 9px 4px;overflow-wrap:anywhere}.timeline{margin-bottom:23px}.timeline-row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:20px;position:relative;padding:0 0 26px}.timeline-row:last-child{padding-bottom:0}.timeline-date{font-size:12px;color:var(--muted);padding-top:4px;letter-spacing:.1px}.timeline-row>div{border-left:1px solid #cdd8ce;padding-left:22px;position:relative}.timeline-row>div:before{content:'';position:absolute;left:-4px;top:7px;width:7px;height:7px;border-radius:50%;background:#9eafa0;border:2px solid var(--bg)}.timeline-row:first-child>div:before{background:var(--accent)}.timeline-row h3{font-size:15px;font-weight:600;margin-bottom:5px;line-height:1.6}.timeline-row p{font-size:13px;color:var(--muted);line-height:1.9;margin:0}.teaching-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:35px;margin-bottom:25px}.small-heading{text-transform:uppercase;letter-spacing:1.1px;font-size:12px;font-weight:600;margin:0 0 16px;color:var(--accent)}.course-list{list-style:none;padding:0;margin:0;font-size:14px;color:var(--muted);line-height:1.8}.course-list li{padding-bottom:9px}.teaching-note{color:#7c877e;font-size:13px;line-height:1.9;margin-top:17px}.table-scroll{overflow-x:auto;padding:0 0 20px}table{width:100%;border-collapse:collapse;font-size:13px;white-space:nowrap;text-align:left}caption{font-size:13px;text-align:left;color:var(--muted);padding-bottom:12px}th{font-weight:600;color:var(--accent)}td,th{padding:10px 12px;border-bottom:1px solid var(--line)}.service-list{margin:0}.service-list>div{display:grid;grid-template-columns:145px minmax(0,1fr);gap:24px;padding:15px 0}.service-list dt{font-size:13px;font-weight:600}.service-list dd{margin:0;font-size:14px;line-height:2;color:var(--muted)}
.join-section{background:#eaf0e9;border:0;padding:34px 36px;border-radius:5px;margin-top:56px}.join-section h2{font-family:var(--sans);font-size:24px;letter-spacing:0;margin-bottom:23px;font-weight:500}.join-section>p:not(.eyebrow){font-size:14px;line-height:2;color:#52675e}.primary-button{display:inline-flex;gap:30px;align-items:center;background:var(--accent);color:#fff;border:1px solid var(--accent);padding:10px 17px;font-size:13px;border-radius:3px;margin-top:9px}.primary-button:hover{background:#1b4943;text-decoration:none}.join-more{display:inline-block;font-size:13px;margin:12px 0 0 20px}.contact-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:30px;font-size:15px}.contact-grid .small-heading{margin-bottom:10px}.contact-grid p{font-size:14px;line-height:1.9;margin-bottom:7px;color:var(--muted)}.contact-grid .office-zh{font-size:12px}.back-top{border:1px solid var(--line);width:34px;height:34px;display:grid;place-items:center;border-radius:50%;font-size:18px}.back-top:hover{background:var(--soft);text-decoration:none}footer{border-top:1px solid var(--line);margin-top:42px;padding:24px 0 30px;display:flex;gap:18px;justify-content:space-between;color:var(--muted);font-size:11px}
@media(min-width:1500px){.page-layout,.header-inner{max-width:1260px}.page-layout{gap:94px;grid-template-columns:230px minmax(0,1fr)}}
@media(max-width:1000px){.header-inner{padding:0 28px;gap:25px}.top-nav{gap:22px}.page-layout{padding:45px 28px 0;grid-template-columns:180px minmax(0,1fr);gap:40px}.profile-email{font-size:12px}.profile-role,.affiliation{font-size:13px}h1{font-size:58px}h1 span{font-size:29px}.hero-subtitle{font-size:24px}.section-aside{display:none}.publication-controls{align-items:flex-start;flex-direction:column;gap:12px}.search-label{max-width:100%;width:100%}.timeline-row{grid-template-columns:118px minmax(0,1fr);gap:10px}.timeline-row>div{padding-left:16px}.service-list>div{grid-template-columns:115px minmax(0,1fr);gap:18px}.join-section{padding:28px}.join-section h2{font-size:21px}}
@media(max-width:760px){html{scroll-padding-top:125px}.header-inner{padding:15px 22px;min-height:0;gap:15px;flex-wrap:wrap;justify-content:space-between}.wordmark{font-size:26px}.language-link{margin-left:auto;border:0;padding:0}.top-nav{order:3;width:100%;margin:2px 0 0;justify-content:space-between;gap:13px}.top-nav a{font-size:13px;padding:5px 0}.top-nav a.active:after{bottom:0}.page-layout{display:block;padding:30px 22px 0}.profile{position:static;display:grid;grid-template-columns:87px 1fr;column-gap:20px;align-items:start;border-bottom:1px solid var(--line);padding-bottom:23px;margin-bottom:35px}.portrait{grid-row:1/5;width:87px;height:109px;margin:0;object-position:center 25%}.profile-name{font-size:20px;margin-bottom:4px}.profile-name span{font-size:17px}.profile-role{font-size:13px;line-height:1.7;margin-bottom:8px}.profile .affiliation,.profile-divider,.profile-email,.profile .location,.profile-join{display:none}.profile-links{display:flex;flex-wrap:wrap;margin:0;gap:13px;font-size:12px}.profile-links a{gap:6px}.profile-links a:last-child{display:none}.hero{padding:0}h1{font-size:54px;letter-spacing:-2px}h1 span{font-size:27px;margin-left:10px}.hero-subtitle{font-size:25px}.hero>p:not(.eyebrow):not(.hero-subtitle){font-size:15px}.hero .chinese-intro{font-size:13px!important}.join-note{gap:14px;padding:17px 15px}.note-label{font-size:10px}.join-note p{font-size:14px}.join-note div>span{font-size:12px;line-height:1.8;display:block}.join-note>a{font-size:20px}.section{margin-top:45px;padding-top:31px}h2{font-size:29px}.section-heading{gap:12px;margin-bottom:23px}.eyebrow{font-size:11px;letter-spacing:1.7px}.subtle-link{font-size:12px}.research-grid{column-gap:21px;row-gap:28px}.research-item{padding-left:23px}.research-item h3{font-size:15px}.research-item p{font-size:13px}.research-item>span:last-child{font-size:11px}.project-strip{gap:9px 16px}.project-strip>span{width:100%}.publication-controls{margin-top:18px}.filter{padding:7px 10px;font-size:12px}.publication,.book-entry{grid-template-columns:64px minmax(0,1fr);gap:14px;padding:23px 0}.pub-body h3{font-size:16px;line-height:1.6}.pub-mark>span{font-size:21px}.pub-mark small{font-size:10px;padding:3px 5px}.authors,.venue{font-size:12px}.accordion summary{font-size:14px;gap:9px}.accordion summary small{font-size:11px;display:block;margin-left:0;margin-top:4px}.details-count{font-size:11px}.detail-list{font-size:13px}.timeline-row{grid-template-columns:105px minmax(0,1fr);gap:6px}.timeline-date{font-size:11px}.timeline-row h3{font-size:14px}.timeline-row p{font-size:12px}.teaching-grid{gap:24px}.course-list{font-size:13px}.small-heading{font-size:11px;letter-spacing:.8px}.service-list>div{grid-template-columns:95px minmax(0,1fr);gap:15px}.service-list dt,.service-list dd{font-size:12px}.join-section{padding:25px 22px}.join-section h2{font-size:20px;line-height:1.6;margin-bottom:15px}.join-section>p:not(.eyebrow){font-size:13px}.join-more{display:block;margin-left:0}.contact-grid{grid-template-columns:1fr;gap:25px}.contact-grid>a{font-size:14px}footer{flex-wrap:wrap;gap:6px 20px;font-size:11px}footer>a{margin-left:auto}}
@media(max-width:360px){.page-layout{padding-left:17px;padding-right:17px}.header-inner{padding-left:17px;padding-right:17px}.research-grid,.teaching-grid{grid-template-columns:1fr}.publication,.book-entry{grid-template-columns:53px minmax(0,1fr);gap:10px}h1{font-size:47px}h1 span{font-size:23px}.join-note{gap:10px}.timeline-row{grid-template-columns:1fr;gap:8px}.timeline-row>div{margin-left:3px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.icon{display:inline-block;width:15px;height:15px;flex-shrink:0;vertical-align:-3px;color:var(--accent)}
.icon-label{display:inline-flex;align-items:center;gap:7px}
.profile-links a .icon-label{color:var(--muted)}
.profile-links .icon{width:13px;height:13px}
.profile-email{display:inline-flex;align-items:center;gap:7px}
.profile-summary-heading{margin-top:26px;margin-bottom:10px;display:flex;align-items:center;flex-wrap:wrap;gap:3px}
.profile-summary{font-size:14px!important;line-height:1.9!important}
.research-icon{position:absolute;left:0;top:2px;width:18px;height:18px}
.research-item{padding-left:32px}
.section-aside{max-width:180px;line-height:1.7;text-align:right}
.contact-grid .small-heading{display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.primary-button{gap:11px}.primary-button .icon{color:inherit;width:14px;height:14px}.primary-button>span{margin-left:10px}
.table-scroll table{min-width:630px;white-space:normal;line-height:1.8}.table-scroll th{white-space:nowrap}.table-scroll td:nth-child(2){min-width:140px}.table-scroll td:last-child{width:49%}
@media(max-width:760px){.research-item{padding-left:26px}.research-icon{width:15px;height:15px;top:1px}.profile-summary{font-size:13px!important}.profile-links .icon-label{gap:4px}.profile-links .icon{width:12px;height:12px}}
/* Year groups provide a simple scan line without another layer of accordions. */
.year-groups{padding:3px 0 9px}
.year-group{margin:0 0 16px}
.year-group:last-child{margin-bottom:0}
.year-heading{display:flex;align-items:center;gap:16px;color:var(--accent);font-family:var(--serif);font-size:21px;font-weight:400;line-height:1.5;margin:6px 0 12px}
.year-heading:after{content:'';height:1px;background:var(--line);flex:1}
.year-group .detail-list{padding-bottom:5px}
.group-caption{font-size:12px;color:var(--muted);margin:0 0 16px}
.join-note p{flex:1;min-width:0;font-weight:400;margin:0}
.join-note>a{flex-shrink:0}
.hero-rule{margin:25px 0 29px}
@media(max-width:760px){.year-heading{font-size:19px}.join-note{gap:12px}.join-note p{font-size:14px;line-height:1.7}.research-grid{grid-template-columns:1fr}.teaching-grid{grid-template-columns:1fr;gap:24px}}
/* Books share the publication typography; alumni tables keep every student on a separate row. */
.book-list{padding-bottom:18px}
.book-entry:last-child{border-bottom:0}
.book-contribution{font-size:13px;line-height:1.85;color:var(--muted);margin:9px 0 0}
.book-contribution strong,.year-group .detail-list strong{color:var(--ink);font-weight:600}
.alumni-table caption{font-size:14px;font-weight:600;color:var(--ink);padding:10px 0 12px}
.table-scroll .alumni-table{min-width:580px}
.table-scroll .alumni-table.has-notes{min-width:680px}
.table-scroll .alumni-table td:first-child{white-space:nowrap}
.table-scroll .alumni-table td:nth-child(2){min-width:145px}
.table-scroll .alumni-table td:nth-child(3){width:52%}
.table-scroll .alumni-table.has-notes td:nth-child(3){width:40%}
.table-scroll .alumni-table td:last-child{width:auto}
.table-scroll .alumni-table:not(.has-notes) td:last-child{width:52%}
.table-scroll .alumni-table.has-notes td:last-child{min-width:155px}
.alumni-source{font-size:12px;color:var(--muted);margin:0 0 20px}
@media(max-width:760px){.book-contribution{font-size:12px}.student-destinations .details-count{max-width:140px;white-space:normal;text-align:right;line-height:1.6}}
.hero>.eyebrow{flex-wrap:wrap;gap:8px}
.group-links{margin-top:27px;padding-top:20px;border-top:1px solid var(--line)}
.group-links .small-heading{margin-bottom:9px}
.group-link-list{display:flex;flex-wrap:wrap;gap:12px 30px;font-size:15px}
.group-link-list a{display:inline-flex;align-items:center;gap:12px}


@media(max-width:760px){.group-link-list{font-size:14px;gap:12px 25px}}

/* Page-generation credit sits in the biography's upper-right whitespace. */
.hero-topline{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:17px}
.hero-topline .eyebrow{display:flex;align-items:center;gap:9px;flex:1;min-width:0;margin:0;padding-top:2px}
.eyebrow-dot{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;flex-shrink:0}
.hero-credit{flex:0 0 auto;max-width:170px;text-align:right;font-size:12px;line-height:1.65;color:var(--muted);margin:0}
.hero-credit strong{font-weight:600;color:var(--accent)}
@media(max-width:760px){.top-nav{gap:8px}.top-nav a{font-size:11px}.hero-topline{gap:12px;margin-bottom:16px}.hero-topline .eyebrow{font-size:9px;letter-spacing:1.3px;line-height:1.8;gap:7px}.hero-credit{font-size:10px;max-width:140px}}
@media(max-width:360px){.hero-topline{gap:10px}.hero-topline .eyebrow{letter-spacing:1px}.hero-credit{max-width:120px}}
@media print{body{background:white;font-size:13px}.site-header,.profile,.publication-controls,.outline-button,.join-note,.join-section,.back-top,.pub-count,.skip-link{display:none!important}.page-layout{display:block;padding:0;max-width:100%}.hero h1{font-size:38px}.section{margin-top:25px;padding-top:20px;break-inside:avoid}h2{font-size:23px}.publication[hidden]{display:grid!important}.publication,.book-entry{break-inside:avoid;padding:12px 0}.hero-subtitle{font-size:21px}footer{margin-top:20px}.accordion:not([open]){display:none}}

.wordmark{font-size:26px;letter-spacing:-.6px;white-space:nowrap;flex-shrink:0}@media(max-width:1000px){.wordmark{font-size:24px}}@media(max-width:760px){.wordmark{font-size:22px}}
