[data-toc-scroll]{scrollbar-width:thin;scrollbar-color:var(--border) transparent}.blog-toc-remaining{color:var(--muted-foreground);font-variant-numeric:tabular-nums;margin:0 0 .9rem;font-size:.75rem;line-height:1.3}.blog-toc-remaining[data-done=true]{color:var(--electric-soft);font-weight:600}.blog-toc-list{margin:0;padding:0 0 0 1.35rem;list-style:none;position:relative}.blog-toc-list:before,.blog-toc-list:after{content:"";border-radius:2px;width:2px;position:absolute;top:.55rem;bottom:.55rem;left:0}.blog-toc-list:before{background:var(--border)}.blog-toc-list:after{background:var(--electric);transform:scaleY(var(--toc-progress,0));transform-origin:top;will-change:transform}.blog-toc-item{margin:0;position:relative}.blog-toc-item[data-level="3"]{padding-left:.75rem}.blog-toc-item:before{content:"";box-sizing:border-box;border:2px solid var(--border);background:var(--toc-node-bg,var(--background));border-radius:9999px;width:.5rem;height:.5rem;transition:border-color .2s,background-color .2s,box-shadow .24s;position:absolute;top:.62rem;left:-1.35rem;transform:translate(calc(1px - 50%))}.blog-toc-item[data-state=read]:before{border-color:var(--electric);background:var(--electric)}.blog-toc-item[data-state=active]:before{border-color:var(--electric);background:var(--electric);box-shadow:0 0 0 4px color-mix(in oklab, var(--electric) 22%, transparent)}.blog-toc-item:after{content:"";border:2px solid var(--electric);opacity:0;pointer-events:none;border-radius:9999px;width:.5rem;height:.5rem;position:absolute;top:.62rem;left:-1.35rem;transform:translate(calc(1px - 50%))}.blog-toc-item.is-ping:after{animation:.62s cubic-bezier(.23,1,.32,1) blog-toc-ping}@keyframes blog-toc-ping{0%{opacity:.7;transform:translate(calc(1px - 50%))scale(1)}to{opacity:0;transform:translate(calc(1px - 50%))scale(3)}}.blog-toc-link{color:var(--muted-foreground);text-wrap:pretty;padding:.35rem 0;font-size:.8125rem;line-height:1.4;transition:color .16s;display:block}.blog-toc-item[data-state=read] .blog-toc-link{color:color-mix(in oklab, var(--foreground) 72%, var(--background))}.blog-toc-link:hover{color:var(--foreground)}.blog-toc-link[aria-current=location]{color:var(--electric-soft);font-weight:600}.blog-toc-bar{top:var(--header-h);z-index:40;border-bottom:1px solid var(--border);background:var(--background);position:sticky}.blog-toc-bar:after{content:"";z-index:2;background:var(--electric);height:2px;transform:scaleX(var(--toc-progress,0));transform-origin:0;pointer-events:none;position:absolute;bottom:-1px;left:0;right:0}.blog-toc-bar-btn{z-index:1;width:100%;min-height:2.75rem;max-width:var(--measure-prose);cursor:pointer;background:var(--background);color:var(--foreground);text-align:left;justify-content:space-between;align-items:center;gap:.75rem;margin-inline:auto;padding:.5rem 1rem;font-size:.875rem;font-weight:600;display:flex;position:relative}.blog-toc-bar-btn:focus-visible{outline:2px solid var(--electric);outline-offset:-2px}.blog-toc-bar-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.blog-toc-bar-chevron{transition:transform .22s cubic-bezier(.32,.72,0,1)}.blog-toc-bar[data-open=true] .blog-toc-bar-chevron{transform:rotate(180deg)}.blog-toc-scrim{z-index:0;background:color-mix(in oklab, var(--background) 55%, transparent);position:fixed;inset:0}.blog-toc-panel{--toc-node-bg:var(--card);z-index:1;overscroll-behavior:contain;border-bottom:1px solid var(--border);background:var(--card);max-height:min(60vh,26rem);color:var(--foreground);box-shadow:0 1rem 2rem color-mix(in oklab, var(--foreground) 14%, transparent);visibility:hidden;opacity:0;padding:.75rem 1rem 1rem;transition:transform .24s cubic-bezier(.32,.72,0,1),opacity .18s ease-out,visibility 0s linear .24s;position:absolute;inset:100% 0 auto;overflow-y:auto;transform:translateY(-.5rem)}.blog-toc-bar[data-open=true] .blog-toc-panel{visibility:visible;opacity:1;transition:transform .24s cubic-bezier(.32,.72,0,1),opacity .2s ease-out,visibility linear;transform:translateY(0)}.blog-toc-panel-inner{max-width:var(--measure-prose);margin-inline:auto}.blog-toc-panel .blog-toc-link{padding:.5rem 0}@media (width>=1280px){.blog-toc-bar{display:none}}.blog-article-prose{max-width:var(--measure-wide);color:color-mix(in oklab, var(--foreground) 88%, var(--background));font-size:var(--prose-size);text-align:left;overflow-wrap:break-word;hyphens:manual;margin-inline:auto;line-height:1.72}.blog-article-prose p,.blog-article-prose li{text-wrap:pretty}@media (width>=1024px){:root{--prose-size:1.125rem}}@media (width>=1280px){:root{--prose-size:clamp(1.1875rem, .8125rem + .47vw, 1.375rem)}}.blog-measure,.blog-article-prose>:is(p,ul,ol,blockquote,h2,h3,h4,hr){max-width:var(--measure-prose);margin-inline:auto}.blog-shell{width:100%;margin-inline:auto}@media (width>=1280px){.blog-article-prose,.blog-measure,.blog-article-prose>:is(p,ul,ol,blockquote,h2,h3,h4,hr){margin-inline:0}.blog-shell{max-width:calc(var(--measure-wide) + 14rem + 3rem + 3rem)}}.blog-article-prose>:first-child{margin-top:0}.blog-article-prose p,.blog-article-prose ul,.blog-article-prose ol,.blog-article-prose blockquote,.blog-article-prose table,.blog-article-prose pre,.blog-article-prose hr{margin-top:1.35rem;margin-bottom:1.35rem}.blog-article-prose h2,.blog-article-prose h3,.blog-article-prose h4{color:var(--foreground);text-align:left;text-wrap:balance;scroll-margin-top:8rem;font-family:DM Sans Variable,ui-sans-serif,system-ui,sans-serif;font-weight:600;line-height:1.25}.blog-article-prose h2{border-top:1px solid var(--border);letter-spacing:-.02em;margin-top:4rem;margin-bottom:1rem;padding-top:2rem;font-size:clamp(1.5rem,2.4vw,1.9rem)}.blog-article-prose h3{margin-top:2.5rem;margin-bottom:.5rem;font-size:clamp(1.2rem,2vw,1.4rem)}@media (width>=1280px){.blog-article-prose h2,.blog-article-prose h3,.blog-article-prose h4{scroll-margin-top:6rem}}.blog-article-prose h4{margin-top:2rem;font-size:1.15rem}.blog-article-prose strong{color:var(--foreground);font-weight:600}.blog-article-prose a{color:var(--electric-soft);text-decoration-line:underline;text-decoration-color:color-mix(in oklab, var(--electric-soft) 45%, transparent);text-underline-offset:.2em;text-decoration-thickness:1px;transition:text-decoration-color .15s}.blog-article-prose a:hover,.blog-article-prose a:focus-visible{text-decoration-color:currentColor}.blog-article-prose a:focus-visible{outline:2px solid var(--electric);outline-offset:3px;border-radius:.125rem}.blog-article-prose ul,.blog-article-prose ol{text-align:left;padding-left:1.5rem}.blog-article-prose ul{list-style:outside}.blog-article-prose ol{list-style:decimal}.blog-article-prose li{margin:.45rem 0;padding-left:.25rem}.blog-article-prose li::marker{color:var(--electric)}.blog-article-prose blockquote{border-top:1px solid var(--electric);border-bottom:1px solid var(--electric);color:var(--foreground);text-align:left;padding:1rem 1.5rem;font-size:1.12em;font-style:italic}.blog-article-prose hr{border:0;border-top:1px solid var(--border)}.blog-article-prose :not(pre)>code{border:1px solid var(--border);background:var(--surface);color:var(--electric-soft);padding:.15rem .35rem;font-family:JetBrains Mono Variable,ui-monospace,monospace;font-size:.85em}.dark .blog-article-prose :not(pre)>code{color:var(--electric)}.blog-article-prose pre{border:1px solid var(--border);background:var(--card);color:var(--foreground);padding:1.25rem;font-family:JetBrains Mono Variable,ui-monospace,monospace;font-size:.82rem;line-height:1.7;position:relative;overflow-x:auto}.blog-article-prose pre code{font-family:inherit;font-size:inherit}.blog-code-copy{border:1px solid var(--border);background:var(--surface);color:var(--muted-foreground);cursor:pointer;text-transform:uppercase;letter-spacing:.08em;align-items:center;gap:.4rem;padding:.3rem .55rem;font-family:JetBrains Mono Variable,ui-monospace,monospace;font-size:.68rem;transition:border-color .15s,color .15s,transform .16s cubic-bezier(.23,1,.32,1);display:inline-flex;position:absolute;top:.65rem;right:.65rem}.blog-code-copy:hover,.blog-code-copy:focus-visible{border-color:var(--electric);color:var(--foreground)}.blog-code-copy:focus-visible{outline:2px solid var(--electric);outline-offset:2px}.blog-code-copy[data-copied=true]{border-color:var(--electric);color:var(--electric-soft)}.blog-code-copy:active{transform:scale(.96)}.blog-article-prose table{border:1px solid var(--border);border-collapse:collapse;background:var(--card);width:100%;font-size:.88rem;line-height:1.5;display:block;overflow-x:auto}.blog-table-wrap{border:1px solid var(--border);background:linear-gradient(to right, var(--card), transparent) left center / 2rem 100% no-repeat local, linear-gradient(to left, var(--card), transparent) right center / 2rem 100% no-repeat local, linear-gradient(to right, color-mix(in oklab, var(--foreground) 16%, transparent), transparent) left center / .75rem 100% no-repeat scroll, linear-gradient(to left, color-mix(in oklab, var(--foreground) 16%, transparent), transparent) right center / .75rem 100% no-repeat scroll, var(--card);margin:1.75rem 0;overflow-x:auto}.blog-table-wrap:focus-visible{outline:2px solid var(--electric);outline-offset:2px}.blog-table-wrap>table{background:0 0;border:0;width:100%;margin:0;display:table}.blog-article-prose th,.blog-article-prose td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;min-width:9rem;padding:.8rem 1rem}.blog-article-prose th{color:var(--foreground);background:var(--surface);font-size:.8rem;font-weight:600;line-height:1.35}.blog-article-prose tr:last-child td{border-bottom:0}.blog-article-prose img{border:1px solid var(--border);max-width:100%;height:auto}.blog-article-prose figcaption{color:var(--muted-foreground);text-align:left;font-size:.8rem}.blog-article-prose table,.blog-article-prose pre,.blog-article-prose hr{text-align:left}.blog-article-prose figure{text-align:left;margin-left:auto;margin-right:auto}.blog-hero-title{text-shadow:0 1px 14px oklab(0% none none/.55)}@media (width<=640px){.blog-article-prose h2{margin-top:3rem;padding-top:1.5rem}.blog-article-prose pre{padding:2.75rem 1rem 1rem}}
