:root{--color-bg:#f5f5f5;--page-bg-image:radial-gradient(circle at 95% -8%, #0078d447, transparent 42%), radial-gradient(circle at -8% 108%, #60cdff33, transparent 40%), radial-gradient(circle at 20% 40%, #8764b829, transparent 32%), radial-gradient(circle at 50% 15%, #00b7c324, transparent 26%);--color-text:#242424;--color-text-secondary:#616161;--color-surface:#ffffffb8;--color-surface-solid:#fff;--color-surface-hover:#ffffffe0;--color-border:#0000000f;--hover-fill:#0000000a;--fluent-primary:#0078d4;--fluent-primary-hover:#106ebe;--page-width-listing:960px;--page-width-grid:960px;--page-width-article:960px;--font-mono:"Cascadia Code Variable", "Cascadia Code", "Cascadia Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;--code-bg:#0000000a;--code-inline-color:#c7254e;--pre-bg:#ffffff6b;--pre-border:#0f17201a;--glass-card:#ffffff6b;--motion:.22s cubic-bezier(.16, 1, .3, 1);--bq-bg:#0078d40a;--bq-bar:var(--fluent-primary);--note-color:#0078d4;--note-bg:#0078d40f;--tip-color:#107c10;--tip-bg:#107c100f;--warning-color:#d83b01;--warning-bg:#d83b010f;--important-color:#8764b8;--important-bg:#8764b80f;--caution-color:#a4262c;--caution-bg:#a4262c0f;--scrollbar-bg:#0006;--scrollbar-bg-hover:#00000080;--scrollbar-bg-active:#0009}html[data-theme=dark]{--color-bg:#1a1a1a;--page-bg-image:radial-gradient(circle at 95% -8%, #60cdff24, transparent 42%), radial-gradient(circle at -8% 108%, #0078d41a, transparent 40%), radial-gradient(circle at 20% 40%, #8764b81a, transparent 32%), radial-gradient(circle at 50% 15%, #00b7c314, transparent 26%);--color-text:#e8e8e8;--color-text-secondary:#a0a0a0;--color-surface:#ffffff0a;--color-surface-solid:#2d2d2d;--color-surface-hover:#ffffff12;--color-border:#ffffff12;--hover-fill:#ffffff0f;--fluent-primary:#60cdff;--fluent-primary-hover:#98dcff;--code-bg:#ffffff0f;--code-inline-color:#f78c6c;--pre-bg:#161b2294;--pre-border:#ffffff14;--glass-card:#2424247a;--bq-bg:#60cdff0f;--note-color:#60cdff;--note-bg:#60cdff14;--tip-color:#6ccb5f;--tip-bg:#6ccb5f14;--warning-color:#f7630c;--warning-bg:#f7630c14;--important-color:#b4a0ff;--important-bg:#b4a0ff14;--caution-color:#ff6767;--caution-bg:#ff676714;--scrollbar-bg:#fff6;--scrollbar-bg-hover:#ffffff80;--scrollbar-bg-active:#fff9}*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html[data-custom-scrollbar],html[data-custom-scrollbar] body,html[data-custom-scrollbar] .blog-sidebar,html[data-custom-scrollbar] .toc-body,html[data-custom-scrollbar] .code-block-wrapper pre,html[data-custom-scrollbar] .prose pre,html[data-custom-scrollbar] .prose .katex-display{scrollbar-width:none}html[data-custom-scrollbar]::-webkit-scrollbar{width:0;height:0;display:none}html[data-custom-scrollbar] body::-webkit-scrollbar{width:0;height:0;display:none}html[data-custom-scrollbar] .blog-sidebar::-webkit-scrollbar{width:0;height:0;display:none}html[data-custom-scrollbar] .toc-body::-webkit-scrollbar{width:0;height:0;display:none}html[data-custom-scrollbar] .code-block-wrapper pre::-webkit-scrollbar{width:0;height:0;display:none}html[data-custom-scrollbar] .prose pre::-webkit-scrollbar{width:0;height:0;display:none}html[data-custom-scrollbar] .prose .katex-display::-webkit-scrollbar{width:0;height:0;display:none}html.is-scrollbar-drag{scroll-behavior:auto!important}#custom-scrollbar-root{pointer-events:none}.custom-scrollbar{z-index:1100;box-sizing:border-box;pointer-events:none;opacity:0;padding:4px;transition:opacity .2s;position:fixed}.custom-scrollbar.is-visible,.custom-scrollbar.is-hovered,.custom-scrollbar.is-dragging{pointer-events:auto;opacity:1}.custom-scrollbar-handle{background:var(--scrollbar-bg);touch-action:none;border-radius:999px;transition:width .2s,height .2s,background-color .15s}.custom-scrollbar-y .custom-scrollbar-handle{width:4px;margin-inline:auto}.custom-scrollbar-x .custom-scrollbar-handle{height:4px;margin-block:auto}.custom-scrollbar-y.is-hovered .custom-scrollbar-handle,.custom-scrollbar-y:hover .custom-scrollbar-handle{background:var(--scrollbar-bg-hover);width:8px}.custom-scrollbar-x.is-hovered .custom-scrollbar-handle,.custom-scrollbar-x:hover .custom-scrollbar-handle{background:var(--scrollbar-bg-hover);height:8px}.custom-scrollbar-handle:active{background:var(--scrollbar-bg-active)}@media (prefers-reduced-motion:reduce){.custom-scrollbar,.custom-scrollbar-handle{transition:none}}aside img{max-width:100%;height:auto;display:block}@view-transition{navigation:none}html{background-color:var(--color-bg);background-image:var(--page-bg-image);background-attachment:fixed;transition:background-color .35s}html[data-scroll-behavior=smooth]{scroll-behavior:smooth}::view-transition{pointer-events:none!important}::view-transition-group(*){pointer-events:none!important}::view-transition-image-pair(*){pointer-events:none!important}::view-transition-old(*){pointer-events:none!important}::view-transition-new(*){pointer-events:none!important}html:active-view-transition-type(theme)::view-transition-old(root){animation-duration:.35s;animation-timing-function:ease}html:active-view-transition-type(theme)::view-transition-new(root){animation-duration:.35s;animation-timing-function:ease}html:not(:active-view-transition-type(theme))::view-transition-old(root){animation:none}html:not(:active-view-transition-type(theme))::view-transition-new(root){animation:none}::view-transition-group(site-bg){z-index:20;animation:none}::view-transition-group(site-sidebar){z-index:20;animation:none}::view-transition-old(site-bg){display:none}::view-transition-old(site-sidebar){display:none}::view-transition-new(site-bg){animation:none}::view-transition-new(site-sidebar){animation:none}.post-article-body{--fade-y:14px;animation:.5s cubic-bezier(.16,1,.3,1) 80ms both fade-in-up}.reading-progress{z-index:2001;pointer-events:none;flex-shrink:0;width:100%;height:2px;margin-bottom:-2px;position:sticky;top:0}.reading-progress-bar{transform-origin:0;background:var(--fluent-primary);width:100%;height:100%;box-shadow:0 0 8px color-mix(in srgb, var(--fluent-primary) 50%, transparent);transition:transform .36s cubic-bezier(.16,1,.3,1);transform:scaleX(0)}@media (prefers-reduced-motion:reduce){.reading-progress-bar,html{transition:none}html[data-scroll-behavior=smooth]{scroll-behavior:auto}::view-transition-old(*){animation-duration:.01ms!important;animation-delay:0s!important}::view-transition-new(*){animation-duration:.01ms!important;animation-delay:0s!important}::view-transition-group(*){animation-duration:.01ms!important;animation-delay:0s!important}}html[data-page-enter=handoff] .page-shell,html[data-page-enter=handoff] .fade-in,html[data-page-enter=handoff] .stagger-in-item,html[data-page-enter=handoff] .post-article-body{animation:none!important}html[data-page-enter=handoff] .page-shell{opacity:var(--page-enter-opacity,1);transform:translateY(var(--page-enter-y,0px))}html[data-page-enter=morph] .page-shell,html[data-page-enter=morph] .fade-in,html[data-page-enter=morph] .stagger-in-item{opacity:1!important;animation:none!important;transform:none!important}html[data-card-morph=expand] [data-card-morph-frame] [data-card-morph-title]{visibility:hidden!important}html[data-card-morph=expand] .post-back-slot{min-height:28px}.post-back-slot{align-items:flex-start;display:flex}.fade-in{animation-name:fade-in-up;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:both}@keyframes fade-in-up{0%{opacity:0;transform:translateY(var(--fade-y,12px))}to{opacity:1;transform:none}}::selection{color:inherit;background:#0078d440}html[data-theme=dark] ::selection{color:inherit;background:#60cdff4d}body{color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#0000;margin:0;padding:0;font-family:MiSans VF,MiSans,Segoe UI Variable,Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px;transition:background-color .25s,color .25s;overflow-x:clip}.fluent-bg{z-index:0;pointer-events:none;contain:paint;view-transition-name:site-bg;position:fixed;inset:0;overflow:hidden}.fluent-orb{border-radius:50%;transition:background .35s;position:absolute}.fluent-orb:after{content:"";border-radius:inherit;background:inherit;filter:blur(80px);position:absolute;inset:0}.fluent-wash:after{filter:blur(60px)}.fluent-wash-1{background:radial-gradient(circle,#0078d447 0%,#0000 70%);width:45vw;max-width:700px;height:45vw;max-height:700px;animation:30s ease-in-out infinite alternate drift1;top:-8%;right:-5%}.fluent-wash-2{background:radial-gradient(circle,#60cdff33 0%,#0000 70%);width:40vw;max-width:600px;height:40vw;max-height:600px;animation:35s ease-in-out infinite alternate drift2;bottom:-5%;left:-8%}.fluent-orb-1{background:radial-gradient(circle,#8764b82e 0%,#0000 70%);width:30vw;max-width:500px;height:30vw;max-height:500px;animation:25s ease-in-out infinite alternate drift3;top:40%;left:20%}.fluent-orb-2{background:radial-gradient(circle,#00b7c326 0%,#0000 70%);width:25vw;max-width:380px;height:25vw;max-height:380px;animation:28s ease-in-out infinite alternate drift4;top:15%;left:50%}.fluent-orb-3{background:radial-gradient(circle,#0078d41f 0%,#0000 70%);width:20vw;max-width:320px;height:20vw;max-height:320px;animation:22s ease-in-out infinite alternate drift5;bottom:20%;right:15%}.fluent-orb-4{background:radial-gradient(circle,#60cdff1a 0%,#0000 70%);width:35vw;max-width:550px;height:35vw;max-height:550px;animation:32s ease-in-out infinite alternate drift6;top:60%;right:30%}html[data-theme=dark] .fluent-wash-1{background:radial-gradient(circle,#60cdff24 0%,#0000 70%)}html[data-theme=dark] .fluent-wash-2{background:radial-gradient(circle,#0078d41a 0%,#0000 70%)}html[data-theme=dark] .fluent-orb-1{background:radial-gradient(circle,#b4a0ff1a 0%,#0000 70%)}html[data-theme=dark] .fluent-orb-2{background:radial-gradient(circle,#00b7c314 0%,#0000 70%)}html[data-theme=dark] .fluent-orb-3{background:radial-gradient(circle,#60cdff14 0%,#0000 70%)}html[data-theme=dark] .fluent-orb-4{background:radial-gradient(circle,#0078d40f 0%,#0000 70%)}@keyframes drift1{0%{transform:translate(0)}50%{transform:translate(-40px,30px)}to{transform:translate(20px,-15px)}}@keyframes drift2{0%{transform:translate(0)}50%{transform:translate(30px,-25px)}to{transform:translate(-15px,20px)}}@keyframes drift3{0%{transform:translate(0)scale(1)}33%{transform:translate(60px,-40px)scale(1.1)}66%{transform:translate(-30px,50px)scale(.9)}to{transform:translate(40px,20px)scale(1.05)}}@keyframes drift4{0%{transform:translate(0)scale(1)}25%{transform:translate(-50px,35px)scale(1.08)}50%{transform:translate(40px,-20px)scale(.95)}75%{transform:translate(-20px,-45px)scale(1.12)}to{transform:translate(30px,25px)scale(1)}}@keyframes drift5{0%{transform:translate(0)scale(1)}50%{transform:translate(-45px,-30px)scale(1.15)}to{transform:translate(35px,40px)scale(.92)}}@keyframes drift6{0%{transform:translate(0)scale(1)}40%{transform:translate(50px,-35px)scale(.9)}80%{transform:translate(-40px,30px)scale(1.1)}to{transform:translate(10px,-10px)scale(1)}}.acrylic-card{background:var(--color-surface);-webkit-backdrop-filter:blur(20px)saturate(150%);backdrop-filter:blur(20px)saturate(150%);border:1px solid var(--color-border);border-radius:12px;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s cubic-bezier(.16,1,.3,1),background .15s}.soft-hover{background:0 0;transition:background .2s,box-shadow .2s,transform .2s cubic-bezier(.16,1,.3,1),border-color .2s}.soft-hover:hover{background:var(--hover-fill);border-color:var(--color-border);transform:translateY(-1px);box-shadow:0 2px 12px #0000000d}html[data-theme=dark] .soft-hover:hover{box-shadow:0 2px 14px #00000047}.mobile-only-header{background:var(--color-surface);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);z-index:100;border-bottom:1px solid var(--color-border);align-items:center;padding:8px 12px;display:flex;position:sticky;top:0}.content-area{flex:1;padding:24px 48px;transition:padding .22s cubic-bezier(.16,1,.3,1)}.stagger-in-item{animation-name:fade-in-up;animation-duration:.5s;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:both;animation-delay:calc(60ms + var(--i,0) * 70ms)}.page-shell{max-width:var(--page-width-listing);--fade-y:12px;flex-direction:column;gap:24px;width:100%;margin:0 auto;transition:gap .22s cubic-bezier(.16,1,.3,1);animation:.6s cubic-bezier(.16,1,.3,1) both fade-in-up;display:flex}.post-card{contain:paint;transition:transform .22s cubic-bezier(.16,1,.3,1),box-shadow .22s cubic-bezier(.16,1,.3,1)}.page-shell-grid{max-width:var(--page-width-grid);gap:24px}.page-shell-article{max-width:var(--page-width-article);gap:28px}.page-header{flex-direction:column;align-items:stretch;gap:6px;width:100%;padding-bottom:12px;display:flex}.page-header-rule{background:#0f172029;border:none;width:100%;height:1px;margin:0}html[data-theme=dark] .page-header-rule{background:#ffffff29}.page-header-back{color:var(--color-text-secondary);border-radius:6px;align-items:center;gap:6px;margin:0 0 2px;padding:6px 0;font-size:14px;font-weight:500;line-height:1.2;text-decoration:none;display:inline-flex}.page-header-back:hover{color:var(--color-text);background:var(--hover-fill)}.post-back.fui-Button{min-width:0;height:28px;color:var(--color-text-secondary);align-self:flex-start;margin:0;padding:0 8px;font-size:13px;font-weight:500}.post-back.fui-Button:hover{color:var(--color-text)}[data-card-morph-title],.card-morph-title{text-box-trim:none;line-height:1.3!important;overflow:visible!important}.card-morph-title{pointer-events:none;position:fixed;height:auto!important;max-height:none!important}.card-morph-layer{pointer-events:none;z-index:40;width:0;height:0;position:fixed;top:0;left:0;overflow:visible;transform:none}.cat-fold{grid-template-rows:0fr;transition:grid-template-rows .35s cubic-bezier(.16,1,.3,1);display:grid}.cat-fold.is-open{grid-template-rows:1fr}.cat-fold-inner{min-height:0;overflow:hidden}.sidebar-nav-btn.fui-Button{background-color:#0000;column-gap:0;padding-inline:10px}.blog-sidebar .fui-Button{background-color:#0000}.blog-sidebar .fui-Button:hover,.blog-sidebar .fui-Button:hover:active,.blog-sidebar .fui-Button.enabled:hover{background-color:color-mix(in srgb, var(--color-text) 6%, transparent)!important}.blog-sidebar .fui-Button__icon{flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;margin:0!important;margin-inline:0!important;display:inline-flex!important}.blog-sidebar .fui-Button__icon svg{width:24px;height:24px;display:block}.blog-sidebar nav{z-index:0;position:relative}.sidebar-profile{overflow:hidden}.sidebar-profile-inner{transform-origin:top;transition:opacity .28s cubic-bezier(.16,1,.3,1)}.sidebar-profile.is-fading .sidebar-profile-inner{opacity:0}.blog-sidebar.no-motion .sidebar-profile-inner{transition:none}.sidebar-nav-btn.is-icon-only.fui-Button,html:not([data-sidebar-ready])[data-sidebar=collapsed] .blog-sidebar .sidebar-nav-btn.fui-Button,html:not([data-sidebar-ready])[data-sidebar=collapsed] .blog-sidebar .fui-Button{justify-content:center!important;align-items:center!important;gap:0!important;width:44px!important;min-width:44px!important;max-width:44px!important;height:44px!important;margin-inline:auto!important;padding:0!important}.sidebar-nav-btn.is-icon-only .sidebar-nav-text,.sidebar-nav-btn.is-icon-only .fui-Button__content{overflow:hidden;width:0!important;min-width:0!important;max-width:0!important;margin:0!important;padding:0!important;display:none!important}.blog-sidebar{view-transition-name:site-sidebar}html:not([data-sidebar-boot]) .blog-sidebar{visibility:hidden}html:not([data-sidebar-ready])[data-sidebar=collapsed] .blog-sidebar{width:72px!important;padding-left:14px!important;padding-right:14px!important;transition:none!important}html:not([data-sidebar-ready])[data-sidebar=collapsed] .blog-sidebar .sidebar-profile{opacity:0!important;max-height:0!important;margin-top:0!important;transition:none!important;overflow:hidden!important}html:not([data-sidebar-ready])[data-sidebar=collapsed] .blog-sidebar .sidebar-nav-text{opacity:0!important;max-width:0!important;transition:none!important}html[data-sidebar-mobile] .blog-sidebar{width:280px!important;box-shadow:none!important;position:fixed!important;left:0!important;transform:translate(-100%)!important}html[data-sidebar-mobile] .blog-sidebar.is-open{transform:none!important;box-shadow:4px 0 24px #00000026!important}html:not([data-sidebar-ready])[data-sidebar-mobile] .blog-sidebar{transition:none!important}.home-search{width:100%;max-width:520px}.home-search .fui-Input{background:var(--color-surface);-webkit-backdrop-filter:blur(16px)saturate(140%);border:1px solid var(--color-border);border-radius:12px;transition:background .22s cubic-bezier(.16,1,.3,1),border-color .22s cubic-bezier(.16,1,.3,1),box-shadow .22s cubic-bezier(.16,1,.3,1),transform .22s cubic-bezier(.16,1,.3,1);box-shadow:0 1px 2px #0000000a,0 4px 14px #0000000a}.home-search .fui-Input:after{content:none;border:none;display:none}.home-search:hover .fui-Input,.home-search .fui-Input:hover{border-color:color-mix(in srgb, var(--fluent-primary) 50%, var(--color-border));box-shadow:0 0 0 1px color-mix(in srgb, var(--fluent-primary) 35%, transparent), 0 8px 22px #0078d41f;background:color-mix(in srgb, var(--color-surface) 70%, #fff);transform:translateY(-1px)}.home-search .fui-Input:focus-within{border-color:var(--fluent-primary);box-shadow:0 0 0 1px var(--fluent-primary), 0 8px 22px #0078d424;transform:translateY(-1px)}html[data-theme=dark] .home-search .fui-Input{box-shadow:0 1px 2px #0003}html[data-theme=dark] .home-search:hover .fui-Input,html[data-theme=dark] .home-search .fui-Input:hover,html[data-theme=dark] .home-search .fui-Input:focus-within{background:color-mix(in srgb, var(--color-surface) 80%, #000);box-shadow:0 0 0 1px color-mix(in srgb, var(--fluent-primary) 45%, transparent), 0 8px 22px #00000059}.toc-fab-root{z-index:1000;justify-content:flex-end;align-items:flex-end;display:flex;position:fixed;bottom:40px;right:40px;transform:none}@media (max-width:768px){.toc-fab-root{bottom:24px;right:24px}}.toc-shell{transform-origin:100% 100%;border:1px solid var(--color-border);background:0 0;border-radius:16px;max-height:60vh;position:relative;overflow:hidden;box-shadow:0 10px 28px #0000001a}.toc-shell-glass{z-index:0;border-radius:inherit;-webkit-backdrop-filter:blur(36px)saturate(180%);backdrop-filter:blur(36px)saturate(180%);pointer-events:none;background:#ffffff9e;position:absolute;inset:0}html[data-theme=dark] .toc-shell-glass{background:#1c1c1c94}.toc-shell .toc-body,.toc-shell .toc-icon-btn{z-index:1}.toc-icon-btn{z-index:2;width:52px;height:52px;color:var(--fluent-primary);cursor:pointer;background:0 0;border:none;border-radius:16px;justify-content:center;align-items:center;padding:0;line-height:0;display:flex;position:absolute;bottom:0;right:0}.toc-icon-btn:hover{background:var(--hover-fill)}.toc-icon-swap{width:24px;height:24px;display:block;position:relative}.toc-icon-swap-item{justify-content:center;align-items:center;transition:opacity .2s cubic-bezier(.16,1,.3,1),transform .2s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;inset:0}.toc-icon-list{opacity:1;transform:rotate(0)scale(1)}.toc-icon-close{opacity:0;transform:rotate(-90deg)scale(.4)}.toc-icon-swap.is-open .toc-icon-list{opacity:0;transform:rotate(90deg)scale(.4)}.toc-icon-swap.is-open .toc-icon-close{opacity:1;transform:rotate(0)scale(1)}.toc-body{opacity:0;pointer-events:none;width:300px;max-height:calc(60vh - 52px);padding:14px 16px 8px 18px;transition:opacity .2s cubic-bezier(.4,0,.2,1);position:absolute;inset:0 0 52px;overflow-y:auto}.toc-shell.is-open .toc-body{opacity:1;pointer-events:auto;transition-delay:40ms}.toc-title{color:var(--color-text);margin-bottom:10px;font-size:16px;font-weight:600}.theme-menu-popover{z-index:2000;border:1px solid var(--color-border);transform-origin:0 0;pointer-events:none;opacity:0;visibility:hidden;background:0 0;border-radius:8px;min-width:168px;padding:4px;transition:transform .16s cubic-bezier(.16,1,.3,1),opacity .16s cubic-bezier(.16,1,.3,1),visibility 0s linear .16s;position:fixed;transform:scale(.96)translate(-6px);box-shadow:0 8px 24px #0000001f}.theme-menu-glass{z-index:0;border-radius:inherit;-webkit-backdrop-filter:blur(32px)saturate(180%);backdrop-filter:blur(32px)saturate(180%);pointer-events:none;background:#ffffff9e;position:absolute;inset:0}html[data-theme=dark] .theme-menu-glass{background:#24242494}.theme-menu-popover>:not(.theme-menu-glass){z-index:1;position:relative}.theme-menu-popover.is-open{opacity:1;pointer-events:auto;visibility:visible;transition:transform .18s cubic-bezier(.16,1,.3,1),opacity,visibility;transform:none}.theme-menu-item{width:100%;color:var(--color-text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;padding:8px 10px 8px 4px;font-size:14px;display:flex}.theme-menu-item:hover,.theme-menu-item:focus-visible{background:var(--hover-fill);outline:none}.theme-menu-check{width:16px;height:16px;color:var(--fluent-primary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.archive-post-tags{flex-shrink:0;gap:6px;display:flex}@media (max-width:640px){.archive-post-tags{display:none}}.mobile-overlay{z-index:999;cursor:pointer;opacity:0;pointer-events:none;background:#0006;border:none;margin:0;padding:0;transition:opacity .35s cubic-bezier(.16,1,.3,1);position:fixed;inset:0}.mobile-overlay.is-open{opacity:1;pointer-events:auto}@media (min-width:769px){.mobile-only-header,.mobile-overlay{display:none}}@media (max-width:768px){.content-area{padding:20px 16px}.blog-sidebar{left:0;position:fixed!important}.blog-sidebar.no-motion{transition:none!important}}.prose{word-break:break-word;color:var(--color-text);font-size:16.5px;line-height:1.75}.prose>:first-child{margin-top:0}.prose h1,.prose h2,.prose h3,.prose h4{scroll-margin-top:24px}.prose h1{letter-spacing:-.02em;margin:2em 0 .6em;font-size:26px;font-weight:600;line-height:1.3}.prose h2{border-bottom:1px solid var(--color-border);margin:1.8em 0 .5em;padding-bottom:8px;font-size:22px;font-weight:600;line-height:1.35}.prose h3{margin:1.5em 0 .4em;font-size:18px;font-weight:600;line-height:1.4}.prose h4{margin:1.3em 0 .4em;font-size:15px;font-weight:600}.prose p{margin:0 0 16px}.prose strong{font-weight:600}.prose a{color:var(--fluent-primary);text-decoration:none}.prose a:hover{color:var(--fluent-primary-hover);text-decoration:underline}.prose img{border-radius:6px;max-width:100%;margin:16px 0}.prose kbd{text-align:center;min-width:1.4em;color:var(--color-text);background:var(--color-surface-solid);border:1px solid var(--color-border);border-bottom-width:2px;border-radius:4px;padding:1px 6px;font-size:.85em;line-height:1.4;display:inline-block}.prose mark{color:inherit;background:#ffd60a59;border-radius:3px;padding:.1em .28em}html[data-theme=dark] .prose mark{background:#ffd60a38}code,kbd,samp,pre{font-family:var(--font-mono);font-variant-ligatures:none;font-synthesis:none}.prose :not(pre)>code{background:var(--code-bg);color:var(--code-inline-color);font-family:var(--font-mono);word-break:break-word;border-radius:3px;padding:2px 6px;font-size:.92em}.code-block-wrapper{background:var(--pre-bg);border:1px solid var(--pre-border);-webkit-backdrop-filter:blur(20px)saturate(140%);border-radius:10px;margin:16px 0;position:relative;overflow:hidden}.code-lang-badge{font-size:11px;font-family:var(--font-mono);color:var(--color-text-secondary);background:var(--code-bg);z-index:2;pointer-events:none;letter-spacing:.02em;text-transform:uppercase;opacity:.7;-webkit-user-select:none;user-select:none;border-radius:6px 0;padding:2px 10px;position:absolute;top:0;left:0}.copy-btn{width:32px;height:32px;color:var(--color-text-secondary);cursor:pointer;opacity:0;-webkit-user-select:none;user-select:none;z-index:3;background:#0000000f;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:opacity .15s,background .15s,transform .1s;display:flex;position:absolute;top:8px;right:8px}html[data-theme=dark] .copy-btn{background:#ffffff14}.code-block-wrapper:has(.code-lang-badge):not(.has-steps) pre{padding-top:28px}.code-block-wrapper:hover .copy-btn{opacity:1}.copy-btn:hover{color:var(--color-text);background:#0000001a}html[data-theme=dark] .copy-btn:hover{background:#ffffff26}.copy-btn:active{transform:scale(.9)}.copy-btn.success{background:var(--fluent-primary);color:#fff;opacity:1}.copy-btn-icon{width:14px;height:14px}.prose pre code span{color:var(--shiki-light);font-family:inherit}html[data-theme=dark] .prose pre code span{color:var(--shiki-dark)}.prose pre{border:1px solid var(--pre-border);tab-size:4;font-size:14.5px;line-height:1.7;font-family:var(--font-mono);background:0 0;border-radius:10px;margin:0;padding:16px 20px;position:relative;overflow-x:auto}.code-block-wrapper pre{-webkit-user-select:text;user-select:text;background:0 0;border:none;border-radius:0}.code-block-wrapper pre code,.code-block-wrapper pre code span{-webkit-user-select:text;user-select:text}.prose>pre{margin:16px 0}.prose pre code{color:inherit;font-size:inherit;counter-reset:line;background:0 0;border-radius:0;padding:0;font-family:inherit;display:block}.prose pre code>[data-line]{width:max-content;min-width:100%;min-height:24.65px;padding-left:0;display:block}.prose pre code[data-line-numbers]>[data-line]:before{counter-increment:line;content:counter(line);text-align:right;color:#80808066;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;width:2ch;margin-right:16px;display:inline-block}.prose pre code>[data-line][data-highlighted-line]{border-left:3px solid var(--fluent-primary);background:#0078d40f;width:100%;padding-left:calc(1em - 3px)}html[data-theme=dark] .prose pre code>[data-line][data-highlighted-line]{background:#60cdff0f}.prose [data-highlighted-chars]{border-bottom:2px solid var(--fluent-primary);background:#0078d414;border-radius:3px;padding:1px 3px}html[data-theme=dark] .prose [data-highlighted-chars]{background:#60cdff14}.prose figure[data-rehype-pretty-code-figure]{border:1px solid var(--pre-border);background:var(--pre-bg);border-radius:10px;margin:16px 0;overflow:hidden}.prose figure[data-rehype-pretty-code-figure]>pre,.prose figure[data-rehype-pretty-code-figure] .code-block-wrapper{background:0 0;border:none;border-radius:0;margin:0}.prose figcaption[data-rehype-pretty-code-title]{background:var(--code-bg);font-size:12px;font-family:var(--font-mono);color:var(--color-text-secondary);border:none;border-radius:0;padding:8px 16px}.prose figcaption[data-rehype-pretty-code-title]+pre{border-radius:0}.code-steps{z-index:4;pointer-events:none;position:absolute;top:0;left:0;right:0}.code-block-wrapper.has-line-numbers .code-step-label{left:3.6em}.code-step-label{pointer-events:auto;cursor:text;-webkit-user-select:text;user-select:text;width:max-content;max-width:calc(100% - 48px);font-size:13px;font-family:var(--font-mono);color:var(--fluent-primary);white-space:nowrap;background:#0078d414;border-radius:3px;padding:1px 8px;font-weight:500;line-height:1.5;position:absolute;left:16px}html[data-theme=dark] .code-step-label{background:#60cdff1a}.prose blockquote{background:var(--bq-bg);color:inherit;border:none;border-radius:0 6px 6px 0;margin:16px 0;padding:12px 16px 12px 20px;position:relative}.prose blockquote:before{content:"";background:var(--bq-bar);border-radius:4px 0 0 4px;width:4px;position:absolute;top:0;bottom:0;left:0}.prose blockquote p{margin:4px 0}.prose blockquote p:last-child{margin-bottom:0}.prose .callout{border-radius:0 6px 6px 0;margin:20px 0;padding:14px 16px 14px 20px;font-size:14px;line-height:1.6;position:relative}.prose .callout:before{content:"";border-radius:4px 0 0 4px;width:4px;position:absolute;top:0;bottom:0;left:0}.prose .callout-title{text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:6px;margin-bottom:6px;font-size:13px;font-weight:600;display:flex}.prose .callout-note{background:var(--note-bg)}.prose .callout-note:before{background:var(--note-color)}.prose .callout-note .callout-title{color:var(--note-color)}.prose .callout-tip{background:var(--tip-bg)}.prose .callout-tip:before{background:var(--tip-color)}.prose .callout-tip .callout-title{color:var(--tip-color)}.prose .callout-warning{background:var(--warning-bg)}.prose .callout-warning:before{background:var(--warning-color)}.prose .callout-warning .callout-title{color:var(--warning-color)}.prose .callout-important{background:var(--important-bg)}.prose .callout-important:before{background:var(--important-color)}.prose .callout-important .callout-title{color:var(--important-color)}.prose .callout-caution{background:var(--caution-bg)}.prose .callout-caution:before{background:var(--caution-color)}.prose .callout-caution .callout-title{color:var(--caution-color)}.prose ul,.prose ol{margin:0 0 16px;padding-left:24px}.prose li{margin-bottom:4px;line-height:1.7}.prose li>p{margin-bottom:4px}.prose ul.contains-task-list{padding-left:4px;list-style:none}.prose .task-list-item{padding-left:0;list-style:none}.prose .task-list-item::marker{content:none}.prose .task-list-item input[type=checkbox]{vertical-align:middle;margin:0 8px 0 0}.prose ul li::marker{color:var(--fluent-primary)}.prose ol li::marker{color:var(--color-text-secondary);font-weight:600}.prose table{border-collapse:collapse;width:100%;margin:16px 0;font-size:13.5px}.prose thead{text-align:left}.prose th{background:var(--code-bg);border:1px solid var(--color-border);padding:10px 14px;font-size:13px;font-weight:600}.prose td{border:1px solid var(--color-border);vertical-align:top;padding:8px 14px}.prose tr:hover td{background:var(--color-surface-hover)}.prose hr{background:var(--color-border);border:none;height:1px;margin:28px 0}.prose .katex-display{padding:4px 0;overflow:auto hidden}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{position:relative}.prose .anchor{opacity:0;color:var(--fluent-primary);margin-left:.3em;font-weight:400;text-decoration:none;transition:opacity .15s}.prose h1:hover .anchor,.prose h2:hover .anchor,.prose h3:hover .anchor,.prose h4:hover .anchor,.prose h5:hover .anchor,.prose h6:hover .anchor{opacity:1}.prose .anchor-icon{vertical-align:middle;font-size:.75em}a.card-github{background:var(--color-surface);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--color-text);border:1px solid var(--color-border);border-radius:8px;margin:16px 0;padding:18px 20px;text-decoration:none;transition:background .15s,transform .15s,box-shadow .15s;display:block;position:relative}a.card-github:hover{background:var(--color-surface-hover);color:var(--color-text);text-decoration:none;transform:translateY(-1px);box-shadow:0 4px 16px #00000014}html[data-theme=dark] a.card-github:hover{box-shadow:0 4px 16px #0000004d}a.card-github:active{transform:scale(.99)}.gc-titlebar{color:var(--color-text);justify-content:space-between;align-items:center;margin-bottom:8px;font-size:16px;font-weight:500;transition:color .15s;display:flex}.gc-titlebar-left{flex-flow:row;align-items:center;gap:6px;display:flex}.gc-repo{font-weight:700}.gc-owner{align-items:center;gap:6px;font-weight:300;display:flex}.gc-divider{color:var(--color-text-secondary);font-weight:300}.gc-avatar{background-color:var(--fluent-primary);background-size:cover;border-radius:50%;flex-shrink:0;width:22px;height:22px;display:block}.gc-description{color:var(--color-text-secondary);margin-bottom:10px;font-size:14px;font-weight:400;line-height:1.5;transition:color .15s}.gc-infobar{color:var(--color-text-secondary);flex-flow:row;gap:20px;display:flex}.gc-stars,.gc-forks,.gc-license,.github-logo{align-items:center;gap:5px;font-size:13px;font-weight:500;transition:color .15s;display:flex}.gc-stars:before,.gc-forks:before,.gc-license:before,.github-logo:before{content:"";background-color:currentColor;flex-shrink:0;width:14px;height:14px;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.gc-stars:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Z'/%3E%3C/svg%3E")}.gc-forks:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z'/%3E%3C/svg%3E")}.gc-license:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z'/%3E%3C/svg%3E")}.github-logo:before{width:18px;height:18px;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 496 512'%3E%3Cpath d='M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 496 512'%3E%3Cpath d='M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8'/%3E%3C/svg%3E")}a.card-github:hover .gc-titlebar,a.card-github:hover .gc-description,a.card-github:hover .gc-stars,a.card-github:hover .gc-forks,a.card-github:hover .gc-license{color:var(--color-text)}a.card-github.fetch-waiting{pointer-events:none;opacity:.7}a.card-github.fetch-waiting .gc-description,a.card-github.fetch-waiting .gc-infobar,a.card-github.fetch-waiting .gc-avatar{background-color:var(--color-text-secondary);color:#0000;opacity:.3;-webkit-user-select:none;user-select:none;border-radius:4px;animation:2s linear infinite gc-pulse}a.card-github.fetch-waiting .gc-description:before,a.card-github.fetch-waiting .gc-infobar:before{background-color:#0000}@keyframes gc-pulse{0%{opacity:.15}50%{opacity:.3}to{opacity:.15}}a.card-github.fetch-error{pointer-events:all;opacity:1}.prose blockquote.admonition{isolation:isolate;overflow:hidden}.prose .admonition .code-block-wrapper,.prose .admonition figure[data-rehype-pretty-code-figure]{z-index:1;margin-bottom:0;position:relative}.prose blockquote.admonition:before{display:none}.prose details,.prose .mdx-details{border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px;margin:16px 0;overflow:hidden}.prose details>summary{cursor:pointer;padding:12px 16px;font-weight:600;list-style:none}.prose details>summary::-webkit-details-marker{display:none}.prose details>summary:before{content:"";width:.42em;height:.42em;transition:transform var(--motion);border-bottom:2px solid;border-right:2px solid;margin-right:8px;display:inline-block;transform:rotate(-45deg)}.prose details[open]>summary:before{transform:rotate(45deg)}.prose details .mdx-details-body{padding:0 16px 14px}.prose details:not(:has(.mdx-details-body))>:not(summary){padding:0 16px 14px}.prose details .mdx-details-body>:last-child,.prose details>:not(summary):last-child{margin-bottom:0}.mdx-tabs{border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px;margin:16px 0;overflow:hidden}.mdx-tablist{border-bottom:1px solid var(--color-border);flex-wrap:wrap;display:flex}.mdx-tab{appearance:none;font:inherit;color:var(--color-text-secondary);cursor:pointer;transition:color var(--motion), border-color var(--motion), background var(--motion);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 16px;font-size:14px;font-weight:500}.mdx-tab:hover{color:var(--color-text);background:var(--hover-fill)}.mdx-tab[aria-selected=true]{color:var(--fluent-primary);border-bottom-color:var(--fluent-primary)}.mdx-tabpanel{padding:12px 16px}:is(.mdx-tabpanel:has(>.code-block-wrapper:only-child),.mdx-tabpanel:has(>figure[data-rehype-pretty-code-figure]:only-child)){padding:0}.mdx-tabpanel>:first-child,.mdx-tabpanel .code-block-wrapper:first-child,.mdx-tabpanel>figure[data-rehype-pretty-code-figure]:first-child{margin-top:0}.mdx-tabpanel>:last-child,.mdx-tabpanel .code-block-wrapper:last-child,.mdx-tabpanel>figure[data-rehype-pretty-code-figure]:last-child{margin-bottom:0}.mdx-tabpanel:has(>.code-block-wrapper:only-child) .code-block-wrapper{border:none;border-radius:0}.mdx-tabpanel:has(>figure[data-rehype-pretty-code-figure]:only-child) .code-block-wrapper{border:none;border-radius:0}.mdx-tabpanel:has(>figure[data-rehype-pretty-code-figure]:only-child) figure[data-rehype-pretty-code-figure]{border:none;border-radius:0}.prose .mdx-steps>ol{counter-reset:mdx-step;margin:16px 0;padding-left:0;list-style:none}.prose .mdx-steps>ol>li{counter-increment:mdx-step;min-height:28px;margin-bottom:14px;padding-left:44px;position:relative}.prose .mdx-steps>ol>li::marker{content:none}.prose .mdx-steps>ol>li:before{content:counter(mdx-step);background:var(--note-bg);width:28px;height:28px;color:var(--note-color);border-radius:50%;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex;position:absolute;top:0;left:0}.prose .mdx-steps>ol>li:not(:last-child):after{content:"";background:var(--color-border);width:2px;position:absolute;top:32px;bottom:-14px;left:13px}.prose .mdx-steps>ol>li>:last-child{margin-bottom:0}.mdx-filetree{border:1px solid var(--color-border);background:var(--color-surface);font-family:var(--font-mono);border-radius:8px;margin:16px 0;padding:12px 16px;font-size:13.5px;line-height:1.7}.prose .mdx-filetree ul,.prose .mdx-filetree .mdx-filetree-list{margin:0;padding-left:0;list-style:none}.prose .mdx-filetree li{margin:0}.prose .mdx-filetree li::marker{content:none}.mdx-filetree-list .mdx-filetree-list{border-left:1px dashed var(--color-border);margin-left:.45em;padding-left:1.15em}.mdx-filetree-toggle,.mdx-filetree-name{font:inherit;color:inherit;align-items:center;gap:6px;display:inline-flex}.mdx-filetree-toggle{appearance:none;cursor:pointer;text-align:left;background:0 0;border:0;padding:0}.mdx-filetree-chevron{width:.38em;height:.38em;transition:transform var(--motion);border-bottom:1.5px solid;border-right:1.5px solid;display:inline-block;transform:rotate(45deg)}.mdx-filetree-toggle[aria-expanded=false] .mdx-filetree-chevron{transform:rotate(-45deg)}.mdx-filetree-chevron-static{opacity:.45}.mdx-filetree-highlight strong{color:var(--fluent-primary);font-weight:600}.mdx-filetree-name code{font-size:inherit;color:inherit;background:0 0;padding:0}.mdx-filetree-placeholder,.mdx-filetree-placeholder .mdx-filetree-name{color:var(--color-text-secondary);opacity:.75}.prose figure.mdx-figure{margin:16px 0}.prose .mdx-figure img,.prose .mdx-gallery img{margin:0}.prose .mdx-figure figcaption{color:var(--color-text-secondary);text-align:center;margin-top:8px;font-size:13px}.mdx-gallery{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin:16px 0;display:grid}.mdx-gallery .mdx-figure,.mdx-gallery .mdx-image-zoom-trigger{margin:0}.mdx-image-zoom-trigger{appearance:none;cursor:zoom-in;background:0 0;border:0;width:100%;padding:0;display:block}.mdx-image-zoom-overlay{z-index:1000;cursor:zoom-out;background:#000000b8;justify-content:center;align-items:center;padding:32px;animation:.22s cubic-bezier(.16,1,.3,1) mdx-zoom-in;display:flex;position:fixed;inset:0}.mdx-image-zoom-img{border-radius:8px;max-width:min(100%,1200px);max-height:90vh;margin:0;box-shadow:0 16px 48px #0006}@keyframes mdx-zoom-in{0%{opacity:0}to{opacity:1}}.mdx-youtube{aspect-ratio:16/9;background:#000;border-radius:8px;margin:16px 0;position:relative;overflow:hidden}.mdx-youtube iframe,.mdx-youtube img{object-fit:cover;border:0;width:100%;height:100%;margin:0}.mdx-youtube-poster{appearance:none;cursor:pointer;background:#000;border:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.mdx-youtube-play{width:68px;height:48px;transition:background var(--motion), transform var(--motion);background:#000000b8;border-radius:12px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.mdx-youtube-play:after{content:"";border:9px solid #0000;border-left:16px solid #fff;border-right-width:0;position:absolute;top:50%;left:52%;transform:translate(-40%,-50%)}.mdx-youtube-poster:hover .mdx-youtube-play{background:red;transform:translate(-50%,-50%)scale(1.04)}.mdx-mermaid{text-align:center;margin:16px 0;overflow-x:auto}.mdx-mermaid svg{max-width:100%;height:auto}.mdx-mermaid-error{margin:16px 0}.mdx-cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px;margin:16px 0;display:grid}.mdx-card{border:1px solid var(--color-border);background:var(--color-surface);color:inherit;transition:background var(--motion), transform var(--motion), box-shadow var(--motion);border-radius:8px;flex-direction:column;gap:6px;padding:16px 18px;text-decoration:none;display:flex}.mdx-card:hover{background:var(--color-surface-hover);transform:translateY(-1px);box-shadow:0 4px 16px #00000014}html[data-theme=dark] .mdx-card:hover{box-shadow:0 4px 16px #0000004d}.mdx-link-card{border:1px solid var(--color-border);background:var(--color-surface);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:inherit;transition:background var(--motion), transform var(--motion), box-shadow var(--motion), border-color var(--motion);border-radius:8px;align-items:center;gap:14px;margin:16px 0;padding:14px 16px;text-decoration:none;display:flex}.mdx-link-card:hover{background:var(--color-surface-hover);border-color:color-mix(in srgb, var(--fluent-primary) 28%, var(--color-border));transform:translateY(-1px);box-shadow:0 4px 16px #00000014}html[data-theme=dark] .mdx-link-card:hover{box-shadow:0 4px 16px #0000004d}.mdx-link-card:active{transform:scale(.99)}.mdx-link-card:focus-visible{outline:2px solid var(--fluent-primary);outline-offset:2px}.mdx-link-card-icon,.mdx-link-card-go{color:var(--fluent-primary);flex-shrink:0;place-items:center;display:grid}.mdx-link-card-icon{background:var(--note-bg);border-radius:10px;width:42px;height:42px}.mdx-link-card-icon:before,.mdx-link-card-go:before,.mdx-link-card-url:before{content:"";background-color:currentColor;display:block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mdx-link-card-icon:before{width:20px;height:20px;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E")}.mdx-link-card.is-internal .mdx-link-card-icon:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpolyline points='14 2 14 8 20 8'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpolyline points='14 2 14 8 20 8'/%3E%3C/svg%3E")}.mdx-link-card-body{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.mdx-link-card-go{background:var(--note-bg);width:32px;height:32px;transition:transform var(--motion), background var(--motion);border-radius:999px}.mdx-link-card-go:before{width:16px;height:16px}.mdx-link-card.is-external .mdx-link-card-go:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17L17 7'/%3E%3Cpath d='M8 7h9v9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17L17 7'/%3E%3Cpath d='M8 7h9v9'/%3E%3C/svg%3E")}.mdx-link-card.is-internal .mdx-link-card-go:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='M13 6l6 6-6 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='M13 6l6 6-6 6'/%3E%3C/svg%3E")}.mdx-link-card.is-external:hover .mdx-link-card-go{transform:translate(2px,-2px)}.mdx-link-card.is-internal:hover .mdx-link-card-go{transform:translate(3px)}.prose a.card-github,.prose a.card-github:hover,.prose a.mdx-card,.prose a.mdx-card:hover,.prose a.mdx-link-card,.prose a.mdx-link-card:hover,.prose a.mdx-post-link{color:inherit;text-decoration:none}.mdx-card-title,.mdx-link-card-title{font-size:15px;font-weight:600}.mdx-link-card-title{color:var(--color-text);letter-spacing:-.01em;transition:color var(--motion);line-height:1.35}.mdx-link-card:hover .mdx-link-card-title{color:var(--fluent-primary)}.mdx-card-desc,.mdx-link-card-desc{color:var(--color-text-secondary);font-size:14px;line-height:1.55}.mdx-link-card-desc{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.mdx-link-card-url{font-size:12px;font-family:var(--font-mono);color:var(--fluent-primary);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;line-height:1.4;display:block;overflow:hidden}.mdx-link-card-url:before{vertical-align:-1px;opacity:.85;width:12px;height:12px;margin-right:6px;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='2' y1='12' x2='22' y2='12'/%3E%3Cpath d='M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='2' y1='12' x2='22' y2='12'/%3E%3Cpath d='M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z'/%3E%3C/svg%3E")}.mdx-card-desc>:last-child,.mdx-link-card-desc>:last-child{margin-bottom:0}.prose a.mdx-post-link{background:var(--note-bg);color:var(--note-color);border-radius:4px;align-items:center;padding:1px 8px;display:inline-flex}.prose a.mdx-post-link:hover{color:var(--fluent-primary-hover);text-decoration:none}.mdx-badge{vertical-align:middle;border-radius:999px;align-items:center;padding:1px 8px;font-size:12px;font-weight:600;line-height:1.6;display:inline-flex}.mdx-badge-note{color:var(--note-color);background:var(--note-bg)}.mdx-badge-tip{color:var(--tip-color);background:var(--tip-bg)}.mdx-badge-important{color:var(--important-color);background:var(--important-bg)}.mdx-badge-warning{color:var(--warning-color);background:var(--warning-bg)}.mdx-badge-caution{color:var(--caution-color);background:var(--caution-bg)}.prose .admonition .mdx-quote{background:color-mix(in srgb, var(--color-text) 4%, transparent);margin:10px 0 0}.prose .admonition .mdx-quote:before{opacity:.28;background:currentColor}.prose .admonition-cite,.prose .mdx-quote-footer{color:var(--color-text-secondary);margin-top:8px;font-size:13px}.prose .admonition-cite{border-top:1px solid color-mix(in srgb, currentColor 14%, transparent);margin-top:12px;padding-top:8px}.prose .admonition-cite cite{font-style:normal;font-weight:600}.prose .mdx-quote.is-cite-only{margin:10px 0 0;padding:8px 14px 8px 16px}.prose .mdx-quote.is-cite-only .mdx-quote-footer{margin-top:0}.prose .mdx-quote-footer cite{font-style:normal;font-weight:600}
