:root{--paper:#fbfaf6;--ink:#2a261f;--ink-strong:#1a1814;--ink-soft:#332e26;--muted:#7e7a70;--icon:#5a564c;--rule:#d8d3c7;--rule-light:#ece8dd;--link:#3a6ea8;--mark:#fff3a8;--code-bg:#f1eddf;--serif:"Source Serif 4", "LXGW WenKai Lite", Georgia, serif;--mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace, "LXGW WenKai Lite";--t-display:30px;--t-title:24px;--t-body:16px;--t-sub:15px;--t-fine:13.5px;--t-code:12.5px;--t-meta:12px;--t-label:11px;--t-micro:10.5px;--t-toc:11px;--t-toc-3:10.5px;--t-note-rail:12.5px;--lh-body:1.7;--lh-toc:1.5;--lh-note:1.7;--lh-note-rail:1.6;--measure:760px;--gutter:32px}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:var(--t-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-synthesis-style:none;margin:0}body:lang(zh){--t-body:15px;--t-fine:14px;--t-toc:12.5px;--t-toc-3:12px;--t-note-rail:13.5px;--lh-body:1.9;--lh-toc:1.6;--lh-note:1.85;--lh-note-rail:1.75}a{color:var(--link);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}::selection{background:var(--mark)}img{max-width:100%;height:auto}:focus-visible{outline:2px solid var(--link);outline-offset:2px;border-radius:2px}.page{min-height:100vh}.page--wide{--measure:920px}.topbar,.wrap{max-width:var(--measure);padding-inline:var(--gutter);margin:0 auto}.topbar{height:0;position:relative}.wrap{padding-block:84px 108px}.skip-link{background:var(--paper);color:var(--ink-strong);font-family:var(--mono);font-size:var(--t-meta);z-index:100;padding:8px 14px;position:absolute;top:0;left:-9999px}.skip-link:focus{top:8px;left:8px}.search-trigger{top:24px;right:var(--gutter);font-family:var(--mono);font-size:var(--t-micro);color:var(--muted);letter-spacing:.06em;cursor:pointer;background:0 0;border:0;padding:4px;line-height:1.4;position:absolute}.search-trigger:hover{color:var(--ink-strong);text-underline-offset:3px;text-decoration:underline}.eyebrow{font-family:var(--mono);font-size:var(--t-micro);color:var(--muted);letter-spacing:.12em}.eyebrow a{color:var(--muted)}.eyebrow--center{text-align:center}.label{font-family:var(--mono);font-size:var(--t-label);color:var(--muted);letter-spacing:.2em;text-align:center;margin-bottom:10px}.muted{color:var(--muted)}.mono-note{font-family:var(--mono);font-size:var(--t-label);color:var(--muted);letter-spacing:.03em}.mono-link{font-family:var(--mono);font-size:var(--t-meta)}h1,h2,h3{color:var(--ink-strong);font-weight:500}.title-home{text-align:center;font-size:var(--t-display);letter-spacing:-.01em;margin:30px 0 10px;font-weight:500;line-height:1.15}.title-page{font-size:var(--t-title);margin:22px 0 30px;font-weight:500}.title-page--tight{margin-bottom:6px}h2{font-size:var(--t-body);margin:42px 0 14px;font-weight:600}h3{font-size:var(--t-sub);margin:28px 0 10px;font-weight:600}.byline{text-align:center;font-size:var(--t-sub);color:var(--ink-strong)}.subline{text-align:center;font-size:var(--t-fine);color:var(--muted);margin:8px 0 38px;font-style:italic}.subline a{color:var(--muted)}.abstract{text-align:justify;color:var(--ink-soft);font-size:var(--t-body);margin:0 0 34px}.interests{margin:-22px 0 34px}.research-interests{font-size:var(--t-fine);color:var(--muted);margin:0;font-style:italic}hr,.rule{border:none;border-top:1px solid var(--rule);margin:0 0 30px}.rule--section{margin:42px 0 28px}.stack{flex-direction:column;gap:14px;display:flex}.stack--sm{gap:10px}.stack--xs{gap:8px}.post-row{align-items:baseline;gap:16px;display:flex}.post-row__date,.post-row__lang{font-family:var(--mono);font-size:var(--t-meta);color:var(--muted);flex:none}.post-row__date{font-variant-numeric:tabular-nums;width:94px}.post-row__title{color:var(--ink);font-size:var(--t-sub);line-height:1.5}.cjk{font-weight:400}.news-row{font-size:var(--t-sub)}.news-row__date{font-family:var(--mono);font-size:var(--t-meta);color:var(--muted);font-variant-numeric:tabular-nums;margin-right:12px}.archive-meta{font-size:var(--t-fine);color:var(--muted);margin-bottom:28px;font-style:italic}.filters{font-family:var(--mono);font-size:var(--t-meta);flex-wrap:wrap;align-items:baseline;gap:16px;margin-bottom:24px;display:flex}.filters__lang{gap:14px;margin-left:auto;display:flex}.filter{cursor:pointer;font:inherit;color:var(--muted);background:0 0;border:0;padding:0}.filter:hover{text-underline-offset:3px;text-decoration:underline}.filter[aria-pressed=true]{color:var(--ink-strong)}.archive{border-top:1px solid var(--rule)}.entry{border-bottom:1px solid var(--rule-light);align-items:baseline;gap:14px;padding:15px 0;display:flex}.entry__body{font-size:var(--t-sub);flex:1;line-height:1.6}.entry__link{color:var(--ink)}.entry__n,.entry__lang,.entry__date,.entry__tail{font-family:var(--mono);font-size:var(--t-meta);color:var(--muted)}.entry__n{font-variant-numeric:tabular-nums;flex:none;min-width:30px}.entry__lang{margin-right:8px}.entry__date{margin-left:10px}.archive__empty{color:var(--muted);border-bottom:1px solid var(--rule-light);padding:26px 0;font-style:italic}.lede-row{align-items:flex-start;gap:36px;display:flex}.lede{flex:1;min-width:0}.portrait{object-fit:cover;background:var(--code-bg);border-radius:50%;flex:none;width:132px;height:132px;margin-top:4px}.lede p{text-align:justify;color:var(--ink-soft);font-size:var(--t-body);margin:0 0 16px}.lede p:last-child{margin-bottom:0}.work{font-size:var(--t-sub);color:var(--ink-soft);flex-direction:column;gap:20px;display:flex}.work__head{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.work__title{color:var(--ink-strong);font-weight:500}.work__links{font-family:var(--mono);font-size:var(--t-label);flex:none;gap:12px;display:flex}.work__desc{text-align:justify;margin-top:3px}.kv{font-size:var(--t-sub);align-items:baseline;gap:16px;display:flex}.kv__key{width:82px;font-family:var(--mono);font-size:var(--t-label);color:var(--muted);flex:none}.social{flex-wrap:wrap;justify-content:center;align-items:center;gap:26px;display:flex}.social a{color:var(--icon);font-family:var(--mono);font-size:var(--t-label);align-items:center;gap:8px;display:flex}.social a:hover{color:var(--ink-strong)}.social svg{flex:none}.social__email{cursor:pointer}.social__email:hover{text-underline-offset:3px;text-decoration:underline}.post-title{text-align:center;font-size:clamp(var(--t-title), 2.6vw, var(--t-display));letter-spacing:-.005em;font-variation-settings:"opsz" 26;text-wrap:balance;margin:28px 0 12px;font-weight:500;line-height:1.3}.post-author{text-align:center;font-size:var(--t-sub);color:var(--ink-strong)}.post-meta{text-align:center;font-size:var(--t-fine);color:var(--muted);margin:6px 0 34px;font-style:italic}.post-meta a{color:var(--muted)}.post-abstract{text-align:justify;color:var(--ink-soft);font-style:italic;font-size:var(--t-body);margin:0 0 32px}.prose>:first-child{margin-top:0}.prose p{text-align:justify;margin:0 0 18px}.prose h2:first-of-type{margin-top:0}.prose ul,.prose ol{margin:0 0 18px;padding-left:26px}.prose li{margin:5px 0}.prose em{font-style:italic}.prose strong{color:var(--ink-strong);font-weight:600}.prose blockquote{border-left:2px solid var(--rule);color:var(--ink-soft);margin:24px 0;padding:2px 0 2px 22px;font-style:italic}.prose blockquote p:last-child{margin-bottom:0}.prose hr{margin:34px 0}.prose code{font-family:var(--mono);background:var(--code-bg);border-radius:3px;padding:1px 5px;font-size:.86em}.prose pre{background:var(--code-bg);border-left:2px solid var(--muted);font-family:var(--mono);font-size:var(--t-code);color:var(--ink-soft);margin:22px 0;padding:18px 22px;line-height:1.7;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}.prose table{border-collapse:collapse;width:100%;font-size:var(--t-sub);margin:24px 0}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--rule-light);padding:9px 12px 9px 0}.prose th{font-family:var(--mono);font-size:var(--t-label);color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-weight:500}.prose figure{margin:28px 0}.prose figcaption{font-size:var(--t-fine);color:var(--muted);text-align:center;margin-top:10px;font-style:italic}.katex{font-size:1.06em}.katex-display{margin:28px 0;padding:2px 0;overflow:auto hidden}.katex-display>.katex{font-size:1.14em}.prose .katex-display{text-align:center}.refs-head{font-family:var(--mono);font-size:var(--t-label);color:var(--muted);white-space:nowrap;margin-top:36px;overflow:hidden}.refs{font-size:var(--t-fine);color:var(--ink-soft);margin-top:10px;line-height:1.8}.refs ol{counter-reset:ref;margin:0;padding-left:0;list-style:none}.refs li{counter-increment:ref}.refs li:before{content:"[" counter(ref) "] ";color:var(--muted);font-family:var(--mono);font-size:var(--t-meta)}.post-nav{font-family:var(--mono);font-size:var(--t-meta);color:var(--muted);gap:20px;display:flex}.post-nav a{color:var(--muted)}.post-nav__next{text-align:right;margin-left:auto}:root{--toc-w:176px;--toc-gap:26px;--note-w:200px;--note-gap:28px}.toc-toggle,.note-toggle{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.toc-rail{margin:0 0 34px}.toc{font-family:var(--mono)}.toc-head{cursor:pointer;font-size:var(--t-micro);letter-spacing:.2em;color:var(--muted);display:inline-block}.toc-head:after{content:" ▸";letter-spacing:0}.toc-toggle:checked~.toc-head:after{content:" ▾"}.toc-head:hover{color:var(--ink-strong)}.toc-toggle:focus-visible~.toc-head{outline:2px solid var(--link);outline-offset:3px;border-radius:2px}.toc-list{margin:12px 0 0;padding:0;list-style:none;display:none}.toc-toggle:checked~.toc-list{display:block}.toc-item{border-left:1px solid var(--rule-light);padding-left:14px}.toc-item--3{padding-left:28px}.toc-item a{font-size:var(--t-toc);line-height:var(--lh-toc);color:var(--muted);padding:4px 0;display:block}.toc-item--3 a{font-size:var(--t-toc-3)}.toc-item a:hover{color:var(--ink-strong)}.toc-item.is-current{border-left-color:var(--ink-strong)}.toc-item.is-current>a{color:var(--ink-strong)}.prose h2,.prose h3{scroll-margin-top:28px}.head-anchor{font-family:var(--mono);color:var(--rule);opacity:0;margin-left:9px;font-size:.7em;font-weight:400;transition:opacity .12s}.prose h2:hover .head-anchor,.prose h3:hover .head-anchor,.head-anchor:focus-visible{opacity:1}.head-anchor:hover{color:var(--muted);text-decoration:none}.note-ref{font-family:var(--mono);vertical-align:super;color:var(--link);cursor:pointer;padding:0 1px 0 2px;font-size:.56em;line-height:1}.note-ref:hover{color:var(--ink-strong)}.note-ref{position:relative}.note-ref:after{content:"";position:absolute;inset:-9px -5px}.note-toggle:focus-visible+.note-ref{outline:2px solid var(--link);outline-offset:2px;border-radius:2px}.note{border-left:2px solid var(--rule);font-size:var(--t-fine);line-height:var(--lh-note);text-align:left;color:var(--muted);margin:16px 0 18px;padding:0 0 0 16px;display:none}.note-toggle:checked+.note-ref+.note{display:block}.note__n{font-family:var(--mono);font-size:var(--t-micro);color:var(--muted);vertical-align:.15em;margin-right:7px}aside.note{display:block}@media (width>=1240px){.wrap--rails{grid-template-columns:minmax(0, 1fr) minmax(0, var(--measure)) minmax(0, 1fr);max-width:none;padding-inline:0;display:grid}.wrap--rails>*{padding-inline:var(--gutter);grid-column:2}.wrap--rails>.post-head{grid-row:1}.wrap--rails>.post-body{grid-row:2}.wrap--rails>.site-footer{grid-row:3}.wrap--rails>.toc-rail{width:calc(var(--toc-w) + var(--toc-gap));padding:0 var(--toc-gap) 0 0;grid-area:2/1;justify-self:end;margin:0}.toc{max-height:calc(100vh - 96px);position:sticky;top:44px;overflow-y:auto}.toc-head{cursor:default}.toc-head:after{content:none}.toc-list{display:block}.prose{position:relative}.prose .note{right:calc(-1 * (var(--note-w) + var(--note-gap)));width:var(--note-w);font-size:var(--t-note-rail);line-height:var(--lh-note-rail);border-left:0;margin:0;padding:0;display:block;position:absolute}.note-ref{color:var(--muted)}.note-ref:after{content:none}.note-ref:hover,.note-ref:hover+.note{color:var(--ink-strong)}}.search-backdrop{z-index:90;backdrop-filter:blur(2px);background:#2a261f47;justify-content:center;align-items:flex-start;padding:12vh 20px 20px;display:flex;position:fixed;inset:0}.search-panel{background:var(--paper);border:1px solid var(--rule);flex-direction:column;width:100%;max-width:620px;max-height:70vh;display:flex;box-shadow:0 18px 48px #2a261f2e}.search-input{font-family:var(--serif);font-size:max(16px, var(--t-body));color:var(--ink);border:0;border-bottom:1px solid var(--rule);background:0 0;width:100%;padding:18px 22px}.search-input:focus{outline:none}.search-input::placeholder{color:var(--muted)}.search-results{margin:0;padding:0;list-style:none;overflow-y:auto}.search-results li{border-bottom:1px solid var(--rule-light)}.search-results li:last-child{border-bottom:0}.search-results a{color:var(--ink);padding:12px 22px;display:block}.search-results a:hover,.search-results .is-active a{background:var(--code-bg);text-decoration:none}.search-results mark{background:var(--mark);color:inherit}.search-result__title{font-size:var(--t-sub);line-height:1.45}.search-result__meta{font-family:var(--mono);font-size:var(--t-label);color:var(--muted);margin-top:3px}.search-empty{color:var(--muted);font-style:italic;font-size:var(--t-fine);padding:18px 22px}.search-hint{border-top:1px solid var(--rule-light);font-family:var(--mono);font-size:var(--t-micro);color:var(--muted);gap:16px;padding:10px 22px;display:flex}.notfound{text-align:center;padding-top:48px}.notfound__code{font-family:var(--mono);font-size:calc(var(--t-display) * 1.6);color:var(--rule);letter-spacing:.08em;line-height:1}@media (width<=900px){:root{--gutter:28px}.wrap{padding-block:64px 88px}.search-trigger{top:20px}}@media (width<=620px){:root{--gutter:20px}.wrap{padding-block:56px 72px}.search-trigger{top:16px}.title-page{margin:18px 0 24px}.post-row{flex-wrap:wrap;gap:6px 12px}.post-row__date{width:auto}.post-row__title{flex-basis:100%}.work__head{flex-direction:column;gap:5px}.work__links{margin-top:3px}.lede-row{flex-direction:column-reverse;align-items:center;gap:22px}.filters{gap:12px 16px}.filters__lang{flex-basis:100%;margin-left:0}.prose p,.abstract,.post-abstract,.lede p,.work__desc{text-align:left}.social{gap:18px}}@media (width<=400px){.kv{flex-wrap:wrap;gap:2px 14px}.kv__key{width:auto}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@media print{.search-trigger,.search-backdrop,.post-nav,.skip-link,.toc-rail,.head-anchor{display:none!important}body,body:lang(zh){--t-body:11pt;--t-sub:10pt;--t-fine:9.5pt;--t-note-rail:9.5pt;background:#fff}.wrap{max-width:none;padding:0}.wrap--rails{display:block!important}.wrap--rails>*{padding-inline:0!important}a{color:inherit;text-decoration:none}.prose pre{background:#f5f5f5;border-left:1px solid #999}.prose{position:static!important}.prose .note{width:auto!important;font-size:var(--t-note-rail)!important;border-left:1pt solid #999!important;margin:10pt 0!important;padding-left:10pt!important;display:block!important;position:static!important}}.site-footer{font-family:var(--mono);font-size:var(--t-micro);color:var(--muted);letter-spacing:.03em;margin-top:88px;line-height:1.9}.site-footer:before{content:"";background:var(--rule);width:36px;height:1px;margin-bottom:15px;display:block}.site-footer a{color:var(--muted)}@media (width<=620px){.site-footer{margin-top:64px}}
