@font-face{font-family:Archivo;font-style:normal;font-weight:400 900;font-display:swap;src:url(../fonts/archivo-400_900.92895abae7c5.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/ibm-plex-mono-500.6708425c446b.woff2)format("woff2")}@font-face{font-family:Courier Prime;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/courier-prime-400.b3b3ae8fc253.woff2)format("woff2");unicode-range:U+20-7E}@font-face{font-family:Courier Prime;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/courier-prime-700.a520b2a103fe.woff2)format("woff2");unicode-range:U+20-7E}@font-face{font-family:Courier Prime;font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/courier-prime-400-italic.cb0861ed03af.woff2)format("woff2");unicode-range:U+20-7E}:root{--h:140;--c-paper:.0385;--c-paper-dark:.0385;--c-ink:.0385;--c-ink-dark:.0385;--measure:66.25rem;--mono:"IBM Plex Mono", ui-monospace, monospace;--code:"Courier Prime", "Courier New", ui-monospace, monospace;--sans:Archivo, "Helvetica Neue", Helvetica, sans-serif;--grain-light:url(../img/grain-light.82753096a029.svg);--grain-dark:url(../img/grain-dark.74d6ee823cad.svg);--portrait:url(../img/portrait.d6a286e384a5.webp)}body{--paper:oklch(.948 calc(var(--c-paper) * .54) var(--h));--ink:oklch(.3325 var(--c-ink) var(--h));--grain:var(--grain-light);--portrait-composite:intersect}@media (prefers-color-scheme:dark){body{--paper:oklch(.252 calc(var(--c-paper-dark) * .625) var(--h));--ink:oklch(.8475 var(--c-ink-dark) var(--h));--grain:var(--grain-dark);--portrait-composite:exclude}}html[data-theme=dark] body{--paper:oklch(.252 calc(var(--c-paper-dark) * .625) var(--h));--ink:oklch(.8475 var(--c-ink-dark) var(--h));--grain:var(--grain-dark);--portrait-composite:exclude}html[data-theme=light] body{--paper:oklch(.948 calc(var(--c-paper) * .54) var(--h));--ink:oklch(.3325 var(--c-ink) var(--h));--grain:var(--grain-light);--portrait-composite:intersect}body:before,.bar:before{content:"";z-index:-1;pointer-events:none;mix-blend-mode:multiply;background-image:var(--grain);background-size:96px 96px;position:absolute;top:0;bottom:0;left:0;right:0}@media print{body:before,.bar:before{display:none}}body.s-home{--h:140;--c-paper:.0385;--c-paper-dark:.0385;--c-ink:.0385;--c-ink-dark:.0385}body.s-writing{--h:200;--c-paper:.0267;--c-paper-dark:.0318;--c-ink:.0327;--c-ink-dark:.0292}body.s-speaking{--h:260;--c-paper:.0293;--c-paper-dark:.0332;--c-ink:.0342;--c-ink-dark:.031}body.s-projects{--h:320;--c-paper:.0422;--c-paper-dark:.0381;--c-ink:.0384;--c-ink-dark:.039}body.s-cv{--h:20;--c-paper:.0478;--c-paper-dark:.0438;--c-ink:.0427;--c-ink-dark:.0492}body.s-colophon{--h:80;--c-paper:.0629;--c-paper-dark:.048;--c-ink:.0463;--c-ink-dark:.0542}body.s-error{--c-paper:0;--c-paper-dark:0;--c-ink:0;--c-ink-dark:0}html{font-size:110%}*,:before,:after{box-sizing:border-box}body{background-color:var(--paper);min-height:100vh;color:var(--ink);font:400 1.0625rem / 1.55 var(--sans);-webkit-text-size-adjust:100%;margin:0;position:relative}a{color:inherit;text-underline-offset:.18em;-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto;text-decoration-thickness:.125em}a:hover{text-decoration-thickness:.2em}:focus-visible{outline-offset:3px;outline:2px solid}::selection{background:var(--ink);color:var(--paper)}img{max-width:100%;height:auto}.skip{position:absolute;left:-9999px}.skip:focus{background:var(--ink);color:var(--paper);padding:.5rem;display:inline-block;position:static}.bar{z-index:2;background:var(--paper);font:500 .75rem / 1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;padding:.625rem max(2rem, calc((100% - var(--measure)) / 2 + 2rem));border-bottom:1px dotted;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.625rem 1.5rem;display:flex;position:sticky;top:0}.bar nav{flex-wrap:wrap;gap:.625rem 1.375rem;display:flex}.bar a{border-bottom:2px solid transparent;padding-bottom:.125rem;text-decoration:none}.bar a[aria-current]{border-bottom-color:currentColor}.theme{margin:0}.theme button{-ms-appearance:none;appearance:none;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;margin:0;padding:0}.theme button:hover{text-underline-offset:3px;text-decoration:underline}.theme .glyph{vertical-align:-.08em;margin-right:.4em;font-size:1.25em;line-height:1}.theme .t-sun,.theme .t-moon,html[data-theme=light] .theme .t-auto{display:none}html[data-theme=light] .theme .t-sun{display:inline}html[data-theme=dark] .theme .t-auto{display:none}html[data-theme=dark] .theme .t-moon{display:inline}main{max-width:var(--measure);margin:0 auto;padding:0 2rem 6rem}footer{max-width:var(--measure);font:500 .75rem / 1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;border-top:1px dotted;justify-content:space-between;gap:1rem;margin:0 auto;padding:.75rem 2rem 2rem;display:flex}.kicker{font:500 .75rem / 1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;margin:0}.meta{font:500 .75rem / 1.75 var(--mono);letter-spacing:.08em;text-transform:uppercase;margin:0}.meta--tight{margin-top:.4375rem}.meta dl{margin:0}.meta-back{margin:1rem 0 0;display:block}.meta-back:before{content:"← " / ""}.seplist{margin:0;padding:0;list-style:none;display:inline}.seplist>li{display:inline}.seplist>li:not(:last-child):after{content:" · " / ""}.seplist--block{text-wrap:pretty;max-width:62ch;margin:0 0 1.125rem;line-height:1.55;display:block}.dateline-updated:before{content:" · " / ""}.meta-label:not(:first-child){margin-top:1rem}.meta-value{font:400 .9375rem / 1.35 var(--sans);letter-spacing:0;text-transform:none;margin:.1875rem 0 0}.meta-links{flex-direction:column;align-items:start;gap:.5rem;margin-top:.375rem;display:flex}h1,h2,h3{letter-spacing:-.045em;margin:0;font-weight:900}.nameplate{--heading-from:clamp(2.125rem, 8.4vw, 7.875rem);font-size:var(--heading-from);text-transform:uppercase;text-wrap:balance;margin:.625rem 0 0;line-height:.9}.nameplate--xl{--heading-from:clamp(5.5rem, 20vw, 16.25rem);font-size:var(--heading-from);letter-spacing:-.06em}.title-2{--heading-from:clamp(3.25rem, 10vw, 8.25rem);font-size:var(--heading-from);text-transform:uppercase;margin:.625rem 0 0;line-height:.84}.headline{--heading-from:clamp(2.25rem, 6vw, 4.5rem);font-size:var(--heading-from);letter-spacing:-.04em;text-wrap:balance;margin:.75rem 0 0;line-height:.94}@supports (animation-timeline:scroll()){@media (prefers-reduced-motion:no-preference){.masthead{z-index:1;background-color:var(--paper);position:sticky;top:2.625rem}.masthead:before{content:"";z-index:-1;pointer-events:none;mix-blend-mode:multiply;background-image:var(--grain);background-size:96px 96px;position:absolute;top:0;bottom:0;left:0;right:0}.masthead:after{content:"";top:calc(100% + var(--rule-width,0px));pointer-events:none;background-image:linear-gradient(color-mix(in oklab, var(--paper) 75%, transparent), transparent);height:1.15rem;animation:linear both scrim-fade;animation-timeline:scroll(root);animation-range:16rem 26rem;position:absolute;left:0;right:0}.masthead>:is(h1){animation:linear both heading-shrink;animation-timeline:scroll(root);animation-range:0 8.75rem}.masthead :is(.kicker,.credits){animation:linear both credits-collapse;animation-timeline:scroll(root);animation-range:0 8.75rem;overflow:hidden}.masthead{animation:linear both masthead-tighten;animation-timeline:scroll(root);animation-range:0 8.75rem}@keyframes heading-shrink{0%{font-size:var(--heading-from);font-weight:900;line-height:.94}to{font-size:1.25rem;font-weight:600;line-height:1.25}}@keyframes credits-collapse{0%{opacity:1;height:1.1875rem;margin-top:.75rem}to{opacity:0;height:0;margin-top:0}}@keyframes scrim-fade{0%{opacity:0}to{opacity:1}}@keyframes masthead-tighten{0%{padding-bottom:1rem}to{padding-bottom:.375rem}}}}.tier .sm{letter-spacing:-.02em;font-size:.72em}.strip{font:500 .75rem / 1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;border-top:1px dotted;border-bottom:5px solid;flex-wrap:wrap;justify-content:space-between;gap:.25rem 1.625rem;margin:0 0 1.25rem;padding:.5625rem 0;display:flex}.strip--thin{border-bottom:1px dotted}.ruled{--rule-width:5px;border-bottom:var(--rule-width) solid currentColor;padding-bottom:1rem}.ruled--mid{--rule-width:3px}.title-2--solo,.nameplate--solo,.headline--solo{margin-top:1rem}.credits{font:500 .75rem / 1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;margin:.75rem 0 0;display:flex}.masthead>.kicker:first-child{margin-top:1rem}.kicker+.headline{margin-top:.375rem}.lede{letter-spacing:-.02em;text-wrap:pretty;margin:0;font-size:1.8125rem;font-weight:500;line-height:1.2}.lede--small{max-width:62ch;margin-top:1.25rem;font-size:1.25rem}.prose{text-wrap:pretty;max-width:62ch}.lede+.prose{margin-top:1.5rem}.prose p{margin:0 0 .875rem}.prose :is(h2,h3){letter-spacing:-.03em;text-wrap:balance;margin:1.75rem 0 .625rem}.prose h2{font-size:1.6875rem}.prose h3{font-size:1.3125rem}.prose :is(ul,ol):not(.seplist){margin:0 0 .875rem;padding-left:1.375rem}.prose :is(ul,ol):not(.seplist)>li{margin:0 0 .375rem}.prose>p:first-of-type:first-letter{float:left;letter-spacing:-.04em;padding:.3125rem .5625rem 0 0;font-size:4rem;font-weight:900;line-height:.74}.pull{letter-spacing:-.03em;border-top:3px solid;border-bottom:3px solid;margin:1.125rem 0;padding:.875rem 0;font-size:1.6875rem;font-weight:900;line-height:1.14}.pull p{margin:0}code{font:400 .9em / 1 var(--code)}:not(pre)>code{-webkit-box-decoration-break:clone;box-decoration-break:clone;border:1px dotted;margin:0 .12em;padding:.15em .32em 0}.split{grid-template-columns:minmax(0,1fr) 26.25rem;align-items:start;gap:2.75rem;padding:1.25rem 0 0;display:grid}.split>figure{max-width:26.25rem}.cols{grid-template-columns:repeat(auto-fit,minmax(17.5rem,1fr));align-items:start;gap:2.75rem;padding:2.125rem 0 0;display:grid}.split-article{grid-template-columns:9.375rem minmax(0,1fr);align-items:start;gap:2.5rem;max-width:53.75rem;padding:1.5rem 0 0;display:grid}.split-article>.meta{position:static}.section-head{border-bottom:3px solid;justify-content:space-between;align-items:baseline;gap:1rem;margin:3.25rem 0 0;padding-bottom:.4375rem;display:flex}.section-head h2,.section-head a{font:500 .75rem / 1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase}.index{--row-pad:.9375rem;--row-title:1.5rem;--row-leading:1.15;margin:0;padding:0;list-style:none}.split .index{--row-pad:1.25rem;--row-title:1.6875rem;--row-leading:1.1}.index>li{padding:var(--row-pad) 0;border-bottom:1px dotted;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:.25rem 1.125rem;display:grid;position:relative}.split .index>li:first-child{padding-top:0}.index a{text-decoration:none}.index :is(h2,h3) a:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0}.index :is(h2,h3){font-size:var(--row-title);line-height:var(--row-leading);letter-spacing:-.025em;grid-column:1;font-weight:800}.chips{font:500 .75rem / 1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.chips>*{border:1px dotted;padding:.0625rem .375rem}.chips a{text-decoration:none;position:relative}.chips a:hover{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.chips a:focus-visible{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.index .chips{grid-column:1}.index time{font:500 .75rem / 1.6 var(--mono);grid-area:1/2}.index>li:hover :is(h2,h3){text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:2px}.index>li:has(a:focus-visible) :is(h2,h3){text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:2px}.index>li:has(a:focus-visible){outline-offset:4px;outline:2px solid}.docket-line{font:500 .75rem / 1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;grid-column:1;margin:0}.docket-place:before{content:" · " / ""}.docket-intro,.index--lead p{text-wrap:pretty;grid-column:1/-1;max-width:62ch;margin:.5rem 0 0;font-size:1rem;line-height:1.5}.docket-links{grid-column:1/-1;margin-top:.5rem}.docket-intro>:first-child{margin-top:0}.docket-intro>:last-child{margin-bottom:0}.index--lead>li{display:block}.index--lead .chips{margin-top:.625rem}.index--lead time{margin-top:.375rem;display:block}.cv-row{border-bottom:1px dotted;grid-template-columns:9.875rem minmax(0,1fr);gap:1.5rem;padding:1.0625rem 0;display:grid}.cv-when>*{display:block}.range{flex-wrap:wrap;display:inline-flex}.cv-when>:not(:last-child):after,.range>:not(:last-child):after{content:"–" / " to "}.cv-row--stack{grid-template-columns:minmax(0,1fr)}.cv-row h3{letter-spacing:-.025em;font-size:1.375rem;font-weight:800;line-height:1.15}.cv-row h3 span{font-weight:400}.cv-row p{max-width:62ch;margin:.375rem 0 0;font-size:1rem;line-height:1.55}.cv-row :is(ul,ol){max-width:62ch;margin:.375rem 0 0;padding-left:1.25rem;font-size:1rem;line-height:1.55}.cv-head{font:500 .75rem / 1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid;margin-top:2rem;padding-bottom:.4375rem}.split .cv-head{border-bottom:0;margin-top:0;padding-bottom:0}.split .cv-line{padding:.125rem 0 0;font-size:1.0625rem}.split .cv-line+.lede{margin-top:1.625rem}.cv-head--first{margin-top:0}.cols .cv-row:last-of-type{border-bottom:0}.s-cv main>p{max-width:62ch}.cv-line{margin:0;padding:.75rem 0;font-size:1.1875rem;font-style:normal}.cv-line p{margin:0}.cv-note{margin:0;padding:.875rem 0;font-size:1rem}.cv-sub{font:500 .75rem / 1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;margin:1.125rem 0 0 11.375rem}.earlier{margin:.375rem 0 0;padding:0;list-style:none}.earlier li{border-bottom:1px dotted;grid-template-columns:9.875rem minmax(0,1fr);align-items:baseline;gap:1.5rem;padding:.4375rem 0;font-size:1rem;display:grid}.earlier .yr{font:500 .75rem / 1.75 var(--mono);letter-spacing:.08em;text-transform:uppercase}@media (max-width:50rem){.cv-sub{margin-left:0}.earlier li{grid-template-columns:minmax(0,1fr);gap:.125rem}}.postnav{border-top:3px solid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.75rem;margin:3.5rem 0 0;padding:1rem 0 0;display:grid}.postnav a{text-decoration:none;display:block}.postnav a:hover span:last-child{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:2px}.postnav a:focus-visible span:last-child{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:2px}.postnav .dir{font:500 .75rem / 1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;display:block}.postnav .to{text-wrap:pretty;margin-top:.25rem;font-size:1.25rem;font-weight:600;line-height:1.3;display:block}.postnav .next{text-align:right}.postnav p{margin:0}.postnav .none .to{font-weight:400}@media (max-width:50rem){.postnav{grid-template-columns:minmax(0,1fr);gap:1.25rem}.postnav .next{text-align:left}}.rev{background:var(--ink);color:var(--paper);position:relative}.rev a{color:inherit}.rev--pad{padding:.75rem .875rem}.rev--wide,.prose .rev--wide{margin-left:-14px;margin-right:-14px}.rev--slip{--slip:.5rem}.rev--slip:after{content:"";pointer-events:none;left:calc(-1 * var(--slip));right:var(--slip);top:var(--slip);bottom:calc(-1 * var(--slip));border:1px solid var(--ink);position:absolute}figure{margin:0}figcaption{font:500 .75rem / 1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;margin-top:.5rem}.plate{border:1px dotted;display:grid}.plate>div{aspect-ratio:1;background:var(--ink);-webkit-mask-image:var(--plate), var(--plate);mask-image:var(--plate), var(--plate);-webkit-mask-source-type:luminance,alpha;mask-mode:luminance,alpha;mask-composite:var(--portrait-composite);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.plate>*{min-width:0}.plate--article{max-width:none;width:calc(min(var(--measure), 100vw) - 4rem - 11.875rem);margin:0 0 2.5rem}.plate--article>div{aspect-ratio:1200/630}.cols{clear:both}.plate figcaption{font:500 .75rem / 1.5 var(--mono);letter-spacing:.04em;margin-top:.5rem}.plate figcaption p{margin:0}.plate--portrait>div{-webkit-mask-image:var(--portrait), var(--portrait);mask-image:var(--portrait), var(--portrait)}.sidenote{float:left;clear:left;width:9.375rem;font:500 .75rem / 1.65 var(--mono);letter-spacing:.04em;margin:.375rem 0 .75rem -190px}.sidenote:before{content:"";border-top:2px solid;width:1.5rem;margin-bottom:.375rem;display:block}.sidenote p{margin:0}@media (max-width:56.25rem){.sidenote{float:none;border-left:1px dotted;width:auto;margin:.75rem 0;padding-left:.75rem}.sidenote:before{display:none}}@media (max-width:50rem){.rev--wide{margin-left:-20px;margin-right:-20px}.split,.cols,.split-article{grid-template-columns:minmax(0,1fr);gap:1.75rem}.split{gap:1.25rem}.split>.plate{order:-1}.strip{border-top:0;padding-top:0}.plate--article{width:100%}.cv-row{grid-template-columns:minmax(0,1fr);gap:.375rem}.index>li{grid-template-columns:minmax(0,1fr)}.index time{grid-area:auto/1}main{padding:0 1.25rem 4rem}.bar>div,footer{padding-left:1.25rem;padding-right:1.25rem}}@page{size:A4;margin:1.25cm 1.5cm}@media print{html{font-size:12pt}body{--paper:#fff;--ink:#000;orphans:3;widows:3;min-height:0;font-size:1rem;line-height:1.35}.bar,footer{display:none}main{max-width:none;padding:0}.masthead{animation:none;position:static}.masthead:before,.masthead:after{display:none}.masthead>h1{animation:none}a{text-decoration-thickness:1px}.s-cv .bar{border:0;padding:0;display:block;position:static}.s-cv .bar :is(nav,.theme){display:none}.s-cv .wordmark{font:900 2.75rem / .9 var(--sans);letter-spacing:-.045em;text-transform:uppercase;border:0;margin-top:.25rem;padding:0;text-decoration:none;display:block}.s-cv .masthead{padding-bottom:.5rem}.s-cv .title-2{display:none}.s-cv .split{grid-template-columns:minmax(0,1fr);padding-top:.5rem}.s-cv .plate{display:none}.s-cv .split .cv-line{padding-top:0;font-size:1rem}.s-cv .split .cv-line+.lede{margin-top:.5rem}.s-cv .lede--small{max-width:none;font-size:1rem;line-height:1.35}.s-cv .split p{max-width:none}.cv-head,.cv-sub{break-after:avoid}.cv-head{margin-top:1rem;padding-bottom:.25rem}.cv-row,.earlier,.cv-note{break-inside:avoid}.cv-row{gap:1rem;padding:.5rem 0}.cv-row:not(.cv-row--stack){grid-template-columns:9.5rem minmax(0,1fr)}.cv-when{flex-wrap:wrap;display:flex}.s-cv main>p{max-width:none}.cv-row h3{font-size:1.125rem}.cv-row :is(p,ul,ol){max-width:none;margin-top:.1875rem;font-size:1rem;line-height:1.35}.cv-row li{margin:0}.cv-sub{margin:.75rem 0 0 10.5rem}.earlier li{grid-template-columns:9.5rem minmax(0,1fr);gap:1rem;padding:.25rem 0}.cols{gap:2rem;padding-top:1rem}.cols section{break-inside:avoid}.cols section>:last-child{margin-bottom:0}}