@charset "UTF-8";
:root{color-scheme:light;--paper:#fdfdfe;--ink:#24272b;--muted:#636972;--line:#dfe2e6;--accent:#375f84;font-family:Arial,"Helvetica Neue","PingFang SC","Microsoft YaHei",sans-serif;font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--paper);color:var(--ink);font-size:16px;line-height:1.7}body:before{content:"";display:block;height:5px;background:#c7ccd2}::selection{background:#dce6ef}a{color:var(--accent);text-decoration:none;text-underline-offset:4px}a:hover{text-decoration:underline}button{font:inherit;color:inherit;cursor:pointer}img{display:block;max-width:100%;height:auto}figure,p,h1,h2,h3,h4{margin:0}h1,h2,h3,h4{font-weight:600;line-height:1.35}h2{font-size:24px;letter-spacing:-.02em}h3{font-size:18px}ul,ol{margin:0;padding-left:1.25em}p{overflow-wrap:break-word}a,button,summary{touch-action:manipulation}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}[hidden]{display:none!important}.shell{width:min(980px,calc(100% - 64px));margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:fixed;top:-80px;left:20px;background:white;padding:10px;z-index:20}.skip-link:focus{top:10px}.arrow{width:15px;height:15px;flex:none;vertical-align:middle}.text-link{display:inline-flex;gap:7px;align-items:center}
.masthead{display:flex;justify-content:space-between;align-items:center;padding-block:26px 20px;border-bottom:1px solid var(--line);gap:24px}.identity{color:var(--ink);font-size:15px;white-space:nowrap;letter-spacing:.01em}.monogram{display:none}.nav-wrap,.navigation,.languages{display:flex;align-items:center}.nav-wrap{gap:27px}.navigation{gap:22px}.navigation a,.languages a{font-size:14px;color:var(--muted);padding-block:8px}.navigation a[aria-current],.languages a[aria-current]{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}.languages{gap:13px}.languages a{min-width:24px;text-align:center}
.hero{display:grid;grid-template-columns:210px minmax(0,1fr);gap:45px;padding:48px 0 35px;align-items:start}.portrait{padding-top:5px}.portrait>img{width:210px;aspect-ratio:4/5;object-fit:cover;border-radius:3px}.portrait figcaption{font-size:13px;color:var(--muted);margin-top:9px;text-align:center}.hero h1{font-size:35px;font-weight:500;letter-spacing:-.025em;margin-bottom:20px}.hero h1 span{font-size:25px;font-weight:400;letter-spacing:0;margin-left:13px;white-space:nowrap}.hero-copy>p+p{margin-top:16px}.socials{display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin-top:17px}.social{display:inline-flex;align-items:center;gap:7px;min-height:36px;font-size:15px}.platform-icon{width:17px;height:17px;fill:currentColor}.github{color:#25272b}.bilibili .platform-icon{color:#bc5274}
.education{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding:26px 0;border-block:1px solid var(--line);align-items:start}.school{display:flex;gap:14px;align-items:flex-start;min-width:0}.school-logo{width:58px;height:65px;flex:none;display:flex;align-items:flex-start;justify-content:center}.school-logo img{width:58px;height:60px;object-fit:contain}.school-buaa .school-logo img{border-radius:50%;height:58px}.school-hku .school-logo img{width:51px}.school h2{font-size:16px;letter-spacing:0;line-height:1.4;margin:1px 0 5px}.school h2 a{color:var(--ink)}.degree,.school-advisor{font-size:13px;line-height:1.6}.degree{color:var(--muted);margin-bottom:5px}.school-details{font-size:13px;margin-top:8px;line-height:1.65}.school-details summary{color:var(--muted);cursor:pointer}.school-details p{margin-top:9px}.lab-logo{width:110px;margin-top:12px}.school-copy{min-width:0}
.section{margin-top:42px}.section-heading{display:flex;justify-content:space-between;align-items:baseline;gap:24px;border-bottom:1px solid var(--line);padding-bottom:11px;margin-bottom:22px}.section-heading>a{font-size:14px;flex:none}.research-copy>p+p{margin-top:12px}.research-lead{font-size:19px;line-height:1.6;max-width:830px}.lab-note{border-left:2px solid #c7ccd2;padding-left:20px;margin-top:24px;font-size:15px}.lab-note h3{font-size:16px}.lab-full-name{font-size:13px;color:var(--muted);margin:4px 0 9px}.lab-note p:last-child{max-width:840px}
.upcoming,.experience-item{display:grid;grid-template-columns:120px minmax(0,1fr);gap:25px;align-items:start}.upcoming{padding:0 0 22px;border-bottom:1px solid var(--line);margin-bottom:26px}.company-logo{display:flex;width:110px;height:66px;align-items:center;justify-content:center}.company-logo img{object-fit:contain;max-height:60px;max-width:105px;width:auto}.company-logo.neu img{height:60px}.upcoming .company-logo{height:50px}.upcoming .company-logo img{max-width:98px}.upcoming p{font-size:15px;color:var(--muted);margin-top:5px}.experience-item+.experience-item{margin-top:30px}.experience-title{display:flex;justify-content:space-between;gap:18px;align-items:baseline}.experience-title h3 a{color:var(--ink)}.period{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.role{font-size:15px;font-weight:600;margin-top:4px}.team-name{font-size:13px;color:var(--muted);margin:1px 0 9px}.experience-copy>p:not(.role):not(.team-name){font-size:15px}.experience-details{font-size:14px;margin-top:7px;padding-left:18px;color:#505761;line-height:1.7}.experience-details li+li{margin-top:3px}
.project{display:grid;grid-template-columns:120px minmax(0,1fr);gap:25px;padding:5px 0 25px}.project+.project{border-top:1px solid var(--line);padding-top:25px}.project-meta{font-size:13px;color:var(--muted);display:flex;flex-direction:column;gap:7px;padding-top:4px}.project-info h3{font-size:19px}.repo-name{font-size:13px;color:var(--muted);margin:2px 0 8px}.project-info>p:not(.repo-name){font-size:15px}.tags{display:flex;flex-wrap:wrap;list-style:none;padding:0;gap:5px 16px;font-size:12px;color:var(--muted);margin-top:10px}.tags li+li:before{content:"·";margin-right:13px;color:#929aa4}
.honors-summary{font-size:15px;color:#505761;margin-bottom:22px}.honor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 35px}.honor{display:grid;grid-template-columns:75px minmax(0,1fr);gap:17px;align-items:start}.certificate{display:flex;align-items:center;justify-content:center;width:75px;height:96px;background:#f2f3f5;position:relative;padding:6px}.certificate img{width:100%;height:100%;object-fit:contain}.image-zoom{position:absolute;right:2px;bottom:0;line-height:1;font-size:14px;background:var(--paper);padding:2px;color:var(--muted)}.honor-info h3{font-size:15px;line-height:1.5;margin:2px 0 5px}.honor-info>p{font-size:13px;color:var(--muted);line-height:1.6}.archive-link{margin-top:25px;font-size:14px}.archive-link span{margin-inline:5px}.sharing-note{display:grid;grid-template-columns:205px minmax(0,1fr);gap:28px;margin-top:42px;border-top:1px solid var(--line);padding-top:30px}.sharing-note figure img{aspect-ratio:1.8;object-fit:cover;border-radius:2px}.sharing-note h2{font-size:21px;margin-bottom:10px}.sharing-note p{font-size:15px;margin-bottom:7px}.sharing-note a{font-size:14px}.contact-section{margin-top:35px}.contact-section h2{font-size:21px;margin-bottom:10px}.contact-section p{font-size:15px}.footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);margin-top:45px;padding-block:20px 35px;font-size:13px;color:var(--muted)}.footer-right{display:flex;gap:24px}.footer-domain{display:none}
.page-intro{padding:42px 0 32px;max-width:800px}.page-intro h1{font-size:32px;margin-bottom:13px}.page-intro p{color:var(--muted);margin-bottom:12px}.eyebrow,.section-label{font-size:13px;color:var(--muted);letter-spacing:.04em;margin-bottom:8px}.number{display:none}.all-honors{gap:28px 40px}.evidence-archive{margin-top:45px}.archive-intro{font-size:15px;color:var(--muted);margin-bottom:20px}.evidence-group{border-top:1px solid var(--line);scroll-margin-top:20px}.evidence-group summary{display:flex;justify-content:space-between;gap:20px;padding:19px 0;cursor:pointer;font-weight:600}.evidence-count{color:var(--muted);font-size:14px;font-weight:400}.evidence-count>span{display:inline-block;margin-left:20px}.evidence-group[open] .evidence-count>span{transform:rotate(45deg)}.evidence-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px;padding:5px 0 30px}.evidence-grid a{display:flex;align-items:center;justify-content:center;height:190px;background:#f2f3f5;padding:10px}.evidence-grid img{width:100%;height:100%;object-fit:contain}.evidence-grid figcaption{font-size:13px;line-height:1.55;margin-top:9px;color:var(--muted)}.lightbox{width:min(1100px,94vw);max-width:94vw;height:min(950px,94dvh);max-height:94dvh;border:1px solid var(--line);padding:18px;background:#fafbfc;color:var(--ink);border-radius:3px}.lightbox::backdrop{background:#17202bcb}.lightbox[open]{display:flex;flex-direction:column}.lightbox-bar{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:15px}.lightbox-bar p{font-size:14px}.lightbox-bar button{border:1px solid #cbd0d5;background:white;padding:9px 14px;white-space:nowrap}.lightbox-image{object-fit:contain;min-height:0;flex:1;width:100%;height:100%}
.record-list{padding:0;list-style:none}.record-link{display:grid;grid-template-columns:130px minmax(0,1fr) 20px;gap:24px;padding:27px 0;color:var(--ink)}.record+.record{border-top:1px solid var(--line)}.record-link:hover{text-decoration:none}.record-link:hover h2{text-decoration:underline;color:var(--accent)}.record-date{font-size:13px;color:var(--muted);padding-top:6px;font-variant-numeric:tabular-nums}.record-date small{display:block;margin-top:5px;font-size:12px}.record-type{font-size:12px;color:var(--muted)}.record h2{font-size:21px;margin:5px 0 10px}.record p{font-size:15px}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:15px}.filters button{border:1px solid var(--line);padding:6px 13px;background:transparent}.filters button[aria-pressed=true]{background:#e9edf1;border-color:#929daa}.article{max-width:760px}.article>*+*{margin-top:20px}.article pre{overflow:auto;background:#f0f2f4;padding:20px}.article blockquote{border-left:2px solid var(--line);padding-left:20px}.not-found{padding-top:80px}.not-found p{margin-block:20px}
@media(min-width:1500px){.shell{width:980px}}
@media(max-width:900px){.navigation{gap:15px}.nav-wrap{gap:20px}.hero{grid-template-columns:180px minmax(0,1fr);gap:30px}.portrait>img{width:180px}.education{gap:18px}.school{display:block}.school-logo{margin-bottom:12px}.experience-title{flex-wrap:wrap;gap:3px 15px}.honor-grid{column-gap:25px}.period{white-space:normal}}
@media(max-width:600px){body{font-size:16px;line-height:1.75}.shell{width:calc(100% - 40px)}.masthead{padding-block:16px 12px;gap:15px;flex-wrap:wrap}.identity{font-size:14px}.nav-wrap{display:contents}.languages{margin-left:auto;order:0;gap:12px}.navigation{order:1;width:100%;justify-content:space-between;gap:10px}.navigation a{font-size:13px}.hero{grid-template-columns:132px minmax(0,1fr);gap:18px;padding:28px 0}.portrait{grid-row:1;margin:0;padding-top:0}.portrait>img{width:132px}.portrait figcaption{display:none}.hero-copy{display:contents}.hero h1{align-self:center;grid-column:2;font-size:28px;margin:0}.hero h1 span{display:block;font-size:21px;margin:12px 0 0}.hero-copy>p,.socials{grid-column:1/-1}.hero-copy>p+p{margin-top:0}.socials{gap:5px 20px;margin-top:0}.social{font-size:14px;min-height:40px}.education{grid-template-columns:1fr;gap:22px;padding:24px 0}.school{display:flex;gap:18px}.school-logo{width:58px;margin:0}.school-copy{flex:1}.school h2{font-size:17px}.degree,.school-advisor,.school-details{font-size:14px}.school-details{margin-top:5px}.section{margin-top:34px}.section-heading{gap:12px;margin-bottom:20px}.section-heading h2{font-size:22px}.section-heading>a{font-size:12px;max-width:130px;text-align:right}.research-lead{font-size:18px}.lab-note{padding-left:15px}.lab-full-name{font-size:12px}.upcoming,.experience-item{grid-template-columns:64px minmax(0,1fr);gap:15px}.company-logo{width:62px;height:50px}.company-logo img{max-width:60px;max-height:43px}.company-logo.neu img{height:45px}.upcoming .company-logo img{max-width:61px}.experience-title{display:block}.experience-title h3{font-size:18px}.experience-title .period{display:block;margin-top:3px;font-size:12px}.role{font-size:14px;line-height:1.55;margin-top:7px}.team-name{font-size:12px;margin-top:5px}.experience-copy>p:not(.role):not(.team-name){font-size:15px}.experience-details{font-size:14px;padding-left:15px}.experience-item+.experience-item{margin-top:27px}.project{grid-template-columns:1fr;gap:9px;padding-bottom:22px}.project-meta{flex-direction:row;justify-content:space-between}.project-info h3{font-size:19px}.tags{font-size:12px;column-gap:11px}.tags li+li:before{margin-right:9px}.honor-grid{grid-template-columns:1fr;gap:22px}.honor{grid-template-columns:67px minmax(0,1fr);gap:15px}.certificate{width:67px;height:89px}.honor-info h3{font-size:15px}.honor-info>p{font-size:13px}.archive-link{line-height:2}.sharing-note{grid-template-columns:1fr;gap:18px;margin-top:32px;padding-top:24px}.sharing-note figure{max-width:270px}.sharing-note p{font-size:15px}.contact-section p{font-size:15px}.footer{flex-wrap:wrap;font-size:12px;margin-top:30px;padding-bottom:25px}.footer-right{gap:10px}.page-intro{padding:30px 0 24px}.page-intro h1{font-size:29px}.page-intro p{font-size:15px}.evidence-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 15px}.evidence-grid a{height:168px;padding:8px}.evidence-group summary{font-size:16px}.lightbox{padding:12px}.lightbox-bar{gap:10px}.lightbox-bar p{font-size:13px}.record-link{grid-template-columns:1fr 20px;gap:10px}.record-date{grid-column:1/-1;display:flex;gap:12px;align-items:baseline}.record-date small{margin-top:0}.record h2{font-size:21px}.record-type{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* A quiet page navigation; identity belongs in the introduction. */
.masthead{justify-content:flex-end}.founder{color:var(--muted);font-size:14px;margin-top:-10px;margin-bottom:14px}.hero-copy>.founder+p{margin-top:0}
@media(max-width:600px){.masthead{justify-content:space-between}.nav-wrap{display:flex;flex-wrap:wrap;width:100%;gap:4px}.navigation{order:0;flex:1;width:auto;gap:14px}.languages{order:1;margin-left:0;gap:9px}.navigation a{font-size:12px}.languages a{font-size:12px}.hero-copy>.founder{margin:0;font-size:14px;grid-column:1/-1}}

/* Round 1: legibility and hierarchy in the rendered desktop/mobile pages. */
.hero .socials{margin-top:0;margin-bottom:14px}.hero-copy>.socials+p{margin-top:0}
.school .degree,.school-advisor,.school-details{font-size:14px}.school h2{min-height:23px}.company-logo.astar,.company-logo.sparo{background:#263747;border-radius:3px;padding:10px}.company-logo.astar img,.company-logo.sparo img{max-width:100%;max-height:100%}.project-meta{padding-top:5px}.section-heading>a{white-space:nowrap}
@media(max-width:600px){
 .hero .socials{margin-bottom:0;gap:0 18px}.social{min-height:44px}
 .section-heading{align-items:flex-start;flex-direction:column;gap:6px}.section-heading>a{font-size:14px;max-width:none;text-align:left}
 .experience-item{row-gap:0;align-items:center}.experience-copy{display:contents}.experience-title{grid-column:2}.experience-copy>.role,.experience-copy>.team-name,.experience-copy>p,.experience-details{grid-column:1/-1}.experience-copy>.role{margin-top:10px}.experience-copy>.team-name{font-size:13px;margin-bottom:10px}.experience-copy>p:not(.role):not(.team-name){font-size:16px}.experience-details{margin-top:8px;font-size:14px}.experience-item+.experience-item{margin-top:30px}.company-logo.astar,.company-logo.sparo{padding:7px}.project-meta{align-items:center}
}

/* Round 2: readable archive, navigation and consistent project titles. */
.all-honors .honor{grid-template-columns:105px minmax(0,1fr);gap:20px}.all-honors .certificate{width:105px;height:133px;padding:7px}.all-honors .honor-info h3{font-size:16px}.all-honors{gap:25px 35px}.evidence-count{display:flex;align-items:center;flex:none;gap:18px;white-space:nowrap}.evidence-count>span{margin-left:0}.record .repo-name{font-size:13px;color:var(--muted);margin-top:-5px;margin-bottom:9px}.record-link>.arrow{margin-top:12px}
@media(max-width:600px){
 .masthead{padding-block:10px 7px}.nav-wrap{gap:0;width:100%}.navigation{flex:1 0 100%;justify-content:space-between;gap:10px}.navigation a{font-size:14px;min-height:44px;display:flex;align-items:center}.languages{margin-left:auto;gap:18px}.languages a{font-size:14px;min-width:32px;min-height:38px;display:flex;align-items:center;justify-content:center;padding-block:4px}.hero{padding-top:24px;row-gap:15px}.hero .socials{margin-block:-5px 0}.all-honors .honor{grid-template-columns:85px minmax(0,1fr);gap:16px}.all-honors .certificate{width:85px;height:112px}.all-honors .honor-info h3{font-size:15px}.evidence-count{gap:14px;font-size:14px}.evidence-group summary{align-items:baseline}.record-link>.arrow{margin-top:6px}
}

.affiliation-context{grid-column:1/-1;font-size:14px;color:var(--muted);line-height:1.7;max-width:940px;margin-top:1px}

/* The real portrait stays sharp, with a gentle transition into the page. */
.portrait>img{border-radius:10px;box-shadow:0 1px 10px rgba(28,40,53,.10)}
@media(max-width:600px){.portrait>img{border-radius:8px}}

.contact-methods{list-style:none;padding:0;margin-top:16px;display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:18px 30px}.contact-methods li{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0}.contact-label{font-size:13px;color:var(--muted)}.contact-methods a,.wechat-handle{font-size:15px;min-height:36px;display:flex;align-items:center;overflow-wrap:anywhere}.wechat-handle{user-select:all}
@media(max-width:600px){.contact-methods{grid-template-columns:1fr;gap:4px;margin-top:12px}.contact-methods li{display:grid;grid-template-columns:60px minmax(0,1fr);gap:12px;align-items:center}.contact-methods a,.wechat-handle{min-height:44px}.contact-label{font-size:14px}}

/* The motto uses the open space to the right of the identity block. */
.name-line{display:flex;align-items:center;flex-wrap:wrap;gap:12px 28px;margin-bottom:20px}.hero .name-line h1{margin:0}.personal-motto{margin:0;color:#626b76;line-height:1.6}.personal-motto span{display:block;color:#525d69;font-family:"Kaiti SC","STKaiti","KaiTi","楷体","Noto Serif CJK SC",serif;font-size:17px;font-weight:400;letter-spacing:.08em}.personal-motto em{display:block;color:#737d88;margin-top:3px;font-family:Georgia,"Times New Roman",serif;font-size:15px;font-weight:400;letter-spacing:.01em}
@media(max-width:600px){.name-line{grid-column:2;grid-row:1;align-self:center;display:block;margin:0;min-width:0}.personal-motto{margin-top:12px}.personal-motto span{font-size:12px;letter-spacing:.04em}.personal-motto em{font-size:11.5px}}
@media(min-width:1100px){.name-line{padding-right:104px}.name-line>.personal-motto{margin-left:auto;text-align:center}}

.social-note{font-size:12px;color:#626b76}
