:root{color-scheme:light dark;--night:#111;--ink:#111;--ink-2:#4d4d4d;--paper:#fff;--sky:#e7f0fe;--accent:#0f6b8d;--alarm:#b34800;--hairline:#d6d6d6;--rule-heavy:2px;--rule-light:1px;--ui:var(--font-hind);--text:var(--font-text);--gutter:clamp(1rem, 4vw, 2.5rem);--measure:34rem;--margin:12rem;--gap:3rem;--extra:24rem;--content:75rem;--inline:max(var(--gutter), (100% - var(--content)) / 2)}@media (width>=56rem){:root{--measure:36rem}}@media (width<56rem){body:not(.home){--inline:max(var(--gutter), (100% - var(--measure)) / 2)}}@media (prefers-color-scheme:dark){:root{--ink:#e8e8e8;--ink-2:#a3a3a3;--paper:#111;--accent:#69b8c9;--alarm:#f60;--hairline:#333}[data-content] img{background:#fff}}*,:before,:after{box-sizing:border-box}html{color:var(--ink);background:var(--paper);-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--paper);font-family:var(--text);font-kerning:normal;overflow-wrap:break-word;margin:0;font-size:1.125rem;line-height:1.55}@media (width>=56rem){body{font-size:1.25rem}}img{max-width:100%;height:auto}a{color:inherit}:focus-visible{outline-offset:3px;outline:2px solid}.visually-hidden,.skip:not(:focus){clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{top:.75rem;left:var(--inline);z-index:2;background:var(--paper);color:var(--ink);font:700 1rem/1.2 var(--ui);padding:.5rem .75rem;position:absolute}.site{padding:.75rem var(--inline);background:var(--night);color:#fff;font-family:var(--ui);flex-wrap:wrap;align-items:center;column-gap:1.25rem;line-height:1.2;display:flex}.site a{text-decoration:none}.site .name{letter-spacing:.02em;text-transform:uppercase;align-content:center;min-block-size:1.5rem;font-size:1.125rem;font-weight:700}.social{margin:0;padding:0;list-style:none;display:flex}.social a{color:#9a9a9a;place-items:center;width:2.25rem;height:2.25rem;display:grid}.social svg{width:auto;height:1.125rem}.site nav{margin-left:auto}.site nav ul{gap:2rem;margin:0;padding:0;list-style:none;display:flex}.site nav a{color:#b8b8b8;letter-spacing:.08em;text-transform:uppercase;padding-block:.5rem;font-size:.875rem;display:block}.site nav a[aria-current=page]{color:#fff;box-shadow:inset 0 -2px}.site a:hover,.social a:hover{color:#fff}@media (width<56rem){.site{justify-content:space-between;column-gap:.5rem;padding-block:.5rem 0}.social{margin-right:-.5625rem}.site nav{flex-basis:100%;margin-left:0}.site nav ul{justify-content:space-between;gap:.5rem}}@media (width<40rem){.site .name{font-size:1rem}.social{margin-right:-.3125rem}.social a{width:1.75rem}.site nav a{padding-block:.625rem;font-size:.8125rem}}:root:has(>body.home),body.home{background:var(--sky)}body.home{min-height:max(100svh,32rem);position:relative}.home .site{z-index:1;color:var(--night);background:0 0;position:relative}.home .social a,.home .site nav a,.home .site a:hover{color:var(--night)}.home .site :is(.name,nav a):hover{text-underline-offset:.25em;text-decoration-line:underline;text-decoration-thickness:2px}.home .social a:hover{box-shadow:inset 0 -2px}.hero img{object-fit:cover;object-position:calc(100% * var(--focus-x)) calc(100% * var(--frame-y));width:100%;height:100%;position:absolute;inset:0}.intro{padding:calc(.5rem + 2svh) var(--inline) 0;color:var(--night);font-family:var(--ui);position:relative}.intro h1{letter-spacing:-.025em;text-wrap:balance;margin:0;font-size:clamp(3rem,min(9.5vw,15svh),9.25rem);font-weight:700;line-height:.95}.intro p{text-wrap:balance;margin:.6em 0 0;font-size:clamp(1.125rem,min(2vw,3.4svh),2rem);line-height:1.25}@media (aspect-ratio>=1) and (width>=40rem) and (height>=30rem){.intro{--clear:calc(.1 * max(100vw, max(100svh, 32rem) * var(--aspect)));--edge:max(var(--gutter), (100vw - var(--content)) / 2)}.hero[data-name=right] .intro{--column:calc(100vw * (1 - var(--focus-x)) - var(--clear) - var(--edge));padding-left:calc(100vw * var(--focus-x) + var(--clear));text-align:right}.hero[data-name=left] .intro{--column:calc(100vw * var(--focus-x) - var(--clear) - var(--edge));padding-right:calc(100vw * (1 - var(--focus-x)) + var(--clear))}.intro h1{font-size:clamp(2.5rem, min(var(--column) / 8.2, 11svh), 8rem)}.intro p{font-size:clamp(1.125rem, min(var(--column) / 25, 3.4svh), 2rem)}}@media (aspect-ratio<1),(width<40rem),(height<30rem){body.home,.home main,.hero{flex-direction:column;display:flex}.home main,.hero{flex:1}.intro{order:-1;padding-block:clamp(1.25rem,4svh,2.5rem) 1.25rem}.hero picture{flex:1;min-height:22rem;position:relative}.hero img{object-position:calc(100% * var(--crop-focus-x)) calc(100% * var(--focus-y));mask-image:linear-gradient(#0000,#000 4rem)}}@media (width<40rem){.intro h1{font-size:11vw}.intro p{margin-top:.5em;font-size:1.0625rem}}.grid{grid-template-columns:[full-start] minmax(var(--gutter), 1fr) [wide-start margin-start text-start] minmax(0, var(--measure)) [text-end margin-end wide-end] minmax(var(--gutter), 1fr) [full-end];align-content:start;display:grid}@media (width>=56rem){.grid{grid-template-columns:[full-start] minmax(var(--gutter), 1fr) [margin-start] var(--margin) [margin-end] var(--gap) [text-start wide-start] var(--measure) [text-end] minmax(0, var(--extra)) [wide-end] minmax(var(--gutter), 1fr) [full-end]}}.grid>h1,.post header{border-bottom:var(--rule-heavy) solid var(--ink);grid-column:margin-start/wide-end;margin:clamp(2.5rem,7vw,5.5rem) 0 clamp(2rem,4vw,3.5rem);padding-bottom:clamp(1.25rem,3vw,2.5rem)}.grid>h1{font-family:var(--ui);letter-spacing:-.03em;font-size:clamp(3.25rem,1.75rem + 6vw,7.5rem);font-weight:700;line-height:.95}.post header{grid-template-columns:subgrid;font-family:var(--ui);align-items:baseline;display:grid}.post h1{text-wrap:balance;letter-spacing:-.02em;grid-column:wide;margin:0;font-size:clamp(2.125rem,1.25rem + 3vw,4rem);font-weight:700;line-height:1.02}.post .meta{color:var(--ink-2);margin-top:1rem;font-size:1rem;line-height:1.4}@media (width>=56rem){.post .meta{grid-area:1/margin;margin-top:0}}.tags{color:var(--ink-2);font-family:var(--ui);flex-wrap:wrap;gap:.25rem 1rem;margin-top:.375rem;font-size:1rem;line-height:1.4;display:flex}.tags a{text-underline-offset:.18em;text-decoration-thickness:1px}.tags a:hover{text-decoration-thickness:2px}@media (width>=56rem){.post .tags{flex-direction:column;align-items:start}}[data-content]{grid-column:full;grid-template-columns:subgrid;font-variant-numeric:proportional-nums;align-content:start;padding-bottom:6rem;display:grid}[data-content]>*{grid-column:text}:where([data-content]) :where(p,ul,ol,blockquote,figure,table){margin:0}[data-content]>*+*{margin-top:1em}[data-content] :is(p,li,figcaption,td){text-wrap:pretty}[data-content] a{color:var(--accent);text-underline-offset:.18em;overflow-wrap:anywhere;text-decoration-thickness:1px}[data-content] a:hover{text-decoration-thickness:2px}[data-content] u{font-family:var(--ui);font-size:.94em;font-weight:600;text-decoration:none}[data-content] :is(strong u,u strong){font-weight:700}:where([data-content]) :where(ul,ol){padding-left:1.4em}:where([data-content]) :where(li+li){margin-top:.4em}[data-content] li::marker{color:var(--ink-2);font-family:var(--ui)}[data-content] blockquote{padding-left:1.4em;font-size:.9em}[data-content] sub,[data-content] sup{line-height:0}[data-content]>figure,[data-content]>p:has(>img:only-child:not(.margin)),[data-content]>p:has(>picture:only-child){grid-column:wide;margin-block:2em}[data-content] picture{display:contents}[data-content] figure p{margin:0}[data-content] img{display:block}figcaption{max-width:var(--measure);color:var(--ink-2);margin-top:.75rem;font-size:.8em;line-height:1.45}@media (width>=56rem){[data-content]>figure{grid-column:margin-start/wide-end;grid-template-columns:subgrid;display:grid}[data-content]>figure>*{grid-area:1/wide}[data-content]>figure>figcaption{grid-column:margin;align-self:end;margin:0}}img.margin{float:right;width:35%;max-width:12rem;margin:.35em 0 .75em 1.25em}[data-content] table{border-collapse:separate;border-spacing:0;font-variant-numeric:lining-nums tabular-nums;width:max-content;max-width:100%;font-size:.85em;line-height:1.4;display:block;overflow-x:auto}[data-content]>table{grid-column:wide}[data-content] table:has(img){table-layout:fixed;width:100%;display:table}@media (width<56rem){[data-content]>table:not(:has(img)){padding-inline:var(--gutter);grid-column:full}}@media (width<40rem){[data-content] table:has(th:nth-child(7)){font-size:.75em}}th,td{text-align:start;vertical-align:top;padding:.3em .9em}[align=center]{text-align:center}[align=right],.num{text-align:right}:is(th,td):first-child{padding-left:0}:is(th,td):last-child{padding-right:0}@media (width<80rem){[data-content] table:has(th:nth-child(7)) :is(th,td):first-child{z-index:1;border-right:var(--rule-light) solid var(--hairline);background:var(--paper);box-shadow:calc(-1 * var(--gutter)) 0 var(--paper);position:sticky;left:0}}th{border-top:var(--rule-heavy) solid var(--ink);border-bottom:var(--rule-light) solid var(--ink);font-family:var(--ui);vertical-align:bottom;font-weight:700}tbody tr:first-child td{padding-top:.6em}tbody tr:last-child td{border-bottom:var(--rule-heavy) solid var(--ink);padding-bottom:.6em}td img{margin-block:.25em}[data-content] [style*=\#ff6600]{color:var(--alarm)!important}.page .label{font-family:var(--ui);font-size:1rem;font-weight:700;line-height:1.35}.page .caps{letter-spacing:.08em;font-size:.9375rem}span.label{margin-bottom:.4rem;display:block}span.label+br,strong:has(>span.label:only-child)+br{display:none}.page [data-content]>:where(p.label,p:has(>strong>span.label)){margin-top:3rem}.page [data-content]>:where(p.label)+*{margin-top:.75rem}.page [data-content]>:first-child{margin-top:0}.page [data-content]>p.label:has(>img.margin){flex-direction:row-reverse;justify-content:space-between;align-items:end;gap:1.25rem;display:flex}.page [data-content]>p.label>img.margin{margin:0}@media (width>=56rem){.page [data-content]>p.label{grid-column:margin}.page [data-content]>:where(p.label)+*{margin-top:3rem}.page [data-content]>:where(p.label:first-child)+*{margin-top:0}.page [data-content]>:where(p.label:has(+:is(p,ol,ul:not(.gallery),.publications)),p.label+:is(p,ol,ul:not(.gallery),.publications)){align-self:baseline}.page [data-content]>p.label:has(>img.margin){flex-direction:column-reverse;align-self:start;align-items:start;gap:1.5rem;display:flex}.page [data-content]>p:has(>strong>span.label),.page [data-content]>p:has(>img.margin){position:relative}.page span.label,.page [data-content]>p:not(.label)>img.margin{top:.3rem;right:calc(100% + var(--gap));width:var(--margin);margin:0;position:absolute}.page [data-content]>p:not(.label)>img.margin{float:none;max-width:none;top:2.75rem}.page [data-content]>p.label>img.margin{float:none;width:100%;max-width:none;margin:0}}.publications fieldset{border:0;flex-wrap:wrap;align-items:end;gap:.75rem 1.25rem;min-inline-size:0;margin:0;padding:0;display:flex}.publications label{font:600 .875rem/1.2 var(--ui);gap:.3rem;display:grid}.publications :is(input,select,button){border:var(--rule-light) solid var(--ink-2);background:var(--paper);min-block-size:2.25rem;color:var(--ink);font:400 1rem/1.25 var(--ui);border-radius:0;padding:.25rem .5rem}.publications-search{flex:10rem}.publications-count{color:var(--ink-2);font:400 1rem/1.4 var(--ui);margin:1rem 0 0}.publications-list{margin:1.5rem 0 0;padding:0;list-style:none}.publications-list>li{grid-template-columns:2.75em minmax(0,1fr);align-items:baseline;display:grid}.publications-list>li[hidden]{display:none}.publications-list>li+li{margin-top:1.25em}.publications-list>li>*{grid-column:2;margin:0}.publications-list .publications-year{color:var(--ink-2);font:600 .8em/1 var(--ui);font-variant-numeric:tabular-nums;grid-area:1/1}.publications-list .publications-links{font:400 .85em/1.4 var(--ui);flex-wrap:wrap;align-items:baseline;gap:.25rem 1.25rem;margin-top:.35rem;display:flex}.publications-links>span{color:var(--ink-2)}.publications-links details[open]{flex-basis:100%}.publications summary{inline-size:fit-content;color:var(--accent);cursor:pointer}.publications pre{border-block:var(--rule-light) solid var(--hairline);white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0 0;padding:.5rem 0;font:.8125rem/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.publications button{cursor:pointer;margin-top:.5rem;font-size:.875rem;font-weight:600}.publications-copied{color:var(--ink-2);margin-left:.75rem}.publications-list .publications-note{color:var(--ink-2);margin-top:.35rem;font-size:.9em}@media (scripting:none){.publications-controls,.publications-copy,.publications-copied{display:none}.publications-count{margin-top:0}}.page [data-content]:has(+.contact){padding-bottom:0}.contact{grid-column:text;margin:3rem 0 0;padding-bottom:6rem}.contact p{margin:0}.contact-field{gap:.3rem;display:grid}.contact-field+.contact-field{margin-top:1.25rem}.contact label{font:600 .875rem/1.2 var(--ui)}.contact :is(input,textarea,button){border:var(--rule-light) solid var(--ink-2);background:var(--paper);min-block-size:2.5rem;color:var(--ink);font:400 1rem/1.4 var(--ui);border-radius:0;padding:.4rem .5rem}.contact textarea{resize:vertical;min-block-size:12rem}.contact [aria-invalid=true]{border-color:var(--alarm)}.contact button{cursor:pointer;margin-top:1.5rem;padding-inline:1.25rem;font-weight:600}.contact :is(.contact-status,.contact-result){font:400 1rem/1.4 var(--ui);margin-top:1rem}.contact-result:not(:target){display:none}.index{grid-column:margin-start/wide-end;grid-template-columns:subgrid;font-family:var(--ui);margin:0 0 6rem;padding:0;list-style:none;display:grid}.index li{grid-column:1/-1;grid-template-columns:subgrid;align-items:baseline;padding-block:1.25rem;display:grid}.index li:first-child{padding-top:0}.index li+li{border-top:var(--rule-light) solid var(--hairline)}.index li>a{text-wrap:balance;letter-spacing:-.01em;grid-column:wide;font-size:clamp(1.375rem,1rem + 1.2vw,2rem);font-weight:700;line-height:1.15;text-decoration:none}.index li>a:hover{text-underline-offset:.15em;text-decoration:underline 2px}.index time{color:var(--ink-2);margin-top:.5rem;font-size:1rem}.index .tags{grid-column:wide}@media (width>=56rem){.index time{grid-area:1/margin;margin-top:0}.index .tags{margin-top:.5rem}}.gallery{columns:18rem 3;grid-column:wide;column-gap:.5rem;margin:1.5rem 0 0;padding:0;list-style:none}.gallery li{break-inside:avoid;margin:0 0 .5rem}.gallery img{width:100%}
