:root{--pv-radius-card:14px;--pv-radius-media:10px;--pv-radius-control:10px;--pv-ease:cubic-bezier(.22,.61,.36,1);--pv-shadow-rest:0 1px 2px color-mix(in srgb,var(--color-shadow) 22%,transparent);--pv-shadow-hover:0 18px 36px -18px color-mix(in srgb,var(--color-shadow) 75%,transparent),0 4px 10px -4px color-mix(in srgb,var(--color-shadow) 30%,transparent);--pv-shadow-float:0 10px 30px -14px color-mix(in srgb,var(--color-shadow) 60%,transparent);--pv-ring:0 0 0 3px var(--color-accent-soft);--pv-hover-border:color-mix(in srgb,var(--color-accent) 45%,var(--color-border))}html.dark-mode{--pv-shadow-rest:0 1px 2px color-mix(in srgb,var(--color-shadow) 60%,transparent);--pv-shadow-hover:0 20px 40px -18px var(--color-shadow),0 4px 12px -4px color-mix(in srgb,var(--color-shadow) 70%,transparent);--pv-shadow-float:0 12px 32px -12px var(--color-shadow)}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}.brand-wordmark,h1,h2,h3{font-feature-settings:"palt" 1;text-wrap:balance}p{text-wrap:pretty}::selection{background:var(--color-selection)}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}*{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}@keyframes pv-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.app-shell>main{animation:pv-rise .45s var(--pv-ease) both}@media(min-width:901px){.dark-mode .docs-v3 .site-header .site-header-inner,.dark-mode .site-header .site-header-inner,.docs-v3 .site-header .site-header-inner,.site-header .site-header-inner{background:color-mix(in srgb,var(--color-chrome) 84%,transparent)!important;-webkit-backdrop-filter:blur(18px) saturate(1.25);backdrop-filter:blur(18px) saturate(1.25);box-shadow:var(--pv-shadow-float)!important}}.site-header nav{gap:4px!important;min-width:max-content}@media(min-width:1181px){.site-header .site-header-inner{grid-template-columns:154px max-content minmax(220px,1fr) auto!important}.site-header .site-header-search{width:100%!important;max-width:350px!important;min-width:0!important;justify-self:end}}.docs-v3 .site-header nav a,.site-header nav .roadmap-nav>button,.site-header nav a{height:36px!important;align-self:center;border-radius:999px!important;transition:background .2s var(--pv-ease),color .2s var(--pv-ease),box-shadow .2s var(--pv-ease)!important}.dark-mode .docs-v3 .site-header nav a.is-active,.dark-mode .site-header nav .roadmap-nav>button.is-active,.dark-mode .site-header nav a.is-active,.docs-v3 .site-header nav a.is-active,.site-header nav .roadmap-nav>button.is-active,.site-header nav a.is-active{background:var(--color-surface)!important;box-shadow:var(--pv-shadow-rest),inset 0 0 0 1px var(--color-border-soft)!important}.dark-mode .docs-v3 .site-header nav a.is-active:after,.dark-mode .site-header nav .roadmap-nav>button.is-active:after,.dark-mode .site-header nav a.is-active:after,.docs-v3 .site-header nav a.is-active:after,.site-header nav .roadmap-nav>button.is-active:after,.site-header nav a.is-active:after{display:none!important}.site-header .atlas-actions>a,.site-header .atlas-actions>button,.site-header .theme-toggle{transition:background .2s var(--pv-ease),border-color .2s var(--pv-ease),color .2s var(--pv-ease),transform .2s var(--pv-ease)!important}.site-header .atlas-actions>a:active,.site-header .atlas-actions>button:active{transform:scale(.94)}.site-header-search{transition:border-color .2s var(--pv-ease),box-shadow .2s var(--pv-ease)!important}.site-header-search:focus-within{border-color:var(--color-accent)!important;box-shadow:var(--pv-ring)!important}.site-header-search button{transition:background .2s var(--pv-ease),transform .2s var(--pv-ease)!important}.site-header-search button:hover{transform:translateX(1px)}.roadmap-nav-menu{border-radius:var(--pv-radius-card)!important;box-shadow:var(--pv-shadow-hover)!important;animation:pv-pop .18s var(--pv-ease) both}.roadmap-nav-menu a{border-radius:var(--pv-radius-control)!important;transition:background .16s var(--pv-ease)!important}@media(max-width:900px){.site-header .atlas-actions .bookmarks-action{display:grid!important}body{padding-bottom:calc(64px + env(safe-area-inset-bottom))}}@keyframes pv-pop{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}.home-section-heading h1,.home-section-heading h2{font-size:22px!important;font-weight:700!important;letter-spacing:.01em!important;display:flex;align-items:center;gap:10px}.modern-section-head .home-section-heading h1:before,.modern-section-head .home-section-heading h2:before{content:"";width:4px;height:1em;border-radius:2px;background:var(--color-accent);flex:none}.modern-section-head>a,.modern-sources-head>a,.roadmap-preview-actions>a{display:inline-flex!important;align-items:center;gap:6px;padding:7px 12px!important;border-radius:999px;transition:background .2s var(--pv-ease),color .2s var(--pv-ease)!important}.modern-section-head>a:hover,.modern-sources-head>a:hover,.roadmap-preview-actions>a:hover{background:var(--color-hover);color:var(--color-accent)!important;text-decoration:none!important}.modern-section-head .home-section-heading h2,.modern-section-head>a,.roadmap-login-required,.roadmap-preview-actions>a{white-space:nowrap}@media(max-width:560px){.home-section-heading h1,.home-section-heading h2{font-size:20px!important}.modern-section-head>a,.roadmap-preview-actions>a{padding:6px 8px!important}.modern-section-head{flex-wrap:wrap!important;row-gap:6px!important}.modern-section-head>.home-section-heading{min-width:max-content!important;flex:1 1 auto}.modern-section-head>a,.roadmap-preview-actions{margin-left:auto!important}}.modern-section-head>a svg,.modern-sources-head>a svg,.roadmap-preview-actions>a svg{transition:transform .2s var(--pv-ease)}.modern-section-head>a:hover svg,.modern-sources-head>a:hover svg,.roadmap-preview-actions>a:hover svg{transform:translateX(3px)}.bookmark-docs-feed .docs-feed-row,.docs-v3 .docs-feed-row,.glossary-card,.home-elevated-card,.roadmap-course,.roadmap-guide{transition:transform .28s var(--pv-ease),box-shadow .28s var(--pv-ease),border-color .28s var(--pv-ease),background .28s var(--pv-ease)!important}.bookmark-docs-feed .docs-feed-row,.docs-v3 .docs-feed-row,.glossary-card,.glossary-preview-term,.home-spotlight-card-shell,.roadmap-preview-card{border-radius:var(--pv-radius-card)!important;box-shadow:var(--pv-shadow-rest)!important}.bookmark-docs-feed .docs-feed-row:hover,.dark-mode .bookmark-docs-feed .docs-feed-row:hover,.dark-mode .docs-v3 .docs-feed-row:hover,.dark-mode .glossary-card:hover,.dark-mode .glossary-preview-term:hover,.dark-mode .roadmap-preview-card:hover,.docs-v3 .docs-feed-row:hover,.glossary-card:hover,.glossary-preview-term:hover,.roadmap-preview-card:hover{transform:translateY(-3px)!important;box-shadow:var(--pv-shadow-hover)!important;border-color:var(--pv-hover-border)!important}.bookmark-docs-feed .docs-feed-row:hover,.dark-mode .bookmark-docs-feed .docs-feed-row:hover,.dark-mode .docs-v3 .docs-feed-row:hover,.docs-v3 .docs-feed-row:hover{background:var(--color-surface)!important}.docs-feed-row .article-cover img,.home-spotlight-card>img,.modern-pick-image img,.modern-pick-image>*{transition:transform .6s var(--pv-ease)!important}.docs-feed-row:hover .article-cover img,.home-spotlight-card-shell:hover .home-spotlight-card>img,.modern-pick-row:hover .modern-pick-image img,.modern-pick-row:hover .modern-pick-image>*{transform:scale(1.045)!important}.article-cover,.modern-pick-image{overflow:hidden!important;border-radius:var(--pv-radius-media)!important;isolation:isolate}.home-spotlight-card-shell{transition:transform .32s var(--pv-ease),box-shadow .32s var(--pv-ease)!important}.dark-mode .home-spotlight-card-shell:hover,.home-spotlight-card-shell:hover{transform:translateY(-4px)!important;box-shadow:var(--pv-shadow-hover)!important}.home-spotlight-card{border-radius:calc(var(--pv-radius-card) - 4px)!important;overflow:hidden}.home-spotlight-card h2{font-size:21px!important;line-height:1.4!important;letter-spacing:.01em}.modern-home .home-spotlight-card small{display:inline-block;padding:4px 9px;border-radius:999px;font-size:10px!important;letter-spacing:.06em;background:color-mix(in srgb,var(--color-on-artwork) 16%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.modern-home .home-spotlight-card b{display:inline-flex;align-items:center;gap:6px}.modern-home .home-spotlight-card b svg{transition:transform .2s var(--pv-ease)}.home-spotlight-card-shell:hover .home-spotlight-card b svg{transform:translateX(3px)}.dark-mode .modern-pick-row,.modern-pick-row{margin-left:-14px!important;margin-right:-14px!important;padding-left:14px!important;padding-right:14px!important;border-radius:var(--pv-radius-card)!important}.dark-mode .modern-pick-row:hover,.modern-pick-row:hover{background:var(--color-surface)!important;box-shadow:var(--pv-shadow-hover)!important;transform:translateY(-2px)!important;border-color:transparent!important}.modern-pick-row:hover+.modern-pick-row{border-top-color:transparent!important}html.dark-mode .modern-pick-row{margin-left:0!important;margin-right:0!important;border-radius:0!important}html.dark-mode .modern-pick-row:first-child{border-radius:var(--pv-radius-card) var(--pv-radius-card) 0 0!important}html.dark-mode .modern-pick-row:last-child{border-radius:0 0 var(--pv-radius-card) var(--pv-radius-card)!important}html.dark-mode .modern-pick-row:hover{border-radius:var(--pv-radius-card)!important;background:var(--color-selected)!important}.modern-pick-row h3{font-weight:700!important;transition:color .2s var(--pv-ease)}.modern-pick-row:hover h3{color:var(--color-accent)!important}.modern-pick-row small,.modern-pick-row>div>p{font-size:12px!important}.modern-topics-list>a{margin:0 -12px;padding-left:12px!important;padding-right:12px!important;border-radius:var(--pv-radius-control);transition:background .2s var(--pv-ease)!important}.modern-topics-list>a:hover{background:var(--color-surface)!important}html.dark-mode .modern-topics-list>a{margin:0;border-radius:0}html.dark-mode .modern-topics-list>a:hover{background:var(--color-selected)!important}.modern-topics-list>a strong{transition:color .2s var(--pv-ease)}.modern-topics-list>a:hover strong{color:var(--color-accent)!important;text-decoration:none!important}.modern-topics-list>a:hover,.modern-topics-list>a:hover *{text-decoration:none!important}.modern-topics-list>a>svg{transition:transform .2s var(--pv-ease),color .2s var(--pv-ease)}.modern-topics-list>a:hover>svg{transform:translateX(4px);color:var(--color-accent)}.modern-topics-list small{font-size:12px!important}.roadmap-preview-card h3{font-size:17px!important;font-weight:700!important}.roadmap-preview-card>svg{transition:transform .2s var(--pv-ease),color .2s var(--pv-ease)}.roadmap-preview-card:hover>svg{transform:translateX(4px);color:var(--color-accent)}.dark-mode .roadmap-progress,.roadmap-progress{height:6px!important;border:0!important;border-radius:999px!important;overflow:hidden}.roadmap-progress i{border-radius:999px!important;transition:width .6s var(--pv-ease)}.roadmap-login-required,.roadmap-progress-caption small{font-size:11px!important}.roadmap-login-required{border-radius:999px!important}.glossary-card h2,.glossary-preview-term h3{font-size:21px!important;font-weight:700!important}.glossary-card p,.glossary-preview-term p{font-size:13px!important;line-height:1.75!important}.glossary-card-top>span,.glossary-preview-term-meta>span{border-radius:999px!important;padding:3px 9px!important;font-size:10px!important}.glossary-card-footer>a svg,.glossary-preview-term-link svg{transition:transform .2s var(--pv-ease)}.glossary-card-footer>a:hover svg,.glossary-preview-term:hover .glossary-preview-term-link svg{transform:translateX(3px)}.glossary-search{border-radius:999px!important;transition:border-color .2s var(--pv-ease),box-shadow .2s var(--pv-ease)!important}.glossary-search:focus-within{border-color:var(--color-accent)!important;box-shadow:var(--pv-ring)!important}.glossary-categories button{font-size:12px!important;padding:8px 14px!important;transition:background .2s var(--pv-ease),border-color .2s var(--pv-ease),color .2s var(--pv-ease),transform .2s var(--pv-ease)!important}.glossary-categories button:active{transform:scale(.96)}.glossary-related-tags span{border-radius:999px!important}.glossary-grid{align-items:stretch!important}.glossary-card .glossary-card-footer{margin-top:auto!important;padding-top:16px}.glossary-preview-term-link{font-size:12px!important}.docs-feed-row .feed-copy h2{font-weight:700!important;transition:color .2s var(--pv-ease)}.docs-feed-row:hover .feed-copy h2{color:var(--color-accent)!important}.docs-feed-row .content-kind,.docs-feed-row .feed-tags .tag,.docs-feed-row .feed-tags button{border-radius:999px!important}.docs-feed-row .feed-meta{font-size:11px!important}.feed-toolbar{border-radius:var(--pv-radius-card)!important;box-shadow:var(--pv-shadow-rest)!important}@media(max-width:700px){.dark-mode .docs-v3 .docs-feed .feed-toolbar,.docs-v3 .docs-feed .feed-toolbar{flex-direction:row!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;min-height:0!important;padding:8px 8px 8px 16px!important}.docs-v3 .docs-feed .feed-toolbar>span{width:auto!important;height:auto!important;line-height:1.2}.docs-v3 .docs-feed .feed-toolbar strong{font-size:17px!important}.docs-v3 .docs-feed .feed-toolbar-controls{display:flex!important;width:auto!important;gap:8px!important}.docs-v3 .docs-feed .feed-filter-button{width:auto!important;min-height:0!important;height:34px!important;padding:0 14px!important;border-radius:999px!important}}.docs-pagination button,.feed-filter-button{transition:background .2s var(--pv-ease),border-color .2s var(--pv-ease),color .2s var(--pv-ease)!important}.docs-pagination button:not(:disabled):hover,.feed-filter-button:hover{border-color:var(--color-accent)!important;color:var(--color-accent)!important}.docs-index-search{border-radius:var(--pv-radius-control)!important;transition:border-color .2s var(--pv-ease),box-shadow .2s var(--pv-ease)!important}.docs-index-search:focus-within{border-color:var(--color-accent)!important;box-shadow:var(--pv-ring)!important}.docs-index-group button,.docs-index-group label{border-radius:8px;transition:background .16s var(--pv-ease),color .16s var(--pv-ease)}.docs-index-group button:hover,.docs-index-group label:hover{background:var(--color-hover)}.bookmark-action{transition:background .2s var(--pv-ease),color .2s var(--pv-ease),transform .2s var(--pv-ease)!important}.bookmark-action:active{transform:scale(.9)}.filter-dialog{animation:pv-slide .26s var(--pv-ease) both}.filter-dialog-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:pv-fade .2s ease both}@keyframes pv-slide{0%{transform:translateX(24px);opacity:0}to{transform:none;opacity:1}}@keyframes pv-fade{0%{opacity:0}to{opacity:1}}.dark-mode .modern-source-row:hover,.modern-source-row:hover{background:var(--color-hover)!important}.modern-source-logo{border-radius:12px!important;overflow:hidden;box-shadow:var(--pv-shadow-rest)}.modern-source-row{transition:background .2s var(--pv-ease)!important}.modern-source-row h2{font-weight:700!important}.modern-source-link svg{transition:transform .2s var(--pv-ease)}.modern-source-row:hover .modern-source-link svg{transform:translateX(3px)}.article-modal{border-radius:18px!important;box-shadow:var(--pv-shadow-hover)!important;animation:pv-pop .24s var(--pv-ease) both}.article-modal-backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:pv-fade .2s ease both}.article-modal-cta,.bookmark-empty a,.docs-empty button,.glossary-empty button{transition:background .2s var(--pv-ease),transform .2s var(--pv-ease),box-shadow .2s var(--pv-ease)!important}.article-modal-cta:hover,.bookmark-empty a:hover,.docs-empty button:hover,.glossary-empty button:hover{transform:translateY(-1px);box-shadow:var(--pv-shadow-float)}.article-modal-cta:active,.bookmark-empty a:active,.docs-empty button:active,.glossary-empty button:active{transform:scale(.98)}@media(prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.SiteFooter_footer__vZ3CV{border-top:1px solid var(--color-border);background:var(--color-chrome);color:var(--color-text)}.SiteFooter_inner__ATo2N{width:min(calc(100% - 48px),1200px);margin:0 auto}.SiteFooter_top__ls9_d{display:grid;grid-template-columns:minmax(260px,1fr) minmax(0,1.45fr);grid-gap:80px;gap:80px;padding:64px 0 58px}.SiteFooter_brandColumn__ChX8z{min-width:0}.SiteFooter_brand__mNn0V{display:inline-flex;align-items:center;gap:10px;color:var(--color-text);font-size:24px;font-weight:800;letter-spacing:-1px}.SiteFooter_brandMark__eDlrh{display:block;flex:none;line-height:0}.SiteFooter_brandMark__eDlrh img{object-fit:contain}.SiteFooter_darkMark__FIaak{display:none!important}.SiteFooter_tagline__WHlhl{margin:20px 0 0;color:var(--color-text);font-size:16px;font-weight:700;line-height:1.6;font-feature-settings:"palt" 1}.SiteFooter_description__KHZI0{max-width:290px;margin:8px 0 0;color:var(--color-muted);font-size:13px;line-height:1.8}.SiteFooter_cta__AMU33{display:inline-flex;align-items:center;gap:8px;margin-top:24px;padding:11px 18px;border:1px solid var(--color-border);border-radius:999px;color:var(--color-text);font-size:12px;font-weight:700;transition:background .16s ease,border-color .16s ease,color .16s ease}.SiteFooter_cta__AMU33 svg{transition:transform .2s ease}.SiteFooter_cta__AMU33:hover svg{transform:translateX(3px)}.SiteFooter_cta__AMU33:hover{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent)}.SiteFooter_linkColumns__rOTL6{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:28px;gap:28px}.SiteFooter_linkGroup__zOg5k{display:flex;flex-direction:column;align-items:flex-start;gap:12px}.SiteFooter_linkGroup__zOg5k h2{margin:2px 0 8px;color:var(--color-muted);font-size:11px;font-weight:700;letter-spacing:.12em}.SiteFooter_linkGroup__zOg5k a{display:flex;align-items:center;gap:5px;color:var(--color-text);font-size:13px;line-height:1.5;transition:color .15s ease,transform .2s ease}.SiteFooter_linkGroup__zOg5k a:hover{color:var(--color-accent);transform:translateX(2px)}.SiteFooter_bottom__5rES5{padding:17px 0 22px;border-top:1px solid var(--color-border);display:flex;justify-content:space-between;gap:16px;color:var(--color-muted);font-size:11px}.SiteFooter_legalLinks__gFyff{display:flex;flex-wrap:wrap;gap:16px}.SiteFooter_legalLinks__gFyff a{color:var(--color-muted);text-underline-offset:3px}.SiteFooter_legalLinks__gFyff a:hover{color:var(--color-text)}@media(max-width:800px){.SiteFooter_top__ls9_d{grid-template-columns:1fr;gap:42px;padding:48px 0 42px}.SiteFooter_linkColumns__rOTL6{gap:20px}}@media(max-width:560px){.SiteFooter_inner__ATo2N{width:calc(100% - 40px)}.SiteFooter_linkColumns__rOTL6{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:34px}.SiteFooter_linkGroup__zOg5k:last-child{grid-column:1/-1}.SiteFooter_bottom__5rES5{flex-direction:column;gap:8px;padding:14px 0 18px}.SiteFooter_legalLinks__gFyff{gap:12px}}.dark-mode .SiteFooter_brandMark__eDlrh .SiteFooter_lightMark__iz7vX{display:none!important}.dark-mode .SiteFooter_brandMark__eDlrh .SiteFooter_darkMark__FIaak{display:block!important}.MobileTabBar_bar__pugJk{display:none}@media(max-width:900px){.MobileTabBar_bar__pugJk{position:fixed;z-index:110;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding:6px 8px calc(6px + env(safe-area-inset-bottom));border-top:1px solid var(--color-border);background:color-mix(in srgb,var(--color-chrome) 88%,transparent);-webkit-backdrop-filter:blur(18px) saturate(1.25);backdrop-filter:blur(18px) saturate(1.25);box-shadow:0 -8px 24px -16px color-mix(in srgb,var(--color-shadow) 60%,transparent)}}.MobileTabBar_tab__NzW5r{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;min-height:50px;padding:4px 2px;border-radius:12px;color:var(--color-muted);-webkit-tap-highlight-color:transparent;transition:color .2s ease}.MobileTabBar_icon__UcmkH{display:grid;place-items:center;width:52px;height:28px;border-radius:999px;transition:background .2s ease,transform .2s ease}.MobileTabBar_label__bdVE8{max-width:100%;overflow:hidden;font-size:11px;font-weight:600;line-height:1.2;white-space:nowrap;text-overflow:ellipsis}.MobileTabBar_tab__NzW5r[aria-current=page]{color:var(--color-accent)}.MobileTabBar_tab__NzW5r[aria-current=page] .MobileTabBar_icon__UcmkH{background:var(--color-accent-soft)}.MobileTabBar_tab__NzW5r:active .MobileTabBar_icon__UcmkH{transform:scale(.92)}.MobileTabBar_tab__NzW5r:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}@media(hover:hover){.MobileTabBar_tab__NzW5r:hover{color:var(--color-text)}.MobileTabBar_tab__NzW5r[aria-current=page]:hover{color:var(--color-accent)}}@media(prefers-reduced-motion:reduce){.MobileTabBar_icon__UcmkH,.MobileTabBar_tab__NzW5r{transition:none}}