@font-face{font-family:inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/inter/inter-latin-ext-wght-normal.woff2)format('woff2-variations');unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/inter/inter-latin-wght-normal.woff2)format('woff2-variations');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#ffffff;--text:#1a1a1a;--text-muted:#6b7280;--text-light:#9ca3af;--accent:#2563eb;--accent-hover:#1d4ed8;--border:#e5e7eb;--code-bg:#f6f8fa;--nav-height:60px;--page-max:780px;--post-max:1280px;--sidebar-left:200px;--sidebar-right:220px;--col-gap:48px}@media(prefers-color-scheme:dark){:root{--bg:#111111;--text:#e5e7eb;--text-muted:#9ca3af;--text-light:#6b7280;--accent:#60a5fa;--accent-hover:#93c5fd;--border:#2a2a2a;--code-bg:#1e1e1e}}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-height) + 24px);overflow-y:scroll}body{font-family:inter,-apple-system,BlinkMacSystemFont,segoe ui,sans-serif;font-weight:400;line-height:1.75;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline}img{max-width:100%;height:auto;display:block}.site-nav{position:sticky;top:0;z-index:100;background:color-mix(in srgb,var(--bg) 95%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--border);height:var(--nav-height)}.nav-inner{max-width:var(--page-max);margin:0 auto;padding:0 24px;height:100%;display:flex;align-items:center;justify-content:space-between;position:relative}.nav-brand{font-weight:600;font-size:1rem;color:var(--text);text-decoration:none;flex-shrink:0}.nav-brand:hover{color:var(--text);text-decoration:none}.nav-links{display:flex;align-items:center;gap:28px;list-style:none}.nav-links a{font-size:.9rem;font-weight:500;color:var(--text-muted);text-decoration:none}.nav-links a:hover{color:var(--text);text-decoration:none}.nav-toggle-btn{display:none;flex-direction:column;gap:5px;background:0 0;border:none;cursor:pointer;padding:4px}.nav-toggle-btn span{display:block;width:22px;height:2px;background:var(--text);border-radius:2px}.page-content{max-width:var(--page-max);margin:0 auto;padding:48px 24px 96px}.profile-header{display:flex;align-items:flex-start;gap:28px;margin-bottom:48px;padding-bottom:40px;border-bottom:1px solid var(--border)}.profile-photo{width:96px;height:96px;border-radius:50%;object-fit:cover;flex-shrink:0}.profile-info{flex:1}.profile-name{font-size:1.875rem;font-weight:700;letter-spacing:-.025em;line-height:1.15;margin-bottom:6px}.profile-title{font-size:1rem;color:var(--text-muted);margin-bottom:18px}.profile-links{display:flex;flex-wrap:wrap;gap:4px 20px;list-style:none}.profile-links a{font-size:.875rem;font-weight:500;color:var(--text-muted);text-decoration:none}.profile-links a:hover{color:var(--accent);text-decoration:none}.section{margin-bottom:56px}.section-heading{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-light);margin-bottom:24px}.about-text p{margin-bottom:1em}.about-text p:last-child{margin-bottom:0}.about-text a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.pub-year-group{margin-bottom:32px}.pub-year{font-size:.75rem;font-weight:700;color:var(--text-light);text-transform:uppercase;letter-spacing:.06em;padding-bottom:10px;border-bottom:1px solid var(--border);margin-bottom:20px}.pub-item{margin-bottom:22px}.pub-title{font-size:.9rem;font-weight:600;line-height:1.4;margin-bottom:2px;color:var(--text)}.pub-authors{font-size:.83rem;color:var(--text-muted);margin-bottom:1px}.pub-venue{font-size:.83rem;color:var(--text-muted);margin-bottom:7px;font-style:italic}.pub-award{display:inline-flex;align-items:center;gap:5px;font-size:.75rem;font-weight:600;color:#16a34a;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:4px;padding:2px 8px;margin-bottom:7px}.pub-links{display:flex;flex-wrap:wrap;gap:5px}.pub-link{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:4px;text-decoration:none;text-transform:lowercase;letter-spacing:.01em}.pub-link:hover{opacity:.75;text-decoration:none}.pub-link--pdf{background:#fee2e2;color:#dc2626}.pub-link--bib{background:#f3f4f6;color:#4b5563}.pub-link--code{background:#dbeafe;color:#1d4ed8}.pub-link--data{background:#fef3c7;color:#b45309}.pub-link--demo{background:#e0f2fe;color:#0369a1}.post-list{list-style:none}.post-list-item{display:flex;gap:20px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--border)}.post-list-item:last-child{border-bottom:none}.post-date{font-size:.8rem;color:var(--text-light);white-space:nowrap;flex-shrink:0;min-width:70px}.post-title{font-size:.9rem;font-weight:500}.post-title a{color:var(--text);text-decoration:none}.post-title a:hover{color:var(--accent)}.view-all{display:inline-block;margin-top:18px;font-size:.875rem;font-weight:500}.blog-list-header{margin-bottom:40px;padding-bottom:24px;border-bottom:1px solid var(--border)}.blog-list-header h1{font-size:1.75rem;font-weight:700;letter-spacing:-.02em}.blog-posts{list-style:none}.blog-posts li{padding:24px 0;border-bottom:1px solid var(--border)}.blog-posts li:last-child{border-bottom:none}.blog-posts .post-title{font-size:1.05rem;font-weight:600;margin-bottom:4px}.blog-posts .post-title a{color:var(--text);text-decoration:none}.blog-posts .post-title a:hover{color:var(--accent)}.blog-posts .post-meta{font-size:.8rem;color:var(--text-light);margin-bottom:5px}.blog-posts .post-description{font-size:.875rem;color:var(--text-muted)}.post-page{max-width:var(--post-max);margin:0 auto;padding:48px 24px 96px}.post-header{margin-bottom:52px}.post-header h1{font-size:2rem;font-weight:700;letter-spacing:-.03em;line-height:1.2;margin-bottom:14px}.post-meta{font-size:.875rem;color:var(--text-muted);display:flex;flex-wrap:wrap;gap:4px 0;align-items:center}.post-meta span::before{content:'·';margin:0 10px}.post-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.post-tag{font-size:.75rem;font-weight:500;padding:2px 9px;border-radius:20px;background:#f3f4f6;color:#4b5563;text-decoration:none}.post-tag:hover{background:var(--border);color:var(--text);text-decoration:none}.content-grid{display:grid;grid-template-columns:var(--sidebar-left)1fr var(--sidebar-right);column-gap:var(--col-gap);align-items:start}.content-sidebar-left{position:sticky;top:calc(var(--nav-height) + 24px);max-height:calc(100vh - var(--nav-height) - 48px);overflow-y:auto;padding-bottom:24px}.content-sidebar-left::-webkit-scrollbar{width:3px}.content-sidebar-left::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.content-sidebar-right{position:relative;align-self:stretch}.toc-label{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-light);padding-left:12px;margin-bottom:10px}.toc nav ul{list-style:none}.toc nav ul ul{padding-left:12px}.toc nav a{display:block;font-size:.78rem;color:var(--text-muted);text-decoration:none;padding:3px 0 3px 12px;border-left:2px solid transparent;line-height:1.4;transition:color .1s,border-color .1s}.toc nav a:hover{color:var(--text);border-left-color:var(--border);text-decoration:none}.toc nav a.active{color:var(--accent);border-left-color:var(--accent);font-weight:500}.sidenote{position:absolute;width:100%;font-size:.8rem;color:var(--text-muted);line-height:1.55}.sidenote-number{font-size:.68rem;font-weight:700;color:var(--text-light);margin-right:4px;vertical-align:super}body.has-sidebar-footnotes article .footnotes{display:none}.article-body{min-width:0;font-size:1rem;line-height:1.8}.article-body p{margin-bottom:1.5em}.article-body h2{font-size:1.3rem;font-weight:700;letter-spacing:-.015em;margin:2.5em 0 .75em;line-height:1.3}.article-body h3{font-size:1.1rem;font-weight:600;margin:2em 0 .5em}.article-body h4{font-size:1rem;font-weight:600;margin:1.5em 0 .5em;color:var(--text-muted)}.article-body a{text-decoration:underline;text-underline-offset:2px}.article-body ul,.article-body ol{padding-left:1.6em;margin-bottom:1.5em}.article-body li{margin-bottom:.35em}.article-body blockquote{border-left:3px solid var(--border);margin:1.75em 0;padding:.25em 1.5em;color:var(--text-muted);font-style:italic}.article-body blockquote p:last-child{margin-bottom:0}.article-body hr{border:none;border-top:1px solid var(--border);margin:2.5em 0}.article-body table{width:100%;border-collapse:collapse;margin:1.5em 0;font-size:.9rem;display:block;overflow-x:auto}.article-body th,.article-body td{border:1px solid var(--border);padding:8px 13px;text-align:left}.article-body th{background:var(--code-bg);font-weight:600}.article-body :not(pre)>code{font-family:ui-monospace,cascadia code,fira code,monospace;font-size:.875em;background:var(--code-bg);padding:.15em .4em;border-radius:3px;color:#d63384}.article-body .highlight{margin:1.75em 0;border-radius:6px;overflow:hidden;border:1px solid var(--border)}.article-body .highlight pre{margin:0;padding:1.2em 1.5em;overflow-x:auto;font-size:.875rem;line-height:1.6;font-family:ui-monospace,cascadia code,fira code,monospace}.article-body sup a[class*=footnote-ref]{font-size:.75em;font-weight:700;color:var(--accent);text-decoration:none}.article-body sup a[class*=footnote-ref]:hover{text-decoration:underline}.article-body .footnotes{margin-top:3em;padding-top:1.5em;border-top:1px solid var(--border);font-size:.875rem;color:var(--text-muted)}.article-body .footnotes hr{display:none}.article-body .footnotes ol{padding-left:1.5em}.article-body .footnotes li{margin-bottom:.75em}figure{margin:2.25em 0}figure img{width:100%}figure .moe-chart{width:100%;height:auto;display:block}figcaption{margin-top:.6em;font-size:.8rem;color:var(--text-muted);text-align:center;line-height:1.5}.figure-pair{display:flex;gap:16px;margin:2.25em 0}.figure-pair figure{flex:1;margin:0}.figure-wide{width:min(var(--post-max),95vw);position:relative;left:50%;transform:translateX(-50%)}.katex-display{overflow-x:auto;overflow-y:hidden;padding:.5em 0;margin:1.5em 0}.post-nav{display:flex;justify-content:space-between;gap:24px;margin-top:4em;padding-top:2em;border-top:1px solid var(--border);font-size:.875rem}.post-nav a{color:var(--text-muted);text-decoration:none}.post-nav a:hover{color:var(--accent)}.site-footer{border-top:1px solid var(--border);padding:28px 24px;text-align:center;font-size:.8rem;color:var(--text-light)}.site-footer a{color:inherit}.site-footer a:hover{color:var(--text-muted)}@media(max-width:1100px){:root{--sidebar-left:180px;--sidebar-right:200px;--col-gap:32px}}@media(max-width:900px){.content-grid{display:block}.content-sidebar-left,.content-sidebar-right{display:none}body.has-sidebar-footnotes article .footnotes{display:block}.figure-wide{width:100%;left:0;transform:none}}@media(max-width:640px){:root{--nav-height:56px}.nav-toggle-btn{display:flex}.nav-links{display:none;flex-direction:column;align-items:flex-start;gap:16px;position:absolute;top:100%;left:0;right:0;background:var(--bg);border-bottom:1px solid var(--border);padding:16px 24px 20px;z-index:99;box-shadow:0 4px 12px rgba(0,0,0,6%)}.nav-links.is-open{display:flex}.profile-header{flex-direction:column;gap:16px}.profile-photo{width:72px;height:72px}.profile-name{font-size:1.5rem}.post-header h1{font-size:1.5rem}.page-content{padding-top:32px}.post-page{padding-top:32px}}.article-body .social-quote{margin:1.75em 0;padding:1.15em 1.4em;border:1px solid var(--border);border-radius:8px;background:var(--code-bg)}.article-body .social-quote blockquote{margin:0;padding:0;border:none;color:var(--text);font-style:normal}.article-body .social-quote blockquote p{margin-bottom:.6em}.article-body .social-quote blockquote p:last-child{margin-bottom:0}.article-body .social-quote figcaption{display:flex;align-items:baseline;gap:.5em;margin-top:.9em;text-align:left;font-size:.85rem;color:var(--text-muted)}.article-body .social-quote .social-mark{flex:none;width:.8em;height:.8em;fill:currentColor;align-self:center}.article-body .social-quote .social-handle{color:var(--text-light)}.article-body .social-quote figcaption a{color:var(--text-muted);text-decoration:underline;text-underline-offset:2px}.article-body .social-quote figcaption a:hover{color:var(--accent)}