@charset "UTF-8";:root{--paper: #fbfbfa;--paper-sunk: #f4f4f2;--ink: #16181c;--ink-2: #33373d;--ink-3: #565b62;--ink-4: #6e747c;--rule: #dcdcd8;--rule-soft: #e8e8e5;--accent: #1f3a63;--accent-hi: #2d5490;--serif: "Source Serif 4", "Iowan Old Style", Georgia, "Times New Roman", serif;--mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--sidebar: 17rem;--content-max: 62rem;--measure: 36rem;--yearcol: 4.25rem;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--paper: #131519;--paper-sunk: #0f1114;--ink: #e9eaec;--ink-2: #c2c6cc;--ink-3: #969ba2;--ink-4: #7d838a;--rule: #2b2e34;--rule-soft: #212429;--accent: #8fb4e8;--accent-hi: #adc9f2;color-scheme:dark}}:root[data-theme=dark]{--paper: #131519;--paper-sunk: #0f1114;--ink: #e9eaec;--ink-2: #c2c6cc;--ink-3: #969ba2;--ink-4: #7d838a;--rule: #2b2e34;--rule-soft: #212429;--accent: #8fb4e8;--accent-hi: #adc9f2;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-optical-sizing:auto;font-size:1.0625rem;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,p,ul,ol,figure,address,dl,dd{margin:0}ul,ol{padding:0;list-style:none}img{max-width:100%;height:auto;display:block}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.15em}a:hover{color:var(--accent-hi)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--ink);color:var(--paper);padding:.6rem 1rem;font-size:.875rem}.skip:focus{left:0}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.shell{display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);align-items:start}.content{padding:2.25rem clamp(1.25rem,3vw,2.75rem) 4rem;max-width:var(--content-max);min-width:0}@media(max-width:64rem){.shell{grid-template-columns:minmax(0,1fr)}.content{padding-top:1.75rem}}.sidebar{position:sticky;top:0;align-self:start;height:100dvh;overflow-y:auto;overscroll-behavior:contain;border-right:1px solid var(--rule);padding:1.75rem 1.5rem 2rem;background:var(--paper-sunk)}.sb-name{font-size:1.3rem;font-weight:600;line-height:1.2;letter-spacing:-.012em}.sb-name a{color:var(--ink);text-decoration:none}.sb-name a:hover{color:var(--accent)}.sb-photo{margin:1rem 0 .9rem;width:100%;max-width:9.5rem;border:1px solid var(--rule)}.sb-photo img{width:100%;aspect-ratio:5 / 7;object-fit:cover;object-position:50% 14%}.sb-role{font-size:.9375rem;line-height:1.45;color:var(--ink-2)}.sb-role strong{font-weight:600;color:var(--ink)}.sb-block{margin-top:1.1rem;padding-top:1.1rem;border-top:1px solid var(--rule)}.sb-contact{font-style:normal;font-size:.9375rem;line-height:1.6}.sb-contact a{word-break:break-word}.sb-contact .c-muted{color:var(--ink-3)}.sb-nav li+li{margin-top:.1rem}.sb-nav a{display:block;padding:.28rem 0;font-size:1rem;color:var(--ink-2);text-decoration:none;border-bottom:1px solid transparent}.sb-nav a:hover{color:var(--accent)}.sb-nav a[aria-current=page]{color:var(--ink);font-weight:600;border-bottom-color:var(--ink);display:inline-block}.sb-links li{font-size:.9375rem;padding:.16rem 0}.sb-cv{display:inline-block;margin-top:.35rem;font-size:.9375rem;font-weight:600}@media(max-width:64rem){.sidebar{position:static;height:auto;overflow:visible;border-right:0;border-bottom:1px solid var(--rule);padding:1.5rem clamp(1.25rem,3vw,2.75rem);display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:1.25rem;align-items:start}.sb-photo{grid-row:span 5;margin:0;max-width:7rem}.sb-head{grid-column:2}.sb-block{grid-column:2;margin-top:.85rem;padding-top:.85rem}.sb-nav ul{display:flex;flex-wrap:wrap;gap:.25rem 1.25rem}.sb-nav li+li{margin-top:0}.sb-links ul{display:flex;flex-wrap:wrap;gap:.25rem 1.25rem}}@media(max-width:34rem){.sidebar{grid-template-columns:minmax(0,1fr)}.sb-photo{grid-row:auto;max-width:6.5rem;margin-bottom:.85rem}.sb-head,.sb-block{grid-column:1}}.page-title{font-size:1.75rem;font-weight:600;letter-spacing:-.018em;line-height:1.15}.page-intro{margin-top:.6rem;max-width:var(--measure);color:var(--ink-2)}.block{margin-top:2rem}.block:first-child{margin-top:0}.block-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding-bottom:.4rem;border-bottom:1px solid var(--rule);margin-bottom:.5rem}.block-title{font-size:1.0625rem;font-weight:600;letter-spacing:-.008em}.block-count{font-family:var(--mono);font-size:.75rem;font-variant-numeric:tabular-nums lining-nums;color:var(--ink-4)}.block-note{font-size:.9375rem;color:var(--ink-3);margin-bottom:.5rem;max-width:var(--measure)}.prose{color:var(--ink-2);max-width:var(--measure)}.prose p+p{margin-top:.7em}.sub-title{font-size:.9375rem;font-weight:600;color:var(--ink);margin:1.1rem 0 .3rem}.bio{max-width:var(--measure)}.pillar{margin-top:1.1rem}.pillar-lead{font-weight:600;color:var(--ink)}.pillar p+p{margin-top:.35em}.pillar-more{font-size:.9375rem}.cite{display:grid;grid-template-columns:var(--yearcol) minmax(0,1fr);column-gap:1rem;padding:.6rem 0;border-bottom:1px solid var(--rule-soft)}.cite:last-child{border-bottom:0}.cite-year{font-family:var(--mono);font-variant-numeric:tabular-nums lining-nums;font-size:.8125rem;color:var(--ink-3);padding-top:.3em}.cite-body{max-width:44rem}.cite-title{font-size:1.0625rem;line-height:1.35;color:var(--ink)}.cite-authors{font-size:.9375rem;color:var(--ink-2);line-height:1.45}.au-self{font-weight:600;color:var(--ink)}.cite-venue{font-size:.9375rem;color:var(--ink-2)}.cite-venue em{color:var(--ink);font-style:italic}.cite-note{font-size:.875rem;color:var(--ink-3)}.cite-links{display:flex;flex-wrap:wrap;gap:.2rem .85rem;margin-top:.15rem}.cite-links a{font-size:.8125rem}.cite-noyear .cite-body{grid-column:2}@media(max-width:34rem){.cite,.cite-noyear{grid-template-columns:minmax(0,1fr)}.cite-noyear .cite-body{grid-column:auto}.cite-year{padding-top:0}}.rrow{display:grid;grid-template-columns:8.5rem minmax(0,1fr);column-gap:1rem;padding:.5rem 0;border-bottom:1px solid var(--rule-soft)}.rrow:last-child{border-bottom:0}.rrow-period{font-family:var(--mono);font-variant-numeric:tabular-nums lining-nums;font-size:.8125rem;color:var(--ink-3);padding-top:.32em;white-space:nowrap}.rrow-primary{color:var(--ink);line-height:1.35}.rrow-secondary{font-size:.9375rem;color:var(--ink-2)}.rrow-tertiary{font-size:.875rem;color:var(--ink-3)}@media(max-width:34rem){.rrow{grid-template-columns:minmax(0,1fr)}.rrow-period{padding-top:0}}.inst{margin-top:1.5rem}.inst:first-of-type{margin-top:.5rem}.inst-head{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;padding-bottom:.35rem;border-bottom:1px solid var(--rule)}.inst-name{font-size:1.0625rem;font-weight:600}.inst-unit{font-size:.875rem;color:var(--ink-3)}.year-block{display:grid;grid-template-columns:5.5rem minmax(0,1fr);column-gap:1rem;padding:.5rem 0;border-bottom:1px solid var(--rule-soft)}.year-block:last-child{border-bottom:0}.year-label{font-family:var(--mono);font-variant-numeric:tabular-nums lining-nums;font-size:.8125rem;color:var(--ink-3);padding-top:.32em;white-space:nowrap}.course{display:grid;grid-template-columns:5rem minmax(0,1fr) auto;column-gap:.85rem;align-items:baseline;padding:.15rem 0}.c-code{font-family:var(--mono);font-size:.75rem;color:var(--ink-3)}.c-title{font-size:1rem;line-height:1.35;color:var(--ink)}.c-meta{font-size:.875rem;color:var(--ink-3);white-space:nowrap}@media(max-width:46rem){.year-block{grid-template-columns:minmax(0,1fr)}.year-label{padding-top:0;margin-bottom:.2rem}.course{grid-template-columns:4.5rem minmax(0,1fr)}.c-meta{grid-column:2}}@media(max-width:30rem){.course{grid-template-columns:minmax(0,1fr)}.c-meta{grid-column:1}}.list-tight li{padding:.32rem 0;border-bottom:1px solid var(--rule-soft);font-size:1rem;color:var(--ink-2);max-width:44rem}.list-tight li:last-child{border-bottom:0}.list-cols{columns:2;column-gap:2rem;max-width:44rem}.list-cols li{break-inside:avoid;padding:.28rem 0;border-bottom:1px solid var(--rule-soft);font-size:.9688rem;color:var(--ink-2)}@media(max-width:40rem){.list-cols{columns:1}}.conf{padding:.5rem 0;border-bottom:1px solid var(--rule-soft);max-width:44rem}.conf:last-child{border-bottom:0}.conf-series{color:var(--ink)}.conf-editions{font-family:var(--mono);font-variant-numeric:tabular-nums lining-nums;font-size:.75rem;line-height:1.6;color:var(--ink-3)}.c-muted{color:var(--ink-3)}.btn{display:inline-block;font-size:.9375rem;font-weight:600;text-decoration:none;color:var(--paper);background:var(--accent);border:1px solid var(--accent);padding:.5rem 1rem}.btn:hover{background:var(--accent-hi);border-color:var(--accent-hi);color:var(--paper)}.foot{margin-top:2.5rem;padding-top:.85rem;border-top:1px solid var(--rule);font-size:.8125rem;color:var(--ink-3);display:flex;flex-wrap:wrap;gap:.25rem 1.5rem}@media print{:root{--paper: #fff;--paper-sunk: #fff;--ink: #000;--ink-2: #1a1a1a;--ink-3: #3a3a3a;--ink-4: #555;--rule: #bbb;--rule-soft: #ddd;--accent: #000}.shell{grid-template-columns:minmax(0,1fr)}.sidebar{position:static;max-height:none;border:0;border-bottom:1px solid #bbb}.sb-nav,.sb-links,.skip,.btn{display:none!important}.cite,.rrow,.year-block{break-inside:avoid}}
