@layer tokens,base,type,layout,parts,motion,util;@layer tokens{:root{color-scheme:light;--paper: #f0eee8;--paper-deep: #e5e2da;--ink: #141412;--body: #55524c;--quiet: #67645e;--pixel: #ff4b22;--pixel-ink: #b83410;--rule: rgba(20, 20, 18, .2);--rule-light: rgba(240, 238, 232, .2);--soon-quiet: #9f9c95;--soon-em: #8d8a84;--sh-background: var(--ink);--sh-foreground: #e6e3dc;--sh-token-comment: #8d8a84;--sh-token-string: #d8b48a;--sh-token-constant: #d8b48a;--sh-token-keyword: #ff7a55;--sh-token-function: #9fc4d6;--sh-token-parameter: #e6e3dc;--sh-token-string-expression: #b7c99a;--sh-token-punctuation: #9f9c95;--sh-token-link: #9fc4d6;--font-sans: "Instrument Sans", "Instrument Sans Fallback", -apple-system, "Helvetica Neue", Arial, sans-serif;--font-serif: "Instrument Serif", "Instrument Serif Fallback", Georgia, "Times New Roman", serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;--text-label: clamp(.68rem, .63rem + .18vw, .75rem);--text-body: clamp(1rem, .95rem + .3vw, 1.125rem);--text-lead: clamp(1.05rem, .95rem + .5vw, 1.28rem);--text-code: clamp(.8rem, .76rem + .2vw, .875rem);--text-xl: clamp(1.8rem, 1.4rem + 1.8vw, 2.9rem);--text-h2: clamp(3rem, 1.9rem + 5.2vw, 7.25rem);--text-hero: clamp(3.55rem, 1.6rem + 9.4vw, 13rem);--track-display: -.038em;--track-label: .13em;--space-2xs: clamp(.5rem, .45rem + .2vw, .65rem);--space-xs: clamp(.75rem, .65rem + .4vw, 1rem);--space-s: clamp(1.15rem, 1rem + .6vw, 1.6rem);--space-m: clamp(1.75rem, 1.4rem + 1.4vw, 2.75rem);--space-l: clamp(2.75rem, 2.1rem + 2.6vw, 4.5rem);--space-xl: clamp(4rem, 2.9rem + 4.4vw, 7rem);--space-2xl: clamp(5rem, 3.4rem + 5.6vw, 8rem);--gutter: clamp(1.15rem, 3vw, 2.75rem);--section-space: var(--space-2xl);--copy-space: var(--space-l);--measure: 36rem;--bar-h: clamp(5.25rem, 8vw, 6.5rem);--t-instant: .12s;--t-fast: .24s;--t-base: .42s;--t-slow: .7s;--t-epic: 1.1s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-inout: cubic-bezier(.65, 0, .35, 1);--ease-exit: cubic-bezier(.7, 0, .84, 0);--stagger: 70ms;--stagger-word: 90ms;--stagger-menu: 55ms;--d-xs: 12px;--d-sm: 24px;--d-md: 40px}}@layer base{*,*:before,*:after{box-sizing:border-box}html{min-width:320px;overflow-x:clip;background:var(--paper);scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--pixel-ink);outline-offset:5px}.soon :focus-visible,.site-footer :focus-visible{outline-color:var(--pixel)}::selection{background:var(--pixel);color:var(--ink)}::marker{color:var(--quiet)}@supports (scrollbar-color: auto){html{scrollbar-color:var(--quiet) transparent}}.skip-link{position:fixed;z-index:100;top:.75rem;left:.75rem;padding:.75rem 1rem;background:var(--ink);color:var(--paper);font-size:.75rem;translate:0 -160%;transition:translate var(--t-fast) var(--ease-out)}.skip-link:focus{translate:0 0}main:focus{outline:none}@media(min-width:48rem){body:after{position:fixed;z-index:50;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");content:"";mix-blend-mode:overlay;opacity:.045;pointer-events:none}}@media(prefers-reduced-motion:reduce){body:after{position:absolute}}.sprite{position:absolute;width:0;height:0;overflow:hidden}}@layer type{@font-face{font-family:Instrument Sans;src:url(/fonts/instrument-sans-var-latin-v1.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap}@font-face{font-family:"Instrument Serif";src:url(/fonts/instrument-serif-italic-latin-v1.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono-latin-v1.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Instrument Sans Fallback;src:local("Arial"),local("Helvetica Neue"),local("Liberation Sans");size-adjust:101.67%;ascent-override:95.41%;descent-override:24.59%;line-gap-override:0%}@font-face{font-family:"Instrument Serif Fallback";src:local("Times New Roman"),local("Georgia"),local("Liberation Serif");font-style:italic;size-adjust:88.13%;ascent-override:112.34%;descent-override:35.18%;line-gap-override:0%}body{font-family:var(--font-sans);font-size:var(--text-body)}h1,h2{margin:0;font-weight:500;letter-spacing:var(--track-display);text-wrap:balance}p{text-wrap:pretty}em,h1>span{font-family:var(--font-serif);font-style:italic;font-weight:400}.label{font-family:var(--font-mono);font-size:var(--text-label);font-variant-numeric:tabular-nums;letter-spacing:var(--track-label);text-transform:uppercase}}@layer layout{.section-rule{position:relative}.section-rule:before{position:absolute;top:0;right:0;left:0;height:1px;background:var(--rule);content:""}.manifesto,.interlude{display:grid;grid-template-columns:minmax(10rem,25%) 1fr;gap:clamp(2rem,6vw,6.5rem);padding:var(--section-space) var(--gutter)}.section-label{display:flex;gap:1rem;color:var(--quiet)}.section-label span{color:var(--ink);opacity:.68}.section-label p,.chapter-meta p{margin:0}.manifesto-copy{max-width:73rem}.kicker,.supporting-copy,.chapter-copy>p,.interlude-copy>p,.soon-message>p{color:var(--body);font-size:var(--text-lead);line-height:1.6}.kicker{margin:0 0 var(--copy-space)}.manifesto h2,.interlude h2{font-size:var(--text-h2);line-height:.92}.manifesto h2 em,.chapter h2 em,.interlude h2 em,.soon h2 em{color:var(--quiet)}.supporting-copy{max-width:35rem;margin:var(--copy-space) 0 0 auto}.interlude{background:var(--paper-deep)}.interlude-copy>p{max-width:39rem;margin:var(--copy-space) 0 0}@media(max-width:56.25rem){.manifesto,.interlude{grid-template-columns:1fr}.manifesto-copy,.interlude-copy{padding-left:clamp(0rem,8vw,5rem)}}@media(max-width:37.5rem){.manifesto,.interlude{gap:2.75rem;padding-top:4.5rem;padding-bottom:4.5rem}.manifesto-copy,.interlude-copy{padding-left:0}.supporting-copy{margin-left:0}}}@layer parts{.header{position:absolute;z-index:20;top:0;left:var(--gutter);right:var(--gutter);display:grid;grid-template-columns:1fr auto 1fr;min-height:clamp(5.25rem,8vw,6.5rem);align-items:center;border-bottom:1px solid var(--rule)}.brand{display:inline-flex;min-height:2.75rem;align-items:center;justify-self:start;font-size:1.18rem;font-weight:700;letter-spacing:-.05em}.brand span{margin-left:.16rem;color:var(--pixel-ink);font-size:.42em;vertical-align:top}.navigation{display:flex;gap:clamp(1.25rem,3vw,2.75rem)}.navigation a,.text-link,.site-footer a{position:relative}.navigation a{display:inline-flex;min-height:2.75rem;align-items:center}.navigation a:after,.text-link:after,.site-footer a:after{position:absolute;right:0;bottom:-.4rem;left:0;height:1px;background:currentColor;content:"";scale:0 1;transform-origin:right;transition:scale var(--t-fast) var(--ease-out)}@media(hover:hover)and (pointer:fine){.navigation a:hover:after,.text-link:hover:after,.site-footer a:hover:after{scale:1 1;transform-origin:left}}.navigation a:focus-visible:after,.text-link:focus-visible:after,.site-footer a:focus-visible:after{scale:1 1;transform-origin:left}.status{display:flex;align-items:center;justify-self:end;gap:.65rem;margin:0;color:var(--quiet)}.status .dot{display:inline-block;width:.42rem;height:.42rem;background:var(--pixel);animation:blink 3.6s var(--ease-inout) infinite}.nav-toggle{display:none;justify-self:end;padding:.9rem;margin-right:-.9rem;border:0;background:none;color:inherit;cursor:pointer}.nav-toggle .icon{display:block;width:1.5rem;height:1.5rem}@media(max-width:56.25rem){.header{position:fixed;left:0;right:0;grid-template-columns:1fr auto auto;gap:1rem;padding-top:env(safe-area-inset-top);padding-inline:var(--gutter);transition:background-color var(--t-base) var(--ease-out),color var(--t-base) var(--ease-out)}.navigation{display:none}.nav-toggle{display:block}.header[data-stuck]{background:color-mix(in srgb,var(--paper) 86%,transparent);backdrop-filter:blur(10px)}.header[data-tone=dark]{border-bottom-color:var(--rule-light);color:var(--paper)}.header[data-tone=dark][data-stuck]{background:color-mix(in srgb,var(--ink) 86%,transparent)}.header[data-tone=dark] .status{color:var(--soon-quiet)}.header[data-tone=dark] .brand span{color:var(--pixel)}}@media(max-width:37.5rem){.status{font-size:0}.status .dot{width:.5rem;height:.5rem}}}@layer parts{.menu{position:fixed;z-index:15;inset:0;display:flex;flex-direction:column;justify-content:center;gap:clamp(2rem,6vh,3.5rem);padding:calc(clamp(5.25rem,8vw,6.5rem) + env(safe-area-inset-top)) var(--gutter) calc(var(--gutter) + env(safe-area-inset-bottom));background:var(--paper);opacity:0;overscroll-behavior:contain;transition:opacity var(--t-base) var(--ease-out),translate var(--t-base) var(--ease-out),visibility 0s linear var(--t-base);translate:0 var(--d-xs);visibility:hidden}html.menu-open .menu{opacity:1;translate:0 0;visibility:visible;transition:opacity var(--t-base) var(--ease-out),translate var(--t-base) var(--ease-out),visibility 0s linear 0s}html.menu-open{overflow:hidden}.menu nav{display:flex;flex-direction:column;gap:clamp(.75rem,2vh,1.25rem)}.menu nav a{display:flex;align-items:baseline;gap:1rem;font-size:var(--text-xl);font-weight:500;letter-spacing:var(--track-display);line-height:1}.menu nav a .label{color:var(--quiet)}.menu-mail{display:inline-flex;align-items:center;align-self:flex-start;gap:.6rem;border-bottom:1px solid var(--rule);padding-bottom:.35rem;font-size:var(--text-lead);overflow-wrap:anywhere;transition:border-color var(--t-fast) var(--ease-out)}.menu-mail:hover,.menu-mail:focus-visible{border-color:var(--pixel)}.menu-meta{margin:0;color:var(--quiet)}html:not(.no-js) .menu nav a,html:not(.no-js) .menu-mail,html:not(.no-js) .menu-meta{opacity:0;translate:0 var(--d-sm);transition:opacity var(--t-base) var(--ease-out),translate var(--t-base) var(--ease-out)}html.menu-open .menu nav a,html.menu-open .menu-mail,html.menu-open .menu-meta{opacity:1;translate:0 0;transition-delay:calc(var(--stagger-word) + var(--i, 0) * var(--stagger-menu))}@media(min-width:56.3125rem){.menu{display:none}}@media(prefers-reduced-motion:reduce){.menu,html:not(.no-js) .menu nav a,html:not(.no-js) .menu-mail,html:not(.no-js) .menu-meta{translate:none}}}@layer parts{.hero{position:relative;display:grid;min-height:max(45rem,100svh);align-content:center;padding:clamp(8.5rem,14vh,11rem) var(--gutter) var(--gutter);overflow:clip}.hero-canvas{position:absolute;z-index:0;inset:0;display:block;width:100%;height:100%;pointer-events:none}.hero>*:not(.hero-canvas){position:relative;z-index:1}.hero-meta{display:flex;justify-content:space-between;gap:1rem;margin:0 0 var(--space-m);padding-bottom:var(--space-xs);border-bottom:1px solid var(--rule);color:var(--quiet)}.hero-meta span:nth-child(2){color:var(--ink);opacity:.68}h1{font-size:var(--text-hero);line-height:.78}h1>span{display:inline-flex;align-items:baseline;color:var(--quiet);letter-spacing:-.03em}h1 .dot{display:inline-block;width:.09em;height:.09em;margin-left:.08em;background:var(--pixel);translate:0 -.02em}html:not(.no-js) h1 .dot{animation:seed var(--t-base) var(--ease-out) var(--t-instant) both}.hero-line-3{display:inline-block;margin-left:.14em}.hero-bottom{display:grid;grid-template-columns:minmax(16rem,32rem) auto;gap:2rem;align-items:end;justify-content:space-between;margin-top:var(--space-l);padding-top:var(--space-s);border-top:1px solid var(--rule)}.hero-bottom p{margin:0;color:var(--body);line-height:1.55}.text-link{display:inline-flex;align-items:center;gap:.5rem;color:var(--quiet)}@media(max-width:56.25rem){.hero{min-height:min(100svh,44rem);grid-template-rows:auto 1fr auto}.hero h1{align-self:center}}@media(max-width:37.5rem){.hero{padding-top:7.5rem;padding-bottom:1.5rem}h1{font-size:clamp(2.9rem,13.5vw,4rem);line-height:.85}.hero-meta{flex-wrap:wrap;gap:.35rem 1rem}.hero-bottom{grid-template-columns:1fr;gap:1.5rem}}}@layer parts{.notfound{display:grid;min-height:100svh;align-content:center;gap:var(--space-m);padding:clamp(8.5rem,14vh,11rem) var(--gutter) var(--gutter)}.notfound-code{margin:0;color:var(--pixel-ink)}.notfound h1{font-size:var(--text-h2);line-height:.9}.notfound .text-link{justify-self:start}.icon--flip{scale:-1 1}}@layer parts{.journey{--p: 0;display:grid;grid-template-columns:minmax(7rem,25%) 1fr;padding:0 var(--gutter)}.journey-guide{position:relative;border-right:1px solid var(--rule);overflow:visible}.guide-line{position:absolute;top:0;left:50%;width:1px;height:100%;background:linear-gradient(transparent,var(--rule) 12%,var(--rule) 88%,transparent)}.guide-trail{position:absolute;top:0;left:50%;width:1px;height:100%;background:var(--pixel);scale:1 var(--p);transform-origin:50% 0}.guide-pixel{position:sticky;z-index:1;top:45svh;display:block;width:14px;height:14px;margin-left:calc(50% - 7px);background:var(--pixel)}.guide-pixel.pop{animation:pop var(--t-fast) var(--ease-out)}.chapters{padding-left:clamp(2rem,8vw,9rem)}.chapter:first-child{padding-top:var(--space-l)}.chapter{display:grid;min-height:clamp(23rem,50svh,31rem);grid-template-columns:minmax(7rem,.35fr) 1fr;gap:var(--space-l);align-items:center;padding-block:var(--space-l);border-bottom:1px solid var(--rule)}.chapter:last-child{border-bottom:0}.chapter:nth-child(2) .chapter-copy{margin-left:clamp(0rem,6vw,8rem)}.chapter-meta{align-self:start;padding-top:.28em;color:var(--quiet)}.chapter-meta span{display:block;margin-bottom:var(--space-2xs);color:var(--ink);opacity:.68}.chapter-copy{max-width:58rem}.chapter h2{font-size:var(--text-h2);line-height:.88}.chapter-copy>p{max-width:31rem;margin:var(--copy-space) 0 0}html:not(.no-js) .chapter h2,html:not(.no-js) .chapter-meta span{transition:color var(--t-slow) var(--ease-out),opacity var(--t-slow) var(--ease-out)}html:not(.no-js) .journey[data-live] .chapter:not(.is-active) h2{color:var(--quiet)}html:not(.no-js) .journey[data-live] .chapter.is-active h2{color:var(--ink)}html:not(.no-js) .journey[data-live] .chapter.is-active .chapter-meta span{color:var(--pixel-ink);opacity:1}@media(max-width:56.25rem){.journey{grid-template-columns:clamp(4.5rem,15vw,7rem) 1fr}.chapter{min-height:clamp(19rem,44svh,25rem);grid-template-columns:1fr;align-content:center;gap:var(--space-m);padding-block:var(--space-l)}.chapter:nth-child(2) .chapter-copy{margin-left:0}.chapter-meta{align-self:auto;padding-top:0}}@media(max-width:37.5rem){.journey{grid-template-columns:3.25rem 1fr}.guide-pixel{width:10px;height:10px;margin-left:calc(50% - 5px)}.chapters{padding-left:1.25rem}.chapter{min-height:clamp(17rem,40svh,22rem)}}}@layer parts{.soon,.site-footer{background:var(--ink);color:var(--paper)}.soon{display:flex;min-height:clamp(30rem,66svh,40rem);flex-direction:column;justify-content:flex-start;padding:0 var(--gutter)}.soon-top{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:var(--bar-h);border-bottom:1px solid var(--rule-light);color:var(--soon-quiet)}.soon-top p{margin:0}.soon-top .pixel{grid-column:3;justify-self:end}.pixel--light{width:10px;height:10px;background:var(--pixel)}.soon-message{padding:var(--space-xl) 0 var(--space-l)}.soon-message>p{margin:0 0 var(--copy-space);color:var(--soon-quiet)}.soon h2{max-width:11ch;font-size:var(--text-hero);line-height:.82}.soon h2 em{color:var(--soon-em)}.contact-link{display:inline-flex;gap:.75rem;align-items:center;margin-top:var(--space-xl);border-bottom:1px solid rgba(240,238,232,.45);padding-bottom:.4rem;font-size:clamp(1.1rem,1.8vw,1.65rem);transition:border-color var(--t-fast) var(--ease-out)}.contact-link:hover,.contact-link:focus-visible{border-color:var(--pixel)}.site-footer{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:var(--bar-h);padding:0 var(--gutter);color:var(--soon-quiet)}.site-footer p{margin:0}.site-footer p:nth-of-type(2){justify-self:center}.site-footer a{display:inline-flex;min-height:2.75rem;align-items:center;gap:.5rem;justify-self:end;color:var(--paper)}@media(max-width:37.5rem){.soon{min-height:auto}.soon-top{grid-template-columns:1fr auto}.soon-top .pixel{grid-column:2}.site-footer{grid-template-columns:1fr auto}.site-footer p:nth-of-type(2){display:none}}}@layer parts{.blog-head{display:grid;grid-template-columns:minmax(10rem,25%) 1fr;gap:clamp(2rem,6vw,6.5rem);padding:calc(var(--bar-h) + var(--space-xl)) var(--gutter) var(--space-xl)}.blog-head h1{font-size:var(--text-h2);line-height:.92}.blog-head h1 em{color:var(--quiet)}.blog-head .supporting-copy{margin-left:0}.post-list-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-s);border-top:1px solid var(--rule);border-bottom:1px solid var(--ink);padding:var(--space-s) var(--gutter);margin:0;color:var(--ink);font-weight:400}.post-list-head span{color:var(--quiet)}.post-list{margin:0;padding:0 var(--gutter) var(--space-2xl);list-style:none}.post-row{position:relative}.post-row:first-child:before{display:none}.post-row>a{display:grid;grid-template-columns:minmax(10rem,25%) minmax(0,1fr) auto;gap:clamp(1rem,4vw,6.5rem);align-items:start;padding:var(--space-l) var(--gutter);margin-inline:calc(var(--gutter) * -1);transition:background-color var(--t-fast) var(--ease-out)}.post-meta{display:flex;flex-wrap:wrap;gap:.6rem;margin:0;color:var(--quiet)}.post-n{margin-right:.4rem;color:var(--ink);opacity:.68}.post-row h2{font-size:var(--text-xl);line-height:1.06;transition:translate var(--t-base) var(--ease-out)}.post-copy{min-width:0}.post-excerpt{max-width:35rem;margin:var(--space-xs) 0 0;color:var(--body);font-size:var(--text-body);line-height:1.6}.post-cue{display:inline-flex;align-items:center;align-self:center;gap:.5rem;color:var(--pixel-ink);white-space:nowrap}.post-cue .icon{width:.9rem;height:.9rem;transition:translate var(--t-fast) var(--ease-out)}@media(hover:hover)and (pointer:fine){.post-row>a:hover{background:var(--paper-deep)}.post-row>a:hover h2{translate:var(--space-2xs) 0}.post-row>a:hover .post-cue .icon{translate:.15rem -.15rem}}.post-row>a:focus-visible{background:var(--paper-deep)}.post-list:after{display:block;height:1px;background:var(--rule);content:""}@media(max-width:56.25rem){.blog-head{grid-template-columns:1fr;padding-top:calc(var(--bar-h) + var(--space-l))}.post-row>a{grid-template-columns:1fr;gap:var(--space-2xs);padding-block:var(--space-m)}.post-cue{align-self:start;margin-top:var(--space-xs)}}}@layer parts{.article{padding:calc(var(--bar-h) + var(--space-xl)) var(--gutter) var(--space-xl)}.article-head,.article-toc,.prose{max-width:var(--measure);margin-inline:auto}.article-head{margin-bottom:var(--space-xl)}.back{display:inline-flex;align-items:center;gap:.55rem;border:1px solid var(--rule);padding:.85rem .9rem;margin-bottom:var(--space-m);color:var(--ink);transition:background-color var(--t-fast) var(--ease-out),border-color var(--t-fast) var(--ease-out)}.back .icon{width:.95rem;height:.95rem;transition:translate var(--t-fast) var(--ease-out)}@media(hover:hover)and (pointer:fine){.back:hover{border-color:var(--ink);background:var(--paper-deep)}.back:hover .icon{translate:calc(var(--d-xs) * -.25) 0}}.back:focus-visible{background:var(--paper-deep)}.article-meta{display:flex;flex-wrap:wrap;gap:.6rem;margin:0 0 var(--space-s);color:var(--quiet)}.draft-flag{padding:.1rem .4rem;background:var(--pixel);color:var(--ink)}.article-head h1{font-size:var(--text-xl);line-height:1.04}.article-lead{margin:var(--space-s) 0 0;color:var(--body);font-size:var(--text-lead);line-height:1.5}.tags{display:flex;flex-wrap:wrap;gap:.5rem;margin:var(--space-m) 0 0;padding:0;list-style:none}.tags li{border:1px solid var(--rule);padding:.3rem .55rem;color:var(--quiet)}.article-toc{display:grid;grid-template-columns:minmax(10rem,25%) minmax(0,1fr);gap:clamp(1rem,4vw,3rem);border-block:1px solid var(--rule);padding-block:var(--space-s);margin-bottom:var(--space-xl)}.article-toc h2{margin:0;color:var(--quiet);font:inherit}.article-toc ol{display:grid;gap:var(--space-2xs);margin:0;padding:0;list-style:none;counter-reset:toc}.article-toc li{counter-increment:toc}.article-toc a{display:grid;grid-template-columns:2rem minmax(0,1fr);gap:var(--space-xs);min-height:2.75rem;align-items:center;font-family:var(--font-sans);font-size:var(--text-body);letter-spacing:0;line-height:1.35;text-transform:none;transition:color var(--t-fast) var(--ease-out)}.article-toc a:before{color:var(--quiet);font-family:var(--font-mono);font-size:var(--text-label);content:counter(toc,decimal-leading-zero)}@media(hover:hover)and (pointer:fine){.article-toc a:hover{color:var(--pixel-ink)}}.prose{color:var(--body);font-size:var(--text-body);line-height:1.72}.prose>*+*{margin-top:var(--space-s)}.prose h2,.prose h3{scroll-margin-top:calc(var(--bar-h) + var(--space-s));color:var(--ink);letter-spacing:var(--track-display);text-wrap:balance}.prose h2{font-size:var(--text-xl);font-weight:500;line-height:1.08}.prose h3{font-size:var(--text-lead);font-weight:600;letter-spacing:0;line-height:1.3}.prose>h2+*,.prose>h3+*{margin-top:var(--space-xs)}.prose>*+h2{margin-top:var(--space-l)}.prose>*+h3{margin-top:var(--space-m)}.prose .anchor{color:inherit}@media(hover:hover)and (pointer:fine){.prose .anchor:hover{color:var(--pixel-ink)}}.prose strong{color:var(--ink);font-weight:600}.prose a:not(.anchor){color:var(--pixel-ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em;transition:text-decoration-thickness var(--t-fast) var(--ease-out)}@media(hover:hover)and (pointer:fine){.prose a:not(.anchor):hover{text-decoration-thickness:2px}}.prose ul,.prose ol{padding-left:1.35rem}.prose li+li{margin-top:var(--space-2xs)}.prose ul{list-style:none;padding-left:1.1rem}.prose ul>li{position:relative}.prose ul>li:before{position:absolute;top:.72em;left:-1.1rem;width:.32rem;height:.32rem;background:var(--pixel);content:""}.prose blockquote{border-left:1px solid var(--rule);padding-left:var(--space-s);margin-inline:0;color:var(--quiet);font-family:var(--font-serif);font-size:var(--text-lead);font-style:italic;line-height:1.5}.prose blockquote p+p{margin-top:var(--space-2xs)}.prose hr{border:0;height:1px;background:var(--rule);margin-block:var(--space-l)}.prose :not(pre)>code{background:var(--paper-deep);padding:.15em .35em;color:var(--ink);font-family:var(--font-mono);font-size:.9em}.prose .figure{margin-inline:0}.prose .figure img{display:block;width:100%;height:auto}.prose .figure figcaption,.prose .table-scroll+p{margin-top:var(--space-2xs);color:var(--quiet);font-size:var(--text-label);line-height:1.5}.table-scroll{overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:var(--text-label)}.prose th,.prose td{border-bottom:1px solid var(--rule);padding:var(--space-2xs) var(--space-xs) var(--space-2xs) 0;text-align:left}.prose th{color:var(--ink);font-family:var(--font-mono);font-weight:400;letter-spacing:var(--track-label);text-transform:uppercase}.prose .code{background:var(--sh-background);margin-block:var(--space-m);margin-inline:calc(var(--space-m) * -1)}.code-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-s);border-bottom:1px solid var(--rule-light);padding:.7rem var(--space-s);color:var(--soon-quiet)}.code-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-copy{display:inline-flex;min-height:2.75rem;align-items:center;gap:.45rem;flex:none;border:0;padding:.75rem;margin:-.75rem -.6rem -.75rem 0;background:none;color:var(--soon-quiet);cursor:pointer;font:inherit;letter-spacing:inherit;text-transform:inherit;transition:color var(--t-fast) var(--ease-out)}.code-copy .icon{width:.85rem;height:.85rem}@media(hover:hover)and (pointer:fine){.code-copy:hover{color:var(--paper)}}.code-copy[data-copied]{color:var(--pixel)}.prose .code pre{overflow-x:auto;margin:0;padding:var(--space-s);font-size:var(--text-code);line-height:1.65;tab-size:2;scrollbar-width:thin;scrollbar-color:var(--soon-em) transparent;font-variant-ligatures:none}.prose .code code{font-family:var(--font-mono)}.prose .code .line{display:inline-block;min-width:100%}@media(max-width:56.25rem){.article{padding-top:calc(var(--bar-h) + var(--space-l))}.article-head{margin-bottom:var(--space-l)}.article-toc{grid-template-columns:1fr;gap:var(--space-xs);margin-bottom:var(--space-l)}.prose .code{margin-inline:calc(var(--gutter) * -1)}.code-bar,.prose .code pre{padding-inline:var(--gutter)}}@media(max-width:56.25rem){.page-article .header[data-stuck]{background:var(--paper);backdrop-filter:none}}.reading-bar{display:none}@supports (animation-timeline: scroll()){@media(prefers-reduced-motion:no-preference){.reading-bar{position:fixed;z-index:30;top:0;left:0;display:block;width:100%;height:2px;background:var(--pixel);animation:read linear both;animation-timeline:scroll();scale:0 1;transform-origin:left;pointer-events:none}@keyframes read{to{scale:1 1}}}}.article-foot{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:var(--space-m);padding:var(--space-l) var(--gutter) var(--space-2xl)}.related{display:flex;flex-direction:column;gap:var(--space-2xs);border-top:1px solid var(--rule);padding-top:var(--space-s);transition:border-color var(--t-fast) var(--ease-out)}.related .label{color:var(--quiet)}.related-title{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-xs);font-size:var(--text-lead);line-height:1.25;text-wrap:balance;transition:color var(--t-fast) var(--ease-out)}.related-title .icon{flex:none;width:.9rem;height:.9rem;color:var(--pixel-ink);transition:translate var(--t-fast) var(--ease-out)}.related-empty{border-top:1px solid var(--rule);padding-top:var(--space-s);margin:0;color:var(--quiet)}.related--mail .related-title{overflow-wrap:anywhere}@media(hover:hover)and (pointer:fine){.related:hover{border-color:var(--ink)}.related:hover .related-title{color:var(--pixel-ink)}.related:hover .related-title .icon{translate:.15rem -.15rem}}}@layer parts{.icon{display:inline-block;inline-size:1em;block-size:1em;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:square;stroke-linejoin:miter;vertical-align:-.09em}.text-link .icon,.site-footer a .icon,.contact-link .icon,.menu-mail .icon{color:var(--pixel-ink);transition:translate var(--t-fast) var(--ease-out)}.soon .icon,.site-footer .icon,.menu-mail .icon{color:var(--pixel)}@media(hover:hover)and (pointer:fine){.text-link:hover .icon{translate:0 3px}.site-footer a:hover .icon{translate:0 -3px}.contact-link:hover .icon,.menu-mail:hover .icon{translate:2px -2px}}.text-link:focus-visible .icon{translate:0 3px}.site-footer a:focus-visible .icon{translate:0 -3px}.contact-link:focus-visible .icon,.menu-mail:focus-visible .icon{translate:2px -2px}}@layer motion{html:not(.no-js) [data-reveal]{opacity:0}html:not(.no-js) [data-reveal=up]{translate:0 var(--d-sm)}html:not(.no-js) [data-reveal=clip]{clip-path:inset(0 0 100% 0);opacity:1}html:not(.no-js) [data-reveal=rule]:before{scale:0 1;transform-origin:left}html:not(.no-js) [data-reveal=rule]{opacity:1}html:not(.no-js) [data-reveal=words]{opacity:1}html:not(.no-js) [data-reveal=mark]{opacity:1;scale:0}html:not(.no-js) [data-reveal=mark].is-in{scale:1;transition:scale var(--t-base) var(--ease-out)}html:not(.no-js) [data-reveal].is-in{opacity:1;translate:none;clip-path:inset(0 0 0 0);transition:opacity var(--t-slow) var(--ease-out),translate var(--t-slow) var(--ease-out),clip-path var(--t-slow) var(--ease-out);transition-delay:calc(var(--i, 0) * var(--stagger))}html:not(.no-js) [data-reveal=rule].is-in:before{scale:1 1;transition:scale var(--t-epic) var(--ease-out)}html:not(.no-js) .word{display:inline-block;clip-path:inset(0 0 100% 0);translate:0 .12em}html:not(.no-js) .is-in .word{clip-path:inset(0 0 0 0);translate:0 0;transition:clip-path var(--t-slow) var(--ease-out),translate var(--t-slow) var(--ease-out);transition-delay:calc(var(--w, 0) * var(--stagger-word))}a:active,button:active{scale:.99;transition:scale var(--t-instant) var(--ease-out)}@keyframes seed{0%{scale:0}}@keyframes blink{50%{opacity:.45}}@keyframes pop{50%{scale:1.7}}@supports (animation-timeline: view()){@media(prefers-reduced-motion:no-preference){html:not(.no-js) .hero-canvas{animation:fade-out linear both;animation-timeline:view();animation-range:exit 0% exit 65%}@keyframes fade-out{to{opacity:0}}}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}html:not(.no-js) [data-reveal],html:not(.no-js) [data-reveal=clip],html:not(.no-js) .word{opacity:1;translate:none;clip-path:none}html:not(.no-js) [data-reveal=rule]:before{scale:1 1}html:not(.no-js) [data-reveal=mark]{scale:1}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0ms!important;transition-duration:.01ms!important;transition-delay:0ms!important}}}
