:root{--paper:#f4f4f2;--paper-deep:#e8e8e5;--ink:#16181b;--muted:#5a6068;--faint:#8b9096;--line:#dadad6;--accent:#2b547e;--accent-soft:#dfe5ec;--steel:#7b8794;--code-bg:#ebebe8;--serif:"Charter", "Iowan Old Style", "Source Serif Pro", Georgia, "Songti SC", "Noto Serif SC", serif;--sans:"Inter", -apple-system, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", sans-serif;--mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--zh-body:"PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", sans-serif;--wrap:1120px;--measure:720px}@media(prefers-color-scheme:dark){:root{--paper:#15171a;--paper-deep:#1d2024;--ink:#e7e4dc;--muted:#a3a8ae;--faint:#7a8087;--line:#2c3036;--accent:#8fb3d9;--accent-soft:#1f2b38;--steel:#8a96a3;--code-bg:#1d2024}.cover{filter:invert(.88)hue-rotate(180deg)saturate(.8)}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:24px}body{margin:0;color:var(--ink);background-color:var(--paper);background-image:radial-gradient(color-mix(in srgb,var(--line) 70%,transparent) 1px,transparent 1px);background-size:24px 24px;font-family:var(--serif);font-size:18px;line-height:1.65;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html[lang^=zh] body{font-family:var(--zh-body);font-size:17px;line-height:1.85}a{color:inherit;text-decoration:none}img,svg{max-width:100%;display:block}::selection{background:var(--accent-soft)}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.label{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.ai-tag{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--faint)}.ai-note{font-family:var(--mono);font-size:12.5px;line-height:1.6;color:var(--muted);border:1px dashed var(--line);border-radius:2px;padding:10px 14px;margin:0 0 36px}html[lang^=zh] .ai-note{font-family:var(--zh-body);font-size:14px}.site-header{border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--paper) 88%,transparent);position:sticky;top:0;z-index:10;backdrop-filter:blur(6px)}.site-header .wrap{display:flex;align-items:center;gap:24px;height:64px}.wordmark{font-family:var(--serif);font-weight:700;font-size:22px;letter-spacing:-.01em;white-space:nowrap}.wordmark .slash{font-family:var(--mono);font-weight:400;font-size:13px;color:var(--faint);margin-left:10px;letter-spacing:0}.nav{margin-left:auto;display:flex;align-items:center;gap:22px;font-family:var(--mono);font-size:12.5px;letter-spacing:.04em}.nav a{color:var(--muted);transition:color .15s}.nav a:hover{color:var(--ink)}.nav .lang{border:1px solid var(--line);border-radius:999px;padding:3px 10px;color:var(--ink)}.nav .lang:hover{border-color:var(--accent);color:var(--accent)}.social{display:flex;gap:14px}.social a{color:var(--muted);display:grid;place-items:center;width:20px;height:20px;transition:color .15s}.social a:hover{color:var(--accent)}.social svg{width:18px;height:18px}.intro{position:relative;padding:88px 0 72px}.intro-copy{max-width:680px;position:relative;z-index:1}.intro h1{font-family:var(--serif);font-weight:700;font-size:clamp(40px,5.2vw,60px);line-height:1.05;letter-spacing:-.02em;margin:14px 0 28px}html[lang^=zh] .intro h1{font-family:songti sc,noto serif sc,var(--serif);letter-spacing:0}.intro p{margin:0 0 16px;color:var(--ink)}.intro p+p{color:var(--muted)}.intro-actions{display:flex;flex-wrap:wrap;gap:22px;margin-top:30px;font-family:var(--mono);font-size:13px}.intro-actions a{border-bottom:1px solid;padding-bottom:3px;display:inline-flex;gap:8px;align-items:center}.intro-actions a.primary{color:var(--accent)}.intro-accent{position:absolute;right:-8px;top:70px;width:clamp(260px,30vw,400px);height:auto;color:var(--faint);pointer-events:none}.section{padding:28px 0 80px}.section-head{display:flex;align-items:baseline;justify-content:space-between;border-top:1px solid var(--ink);padding-top:14px;margin-bottom:40px}.section-head h2{margin:0;font-family:var(--mono);font-size:13px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}.section-head .count{font-family:var(--mono);font-size:12px;color:var(--faint)}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:64px 44px}.card a{display:flex;flex-direction:column;height:100%}.cover{aspect-ratio:8/5;border:1px solid var(--line);border-radius:2px;transition:border-color .2s;overflow:hidden;background:var(--paper-deep)}.cover img{width:100%;height:100%;object-fit:cover}.card a:hover .cover{border-color:var(--accent)}.card .meta{display:flex;gap:12px;align-items:center;margin-top:18px}.card .meta .date{font-family:var(--mono);font-size:11px;color:var(--faint);letter-spacing:.04em}.card h3{font-family:var(--serif);font-size:24px;line-height:1.25;letter-spacing:-.01em;margin:10px 0;transition:color .15s}html[lang^=zh] .card h3{font-family:songti sc,noto serif sc,var(--serif);letter-spacing:0}.card a:hover h3{color:var(--accent)}.card p{margin:0;color:var(--muted);font-size:16px;line-height:1.6}.pubs{list-style:none;margin:0;padding:0}.pubs li{display:grid;grid-template-columns:64px 1fr auto;gap:20px;padding:16px 0;border-bottom:1px solid var(--line);align-items:baseline}.pubs .year{font-family:var(--mono);font-size:13px;color:var(--faint)}.pubs .title{font-size:17px;line-height:1.45}.pubs .authors{display:block;font-family:var(--sans);font-size:13px;color:var(--muted);margin-top:4px}.pubs .authors b{color:var(--ink);font-weight:600}.pubs .venue{font-family:var(--mono);font-size:11.5px;color:var(--accent);white-space:nowrap;letter-spacing:.04em}.pubs .venue a{border-bottom:1px solid var(--line);margin-left:10px;color:var(--muted)}.pubs .venue a:hover{color:var(--accent);border-color:var(--accent)}.post-head{padding:72px 0 40px;border-bottom:1px solid var(--line);margin-bottom:48px}.post-head .inner{max-width:860px}.post-head .crumbs{display:flex;gap:14px;align-items:center}.post-head .crumbs a{font-family:var(--mono);font-size:12px;color:var(--faint)}.post-head .crumbs a:hover{color:var(--accent)}.post-head h1{font-family:var(--serif);font-size:clamp(32px,4.4vw,50px);line-height:1.12;letter-spacing:-.02em;margin:18px 0}html[lang^=zh] .post-head h1{font-family:songti sc,noto serif sc,var(--serif);letter-spacing:0;line-height:1.3}.post-head .dek{font-size:20px;color:var(--muted);margin:0 0 22px;max-width:760px}.post-head .byline{display:flex;flex-wrap:wrap;gap:18px;font-family:var(--mono);font-size:12px;color:var(--faint)}.post-head .byline a{color:var(--accent);border-bottom:1px solid}.post-cover{margin-top:36px;max-width:860px}.post-layout{display:grid;grid-template-columns:minmax(0,var(--measure))220px;gap:72px;justify-content:space-between}.toc{position:sticky;top:96px;align-self:start;font-family:var(--sans);font-size:13px;max-height:calc(100vh - 120px);overflow:auto}.toc .label{display:block;margin-bottom:12px}.toc ul{list-style:none;margin:0;padding:0}.toc ul ul{padding-left:12px}.toc li{margin:7px 0;line-height:1.4}.toc a{color:var(--muted)}.toc a:hover,.toc a.active{color:var(--accent)}.prose{min-width:0}.prose>:first-child{margin-top:0}.prose h2{font-family:var(--serif);font-size:28px;line-height:1.25;letter-spacing:-.01em;margin:64px 0 18px;padding-top:18px;border-top:1px solid var(--line)}.prose h3{font-family:var(--serif);font-size:21px;margin:40px 0 12px}.prose h4{font-family:var(--sans);font-size:15px;letter-spacing:.02em;margin:28px 0 8px}html[lang^=zh] .prose h2,html[lang^=zh] .prose h3{font-family:songti sc,noto serif sc,var(--serif);letter-spacing:0}.prose p,.prose ul,.prose ol{margin:0 0 18px}.prose li{margin:4px 0}.prose a{color:var(--accent);border-bottom:1px solid color-mix(in srgb,var(--accent) 35%,transparent)}.prose a:hover{border-bottom-color:var(--accent)}.prose strong{font-weight:700}.prose blockquote{margin:24px 0;padding:4px 0 4px 20px;border-left:2px solid var(--steel);color:var(--muted)}.prose hr{border:0;border-top:1px solid var(--line);margin:48px 0}.prose code{font-family:var(--mono);font-size:.84em;background:var(--code-bg);padding:2px 5px;border-radius:4px}.prose pre{background:var(--code-bg);border:1px solid var(--line);border-radius:2px;padding:16px 18px;overflow-x:auto;font-size:14px;line-height:1.55}.prose pre code{background:0 0;padding:0;font-size:inherit}.prose .heading-anchor{opacity:0;margin-left:8px;font-family:var(--mono);font-size:.7em;color:var(--faint);border:0;transition:opacity .15s}.prose h2:hover .heading-anchor,.prose h3:hover .heading-anchor{opacity:1}.table-wrap{overflow-x:auto;margin:24px 0 28px;border:1px solid var(--line);border-radius:2px;background:color-mix(in srgb,var(--paper) 70%,var(--paper-deep))}.table-wrap table{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:14px;line-height:1.55}.table-wrap th{text-align:left;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:var(--paper-deep);white-space:nowrap}.table-wrap th,.table-wrap td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:top}.table-wrap tr:last-child td{border-bottom:0}.table-wrap td{min-width:96px}.katex-display{overflow-x:auto;overflow-y:hidden;padding:6px 0}pre.mermaid{background:0 0;border:1px solid var(--line);text-align:center;font-family:var(--sans);padding:20px}pre.mermaid:not([data-processed]){color:transparent;min-height:80px}.post-foot{margin:80px 0 40px;padding-top:24px;border-top:1px solid var(--ink);display:flex;justify-content:space-between;gap:24px;font-family:var(--mono);font-size:13px}.post-foot a{color:var(--accent)}.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.tags span{font-family:var(--mono);font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 10px}.site-footer{border-top:1px solid var(--line);padding:28px 0 40px;margin-top:40px}.site-footer .wrap{display:flex;justify-content:space-between;align-items:center;gap:20px;font-family:var(--mono);font-size:12px;color:var(--faint)}@media(max-width:1000px){.post-layout{grid-template-columns:minmax(0,1fr)}.toc{display:none}.intro-accent{opacity:.5}}@media(max-width:760px){body{font-size:17px}.wrap{padding:0 20px}.grid{grid-template-columns:1fr;gap:52px}.intro{padding:52px 0 48px}.intro-accent{display:none}.wordmark .slash,.nav .hide-sm{display:none}.nav{gap:14px}.pubs li{grid-template-columns:1fr;gap:6px}.post-head{padding:44px 0 28px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}