/* Shared tokens: change presentation here, content in _data and collections. */
:root { --ink:#253539; --muted:#59686b; --accent:#206c70; --accent-hover:#124b50; --line:#dee6e5; --paper:#fff; --soft:#f3f7f6; --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-6:24px; --space-8:32px; --space-12:48px; --space-16:64px; --site-width:1160px; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:24px; }
body { margin:0; background:var(--paper); color:var(--ink); font:16px/1.75 Inter,'Segoe UI','Microsoft YaHei',sans-serif; -webkit-font-smoothing:antialiased; }
a { color:var(--accent); text-decoration-thickness:1px; text-underline-offset:4px; }
a:hover { color:var(--accent-hover); text-decoration:underline; }
a:focus-visible { outline:2px solid var(--accent); outline-offset:5px; border-radius:2px; }
img { display:block; max-width:100%; }
h1,h2,h3,p,ul,dl { margin:0; }
h1,h2,h3 { color:var(--ink); line-height:1.35; text-wrap:balance; }
h1 { font-size:clamp(28px,3vw,39px); font-weight:600; letter-spacing:-.035em; }
h2 { font-size:23px; font-weight:600; letter-spacing:-.025em; }
h3 { font-size:17px; font-weight:600; }
p + p { margin-top:var(--space-4); }
.site-header { border-bottom:1px solid var(--line); }
.header-inner { max-width:var(--site-width); margin:auto; padding:24px 32px; display:flex; align-items:center; justify-content:space-between; gap:32px; }
.site-name { font-size:20px; font-weight:700; color:var(--ink); text-decoration:none; white-space:nowrap; }
.site-name span { margin-left:16px; font-size:12px; font-weight:400; color:var(--muted); }
nav { display:flex; flex-wrap:wrap; gap:24px; }
.header-actions { display:flex; align-items:center; gap:24px; min-width:0; }
.language-switch { display:flex; align-items:center; gap:4px; border:1px solid var(--line); border-radius:6px; padding:3px; flex-shrink:0; }
.language-switch[hidden] { display:none; }
.language-switch button { font:500 12px/1.4 Inter,'Segoe UI','Microsoft YaHei',sans-serif; color:var(--muted); background:transparent; border:0; border-radius:3px; padding:8px 10px; cursor:pointer; }
.language-switch button[aria-pressed="true"] { color:var(--accent); background:var(--soft); }
.language-switch button:hover { color:var(--accent-hover); background:var(--soft); }
.language-switch button:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
html[lang="en"] [data-language-content="zh"],html[lang="zh-CN"] [data-language-content="en"] { display:none; }
nav a { padding:8px 0; color:var(--muted); font-size:14px; text-decoration:none; }
nav a[aria-current] { color:var(--accent); text-decoration:underline; text-underline-offset:10px; }
.academic-shell { max-width:var(--site-width); margin:auto; padding:64px 32px; display:grid; grid-template-columns:216px minmax(0,1fr); gap:64px; }
.profile { align-self:start; }
.portrait { width:176px; height:176px; object-fit:cover; border-radius:50%; margin-bottom:24px; }
.profile-name { font-size:24px; font-weight:600; letter-spacing:-.03em; }
.profile-name span { font-size:18px; font-weight:400; margin-left:8px; }
.profile-role { margin-top:8px; font-size:14px; font-weight:500; }
.affiliation,.location { margin-top:8px; color:var(--muted); font-size:13px; line-height:1.65; }
.profile-links { list-style:none; padding:16px 0 0; display:grid; grid-template-columns:1fr 1fr; gap:4px 12px; }
.profile-links a { font-size:13px; display:inline-block; padding:6px 0; text-decoration:none; }
.profile-note { border-top:1px solid var(--line); padding-top:24px; margin-top:24px; color:var(--muted); font-size:13px; }
main { min-width:0; }
.introduction h1 { margin-bottom:24px; }
.introduction > p { max-width:72ch; font-size:14px; }
.introduction .intro-lead { color:var(--accent); font-size:18px; line-height:1.7; margin-bottom:24px; }
.interests { display:flex; flex-wrap:wrap; list-style:none; padding:0; margin-top:24px; gap:8px; }
.interests li { background:var(--soft); color:var(--accent); font-size:12px; padding:4px 12px; border-radius:4px; }
.content-section { margin-top:48px; }
.content-section > h2,.section-heading { margin-bottom:24px; }
.section-heading { display:flex; justify-content:space-between; align-items:baseline; flex-wrap:wrap; gap:12px; }
.section-heading > a { font-size:12px; }
.news-list { list-style:none; padding:0; display:grid; gap:12px; }
.news-list li { display:grid; grid-template-columns:48px minmax(0,1fr); gap:16px; font-size:13px; line-height:1.7; }
.news-year { color:var(--muted); font-variant-numeric:tabular-nums; }
.news-list a { text-decoration:none; color:var(--ink); }
.news-list a:hover { color:var(--accent); text-decoration:underline; }
.publication { display:grid; grid-template-columns:48px minmax(0,1fr); gap:16px; border-top:1px solid var(--line); padding:24px 0; }
.publication-year { font-size:13px; color:var(--muted); font-variant-numeric:tabular-nums; }
.publication-venue { font-size:12px; color:var(--accent); font-weight:500; margin-bottom:8px; }
.publication h3 a { color:var(--ink); text-decoration:none; }
.publication h3 a:hover { color:var(--accent); text-decoration:underline; }
.publication-authors,.publication-summary { font-size:13px; color:var(--muted); margin-top:8px; }
.publication-summary { color:var(--ink); }
.publication-links { display:flex; flex-wrap:wrap; gap:16px; margin-top:8px; font-size:12px; }
.publication-links a { padding:4px 0; }
.project { display:grid; grid-template-columns:120px minmax(0,1fr); gap:24px; align-items:start; }
.project img { width:120px; height:96px; object-fit:contain; background:var(--soft); padding:12px; border-radius:4px; }
.project h3 a { text-decoration:none; }
.project p { font-size:13px; }
.project .project-organization { font-size:12px; color:var(--muted); margin-top:4px; }
.project p + p { margin-top:8px; }
.development { margin-top:32px; }
.development-list { list-style:none; padding:0; margin-top:16px; display:grid; gap:16px; }
.development-list a { font-size:14px; font-weight:500; }
.development-list p { color:var(--muted); font-size:13px; margin-top:4px; }
.community-entry { border-top:1px solid var(--line); padding-top:24px; margin-top:32px; }
.community-heading { display:flex; flex-wrap:wrap; align-items:baseline; gap:8px 16px; }
.community-heading h3 a { text-decoration:none; }
.community-heading > p { font-size:12px; color:var(--accent); }
.community-entry > p { font-size:14px; margin-top:12px; }
.skills-list { display:grid; gap:12px; font-size:13px; }
.skills-list > div { display:grid; grid-template-columns:150px minmax(0,1fr); gap:16px; }
.skills-list dt { font-weight:500; }
.skills-list dd { margin:0; color:var(--muted); }
.collaboration { margin-top:48px; padding-top:32px; border-top:1px solid var(--line); }
.collaboration h2 { margin-bottom:12px; }
.collaboration p,.collaboration > a { font-size:14px; }
.collaboration > a { display:inline-block; margin-top:12px; }
.site-footer { max-width:calc(var(--site-width) - 64px); margin:0 auto; border-top:1px solid var(--line); padding:24px 0; display:flex; justify-content:space-between; flex-wrap:wrap; gap:16px; font-size:12px; color:var(--muted); }
.page-heading { margin-bottom:32px; }
.talk-section > h2 { margin-bottom:24px; }
.talk-entry { display:grid; grid-template-columns:72px minmax(0,1fr); gap:24px; padding:24px 0; border-top:1px solid var(--line); }
.talk-date { color:var(--muted); font-size:13px; font-variant-numeric:tabular-nums; }
.talk-type { color:var(--accent); font-size:12px; margin-bottom:8px; }
.talk-location { color:var(--muted); font-size:13px; margin-top:8px; }
.talk-paper { display:inline-block; font-size:12px; margin-top:8px; padding:4px 0; }
.page-heading p,.source-note { font-size:14px; color:var(--muted); margin-top:16px; }
.prose { font-size:15px; overflow-wrap:anywhere; }
.prose h2 { margin-top:48px; margin-bottom:16px; }
.prose h3 { margin-top:24px; margin-bottom:12px; }
.prose ul,.prose ol { padding-left:24px; margin:16px 0; }
.prose img { height:auto; }
.prose pre { overflow-x:auto; background:var(--soft); padding:16px; }
.prose table { display:block; overflow-x:auto; max-width:100%; }
.skip-link { position:absolute; left:16px; top:-100px; padding:12px; background:white; z-index:10; }
.skip-link:focus { top:8px; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
@media (max-width:900px) {
  .academic-shell { grid-template-columns:180px minmax(0,1fr); gap:32px; padding-top:48px; }
  .portrait { width:144px; height:144px; }
  .site-name span { display:none; }
  nav { gap:16px; }
}
@media (max-width:640px) {
  .header-inner { align-items:start; flex-direction:column; gap:8px; padding:16px 24px; }
  .header-inner { position:relative; }
  .header-actions { width:100%; }
  .language-switch { position:absolute; top:12px; right:24px; }
  nav { width:100%; gap:24px; }
  nav a { font-size:13px; }
  .academic-shell { display:block; padding:32px 24px 48px; }
  .profile { display:grid; grid-template-columns:88px minmax(0,1fr); gap:24px; padding-bottom:32px; margin-bottom:32px; border-bottom:1px solid var(--line); }
  .portrait { width:88px; height:88px; margin:0; }
  .profile-name { font-size:22px; }
  .profile-role { margin-top:4px; }
  .profile-links { display:flex; flex-wrap:wrap; gap:0 16px; padding-top:8px; }
  .profile-note { display:none; }
  .introduction .intro-lead { font-size:17px; }
  .desktop-break { display:none; }
  .content-section { margin-top:32px; }
  .publication { grid-template-columns:36px minmax(0,1fr); gap:12px; }
  .publication h3 { font-size:16px; }
  .project { grid-template-columns:72px minmax(0,1fr); gap:16px; }
  .project img { width:72px; height:72px; padding:8px; }
  .skills-list > div { grid-template-columns:1fr; gap:0; }
  .talk-entry { grid-template-columns:56px minmax(0,1fr); gap:16px; }
  .site-footer { margin:0 24px; flex-direction:column; gap:8px; }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }
@media print { .site-header,.site-footer,.profile-links { display:none; } .academic-shell { display:block; padding:0; } .profile { margin-bottom:32px; } .portrait { width:80px; height:80px; } a { color:inherit; } }
