@charset "UTF-8";.prose{font-family:Adobe Caslon Pro,Georgia,serif;font-size:var(--text-base);font-weight:400;line-height:var(--leading-base);max-width:100ch;margin:0 auto;width:92%;color:var(--bs-body-color);padding:0}.prose p{margin-top:0;margin-bottom:.6rem;text-indent:0}.prose h2+p,.prose h3+p,.prose h4+p,.prose blockquote+p,.prose figure+p,.prose .epigraph+p,.prose p:first-of-type,.prose .media-block .content>p:first-child{margin-top:.75rem}.prose:not(.prose-post):not(.prose-page):not(.prose-docs)>p:first-of-type:first-letter{float:left;font-family:var(--font-display);font-size:4rem;line-height:.8;padding-right:.15em;padding-top:.05em;color:var(--bs-emphasis-color);font-weight:500}.prose:not(.prose-post):not(.prose-page):not(.prose-docs)>p:first-of-type{display:flow-root}.prose.prose-page>p:first-of-type:first-letter{float:none;font-size:inherit;line-height:inherit;padding:0;font-weight:inherit}.prose.prose-docs>p:first-of-type:first-letter,.prose.prose-docs p:first-of-type:first-letter{float:none;font-size:inherit;line-height:inherit;padding:0;font-weight:inherit}.prose.prose-docs h2{font-size:1.5rem;margin-top:2rem;margin-bottom:.75rem}.prose.prose-docs h3{font-size:1.25rem;margin-top:1.5rem;margin-bottom:.5rem}.prose.prose-docs h4{font-size:1.1rem;margin-top:1.25rem;margin-bottom:.5rem}.prose h2{margin-top:2.5rem;margin-bottom:1rem;font-size:2.5rem;text-align:left;border-bottom:none;position:relative;padding-bottom:.5rem}.prose .anchor{text-decoration:none;margin-left:.3em;opacity:0;transition:opacity .2s ease;font-size:.75em;color:var(--bs-secondary);vertical-align:middle;border-bottom:none!important;line-height:1;position:relative;top:-.05em}.prose h2:hover .anchor,.prose h3:hover .anchor,.prose h4:hover .anchor{opacity:1}.prose h3{margin-top:2rem;margin-bottom:.75rem;font-size:1.75rem;font-style:italic;font-weight:400;text-align:left}.prose blockquote{margin:1.25rem 2rem;padding-left:1rem;border-left:3px solid var(--bs-secondary);font-size:.95em;font-style:italic;color:var(--bs-secondary);background:transparent}.prose blockquote.pull,.prose .pull-quote{font-family:var(--font-display);font-size:1.4rem;font-weight:400;font-style:italic;text-align:center;border:none;padding:1.5rem 2rem;margin:2.5rem auto;max-width:85%;position:relative;color:var(--bs-body-color);line-height:1.4}.prose blockquote.pull:before,.prose blockquote.pull:after,.prose .pull-quote:before,.prose .pull-quote:after{content:"";display:block;width:50px;height:2px;background:var(--bs-link-color);margin:0 auto;opacity:.4}.prose blockquote.pull:before,.prose .pull-quote:before{margin-bottom:1.25rem}.prose blockquote.pull:after,.prose .pull-quote:after{margin-top:1.25rem}.prose ul,.prose ol{margin:1rem 0;padding-left:2rem}.prose li{padding-left:.5rem;margin-bottom:.25rem}.prose .epigraph{margin:1.5rem 0;text-align:right;font-size:.9em;width:65%;margin-left:auto;font-style:italic;border:none}.prose-with-sidenotes{position:relative;overflow-x:visible}@media(min-width:1200px){.prose p:has(.sidenote),.prose li:has(.sidenote),.prose blockquote:has(.sidenote),.prose div:has(.sidenote){position:relative}}.prose .sidenote-ref{display:inline-block;vertical-align:super;line-height:normal;font-size:.7em;color:var(--bs-link-color);cursor:help;margin-left:.1em;counter-increment:sidenote-counter}.prose .sidenote-ref:after{content:counter(sidenote-counter)}@media(min-width:1200px){.prose .sidenote,.prose .marginnote{position:absolute;right:0;transform:translate(calc(100% + 1.5rem));width:22%;margin-top:0;font-size:.75rem;font-weight:400;line-height:1.4;text-align:left;text-indent:0;color:var(--bs-secondary-color);font-family:inherit}.prose .sidenote-ref:hover+.sidenote,.prose .sidenote:hover{color:var(--bs-body-color)}}@media(min-width:1400px){.prose .sidenote,.prose .marginnote{transform:translate(calc(100% + 1rem));width:18%}}@media(min-width:1600px){.prose .sidenote,.prose .marginnote{transform:translate(calc(100% + 1.5rem));width:18%}}@media(min-width:1800px){.prose .sidenote,.prose .marginnote{transform:translate(calc(100% + 2rem));width:24%}}@media(min-width:2000px){.prose .sidenote,.prose .marginnote{transform:translate(calc(100% + 2.5rem));width:32%}}@media(max-width:1199px){.prose .sidenote,.prose .marginnote{float:none;display:block;width:100%;margin:1rem 0;padding:1rem;background:rgba(var(--bs-primary-rgb),.04);border-left:3px solid var(--bs-secondary);font-size:.9rem;text-indent:0}}.prose figure{margin:1.5rem 0;text-align:center;text-indent:0}.prose figure img{border-radius:2px;box-shadow:0 4px 12px #0000001a;transition:transform .4s var(--ease-spring-bouncy),box-shadow .4s var(--ease-spring-bouncy)}.prose figure:hover img{transform:scale(1.015) translateY(-2px);box-shadow:0 8px 24px #00000026}@media(prefers-reduced-motion:reduce){.prose figure:hover img{transform:none}}.prose figcaption{margin-top:.75rem;font-family:var(--font-ui);font-size:.85rem;color:var(--bs-secondary);font-weight:500}.prose figure.chart-figure{margin:1.5rem 0;padding:.75rem;border:1px solid var(--bs-border-color);border-radius:2px;background:transparent;width:fit-content;max-width:100%;text-align:left}.prose figure.chart-figure figcaption{margin-top:.75rem;font-family:var(--font-mono);font-size:.8rem;color:var(--bs-secondary)}@media(min-width:1100px){.prose figure.full-width{width:150%;margin-left:-25%;max-width:none}}.prose .video-grid,.prose .image-grid{display:grid;grid-template-columns:1fr;gap:1.5rem;margin:1.5rem 0}@media(min-width:768px){.prose .video-grid,.prose .image-grid{grid-template-columns:1fr 1fr}}.prose .video-grid figure,.prose .image-grid figure{margin:0}.prose .video-grid figcaption,.prose .image-grid figcaption{margin-top:.5rem;font-family:var(--font-ui);font-size:.8rem;color:var(--bs-secondary);font-style:italic}.prose pre{position:relative;border:1px solid var(--surface-border);border-radius:4px;padding:.75rem 1rem;margin:2rem 0 1.5rem;overflow-x:auto;font-family:var(--font-mono);font-size:.85rem;line-height:1.5;text-indent:0;white-space:pre;box-shadow:none;tab-size:4;-moz-tab-size:4}.prose pre[data-language]{padding-top:1.75rem}.prose pre[data-language]:before{content:attr(data-language);position:absolute;top:0;right:0;background:var(--surface-border);color:var(--bs-secondary);padding:.2rem .6rem;font-family:var(--font-ui);font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;border-bottom-left-radius:4px}.prose p code,.prose li code{background:none;padding:0;border-radius:0;font-family:var(--font-mono);font-size:.92em;color:var(--bs-body-color)}.prose a code{background:rgba(var(--bs-link-color-rgb),.06);padding:.1em .2em;border-radius:2px;color:inherit}[data-bs-theme=light] .prose pre.shiki,[data-bs-theme=light] .prose pre.shiki span{color:var(--shiki-light)!important;background-color:var(--shiki-light-bg)!important}[data-bs-theme=light] .prose pre{background:#fff!important;border-color:#0000001a}[data-bs-theme=dark] .prose pre.shiki,[data-bs-theme=dark] .prose pre.shiki span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}[data-bs-theme=dark] .prose pre{background:#161b22!important;border-color:#30363d}[data-bs-theme=dark] .prose pre:before{background:#21262d;color:#8b949e}.prose p:has(>.katex:only-child){text-align:center;margin:2rem 0;overflow-x:auto;overflow-y:hidden}.prose p:has(>.katex:only-child)>.katex{display:inline-block;font-size:1.1em}.prose .katex-display{text-align:center;margin:1.5rem 0}.prose .katex{font-size:1.05em}.prose .skip-note{margin:1.25rem 0;padding:.75rem 1rem;background:rgba(var(--bs-secondary-rgb),.08);border-left:3px solid var(--bs-secondary);border-radius:0 4px 4px 0;font-size:.9em;color:var(--bs-secondary)}.prose .skip-note p{margin:0;text-indent:0}.prose .skip-note a{color:var(--bs-link-color);text-decoration:underline;text-underline-offset:2px}.prose .note{margin:1.25rem 0;padding:.75rem 1rem;background:rgba(var(--bs-info-rgb),.06);border-left:3px solid var(--bs-info);border-radius:0 4px 4px 0;font-size:.9em}.prose .note p{margin:0;text-indent:0}.prose .note strong{color:var(--bs-info)}.prose .callout{margin:1.25rem 0;padding:1rem 1.25rem;border-left:4px solid;border-radius:0 6px 6px 0;font-size:.95rem;line-height:1.6}.prose .callout p{margin:0;text-indent:0}.prose .callout p+p{margin-top:.75rem}.prose .callout code{font-size:.85em;padding:.1em .3em;background:rgba(var(--bs-body-color-rgb),.08);border-radius:3px}.prose .callout-warning{background:rgba(var(--bs-warning-rgb),.08);border-left-color:var(--bs-warning)}.prose .callout-success{background:var(--callout-success-bg);border-left-color:var(--callout-success-border)}.prose .callout-neutral{background:rgba(var(--bs-secondary-rgb),.08);border-left-color:var(--bs-secondary)}.prose .callout-title{font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}.prose .callout-warning .callout-title{color:var(--bs-warning)}.prose .callout-success .callout-title{color:var(--callout-success-title)}.prose .callout-neutral .callout-title{color:var(--bs-secondary)}.prose .api-method{margin:1.5rem 0;padding:1rem 1.25rem;background:var(--bs-tertiary-bg);border:1px solid var(--bs-border-color);border-radius:8px}.prose .api-method .method-signature{font-family:var(--font-mono);font-size:.9rem;color:var(--bs-body-color);background:rgba(var(--bs-body-color-rgb),.05);padding:.5rem .75rem;border-radius:4px;margin-bottom:.75rem;overflow-x:auto}.prose .api-method .method-name{color:var(--bs-link-color);font-weight:600}.prose .api-method .method-params{margin:.75rem 0;padding:0;list-style:none}.prose .api-method .method-params li{display:flex;gap:.5rem;margin-bottom:.5rem;font-size:.9rem;align-items:baseline}.prose .api-method .param-name{font-family:var(--font-mono);font-weight:600;color:var(--bs-body-color);min-width:80px}.prose .api-method .param-type{font-family:var(--font-mono);font-size:.85em;color:var(--callout-success-border);background:var(--callout-success-bg);padding:.1em .4em;border-radius:3px}.prose .api-method .param-desc{color:var(--bs-secondary-color)}.prose .api-method .method-returns{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--bs-border-color);font-size:.9rem}.prose .api-method .returns-label{font-weight:600;color:var(--bs-secondary-color);margin-right:.5rem}:global([data-bs-theme=dark]) .prose .api-method{background:var(--bs-tertiary-bg);border-color:var(--bs-border-color)}:global([data-bs-theme=dark]) .prose .api-method .method-signature{background:#ffffff0d}.prose .complexity{display:inline-flex;align-items:center;gap:.25rem;font-family:var(--font-mono);font-size:.8rem;padding:.15em .5em;border-radius:4px;background:rgba(var(--bs-body-color-rgb),.08)}.prose .complexity-fast{background:var(--callout-success-bg);color:var(--callout-success-border)}.prose .complexity-medium{background:var(--callout-warning-bg);color:var(--callout-warning-border)}.prose .complexity-slow{background:rgba(var(--bs-danger-rgb),.15);color:var(--bs-danger)}.prose .sidenote{font-size:.85rem;color:var(--bs-secondary-color);border-left:2px solid var(--bs-border-color);padding-left:1rem;margin:1rem 0 1rem 1rem;font-style:italic}.prose .sidenote p{margin:0;text-indent:0}.prose .sidenote code{font-style:normal}.prose .sidenote-ref{font-size:.75rem;vertical-align:super;color:var(--bs-secondary);cursor:help}.prose .references ol{font-size:.88em;line-height:1.45;padding-left:2.5em;list-style-position:outside}.prose .references li{margin-bottom:.5em;padding-left:.5em;text-indent:-.5em}.prose .references li::marker{font-variant-numeric:tabular-nums;font-size:.85em;color:var(--bs-secondary-color)}.prose .references li a{word-break:break-all}.prose hr{border:0;margin:3rem auto;width:40%;height:auto;background:none;text-align:center}.prose hr:after{content:"* * *";display:block;letter-spacing:1em;color:rgba(var(--bs-body-color-rgb),.4);font-size:.9rem}.prose .footnotes{margin-top:3rem;padding-top:0;border-top:none;font-family:Adobe Caslon Pro,Georgia,serif;color:var(--bs-body-color);width:100%;max-width:100%;margin-inline:auto}.prose .footnotes hr{display:none!important}.prose .bibliography-heading{font-family:var(--font-display);font-size:2.5rem;font-weight:700;margin-bottom:1rem;color:var(--bs-heading-color);letter-spacing:-.02em;text-align:left;margin-top:0}.prose .footnotes ol{display:flex!important;flex-direction:column!important;gap:.75rem!important;padding-left:2rem!important;list-style:decimal outside!important;margin:0!important;width:100%!important;max-width:100%}.prose .footnotes li{display:list-item!important;width:100%!important;margin-bottom:0!important;padding-left:.5rem;text-indent:0!important}.prose .footnotes li p{display:block!important;margin:0;line-height:1.6}.prose .data-footnote-backref,.prose .footnote-back{text-decoration:none;font-family:var(--font-ui);margin-left:.5ch;color:var(--bs-link-color);opacity:.5;font-size:.8em;vertical-align:super}.prose .data-footnote-backref:hover,.prose .footnote-back:hover{opacity:1}.table-wrapper{overflow-x:auto;margin:1.5rem 0;width:100%;-webkit-overflow-scrolling:touch;border-radius:4px}.prose table{width:100%;border-collapse:collapse;font-size:.9em;font-family:var(--font-body);font-variant-numeric:tabular-nums;margin:0;border-top:2px solid var(--bs-heading-color)!important;border-bottom:2px solid var(--bs-heading-color)!important}.prose thead th{text-align:left;padding:.75rem 1rem;font-family:var(--font-display);font-weight:700;border-bottom:1px solid var(--bs-heading-color)!important;color:var(--bs-heading-color);white-space:nowrap;letter-spacing:.02em}.prose tbody td{padding:.75rem 1rem;border-bottom:1px solid rgba(128,128,128,.1);vertical-align:top;color:var(--bs-body-color)}.prose tbody tr:last-child td{border-bottom:none}.prose tbody tr:nth-child(2n){background-color:rgba(var(--bs-body-color-rgb),.02)}.prose table.table-technical td:first-child{font-family:var(--font-mono);font-size:.85em}.prose tbody tr:hover{background-color:rgba(var(--bs-primary-rgb),.03)}.prose sup{line-height:0;vertical-align:super}.prose sup a{text-decoration:none;font-family:var(--font-mono);font-size:.85em;font-weight:500;margin-left:1px;color:var(--bs-primary);background:transparent;padding:2px 4px;border-radius:2px;transition:background-color .2s ease,color .2s ease}.prose sup a:hover{text-decoration:none;background-color:rgba(var(--bs-primary-rgb),.1);color:var(--bs-primary)}.social-links{display:flex;gap:1.5rem;margin-top:1rem}.social-links a{color:var(--bs-secondary);transition:color .2s ease,transform .2s ease}.social-links a:hover{color:var(--bs-primary);transform:translateY(-2px)}
