#blog-root{font-size:17px;line-height:1.65}.blog-prose .heading-anchor{color:var(--blog-faint);opacity:0;margin-left:.4em;text-decoration:none;transition:opacity .15s}.blog-prose h2:hover .heading-anchor,.blog-prose h3:hover .heading-anchor,.blog-prose .heading-anchor:focus-visible{opacity:1}.blog-prose [data-rehype-pretty-code-figure]{margin:1.75rem 0}.blog-prose [data-rehype-pretty-code-figure] pre{background:var(--blog-code-bg);border:1px solid var(--blog-border);border-radius:12px;padding:1rem 0;font-size:14px;line-height:1.7;overflow-x:auto}.blog-prose [data-rehype-pretty-code-figure] pre code{font-family:var(--font-geist-mono), ui-monospace, monospace;font-size:inherit;background:0 0;border:0;padding:0;display:grid}.blog-prose [data-rehype-pretty-code-figure] pre code [data-line]{padding:0 1.25rem}.blog-prose [data-rehype-pretty-code-figure] pre code span[data-line] span{color:var(--shiki-dark)}html[data-theme=light] .blog-prose [data-rehype-pretty-code-figure] pre code span[data-line] span{color:var(--shiki-light)}.blog-prose [data-rehype-pretty-code-figure] pre code [data-highlighted-line]{background:var(--blog-accent-soft);box-shadow:inset 2px 0 0 var(--blog-accent)}.blog-prose [data-rehype-pretty-code-figure] pre code [data-highlighted-chars]{background:var(--blog-accent-soft);border-radius:4px;padding:1px 3px}.blog-prose [data-rehype-pretty-code-title]{font-family:var(--font-geist-mono), ui-monospace, monospace;color:var(--blog-muted);background:var(--blog-code-bg);border:1px solid var(--blog-border);border-bottom:0;border-radius:12px 12px 0 0;width:fit-content;padding:.5rem 1.25rem;font-size:12.5px}.blog-prose [data-rehype-pretty-code-title]+pre{border-top-left-radius:0;margin-top:0}@keyframes blog-fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.blog-fade-up{animation:.5s cubic-bezier(.21,.47,.32,.98) both blog-fade-up}.blog-fade-up-delay-1{animation-delay:80ms}.blog-fade-up-delay-2{animation-delay:.16s}@media (prefers-reduced-motion:reduce){.blog-fade-up,.blog-fade-up-delay-1,.blog-fade-up-delay-2{animation:none}}