@font-face{font-family:Geist;src:url(/fonts/geist-sans-variable.woff2) format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono-variable.woff2) format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Geist Fallback;src:local("Arial");ascent-override:85.83%;descent-override:20.53%;line-gap-override:9.33%;size-adjust:107.19%}@font-face{font-family:Geist Mono Fallback;src:local("Courier New");ascent-override:75.98%;descent-override:24.59%;line-gap-override:0%;size-adjust:106.25%}:root{color-scheme:light;--paper:#f6f4ee;--surface:#ffffff;--ink:#14171a;--ink-2:#474d54;--ink-3:#636a71;--line:rgb(20 23 26/0.12);--control-border:rgb(20 23 26/0.5);--accent:#2b3fe6;--accent-hover:#1f30c4;--on-accent:#ffffff;--error:#b3261e;--success:#1b7a4b;--hl:rgb(43 63 230/0.2);--data-1:var(--accent);--data-2:var(--ink-2);--data-3:#7583e4;--font-sans:"Geist","Geist Fallback",ui-sans-serif,system-ui,sans-serif;--font-mono:"Geist Mono","Geist Mono Fallback",ui-monospace,monospace;--fs-label:0.75rem;--fs-small:0.875rem;--fs-ui:1rem;--fs-body:1.0625rem;--fs-lede:clamp(1.1875rem,1.1rem + 0.35vw,1.375rem);--fs-h3:clamp(1.5rem,1.25rem + 1vw,2.125rem);--fs-h2:clamp(2.125rem,1.4rem + 2.6vw,3.5rem);--fs-h1:clamp(2.4rem,1.3rem + 3.1vw,4.15rem);--fs-num:clamp(1.75rem,1.4rem + 1.2vw,2.5rem);--fs-display:clamp(2.75rem,0.9rem + 6.6vw,7.5rem);--fs-address:clamp(1.375rem,1rem + 1.4vw,1.875rem);--fs-signature:clamp(3.5rem,13.2vw,12.5rem);--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--space-9:6rem;--container:75rem;--gutter:clamp(1.25rem,4vw,2.5rem);--col-gap:clamp(2rem,6vw,5rem);--section-y:clamp(4.5rem,9vw,8rem);--header-h:4rem;--radius:6px;--dur-1:150ms;--dur-2:300ms;--dur-3:480ms;--dur-4:900ms;--dur-5:1700ms;--fast:var(--dur-1);--med:var(--dur-2);--ease:cubic-bezier(0.22,1,0.36,1);--ease-inout:cubic-bezier(0.65,0,0.35,1);--ease-spring:cubic-bezier(0.34,1.56,0.64,1);--stagger:50ms;interpolate-size:allow-keywords}.night,.site-header[data-night]{color-scheme:dark;--paper:#101317;--surface:#171b20;--ink:#f3f1ea;--ink-2:#b9bdc2;--ink-3:#8e949b;--line:rgb(243 241 234/0.14);--control-border:rgb(243 241 234/0.45);--accent:#a5b0ff;--accent-hover:#c4ccff;--on-accent:#0e1230;--error:#ff9a92;--success:#7fdda8;--hl:rgb(165 176 255/0.3)}.night{background:var(--paper);color:var(--ink)}*,:after,:before{box-sizing:border-box}*{margin:0}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + var(--space-5));text-size-adjust:100%}body{min-width:300px;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--fs-body);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip}h1,h2,h3,h4{font-weight:500;line-height:1.1;letter-spacing:-.03em;text-wrap:balance}p{text-wrap:pretty}cite,em,i{font-style:normal}a{color:inherit;text-decoration:none}ol,ul{padding:0;list-style:none}canvas,img,svg{display:block;max-width:100%}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:0;padding:0}button:disabled{cursor:not-allowed}::selection{background:var(--accent);color:var(--on-accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}main:focus{outline:none}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.skip-link{position:fixed;top:var(--space-3);left:var(--space-3);z-index:100;padding:var(--space-3) var(--space-4);background:var(--ink);color:var(--paper);font-size:var(--fs-small);font-weight:500;border-radius:var(--radius);transform:translateY(-200%)}.skip-link:focus{transform:none}.container{width:100%;max-width:calc(var(--container) + var(--gutter) * 2);margin-inline:auto;padding-inline:var(--gutter)}.section{padding-block:var(--section-y)}.hero+.section,.section+.section{border-top:1px solid var(--line)}.section.night{border-top:0}.split{align-items:start}.section-head,.split{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);grid-column-gap:var(--col-gap);column-gap:var(--col-gap)}.section-head{align-items:end;margin-bottom:clamp(2.5rem,5vw,4rem)}.section-head .eyebrow{grid-column:1/-1}.section-head__note{max-width:28rem;color:var(--ink-2)}h2{font-size:var(--fs-h2);letter-spacing:-.035em}.eyebrow,.subhead{display:block;margin-bottom:var(--space-5);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.eyebrow__no{color:var(--ink)}.eyebrow__no:after{content:"";display:inline-block;width:1.5rem;height:1px;margin-inline:.75rem;vertical-align:middle;background:var(--control-border)}.num{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.03em}.hl{padding-inline:.04em;background:linear-gradient(var(--hl),var(--hl)) no-repeat;background-position:0 88%;background-size:100% .42em;color:inherit;-webkit-box-decoration-break:clone;box-decoration-break:clone}.odo{display:inline-block}.odo__track{display:inline-flex;-webkit-user-select:none;-moz-user-select:none;user-select:none}.odo__char{display:block;height:1.1em;line-height:1.1em}.odo__digit{overflow:hidden}.odo__strip{display:block;transform:translateY(calc((10 + var(--d)) * -1.1em))}.odo__strip>span{display:block;height:1.1em}.prose{display:grid;grid-gap:var(--space-4);gap:var(--space-4);color:var(--ink-2)}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:3rem;padding:0 1.25rem;border:1px solid transparent;border-radius:var(--radius);font-size:var(--fs-ui);font-weight:500;line-height:1;white-space:nowrap;transition:background-color var(--fast) var(--ease),border-color var(--fast) var(--ease),color var(--fast) var(--ease)}.button:active{translate:0 1px}.button--primary{background:var(--accent);color:var(--on-accent)}.button--primary:active,.button--primary:hover{background:var(--accent-hover)}.button--primary:disabled{opacity:.7}.button--secondary{border-color:var(--ink);background:linear-gradient(var(--ink),var(--ink)) no-repeat 0 0 /0 100%;color:var(--ink)}.button--secondary:active,.button--secondary:hover{background-size:100% 100%;color:var(--paper)}.button__glyph,.button__icon,.link__icon{flex-shrink:0;transition:transform var(--fast) var(--ease)}.button:hover .button__icon,.link:hover .link__icon{transform:translate(2px,-2px)}.link{display:inline-flex;align-items:center;gap:.3em;min-height:2rem;font-weight:500;text-decoration:underline;-webkit-text-decoration-color:var(--control-border);text-decoration-color:var(--control-border);text-decoration-thickness:1px;text-underline-offset:.28em;transition:color var(--fast) var(--ease),-webkit-text-decoration-color var(--fast) var(--ease);transition:color var(--fast) var(--ease),text-decoration-color var(--fast) var(--ease);transition:color var(--fast) var(--ease),text-decoration-color var(--fast) var(--ease),-webkit-text-decoration-color var(--fast) var(--ease)}.link:active,.link:hover{color:var(--accent);-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor}@media (pointer:coarse){.link{min-height:2.75rem}}.link:hover .link__icon--up{transform:translateY(-2px)}.text-button{display:inline-flex;align-items:center;gap:.4em;min-height:2.75rem;padding-inline:var(--space-2);margin-block:-.5rem;border-radius:var(--radius);font-size:var(--fs-small);font-weight:500;white-space:nowrap;transition:color var(--fast) var(--ease)}.text-button:hover{color:var(--accent)}.text-button:active{translate:0 1px}.spinner{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.site-header{position:-webkit-sticky;position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--paper) 90%,transparent);color:var(--ink);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid transparent;transition:background-color var(--med) var(--ease),color var(--med) var(--ease),border-color var(--med) var(--ease)}.site-header[data-scrolled]{border-bottom-color:var(--line)}.site-header__inner{display:flex;align-items:center;gap:var(--space-5);height:var(--header-h)}.brand{display:inline-flex;align-items:center;gap:var(--space-3);min-height:2.75rem;min-width:2.75rem;padding-inline:var(--space-2);margin-left:calc(var(--space-2) * -1);margin-right:auto;font-size:var(--fs-ui);font-weight:600;letter-spacing:-.02em;white-space:nowrap}.brand-mark{width:1.75rem;height:1.75rem}.brand-mark__point{fill:var(--accent);transform-box:fill-box;transform-origin:center;transition:scale var(--fast) var(--ease)}.brand:hover .brand-mark__point{scale:1.45}.nav{display:flex;gap:var(--space-1)}.nav a{display:inline-flex;align-items:baseline;gap:.4em;min-height:2.75rem;padding:0 var(--space-3);font-size:var(--fs-ui);line-height:2.75rem;color:var(--ink-2);transition:color var(--fast) var(--ease)}.nav__no{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-3)}.nav a:hover{color:var(--ink)}.nav a[aria-current]{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor;text-decoration-thickness:2px;text-underline-offset:.5em}.hero{padding-top:clamp(2rem,4.5vw,4rem);padding-bottom:clamp(3.5rem,7vw,6rem)}.hero__grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);grid-column-gap:var(--col-gap);column-gap:var(--col-gap);align-items:center}.hero h1{font-size:var(--fs-h1);line-height:1.04;letter-spacing:-.04em}.status{display:inline-flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);font-size:var(--fs-small);color:var(--ink-2)}.status:before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:var(--success)}.hero__lede{max-width:34rem;margin-top:var(--space-6);font-size:var(--fs-lede);line-height:1.5;color:var(--ink-2)}.hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3) var(--space-5);margin-top:var(--space-7)}.keyfigures{position:relative;grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:var(--space-6);column-gap:var(--space-6);margin-top:clamp(2.5rem,5vw,4rem)}.keyfigures:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--line);transform-origin:left}@media (min-width:40rem){.keyfigures>li:not(:first-child){padding-left:var(--space-6);border-left:1px solid var(--line)}}.keyfigure{display:block;padding-block:var(--space-5) 0}.keyfigure__value{display:flex;align-items:flex-start;gap:.2rem;font-size:var(--fs-num);line-height:1.1;transition:color var(--fast) var(--ease)}.keyfigure__note{font-size:var(--fs-label);font-weight:500;line-height:1;letter-spacing:0;color:var(--ink-3)}.keyfigure__label{display:block;max-width:22rem;margin-top:var(--space-2);font-size:var(--fs-small);line-height:1.45;color:var(--ink-2);text-decoration:underline;-webkit-text-decoration-color:var(--control-border);text-decoration-color:var(--control-border);text-decoration-thickness:1px;text-underline-offset:.28em;transition:-webkit-text-decoration-color var(--fast) var(--ease);transition:text-decoration-color var(--fast) var(--ease);transition:text-decoration-color var(--fast) var(--ease),-webkit-text-decoration-color var(--fast) var(--ease)}.keyfigure:hover .keyfigure__value{color:var(--accent)}.keyfigure:hover .keyfigure__label{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.exhibit{container-type:inline-size}.exhibit>.plot,.exhibit>svg,.hero-figure__stage{background:color-mix(in srgb,var(--surface) 65%,var(--paper));border:1px solid var(--line);border-radius:var(--radius)}.exhibit>.plot,.exhibit>svg{padding:var(--space-3)}.exhibit svg{width:100%;height:auto;aspect-ratio:500/360}.exhibit__caption{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-top:var(--space-3);font-size:var(--fs-small);line-height:1.45;color:var(--ink-3)}.plot{position:relative;overflow:hidden;--tx:0.75rem;--ty:calc(-100% - 0.5rem)}@media (hover:hover) and (pointer:fine){.plot{cursor:crosshair}}.plot__readout,.plot__rule{position:absolute;pointer-events:none;opacity:0;transition:opacity var(--fast) var(--ease)}.plot__rule{background:var(--ink)}.plot__rule--x{left:0;right:0;top:var(--cy,50%);height:1px}.plot__rule--y{top:0;bottom:0;left:var(--cx,50%);width:1px}.plot__readout{left:var(--cx,50%);top:var(--cy,50%);padding:.2rem .45rem;border-radius:var(--radius);background:var(--ink);color:var(--paper);font-family:var(--font-mono);font-size:var(--fs-label);line-height:1.4;white-space:pre;transform:translate(var(--tx),var(--ty))}.plot[data-tracking] .plot__rule{opacity:.2}.plot[data-tracking] .plot__readout{opacity:1}.plot[data-tracking=left]{--tx:calc(-100% - 0.75rem)}.plot[data-side=below]{--ty:0.6rem}.plot__dot{position:absolute;left:var(--cx,50%);top:var(--cy,50%);width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;background:var(--ink);pointer-events:none;opacity:0;transition:opacity var(--fast) var(--ease)}.plot[data-mode=series][data-tracking] .plot__dot{opacity:1}.hero-figure__stage{position:relative;isolation:isolate;overflow:hidden;aspect-ratio:3/2}.hero-figure__stage:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:24px 24px;background-position:50%;-webkit-mask-image:radial-gradient(ellipse 60% 60% at 50% 50%,#000 45%,transparent 100%);mask-image:radial-gradient(ellipse 60% 60% at 50% 50%,#000 45%,transparent 100%)}.exhibit__no{margin-right:.75em;font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--ink)}.hero-figure__stage canvas{position:absolute;inset:0;width:100%;height:100%}.hero-figure__fallback{display:none;position:absolute;inset:0;place-items:center}.hero-figure__stage .hero-figure__fallback svg{width:100%;height:100%}.hero-figure__stage .hero-figure__fallback .fg-label{font-size:22px}@media (hover:hover) and (pointer:fine){.hero-figure__stage{cursor:crosshair}}.hero-figure__caption{flex-direction:column;align-items:stretch;gap:var(--space-2)}.hero-figure__controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3);padding-top:var(--space-1)}.hero-figure__step{display:inline-flex;align-items:center;gap:.35em;min-height:2rem;padding-inline:var(--space-1);font-size:var(--fs-label);font-weight:500;color:var(--ink-3);text-decoration:underline;-webkit-text-decoration-color:transparent;text-decoration-color:transparent;text-decoration-thickness:2px;text-underline-offset:.45em;transition:color var(--fast) var(--ease),-webkit-text-decoration-color var(--fast) var(--ease);transition:color var(--fast) var(--ease),text-decoration-color var(--fast) var(--ease);transition:color var(--fast) var(--ease),text-decoration-color var(--fast) var(--ease),-webkit-text-decoration-color var(--fast) var(--ease)}.hero-figure__step:hover{color:var(--ink)}.hero-figure__step[aria-pressed=true]{color:var(--ink);-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.hero-figure__replay{margin-left:auto;font-size:var(--fs-label)}@media (pointer:coarse){.hero-figure__step{min-height:2.75rem}}.fg-grid{stroke:var(--line);stroke-width:1}.fg-axis{stroke:var(--control-border);stroke-width:1}.fg-link{fill:none;stroke:var(--ink-3);stroke-width:1;stroke-dasharray:3 4}.fg-panel{fill:var(--surface);stroke:var(--control-border);stroke-width:1}.fg-label{font-family:var(--font-mono);font-size:var(--fg-label);fill:var(--ink-3)}.fg-label--strong{font-weight:600}.fg-label--sans,.fg-label--strong{font-family:var(--font-sans);fill:var(--ink-2)}.fg-label--sans{font-weight:500}.fg-label--on-accent{fill:var(--on-accent)}.exhibit svg{--fg-label:11.5px}@container (width < 35.6rem){.exhibit svg{--fg-label:12.5px}}@container (width < 32.6rem){.exhibit svg{--fg-label:14px}}@container (width < 28.9rem){.exhibit svg{--fg-label:16px}}@container (width < 25rem){.exhibit svg{--fg-label:18.5px}}@container (width < 22.1rem){.exhibit svg{--fg-label:21px}}@container (width < 19.7rem){.exhibit svg{--fg-label:27px}}.project{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);grid-column-gap:var(--col-gap);column-gap:var(--col-gap);align-items:start;padding-block:clamp(3rem,7vw,6rem);border-top:1px solid var(--line)}@media (min-width:56rem){.project__figure{position:-webkit-sticky;position:sticky;top:calc(var(--header-h) + var(--space-6))}}.project:nth-child(2n){grid-template-columns:minmax(0,5fr) minmax(0,7fr)}.project:nth-child(2n) .project__figure{grid-column:2;grid-row:1}.project:nth-child(2n) .project__body{grid-column:1;grid-row:1}.project__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid var(--line)}.project__index{display:inline-flex;align-items:baseline;gap:var(--space-2);font-family:var(--font-mono)}.project__no{font-size:var(--fs-num);font-weight:500;line-height:1;letter-spacing:-.04em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.project__of{letter-spacing:.06em}.project__meta,.project__of{font-size:var(--fs-label);font-weight:500;color:var(--ink-3)}.project__meta{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.project__title{margin-top:var(--space-5);font-size:var(--fs-h3);letter-spacing:-.03em}.project__thesis{margin-top:var(--space-4);font-size:var(--fs-lede);line-height:1.45;color:var(--ink-2)}.project__stack{margin-top:var(--space-4);font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.02em;line-height:1.5;color:var(--ink-3)}.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--space-5);gap:var(--space-5);margin-top:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--line)}.stat{display:flex;flex-direction:column-reverse;justify-content:flex-end;gap:var(--space-2)}.stat dd{font-family:var(--font-mono);font-size:var(--fs-num);line-height:1.1;letter-spacing:-.03em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat dt{font-size:var(--fs-small);line-height:1.45;color:var(--ink-2)}.project__links{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5);margin-top:var(--space-6)}.method{margin-top:var(--space-5);border-top:1px solid var(--line)}.method>summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:3.5rem;font-size:var(--fs-ui);font-weight:500;cursor:pointer;list-style:none}.method__count{margin-left:auto;font-size:var(--fs-label);font-weight:400;color:var(--ink-3)}.method>summary::-webkit-details-marker{display:none}.method>summary:after{content:"";flex-shrink:0;width:.75rem;height:.75rem;background:linear-gradient(currentColor,currentColor) 50% /100% 1.5px no-repeat,linear-gradient(currentColor,currentColor) 50% /1.5px 100% no-repeat;color:var(--ink-3);transition:color var(--fast) var(--ease)}.method[open]>summary:after{background-size:100% 1.5px,1.5px 0}.method>summary:active:after,.method>summary:hover:after{color:var(--accent)}.method__body{display:grid;grid-gap:var(--space-4);gap:var(--space-4);padding-top:var(--space-2);padding-bottom:var(--space-3);font-size:var(--fs-ui);color:var(--ink-2)}.method__body h4{margin-bottom:var(--space-2);font-size:var(--fs-small);font-weight:600;letter-spacing:0;color:var(--ink)}.method__steps{counter-reset:step;display:grid;grid-gap:var(--space-3);gap:var(--space-3)}.method__steps li{counter-increment:step;display:grid;grid-template-columns:2rem minmax(0,1fr)}.method__steps li:before{content:counter(step,decimal-leading-zero);font-family:var(--font-mono);font-size:var(--fs-label);line-height:2.2;color:var(--ink-3)}@media (prefers-reduced-motion:no-preference){.method::details-content{block-size:0;overflow:clip;transition:block-size .32s var(--ease),content-visibility .32s allow-discrete}.method[open]::details-content{block-size:auto}}.projects__foot{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);grid-column-gap:var(--col-gap);column-gap:var(--col-gap);grid-row-gap:var(--space-6);row-gap:var(--space-6);align-items:end;padding-top:var(--space-6);border-top:1px solid var(--line)}.sources .subhead{margin-bottom:var(--space-3)}.sources__list{display:grid;grid-gap:var(--space-2);gap:var(--space-2)}.sources__list li{display:grid;grid-template-columns:1.25rem minmax(0,1fr);grid-gap:var(--space-3);gap:var(--space-3);font-size:var(--fs-small);line-height:1.5;color:var(--ink-2)}.sources__no{font-size:var(--fs-label);line-height:calc(var(--fs-small) * 1.5)}.sources__detail,.sources__no{color:var(--ink-3)}.projects__more{justify-self:end}.about__prose{max-width:34rem;margin-top:var(--space-6);font-size:var(--fs-lede);line-height:1.55}.facts{margin-top:calc(var(--fs-label) * 1.6 + var(--space-5));border-top:1px solid var(--line)}.facts>div{display:grid;grid-template-columns:7rem minmax(0,1fr);grid-gap:var(--space-4);gap:var(--space-4);align-items:baseline;padding-block:var(--space-4);border-bottom:1px solid var(--line)}.facts dt{font-size:var(--fs-small);color:var(--ink-3)}.facts dd{font-size:var(--fs-ui);line-height:1.5}.facts dd span{display:block;font-size:var(--fs-small);color:var(--ink-3)}.facts__item+.facts__item{margin-top:var(--space-3)}.subsection{margin-top:clamp(4rem,8vw,6rem);padding-top:var(--space-5);border-top:1px solid var(--line)}.practice{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--space-6) var(--col-gap);gap:var(--space-6) var(--col-gap)}.practice li{display:flex;flex-direction:column}.practice__no{margin-bottom:var(--space-3);font-size:var(--fs-label);font-weight:500;letter-spacing:.08em;color:var(--ink-3)}.practice h4{font-size:var(--fs-body);font-weight:600;letter-spacing:-.01em;line-height:1.3}.practice p{margin-top:var(--space-2);font-size:var(--fs-ui);color:var(--ink-2)}.practice p.practice__evidence{margin-top:auto;padding-top:var(--space-4);font-family:var(--font-mono);font-size:var(--fs-label);line-height:1.45;color:var(--ink-3)}.credentials li{display:grid;grid-template-columns:minmax(0,1fr) 5.5rem 9rem;grid-column-gap:var(--space-5);column-gap:var(--space-5);align-items:baseline;padding-block:var(--space-4);border-top:1px solid var(--line)}.credentials li:last-child{border-bottom:1px solid var(--line)}.credentials__title{font-size:var(--fs-body);font-weight:500;letter-spacing:-.01em}.credentials__date,.credentials__issuer{font-size:var(--fs-small);color:var(--ink-3)}.credentials__date{text-align:right}.credentials__action{justify-self:end;font-size:var(--fs-small)}.contact{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);grid-column-gap:var(--col-gap);column-gap:var(--col-gap);align-items:start}.contact__head{grid-column:1/-1;margin-bottom:clamp(3rem,6vw,5.5rem)}.contact__intro{grid-column:1}.contact .form{grid-column:2}.contact__title{font-size:var(--fs-display);line-height:.98;letter-spacing:-.05em}.query{padding:var(--space-4) var(--space-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);font-family:var(--font-mono);font-size:var(--fs-small);line-height:1.75;color:var(--ink-2)}.query__comment,.query__kw{color:var(--ink-3)}.query__where{display:flex;flex-wrap:wrap;align-items:center;column-gap:.6em}.query__pick{position:relative;display:inline-flex;align-items:center;max-width:100%}.query__pick select{-webkit-appearance:none;-moz-appearance:none;appearance:none;max-width:100%;min-height:2rem;padding:0 1.4rem 0 0;border:0;border-bottom:1px dashed var(--control-border);border-radius:0;background:transparent;color:var(--ink);font:inherit;cursor:pointer;transition:color var(--fast) var(--ease),border-color var(--fast) var(--ease)}.query__pick select:hover{color:var(--accent);border-bottom-color:currentColor}.query__pick option{background:var(--surface);color:var(--ink)}.query__chevron{position:absolute;right:0;color:var(--ink-3);pointer-events:none}@media (pointer:coarse){.query__pick select{min-height:2.75rem}}.query__result{display:grid;grid-gap:var(--space-1);gap:var(--space-1);max-width:28rem;margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--line);font-family:var(--font-sans);font-size:var(--fs-lede);line-height:1.45;color:var(--ink)}.query__rows{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.04em;color:var(--success)}.contact__lede{max-width:28rem;font-size:var(--fs-body);line-height:1.5;color:var(--ink-2)}.contact__email,.contact__lede{margin-top:var(--space-6)}.localtime{min-height:1.5em;margin-top:var(--space-3);font-size:var(--fs-small);line-height:1.5;color:var(--ink-3)}.localtime__dot{display:inline-block;width:.5rem;height:.5rem;margin-right:.6em;border-radius:50%;vertical-align:.05em;background:var(--ink-3)}.localtime__dot[data-awake]{background:var(--success)}.contact__links{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-5);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--line);font-size:var(--fs-ui)}.copy-email{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-4)}.copy-email__address{display:inline-flex;align-items:center;min-height:2.75rem;font-size:var(--fs-address);font-weight:500;letter-spacing:-.03em;text-decoration:underline;-webkit-text-decoration-color:var(--control-border);text-decoration-color:var(--control-border);text-decoration-thickness:1px;text-underline-offset:.25em;overflow-wrap:anywhere;transition:color var(--fast) var(--ease),-webkit-text-decoration-color var(--fast) var(--ease);transition:color var(--fast) var(--ease),text-decoration-color var(--fast) var(--ease);transition:color var(--fast) var(--ease),text-decoration-color var(--fast) var(--ease),-webkit-text-decoration-color var(--fast) var(--ease)}.copy-email__address:hover{color:var(--accent);-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor}.form{grid-gap:var(--space-5)}.form,.form__row{display:grid;gap:var(--space-5)}.form__row{grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--space-5)}.field{display:grid;grid-gap:var(--space-2);gap:var(--space-2)}.field__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-2) var(--space-4)}.field label{font-size:var(--fs-small);font-weight:500;color:var(--ink-2)}.field__counter{font-family:var(--font-mono);font-weight:400;color:var(--ink-3)}.field input,.field textarea{width:100%;padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--control-border);border-radius:var(--radius);font-size:var(--fs-body);line-height:1.45;transition:border-color var(--fast) var(--ease)}.field textarea{resize:vertical;min-height:9rem}.field input::placeholder,.field textarea::placeholder{color:var(--ink-3);opacity:1}.field input:hover,.field textarea:hover{border-color:var(--ink)}.field input:focus-visible,.field textarea:focus-visible{outline-offset:2px}.field [aria-invalid=true]{border-color:var(--error)}.form[aria-busy=true] .field input,.form[aria-busy=true] .field textarea{opacity:.6;cursor:not-allowed}.form[aria-busy=true] .field input:hover,.form[aria-busy=true] .field textarea:hover{border-color:var(--control-border)}.field__error,.form__error{font-size:var(--fs-small);color:var(--error)}.form__error a{text-decoration:underline;text-underline-offset:.2em}.form__success{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--fs-small);color:var(--success)}.form__foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4) var(--space-5)}.form__status{flex:1 1 16rem}.form__status:empty{display:none}.site-footer{border-top:1px solid var(--line)}.signature{padding-top:clamp(4rem,9vw,7.5rem);padding-bottom:var(--space-6)}.signature__text{font-size:var(--fs-signature);font-weight:600;line-height:.9;letter-spacing:-.045em;color:var(--ink);opacity:.4}.signature__canvas{display:none;width:100%;font-family:var(--font-sans);touch-action:pan-y;-webkit-tap-highlight-color:transparent}.signature[data-ready] .signature__text{display:none}.signature[data-ready] .signature__canvas{display:block}.site-footer__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-5);padding-block:var(--space-5);font-size:var(--fs-small);color:var(--ink-3)}.site-footer__thanks{color:var(--ink-2)}.status-page{display:grid;align-items:center;min-height:100svh;padding-block:var(--space-8)}.status-page h1{margin-top:var(--space-2);font-size:var(--fs-h1);line-height:1.04;letter-spacing:-.04em}.status-page p:not(.eyebrow){max-width:34rem;margin-top:var(--space-5);font-size:var(--fs-lede);line-height:1.5;color:var(--ink-2)}.status-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4) var(--space-5);margin-top:var(--space-6)}@media (min-width:56rem) and (max-height:50rem){.hero{padding-top:var(--space-5)}.keyfigures{margin-top:var(--space-6)}}@media (max-width:56rem){.contact,.hero__grid,.project,.project:nth-child(2n),.projects__foot,.section-head,.split{grid-template-columns:minmax(0,1fr)}.project:nth-child(2n) .project__body,.project:nth-child(2n) .project__figure{grid-column:auto;grid-row:auto}.project__figure{position:static}.contact .form,.contact__intro{grid-column:auto}.projects__more{justify-self:start}.section-head{row-gap:var(--space-4)}.hero__grid{row-gap:var(--space-7)}.keyfigures{order:1;margin-top:0}.hero__figure{order:2}.facts{margin-top:var(--space-7)}.project{row-gap:var(--space-6);padding-block:var(--space-7)}.contact{row-gap:var(--space-8)}.practice{grid-template-columns:minmax(0,1fr);gap:var(--space-5)}}@media (max-width:40rem){:root{--header-h:3.5rem}.site-header__inner{gap:var(--space-3)}.nav a{padding:0 var(--space-2)}.nav__no{display:none}.keyfigures{grid-template-columns:minmax(0,1fr)}.keyfigures>li:not(:first-child){padding-left:0;border-left:0}.keyfigure{padding-block:var(--space-4);border-bottom:1px solid var(--line)}.keyfigure:last-child{border-bottom:0}.form__row{grid-template-columns:minmax(0,1fr)}.form__foot .button,.hero__actions .button,.projects__more .button{width:100%}.projects__more{justify-self:stretch}.credentials li{grid-template-columns:minmax(0,1fr) auto;row-gap:var(--space-1)}.credentials__date{grid-column:1;grid-row:2;text-align:left}.credentials__action{grid-column:2;grid-row:1/span 2;align-self:center}.facts>div{grid-template-columns:minmax(0,1fr);gap:var(--space-1)}.exhibit__caption{flex-direction:column;align-items:flex-start;gap:var(--space-1)}}@media (max-width:26rem){.brand__name{display:none}}@media (prefers-reduced-motion:no-preference){.hero__enter{animation:enter var(--dur-4) var(--ease) both}.hero .status{animation-duration:.52s}.hero .status:before{animation:dot-pop .56s var(--ease-spring) .2s both,live 2.8s ease-out .9s infinite}.hero__copy>h1{animation:h-set .82s var(--ease) .12s both}.hero__lede{animation-delay:.3s}.hero__actions{animation-delay:.38s}.hero__figure{animation-delay:.43s}.hero .hl{animation:hl-sweep 1s var(--ease) .72s both}.keyfigures:before{animation:rule-draw .64s var(--ease) .52s both}.keyfigures>li{animation:enter .7s var(--ease) both;animation-delay:calc(.54s + var(--i, 0) * 90ms)}.hero .odo__strip{animation:odo-roll var(--dur-5) var(--ease) both;animation-delay:calc(.68s + var(--i, 0) * 90ms + var(--p) * 50ms)}.brand-mark path{stroke-dasharray:100;animation:draw-in .9s var(--ease-inout) 60ms both}.brand-mark__point{transform-box:fill-box;transform-origin:center;animation:dot-pop .48s var(--ease-spring) .88s both}.status:before{animation:live 2.8s ease-out infinite}.button--secondary{transition:background-size var(--med) var(--ease),color var(--med) var(--ease)}.method>summary:after{transition:background-size var(--dur-2) var(--ease),color var(--fast) var(--ease)}.method::details-content{box-sizing:border-box;block-size:0;overflow:hidden;transition:block-size var(--dur-2) var(--ease),content-visibility var(--dur-2) allow-discrete}.method[open]::details-content{block-size:auto;content-visibility:visible}.method[open]>.method__body{animation:method-in var(--dur-2) var(--ease) 60ms both}@keyframes method-in{0%{opacity:0;transform:translateY(6px)}}[data-reveal]:not([data-pending]){transition:opacity .8s var(--ease),transform .9s var(--ease)}[data-reveal][data-pending]{opacity:0;transform:translateY(1.5rem)}[data-reveal]:not([data-pending]) .hl{transition:background-size 1s var(--ease) .35s}[data-pending] .hl{background-size:0 .42em}[data-reveal]:not([data-pending]) .odo__strip{transition:transform 1.7s cubic-bezier(.16,1,.3,1);transition-delay:calc(.35s + var(--p) * 70ms)}[data-pending] .odo__strip{transform:translateY(0)}[data-reveal]:not([data-pending]) :is(.credentials,.facts,.sources__list,.practice)>:is(li,div){transition:opacity .52s var(--ease),transform .52s var(--ease);transition-delay:calc(.32s + var(--i, 0) * 70ms)}[data-pending] :is(.credentials,.facts,.sources__list,.practice)>:is(li,div){opacity:0;transform:translateY(.75rem)}[data-reveal]:not([data-pending]) .query>p{transition:opacity .52s var(--ease),transform .52s var(--ease);transition-delay:calc(.32s + var(--i, 0) * 70ms)}[data-reveal]:not([data-pending]):is(.contact__intro,.form)>:not(.query){transition:opacity .52s var(--ease),transform .52s var(--ease);transition-delay:calc(.56s + var(--i, 0) * 90ms)}[data-pending] .query>p,[data-pending]:is(.contact__intro,.form)>:not(.query){opacity:0;transform:translateY(.75rem)}.query>:nth-child(2){--i:1}.query>:nth-child(3){--i:2}.query>:nth-child(4){--i:3}.query>:nth-child(5){--i:4}.contact__intro>:nth-child(3){--i:1}.contact__intro>:nth-child(4){--i:2}.contact__intro>:nth-child(5){--i:3}.form>:nth-child(2){--i:1}.form>:nth-child(3){--i:2}.exhibit svg circle,.exhibit svg rect{transform-box:fill-box;transform-origin:50% 50%}.exhibit svg .fg-bar{transform-origin:50% 100%}.exhibit svg.fg-clusters{--step:2.6ms}.exhibit svg.fg-network{--step:30ms}[data-reveal]:not([data-pending]) .exhibit svg *{transition-property:opacity,transform;transition-duration:.6s,.7s;transition-timing-function:var(--ease);transition-delay:calc(var(--d, .25s) + var(--i, 0) * var(--step, 4ms))}[data-reveal]:not([data-pending]) .exhibit svg .fg-bar{transition-duration:.46s,.46s}[data-reveal]:not([data-pending]) .exhibit svg .fg-pop{transition-duration:.6s,.64s;transition-timing-function:var(--ease),var(--ease-spring)}[data-reveal]:not([data-pending]) .exhibit svg .fg-dot{transition-duration:.48s,.48s;transition-timing-function:var(--ease),var(--ease-spring)}[data-reveal]:not([data-pending]) .exhibit svg .fg-snap{transition-duration:.36s,.7s}[data-reveal]:not([data-pending]) .exhibit svg .fg-draw{stroke-dasharray:1;stroke-dashoffset:0;transition-property:opacity,transform,stroke-dashoffset;transition-duration:.6s,.7s,.85s}[data-pending] .exhibit svg :is(text,line,path,ellipse,polyline,polygon,.fg-panel){opacity:0}[data-pending] .exhibit svg :is(circle,rect:not(.fg-panel)){opacity:0;transform:scale(.2)}[data-pending] .exhibit svg rect.fg-bar{transform:scaleY(0)}[data-pending] .exhibit svg rect.fg-fade,[data-pending] .exhibit svg rect.fg-track{opacity:0;transform:none}[data-pending] .exhibit svg path.fg-draw{opacity:1;stroke-dasharray:1;stroke-dashoffset:1}}@keyframes enter{0%{opacity:0;transform:translateY(.75rem)}}@keyframes hl-sweep{0%{background-size:0 .42em}}@keyframes odo-roll{0%{transform:translateY(0)}}@keyframes live{0%{box-shadow:0 0 0 0 rgb(27 122 75/.45)}70%,to{box-shadow:0 0 0 .5rem rgb(27 122 75/0)}}@keyframes h-set{0%{-webkit-clip-path:inset(-.2em -.08em 100% -.08em);clip-path:inset(-.2em -.08em 100% -.08em);transform:translateY(.55rem)}to{-webkit-clip-path:inset(-.2em -.08em -.2em -.08em);clip-path:inset(-.2em -.08em -.2em -.08em);transform:translateY(0)}}@keyframes dot-pop{0%{opacity:0;transform:scale(.3)}}@keyframes draw-in{0%{stroke-dashoffset:100}}@keyframes rule-draw{0%{transform:scaleX(0)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.button:hover .button__icon,.link:hover .link__icon{transform:none}}@media (forced-colors:active){:root{--line:currentColor;--control-border:currentColor}.hl{text-decoration:underline}.method>summary:after{content:"+";width:auto;height:auto;background:none;font-family:var(--font-mono);font-size:1.25rem;line-height:1;color:currentColor}.method[open]>summary:after{content:"\2212"}}[data-printing] *,[data-printing] :after,[data-printing] :before{transition:none!important;animation:none!important}@media print{@page{margin:14mm}.night,.site-header[data-night],:root{--paper:#fff;--surface:#fff;--ink:#111;--ink-2:#333;--ink-3:#555;--line:#c9c9c9;--control-border:#8a8a8a;--accent:#111;--accent-hover:#111;--on-accent:#fff;--error:#111;--success:#111;--hl:#e6e6e2;--data-1:#111;--data-2:#555;--data-3:#8f8f8f}html{scroll-behavior:auto}body{background:#fff;color:#111}.form,.hero__actions,.hero__figure,.method__count,.plot__dot,.plot__readout,.signature,.site-footer a,.site-footer__thanks,.skip-link,.status:before,.text-button,nav{display:none!important}.site-header{position:static;background:none;border-bottom:1px solid var(--line);backdrop-filter:none;-webkit-backdrop-filter:none}.site-header__inner{height:auto;padding-block:.65rem}.brand{min-height:0;padding:0;margin:0}main .section{padding-block:1.75rem}.hero{padding-top:0}.hero__grid{display:block}.hero__lede{max-width:none}.keyfigures{margin-top:1.5rem;column-gap:1rem}.section.night{border-top:1px solid var(--line)}.contact{display:block}.contact__title{font-size:2.5rem}.contact__head{margin-bottom:1.5rem}.project{display:block}#about,#contact,#projects,.project+.project{page-break-before:always;break-before:page}.project__figure{position:static;margin:0 0 1.25rem;page-break-inside:avoid;break-inside:avoid}h2,h3,h4{page-break-after:avoid;break-after:avoid}.exhibit,.method,.project__head,.project__title,.stats{page-break-inside:avoid;break-inside:avoid}a[data-print-href]:after,a[href^=http]:after{font-size:.82em;color:#555;overflow-wrap:anywhere}a[href^=http]:after{content:" (" attr(href) ")"}a[data-print-href]:after{content:" (" attr(data-print-href) ")"}.button__icon,.link__icon{display:none}.link{-webkit-text-decoration-color:var(--control-border);text-decoration-color:var(--control-border)}.hl{-webkit-print-color-adjust:exact;print-color-adjust:exact}.query{background:#fff;page-break-inside:avoid;break-inside:avoid}.query__chevron{display:none}.query__pick select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0}.method>summary{min-height:0;padding-block:.5rem}.method>summary:after{display:none}.method::details-content{content-visibility:visible!important;block-size:auto!important;overflow:visible}.credentials li{grid-template-columns:minmax(0,1fr) 5.5rem;page-break-inside:avoid;break-inside:avoid}.credentials__action{grid-column:1/-1;justify-self:start;margin-top:.35rem}.subhead{page-break-after:avoid;break-after:avoid}.site-footer{border-top:1px solid var(--line)}.site-footer__row{justify-content:flex-start;padding-block:.75rem}}