:root{color-scheme:dark;--muted:var(--arc-text-body);--line:rgba(147,164,193,.13);--accent:var(--arc-accent-blue)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:94px}body{margin:0;background:var(--arc-page-bg);color:var(--arc-text);font-family:var(--arc-font-body);font-size:14px;-webkit-font-smoothing:antialiased}button,input{font:inherit}a{color:inherit;text-decoration:none}button{color:inherit;cursor:pointer}button,a,input{outline-offset:5px}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--arc-focus)}[hidden]{display:none!important}header{height:64px;border-bottom:1px solid var(--line);position:fixed;inset:0 0 auto;z-index:20;display:flex;align-items:center;gap:24px;padding:0 32px;background:#04060cf5;backdrop-filter:blur(18px)}.brand{display:flex;gap:12px;align-items:center;font:600 15px var(--arc-font-heading);letter-spacing:4px;white-space:nowrap}.brand svg{width:27px;height:32px}.docs-label{color:#8c9ab3;border-left:1px solid var(--line);padding-left:21px;font-size:13px}.topnav{display:flex;align-items:center;gap:8px;margin-left:auto;white-space:nowrap}.topnav a{padding:8px 13px;color:#9daac1;border-radius:8px}.topnav a.current{color:var(--arc-text);background:#111725}.topnav span{color:#697994;font-size:12px}.search-trigger{display:flex;align-items:center;gap:10px;width:270px;padding:9px 12px;border-radius:9px;background:#0c101a;border:1px solid var(--line);text-align:left;color:#7f8ca5;font-size:13px}.search-trigger svg,dialog svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7}.search-trigger kbd{margin-left:auto;white-space:nowrap;font:11px var(--arc-font-body);color:#a2aec3;border:1px solid #ffffff16;border-radius:4px;padding:1px 5px}.github{color:#a8b4ca;display:flex}.github svg{width:21px;height:21px}.primary{background:var(--arc-primary-background);border:1px solid var(--arc-primary-border);border-radius:8px;padding:9px 15px;box-shadow:0 4px 24px #5865ee22;font-weight:600;white-space:nowrap}.primary span{margin-left:9px}.sidebar{position:fixed;top:64px;bottom:0;left:0;width:248px;padding:30px 22px 90px 25px;overflow:auto;scrollbar-width:thin;scrollbar-color:#263048 transparent;border-right:1px solid var(--line)}.nav-group{margin-bottom:26px}.nav-group h2{font-size:12px;font-weight:600;color:#e0e7f4;margin:0 0 11px;padding:0 12px}.nav-group a{display:flex;gap:11px;align-items:center;padding:8px 12px;border-radius:7px;color:#92a0b8;line-height:19px;font-size:13px;margin:2px 0}.nav-group a:hover{background:#0e1421;color:#e4ecfc}.nav-group a.active{color:#a6c6ff;background:#15213a;box-shadow:inset 2px 0 #7299ff}.nav-group .nav-icon{font-size:15px;width:17px;color:#71839f;display:inline-flex;justify-content:center}.nav-group a.active .nav-icon{color:#89b1ff}.nav-group .chevron{margin-left:auto;color:#61708a;font-size:16px}.sidebar-footer{padding:18px 12px 4px;border-top:1px solid var(--line);color:#8e9eb8;font-size:11px}.sidebar-footer small{display:block;margin:8px 0 0 13px;color:#56647e;font-size:10px;letter-spacing:.04em}.status-dot{display:inline-block;height:5px;width:5px;border-radius:50%;background:var(--arc-live);margin-right:8px;box-shadow:0 0 9px #5fe9bd35}main{margin-left:248px;padding-top:64px;min-height:100vh}.hero{height:374px;position:relative;overflow:hidden;display:flex;justify-content:center;text-align:center;align-items:center}.hero-grid{position:absolute;inset:0;background:radial-gradient(ellipse at 52% 15%,#497ce322,transparent 65%),radial-gradient(ellipse at 70% 30%,#765cec12,transparent 60%)}.hero-grid:after{content:'';position:absolute;inset:0;background-image:var(--arc-stage-grid-image);background-size:48px 48px;mask-image:radial-gradient(ellipse at center top,#0007,transparent 65%)}.hero-copy{position:relative;margin-top:33px;z-index:2}.eyebrow{font:10px var(--arc-font-mono);letter-spacing:2.3px;color:#88a8db}.hero h1{font:600 38px/1.2 var(--arc-font-heading);letter-spacing:-1.8px;margin:17px 0}.hero p{font-size:18px;line-height:1.6;color:#9baac4;margin:0}.hero-art{position:absolute;inset:0;pointer-events:none;opacity:.5}.hero-art svg{position:absolute;width:240px;height:200px;fill:none;stroke:#5688d0;stroke-width:1}.hero-art .art-left{left:7%;top:70px;transform:rotate(-12deg);opacity:.7}.hero-art .art-top{left:48%;top:-92px;opacity:.7}.hero-art .art-right{right:6%;top:90px;transform:rotate(9deg);stroke:#8971d8;opacity:.7}.cards{max-width:736px;margin:12px auto 0;display:grid;grid-template-columns:1fr 1fr;gap:42px 24px}.card{display:block;min-width:0}.card-art{height:207px;border:1px solid #3857834a;border-radius:17px;background:radial-gradient(ellipse at 50% 95%,#284d862e,transparent 90%),#0a111f;position:relative;overflow:hidden;transition:border-color .2s,transform .2s}.card-art:before{content:'';position:absolute;inset:0;background-image:linear-gradient(#5a86d418 1px,transparent 1px),linear-gradient(90deg,#5a86d418 1px,transparent 1px);background-size:27px 27px;mask-image:radial-gradient(ellipse,#000,transparent 90%)}.card:nth-child(2) .card-art{background:radial-gradient(ellipse at 50% 90%,#6748b32b,transparent 95%),#0d1021;border-color:#59487954}.card:nth-child(3) .card-art{background:radial-gradient(ellipse at 50% 90%,#31636d30,transparent 95%),#08141b;border-color:#36596369}.card:nth-child(4) .card-art{background:radial-gradient(ellipse at 50% 90%,#36488438,transparent 95%),#0c1120}.card-art>svg{position:absolute;width:100%;height:100%;overflow:visible}.card:hover .card-art{border-color:#6d96e6;transform:translateY(-3px)}.card h2{font-size:16px;font-weight:600;margin:19px 0 6px;display:flex;align-items:center;justify-content:space-between;letter-spacing:-.15px}.card h2 span{color:#536b90;font-size:18px;transition:color .2s}.card:hover h2 span{color:#accaff}.card p{font-size:15px;line-height:1.65;color:#8d9db9;margin:0;max-width:330px}.home-footer{max-width:736px;margin:53px auto 28px;padding-top:22px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:11px;color:#61718d}.home-footer a{color:#8fa3c5}.article-layout{max-width:1120px;margin:0 auto;padding:45px 48px 70px;display:grid;grid-template-columns:minmax(0,740px) 175px;gap:54px}.article-tools{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--accent);margin-bottom:13px}.article-tools button{border:1px solid var(--line);background:transparent;border-radius:7px;padding:6px 9px;font-size:11px;color:#9baac3}.article-tools span span{margin-left:6px}article{min-width:0}article h1{font:600 34px/1.2 var(--arc-font-heading);letter-spacing:-1px;margin:0 0 23px}article h2{font:600 23px/1.3 var(--arc-font-heading);margin:38px 0 16px;letter-spacing:-.5px}article h3{font:600 17px var(--arc-font-heading);margin:26px 0 12px}article p,article li{color:#a5b2c9;font-size:15px;line-height:1.85}article p{margin:15px 0}article a{color:#9abdff;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#597bc565}article strong{color:#dde6f5;font-weight:600}article p code,article li code,article td code{background:#131c2b;border:1px solid #26354c;color:#c0d6ff;border-radius:4px;padding:1px 4px;font:12px var(--arc-font-mono)}article pre{position:relative;background:#090f1b;border:1px solid #243047;border-radius:10px;overflow:auto;margin:22px 0 25px;padding:68px 22px 22px;line-height:1.8;font-size:12px}article pre:before{content:attr(data-language);position:absolute;top:0;left:0;right:0;height:32px;border-bottom:1px solid #ffffff09;padding:8px 15px;font:11px var(--arc-font-body);color:#8c9dbb;background:#0f1623}article pre code{font-family:var(--arc-font-mono);color:#bccde5}article pre .copy-code{position:absolute;top:6px;right:9px;background:none;border:0;color:#9caac0;font-size:11px}article blockquote{margin:20px 0;border-left:2px solid #779dff;padding:1px 18px;background:#12213a55;border-radius:0 7px 7px 0}article table{display:block;overflow:auto;width:100%;border-collapse:collapse;font-size:13px;color:#a5b2c9}article th,article td{text-align:left;padding:12px;border-bottom:1px solid var(--line);line-height:1.6;min-width:110px}article th{color:#dce5f5}article li{margin-bottom:7px}.contents{align-self:start;position:sticky;top:110px;font-size:12px;padding-top:5px}.contents>span{font-weight:600;color:#c9d5e9}.contents nav{border-left:1px solid #233046;margin:18px 0 0;padding-left:15px}.contents a{display:block;margin:0 0 13px;color:#8192ae;line-height:1.5}.contents a:hover{color:#afcaff}.toc-note{border-top:1px solid var(--line);margin-top:30px;padding-top:22px;color:#b2c4e0;font-size:11px}.toc-note p{color:#647793;line-height:1.8}.pager{display:flex;justify-content:space-between;gap:20px;margin-top:40px;border-top:1px solid var(--line);padding-top:25px}.pager a{text-decoration:none;font-size:14px}.pager small{display:block;color:#7183a2;font-size:11px;margin-bottom:7px}#related{margin-top:30px;font-size:13px;color:#8598b5}#related a{display:inline-block;margin-right:17px;margin-top:9px}.menu,.scrim{display:none}.skip{position:fixed;top:-80px;left:20px;padding:14px;background:#14274d;z-index:100}.skip:focus{top:10px}dialog{width:min(620px,calc(100% - 32px));margin:15vh auto;border:1px solid #324462;border-radius:14px;padding:0;background:#0b111d;box-shadow:0 35px 130px #000b;color:var(--arc-text)}dialog::backdrop{background:#02040bb5;backdrop-filter:blur(5px)}dialog form{display:flex;align-items:center;padding:18px;border-bottom:1px solid var(--line);gap:12px}dialog label{flex:1;display:flex;gap:13px;align-items:center}dialog input{background:none;border:0;color:var(--arc-text);outline:none;width:100%;font-size:16px}dialog form button{background:#192235;border:1px solid #2a3750;border-radius:5px;padding:3px 5px;font-size:10px;color:#adbbd2}#search-results{padding:10px;max-height:390px;overflow:auto}#search-results a{display:block;padding:12px 13px;border-radius:7px;color:#c7d8f1}#search-results a:hover,#search-results a:focus{background:#162541}#search-results small{display:block;color:#7d90ac;margin-top:5px}#search-results p{padding:12px;color:#8798b4}.search-footer{padding:12px 18px;border-top:1px solid var(--line);font-size:10px;color:#657b9b;display:flex;justify-content:space-between}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#17253d;border:1px solid #3d567d;padding:10px 18px;border-radius:8px;z-index:100;opacity:0;pointer-events:none}#toast.visible{opacity:1}
@media(min-width:1800px){.cards,.home-footer{max-width:820px}.card-art{height:230px}.hero{height:405px}.hero h1{font-size:42px}}
@media(max-width:1250px){header{gap:16px;padding:0 22px}.docs-label{display:none}.search-trigger{width:220px}.sidebar{width:222px;padding-left:16px;padding-right:15px}main{margin-left:222px}.cards,.home-footer{margin-left:44px;margin-right:44px}.article-layout{padding:38px 35px;grid-template-columns:minmax(0,1fr)}.contents{display:none}.hero-art .art-left{left:-6%}.hero-art .art-right{right:-7%}}
@media(max-width:1000px){.topnav a:last-child,.github{display:none}.topnav{gap:0}.topnav a{padding:8px}.search-trigger{width:180px}.search-trigger span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hero-art{opacity:.3}.hero h1{font-size:34px}.hero p{font-size:16px}.card-art{height:175px}.cards{gap:30px 20px;margin-left:28px;margin-right:28px}}
@media(max-width:760px){header{height:60px;padding:0 17px;gap:15px}.menu{display:block;background:none;border:0;font-size:19px;padding:2px;color:#a8b8d1}.brand{font-size:12px;letter-spacing:3px;gap:8px}.brand svg{width:22px;height:26px}.topnav,.primary,.docs-label{display:none}.search-trigger{width:35px;padding:8px;margin-left:auto;justify-content:center}.search-trigger span,.search-trigger kbd{display:none}.sidebar{top:60px;width:260px;transform:translateX(-100%);z-index:19;background:#070b14;transition:transform .2s}.nav-open .sidebar{transform:translateX(0)}.nav-open .scrim{display:block;position:fixed;inset:60px 0 0;z-index:18;background:#0009;border:0}main{margin-left:0;padding-top:60px}.hero{height:290px}.hero-copy{margin-top:0}.hero h1{font-size:34px;margin:14px 0}.hero .eyebrow{font-size:9px}.hero-art .art-left{left:-130px;top:20px}.hero-art .art-right{right:-130px;top:70px}.hero-art .art-top{top:-150px}.cards{margin:0 23px;gap:29px;grid-template-columns:1fr}.card-art{height:200px}.card h2{margin-top:15px}.card p{max-width:none}.home-footer{margin:35px 23px 24px;display:block;line-height:2}.home-footer a{display:block}.article-layout{padding:30px 23px}.article-tools{font-size:11px}article h1{font-size:30px}article p,article li{font-size:14px}article pre{padding-left:15px;padding-right:15px}.search-footer span{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
/* One article column, centered between navigation and the page contents rail. */
@media(min-width:1251px){
 .article-layout{max-width:none;display:block;margin:0 220px 0 0;padding:34px 48px 80px}
 .article-layout article{width:100%;max-width:960px;margin-inline:auto}
 .contents{position:fixed;top:102px;right:35px;width:185px;max-height:calc(100vh - 140px);overflow:auto;scrollbar-width:thin}
 .article-tools{margin-bottom:20px}
 article h1+p{font-size:17px;line-height:1.8;margin-bottom:31px}
}
.contents nav{border:0;padding-left:0}.contents a.active{color:#88b5ff;position:relative}.contents a.active:before{content:'';position:absolute;left:-13px;top:7px;width:4px;height:4px;border-radius:50%;background:#83aeff}.contents{padding-left:15px}.nav-group a.active{box-shadow:none;background:transparent;color:#85aeff;font-weight:600}.nav-group a{padding:7px 12px}.nav-group{margin-bottom:28px}
@font-face{font-family:'Cocoon Syntax';src:url('../../FontWithASyntaxHighlighter-Regular.woff2') format('woff2');font-display:swap}article pre code.language-javascript,article pre code.language-html,article pre code.language-css,article pre code.language-json{font-family:'Cocoon Syntax',var(--arc-font-mono);font-feature-settings:'colr','calt';font-size:13px}article .reference-note{border:1px solid #36598166;background:#10213b70;padding:15px 19px;border-radius:10px;color:#aec6e9;font-size:13px;line-height:1.75;margin:25px 0 32px}

.back-to-site{display:flex;align-items:center;gap:9px;margin:0 0 23px;padding:0 12px 18px;border-bottom:1px solid var(--line);color:var(--arc-text-body);font-size:12px}.back-to-site:hover{color:var(--arc-text)}

article pre code{white-space:pre;tab-size:2}

/* Shared alignment for language labels and copy controls. */
article pre:before{display:none}
article pre .code-toolbar{position:absolute;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;height:40px;padding:0 15px;background:#0f1623;border-bottom:1px solid #ffffff09;font:11px/1 var(--arc-font-body);color:#8c9dbb}
article pre .code-toolbar .copy-code{position:static;line-height:1;padding:8px 0;font:inherit}
.doc-explorer{margin:24px 0;min-width:0}
.doc-explorer,article .reference-note{width:100%;max-width:none}
.explorer-title{font:500 13px var(--arc-font-body);color:var(--arc-text-body);margin-bottom:12px}
.doc-explorer code-explorer{display:block;height:480px;--ce-bg:var(--arc-tabs-background);--ce-panel:var(--arc-page-bg);--ce-border:var(--arc-tabs-border);--ce-text:var(--arc-text);--ce-dim:var(--arc-text-body);--ce-accent:var(--arc-accent-blue)}
@media(max-width:700px){.doc-explorer code-explorer{height:420px}}

@media(max-width:700px){.doc-explorer code-explorer{--side-w:140px}}
#search-input:focus,#search-input:focus-visible{outline:none;box-shadow:none}

/* Animate the native modal and its backdrop together. */
#search-dialog[open]{animation:search-enter 220ms cubic-bezier(.16,1,.3,1) both}
#search-dialog[open]::backdrop{animation:search-backdrop-enter 220ms ease-out both}
#search-dialog.is-closing{animation:search-exit 160ms ease-in both;pointer-events:none}
#search-dialog.is-closing::backdrop{animation:search-backdrop-exit 160ms ease-in both}
@keyframes search-enter{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes search-exit{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(6px) scale(.99)}}
@keyframes search-backdrop-enter{from{opacity:0}to{opacity:1}}
@keyframes search-backdrop-exit{from{opacity:1}to{opacity:0}}
@media(prefers-reduced-motion:reduce){#search-dialog[open],#search-dialog[open]::backdrop{animation:none}}
/* Keep modal scrolling inside search, including during its exit animation. */
html:has(#search-dialog[open]){overflow:hidden}
#search-dialog,#search-results{overscroll-behavior:contain}
