:root{--bg:#efe6d8;--bg-deep:#deccba;--paper:rgba(250, 244, 236, 0.84);--paper-strong:rgba(253, 249, 244, 0.94);--ink:#271f1a;--ink-soft:#685b4f;--ink-title:rgba(39, 31, 26, 0.88);--line:#d8c8b7;--line-strong:#b69e86;--line-soft:rgba(110, 88, 64, 0.18);--accent:#7b5a40;--accent-deep:#4e3828;--accent-soft:#ebdac6;--accent-rgb:123, 90, 64;--accent-deep-rgb:78, 56, 40;--sage:#dbe6dc;--sage-rgb:169, 186, 170;--warm:#a86d4a;--surface:rgba(248, 241, 233, 0.9);--surface-strong:rgba(252, 248, 243, 0.96);--surface-muted:rgba(241, 231, 218, 0.72);--shadow:0 14px 34px rgba(73, 52, 35, 0.07);--shadow-soft:0 10px 26px rgba(73, 52, 35, 0.07), 0 2px 8px rgba(73, 52, 35, 0.04);--shadow-float:0 18px 40px rgba(73, 52, 35, 0.1), 0 8px 18px rgba(73, 52, 35, 0.06);--card-surface:rgba(250, 245, 238, 0.94);--card-radius:10px;--card-shadow:0 14px 32px rgba(55, 39, 26, 0.07), 0 2px 10px rgba(55, 39, 26, 0.04);--card-blur:blur(10px);--on-accent:#fffaf4;--link-underline:rgba(123, 90, 64, 0.24);--link-underline-strong:rgba(123, 90, 64, 0.42);--selection:rgba(123, 90, 64, 0.18);--font-serif-body:"Source Serif 4", "Noto Serif SC", serif;--font-serif-display:"Source Serif 4", "Noto Serif SC", serif;--font-zh-body:"Source Serif 4", "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", sans-serif;--font-zh-display:"Source Serif 4", "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", sans-serif;--font-sans:"Noto Sans SC", -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;--content-width:min(1120px, 92vw)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-offset) + 12px)}html.fonts-loading .site-shell{opacity:0;visibility:hidden;transform:translateY(8px)}html.fonts-ready .site-shell{opacity:1;visibility:visible;transform:none;transition:opacity 320ms ease,transform 320ms ease}.site-shell{opacity:1;visibility:visible;transform:none;position:relative;z-index:1}.back-to-top{position:fixed;right:max(20px,calc((100vw - var(--content-width))/2 - 52px));bottom:24px;width:42px;height:42px;border:1px solid var(--line-soft);border-radius:999px;background:var(--surface-strong);color:var(--accent-deep);box-shadow:var(--shadow-soft);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-serif-display);font-size:20px;line-height:1;cursor:pointer;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(8px);transition:opacity 180ms ease,transform 180ms ease,background-color 180ms ease,color 180ms ease,border-color 180ms ease,box-shadow 180ms ease;z-index:210}.back-to-top.is-visible{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.back-to-top svg{width:16px;height:16px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}.back-to-top:hover{color:var(--accent);border-color:var(--line-strong);background:var(--surface);transform:translateY(-2px);box-shadow:var(--shadow-float)}.back-to-top:focus-visible{outline:2px solid rgba(var(--accent-deep-rgb),.26);outline-offset:3px}html[lang=zh-CN]{--font-serif-body:var(--font-zh-body);--font-serif-display:var(--font-zh-display)}body{margin:0;color:var(--ink);font-family:var(--font-serif-body);font-size:16px;line-height:1.68;overflow-x:hidden;background-color:var(--bg);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><rect width='30' height='30' fill='none'/><path d='M30 0H0V30' fill='none' stroke='rgba(83,68,51,0.055)' stroke-width='1'/></svg>");background-size:30px 30px;background-position:0 0;background-attachment:fixed}button,input,select,textarea{font:inherit}body::before,body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:-2}body::before{opacity:0;background:0 0;animation:none}body::after{z-index:-1;background:0 0;opacity:0;animation:none}.bg-shape{position:fixed;z-index:0;pointer-events:none;display:block;opacity:.82;filter:none;transform:rotate(-10deg);border-radius:20px}.bg-shape-a{width:220px;height:220px;top:84px;right:max(28px,calc((100vw - var(--content-width))/2 - 22px));background:rgba(var(--accent-rgb),.05);border:1px solid rgba(var(--accent-rgb),.14)}.bg-shape-b{width:180px;height:180px;left:max(12px,calc((100vw - var(--content-width))/2 - 42px));bottom:120px;background:rgba(var(--sage-rgb),.12);border:1px solid rgba(var(--sage-rgb),.26);border-radius:24px;transform:rotate(8deg)}.section{width:var(--content-width);margin:0 auto}:root{--nav-offset:92px}.site-header{padding:8px 0 14px}.site-header.reveal,.site-header.reveal.visible{opacity:1;transform:none}.nav-row{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:nowrap;margin:12px auto 16px;position:sticky;top:12px;--nav-y:0;transform:translateY(var(--nav-y));width:var(--content-width);z-index:200;padding:10px 12px;border:1px solid var(--line-soft);border-radius:14px;background:var(--surface-strong);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--shadow-soft);transition:transform 180ms ease,opacity 180ms ease}.nav-row.is-hidden{--nav-y:-140%;opacity:0;pointer-events:none}.nav-row.is-locked{--nav-y:0;opacity:1;pointer-events:auto}.top-nav{display:flex;flex-wrap:nowrap;gap:14px;flex:auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.top-nav::-webkit-scrollbar{display:none}.top-nav a{display:inline-flex;align-items:center;gap:.42em;color:var(--ink-soft);text-decoration:none;font-family:var(--font-serif-display);font-size:16px;letter-spacing:.02em;text-transform:none;border:0;border-bottom:1px solid transparent;background:0 0;padding:2px 0;white-space:nowrap;opacity:.86;transition:color 180ms ease,border-color 180ms ease,transform 180ms ease,opacity 180ms ease}.nav-icon{display:inline-flex;align-items:center;justify-content:center;width:1em;min-width:1em;height:1em;line-height:1;font-family:apple color emoji,segoe ui emoji,noto color emoji,var(--font-sans);font-style:normal;font-weight:400;vertical-align:middle}.top-nav a:hover{border-color:var(--line-strong);color:var(--accent-deep);transform:translateY(-2px);opacity:1}.nav-actions{display:inline-flex;align-items:center;gap:8px}.nav-menu-btn{display:none;border:1px solid var(--line-soft);background:var(--surface);color:var(--ink-soft);width:32px;height:32px;padding:0;cursor:pointer;border-radius:10px;align-items:center;justify-content:center;transition:transform 180ms ease,background-color 180ms ease,color 180ms ease}.nav-menu-btn svg{width:18px;height:18px;stroke:currentColor;stroke-width:1.7;fill:none;stroke-linecap:round}.nav-menu-btn:hover{transform:translateY(-1px);color:var(--accent-deep)}.lang-switch{display:inline-flex;border:1px solid var(--line-soft);background:var(--surface);padding:2px;border-radius:12px;flex-shrink:0;box-shadow:none}.mobile-lang-switch{display:none}.nav-lock-btn{border:1px solid var(--line-soft);background:var(--surface);color:var(--ink-soft);font-family:var(--font-sans);width:32px;height:32px;padding:0;cursor:pointer;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;transition:transform 180ms ease,background-color 180ms ease,color 180ms ease,box-shadow 180ms ease}.nav-lock-btn:hover{transform:translateY(-1px);color:var(--accent-deep)}.lock-icon{width:16px;height:16px;stroke:currentColor;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round}.nav-lock-btn .lock-on{display:none}.nav-lock-btn.is-locked .lock-on{display:block}.nav-lock-btn.is-locked .lock-off{display:none}.lang-btn{display:inline-flex;align-items:center;justify-content:center;border:0;background:0 0;color:var(--ink-soft);font-family:var(--font-sans);min-width:54px;padding:5px 10px;font-size:11px;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;border-radius:10px;transition:transform 180ms ease,background-color 180ms ease,color 180ms ease,box-shadow 180ms ease}.lang-btn,.lang-btn:hover,.lang-btn:visited{text-decoration:none}.lang-btn.active{background:var(--accent-deep);color:var(--on-accent);box-shadow:none}.lang-btn:hover{transform:translateY(-1px)}.hero{--hero-avatar-size:clamp(180px, 18vw, 220px);position:relative;border:1px solid rgba(var(--accent-rgb),.14);background:rgba(252,248,243,.95);box-shadow:var(--shadow-soft);padding:clamp(30px,4vw,46px)clamp(28px,3.8vw,42px);border-radius:10px;overflow:hidden;transform-origin:center top;animation:hero-settle 800ms cubic-bezier(.2,.8,.2,1)both}.hero-grid{display:grid;grid-template-columns:var(--hero-avatar-size)minmax(0,1fr);column-gap:28px;align-items:start;position:relative;z-index:1}.hero-kicker .kicker{line-height:1}.hero-avatar-wrap{position:relative;align-self:start;justify-self:start;width:var(--hero-avatar-size);height:var(--hero-avatar-size);aspect-ratio:1/1;max-width:none}.hero-copy{min-width:0;display:flex;flex-direction:column;min-height:var(--hero-avatar-size)}.hero-kicker{margin-bottom:8px}.hero-text{min-width:0}.hero-avatar-wrap::before{content:none}.hero-avatar{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;display:block;border-radius:12px;border:1px solid rgba(var(--accent-rgb),.14);box-shadow:none;background:var(--paper-strong)}.hero::before{content:"";position:absolute;z-index:0;top:-54px;right:-26px;width:160px;height:160px;border-radius:28px;border:1px solid rgba(var(--accent-rgb),.14);background:rgba(var(--accent-rgb),.06);transform:rotate(16deg)}.hero::after{content:"";position:absolute;z-index:0;right:34px;bottom:24px;width:62px;height:62px;border-radius:18px;border:1px solid rgba(var(--sage-rgb),.28);background:rgba(var(--sage-rgb),.16);transform:rotate(12deg)}.kicker{margin:0;font-family:var(--font-serif-display);color:var(--accent);letter-spacing:.16em;text-transform:uppercase;font-size:10px;font-weight:600;opacity:.92}h1,h2,h3{line-height:1.2}h1{margin:2px 0 8px;font-family:var(--font-serif-display);font-size:clamp(46px,5vw,58px);font-weight:600;line-height:1.06;letter-spacing:-.02em}.name-primary,.name-alias{display:block}.name-alias{margin-top:10px;font-family:var(--font-sans);font-size:.26em;font-weight:600;line-height:1.15;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);opacity:.88}h2{margin:20px 0 18px;font-family:var(--font-serif-display);font-size:clamp(28px,3.2vw,36px);font-weight:600;letter-spacing:-.01em;display:inline-flex;align-items:center;gap:.38em;position:relative;padding-bottom:8px}.section-heading-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:20px 0 12px}.section-heading-row h2{margin:0}.heading-icon,.link-icon{display:inline-flex;align-items:center;justify-content:center;width:1.15em;min-width:1.15em;height:1.15em;line-height:1;font-family:apple color emoji,segoe ui emoji,noto color emoji,var(--font-sans);font-style:normal;font-weight:400;vertical-align:middle;flex:none}.heading-icon{margin-right:.08em;width:.92em;min-width:.92em;height:.92em;opacity:1;transform:translateY(.02em)}h2::after{content:"";position:absolute;left:0;bottom:0;width:58px;height:1px;background:rgba(var(--accent-rgb),.28)}h3{margin:0 0 12px;font-family:var(--font-serif-display);font-size:22px;font-weight:600;letter-spacing:.01em;display:block}.panel h3,.research-card h3,.publication-content h3{color:var(--ink-title)}h2.with-icon,h3.with-icon{display:inline-flex;align-items:center;gap:.34em}.title{margin:0;font-family:var(--font-serif-body);color:var(--ink-soft);font-size:15px;font-weight:500;line-height:1.45}.title a{color:var(--accent-deep);text-decoration:none;border-bottom:1px solid var(--link-underline)}.title a:hover{border-bottom-color:var(--accent)}.affiliation{margin:5px 0 0;color:var(--ink-soft);font-size:13px}.contact-links{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto;align-self:flex-start;align-items:stretch}.contact-links a{display:flex;align-items:center;justify-content:center;gap:.48em;text-decoration:none;color:var(--accent-deep);background:0 0;border:1px solid var(--line-soft);padding:7px 12px;min-height:40px;line-height:1;font-family:var(--font-serif-display);font-size:14px;border-radius:10px;transition:transform 220ms ease,border-color 220ms ease,background-color 220ms ease}.contact-links a.contact-link-primary{background:var(--accent-deep);border-color:var(--accent-deep);color:var(--on-accent);box-shadow:0 10px 22px rgba(var(--accent-deep-rgb),.14)}.contact-links .link-icon-label{display:inline-flex;align-items:center;line-height:1}.contact-links a:hover{border-color:var(--accent);background:var(--surface-strong);transform:translateY(-1px)}.contact-links a.contact-link-primary:hover{border-color:var(--accent-deep);background:var(--accent)}.contact-links .link-icon-img{width:1.08em;height:1.08em;object-fit:contain;filter:grayscale(1)sepia(.55)saturate(.75)hue-rotate(-10deg)brightness(.78);transition:filter 220ms ease}.contact-links .contact-link-github .link-icon-img{filter:grayscale(1)invert(.42)brightness(.86)}.contact-links a:hover .link-icon-img{filter:none}main{padding:6px 0 44px}section{margin-top:clamp(44px,5vw,62px);position:relative}main>section+section{padding-top:18px;border-top:1px solid rgba(var(--accent-rgb),.12)}.lead{margin:0;color:var(--ink-soft);max-width:76ch;font-size:16px;line-height:1.78}.lead a{color:var(--accent-deep);text-decoration:none;border-bottom:1px solid var(--link-underline);transition:color 160ms ease,border-color 160ms ease}.lead a:hover{color:var(--accent);border-bottom-color:var(--accent)}.timeline-item a{color:var(--accent-deep);text-decoration:none;border-bottom:1px solid var(--link-underline);transition:color 160ms ease,border-color 160ms ease}.timeline-item a:hover{color:var(--accent);border-bottom-color:var(--accent)}.meta-grid,.experience-grid{margin-top:18px;display:grid;gap:14px}.meta-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.experience-grid{grid-template-columns:minmax(0,2fr)minmax(0,1fr);grid-template-rows:auto auto;align-items:stretch}.experience-panel-work{grid-column:1;grid-row:1}.experience-panel-education{grid-column:1;grid-row:2}.experience-panel-research{grid-column:2;grid-row:1/span 2}.panel,.research-card,.publication-card{background:var(--card-surface);border:1px solid rgba(var(--accent-rgb),.1);border-radius:var(--card-radius);padding:20px;box-shadow:var(--card-shadow);backdrop-filter:var(--card-blur);-webkit-backdrop-filter:var(--card-blur);position:relative;z-index:0;animation:none;transition:none}.panel>*,.research-card>*,.publication-card>*{position:relative;z-index:1}.panel::before,.research-card::before,.publication-card::before{content:"";position:absolute;top:0;left:20px;width:44px;height:2px;background:rgba(var(--accent-rgb),.34)}.tag-list{display:flex;flex-wrap:wrap;list-style:none;padding:0;margin:0;gap:8px}.tag-list li{border:1px solid rgba(var(--accent-rgb),.12);border-radius:5px;background:rgba(252,248,243,.92);color:var(--accent-deep);font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px}.simple-list{list-style:none;margin:0;padding:0}.simple-list li{position:relative;margin:0 0 11px;padding-left:14px}.simple-list li::before{content:"";width:6px;height:6px;background:var(--warm);position:absolute;left:0;top:11px}.simple-list a{color:var(--accent-deep);text-decoration:none;border-bottom:1px solid var(--link-underline);transition:color 160ms ease,border-color 160ms ease}.simple-list a:hover{color:var(--accent);border-bottom-color:var(--accent)}.news-date{color:var(--ink-soft)}.service-panel{margin-top:12px;padding:16px 18px}.service-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;gap:8px}.service-list li{position:relative;padding-left:16px;color:var(--ink);font-family:var(--font-serif-display);font-size:15px;line-height:1.6}.service-list li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);position:absolute;top:10px;left:0}.section-note{margin:0 0 16px;color:var(--ink-soft);font-size:13px;font-style:italic}.publication-controls{display:inline-flex;gap:8px;margin:0;padding:4px;border-radius:999px;border:1px solid var(--line-soft);background:var(--surface-strong)}.pub-filter-btn{border:0;background:0 0;color:var(--ink-soft);font-family:var(--font-serif-display);font-size:12px;letter-spacing:.04em;text-transform:uppercase;padding:5px 10px;border-radius:999px;cursor:pointer;transition:color 160ms ease,background-color 160ms ease,transform 160ms ease}.pub-filter-btn:hover{transform:translateY(-1px);color:var(--accent-deep)}.pub-filter-btn.is-active{background:var(--accent-deep);color:var(--on-accent)}.research-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.research-card p{margin:0;color:var(--ink-soft);font-size:13px;line-height:1.65}.publication-list{display:grid;gap:14px}.publication-card{display:grid;grid-template-columns:minmax(122px,18%)minmax(0,1fr);gap:0;align-items:stretch;padding:0;overflow:hidden}.publication-card[hidden],.publication-card.is-hidden-by-filter{display:none}.publication-media{position:relative;aspect-ratio:auto;overflow:hidden;border-right:none;border-radius:0;box-shadow:none;background:rgba(241,231,218,.88);border-right:1px solid rgba(var(--accent-rgb),.08);min-height:0;height:100%;align-self:stretch;padding:14px 12px}.publication-card::selection,.publication-card *::selection{background:var(--selection);color:var(--ink)}::-moz-selection{background:var(--selection);color:var(--ink)}::selection{background:var(--selection);color:var(--ink)}.publication-thumb{position:absolute;inset:14px 12px;width:calc(100% - 24px);height:calc(100% - 28px);object-fit:cover;object-position:center center;display:block;filter:grayscale(1)sepia(.5)saturate(.72)hue-rotate(-8deg)contrast(.92)brightness(1.03);background:rgba(255,251,245,.98);border-radius:10px;transition:filter 240ms ease}.publication-card:hover .publication-thumb,.publication-card:focus-within .publication-thumb{filter:none}.publication-thumb-fallback{position:absolute;inset:14px 12px;padding:16px;background:var(--paper-strong);border-radius:10px;display:grid;align-content:space-between;min-height:0}.publication-thumb-year,.publication-thumb-venue{color:var(--ink-soft);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.publication-thumb-mark{display:block;font-family:var(--font-serif-display);font-size:34px;line-height:1;color:var(--accent-deep)}.publication-content{min-width:0;padding:16px 20px 16px 12px;display:flex;flex-direction:column;justify-content:center}.publication-content h3{margin-bottom:10px;font-size:22px;line-height:1.2}.publication-title-link{color:inherit;text-decoration:none;transition:color 180ms ease}.publication-title-link:hover{color:var(--accent-deep)}.publication-meta{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:var(--ink-soft);font-size:12px;letter-spacing:.02em}.publication-venue-badge{display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;border-radius:999px;background:rgba(var(--accent-rgb),.1);border:1px solid rgba(var(--accent-rgb),.16);color:var(--accent-deep);font-family:var(--font-sans);font-style:normal;font-size:11px;font-weight:700;letter-spacing:.04em;text-decoration:none;transition:transform 160ms ease,background-color 160ms ease,border-color 160ms ease,color 160ms ease}.publication-venue-text{min-width:0;text-decoration:none;color:inherit;transition:color 160ms ease}a.publication-venue-badge:hover{transform:translateY(-1px);background:rgba(var(--accent-rgb),.16);border-color:rgba(var(--accent-rgb),.28)}a.publication-venue-text:hover{color:var(--accent-deep)}.publication-authors{margin:6px 0 0;color:var(--ink);font-size:14px;line-height:1.6}.author-highlight{font-weight:700;color:var(--accent-deep)}.publication-abstract{margin:8px 0 0;color:var(--ink-soft);font-size:12px;line-height:1.65}.paper-links{margin-top:auto;padding-top:12px;display:flex;flex-wrap:wrap;gap:8px}.paper-links a{display:inline-flex;align-items:center;gap:.42em;color:var(--accent);text-decoration:none;font-family:var(--font-serif-display);font-weight:600;font-size:14px;letter-spacing:.02em;border-bottom:1px solid var(--link-underline-strong);transition:color 180ms ease,border-color 180ms ease,transform 180ms ease}.link-icon{font-size:.94em;opacity:1;transform:translateY(.02em)}.link-icon-svg{width:1.24em;height:1.24em;fill:currentColor;stroke:none;flex:none;transform:translateY(.02em);transition:color 240ms ease,fill 240ms ease}.paper-links a:hover{border-color:var(--accent);color:var(--accent-deep);transform:translateY(-1px)}.paper-links .paper-link-youtube:hover .link-icon-svg{color:#f03;fill:currentColor}.timeline{display:grid;gap:10px}.timeline-item{position:relative;border-left:1px solid var(--line-soft);padding-left:18px}.timeline-item::before{content:"";position:absolute;left:-5px;top:6px;width:9px;height:9px;background:var(--paper-strong);border:1px solid var(--accent);border-radius:50%}.timeline-item-with-badge::before{content:none}.timeline-item h4{margin:0;font-family:var(--font-serif-display);font-size:17px;font-weight:600}.timeline-heading{display:block;line-height:1.4}.timeline-heading-link{color:inherit;text-decoration:none;border-bottom:1px solid var(--link-underline);transition:color 160ms ease,border-color 160ms ease}.timeline-heading-link:hover{color:var(--accent);border-bottom-color:var(--accent)}.timeline-school-badge{width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:6px;background:rgba(252,248,243,.92);border:1px solid rgba(var(--accent-rgb),.12);padding:2px;overflow:hidden;box-shadow:0 3px 10px rgba(var(--accent-deep-rgb),.08)}.timeline-marker{position:absolute;left:-11px;top:2px;margin:0}.timeline-heading-text{display:inline}.timeline-role{margin-top:2px;color:var(--ink);font-size:16px;font-weight:500;line-height:1.45}.timeline-school-badge-dark{background:#7f403a;border-color:rgba(119,55,50,.24)}.timeline-school-logo{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}.timeline-school-badge-mit{padding:3px}.timeline-school-badge-mit .timeline-school-logo{max-width:100%;max-height:70%}.timeline-school-badge-sjtu{border-radius:999px}.timeline-school-badge-sjtu .timeline-school-logo{max-width:92%;max-height:92%}.timeline-school-badge-aws{background:0 0;border-color:transparent;box-shadow:none;padding:0}.timeline-school-badge-aws .timeline-school-logo{max-width:100%;max-height:100%;border-radius:.24em}.timeline-school-badge-light .timeline-school-logo{max-height:100%}.timeline-school-logo{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}.timeline-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.timeline-title-row .timeline-heading{min-width:0}.timeline-header-copy{flex:auto;min-width:0}.timeline-meta{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:2px}.timeline-period{margin:0;color:var(--ink-soft);font-size:14px;font-style:italic;text-align:right;white-space:nowrap}.timeline-location{margin:0;color:var(--ink-soft);font-size:13px;text-align:right;white-space:nowrap}.timeline-item{margin-left:8px}.timeline-item ul{margin:8px 0 0;padding-inline:24px 36px}.site-footer{border-top:1px solid var(--line);padding:18px 0 30px;color:var(--ink-soft);font-size:12px;text-align:center}.reveal{opacity:1;transform:none;animation:none}.reveal.visible{opacity:1;transform:none}.scroll-reveal{opacity:0;transform:translateY(18px);transition:opacity 520ms cubic-bezier(.2,.8,.2,1)var(--reveal-delay,0ms),transform 520ms cubic-bezier(.2,.8,.2,1)var(--reveal-delay,0ms);will-change:opacity,transform}.scroll-reveal.is-visible{opacity:1;transform:none}.hero>*{opacity:0;transform:translateY(10px);animation:rise-in 600ms ease forwards}.hero>:nth-child(1){animation-delay:120ms}.hero>:nth-child(2){animation-delay:200ms}.hero>:nth-child(3){animation-delay:280ms}.hero>:nth-child(4){animation-delay:340ms}.hero>:nth-child(5){animation-delay:420ms}@keyframes drift{0%{transform:translate3d(0,0,0)rotate(0)}50%{transform:translate3d(10px,-8px,0)rotate(4deg)}100%{transform:translate3d(-8px,10px,0)rotate(-3deg)}}@keyframes paper-breathe{0%{opacity:.78}50%{opacity:.9}100%{opacity:.78}}@keyframes hero-settle{0%{opacity:0;transform:translateY(20px)scale(.985)}100%{opacity:1;transform:translateY(0)scale(1)}}@keyframes rise-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes section-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1024px){:root{--content-width:min(1120px, 94vw)}.section{width:var(--content-width)}.experience-grid{grid-template-columns:1fr 1fr;grid-template-rows:auto auto}.experience-panel-work{grid-column:1;grid-row:1}.experience-panel-research{grid-column:2;grid-row:1/span 2}.experience-panel-education{grid-column:1;grid-row:2}}@media(max-width:960px){.nav-row{gap:10px}.top-nav{gap:10px}.top-nav a{letter-spacing:.01em}.meta-grid,.research-grid,.experience-grid{grid-template-columns:1fr;grid-template-rows:auto}.experience-panel-work,.experience-panel-research,.experience-panel-education{grid-column:auto;grid-row:auto}.hero-grid{grid-template-columns:1fr}.publication-card{grid-template-columns:minmax(232px,36%)minmax(0,1fr);align-items:stretch}.hero-grid{display:grid;grid-template-rows:auto auto auto auto}.hero{text-align:center}.hero-copy{display:contents}.hero-kicker{order:1;grid-column:1;grid-row:1;display:flex;justify-content:center;margin-bottom:10px}.hero-avatar-wrap{order:2;grid-column:1;grid-row:2;align-self:start;height:140px;width:140px;min-width:140px;aspect-ratio:1/1;margin:0 auto}.hero-text{order:3;grid-column:1;grid-row:3;text-align:center}.contact-links{order:4;grid-column:1;grid-row:4;justify-content:center;margin-top:28px}.publication-media{max-width:none;min-height:100%;aspect-ratio:auto;align-self:stretch;padding:16px 14px;background:rgba(241,231,218,.92)}.publication-thumb,.publication-thumb-fallback{inset:16px 14px}.publication-thumb{width:calc(100% - 28px);height:calc(100% - 32px);border-radius:14px}.publication-thumb-fallback{padding:18px;border-radius:14px}.publication-content{padding:18px 20px 18px 4px}.publication-content h3{margin-bottom:8px;font-size:clamp(18px,2.7vw,20px);line-height:1.28}.publication-meta{gap:7px;font-size:12px}.publication-authors{margin-top:4px;font-size:13px;line-height:1.55}.publication-abstract{margin-top:6px}}@media(max-width:720px){:root{--font-serif-body:var(--font-sans);--font-serif-display:var(--font-sans)}body{background-size:24px 24px}body::before{opacity:.42}.site-header{padding:76px 0 8px}.nav-row{display:none}.mobile-lang-switch{display:inline-flex;position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:200;padding:2px;border-radius:12px;border:1px solid var(--line-soft);background:var(--surface-strong);box-shadow:var(--shadow-soft);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.back-to-top{right:14px;bottom:18px}.hero{padding:18px 16px}.hero-grid{gap:14px}.hero{text-align:center}.hero-kicker{display:flex;justify-content:center}.hero-avatar-wrap{margin:0 auto}.hero-text{text-align:center}.contact-links{justify-content:center}h1{font-size:34px}h2{margin:16px 0 14px;font-size:24px;gap:.34em}.hero-avatar-wrap{width:120px;height:120px}.contact-links{gap:8px}.contact-links a{justify-content:center;width:42px;height:42px;padding:0;gap:0;border-radius:12px}.contact-links .link-icon-label{display:none}.contact-links .link-icon,.contact-links .link-icon-img,.contact-links .link-icon-svg{width:1.22em;height:1.22em}section{margin-top:clamp(36px,8vw,48px)}.publication-card{grid-template-columns:minmax(168px,33%)minmax(0,1fr);gap:16px;align-items:stretch}.publication-media{min-height:100%;aspect-ratio:auto;padding:12px 0 12px 12px}.publication-thumb,.publication-thumb-fallback{inset:12px 0 12px 12px}.publication-thumb{width:calc(100% - 12px);height:calc(100% - 24px);border-radius:12px}.publication-thumb-fallback{padding:16px;border-radius:12px}.publication-content{padding:16px 18px 16px 0}.timeline-item ul{padding-inline:28px 12px}}@media(max-width:600px){.publication-card{grid-template-columns:1fr;gap:0}.publication-media{min-height:0;aspect-ratio:5/2;padding:10px 10px 0}.publication-thumb,.publication-thumb-fallback{inset:10px 10px 0}.publication-thumb{width:calc(100% - 20px);height:calc(100% - 10px)}.publication-content{padding:12px 16px 16px}}@media(max-width:520px){.bg-shape{opacity:.12}.top-nav{width:100%}.top-nav a{width:100%;text-align:left;font-size:14px;padding:6px 0}.lang-switch{align-self:flex-end}.nav-row{padding:8px}.panel,.research-card,.publication-card{padding:14px}.publication-card{padding:0}.site-footer{font-size:11px}}@media(prefers-reduced-motion:reduce){body::before,body::after,.bg-shape,.hero,.hero>*,.panel,.research-card,.publication-card,.scroll-reveal,.contact-links a,.paper-links a,.lang-btn,.top-nav a,.back-to-top,.reveal{animation:none!important;transition:none!important;transform:none!important}.scroll-reveal{opacity:1!important}}