:root{--paper:#f7f5f1;--paper-2:#f0eee8;--ink:#1c1b19;--ink-86:#1c1b19db;--ink-78:#1c1b19c7;--ink-72:#1c1b19b8;--ink-68:#1c1b19ad;--ink-65:#1c1b19a6;--ink-62:#1c1b199e;--ink-42:#1c1b196b;--rule:#1c1b191a;--rule-strong:#1c1b1929;--wash:#1c1b1906;--accent:#2f62c4;--accent-wash:#2f62c414;--accent-line:#2f62c44d;--warm:#e08b62;--add:#2f7a3d;--del:#a83232;--serif:"Instrument Serif", Georgia, serif;--ink-28:#1c1b1947;--mat:#16273a;--sans:"Basel Grotesk", system-ui, sans-serif;--mono:"IBM Plex Mono", "Basel Grotesk", ui-monospace, SFMono-Regular, Menlo, monospace;--shell:1180px;--pad:28px;--decor-band:500px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--accent);text-decoration:none}a:hover{color:var(--ink)}h1,h2,h3,h4{margin:0;font-weight:400}p{margin:0}img{max-width:100%;height:auto;display:block}::selection{background:var(--accent);color:var(--paper)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}.decor{height:var(--decor-band);z-index:0;pointer-events:none;position:absolute;top:0;left:0;right:0;overflow:hidden;-webkit-mask-image:linear-gradient(#000 0 46%,#0000 96%);mask-image:linear-gradient(#000 0 46%,#0000 96%)}.decor span{display:block;position:absolute;inset:0}.decor .grid{background-image:linear-gradient(#1c1b1912 1px,#0000 1px),linear-gradient(90deg,#1c1b1912 1px,#0000 1px);background-size:64px 64px}.decor .glow{background-image:radial-gradient(circle at 12% 8%,#2f62c424,#0000 45%),radial-gradient(circle at 88% 0,#e08b6221,#0000 40%)}.decor .grain{opacity:.3;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E")}.shell{z-index:1;flex-direction:column;min-height:100vh;display:flex;position:relative}.wrap{max-width:var(--shell);padding:0 var(--pad);width:100%;margin:0 auto}main{flex:1}.mono{font-family:var(--mono)}.eyebrow{font:500 12px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.rule{border:none;border-top:1px solid var(--rule);margin:0}.site-header{z-index:20;pointer-events:none;padding:18px 0 6px;position:sticky;top:0}.site-header .wrap{pointer-events:auto;justify-content:space-between;align-items:center;gap:16px;display:flex}.pill{border:1px solid var(--rule);backdrop-filter:blur(14px);background:#f7f5f1d1;border-radius:7px;transition:background .22s,border-color .22s,box-shadow .22s,color .22s;box-shadow:0 1px 2px #1c1b190a,0 8px 24px -12px #1c1b192e}.site-header[data-scrolled] .pill{background:#1a2a3df0;border-color:#f7f5f124;box-shadow:0 1px 2px #131d2933,0 14px 34px -14px #131d298c}.site-header[data-scrolled] .brand,.site-header[data-scrolled] .site-nav a[aria-current]{color:var(--paper)}.site-header[data-scrolled] .brand .byline{color:#f7f5f199}.site-header[data-scrolled] .brand .mark{color:#8fb2f0;border-color:#8fb2f08c}.site-header[data-scrolled] .site-nav a{color:#f7f5f1b8}.site-header[data-scrolled] .site-nav a:hover{color:var(--paper)}.site-header[data-scrolled] .site-nav a[aria-current]{background:#f7f5f124}.site-header[data-scrolled] .site-nav .sep{background:#f7f5f129}.brand{color:var(--ink);align-items:center;gap:10px;padding:9px 16px 9px 13px;display:flex}.brand:hover{color:var(--ink)}.brand .mark{border:1px solid var(--accent);width:24px;height:24px;font:500 12px/1 var(--mono);color:var(--accent);border-radius:4px;place-items:center;transition:color .22s,border-color .22s;display:grid}.brand .name{font:400 19px/1 var(--serif);letter-spacing:.2px}.brand .byline{font:300 11px/1 var(--mono);color:var(--ink-65);padding-top:3px}.site-nav{align-items:center;gap:2px;padding:6px;display:flex}.site-nav .sep{background:#1c1b191f;width:1px;height:18px;margin:0 6px}.site-nav a{font:400 13px/1 var(--mono);color:var(--ink-72);border-radius:4px;padding:8px 14px;transition:color .22s,background .22s}.site-nav a:hover{color:var(--ink)}.site-nav a[aria-current]{color:var(--ink);background:#1c1b1912}.nav-toggle{border:1px solid var(--rule);width:38px;height:38px;color:var(--ink);cursor:pointer;justify-content:center;align-items:center;display:none}.nav-toggle .bars,.nav-toggle .bars:before,.nav-toggle .bars:after{background:currentColor;border-radius:1px;width:16px;height:1.5px;display:block}.nav-toggle .bars{position:relative}.nav-toggle .bars:before,.nav-toggle .bars:after{content:"";position:absolute;left:0}.nav-toggle .bars:before{top:-5px}.nav-toggle .bars:after{top:5px}.site-header[data-scrolled] .nav-toggle{color:var(--paper)}.mobile-nav[hidden]{display:none}.mobile-nav{pointer-events:auto;margin:8px var(--pad) 0;border:1px solid var(--rule);background:var(--paper);border-radius:7px;flex-direction:column;transition:background .22s,border-color .22s,box-shadow .22s;display:flex;overflow:hidden;box-shadow:0 1px 2px #1c1b190a,0 8px 24px -12px #1c1b192e}.mobile-nav a{border:none;border-top:1px solid var(--rule);font:400 14px/1 var(--mono);color:var(--ink-72);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:8px;padding:13px 16px;transition:color .22s,background .22s,border-color .22s;display:flex}.mobile-nav a:first-child{border-top:none}.mobile-nav a[aria-current]{color:var(--ink);background:#1c1b190d}.site-header[data-scrolled] .mobile-nav{background:#1a2a3df0;border-color:#f7f5f124;box-shadow:0 1px 2px #131d2933,0 14px 34px -14px #131d298c}.site-header[data-scrolled] .mobile-nav a{color:#f7f5f1b8;border-top-color:#f7f5f124}.site-header[data-scrolled] .mobile-nav a[aria-current]{color:var(--paper);background:#f7f5f124}.hero{padding-top:78px;padding-bottom:54px}.hero h1{font:400 clamp(44px, 7vw, 82px) / .98 var(--serif);letter-spacing:-.02em;text-wrap:pretty;max-width:15ch}.hero .lede{max-width:56ch;font:400 17px/1.65 var(--sans);color:var(--ink-68);text-wrap:pretty;margin-top:26px}.chips{flex-wrap:wrap;gap:10px;margin-top:32px;display:flex}.chip{border:1px solid var(--rule-strong);font:400 12px/1 var(--mono);color:var(--ink-72);border-radius:100px;padding:8px 14px}.chip:hover{border-color:var(--accent-line);color:var(--accent)}.chip.on{border-color:var(--accent-line);color:var(--accent);background:#2f62c41a}.chip .n{color:var(--ink-62);padding-left:6px}.cols{grid-template-columns:minmax(0,1fr) 260px;align-items:start;gap:56px;padding-bottom:100px;display:grid}.cols.narrow{grid-template-columns:minmax(0,1fr) 230px;gap:60px}.timeline{padding-left:34px;position:relative}.timeline .spine{background:linear-gradient(#0000,#1c1b1938 6% 94%,#0000);width:1px;position:absolute;top:12px;bottom:12px;left:5px}.year{padding:34px 0 10px;position:relative}.year .node{background:var(--paper);border:1px solid #1c1b1940;border-radius:50%;width:11px;height:11px;position:absolute;top:38px;left:-34px}.year .n{font:400 40px/1 var(--serif);color:var(--ink-42)}.more{margin-top:30px;position:relative}.more .node{background:var(--paper);border:1px dashed #1c1b194d;border-radius:50%;width:11px;height:11px;position:absolute;top:12px;left:-34px}.more a{font:400 13px/1 var(--mono);color:var(--ink-65);border-bottom:1px dashed #1c1b1940;padding-bottom:3px}.more a:hover{color:var(--accent);border-color:var(--accent-line)}.entry{color:var(--ink);border-radius:6px;margin-left:-24px;padding:22px 22px 22px 24px;transition:background .18s;display:block;position:relative}.entry:hover{color:var(--ink);background:#1c1b1909}.entry .dot{width:9px;height:9px;box-shadow:0 0 0 4px var(--paper);background:#1c1b194d;border-radius:50%;position:absolute;top:24px;left:-10px}.entry.recent .dot{background:var(--accent)}.entry .tick{background:#1c1b1933;width:20px;height:1px;position:absolute;top:28px;left:-1px}.entry .meta{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.entry .meta .date{font:400 12px/1 var(--mono);color:var(--ink-72)}.entry.recent .meta .date{color:var(--accent)}.entry .meta .small{font:300 11px/1 var(--mono);color:var(--ink-62)}.entry h2{font:400 27px/1.18 var(--serif);letter-spacing:-.01em;text-wrap:pretty;max-width:30ch;margin-top:9px}.entry .blurb{max-width:60ch;font:400 15px/1.6 var(--sans);color:var(--ink-72);text-wrap:pretty;margin-top:9px}.sidebar{flex-direction:column;gap:26px;display:flex;position:sticky;top:90px}.card{border:1px solid #1c1b191f;border-radius:6px;padding:18px}.card.tinted{background:#1c1b1905}.card .cap{font:400 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-65);margin-bottom:12px}.card .cap.accent{color:var(--accent)}.card p{font:400 14px/1.6 var(--sans);color:var(--ink-72)}.card .stamp{font:300 11px/1 var(--mono);color:var(--ink-62);margin-top:14px}.card .list{flex-direction:column;gap:12px;display:flex}.card .list a{font:400 14px/1.4 var(--sans);color:var(--ink-78)}.card .list a:hover{color:var(--accent)}.progress{z-index:19;background:#1c1b1914;height:2px;position:fixed;top:0;left:0;right:0}.progress span{background:var(--accent);width:0;height:2px;display:block}.back{font:400 12px/1 var(--mono);color:var(--ink-65);margin-bottom:28px;display:inline-block}.back:hover{color:var(--accent)}.post-head{padding-top:64px;padding-bottom:40px}.post-head .meta{flex-wrap:wrap;align-items:baseline;gap:14px;margin-bottom:18px;display:flex}.post-head .meta .date{font:400 12px/1 var(--mono);color:var(--accent)}.post-head .meta .read{font:300 12px/1 var(--mono);color:var(--ink-65)}.tag-pill{border:1px solid var(--rule-strong);font:300 11px/1 var(--mono);color:var(--ink-72);border-radius:3px;padding:4px 9px}.tag-pill:hover{border-color:var(--accent-line);color:var(--accent)}.post-head h1{font:400 clamp(38px, 5.2vw, 62px) / 1.04 var(--serif);letter-spacing:-.02em;text-wrap:pretty;max-width:22ch}.post-head .lede{max-width:60ch;font:400 19px/1.6 var(--sans);color:var(--ink-62);text-wrap:pretty;margin-top:22px}.series-line{font:300 12px/1 var(--mono);color:var(--ink-65);align-items:center;gap:10px;margin-top:28px;display:flex}.series-line .badge{color:var(--accent);background:#2f62c41f;border-radius:3px;padding:3px 8px}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-300.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Basel Grotesk;src:url(/fonts/basel-grotesk-regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Basel Grotesk;src:url(/fonts/basel-grotesk-medium.woff2)format("woff2");font-weight:500 600;font-style:normal;font-display:swap}@font-face{font-family:GT Ultra Median;src:url(/fonts/gt-ultra-median-light.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}html[data-headline=gt-ultra]{--serif:"GT Ultra Median", Georgia, serif}html[data-headline=gt-ultra] .hero h1{letter-spacing:-.015em}html[data-headline=gt-ultra] .post-head h1,html[data-headline=gt-ultra] .page h1{letter-spacing:-.012em}html[data-headline=gt-ultra] .notfound .big .n{letter-spacing:-.02em}html[data-headline=alegreya]{--serif:Alegreya, Georgia, serif}html[data-headline=alegreya] .hero h1{letter-spacing:-.012em;font-size:clamp(40px,6.2vw,72px)}html[data-headline=alegreya] .post-head h1{letter-spacing:-.012em;font-size:clamp(35px,4.7vw,55px)}html[data-headline=alegreya] .page h1{letter-spacing:-.012em;font-size:clamp(37px,5.4vw,59px)}html[data-headline=alegreya] .prose h3{font-size:28px}.prose{max-width:70ch}.prose p,.prose ul,.prose ol{font:400 17.5px/1.75 var(--sans);color:var(--ink-86)}.prose p+p,.prose ul,.prose ol{margin-top:22px}.prose li+li{margin-top:8px}.prose>p:first-of-type:first-letter{float:left;font:400 58px/.82 var(--serif);color:var(--accent);padding:4px 10px 0 0}.prose h2{font:400 13px/1.4 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);vertical-align:baseline;margin:44px 10px 6px 0;display:inline-block}.prose h2:after{content:"/";font:400 22px/1 var(--serif);letter-spacing:0;color:var(--ink-28);margin-left:10px}.prose h3{font:400 31px/1.2 var(--serif);letter-spacing:-.01em;vertical-align:baseline;max-width:46ch;margin:44px 0 16px;display:inline-block}.prose h2+h3{margin-top:0}.prose h2:not(:has(+h3)){margin-bottom:6px;display:block}.prose h2:not(:has(+h3)):after{content:none}.prose h4{font:400 22px/1.3 var(--serif);letter-spacing:-.005em;text-wrap:pretty;margin:34px 0 12px}.prose a{border-bottom:1px solid var(--accent-line)}.prose a:hover{border-color:var(--ink)}.prose strong{font-weight:600}.prose table{border-collapse:collapse;max-width:100%;font:400 15px/1.5 var(--sans);color:var(--ink-86);margin:28px 0;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--rule);text-align:left;vertical-align:top;padding:10px 14px}.prose th{font:500 11px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-65);border-bottom-color:var(--rule-strong)}.prose tbody tr:last-child td{border-bottom:none}.prose .embed{margin:28px 0}.prose .embed iframe{aspect-ratio:16/9;background:var(--mat);border:0;border-radius:8px;width:100%;height:auto;display:block}.prose hr{border:none;border-top:1px solid var(--rule);margin:44px 0 22px}.prose :not(pre)>code{font:400 15px/1 var(--mono);color:#8a5a12;background:#1c1b1912;border-radius:3px;padding:2px 6px}.prose sup{font:400 11px var(--mono);color:var(--accent);padding-left:2px}.prose sup a{border:none}.footnotes{margin-top:10px}.footnotes ol{padding-left:18px}.footnotes li,.footnotes p{font:300 13px/1.6 var(--mono)!important;color:var(--ink-65)!important}.footnotes ::marker{color:var(--accent)}.prose blockquote{border-left:2px solid var(--accent);background:#2f62c40e;border-radius:0 6px 6px 0;margin:30px 0;padding:18px 20px}.prose blockquote p{font:400 15.5px/1.7 var(--sans);color:var(--ink-78)}.prose blockquote p:first-child>strong:first-child{font:400 13px/1.4 var(--mono);color:var(--accent);letter-spacing:.06em;margin-bottom:4px;display:block}.code-block{background:var(--paper-2);border:1px solid #1c1b1924;border-radius:7px;margin:28px 0;overflow:hidden}.code-bar{border-bottom:1px solid var(--rule);background:#1c1b1908;align-items:center;display:flex}.code-bar .file{font:400 12px/1 var(--mono);color:var(--ink);border-bottom:1px solid var(--accent);background:var(--accent-wash);padding:10px 15px}.code-bar .lang{font:400 12px/1 var(--mono);color:var(--ink-65);padding:10px 15px}.code-bar .copy{font:300 11px/1 var(--mono);color:var(--ink-62);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:8px 13px}.code-bar .copy:hover{color:var(--accent)}.code-block pre.astro-code{font:400 13.5px/1.75 var(--mono);margin:0;padding:16px 0;overflow:auto;background:var(--paper-2)!important}.code-block pre.astro-code code,.terminal pre code{font:inherit}.code-block pre.astro-code code{counter-reset:line;width:max-content;min-width:100%;display:grid}.code-block pre.astro-code .line{min-height:1lh;padding:0 18px;display:block}.code-block pre.astro-code .line:before{counter-increment:line;content:counter(line);width:2.4ch;color:var(--ink-42);display:inline-block}.code-block[data-lang=diff] pre.astro-code .line:before{content:none;width:0}.code-block[data-lang=diff] pre.astro-code .line:has(span:first-child){line-height:1.8}.code-block[data-lang=diff] .line.add{background:#2f7a3d1f}.code-block[data-lang=diff] .line.del{background:#a832321a}.fig{margin:40px 0}.fig-mat{background:var(--mat);border-radius:9px;padding:18px;position:relative;box-shadow:0 1px 2px #1c1b190d,0 20px 44px -26px #131d2980}.fig-mat img{border-radius:3px;width:100%;height:auto;display:block;box-shadow:0 0 0 1px #f7f5f11f}.fig-mat:has(img){cursor:zoom-in}.fig-mat:has(img):after{content:"⤢ENLARGE";font:300 10px/1 var(--mono);letter-spacing:.12em;color:#f7f5f180;pointer-events:none;position:absolute;bottom:26px;right:26px}.fig-slot{aspect-ratio:16/9;font:400 12px/1.5 var(--mono);color:#f7f5f18c;letter-spacing:.1em;text-align:center;background:repeating-linear-gradient(135deg,#f7f5f10f 0 1px,#0000 1px 9px);border-radius:3px;place-items:center;padding:12px;display:grid;overflow:hidden;box-shadow:0 0 0 1px #f7f5f11f}.fig figcaption,.fig .fig-cap{font:400 14.5px/1.6 var(--sans);color:var(--ink-62);text-wrap:pretty;margin-top:13px}.fig .fig-n{color:var(--accent);margin-right:.5em}.fig.breakout{width:calc(100% + 80px);max-width:calc(100% + 80px);margin-left:-40px}.fig.pair .fig-row{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.fig.seq{flex-direction:column;gap:26px;display:flex}.lightbox{z-index:90;backdrop-filter:blur(3px);cursor:zoom-out;background:#131d29ed;place-items:center;padding:42px;display:none;position:fixed;inset:0}.lightbox[open],.lightbox.on{display:grid}.lightbox .frame{width:min(1120px,92vw);position:relative}.lightbox .nav{color:#f7f5f1d1;cursor:pointer;background:#131d29b3;border:1px solid #f7f5f12e;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:22px;line-height:1;transition:background .18s,color .18s,border-color .18s;display:none;position:absolute;top:50%;translate:0 -50%}.lightbox[data-multi] .nav{display:flex}.lightbox .nav:hover{color:var(--paper);background:#f7f5f11f;border-color:#f7f5f152}.lightbox .nav.prev{left:-58px}.lightbox .nav.next{right:-58px}.lightbox img{object-fit:contain;border-radius:8px;width:100%;height:auto;max-height:74vh;display:block;box-shadow:0 0 0 1px #f7f5f124,0 40px 90px -40px #000000b3}.lightbox .cap{justify-content:space-between;align-items:baseline;gap:20px;margin-top:14px;display:flex}.lightbox .cap-text{align-items:baseline;gap:10px;min-width:0;display:flex}.lightbox .cap p{max-width:78ch;font:400 14.5px/1.6 var(--sans);color:#f7f5f1b8;text-wrap:pretty;margin:0}.lightbox .cap .tag{font:400 10px/1 var(--mono);letter-spacing:.04em;color:#8fb2f0;border:1px solid #8fb2f066;border-radius:4px;flex:none;padding:3px 7px}.lightbox .cap .tag[hidden]{display:none}.lightbox .cap .meta{flex:none;align-items:baseline;gap:14px;display:flex}.lightbox .cap .idx{font:300 10px/1 var(--mono);letter-spacing:.06em;color:#f7f5f173}.lightbox .cap .esc{font:300 10px/1 var(--mono);letter-spacing:.12em;color:#f7f5f173;flex:none}.terminal{background:var(--paper-2);border:1px solid #1c1b191f;border-radius:6px;margin:30px 0;padding:16px 18px}.terminal-bar{font:300 11px/1 var(--mono);color:var(--ink-62);margin-bottom:10px}.terminal pre{font:400 13px/1.7 var(--mono);color:var(--ink-65);margin:0;overflow:auto}.terminal .t-line{display:block}.terminal .t-prompt{color:var(--add)}.terminal .t-cursor{animation:1.1s step-end infinite blink}.series-nav{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:52px;display:grid}.series-nav a{color:var(--ink);border:1px solid #1c1b191f;border-radius:6px;padding:16px}.series-nav a:hover{color:var(--ink);border-color:#2f62c466}.series-nav a.next{text-align:right}.series-nav .dir{font:300 11px/1 var(--mono);color:var(--ink-62);margin-bottom:8px}.series-nav .t{font:400 18px/1.25 var(--serif)}.toc{position:sticky;top:96px}.toc .cap{font:400 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-65);margin-bottom:14px}.toc nav{border-left:1px solid #1c1b191f;flex-direction:column;gap:2px;max-height:calc(100vh - 210px);margin:0 -8px 0 -10px;padding:0 8px 0 10px;display:flex;overflow-y:auto}.toc a{font:400 13px/1.4 var(--sans);color:var(--ink-68);padding:7px 0 7px 14px}.toc a:hover{color:var(--ink)}.toc a.active{border-left:2px solid var(--accent);color:var(--ink);margin-left:-1px}.toc .tools{border-top:1px solid var(--rule);flex-direction:column;gap:9px;margin-top:22px;padding-top:18px;display:flex}.toc .tools a,.toc .tools button{text-align:left;font:300 12px/1 var(--mono);color:var(--ink-65);cursor:pointer;background:0 0;border:none;padding:0}.toc .tools a:hover,.toc .tools button:hover{color:var(--accent)}.page{padding-top:78px;padding-bottom:110px}.page h1{font:400 clamp(40px, 6vw, 66px) / 1 var(--serif);letter-spacing:-.02em;max-width:18ch}.page .lede{max-width:56ch;font:400 17px/1.65 var(--sans);color:var(--ink-65);margin-top:20px}.page .eyebrow{margin-bottom:20px}.grid-cards{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;margin-top:46px;display:grid}.use{background:#1c1b1905;border:1px solid #1c1b191f;border-radius:6px;padding:20px}.use .cat{font:400 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}.use .name{font:400 22px/1.25 var(--serif);margin-bottom:8px}.use p{font:400 14px/1.6 var(--sans);color:var(--ink-72)}.about-prose{max-width:62ch;margin-top:40px}.about-prose p{font:400 17.5px/1.75 var(--sans);color:var(--ink-86)}.about-prose p+p{margin-top:22px}.series-index{flex-direction:column;gap:40px;margin-top:46px;display:flex}.series-index h2{font:400 31px/1.2 var(--serif);letter-spacing:-.01em}.series-index ol{border-left:1px solid var(--rule);margin:18px 0 0;padding:0;list-style:none}.series-index li{padding-left:18px;position:relative}.series-index li+li{margin-top:16px}.series-index li .part{font:300 11px/1 var(--mono);color:var(--ink-62)}.series-index li a{font:400 20px/1.3 var(--serif);color:var(--ink);margin-top:6px;display:block}.series-index li a:hover{color:var(--accent)}.notfound{text-align:center;padding-top:140px;padding-bottom:160px}.notfound .code{font:400 clamp(80px, 16vw, 180px) / .9 var(--serif);color:var(--ink-42)}.notfound p{font:400 17px/1.6 var(--sans);color:var(--ink-68);margin-top:18px}.site-footer{color:var(--paper);background:linear-gradient(#223750 0%,#1a2a3d 45%,#131d29 100%);border-top:1px solid #f7f5f129;position:relative;overflow:hidden}.site-footer:before{content:"";pointer-events:none;opacity:.5;background-image:radial-gradient(#f7f5f18c .7px,#0000 .8px);background-size:3px 3px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0,#00000059 42%,#0000 88%);mask-image:linear-gradient(#000 0,#00000059 42%,#0000 88%)}.site-footer .wrap{padding:64px var(--pad) 58px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:30px;display:flex;position:relative}.site-footer .name{font:400 30px/1 var(--serif);margin-bottom:12px}.site-footer .colophon{font:400 13.5px/1.65 var(--sans);color:#f7f5f1b8;max-width:42ch}.site-footer .links{flex-wrap:wrap;gap:44px;display:flex}.site-footer .links>div{flex-direction:column;gap:9px;display:flex}.site-footer .links .cap{font:500 11px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:#f7f5f18c}.site-footer .links a{font:400 14px/1 var(--sans);color:#f7f5f1c7}.site-footer .links a:hover{color:var(--paper)}body:has(.post-head){--decor-band:420px}body:has(.page){--decor-band:380px}body:has(.notfound){--decor-band:620px}@media (width<=980px){.cols,.cols.narrow{grid-template-columns:minmax(0,1fr);gap:46px}.sidebar,.toc{position:static}.toc{order:-1}.fig.breakout{width:100%;max-width:100%;margin-left:0}}@media (width<=720px){:root{--pad:20px;--decor-band:400px}.brand .byline{display:none}.site-header .wrap{gap:14px}.site-nav{display:none}.nav-toggle{display:flex}.hero{padding-top:54px}.prose>p:first-of-type:first-letter{font-size:46px}.fig-mat{border-radius:7px;padding:12px}.fig-mat:has(img):after{display:none}.fig figcaption,.fig .fig-cap{font-size:14.5px}.prose h3{font-size:25px}.lightbox{padding:20px}.lightbox .nav{width:38px;height:38px;font-size:19px}.lightbox .nav.prev{left:4px}.lightbox .nav.next{right:4px}}@media print{.decor,.site-header,.site-footer,.toc,.progress,.sidebar,.lightbox{display:none!important}.fig.breakout{width:100%;max-width:100%;margin-left:0}.fig-mat{box-shadow:none;background:0 0;padding:0}.fig-mat img{box-shadow:0 0 0 1px #1c1b1933}.fig-mat:has(img):after{display:none}body{background:#fff}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.terminal .t-cursor{animation:none}}.hero.hero-split{grid-template-columns:minmax(0,1fr) 260px;align-items:start;gap:56px;display:grid}.portrait{background:#f7f5f1b3;border:1px solid #1c1b1924;border-radius:9px;padding:9px;box-shadow:0 1px 2px #1c1b190d,0 14px 30px -20px #1c1b1959}.portrait img{aspect-ratio:4/5;object-fit:cover;border-radius:5px;width:100%}.sidebar.rail{display:block}.sidebar.rail .cap{font:500 11px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-65);margin-bottom:14px}.pin-list{flex-direction:column;gap:18px;display:flex}.pin{color:var(--ink);border-radius:4px;margin:0 -8px;padding:2px 8px 2px 14px;transition:background .18s;display:block;position:relative}.pin:hover{color:var(--ink);background:#1c1b190a}.pin .spine{background:#2f62c480;border-radius:1px;width:2px;position:absolute;top:5px;bottom:5px;left:0}.pin .t{font:400 16.5px/1.35 var(--serif);text-wrap:pretty;display:block}.pin .m{font:300 11px/1 var(--mono);color:var(--ink-62);align-items:baseline;gap:9px;margin-top:6px;display:flex}.rail-tools{border-top:1px solid var(--rule);flex-direction:column;gap:9px;margin-top:22px;padding-top:16px;display:flex}.rail-tools a{font:300 12px/1 var(--mono);color:var(--ink-65)}.rail-tools a:hover{color:var(--accent)}.entry-tags{flex-wrap:wrap;gap:7px;margin-top:13px;display:flex}.entry-tags .tag-pill{cursor:inherit}.series-line{flex-wrap:wrap;gap:14px}.series-line .series-of{align-items:center;gap:10px;display:flex}.share{display:inline-flex;position:relative}.share-btn{border:1px solid var(--rule-strong);font:300 12px/1 var(--mono);color:var(--ink-72);cursor:pointer;background:#f7f5f199;border-radius:4px;align-items:center;gap:7px;padding:7px 12px;transition:border-color .18s,color .18s;display:inline-flex}.share-btn:hover{border-color:var(--accent-line);color:var(--accent)}.share-pop{z-index:40;background:var(--paper);border:1px solid #1c1b1924;border-radius:7px;width:328px;padding:16px;position:absolute;top:calc(100% + 10px);left:0;box-shadow:0 1px 2px #1c1b190d,0 22px 50px -24px #1c1b1973}.share-pop[hidden]{display:none}.share-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.share-head .cap{font:400 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.share-head .x{cursor:pointer;font:300 14px/1 var(--mono);color:var(--ink-62);background:0 0;border:none}.share-head .x:hover{color:var(--ink)}.share-url{border:1px solid var(--rule-strong);border-radius:4px;align-items:stretch;display:flex;overflow:hidden}.share-url .u{min-width:0;font:300 12px/1.3 var(--mono);color:var(--ink-78);text-overflow:ellipsis;white-space:nowrap;background:#1c1b1908;flex:1;padding:10px 11px;overflow:hidden}.share-url button{border:none;border-left:1px solid var(--rule-strong);background:var(--accent);color:var(--paper);font:500 11px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;flex:none;padding:0 14px}.toc nav{border-left:none;gap:1px}.toc nav a{border-left:2px solid #1c1b191f;border-radius:0 4px 4px 0;grid-template-columns:15px minmax(0,1fr) auto;align-items:start;gap:10px;padding:8px 8px 8px 10px;transition:background .18s,border-color .18s;display:grid}.toc nav a:hover{background:#1c1b190a}.toc nav a.active{border-left-color:var(--accent)}.toc .len{flex-direction:column;gap:2.5px;padding-top:5px;display:flex}.toc .len .bar{background:#1c1b191a;border-radius:1px;height:2px;display:block}.toc .len .bar.live{background:var(--ink-42)}.toc nav a.active .len .bar.live{background:#2f62c4bf}.toc .txt{flex-direction:column;gap:4px;min-width:0;display:flex}.toc .txt .t{font:400 13px/1.4 var(--sans);color:var(--ink-72)}.toc nav a.active .txt .t{color:var(--ink)}.toc .txt .w{font:300 10.5px/1 var(--mono);color:var(--ink-62)}.toc nav a.sub{padding-left:26px}.toc nav a.sub .txt .t{color:var(--ink-62);font-size:12px}.toc nav a.sub.active .txt .t{color:var(--ink)}.toc .fig-mark{color:#1c1b1973;padding-top:3px}.toc nav a.active .fig-mark{color:var(--accent)}.sn{display:none}@media (width>=1220px){.cols.narrow .prose:has(.sn){max-width:calc(68ch + 196px);padding-left:196px;position:relative}.prose .sn{text-align:right;width:172px;font:400 13px/1.6 var(--sans);color:var(--ink-72);text-wrap:pretty;display:block;position:absolute;left:0}.prose .sn>b{font:400 10.5px/1 var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--accent);margin-bottom:7px;display:block}}.work-grid{grid-template-columns:repeat(auto-fill,minmax(312px,1fr));gap:34px 28px;margin-top:52px;display:grid}.work{color:var(--ink);flex-direction:column;gap:18px;display:flex}a.work:hover{color:var(--ink)}a.work:hover h2{color:var(--accent)}.work h2{transition:color .18s}.work .mat{background:var(--mat);border-radius:9px;padding:14px;box-shadow:0 1px 2px #1c1b190d,0 20px 44px -26px #131d2980}.work .mat .fig-slot{aspect-ratio:16/10}.work .mat img{aspect-ratio:16/10;object-fit:cover;border-radius:3px;box-shadow:0 0 0 1px #f7f5f11f}.work .head{align-items:baseline;gap:10px;margin-bottom:9px;display:flex}.work .kind{font:400 10.5px/1 var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--accent)}.work .year{font:300 11px/1 var(--mono);color:var(--ink-62)}.work h2{font:400 26px/1.2 var(--serif);letter-spacing:-.01em;text-wrap:pretty;margin-bottom:9px}.work p{font:400 15px/1.65 var(--sans);color:var(--ink-78);text-wrap:pretty}.work .tags{flex-wrap:wrap;gap:7px;margin-top:14px;display:flex}.sec-head{align-items:center;gap:13px;margin-bottom:18px;display:flex}.sec-head .bar{background:var(--accent);border-radius:1px;flex:none;width:4px;height:21px}.sec-head .label{font:500 12.5px/1.2 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink)}.sec-head .rule{background:var(--rule-strong);flex:1;height:1px}.sec-head .aside{font:400 12.5px/1 var(--sans);color:var(--ink-62);flex:none}.link-groups{flex-direction:column;gap:34px;margin-top:44px;display:flex}.link-list{flex-direction:column;align-items:start;display:flex}.link-list a{font:400 18px/1.5 var(--serif);color:var(--accent);border-radius:4px;margin:0 -9px;padding:5px 9px;transition:background .18s,color .18s}.link-list a:hover{background:var(--accent-wash);color:var(--accent)}.spec-strip{border-top:1px solid #1c1b191f;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:26px;margin-top:56px;padding-top:28px;display:grid}.spec-strip>div{flex-direction:column;gap:7px;display:flex}.spec-strip .k{font:400 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-65)}.spec-strip .v{font:400 14px/1.5 var(--mono);color:var(--ink-86)}.sitemap{grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:44px 34px;margin-top:52px;display:grid}.sm-head{border-bottom:1px solid #1c1b191f;align-items:baseline;gap:10px;margin-bottom:4px;padding-bottom:12px;display:flex}.sm-head .label{font:400 12px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.sm-head .path{font:300 11px/1 var(--mono);color:var(--ink-62)}.sm-list{padding-left:20px;position:relative}.sm-list a{color:var(--ink);border-bottom:1px solid #1c1b190f;justify-content:space-between;align-items:baseline;gap:14px;padding:9px 0;display:flex;position:relative}.sm-list a:hover{color:var(--accent)}.sm-list a:before{content:"";background:#1c1b1929;width:1px;position:absolute;top:0;bottom:0;left:-17px}.sm-list a:first-child:before{top:20px}.sm-list a:last-child:before{height:20px;bottom:auto}.sm-list .tick{background:#1c1b192e;width:12px;height:1px;position:absolute;top:20px;left:-17px}.sm-list .l{font:400 14.5px/1.45 var(--sans);color:inherit}.sm-list .m{font:300 11px/1 var(--mono);color:var(--ink-62);flex:none}.page.notfound{text-align:left;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:64px;padding-top:78px;padding-bottom:110px;display:grid}.notfound .big{flex-wrap:wrap;align-items:baseline;gap:18px;display:flex}.notfound .big .n{font:400 clamp(86px, 13vw, 158px) / .82 var(--serif);letter-spacing:-.04em;color:var(--ink)}.notfound .big .caret{background:var(--accent);width:14px;height:34px;animation:1.1s step-end infinite blink;display:inline-block}.notfound h1{font:400 clamp(28px, 3.4vw, 40px) / 1.15 var(--serif);letter-spacing:-.01em;text-wrap:pretty;max-width:20ch;margin-top:26px}.notfound .lede{max-width:52ch;color:var(--ink-78);margin-top:20px;line-height:1.7}.notfound .actions{flex-wrap:wrap;justify-content:flex-start;gap:10px;margin-top:32px;display:flex}.btn{background:var(--accent);color:var(--paper);font:500 12px/1 var(--mono);letter-spacing:.06em;border-radius:4px;padding:11px 18px}.btn:hover{background:var(--ink);color:var(--paper)}.btn.ghost{color:var(--ink-78);background:0 0;border:1px solid #1c1b192e}.btn.ghost:hover{border-color:var(--accent-line);color:var(--accent);background:0 0}.notfound .aside-note{max-width:52ch;font:300 12px/1.7 var(--mono);color:var(--ink-65);margin-top:26px}.nf-side{flex-direction:column;gap:26px;display:flex}.nf-side .terminal{margin:0}.nf-side .terminal pre{line-height:1.85}.nf-side .ok-path{color:var(--ink-86)}.nf-side .bad-path{color:var(--del)}.nf-side .t-line.bad{border-left:2px solid var(--del);color:var(--ink-78);background:#a832321a;margin-left:-8px;padding-left:6px;display:block}.nf-side .t-line.dim{color:var(--ink-62)}.nf-post{color:var(--ink);border-bottom:1px solid #1c1b1912;border-radius:4px;justify-content:space-between;align-items:baseline;gap:16px;margin:0 -10px;padding:13px 10px;transition:background .18s;display:flex}.nf-post:hover{color:var(--ink);background:#1c1b190a}.nf-post .t{font:400 17px/1.3 var(--serif);text-wrap:pretty}.nf-post .d{font:300 11px/1 var(--mono);color:var(--ink-62);flex:none}@media (width<=980px){.hero.hero-split{grid-template-columns:minmax(0,1fr);gap:34px}.portrait{max-width:260px}.page.notfound{grid-template-columns:minmax(0,1fr);gap:44px}}
