.prose{max-width:68ch;min-width:0;font-size:1.125rem;line-height:1.72;color:var(--ink)}.prose>*+*{margin-top:1.25em}.prose h2,.prose h3,.prose h4{scroll-margin-top:6rem;font-stretch:90%;line-height:1.2}.prose h2{margin-top:2.4em;font-size:var(--step-2)}.prose h3{margin-top:2em;font-size:var(--step-1)}.prose h4{margin-top:1.75em;font-size:var(--step-0)}.prose h2+*,.prose h3+*,.prose h4+*{margin-top:.75em}.prose a{color:var(--accent-ink);text-decoration-color:color-mix(in srgb,var(--accent-ink) 45%,transparent)}.prose a:hover{text-decoration-color:currentColor}.prose strong{font-weight:600}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--stone)}.prose blockquote{padding-left:1.25em;border-left:3px solid var(--sage);color:var(--ink-soft)}.prose hr{border:0;border-top:1px solid var(--rule);margin-block:3em}.prose img{height:auto;border-radius:var(--radius-s)}.prose :not(pre)>code{padding:.1em .35em;font-size:.86em;background:var(--paper-sunk);border:1px solid var(--rule);border-radius:4px;overflow-wrap:anywhere}.prose table{width:100%;border-collapse:collapse;font-size:.9375rem;line-height:1.5}.prose th,.prose td{padding:.625rem .75rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--rule);overflow-wrap:anywhere}.prose th{font-weight:600;border-bottom:2px solid var(--ink)}.prose pre{--code-bg: var(--deep);--code-ink: #e6e3d9;--code-comment: #8f978d;--code-keyword: #e3a07f;--code-string: #b6cf9e;--code-function: #9fc4d6;--code-number: #e7c58f;--code-punct: #a8afa4;margin-inline:calc(var(--gutter) * -1);padding:1.25rem var(--gutter);background:var(--code-bg);color:var(--code-ink);font-size:.875rem;line-height:1.65;overflow-x:auto;tab-size:2;-webkit-overflow-scrolling:touch}@media (min-width: 720px){.prose pre{margin-inline:-1.25rem;padding-inline:1.25rem;border-radius:var(--radius-m)}}.prose pre code{display:block;min-width:max-content;font-size:inherit}.prose pre:focus-visible{outline-offset:2px}.prose .code-line{display:block}.prose .token.comment,.prose .token.prolog,.prose .token.doctype,.prose .token.cdata{color:var(--code-comment);font-style:italic}.prose .token.keyword,.prose .token.atrule,.prose .token.important,.prose .token.selector,.prose .token.tag{color:var(--code-keyword)}.prose .token.string,.prose .token.char,.prose .token.attr-value,.prose .token.template-string,.prose .token.regex{color:var(--code-string)}.prose .token.function,.prose .token.class-name,.prose .token.builtin,.prose .token.attr-name{color:var(--code-function)}.prose .token.number,.prose .token.boolean,.prose .token.constant,.prose .token.symbol,.prose .token.property{color:var(--code-number)}.prose .token.punctuation,.prose .token.operator{color:var(--code-punct)}.prose .token.deleted{color:#f0a39a}.prose .token.inserted{color:var(--code-string)}.article:where(.astro-4SN4ZG3R){padding-block:clamp(2.5rem,2rem + 3vw,5rem) clamp(4rem,3rem + 4vw,7rem)}.article__head:where(.astro-4SN4ZG3R){max-width:52rem;display:grid;gap:1.25rem}.article__back:where(.astro-4SN4ZG3R) a:where(.astro-4SN4ZG3R){color:var(--stone);text-decoration:none}.article__back:where(.astro-4SN4ZG3R) a:where(.astro-4SN4ZG3R):before{content:"←";margin-right:.5rem}.article__back:where(.astro-4SN4ZG3R) a:where(.astro-4SN4ZG3R):hover{color:var(--accent-ink)}.article__head:where(.astro-4SN4ZG3R) h1:where(.astro-4SN4ZG3R){font-size:var(--step-4);font-stretch:84%;letter-spacing:-.025em;line-height:1.04}.article__lede:where(.astro-4SN4ZG3R){font-size:var(--step-1);line-height:1.45;color:var(--ink-soft);max-width:54ch}.article__meta:where(.astro-4SN4ZG3R){display:flex;flex-wrap:wrap;gap:.25rem 1.25rem;color:var(--stone);font-size:.9375rem}.article__tags:where(.astro-4SN4ZG3R){display:flex;flex-wrap:wrap;gap:.25rem .875rem;font-family:var(--font-mono);font-size:.75rem;color:var(--stone)}.article__layout:where(.astro-4SN4ZG3R){margin-top:clamp(2.5rem,2rem + 2vw,4rem);padding-top:clamp(2rem,1.5rem + 2vw,3rem);border-top:1px solid var(--rule);display:grid;gap:2.5rem}.article__toc:where(.astro-4SN4ZG3R) h2:where(.astro-4SN4ZG3R){font-size:var(--step--1);font-weight:500;color:var(--stone);margin-bottom:.75rem;letter-spacing:0}.article__toc:where(.astro-4SN4ZG3R) ol:where(.astro-4SN4ZG3R){display:grid;gap:.5rem;font-size:.9375rem;line-height:1.35;border-left:1px solid var(--rule)}.article__toc:where(.astro-4SN4ZG3R) a:where(.astro-4SN4ZG3R){display:block;padding-left:.875rem;color:var(--ink-soft);text-decoration:none}.article__toc:where(.astro-4SN4ZG3R) a:where(.astro-4SN4ZG3R):hover{color:var(--accent-ink)}@media (min-width: 1100px){.article__layout--toc:where(.astro-4SN4ZG3R){grid-template-columns:15rem minmax(0,1fr);gap:4rem}.article__toc:where(.astro-4SN4ZG3R){position:sticky;top:6rem;align-self:start;max-height:calc(100vh - 8rem);overflow:auto}}.article__foot:where(.astro-4SN4ZG3R){margin-top:4rem;display:grid;gap:3.5rem}.article__pager:where(.astro-4SN4ZG3R){display:grid;gap:1rem;padding-top:2rem;border-top:1px solid var(--rule)}.article__pager:where(.astro-4SN4ZG3R) a:where(.astro-4SN4ZG3R){display:grid;gap:.25rem;font-weight:600;font-size:var(--step-1);font-stretch:92%;line-height:1.25;text-decoration:none}.article__pager:where(.astro-4SN4ZG3R) a:where(.astro-4SN4ZG3R) span:where(.astro-4SN4ZG3R){font-size:var(--step--1);font-weight:400;font-stretch:100%;color:var(--stone)}.article__pager:where(.astro-4SN4ZG3R) a:where(.astro-4SN4ZG3R):hover{color:var(--accent-ink)}@media (min-width: 720px){.article__pager:where(.astro-4SN4ZG3R){grid-template-columns:1fr 1fr;gap:3rem}.article__pager-next:where(.astro-4SN4ZG3R){grid-column:2;text-align:right}}.article__related:where(.astro-4SN4ZG3R) h2:where(.astro-4SN4ZG3R){font-size:var(--step-2);font-stretch:88%;margin-bottom:1rem}
