:root{--l-paper:#e8eae6;--l-panel:#f2f3ef;--l-ink:#151a17;--l-muted:#4b5550;--l-soft:#b4bab2;--l-accent:#b3261e;--l-mark:#f2e27c;--l-mark-ink:#151a17;--l-code-string:#2f5d3a;--l-code-constant:#7a4a00;--l-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='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.2 0 0 0 0 0.2 0 0 0 0 0.17 0 0 0 0.26 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url%28%23n%29'/%3E%3C/svg%3E"), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='900'%3E%3Cfilter id='b'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.006 .02' numOctaves='2' seed='7' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.2 0 0 0 0 0.2 0 0 0 0 0.17 0 0 0 0.13 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url%28%23b%29'/%3E%3C/svg%3E");--d-paper:#14171a;--d-panel:#1b1f23;--d-ink:#dedbd0;--d-muted:#9fa59d;--d-soft:#3a4044;--d-accent:#f0b44c;--d-mark:#54450f;--d-mark-ink:#f6edc4;--d-code-string:#a9cfa3;--d-code-constant:#e6a98a;--d-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='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.92 0 0 0 0 0.9 0 0 0 0 0.82 0 0 0 0.22 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url%28%23n%29'/%3E%3C/svg%3E"), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='900'%3E%3Cfilter id='b'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.006 .02' numOctaves='2' seed='7' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.92 0 0 0 0 0.9 0 0 0 0 0.82 0 0 0 0.1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url%28%23b%29'/%3E%3C/svg%3E");--mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--paper:var(--l-paper);--panel:var(--l-panel);--ink:var(--l-ink);--muted:var(--l-muted);--soft:var(--l-soft);--accent:var(--l-accent);--mark:var(--l-mark);--mark-ink:var(--l-mark-ink);--inv-bg:var(--l-ink);--inv-ink:var(--l-paper);--code-string:var(--l-code-string);--code-constant:var(--l-code-constant);--grain:var(--l-grain);color-scheme:light}@media screen and (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:var(--d-paper);--panel:var(--d-panel);--ink:var(--d-ink);--muted:var(--d-muted);--soft:var(--d-soft);--accent:var(--d-accent);--mark:var(--d-mark);--mark-ink:var(--d-mark-ink);--inv-bg:var(--d-ink);--inv-ink:var(--d-paper);--code-string:var(--d-code-string);--code-constant:var(--d-code-constant);--grain:var(--d-grain);color-scheme:dark}}@media screen{:root[data-theme=dark]{--paper:var(--d-paper);--panel:var(--d-panel);--ink:var(--d-ink);--muted:var(--d-muted);--soft:var(--d-soft);--accent:var(--d-accent);--mark:var(--d-mark);--mark-ink:var(--d-mark-ink);--inv-bg:var(--d-ink);--inv-ink:var(--d-paper);--code-string:var(--d-code-string);--code-constant:var(--d-code-constant);--grain:var(--d-grain);color-scheme:dark}}:root{--shiki-foreground:var(--ink);--shiki-background:transparent;--shiki-token-keyword:var(--accent);--shiki-token-string:var(--code-string);--shiki-token-string-expression:var(--code-string);--shiki-token-constant:var(--code-constant);--shiki-token-comment:var(--muted);--shiki-token-function:var(--ink);--shiki-token-parameter:var(--ink);--shiki-token-punctuation:var(--muted);--shiki-token-link:var(--accent)}@media print{:root{--paper:#fff;--panel:#fff;--ink:#000;--muted:#333;--accent:#000;--mark:#ddd;--mark-ink:#000;--inv-bg:#000;--inv-ink:#fff;--code-string:#000;--code-constant:#000}}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-400-normal.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/ibm-plex-mono-latin-ext-400-normal.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/ibm-plex-mono-latin-500-normal.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/ibm-plex-mono-latin-ext-500-normal.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:700;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-700-normal.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:700;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-ext-700-normal.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:italic;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-400-italic.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:italic;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-ext-400-italic.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}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background-color:var(--paper);background-image:radial-gradient(ellipse at 50% 30%, transparent 55%, #3c37281a 100%), var(--grain);min-height:100vh;color:var(--ink);font-family:var(--mono);letter-spacing:.025em;-webkit-font-smoothing:antialiased;margin:0;font-size:.9375rem;line-height:1.75}a{color:var(--ink);text-underline-offset:4px;text-decoration-thickness:1px}a:hover{background:var(--ink);color:var(--paper);text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.wrap{max-width:1040px;margin:0 auto;padding:0 20px}p{max-width:70ch;margin:0 0 14px}mark{background:var(--mark);color:var(--mark-ink);padding:0 .3em}.muted{color:var(--muted)}.skip{background:var(--inv-bg);color:var(--inv-ink);z-index:10;padding:8px 12px;position:absolute;top:8px;left:-999px}.skip:focus{left:8px}.visually-hidden,.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media print{body{background-image:none;font-size:10pt;line-height:1.5}a{text-decoration:none}.skip{display:none}}.strip{border-bottom:1px solid var(--ink);text-transform:uppercase;letter-spacing:.14em;font-size:.75rem}.strip .wrap{flex-wrap:wrap;justify-content:space-between;gap:4px 20px;padding-top:8px;padding-bottom:8px;display:flex}.strip button{font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;cursor:pointer;text-underline-offset:4px;background:0 0;border:0;padding:0;text-decoration:underline}.strip button:hover{background:var(--ink);color:var(--paper);text-decoration:none}.mast{text-align:center;border-bottom:4px double var(--ink);padding:28px 0 18px}.mast .title{letter-spacing:.16em;text-transform:uppercase;overflow-wrap:anywhere;margin:0;font-size:clamp(1.9rem,8.5vw,4.75rem);font-weight:700;line-height:1.05;display:block}.mast .title a{text-decoration:none}.mast .sub{max-width:62ch;color:var(--muted);margin:10px auto 0}.nav{border-bottom:1px solid var(--ink);letter-spacing:.1em;text-transform:uppercase;flex-wrap:wrap;justify-content:center;gap:2px 18px;padding:10px 0;font-size:.8125rem;display:flex}.nav a{text-decoration:none}.nav a:before{content:"[";color:var(--muted)}.nav a:after{content:"]";color:var(--muted)}.nav a:hover:before,.nav a:hover:after{color:inherit}.nav a[aria-current=page]{text-underline-offset:4px;text-decoration:underline}.front{border-bottom:4px double var(--ink);grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:0;display:grid}.lead{border-right:1px solid var(--ink);padding:34px 32px 30px 0}.tagline{text-transform:uppercase;letter-spacing:.16em;color:var(--muted);margin:0 0 14px;font-size:.75rem}h2.hook{letter-spacing:.01em;text-wrap:balance;margin:0 0 20px;font-size:clamp(1.45rem,3.4vw,2.3rem);font-weight:700;line-height:1.3}.cursor{background:var(--ink);vertical-align:-.12em;width:.55em;height:1em;margin-left:4px;display:inline-block}@media (prefers-reduced-motion:no-preference){.cursor{animation:1.1s step-end infinite blink}}@keyframes blink{50%{opacity:0}}.lede{margin-bottom:24px}.cta{flex-wrap:wrap;gap:12px;display:flex}.btn{font:inherit;letter-spacing:.06em;border:1px solid var(--ink);background:var(--ink);color:var(--paper);cursor:pointer;padding:9px 16px;font-weight:500;text-decoration:none;display:inline-block}.btn:hover{background:var(--paper);color:var(--ink)}.btn.alt{color:var(--ink);background:0 0}.btn.alt:hover{background:var(--ink);color:var(--paper)}.side{padding:34px 0 30px 28px}.stamp{border:2px solid var(--accent);color:var(--accent);letter-spacing:.16em;text-transform:uppercase;margin-bottom:18px;padding:3px 10px;font-size:.8125rem;font-weight:700;display:inline-block;transform:rotate(-2.5deg)}.facts{margin:0}.facts div{border-bottom:1px dotted var(--muted);justify-content:space-between;gap:16px;padding:8px 0;display:flex}.facts div:last-child{border-bottom:0}.facts dt{color:var(--muted);text-transform:uppercase;letter-spacing:.1em;font-size:.8125rem}.facts dd{text-align:right;font-variant-numeric:tabular-nums;margin:0;font-weight:700}section.sec{padding:40px 0 8px}.sec-head{align-items:baseline;gap:14px;margin:0 0 22px;display:flex}.sec-head h1,.sec-head h2{letter-spacing:.18em;text-transform:uppercase;white-space:nowrap;margin:0;font-size:.9375rem;font-weight:700}.sec-head:after{content:"";border-bottom:1px solid var(--ink);flex:1;order:1;transform:translateY(-5px)}.sec-head .count{color:var(--muted);text-transform:uppercase;letter-spacing:.12em;white-space:nowrap;order:2;font-size:.75rem}.ads{grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:20px;display:grid}.ad{border:1px solid var(--ink);background-color:var(--panel);background-image:var(--grain);flex-direction:column;display:flex}.ad>h3,.ad>h2,.ad>.bar{background:var(--inv-bg);color:var(--inv-ink);letter-spacing:.16em;text-transform:uppercase;margin:0;padding:6px 12px;font-size:.75rem;font-weight:500}.ad .in{flex-direction:column;flex:1;padding:14px 14px 16px;display:flex}.ad .in p:last-child{margin-bottom:0}.ad .get{border-top:1px dashed var(--muted);color:var(--muted);max-width:none;margin-top:auto;padding-top:10px;font-size:.8125rem}.ad .get b{color:var(--ink);font-weight:700}.ads.two{grid-template-columns:repeat(2,minmax(0,1fr))}@media (width<=800px){.ads.two{grid-template-columns:minmax(0,1fr)}}.ad.featured{border:3px double var(--ink)}.ad .tag{color:var(--accent);text-transform:uppercase;letter-spacing:.14em;max-width:none;margin-bottom:6px;font-size:.75rem;font-weight:700}.cols{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start;gap:28px;display:grid}.steps{counter-reset:s;border-top:1px solid var(--ink);margin:0;padding:0;list-style:none}.steps li{border-bottom:1px dotted var(--muted);counter-increment:s;grid-template-columns:3.2rem minmax(0,1fr);padding:12px 0;display:grid}.steps li:before{content:"[" counter(s) "]";color:var(--accent);font-weight:700}.steps b{text-transform:uppercase;letter-spacing:.06em}.term{border:1px solid var(--ink);background-color:var(--panel);background-image:var(--grain);margin-bottom:20px}.term>h3,.term>h2,.term>.bar{background:var(--inv-bg);color:var(--inv-ink);letter-spacing:.16em;text-transform:uppercase;margin:0;padding:6px 12px;font-size:.75rem;font-weight:500}.term .in{padding:12px 14px}.term ul{margin:0;padding:0;list-style:none}.term li{padding:3px 0 3px 3.4ch;position:relative}.term li:before{content:"[x]";color:var(--accent);font-weight:700;position:absolute;left:0}pre{font:inherit;letter-spacing:.01em;margin:0;padding:12px 14px;font-size:.8125rem;line-height:1.8;overflow-x:auto}.stack{border-top:1px solid var(--ink);margin:0}.stack div{border-bottom:1px dotted var(--muted);grid-template-columns:200px minmax(0,1fr);gap:4px 24px;padding:10px 0;display:grid}.stack dt{text-transform:uppercase;letter-spacing:.12em;padding-top:2px;font-size:.8125rem;font-weight:700}.stack dd{margin:0}.diary{border-top:1px solid var(--ink);margin:0;padding:0;list-style:none}.diary li{border-bottom:1px dotted var(--muted);grid-template-columns:190px minmax(0,1fr);gap:4px 28px;padding:18px 0;display:grid}.diary .when{font-variant-numeric:tabular-nums;letter-spacing:.04em;font-weight:700}.diary .when small{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;font-size:.75rem;font-weight:400;display:block}.diary h3{margin:0 0 6px;font-size:.9375rem;font-weight:700}.diary h3:before{content:"> ";color:var(--accent)}.diary p{margin-bottom:0}.reply{border:3px double var(--ink);background-color:var(--panel);background-image:var(--grain);padding:24px 22px}.mail{letter-spacing:.02em;overflow-wrap:anywhere;margin:8px 0 14px;font-size:clamp(1.1rem,3.6vw,1.9rem);font-weight:700;display:block}.links{text-transform:uppercase;letter-spacing:.1em;flex-wrap:wrap;gap:6px 22px;margin-top:16px;font-size:.8125rem;display:flex}.reply .row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.reply .status{color:var(--muted);font-size:.8125rem}footer.foot{border-top:4px double var(--ink);text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin-top:48px;padding:16px 0 40px;font-size:.75rem}footer.foot .wrap{flex-wrap:wrap;justify-content:space-between;gap:6px 24px;display:flex}.filters{letter-spacing:.1em;text-transform:uppercase;flex-wrap:wrap;align-items:baseline;gap:4px 18px;margin:0 0 22px;font-size:.8125rem;display:flex}.filters .label{color:var(--muted)}.filters a{text-decoration:none}.filters a:before{content:"[";color:var(--muted)}.filters a:after{content:"]";color:var(--muted)}.filters a[aria-current=page]{text-underline-offset:4px;text-decoration:underline}.ad .get p{margin:0}.ad .get .tags{margin-top:4px}.ad .headline{margin:0 0 8px;font-size:1rem;font-weight:700;line-height:1.5;display:block}.ad .headline a,.ad .headline a:hover{text-decoration:none}.tags{flex-wrap:wrap;gap:2px 12px;margin:0;padding:0;list-style:none;display:flex}.tags a:before{content:"#";color:var(--muted)}.empty{color:var(--muted)}.entry{grid-template-columns:190px minmax(0,1fr);gap:4px 28px;padding:40px 0 8px;display:grid}.entry-meta{font-variant-numeric:tabular-nums}.entry-meta .date{letter-spacing:.04em;font-size:1.5rem;font-weight:700;line-height:1.2;display:block}.entry-meta dl{letter-spacing:.1em;text-transform:uppercase;margin:12px 0 0;font-size:.75rem}.entry-meta dt{color:var(--muted)}.entry-meta dd{margin:0 0 10px}.entry-head h1{letter-spacing:.01em;text-wrap:balance;margin:0 0 12px;font-size:clamp(1.45rem,3.4vw,2.3rem);font-weight:700;line-height:1.3}.entry-head h1:before{content:"> ";color:var(--accent)}.entry-head .lede{color:var(--muted)}.entry-cover{border:1px solid var(--ink);margin:0 0 24px}.entry-cover img{width:100%;height:auto;display:block}.toc ol{margin:0;padding:0 0 0 3.4ch}.toc ol ol{padding-left:2ch}.pager{margin-top:32px}.pager .dir{color:var(--muted);text-transform:uppercase;letter-spacing:.14em;margin:0 0 4px;font-size:.75rem}.prose{max-width:70ch}.prose>*+*{margin-top:0}.prose h2,.prose h3,.prose h4{scroll-margin-top:16px;line-height:1.4}.prose h2{border-bottom:1px solid var(--ink);letter-spacing:.18em;text-transform:uppercase;margin:36px 0 14px;padding-bottom:6px;font-size:.9375rem;font-weight:700}.prose h3{margin:28px 0 10px;font-size:.9375rem;font-weight:700}.prose h3:before{content:"> ";color:var(--accent)}.prose h4{text-transform:uppercase;letter-spacing:.08em;margin:22px 0 8px;font-size:.875rem;font-weight:700}.prose .h-anchor{color:var(--muted);opacity:0;margin-left:.6ch;text-decoration:none}.prose .h-anchor:after{content:"#"}.prose :is(h2,h3,h4):hover .h-anchor,.prose .h-anchor:focus-visible{opacity:1}@media (hover:none){.prose .h-anchor{opacity:1}}.prose ul,.prose ol{margin:0 0 14px;padding-left:3.4ch}.prose li{margin:2px 0}.prose ul>li::marker{content:"- ";color:var(--accent)}.prose blockquote{border-left:4px double var(--ink);color:var(--muted);margin:0 0 14px;padding:4px 0 4px 18px}.prose blockquote p:last-child{margin-bottom:0}.prose hr{border:0;border-top:1px dashed var(--muted);margin:28px 0}.prose img{border:1px solid var(--ink);max-width:100%;height:auto}.prose :not(pre)>code{font:inherit;background:var(--panel);border:1px dotted var(--muted);padding:.05em .35em;font-size:.875em}.prose table{border-collapse:collapse;width:100%;margin:0 0 18px;font-size:.875rem;display:block;overflow-x:auto}.prose th{background:var(--inv-bg);color:var(--inv-ink);letter-spacing:.12em;text-transform:uppercase;text-align:left;padding:6px 12px;font-size:.75rem;font-weight:500}.prose td{border-bottom:1px dotted var(--muted);vertical-align:top;padding:8px 12px}.prose .code{border:1px solid var(--ink);background-color:var(--panel);background-image:var(--grain);margin:0 0 18px}.prose .code>.bar{background:var(--inv-bg);color:var(--inv-ink);letter-spacing:.16em;text-transform:uppercase;margin:0;padding:6px 12px;font-size:.75rem;font-weight:500}.prose .code>.bar:before{content:"$ ";color:var(--accent);font-weight:700}.prose pre.astro-code{background-color:#0000!important}.prose pre code{font:inherit}.prose .footnotes{color:var(--muted);border-top:1px dashed var(--muted);margin-top:36px;font-size:.8125rem}.prose .footnotes h2{border-bottom:0;font-size:.75rem}.prose sup a{text-decoration:none}.prose sup a:before{content:"["}.prose sup a:after{content:"]"}@media (width<=800px){.front{grid-template-columns:minmax(0,1fr)}.lead{border-right:0;border-bottom:1px solid var(--ink);padding:26px 0 24px}.side{padding:24px 0}.cols,.stack div,.diary li,.entry{grid-template-columns:minmax(0,1fr)}.diary li{gap:2px}}@media print{.ad,.term,.reply,.prose .code{background-image:none}.strip button,.strip .tools a,.cta,.nav,.cursor,.copy,.filters,.pager,.h-anchor{display:none}.ad,.diary li,.term,.prose .code{break-inside:avoid}}.toc{max-width:70ch}.toc li{padding:2px 0}.toc li:before{content:none}.prose td code{white-space:nowrap}.strip .tools{flex-wrap:wrap;gap:4px 20px;display:flex}.strip .tools a{color:inherit}
