@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.woff2)format("woff2-variations");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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2-variations");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}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}:root{color-scheme:dark;--space-3xs:2px;--space-2xs:4px;--space-xs:8px;--space-sm:12px;--space-md:16px;--space-lg:24px;--space-xl:40px;--space-2xl:64px;--space-3xl:96px;--space-4xl:144px;--text-xs:.8125rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.25rem;--text-xl:1.5625rem;--text-2xl:1.953rem;--text-3xl:2.441rem;--text-display-s:clamp(2.25rem, 4vw + .5rem, 3.75rem);--text-display:clamp(2.75rem, 5vw + 1rem, 5.25rem);--text-section:clamp(2.25rem, 2.5vw + 1.25rem, 3.5rem);--text-title:clamp(1.25rem, .75vw + .875rem, 1.625rem);--text-lead:clamp(1.125rem, .35vw + 1rem, 1.375rem);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-micro:.12s;--dur-short:.22s;--dur-long:.42s;--color-error:oklch(72% .15 27);--color-success:oklch(76% .13 150);--container:1440px;--gutter:64px;--gap-columns:32px;--section-gap-s:120px;--section-gap:144px;--section-gap-l:176px;--z-base:1;--z-raised:10;--z-dropdown:100;--z-sticky:200;--z-sticky-nav:300;--z-modal:400;--z-toast:500;--z-tooltip:600;--nav-h:64px;--color-paper:oklch(13% .01 150);--color-paper-2:oklch(16.5% .013 150);--color-paper-3:oklch(21% .018 148);--color-ink:oklch(95% .012 140);--color-ink-2:oklch(84% .02 145);--color-muted:oklch(70% .03 148);--color-rule:oklch(26% .02 148);--color-rule-2:oklch(36% .03 146);--color-accent:oklch(91% .2 128);--color-accent-ink:oklch(16% .03 140);--color-focus:oklch(91% .2 128);--color-accent-wash:oklch(24% .05 135);--color-accent-dim:oklch(52% .11 132);--font-display:"Geist Variable", "Geist", system-ui, sans-serif;--font-body:var(--font-display);--font-mono:"Geist Mono Variable", "Geist Mono", ui-monospace, "SFMono-Regular", monospace;--font-outlier:var(--font-mono);--radius-card:0;--radius-pill:0;--rule-hair:1px;--shadow-card:none;--tracking-display:-.035em;--display-weight:800}*,:before,:after{box-sizing:border-box}html{scrollbar-color:var(--color-muted) var(--color-paper);scroll-padding-top:var(--space-3xl)}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-md);-webkit-font-smoothing:antialiased;caret-color:var(--color-accent);margin:0;line-height:1.55}::selection{background:color-mix(in oklab, var(--color-accent) 22%, transparent);color:var(--color-ink)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}a{color:inherit;text-underline-offset:.16em;text-decoration-thickness:1px}h1,h2,h3{font-family:var(--font-display);font-weight:var(--display-weight,700);font-synthesis:none;letter-spacing:var(--tracking-display);overflow-wrap:break-word;text-wrap:balance;min-width:0;margin:0;line-height:1.05}h1{max-width:20ch;font-size:var(--text-display)}h2{max-width:30ch;font-size:var(--text-section)}h3{max-width:40ch;font-size:var(--text-title);line-height:1.2}.lead{font-size:var(--text-lead);max-width:52ch;line-height:1.45}p{text-wrap:pretty;margin:0}p:not([class]){max-width:65ch}img,video{max-width:100%;height:auto;display:block}svg{display:block}[hidden]{display:none!important}button,input,select,textarea{font:inherit}.container{width:100%;max-width:var(--container);padding-inline:var(--gutter);box-sizing:border-box;margin-inline:auto}.num,.figure,td.num{font-variant-numeric:tabular-nums}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}[data-slot]{background:linear-gradient(160deg, var(--color-paper-2,var(--color-paper)), var(--color-paper-3,var(--color-paper)));position:relative;overflow:hidden}[data-slot]>img{object-fit:cover;z-index:1;width:100%;height:100%;position:absolute;inset:0}[data-slot]:has(>img)>:not(img):not([data-keep]){display:none!important}@media (width<=60rem){:root{--gutter:24px;--section-gap-s:80px;--section-gap:96px;--section-gap-l:120px}}@media (width<=40rem){:root{--gutter:16px;--section-gap-s:56px;--section-gap:72px;--section-gap-l:96px;--gap-columns:16px}}@media (prefers-reduced-motion:reduce){:not(.keep-motion),:not(.keep-motion):before,:not(.keep-motion):after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html{scroll-padding-top:calc(var(--nav-h) + var(--space-md))}body{font-optical-sizing:auto}code,pre,kbd{font-family:var(--font-mono)}.skip{left:var(--space-md);top:calc(-1 * var(--space-3xl));z-index:var(--z-toast);padding:var(--space-xs) var(--space-md);background:var(--color-ink);color:var(--color-paper);position:absolute}.skip:focus{top:var(--space-md)}.btn{justify-content:center;align-items:center;gap:var(--space-xs);min-height:48px;padding:0 var(--space-lg);font:600 var(--text-md)/1 var(--font-body);white-space:nowrap;border-radius:var(--radius-pill);cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out), color var(--dur-micro) var(--ease-out), border-color var(--dur-micro) var(--ease-out), transform var(--dur-micro) var(--ease-out);border:1px solid #0000;text-decoration:none;display:inline-flex}.btn--primary{background:var(--color-accent);color:var(--color-accent-ink)}.btn--primary:hover{background:var(--color-ink);color:var(--color-accent-ink)}.btn--ghost{color:var(--color-ink);border-color:var(--color-rule-2);background:0 0}.btn--ghost:hover{border-color:var(--color-ink)}.btn--quiet{min-height:44px;padding:0 var(--space-sm);color:var(--color-ink-2);border-color:var(--color-rule-2);font:400 var(--text-sm)/1 var(--font-mono);background:0 0}.btn--quiet:hover{color:var(--color-ink);border-color:var(--color-ink-2)}.btn--nav{min-height:44px;padding:0 var(--space-md);font-size:var(--text-sm)}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.actions{gap:var(--space-sm);margin-top:var(--space-xl);flex-wrap:wrap;display:flex}a:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.site-nav{z-index:var(--z-sticky-nav);background:color-mix(in oklab, var(--color-paper) 90%, transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--color-rule);view-transition-name:site-nav;position:sticky;top:0}.site-nav__in{align-items:center;gap:var(--space-xl);height:var(--nav-h);display:flex}.wordmark{font:400 var(--text-sm)/1 var(--font-mono);padding:var(--space-xs) var(--space-sm);background:var(--color-accent);color:var(--color-accent-ink);white-space:nowrap;text-decoration:none}.site-nav__links{gap:var(--space-lg);margin-inline-start:auto;display:flex}.site-nav__links a{padding-block:var(--space-sm);font-size:var(--text-sm);color:var(--color-ink-2);white-space:nowrap;transition:color var(--dur-short) var(--ease-out);text-decoration:none}.site-nav__links a:hover{color:var(--color-ink)}.rail{inset-inline:0;pointer-events:none;height:2px;position:absolute;bottom:-1px}.rail__fill{background:var(--color-accent);transform-origin:0;transform:scaleX(var(--p,0));position:absolute;inset:0}@supports (animation-timeline:scroll()){.rail__fill{animation:linear both rail scroll(root)}}@keyframes rail{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.hero{padding-block:var(--space-3xl) var(--space-2xl);align-items:center;display:grid}.hero__in{gap:var(--space-3xl);grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;display:grid}.hero h1{max-width:11ch;line-height:.98}.hero .lead{margin-top:var(--space-lg);max-width:34ch;color:var(--color-ink-2)}@media (prefers-reduced-motion:no-preference){.hero__text>*{animation:settle .64s var(--ease-out) both}.hero__text>:nth-child(2){animation-delay:60ms}.hero__text>:nth-child(3){animation-delay:.12s}}@keyframes settle{0%{opacity:0;transform:translateY(8px)}}.trace{--name-w:10.5rem;background:var(--color-paper-2);border:1px solid var(--color-rule);font:400 var(--text-sm)/1.4 var(--font-mono);margin:0}.trace__head{justify-content:space-between;align-items:baseline;gap:var(--space-md);padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-rule-2);color:var(--color-ink-2);display:flex}.trace__verb{color:var(--color-accent)}.trace__total b{font-weight:400;font-size:var(--text-lg);color:var(--color-ink)}.trace__body{padding-block:var(--space-xs);position:relative;overflow:hidden}.trace__spans{margin:0;padding:0;list-style:none}.span{grid-template-columns:var(--name-w) minmax(0, 1fr);gap:var(--space-md);width:100%;min-height:48px;padding:0 var(--space-lg);color:var(--color-muted);font:inherit;text-align:left;cursor:pointer;transition:background-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out);background:0 0;border:0;align-items:center;display:grid}.span:hover,.span[aria-pressed=true]{background:var(--color-paper-3);color:var(--color-ink)}.span:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.span__name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.span__track{height:10px;position:relative}.span__bar{width:calc(var(--l) * 1%);background:var(--color-accent);transform-origin:0;animation:bar-draw .52s var(--ease-out) both;animation-delay:calc(var(--s) * 8ms + .2s);min-width:4px;position:absolute;inset-block:0;inset-inline-start:calc(var(--s) * 1%)}.span__bar.is-par{background:var(--color-accent-dim)}.span[aria-pressed=true] .span__bar.is-par{background:var(--color-accent)}@keyframes bar-draw{0%{transform:scaleX(0)}}.trace__playhead{pointer-events:none;animation:1.2s linear .2s both sweep;position:absolute;inset-block:0;inset-inline-start:calc(var(--space-lg) + var(--name-w) + var(--space-md));inset-inline-end:var(--space-lg)}.trace__playhead:before{content:"";background:var(--color-ink);width:1px;position:absolute;inset-block:0;inset-inline-start:0}@keyframes sweep{0%{opacity:1;transform:translate(0)}90%{opacity:1}to{opacity:0;transform:translate(100%)}}.trace__note{min-height:calc(2lh + 2 * var(--space-md));padding:var(--space-md) var(--space-lg);border-top:1px solid var(--color-rule);font:400 var(--text-md)/1.5 var(--font-body);color:var(--color-ink)}.trace__cap{justify-content:space-between;align-items:center;gap:var(--space-lg);padding:var(--space-sm) var(--space-lg);border-top:1px solid var(--color-rule);color:var(--color-muted);display:flex}html:not(.js) [data-replay]{display:none}.figures-band{padding-block:var(--space-2xl);background:var(--color-paper-2);color:var(--color-ink);border-block:1px solid var(--color-rule)}.figures{grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.figures--3{grid-template-columns:repeat(3,minmax(0,1fr))}.figures>li{align-content:start;gap:var(--space-sm);padding-inline:var(--space-lg);border-inline-start:1px solid var(--color-rule);display:grid}.figures>li:first-child{border-inline-start:0;padding-inline-start:0}.figures>li:last-child{padding-inline-end:0}.figure{font:400 var(--text-display-s)/1 var(--font-mono);letter-spacing:-.04em;color:var(--color-ink);font-variant-numeric:tabular-nums}.figure__note{max-width:30ch;font:400 var(--text-sm)/1.5 var(--font-mono);color:var(--color-muted)}.section{padding-block-start:var(--section-gap)}.work{padding-block-start:var(--section-gap-l)}.head{margin-bottom:var(--space-2xl)}.head--split{gap:var(--gap-columns);grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:end;display:grid}.head h2{max-width:16ch;line-height:1.02}.head .lead{padding-bottom:var(--space-2xs);color:var(--color-ink-2)}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){[data-reveal]{animation:linear both rise view();animation-range:entry entry 50%}}}@keyframes rise{0%{opacity:.01;transform:translateY(32px)}}.tabs{border-bottom:1px solid var(--color-rule);scrollbar-width:none;display:flex;position:relative;overflow-x:auto}html:not(.js) .tabs{display:none}.tabs [role=tab]{min-height:52px;padding:0 var(--space-lg);font:600 var(--text-md)/1 var(--font-body);color:var(--color-muted);white-space:nowrap;cursor:pointer;transition:color var(--dur-short) var(--ease-out);background:0 0;border:0}.tabs [role=tab]:first-of-type{padding-inline-start:0}.tabs [role=tab]:hover,.tabs [role=tab][aria-selected=true]{color:var(--color-ink)}.tabs [role=tab]:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.tabs__mark{background:var(--color-accent);transform-origin:0;width:100px;height:2px;transition:transform var(--dur-long) var(--ease-out);position:absolute;bottom:0;left:0;transform:scaleX(0)}.panels{padding-top:var(--space-2xl)}.panel{gap:var(--space-3xl);grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;display:grid}.switcher.is-ready .panel{view-transition-name:cap-panel}html:not(.js) .panel+.panel{margin-top:var(--space-3xl)}.panel__text h3{font-size:var(--text-2xl);max-width:18ch;line-height:1.1}.panel__text p{margin-top:var(--space-md);color:var(--color-ink-2);max-width:46ch}.tags{gap:var(--space-xs);margin:var(--space-xl) 0 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.tags li{padding:var(--space-2xs) var(--space-sm);border:1px solid var(--color-rule-2);font-size:var(--text-sm);color:var(--color-ink-2)}.tags--lg li{padding:var(--space-xs) var(--space-md);font-size:var(--text-md)}.code{background:var(--color-paper-2);border:1px solid var(--color-rule);min-width:0;margin:0}.code pre{padding:var(--space-lg);font:400 var(--text-sm)/1.7 var(--font-mono);color:var(--color-ink-2);tab-size:2;margin:0;overflow-x:auto}.code .c{color:var(--color-muted)}.code .k{color:var(--color-ink);font-weight:600}.code .a{color:var(--color-accent)}.code .add,.code .del{margin-inline:calc(-1 * var(--space-lg));padding-inline:var(--space-lg);display:block}.code .add{background:var(--color-accent-wash);color:var(--color-ink)}.code .add:before{content:"+";color:var(--color-accent)}.code .del{color:var(--color-muted)}.code .del:before{content:"-"}.code figcaption{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-lg);border-top:1px solid var(--color-rule);font:400 var(--text-sm)/1.4 var(--font-mono);color:var(--color-muted);display:flex}.code figcaption:only-child{border-top:0}.stream__head{justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) var(--space-lg);border-bottom:1px solid var(--color-rule-2);font:400 var(--text-sm)/1.4 var(--font-mono);color:var(--color-ink-2);display:flex}.stream__window{height:304px;overflow:hidden}.stream__rows{border-collapse:collapse;width:100%;font:400 var(--text-sm)/1 var(--font-mono);animation:18s linear infinite stream-up}[data-loop]:not(.is-running) .stream__rows{animation-play-state:paused}.stream__rows td{padding:var(--space-sm) var(--space-lg);border-bottom:1px solid var(--color-rule);color:var(--color-ink-2);white-space:nowrap}.stream__rows td:first-child{color:var(--color-muted);font-variant-numeric:tabular-nums}.stream__rows td:nth-child(2){color:var(--color-ink)}.stream__rows td:last-child{text-align:right}@keyframes stream-up{to{transform:translateY(-50%)}}html:not(.js) [data-loop-toggle]{display:none}@media (prefers-reduced-motion:reduce){.stream__rows{animation:none}}.log{margin:0;padding:0;list-style:none}.log__item{border-bottom:1px solid var(--color-rule)}.log summary{gap:var(--gap-columns);padding-block:var(--space-lg);cursor:pointer;grid-template-columns:minmax(0,2fr) minmax(0,3fr) minmax(0,3fr) minmax(0,3fr) 24px;align-items:baseline;list-style:none;display:grid}.log summary::-webkit-details-marker{display:none}.log summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:4px}.log__years{font:400 var(--text-sm)/1.4 var(--font-mono);color:var(--color-muted);font-variant-numeric:tabular-nums}.log__org{font:800 var(--text-title)/1.15 var(--font-display);letter-spacing:-.02em;color:var(--color-ink);transition:color var(--dur-short) var(--ease-out)}.log summary:hover .log__org{color:var(--color-accent)}.log__role{color:var(--color-ink-2)}.log__line{color:var(--color-ink);grid-column:2/span 3}.log__span{background:var(--color-rule);align-self:center;height:8px;position:relative}.log__span i{width:calc(var(--l) * 1%);background:var(--color-accent-dim);transform-origin:0;position:absolute;inset-block:0;inset-inline-start:calc(var(--s) * 1%)}.log__item:first-child .log__span i{background:var(--color-accent)}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.log__span i{animation:linear both bar-draw view();animation-range:entry 20% cover 40%}}}.log__axis{gap:var(--gap-columns);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-rule);font:400 var(--text-sm)/1 var(--font-mono);color:var(--color-muted);grid-template-columns:minmax(0,2fr) minmax(0,3fr) minmax(0,3fr) minmax(0,3fr) 24px;display:grid}.log__axis span{grid-column:4;justify-content:space-between;display:flex}.log__toggle{place-self:center end;width:16px;height:16px;position:relative}.log__toggle:before,.log__toggle:after{content:"";inset-inline:0;background:var(--color-ink-2);height:2px;transition:transform var(--dur-short) var(--ease-out);position:absolute;top:7px}.log__toggle:after{transform:rotate(90deg)}details[open] .log__toggle:after{transform:rotate(0)}.log__more{column-gap:var(--gap-columns);row-gap:var(--space-md);padding:0 0 var(--space-xl);grid-template-columns:minmax(0,2fr) minmax(0,3fr) minmax(0,3fr) minmax(0,3fr) 24px;display:grid}.log__more ul{gap:var(--space-sm);grid-column:2/span 3;margin:0;padding:0;list-style:none;display:grid}.log__more li{max-width:72ch;border-inline-start:1px solid var(--color-rule-2);color:var(--color-ink-2);padding-inline-start:var(--space-md)}@media (prefers-reduced-motion:no-preference){details[open] .log__more{animation:settle var(--dur-long) var(--ease-out)}}details:not([open]) .log__more{display:none}.creds{gap:var(--space-2xs);margin:var(--space-xl) 0 0;font-size:var(--text-sm);color:var(--color-muted);padding:0;list-style:none;display:grid}.projects{padding-block-start:var(--section-gap-l)}.feature{gap:var(--space-3xl);padding:var(--space-xl);background:var(--color-paper-2);color:inherit;grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;text-decoration:none;display:grid}.feature:focus-visible{outline:2px solid var(--color-focus);outline-offset:4px}.feature__status{font:400 var(--text-sm)/1.4 var(--font-mono);color:var(--color-accent)}.feature__name{margin-top:var(--space-sm);font-size:var(--text-section);line-height:1.02}.feature__text p{margin-top:var(--space-md);max-width:46ch;color:var(--color-ink-2)}.feature__go{margin-top:var(--space-xl);text-decoration:underline;text-decoration-color:var(--color-rule-2);text-underline-offset:.3em;transition:text-decoration-color var(--dur-short) var(--ease-out);font-weight:600;display:inline-block}.feature:hover .feature__go{text-decoration-color:var(--color-accent)}.feature__shot{margin:0}.feature__shot img{width:100%;height:auto}.index{margin:var(--space-2xl) 0 0;border-top:1px solid var(--color-rule);padding:0;list-style:none}.index li{border-bottom:1px solid var(--color-rule)}.index__row{gap:var(--gap-columns);padding-block:var(--space-lg);color:inherit;grid-template-columns:minmax(0,2fr) minmax(0,4fr) minmax(0,4fr) minmax(0,2fr);align-items:baseline;text-decoration:none;display:grid}.index__row:focus-visible{outline:2px solid var(--color-focus);outline-offset:4px}.index__years{font:400 var(--text-sm)/1.4 var(--font-mono);color:var(--color-muted)}.index__name{font:800 var(--text-title)/1.15 var(--font-display);letter-spacing:-.02em;transition:transform var(--dur-short) var(--ease-out)}.index__row:hover .index__name{transform:translateX(var(--space-xs))}.index__line{color:var(--color-ink-2)}.index__status{font-size:var(--text-sm);color:var(--color-muted);text-align:right}.off__grid{gap:var(--gap-columns);grid-template-rows:auto minmax(0,1fr);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.off__photo{gap:var(--space-xs);grid-template-rows:minmax(0,1fr) auto;min-width:0;min-height:0;margin:0;display:grid}.off__photo picture{min-height:0;display:block}.off__photo img{object-fit:cover;object-position:50% 30%;width:100%;height:100%}.off__photo--tall{grid-area:1/1/span 2/span 5;grid-template-rows:auto auto;align-content:start}.off__photo--tall img{aspect-ratio:3/4;height:auto}.off__file{grid-area:1/6/auto/span 7}.off__photo--a{grid-area:2/6/auto/span 7}.off__photo--a picture{position:relative}.off__photo--a img{object-position:50% 28%;position:absolute;inset:0}.off__photo figcaption{font-size:var(--text-sm);color:var(--color-muted)}.off__file pre{font-size:var(--text-md);line-height:1.75}.contact{padding-block:var(--section-gap-l)}.contact__in{gap:var(--space-3xl);padding-top:var(--space-2xl);border-top:1px solid var(--color-rule);grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;display:grid}.contact__h{font-size:var(--text-display);max-width:14ch;line-height:1}.contact__side .lead{color:var(--color-ink-2)}.contact__side .actions{margin-top:var(--space-lg)}.copyline{align-items:center;gap:var(--space-sm);margin-top:var(--space-lg);flex-wrap:wrap;display:flex}.copyline code{font-size:var(--text-sm);color:var(--color-ink-2)}.site-foot{padding-block:var(--space-3xl) var(--space-xl);border-top:1px solid var(--color-rule)}.site-foot__mark{font:400 clamp(2.5rem, 10.5vw, 9.5rem)/.9 var(--font-mono);letter-spacing:-.06em;color:var(--color-ink-2);white-space:nowrap}.site-foot__row{justify-content:space-between;gap:var(--space-md) var(--space-xl);margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--color-rule);font-size:var(--text-sm);color:var(--color-muted);flex-wrap:wrap;display:flex}.site-foot__links{gap:var(--space-lg);margin:0;padding:0;list-style:none;display:flex}.site-foot__links a{color:var(--color-ink-2)}.site-foot__links a:hover{color:var(--color-ink)}.proj-head{padding-block:var(--space-2xl)}.proj-head__in{gap:var(--space-3xl);margin-top:var(--space-lg);grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;display:grid}.proj-code pre{padding:var(--space-xl);font-size:var(--text-md);line-height:1.7}.back{min-height:44px;font:400 var(--text-sm)/1 var(--font-mono);color:var(--color-ink-2);text-decoration:underline;text-decoration-color:var(--color-rule-2);text-underline-offset:.3em;align-items:center;display:inline-flex}.back:hover{color:var(--color-ink)}.proj-head h1{font-size:var(--text-display-s);max-width:16ch}.proj-head .lead{margin-top:var(--space-lg);max-width:56ch;color:var(--color-ink-2)}.meta{gap:var(--space-lg) var(--gap-columns);margin:var(--space-2xl) 0 0;padding-top:var(--space-lg);border-top:1px solid var(--color-rule);grid-template-columns:minmax(0,2fr) minmax(0,2fr) minmax(0,2fr) minmax(0,6fr);display:grid}.meta__stack dd{color:var(--color-ink-2)}.meta dt{font-size:var(--text-sm);color:var(--color-muted)}.meta dd{margin:var(--space-2xs) 0 0}.meta dd a{color:var(--color-ink);text-decoration-color:var(--color-accent)}.proj-shot{margin:0}.proj-shot img{outline:1px solid var(--color-rule);width:100%;height:auto}.proj-shot figcaption{margin-top:var(--space-xs);font-size:var(--text-sm);color:var(--color-muted)}.proj-how__in{gap:var(--gap-columns);grid-template-columns:minmax(0,4fr) minmax(0,8fr);align-items:start;display:grid}.proj-how__in h2{top:calc(var(--nav-h) + var(--space-xl));position:sticky}.rows{border-top:1px solid var(--color-rule);margin:0;padding:0;list-style:none}.rows li{gap:var(--gap-columns);padding-block:var(--space-xl);border-bottom:1px solid var(--color-rule);grid-template-columns:minmax(0,3fr) minmax(0,5fr);display:grid}.rows p{color:var(--color-ink-2)}.rows--history h3{font:400 var(--text-md)/1.5 var(--font-mono);letter-spacing:0;color:var(--color-muted)}.proj .figures-band{margin-top:var(--section-gap-s)}.proj-history,.proj-how{padding-block-start:var(--section-gap-l)}.next{padding-block:var(--section-gap) var(--space-3xl)}.next__link{gap:var(--space-sm);padding-top:var(--space-xl);border-top:1px solid var(--color-rule);color:inherit;text-decoration:none;display:grid}.next__label{font:400 var(--text-sm)/1.4 var(--font-mono);color:var(--color-muted)}.next__name{font:800 var(--text-display-s)/1.02 var(--font-display);letter-spacing:-.035em;transition:transform var(--dur-short) var(--ease-out);justify-self:start}.next__link:hover .next__name{transform:translateX(var(--space-sm))}.lost{padding-block:var(--space-4xl) var(--space-3xl)}.lost__code{font:400 clamp(6rem, 18vw, 15rem)/.9 var(--font-mono);letter-spacing:-.06em;color:var(--color-ink-2)}.lost h1{margin-top:var(--space-lg)}.lost .lead{margin-top:var(--space-md);color:var(--color-ink-2)}@view-transition{navigation:auto;types:page}html:active-view-transition-type(page)::view-transition-old(root){animation:vt-out var(--dur-short) var(--ease-in) both}html:active-view-transition-type(page)::view-transition-new(root){animation:vt-in var(--dur-long) var(--ease-out) both}html:active-view-transition-type(tab)::view-transition-old(root),html:active-view-transition-type(tab)::view-transition-new(root){animation:none}::view-transition-group(*){animation-duration:var(--dur-long);animation-timing-function:var(--ease-out)}::view-transition-old(cap-panel){animation:vt-fade var(--dur-short) var(--ease-in) both}::view-transition-new(cap-panel){animation:vt-in var(--dur-long) var(--ease-out) both}@keyframes vt-out{to{opacity:0;transform:translateY(-12px)}}@keyframes vt-in{0%{opacity:0;transform:translateY(16px)}}@keyframes vt-fade{to{opacity:0}}@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}@media (width<=60rem){.hero{min-height:auto;padding-block:var(--space-2xl)}.hero__in,.panel,.feature,.contact__in,.proj-how__in,.proj-head__in{gap:var(--space-xl);grid-template-columns:minmax(0,1fr)}.proj-head__in{min-height:0}.meta{grid-template-columns:repeat(3,minmax(0,1fr))}.meta__stack{grid-column:1/-1}.head--split{gap:var(--space-md);grid-template-columns:minmax(0,1fr)}.figures{row-gap:var(--space-xl);grid-template-columns:repeat(2,minmax(0,1fr))}.figures>li:nth-child(odd){border-inline-start:0;padding-inline-start:0}.figures--3{grid-template-columns:repeat(3,minmax(0,1fr))}.figures--3>li:nth-child(odd){border-inline-start:1px solid var(--color-rule);padding-inline-start:var(--space-lg)}.figures--3>li:first-child{border-inline-start:0;padding-inline-start:0}.feature{padding:var(--space-lg)}.proj-how__in h2{position:static}.off__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.off__photo--tall,.off__file{grid-area:auto/1/auto/-1}.off__grid{grid-template-rows:none}.off__photo--a{grid-area:auto/1/auto/-1}.off__photo{grid-template-rows:auto auto;align-content:start}.off__photo--a img{aspect-ratio:4/3;height:auto;position:static}.log summary{row-gap:var(--space-2xs);grid-template-columns:minmax(0,1fr) 24px}.log__years{grid-area:1/1}.log__org,.log__role,.log__span{grid-column:1}.log__span{margin-top:var(--space-xs)}.log__axis{grid-template-columns:minmax(0,1fr) 24px}.log__axis span{grid-column:1}.log__toggle{grid-area:1/2}.log__more{grid-template-columns:minmax(0,1fr)}.log__line,.log__more ul{grid-column:1}.index__row{row-gap:var(--space-xs);grid-template-columns:minmax(0,1fr) auto}.index__years{grid-area:1/1}.index__status{grid-area:1/2}.index__name,.index__line{grid-column:1/-1}}@media (width<=48rem){.site-nav__links{display:none}.btn--nav{margin-inline-start:auto}}@media (width<=40rem){.trace{--name-w:8.75rem;font-size:var(--text-xs)}.span,.trace__head,.trace__note,.trace__cap{padding-inline:var(--space-md)}.trace__playhead{inset-inline-start:calc(var(--space-md) + var(--name-w) + var(--space-md));inset-inline-end:var(--space-md)}.trace__cap{flex-direction:column;align-items:flex-start}.figures,.figures--3{grid-template-columns:minmax(0,1fr)}.figures>li,.figures--3>li:nth-child(odd){padding:var(--space-md) 0 0;border-inline-start:0;border-top:1px solid var(--color-rule)}.figures>li:first-child,.figures--3>li:first-child{border-top:0;padding-top:0}.rows li{gap:var(--space-xs);grid-template-columns:minmax(0,1fr)}.code pre{padding:var(--space-md);font-size:var(--text-xs)}.tabs{column-gap:var(--space-lg);flex-wrap:wrap;overflow:visible}.tabs [role=tab]{min-height:44px;padding-inline:0}.tabs [role=tab][aria-selected=true]{box-shadow:inset 0 -2px 0 var(--color-accent)}.tabs__mark{display:none}.site-foot__mark{white-space:normal;overflow-wrap:anywhere}}html,body{overflow-x:clip}
