.blog-v2{--bv2-bg:#0b0c10;--bv2-panel:#111319;--bv2-panel-2:#0d0f14;--bv2-fg:#e8eaf0;--bv2-fg-dim:#aeb4c2;--bv2-fg-dimmer:#7b8190;--bv2-border:#ffffff14;--bv2-border-hover:#ffffff38;--bv2-accent:#4f7cff;--bv2-accent-soft:#4f7cff24;--bv2-green:#3ddc97;--bv2-amber:#f5a524;--bv2-red:#ff6b7a;--bv2-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, monospace;--bv2-sans:"Inter", -apple-system, "system-ui", sans-serif;--bv2-radius:14px;--bv2-radius-sm:9px;background:var(--bv2-bg);color:var(--bv2-fg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--font-sans);line-height:1.5}.blog-v2 nav ol{margin:0}.blog-v2 h1,.blog-v2 h2,.blog-v2 h3{font-family:var(--bv2-sans);font-weight:700}.blog-v2 .bv2-card h2,.blog-v2 .bv2-card h3,.blog-v2 .bv2-panel h2{color:var(--bv2-fg)!important;background:0 0!important;border-style:solid!important;border-color:currentColor!important;padding-bottom:0!important}.blog-v2 .bv2-card h2{margin-top:.75rem!important;line-height:1.3333!important}.blog-v2 .bv2-card h3{line-height:1.5556!important}.blog-v2 .bv2-panel h2{line-height:1.4!important}.blog-v2 :where(h1,h2,h3,p,article){border-style:solid!important}.blog-v2 #bv2-grid+ul{margin-top:2rem;margin-bottom:0;padding-inline-start:0;list-style:none}.blog-v2 .bv2-mono{font-family:var(--bv2-mono)}.blog-v2 .bv2-accent-text{color:#0000;background:linear-gradient(90deg,#5ee7ff,#4f7cff 45%,#9b6bff 100%);-webkit-background-clip:text;background-clip:text}.blog-v2 .bv2-title{color:#0000;background:linear-gradient(#fff 0%,#aeb4c2 100%);-webkit-background-clip:text;background-clip:text;padding-bottom:.06em;margin-top:.75rem!important}.blog-v2 .bv2-title+p{margin:1.25rem 0 0}#latest .bv2-title{line-height:1}.blog-v2 article .bv2-title{line-height:1.12}.blog-v2 :focus-visible{outline:2px solid var(--bv2-accent);outline-offset:3px;border-radius:6px}.blog-v2 .bv2-panel{background:var(--bv2-panel);border:1px solid var(--bv2-border);border-radius:var(--bv2-radius)}#bv2-start-panel.bv2-panel{background:0 0;border:none;border-radius:0;padding:0}#bv2-start-panel a{color:var(--bv2-fg-dim)}#bv2-start-panel a:hover{color:var(--bv2-fg)}#bv2-start-panel p{margin:.5rem 0 0}#bv2-start-panel ol{margin:1.25rem 0 0;padding-inline-start:0;list-style:none}.blog-v2 .bv2-tab{border:1px solid var(--bv2-border);min-height:44px;color:var(--bv2-fg-dim);background:#ffffff05;border-radius:999px;align-items:center;gap:8px;padding:0 16px;font-family:inherit;font-size:14px;font-weight:500;line-height:1.5;transition:border-color .2s,color .2s,background .2s;display:inline-flex}.blog-v2 .bv2-tab:hover{border-color:var(--bv2-border-hover);color:var(--bv2-fg)}.blog-v2 .bv2-tab{color:#e8eaf0!important;background:0 0!important;border:1px solid #ffffff38!important;border-radius:8px!important}.blog-v2 .bv2-tab[aria-pressed=true]{color:#e8eaf0!important;background:#ffffff1c!important;border-color:#0000!important}.blog-v2 .bv2-tab-count{font-family:var(--bv2-mono);color:var(--bv2-fg-dimmer);font-size:11.5px}.blog-v2 .bv2-card{background:var(--bv2-panel);border:1px solid var(--bv2-border);border-radius:var(--bv2-radius);transition:border-color .25s,transform .25s;display:block;overflow:hidden}.blog-v2 .bv2-card:hover{border-color:var(--bv2-border-hover);transform:translateY(-2px)}.blog-v2 .bv2-card:hover{border-color:#ffffff8a}@media (prefers-reduced-motion:reduce){.blog-v2 .bv2-card:hover{transform:none}}.blog-v2 .bv2-card p{-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:36em;margin:0;display:-webkit-box;overflow:hidden}.blog-v2 .bv2-card p.mt-2{margin-top:.5rem}.blog-v2 .bv2-card p.mt-3{margin-top:.75rem}.blog-v2 .bv2-meta{font-family:var(--bv2-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--bv2-fg-dimmer);font-size:11.5px}.blog-v2 header>p.bv2-meta{margin-top:0}.blog-v2 .bv2-prose{max-width:46ch;color:var(--bv2-fg-dim);font-size:17px;line-height:1.72}.blog-v2 .bv2-prose h2,.blog-v2 .bv2-prose h3{color:var(--bv2-fg);letter-spacing:-.02em;background:0 0;margin-top:2.2em;padding-bottom:0;scroll-margin-top:96px;font-weight:600;line-height:1.25}.blog-v2 .bv2-prose h2{font-size:26px}.blog-v2 .bv2-prose h3{font-size:20px}.blog-v2 .bv2-prose strong{color:var(--bv2-fg);font-weight:600}.blog-v2 .bv2-prose a{color:#8fb0ff;text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.blog-v2 .bv2-prose a:hover{color:#b7ccff}.blog-v2 .bv2-prose ul,.blog-v2 .bv2-prose ol{padding-left:1.4em}.blog-v2 .bv2-prose li+li{margin-top:.5em}.blog-v2 .bv2-prose ul{list-style:outside}.blog-v2 .bv2-prose ol{list-style:decimal}.blog-v2 .bv2-prose blockquote,.blog-v2 .bv2-prose .callout{border:1px solid var(--bv2-border);background:var(--bv2-panel);border-radius:var(--bv2-radius);padding:16px 20px}.blog-v2 .bv2-prose .callout-title{font-family:var(--bv2-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--bv2-fg-dimmer);margin-bottom:6px;font-size:11.5px}.blog-v2 .bv2-prose code{font-family:var(--bv2-mono);background:#ffffff0f;border-radius:5px;padding:2px 5px;font-size:.9em}.blog-v2 .bv2-prose pre{background:var(--bv2-panel-2);border:1px solid var(--bv2-border);border-radius:var(--bv2-radius-sm);padding:16px;overflow-x:auto}.blog-v2 .bv2-prose pre code{background:0 0;padding:0}.blog-v2 .bv2-prose img{border-radius:var(--bv2-radius-sm);max-width:100%;height:auto}.blog-v2 .bv2-prose table{border-collapse:collapse;width:100%;font-size:15px}.blog-v2 .bv2-prose th,.blog-v2 .bv2-prose td{border:1px solid var(--bv2-border);text-align:left;padding:8px 12px}.blog-v2 .bv2-prose>.bv2-break{aspect-ratio:1200/260;border:1px solid var(--bv2-border);border-radius:var(--bv2-radius);background:var(--bv2-panel-2);overflow:hidden}.blog-v2 .bv2-scroll-x{max-width:100%;overflow-x:auto}.blog-v2 .bv2-prose .anchor{display:none}.blog-v2 .bv2-toc-link{color:var(--bv2-fg-dimmer);border-left:1px solid #0000;margin-left:-1px;padding:4px 0 4px 14px;font-size:13.5px;line-height:1.45;transition:color .2s;display:block}.blog-v2 .bv2-toc-link:hover{color:var(--bv2-fg)}.blog-v2 .bv2-toc-link[aria-current=true]{border-left-color:var(--bv2-accent);color:var(--bv2-fg)}.blog-v2 .bv2-toc-progress{border-top:none;margin-top:0;margin-bottom:14px;padding-top:0}.blog-v2 .bv2-toc-progress-track{background:#ffffff14;border-radius:999px;width:100%;height:4px;overflow:hidden}.blog-v2 .bv2-toc-progress-fill{transform-origin:0;background:var(--bv2-fg);width:100%;height:100%;transition:transform .15s linear}.blog-v2 .bv2-toc-progress-text{font-family:var(--bv2-mono);color:var(--bv2-fg-dimmer);margin:6px 0 0;font-size:11px}.blog-v2 .bv2-input{background:var(--bv2-panel-2);border:1px solid var(--bv2-border);border-radius:var(--bv2-radius-sm);width:100%;min-height:44px;color:var(--bv2-fg);padding:0 14px;font-size:15px}.blog-v2 .bv2-input::placeholder{color:var(--bv2-fg-dimmer)}.blog-v2 .bv2-btn-ghost{border:1px solid var(--bv2-border);border-radius:var(--bv2-radius-sm);min-height:44px;color:var(--bv2-fg);background:#ffffff05;align-items:center;gap:8px;padding:0 16px;font-family:inherit;font-size:14px;line-height:1.5;display:inline-flex}.blog-v2 .bv2-btn-ghost:hover{border-color:var(--bv2-border-hover);background:#ffffff0f}.blog-v2 .bv2-btn-ghost:disabled{opacity:.55}.blog-v2 .bv2-btn-ghost{color:#e8eaf0!important;background:0 0!important;border:1px solid #ffffff38!important;border-radius:10px!important;min-height:49px!important;padding-left:24px!important;padding-right:24px!important;font-size:15.5px!important}.blog-v2 .bv2-share span{color:var(--bv2-fg-dimmer)}.blog-v2 .bv2-share a,.blog-v2 .bv2-share button{background:var(--bv2-panel);border:1px solid var(--bv2-border);color:var(--bv2-fg-dim);box-shadow:none}.blog-v2 .bv2-share a:hover,.blog-v2 .bv2-share button:hover{background:var(--bv2-panel-2);border-color:var(--bv2-border-hover);color:var(--bv2-fg)}.blog-v2 .bv2-summary{border:1px solid var(--bv2-border);background:var(--bv2-panel);border-radius:var(--bv2-radius);padding:20px 24px}.blog-v2 .bv2-summary li{color:var(--bv2-fg-dim);gap:10px;font-size:15.5px;line-height:1.6;display:flex}.blog-v2 .bv2-summary li+li{margin-top:10px}.blog-v2 .bv2-summary li:before{content:"▸";color:var(--bv2-fg-dimmer);flex:none}.blog-v2 .bfx-art,.blog-v2 .bfx-art>svg{width:100%;height:100%;display:block}.blog-v2 .bv2-img-plate{background:var(--bv2-panel-2);position:relative}.blog-v2 .bv2-img-plate:after{content:"";pointer-events:none;box-shadow:inset 0 0 0 1px var(--bv2-border);position:absolute;inset:0}.blog-v2 .bv2-reveal{opacity:0;transform:translateY(14px)}.blog-v2 .bv2-reveal.bv2-reveal-on{animation:.6s cubic-bezier(.2,.7,.2,1) forwards bv2RevealIn}@keyframes bv2RevealIn{to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.blog-v2 .bv2-reveal{opacity:1;transform:none}.blog-v2 .bv2-reveal.bv2-reveal-on{animation:none}}.blog-v2{--bv2-measure:36em;--bv2-bleed:860px;--bv2-card-border:#ffffff5c;--bv2-card-border-hover:#ffffff8a}.blog-v2 .bv2-prose{max-width:var(--bv2-bleed)}.blog-v2 .bv2-prose>p,.blog-v2 .bv2-prose>ul,.blog-v2 .bv2-prose>ol,.blog-v2 .bv2-prose>h2,.blog-v2 .bv2-prose>h3,.blog-v2 article>header p{max-width:var(--bv2-measure)}.blog-v2 .bv2-prose>*+*{margin-top:1.55em}.blog-v2 .bv2-prose>*+p{margin-top:2.6em}.blog-v2 .bv2-prose>h2+p,.blog-v2 .bv2-prose>h3+p{margin-top:1.15em}.blog-v2 .bv2-prose>h2{border-top:1px solid var(--bv2-border);padding-top:1.05em}.blog-v2 .bv2-prose>h2:first-child{border-top:0;padding-top:0}.blog-v2 .bv2-prose>p:first-child{color:var(--bv2-fg);font-size:19px;line-height:1.6}.blog-v2 .bv2-prose>blockquote,.blog-v2 .bv2-prose>.callout,.blog-v2 .bv2-prose>table,.blog-v2 .bv2-prose>figure,.blog-v2 .bv2-prose>pre,.blog-v2 .bv2-prose>.bv2-break{max-width:var(--bv2-bleed)}.blog-v2 .bv2-break{aspect-ratio:1200/260;border:1px solid var(--bv2-border);border-radius:var(--bv2-radius);background:var(--bv2-panel-2);width:100%;overflow:hidden}.blog-v2 .bv2-break .bfx-art,.blog-v2 .bv2-break .bfx-art svg{width:100%;height:100%;display:block}.blog-v2 .bv2-prose>.bv2-break+h2{border-top:0;padding-top:0}.blog-v2 .bv2-prose .callout{border-left:3px solid var(--bv2-fg-dimmer)}.blog-v2 .bv2-prose .callout>p{margin:0}.blog-v2 .bv2-prose .callout>.callout-title{margin:0 0 6px}.blog-v2 .bv2-prose .callout-tip{border-left-color:var(--bv2-green)}.blog-v2 .bv2-prose .callout-note{border-left-color:var(--bv2-accent)}.blog-v2 .bv2-prose .callout-warn,.blog-v2 .bv2-prose .callout-warning{border-left-color:var(--bv2-amber)}.blog-v2 .bv2-prose .callout-imp,.blog-v2 .bv2-prose .callout-important{border-left-color:var(--bv2-red)}.blog-v2 .bv2-prose .callout-tip>.callout-title{color:var(--bv2-green)}.blog-v2 .bv2-prose .callout-note>.callout-title{color:#8fb0ff}.blog-v2 .bv2-prose .callout-warn>.callout-title,.blog-v2 .bv2-prose .callout-warning>.callout-title{color:var(--bv2-amber)}.blog-v2 .bv2-prose .callout-imp>.callout-title,.blog-v2 .bv2-prose .callout-important>.callout-title{color:var(--bv2-red)}.blog-v2 main[data-view=list] .bv2-card p{max-width:var(--bv2-measure);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.blog-v2 .bv2-card{border-color:var(--bv2-card-border)}.blog-v2 .bv2-card:hover{border-color:var(--bv2-card-border-hover);background:#171a22}.blog-v2 .bv2-prose>*{margin-bottom:0}.blog-v2 .bv2-prose>:first-child{margin-top:0}.blog-v2 article>header p{margin-bottom:0}@media (hover:hover){.pv2 .hover\:text-foreground:hover{color:var(--foreground)}}.blog-v2 .max-w-\[70ch\]{max-width:47ch}.blog-v2 p.bv2-meta{margin:0}.blog-v2 p.bv2-meta.mt-8{margin-top:2rem}.blog-v2 .bv2-card a,.blog-v2 nav[aria-label] ol a{text-decoration:none}.blog-v2 nav[aria-label] ol{padding-inline-start:0}.blog-v2 #bv2-start-panel .max-w-\[60ch\]{max-width:40ch}.blog-v2 p.mt-10{margin-top:2.5rem}.blog-v2 .bv2-mono{color:var(--bv2-accent)}.blog-v2{--muted-foreground:#7b8190}html.pv2-reveal-on .blog-v2 [data-rv]{transition:opacity .6s cubic-bezier(.2, .7, .2, 1) var(--d,0s), transform .6s cubic-bezier(.2, .7, .2, 1) var(--d,0s);transform:translateY(14px)}html.pv2-reveal-on .blog-v2 [data-rv].on{transform:none}
@media (max-width:1023px){.blog-v2 .bv2-prose>table{background-image:linear-gradient(to left, var(--bv2-bg), #0b0c1000), radial-gradient(farthest-side at 100% 50%, #0000008c, #0000);scrollbar-width:thin;background-position:100%,100%;background-repeat:no-repeat;background-size:22px 100%,11px 100%;background-attachment:local,scroll;max-width:100%;display:block;overflow-x:auto}.blog-v2 .bv2-prose>table th:first-child,.blog-v2 .bv2-prose>table td:first-child{z-index:1;background:var(--bv2-bg);position:sticky;left:0}.blog-v2>main>section>div{flex-direction:column;display:flex}.blog-v2>main>section>div>#bv2-tabs{order:2}.blog-v2>main>section>div>#bv2-start-panel{order:3;margin-top:28px}.blog-v2>main>section>div>#bv2-grid{order:4}.blog-v2>main>section>div>ul{order:5}.blog-v2>main>section>div>ul+p{order:6}.blog-v2>main>section>div>#bv2-start-panel+p{order:7}.blog-v2>main>section>div>#blog-final{order:8}.blog-v2 .bv2-card p,.blog-v2 #bv2-start-panel p,.blog-v2 #bv2-start-panel ol a,.blog-v2 .bv2-panel p,.blog-v2 .bv2-prose th,.blog-v2 .bv2-prose td,.blog-v2 article>header+div+p[role=note],.blog-v2 details>div{font-size:16px}.blog-v2>main>section>div>p[data-rv],.blog-v2 article>p:last-of-type{font-size:16px;line-height:1.55}.blog-v2 nav ol a,.blog-v2 nav ol span[aria-current]{justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.blog-v2 nav[aria-label] ol{font-size:16px}.blog-v2 .bv2-toc-link{min-height:44px;padding-top:10px;padding-bottom:10px;font-size:16px}.blog-v2 #bv2-start-panel ol a{min-height:48px}.blog-v2 .bv2-share a,.blog-v2 .bv2-share button{min-height:44px}.blog-v2>main>section>div>p[data-rv] a{align-items:center;min-height:44px;display:inline-flex}.blog-v2 .bv2-prose a{padding-top:2px;padding-bottom:2px;display:inline-block;position:relative}.blog-v2 .bv2-prose a:after{content:"";height:44px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.blog-v2 a,.blog-v2 button,.blog-v2 summary{-webkit-tap-highlight-color:transparent}.blog-v2 .bv2-card:active{border-color:var(--bv2-border-hover)}.blog-v2 .bv2-tab:active{background:#ffffff12!important}.blog-v2 .bv2-input{min-height:48px;font-size:17px}.blog-v2 .bv2-read-progress{top:var(--pv2-topbar-h,71px);z-index:99991;pointer-events:none;background:#ffffff0f;height:2px;position:fixed;left:0;right:0}.blog-v2 .bv2-read-progress-fill{transform-origin:0;will-change:transform;background:linear-gradient(90deg,#5ee7ff,#4f7cff,#9b6bff);height:100%;transform:scaleX(0)}.blog-v2 .bv2-toc-link[aria-current=true]{font-weight:600}.blog-v2 .bv2-card>a{grid-template-columns:minmax(0,1fr)}.blog-v2{min-height:100svh}}@media (max-width:767px){.blog-v2 #bv2-tabs{scroll-snap-type:x proximity;scrollbar-width:none;flex-wrap:nowrap;margin-inline:-20px;padding-block:4px;padding-inline:20px 24px;scroll-padding-inline:20px 24px;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000)}.blog-v2 #bv2-tabs::-webkit-scrollbar{display:none}.blog-v2 .bv2-tab{scroll-snap-align:start;flex:none}}@media (min-width:480px) and (max-width:1023px){.blog-v2>main>section>div>ul{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px;display:grid}.blog-v2 .bv2-card>a{grid-template-columns:minmax(0,1fr)}}@media (min-width:744px) and (max-width:1023px){.blog-v2 #bv2-grid>a{grid-template-columns:1fr 1fr}}@media (max-width:479px){.blog-v2 .bv2-prose{font-size:17px;line-height:1.7}.blog-v2 .bv2-prose>p:first-child{font-size:18px;line-height:1.6}.blog-v2 .bv2-prose>h2{font-size:clamp(24px,6.6vw,28px);line-height:1.15}.blog-v2 .bv2-prose>h3{font-size:20px;line-height:1.25}.blog-v2 .bv2-title{letter-spacing:-.02em;text-wrap:balance;font-size:clamp(28px,8.2vw,34px);line-height:1.08}.blog-v2 article>header>p:nth-of-type(2){font-size:18px;line-height:1.5}.blog-v2 .bv2-card h2{font-size:22px;line-height:1.2}.blog-v2 .bv2-card h3{font-size:19px;line-height:1.25}.blog-v2 .bv2-card p.bv2-meta{font-size:12px}.blog-v2 .bv2-card div.bv2-meta{font-size:13px}.blog-v2 #bv2-start-panel h2{font-size:18px}.blog-v2 .bv2-btn-ghost{justify-content:center;width:100%;display:flex}.blog-v2 .bv2-share a,.blog-v2 .bv2-share button{justify-content:center;width:100%}.blog-v2 .bv2-panel form>button{width:100%}}@media (max-width:1023px){@supports (min-height:100svh){.blog-v2{min-height:100svh}}.blog-v2 .bv2-meta,.blog-v2 li.bv2-mono{font-size:12px}}