@layer typography{.markdown-body{--blog-prose-bold:#101828;--blog-prose-bullets:#d1d5dc;--blog-prose-captions:#6a7282;--blog-prose-counters:#6a7282;--blog-prose-headings:#101828;--blog-prose-hr:#e5e7eb;--blog-prose-kbd-shadows:#1018281a;--blog-prose-kbd:#101828;--blog-prose-lead:#4a5565;--blog-prose-pre-bg:#1e2939;--blog-prose-pre-code:#e5e7eb;--blog-prose-quote-borders:#e5e7eb;--blog-prose-quotes:#101828;--blog-prose-td-borders:#e5e7eb;--blog-prose-th-borders:#d1d5dc;color:#3f3f46;color:lab(26.8019% 1.35387 -4.68303);max-width:65ch;font-size:1rem;line-height:1.75}.markdown-body :where(kbd):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){box-shadow:0 0 0 1px var(--blog-prose-kbd-shadows), 0 3px 0 var(--blog-prose-kbd-shadows);color:var(--blog-prose-kbd);padding-top:.1875em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline:.375em;font-family:inherit;font-size:.875em;font-weight:500}.markdown-body :where(pre):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){background-color:var(--blog-prose-pre-bg);color:var(--blog-prose-pre-code);padding-top:.857143em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.markdown-body :where(thead th):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){vertical-align:bottom;color:var(--blog-prose-headings);padding-bottom:.571429em;padding-inline:.571429em;font-weight:600}.markdown-body :where(tbody td,tfoot td):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){padding-top:.571429em;padding-bottom:.571429em;padding-inline:.571429em}.markdown-body :where(a):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:#625fff;color:lab(48.295% 38.3129 -81.9673);font-weight:500;text-decoration:underline}.markdown-body :where(blockquote):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:var(--blog-prose-quotes);quotes:"“" "”" "‘" "’";border-inline-start-color:var(--blog-prose-quote-borders);border-inline-start-width:.25rem;margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.markdown-body :where(a):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)):hover{color:#4f39f6;color:lab(38.4009% 52.6132 -92.3857)}.markdown-body :where(code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:#f6339a;color:lab(56.9303% 76.8162 -8.07021);font-size:.875em;font-weight:600}.markdown-body :where(a):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)) code,.markdown-dark:is(.dark *) :where(a):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)) code,.markdown-dark:is(.dark *) :where(a):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:#7d87ff;color:lab(59.866% 22.4834 -64.4485)}.markdown-dark:is(.dark *) :where(a):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)):hover{color:#a4b3ff;color:lab(74.0235% 8.54138 -41.6075)}.markdown-dark:is(.dark *){color:#d4d4d8;color:lab(84.9837% .601262 -2.17986)}.markdown-dark:is(.dark *) :where(h1,h2,h3,h4,h5,h6):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:#f4f4f5;color:lab(96.1634% .0993311 -.364041)}.markdown-dark:is(.dark *) :where(blockquote):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:#f4f4f5;color:lab(96.1634% .0993311 -.364041);border-left-color:#3f3f46;border-left-color:lab(26.8019% 1.35387 -4.68303)}.markdown-dark:is(.dark *) :where(thead):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)) th,.markdown-dark:is(.dark *) :where(strong):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:#f4f4f5;color:lab(96.1634% .0993311 -.364041)}.markdown-body :where(strong):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:var(--blog-prose-bold);font-weight:600}.markdown-body :where(figcaption):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:var(--blog-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.markdown-body :where(dt):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:var(--blog-prose-headings);margin-top:1.25em;font-weight:600}.markdown-body :where(h4):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:var(--blog-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.markdown-body :where(h3):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:var(--blog-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.markdown-body :where(h2):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:var(--blog-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.markdown-body :where(h1):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:var(--blog-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.markdown-body :where([class~=lead]):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:var(--blog-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.markdown-body :where(code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)):after,.markdown-body :where(code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)):before{content:"`"}.markdown-body :where(blockquote p:last-of-type):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)):after{content:close-quote}.markdown-body :where(blockquote p:first-of-type):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)):before{content:open-quote}.markdown-body :where(picture):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:2em;margin-bottom:2em;display:block}.markdown-body :where(table):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.markdown-body :where(h1,h2):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){letter-spacing:-.025em;font-weight:700}.markdown-body :where(ol[type="1"]):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){list-style-type:decimal}.markdown-body :where(ol):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.markdown-body :where(ul):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.markdown-body :where(ol[type=a s]):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(ol[type=a]):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){list-style-type:lower-alpha}.markdown-body :where(ol[type=i]):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(ol[type=i s]):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){list-style-type:lower-roman}.markdown-body :where(ol[type=A]):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(ol[type=A s]):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){list-style-type:upper-alpha}.markdown-body :where(ol[type=I s]):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(ol[type=I]):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){list-style-type:upper-roman}.markdown-body :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(thead th:last-child):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){padding-inline-end:0}.markdown-body :where(ul>li):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(ol>li):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){padding-inline-start:.375em}.markdown-body :where(thead th:first-child):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){padding-inline-start:0}.markdown-body :where(dd):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:.5em;padding-inline-start:1.625em}.markdown-body :where(th,td):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){text-align:start}.markdown-body :where(tbody td):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){vertical-align:baseline}.markdown-body :where(tfoot td):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){vertical-align:top}.markdown-dark:is(.dark *) :where(hr):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){border-color:#3f3f46;border-color:lab(26.8019% 1.35387 -4.68303)}.markdown-dark:is(.dark *) :where(tbody):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)) tr{border-bottom-color:#3f3f46;border-bottom-color:lab(26.8019% 1.35387 -4.68303)}.markdown-body :where(hr):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){border-top-width:1px;border-color:var(--blog-prose-hr) var(--blog-prose-hr) var(--blog-prose-hr) var(--blog-prose-hr);margin-top:3em;margin-bottom:3em}.markdown-body :where(tbody tr):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){border-bottom-width:1px;border-bottom-color:var(--blog-prose-td-borders)}.markdown-body :where(thead):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){border-bottom-width:1px;border-bottom-color:var(--blog-prose-th-borders)}.markdown-body :is(tbody tr:last-child):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){border-bottom-width:0}.markdown-body :where(tfoot):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){border-top-width:1px;border-top-color:var(--blog-prose-th-borders)}.markdown-body :where(li):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:.5em;margin-bottom:.5em}.markdown-body :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(.markdown-body>ul>li p):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:.75em;margin-bottom:.75em}.markdown-body :where(picture>img):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:0;margin-bottom:0}.markdown-body :where(.markdown-body>ul>li>p:last-child):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-bottom:1.25em}.markdown-body :where(p):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:1.25em;margin-bottom:1.25em}.markdown-body :where(.markdown-body>ol>li>p:last-child):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-bottom:1.25em}.markdown-body :where(dl):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:1.25em;margin-bottom:1.25em}.markdown-body :where(img):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(video):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(figure):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:2em;margin-bottom:2em}.markdown-body :where(.markdown-body>ul>li>p:first-child):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(.markdown-body>ol>li>p:first-child):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:1.25em}.markdown-body :where(ul>li):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *))::marker{color:var(--blog-prose-bullets)}.markdown-body :where(ol>li):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *))::marker{color:var(--blog-prose-counters);font-weight:400}.markdown-body :where(pre code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;color:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.markdown-body :where(a strong):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:inherit}.markdown-body :where(h1 strong):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:inherit;font-weight:900}.markdown-body :where(h3 code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:inherit;font-size:.9em}.markdown-body :where(h4 strong):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(h3 strong):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:inherit;font-weight:700}.markdown-body :where(thead th code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(h4 code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(a code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(blockquote code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(h1 code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:inherit}.markdown-body :where(h2 code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:inherit;font-size:.875em}.markdown-body :where(h2 strong):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:inherit;font-weight:800}.markdown-body :where(thead th strong):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(blockquote strong):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){color:inherit}.markdown-body :where(pre code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)):before,.markdown-body :where(pre code):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)):after{content:none}}@layer typographyFinal{.markdown-body :where(figure>*):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:0;margin-bottom:0}.markdown-body :where(.markdown-body>:last-child):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-bottom:0}.markdown-body :where(h4+*):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(hr+*):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(h2+*):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(.markdown-body>:first-child):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)),.markdown-body :where(h3+*):not(:where([class~=markdown-exempt],[class~=markdown-exempt] *)){margin-top:0}}@supports (color:lab(0% 0 0)){@layer typography{.markdown-body{--blog-prose-bold:lab(8.11897% .811279 -12.254);--blog-prose-bullets:lab(85.1236% -.612259 -3.7138);--blog-prose-captions:lab(47.7841% -.393182 -10.0268);--blog-prose-counters:lab(47.7841% -.393182 -10.0268);--blog-prose-headings:lab(8.11897% .811279 -12.254);--blog-prose-hr:lab(91.6229% -.159115 -2.26791);--blog-prose-kbd-shadows:lab(8.11897% .811279 -12.254/.1);--blog-prose-kbd:lab(8.11897% .811279 -12.254);--blog-prose-lead:lab(35.6337% -1.58697 -10.8425);--blog-prose-pre-bg:lab(16.1051% -1.18239 -11.7533);--blog-prose-pre-code:lab(91.6229% -.159115 -2.26791);--blog-prose-quote-borders:lab(91.6229% -.159115 -2.26791);--blog-prose-quotes:lab(8.11897% .811279 -12.254);--blog-prose-td-borders:lab(91.6229% -.159115 -2.26791);--blog-prose-th-borders:lab(85.1236% -.612259 -3.7138)}}}@layer site{.post-article a.external-link:after{content:"↗";vertical-align:text-top;color:var(--ink-4);margin-left:1px;font-size:.78em;font-weight:600;display:inline-block}.post-article blockquote p{margin:0}.series-nav-list ol{flex-direction:column;gap:2px;margin:10px 0 4px;padding:0;list-style:none;display:flex}.post-article ul,.post-article ol{margin:14px 0 14px 22px}.post-article p{margin:14px 0}.post-article table{border-collapse:collapse;width:100%;margin:20px 0;font-size:14px}.post-slide-note{border-left:3px solid var(--primary);background-attachment:scroll;background-clip:border-box;background-color:var(--primary);background-image:none;background-repeat:repeat;background-position:initial;max-width:820px;color:var(--ink-2);background-size:auto;background-origin:padding-box;border-radius:0 8px 8px 0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:20px auto 0;padding:10px 14px;font-size:13px;display:flex}.post-article pre{border-style:solid;border-width:1px;border-color:var(--border) var(--border) var(--border) var(--border);border-radius:10px;margin:22px 0}.post-article h4{letter-spacing:-.02em;color:var(--ink);margin:24px 0 10px;font-size:17px;font-weight:600;line-height:1.3}.post-article blockquote{border-left:3px solid var(--primary);background-attachment:scroll;background-clip:border-box;background-color:var(--primary);background-image:none;background-repeat:repeat;background-position:initial;color:var(--ink);background-size:auto;background-origin:padding-box;border-radius:0 10px 10px 0;margin:24px 0;padding:14px 22px;font-size:17px;font-style:normal}.post-series-nav{border-style:solid;border-width:1px;border-color:var(--border) var(--border) var(--border) var(--border);background-attachment:scroll;background-clip:border-box;background-color:var(--surface);background-image:none;background-repeat:repeat;background-position:initial;background-size:auto;background-origin:padding-box;border-radius:12px;max-width:820px;margin:24px auto;padding:18px 20px}.post-article h3{letter-spacing:-.02em;color:var(--ink);margin:32px 0 12px;font-size:20px;font-weight:600;line-height:1.3}.post-article hr{border-style:solid none none;border-width:1px 0 0;border-color:var(--border) currentColor currentColor currentColor;margin:36px 0}.series-endnav{grid-template-columns:1fr 1fr;gap:12px;max-width:820px;margin:40px auto 0;display:grid}.post-article h2{letter-spacing:-.02em;color:var(--ink);margin:44px 0 16px;padding-bottom:6px;font-size:26px;font-weight:700;line-height:1.3}.post-article h1{letter-spacing:-.02em;color:var(--ink);margin:48px 0 18px;font-size:32px;font-weight:700;line-height:1.3}.post-article li{margin:6px 0}.series-nav-list summary{color:var(--ink-3);cursor:pointer;align-items:center;gap:6px;padding:10px 0 2px;font-size:13px;list-style:none;transition:color .18s;display:inline-flex}.post-article td,.post-article th{border-style:solid;border-width:1px;border-color:var(--border) var(--border) var(--border) var(--border);padding:10px 14px}.post-subscribe{border-style:solid;border-width:1px;border-color:var(--border) var(--border) var(--border) var(--border);background-attachment:scroll;background-clip:border-box;background-color:var(--surface);background-image:none;background-repeat:repeat;background-position:initial;color:var(--ink-2);background-size:auto;background-origin:padding-box;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:40px;padding:14px 16px;font-size:14px;display:flex}.series-endnav-card{border-style:solid;border-width:1px;border-color:var(--border) var(--border) var(--border) var(--border);background-attachment:scroll;background-clip:border-box;background-color:var(--surface);background-image:none;background-repeat:repeat;background-position:initial;background-size:auto;background-origin:padding-box;border-radius:12px;flex-direction:column;gap:6px;min-width:0;padding:14px 16px;transition:border-color .18s;display:flex}.series-readme{border-style:solid;border-width:1px;border-color:var(--border) var(--border) var(--border) var(--border);background-attachment:scroll;background-clip:border-box;background-color:var(--surface);background-image:none;background-repeat:repeat;background-position:initial;background-size:auto;background-origin:padding-box;border-radius:12px;margin-top:8px;padding:18px 22px 6px}.post-article :not(pre)>code{border-style:solid;border-width:1px;border-color:var(--border) var(--border) var(--border) var(--border);background-attachment:scroll;background-clip:border-box;background-color:var(--surface-2);background-image:none;background-repeat:repeat;background-position:initial;font-family:var(--font-mono), monospace;word-break:break-word;color:var(--primary-3);background-size:auto;background-origin:padding-box;border-radius:5px;padding:2px 6px;font-size:.87em}.series-nav-kicker{background-attachment:scroll;background-clip:border-box;background-color:var(--primary);background-image:none;background-repeat:repeat;background-position:initial;font-family:var(--font-mono), monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--primary);background-size:auto;background-origin:padding-box;border-radius:999px;padding:3px 8px;font-size:10px}.series-nav-list li a,.series-nav-list li>span{color:var(--ink-2);border-radius:8px;align-items:center;gap:12px;padding:8px 10px;transition:color .16s,background-color .18s;display:flex}.series-endnav-card.empty{background:0 0;border:none}.series-nav-list li a:hover{background-attachment:scroll;background-clip:border-box;background-color:var(--surface-2);background-image:none;background-repeat:repeat;background-position:initial;color:var(--ink);background-size:auto;background-origin:padding-box}.series-nav-list li[data-current=true]>span{box-shadow:inset 0 0 0 1px var(--primary);background-attachment:scroll;background-clip:border-box;background-color:var(--primary);background-image:none;background-repeat:repeat;background-position:initial;color:var(--primary);background-size:auto;background-origin:padding-box;font-weight:600}.post-article thead th{background-attachment:scroll;background-clip:border-box;background-color:var(--surface-2);background-image:none;background-repeat:repeat;background-position:initial;text-align:left;color:var(--ink);background-size:auto;background-origin:padding-box;font-weight:700}.post-article img{border-style:solid;border-width:1px;border-color:var(--border) var(--border) var(--border) var(--border);border-radius:10px}.series-nav-title{letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--ink);flex:1;font-size:15px;font-weight:700;overflow:hidden}.series-nav-head{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.post-footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;gap:12px;max-width:820px;margin-top:56px;margin-left:auto;margin-right:auto;padding-top:20px;font-size:14px;display:flex}.series-nav-prevnext{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;margin-top:14px;padding-top:14px;display:flex}.series-nav-link{max-width:48%;color:var(--ink-3);align-items:center;gap:6px;font-size:12.5px;transition:color .16s;display:inline-flex}.series-nav-link span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.series-endnav-card strong{letter-spacing:-.01em;color:var(--ink);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:14px;font-weight:600;line-height:1.45;display:-webkit-box;overflow:hidden}.post-article a{color:var(--primary);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.series-endnav-label{font-family:var(--font-mono), monospace;letter-spacing:.08em;color:var(--ink-3);font-size:11px;transition:color .16s}.series-nav-list summary svg{transition:transform .2s cubic-bezier(.2,.9,.2,1)}.series-endnav-card.next{text-align:right;align-items:flex-end}.post-article{max-width:820px;color:var(--ink-2);margin-left:auto;margin-right:auto;font-size:16px;line-height:1.8}.post-related-title{font-family:var(--font-mono), monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:14px;font-size:12px;font-weight:700}.post-footer .issue{color:var(--ink-3)}.post-author-note{width:100%;color:var(--ink-3)}.series-nav-progress{font-family:var(--font-mono), monospace;letter-spacing:.06em;color:var(--ink-3);font-size:11px}.series-nav-list li em{font-family:var(--font-mono), monospace;letter-spacing:.06em;color:var(--ink-4);flex-shrink:0;font-size:11px;font-style:normal}.series-nav-list summary:hover{color:var(--ink)}.post-article p strong{color:var(--ink);font-weight:600}.post-article h6{letter-spacing:-.02em;color:var(--ink);font-weight:700;line-height:1.3}.post-article li strong{color:var(--ink);font-weight:600}.post-article h5{letter-spacing:-.02em;color:var(--ink);font-weight:700;line-height:1.3}.post-slide-note-link:hover,.post-article a:hover,.post-footer a:hover,.post-subscribe-link:hover{color:var(--primary-2)}.post-subscribe-link{color:var(--primary);flex-shrink:0}.post-slide-note-link{color:var(--primary);flex-shrink:0;font-weight:600}.series-nav-link:hover,.series-endnav-card:hover .series-endnav-label,.series-nav-list li[data-current=true] em,.post-footer a{color:var(--primary)}.post-layout{display:block;position:relative}.series-nav-list li{font-size:13.5px;line-height:1.5}.series-readme .post-article{font-size:15px}.series-nav-link.next{text-align:right;margin-left:auto}.series-nav-list[open] summary svg{transform:rotate(90deg)}.series-view .post-title{word-break:keep-all}.series-endnav-card:hover{border-color:var(--primary) var(--primary) var(--primary) var(--primary)}.post-masthead,.post-back{max-width:820px;margin-left:auto;margin-right:auto}.post-article blockquote p+p{margin-top:12px}.post-related{margin-top:56px}.series-view .post-masthead,.series-view .post-article{max-width:none}.series-thread .rec-row:before{content:"";background-attachment:scroll;background-clip:border-box;background-color:var(--border);background-image:none;background-repeat:repeat;background-position:initial;background-size:auto;background-origin:padding-box;width:1px;position:absolute;top:0;bottom:0;left:12px}.series-thread .rec-row:after{content:"◆";color:var(--ink-4);font-size:9px;line-height:1;transition:color .18s;position:absolute;top:50%;left:12px;transform:translate(-50%,-50%)}.series-thread .rec-row:hover:after{color:var(--primary)}.post-article blockquote p:last-of-type:after,.post-article blockquote p:first-of-type:before{content:none}.series-nav-list summary::-webkit-details-marker{display:none}.series-thread .rec-row:last-child:before{bottom:50%}.series-thread .rec-row:first-child:before{top:50%}math{font-family:Libertinus Math,math}math[display=block]{max-width:100%;margin-block:1em;display:block;overflow:auto hidden}.token.tag,.token.boolean,.token.deleted{color:#dc2626}.token.attr-name,.token.class-name{color:#ca8a04}.token.string,.token.attr-value,.token.inserted{color:#16a34a}.token.punctuation{color:#1f2937}.token.keyword{color:#9333ea}.token.function,.token.number{color:#2563eb}.token.comment{color:#71717b;color:lab(47.8878% 1.65477 -5.77283);font-style:italic}.dark .token.tag,.dark .token.boolean,.dark .token.deleted{color:#f99}.dark .token.attr-name,.dark .token.class-name{color:#ffeb99}.dark .token.string,.dark .token.attr-value,.dark .token.inserted{color:#a4f4c0}.dark .token.punctuation{color:#fff}.dark .token.keyword{color:#d7a9ff}.dark .token.function,.dark .token.number{color:#98dcff}.dark .token.comment{color:#9f9fa9;color:lab(65.6464% 1.53497 -5.42429)}.code-line.deleted{background-color:#fb2c3633}.code-line.inserted{background-color:#00c75833}.code-line{border-left-width:4px;border-left-color:#0000;margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px;display:block}.highlight-line{border-left-width:4px;border-left-color:var(--color-amber-500);background-color:#f99c0033;margin-left:-16px;margin-right:-16px}.highlight-line:is(.dark *){border-left-color:var(--color-yellow-400);background-color:#fac80026}pre:has(>code):is(.dark *){background-color:#18181b;background-color:lab(8.30603% .618205 -2.16572)}pre:has(>code){background-color:#f4f4f5;background-color:lab(96.1634% .0993311 -.364041)}span.icon.icon-link{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 1 0-7l1-1a5 5 0 0 1 7 7l-1 1'/%3E%3Cpath d='M14 11a5 5 0 0 1 0 7l-1 1a5 5 0 0 1-7-7l1-1'/%3E%3C/svg%3E");width:.8em;height:.8em;margin-right:.2em;display:inline-block}.dark span.icon.icon-link{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 490 490' xml:space='preserve'%3E%3Cpath fill='white' d='M64.333 490h58.401l33.878-137.69h122.259L245.39 490h58.401l33.878-137.69h119.92v-48.162h-108.24l29.2-117.324h79.04v-48.162H390.23L424.108 0H365.31l-33.878 138.661H208.79L242.668 0h-58.415l-33.864 138.661H32.411v48.162h106.298l-28.818 117.324h-77.48v48.162h65.8L64.333 490zM197.11 186.824h122.642l-29.2 117.324h-122.26l28.818-117.324z'/%3E%3C/svg%3E")}pre code{color:#27272a;color:lab(15.7305% .613764 -2.16959)}pre code:is(.dark *){color:#f4f4f5;color:lab(96.1634% .0993311 -.364041)}.sr-only{white-space:nowrap;clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.mermaid-zoom-content{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;display:inline-block}.code-highlight{float:left;min-width:100%}code{word-wrap:break-word}.mermaid-zoom-controls{right:max(1rem, env(safe-area-inset-right));bottom:max(1rem, env(safe-area-inset-bottom));z-index:1}h4>a>span.icon.icon-link{width:12px;height:12px}h3>a>span.icon.icon-link{width:15px;height:15px}h2>a>span.icon.icon-link{width:18px;height:18px}pre{overflow-x:auto}.line-number:before{content:attr(line);text-align:right;color:#9f9fa9;color:lab(65.6464% 1.53497 -5.42429);width:1rem;margin-left:-8px;margin-right:16px;display:inline-block}.markdown-body h2[id^=table-of-contents]+ul{padding:calc(var(--spacing) * 5);border-width:1px;border-style:var(--blog-border-style) var(--blog-border-style) var(--blog-border-style) var(--blog-border-style);border-radius:var(--radius-lg);margin-block:calc(var(--spacing) * 6);background-color:#fafafa;background-color:lab(98.26% 0 0);border-color:#e4e4e7;border-color:lab(90.6853% .399232 -1.45452);list-style-type:none}.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>ul>li>a{font-size:var(--text-xs);line-height:var(--blog-leading,var(--text-xs--line-height));color:#9f9fa9;color:lab(65.6464% 1.53497 -5.42429);transition-duration:var(--blog-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--blog-gradient-from,--blog-gradient-via,--blog-gradient-to;transition-timing-function:var(--blog-ease,var(--default-transition-timing-function));padding-block:calc(var(--spacing) * .5);text-decoration-line:none;display:block}.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>a{font-size:var(--text-xs);line-height:var(--blog-leading,var(--text-xs--line-height));color:#71717b;color:lab(47.8878% 1.65477 -5.77283);transition-duration:var(--blog-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--blog-gradient-from,--blog-gradient-via,--blog-gradient-to;transition-timing-function:var(--blog-ease,var(--default-transition-timing-function));padding-block:var(--spacing);text-decoration-line:none;display:block}.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>a{font-size:var(--text-sm);line-height:var(--blog-leading,var(--text-sm--line-height));color:#52525c;color:lab(35.1166% 1.78212 -6.1173);transition-duration:var(--blog-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--blog-gradient-from,--blog-gradient-via,--blog-gradient-to;transition-timing-function:var(--blog-ease,var(--default-transition-timing-function));padding-block:var(--spacing);text-decoration-line:none;display:block}.markdown-body h2[id^=table-of-contents]+ul>li>a{font-weight:var(--font-weight-semibold);color:#27272a;color:lab(15.7305% .613764 -2.16959);transition-duration:var(--blog-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--blog-gradient-from,--blog-gradient-via,--blog-gradient-to;transition-timing-function:var(--blog-ease,var(--default-transition-timing-function));padding-block:var(--spacing);text-decoration-line:none;display:block}.markdown-body h2[id^=table-of-contents]+ul:is(.dark *){background-color:#27272a80;background-color:lab(15.7305% .613719 -2.16957/.5);border-color:#3f3f46;border-color:lab(26.8019% 1.35387 -4.68303)}.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>ul>li>a:is(.dark *){color:#71717b;color:lab(47.8878% 1.65477 -5.77283)}.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>a:is(.dark *),.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>a:is(.dark *){color:#9f9fa9;color:lab(65.6464% 1.53497 -5.42429)}.markdown-body h2[id^=table-of-contents]+ul>li>a:is(.dark *){color:#e4e4e7;color:lab(90.6853% .399232 -1.45452)}.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>ul{margin-top:var(--spacing);padding-left:calc(var(--spacing) * 3);border-left:2px var(--blog-border-style) #f4f4f5;border-color:#f4f4f5;border-color:lab(96.1634% .0993311 -.364041);list-style-type:none;margin-bottom:calc(var(--spacing) * 2)!important}@supports (color:lab(0% 0 0)){.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>ul{border-left:2px var(--blog-border-style) lab(96.1634% .0993311 -.364041)}}.markdown-body h2[id^=table-of-contents]+ul>li>ul,.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul{margin-top:var(--spacing);padding-left:calc(var(--spacing) * 4);border-left:2px var(--blog-border-style) #e4e4e7;border-color:#e4e4e7;border-color:lab(90.6853% .399232 -1.45452);list-style-type:none;margin-bottom:calc(var(--spacing) * 2)!important}@supports (color:lab(0% 0 0)){.markdown-body h2[id^=table-of-contents]+ul>li>ul,.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul{border-left:2px var(--blog-border-style) lab(90.6853% .399232 -1.45452)}}.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul:is(.dark *),.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>ul:is(.dark *),.markdown-body h2[id^=table-of-contents]:is(.dark *),.markdown-body h2[id^=table-of-contents]+ul>li>ul:is(.dark *){border-color:#3f3f46;border-color:lab(26.8019% 1.35387 -4.68303)}.markdown-body h2[id^=table-of-contents]{margin-top:calc(var(--spacing) * 8);margin-bottom:calc(var(--spacing) * 4);padding-bottom:calc(var(--spacing) * 2);border-bottom:1px var(--blog-border-style) #e4e4e7;border-color:#e4e4e7;border-color:lab(90.6853% .399232 -1.45452)}@supports (color:lab(0% 0 0)){.markdown-body h2[id^=table-of-contents]{border-bottom:1px var(--blog-border-style) lab(90.6853% .399232 -1.45452)}}.markdown-body h2[id^=table-of-contents]+ul>li{margin-top:0;padding-left:0!important}.markdown-body h2[id^=table-of-contents]+ul>li>ul>li,.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>ul>li,.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li{margin-top:var(--spacing);padding-left:0!important}.markdown-body h2[id^=table-of-contents]+ul>li>ul>li:before,.markdown-body h2[id^=table-of-contents]+ul>li:before,.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>ul>li:before,.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li:before{display:none}}@supports (color:color-mix(in lab, red, red)){@layer site{.series-endnav-card.empty{background:0 0;border-color:currentColor}.post-article blockquote{background-attachment:scroll;background-clip:border-box;background-color:color-mix(in oklab, var(--primary) 6%, var(--surface));background-image:none;background-repeat:repeat;background-position:initial;background-size:auto;background-origin:padding-box}.series-nav-list li[data-current=true]>span{box-shadow:inset 0 0 0 1px color-mix(in oklab, var(--primary) 25%, transparent);background-attachment:scroll;background-clip:border-box;background-color:color-mix(in oklab, var(--primary) 10%, var(--surface-2));background-image:none;background-repeat:repeat;background-position:initial;background-size:auto;background-origin:padding-box}.series-readme{background-attachment:scroll;background-clip:border-box;background-color:color-mix(in oklab, var(--surface) 70%, transparent);background-image:none;background-repeat:repeat;background-position:initial;background-size:auto;background-origin:padding-box}.series-nav-list li a:hover{background-attachment:scroll;background-clip:border-box;background-color:color-mix(in oklab, var(--surface-2) 80%, transparent);background-image:none;background-repeat:repeat;background-position:initial;background-size:auto;background-origin:padding-box}.post-series-nav,.post-subscribe,.series-endnav-card{background-attachment:scroll;background-clip:border-box;background-color:color-mix(in oklab, var(--surface) 70%, transparent);background-image:none;background-repeat:repeat;background-position:initial;background-size:auto;background-origin:padding-box}.series-nav-kicker{background-attachment:scroll;background-clip:border-box;background-color:color-mix(in oklab, var(--primary) 12%, transparent);background-image:none;background-repeat:repeat;background-position:initial;background-size:auto;background-origin:padding-box}.post-slide-note{background-attachment:scroll;background-clip:border-box;background-color:color-mix(in oklab, var(--primary) 8%, transparent);background-image:none;background-repeat:repeat;background-position:initial;background-size:auto;background-origin:padding-box}.series-endnav-card:hover{border-color:color-mix(in oklab, var(--primary) 45%, var(--border)) color-mix(in oklab, var(--primary) 45%, var(--border)) color-mix(in oklab, var(--primary) 45%, var(--border)) color-mix(in oklab, var(--primary) 45%, var(--border))}}}@media (max-width:640px){@layer site{.series-endnav-card.empty{display:none}.series-endnav{grid-template-columns:1fr}}}@font-face{font-family:Libertinus Math;src:url(/fonts/math/LibertinusMath-Regular.woff2)format("woff2");font-display:swap}@supports not ((-moz-appearance:none)){@layer site{math mover[accent=true i]>mo:nth-child(2){margin-bottom:.15ex}}}@supports (color:color-mix(in lab, red, red)){@layer site{.highlight-line{background-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}.code-line.inserted{background-color:color-mix(in oklab, var(--color-green-500) 20%, transparent)}.code-line.deleted{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}.highlight-line:is(.dark *){background-color:color-mix(in oklab, var(--color-yellow-400) 15%, transparent)}}}@media (hover:hover){@layer site{.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>a:hover,.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>a:hover,.markdown-body h2[id^=table-of-contents]+ul>li>a:hover,.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>ul>li>a:hover{color:#4f39f6;color:lab(38.4009% 52.6132 -92.3857)}.markdown-body h2[id^=table-of-contents]+ul>li>a:is(.dark *):hover,.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>ul>li>a:is(.dark *):hover,.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>ul>li>a:is(.dark *):hover,.markdown-body h2[id^=table-of-contents]+ul>li>ul>li>a:is(.dark *):hover{color:#7d87ff;color:lab(59.866% 22.4834 -64.4485)}}}
