@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/167cd0713aa75522-s.1nzccunaoxsdm.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/e455bcff747f0d5e-s.1wuo3gtslpr33.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/791bf8c4bb753ed6-s.p.0ggqn9ig56u4s.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Fallback;src:local(Times New Roman);ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.0%;size-adjust:115.45%}.fraunces_d6b00c6-module__yiMk4W__className{font-family:Fraunces,Fraunces Fallback;font-style:normal}.fraunces_d6b00c6-module__yiMk4W__variable{--font-serif:"Fraunces", "Fraunces Fallback"}
@font-face{font-family:Work Sans;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8e3fbf4aa84d044b-s.3ynaompv6mu4n.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Work Sans;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/57dc28f7118abe14-s.3bsu95r7x7mat.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Work Sans;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7ddd198311ba7843-s.p.3kq6k02b2ysv1.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Work Sans Fallback;src:local(Arial);ascent-override:83.09%;descent-override:21.71%;line-gap-override:0.0%;size-adjust:111.93%}.work_sans_6c69e15b-module__U8y_3G__className{font-family:Work Sans,Work Sans Fallback;font-style:normal}.work_sans_6c69e15b-module__U8y_3G__variable{--font-sans:"Work Sans", "Work Sans Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.0rgnxg2b64rzs.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.2vemzm0itqzfy.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.3cb5lpr2l6xud.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1u30mmyq6lnsd.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.40sczeszzbjw1.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_2528bd7a-module__x6tLeW__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal;font-weight:400}.ibm_plex_mono_2528bd7a-module__x6tLeW__variable{--font-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--bg:#f6f3ec;--ink:#1b1a17;--body:#4a463d;--muted:#57534a;--faint:#5f5b51;--accent:#35506b;--accent-line:#35506b59;--rule:#dad5c8;--tile:#e7e2d5;--serif:var(--font-serif), Georgia, serif;--sans:var(--font-sans), system-ui, sans-serif;--mono:var(--font-mono), ui-monospace, monospace}*,:before,:after{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth}body{caret-color:#0000;background:var(--bg);color:var(--ink);font-family:var(--sans);margin:0;line-height:1.6}h1,h2,h3{text-wrap:balance}p,li{text-wrap:pretty}a{color:var(--accent);border-bottom:1px solid var(--accent-line);text-decoration:none}a:hover{color:var(--ink);border-bottom-color:var(--ink)}:focus:not(:focus-visible){outline:none}input,textarea,[contenteditable]{caret-color:auto}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}::selection{background:#35506b2e}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.serif{font-family:var(--serif)}.skip-link{z-index:10;background:var(--ink);color:var(--bg);font-family:var(--mono);border:none;padding:.5rem .75rem;font-size:.8rem;position:absolute;top:.75rem;left:.75rem;transform:translateY(-200%)}.skip-link:focus-visible{color:var(--bg);transform:none}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.flock{display:none}@media (hover:hover) and (pointer:fine) and (min-width:1024px) and (prefers-reduced-motion:no-preference){.flock{z-index:5;pointer-events:none;width:100vw;height:100vh;display:block;position:fixed;top:0;left:0}}.flock-note{display:none}@media (hover:hover) and (pointer:fine) and (min-width:1024px) and (prefers-reduced-motion:no-preference){.flock-note{visibility:hidden;display:block}:root[data-flock=on] .flock-note{visibility:visible}}.flock-note{max-width:21rem;margin-top:2.5rem}.flock-note summary{color:var(--faint);font-family:var(--mono);cursor:pointer;border-bottom:1px dashed var(--rule);font-size:.75rem;list-style:none;display:inline-block}.flock-note summary::-webkit-details-marker{display:none}.flock-note summary:after{content:" +"}.flock-note[open] summary:after{content:" −"}.flock-note summary:hover,.flock-note[open] summary{color:var(--ink);border-bottom-color:var(--ink)}.flock-note p{color:var(--body);margin:.75rem 0 0;font-size:.85rem;line-height:1.6}.home{justify-content:space-between;gap:4rem;max-width:1280px;margin:0 auto;padding:0 clamp(1.5rem,6vw,6rem);display:flex}.sidebar{flex-direction:column;flex:0 44%;justify-content:space-between;height:100vh;max-height:100vh;padding:6rem 0;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar__name{font-family:var(--serif);letter-spacing:-.015em;margin:0 0 .5rem;font-size:clamp(2.25rem,3.6vw,3rem);font-weight:600;line-height:1.1}.sidebar__role{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin:0 0 1.5rem;font-size:.85rem}.sidebar__tagline{max-width:21rem;color:var(--body);font-family:var(--serif);margin:0;font-size:1.15rem;line-height:1.5}.sidebar__nav,.sidebar__socials{margin:0;padding:0;list-style:none;display:flex}.sidebar__nav{flex-direction:column;gap:1rem;margin-top:4rem}.sidebar__nav a,.sidebar__socials a{font-family:var(--mono);border-bottom:none}.sidebar__nav a{letter-spacing:.06em;text-transform:uppercase;font-size:.8rem}.sidebar__socials{gap:1.5rem}.sidebar__socials a{color:var(--muted);font-size:.8rem}.sidebar__socials a:hover{color:var(--ink)}.content{flex:0 52%;min-width:0;max-width:38rem;padding:6rem 0}@media (max-height:880px){.sidebar{padding:4rem 0}.sidebar__nav{margin-top:3rem}.flock-note{margin-top:2rem}.content{padding-top:4rem}}.section{margin-bottom:4.5rem}.label{color:var(--faint);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;margin:0 0 1.25rem;font-size:.78rem;font-weight:400}.about p{margin:0;font-size:1.05rem}.about p+p{color:var(--body);margin-top:1rem}.about strong{font-weight:500}.about .label{margin-bottom:1rem}.work .label{margin-bottom:1.5rem}.work-list{margin:0;padding:0;list-style:none}.work-row{color:inherit;border-bottom:1px solid var(--rule);align-items:flex-start;gap:1.5rem;padding:1.5rem 0;display:flex}.work-row:hover{color:inherit;border-bottom-color:var(--rule)}.thumb{background:var(--tile);border:1px solid var(--rule);flex:none;width:96px;height:72px;position:relative;overflow:hidden}.thumb svg{width:100%;height:100%;display:block}.thumb__line{fill:none;stroke:var(--faint);stroke-width:1.25px;stroke-linecap:round;stroke-linejoin:round}.thumb__line--accent{stroke:var(--accent);stroke-width:1.75px}.thumb__dot{fill:var(--faint)}.thumb__dot--accent{fill:var(--accent)}.work-row__title{font-family:var(--serif);color:var(--ink);margin:0 0 .25rem;font-size:1.2rem;font-weight:600}.work-row:hover .work-row__title{color:var(--accent)}.work-row__summary{color:var(--body);margin:0;font-size:.95rem}.work-row__meta{color:var(--faint);letter-spacing:.04em;margin:.5rem 0 0;font-size:.72rem}.other-list{flex-direction:column;gap:.75rem;margin:0;padding:0;font-size:.95rem;list-style:none;display:flex}.other-list strong{font-weight:500}.other__more{margin:1.25rem 0 0;font-size:.9rem}.education{margin-bottom:3rem}.edu-row{justify-content:space-between;gap:1rem;font-size:.95rem;display:flex}.edu-row+.edu-row{margin-top:1rem}.edu-row__school{font-weight:500}.edu-row__period{color:var(--muted);white-space:nowrap;font-size:.8rem}.footer{border-top:1px solid var(--rule);padding-top:1.5rem}.footer p{color:var(--faint);font-family:var(--mono);margin:0 0 .5rem;font-size:.78rem}.footer a{color:var(--faint)}.footer a:hover{color:var(--ink)}.case{max-width:46rem;margin:0 auto;padding:6rem clamp(1.5rem,6vw,2.5rem);font-size:1.0625rem;line-height:1.7}.case__back{margin:0 0 1.5rem;font-size:.8rem}.case__back a{color:var(--muted);border-bottom:none}.case__back a:hover{color:var(--ink)}.case__title{font-family:var(--serif);letter-spacing:-.01em;margin:0 0 .9rem;font-size:clamp(2rem,6vw,2.4rem);font-weight:600;line-height:1.15}.case__lede{color:var(--body);margin:0 0 1.75rem;font-size:1.1rem}.case__meta{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);flex-wrap:wrap;gap:1.25rem 2rem;margin:0 0 2.5rem;padding:1rem 0 1.5rem;display:flex}.case__meta dt{color:var(--faint);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;margin:0 0 .25rem;font-size:.7rem}.case__meta dd{font-variant-numeric:tabular-nums;margin:0;font-size:.9rem}.case__section{margin-bottom:2.25rem}.case__section h2{font-family:var(--serif);margin:0 0 .75rem;font-size:1.15rem;font-weight:600}.case__section p{max-width:68ch;margin:0}.case__section p+p{margin-top:1rem}.case__section code{font-family:var(--mono);font-size:.88em}.flow{margin:0 0 2.5rem}.flow__steps{background:var(--tile);border:1px solid var(--rule);flex-wrap:wrap;place-content:center;align-items:flex-start;gap:1.75rem;min-height:220px;margin:0 0 .6rem;padding:1.5rem 1.25rem;list-style:none;display:flex}.flow__step{text-align:center;flex-direction:column;flex:0 auto;align-items:center;gap:.4rem;max-width:9.5rem;display:flex;position:relative}.flow__step+.flow__step:before{content:"→";color:var(--faint);font-family:var(--mono);font-size:.8rem;position:absolute;top:.45rem;left:-1.35rem}.flow__node{background:var(--bg);border:1px solid var(--rule);font-family:var(--mono);padding:.4rem .6rem;font-size:.72rem;line-height:1.35}.flow__step--accent .flow__node{color:var(--accent);border-color:var(--accent)}.flow__note{color:var(--muted);font-size:.72rem;line-height:1.35}.flow__caption{color:var(--faint);font-family:var(--mono);font-size:.78rem}.case__numbers{margin:2.75rem 0 0}.stats{background:var(--rule);border:1px solid var(--rule);gap:1px;margin:0;padding:0;list-style:none;display:flex}.stat{background:var(--bg);flex:1;min-width:0;padding:1.5rem 1.25rem}.stat p{margin:0}.stat__value{color:var(--accent);white-space:nowrap;font-size:clamp(1.4rem,3.5vw,1.75rem);line-height:1.2;margin-bottom:.35rem!important}.stat__label{color:var(--body);font-size:.85rem;line-height:1.45}.stat__method{color:var(--faint);font-size:.75rem;line-height:1.45;margin-top:.6rem!important}.case .footer{margin-top:3rem}.not-found__list{margin:0 0 2.5rem;padding-left:1.1rem}.not-found__list li+li{margin-top:.4rem}@media (max-width:1023px){.home{flex-direction:column;gap:0;max-width:44rem}.sidebar{border-bottom:1px solid var(--rule);gap:2.5rem;height:auto;max-height:none;padding:4rem 0 2.5rem;position:static}.sidebar__nav{margin-top:2.5rem}.content{max-width:none;padding:3.5rem 0 5rem}}@media (max-width:760px){.flow__steps{flex-direction:column;align-items:stretch;gap:1.5rem}.flow__step{max-width:none}.flow__step+.flow__step:before{content:"↓";top:-1.35rem;left:50%;transform:translate(-50%)}.stats{flex-direction:column}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media print{html,body{color:#000;background:#fff}.skip-link,.flock,.flock-note,.sidebar nav,.case__back,.thumb{display:none}.home{display:block}.sidebar{border:none;width:auto;height:auto;padding:0 0 1rem;position:static}.content,.case{max-width:none;padding:0}a{color:#000;border-bottom:none}a[href^=http]:after,a[href^=mailto\:]:after{content:" (" attr(href) ")";word-break:break-all;font-size:.8em}.section,.case__section,.flow,.stats{break-inside:avoid}.flow__steps,.stat{background:#fff}}
