:root{--paper: #efefe9;--paper-2: #e7e8e0;--ink: #16181a;--ink-2: #565b58;--rule: #d5d7cc;--rule-2: #bfc2b5;--pen-blue: #1e3ac8;--pen-red: #bd2f10;--pen-green: #0b6b48;--pen-violet: #5b2a91;--pen: var(--pen-blue);--display: "Archivo", system-ui, sans-serif;--body: "Newsreader", Georgia, serif;--mono: "JetBrains Mono", ui-monospace, monospace;--ease: cubic-bezier(.22, .68, .28, 1);--rail-w: 116px}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px;-webkit-text-size-adjust:100%}body{margin:0;background-color:var(--paper);background-image:linear-gradient(var(--rule) 1px,transparent 1px),linear-gradient(90deg,var(--rule) 1px,transparent 1px),linear-gradient(rgba(191,194,181,.5) 1px,transparent 1px),linear-gradient(90deg,rgba(191,194,181,.5) 1px,transparent 1px);background-size:120px 120px,120px 120px,24px 24px,24px 24px;background-position:-1px -1px;color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.62;overflow-x:clip;-webkit-font-smoothing:antialiased}::selection{background:var(--ink);color:var(--paper)}h1,h2,h3,h4{font-family:var(--display);font-weight:700;margin:0;letter-spacing:-.02em;line-height:1.04;font-variation-settings:"wdth" 112}p{margin:0}ul,ol,dl,dd{margin:0;padding:0}li{list-style:none}svg{display:block}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--pen-blue);outline-offset:3px;border-radius:1px}.skip{position:absolute;left:-9999px;top:12px;z-index:200;padding:10px 16px;background:var(--ink);color:var(--paper);font-family:var(--mono);font-size:12px}.skip:focus{left:16px}.eyebrow{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2)}.button{display:inline-flex;align-items:center;gap:9px;padding:11px 18px;border:1px solid var(--ink);background:transparent;color:var(--ink);font-family:var(--mono);font-size:12.5px;font-weight:500;letter-spacing:.02em;line-height:1;transition:transform .18s var(--ease),box-shadow .18s var(--ease),background-color .18s var(--ease),color .18s var(--ease)}.button .icon{transition:transform .18s var(--ease)}.button:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--ink)}.button:hover .icon{transform:translate(1px,-1px)}.button--solid{background:var(--ink);color:var(--paper)}.button--solid:hover{box-shadow:4px 4px 0 var(--pen)}.topbar{position:fixed;inset:0 0 auto 0;z-index:60;transition:background-color .3s var(--ease),border-color .3s var(--ease);border-bottom:1px solid transparent}.topbar.is-lifted{background:color-mix(in srgb,var(--paper) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom-color:var(--rule-2)}.topbar__inner{max-width:1400px;margin:0 auto;padding:16px clamp(20px,4vw,36px);display:flex;align-items:baseline;justify-content:space-between;gap:20px}.wordmark{display:flex;align-items:baseline;gap:12px}.wordmark__name{font-family:var(--display);font-weight:700;font-variation-settings:"wdth" 105;font-size:16px;letter-spacing:-.01em}.wordmark__role{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}@media (max-width: 560px){.wordmark__role{display:none}}.topbar__links{display:flex;gap:22px}.topbar__links a{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;color:var(--ink-2);padding-bottom:2px;background-image:linear-gradient(var(--pen-blue),var(--pen-blue));background-repeat:no-repeat;background-position:0 100%;background-size:0% 1px;transition:color .2s var(--ease),background-size .3s var(--ease)}.topbar__links a:hover{color:var(--pen-blue);background-size:100% 1px}@media (max-width: 760px){.topbar__links{gap:15px}}@media (max-width: 620px){.topbar__link--wide{display:none}}.topbar__progress{height:2px;background:transparent}.topbar__progress span{display:block;height:100%;background:var(--ink);transform-origin:left center;transform:scaleX(0)}@media (min-width: 1100px){.topbar__progress{display:none}}.rail{position:fixed;left:32px;top:24vh;bottom:16vh;width:1px;z-index:50;display:none}@media (min-width: 1100px){.rail{display:block}}.rail__line{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--rule-2)}.rail__trace{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--ink);transform-origin:top center;transition:transform .15s linear}.rail__ticks{position:absolute;top:0;right:0;bottom:0;left:0}.rail__tick{position:absolute;left:0;transform:translateY(-50%);transition:top .4s var(--ease)}.rail__tick a{display:flex;align-items:center;gap:10px;padding:5px 6px 5px 0}.rail__mark{width:8px;height:1px;margin-left:-4px;background:var(--rule-2);transition:width .32s var(--ease),background-color .32s var(--ease)}.rail__label{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);opacity:.5;white-space:nowrap;transition:opacity .32s var(--ease),color .32s var(--ease)}.rail__tick a:hover .rail__label{opacity:1}.rail__tick a:hover .rail__mark{width:14px;background:var(--ink-2)}.rail__tick.is-active .rail__label{opacity:1;color:var(--ink)}.rail__tick.is-active .rail__mark{width:18px;background:var(--pen-blue)}.rail__marker{position:absolute;left:-3.5px;width:8px;height:8px;margin-top:-4px;background:var(--pen-blue);transform:rotate(45deg);transition:top .15s linear}.page{position:relative}@media (min-width: 1100px){.page{padding-left:var(--rail-w)}}.section{max-width:1080px;margin:0 auto;padding:clamp(80px,10vh,122px) clamp(20px,5vw,56px)}.sechead{max-width:640px;margin-bottom:clamp(40px,6vw,68px)}.sechead__title{font-size:clamp(1.85rem,3.5vw,2.7rem);margin-top:14px}.sechead__lead{margin-top:18px;color:var(--ink-2);font-size:1.06rem;max-width:54ch}.hero{max-width:1080px;margin:0 auto;padding:clamp(120px,18vh,190px) clamp(20px,5vw,56px) clamp(60px,8vh,96px);display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(40px,6vw,64px);align-items:center}@media (min-width: 940px){.hero{grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);min-height:100vh}}.hero__title{margin:22px 0 0;font-size:clamp(2.1rem,4.4vw,2.95rem);font-variation-settings:"wdth" 118;letter-spacing:-.03em;line-height:.98}.hero__title span{display:block}.hero__title-em{color:var(--pen-blue);font-style:normal}.hero__lead{margin-top:26px;max-width:46ch;color:var(--ink-2);font-size:1.09rem}.hero__actions{margin-top:34px;display:flex;flex-wrap:wrap;gap:12px}.hero__text>*,.hero__title span{animation:rise .72s var(--ease) var(--d, 0ms) both}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.herofig{margin:0;border:1px solid var(--rule-2);background:color-mix(in srgb,var(--paper) 58%,#fff);padding:18px 20px 16px}.herofig svg{width:100%;height:auto}.herofig__rules line{stroke:var(--rule-2);stroke-width:.7;animation:fade-in .4s linear var(--d) both}.herofig__values text{font-family:var(--mono);font-size:9.5px;fill:var(--ink-2);animation:fade-in .35s linear var(--d) both,fade-out .3s linear var(--dout) forwards}.herofig__values text.is-missing{fill:var(--pen-red);font-weight:700}.herofig__points circle,.herofig__note circle{fill:var(--ink);transform-box:fill-box;transform-origin:center}.herofig__points circle.is-imputed,.herofig__note circle.is-imputed{fill:none;stroke:var(--pen-red);stroke-width:1.5}.herofig__points circle{animation:pop .5s var(--ease) var(--d) both}.herofig__axes line{stroke:var(--ink);stroke-width:1.1;stroke-dasharray:1;stroke-dashoffset:1;animation:draw .6s var(--ease) var(--d) both}.herofig__fit{stroke:var(--pen-blue);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:draw .7s var(--ease) var(--d) both}.herofig__note{animation:fade-in .5s linear var(--d) both}.herofig__note text{font-family:var(--mono);font-size:9.5px;fill:var(--ink-2)}.herofig__caption{margin-top:18px;display:flex;flex-wrap:wrap;gap:12px;align-items:baseline;font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--ink-2);border-top:1px solid var(--rule-2);padding-top:10px;animation:fade-in .6s linear var(--d) both}.herofig__figno,.project__figno{color:var(--ink);font-weight:700;letter-spacing:.1em;text-transform:uppercase}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{to{opacity:0}}@keyframes draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes pop{0%{opacity:0;transform:scale(.2)}to{opacity:1;transform:none}}@keyframes pop-o{0%{opacity:0;transform:scale(.2)}to{opacity:var(--o, 1);transform:none}}@keyframes grow-x{0%{transform:scaleX(0)}to{transform:none}}.reveal>*{opacity:0;transform:translateY(16px);transition:opacity .62s var(--ease) var(--d, 0ms),transform .62s var(--ease) var(--d, 0ms)}.reveal.is-in>*{opacity:1;transform:none}.method{position:relative}.method.reveal>*{opacity:1;transform:none;transition:none}.method__track{position:absolute;left:0;top:13px;height:1px;width:100%;background:var(--rule-2);transform:scaleX(0);transform-origin:left center;transition:transform .9s var(--ease)}.method.is-in .method__track{transform:none}@media (max-width: 760px){.method__track{top:0;left:13px;width:1px;height:100%;transform:scaleY(0);transform-origin:top}.method.is-in .method__track{transform:none}}.method__list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(24px,4vw,52px)}@media (max-width: 760px){.method__list{grid-template-columns:1fr;gap:36px}}.method__step{padding-top:34px;opacity:0;transform:translateY(16px);transition:opacity .6s var(--ease) var(--d),transform .6s var(--ease) var(--d)}.method.is-in .method__step{opacity:1;transform:none}@media (max-width: 760px){.method__step{padding-top:0;padding-left:42px;position:relative}}.method__num{position:absolute;margin-top:-34px;width:26px;height:26px;display:grid;place-items:center;border:1px solid var(--ink);background:var(--paper);font-family:var(--mono);font-size:11px;font-weight:700}@media (max-width: 760px){.method__num{margin-top:0;left:0;top:0}}.method__title{font-size:1.16rem;font-variation-settings:"wdth" 104;margin-bottom:10px}.method__body{color:var(--ink-2);font-size:1rem;max-width:38ch}.section--work{padding-bottom:clamp(40px,6vh,72px)}.projects{display:flex;flex-direction:column;gap:clamp(72px,11vh,132px)}.project{display:grid;grid-template-columns:minmax(0,.98fr) minmax(0,1.02fr);gap:clamp(28px,5vw,66px);align-items:start;padding-top:clamp(28px,4vh,44px);border-top:1px solid var(--rule-2)}.project[data-pen=blue]{--pen: var(--pen-blue)}.project[data-pen=red]{--pen: var(--pen-red)}.project[data-pen=green]{--pen: var(--pen-green)}.project[data-pen=violet]{--pen: var(--pen-violet)}.project[data-flip=true] .project__figure{order:2}@media (max-width: 860px){.project{grid-template-columns:minmax(0,1fr);gap:30px}.project[data-flip=true] .project__figure{order:0}}.project.reveal>*{opacity:1;transform:none;transition:none}.project__figure{margin:0;opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .7s var(--ease)}.project.is-in .project__figure{opacity:1;transform:none}@media (min-width: 861px){.project__figure{position:sticky;top:116px}}.project__plot{border:1px solid var(--rule-2);background:color-mix(in srgb,var(--paper) 72%,#fff);padding:14px 16px 10px}.project__plot svg{width:100%;height:auto}.project__figure figcaption{margin-top:12px;display:flex;flex-wrap:wrap;gap:12px;align-items:baseline;font-family:var(--mono);font-size:11px;color:var(--ink-2);letter-spacing:.03em}.project__body>*{opacity:0;transform:translateY(16px);transition:opacity .6s var(--ease) var(--d, 0ms),transform .6s var(--ease) var(--d, 0ms)}.project.is-in .project__body>*{opacity:1;transform:none}.project__title{margin:14px 0 0;font-size:clamp(1.5rem,2.9vw,2.05rem)}.project__prose{margin-top:18px;color:var(--ink-2);max-width:52ch}.readout{margin-top:26px;border-top:1px solid var(--rule)}.readout__row{display:flex;align-items:baseline;justify-content:space-between;gap:20px;padding:9px 0;border-bottom:1px solid var(--rule)}.readout dt{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}.readout dd{font-family:var(--mono);font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--pen)}.taglist{margin-top:22px;display:flex;flex-wrap:wrap;gap:6px 8px}.taglist li{font-family:var(--mono);font-size:11px;letter-spacing:.03em;color:var(--ink-2);border:1px solid var(--rule-2);padding:4px 9px;transition:border-color .2s var(--ease),color .2s var(--ease)}.project:hover .taglist li{border-color:color-mix(in srgb,var(--pen) 35%,var(--rule-2))}.project__links{margin-top:26px;display:flex;flex-wrap:wrap;gap:12px}.fig-axes line{stroke:var(--ink);stroke-width:1.1;stroke-dasharray:1;stroke-dashoffset:1}.project.is-in .fig-axes line{animation:draw .65s var(--ease) var(--d) both}.fig-frame{fill:none;stroke:var(--rule-2);stroke-width:1;stroke-dasharray:1;stroke-dashoffset:1}.project.is-in .fig-frame{animation:draw 1s var(--ease) var(--d) both}.fig-guide{stroke:var(--pen);stroke-width:1.4;stroke-dasharray:.012 .012;stroke-dashoffset:1;opacity:0}.project.is-in .fig-guide{animation:fade-in .5s linear var(--d) both;opacity:1;stroke-dashoffset:0}.fig-curve{fill:none;stroke:var(--pen);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1}.project.is-in .fig-curve{animation:draw 1.1s var(--ease) var(--d) both}.fig-points circle{fill:var(--pen);opacity:0;transform-box:fill-box;transform-origin:center}.project.is-in .fig-points circle{animation:pop-o .45s var(--ease) var(--d) both}.fig-query{opacity:0}.fig-query circle{fill:var(--ink)}.fig-query line{stroke:var(--ink);stroke-width:1.2}.fig-query circle.fig-query__ring{fill:none;stroke:var(--ink);stroke-width:1.2}.project.is-in .fig-query{animation:fade-in .4s linear var(--d) both}.fig-match{fill:none;stroke:var(--pen);stroke-width:2;opacity:0}.project.is-in .fig-match{animation:pop .4s var(--ease) var(--d) both;transform-box:fill-box;transform-origin:center}.fig-ticks line{stroke:var(--rule-2);stroke-width:1;stroke-dasharray:2 3}.fig-ticks{opacity:0}.project.is-in .fig-ticks{animation:fade-in .5s linear var(--d) both}.fig-ticks text{font-family:var(--mono);font-size:9.5px;fill:var(--ink-2)}.fig-bars>g{opacity:0}.project.is-in .fig-bars>g{animation:fade-in .45s linear var(--d) both}.fig-bars rect{fill:var(--pen);transform:scaleX(0);transform-box:fill-box;transform-origin:left center}.project.is-in .fig-bars rect{animation:grow-x .75s var(--ease) var(--d) both}.fig-bars__label{font-family:var(--mono);font-size:11px;fill:var(--ink)}.fig-bars__value{font-family:var(--mono);font-size:11px;font-weight:700;fill:var(--ink-2)}.fig-labels{opacity:0}.project.is-in .fig-labels{animation:fade-in .5s linear var(--d) both}.fig-labels text{font-family:var(--mono);font-size:11px;font-weight:700;fill:var(--ink)}.fig-labels .fig-labels__dim{font-weight:400;fill:var(--ink-2);font-size:10px}.toolkit{border-top:1px solid var(--rule-2)}.toolkit__group{display:grid;grid-template-columns:220px minmax(0,1fr);gap:clamp(16px,3vw,40px);padding:22px 0;border-bottom:1px solid var(--rule)}@media (max-width: 720px){.toolkit__group{grid-template-columns:1fr;gap:12px}}.toolkit__group.reveal>*{transition-delay:var(--d, 0ms)}.toolkit__label{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);padding-top:4px}.toolkit__items{display:flex;flex-wrap:wrap;gap:8px 26px}.toolkit__items li{font-family:var(--display);font-size:1rem;font-variation-settings:"wdth" 100;display:flex;align-items:baseline;gap:9px;opacity:0;transform:translateY(10px);transition:opacity .5s var(--ease) var(--d),transform .5s var(--ease) var(--d)}.toolkit__group.is-in .toolkit__items li{opacity:1;transform:none}.toolkit__items li:before{content:"";width:4px;height:4px;background:var(--rule-2);transform:translateY(-3px);transition:background-color .2s var(--ease),transform .2s var(--ease)}.toolkit__items li:hover:before{background:var(--pen-blue);transform:translateY(-3px) scale(1.6)}.contact{padding-bottom:0}.contact__inner{max-width:620px}.contact__title{font-size:clamp(2rem,4.4vw,3.1rem);margin-top:16px}.contact__lead{margin-top:20px;color:var(--ink-2)}.contact__actions{margin-top:32px;display:flex;flex-wrap:wrap;gap:12px}.contact__meta{margin-top:22px;display:flex;flex-wrap:wrap;align-items:baseline;gap:12px;font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--ink-2)}.contact__meta span{color:var(--rule-2)}.contact__meta a{background-image:linear-gradient(var(--pen-blue),var(--pen-blue));background-repeat:no-repeat;background-position:0 100%;background-size:100% 1px;padding-bottom:2px;transition:color .2s var(--ease)}.contact__meta a:hover{color:var(--pen-blue)}.colophon{margin-top:clamp(64px,10vh,112px);padding:22px 0 34px;border-top:1px solid var(--rule-2);display:flex;flex-wrap:wrap;gap:16px 28px;justify-content:space-between;align-items:baseline;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}.colophon__nav{display:flex;flex-wrap:wrap;gap:22px}.colophon__nav a{transition:color .2s var(--ease)}.colophon__nav a:hover{color:var(--ink)}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;transition-delay:0ms!important}}
