.prose{counter-reset:h2;font-size:calc(var(--step-0) * 1.04);line-height:1.9;overflow-wrap:break-word}.prose>*+*{margin-top:1.15em}.prose h2{counter-increment:h2;margin-top:2.4em;font-size:var(--step-2)}.prose h2:before{content:counter(h2,decimal-leading-zero);display:inline-block;margin-right:.6em;font-family:var(--font-mono);font-size:.5em;font-weight:500;color:var(--accent-ink);vertical-align:.35em}.prose h3{margin-top:2em;font-size:var(--step-1)}.prose h4{margin-top:1.6em;font-size:var(--step-0)}.prose :is(h2,h3,h4)+*{margin-top:.7em}.prose :is(h2,h3,h4) .anchor{margin-left:.4em;color:var(--fg-faint);text-decoration:none;font-family:var(--font-mono);font-size:.7em;opacity:0;transition:opacity .15s}.prose :is(h2,h3,h4):hover .anchor,.prose .anchor:focus-visible{opacity:1}.prose a:not(.anchor){color:var(--fg);text-decoration-line:underline;text-decoration-color:var(--accent-ink);text-decoration-thickness:2px;overflow-wrap:anywhere;transition:background-color .15s}.prose a:not(.anchor):hover{background:var(--accent);color:var(--on-accent);text-decoration-color:transparent}.prose strong{font-weight:650}.prose :is(ul,ol){padding-left:1.4em}.prose li+li{margin-top:.35em}.prose li::marker{color:var(--accent-ink);font-family:var(--font-mono)}.prose blockquote{padding:.2em 0 .2em 1.2em;border-left:3px solid var(--accent);color:var(--fg-muted)}.prose hr{border:0;height:auto;margin-block:3em;text-align:center;color:var(--fg-faint)}.prose hr:after{content:"· · ·";font-family:var(--font-mono);letter-spacing:.6em}.prose img,.prose video{height:auto;border-radius:var(--radius)}.prose figure figcaption{margin-top:.6em;font-size:var(--step--1);color:var(--fg-muted);text-align:center}.prose :not(pre)>code{padding:.12em .4em;border-radius:var(--radius);background:var(--code-bg);font-family:var(--font-mono);font-size:.86em;overflow-wrap:anywhere}.prose kbd{padding:.1em .45em;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:var(--radius);font-family:var(--font-mono);font-size:.82em}.prose .code-block{position:relative}.prose pre{padding:1.1em 1.2em;border:1px solid var(--line);border-radius:var(--radius);background:var(--code-bg);font-family:var(--font-mono);font-size:.85rem;line-height:1.7;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;tab-size:2}.prose pre code{font-family:inherit}.astro-code,.astro-code span{color:var(--shiki-light)}[data-theme=dark] .astro-code,[data-theme=dark] .astro-code span{color:var(--shiki-dark)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)}}.prose .code-tools{position:absolute;top:0;right:0;display:flex;align-items:center;gap:var(--space-2);padding:.35em .5em;font-family:var(--font-mono);font-size:var(--step--2);color:var(--fg-faint);text-transform:uppercase}.prose .code-tools button{padding:.2em .6em;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-elev);color:var(--fg-muted);font-size:inherit;text-transform:uppercase;opacity:0;transition:opacity .15s}.prose .code-block:hover .code-tools button,.prose .code-tools button:focus-visible,.prose .code-tools button[data-copied]{opacity:1}.prose .code-tools button[data-copied]{border-color:var(--accent-ink);color:var(--accent-ink)}@media(hover:none){.prose .code-tools button{opacity:1}}.prose table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:.92em}.prose :is(th,td){padding:.55em .9em;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.prose th{font-family:var(--font-mono);font-size:.85em;font-weight:500;color:var(--fg-muted);border-bottom-color:var(--line-strong)}.prose .footnotes{margin-top:3em;padding-top:1.2em;border-top:1px solid var(--line);font-size:var(--step--1);color:var(--fg-muted)}.prose .footnotes h2{font-size:var(--step--1);font-family:var(--font-mono);margin-top:0}.prose .footnotes h2:before{content:none}.prose [data-footnote-ref]:before{content:"["}.prose [data-footnote-ref]:after{content:"]"}.prose .code-block.has-title .code-tools{position:static;justify-content:flex-start;padding:.5em .6em .5em 1em;border:1px solid var(--line);border-bottom:0;border-radius:var(--radius) var(--radius) 0 0;background:var(--bg-elev)}.prose .code-block.has-title pre{border-top-left-radius:0;border-top-right-radius:0}.prose .code-title{margin-right:auto;color:var(--fg-muted);text-transform:none}.prose .code-title:before{content:"";display:inline-block;width:7px;height:7px;margin-right:.7em;background:var(--accent);vertical-align:.05em}.prose pre .line{display:inline-block;min-width:calc(100% + 2.4em);margin-inline:-1.2em;padding-inline:1.2em}.prose pre .line.highlighted{background:color-mix(in oklab,var(--accent) 12%,transparent);box-shadow:inset 2px 0 var(--accent-ink)}.prose pre .line.diff{position:relative}.prose pre .line.diff:before{position:absolute;left:.4em}.prose pre .line.diff.add{background:#40c87824}.prose pre .line.diff.add:before{content:"+";color:#3fb871}.prose pre .line.diff.remove{background:#f050501f;opacity:.7}.prose pre .line.diff.remove:before{content:"−";color:#e5534b}.prose img.zoomable{cursor:zoom-in}.prose .figure{margin-block:2em}.prose .figure img{width:100%;border:1px solid var(--line)}.prose .figure figcaption{display:flex;gap:.8em;margin-top:.7em;text-align:left;line-height:1.6}.prose .figure figcaption .mono{flex:none;color:var(--accent-ink)}.notes-rail .sidenote{position:absolute;top:0;left:0;right:0;display:flex;gap:.6em;padding-left:.9em;border-left:1px solid var(--line-strong);font-size:var(--step--1);line-height:1.65;color:var(--fg-muted);transition:border-color .2s,color .2s}.notes-rail .sidenote .num{flex:none;color:var(--accent-ink);font-size:var(--step--2);line-height:2.1}.notes-rail .sidenote p{margin:0}.notes-rail .sidenote a{color:inherit;text-decoration-color:var(--accent-ink)}.notes-rail .sidenote.active{border-left-color:var(--accent-ink);color:var(--fg)}.notes-rail .sidenote.flash{animation:note-flash 1.2s var(--ease-out)}@keyframes note-flash{0%,30%{background:color-mix(in oklab,var(--accent) 16%,transparent);border-left-color:var(--accent-ink)}}.prose a[data-footnote-ref]{text-decoration:none;font-family:var(--font-mono);font-size:.8em}.prose a[data-footnote-ref].active{background:var(--accent);color:var(--on-accent)}@media(min-width:1280px){post-body[data-sidenotes] .footnotes{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}}signal-scope[data-astro-cid-ntjsouo3]{display:grid;gap:var(--space-4)}canvas[data-astro-cid-ntjsouo3]{width:100%;aspect-ratio:16 / 9;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);touch-action:pan-y}.controls[data-astro-cid-ntjsouo3]{display:grid;grid-template-columns:6.5rem 1fr;align-items:center;gap:var(--space-2) var(--space-4);font-size:var(--step--1);line-height:1.4}.controls[data-astro-cid-ntjsouo3]>label[data-astro-cid-ntjsouo3]{display:flex;justify-content:space-between;gap:var(--space-2);color:var(--fg-muted)}output[data-astro-cid-ntjsouo3]{color:var(--fg)}input[data-astro-cid-ntjsouo3][type=range]{width:100%;accent-color:var(--accent-ink)}fieldset[data-astro-cid-ntjsouo3]{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4);margin-top:var(--space-2);padding:0;border:0}fieldset[data-astro-cid-ntjsouo3] label[data-astro-cid-ntjsouo3]{display:inline-flex;align-items:center;gap:.4em;cursor:pointer}input[data-astro-cid-ntjsouo3][type=radio]{accent-color:var(--accent-ink)}button[data-astro-cid-ntjsouo3]{margin-left:auto;padding:.35em .9em;border:1px solid var(--line-strong);border-radius:var(--radius);background:none;font-size:var(--step--2)}button[data-astro-cid-ntjsouo3]:hover{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}@media(width<=480px){canvas[data-astro-cid-ntjsouo3]{aspect-ratio:4 / 3}.controls[data-astro-cid-ntjsouo3]{grid-template-columns:1fr;gap:var(--space-1)}input[data-astro-cid-ntjsouo3][type=range]{margin-bottom:var(--space-2)}}
