.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}:root{--copy-success-color: #4caf50;--explorer-selected-item-background-color: var(--border-color);--site-header-height: 3.75rem}.theme-symphony{--accent-color: #6cb264;--copy-success-color: #4caf50;--accent-text-color: #101510;--box-shadow-color: #000;--explorer-section-heading-color: var(--text-color);--h1-font-weight: 700}.theme-symphony.color-scheme-light{--page-background-color: #fff;--text-color: #20251f;--border-color: #dce3da;--code-background-color: #f0f3ef;--code-block-border-color: var(--border-color);--header-color: color-mix(in srgb, var(--page-background-color), transparent 5%);--header-text-color: var(--text-color);--explorer-background-color: var(--header-color);--explorer-text-color: var(--header-text-color);--header-control-color: var(--page-background-color);--header-control-text-color: var(--text-color);--header-control-hover-text-color: color-mix(in srgb, var(--header-control-text-color), black 18%);--header-control-border-color: var(--border-color);--header-control-hover-color: var(--page-background-color);--header-menu-hover-color: var(--page-background-color);--scrim-color: color-mix(in srgb, var(--box-shadow-color), transparent 50%);color-scheme:light}.theme-symphony.color-scheme-dark{--page-background-color: #16171e;--text-color: #eef1ed;--border-color: #343740;--code-background-color: #20222a;--code-block-border-color: var(--border-color);--header-color: color-mix(in srgb, var(--page-background-color), transparent 5%);--header-text-color: var(--text-color);--explorer-background-color: var(--header-color);--explorer-text-color: var(--header-text-color);--header-control-color: var(--page-background-color);--header-control-text-color: var(--text-color);--header-control-hover-text-color: color-mix(in srgb, var(--header-control-text-color), black 18%);--header-control-border-color: var(--border-color);--header-control-hover-color: var(--page-background-color);--header-menu-hover-color: var(--page-background-color);--scrim-color: color-mix(in srgb, var(--box-shadow-color), transparent 50%);color-scheme:dark}@font-face{font-family:DavaSans;src:url(/fonts/DavaSans-Light.ttf) format("truetype");font-weight:300;font-style:normal;font-display:block}@font-face{font-family:DavaSans;src:url(/fonts/DavaSans-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:DavaSans;src:url(/fonts/DavaSans-Medium.ttf) format("truetype");font-weight:500;font-style:normal;font-display:block}@font-face{font-family:DavaSans;src:url(/fonts/DavaSans-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:block}.theme-dava{--dava-orange: #ff5640;--dava-orange-2: #d63b10;--dava-blue: #192b37;--dava-gray: #e9e9e9;--dava-gray-blue: #30404b;--dava-white: #fff;--accent-color: var(--dava-orange);--h1-font-weight: 500;--site-font: "DavaSans", Helvetica, system-ui, sans-serif}.theme-dava.color-scheme-light{--box-shadow-color: var(--dava-blue);--explorer-section-heading-color: var(--dava-orange-2);--page-background-color: var(--dava-white);--text-color: var(--dava-blue);--border-color: var(--dava-gray);--code-background-color: rgba(0, 0, 0, .1);--code-block-border-color: var(--border-color);--header-color: var(--dava-blue);--header-text-color: white;--explorer-background-color: var(--page-background-color);--explorer-text-color: var(--text-color);--header-control-color: color-mix(in srgb, #192b37, white 12%);--header-control-text-color: #fff;--header-control-hover-text-color: color-mix(in srgb, var(--header-control-text-color), black 18%);--header-control-border-color: color-mix(in srgb, #fff, transparent 82%);--header-control-hover-color: color-mix(in srgb, #192b37, white 20%);--header-menu-hover-color: color-mix(in srgb, #192b37, white 20%);--scrim-color: color-mix(in srgb, var(--box-shadow-color), transparent 50%);color-scheme:light}.theme-dava.color-scheme-dark{--box-shadow-color: black;--explorer-section-heading-color: var(--dava-orange);--page-background-color: #192b37;--text-color: #fff;--border-color: var(--dava-gray-blue);--code-background-color: rgba(0, 0, 0, .2);--code-block-border-color: var(--dava-gray-blue);--header-color: color-mix( in srgb, var(--page-background-color), transparent 5% );--header-text-color: var(--text-color);--explorer-background-color: var(--header-color);--explorer-text-color: var(--header-text-color);--header-control-color: var(--page-background-color);--header-control-text-color: var(--text-color);--header-control-hover-text-color: color-mix(in srgb, var(--header-control-text-color), black 18%);--header-control-border-color: var(--dava-gray-blue);--header-control-hover-color: var(--page-background-color);--header-menu-hover-color: var(--page-background-color);--scrim-color: color-mix(in srgb, var(--box-shadow-color), transparent 50%);color-scheme:dark}.theme-dava .brand:before{content:".";color:var(--accent-color);font-size:1.4rem;margin-right:.05rem}:root:not(.theme-dava){--site-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--page-background-color)}body{margin:0;padding-top:var(--site-header-height);background:var(--page-background-color);color:var(--text-color);font-family:var(--site-font);line-height:1.65}h1{font-weight:var(--h1-font-weight)}button,input{font:inherit;color:inherit}button{transition:background-color .15s ease,border-color .15s ease}a{color:inherit;text-decoration-color:color-mix(in srgb,var(--accent-color),transparent 35%);text-underline-offset:.18em}a:hover{color:var(--accent-color)}:focus-visible{outline:3px solid color-mix(in srgb,var(--accent-color),transparent 40%);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.navigation-progress{position:fixed;inset:0 0 auto;z-index:100;height:5px;pointer-events:none;opacity:0;transition:opacity .18s ease}.navigation-progress.active{opacity:1}.navigation-progress.active .navigation-progress-bar{width:72%}.navigation-progress.complete .navigation-progress-bar{width:100%;transition-duration:.15s}.navigation-progress.hiding{opacity:0}.navigation-progress-bar{width:0;height:100%;background:var(--accent-color);transition:width .8s ease,opacity .2s ease}.site-header{height:var(--site-header-height);position:fixed;inset:0 0 auto;z-index:30;display:flex;align-items:center;justify-content:space-between;padding:0 1rem;border-bottom:1px solid var(--border-color);background:var(--header-color);color:var(--header-text-color);backdrop-filter:blur(12px)}.brand{font-weight:800;font-size:1.15rem;text-decoration:none;letter-spacing:-.03em}.header-actions{display:flex;align-items:center;gap:.45rem}.header-actions>.icon-button{width:2.45rem}.header-actions>.search-button{width:auto;padding:0 .65rem}.icon-button{min-height:2.35rem;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:0px solid var(--border-color);border-radius:.55rem;background:transparent;color:var(--text-color);cursor:pointer}.site-header .icon-button{border:0;color:var(--header-control-text-color)}.site-header .icon-button:is(:hover,:focus-visible){color:var(--header-control-hover-text-color)}.site-header .theme-menu-popover{border-color:var(--header-control-border-color);background:var(--header-control-color);color:var(--header-control-text-color)}.site-header .theme-menu-popover button:is(:hover,:focus-visible){color:var(--header-control-hover-text-color)}.theme-menu{position:relative}.theme-menu-trigger{width:auto!important;padding:0 .5rem}.theme-menu-trigger [data-theme-mode-icon]{display:none}.theme-menu-tooltip{position:absolute;top:calc(100% + .5rem);right:0;z-index:41;width:max-content;padding:.35rem .5rem;border-radius:.35rem;background:var(--text-color);color:var(--page-background-color);font-size:.75rem;line-height:1.2;opacity:0;pointer-events:none;transform:translateY(-.2rem);visibility:hidden;transition:opacity .15s ease,transform .15s ease,visibility 0s linear .15s}.theme-menu-popover{position:absolute;top:calc(100% + .5rem);right:0;z-index:40;display:grid;min-width:10rem;padding:.35rem;border:1px solid var(--border-color);border-radius:.65rem;background:var(--page-background-color);color:var(--text-color);box-shadow:0 .8rem 2.5rem color-mix(in srgb,var(--box-shadow-color),transparent 80%)}.theme-menu-popover[hidden]{display:none}.theme-menu-popover button{display:grid;grid-template-columns:1.3rem 1fr 1rem;align-items:center;gap:.5rem;min-height:2.2rem;padding:.35rem .55rem;border:0;border-radius:.4rem;background:transparent;text-align:left;cursor:pointer}.theme-menu-popover button:is(:hover,:focus-visible){background:var(--page-background-color)}.theme-menu-popover [aria-current=false] .menu-check{visibility:hidden}@media(hover:hover)and (pointer:fine){.theme-menu-trigger:hover+.theme-menu-tooltip{opacity:1;transform:translateY(0);visibility:visible;transition-delay:0s}.theme-menu-trigger[aria-expanded=true]+.theme-menu-tooltip{opacity:0;visibility:hidden}}.theme-mode-light [data-theme-mode-icon=light],.theme-mode-dark [data-theme-mode-icon=dark],.theme-mode-system [data-theme-mode-icon=system]{display:block}.color-menu-popover button{grid-template-columns:1fr 1rem}.shell{display:grid;grid-template-columns:minmax(13rem,17rem) minmax(0,50rem) minmax(11rem,15rem);gap:clamp(1rem,3vw,3rem);max-width:92rem;margin:0 auto;padding:0 1.2rem 0 0}.main-content{min-width:0;padding:2.75rem 0 5rem}.explorer,.toc{position:sticky;top:var(--site-header-height);align-self:start;max-height:calc(100vh - var(--site-header-height));overflow-y:auto;padding:1.35rem 0 2rem}.explorer{z-index:1;height:calc(100vh - var(--site-header-height));border-right:1px solid var(--border-color);background:var(--explorer-background-color);color:var(--explorer-text-color)}.explorer-heading{display:flex;justify-content:space-between;align-items:center;padding:0 .45rem .8rem;color:var(--text-color);font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.09em}.explorer-close,.mobile-menu{display:none}.tree-section+.tree-section{margin-top:1.15rem}.tree-section h2{margin:0 0 .4rem;padding:0 .45rem;color:var(--explorer-section-heading-color);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em}.tree-section ul{margin:0;padding-left:.8rem;list-style:none}.tree-section>ul{padding-left:0}.tree-row{display:flex;align-items:center;min-height:1.9rem;font-size:.88rem}.tree-row a{flex:1;min-width:0;padding:.22rem .4rem;overflow:hidden;border:0;border-radius:.35rem;border-top-right-radius:0;border-bottom-right-radius:0;background:transparent;text-align:left;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.explorer-link-overlay{position:fixed;z-index:2;box-sizing:border-box;padding:.22rem .4rem;border-radius:.35rem;background:var(--explorer-background-color);color:var(--accent-color);font-size:.88rem;text-align:left;white-space:nowrap;pointer-events:none}.explorer-link-overlay[data-active=true]{background:var(--explorer-selected-item-background-color);color:var(--accent-color);font-weight:650}.folder-toggle{flex:1;min-width:0;padding:.22rem .4rem;overflow:hidden;border:0;border-radius:.35rem;background:transparent;text-align:left;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.tree-node.active>.tree-row a{background:var(--explorer-selected-item-background-color);color:var(--accent-color);font-weight:650}.tree-node.collapsed>ul{display:none}.tree-toggle{width:1.4rem;height:1.4rem;display:grid;place-items:center;flex:0 0 auto;padding:0;border:0;background:transparent;cursor:pointer;transition:transform .15s ease}.tree-toggle[aria-expanded=true]{transform:rotate(90deg)}.tree-spacer{width:1.4rem;flex:0 0 auto}.toc h2{margin:0 0 .4rem;padding:0 .45rem;color:var(--text-color);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em}.toc nav{display:grid}.toc a{padding:.25rem .5rem .25rem calc(.5rem + (var(--depth) - 2) * .65rem);border-left:2px solid var(--border-color);color:var(--text-color);font-size:.82rem;line-height:1.35;text-decoration:none}.toc a.active{border-color:var(--accent-color);color:var(--accent-color)}.mobile-toc{display:none}.article{font-size:1.02rem}.article-header{margin-bottom:2.2rem}.article-header h1{margin:0;font-size:clamp(2rem,6vw,3rem);line-height:1.2}.article :where(h2,h3,h4,h5,h6){scroll-margin-top:5rem;line-height:1.25;letter-spacing:-.025em}.article h2{margin:2.7rem 0 .8rem;font-size:2rem}.article h3{margin:2rem 0 .6rem;font-size:1.3rem}.article :is(p,blockquote){margin:1rem 0}.article p:empty{display:none}.article img{max-width:100%;height:auto}.article a{color:var(--accent-color);text-decoration:none}.article a:hover{text-decoration:underline}.article a.external-link{color:var(--text-color);text-decoration:underline;text-decoration-color:var(--accent-color)}.article a.external-link:hover{color:var(--accent-color)}.article a.external-link:after{width:.85em;height:.85em;margin-left:.2em;display:inline-block;background:currentColor;content:"";mask:url(/icons/lucide/external-link.svg) center/contain no-repeat;vertical-align:-.05em}.article a.data-footnote-backref{text-decoration:none}.article sup a:before{content:"["}.article sup a:after{content:"]"}.article .footnote-reference{white-space:nowrap}.article pre{overflow-x:auto;padding:1rem;border:1px solid var(--code-block-border-color, var(--border-color));border-radius:.7rem .3rem .7rem .7rem;background:var(--code-background-color)}.article .code-block{position:relative}.article .code-language{position:absolute;top:.1rem;right:.3rem;color:var(--code-block-language-label-color, #9198a1);font-size:.7rem;transition:opacity .15s ease}.article pre code{color:inherit}.article :not(pre)>code{padding:.15em .35em;border-radius:.3rem;background:var(--code-background-color);font-size:.88em}.article blockquote{padding:.15rem 1rem;border-left:3px solid var(--accent-color);background:var(--page-background-color);color:var(--text-color)}.article table{width:100%;display:block;overflow-x:auto;border-collapse:collapse}.article :is(th,td){padding:.55rem .7rem;border:1px solid var(--border-color)}.code-copy-button{position:absolute;top:.5rem;right:.5rem;z-index:1;display:grid;width:2.25rem;height:2.25rem;place-items:center;padding:0;border:0px solid var(--border-color);border-radius:.4rem;background:#0000;color:var(--header-text-color);cursor:pointer;opacity:0;pointer-events:none}.code-copy-button svg{width:1.125rem;height:1.125rem}.code-copy-button .copy-check-icon{display:none}.code-copy-button[data-copied=true]{opacity:1;pointer-events:auto;color:var(--copy-success-color)}.code-copy-button[data-copied=true] .copy-icon{display:none}.code-copy-button[data-copied=true] .copy-check-icon{display:block}.article .code-block:is(:hover,:focus-within) .code-copy-button{opacity:1;pointer-events:auto}.article .code-block:is(:hover,:focus-within) .code-language{opacity:0}.two-column{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}.home-hero{padding:clamp(3rem,12vh,8rem) 0}.home-hero .eyebrow{color:var(--accent-color);font-weight:750}.home-hero h1{max-width:14ch;margin:.5rem 0 1rem;font-size:clamp(2.7rem,8vw,5.5rem);line-height:.98;letter-spacing:var(--h1-letter-spacing, -.06em)}.home-hero p{max-width:42rem;color:var(--text-color);font-size:1.2rem}.home-hero a{display:inline-block;margin-top:1rem;padding:.7rem 1rem;border-radius:.55rem;background:var(--accent-color);color:var(--accent-text-color);font-weight:750;text-decoration:none}.article .callout{--callout-color: #4f8ddb;margin:1rem 0;border:1px solid color-mix(in srgb,var(--callout-color),var(--border-color) 65%);border-radius:.7rem;background:color-mix(in srgb,var(--callout-color),var(--page-background-color) 92%);color:var(--text-color);overflow:hidden}.article .callout[data-callout=abstract]{--callout-color: #3d9f9a}.article .callout[data-callout=tip]{--callout-color: #3a9ebd}.article .callout[data-callout=success]{--callout-color: #4caa70}.article .callout[data-callout=question]{--callout-color: #bd8a32}.article .callout[data-callout=warning]{--callout-color: #d77c2f}.article .callout[data-callout=failure],.article .callout[data-callout=danger],.article .callout[data-callout=bug]{--callout-color: #cf5a5a}.article .callout[data-callout=example]{--callout-color: #8b70c7}.article .callout[data-callout=quote]{--callout-color: var(--text-color)}.article .callout-title{align-items:center;color:var(--callout-color);display:flex;font-weight:750;gap:.45rem;line-height:1.35;padding:.7rem .9rem}.article details.callout>.callout-title{cursor:pointer;list-style:none}.article details.callout>.callout-title::-webkit-details-marker{display:none}.article .callout-toggle,.article .callout-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.article .callout-toggle{width:1rem;height:1rem;flex:0 0 auto;transition:transform .15s ease}.article details.callout[open]>.callout-title .callout-toggle{transform:rotate(90deg)}.article .callout-icon{width:1.1rem;height:1.1rem;flex:0 0 auto}.article .callout>:not(.callout-title){margin-left:.9rem;margin-right:.9rem}.article .callout>:last-child{margin-bottom:.8rem}.search-dialog{width:min(42rem,100% - 2rem);max-height:min(80vh,42rem);padding:0;border:1px solid var(--border-color);border-radius:.85rem;background:var(--page-background-color);color:var(--text-color);box-shadow:0 2rem 5rem color-mix(in srgb,var(--box-shadow-color),transparent 67%)}.search-dialog::backdrop{background:var(--scrim-color);backdrop-filter:blur(3px)}.search-header{display:flex;align-items:center;gap:.65rem;padding:.8rem 1rem;border-bottom:1px solid var(--border-color)}.search-header input{flex:1;border:0;outline:0;background:transparent;font-size:1.05rem}.search-body{padding:.7rem;overflow-y:auto}.search-body h3{margin:.65rem .4rem .3rem;color:var(--text-color);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.search-results{display:grid}.search-results a{padding:.65rem .7rem;border-radius:.45rem;text-decoration:none}.search-results a:is(:hover,:focus){background:var(--page-background-color)}.search-results strong{color:var(--accent-color)}.drawer-backdrop{display:none}@media(max-width:70rem){.shell{grid-template-columns:minmax(13rem,16rem) minmax(0,1fr)}.toc{display:none}.mobile-toc{display:block;margin-bottom:2rem;padding:.7rem 1rem;border:1px solid var(--border-color);border-radius:.6rem;background:var(--page-background-color)}.mobile-toc nav{display:grid;margin-top:.7rem}.mobile-toc a{padding:.2rem 0;color:var(--text-color)}}@media(max-width:46rem){.site-header{padding:0 .7rem}.brand{display:none}.mobile-menu{width:auto!important;display:inline-flex;padding:0 .65rem}.shell{display:block;padding:0 1rem}.main-content{padding-top:1.75rem}.explorer{position:fixed;inset:0 auto 0 0;z-index:50;width:min(20rem,86vw);height:auto;max-height:none;padding:1rem;background:var(--explorer-background-color);transform:translate(-105%);transition:transform .2s ease}.explorer-close{display:inline-flex}.explorer-open .explorer{transform:translate(0)}.drawer-backdrop{position:fixed;inset:0;z-index:45;width:100%;border:0;background:var(--scrim-color)}.explorer-open .drawer-backdrop{display:block}.two-column{grid-template-columns:1fr}}@media(hover:none),(pointer:coarse){.code-copy-button{opacity:1;pointer-events:auto}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}.navigation-progress{display:none}}
