:root{--bg:#ffffff;--bg-highlight:#f5f7f9;--text:#32373c;--text-muted:#6b7177;--text-prose:#2a2e33;--border:#e6e8ea;--primary:#0171a9;--primary-strong:#014566;--fs-page-heading:1.4rem;--fs-brand:1.2rem;--fs-section-heading:1.1rem;--fs-subsection-heading:1rem;--fs-subsubsection-heading:0.9rem;--fs-list-item-title:1rem;--fs-body:1rem;--fs-nav:1rem;--fs-meta:0.9rem;--fs-date:0.9rem;--fs-callout:0.9rem;--font:"Chivo Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--font-serif:"Source Serif 4", "Source Serif Pro", Georgia, "Times New Roman", serif;--reading-width:40rem}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-body);line-height:1.6;-webkit-font-smoothing:antialiased;font-variant-ligatures:none}.container{max-width:820px;margin:0 auto;padding:clamp(1.4rem,3vw,2.4rem)clamp(1.1rem,4vw,2.4rem)4rem}a{color:var(--primary);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}a:hover{color:var(--primary-strong)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:1px}:focus:not(:focus-visible){outline:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:absolute;top:-100px;left:.75rem;background:var(--text);color:var(--bg);padding:.55rem .85rem;text-decoration:none;z-index:100}.skip:focus{top:.5rem}header{display:flex;align-items:baseline;justify-content:space-between;gap:.6rem 2rem;flex-wrap:wrap;padding-bottom:1.4rem;border-bottom:1px solid var(--border)}.brand a{color:var(--text);text-decoration:none;font-weight:600;font-size:var(--fs-brand);text-transform:lowercase}nav.top{display:flex;flex-wrap:wrap;gap:0 1.4rem;font-size:var(--fs-nav)}nav.top a{color:var(--text-muted);text-decoration:none;padding:.35rem 0;text-transform:lowercase}nav.top a:hover{color:var(--primary)}nav.top a[aria-current=page]{color:var(--text)}main>*{max-width:var(--reading-width)}main>.hero{max-width:none}main>article.post{max-width:38em}main>small{display:block}main>h2,article.publication>h2{font-size:var(--fs-section-heading);font-weight:600;margin:2.6rem 0 1.2rem;padding-bottom:.55rem;border-bottom:1px solid var(--border);color:var(--text);text-transform:lowercase}main>h3,article.publication>h3{font-size:var(--fs-subsection-heading);font-weight:600;margin:1.8rem 0 .55rem;color:var(--text);text-transform:lowercase}main>h4,article.publication>h4{font-size:var(--fs-subsubsection-heading);font-weight:600;margin:1.4rem 0 .4rem;color:var(--text);text-transform:lowercase}.page-title{font-size:var(--fs-page-heading);font-weight:600;margin:2.6rem 0 1.4rem;color:var(--text);line-height:1.3;text-transform:lowercase}ul.list{display:grid;grid-template-columns:fit-content(12rem)minmax(0,1fr);column-gap:1.4rem;margin:0;padding:0;list-style:none}ul.list>li{display:grid;grid-template-columns:subgrid;grid-column:1/-1;row-gap:.25rem;padding:.9rem 0;border-bottom:1px solid var(--border)}ul.list>li:last-child{border-bottom:none}.list .when{color:var(--text-muted);font-size:var(--fs-date);padding-top:.15rem;font-variant-numeric:tabular-nums}.list .title{font-size:var(--fs-list-item-title);line-height:1.45;color:var(--text)}.list .title a{color:var(--text);text-decoration:none}.list .title a:hover{color:var(--primary);text-decoration:underline}.list .meta{font-size:var(--fs-meta);color:var(--text-muted);margin-top:.2rem}.list .links{margin-top:.25rem;font-size:var(--fs-meta);display:flex;flex-wrap:wrap;column-gap:1rem;row-gap:.15rem}.linkset{flex-basis:100%;min-width:0;color:var(--text-muted)}.linkset a{margin:0 .1rem}.more{margin-top:1.2rem;font-size:var(--fs-nav);text-transform:lowercase}@media(max-width:520px){ul.list{grid-template-columns:1fr;column-gap:0}ul.list>li{row-gap:.15rem}}.hero{display:grid;grid-template-columns:1fr 200px;grid-template-areas:"title  ." "bio    photo";gap:0 2rem;align-items:start;padding:2.6rem 0 2.4rem}.hero h1{grid-area:title}.hero .bio{grid-area:bio}.hero .portrait{grid-area:photo}.hero h1{font-size:var(--fs-page-heading);font-weight:600;margin:0 0 .5rem;color:var(--text)}.hero p{margin:0 0 1rem}.hero p:last-of-type{margin-bottom:1.4rem}.socials{font-size:var(--fs-nav);color:var(--text-muted)}.socials a{margin-right:1.2rem;white-space:nowrap;text-transform:lowercase}.portrait{aspect-ratio:1/1;width:100%;height:auto;display:block;object-fit:cover;border:1px solid var(--border)}@media(max-width:640px){.hero{grid-template-columns:1fr;grid-template-areas:"photo" "title" "bio";gap:1.4rem}.portrait{width:100%;max-width:320px;justify-self:center}}.eo b{display:none}main>blockquote,.pub-note{border:1px solid var(--border);background:var(--bg-highlight);color:var(--text);font-size:var(--fs-callout)}main>blockquote{margin:1rem 0;padding:1rem 1.1rem;line-height:1.65}main>blockquote p{margin:0 0 .75rem}main>blockquote p:last-child{margin-bottom:0}.pub-note{margin:.9rem 0 0;padding:.65rem .85rem}.prose{padding-top:2.6rem}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose h1{font-size:var(--fs-page-heading);font-weight:600;margin:0 0 1.2rem;color:var(--text);line-height:1.3;text-transform:lowercase}.prose h3{font-size:var(--fs-subsection-heading);font-weight:600;margin:1.8rem 0 .75rem;color:var(--text);text-transform:lowercase}.prose p{margin:0 0 1rem}.prose ul,.prose ol{margin:0 0 1rem;padding-left:1.4rem}.prose li{margin-bottom:.35rem}.prose li>ul,.prose li>ol{margin:.35rem 0 0}.prose blockquote{margin:1rem 0;padding:.25rem 0 .25rem 1rem;border-left:2px solid var(--border);color:var(--text-muted)}.prose code{font-size:.95em;background:var(--bg-highlight);padding:.1em .35em;border-radius:2px}.prose pre{background:var(--bg-highlight);padding:1rem 1.1rem;overflow-x:auto;margin:1rem 0;border:1px solid var(--border)}.prose pre code{background:0 0;padding:0}.prose hr{border:none;border-top:1px solid var(--border);margin:2rem 0}article.post{margin:1.6rem auto 0}.post-title{font-family:var(--font-serif);font-variant-ligatures:normal;font-optical-sizing:auto;font-weight:600;font-size:clamp(1.95rem,4.6vw,2.5rem);line-height:1.15;letter-spacing:-.012em;margin:0 0 1.4rem;color:var(--text)}.post-date{font-family:var(--font);font-size:var(--fs-date);color:var(--text-muted);margin:0 0 2rem;font-variant-numeric:tabular-nums}.post .body{font-family:var(--font-serif);font-variant-ligatures:normal;font-optical-sizing:auto;font-size:1.125rem;line-height:1.7;color:var(--text-prose)}.post .body p{margin:0 0 1.15rem}.post .body a{text-decoration-color:color-mix(in srgb,var(--primary) 35%,transparent);text-underline-offset:3.5px}.post .body a:hover{text-decoration-color:var(--primary)}.post .body h2{font-family:var(--font-serif);font-variant-ligatures:normal;font-weight:600;font-size:1.4rem;line-height:1.3;margin:2.6rem 0 .85rem;color:var(--text);letter-spacing:-.005em}.post .body h3{font-family:var(--font-serif);font-variant-ligatures:normal;font-weight:600;font-size:1.12rem;margin:1.8rem 0 .55rem;color:var(--text)}.post .body ul,.post .body ol{margin:0 0 1.15rem 1.4rem;padding:0}.post .body li{margin:0 0 .45rem}.post .body li>strong{color:var(--text)}.post .body blockquote{border-left:2px solid var(--border);margin:1.5rem 0;padding:.1rem 0 .1rem 1.2rem;color:var(--text-muted);font-style:italic;font-size:1.05rem}.post .body em{font-style:italic}.post .body code{font-family:var(--font);font-size:.86em;background:var(--bg-highlight);padding:.1em .35em;border-radius:2px;color:var(--text)}.post .body pre{font-family:var(--font);font-size:.94rem;line-height:1.6;background:var(--bg-highlight);border:1px solid var(--border);border-radius:2px;padding:.9rem 1rem;overflow-x:auto;margin:1.5rem 0;color:var(--text)}.post .body pre code{background:0 0;padding:0;font-size:inherit}.post .body figure{margin:1.6rem 0}.post .body figcaption{font-family:var(--font);font-size:.76rem;color:var(--text-muted);margin-top:.45rem;text-align:center;letter-spacing:.02em}.footnote-ref{font-size:.72em;line-height:0;margin-left:.1em}.footnote-ref a{text-decoration:none;color:var(--primary)}.footnote-backref{text-decoration:none;color:var(--text-muted)}.footnotes{border-top:1px solid var(--border);margin:3rem 0 0;padding:1.2rem 0 0}.footnotes ol{padding-left:1.5rem;margin:0;font-size:1rem;line-height:1.55;color:var(--text-muted)}.post .footnotes ol{font-family:var(--font-serif);font-variant-ligatures:normal}.footnotes li{margin-bottom:.55rem}.footnotes li::marker{color:var(--text-muted);font-family:var(--font);font-size:.8rem}.footnotes a{color:var(--text-muted)}article.publication{padding-top:2.6rem}.pub-title{font-size:var(--fs-page-heading);font-weight:600;line-height:1.3;margin:0 0 1rem;color:var(--text)}.pub-authors{margin:0;color:var(--text)}.pub-venue{margin:.3rem 0 0;color:var(--text-muted);font-size:var(--fs-meta)}.pub-links{margin:1.4rem 0 0;font-size:var(--fs-meta);display:flex;flex-wrap:wrap;gap:.35rem 1.2rem}.abstract{font-family:var(--font-serif);font-variant-ligatures:normal;font-optical-sizing:auto;font-size:1.125rem;line-height:1.7;color:var(--text-prose)}.abstract p{margin:0 0 1.15rem}.abstract p:last-child{margin-bottom:0}.abstract em{font-style:italic}article.publication pre{font-family:var(--font);font-size:.94rem;line-height:1.6;background:var(--bg-highlight);border:1px solid var(--border);padding:.9rem 1rem;overflow-x:auto;margin:1rem 0;color:var(--text)}article.publication pre code{background:0 0;padding:0;font-size:inherit}.post-nav-back{margin-top:3rem;padding-top:1.2rem;border-top:1px solid var(--border);font-size:var(--fs-meta)}.post-nav-back a{color:var(--text);text-decoration:none}.post-nav-back a:hover{color:var(--primary);text-decoration:underline}.page-title+h2{margin-top:1.4rem}.pub-equal-note{margin:.3rem 0 0;color:var(--text-muted);font-size:var(--fs-meta);text-transform:lowercase}.footnotes>hr{display:none}