:root{--brand:#bc7a42;--brand-dark:#9e5f2e;--brand-pale:#fbf1e7;--ink:#4b4036;--muted:#85766a;--line:#eadbce;--page:#f7f1ea;--white:#fffdfa}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--page);color:var(--ink);font:15px/1.8 "Microsoft YaHei","Noto Sans SC",Arial,sans-serif}a{color:var(--brand-dark);text-decoration:none}a:hover{text-decoration:underline}.shell{width:min(1160px,calc(100% - 36px));margin:24px auto 48px;background:var(--white);box-shadow:0 3px 18px rgba(72,132,151,.10)}
.site-head{display:flex;align-items:center;gap:17px;padding:24px 34px 20px}.site-mark{display:grid;place-items:center;width:55px;height:55px;border-radius:50%;background:var(--brand-pale);border:1px solid #cde7ef;color:var(--brand-dark);font:700 20px/1 Arial}.brand-name{margin:0;color:#3a819f;font-size:25px;line-height:1.25}.brand-name span{font:400 17px Arial,sans-serif;color:#637b85;margin-left:7px}.brand-subtitle{margin:2px 0 0;color:var(--muted);font-size:13px}.main-nav{display:flex;flex-wrap:wrap;padding:0 34px;background:var(--brand)}.main-nav a{padding:11px 16px;color:#fff;font:500 14px/1.4 Arial,"Microsoft YaHei",sans-serif}.main-nav a:first-child{padding-left:0}.main-nav a:hover,.main-nav a.active{background:var(--brand-dark);text-decoration:none}.main-nav a:first-child:hover,.main-nav a:first-child.active{padding-left:16px;margin-left:-16px}
main{padding:0 34px 48px}.hero{display:grid;grid-template-columns:180px 1fr;gap:32px;align-items:center;padding:38px 0 31px;border-bottom:1px solid var(--line)}.hero-photo{width:160px;height:196px;object-fit:cover;object-position:center top;border:1px solid #cfe2e9;padding:4px;background:#fff}.eyebrow{margin:0 0 7px;color:var(--brand-dark);font:700 11px/1.4 Arial;letter-spacing:.12em}.hero h1{margin:0;color:#3f829d;font-size:32px;line-height:1.3}.hero h1 span{color:#607982;font:400 20px Arial,sans-serif}.hero .title{margin:9px 0 4px;font-weight:600}.hero .affiliation{margin:0;color:var(--muted)}.hero .contact{margin:14px 0 0;font:13px Arial,sans-serif}.hero .contact span{color:#a6b3b8;margin:0 7px}.notice{margin:26px 0 0;padding:12px 15px;border-left:4px solid var(--brand);background:var(--brand-pale);color:#47616c}.notice strong{color:var(--brand-dark)}
.section{margin-top:38px}.section-title{margin:0 0 18px;padding:10px 14px;border-left:4px solid var(--brand);border-bottom:2px solid var(--brand);background:var(--brand-pale);color:#467c90;font-size:20px;line-height:1.35}.section-title small{float:right;color:#78929c;font-size:12px;font-weight:400}.two-col{display:grid;grid-template-columns:1.14fr .86fr;gap:28px}.card{border:1px solid var(--line);background:#fff;padding:19px 21px}.card h3{margin:0 0 9px;color:#467c90;font-size:16px}.card p:last-child{margin-bottom:0}.plain-list,.timeline{padding:0;margin:0;list-style:none}.plain-list li{position:relative;margin:8px 0;padding-left:16px}.plain-list li::before{content:"";position:absolute;left:0;top:.76em;width:5px;height:5px;border-radius:50%;background:var(--brand)}.timeline li{padding:10px 0;border-bottom:1px dashed var(--line)}.timeline li:last-child{border-bottom:0}.timeline time{display:inline-block;min-width:108px;color:var(--brand-dark);font:700 13px Arial}.tag{display:inline-block;margin:0 5px 6px 0;padding:3px 9px;border-radius:2px;background:var(--brand-pale);color:#407f99;font-size:13px}.stats{display:grid;grid-template-columns:repeat(3,1fr);margin:0;border:1px solid var(--line)}.stat{padding:15px 12px;text-align:center;border-right:1px solid var(--line)}.stat:last-child{border:0}.stat strong{display:block;color:var(--brand-dark);font:700 25px/1.2 Arial}.stat span{color:var(--muted);font-size:12px}.publication{padding:15px 0;border-bottom:1px dashed var(--line);line-height:1.75}.publication:last-child{border-bottom:0}.publication .num{display:inline-block;width:42px;color:var(--brand-dark);font-weight:700}.publication .venue{color:#5c717b}.paper-note{margin:0 0 10px;color:var(--muted);font-size:13px}.content-list{margin:0;padding-left:20px}.content-list li{margin:7px 0}.footer{padding:18px 34px;border-top:1px solid var(--line);background:#f9fbfc;color:#829199;font-size:12px}.footer a{float:right}.mobile-menu{display:none}
@media(max-width:720px){body{font-size:14px}.shell{width:100%;margin:0;box-shadow:none}.site-head{padding:18px 20px 15px}.site-mark{width:44px;height:44px;font-size:16px}.brand-name{font-size:20px}.brand-name span{display:block;margin:2px 0 0;font-size:14px}.brand-subtitle{font-size:11px}.main-nav{padding:0 20px}.main-nav a{padding:9px 9px;font-size:12px}.main-nav a:first-child:hover,.main-nav a:first-child.active{padding-left:9px;margin-left:-9px}main{padding:0 20px 36px}.hero{grid-template-columns:94px 1fr;gap:17px;padding:25px 0}.hero-photo{width:86px;height:108px;padding:3px}.hero h1{font-size:25px}.hero h1 span{display:block;margin:1px 0 0;font-size:16px}.hero .title{margin-top:5px;font-size:13px}.hero .affiliation{font-size:12px}.hero .contact{font-size:11px}.hero .contact span{margin:0 3px}.two-col{grid-template-columns:1fr;gap:16px}.section{margin-top:30px}.section-title{font-size:18px}.section-title small{display:none}.stats{grid-template-columns:repeat(3,1fr)}.stat{padding:12px 5px}.stat strong{font-size:20px}.timeline time{display:block;margin-bottom:2px}.footer{padding:16px 20px}.footer a{float:none;display:block;margin-top:4px}}

/* Warm palette shared by every page. */
.shell{box-shadow:0 3px 18px rgba(133,91,55,.10)}.site-mark{border-color:#ecd0b8}.brand-name,.hero h1{color:#9e5f2e}.brand-name span,.hero h1 span{color:#78685b}.hero-photo{border-color:#ead2bc}.hero .contact span{color:#b9a99b}.notice{color:#695849}.section-title,.card h3{color:#8f5b34}.section-title small{color:#9a8472}.card{background:#fffdfa}.tag{color:#9a6032}.publication .venue{color:#725f51}.footer{background:#fdf8f3;color:#998779}

/* Shared record format: red index and the same hanging indent everywhere. */
:root{--record-red:#b84a4a}.plain-list,.timeline{counter-reset:record;list-style:none}.plain-list li,.timeline li{position:relative;counter-increment:record;padding-left:3.1em}.plain-list li::before,.timeline li::before{content:counter(record,decimal-leading-zero);position:absolute;left:0;top:0;color:var(--record-red);font:700 12px/1.9 Arial}.plain-list li::before{width:auto;height:auto;border-radius:0;background:none}.timeline time{min-width:0;color:var(--record-red);font-weight:700}.publication{padding-left:3.45em;text-indent:-3.45em}.publication .num{width:3.1em;color:var(--record-red);font:700 13px Arial}.publication a,.notice strong{color:var(--record-red);font-weight:700}.stat strong{color:var(--record-red)}

/* Site-wide black/red palette and English typography. */
:root{--brand:#171717;--brand-dark:#000;--brand-pale:#f8f0f1;--ink:#181818;--muted:#696969;--line:#dedede;--page:#f5f5f5;--white:#fff;--record-red:#b20f27}
body{font-family:"Times New Roman","Noto Serif SC","Songti SC","Microsoft YaHei",serif}a{color:var(--record-red)}a:hover{color:#810014}.shell{box-shadow:0 3px 18px rgba(0,0,0,.10)}.site-mark{background:#fff;border-color:#d6d6d6;color:var(--record-red)}.brand-name,.hero h1,.section-title,.card h3{color:#111}.brand-name span,.hero h1 span{color:#393939}.brand-subtitle,.eyebrow,.main-nav,.hero .contact,.timeline time,.publication .num,.plain-list li::before,.timeline li::before{font-family:"Times New Roman","Noto Serif SC","Songti SC","Microsoft YaHei",serif}.eyebrow,.hero .contact,.timeline time{color:var(--record-red)}.main-nav{background:#111}.main-nav a:hover,.main-nav a.active{background:var(--record-red)}.hero-photo{border-color:#cfcfcf}.notice{border-left-color:var(--record-red);background:var(--brand-pale);color:#2a2a2a}.notice strong,.publication a{color:var(--record-red)}.section-title{border-left-color:var(--record-red);border-bottom-color:#111;background:#f8f8f8}.section-title small{color:#777}.card{background:#fff;border-color:#dedede}.tag{background:#f5e7e9;color:var(--record-red)}.publication .venue{color:#353535}.footer{background:#111;color:#ddd}.footer a{color:#fff}.stat strong{color:var(--record-red)}
.site-mark,.brand-name span,.eyebrow,.brand-subtitle,.main-nav a,.hero h1 span,.hero .contact,.timeline time,.publication .num,.stat strong,.section-title small{font-family:"Times New Roman","Noto Serif SC","Songti SC","Microsoft YaHei",serif}

/* Tighter shared number gutter: keep indices aligned without a large gap. */
.plain-list li,.timeline li{padding-left:2.45em}.publication{padding-left:2.75em;text-indent:-2.75em}.publication .num{width:2.45em}

/* Publication records use a true two-column row so every number aligns precisely. */
.publication{display:grid;grid-template-columns:2.45em minmax(0,1fr);column-gap:.16em;padding-left:0;text-indent:0}.publication .num{display:block;width:auto}.publication-content{min-width:0}

/* Timeline rows: number, date, and description share one stable left edge. */
.timeline li{padding:10px 0 10px 2.45em}.timeline li::before{top:10px}.timeline time{display:inline;margin-right:.55em}
@media(max-width:720px){.timeline time{display:block;margin:0 0 2px}}

/* Make every numbered list use the same [01] + content-column pattern as papers. */
.plain-list li,.timeline li{display:grid;grid-template-columns:2.45em minmax(0,1fr);column-gap:.16em;padding-left:0}.plain-list li::before,.timeline li::before{position:static;grid-column:1;grid-row:1;content:"[" counter(record,decimal-leading-zero) "]";width:auto;height:auto;background:none}.timeline-content{grid-column:2;min-width:0}

/* Match publication-number glyph metrics to the first line of its text. */
.publication{align-items:start}.publication .num{font:700 15px/1.75 "Times New Roman","Noto Serif SC","Songti SC","Microsoft YaHei",serif;padding:0;margin:0}

/* Denser publication list while preserving the separator and two-column alignment. */
.publication{padding-top:8px;padding-bottom:8px}

/* Horizontal record modules for experience, projects, awards, and intellectual property. */
.card:has(> .timeline),.two-col > .card:has(> ol.plain-list){display:grid;grid-template-columns:126px minmax(0,1fr);gap:18px;align-items:start}.card:has(> .timeline) h3,.two-col > .card:has(> ol.plain-list) h3{margin:0;padding:3px 13px 3px 0;border-right:2px solid var(--record-red);line-height:1.55}.card:has(> .timeline) .timeline,.two-col > .card:has(> ol.plain-list) .plain-list{margin:0}
@media(max-width:720px){.card:has(> .timeline),.two-col > .card:has(> ol.plain-list){grid-template-columns:1fr;gap:10px}.card:has(> .timeline) h3,.two-col > .card:has(> ol.plain-list) h3{padding:0 0 7px;border-right:0;border-bottom:2px solid var(--record-red)}}

/* Each experience/research module occupies a full row of the content area. */
.two-col:has(> .card > .timeline),.two-col:has(> .card > ol.plain-list){grid-template-columns:minmax(0,1fr)}

/* Full-width modules do not need a vertical divider beside their titles. */
.card:has(> .timeline) h3,.two-col > .card:has(> ol.plain-list) h3{border-right:0}

/* Retire the legacy complete-record page from the main navigation. */
.main-nav a[href="records.html"]{display:none}
