.toc__head[data-astro-cid-7k3pnqyz]{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);padding-bottom:14px;font-size:9.5px;list-style:none}.toc__head[data-astro-cid-7k3pnqyz]::-webkit-details-marker{display:none}@media (width>=1001px){.toc__disclosure[data-astro-cid-7k3pnqyz]>summary[data-astro-cid-7k3pnqyz]{pointer-events:none}}@media (width<=1000px){.toc[data-astro-cid-7k3pnqyz]{border:1px solid var(--line-2);border-radius:var(--r-card);background:var(--surface);padding:14px 16px}.toc__head[data-astro-cid-7k3pnqyz]{cursor:pointer;align-items:center;gap:8px;padding-bottom:0;display:flex}.toc__head[data-astro-cid-7k3pnqyz]:after{content:"▾";margin-left:auto;font-size:11px}.toc__disclosure[data-astro-cid-7k3pnqyz][open] .toc__head[data-astro-cid-7k3pnqyz]{padding-bottom:10px}.toc__disclosure[data-astro-cid-7k3pnqyz][open] .toc__head[data-astro-cid-7k3pnqyz]:after{content:"▴"}.toc__progress[data-astro-cid-7k3pnqyz]{display:none}}.toc__link[data-astro-cid-7k3pnqyz]{color:var(--ink-3);grid-template-columns:14px minmax(0,1fr);align-items:baseline;gap:11px;padding:8px 10px 8px 0;font-size:13px;line-height:1.4;text-decoration:none;display:grid}.toc__link[data-astro-cid-7k3pnqyz]:hover,.toc__link[data-astro-cid-7k3pnqyz].is-active{color:var(--ink)}.toc__dot[data-astro-cid-7k3pnqyz]{background:var(--line);border-radius:50%;width:6px;height:6px;margin-bottom:2px}.toc__link[data-astro-cid-7k3pnqyz].is-active .toc__dot[data-astro-cid-7k3pnqyz]{background:var(--accent)}.toc__progress[data-astro-cid-7k3pnqyz]{border-top:1px solid var(--line-2);margin-top:22px;padding-top:16px}.toc__track[data-astro-cid-7k3pnqyz]{background:var(--line-2);border-radius:3px;height:3px;overflow:hidden}.toc__fill[data-astro-cid-7k3pnqyz]{background:var(--accent);border-radius:3px;width:0;height:3px;transition:width .12s linear}.toc__labels[data-astro-cid-7k3pnqyz]{font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);margin-top:10px;font-size:9.5px;display:flex}.toc__labels[data-astro-cid-7k3pnqyz] span[data-astro-cid-7k3pnqyz]:last-child{margin-left:auto}.author__row[data-astro-cid-2tgtkdc7]{border-top:1px solid var(--line-2);align-items:center;gap:12px;margin-top:34px;padding-top:22px;display:flex}.author__avatar[data-astro-cid-2tgtkdc7]{background:var(--paper-2);border-radius:50%;flex:none;width:44px;height:44px;position:relative;overflow:hidden}.author__avatar[data-astro-cid-2tgtkdc7]:after{content:"";background:repeating-linear-gradient(115deg, var(--line-2) 0 1px, transparent 1px 8px);position:absolute;inset:0}.author__name[data-astro-cid-2tgtkdc7]{letter-spacing:-.015em;font-size:15px;font-weight:600}.author__role[data-astro-cid-2tgtkdc7]{color:var(--ink-3);margin-top:2px;font-size:12px}.author__bio[data-astro-cid-2tgtkdc7]{font-family:var(--prose);color:var(--ink-2);margin-top:14px;font-size:15px;line-height:1.58}.author__links[data-astro-cid-2tgtkdc7]{gap:12px;margin-top:12px;font-size:13px;display:flex}.pcard2[data-astro-cid-sbmovh4h]{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-card);color:var(--ink);flex-direction:column;gap:12px;min-height:172px;padding:18px;text-decoration:none;display:flex}.pcard2[data-astro-cid-sbmovh4h]:hover{border-color:var(--line);color:var(--ink)}.pcard2__meta[data-astro-cid-sbmovh4h]{font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:7px;font-size:9px;display:flex}.pcard2__meta[data-astro-cid-sbmovh4h] .dot[data-astro-cid-sbmovh4h]{width:6px;height:6px}.pcard2__title[data-astro-cid-sbmovh4h]{letter-spacing:-.022em;font-size:17px;font-weight:600;line-height:1.28}.pcard2__foot[data-astro-cid-sbmovh4h]{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-top:auto;font-size:9.5px}.prose{font-family:var(--prose);letter-spacing:-.008em;color:var(--ink);font-size:18px;line-height:1.74}.prose>*{max-width:var(--measure)}.prose p{margin:0 0 24px}.prose h2{letter-spacing:-.03em;margin:54px 0 18px;scroll-margin-top:116px;font-size:33px;font-weight:600;line-height:1.18}.prose h3{letter-spacing:-.026em;margin:38px 0 14px;scroll-margin-top:116px;font-size:23px;line-height:1.28}.prose h4{letter-spacing:-.02em;margin:30px 0 12px;font-size:18px;line-height:1.35}.prose strong{font-weight:600}.prose ul,.prose ol{margin:0 0 24px;padding-left:26px}.prose li{margin-bottom:13px}.prose li:last-child{margin-bottom:0}.prose hr{border:0;border-top:1px solid var(--line-2);margin:48px 0}.prose .heading-anchor{opacity:0;color:var(--ink-3);margin-left:.35em;font-weight:400;text-decoration:none}.prose :is(h2,h3,h4):hover .heading-anchor,.prose .heading-anchor:focus-visible{opacity:1}.prose :not(pre)>code{background:var(--paper-2);border-radius:var(--r-sm);padding:2px 6px;font-size:.86em}.prose .callout{border-radius:var(--r-card);margin:36px 0;padding:20px 22px}.prose .callout--accent{background:var(--accent-tint)}.prose .callout--neutral{background:var(--paper-2)}.prose .callout__label{font-family:var(--mono);letter-spacing:.15em;text-transform:uppercase;margin:0 0 9px;font-size:9.5px}.prose .callout--accent .callout__label{color:var(--accent)}.prose .callout--neutral .callout__label{color:var(--ink-2)}.prose .callout p{font-family:var(--prose);margin:0;font-size:17.5px;line-height:1.6}.prose .callout p+p{margin-top:14px}.prose blockquote{border:0;margin:44px 0;padding:0}.prose blockquote p{font-family:var(--sans);letter-spacing:-.028em;color:var(--ink);margin:0;font-size:26px;font-weight:500;line-height:1.36}.prose .code{background:var(--code-bg);max-width:none;color:var(--code-fg);border-radius:var(--r-card);margin:30px 0;overflow:hidden}.prose .code__bar{border-bottom:1px solid var(--code-rule);align-items:center;gap:12px;padding:11px 16px;display:flex}.prose .code__title{font-family:var(--mono);color:var(--code-chrome);font-size:11px}.prose .code__badge{font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--code-muted);margin-left:auto;font-size:9.5px}.prose .code__copy{cursor:pointer;color:var(--code-chrome);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:7px;padding:5px 9px;font-size:9.5px}.prose .code__copy:hover{color:#fff;background:#ffffff21}.prose .code pre{margin:0;padding:18px 16px;font-size:13px;line-height:1.9;overflow-x:auto;background:0 0!important}.prose .code code{font-size:inherit;background:0 0;padding:0;display:grid}.prose .code .line{margin:0 -16px;padding:0 16px}.prose .code--lines code{counter-reset:line}.prose .code--lines .line:before{counter-increment:line;content:counter(line);width:18px;color:var(--code-gutter);text-align:right;user-select:none;margin-right:20px;display:inline-block}.prose .code--diff .line:before{content:" ";width:11px;color:var(--code-gutter);user-select:none;margin-right:14px;display:inline-block}.prose .code .line.diff.add{background:#96be8c21}.prose .code .line.diff.add:before{content:"+";color:#a9c99a}.prose .code .line.diff.remove{color:#b8b1a6;background:#dc785a21}.prose .code .line.diff.remove:before{content:"−";color:#d78b6f}.prose .code .line.highlighted{background:#ffffff0f}.prose .code:has(.focused) .line:not(.focused){opacity:.45;filter:blur(.4px);transition:opacity .2s,filter .2s}.prose .code:hover .line:not(.focused){opacity:1;filter:none}.prose .table-wrap{border:1px solid var(--line-2);border-radius:var(--r-card);max-width:none;margin:28px 0 12px;overflow:hidden}.prose table{border-collapse:collapse;width:100%;font-family:var(--sans);font-variant-numeric:tabular-nums;font-size:14px}.prose thead tr{background:var(--paper-2)}.prose th{text-align:left;font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);padding:12px 16px;font-size:9.5px;font-weight:400}.prose td{border-top:1px solid var(--line-2);padding:13px 16px}.prose th[align=right],.prose td[align=right]{text-align:right}.prose th[align=center],.prose td[align=center]{text-align:center}.prose td>strong:only-child{color:var(--accent)}.prose figure,.prose .figure{max-width:none;margin:30px 0}.prose figure img,.prose .figure img{border-radius:var(--r-card);width:100%;height:auto}.prose figcaption,.prose .figure__caption{font-family:var(--sans);color:var(--ink-3);max-width:var(--measure);margin:10px 0 0;font-size:13px;line-height:1.5}.prose .mermaid,.prose .diagram{max-width:none;margin:30px 0}.prose .mermaid>svg,.prose .diagram{width:100%;height:auto;display:block}.prose .mermaid .edgeLabel>:is(div,span,foreignObject div){background:var(--paper)!important;color:var(--ink)!important}.prose sup a{font-family:var(--mono);padding-left:2px;font-size:10px;text-decoration:none}.prose .footnotes{margin-top:56px}.prose .footnotes h2{margin:0 0 18px;font-size:33px}.prose .footnotes ol{counter-reset:footnote;font-family:var(--sans);color:var(--ink-2);margin:0;padding:0;font-size:14.5px;line-height:1.62;list-style:none}.prose .footnotes li{border-top:1px solid var(--line-2);grid-template-columns:22px minmax(0,1fr);gap:14px;margin:0;padding:14px 0;display:grid}.prose .footnotes li:last-child{border-bottom:1px solid var(--line-2)}.prose .footnotes li:before{counter-increment:footnote;content:counter(footnote);font-family:var(--mono);color:var(--accent);font-size:11px}.prose .footnotes li p{grid-column:2;margin:0}.prose .footnotes li>*{grid-column:2}.prose .footnotes [data-footnote-backref]{font-family:var(--mono);padding-left:6px;font-size:11px;text-decoration:none}@media (width<=720px){.prose{font-size:17px}.prose h2{margin:42px 0 14px;font-size:27px}.prose blockquote p{font-size:21px}.prose .callout p{font-size:16.5px}.prose .table-wrap{overflow-x:auto}}.post[data-astro-cid-ruv7hgo6]{padding-bottom:110px}.post__grid[data-astro-cid-ruv7hgo6]{grid-template-columns:var(--tocw) minmax(0, 1fr) 196px;align-items:start;gap:64px;display:grid}.post__grid--notoc[data-astro-cid-ruv7hgo6]{grid-template-columns:minmax(0,1fr) 196px}.post__toc[data-astro-cid-ruv7hgo6]{padding-top:56px;position:sticky;top:108px}#article[data-astro-cid-ruv7hgo6]{max-width:var(--measure);padding-top:56px}.crumb[data-astro-cid-ruv7hgo6]{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);flex-wrap:wrap;align-items:center;gap:10px;font-size:10px;display:flex}.crumb[data-astro-cid-ruv7hgo6] a[data-astro-cid-ruv7hgo6]{color:inherit;text-decoration:none}.crumb[data-astro-cid-ruv7hgo6] a[data-astro-cid-ruv7hgo6]:hover{color:var(--accent)}.crumb__sep[data-astro-cid-ruv7hgo6]{color:var(--line)}.post__title[data-astro-cid-ruv7hgo6]{letter-spacing:-.042em;margin-top:22px;font-size:clamp(33px,4.3vw,52px);font-weight:600;line-height:1.06}.post__dek[data-astro-cid-ruv7hgo6]{font-family:var(--prose);color:var(--ink-2);max-width:46ch;margin-top:24px;font-size:19.5px;line-height:1.5}.post__meta[data-astro-cid-ruv7hgo6]{border-top:1px solid var(--line);border-bottom:1px solid var(--line-2);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);flex-wrap:wrap;align-items:center;gap:14px;margin-top:32px;padding:14px 0;font-size:10.5px;display:flex}.post__copy[data-astro-cid-ruv7hgo6]{cursor:pointer;font:inherit;color:var(--ink-2);background:0 0;border:0;margin-left:auto;padding:0}.post__copy[data-astro-cid-ruv7hgo6]:hover{color:var(--accent)}.post__hero[data-astro-cid-ruv7hgo6]{margin:40px 0 46px}.post__hero[data-astro-cid-ruv7hgo6] img{aspect-ratio:16/7;object-fit:cover;border-radius:var(--r-card);width:100%}.post__hero[data-astro-cid-ruv7hgo6] figcaption{color:var(--ink-3);margin-top:10px;font-size:13px;line-height:1.5}.post__figlabel[data-astro-cid-ruv7hgo6]{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-size:10px}.pager[data-astro-cid-ruv7hgo6]{grid-template-columns:1fr 1fr;gap:12px;margin-top:64px;display:grid}.pager__card[data-astro-cid-ruv7hgo6]{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-card);color:var(--ink);padding:20px;text-decoration:none}.pager__card[data-astro-cid-ruv7hgo6]:hover{border-color:var(--line);color:var(--ink)}.pager__card--next[data-astro-cid-ruv7hgo6]{text-align:right}.pager__label[data-astro-cid-ruv7hgo6]{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:12px;font-size:9.5px}.pager__title[data-astro-cid-ruv7hgo6]{letter-spacing:-.022em;font-size:18px;font-weight:600;line-height:1.3}.related[data-astro-cid-ruv7hgo6]{margin-top:56px}.related__head[data-astro-cid-ruv7hgo6]{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line);padding-bottom:14px;font-size:10px;font-weight:400}.related__grid[data-astro-cid-ruv7hgo6]{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px;display:grid}.post__rail-sticky[data-astro-cid-ruv7hgo6]{padding-top:56px;position:sticky;top:108px}.rail-head[data-astro-cid-ruv7hgo6]{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);padding-bottom:14px;font-size:9.5px}.rail-pills[data-astro-cid-ruv7hgo6]{flex-wrap:wrap;gap:6px;display:flex}.rail-actions[data-astro-cid-ruv7hgo6]{border-top:1px solid var(--line-2);flex-direction:column;align-items:flex-start;gap:9px;margin-top:26px;padding-top:20px;font-size:13px;display:flex}.rail-actions[data-astro-cid-ruv7hgo6] button[data-astro-cid-ruv7hgo6]{cursor:pointer;font:inherit;color:var(--ink-2);background:0 0;border:0;padding:0}.rail-actions[data-astro-cid-ruv7hgo6] button[data-astro-cid-ruv7hgo6]:hover{color:var(--accent)}@media (width<=1200px){.post__grid[data-astro-cid-ruv7hgo6],.post__grid--notoc[data-astro-cid-ruv7hgo6]{grid-template-columns:var(--tocw) minmax(0, 1fr);gap:48px}.post__grid--notoc[data-astro-cid-ruv7hgo6]{grid-template-columns:minmax(0,1fr)}.post__rail[data-astro-cid-ruv7hgo6]{max-width:var(--measure);grid-column:1/-1;margin-left:auto;margin-right:auto}.post__rail-sticky[data-astro-cid-ruv7hgo6]{padding-top:0;position:static}}@media (width<=1000px){.post__grid[data-astro-cid-ruv7hgo6],.post__grid--notoc[data-astro-cid-ruv7hgo6]{grid-template-columns:minmax(0,1fr);gap:0}.post__toc[data-astro-cid-ruv7hgo6]{max-width:var(--measure);padding-top:40px;position:static}.post__rail[data-astro-cid-ruv7hgo6]{margin-left:0}#article[data-astro-cid-ruv7hgo6]{padding-top:32px}}@media (width<=720px){.related__grid[data-astro-cid-ruv7hgo6],.pager[data-astro-cid-ruv7hgo6]{grid-template-columns:minmax(0,1fr)}.pager__card--next[data-astro-cid-ruv7hgo6]{text-align:left}}
