:root{--bg:#fff;--side:#fafafa;--ink:#18181b;--muted:#62626c;--line:#e6e6ea;--chip:#f4f4f5;--accent:#2453d6;--accent-soft:#eef2fd;--sans:"Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:"Geist Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--header-h:3.5rem;--side-w:18rem;color-scheme:light}:root[data-theme=dark]{--bg:#111113;--side:#151517;--ink:#ececee;--muted:#9b9ba4;--line:#27272c;--chip:#1d1d21;--accent:#7ea4ff;--accent-soft:#1a2239;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background-color:var(--bg);min-height:100vh;color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;flex-direction:column;margin:0;font-size:15.5px;line-height:1.65;display:flex}h1,h2,h3{text-wrap:balance;line-height:1.25}p{margin:0 0 1rem}b,strong{font-weight:600}a{color:var(--accent);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline 1px}img{max-width:100%;height:auto}ul{padding-left:1.25rem}li::marker{color:var(--muted)}code{font-family:var(--mono);font-size:.9em}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.muted{color:var(--muted)}.ext:after{content:" ↗";content:" ↗" / ""}.topbar{z-index:20;background-color:var(--bg);border-bottom:1px solid var(--line);position:sticky;top:0}.topbar__inner{max-width:75rem;min-height:var(--header-h);flex-wrap:wrap;align-items:center;gap:0 1rem;margin:0 auto;padding:0 1.75rem;display:flex}.brand{color:var(--ink);letter-spacing:-.01em;white-space:nowrap;font-weight:600}.brand:hover{color:var(--ink);text-decoration:none}.nav{margin-left:auto}.nav ul{align-items:center;gap:2px;margin:0;padding:0;list-style:none;display:flex}.nav a{color:var(--muted);border-radius:6px;padding:.3rem .65rem;font-size:.875rem;line-height:1.5;display:block}.nav a:hover{color:var(--ink);background-color:var(--chip);text-decoration:none}.nav a[aria-current=page]{color:var(--ink);background-color:var(--chip);font-weight:500}.topbar__actions{align-items:center;gap:.25rem;display:flex}.theme-toggle,.nav-toggle{width:2.25rem;height:2.25rem;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;padding:0;display:grid}.theme-toggle:hover,.nav-toggle:hover{color:var(--ink);background-color:var(--chip)}.theme-toggle__sun,:root[data-theme=dark] .theme-toggle__moon{display:none}:root[data-theme=dark] .theme-toggle__sun{display:block}.nav-toggle{display:none}.nav-toggle span{background-color:currentColor;width:1rem;height:1.5px;margin:2px 0;display:block}@media (width<=48rem){.topbar__inner{padding:0 1.25rem}.topbar__actions{margin-left:auto}.nav-toggle{align-content:center;display:grid}.nav{order:3;width:100%;margin:0;padding:.25rem 0 .75rem;display:none}.topbar.is-open .nav{display:block}.nav ul{flex-direction:column;align-items:stretch}.nav a{padding:.5rem .65rem;font-size:.95rem}}.shell{background:linear-gradient(90deg, var(--side) 50%, var(--bg) 50%);flex:1;display:grid}.layout{grid-template-columns:var(--side-w) minmax(0, 1fr);grid-template-rows:1fr auto;grid-template-areas:"side main""side foot";width:100%;max-width:75rem;margin:0 auto;display:grid}.main{background-color:var(--bg);grid-area:main;min-width:0;padding:2.5rem 3rem 3.5rem}.side{background-color:var(--side);border-right:1px solid var(--line);grid-area:side}.side__inner{align-content:start;gap:1.1rem;padding:2.5rem 1.75rem 2rem;display:grid}@media (width>=54.01rem) and (height>=40rem){.side__inner{top:var(--header-h);position:sticky}}.side__photo{object-fit:cover;border-radius:14px;width:7rem;height:7rem;display:block}.side__name{letter-spacing:-.015em;margin:0;font-size:1.35rem;font-weight:600;line-height:1.25}.side__name span{color:var(--muted);letter-spacing:0;margin-top:.15rem;font-size:.9rem;font-weight:400;display:block}.side__role{color:var(--muted);margin:0;font-size:.875rem;line-height:1.55}.side__links{margin:0;font-size:.875rem}.side__links div{border-bottom:1px solid var(--line);justify-content:space-between;gap:.75rem;padding:.4rem 0;display:flex}.side__links div:last-child{border-bottom:0}.side__links dt{color:var(--muted)}.side__links dd{text-align:right;overflow-wrap:anywhere;min-width:0;margin:0}.side__links a{font-weight:500}.footer{border-top:1px solid var(--line);background-color:var(--bg);color:var(--muted);grid-area:foot;padding:1.25rem 3rem;font-size:.8125rem}.footer a{color:inherit;text-underline-offset:3px;text-decoration:underline;text-decoration-color:var(--line)}.footer a:hover{color:var(--ink)}@media (width<=54rem){.shell{background:var(--bg)}.layout{grid-template:"main""side""foot"/minmax(0,1fr)}.layout--home{grid-template-areas:"side""main""foot"}.side{border-right:0;border-top:1px solid var(--line)}.layout--home .side{border-top:0;border-bottom:1px solid var(--line)}.side__inner{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.35rem 1.1rem;padding:1.5rem 1.25rem}.side__photo{grid-row:span 2;width:5.25rem;height:5.25rem}.side__name{align-self:end}.side__role{align-self:start}.side__links{grid-column:1/-1;margin-top:.75rem}.main{padding:2rem 1.25rem 2.5rem}.footer{padding:1.25rem}}.page-head{gap:.4rem;margin-bottom:2.25rem;display:grid}.page-title{letter-spacing:-.022em;margin:0;font-size:1.875rem;font-weight:600}.page-desc{max-width:68ch;color:var(--muted);margin:0}.section+.section{margin-top:2.75rem}.section__head{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.75rem;display:flex}.section__head a{white-space:nowrap;font-size:.8125rem;font-weight:500}.label{color:var(--muted);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.75rem;font-weight:500;line-height:1.4}.label__count{letter-spacing:.02em;text-transform:none;opacity:.75;margin-left:.5rem}.prose p{max-width:68ch}.interests{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:0 0 1.25rem;display:flex}.interests__label{color:var(--muted);font-size:.875rem}.chips{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.chips li{background-color:var(--accent-soft);color:var(--accent);border-radius:999px;padding:.2rem .7rem;font-size:.8125rem;font-weight:500}.links{flex-wrap:wrap;gap:.2rem 1rem;margin:.4rem 0 0;font-size:.8125rem;font-weight:500;display:flex}.news{margin:0;padding:0;list-style:none}.news li{border-top:1px solid var(--line);grid-template-columns:7rem minmax(0,1fr);gap:1rem;padding:.6rem 0;font-size:.95rem;display:grid}.news time{color:var(--muted);font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.8rem;line-height:1.95}.pub-group+.pub-group{margin-top:2.5rem}.pub-group .label{margin-bottom:.75rem}.pubs{margin:0;padding:0;list-style:none}.pub{border-top:1px solid var(--line);grid-template-columns:7.5rem minmax(0,1fr);gap:1rem;padding:1rem 0;display:grid}.pub__venue{border:1px solid var(--line);background-color:var(--chip);max-width:100%;color:var(--ink);font-family:var(--mono);letter-spacing:.02em;border-radius:6px;place-self:start;margin-top:.15rem;padding:.3rem .45rem;font-size:.72rem;font-weight:500;line-height:1.3;text-decoration:none}.pub__title{letter-spacing:-.005em;font-weight:600;line-height:1.45}.pub__title a{color:inherit}.pub__title a:hover{color:var(--accent)}.pub__authors{color:var(--muted);margin-top:.2rem;font-size:.875rem}.self{color:var(--ink);font-style:normal;font-weight:600}.pub__meta{color:var(--muted);font-size:.8125rem}.topic+.topic{margin-top:3rem}.topic__title{letter-spacing:-.015em;margin:0 0 .75rem;font-size:1.3rem;font-weight:600}.topic ul{margin:-.5rem 0 1.5rem}.topic .label{margin-bottom:.75rem}.aside-note{color:var(--muted);margin-top:3rem;font-size:.9rem}.entries{margin:0;padding:0;list-style:none}.entries>li{border-top:1px solid var(--line);padding:1rem 0}.entries__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.15rem 1rem;margin-bottom:.3rem;display:flex}.entries__title{letter-spacing:-.01em;margin:0;font-size:1.05rem;font-weight:600}.entries__meta{color:var(--muted);font-family:var(--mono);font-size:.8rem}.entries li p{max-width:68ch;margin-bottom:.3rem}@media (width<=36rem){.news li,.pub{grid-template-columns:minmax(0,1fr);gap:.3rem}.page-title{font-size:1.6rem}}
