.github-link[data-astro-cid-jz4zgm4b]{position:relative}.github-link[data-astro-cid-jz4zgm4b] .github-icon[data-astro-cid-jz4zgm4b]{opacity:.7;transition:opacity .2s}.github-link[data-astro-cid-jz4zgm4b]:hover .github-icon[data-astro-cid-jz4zgm4b]{opacity:1}.post-header[data-astro-cid-ey5mls2t]{flex-direction:column;display:flex}.post-header__draft[data-astro-cid-ey5mls2t]{text-transform:uppercase;letter-spacing:.06em;color:var(--color-red-500,oklch(62% .18 25));align-self:flex-start;margin-bottom:.5rem;font-size:.72rem;font-weight:700}.post-header__title[data-astro-cid-ey5mls2t]{letter-spacing:-.02em;color:var(--color-accent-2);margin:0;font-size:clamp(1.9rem,4vw,2.5rem);font-weight:800;line-height:1.12}.post-header__desc[data-astro-cid-ey5mls2t]{width:100%;color:color-mix(in srgb, var(--color-global-text) 72%, transparent);margin:.85rem 0 0;font-size:1.075rem;line-height:1.6}.post-header__meta[data-astro-cid-ey5mls2t]{color:color-mix(in srgb, var(--color-global-text) 65%, transparent);flex-wrap:wrap;align-items:center;gap:.4rem .7rem;margin-top:1.1rem;font-size:.875rem;display:flex}.post-header__meta-item[data-astro-cid-ey5mls2t]{font-variant-numeric:tabular-nums;align-items:center;gap:.4rem;display:inline-flex}.post-header__meta-item[data-astro-cid-ey5mls2t] svg[data-astro-cid-ey5mls2t]{width:1rem;height:1rem;color:var(--color-accent)}.post-header__meta-dot[data-astro-cid-ey5mls2t]{color:color-mix(in srgb, var(--color-global-text) 30%, transparent)}.post-header__updated[data-astro-cid-ey5mls2t]{border:1px solid color-mix(in srgb, var(--color-global-text) 15%, transparent);border-radius:999px;align-items:center;gap:.35rem;padding:.15rem .55rem;font-size:.78rem;display:inline-flex}.post-header__updated[data-astro-cid-ey5mls2t] svg[data-astro-cid-ey5mls2t]{width:.85rem;height:.85rem;color:var(--color-accent)}.post-header__try[data-astro-cid-ey5mls2t]{border:1px solid color-mix(in srgb, var(--color-accent) 45%, transparent);color:var(--color-accent);border-radius:.3rem;align-self:flex-start;align-items:center;gap:.5rem;margin-top:1.25rem;padding:.5rem .9rem;font-size:.875rem;font-weight:600;text-decoration:none;transition:border-color .18s,background .18s;display:inline-flex}.post-header__try[data-astro-cid-ey5mls2t]:hover,.post-header__try[data-astro-cid-ey5mls2t]:focus-visible{border-color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 10%, transparent);outline:none}.post-header__try[data-astro-cid-ey5mls2t] svg[data-astro-cid-ey5mls2t]{width:1rem;height:1rem}.post-header__tax[data-astro-cid-ey5mls2t]{flex-direction:column;gap:.55rem;margin-top:1.5rem;display:flex}.post-header__row[data-astro-cid-ey5mls2t]{align-items:flex-start;gap:.6rem;display:flex}.post-header__row-icon[data-astro-cid-ey5mls2t]{width:1.2rem;height:1.2rem;color:color-mix(in srgb, var(--color-global-text) 55%, transparent);flex:none;margin-top:.15rem}.post-header__taxlist[data-astro-cid-ey5mls2t]{flex-wrap:wrap;align-items:center;gap:.2rem 1rem;margin:0;padding:0;list-style:none;display:flex}.post-header__taxlink[data-astro-cid-ey5mls2t]{color:color-mix(in srgb, var(--color-global-text) 78%, transparent);text-underline-offset:3px;align-items:center;gap:.35rem;font-size:.92rem;font-weight:500;text-decoration:none;transition:color .15s;display:inline-flex}.post-header__taxlink[data-astro-cid-ey5mls2t]:hover,.post-header__taxlink[data-astro-cid-ey5mls2t]:focus-visible{color:var(--color-accent);outline:none;text-decoration:underline}.post-header__hash[data-astro-cid-ey5mls2t]{color:color-mix(in srgb, var(--color-accent) 75%, transparent);font-weight:700}.post-header__taxlink[data-astro-cid-ey5mls2t]:hover .post-header__hash[data-astro-cid-ey5mls2t]{color:var(--color-accent)}.post-header__tech-icon[data-astro-cid-ey5mls2t]{width:1rem;height:1rem}.post-header__extra[data-astro-cid-ey5mls2t]{display:none}.post-header__row[data-astro-cid-ey5mls2t].is-expanded .post-header__extra[data-astro-cid-ey5mls2t]{display:inline-flex}.post-header__row[data-astro-cid-ey5mls2t].is-expanded .post-header__more-li[data-astro-cid-ey5mls2t]{display:none}.post-header__more[data-astro-cid-ey5mls2t]{cursor:pointer;letter-spacing:.04em;color:var(--color-accent);background:0 0;border:0;padding:0 .1rem;font-size:1rem;font-weight:800;line-height:1;transition:color .15s}.post-header__more[data-astro-cid-ey5mls2t]:hover,.post-header__more[data-astro-cid-ey5mls2t]:focus-visible{text-underline-offset:3px;outline:none;text-decoration:underline}a[data-toc-link]{word-break:break-word;border-radius:.25rem;padding:.3rem .55rem;line-height:1.35;text-decoration:none;transition:color .18s,background-color .18s;display:block}a[data-toc-link][data-depth="1"]{letter-spacing:.01em;color:var(--color-accent-2);font-size:1rem;font-weight:700}a[data-toc-link][data-depth="2"]{color:var(--color-accent-2);font-size:.9rem;font-weight:700}a[data-toc-link][data-depth="3"]{color:color-mix(in srgb, var(--color-global-text) 92%, transparent);font-size:.82rem;font-weight:400}a[data-toc-link][data-depth="4"]{color:color-mix(in srgb, var(--color-global-text) 74%, transparent);font-size:.76rem;font-weight:400}a[data-toc-link][data-depth="5"]{color:color-mix(in srgb, var(--color-global-text) 60%, transparent);font-size:.72rem;font-weight:400}a[data-toc-link][data-depth="6"]{color:color-mix(in srgb, var(--color-global-text) 50%, transparent);font-size:.68rem;font-style:italic;font-weight:400}@media (hover:hover){a[data-toc-link]:hover{text-decoration:underline;text-decoration-color:color-mix(in srgb, var(--color-accent) 45%, transparent);text-underline-offset:3px}}a[data-toc-link][data-active=true]{color:var(--color-accent);font-weight:700}ol.toc-children{border-left:1px solid color-mix(in srgb, var(--color-global-text) 16%, transparent);margin-top:.125rem;margin-left:.5rem;padding-left:.6rem}ol.toc-children>li+li{margin-top:.125rem}ol.toc-children:has(>li>a[data-active=true]),ol.toc-children:has(a[data-active=true]){border-left-color:color-mix(in srgb, var(--color-accent) 45%, transparent)}.toc-dock{border-left:2px solid color-mix(in srgb, var(--color-global-text) 14%, transparent);padding-left:1rem}.toc-dock__head{width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.6rem;padding:0;display:flex}.toc-dock__title{letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb, var(--color-global-text) 55%, transparent);font-size:.72rem;font-weight:700}.toc-dock__toggle{width:1.5rem;height:1.5rem;color:color-mix(in srgb, var(--color-global-text) 55%, transparent);cursor:pointer;border-radius:.375rem;justify-content:center;align-items:center;transition:color .18s;display:inline-flex}.toc-dock__toggle svg{width:.95rem;height:.95rem;transition:transform .2s}@media (hover:hover){.toc-dock__head:hover .toc-dock__toggle{color:var(--color-accent)}.toc-dock__head:hover .toc-dock__title{text-decoration:underline}}#toc-dock:not([data-collapsed=true]) .toc-dock__toggle svg{transform:rotate(180deg)}#toc-dock[data-collapsed=true] .toc-dock__nav{display:none}.toc-dock__nav{max-height:60vh;animation:.2s ease-out toc-fade-in;overflow:auto}.toc-dock__nav ol{margin:0;padding:0;list-style:none}#toc-list>li+li{margin-top:.1rem}.comments-dock{border-left:2px solid color-mix(in srgb, var(--color-global-text) 14%, transparent);padding-left:1rem}#comments-dock:not(:has(.comments-dock__inner)){display:none}@media (width>=1024px){#post-aside{top:var(--header-clearance,72px);width:20rem;max-width:20rem;max-height:calc(100vh - var(--header-clearance,72px) - 1.5rem);flex:0 0 20rem;align-self:flex-start;position:sticky}}@media (width>=1700px){#post-aside{top:var(--header-clearance,72px);flex:none;width:clamp(13rem,16.5rem,50vw - 34.5rem);max-width:none;max-height:none;position:fixed;left:calc(50% + 33.5rem)}#comments-dock{top:var(--header-clearance,72px);width:clamp(13rem,16.5rem,50vw - 34.5rem);max-height:calc(100vh - var(--header-clearance,72px) - 1.5rem);border-left:0;border-right:2px solid color-mix(in srgb, var(--color-global-text) 14%, transparent);padding-left:0;padding-right:1rem;position:fixed;left:auto;right:calc(50% + 33.5rem);overflow:auto}}html{scroll-behavior:smooth}#mobile-toc-btn[data-astro-cid-llmq7oq2]{touch-action:manipulation;-webkit-user-select:none;user-select:none;isolation:isolate;min-width:48px;min-height:48px;position:relative}#mobile-toc-btn[data-astro-cid-llmq7oq2]:before{content:"";position:absolute;inset:-8px}#mobile-toc-content[data-astro-cid-llmq7oq2] [data-astro-cid-llmq7oq2]::-webkit-scrollbar{width:4px}#mobile-toc-content[data-astro-cid-llmq7oq2] [data-astro-cid-llmq7oq2]::-webkit-scrollbar-track{background:0 0}#mobile-toc-content[data-astro-cid-llmq7oq2] [data-astro-cid-llmq7oq2]::-webkit-scrollbar-thumb{background:#9ca3af80;border-radius:2px}#mobile-toc-content[data-astro-cid-llmq7oq2] [data-astro-cid-llmq7oq2]::-webkit-scrollbar-thumb:hover{background:#9ca3afb3}.blog-prose{--tw-prose-body:color-mix(in srgb, var(--color-global-text) 86%, transparent);font-size:1.02rem;line-height:1.78}.blog-prose :is(h1,h2,h3,h4,h5,h6){letter-spacing:-.015em;text-wrap:balance;scroll-margin-top:6rem}.blog-prose h1{color:var(--color-accent-2);margin:2.5rem 0 1rem;font-size:2.1rem;font-weight:800;line-height:1.15}.blog-prose h2{color:var(--color-accent-2);border-bottom:1px solid color-mix(in srgb, var(--color-global-text) 12%, transparent);margin:2.75rem 0 1rem;padding-bottom:.4rem;font-size:1.55rem;font-weight:750;line-height:1.25}.blog-prose h3{color:var(--color-accent-2);margin:2rem 0 .7rem;font-size:1.26rem;font-weight:700;line-height:1.3}.blog-prose h4{color:var(--color-accent);margin:1.6rem 0 .55rem;font-size:1.06rem;font-weight:700}.blog-prose h5{text-transform:uppercase;letter-spacing:.06em;color:var(--color-accent);margin:1.45rem 0 .5rem;font-size:.95rem;font-weight:700}.blog-prose h6{text-transform:uppercase;letter-spacing:.08em;color:color-mix(in srgb, var(--color-global-text) 55%, transparent);margin:1.3rem 0 .5rem;font-size:.85rem;font-weight:700}.blog-prose>:first-child{margin-top:0}.blog-prose strong{color:var(--color-global-text);font-weight:700}.blog-prose hr{border-color:color-mix(in srgb, var(--color-global-text) 14%, transparent);margin:2.75rem 0}.blog-prose a:not(.not-prose):not(.github-link):not(.link-preview-link){color:var(--color-accent);text-decoration:underline;text-decoration-color:color-mix(in srgb, var(--color-accent) 35%, transparent);text-underline-offset:3px;transition:color .15s,text-decoration-color .15s}.blog-prose a:not(.not-prose):not(.github-link):not(.link-preview-link):hover{color:var(--color-accent-2);text-decoration-color:var(--color-accent)}@media (hover:hover){.blog-prose :is(h1,h2,h3)[role=button]:hover{color:var(--color-accent)}}.blog-prose :is(h1,h2,h3,h4,h5,h6)[role=button]{cursor:pointer}.blog-prose :is(h1,h2,h3,h4,h5,h6)[role=button]:focus-visible{outline:2px solid color-mix(in srgb, var(--color-accent) 55%, transparent);outline-offset:4px;border-radius:.25rem}.blog-prose :is(h1,h2,h3,h4,h5,h6)>a.not-prose{color:inherit;text-decoration:none}.blog-prose :is(h1,h2,h3,h4,h5,h6)>a.not-prose:after{content:"#";color:var(--color-accent);opacity:0;margin-left:.35rem;font-size:.85em;font-weight:600;transition:opacity .15s}@media (hover:hover){.blog-prose :is(h1,h2,h3,h4,h5,h6)>a.not-prose:hover:after{opacity:.65}}.blog-prose :is(h1,h2,h3,h4,h5,h6)>a.not-prose:focus-visible:after{opacity:.65}.blog-prose :is(ul,ol) li::marker{color:color-mix(in srgb, var(--color-global-text) 70%, var(--color-accent) 30%)}@media (hover:hover){.blog-prose :is(ul,ol) li:hover::marker{color:var(--color-accent)}}.blog-prose blockquote{border:0;border-inline-start:0;margin:1.5rem 0;padding:0}.blog-prose blockquote>:first-child{margin-top:0}.blog-prose blockquote>:last-child{margin-bottom:0}.blog-prose blockquote :is(p){letter-spacing:.01em;color:color-mix(in srgb, var(--color-global-text) 94%, var(--color-quote) 6%);font-size:1.01em;font-style:italic;line-height:1.8}.blog-prose blockquote p:first-of-type:before,.blog-prose blockquote p:last-of-type:after{color:color-mix(in srgb, var(--color-accent) 55%, var(--color-global-text) 45%);opacity:.7;font-weight:600}.blog-prose :not(pre)>code{border:1px solid color-mix(in srgb, var(--color-global-text) 20%, transparent);background-color:color-mix(in srgb, var(--color-global-text) 6%, transparent);border-radius:.375rem;padding:.1em .3em}@media (hover:hover){.blog-prose table tbody tr:hover{background-color:color-mix(in srgb, var(--color-global-text) 3%, transparent)}}.blog-prose .expressive-code figure.frame{border:1px solid color-mix(in srgb, var(--color-global-text) 16%, transparent);border-radius:.375rem;overflow:hidden}.blog-prose .expressive-code pre{margin:0}.blog-prose .expressive-code .copy button{color:var(--color-accent);border-radius:.375rem}.blog-prose .expressive-code .copy button>div{background:color-mix(in srgb, var(--color-global-bg) 70%, transparent);-webkit-backdrop-filter:blur(12px);opacity:.22}.blog-prose .expressive-code .copy button:before{border-color:color-mix(in srgb, var(--color-global-text) 18%, transparent);opacity:1}.blog-prose .expressive-code .copy button:after{background-color:currentColor}@media (hover:hover){.blog-prose .expressive-code .copy button:hover{color:var(--color-accent)}.blog-prose .expressive-code .copy button:hover>div{opacity:.3}}.blog-prose .expressive-code .copy button:active{transform:scale(.96)}.blog-prose .expressive-code .copy button:active>div{opacity:.36}.blog-prose .expressive-code .copy button:focus-visible{outline:2px solid color-mix(in srgb, var(--color-accent) 55%, transparent);outline-offset:3px}.blog-prose .expressive-code .copy .feedback{display:none!important}
