:root{--color-primary:#171717;--color-primary-light:#57534e;--color-primary-dark:#000;--color-bg:#fff;--color-bg-secondary:#f9f7f0;--color-bg-tertiary:#f3f1e8;--color-text:#171717;--color-text-secondary:#78716c;--color-text-tertiary:#a8a29e;--color-border:#e7e5e0;--color-border-light:#f3f1e8;--font-heading:"Inter", sans-serif;--font-body:"Inter", sans-serif;--font-code:"JetBrains Mono", monospace;--sidebar-width:260px;--toc-width:220px;--topbar-height:60px;--content-max-width:768px;--radius:8px;--radius-sm:6px;--color-accent-fg:var(--color-accent);--shadow-sm:0 1px 2px #0000000d;--shadow:0 1px 3px #0000001a, 0 1px 2px #0000000f;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -2px #0000000d;--transition:.15s ease;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--ease-drawer:cubic-bezier(.32, .72, 0, 1);--duration-press:.16s;--duration-ui:.2s;--duration-drawer:.3s;--control-height:36px;--focus-ring:0 0 0 2px var(--color-bg), 0 0 0 4px var(--color-accent-fg);--color-overlay:#17171766;--color-topbar:#ffffffd1;--color-code-bg:#1a1b26;--color-code-fg:#a9b1d6;--ic-1:#7000ff;--ic-2:#ede5ff;--ic-3:#5200cc;--color-accent:#7000ff;--color-accent-light:#9b4dff;--color-accent-subtle:#7000ff14;--color-accent-hover:#5200cc}[data-theme=dark]{--color-bg:#111;--color-bg-secondary:#191919;--color-bg-tertiary:#222;--color-text:#fbfaf5;--color-text-secondary:#a8a29e;--color-text-tertiary:#78716c;--color-border:#2d2d2d;--color-border-light:#222;--color-accent:#7000ff;--color-accent-light:#e2c0ff;--color-accent-subtle:#d4b3ff1f;--color-accent-fg:#d4b3ff;--shadow-sm:0 1px 2px #0000004d;--shadow:0 1px 3px #0006;--shadow-lg:0 10px 15px -3px #00000080;--ic-1:#d4b3ff;--ic-2:#2a1a4e;--ic-3:#b088ff;--color-overlay:#0009;--color-topbar:#111111d1;--color-code-bg:#16161e;--ic-mono:#e7e5e0;--ic-mono-stroke:#a8a29e}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-padding-top:calc(var(--topbar-height) + 24px);background:var(--color-bg);color-scheme:light;-webkit-text-size-adjust:100%}[data-theme=dark]{color-scheme:dark}body{font-family:var(--font-body);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;font-size:15px;line-height:1.7}.ui-icon,.card-arrow,.accordion-chevron{--ic-1:currentColor;--ic-2:transparent}::selection{background:color-mix(in srgb, var(--color-accent) 22%, transparent)}button,select,summary,a{touch-action:manipulation}:focus-visible{outline:2px solid var(--color-accent-fg);outline-offset:2px;border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}@supports (interpolate-size:allow-keywords){:root{interpolate-size:allow-keywords}.nav-group details::details-content,.nav-nested details::details-content,.accordion::details-content{block-size:0;transition:block-size var(--duration-ui) var(--ease-out), content-visibility var(--duration-ui) allow-discrete;overflow-y:clip}.nav-group details[open]::details-content,.nav-nested details[open]::details-content,.accordion[open]::details-content{block-size:auto}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}::view-transition-old(root),::view-transition-new(root){animation-duration:var(--duration-ui);animation-timing-function:ease}.theme-switching *,.theme-switching :before,.theme-switching :after{transition:none!important}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important}.sidebar,.card,.page-nav,.topbar-cta,.theme-toggle,.theme-toggle svg,.image-zoom-button,.image-lightbox-image,.card-arrow{transition-property:opacity,color,background-color,border-color,visibility!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}.language-select-label{align-items:center;display:inline-flex}.language-select{height:var(--control-height);color:var(--color-text-secondary);background:var(--color-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2378716C' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 9px center;border:1px solid var(--color-border);border-radius:var(--radius-sm);font:500 12px var(--font-body);letter-spacing:.02em;cursor:pointer;-webkit-appearance:none;appearance:none;transition:color var(--transition), border-color var(--transition);padding:0 28px 0 10px}@media (hover:hover) and (pointer:fine){.language-select:hover{color:var(--color-text);border-color:var(--color-text-tertiary)}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.translation-notice{color:var(--color-text-secondary);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-left:3px solid var(--color-accent-fg);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin:0 0 24px;padding:12px 16px;font-size:13px;line-height:1.55}.content{margin-left:var(--sidebar-width);margin-right:var(--toc-width);flex:1;justify-content:center;min-width:0;padding:40px 48px 80px;display:flex}.article-shell,.article{width:100%;max-width:var(--content-max-width)}.topbar{height:var(--topbar-height);background:var(--color-topbar);-webkit-backdrop-filter:saturate(180%)blur(12px);border-bottom:1px solid var(--color-border);z-index:100;position:fixed;top:0;left:0;right:0}.topbar-inner{justify-content:space-between;align-items:center;max-width:100%;height:100%;padding:0 24px;display:flex}.topbar-left{align-items:center;gap:16px;display:flex}.topbar-center{align-items:center;gap:4px;display:flex}.topbar-right{align-items:center;gap:8px;display:flex}.topbar-logo{align-items:center;text-decoration:none;display:flex}.topbar-logo svg,.footer-logo svg{width:auto;height:28px}[data-theme=dark] .logo-text,[data-theme=dark] .logo-icon{fill:#fff}.topbar-link{color:var(--color-text-secondary);border-radius:var(--radius-sm);transition:color var(--transition), background var(--transition);padding:6px 12px;font-size:14px;font-weight:500;text-decoration:none}.topbar-cta{height:var(--control-height);color:#fff;background:var(--color-accent);border-radius:var(--radius);white-space:nowrap;transition:background-color var(--transition), transform var(--duration-press) var(--ease-out);align-items:center;padding:0 16px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.topbar-cta:active{transform:scale(.97)}@media (hover:hover) and (pointer:fine){.topbar-link:hover{color:var(--color-text);background:var(--color-bg-secondary)}.topbar-cta:hover{background:var(--color-accent-hover)}}.mobile-menu-btn{width:var(--control-height);height:var(--control-height);cursor:pointer;color:var(--color-text);border-radius:var(--radius-sm);transition:background-color var(--transition), transform var(--duration-press) var(--ease-out);background:0 0;border:none;justify-content:center;align-items:center;margin-left:-8px;display:none}.mobile-menu-btn:active{background:var(--color-bg-secondary);transform:scale(.94)}.mobile-menu-btn svg{transition:opacity var(--duration-ui) var(--ease-out), transform var(--duration-ui) var(--ease-out)}.mobile-menu-btn .menu-icon-close{opacity:0;position:absolute;transform:rotate(-45deg)scale(.6)}.mobile-menu-btn[aria-expanded=true] .menu-icon-open{opacity:0;transform:rotate(45deg)scale(.6)}.mobile-menu-btn[aria-expanded=true] .menu-icon-close{opacity:1;transform:none}.theme-toggle{width:var(--control-height);height:var(--control-height);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text-secondary);transition:color var(--transition), border-color var(--transition), transform var(--duration-press) var(--ease-out);flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.theme-toggle:active{transform:scale(.94)}@media (hover:hover) and (pointer:fine){.theme-toggle:hover{color:var(--color-text);border-color:var(--color-text-tertiary)}}.theme-toggle>span{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.theme-toggle svg{transition:opacity var(--duration-ui) var(--ease-out), transform .4s var(--ease-out), filter var(--duration-ui) var(--ease-out)}.theme-icon-dark svg{opacity:0;filter:blur(2px);transform:rotate(-90deg)scale(.5)}[data-theme=dark] .theme-icon-light svg{opacity:0;filter:blur(2px);transform:rotate(90deg)scale(.5)}[data-theme=dark] .theme-icon-dark svg{opacity:1;filter:none;transform:none}.layout{margin-top:var(--topbar-height);min-height:calc(100vh - var(--topbar-height));display:flex}.sidebar{top:var(--topbar-height);width:var(--sidebar-width);border-right:1px solid var(--color-border);background:var(--color-bg);z-index:50;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--color-border) transparent;padding:20px 16px;position:fixed;bottom:0;left:0;overflow-y:auto}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:2px}.sidebar-nav{flex-direction:column;gap:12px;display:flex}.nav-group details>summary{cursor:pointer;border-radius:var(--radius-sm);list-style:none}.nav-group details>summary::-webkit-details-marker{display:none}.nav-group-title{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);transition:color var(--transition);align-items:center;gap:8px;margin-bottom:2px;padding:4px 8px;font-size:12px;font-weight:600;display:flex}.nav-group details>summary:hover{color:var(--color-text)}.nav-group-icon{color:var(--color-text-tertiary);align-items:center;display:flex}.nav-group-icon svg{width:14px;height:14px}.nav-group-icon .mc-icon{width:18px;height:18px}.nav-group-chevron{color:var(--color-text-tertiary);transition:transform var(--duration-ui) var(--ease-out);margin-left:auto;display:flex}.nav-group-chevron svg{width:12px;height:12px}.nav-group details[open]>summary .nav-group-chevron{transform:rotate(90deg)}.nav-group-link{cursor:pointer;border-radius:var(--radius-sm);transition:color var(--transition), background var(--transition);text-decoration:none}@media (hover:hover) and (pointer:fine){.nav-group-link:hover{color:var(--color-text);background:var(--color-bg-secondary)}}.nav-group-link.active{color:var(--color-accent-fg)}.nav-list{flex-direction:column;gap:1px;list-style:none;display:flex}.nav-item a{color:var(--color-text-secondary);border-radius:var(--radius-sm);transition:color var(--transition), background var(--transition);border-left:2px solid #0000;padding:6px 8px 6px 12px;font-size:14px;text-decoration:none;display:block}@media (hover:hover) and (pointer:fine){.nav-item a:hover{color:var(--color-text);background:var(--color-bg-secondary)}}.nav-item a:active{background:var(--color-bg-tertiary)}.nav-item.active a{color:var(--color-accent-fg);background:var(--color-accent-subtle,color-mix(in srgb, var(--color-accent-fg) 8%, transparent));border-left-color:var(--color-accent-fg);border-top-left-radius:0;border-bottom-left-radius:0;font-weight:500}.nav-nested summary{color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:color var(--transition);justify-content:space-between;align-items:center;padding:6px 8px 6px 12px;font-size:14px;list-style:none;display:flex}.nav-nested summary::-webkit-details-marker{display:none}.nav-nested summary:hover{color:var(--color-text)}.nav-chevron{color:var(--color-text-tertiary);transition:transform var(--duration-ui) var(--ease-out);display:flex}.nav-nested details[open]>summary .nav-chevron{transform:rotate(90deg)}.nav-list-nested{margin-top:2px;padding-left:12px}.toc-sidebar{top:var(--topbar-height);width:var(--toc-width);scrollbar-width:none;padding:32px 16px 32px 0;position:fixed;bottom:0;right:0;overflow-y:auto}.toc-title{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);margin-bottom:12px;padding-left:12px;font-size:12px;font-weight:600}.toc-list{list-style:none}.toc-item{margin-bottom:0}.toc-link{color:var(--color-text-secondary);border-left:2px solid var(--color-border-light);transition:color var(--transition), border-color var(--transition);padding:5px 12px;font-size:13px;line-height:1.5;text-decoration:none;display:block}.toc-link:hover{color:var(--color-text)}.toc-link.active{color:var(--color-accent-fg);border-left-color:var(--color-accent-fg);font-weight:500}.toc-item-nested .toc-link{padding-left:24px}.toc-item-nested{padding-left:0}.toc-indent{padding-left:12px}.page-nav-container{border-top:1px solid var(--color-border);justify-content:space-between;gap:16px;margin-top:48px;padding-top:24px;display:flex}.page-nav{border:1px solid var(--color-border);border-radius:var(--radius);color:inherit;transition:border-color var(--transition), box-shadow var(--transition), transform var(--duration-press) var(--ease-out);flex:1;align-items:center;gap:12px;padding:16px 20px;text-decoration:none;display:flex}.page-nav svg{color:var(--color-text-tertiary);transition:color var(--transition), transform var(--duration-ui) var(--ease-out);flex-shrink:0}.page-nav:active{transform:scale(.99)}@media (hover:hover) and (pointer:fine){.page-nav:hover{border-color:var(--color-accent-fg);box-shadow:var(--shadow-sm)}.page-nav:hover svg{color:var(--color-accent-fg)}.page-nav-prev:hover svg{transform:translate(-2px)}.page-nav-next:hover svg{transform:translate(2px)}}.page-nav-prev{justify-content:flex-start}.page-nav-next{text-align:right;justify-content:flex-end}.page-nav-label{color:var(--color-text-secondary);margin-bottom:2px;font-size:12px;display:block}.page-nav-title{font-size:14px;font-weight:500;display:block}.footer-inner{max-width:900px;margin:0 auto}.footer-top{border-bottom:1px solid var(--color-border);justify-content:space-between;gap:40px;padding-bottom:24px;display:flex}.footer-brand{max-width:300px}.footer-logo{margin-bottom:12px;display:inline-block}.footer-logo img{width:auto;height:24px}.footer-tagline{color:var(--color-text-secondary);margin:0;font-size:13px;line-height:1.5}.footer-links{gap:48px;display:flex}.footer-links-group{flex-direction:column;gap:8px;display:flex}.footer-links-group h4{color:var(--color-text);margin:0 0 4px;font-size:13px;font-weight:600}.footer-links-group a{color:var(--color-text-secondary);transition:color var(--transition);font-size:13px;text-decoration:none}.footer-links-group a:hover{color:var(--color-accent-fg)}.footer-bottom{justify-content:space-between;align-items:center;padding-top:20px;display:flex}.footer-bottom span{color:var(--color-text-tertiary);font-size:12px}.footer-bottom-end{align-items:center;gap:16px;display:flex}.footer-socials{gap:12px;display:flex}.footer-social{min-width:36px;min-height:36px;color:var(--color-text-tertiary);transition:color var(--transition);justify-content:center;align-items:center;display:inline-flex}.footer-social:hover{color:var(--color-accent-fg)}.footer{margin-left:var(--sidebar-width);margin-right:var(--toc-width);border-top:1px solid var(--color-border);padding:40px 48px}.sidebar-overlay{inset:var(--topbar-height) 0 0;background:var(--color-overlay);z-index:40;display:none;position:fixed}.mobile-toc{display:none}@media (width<=1280px){.toc-sidebar{display:none}.content,.footer{margin-right:0}.mobile-toc{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-secondary);margin:0 0 28px;display:block}.mobile-toc>summary{min-height:44px;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius);justify-content:space-between;align-items:center;gap:8px;padding:0 14px;font-size:13px;font-weight:600;list-style:none;display:flex}.mobile-toc>summary::-webkit-details-marker{display:none}.mobile-toc>summary svg{color:var(--color-text-tertiary);transition:transform var(--duration-ui) var(--ease-out)}.mobile-toc[open]>summary svg{transform:rotate(90deg)}.mobile-toc .toc-list{padding:0 14px 12px}.mobile-toc .toc-link{padding-top:6px;padding-bottom:6px}}@media (width<=1080px){.topbar-center{display:none}}@media (width<=768px){:root{--topbar-height:56px}.mobile-menu-btn{display:flex;position:relative}.topbar-inner{padding:0 16px}.topbar-left{gap:8px}.topbar-logo svg{height:24px}.topbar-cta{display:none}.sidebar{width:min(300px,85vw);padding-bottom:calc(24px + env(safe-area-inset-bottom));visibility:hidden;transition:transform var(--duration-drawer) var(--ease-drawer), visibility 0s linear var(--duration-drawer);box-shadow:none;transform:translate(-100%)}.sidebar.open{visibility:visible;transition:transform var(--duration-drawer) var(--ease-drawer), visibility 0s;box-shadow:var(--shadow-lg);transform:translate(0)}.nav-item a,.nav-nested summary{padding-top:9px;padding-bottom:9px}.nav-group-title{margin-bottom:0;padding-top:11px;padding-bottom:11px}.sidebar-nav{gap:2px}.sidebar-overlay{opacity:0;pointer-events:none;transition:opacity var(--duration-drawer) var(--ease-out);display:block}.sidebar-overlay.active{opacity:1;pointer-events:auto}html.nav-open{overflow:hidden}.content{margin-left:0;padding:24px 20px 64px}.footer{padding:32px 20px calc(32px + env(safe-area-inset-bottom));margin-left:0}.footer-top{flex-direction:column;gap:24px}.footer-bottom{flex-direction:column;align-items:center;gap:12px}.image-lightbox-toolbar{justify-content:flex-end;top:12px;left:12px;right:12px}.image-lightbox-action{min-height:36px;padding:7px 12px;font-size:12px}.image-lightbox-scroll{align-items:flex-start;padding:64px 12px 58px}.image-lightbox-image{max-width:100%;max-height:calc(100dvh - 132px)}.image-lightbox-caption{bottom:14px;left:12px;right:12px}.page-nav-container{flex-direction:column-reverse;gap:12px}}@media (width<=380px){.language-select{background-position:right 6px center;padding:0 22px 0 8px}.topbar-logo svg{height:22px}}.article-header{border-bottom:1px solid var(--color-border);margin-bottom:32px;padding-bottom:24px}.article-title{font-family:var(--font-heading);letter-spacing:-.02em;color:var(--color-text);text-wrap:balance;margin-bottom:8px;font-size:32px;font-weight:700;line-height:1.2}.article-description{color:var(--color-text-secondary);text-wrap:pretty;font-size:16px;line-height:1.6}.article-last-updated{color:var(--color-text-secondary);font-variant-numeric:tabular-nums;margin-top:8px;font-size:13px}.article-body h2,.article-body h3,.article-body h4{text-wrap:balance}.article-body p,.article-body li{text-wrap:pretty}.article-body h2{font-family:var(--font-heading);letter-spacing:-.01em;border-bottom:1px solid var(--color-border-light);margin-top:48px;margin-bottom:16px;padding-bottom:8px;font-size:24px;font-weight:600}.article-body h3{font-family:var(--font-heading);margin-top:32px;margin-bottom:12px;font-size:20px;font-weight:600}.article-body h4{font-family:var(--font-heading);margin-top:24px;margin-bottom:8px;font-size:16px;font-weight:600}.article-body p{margin-bottom:16px}.article-body a{color:inherit;text-underline-offset:3px;text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, currentColor 60%, transparent);transition:text-decoration-color var(--transition);font-weight:500}.article-body a:hover{text-decoration-color:currentColor}.article-body a code{color:inherit}.article-body a.card{color:inherit;text-decoration:none}.article-body a.card:hover{text-decoration:none}.article-body strong{font-weight:600}.article-body ul,.article-body ol{margin-bottom:16px;padding-left:24px}.article-body li,.article-body li>p{margin-bottom:6px}.article-body blockquote{border-left:3px solid var(--color-accent-fg);color:var(--color-text-secondary);background:var(--color-bg-secondary);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin:16px 0;padding:12px 16px}.article-body img{border-radius:var(--radius);max-width:80%;height:auto;margin:0;display:block}.article-body figure{text-align:center;margin:24px 0}.article-body figure img{margin:0 auto}.article-body figcaption{color:var(--color-text-secondary);text-align:center;margin-top:8px;font-size:13px}.article-body figure .image-zoom-wrap{max-width:80%;line-height:0;display:inline-block;position:relative}.article-body figure .image-zoom-wrap img{cursor:zoom-in;max-width:100%;height:auto}.image-zoom-button{color:#fff;cursor:pointer;opacity:0;pointer-events:none;width:34px;height:34px;box-shadow:var(--shadow-sm);transition:transform var(--duration-ui) var(--ease-out), background-color var(--transition), opacity var(--duration-ui) var(--ease-out);background:#111111b8;border:1px solid #ffffff7a;border-radius:999px;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:10px;right:10px;transform:scale(.9)}.image-zoom-wrap:hover .image-zoom-button,.image-zoom-wrap:focus-within .image-zoom-button{opacity:.92;pointer-events:auto;transform:none}.image-zoom-button:hover{opacity:1;background:#111111e0}.image-zoom-button:active{transform:scale(.94)}@media (hover:none){.image-zoom-button{opacity:.85;pointer-events:auto;width:32px;height:32px;top:8px;right:8px;transform:none}}.image-zoom-button svg{width:17px;height:17px}.image-lightbox-dialog{color:#fff;background:0 0;border:0;width:100vw;max-width:none;height:100dvh;max-height:none;padding:0}.image-lightbox-dialog::backdrop{background:#000000d6}.image-lightbox-dialog[open] .image-lightbox-shell{transition:opacity var(--duration-ui) var(--ease-out)}.image-lightbox-dialog[open] .image-lightbox-image{transition:transform .26s var(--ease-out)}@starting-style{.image-lightbox-dialog[open] .image-lightbox-shell{opacity:0}.image-lightbox-dialog[open] .image-lightbox-image{transform:scale(.96)}}.image-lightbox-shell{background:#000000d6;flex-direction:column;width:100%;height:100%;display:flex}.image-lightbox-toolbar{z-index:2;gap:8px;display:flex;position:fixed;top:16px;right:16px}.image-lightbox-action{color:#fff;cursor:pointer;font:600 13px var(--font-body);min-height:36px;transition:background-color var(--transition), transform var(--duration-press) var(--ease-out);background:#ffffff1f;border:1px solid #ffffff3d;border-radius:999px;justify-content:center;align-items:center;padding:8px 12px;text-decoration:none;display:inline-flex}.image-lightbox-action:hover{background:#fff3}.image-lightbox-action:active{transform:scale(.96)}.image-lightbox-close{width:36px;padding:8px}.image-lightbox-scroll{-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y pinch-zoom;flex:1;justify-content:center;align-items:center;padding:72px 24px 64px;display:flex;overflow:auto}.image-lightbox-image{border-radius:var(--radius);cursor:zoom-in;width:auto;max-width:min(100%,1400px);height:auto;max-height:calc(100dvh - 152px);box-shadow:0 24px 80px #00000073}.image-lightbox-dialog.is-zoomed .image-lightbox-scroll{justify-content:flex-start;align-items:flex-start}.image-lightbox-dialog.is-zoomed .image-lightbox-image{cursor:zoom-out;max-width:none;max-height:none}.image-lightbox-caption{z-index:2;color:#ffffffc7;text-align:center;pointer-events:none;font-size:13px;position:fixed;bottom:18px;left:24px;right:24px}body.image-lightbox-open{overflow:hidden}.article-body hr{border:none;border-top:1px solid var(--color-border);margin:32px 0}.article-body code{font-family:var(--font-code);background:var(--color-bg-tertiary);color:var(--color-accent-fg);border-radius:4px;padding:2px 6px;font-size:.875em}.article-body pre{margin:16px 0}.article-body pre code{color:inherit;font-size:inherit;background:0 0;border-radius:0;padding:0;display:block}.article-body pre:not(.codehilite pre){background:var(--color-code-bg);color:var(--color-code-fg);border-radius:var(--radius);font-family:var(--font-code);padding:16px 20px;font-size:13px;line-height:1.6;overflow-x:auto}.jeri-ctx-slug{background:var(--color-accent);color:#fff;border:1px solid var(--color-accent);white-space:nowrap;border-radius:4px;padding:1px 5px;font-weight:600}code .jeri-ctx-slug,pre .jeri-ctx-slug{background:var(--color-accent);color:#fff;border-color:var(--color-accent);padding:0 4px}.article-body .heading-anchor{opacity:0;color:var(--color-text-tertiary);transition:opacity var(--transition), color var(--transition);margin-left:8px;font-weight:400;text-decoration:none}h2:hover .heading-anchor,h3:hover .heading-anchor,h4:hover .heading-anchor,.heading-anchor:focus-visible{opacity:1}.article-body .heading-anchor:hover{color:var(--color-accent-fg)}@media (hover:none){.article-body .heading-anchor{display:none}}.article-body table{border-collapse:collapse;width:100%;margin:16px 0;font-size:14px}.article-body th,.article-body td{text-align:left;border-bottom:1px solid var(--color-border);padding:10px 16px}.article-body th{background:var(--color-bg-secondary);text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-secondary);font-size:13px;font-weight:600}@media (hover:hover) and (pointer:fine){.article-body tr:hover td{background:var(--color-bg-secondary)}}.article-body tr.table-section-header td{background:var(--color-bg-secondary)}@media (width<=768px){.article-body table{-webkit-overflow-scrolling:touch;max-width:100%;font-size:13px;display:block;overflow-x:auto}.article-body th,.article-body td{min-width:96px;padding:9px 12px}.article-body th{font-size:11px}}.article-body figure img,.article-body img{object-fit:contain;max-width:min(640px,100%);max-height:500px;margin:0 auto;display:block}.article-body .docs-video{background:var(--color-bg-secondary);border-radius:18px;width:min(100%,604px);max-height:720px;margin:0 auto;display:block}@media (width<=768px){.article-title{letter-spacing:-.025em;font-size:28px}.article-description{font-size:15px}.article-header{margin-bottom:24px;padding-bottom:20px}.article-body h2{margin-top:40px;font-size:21px}.article-body h3{margin-top:28px;font-size:18px}.article-body figure .image-zoom-wrap{max-width:100%}.article-body ul,.article-body ol{padding-left:20px}}.callout{border-radius:0 var(--radius) var(--radius) 0;border-left:3px solid var(--callout-color);background:var(--callout-bg);gap:12px;margin:16px 0;padding:16px;display:flex}[data-theme=dark] .callout{background:color-mix(in srgb, var(--callout-color) 11%, var(--color-bg))}.callout-icon{color:var(--callout-color);flex-shrink:0;align-items:flex-start;margin-top:1px;display:flex}.callout-icon .mc-icon{width:22px;height:22px}[data-theme=dark] .callout-icon{--ic-1:var(--callout-ic1-dark);--ic-2:transparent;--ic-3:var(--callout-ic3-dark)}.callout-content{flex:1;min-width:0}.callout-content p:last-child{margin-bottom:0}.tabs-container{border:1px solid var(--color-border);border-radius:var(--radius);margin:16px 0;overflow:hidden}.tabs-header{border-bottom:1px solid var(--color-border);background:var(--color-bg-secondary);scrollbar-width:none;display:flex;overflow-x:auto}.tab-btn{font-size:13px;font-weight:500;font-family:var(--font-body);color:var(--color-text-secondary);cursor:pointer;transition:color var(--transition), border-color var(--transition);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 20px}.tab-btn:hover{color:var(--color-text)}.tab-btn:focus-visible,.code-tab:focus-visible{outline-offset:-2px}.tab-btn.active{color:var(--color-accent-fg);border-bottom-color:var(--color-accent-fg)}.tab-panel{padding:16px 20px;display:none}.tab-panel.active{display:block}.card-group{grid-template-columns:repeat(var(--card-cols,2), minmax(0, 1fr));gap:12px;margin:16px 0;display:grid}@media (width<=1024px){.card-group[style*=--card-cols\:3],.card-group[style*=--card-cols\:4]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.card-group,.card-group[style]{grid-template-columns:minmax(0,1fr)}}.card{border:1px solid var(--color-border);border-radius:var(--radius);color:inherit;background:var(--color-bg);transition:border-color var(--transition), box-shadow var(--transition), transform var(--duration-press) var(--ease-out);align-items:flex-start;gap:12px;padding:16px;text-decoration:none;display:flex}a.card:active{transform:scale(.985)}.card-icon{color:var(--color-accent-fg);flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.card-icon .mc-icon{width:24px;height:24px}.card-body{flex:1;min-width:0}.card .card-title,.article-body .card .card-title{letter-spacing:-.005em;text-wrap:balance;border:0;margin:1px 0 4px;padding:0;font-size:15px;font-weight:600;line-height:1.4}.card-description{color:var(--color-text-secondary);margin:0;font-size:13px;line-height:1.5}.article-body .card-description{margin:0}.card-arrow{color:var(--color-accent-fg);opacity:0;transition:opacity var(--duration-ui) var(--ease-out), transform var(--duration-ui) var(--ease-out);flex-shrink:0;margin-top:3px;display:flex;transform:translate(-4px)}@media (hover:hover) and (pointer:fine){a.card:hover{border-color:var(--color-accent-fg);box-shadow:var(--shadow)}a.card:hover .card-arrow{opacity:1;transform:none}}@media (hover:none){.card-arrow{opacity:1;color:var(--color-text-tertiary);transform:none}}.accordion-group{flex-direction:column;margin:16px 0;display:flex}.accordion-group .accordion{border-radius:0;margin:-1px 0 0}.accordion-group .accordion:first-child{border-radius:var(--radius) var(--radius) 0 0;margin-top:0}.accordion-group .accordion:last-child{border-radius:0 0 var(--radius) var(--radius)}.accordion{border:1px solid var(--color-border);border-radius:var(--radius);margin:8px 0}.accordion-header{cursor:pointer;color:var(--color-text);transition:background-color var(--transition);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;font-size:15px;font-weight:500;list-style:none;display:flex}.accordion-header::-webkit-details-marker{display:none}.accordion-header:focus-visible{outline-offset:-2px}@media (hover:hover) and (pointer:fine){.accordion-header:hover{background:var(--color-bg-secondary)}}.accordion-chevron{transition:transform var(--duration-ui) var(--ease-out);color:var(--color-text-tertiary);flex-shrink:0;align-items:center;display:flex}.accordion[open] .accordion-chevron{transform:rotate(90deg)}.accordion-content{padding:0 16px 16px}.steps{margin:16px 0}.step{gap:16px;display:flex;position:relative}.step:not(:last-child){padding-bottom:24px}.step:not(:last-child):before{content:"";background:var(--color-border);width:2px;position:absolute;top:36px;bottom:0;left:15px}.step-number{background:var(--color-bg-tertiary);width:32px;height:32px;color:var(--color-text-secondary);border:1.5px solid var(--color-text-secondary);font-variant-numeric:tabular-nums;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:600;display:flex}.step-body{flex:1;min-width:0}.step-title,.article-body .step-title{min-height:32px;margin-bottom:8px;padding-top:5px;font-size:16px;font-weight:600;line-height:1.4;margin-top:0!important}.step-content{color:var(--color-text-secondary)}.code-group{border-radius:var(--radius);background:var(--color-code-bg);border:1px solid #2d2d2d;margin:16px 0;overflow:hidden}.code-group pre{margin:0}.code-group pre code{border-radius:0}.code-group .codehilite{border:0;border-radius:0;margin:0}.code-group-header{scrollbar-width:none;background:var(--color-code-bg);border-bottom:1px solid #2d2d2d;display:flex;overflow-x:auto}.code-tab{font-size:12px;font-family:var(--font-code);color:#8c8c99;cursor:pointer;white-space:nowrap;transition:color var(--transition), border-color var(--transition);background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 16px}.code-tab:hover{color:var(--color-code-fg)}.code-tab.active{color:#e6e1ff;border-bottom-color:#d4b3ff}.code-panel{display:none}.code-panel.active{display:block}.code-panel pre{margin:0}.code-panel code{border-radius:0}.frame{margin:24px 0}.frame-content{border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.frame-content img{border-radius:0;width:100%;margin:0;display:block}.frame-caption{color:var(--color-text-secondary);text-align:center;margin-top:8px;font-size:13px}.badge{letter-spacing:.02em;text-transform:uppercase;border-radius:9999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-default{background:var(--color-bg-tertiary);color:var(--color-text-secondary)}.badge-info{color:#1d4ed8;background:#dbeafe}.badge-warning{color:#92400e;background:#fef3c7}.badge-success{color:#065f46;background:#d1fae5}.badge-error{color:#991b1b;background:#fee2e2}[data-theme=dark] .badge-info{color:#93c5fd;background:#1e3a5f}[data-theme=dark] .badge-warning{color:#fcd34d;background:#3d2e00}[data-theme=dark] .badge-success{color:#6ee7b7;background:#0d3320}[data-theme=dark] .badge-error{color:#fca5a5;background:#3b0f0f}.changelog-header{justify-content:flex-end;margin-bottom:1rem;display:flex}.article-body a.changelog-rss-link{color:var(--color-text-secondary);border:1px solid var(--color-border);border-radius:6px;align-items:center;gap:6px;padding:4px 10px;font-size:13px;font-weight:500;text-decoration:none;transition:color .15s,border-color .15s;display:inline-flex}.article-body a.changelog-rss-link:hover{color:var(--color-accent-fg);border-color:var(--color-accent-fg);text-decoration:none}.changelog-rss-link svg{width:14px;height:14px}.changelog-year-divider{grid-template-columns:90px 1fr;align-items:center;gap:0 20px;margin:20px 0 8px;display:grid}.changelog-year-divider:first-child{margin-top:0}.changelog-year-divider span{color:var(--color-text);text-align:right;padding-right:2px;font-size:13px;font-weight:600}.changelog-year-divider:after{content:"";background:var(--color-border);height:1px}.changelog-date-group{grid-template-columns:90px 1fr;gap:0 20px;margin-bottom:0;display:grid;position:relative}.changelog-date{color:var(--color-text-tertiary);text-align:right;white-space:nowrap;grid-area:1/1;padding-top:7px;font-size:11px;font-weight:500}.changelog-entries{border-left:1px solid var(--color-border-light);grid-column:2;padding-bottom:24px;padding-left:20px;position:relative}.changelog-entries:before{content:"";background:var(--color-border);border-radius:50%;width:5px;height:5px;position:absolute;top:11px;left:-3px}.changelog-date-group:last-child .changelog-entries{padding-bottom:0}.changelog-entry{padding:0 0 10px}.changelog-entry:last-child{padding-bottom:0}.changelog-entry-header{align-items:baseline;gap:6px;margin-bottom:1px;display:flex}.changelog-badge{letter-spacing:.03em;text-transform:uppercase;border-radius:3px;flex-shrink:0;padding:0 5px;font-size:9px;font-weight:600;line-height:1.7;display:inline-flex}.changelog-badge-added{color:#065f46;background:#d1fae5}.changelog-badge-updated{color:#1d4ed8;background:#dbeafe}.changelog-badge-fixed{color:#92400e;background:#fef3c7}.changelog-badge-removed{color:#991b1b;background:#fee2e2}.changelog-badge-version{background:var(--color-bg-secondary);color:var(--color-text-secondary);border:1px solid var(--color-border);font-family:var(--font-code);text-transform:none}[data-theme=dark] .changelog-badge-added{color:#6ee7b7;background:#0d3320}[data-theme=dark] .changelog-badge-updated{color:#93c5fd;background:#1e3a5f}[data-theme=dark] .changelog-badge-fixed{color:#fcd34d;background:#3d2e00}[data-theme=dark] .changelog-badge-removed{color:#fca5a5;background:#3b0f0f}.changelog-entry-title{color:var(--color-text);margin:0;font-size:14px;font-weight:600;line-height:1.5}.changelog-entry-title a{color:var(--color-text);text-decoration:none}.changelog-entry-title a:hover{color:var(--color-text-secondary)}.changelog-entry-desc{color:var(--color-text-secondary);margin:0;font-size:14px;line-height:1.6}.changelog-entry-date-inline{color:var(--color-text-tertiary);margin-bottom:2px;font-size:11px;display:none}@media (width<=640px){.changelog-year-divider{grid-template-columns:1fr;margin:16px 0 4px}.changelog-year-divider span{text-align:left}.changelog-year-divider:after{display:none}.changelog-date-group{grid-template-columns:1fr;gap:0}.changelog-date{display:none}.changelog-entries{border-left:none;padding-bottom:16px;padding-left:0}.changelog-entries:before{display:none}.changelog-entry{padding-bottom:14px}.changelog-entry-date-inline{display:block}}.tooltip{text-underline-offset:3px;cursor:help;text-decoration:underline dotted;position:relative}.tooltip:after{content:attr(data-tip);transform-origin:50% 100%;background:var(--color-text);width:max-content;max-width:min(260px,80vw);color:var(--color-bg);text-align:center;border-radius:var(--radius-sm);box-shadow:var(--shadow);pointer-events:none;opacity:0;z-index:20;transition:opacity .125s var(--ease-out), transform .125s var(--ease-out);padding:6px 10px;font-size:12px;font-weight:400;line-height:1.45;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(2px)scale(.97)}.tooltip:hover:after,.tooltip:focus-visible:after{opacity:1;transform:translate(-50%)}.codehilite{border-radius:var(--radius);margin:16px 0;position:relative;overflow:hidden}[data-theme=dark] .codehilite{box-shadow:inset 0 0 0 1px var(--color-border)}.codehilite pre{background:var(--color-code-bg);color:var(--color-code-fg);font-family:var(--font-code);margin:0;padding:16px 20px;font-size:13px;line-height:1.6;overflow-x:auto}.code-copy-btn{color:#78716c;cursor:pointer;opacity:0;transition:opacity var(--transition), background-color var(--transition), color var(--transition), transform var(--duration-press) var(--ease-out);background:#ffffff1a;border:none;border-radius:4px;justify-content:center;align-items:center;padding:6px;display:flex;position:absolute;top:8px;right:8px}.codehilite:hover .code-copy-btn,.code-copy-btn:focus-visible,.code-copy-btn.copied{opacity:1}.code-copy-btn:hover{color:#fff;background:#fff3}.code-copy-btn:active{transform:scale(.92)}.code-copy-btn.copied{color:#4ade80}.code-copy-btn svg{animation:copy-icon-in var(--duration-ui) var(--ease-out)}@keyframes copy-icon-in{0%{opacity:0;filter:blur(2px);transform:scale(.6)}}@media (hover:none){.code-copy-btn{opacity:1;width:32px;height:32px}}.tab-panel>:first-child{margin-top:0}.tab-panel>:last-child{margin-bottom:0}@media (width<=640px){.callout{gap:10px;padding:14px 14px 14px 12px}.callout-icon .mc-icon{width:20px;height:20px}.tab-panel{padding:14px 16px}.step{gap:12px}}.search-trigger[data-astro-cid-ac66eqjo]{height:var(--control-height);min-width:13rem;color:var(--color-text-secondary);background:var(--color-bg-secondary);border:1px solid var(--color-border,#ddd);border-radius:var(--radius);font:inherit;cursor:pointer;transition:color var(--transition), border-color var(--transition), transform var(--duration-press) var(--ease-out);align-items:center;gap:.5rem;padding:0 .4rem 0 .7rem;font-size:.875rem;display:inline-flex}.search-trigger[data-astro-cid-ac66eqjo] span[data-astro-cid-ac66eqjo]{text-align:left;flex:1}.search-trigger[data-astro-cid-ac66eqjo]:active{transform:scale(.98)}@media (hover:hover) and (pointer:fine){.search-trigger[data-astro-cid-ac66eqjo]:hover{color:var(--color-text);border-color:var(--color-text-tertiary)}}.search-trigger[data-astro-cid-ac66eqjo] svg[data-astro-cid-ac66eqjo]{flex:none;width:1rem;height:1rem}.search-trigger[data-astro-cid-ac66eqjo] kbd[data-astro-cid-ac66eqjo],.search-close[data-astro-cid-ac66eqjo]{color:var(--color-text-secondary);background:var(--color-bg-tertiary);border:1px solid var(--color-border,#ddd);font:inherit;border-radius:.25rem;padding:.15rem .35rem;font-size:.7rem;font-weight:500;line-height:1.4}.search-dialog[data-astro-cid-ac66eqjo]{width:min(42rem,100vw - 2rem);max-width:none;max-height:min(80vh,42rem);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:.75rem;margin:10vh auto;padding:0;box-shadow:0 1.5rem 4rem #00000038}.search-dialog[data-astro-cid-ac66eqjo]::backdrop{background:var(--color-overlay);backdrop-filter:blur(2px)}.search-panel[data-astro-cid-ac66eqjo]{max-height:inherit;grid-template-rows:auto auto minmax(0,1fr);display:grid}.search-input-row[data-astro-cid-ac66eqjo]{border-bottom:1px solid var(--color-border);align-items:center;gap:.75rem;min-height:4rem;padding:0 1rem;display:flex}.search-input-row[data-astro-cid-ac66eqjo] svg[data-astro-cid-ac66eqjo]{width:1.25rem;color:var(--color-text-secondary);flex:none}.search-input[data-astro-cid-ac66eqjo]{width:100%;min-width:0;color:inherit;font:inherit;background:0 0;border:0;outline:0;font-size:1rem}.search-input[data-astro-cid-ac66eqjo]::-webkit-search-cancel-button{-webkit-appearance:none;display:none}.search-input[data-astro-cid-ac66eqjo]::placeholder{color:var(--color-text-tertiary)}.search-close[data-astro-cid-ac66eqjo]{cursor:pointer;flex:none}.search-fallback[data-astro-cid-ac66eqjo]{color:var(--color-text-secondary);margin:0;padding:.65rem 1rem 0;font-size:.8rem}.search-status[data-astro-cid-ac66eqjo]{color:var(--color-text-secondary);margin:0;padding:.75rem 1rem;font-size:.85rem}.search-status[data-astro-cid-ac66eqjo]:empty{display:none}.search-results[data-astro-cid-ac66eqjo]{margin:0;padding:0 .5rem .5rem;list-style:none;overflow:auto}.search-result-link{color:inherit;border-radius:.5rem;padding:.75rem;scroll-margin:.5rem;text-decoration:none;display:block}.search-result-link:hover,.search-result-link:focus-visible{background:var(--color-bg-secondary);outline:0}.search-result-link:focus-visible{box-shadow:inset 2px 0 0 var(--color-accent-fg)}.search-result-link:focus-visible .search-result-title{color:var(--color-accent-fg)}.search-result-title{margin-bottom:.25rem;font-weight:600;display:block}.search-result-excerpt{color:var(--color-text-secondary);margin:0;font-size:.85rem;line-height:1.5}.search-result-excerpt mark{color:var(--color-text);background:var(--color-accent-subtle);border-radius:2px;padding:0 1px}@media (width<=1080px){.search-trigger[data-astro-cid-ac66eqjo]{min-width:10rem}}@media (width<=768px){.search-trigger[data-astro-cid-ac66eqjo]{min-width:0;width:var(--control-height);background:var(--color-bg);justify-content:center;padding:0}.search-trigger[data-astro-cid-ac66eqjo] span[data-astro-cid-ac66eqjo],.search-trigger[data-astro-cid-ac66eqjo] kbd[data-astro-cid-ac66eqjo]{display:none}.search-dialog[data-astro-cid-ac66eqjo]{width:calc(100vw - 1rem);max-height:calc(100dvh - 1rem);margin:.5rem auto auto}.search-close[data-astro-cid-ac66eqjo]{min-height:32px;padding:0 .6rem}}
