body.article-page article{max-width:100%}.article-layout{display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"header" "main";gap:var(--space-7);width:100%;max-width:100%;margin:0 auto;overflow:visible}article img.img-breakout{width:var(--article-breakout-width);max-width:none;position:relative;left:50%;transform:translateX(-50%);margin:var(--space-6) 0}.entry-content p:has(>img:only-child):has(+ figcaption){margin-bottom:var(--space-2)}.entry-content p:has(>img:only-child):has(+ figcaption)>img{margin-bottom:0}.entry-content p:has(>img:only-child) + figcaption{max-width:var(--reading-width);margin:0 auto var(--space-6);color:var(--color-text-soft);font-family:var(--font-body);font-size:var(--font-size-body-secondary);line-height:1.55;text-align:center}.entry-header-image{width:var(--article-header-image-width);max-width:var(--article-header-image-max-width);position:relative;left:50%;transform:translateX(-50%);margin:var(--article-header-image-margin-top) 0 var(--article-header-image-margin-bottom)}.entry-header{margin-bottom:0;padding-bottom:var(--space-5);border-bottom:0}.article-layout>.entry-header{grid-area:header;width:100%;max-width:var(--article-header-breakout-width);margin:0 auto}#reading-progress{position:absolute;left:var(--site-nav-underline-inset);right:var(--site-nav-underline-inset);bottom:0;height:1px;overflow:hidden;background:var(--color-border-soft);z-index:1;opacity:0;pointer-events:none;transition:opacity 160ms ease}#reading-progress.is-visible{opacity:1}#reading-progress-fill{position:absolute;inset:0;background:var(--color-accent);transform:scaleX(0);transform-origin:left center;will-change:transform;transition:transform 120ms linear}#reading-progress-fill.is-complete{animation:reading-progress-finish 620ms cubic-bezier(0.22,1,0.36,1) 1}.article-meta{margin:0;color:var(--color-text-soft);font-family:var(--font-body);font-size:var(--font-size-body-secondary);letter-spacing:0.01em;line-height:1.5;text-transform:none;display:flex;flex-wrap:wrap;align-items:center;row-gap:0.2rem}.article-meta .archive-dot{margin:0 0.45rem}.entry-content{margin-top:0;max-width:var(--reading-width);font-size:var(--font-size-body);line-height:1.72}.entry-content p{hanging-punctuation:first last}.entry-content ul,.entry-content ol{margin-top:var(--space-4)}.entry-content :is(h2,h3,h4,h5,h6),.article-endnotes :is(li,p,h2){scroll-margin-top:var(--article-anchor-offset)}.entry-content sup[id^="fnref"]{scroll-margin-top:calc(var(--article-anchor-offset) + var(--space-4))}.article-layout .article-main{grid-area:main;width:100%;max-width:var(--reading-width);min-width:0;margin:0 auto;overflow:visible}.article-sidebar--toc{grid-area:main;justify-self:start;align-self:start;width:var(--article-rail-width);margin-left:var(--space-4);margin-right:var(--space-3);max-height:72vh;overflow:visible;position:sticky;top:var(--article-sticky-top)}.toc{margin:0;padding:var(--space-1) 0 0 0;background:transparent;position:relative;box-shadow:none;transition:none;max-width:14rem}.toc::after{display:none}.toc .toctitle{display:block;margin:0 0 0.85rem 0;color:var(--color-text-subtle);font-family:var(--font-mono);font-size:var(--font-size-caption);font-weight:600;letter-spacing:0.12em;text-transform:uppercase}.toc ul,.toc ol{margin:0;padding-left:0;list-style:none}.toc li{list-style:none;margin:0;line-height:1.55}.toc a{display:block;color:var(--color-text-subtle);font-family:var(--font-body);font-size:var(--font-size-body-secondary);line-height:1.55;text-decoration:none;position:relative}.toc li + li{margin-top:0.4rem}.toc ul ul,.toc ul ol,.toc ol ul,.toc ol ol{margin-top:0.55rem;padding-left:0.7rem;border-left:1px solid var(--color-border-soft)}.toc li>ul,.toc li>ol{margin-top:0.22rem;margin-bottom:0}.article-sidebar--toc .toc{margin-bottom:0}.toc a:hover,.toc a:focus-visible{color:var(--color-text-soft);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:var(--link-underline-offset)}.toc a.is-active{color:var(--color-accent);font-weight:600}.article-apparatus-title{margin:0 0 var(--space-4) 0;color:var(--color-text-subtle);font-family:var(--font-mono);font-size:var(--font-size-caption);font-weight:600;letter-spacing:0.12em;text-transform:uppercase}.article-endnotes{margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--color-border-soft)}.article-endnotes .footnote{font-size:var(--font-size-body-secondary);line-height:1.65}.article-endnotes .footnote hr{display:none}.article-endnotes .footnote ol{margin:0 0 0 1.15rem}.article-endnotes .footnote ol li{list-style-type:none;counter-increment:list;position:relative}.article-endnotes .footnote ol li:after{content:counter(list) ".";position:absolute;left:-1.2em;top:0;color:var(--color-accent);font-weight:600}.article-endnotes .footnote li + li{margin-top:var(--space-3)}.article-layout:has(.sidenote) .article-endnotes{display:none}.footnote-ref{padding-left:1px;vertical-align:baseline;position:relative;top:-0.42em;display:inline-block;margin-right:0;font-family:var(--font-mono);font-size:0.82rem;font-weight:600;letter-spacing:0.08em;line-height:1.55}.footnote-ref,.footnote-ref:hover,.footnote-ref:focus-visible{color:var(--color-accent);text-decoration:none}.entry-content .sidenote{float:right;clear:right;width:var(--article-note-width);margin-right:calc(-1 * (var(--article-note-width) + var(--article-layout-gap)));margin-top:0.2em;margin-bottom:var(--space-3);color:var(--color-text-soft);font-size:var(--font-size-body-secondary);line-height:1.6;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:0.5rem;align-items:baseline}.entry-content .sidenote a{color:inherit}.sidenote-number{display:inline-block;margin-right:0;color:var(--color-accent);font-family:var(--font-mono);font-size:0.82rem;font-weight:600;letter-spacing:0.08em;line-height:1.65;padding-left:0.5rem;position:relative;border-left:1px solid var(--color-border-soft)}.sidenote-content{display:block;min-width:0;text-justify:auto;text-align-last:left;color:var(--color-text-soft)}.entry-content .sidenote-content{margin-left:0}#series{margin-top:var(--space-7);padding:1.15rem 1.3rem 1.2rem;border:1px solid var(--color-border-soft);border-top:4px solid var(--color-accent);background:var(--color-series-bg)}#series p{margin:0 0 0.75rem 0;color:var(--color-title);font-family:var(--font-mono);font-size:var(--font-size-caption);font-weight:600;letter-spacing:0.12em;text-transform:uppercase}#series ol{margin-bottom:0}#series li.active{font-weight:900}#series li.active::marker{font-weight:400}.article-footer-nav{margin-top:var(--space-6)}.article-back-link{min-height:var(--control-target-size);display:inline-flex;align-items:center;color:var(--color-link);font-family:var(--font-mono);font-size:var(--font-size-caption);font-weight:600;letter-spacing:0.08em;text-underline-offset:var(--link-underline-offset);text-decoration-thickness:var(--link-underline-thickness);text-transform:uppercase}.codehilitetable{width:100%;min-width:0;font-family:var(--font-mono);font-size:0.82rem;table-layout:auto;border-collapse:collapse;border-spacing:0;border:0;background:var(--code-bg);color:var(--code-text)}.codehilitetable,.codehilitetable pre,.codehilitetable code,.linenos,.linenos pre{font-family:var(--font-mono);font-size:0.82rem;line-height:1.6}.codehilitetable tbody tr{display:table-row}.codehilitetable td,.codehilitetable th{border:0;padding:0;vertical-align:center}.codehilitetable td.code{padding:0.72rem 0.9rem 0.72rem 0.94rem;text-indent:0}.codehilitetable pre{margin:0;white-space:pre}.codehilitetable .linenodiv,.codehilitetable td.code>div{margin:0;padding:0}.codehilitetable pre>span:empty{display:none}.linenos{border-right:1px solid var(--code-border);background:var(--code-gutter-bg);width:1%;white-space:nowrap;padding:0.72rem 0.65rem;user-select:none;text-align:right;font-variant-numeric:tabular-nums;color:var(--code-text)}.linenos pre{margin:0;min-width:2.6ch}.codehilitetable td.code pre,.codehilitetable td.code code,.codehilitetable .linenodiv pre{text-indent:0;padding-left:0;line-height:1.6}.codehilite{margin:0 0 var(--space-flow-special-after) 0;overflow:hidden;position:relative;border:1px solid var(--code-border);background:var(--code-bg)}.codehilite__scroller{overflow-x:auto}.codehilite:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.code-copy-button{position:absolute;top:0.1rem;right:0.1rem;margin:0;width:var(--control-target-size-sm);height:var(--control-target-size-sm);padding:0;border:1px solid transparent;border-radius:0.35rem;background:transparent;color:var(--code-text);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;z-index:2;transition:opacity 140ms ease,background 120ms ease,border-color 120ms ease,color 120ms ease,}.code-copy-button__icon{width:var(--control-icon-size);height:var(--control-icon-size);flex:none}.code-copy-button[data-copy-state="copied"],.code-copy-button[data-copy-state="failed"]{opacity:1;visibility:visible;pointer-events:auto}.code-copy-button[data-copy-state="copied"]{color:var(--color-accent);animation:code-copy-success 340ms cubic-bezier(0.22,1,0.36,1) 1}.code-copy-button[data-copy-state="failed"]{color:var(--color-accent-alt)}.code-copy-button:hover,.code-copy-button:focus-visible{background:var(--color-surface-muted);border-color:var(--code-border)}.code-copy-button:focus-visible{border-color:var(--color-focus);outline:2px solid var(--color-focus);outline-offset:0px}.code-copy-button:active{transform:scale(0.98)}.code-copy-button[data-copy-state="copied"]:hover,.code-copy-button[data-copy-state="copied"]:focus-visible{color:var(--color-accent)}.code-copy-button[data-copy-state="failed"]:hover,.code-copy-button[data-copy-state="failed"]:focus-visible{color:var(--color-accent-alt)}@media (hover:hover) and (pointer:fine){.code-copy-button{opacity:0;pointer-events:none}.codehilite:hover .code-copy-button,.codehilite:focus-within .code-copy-button{opacity:1;pointer-events:auto}}pre code{display:block;background:transparent;border:0;padding:0;border-radius:0}.entry-content p + :is(.codehilite,table:not(.codehilitetable),blockquote,.admonition,.toc,ul,ol){margin-top:var(--space-flow-special-before)}.entry-content :is(.codehilite,table:not(.codehilitetable),blockquote,.admonition,.toc){margin-bottom:var(--space-flow-special-after)}.entry-content>ul,.entry-content>ol{margin-bottom:var(--space-flow-special-after)}.entry-content .toc ul,.entry-content .toc ol{margin:0}@media only screen and (max-width:1399px){.article-layout:has(.sidenote) .article-endnotes{display:block}.article-sidebar--toc,.sidenote-number,.sidenote-content,.entry-content .sidenote{display:none}}@media only screen and (max-width:1024px){.article-layout>.entry-header,.article-layout .article-main{width:100%;max-width:var(--reading-width);margin:0 auto}article img.img-breakout,.entry-header-image{width:100%;max-width:100%;position:static;left:auto;transform:none;margin:var(--space-1) auto}.article-layout{gap:var(--space-6)}}@media only screen and (max-width:767px){.entry-header{margin-bottom:0;padding-bottom:var(--space-3);border-bottom:none}.article-meta{display:block}.article-meta .archive-dot{margin:0 var(--space-2)}.article-sidebar--toc{display:none}.codehilitetable,.codehilitetable pre,.codehilitetable code,.linenos,.linenos pre{font-size:0.75rem;line-height:1.5}.code-copy-button{display:none}.code-copy-button__icon{width:1rem;height:1rem}.footnote-ref{font-size:0.8em;line-height:1.2em;top:-0.5em}.entry-content sup[id^="fnref"]{scroll-margin-top:calc(var(--article-anchor-offset) + var(--space-6))}}@media only print{.toc,.article-sidebar--toc,.sidenote,.code-copy-button,.article-footer-nav{display:none!important}.article-layout:has(.sidenote) .article-endnotes{display:block!important}.linenos{border-right:none}.footnote hr{display:block;height:1px;background:transparent;width:100%;border:none;border-top:1px solid var(--color-rule)}}@keyframes code-copy-success{0%{transform:scale(0.96)}55%{transform:scale(1.06)}100%{transform:scale(1)}}@keyframes reading-progress-finish{0%{filter:brightness(1)}50%{filter:brightness(2.28)}100%{filter:brightness(1)}}.c{color:var(--syntax-comment)}.err{color:var(--syntax-red)}.k{color:var(--syntax-purple)}.l{color:var(--syntax-orange)}.n{color:var(--syntax-text)}.o{color:var(--syntax-cyan)}.p{color:var(--syntax-text)}.cm{color:var(--syntax-comment)}.cp{color:var(--syntax-comment)}.c1{color:var(--syntax-comment)}.cs{color:var(--syntax-comment)}.gd{color:var(--syntax-red)}.ge{font-style:italic}.gh{color:var(--syntax-text);font-weight:bold}.gi{color:var(--syntax-green)}.gp{color:var(--syntax-comment);font-weight:bold}.gs{font-weight:bold}.gu{color:var(--syntax-cyan);font-weight:bold}.kc{color:var(--syntax-purple)}.kd{color:var(--syntax-purple)}.kn{color:var(--syntax-cyan)}.kp{color:var(--syntax-purple)}.kr{color:var(--syntax-purple)}.kt{color:var(--syntax-yellow)}.ld{color:var(--syntax-green)}.m{color:var(--syntax-orange)}.s{color:var(--syntax-green)}.na{color:var(--syntax-blue)}.nb{color:var(--syntax-text)}.nc{color:var(--syntax-yellow)}.no{color:var(--syntax-red)}.nd{color:var(--syntax-cyan)}.ni{color:var(--syntax-text)}.ne{color:var(--syntax-red)}.nf{color:var(--syntax-blue)}.nl{color:var(--syntax-text)}.nn{color:var(--syntax-yellow)}.nx{color:var(--syntax-blue)}.py{color:var(--syntax-text)}.nt{color:var(--syntax-cyan)}.nv{color:var(--syntax-red)}.ow{color:var(--syntax-cyan)}.w{color:var(--syntax-text)}.mf{color:var(--syntax-orange)}.mh{color:var(--syntax-orange)}.mi{color:var(--syntax-orange)}.mo{color:var(--syntax-orange)}.sb{color:var(--syntax-green)}.sc{color:var(--syntax-text)}.sd{color:var(--syntax-comment)}.s2{color:var(--syntax-green)}.se{color:var(--syntax-orange)}.sh{color:var(--syntax-green)}.si{color:var(--syntax-orange)}.sx{color:var(--syntax-green)}.sr{color:var(--syntax-green)}.s1{color:var(--syntax-green)}.ss{color:var(--syntax-green)}.bp{color:var(--syntax-text)}.vc{color:var(--syntax-red)}.vg{color:var(--syntax-red)}.vi{color:var(--syntax-red)}.il{color:var(--syntax-orange)}