:root{--bg:#fff;--surface:#f8f9fc;--surface-2:#f3f5fa;--ink:#1c1f26;--ink-2:#444b57;--muted:#6b7280;--faint:#9aa1ad;--line:#e9ecf2;--line-soft:#f0f2f7;--blue:#2f5fe8;--blue-soft:#edf2fe;--blue-line:#c9d8fb;--pink:#e35d9b;--pink-soft:#fdeef5;--pink-line:#f7cfe1;--radius-card:22px;--radius-md:14px;--radius-lg:18px;--radius-pill:999px;--font-display:"Outfit", "Inter", "PingFang SC", "Microsoft YaHei", -apple-system, "Segoe UI", sans-serif;--font-body:"Inter", "PingFang SC", "Microsoft YaHei", -apple-system, "Segoe UI", sans-serif;--container:1080px;--gutter:clamp(20px, 5vw, 44px);--section-gap:clamp(88px, 12vw, 140px);--shadow-card:0 1px 2px #1c1f260a, 0 10px 32px #1c1f260d;--shadow-hover:0 2px 4px #1c1f260d, 0 16px 44px #1c1f2617}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:16.5px;line-height:1.7}img{max-width:100%;display:block}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:4px}.container{max-width:var(--container);padding:0 var(--gutter);margin:0 auto}.nav{z-index:50;-webkit-backdrop-filter:saturate(1.4)blur(14px);border-bottom:1px solid var(--line-soft);background:#ffffffd1;position:sticky;top:0}.nav-inner{max-width:var(--container);padding:14px var(--gutter);justify-content:space-between;align-items:center;gap:24px;margin:0 auto;display:flex}.nav-logo{font-family:var(--font-display);letter-spacing:.02em;color:var(--ink);white-space:nowrap;font-size:17px;font-weight:600}.nav-logo:hover{text-decoration:none}.nav-logo .dot{color:var(--pink)}.nav-links{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.nav-links a{color:var(--ink-2);border-radius:var(--radius-pill);padding:7px 14px;font-size:14px;font-weight:500;transition:background .18s,color .18s}.nav-links a:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}.lang-switch{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-pill);gap:2px;margin-left:10px;padding:2px;display:inline-flex}.lang-switch a{border-radius:var(--radius-pill);color:var(--faint);padding:4px 12px;font-size:13px;font-weight:600}.lang-switch a:hover{color:var(--ink-2);background:0 0;text-decoration:none}.lang-switch a.active{color:var(--blue);background:#fff;box-shadow:0 1px 3px #1c1f261a}.hero{padding:clamp(64px,9vw,112px) 0 clamp(56px,7vw,88px)}.hero-grid{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:clamp(36px,6vw,80px);display:grid}.hero-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--blue);background:var(--blue-soft);border:1px solid var(--blue-line);border-radius:var(--radius-pill);align-items:center;gap:8px;margin-bottom:26px;padding:6px 16px;font-size:13.5px;font-weight:600;display:inline-flex}.hero-eyebrow:before{content:"";background:var(--blue);border-radius:50%;width:7px;height:7px}.hero-name{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 14px;font-size:clamp(44px,6.5vw,76px);font-weight:700;line-height:1.1}.hero-role{font-family:var(--font-display);color:var(--ink-2);margin:0 0 18px;font-size:clamp(19px,2.4vw,25px);font-weight:500}.hero-role .sep{color:var(--pink);padding:0 6px}.hero-intro{max-width:52ch;color:var(--muted);margin:0 0 34px;font-size:17px}.hero-intro strong{color:var(--ink-2);font-weight:600}.hero-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 28px;max-width:560px;margin:0 0 36px;display:grid}.fact{flex-direction:column;gap:2px;display:flex}.fact dt{letter-spacing:.07em;text-transform:uppercase;color:var(--faint);font-size:12px;font-weight:600}.fact dd{color:var(--ink-2);margin:0;font-size:15.5px;font-weight:500}.btn{font-family:var(--font-display);border-radius:var(--radius-pill);align-items:center;gap:8px;padding:12px 26px;font-size:15px;font-weight:600;transition:transform .18s,box-shadow .18s,background .18s;display:inline-flex}.btn:hover{text-decoration:none;transform:translateY(-1px)}.btn-primary{background:var(--blue);color:#fff;box-shadow:0 8px 22px #2f5fe847}.btn-primary:hover{background:#2854cf}.btn-outline{color:var(--ink-2);border:1.5px solid var(--line);background:#fff}.btn-outline:hover{border-color:var(--pink);color:var(--pink)}.btn svg{width:16px;height:16px}.hero-portrait{width:clamp(200px,22vw,284px);position:relative}.hero-portrait img{aspect-ratio:1;border-radius:var(--radius-lg);object-fit:cover;width:100%;height:auto;box-shadow:0 18px 48px #1c1f2624}.section{padding-bottom:var(--section-gap)}.section-head{max-width:720px;margin-bottom:clamp(36px,5vw,56px)}.section-index{letter-spacing:.12em;text-transform:uppercase;color:var(--faint);align-items:center;gap:14px;margin-bottom:14px;font-size:13px;font-weight:600;display:flex}.section-index .tick{background:var(--line);border-radius:2px;width:34px;height:2px}.section-title{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 12px;font-size:clamp(28px,3.6vw,40px);font-weight:600;line-height:1.15}.section-lede{color:var(--muted);max-width:60ch;margin:0;font-size:16.5px}.card{border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--shadow-card);background:#fff}.about-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:stretch;gap:28px;display:grid}.about-text{padding:clamp(28px,4vw,44px)}.about-text p{color:var(--ink-2);margin:0 0 18px}.about-text p:last-child{margin:0}.about-text a{font-weight:500}.edu-card{flex-direction:column;padding:clamp(26px,3.4vw,36px);display:flex}.edu-card .degree{font-family:var(--font-display);margin:0 0 6px;font-size:19px;font-weight:600;line-height:1.3}.edu-card .school{color:var(--muted);margin:0 0 4px;font-size:15.5px}.edu-card .school a{color:var(--ink-2);font-weight:500}.edu-meta{flex-wrap:wrap;gap:8px;margin:18px 0 14px;display:flex}.chip{letter-spacing:.02em;border-radius:var(--radius-pill);background:var(--surface-2);color:var(--ink-2);border:1px solid var(--line);align-items:center;padding:5px 13px;font-size:12.5px;font-weight:600;display:inline-flex}.chip-blue{background:var(--blue-soft);color:var(--blue);border-color:var(--blue-line)}.chip-pink{background:var(--pink-soft);color:var(--pink);border-color:var(--pink-line)}.edu-stats{flex-wrap:wrap;gap:24px;margin:16px 0 6px;display:flex}.stat{flex-direction:column;display:flex}.stat b{font-family:var(--font-display);color:var(--ink);font-size:26px;font-weight:700;line-height:1.2}.stat b .unit{color:var(--faint);font-size:14px;font-weight:500}.stat span{color:var(--faint);font-size:12.5px}.edu-note{color:var(--faint);border-top:1px dashed var(--line);margin-top:auto;padding-top:16px;font-size:12.5px;line-height:1.55}.edu-coursework{color:var(--muted);margin-top:14px;font-size:14.5px;line-height:1.75}.edu-coursework b{color:var(--ink-2);margin-bottom:2px;font-weight:600;display:block}.edu-coursework strong{color:var(--ink-2);font-weight:600}.interests-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;display:grid}.interest{flex-direction:column;gap:10px;padding:clamp(24px,3vw,34px);transition:transform .2s,box-shadow .2s;display:flex}.interest:hover{box-shadow:var(--shadow-hover);transform:translateY(-3px)}.interest .num{width:40px;height:40px;font-family:var(--font-display);border-radius:13px;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:inline-flex}.interest:nth-child(odd) .num{background:var(--blue-soft);color:var(--blue)}.interest:nth-child(2n) .num{background:var(--pink-soft);color:var(--pink)}.interest h3{font-family:var(--font-display);margin:4px 0 0;font-size:18.5px;font-weight:600;line-height:1.35}.interest p{color:var(--muted);margin:0;font-size:15.5px}.timeline{padding-left:8px;position:relative}.timeline:before{content:"";background:var(--line);border-radius:2px;width:2px;position:absolute;top:14px;bottom:14px;left:27px}.tl-item{padding-bottom:30px;padding-left:72px;position:relative}.tl-item:last-child{padding-bottom:0}.tl-dot{background:#fff;border:2px solid;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;display:flex;position:absolute;top:12px;left:8px}.tl-dot svg{width:18px;height:18px}.tl-item[data-lab=dry] .tl-dot{border-color:var(--blue-line);color:var(--blue);background:var(--blue-soft)}.tl-item[data-lab=wet] .tl-dot{border-color:var(--pink-line);color:var(--pink);background:var(--pink-soft)}.tl-card{padding:clamp(22px,3vw,32px)}.tl-card:hover{box-shadow:var(--shadow-hover)}.tl-top{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:6px;display:flex}.tl-role{font-family:var(--font-display);margin:0;font-size:18.5px;font-weight:600;line-height:1.35}.tl-when{color:var(--faint);white-space:nowrap;font-size:13px;font-weight:500}.tl-org{color:var(--muted);margin:0 0 4px;font-size:14px}.tl-org a{color:var(--ink-2);font-weight:500}.tl-org .chip{margin-right:8px}.tl-org .sup{color:var(--muted)}.tl-points{flex-direction:column;gap:9px;margin:14px 0 0;padding:0;list-style:none;display:flex}.tl-points li{color:var(--ink-2);padding-left:24px;font-size:15.5px;position:relative}.tl-points li:before{content:"";border-radius:50%;width:7px;height:7px;position:absolute;top:10px;left:4px}.tl-item[data-lab=dry] .tl-points li:before{background:var(--blue-line)}.tl-item[data-lab=wet] .tl-points li:before{background:var(--pink-line)}.pub-list{flex-direction:column;gap:22px;display:flex}.pub{padding:clamp(24px,3vw,34px)}.pub:hover{box-shadow:var(--shadow-hover)}.pub-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.pub-idx{font-family:var(--font-display);color:var(--faint);letter-spacing:.04em;font-size:13px;font-weight:700}.pub-title{font-family:var(--font-display);margin:0 0 10px;font-size:18.5px;font-weight:600;line-height:1.4}.pub-authors{color:var(--muted);margin:0 0 12px;font-size:15px;line-height:1.8}.pub-authors .self{color:var(--ink);font-weight:600}.pub-authors .corr{color:var(--faint);font-style:italic}.pub-venue{color:var(--ink-2);margin:0 0 14px;font-size:15px;font-weight:500}.pub-venue br{content:"";margin-bottom:4px;display:block}.pub-links{flex-wrap:wrap;gap:10px;display:flex}.mini-link{border-radius:var(--radius-pill);border:1px solid var(--line);color:var(--ink-2);background:var(--surface);cursor:default;align-items:center;gap:6px;padding:7px 15px;font-size:13px;font-weight:600;transition:border-color .18s,color .18s;display:inline-flex}a.mini-link{cursor:pointer}.mini-link:hover{text-decoration:none}a.mini-link:hover{border-color:var(--blue-line);color:var(--blue)}a.mini-link.pink:hover{border-color:var(--pink-line);color:var(--pink)}.mini-link svg{width:13px;height:13px}.cert-preview{z-index:90;pointer-events:none;background:var(--surface);border:1px solid var(--line);opacity:0;border-radius:14px;width:auto;max-width:min(640px,92vw);padding:8px;transition:opacity .18s,transform .18s;position:fixed;transform:translateY(6px)scale(.98);box-shadow:0 18px 50px #02081747}.cert-preview.show{opacity:1;transform:translateY(0)scale(1)}.cert-preview .cp-imgs{gap:6px;display:flex}.cert-preview img{background:#fff;border-radius:8px;width:auto;max-width:min(320px,72vw);height:auto;max-height:236px;display:block}.cert-preview img:not(:only-child){max-width:48%}.lb{z-index:100;opacity:0;visibility:hidden;background:#020817d6;justify-content:center;align-items:center;padding:24px;transition:opacity .2s,visibility .2s;display:flex;position:fixed;inset:0}.lb.open{opacity:1;visibility:visible}.lb-imgs{justify-content:center;align-items:center;gap:18px;max-width:96vw;display:flex}.lb-imgs img{background:#fff;border-radius:12px;width:auto;max-width:min(1100px,92vw);height:auto;max-height:84vh;transition:transform .22s cubic-bezier(.22,1,.36,1);transform:scale(.96);box-shadow:0 30px 90px #00000080}.lb-imgs img:not(:only-child){max-width:min(560px,47vw)}.lb.open img{transform:scale(1)}.lb-close{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff40;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:background .18s;display:flex;position:absolute;top:18px;right:22px}.lb-close:hover{background:#ffffff2e}.lb-close svg{width:15px;height:15px}.lb-cap{color:#ffffffc7;letter-spacing:.02em;white-space:nowrap;font-size:13px;font-weight:500;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}body.lb-lock{overflow:hidden}.award-tag{border-radius:var(--radius-pill);background:var(--pink-soft);color:var(--pink);border:1px solid var(--pink-line);letter-spacing:.01em;padding:2px 10px;font-size:12px;font-weight:600;display:inline-block;transform:translateY(-1px)}.skills-grid{grid-template-columns:1fr;gap:22px;display:grid}.skill-group{padding:clamp(22px,3vw,30px)}.skill-group h3{font-family:var(--font-display);align-items:center;gap:10px;margin:0 0 16px;font-size:16.5px;font-weight:600;display:flex}.skill-group h3 .swatch{border-radius:50%;width:10px;height:10px}.skill-group.comp h3 .swatch{background:var(--blue)}.skill-group.exp h3 .swatch{background:var(--pink)}.skill-group.soft h3 .swatch{background:#8b93a3}.skill-tags{flex-wrap:wrap;gap:9px;display:flex}.skill-tags .chip{padding:6px 15px;font-size:13px;font-weight:500}.skill-group.comp .chip{background:var(--blue-soft);color:var(--blue);border-color:var(--blue-line)}.skill-group.exp .chip{background:var(--pink-soft);color:var(--pink);border-color:var(--pink-line)}.skill-note{color:var(--faint);margin:14px 0 0;font-size:13px}.honour-list{flex-direction:column;gap:16px;display:flex}.honour{justify-content:space-between;align-items:center;gap:20px;padding:20px clamp(22px,3vw,30px);display:flex}.honour:hover{box-shadow:var(--shadow-hover)}.honour-main{align-items:center;gap:18px;min-width:0;display:flex}.honour-year{font-family:var(--font-display);color:var(--pink);background:var(--pink-soft);border:1px solid var(--pink-line);border-radius:var(--radius-pill);white-space:nowrap;padding:4px 14px;font-size:15px;font-weight:700}.honour-info{min-width:0}.honour-info h3{font-family:var(--font-display);margin:0;font-size:16.5px;font-weight:600;line-height:1.4}.honour-info p{color:var(--muted);margin:3px 0 0;font-size:15px}.honour-links{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.contact-grid{grid-template-columns:minmax(0,680px);align-items:start;gap:22px;display:grid}.contact-card{padding:clamp(24px,3vw,34px)}.contact-card h3{font-family:var(--font-display);align-items:center;gap:10px;margin:0 0 18px;font-size:17px;font-weight:600;display:flex}.contact-card h3 .swatch{border-radius:50%;width:10px;height:10px}.contact-card.blue h3 .swatch{background:var(--blue)}.mail-row{flex-wrap:wrap;align-items:baseline;gap:10px;padding:7px 0;display:flex}.mail-row a{word-break:break-all;font-size:14.5px;font-weight:500}.mail-row .kind{color:var(--faint);text-transform:uppercase;letter-spacing:.06em;font-size:12px;font-weight:600}.footer{border-top:1px solid var(--line-soft);color:var(--faint);padding:36px 0 44px;font-size:13px}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.reveal{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(18px)}.reveal.in{opacity:1;transform:none}.reveal[data-delay="1"]{transition-delay:80ms}.reveal[data-delay="2"]{transition-delay:.16s}.reveal[data-delay="3"]{transition-delay:.24s}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transition:none;transform:none}.btn:hover,.interest:hover,.pub:hover,.tl-card:hover,.honour:hover{transform:none}}section[id],header[id]{scroll-margin-top:84px}html{-webkit-text-size-adjust:100%}p,li,dd{overflow-wrap:break-word}@media (width<=860px){.hero-grid{grid-template-columns:1fr;gap:26px}.hero-portrait{order:-1;width:clamp(150px,30vw,216px);margin:0}.hero{padding:clamp(40px,7vw,64px) 0 clamp(36px,6vw,56px)}.hero-facts{max-width:none}.about-grid{grid-template-columns:1fr;gap:20px}.contact-grid{grid-template-columns:1fr}.section{padding-bottom:calc(var(--section-gap) * .72)}.nav-inner{gap:12px;padding-top:9px;padding-bottom:9px}.nav-links{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;min-width:0;overflow-x:auto}.nav-links::-webkit-scrollbar{display:none}.nav-links a{white-space:nowrap;flex:none;padding:6px 12px;font-size:13.5px}}@media (width<=640px){.interests-grid{grid-template-columns:1fr;gap:16px}}@media (width<=560px){:root{--gutter:18px}.hero-name{margin-bottom:10px}.hero-intro{margin-bottom:26px;font-size:15.5px}.hero-facts{grid-template-columns:1fr;gap:10px;margin-bottom:28px}.edu-stats{flex-wrap:wrap;gap:16px 28px}.tl-item{padding-left:58px}.timeline:before{left:23px}.tl-dot{width:34px;height:34px;left:7px}.tl-dot svg{width:15px;height:15px}.honour{flex-direction:column;align-items:flex-start;gap:12px}.honour-links{justify-content:flex-start}.footer-inner{row-gap:8px}}@media (height<=500px) and (orientation:landscape){.hero{padding:22px 0 30px}.hero-grid{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:36px}.hero-portrait{width:150px}.hero-name{margin-bottom:8px;font-size:clamp(30px,4.5vw,44px)}.hero-role{margin-bottom:10px;font-size:17px}.hero-intro{margin-bottom:16px;font-size:14.5px}.hero-facts{gap:6px 20px;margin-bottom:18px}.section{padding-bottom:40px}.section-head{margin-bottom:24px}}
