.prose[data-astro-cid-q2a7m3tq] blockquote[data-quote-id]{position:relative}.prose[data-astro-cid-q2a7m3tq] .quote-share-btn{position:absolute;bottom:6px;right:6px;background:none;border:none;cursor:pointer;color:var(--fg-subtle);padding:6px;line-height:0;border-radius:4px;opacity:0;transition:opacity .2s var(--easing-out),color .15s var(--easing-out),background .15s var(--easing-out)}.prose[data-astro-cid-q2a7m3tq] blockquote[data-quote-id]:hover .quote-share-btn,.prose[data-astro-cid-q2a7m3tq] .quote-share-btn:focus-visible{opacity:1}.prose[data-astro-cid-q2a7m3tq] .quote-share-btn:hover{color:var(--accent);background:var(--code-bg)}@media(max-width:768px){.prose[data-astro-cid-q2a7m3tq] .quote-share-btn{opacity:.6}}.quote-toast{position:fixed;bottom:32px;left:50%;transform:translate(-50%) translateY(20px);background:var(--fg);color:var(--bg);font-family:var(--mono);font-size:var(--text-mono);padding:10px 18px;border-radius:var(--radius-sm);opacity:0;transition:opacity .2s var(--easing-out),transform .2s var(--easing-out);z-index:100;pointer-events:none;white-space:nowrap}.quote-toast.visible{opacity:1;transform:translate(-50%) translateY(0)}.prose{display:contents;font-family:var(--serif);font-size:var(--text-body);line-height:1.7;color:var(--fg)}.prose h1{font-family:var(--serif);font-weight:600;font-size:var(--text-display);line-height:1.15;letter-spacing:-.01em;margin-bottom:var(--space-sm)}@media(max-width:768px){.prose h1{font-size:var(--text-display-sm)}}.prose h2{font-family:var(--serif);font-weight:600;font-size:var(--text-h2);line-height:1.25;margin:var(--space-xl) 0 var(--space-sm);position:relative}.prose h3{font-family:var(--serif);font-weight:600;font-size:var(--text-h3);line-height:1.3;margin:var(--space-lg) 0 12px;position:relative}.prose a.heading-anchor{position:absolute;left:-1.1em;top:0;display:inline-flex;align-items:center;height:100%;color:var(--accent);text-decoration:none;border-bottom:none;opacity:0;transition:opacity .15s var(--easing-out);font-weight:400}.prose a.heading-anchor .heading-anchor-glyph{font-family:var(--mono);font-size:.65em;letter-spacing:0}.prose h2:hover a.heading-anchor,.prose h3:hover a.heading-anchor,.prose a.heading-anchor:focus-visible{opacity:1}@media(max-width:768px){.prose a.heading-anchor{display:none}}.prose p{margin-bottom:var(--space-md)}.prose .lead{font-size:var(--text-lead);line-height:1.6;font-style:italic;color:var(--fg-muted);margin:var(--space-md) 0 var(--space-lg);font-weight:400}.prose blockquote{border-left:2px solid var(--accent);padding:var(--space-2xs) 0 var(--space-2xs) var(--space-md);margin:var(--space-lg) 0;font-style:italic;color:var(--fg-muted);font-size:var(--text-lead)}.prose blockquote p{margin-bottom:0}.prose blockquote.pullquote{border-left:none;border-top:1px solid var(--accent);border-bottom:1px solid var(--accent);padding:var(--space-md) 0;margin:var(--space-xl) 0;font-size:var(--text-h3);line-height:1.3;color:var(--fg);font-style:italic;text-align:left}.prose code{font-family:var(--mono);font-size:.88em;background:var(--code-bg);padding:2px 6px;border-radius:3px}.prose pre{font-family:var(--mono);font-size:var(--text-ui);line-height:1.6;background:var(--code-bg);padding:20px var(--space-md);border-radius:var(--radius-sm);overflow-x:auto;margin:var(--space-lg) 0}.prose pre code{background:none;padding:0;font-size:inherit}.prose strong{font-weight:600}.prose em{font-style:italic}.prose ul,.prose ol{margin:0 0 var(--space-md) var(--space-md)}.prose li{margin-bottom:var(--space-2xs)}.prose hr{border:none;border-top:1px solid var(--hairline);margin:var(--space-xl) 0}.prose img{margin:var(--space-lg) 0;border-radius:var(--radius-sm)}.prose figcaption{font-family:var(--sans);font-size:var(--text-ui-sm);color:var(--fg-muted);margin-top:var(--space-2xs);text-align:center}.prose .stack-diagram{margin:var(--space-lg) 0}.prose .stack-diagram svg{max-width:100%}.prose .stack-diagram figcaption{font-style:italic;margin-top:var(--space-sm)}.article{display:grid;grid-template-columns:[wide-start] minmax(0,120px) [content-start] min(var(--content-width),100%) [content-end] minmax(0,120px) [wide-end];margin-inline:auto;max-width:var(--content-width-wide)}.article>*,.article .prose>*{grid-column:content;min-width:0}.article-hero,.article .prose>figure,.article .prose>pre,.article .prose>blockquote,.article .prose>.wide,.article .prose>.full{grid-column:wide}.article-header{margin-bottom:var(--space-lg)}.article-header h1{font-family:var(--serif);font-weight:600;font-size:var(--text-display);line-height:1.15;letter-spacing:-.01em;margin-bottom:var(--space-sm)}@media(max-width:768px){.article-header h1{font-size:var(--text-display-sm)}}.article-meta{font-family:var(--sans);font-size:var(--text-ui-sm);color:var(--fg-muted);display:flex;gap:var(--space-2xs);flex-wrap:wrap}.article-meta time{font-family:var(--mono)}.article-hero{margin:var(--space-xl) 0;border-radius:var(--radius-sm);overflow:hidden}.article-hero img{display:block;width:100%;height:auto;aspect-ratio:1200 / 630}.article-meta .byline a{color:var(--fg-muted);border-bottom:1px solid var(--fg-subtle)}.article-meta .byline a:hover{color:var(--accent);border-bottom-color:var(--accent)}.article-footer{margin-top:var(--space-2xl);padding-top:var(--space-md);border-top:1px solid var(--hairline)}.tag-list{display:flex;list-style:none;gap:var(--space-sm);flex-wrap:wrap;font-family:var(--mono);font-size:var(--text-ui-sm)}.tag-list a{color:var(--fg-muted);border-bottom-color:var(--fg-subtle)}.tag-list a:hover{color:var(--accent)}.related{margin-top:var(--space-3xl);padding-top:var(--space-xl);border-top:1px solid var(--hairline)}.related-heading{font-family:var(--serif);font-weight:600;font-size:var(--text-hero-sm);color:var(--fg);margin:0 0 var(--space-md)}@media(max-width:640px){.related-heading{font-size:var(--text-list-title)}}
