:root { --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif; --serif:'Source Serif 4','Songti SC','Noto Serif SC',Georgia,serif; --bg:#fff; --ink:#404449; --muted:#626d78; --link:#315b7d; --line:#eeeeef; --red:#ae3444; --purple:#763ca4; --width:1280px; }
* { box-sizing:border-box; }
html { scroll-padding-top:80px; }
@font-face { font-family:'Inter'; font-style:normal; font-weight:400 700; font-display:swap; src:url(fonts/inter-latin.woff2) format('woff2'); unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,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:600 700; font-display:swap; src:url(fonts/source-serif-4-latin.woff2) format('woff2'); unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
body { margin:0; color:var(--ink); background:var(--bg); font:16px/1.65 var(--sans); font-feature-settings:'cv11','ss01'; -webkit-font-smoothing:antialiased; }
a { color:var(--link); text-decoration:none; text-underline-offset:3px; }
a:hover { text-decoration:underline; }
a:focus-visible { outline:3px solid #9ec4dc; outline-offset:4px; }
p { margin:0 0 14px; }
h1,h2,h3,h4 { margin:0; line-height:1.4; }
strong { font-weight:700; }
h2 { display:flex; align-items:center; gap:8px; font-family:var(--serif); font-size:25px; font-weight:700; letter-spacing:-.005em; color:#2f3439; padding-bottom:7px; margin-bottom:15px; border-bottom:1px solid var(--line); }
h2>span { flex:0 0 23px; width:23px; display:inline-flex; justify-content:center; font-size:21px; line-height:1; }
h3 { font-size:16px; }
section { margin:0 0 31px; scroll-margin-top:12px; }
.home-section { padding:22px; margin-bottom:22px; border:1px solid transparent; border-radius:16px; }
.home-section--tinted { background:#f6f8fa; border-color:#eaf0f4; }
.home-section > :last-child { margin-bottom:0; }
sup { font-size:.72em; line-height:0; }
.muted { color:var(--muted); }
.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:16px; top:-60px; z-index:20; padding:8px; background:white; }
.skip-link:focus { top:8px; }
.masthead { position:sticky; top:0; z-index:5; background:rgba(255,255,255,.86); backdrop-filter:saturate(1.6) blur(14px); -webkit-backdrop-filter:saturate(1.6) blur(14px); border-bottom:1px solid #f1f1f1; }
.nav-wrap { max-width:var(--width); margin:auto; min-height:60px; padding:0 20px; display:flex; gap:48px; align-items:center; }
.brand { color:#3c4349; font-family:var(--serif); font-size:19px; font-weight:700; white-space:nowrap; }
nav { display:flex; align-items:center; gap:26px; min-width:0; }
.nav-sections { display:flex; align-items:center; gap:26px; min-width:0; }
nav a { color:#5d6670; font-size:16px; white-space:nowrap; }
.masthead nav a { display:inline-flex; align-items:center; min-height:40px; }
nav a:hover,nav a.active { color:#2e536c; }
.nav-cv { flex-shrink:0; border-left:1px solid #dfe4e8; padding-left:20px; color:var(--link); font-weight:700; }
.section-nav { display:flex; flex-wrap:wrap; gap:8px 19px; padding:0 0 15px; margin-bottom:22px; border-bottom:1px solid var(--line); }
.section-nav a { font-size:12px; }
.floating-nav { position:sticky; top:calc(var(--masthead-height,53px) + 12px); z-index:4; width:max-content; max-width:100%; flex-wrap:nowrap; gap:3px; padding:6px; margin:0 0 25px; border:1px solid rgba(222,226,231,.85); border-radius:999px; background:rgba(255,255,255,.94); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); box-shadow:0 4px 20px rgba(35,48,60,.08); overflow-x:auto; scrollbar-width:none; }
.floating-nav::-webkit-scrollbar { display:none; }
.floating-nav a { font-size:14px; flex-shrink:0; padding:7px 12px; border-radius:999px; line-height:1.5; color:#65717c; transition:background .15s,color .15s; }
.floating-nav a:hover { background:#f3f5f7; color:#315b7d; text-decoration:none; }
.floating-nav a.active { color:#a72b3f; background:#fbecee; font-weight:700; }
.floating-nav a:focus-visible { outline:none; box-shadow:inset 0 0 0 2px #9ec4dc; }
.floating-nav-label { flex-shrink:0; padding:0 10px; font-size:10px; color:#8b939b; letter-spacing:1px; text-transform:uppercase; }
html:has(.floating-nav) { scroll-padding-top:var(--section-offset,130px); }
.publication-year { scroll-margin-top:12px; }
.news-archive { margin:12px 0 0; }
.news-archive summary { color:var(--link); cursor:pointer; font-size:13px; width:fit-content; }
.news-archive summary:hover { text-decoration:underline; }
.page-intro { color:var(--muted); }
.gallery-group { margin-top:38px; }
.gallery-group h3 { color:var(--link); font-size:21px; margin-bottom:4px; }
.gallery-group > .muted { margin:0 0 22px; font-size:14px; }
.gallery-life > summary { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:20px 22px; border:1px solid var(--line); border-radius:14px; background:var(--surface,#f7f9fb); cursor:pointer; list-style:none; }
.gallery-life > summary::-webkit-details-marker { display:none; }
.gallery-life > summary:focus-visible { outline:2px solid var(--link); outline-offset:4px; }
.life-title { display:block; color:var(--link); font-size:21px; font-weight:700; }
.life-description { display:block; margin-top:4px; font-size:14px; color:var(--muted); }
.life-action { display:flex; align-items:center; gap:10px; flex-shrink:0; color:var(--link); font-size:13px; font-weight:600; }
.life-chevron { font-size:20px; }
.life-collapse,.gallery-life[open] .life-expand { display:none; }
.gallery-life[open] .life-collapse { display:inline; }
.gallery-life[open] .life-chevron { transform:rotate(180deg); }
.life-albums { padding-top:22px; }
html[data-theme="dark"] .gallery-life > summary { background:#1a1d21; }
@media(max-width:440px) { .gallery-life > summary { padding:16px; gap:10px; } .life-action { font-size:12px; gap:6px; } }
.gallery-empty { background:#faf9f8; border:1px solid #ece9e6; border-radius:10px; padding:32px 24px; color:#83817f; font-size:14px; }
.gallery-album { scroll-margin-top:12px; margin:0 0 28px; padding:22px; border:1px solid #e8e3df; border-radius:16px; background:#faf9f7; }
.album-heading { display:flex; align-items:center; gap:14px; margin-bottom:18px; }
.album-heading::after { content:""; height:1px; background:#e5dfd9; flex:1; }
.album-heading h4 { margin:0; color:#6f4951; font-size:15px; font-weight:650; letter-spacing:.2px; }
.gallery-grid { --photo-gap:18px; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--photo-gap); align-items:start; }
.gallery-grid--masonry { grid-auto-rows:1px; row-gap:0; }
.gallery-grid--pair { grid-template-columns:repeat(2,minmax(0,1fr)); }
.gallery-photo { min-width:0; margin:0; padding:8px 8px 0; border:1px solid #e7e1dc; border-radius:10px; background:#fff; box-shadow:0 3px 10px rgba(55,40,33,.045); }
.gallery-image { position:relative; display:block; border-radius:5px; overflow:hidden; background:#f0eeeb; }
.gallery-image img { width:100%; height:auto; display:block; transition:opacity .2s; }
.gallery-image:hover img { opacity:.92; }
.photo-expand { position:absolute; bottom:8px; right:8px; display:grid; place-items:center; width:26px; height:26px; border-radius:50%; color:#fff; background:rgba(34,40,46,.65); font-size:17px; opacity:0; transition:opacity .2s; }
.gallery-image:hover .photo-expand,.gallery-image:focus-visible .photo-expand { opacity:1; }
.gallery-image:focus-visible { outline:2px solid #b83246; outline-offset:3px; }
.gallery-photo figcaption { font-size:13px; line-height:1.55; color:#74706d; padding:10px 4px 12px; }
.photo-viewer { max-width:94vw; max-height:94vh; padding:42px 20px 16px; border:0; border-radius:10px; background:#fff; }
.photo-viewer::backdrop { background:rgba(18,23,28,.85); }
.photo-viewer figure { margin:0; }
.photo-viewer img { display:block; max-width:85vw; max-height:75vh; object-fit:contain; margin:auto; }
.photo-viewer figcaption { text-align:center; padding-top:10px; }
.photo-close { position:absolute; right:8px; top:4px; width:36px; height:36px; border:0; background:transparent; color:var(--ink); font-size:28px; cursor:pointer; }
@media(prefers-reduced-motion:reduce) { .gallery-image img { transition:none; } }
@media(prefers-reduced-motion:no-preference) { html:has(.floating-nav) { scroll-behavior:smooth; } }
.page-layout { display:grid; grid-template-columns:218px minmax(0,1fr); gap:46px; max-width:var(--width); margin:0 auto; padding:27px 20px 0; }
.profile { position:sticky; top:83px; align-self:start; padding-top:10px; }
.portrait { width:168px; height:168px; object-fit:cover; object-position:center 12%; border-radius:50%; border:1px solid #eee; padding:4px; background:white; display:block; margin:0 0 17px; }
.profile h1 { font-family:var(--serif); font-size:25px; font-weight:700; color:#2f3439; margin-bottom:10px; }
.profile h1 span { display:block; font-size:16px; font-weight:400; letter-spacing:2px; color:#666b70; margin-top:3px; }
.affiliation { font-size:14px; line-height:1.65; margin:0 0 12px; max-width:203px; }
.profile-interests { font-size:14px; line-height:1.6; margin-bottom:22px; }
.contact-links { list-style:none; padding:0; margin:0; font-size:13px; }
.contact-links li { margin:0 0 10px; }
.contact-row { display:grid; grid-template-columns:17px minmax(0,1fr); align-items:center; column-gap:8px; color:#454a50; line-height:20px; }
.contact-icon { display:block; width:16px; height:16px; fill:currentColor; justify-self:center; }
.contact-row>span { display:block; }
main { min-width:0; }
#about { margin-bottom:24px; }
#about>p { line-height:1.65; }
#about>p a { text-decoration:underline; }
.email-contacts { border-top:1px solid var(--line); margin-top:20px; padding-top:14px; font-size:14px; }
.email-contact-row { display:grid; grid-template-columns:76px minmax(0,1fr); gap:12px; margin-bottom:7px; }
.email-label { color:var(--muted); font-weight:600; }
.email-options { display:flex; flex-wrap:wrap; gap:4px 20px; }
.email-contacts a { overflow-wrap:anywhere; text-decoration:underline; }
.email-note { display:inline-block; margin-left:12px; font-size:13px; color:var(--muted); }
.scholar-stats { display:flex; flex-wrap:wrap; align-items:center; gap:8px; font-size:13px; color:#676e75; margin-top:18px; }
.scholar-source { display:inline-flex; align-items:center; gap:6px; margin-right:3px; }
.metric-pill { display:inline-flex; overflow:hidden; align-items:stretch; border:1px solid #e1e8ef; border-radius:6px; line-height:1.8; }
.metric-pill span { padding:2px 8px; background:#f3f6f8; color:#5e6a74; }
.metric-pill strong { padding:2px 8px; background:#eaf2fa; font-variant-numeric:tabular-nums; }
.metric-pill:hover { text-decoration:none; border-color:#a5bdcf; }
.news-celebration { font-style:normal; font-size:.95em; }
.scholar-stats strong { color:#454c52; }
.metrics-date { display:inline-block; margin-left:4px; font-size:12px; color:#626d78; }
.news-list { padding-left:24px; margin:0; }
.news-list li { padding-left:2px; margin:8px 0; line-height:1.65; }
.news-list time { font-style:italic; font-weight:700; margin-right:10px; font-variant-numeric:tabular-nums; }
.news-list time:after { content:':'; }
.news-list a { text-decoration:underline; }
.award-text { color:var(--red); }
.oral-text { color:var(--purple); }
.year-heading { display:flex; align-items:center; gap:13px; margin:23px 0 15px; font-size:15px; }
.year-heading:after { content:''; flex:1; height:1px; background:#eee; }
.year-heading span { background:#f2f4f5; color:#5e6a74; border:1px solid #e8ecef; border-radius:20px; padding:2px 14px; line-height:1.7; font-size:13px; letter-spacing:.5px; }
.publications-list { padding:0 0 0 23px; margin:0; }
.publication { padding-left:2px; margin:0 0 22px; }
.publication::marker { font-size:12px; color:#666; }
.publication h4 { font-size:16px; font-weight:700; line-height:1.55; margin:0 0 6px; }
.publication h4 a { color:#354c60; }
.authors { font-size:15px; color:#62676d; line-height:1.65; margin:0 0 8px; }
.authors strong { color:#3d4349; }
.corresponding-author { display:inline-flex; vertical-align:super; margin-left:2px; line-height:0; }
.corresponding-author .contact-icon { width:11px; height:11px; }
.paper-meta { display:flex; flex-wrap:wrap; gap:5px 7px; align-items:center; margin:0; line-height:1.65; }
.badge { display:inline-flex; align-items:center; justify-content:center; border-radius:999px; padding:2px 9px; font-size:12px; font-weight:700; line-height:1.6; white-space:normal; }
.badge.venue { background:#eaf1f8; color:#315e88; }
.badge.ccf-a { background:#e8f0fa; color:#345e91; }
.badge.ccf-b { background:#e8f4ee; color:#36735c; }
.badge.award { background:#fbe8ec; color:var(--red); }
.badge.oral { background:#f0e6fa; color:var(--purple); }
.badge.deployed { gap:4px; background:#fff0d4; color:#87500d; border:1px solid #edc578; padding:1px 9px; box-shadow:0 1px 2px #a56b1310; }
.badge.deployed span { font-size:11px; line-height:1; }
.badge.status { background:#f0f1f4; color:#6b7080; }
.paper-link { font-size:12px; margin-left:3px; }
.resource-icon-link { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; color:#454a50; border-radius:50%; }
.resource-icon-link:hover { color:var(--link); background:#eaf1f8; }
.github-stars { display:inline-flex; align-items:center; gap:5px; padding:1px 7px; border:1px solid #e2e5e8; border-radius:5px; background:#f7f8fa; color:#555e67; font-size:10.5px; font-weight:600; line-height:1.7; font-variant-numeric:tabular-nums; white-space:nowrap; }
.github-stars>span:first-child { color:#a57c26; }
.github-stars:hover { background:#fff6e5; border-color:#e4cea0; text-decoration:none; }
.software-list h4 { display:flex; flex-wrap:wrap; align-items:center; gap:5px 7px; }
.resource-icon-link .contact-icon { width:18px; height:18px; }
.patents-list { list-style:none; padding:0; margin:0; }
.patent { padding:0 0 19px; margin:0 0 19px; border-bottom:1px solid var(--line); }
.patent:last-child { border-bottom:0; padding-bottom:0; }
.patent h3 { font-size:15px; color:#354c60; margin-bottom:6px; line-height:1.65; }
.patent-applicant { font-size:12px; color:var(--muted); margin:0 0 9px; }
.patent-number,.patent-date { font-size:11px; color:#6e757c; font-variant-numeric:tabular-nums; }
.badge.patent-granted { color:#28705c; background:#e6f4ee; }
.badge.patent-filed { color:#496b91; background:#eaf1f8; }
.dated-list { list-style:none; padding:0; margin:0; }
.dated-list li { display:grid; grid-template-columns:132px minmax(0,1fr); gap:16px; margin:15px 0; font-size:16px; line-height:1.65; }
.dated-list .date { color:#606c78; font-size:14px; font-variant-numeric:tabular-nums; padding-top:2px; }
.dated-list h3 { font-size:17px; }
.dated-list p { font-size:15px; margin:5px 0 0; }
.honor-group { margin-top:24px; }
.honor-group + .honor-group { border-top:1px solid var(--line); padding-top:22px; margin-top:28px; }
.honor-group-title { font-size:18px; color:var(--link); margin:0 0 16px; }
.honor-cn { margin-left:9px; color:#626d78; font-size:14px; }
.honor-detail { display:block; color:#626d78; font-size:14px; margin-top:1px; }
.experience-list li { margin:22px 0; }
.education-list li { margin:22px 0; }
.school { display:grid; grid-template-columns:minmax(0,1fr) 112px; column-gap:24px; min-width:0; }
.school h3,.school p { grid-column:1; }
.school-logo { grid-column:2; grid-row:1 / 3; align-self:center; justify-self:center; }
.school-logo img { display:block; width:56px; height:56px; object-fit:contain; }
.school-logo--next img { width:100px; }
.employer { display:grid; grid-template-columns:minmax(0,1fr) 112px; align-items:center; gap:24px; min-width:0; }
.employer>div { grid-column:1; grid-row:1; }
.employer-heading { display:flex; align-items:center; flex-wrap:wrap; gap:7px 10px; }
.talent-badge { display:inline-flex; align-items:center; gap:7px; max-width:100%; padding:6px 12px; border:1px solid #863246; border-radius:9px; background:linear-gradient(120deg,#8e263c,#622b45); color:#fff7ed; line-height:1.5; box-shadow:0 3px 8px #64263a18; }
.talent-badge svg { width:18px; height:18px; fill:#f2ce80; flex-shrink:0; }
.talent-badge strong { font-size:14px; letter-spacing:.3px; }
.talent-badge > span { font-size:12px; font-weight:500; color:#f8e8d7; }
.company-logo { grid-column:2; grid-row:1; width:112px; height:54px; display:flex; align-items:center; justify-content:center; }
.company-logo img { display:block; width:100px; max-height:48px; object-fit:contain; }
.company-logo--taotian img { width:44px; height:44px; }
.company-logo--tongyi img { width:44px; height:44px; }
.company-logo--wechat img { width:48px; height:44px; }
.company-logo--noah img { width:48px; height:48px; }
.company-logo--kuaishou img { width:48px; height:48px; }
.position { color:#5c6874; font-size:15px!important; }
.service-group { margin-top:23px; }
.service-group + .service-group { margin-top:27px; padding-top:23px; border-top:1px solid var(--line); }
.service-group-title { color:#354c60; font-size:18px; margin:0 0 15px; }
.service-entry-heading { display:flex; flex-wrap:wrap; gap:7px 12px; align-items:center; }
.service-entry-heading h4,.software-list h4,.review-group h4 { font-size:17px; }
.service-role { display:inline-flex; align-items:center; color:#455d72; background:#edf2f6; border:1px solid #dce5ed; border-radius:999px; padding:3px 10px; font-size:12px; font-weight:600; line-height:1.5; }
.service-description { color:#5d6975; font-size:14px!important; margin:7px 0 0!important; line-height:1.7; }
.workshop-list li { margin:17px 0; }
.software-list { list-style:none; margin:0; padding:0; }
.software-list>li { padding:17px 19px; margin:12px 0; background:#fff; border:1px solid #e0e7ed; border-radius:12px; }
.review-group { display:grid; grid-template-columns:132px minmax(0,1fr); gap:16px; margin:16px 0; }
.review-group h4 { font-weight:600; }
.review-role { color:#626d78; font-size:13px; }
.venue-list { display:flex; flex-wrap:wrap; align-content:start; gap:8px; list-style:none; padding:0; margin:0; font-size:14px; }
.venue-list li { line-height:1.65; padding:3px 9px; background:#fff; border:1px solid #e0e7ed; border-radius:6px; }
footer { border-top:1px solid var(--line); padding:20px 0 28px; font-size:11px; color:#8b9298; display:flex; flex-wrap:wrap; justify-content:space-between; gap:14px; }
@media(min-width:1450px) { :root{--width:1300px} .page-layout{grid-template-columns:218px minmax(0,1fr);gap:46px} }
@media(max-width:1100px) { .nav-wrap{gap:28px} nav,.nav-sections{gap:17px} .nav-cv{padding-left:17px} .page-layout{grid-template-columns:190px minmax(0,1fr);gap:30px} }
@media(max-width:800px) {
  .nav-wrap { display:block; padding:11px 20px 0; }
  .brand { font-size:16px; }
  nav { gap:14px; padding:9px 0 12px; }
  .nav-sections { overflow-x:auto; flex:1; gap:16px; scrollbar-width:none; }
  .nav-sections::-webkit-scrollbar { display:none; }
  .nav-cv { padding:5px 0 5px 14px; }
  .masthead nav a { font-size:15px; }
  .section-nav { gap:7px 15px; padding:0 0 14px; margin-bottom:20px; }
  .section-nav a { font-size:11px; }
  .floating-nav { top:calc(var(--masthead-height,85px) + 8px); gap:2px; padding:5px; margin-bottom:22px; }
  .floating-nav a { padding:7px 10px; font-size:13px; }
  .floating-nav-label { padding:0 6px; font-size:9px; }
  .gallery-album { padding:14px; border-radius:12px; }
  .gallery-grid,.gallery-grid--pair { --photo-gap:12px; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .gallery-photo { padding:5px 5px 0; }
  .gallery-photo figcaption { font-size:12px; padding:8px 2px; }
  .page-layout { display:block; padding:24px 20px 0; }
  .profile { position:static; display:grid; grid-template-columns:96px minmax(0,1fr); column-gap:20px; padding:0 0 21px; margin-bottom:23px; border-bottom:1px solid var(--line); }
  .portrait { width:96px; height:96px; grid-column:1; grid-row:1/4; margin:0; padding:3px; }
  .profile h1 { grid-column:2; font-size:22px; margin-bottom:7px; }
  .profile h1 span { font-size:14px; margin-top:3px; }
  .affiliation { grid-column:2; font-size:12px; max-width:none; margin:0; }
  .profile-interests { display:none; }
  .contact-links { grid-column:1/-1; display:flex; flex-wrap:wrap; gap:10px 16px; margin-top:15px; font-size:12px; }
  .contact-links li { margin:0; }
  .contact-links li:first-child { flex-basis:100%; }
  .contact-row { column-gap:6px; grid-template-columns:16px minmax(0,1fr); }
  .contact-icon { width:15px; height:15px; }
  body { font-size:15px; }
  section { margin-bottom:28px; scroll-margin-top:24px; }
  .home-section { padding:18px 14px; margin-bottom:18px; border-radius:12px; }
  .email-contact-row { grid-template-columns:1fr; gap:3px; margin-bottom:12px; }
  .email-note { display:block; margin-left:0; margin-top:2px; }
  h2 { font-size:20px; }
  .scholar-stats { font-size:12px; }
  .metrics-date { flex-basis:100%; display:block; margin-left:0; margin-top:2px; }
  .news-list { padding-left:20px; }
  .news-list li { font-size:15px; }
  .publications-list { padding-left:18px; }
  .publication h4 { font-size:16px; }
  .authors { font-size:14px; }
  .badge { font-size:11px; }
  .review-group { grid-template-columns:100px minmax(0,1fr); gap:12px; }
  .service-entry-heading h4,.software-list h4,.review-group h4 { font-size:16px; }
  .venue-list { font-size:14px; gap:7px; }
  .dated-list li { grid-template-columns:78px minmax(0,1fr); gap:12px; font-size:15px; }
  .dated-list .date { font-size:13px; }
  .dated-list h3 { font-size:16px; }
  .dated-list p { font-size:15px; }
  .school { grid-template-columns:minmax(0,1fr) 44px; column-gap:12px; }
  .school-logo { grid-row:1; }
  .school-logo img { width:40px; height:40px; }
  .school--next { grid-template-columns:minmax(0,1fr) 64px; }
  .school-logo--next img { width:64px; }
  .school p { grid-column:1 / -1; }
  .employer { grid-template-columns:minmax(0,1fr) 70px; gap:12px; }
  .company-logo { width:70px; height:48px; }
  .company-logo img { max-width:70px; }
  .company-logo--taotian img,.company-logo--tongyi img { width:36px; height:36px; }
  .company-logo--noah img { width:48px; height:48px; }
.company-logo--kuaishou img { width:40px; height:40px; }
  .company-logo--wechat img { width:40px; height:36px; }
  .honor-cn { display:block; margin:3px 0 0; }
  footer { font-size:10px; }
}
@media(prefers-reduced-motion:reduce) { html{scroll-behavior:auto} }
@media print { .masthead,.skip-link{display:none}.page-layout{padding:0;grid-template-columns:170px 1fr;gap:25px}.profile{position:static}.publication,.dated-list li{break-inside:avoid}a{color:inherit}footer{display:none}body{font-size:10pt} }

@media(max-width:440px) { .gallery-grid,.gallery-grid--pair { grid-template-columns:1fr; } }

/* A single event photo has a centered frame, without an empty second column. */
.gallery-grid--single { grid-template-columns:minmax(0,1fr); max-width:760px; margin-inline:auto; }

/* Readable project rows and a consistent, restrained role palette. */
.software-heading { display:flex; align-items:center; flex-wrap:wrap; gap:8px 12px; }
.software-heading h4 { min-width:0; }
.software-heading h4 a { display:inline-flex; align-items:center; gap:9px; }
.software-heading .github-stars { margin-left:auto; font-size:12px; }
.software-heading .contact-icon { width:19px; height:19px; flex-shrink:0; }
.service-role--organizer { color:#285c8c; background:#e9f2fb; border-color:#cbdff0; }
.service-role--volunteer { color:#286858; background:#eaf5ef; border-color:#cce6d8; }
.service-role--lead { color:#69458c; background:#f2ecf8; border-color:#ded0ed; }
.service-role--contributor { color:#455d72; background:#edf2f6; border-color:#dce5ed; }
@media(max-width:520px) {
  .dated-list li { grid-template-columns:minmax(0,1fr); gap:5px; margin:22px 0; }
  .dated-list .date { padding-top:0; }
  .review-group { grid-template-columns:minmax(0,1fr); gap:9px; margin:20px 0; }
  .review-group > div { display:flex; align-items:baseline; gap:10px; }
  .software-list>li { padding:15px; }
  .software-heading { gap:8px; }
  .employer { grid-template-columns:minmax(0,1fr) 48px; gap:10px; }
  .company-logo { width:48px; }
  .company-logo img { max-width:48px; }
}

/* Research highlights under the biography. */
.stat-strip { list-style:none; display:flex; flex-wrap:wrap; gap:10px; padding:0; margin:20px 0 10px; }
.stat-strip a { display:flex; align-items:baseline; gap:8px; padding:7px 12px; border:1px solid #e3e9ee; border-radius:9px; background:linear-gradient(180deg,#fbfcfd,#f3f6f9); color:var(--ink); transition:transform .2s,box-shadow .2s,border-color .2s; }
.stat-strip a:hover { text-decoration:none; border-color:#c9d7e3; transform:translateY(-2px); box-shadow:0 8px 20px rgba(35,60,85,.08); }
.stat-strip strong { font-size:18px; line-height:1.4; color:#24435c; font-variant-numeric:tabular-nums lining-nums; }
.stat-strip span { font-size:14px; color:var(--muted); }
.stat-note { display:flex; align-items:center; gap:6px; margin:0; font-size:12px; color:var(--muted); }
.stat-note .contact-icon { width:13px; height:13px; }

/* Selected publication cards. */
.paper-cards { list-style:none; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; padding:0; margin:6px 0 0; }
.paper-card { display:flex; flex-direction:column; min-width:0; overflow:hidden; border:1px solid #e3e8ed; border-radius:14px; background:#fff; transition:transform .2s,box-shadow .2s,border-color .2s; }
.paper-card:hover { transform:translateY(-3px); border-color:#cfdae4; box-shadow:0 12px 28px rgba(30,50,70,.09); }
.paper-cover { position:relative; display:flex; flex-direction:column; justify-content:flex-end; aspect-ratio:16/5.2; padding:16px 20px; overflow:hidden; color:#fff; background:var(--cover,#2d4f6c); }
.paper-cover::before { content:""; position:absolute; inset:0; background:radial-gradient(circle at 88% 12%,rgba(255,255,255,.22),transparent 42%),radial-gradient(circle at 8% 120%,rgba(255,255,255,.14),transparent 50%); }
.paper-cover::after { content:""; position:absolute; right:-30px; top:-30px; width:150px; height:150px; border:1px solid rgba(255,255,255,.2); border-radius:50%; box-shadow:0 0 0 22px rgba(255,255,255,.05),0 0 0 46px rgba(255,255,255,.04); }
.paper-cover:hover { text-decoration:none; }
.paper-cover img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; background:#fff; }
.cover-name { position:relative; font-family:var(--serif); font-size:30px; font-weight:700; line-height:1.1; letter-spacing:-.01em; }
.cover-venue { position:relative; margin-top:4px; font-size:12px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; opacity:.82; }
.cover-1 { --cover:linear-gradient(135deg,#8e2a40,#c2563e); }
.cover-2 { --cover:linear-gradient(135deg,#2d4f6c,#4f7fa6); }
.cover-3 { --cover:linear-gradient(135deg,#4b2f73,#7d5aa8); }
.cover-4 { --cover:linear-gradient(135deg,#1f5b5a,#3f8f84); }
.cover-5 { --cover:linear-gradient(135deg,#34495e,#5d7b93); }
.cover-6 { --cover:linear-gradient(135deg,#6b3a28,#a8693f); }
.cover-7 { --cover:linear-gradient(135deg,#2c3e70,#5468a8); }
.cover-8 { --cover:linear-gradient(135deg,#3d5a3a,#6d8f58); }
.paper-card-body { display:flex; flex-direction:column; flex:1; padding:15px 18px 14px; }
.paper-tags:empty { display:none; }
.paper-tags { display:flex; flex-wrap:wrap; gap:5px 6px; margin:0 0 9px; }
.paper-card h3 { font-size:15.5px; line-height:1.45; margin:0 0 7px; }
.paper-card h3 a { color:#2f4a60; }
.paper-summary { font-size:14px; line-height:1.6; color:#5b6670; margin:0 0 12px; }
.paper-card-foot { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:auto 0 0; padding-top:10px; border-top:1px solid var(--line); font-size:12.5px; color:var(--muted); }
.paper-actions { display:flex; gap:14px; font-weight:600; }
.section-more { margin:16px 0 0; font-size:14px; font-weight:600; }
.honor-more { margin-top:8px; }
.honor-more summary { width:fit-content; color:var(--link); cursor:pointer; font-size:14px; }
.honor-more summary:hover { text-decoration:underline; }

/* Publication search and filters. */
.pub-tools { position:relative; margin:4px 0 20px; }
.pub-search { display:flex; align-items:center; gap:10px; padding:0 14px; border:1px solid #dbe3ea; border-radius:12px; background:#fff; transition:border-color .15s,box-shadow .15s; }
.pub-search:focus-within { border-color:#8fb1cc; box-shadow:0 0 0 4px rgba(80,130,175,.14); }
.pub-search .contact-icon { width:18px; height:18px; color:#7a8794; flex-shrink:0; }
.pub-search input { flex:1; min-width:0; height:46px; border:0; outline:0; background:transparent; color:var(--ink); font:inherit; font-size:15px; }
.pub-search input::-webkit-search-cancel-button { cursor:pointer; }
.pub-search kbd { padding:1px 7px; border:1px solid #dde3e8; border-bottom-width:2px; border-radius:6px; color:#7a8794; font:12px/1.6 var(--sans); }
.pub-filters { display:flex; flex-wrap:wrap; gap:7px; margin-top:12px; }
.pub-filters button { padding:5px 13px; border:1px solid #dde4ea; border-radius:999px; background:#fff; color:#55626e; font:600 13px/1.5 var(--sans); cursor:pointer; transition:background .15s,color .15s,border-color .15s; }
.pub-filters button:hover { border-color:#b8c9d7; color:var(--link); }
.pub-filters button[aria-pressed="true"] { background:#2d4f6c; border-color:#2d4f6c; color:#fff; }
.pub-filters button:focus-visible,.action-chip:focus-visible { outline:3px solid #9ec4dc; outline-offset:2px; }
.pub-count { margin:10px 0 0; font-size:13px; color:var(--muted); }
.pub-empty { padding:28px; border:1px dashed #d8e0e7; border-radius:12px; color:var(--muted); text-align:center; }
.publication[hidden],.publication-year[hidden],.year-nav[hidden] { display:none; }
.search-snippet { margin:-2px 0 9px; padding:7px 11px; border-left:3px solid #c9d9e7; border-radius:0 8px 8px 0; background:#f6f9fb; color:#56616c; font-size:13.5px; line-height:1.6; }
.search-results { padding-left:23px; }
.pub-examples { display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; margin:10px 0 0; font-size:12.5px; color:var(--muted); }
.pub-examples[hidden] { display:none; }
.pub-examples button { padding:2px 10px; border:1px dashed #c7d5e2; border-radius:999px; background:transparent; color:var(--link); font:500 12.5px/1.6 var(--sans); cursor:pointer; }
.pub-examples button:hover { border-style:solid; background:#f1f6fb; }
.pub-count.is-semantic { color:#5b4a8a; font-weight:600; }
.snippet-label { display:inline-block; margin-right:8px; padding:0 7px; border-radius:999px; background:#ece7f8; color:#5b4a8a; font-size:11px; font-weight:700; letter-spacing:.02em; vertical-align:1px; }
html[data-theme="dark"] .pub-examples button { border-color:#3a4a5a; }
html[data-theme="dark"] .pub-examples button:hover { background:#22303e; }
html[data-theme="dark"] .pub-count.is-semantic { color:#c7b6f0; }
html[data-theme="dark"] .snippet-label { background:#2f2745; color:#d4c6f5; }
.related-tag { display:inline-block; margin-left:8px; padding:1px 8px; border-radius:999px; background:#eef3f8; color:#4f6a82; font-size:11px; font-weight:600; vertical-align:2px; }
html[data-theme="dark"] .related-tag { background:#22303e; color:#a9c4dc; }
html[data-theme="dark"] .search-snippet { background:#1c232b; border-left-color:#3a5570; color:#aab5c0; }
.publication mark { padding:0 1px; border-radius:3px; background:#fff0b8; color:inherit; }
/* Paper, code and citation actions share one compact button style. */
.action-chip { display:inline-flex; align-items:center; gap:5px; height:24px; padding:0 9px; border:1px solid #dfe4e9; border-radius:7px; background:#fff; color:#4d5762; font:600 12px/1 var(--sans); white-space:nowrap; cursor:pointer; transition:background .15s,border-color .15s,color .15s; }
.action-chip .contact-icon { width:13px; height:13px; }
.action-chip:hover { background:#f1f6fb; border-color:#c3d4e3; color:var(--link); text-decoration:none; }
.repo-button { padding:0; overflow:hidden; }
.repo-main { display:inline-flex; align-items:center; gap:5px; height:100%; padding:0 8px 0 9px; }
.repo-stars { display:inline-flex; align-items:center; gap:3px; height:100%; padding:0 8px; border-left:1px solid #dfe4e9; background:#f6f8fa; color:#4d5762; font-variant-numeric:tabular-nums; }
.repo-stars span { color:#b8862b; font-size:11px; }
.repo-button:hover .repo-stars { border-left-color:#c3d4e3; background:#e8f0f8; }
.bibtex-button.copied { background:#e6f4ee; border-color:#bfe0cf; color:#28705c; }

/* Sections ease in as they scroll into view; only when JavaScript and motion are available. */
@media(prefers-reduced-motion:no-preference) {
  .reveal { opacity:0; transform:translateY(14px); transition:opacity .6s ease,transform .6s ease; }
  .reveal.is-visible { opacity:1; transform:none; }
}
@media(prefers-reduced-motion:reduce) { .stat-strip a,.paper-card { transition:none; } .stat-strip a:hover,.paper-card:hover { transform:none; } }

@media(max-width:800px) {
  .paper-cards { grid-template-columns:minmax(0,1fr); gap:14px; }
  .cover-name { font-size:26px; }
  .pub-search kbd { display:none; }
  .profile h1 { font-size:23px; }
}

/* Light and dark theme switch in the header. */
.theme-toggle { flex-shrink:0; display:inline-grid; place-items:center; width:36px; height:36px; margin-left:-8px; padding:0; border:1px solid #e1e6ea; border-radius:50%; background:transparent; color:#5d6670; cursor:pointer; transition:background .15s,color .15s,border-color .15s; }
.theme-toggle:hover { background:#f2f5f7; color:#2e536c; }
.theme-toggle:focus-visible { outline:3px solid #9ec4dc; outline-offset:2px; }
.theme-toggle svg { width:17px; height:17px; }
.icon-moon { fill:currentColor; }
.icon-sun { display:none; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; }
.icon-sun circle { fill:currentColor; stroke:none; }
html[data-theme="dark"] .icon-moon { display:none; }
html[data-theme="dark"] .icon-sun { display:block; }
html[data-theme="dark"] .theme-toggle { border-color:#343b43; color:#c9d2da; }
html[data-theme="dark"] .theme-toggle:hover { background:#232930; color:#f2d48a; }
@media(max-width:800px) { .theme-toggle { width:32px; height:32px; margin-left:0; } }

/* Dark theme: only when chosen with the header toggle; the site is light by default. */
html[data-theme="dark"] { color-scheme:dark; --bg:#16191d; --ink:#d3d8dd; --muted:#98a3ae; --link:#8cbbe0; --line:#2a3037; --red:#f0828f; --purple:#c7a3ec; }
html[data-theme="dark"] .contact-icon [fill="white"] { fill:var(--bg); }
html[data-theme="dark"] .contact-icon [stroke="white"] { stroke:var(--bg); }
html[data-theme="dark"] h2,html[data-theme="dark"] .profile h1,html[data-theme="dark"] .brand { color:#eef1f4; }
html[data-theme="dark"] .profile h1 span,html[data-theme="dark"] .contact-row,html[data-theme="dark"] nav a,html[data-theme="dark"] .dated-list .date,html[data-theme="dark"] .honor-cn,html[data-theme="dark"] .honor-detail,html[data-theme="dark"] .position,html[data-theme="dark"] .service-description,html[data-theme="dark"] .authors,html[data-theme="dark"] .review-role,html[data-theme="dark"] .metrics-date,html[data-theme="dark"] .patent-number,html[data-theme="dark"] .patent-date { color:#a6b0ba; }
html[data-theme="dark"] .authors strong,html[data-theme="dark"] .publication h4 a,html[data-theme="dark"] .patent h3,html[data-theme="dark"] .paper-card h3 a,html[data-theme="dark"] .service-group-title,html[data-theme="dark"] .honor-group-title { color:#dfe7ee; }
html[data-theme="dark"] nav a:hover,html[data-theme="dark"] nav a.active,html[data-theme="dark"] .nav-cv { color:#9ccaf0; }
html[data-theme="dark"] .masthead { background:rgba(22,25,29,.85); border-bottom-color:#262b31; }
html[data-theme="dark"] .nav-cv { border-left-color:#343b43; }
html[data-theme="dark"] .home-section--tinted { background:#1c2025; border-color:#262c33; }
html[data-theme="dark"] .portrait { border-color:#2c3239; background:#1c2025; }
html[data-theme="dark"] .floating-nav { background:rgba(28,32,37,.9); border-color:#2e353d; box-shadow:0 4px 20px rgba(0,0,0,.35); }
html[data-theme="dark"] .floating-nav a { color:#a6b0ba; }
html[data-theme="dark"] .floating-nav a:hover { background:#262c33; color:#cfe3f3; }
html[data-theme="dark"] .floating-nav a.active { background:#3a2228; color:#f4a3ae; }
html[data-theme="dark"] .stat-strip a { background:linear-gradient(180deg,#1f242a,#1b1f24); border-color:#2c333b; }
html[data-theme="dark"] .stat-strip a:hover { border-color:#3e4b58; box-shadow:0 8px 22px rgba(0,0,0,.35); }
html[data-theme="dark"] .stat-strip strong { color:#cfe3f3; }
html[data-theme="dark"] .paper-card { background:#1c2025; border-color:#2a3138; }
html[data-theme="dark"] .paper-card:hover { border-color:#3a4652; box-shadow:0 12px 28px rgba(0,0,0,.4); }
html[data-theme="dark"] .paper-summary { color:#a6b0ba; }
html[data-theme="dark"] .badge.venue,html[data-theme="dark"] .badge.ccf-a { background:#21344a; color:#a9cdee; }
html[data-theme="dark"] .badge.ccf-b { background:#1d3a2f; color:#97d5b8; }
html[data-theme="dark"] .badge.award { background:#43222a; color:#f5a5b0; }
html[data-theme="dark"] .badge.oral { background:#33264a; color:#d4b6f2; }
html[data-theme="dark"] .badge.deployed { background:#3d2e14; color:#f0c97e; border-color:#6b5226; }
html[data-theme="dark"] .badge.status { background:#2a2e35; color:#b0b7c3; }
html[data-theme="dark"] .badge.patent-granted { background:#1d3a2f; color:#97d5b8; }
html[data-theme="dark"] .badge.patent-filed { background:#21344a; color:#a9cdee; }
html[data-theme="dark"] .year-heading span { background:#22272d; border-color:#2e353d; color:#b4bec8; }
html[data-theme="dark"] .year-heading:after { background:#2a3037; }
html[data-theme="dark"] .github-stars,html[data-theme="dark"] .action-chip { background:#1f242a; border-color:#333b44; color:#c3ccd5; }
html[data-theme="dark"] .repo-stars { background:#262c33; border-left-color:#333b44; color:#c3ccd5; }
html[data-theme="dark"] .repo-stars span { color:#e3b65a; }
html[data-theme="dark"] .action-chip:hover { background:#21344a; border-color:#35506a; color:#a9cdee; }
html[data-theme="dark"] .repo-button:hover .repo-stars { background:#24384e; border-left-color:#35506a; }
html[data-theme="dark"] .github-stars:hover { background:#3a3020; border-color:#6b5a33; }
html[data-theme="dark"] .bibtex-button.copied { background:#1d3a2f; border-color:#2f5a47; color:#97d5b8; }
html[data-theme="dark"] .resource-icon-link { color:#b4bec8; }
html[data-theme="dark"] .resource-icon-link:hover { background:#21344a; }
html[data-theme="dark"] .software-list>li,html[data-theme="dark"] .venue-list li { background:#1a1e23; border-color:#2c333b; }
html[data-theme="dark"] .service-role,html[data-theme="dark"] .service-role--contributor { background:#232a31; border-color:#323b44; color:#b4c4d2; }
html[data-theme="dark"] .service-role--organizer { background:#1f3247; border-color:#2e4a66; color:#a9cdee; }
html[data-theme="dark"] .service-role--volunteer { background:#1d362e; border-color:#2c5345; color:#97d5b8; }
html[data-theme="dark"] .service-role--lead { background:#2e2541; border-color:#47395f; color:#d1b8ef; }
html[data-theme="dark"] .school-logo img,html[data-theme="dark"] .company-logo img { padding:4px; border-radius:10px; background:#f4f5f6; }
html[data-theme="dark"] .pub-search,html[data-theme="dark"] .pub-filters button { background:#1c2025; border-color:#2e353d; }
html[data-theme="dark"] .pub-search kbd { border-color:#3a424b; color:#98a3ae; }
html[data-theme="dark"] .pub-filters button { color:#b4bec8; }
html[data-theme="dark"] .pub-filters button[aria-pressed="true"] { background:#8cbbe0; border-color:#8cbbe0; color:#13202c; }
html[data-theme="dark"] .pub-empty { border-color:#323a42; }
html[data-theme="dark"] .publication mark { background:#5a4a14; }
html[data-theme="dark"] .gallery-album { background:#1a1d21; border-color:#2a2f35; }
html[data-theme="dark"] .album-heading h4 { color:#e6c3ca; }
html[data-theme="dark"] .album-heading::after { background:#2e3339; }
html[data-theme="dark"] .gallery-photo,html[data-theme="dark"] .photo-viewer { background:#202429; border-color:#30363d; }
html[data-theme="dark"] .gallery-photo figcaption { color:#a6b0ba; }
html[data-theme="dark"] .gallery-empty { background:#1a1d21; border-color:#2a2f35; }
html[data-theme="dark"] .skip-link { background:#16191d; }
html[data-theme="dark"] .photo-close { color:#d3d8dd; }
html[data-theme="dark"] .paper-cover--figure { background:#f3f4f6; border-bottom-color:#2a3138; }
html[data-theme="dark"] .cover-chip { background:rgba(16,20,25,.82); }

/* Paper figures as card covers: the whole figure stays visible on a white panel. */
.paper-cover--figure { justify-content:center; aspect-ratio:16/8.4; padding:14px 16px; background:#fff; border-bottom:1px solid #edf0f3; }
.paper-cover--figure::before,.paper-cover--figure::after { display:none; }
.paper-cover--figure img { position:static; width:100%; height:100%; object-fit:contain; transition:transform .35s ease; }
.paper-card:hover .paper-cover--figure img { transform:scale(1.03); }
.cover-chip { position:absolute; left:12px; top:12px; padding:2px 9px; border-radius:999px; background:rgba(28,40,52,.78); color:#fff; font:600 11.5px/1.6 var(--sans); letter-spacing:.02em; backdrop-filter:blur(4px); }
@media(prefers-reduced-motion:reduce) { .paper-cover--figure img { transition:none; } .paper-card:hover .paper-cover--figure img { transform:none; } }
