@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;600&family=Libre+Caslon+Display&display=swap');
:root{--bg:#f9f8f3;--paper:#fffefa;--ink:#233b32;--muted:#637269;--line:#dce1d6;--green:#286449;--gold:#b98646;--wash:#eaf0e5}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.75 'DM Sans','Noto Sans SC',sans-serif}a{color:inherit;text-decoration:none}a:hover{color:var(--green)}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:5px}button,input{font:inherit}button{cursor:pointer}header{border-bottom:1px solid var(--line)}.wrap{width:min(1180px,calc(100% - 80px));margin:auto}.nav{min-height:94px;display:flex;align-items:center;justify-content:space-between;gap:30px}.brand{font-weight:700;letter-spacing:.04em;display:flex;align-items:center;gap:14px}.mark{background:#fff;border:1px solid var(--line);border-radius:9px;width:40px;height:40px;object-fit:cover;display:block}nav{display:flex;gap:25px;align-items:center;font-size:14px}nav a[aria-current=page]{border-bottom:1px solid var(--green)}.lang{border:1px solid var(--line);padding:5px 12px;border-radius:3px}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:11px;color:var(--green);font-weight:700}.hero{padding:78px 0 68px;display:grid;grid-template-columns:1.25fr 1fr;gap:65px;align-items:center}.hero h1{font:normal clamp(48px,6vw,82px)/1.08 'Libre Caslon Display',Georgia,serif;letter-spacing:-.025em;margin:22px 0}.hero h1 .cn{font-family:'Noto Sans SC',sans-serif;font-size:.59em;font-weight:500;letter-spacing:.08em}.hero p{max-width:610px;color:var(--muted);font-size:17px}.hero .subtitle{font-size:22px;color:var(--ink);line-height:1.6}.actions{display:flex;gap:13px;flex-wrap:wrap;margin-top:28px}.button{padding:10px 19px;border:1px solid var(--line);border-radius:3px;font-size:13px;display:inline-block;background:transparent}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#1e4f3b;color:white}.science{background:var(--wash);border-radius:50% 50% 3px 3px;aspect-ratio:1/1.03;position:relative;overflow:hidden}.science svg{width:100%;height:100%}.science .caption{position:absolute;bottom:23px;left:25px;right:25px;font-size:10px;letter-spacing:.13em;display:flex;justify-content:space-between;color:#4b6858}.section{padding:49px 0 56px;border-top:1px solid var(--line)}.sectionhead{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-bottom:29px}.sectionhead h2,h2{font:normal 34px/1.25 'Libre Caslon Display','Noto Sans SC',Georgia,serif;margin:0 0 12px}.sectionhead a{font-size:13px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.research{padding:4px 25px 10px 0}.num{color:var(--gold);font-family:Georgia,serif;font-size:14px}.research h3{font-size:19px;font-weight:500;margin:16px 0 10px}.research p,.small{font-size:14px;color:var(--muted)}.pub{padding:23px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:65px 1fr;gap:20px}.year{color:var(--muted);font-size:13px;padding-top:3px}.pub h3{font-size:17px;font-weight:500;line-height:1.5;margin:0 0 8px}.pub p{font-size:13px;color:var(--muted);margin:4px 0}.pub .journal{color:var(--green);font-weight:500}.pill{font-size:10px;background:var(--wash);padding:4px 8px;border-radius:2px;margin-left:10px;white-space:nowrap}.software{display:block;border:1px solid var(--line);padding:25px;background:var(--paper);transition:transform .2s}.software:hover{transform:translateY(-3px)}.software .arrow{float:right}.software h3{margin:15px 0 10px;font-size:21px;font-weight:500}.software p{font-size:14px;color:var(--muted);margin:0}.pagehead{padding:58px 0 40px;max-width:820px}.pagehead h1{font:normal 60px/1.1 'Libre Caslon Display','Noto Sans SC',Georgia,serif;margin:17px 0}.pagehead p{color:var(--muted)}.filter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:30px}.filter button{border:1px solid var(--line);background:transparent;padding:6px 14px;font-size:13px;border-radius:3px}.filter button.active{background:var(--green);color:white}.filter input{margin-left:auto;max-width:100%;padding:7px 12px;border:1px solid var(--line);background:var(--paper);border-radius:3px}.post{padding:27px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:105px 1fr 30px;gap:25px;align-items:baseline}.post time{font-size:12px;color:var(--muted)}.post h3{font-weight:500;font-size:19px;margin:0}.reading{max-width:850px;padding-bottom:65px}.reading h2{margin-top:40px}.reading p,.reading li{color:var(--muted)}.cv-row{display:grid;grid-template-columns:160px 1fr;gap:24px;border-top:1px solid var(--line);padding:18px 0}.cv-row p{margin:0}.contact{display:flex;justify-content:space-between;align-items:center;gap:30px}.contact h2{font-size:39px}.contact p{color:var(--muted)}footer{border-top:1px solid var(--line);padding:27px 0;color:var(--muted);font-size:12px}.foot{display:flex;justify-content:space-between;gap:20px}.skip{position:absolute;left:10px;top:-100px;background:white;padding:10px;z-index:10}.skip:focus{top:10px}[hidden]{display:none!important}.empty{padding:40px 0;color:var(--muted)}@media(max-width:850px){.wrap{width:calc(100% - 40px)}.nav{padding:19px 0;flex-wrap:wrap;gap:15px}nav{gap:17px;flex-wrap:wrap;font-size:13px}.hero{padding:45px 0;gap:35px;grid-template-columns:1fr}.hero h1{font-size:64px}.science{max-width:440px;aspect-ratio:1.3;margin:auto;width:100%}.grid{grid-template-columns:1fr}.section{padding:35px 0}.research{padding:0}.contact{display:block}.pagehead h1{font-size:44px}.filter input{margin-left:0;width:100%}.post{grid-template-columns:80px 1fr;gap:15px}.post>span{display:none}.cv-row{grid-template-columns:1fr;gap:4px}.foot{flex-wrap:wrap}.pub{grid-template-columns:45px 1fr;gap:12px}.pill{display:inline-block;margin:5px 0}.sectionhead h2{font-size:29px}}@media print{header,footer,.actions,.filter,.skip{display:none}body{background:white;font-size:10pt;line-height:1.5}.wrap{width:100%}.pagehead{padding:0}.pagehead h1{font-size:30pt}.reading{max-width:none}.reading h2{font-size:16pt;break-after:avoid}.pub,.cv-row{break-inside:avoid}.pub h3{font-size:11pt}a{color:inherit}}
