@font-face{font-family:Archivo;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/Archivo-800-latin-ext.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/Archivo-800-latin.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;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-400-latin-ext.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-20C0,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(/fonts/IBMPlexMono-400-latin.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;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexMono-500-latin-ext.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexMono-500-latin.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 Sans;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexSans-400i-latin-ext.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexSans-400i-latin.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 Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexSans-400-latin-ext.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexSans-400-latin.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 Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexSans-400-latin-ext.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexSans-400-latin.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 Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/IBMPlexSans-400-latin-ext.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/IBMPlexSans-400-latin.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}:root{color-scheme:light;--paper:#efede6;--paper-2:#e6e3da;--ink:#1a1a1a;--graphite:#55554f;--pencil:#b8b5ac;--shadow:3px 4px 0 #1a1a1a14;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--pf-bands:#c3c0b7, #9e9b92, #77756f, #504f49;--pf-accent:#1a1a1a;--font-display:"Archivo", "IBM Plex Sans", system-ui, sans-serif;--font-body:"IBM Plex Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--measure:66ch}:root[data-theme=dark]{color-scheme:dark;--paper:#23272c;--paper-2:#2b3036;--ink:#e8e6df;--graphite:#9a9c98;--pencil:#3a3f45;--shadow:3px 4px 0 #00000040;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.91 0 0 0 0 0.9 0 0 0 0 0.875 0 0 0 0.04 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--pf-bands:#33393f, #464d55, #616870, #8b9098;--pf-accent:#e8e6df}*,:before,:after{box-sizing:border-box}html{scrollbar-gutter:stable}body{background:var(--paper);min-height:100dvh;color:var(--ink);font:400 1.0625rem/1.6 var(--font-body);-webkit-font-smoothing:antialiased;flex-direction:column;margin:0;display:flex;position:relative}body:before{content:"";background-image:var(--grain);pointer-events:none;z-index:50;position:fixed;inset:0}::view-transition-old(root){animation:none}::view-transition-new(root){animation:.416s cubic-bezier(.2,.8,.2,1) theme-wipe}@keyframes theme-wipe{0%{clip-path:circle(0 at var(--vt-x,50%) var(--vt-y,50%))}to{clip-path:circle(150% at var(--vt-x,50%) var(--vt-y,50%))}}h1,h2,h3{letter-spacing:-.01em;margin:0 0 .5em;font-weight:600;line-height:1.15}h1{font-size:clamp(2.4rem,5vw,4.2rem)}h2{margin-top:2em;font-size:clamp(1.4rem,2.4vw,1.75rem)}h3{margin-top:1.6em;font-size:1.15rem}p{margin:0 0 1em}.display{font-family:var(--font-display);text-transform:uppercase;letter-spacing:-.03em;font-weight:800;line-height:.95}.hand{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--graphite);font-size:.72rem}.muted{color:var(--graphite)}code,pre,kbd{font-family:var(--font-mono);font-size:.92em}pre{background:var(--paper-2);border-radius:2px;padding:1rem 1.1rem;overflow-x:auto}.astro-code{background-color:var(--paper-2)!important}[data-theme=dark] .astro-code,[data-theme=dark] .astro-code span:not(.px-w){color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important}:not(pre)>code{background:var(--paper-2);border-radius:2px;padding:.05em .35em}table{border-collapse:collapse;width:100%;margin:1.2em 0}th,td{text-align:left;border-bottom:1px solid var(--pencil);padding:.45em .7em}th{font-weight:600}blockquote{border-left:2px solid var(--pencil);color:var(--graphite);margin:1.2em 0;padding-left:1em;font-style:italic}img{max-width:100%}.prose{counter-reset:equation}.katex-display{border-left:1px solid var(--pencil);counter-increment:equation;grid-template-columns:minmax(0,1fr) 2.75rem;align-items:center;padding:.4em 0 .4em 1rem;display:grid}.katex-display>.katex{overflow:auto hidden}.katex-display:after{content:"(" counter(equation, decimal-leading-zero) ")";font:.68rem/1 var(--font-mono);color:var(--graphite);justify-self:end}@media (width<=640px){.nav{gap:1rem;font-size:.9rem}.katex-display{grid-template-columns:minmax(0,1fr) 2.25rem;font-size:.9em}}a{color:inherit;text-decoration:none}::selection{background:color-mix(in srgb, var(--ink) 14%, transparent);color:inherit}.u,.prose a{background-image:linear-gradient(var(--ink), var(--ink));background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;padding-bottom:1px;transition:background-size .256s cubic-bezier(.2,.8,.2,1),color .16s}.u:hover,.prose a:hover,.u:focus-visible,.prose a:focus-visible{color:var(--ink);background-size:100% 1px}.prose a,.page-lede a{text-underline-offset:.18em;background-image:none;text-decoration:underline;transition:text-decoration-color .256s,color .16s}.px-wait [data-px],.px-wait [data-px-border]{visibility:hidden}.px-live .note svg{transition:none}.px-live .u{background-size:0% 1px}.px-live :is(.prose,.page-lede) a{text-decoration-color:#0000}.nav a[aria-current=page]:before,.panel-draw,.about-draw,.theme-toggle svg{transition:opacity .256s}.px-wait .nav a[aria-current=page]:before,.px-wait .panel-draw,.px-wait .about-draw,.px-wait .theme-toggle svg,.px-wait .note svg,.px-live .nav a[aria-current=page]:before,.px-live .panel-draw,.px-live .about-draw,.px-live .theme-toggle svg{opacity:0}.px-live .panel-draw,.px-live .about-draw,.px-live .theme-toggle svg,.px-live .nav a[aria-current=page]:before{animation:.256s .256s both px-decoration-in}@keyframes px-decoration-in{0%{opacity:0}to{opacity:1}}:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:2px}.rough{position:relative}.rough:before{content:"";border:1.5px solid var(--ink);filter:url(#sketch);pointer-events:none;opacity:var(--pxb,1);border-radius:3px;position:absolute;inset:2px}.rough:after{content:"";border:1px solid var(--graphite);filter:url(#sketch-faint);pointer-events:none;opacity:calc(var(--pxb,1) * .35);border-radius:3px;position:absolute;inset:4px 1px 1px 4px}@media (hover:hover){.px-live .deck{pointer-events:none}}.wrap{width:min(100% - 2.5rem,72rem);margin-inline:auto}.prose{max-width:var(--measure)}.prose>:first-child{margin-top:0}.site-header{z-index:2;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.8rem 1.5rem;padding:1.1rem 0;display:flex;position:relative}.wordmark{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink);white-space:nowrap;font-size:.8rem;font-weight:500;line-height:1}.ident{flex-wrap:wrap;align-items:baseline;gap:.35rem 1.4rem;display:flex}.role{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--graphite);white-space:nowrap;font-size:.72rem}.nav{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;align-items:center;gap:1.6rem;font-size:.78rem;display:flex}.nav a[aria-current=page]{color:var(--ink)}.nav a[aria-current=page]:before{content:"•";font-family:var(--font-mono);margin-right:.45em}.site-footer{color:var(--graphite);flex-wrap:wrap;justify-content:space-between;gap:.6rem 2rem;margin-top:auto;padding:2rem 0 1.4rem;font-size:.9rem;display:flex}.panel-items .note,.article-rail>.note{white-space:nowrap}.list{gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}.card{background:var(--paper);gap:.35rem;padding:1.25rem 1.4rem 1.2rem;display:grid}.card h2{margin:0;font-size:1.2rem}.card p{max-width:var(--measure)}.card .meta{color:var(--graphite);flex-wrap:wrap;align-items:baseline;gap:.4rem 1rem;font-size:.85rem;display:flex}.tag{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--graphite);font-size:.72rem}.tag-hash{opacity:.6}.sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.page-title{margin:2.5rem 0 .4rem}.page-lede{color:var(--graphite);max-width:var(--measure);margin-bottom:2.5rem}.article{z-index:1;padding-bottom:3rem;position:relative}.article header{grid-template-columns:13rem minmax(0, var(--measure));align-items:end;gap:2rem;margin:.25rem 0 2.5rem;display:grid}.article-rail{border-right:1px solid var(--pencil);grid-row:1/span 2;align-self:stretch;padding-right:1rem}.article-rail>.note{margin-left:.25rem}.article-rail>p.hand{margin:1rem 0 .5rem}.article-notes{gap:1.25rem;margin-top:2.5rem;display:grid}.article-notes:empty{display:none}.article h1{font-size:clamp(2rem,3.8vw,3.2rem);line-height:1}.article .prose{margin-left:15rem}.article .meta{color:var(--graphite);flex-wrap:wrap;align-items:baseline;gap:.4rem 1.2rem;margin-top:.6rem;font-size:.9rem;display:flex}.article .links{flex-wrap:wrap;gap:1.2rem;margin-top:1rem;font-size:.95rem;display:flex}canvas.pf{pointer-events:none;opacity:var(--pf-opacity,.85);display:block}.pf-fixed{z-index:0;--pf-opacity:.55;position:fixed;inset:0}@media (width<=900px){.article-rail>.note{margin-left:-.5rem}body{font-size:1rem}.article header{grid-template-columns:1fr;gap:1.2rem}.article-rail{border-right:0;border-bottom:1px solid var(--pencil);grid-row:auto;padding:0 0 1rem}.article-notes{margin-top:1rem}.article header,.article .prose{max-width:var(--measure);margin-inline:auto}}.hero-canvas{z-index:0;position:absolute;inset:0}@media (width<=640px){.site-header{padding-top:1.6rem}}@media (width<=399px){.site-header{row-gap:.45rem;padding-block:1.15rem .65rem}.role{display:none}.nav{justify-content:space-between;gap:clamp(.35rem,2vw,.75rem);width:100%}}@media (hover:none){.nav a,.card .meta a,.panel-items a,.panel-all,.site-footer a,.note a{margin-block:-.6rem;padding-block:.6rem;display:inline-block}.card .meta{gap:.9rem 1.25rem}.card h2 a{margin-block:-.6rem;padding-block:.6rem;display:inline-block}.note a{margin-block:-.9rem;padding-block:.9rem}.nav a{margin-block:-.7rem;padding-block:.7rem}.wordmark{margin-block:-.9rem;padding-block:.9rem;display:inline-block}}.theme-toggle[data-astro-cid-l6lhmie6]{width:2.2rem;height:2.2rem;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}@media (hover:none){.theme-toggle[data-astro-cid-l6lhmie6]{width:2.75rem;height:2.75rem}}.theme-toggle[data-astro-cid-l6lhmie6] svg[data-astro-cid-l6lhmie6]{fill:none;stroke:currentColor;stroke-width:1.78px;stroke-linecap:round;stroke-linejoin:round;width:1.35rem;height:1.35rem}.sun[data-astro-cid-l6lhmie6]{transform-origin:12px 12px;transition:transform .4s cubic-bezier(.2,.8,.2,1),opacity .2s}.moon[data-astro-cid-l6lhmie6]{transition:opacity .2s}[data-theme=dark] .sun[data-astro-cid-l6lhmie6]{opacity:0;transform:rotate(90deg)scale(.6)}[data-theme=light] .moon[data-astro-cid-l6lhmie6]{opacity:0}
