:root,::backdrop{--sans-font:-apple-system, BlinkMacSystemFont, "Avenir Next", Avenir,
    "Nimbus Sans L", Roboto, "Noto Sans", "Segoe UI", Arial, Helvetica,
    "Helvetica Neue", sans-serif;--mono-font:Consolas, Menlo, Monaco, "Andale Mono", "Ubuntu Mono", monospace;--standard-border-radius:5px;--bg:#fff;--accent-bg:#f5f7ff;--text:#212121;--text-light:#585858;--border:#898EA4;--accent:#0d47a1;--accent-text:var(--bg);--code:#d81b60;--preformatted:#444;--marked:#ffdd33;--disabled:#efefef}@media(prefers-color-scheme:dark){:root,::backdrop{color-scheme:dark;--bg:#212121;--accent-bg:#2b2b2b;--text:#dcdcdc;--text-light:#ababab;--accent:#ffb300;--accent-text:var(--bg);--code:#f06292;--preformatted:#ccc;--disabled:#111}img,video{opacity:.8}}*,*::before,*::after{box-sizing:border-box}textarea,select,input,progress{appearance:none;-webkit-appearance:none;-moz-appearance:none}html{font-family:var(--sans-font);scroll-behavior:smooth}body{color:var(--text);background-color:var(--bg);line-height:1.6;font-size:1.1rem;display:grid;grid-template-columns:1fr min(50rem,90%)1fr;margin:0}body>*{grid-column:2}body>header{background-color:var(--accent-bg);border-bottom:1px solid var(--border);text-align:center;padding:0 .5rem 2rem;grid-column:1/-1}body>header>*:only-child{margin-block-start:2rem}body>header h1{max-width:1200px;margin:1rem auto}body>header p{max-width:40rem;margin:1rem auto}main{padding-top:1.5rem}body>footer{margin-top:4rem;padding:2rem 1rem 1.5rem;color:var(--text-light);font-size:.9rem;text-align:right;border-top:1px solid var(--border)}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}a,a:visited{color:var(--accent)}a:hover{text-decoration:none}button,.button,a.button,input[type=submit],input[type=reset],input[type=button],label[type=button]{border:1px solid var(--accent);background-color:var(--accent);color:var(--accent-text);padding:.5rem .9rem;text-decoration:none;line-height:normal}.button[aria-disabled=true],input:disabled,textarea:disabled,select:disabled,button[disabled]{cursor:not-allowed;background-color:var(--disabled);border-color:var(--disabled);color:var(--text-light)}input[type=range]{padding:0}abbr[title]{cursor:help;text-decoration-line:underline;text-decoration-style:dotted}button:enabled:hover,.button:not([aria-disabled=true]):hover,input[type=submit]:enabled:hover,input[type=reset]:enabled:hover,input[type=button]:enabled:hover,label[type=button]:hover{filter:brightness(1.4);cursor:pointer}.button:focus-visible,button:focus-visible:where(:enabled),input:enabled:focus-visible:where( [type=submit],[type=reset],[type=button] ){outline:2px solid var(--accent);outline-offset:1px}header>nav{font-size:1rem;line-height:2;padding:1rem 0 0}header>nav ul,header>nav ol{align-content:space-around;align-items:center;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;list-style-type:none;margin:0;padding:0}header>nav ul li,header>nav ol li{display:inline-block}header>nav a,header>nav a:visited{margin:0 .5rem 1rem;border:1px solid var(--border);border-radius:var(--standard-border-radius);color:var(--text);display:inline-block;padding:.1rem 1rem;text-decoration:none}header>nav a:hover,header>nav a.current,header>nav a[aria-current=page]{border-color:var(--accent);color:var(--accent);cursor:pointer}@media only screen and (max-width:720px){header>nav a{border:none;padding:0;text-decoration:underline;line-height:1}}aside,details,pre,progress{background-color:var(--accent-bg);border:1px solid var(--border);border-radius:var(--standard-border-radius);margin-bottom:1rem}aside{font-size:1rem;width:30%;padding:0 15px;margin-inline-start:15px;float:right}*[dir=rtl] aside{float:left}@media only screen and (max-width:720px){aside{width:100%;float:none;margin-inline-start:0}}article,fieldset,dialog{border:1px solid var(--border);padding:1rem;border-radius:var(--standard-border-radius);margin-bottom:1rem}article h2:first-child{margin-top:1rem}article h2:first-child{margin-top:0}section{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:2rem 1rem;margin:3rem 0}section+section,section:first-child{border-top:0;padding-top:0}section:last-child{border-bottom:0;padding-bottom:0}details{padding:.7rem 1rem}summary{cursor:pointer;font-weight:700;padding:.7rem 1rem;margin:-.7rem -1rem;word-break:break-all}details[open]>summary+*{margin-top:0}details[open]>summary{margin-bottom:.5rem}details[open]>:last-child{margin-bottom:0}table{border-collapse:collapse;margin:1.5rem 0}td,th{border:1px solid var(--border);text-align:start;padding:.5rem}th{background-color:var(--accent-bg);font-weight:700}tr:nth-child(even){background-color:var(--accent-bg)}table caption{font-weight:700;margin-bottom:.5rem}textarea,select,input,button,.button{font-size:inherit;font-family:inherit;padding:.5rem;margin-bottom:.5rem;border-radius:var(--standard-border-radius);box-shadow:none;max-width:100%;display:inline-block}textarea,select,input{color:var(--text);background-color:var(--bg);border:1px solid var(--border)}label{display:block}textarea:not([cols]){width:100%}select:not([multiple]){background-image:linear-gradient(45deg,transparent 49%,var(--text) 51%),linear-gradient(135deg,var(--text) 51%,transparent 49%);background-position:calc(100% - 15px),calc(100% - 10px);background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-inline-end:25px}*[dir=rtl] select:not([multiple]){background-position:10px,15px}input[type=checkbox],input[type=radio]{vertical-align:middle;position:relative;width:min-content}input[type=checkbox]+label,input[type=radio]+label{display:inline-block}input[type=radio]{border-radius:100%}input[type=checkbox]:checked,input[type=radio]:checked{background-color:var(--accent)}input[type=checkbox]:checked::after{content:" ";width:.18em;height:.32em;border-radius:0;position:absolute;top:.05em;left:.17em;background-color:initial;border-right:solid var(--bg).08em;border-bottom:solid var(--bg).08em;font-size:1.8em;transform:rotate(45deg)}input[type=radio]:checked::after{content:" ";width:.25em;height:.25em;border-radius:100%;position:absolute;top:.125em;background-color:var(--bg);left:.125em;font-size:32px}@media only screen and (max-width:720px){textarea,select,input{width:100%}}input[type=color]{height:2.5rem;padding:.2rem}input[type=file]{border:0}hr{border:none;height:1px;background:var(--border);margin:1rem auto}mark{padding:2px 5px;border-radius:var(--standard-border-radius);background-color:var(--marked);color:#000}mark a{color:#0d47a1}img,video{max-width:100%;height:auto;border-radius:var(--standard-border-radius)}figure{margin:0;display:block;overflow-x:auto}figcaption{text-align:center;font-size:.9rem;color:var(--text-light);margin-bottom:1rem}blockquote{margin-inline-start:2rem;margin-inline-end:0;margin-block:2rem;padding:.4rem .8rem;border-inline-start:.35rem solid var(--accent);color:var(--text-light);font-style:italic}cite{font-size:.9rem;color:var(--text-light);font-style:normal}dt{color:var(--text-light)}code,pre,pre span,kbd,samp{font-family:var(--mono-font);color:var(--code)}kbd{color:var(--preformatted);border:1px solid var(--preformatted);border-bottom:3px solid var(--preformatted);border-radius:var(--standard-border-radius);padding:.1rem .4rem}pre{padding:1rem 1.4rem;max-width:100%;overflow:auto;color:var(--preformatted)}pre code{color:var(--preformatted);background:0 0;margin:0;padding:0}progress{width:100%}progress:indeterminate{background-color:var(--accent-bg)}progress::-webkit-progress-bar{border-radius:var(--standard-border-radius);background-color:var(--accent-bg)}progress::-webkit-progress-value{border-radius:var(--standard-border-radius);background-color:var(--accent)}progress::-moz-progress-bar{border-radius:var(--standard-border-radius);background-color:var(--accent);transition-property:width;transition-duration:.3s}progress:indeterminate::-moz-progress-bar{background-color:var(--accent-bg)}dialog{max-width:40rem;margin:auto}dialog::backdrop{background-color:var(--bg);opacity:.8}@media only screen and (max-width:720px){dialog{max-width:100%;margin:auto 1em}}sup,sub{vertical-align:baseline;position:relative}sup{top:-.4em}sub{top:.3em}.notice{background:var(--accent-bg);border:2px solid var(--border);border-radius:var(--standard-border-radius);padding:1.5rem;margin:2rem 0}@font-face{font-family:inter;src:url(/fonts/Inter-VariableFont_slnt,wght.ttf)format('truetype');font-display:block}body{font-family:inter;font-display:block}.definition,.lemma,.theorem,.proposition,.example,.info{border-radius:1;border-width:1px;border-style:solid;padding:5px;display:block;margin:1ex 0}.proof{padding-bottom:25px}.proof:after{content:"\25FC";float:right}.lemma{background-color:#dcf6f7}.example{background-color:#f2f9ff;border-color:#cfcfcf}.theorem{background-color:#e9e9ff;border-color:#000}.info{background-color:#e9e9ff;border-color:#000}.definition{background-color:#fff4ec}h1,h2,h3,h4,h5,h6{font-family:inter,serif;font-weight:600}.sourceCode{overflow:visible}code.sourceCode>span{color:inherit;text-decoration:inherit}div.sourceCode{margin:1em 0}pre.sourceCode{margin:0}@media screen{div.sourceCode{overflow:auto}}@media print{pre>code.sourceCode{white-space:pre-wrap}pre>code.sourceCode>span{text-indent:-5em;padding-left:5em}}pre.numberSource code{counter-reset:source-line 0}pre.numberSource code>span{position:relative;left:-4em;counter-increment:source-line}pre.numberSource code>span>a:first-child::before{content:counter(source-line);position:relative;left:-1em;text-align:right;vertical-align:baseline;border:none;display:inline-block;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:0 4px;width:4em;color:#aaa}pre.numberSource{margin-left:3em;border-left:1px solid #aaa;padding-left:4px}@media screen{pre>code.sourceCode>span>a:first-child::before{text-decoration:underline}}code span.al{color:red;font-weight:700}code span.an{color:#60a0b0;font-weight:700;font-style:italic}code span.at{color:#7d9029}code span.bn{color:#40a070}code span.bu{color:green}code span.cf{color:#007020;font-weight:700}code span.ch{color:#4070a0}code span.cn{color:#800}code span.co{color:#60a0b0;font-style:italic}code span.cv{color:#60a0b0;font-weight:700;font-style:italic}code span.do{color:#ba2121;font-style:italic}code span.dt{color:#902000}code span.dv{color:#40a070}code span.er{color:red;font-weight:700}code span.fl{color:#40a070}code span.fu{color:#06287e}code span.im{color:green;font-weight:700}code span.in{color:#60a0b0;font-weight:700;font-style:italic}code span.kw{color:#007020;font-weight:700}code span.op{color:#666}code span.ot{color:#007020}code span.pp{color:#bc7a00}code span.sc{color:#4070a0}code span.ss{color:#b68}code span.st{color:#4070a0}code span.va{color:#19177c}code span.vs{color:#4070a0}code span.wa{color:#60a0b0;font-weight:700;font-style:italic}h2{font-size:2rem;margin-top:2.5rem;margin-bottom:1rem;line-height:1.2}h3{font-size:1.5rem;margin-top:2rem;margin-bottom:.75rem;line-height:1.3;color:var(--text)}blockquote{border-left:3px solid var(--quote-bar);margin:1.5rem 0;padding:.25rem 0 .25rem 1.25rem;color:var(--text);font-style:normal;background:0 0}blockquote p{margin:.5rem 0}blockquote strong{color:var(--text);font-style:normal}pre{padding:1rem;border-radius:6px;overflow-x:auto}pre code{padding:0}body>header{border-bottom:none}body>footer{border-top:none}td,th{border:none;border-bottom:1px solid var(--border)}th{border-bottom:2px solid var(--border)}code,pre{border:none;background-color:#f1f5f9;font-size:.95em}@media(prefers-color-scheme:dark){.lemma{background-color:#16302f;border-color:#2f5d5b}.example{background-color:#16263a;border-color:#2f4a6b}.theorem,.info{background-color:#20203a;border-color:#3a3a66}.definition{background-color:#352013;border-color:#6b4a2f}code,pre{background-color:var(--accent-bg)}code span.co,code span.cv,code span.do{color:#7f848e}code span.st,code span.vs,code span.ss,code span.ch,code span.sc{color:#98c379}code span.dv,code span.fl,code span.bn,code span.cn{color:#d19a66}code span.kw,code span.cf,code span.pp{color:#c678dd}code span.fu{color:#61afef}code span.dt{color:#e5c07b}code span.bu,code span.im,code span.ot{color:#56b6c2}code span.va{color:#e06c75}code span.at{color:#d19a66}code span.op{color:#abb2bf}code span.al,code span.er,code span.wa{color:#e06c75}code span.an,code span.in{color:#7f848e}}:root{--rule:#e6e8ef;--wide:56rem;--measure:42rem;--quote-bar:#c5cde6}@media(prefers-color-scheme:dark){:root{--rule:#3a3a3a;--quote-bar:#4a5270;--accent:#8ab4ff}}.profile,.post-reply,.home-main section,.year-group,.post,.pub,.pub-compact{float:none;width:auto;margin:0;padding:0;border:none;border-radius:0;background:0 0;font-size:inherit}body{grid-template-columns:1fr min(var(--wide),90%)1fr}body:not(.home)>main{max-width:var(--measure)}body>header{background:var(--accent-bg);border-bottom:1px solid var(--rule);padding:0;text-align:left}body>header>.site-nav{margin:0 auto}.site-nav{max-width:var(--wide);width:90%;margin:0 auto;padding:0;min-height:3.5rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;column-gap:2rem}.site-nav .site-name,.site-nav .site-name:visited{margin:0;padding:0;border:none;font-size:1.25rem;font-weight:600;color:var(--text);text-decoration:none}.site-nav ul{display:flex;flex-wrap:wrap;gap:0 1.75rem;margin:0;padding:0;list-style:none}.site-nav ul a,.site-nav ul a:visited{display:inline-block;margin:0;padding:.75rem 0;border:none;border-radius:0;font-size:.95rem;line-height:1.2;color:var(--text);text-decoration:none}.site-nav ul a:hover,.site-nav ul a[aria-current=page]{color:var(--text);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px}body>footer.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;text-align:left;font-size:.85rem;border-top:1px solid var(--rule);padding:1.75rem 0 2.25rem}.site-footer a,.site-footer a:visited{color:var(--text-light)}.site-footer-links{display:flex;gap:1.25rem}.section-head{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--rule);padding-bottom:.6rem;margin-bottom:.5rem}.section-head a{font-size:.875rem}h2.section-title{font-size:1.25rem;font-weight:600;margin:0}section>h2.section-title{border-bottom:1px solid var(--rule);padding-bottom:.6rem;margin-bottom:.75rem}.home-grid{display:grid;grid-template-columns:13.75rem minmax(0,1fr);column-gap:3rem;padding-top:1.5rem}.home-main{display:flex;flex-direction:column;gap:2.5rem;min-width:0}.home-main section{margin:0}.profile{display:flex;flex-direction:column;gap:1.125rem}.profile-photo{width:100%;height:auto;aspect-ratio:220/262;object-fit:cover;border-radius:6px}.profile-name{margin:0;font-size:1.75rem;font-weight:700;line-height:1.15;letter-spacing:-.02em}.profile-roles{margin:.75rem 0 0;display:flex;flex-direction:column;gap:.75rem;font-size:.875rem;line-height:1.4}.profile-roles dt{font-weight:500;color:var(--text)}.profile-roles dd{margin:.125rem 0 0;color:var(--text-light)}.profile-roles dd a,.profile-roles dd a:visited{color:var(--text-light)}.profile-links{list-style:none;margin:0;padding:.625rem 0 0;border-top:1px solid var(--rule);font-size:.875rem}.profile-links a,.profile-links a:visited{display:flex;align-items:center;gap:.625rem;padding:.3rem 0;color:var(--text);text-decoration:none}.profile-links a:hover{text-decoration:underline}.profile-links .icon{color:var(--text-light);flex-shrink:0}.intro h1{font-size:2.25rem;font-weight:600;letter-spacing:-.015em;line-height:1.15;margin:0 0 .875rem}.intro p{margin:0 0 .875rem;line-height:1.65}.intro p:last-child{font-size:.9375rem;color:var(--text-light);margin-bottom:0}.dated-list{list-style:none;margin:0;padding:0}.dated-list li{display:grid;grid-template-columns:5.5rem minmax(0,1fr);column-gap:1.25rem;padding:.35rem 0;font-size:.97rem;line-height:1.5}.dated-list time,.year-group .post-meta time{font-family:var(--mono-font);font-size:.8rem;color:var(--text-light);padding-top:.2rem}.post-list-compact a,.post-list-compact a:visited{color:var(--text);text-decoration:none}.post-list-compact a:hover{text-decoration:underline}.pub-compact{padding:.6rem 0}.pub-compact p{margin:0}.pub-compact .pub-title{font-weight:500;line-height:1.4}.pub-compact .pub-meta{font-size:.875rem;color:var(--text-light);margin-top:.25rem}.pub-links{display:flex;gap:.5rem;margin-top:.4rem!important}.pub-links a,.pub-links a:visited{font-family:var(--mono-font);font-size:.75rem;padding:.1rem .5rem;border:1px solid var(--rule);border-radius:4px;text-decoration:none}.pub-links a:hover{border-color:var(--accent)}.pub{padding:1.25rem 0;border-bottom:1px solid var(--rule)}.pub h2.pub-title{font-size:1.3rem;margin:0 0 .4rem;line-height:1.35}.pub .pub-venue,.pub .pub-meta{margin:.2rem 0;font-size:.95rem;color:var(--text-light)}.pub .pub-award{font-weight:500}.project-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}.project-list li{border-bottom:1px solid var(--rule)}.project-list a,.project-list a:visited{display:grid;grid-template-columns:minmax(0,1fr)auto;column-gap:1.5rem;padding:.9rem 0;color:var(--text);text-decoration:none}.project-list a:hover .project-name{text-decoration:underline}.project-head{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .6rem}.project-name{font-weight:600}.project-kind{font-size:.72rem;padding:.1rem .5rem;border-radius:999px;background:var(--accent-bg);border:1px solid var(--rule);color:var(--text-light)}.project-desc{display:block;margin-top:.2rem;font-size:.95rem;line-height:1.5;color:var(--text-light)}.project-years{font-family:var(--mono-font);font-size:.8rem;color:var(--text-light);white-space:nowrap;padding-top:.2rem}.lede p{color:var(--text-light)}.category-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0 2rem}.category-chips a,.category-chips a:visited{font-size:.8rem;padding:.35rem .85rem;border:1px solid var(--rule);border-radius:999px;color:var(--text);text-decoration:none}.category-chips a:hover{border-color:var(--text-light)}.year-group{display:grid;grid-template-columns:4.5rem minmax(0,1fr);column-gap:1.5rem;border-top:1px solid var(--rule);padding-top:1rem;margin-bottom:1.5rem}.year-group h2{font-size:.95rem;font-weight:600;color:var(--text-light);margin:.2rem 0 0;font-variant-numeric:tabular-nums}.year-group ul{list-style:none;margin:0;padding:0}.year-group li{display:flex;flex-direction:column;gap:.15rem;padding:.2rem 0 .9rem}.year-group .post-link,.year-group .post-link:visited{font-weight:500;line-height:1.4;color:var(--text);text-decoration:none}.year-group .post-link:hover{text-decoration:underline}.year-group .post-meta{font-size:.8rem;color:var(--text-light)}.back-link{display:inline-block;font-size:.875rem;text-decoration:none;margin-top:1rem}.post{font-size:1.0625rem;line-height:1.7}.post h2{font-size:1.45rem;margin:2.25rem 0 .75rem}.post h3{font-size:1.2rem;margin:1.75rem 0 .5rem}.post-header h1{font-size:2.1rem;margin:.75rem 0 .5rem;line-height:1.15;letter-spacing:-.015em}.post-header .post-meta{margin:0 0 2rem;font-size:.875rem;color:var(--text-light)}.post-header .post-meta a,.post-header .post-meta a:visited{color:var(--text-light)}.post-reply{margin-top:3rem;padding:1.25rem 1.4rem;border:1px solid var(--rule);border-radius:8px}.post-reply p{margin:0;font-size:.95rem}.post-reply .post-reply-title{font-weight:600;margin-bottom:.3rem}.post-pager{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1rem}.post-pager a,.post-pager a:visited{display:flex;flex-direction:column;gap:.3rem;padding:1rem 1.1rem;border:1px solid var(--rule);border-radius:8px;font-size:.95rem;font-weight:500;line-height:1.4;color:var(--text);text-decoration:none}.post-pager a:hover{border-color:var(--text-light)}.post-pager span{font-size:.75rem;font-weight:400;color:var(--text-light)}.post-pager .newer{grid-column:2;text-align:right}@media(max-width:45rem){.site-nav{flex-direction:column;align-items:flex-start;padding-top:.75rem}.site-nav ul{gap:0 1.25rem}.home-grid{grid-template-columns:1fr;row-gap:2rem;padding-top:.5rem}.profile{display:grid;grid-template-columns:6rem minmax(0,1fr);column-gap:1rem;row-gap:1rem;align-items:start}.profile-name{font-size:1.4rem}.profile-roles{margin-top:.5rem}.profile-links{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:0 1.25rem}.intro h1{font-size:1.75rem}.dated-list li{grid-template-columns:1fr}.year-group{grid-template-columns:1fr;row-gap:.5rem}.post-pager{grid-template-columns:1fr}.post-pager .newer{grid-column:1}}