@font-face{font-family:VT323;src:url(/VT323-Regular.ttf)format("truetype");font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-variable-latin.woff2)format("woff2");font-style:normal;font-weight:100 900;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-variable-italic-latin.woff2)format("woff2");font-style:italic;font-weight:100 900;font-display:swap}@font-face{font-family:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0%;size-adjust:107.12%}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-variable-latin.woff2)format("woff2");font-style:normal;font-weight:100 800;font-display:optional}@font-face{font-family:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0%;size-adjust:134.59%}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg-canvas:#0a0e0c;--bg-shell:#0a0e0ce6;--bg-panel:#0a0e0cf5;--bg-elevated:#121816eb;--bg-code:#0b0c0e;--border-strong:#eef1ef1f;--border-soft:#eef1ef0f;--text-strong:#f3f6f4;--text-body:#d6d9d7;--text-muted:#9fa2a0;--text-faint:#707371;--accent:#15803d;--accent-strong:#3f3;--accent-soft:#33ff331a;--shadow-xl:0 24px 60px #00000047;--header-height:112px;--mobile-header-height:120px;--shell-max-width:92rem;--sidebar-width:18rem;--sidebar-gap:2.699rem;--content-width:43.051rem;--blog-width:43.051rem;--toc-gap:3.25rem;--toc-width:19rem;font-family:Inter,Inter Fallback,system-ui,sans-serif;font-weight:400;line-height:1.5}html[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-canvas:#eef3f8;--bg-shell:#fffffff5;--bg-panel:#ffffffeb;--bg-elevated:#f3f6f9fa;--bg-code:#f3f7fb;--border-strong:#0f172a1f;--border-soft:#0f172a14;--text-strong:#0f172a;--text-body:#334155;--text-muted:#475569;--text-faint:#64748b;--accent:#166534;--accent-strong:#15803d;--accent-soft:#15803d1f;--shadow-xl:0 24px 80px #0f172a14}*{box-sizing:border-box}html,body,#app{min-height:100%}html,body{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{min-width:320px;color:var(--text-body);background:linear-gradient(#0a0e0cfa,#0a0e0c);background-color:var(--bg-canvas);margin:0;position:relative}html[data-theme=light] body{background:linear-gradient(#f7fafcf5,#edf2f7)}body:before,body:after{content:"";pointer-events:none;position:fixed;inset:0}body:before{opacity:.24;z-index:0;background:repeating-linear-gradient(#ffffff04 0 1px,#0003 1px 3px);animation:10s linear infinite site-scanline-drift}body:after{opacity:.14;z-index:0;background:radial-gradient(#0000 52%,#00000047 100%),repeating-radial-gradient(circle at 20% 30%,#ffffff03 0 1px,#0000 1px 4px);animation:.17s infinite site-scanline-flicker}a{color:inherit;text-decoration:none}button,input{font:inherit}button{appearance:none;background:0 0;border:0}img{max-width:100%}#app,.site-header,.sidebar-panel,.toc-panel,.content-frame,.site-footer-shell{position:relative}.site-header:before,.sidebar-panel:before,.toc-panel:before,.content-frame:before,.site-footer-shell:before{content:"";opacity:.38;pointer-events:none;z-index:1;background:repeating-linear-gradient(#ffffff07 0 1px,#00000057 1px 3px);animation:10s linear infinite site-scanline-drift;position:absolute;inset:0}.site-header:after,.sidebar-panel:after,.toc-panel:after,.content-frame:after,.site-footer-shell:after{content:"";opacity:.19;pointer-events:none;z-index:1;background:radial-gradient(#0000 58%,#00000061 100%),repeating-radial-gradient(circle at 20% 30%,#ffffff04 0 1px,#0000 1px 4px);animation:.17s infinite site-scanline-flicker;position:absolute;inset:0}.site-header>*,.sidebar-panel>*,.toc-panel>*,.content-frame>*,.site-footer-shell>*{z-index:2;position:relative}#app{z-index:1}.ctx-clean-frame{isolation:isolate;z-index:5;position:relative}.ctx-clean-frame img{display:block}.ctx-clean-frame video{width:100%;height:auto;box-shadow:none;background:#000;border:0;border-radius:0;display:block}code,pre{font-family:JetBrains Mono,JetBrains Mono Fallback,ui-monospace,monospace}.site-shell{min-height:100vh}.site-shell[data-pathname=\/] .site-layout{grid-template-columns:var(--sidebar-width) var(--sidebar-gap) minmax(0, 1fr)}.site-shell[data-pathname=\/] .toc-shell{display:none}.site-header{z-index:40;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:color-mix(in srgb, var(--bg-shell) 88%, transparent);background-image:linear-gradient(var(--border-soft), var(--border-soft)), linear-gradient(var(--border-soft), var(--border-soft));background-position:0 4rem,left 0 bottom 0;background-repeat:no-repeat;background-size:100% 1px,100% 1px;position:sticky;top:0}.site-header-inner{width:100%;max-width:var(--shell-max-width);margin-inline:auto;padding:0}.header-top{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:1rem;min-height:4rem;padding:0 3rem;display:grid}.brand-link{justify-self:start;align-items:center;gap:0;display:inline-flex}.brand-wordmark{color:var(--accent-strong);letter-spacing:.02em;text-shadow:0 0 1px #33ff3361,0 0 5px #33ff3357,1px 0 1px #ff00006b,-1px 0 1px #0032ff6b;align-items:flex-end;gap:0;margin-top:1px;font-family:VT323,Courier New,Courier,monospace;font-size:1.68rem;line-height:1;display:inline-flex}.brand-wordmark-text{display:inline-block}.brand-wordmark-cursor{vertical-align:-.08em;background:currentColor;width:.3em;height:.82em;margin-bottom:.02em;margin-left:.04em;animation:1s step-end infinite brand-cursor-blink;display:inline-block;box-shadow:0 0 6px #33ff3357}@keyframes brand-cursor-blink{50%{opacity:0}}.top-nav{align-items:center;gap:1.5rem;width:100%;min-height:3.1rem;padding:0 3rem;display:flex}.header-top-spacer{justify-self:end;width:2.875rem;height:1px}.top-nav-link{height:3rem;color:var(--text-muted);border-bottom:2px solid #0000;align-items:center;font-size:.875rem;font-weight:500;transition:color .16s,border-color .16s;display:inline-flex}.top-nav-link:hover,.top-nav-link.is-active{color:var(--text-strong);border-color:var(--accent-strong)}.header-action-button,.mobile-icon-button,.mobile-crumb-row,.page-actions-copy,.page-actions-more{background:color-mix(in srgb, var(--bg-panel) 80%, transparent);color:var(--text-muted);border:1px solid #eef1ef12;justify-content:center;align-items:center;transition:border-color .16s,background-color .16s,color .16s;display:inline-flex}.header-action-button:hover,.mobile-icon-button:hover,.mobile-crumb-row:hover,.page-actions-copy:hover,.page-actions-more:hover{border-color:var(--border-strong);background:var(--bg-elevated);color:var(--text-strong)}.header-action-button{background:#0b0e0fd1;border-color:#5a625e38;border-radius:.75rem;min-height:2.25rem;padding:0 .75rem 0 .875rem}.header-install-copy{min-height:1.78rem;color:var(--accent-strong);cursor:pointer;isolation:isolate;letter-spacing:.015em;text-shadow:0 0 2px #33ff336b,0 0 5px #33ff3352,1.25px 0 1.25px #ff00007a,-1.25px 0 1.25px #0032ff7a;background:#0e1013;border:0;border-radius:0;justify-content:center;justify-self:end;align-items:center;gap:.32rem;padding:.14rem .54rem;font-family:VT323,Courier New,Courier,monospace;font-size:1.12rem;line-height:1;display:inline-flex;position:relative}.header-install-copy *{cursor:inherit}.header-install-copy:hover{color:var(--accent-strong);background:#0e1013}.header-install-frame{pointer-events:none;z-index:0;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.header-install-frame,.header-install-frame-core,.header-install-frame-scan,.header-install-frame-glow{fill:none;shape-rendering:crispedges;vector-effect:non-scaling-stroke;stroke-linecap:square;stroke-linejoin:miter}.header-install-frame-glow{stroke:#33ff3375;stroke-width:1.85px;filter:url(#cta-glow-filter)}.header-install-frame-core{stroke:#33ff338f;stroke-width:1.32px}.header-install-frame-scan{stroke:url(#cta-scan-pattern);stroke-width:1.85px;opacity:.72;mix-blend-mode:screen}.header-install-command{z-index:1;white-space:nowrap;position:relative}.header-install-icon-wrap,.header-install-icon-pair{z-index:1;justify-content:center;align-items:center;display:inline-flex;position:relative}.header-install-icon{width:1.04em;height:1.04em;image-rendering:pixelated;filter:drop-shadow(0 0 1px #33ff3380)drop-shadow(0 0 3px #33ff3380)drop-shadow(.75px 0 #ff000080)drop-shadow(-.75px 0 #0032ff80);display:block}.header-install-icon-pair-check,.header-install-copy.is-copied .header-install-icon-pair-copy{display:none}.header-install-copy.is-copied .header-install-icon-pair-check{display:inline-flex}.header-install-copy:focus-visible{outline-offset:2px;outline:2px solid #8bb8ff}.search-button{text-align:left;width:clamp(24rem,30vw,27.333rem);color:color-mix(in srgb, var(--text-strong) 52%, transparent);background:#0a0e0ce0;border-color:#5053514d;justify-content:flex-start;justify-self:center;align-items:center;gap:.56rem;padding:0 .75rem 0 .875rem;display:flex}.search-button-icon{width:1rem;height:1rem;color:var(--text-faint);flex:none}.search-button-label{min-width:0}.search-button kbd{color:var(--text-faint);align-items:center;gap:.18rem;margin-left:auto;font-size:.75rem;font-weight:600;display:inline-flex}.mobile-header-actions,.mobile-crumb-row{display:none}.mobile-icon-button{background:0 0;border:0;width:2.05rem;height:2.05rem;padding:0}.mobile-icon-button.is-narrow{width:1.4rem}.mobile-header-icon{width:1rem;height:1rem}.mobile-crumb-row{background:0 0;border:0;border-radius:0;justify-content:flex-start;gap:.85rem;width:100%;min-height:3.55rem;padding:0 .95rem}.mobile-crumb-menu{color:var(--text-muted)}.mobile-menu-icon{width:.95rem;height:.95rem}.mobile-crumb-copy{white-space:nowrap;align-items:center;gap:.72rem;min-width:0;font-size:.875rem;line-height:1.5;display:flex}.mobile-crumb-group{color:var(--text-muted);flex-shrink:0;align-items:center;gap:.75rem;display:inline-flex}.mobile-crumb-separator{width:.2rem;height:.55rem;color:var(--text-muted)}.mobile-crumb-title{text-overflow:ellipsis;min-width:0;color:var(--text-strong);font-weight:600;overflow:hidden}.site-layout{--layout-side-padding:2rem;grid-template-columns:var(--sidebar-width) var(--sidebar-gap) minmax(0, 1fr) var(--toc-gap) var(--toc-width);width:100%;max-width:var(--shell-max-width);padding:0 var(--layout-side-padding) 4rem;margin-inline:auto;display:grid}.sidebar-shell,.toc-shell{align-self:start;position:sticky}.sidebar-shell{top:calc(var(--header-height) + 1px);height:calc(100vh - var(--header-height) - 1px - var(--footer-overlap,0px));max-height:calc(100vh - var(--header-height) - 1px - var(--footer-overlap,0px));grid-column:1}.toc-shell{top:calc(var(--header-height) + 2.5rem);grid-column:5}.toc-shell[data-footer-visible=true]{opacity:0;pointer-events:none}.sidebar-panel,.toc-panel{background:0 0}.sidebar-panel{scrollbar-gutter:stable;overscroll-behavior:contain;height:100%;padding:2.3rem 2rem 2.5rem 0;overflow-y:auto}.toc-title{color:var(--text-strong);align-items:center;gap:.5rem;padding:0 0 .7rem;font-size:.875rem;font-weight:500;display:flex}.toc-title-icon{width:.75rem;height:.75rem;color:var(--text-muted)}.sidebar-group{padding:0 0 .75rem}.sidebar-group+.sidebar-group{padding-top:.75rem}.sidebar-group-title{color:var(--text-strong);padding:0 0 .625rem 1rem;font-size:.875rem;font-weight:600}.sidebar-group-list{gap:.0625rem;margin:0;padding:0;list-style:none;display:grid}.sidebar-link{width:100%;color:var(--text-muted);text-shadow:-.2px 0 #0000,.2px 0 #0000;border-radius:.75rem;align-items:flex-start;padding:6px 12px 6px 16px;font-size:.875rem;line-height:24px;transition:background-color .16s,color .16s;display:flex}.sidebar-link:hover{color:#d1d5db;background:#e5e7eb0d}.sidebar-link.is-active{background:var(--accent-soft);color:var(--accent-strong);text-shadow:-.2px 0,.2px 0}.content-shell{grid-column:3;min-width:0}.content-frame{padding-top:2.4rem}.article-shell{min-height:calc(100vh - var(--header-height) - 2rem);padding:0 0 2rem}.article-header{gap:.85rem;margin-bottom:2.15rem;display:grid}.article-title-row{align-items:flex-start;gap:.75rem;min-width:0;display:flex}.article-section-label{height:1.25rem;color:var(--accent-strong);font-size:.875rem;font-weight:600}.article-header h1{letter-spacing:-.03em;color:var(--text-strong);margin:0;font-size:1.875rem;line-height:1.2}.article-description{max-width:none;color:var(--text-muted);font-size:1rem;line-height:1.75}.article-description p{margin:0}.article-shell[data-tab=blog] .article-description{max-width:32.8125rem;color:var(--text-muted);font-size:1.125rem;font-style:italic;font-weight:400;line-height:28px}.article-shell[data-tab=blog] .article-description em{font-style:italic}.article-shell[data-tab=blog] .article-title-row{align-items:flex-start}.article-shell[data-tab=blog] .article-title-row h1{max-width:22ch;line-height:1.2}.article-shell[data-tab=blog] .article-section-label{display:none}.page-actions{align-items:center;margin-left:auto;display:inline-flex}.page-actions-desktop{flex-shrink:0}.page-actions-mobile{display:none}.site-shell[data-pathname=\/] .page-content,.site-shell[data-pathname=\/] .article-shell{max-width:51.05rem}.ctx-home-title-block{margin:0 0 2rem}.ctx-home-title-heading{color:#e5e7eb;letter-spacing:-.025em;margin:0;font-size:2rem;font-weight:700;line-height:1.04}.ctx-home-title-wordmark{color:var(--accent-strong);white-space:nowrap;letter-spacing:.02em;text-shadow:0 0 2px #33ff3380,0 0 8px #33ff3380,1.25px 0 1.25px #ff000073,-1.25px 0 1.25px #0032ff73;flex:0 0 1.48em;align-items:flex-end;width:1.48em;margin-right:.02em;font-family:VT323,Courier New,Courier,monospace;font-size:1.16em;font-weight:400;line-height:.76;display:inline-flex;overflow:hidden;transform:translateY(-.03em)}.ctx-home-title-tagline{color:#9ca3af;margin:.55rem 0 0;font-size:1.25rem;line-height:1.75}@media (width>=640px){.ctx-home-title-heading{font-size:3rem}}.page-actions-copy{background:#0b0e0fb8;border-right:0;border-radius:.75rem 0 0 .75rem;align-items:center;min-height:2.125rem;padding:0 .75rem;display:inline-flex}.page-actions-copy-inner{align-items:center;gap:.5rem;font-size:.875rem;font-weight:500;display:inline-flex}.page-actions-more{background:#0b0e0fb8;border-radius:0 .75rem .75rem 0;width:2.125rem;min-height:2.125rem;padding:0}.page-actions-copy-icon{width:1rem;height:1rem}.page-actions-more-icon{flex-shrink:0;width:.52rem;height:.32rem}.page-content{width:100%;font-size:1rem;line-height:1.75}.page-content>:first-child{margin-top:0}.article-shell[data-tab=blog] .page-content{max-width:min(100%, var(--blog-width))}.page-content h2,.page-content h3,.page-content h4{color:var(--text-strong);margin-top:3rem;margin-bottom:1rem;scroll-margin-top:96px;line-height:1.2}.page-content h2{letter-spacing:-.03em;font-size:1.45rem}.page-content h3{letter-spacing:-.02em;font-size:1.12rem}.page-content p,.page-content ul,.page-content ol,.page-content blockquote,.page-content table,.page-content pre:not(.ctx-code-block-pre){margin:1.2rem 0 1.45rem}.page-content p,.page-content li{color:var(--text-body)}.page-content strong{color:var(--text-strong)}.page-content a{color:var(--text-strong);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--accent-strong) 60%, transparent);text-decoration-color:color-mix(in srgb, var(--accent-strong) 60%, transparent);text-underline-offset:.18em}.page-content p a{color:var(--text-body);text-decoration-color:#9fa2a099}.page-content ul,.page-content ol{padding-left:1.45rem}.page-content li+li{margin-top:.6rem}.page-content hr{background:var(--border-soft);border:0;height:1px}.page-content blockquote{color:var(--text-body);background:#ffffff05;border-left:1px solid #9fa2a073;border-radius:0 .875rem .875rem 0;padding:1rem 1.1rem}.article-shell[data-tab=blog] .page-content blockquote{background:0 0;border-left:2px solid #9fa2a038;border-radius:0;padding:.2rem 0 .2rem 1rem}.page-content pre:not(.ctx-code-block-pre){color:#d2f8df;background:#0b0c0ed1;border:1px solid #eef1ef0d;border-radius:.75rem;padding:.68rem 1rem;overflow:auto}.page-content code{font-size:.92em}.page-content :not(pre)>code{background:color-mix(in srgb, var(--bg-elevated) 88%, transparent);color:var(--text-strong);border-radius:8px;padding:.18rem .42rem}.page-content img{border:1px solid var(--border-soft);box-shadow:var(--shadow-xl);border-radius:20px}.ctx-code-block{background:#0b0c0e;border:1px solid #eef1ef12;border-radius:1rem;margin:1.2rem 0 1.45rem;padding:.875rem 1rem;position:relative;overflow:hidden}.ctx-code-block-actions{z-index:2;align-items:center;gap:.375rem;display:flex;position:absolute;top:.75rem;right:1rem}.ctx-code-copy-button{color:#fff6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:.375rem;justify-content:center;align-items:center;width:26px;height:26px;padding:0;transition:color .16s;display:inline-flex;position:relative}.ctx-code-copy-button:hover,.ctx-code-copy-button:focus-visible{color:#fff9}.ctx-code-copy-button:after{content:attr(data-tooltip);background:var(--accent);color:#fff;white-space:nowrap;opacity:0;pointer-events:none;border-radius:.5rem;padding:.125rem .375rem;font-size:.75rem;line-height:1.25;transition:opacity .12s;position:absolute;top:-.75rem;left:50%;transform:translate(-50%,-100%)}.ctx-code-copy-button:hover:after,.ctx-code-copy-button:focus-visible:after,.ctx-code-copy-button[data-copied=true]:after{opacity:1}.ctx-code-copy-icon-pair{justify-content:center;align-items:center;display:inline-flex}.ctx-code-copy-icon-pair-check{color:var(--accent-strong);display:none}.ctx-code-copy-button[data-copied=true] .ctx-code-copy-icon-pair-copy{display:none}.ctx-code-copy-button[data-copied=true] .ctx-code-copy-icon-pair-check{display:inline-flex}.ctx-code-copy-icon,.ctx-code-check-icon{width:1rem;height:1rem}.ctx-code-block-pre{font-size:.875rem;line-height:24px;overflow:auto;background:var(--shiki-light-bg)!important;color:var(--shiki-light)!important;margin:0!important;padding:0!important}html:not([data-theme=light]) .ctx-code-block-pre{background:var(--shiki-dark-bg)!important;color:var(--shiki-dark)!important}.ctx-code-block-pre code{min-width:100%;padding-right:2rem;display:block}.ctx-code-block-pre .line{display:block}.ctx-code-block-pre span[style]{color:var(--shiki-light)!important}html:not([data-theme=light]) .ctx-code-block-pre span[style]{color:var(--shiki-dark)!important}.ctx-doc-frame{border:1px solid var(--border-soft);background:color-mix(in srgb, var(--bg-elevated) 88%, transparent);box-shadow:var(--shadow-xl);border-radius:1.25rem;margin:1.6rem 0 2rem;overflow:hidden}.ctx-doc-frame img{width:100%;box-shadow:none;border:0;border-radius:0;display:block}.ctx-doc-frame video{width:100%;height:auto;box-shadow:none;background:#000;border:0;border-radius:0;display:block}.ctx-doc-card-group{gap:1rem;margin:1.6rem 0 2rem;display:grid}.ctx-doc-card-group-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.ctx-doc-card{border:1px solid var(--border-soft);background:color-mix(in srgb, var(--bg-elevated) 92%, transparent);border-radius:1rem;min-width:0;padding:1rem 1.05rem;text-decoration:none;transition:border-color .16s,transform .16s,background-color .16s;display:block;box-shadow:0 14px 36px #00000029}.page-content a.ctx-doc-card{color:inherit;text-decoration:none}.ctx-doc-card:hover{border-color:var(--border-strong);background:color-mix(in srgb, var(--bg-elevated) 100%, transparent);transform:translateY(-1px)}.ctx-doc-card-title{color:var(--text-strong);font-size:.98rem;font-weight:650;line-height:1.3}.ctx-doc-card-body{color:var(--text-body);margin-top:.45rem;font-size:.95rem;line-height:1.55}.ctx-doc-card-body>:first-child{margin-top:0}.ctx-doc-card-body>:last-child{margin-bottom:0}.page-content table{border-collapse:collapse;border-spacing:0;border:1px solid var(--border-soft);border-radius:18px;width:100%;overflow:hidden}.page-content th,.page-content td{border-bottom:1px solid var(--border-soft);text-align:left;padding:.75rem .85rem}.page-content th{color:var(--text-strong);background:color-mix(in srgb, var(--bg-elevated) 86%, transparent)}.page-content tr:last-child td{border-bottom:0}.footer-nav{max-width:var(--content-width);justify-content:space-between;align-items:center;gap:1rem;margin-top:3.4rem;display:flex}.footer-nav-link{color:var(--text-strong);align-items:center;gap:.55rem;font-size:.875rem;font-weight:600;display:inline-flex}.footer-nav-link.is-next{margin-left:auto}.footer-nav-spacer{flex:1 1 0}.footer-nav-icon{width:.28rem;height:.65rem;color:var(--text-muted)}.footer-nav-icon.is-next{transform:rotate(180deg)}.site-footer-shell{border-top:1px solid var(--border-soft);grid-column:1/-1;width:100vw;margin-top:5rem;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}.site-footer-inner{max-width:61.5rem;margin:0 auto;padding:7rem 2rem}.site-footer-main{justify-content:space-between;gap:2rem;min-height:10.5rem;display:flex}.site-footer-brand-column{flex-direction:column;justify-content:space-between;gap:1rem;min-width:15rem;display:flex}.site-footer-brand,.site-footer-wordmark{display:inline-flex}.site-footer-wordmark .brand-wordmark-cursor{opacity:1;animation:none}.site-footer-socials{align-items:center;gap:1rem;display:flex}.site-footer-brand-meta{flex-direction:column;align-items:flex-start;gap:.85rem;display:flex}.site-footer-social-link{color:var(--text-faint);transition:color .16s;display:inline-flex}.site-footer-social-link:hover{color:var(--text-muted)}.site-footer-social-icon{width:1.25rem;height:1.25rem}.site-footer-columns{flex:auto;grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem;display:grid}.site-footer-legal-text{color:var(--text-faint);margin:0;font-size:.8125rem}.site-footer-column{flex-direction:column;gap:.95rem;min-width:0;display:flex}.site-footer-column-title{color:var(--text-strong);margin:0 0 .1rem;font-size:.875rem;font-weight:600}.site-footer-column-links{flex-direction:column;gap:.95rem;display:flex}.site-footer-column-link{color:color-mix(in srgb, var(--text-strong) 50%, transparent);font-size:.875rem;transition:color .16s}.site-footer-column-link:hover{color:color-mix(in srgb, var(--text-strong) 72%, transparent)}.toc-panel{padding:0}.toc-list{gap:0;margin:0;padding:0;list-style:none;display:grid}.toc-link{color:var(--text-muted);padding:.38rem 0;font-size:.875rem;line-height:1.48;display:block}.toc-link:hover{color:var(--text-strong)}.toc-link.is-active{color:var(--accent-strong);font-weight:600}.toc-link.depth-3{padding-left:1.2rem}.missing-page-copy{color:var(--text-muted);margin:0}.post-byline{color:var(--text-muted);margin:.18rem 0 1.45rem;font-size:.95rem}.post-divider{background:#94a3b847;height:1px;margin:1.45rem 0 2.35rem}.article-shell[data-tab=blog] .page-content p{line-height:1.8}.article-shell[data-tab=blog] .page-content h2{margin-top:3.1rem}.mobile-sidebar-backdrop{display:none}@media (width<=1180px){.site-layout{grid-template-columns:var(--sidebar-width) var(--sidebar-gap) minmax(0, 1fr)}.toc-shell{display:none}.site-shell[data-pathname=\/] .site-layout{grid-template-columns:var(--sidebar-width) var(--sidebar-gap) minmax(0, 1fr)}}@media (width<=920px){.header-top{grid-template-columns:auto 1fr auto;min-height:4rem;padding:0 1.25rem}.top-nav,.search-button,.header-install-copy{display:none}.mobile-header-actions,.mobile-crumb-row{display:inline-flex}.site-layout{--layout-side-padding:1.25rem;padding-inline:var(--layout-side-padding);display:block}.sidebar-panel{padding-top:1.35rem}.sidebar-shell{display:none}.sidebar-shell.is-open{inset:calc(var(--mobile-header-height) + .5rem) .8rem auto;z-index:55;top:calc(var(--mobile-header-height) + .5rem);max-height:calc(100vh - var(--mobile-header-height) - 1rem);border:1px solid var(--border-strong);box-shadow:var(--shadow-xl);background:#0a0e0cfa;border-radius:1rem;padding:.5rem .55rem .9rem;display:block;position:fixed}.mobile-sidebar-backdrop{inset:var(--mobile-header-height) 0 0;z-index:50;background:#02061780;display:block;position:fixed}.content-frame{padding-top:1.85rem}.article-description,.page-content,.footer-nav,.site-footer-inner{max-width:none}.page-content{line-height:1.75}.page-content h2,.page-content h3,.page-content h4{margin-top:2.7rem;margin-bottom:.95rem}.page-content p,.page-content ul,.page-content ol,.page-content blockquote,.page-content table,.page-content pre:not(.ctx-code-block-pre){margin:1rem 0 1.18rem}.ctx-doc-card-group-cols-2{grid-template-columns:1fr}}@media (width<=640px){.site-header-inner{padding:0}.header-top{padding:0 1.25rem}.content-frame{padding-top:1.9rem}.site-layout{--layout-side-padding:1.25rem;padding-inline:var(--layout-side-padding)}.article-section-label{font-size:.8rem}.article-header{gap:.78rem;margin-bottom:1.95rem}.article-header h1{font-size:1.5rem;line-height:32px}.article-shell[data-tab=blog] .article-title-row h1{max-width:none;line-height:32px}.article-shell[data-tab=blog] .article-description{font-size:1.125rem;line-height:28px}.article-title-row{display:block}.page-actions-desktop{display:none}.page-actions-mobile{margin-top:.28rem;margin-left:0;display:inline-flex}.page-actions-mobile .page-actions-copy,.page-actions-mobile .page-actions-more{min-height:2.36rem}.page-actions-mobile .page-actions-copy{padding-inline:1.04rem}.footer-nav{flex-wrap:wrap;margin-top:2.95rem}.page-content{font-size:.95rem;line-height:1.7}.page-content p,.page-content ul,.page-content ol,.page-content blockquote,.page-content table,.page-content pre:not(.ctx-code-block-pre){margin:1.08rem 0 1.28rem}.page-content h2,.page-content h3,.page-content h4{margin-top:2.9rem}.page-content p,.page-content li{line-height:1.7}.page-content li+li{margin-top:.34rem}.page-content pre:not(.ctx-code-block-pre){border-radius:.82rem;padding:.88rem .98rem}.post-byline{margin:.26rem 0 1.55rem}.post-divider{margin:1.55rem 0 2.5rem}.article-shell[data-tab=blog] .page-content p{margin:1.08rem 0 1.34rem;font-size:1rem;line-height:1.84}.article-shell[data-tab=blog] .page-content blockquote{margin:1.55rem 0 1.9rem}.article-shell[data-tab=blog] .page-content h2{margin-top:3.5rem}.mobile-crumb-row{padding:0 1.25rem}.site-footer-inner{gap:2rem;padding-top:4.25rem;padding-bottom:4.25rem}.site-footer-main{flex-direction:column;min-height:0}.site-footer-columns{grid-template-columns:1fr;gap:1.8rem}.site-footer-brand-column{min-width:0}.ctx-home-title-heading{font-size:1.5rem;line-height:1.18}.ctx-home-title-tagline{font-size:1.125rem}}@keyframes site-scanline-drift{0%{transform:translateY(0)}to{transform:translateY(3px)}}@keyframes site-scanline-flicker{0%{opacity:.17}50%{opacity:.22}to{opacity:.17}}
