.hub{--bg:#ffffff;--bg-soft:#f6f6f8;--fg:#171719;--ink-2:#5c5e66;--gray-l:#6b6d75;--gray-d:#f1f1f4;--line:rgba(23,23,25,0.09);--line-2:rgba(23,23,25,0.14);--grid-line:rgba(23,23,25,0.055);--shot-line:rgba(115,119,128,0.16);--dots:#c6c8ce;--hover:rgba(23,23,25,0.05);--veil:rgba(255,255,255,0.55);--card:#ffffff;--ind:#ffffff;--ind-shadow:0 1px 2px rgba(23,23,25,0.08),0 2px 8px -2px rgba(23,23,25,0.14);--shadow-pop:0 1px 2px rgba(23,23,25,0.06),0 18px 40px -12px rgba(23,23,25,0.22);--shadow-float:0 1px 2px rgba(23,23,25,0.05),0 24px 48px -16px rgba(23,23,25,0.22);--a1:#ff7733;--a2:#ff4d5b;--accent:linear-gradient(90deg,var(--a1),var(--a2));--rainbow:linear-gradient(135deg,#ffbb33,#ff7733 18%,#ff4d5b 38%,#ff33bb 56%,#9933ff 72%,#6040ff 86%,#3366ff);--ease:cubic-bezier(0.2,0,0,1);--morph:cubic-bezier(0.65,0,0.35,1);--fade:180ms ease;--vw:100vw;--xe:40px;--xb:91px;--xs:272px;--xt:calc(var(--vw) - 190px);--xm:max(320px,(var(--vw) - 696px)/2);--mw:min(696px,var(--vw) - 550px);--gw:min(1400px,var(--vw) - 131px);--xg:max(91px,(var(--vw) - 1400px)/2);color-scheme:light;min-height:100vh;background:var(--bg);color:var(--fg);font:400 16px/24px var(--font-text),ui-sans-serif,system-ui,sans-serif;-webkit-font-smoothing:antialiased;transition:background-color var(--fade),color var(--fade)}.hub.dark{--bg:#171719;--bg-soft:#212227;--fg:#ffffff;--ink-2:#b4b6bd;--gray-l:#8a8c94;--gray-d:#2a2b30;--line:rgba(255,255,255,0.08);--line-2:rgba(255,255,255,0.12);--grid-line:rgba(255,255,255,0.06);--shot-line:rgba(255,255,255,0.1);--dots:#3c3e45;--hover:rgba(255,255,255,0.06);--veil:rgba(23,23,25,0.5);--card:#212227;--ind:#363840;--ind-shadow:0 1px 2px rgba(0,0,0,0.3);--shadow-pop:0 18px 40px -12px rgba(0,0,0,0.6);--shadow-float:0 1px 0 rgba(255,255,255,0.04) inset,0 24px 48px -16px rgba(0,0,0,0.7);color-scheme:dark}@media (max-width:1069px){.hub{--xm:320px;--mw:calc(var(--vw) - 384px)}}@media (max-width:899px){.hub{--xm:16px;--mw:calc(var(--vw) - 32px);--gw:calc(var(--vw) - 32px);--xg:16px}}html.hub-lock{overflow:hidden}.hub :focus-visible{outline:2px solid var(--a1);outline-offset:3px;border-radius:4px}.hub-grad{background:var(--accent);-webkit-background-clip:text;background-clip:text;color:transparent}.hub-header{position:fixed;inset:0 0 auto 0;height:80px;z-index:40;pointer-events:none}.hub-header>*{pointer-events:auto}.hub-header-bg{position:absolute;inset:0;background:var(--bg);pointer-events:none!important;transition:background-color var(--fade)}.hub-header-bg:after{content:"";position:absolute;left:var(--xs);right:calc(var(--vw) - var(--xt) + 24px);top:100%;height:32px;background:linear-gradient(var(--bg),color-mix(in srgb,var(--bg) 0%,transparent));opacity:0;pointer-events:none;transition:opacity .3s ease}html.hub-condensed .hub-header-bg:after{opacity:1}.hub-logo{position:absolute;left:var(--xb);top:24px;display:inline-flex;align-items:baseline;gap:1px;color:var(--fg)}.hub-logo svg{display:block;width:auto;height:24px}.hub-logo-word{font:500 30px/1 var(--font-text);letter-spacing:-.035em}.hub-switch{position:absolute;left:calc(var(--xm) - 14px);top:20px;height:40px}.hub-switch,.hub-switch-item{display:flex;align-items:center;gap:4px}.hub-switch-item{position:relative;height:36px;padding:0 14px;border-radius:999px;font-size:14px;line-height:20px;font-weight:500;color:var(--ink-2);white-space:nowrap;isolation:isolate;transition:color var(--fade),background-color var(--fade)}.hub-switch-item:hover{color:var(--fg);background:var(--hover)}.hub-switch-item[aria-current=page]{color:var(--fg);font-weight:600}.hub-switch-item[aria-current=page]:hover{background:none}.hub-switch-item[aria-current=page]:before{content:"";position:absolute;inset:-2px 0;border-radius:inherit;background:var(--hover);z-index:-1}.hub-switch-item svg{width:14px;height:14px;opacity:.7;transition:transform .2s var(--ease),opacity .2s}.hub-switch-item:hover svg{opacity:1;transform:translate(1px,-1px)}.hub-right{position:absolute;right:42px;top:20px;height:40px;display:flex;align-items:center;gap:6px}.hub-search-slot{flex:none;width:216px;height:40px;margin-right:6px;transition:width .34s var(--morph),margin .34s var(--morph)}html.hub-hero-search .hub-search-slot{width:0;margin-right:-6px}html.hub-switching .hub-search-slot{transition:none}.hub-btn{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 18px;border-radius:999px;font-size:14px;font-weight:600;white-space:nowrap;transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s,background-color .2s,color .2s}.hub-btn:active{transform:scale(.97)}.hub-btn-ghost{color:var(--gray-l)}.hub-btn-ghost:hover{color:var(--fg);background:var(--hover)}.hub-btn-primary{color:#fff;background:var(--accent);box-shadow:0 8px 20px -8px rgba(255,77,91,.7),inset 0 1px 0 rgba(255,255,255,.25)}.hub-btn-primary:hover{transform:translateY(-1px);box-shadow:0 12px 26px -8px rgba(255,77,91,.75),inset 0 1px 0 rgba(255,255,255,.25)}.hub-icon-btn{display:grid;place-items:center;width:40px;height:40px;padding:0;border-radius:999px;color:var(--gray-l);transition:color var(--fade),background-color var(--fade)}.hub-icon-btn:hover{color:var(--fg);background:var(--hover)}.hub-icon-btn svg{width:18px;height:18px}.hub-menu-btn{display:none}@media (max-width:1180px){.hub-login{display:none}}@media (max-width:1060px){.hub-search-slot{width:40px}}.hub-mnav{display:none;position:fixed;top:64px;left:0;right:0;max-height:calc(100vh - 64px);overflow-y:auto;padding:8px 16px 20px;background:var(--bg);border-bottom:2px solid var(--gray-d);z-index:55;opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .2s ease,transform .2s ease}.hub-mnav[data-open]{opacity:1;transform:none;pointer-events:auto}.hub-mnav-sites{margin:8px 0 4px;padding:4px;background:var(--bg-soft);box-shadow:inset 0 0 0 1px var(--line)}.hub-mnav-site,.hub-mnav-sites{display:flex;border-radius:999px}.hub-mnav-site{flex:1;align-items:center;justify-content:center;gap:4px;height:36px;font-size:14px;font-weight:500;color:var(--gray-l)}.hub-mnav-site[aria-current=page]{color:var(--fg);background:var(--ind);box-shadow:var(--ind-shadow)}.hub-mnav-site svg{width:14px;height:14px}.hub-mnav-label{padding:16px 0 6px;font-size:14px;color:var(--gray-l)}.hub-mnav-group{display:flex;justify-content:space-between;align-items:center;width:100%;padding:10px 0;color:var(--gray-l);text-align:left}.hub-mnav-group[aria-expanded=true],.hub-mnav-group[data-active]{color:var(--fg)}.hub-mnav-group svg{width:16px;height:16px;transition:transform .24s var(--ease)}.hub-mnav-group[aria-expanded=true] svg{transform:rotate(90deg)}.hub-mnav-sub{padding:8px 0 2px 12px}.hub-mnav-link,.hub-mnav-sub{font-size:14px;color:var(--gray-l)}.hub-mnav-link{display:block;padding:8px 0 8px 12px}.hub-mnav-link[aria-current=page] span{background:var(--accent);-webkit-background-clip:text;background-clip:text;color:transparent}.hub-mnav-buttons{display:flex;gap:8px;margin-top:16px}.hub-mnav-buttons .hub-btn{flex:1}.hub-mnav-buttons .hub-btn-ghost{box-shadow:inset 0 0 0 1px var(--line-2)}@media (max-width:899px){.hub-header{height:64px;background:var(--bg)}.hub-header-bg{display:none}.hub-logo{left:16px}.hub-logo svg{height:20px}.hub-cta,.hub-login,.hub-switch,.hub-theme{display:none!important}.hub-right{right:12px;top:12px}.hub-menu-btn{display:grid}.hub-search-slot{width:40px}.hub-mnav{display:block}}.hub-lines{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:41}.hub-lines path,.hub-tree-lines path{fill:none;stroke-width:2;stroke-linecap:round}@media (max-width:899px){.hub-lines{display:none}}.hub-column{top:0;height:0;visibility:hidden;pointer-events:none}.hub-column,.hub-search{position:fixed;left:var(--xm);width:var(--mw)}.hub-search{z-index:45;top:256px;height:56px;border-radius:999px;transition:opacity .18s ease}.hub-lines:not([data-placed]),.hub-search:not([data-placed]){visibility:hidden}.hub-search[data-anim]{transition:left .34s var(--morph),top .34s var(--morph),width .34s var(--morph),height .34s var(--morph),opacity .18s ease}html.hub-switching .hub-search,html.hub-switching .hub-search *{transition:none!important}.hub-search-glow,.hub-search-ring{position:absolute;inset:-2px;border-radius:inherit;background:var(--rainbow);pointer-events:none;transition:opacity .42s ease}.hub-search-glow{inset:0;filter:blur(14px);animation:hub-pulse 3.2s ease-in-out infinite}.hub-search-ring{padding:2px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}@keyframes hub-pulse{0%,to{opacity:.22}50%{opacity:.5}}.hub-search-box{position:absolute;inset:0;display:flex;align-items:center;gap:12px;padding:0 22px;border-radius:inherit;background:var(--bg);transition:padding .34s var(--morph),background-color var(--fade),box-shadow var(--fade)}.hub-search-icon{flex:none;width:20px;height:20px;color:var(--gray-l);transition:width .34s var(--morph),height .34s var(--morph),color .3s ease}.hub-search-input{flex:1;min-width:0;height:100%;padding:0;border:0;outline:0;background:none;color:var(--fg);font:500 16px var(--font-text);transition:font-size .34s var(--morph),opacity .3s ease}.hub-search-input:focus-visible{outline:none}.hub-search-input::-moz-placeholder{color:var(--gray-l)}.hub-search-input::placeholder{color:var(--gray-l)}.hub-search-input::-webkit-search-cancel-button{display:none}.hub-search-kbd{display:none;flex:none;padding:1px 7px;border-radius:999px;background:var(--bg);box-shadow:inset 0 0 0 1px var(--line-2);font-size:12px;line-height:16px;color:var(--gray-l)}.hub-search-clear{flex:none;display:grid;place-items:center;width:24px;height:24px;margin-right:-6px;border-radius:999px;color:var(--gray-l);opacity:0;transform:scale(.8);pointer-events:none;transition:opacity .16s ease,transform .16s var(--ease),color .16s ease,background-color .16s ease}.hub-search-clear svg{width:14px;height:14px}.hub-search[data-query] .hub-search-clear{opacity:1;transform:none;pointer-events:auto}.hub-search-clear:hover{color:var(--fg);background:var(--hover)}.hub-search[data-mode=header],.hub-search[data-mode=inline]{cursor:pointer}.hub-search[data-mode=header] :is(.hub-search-ring,.hub-search-glow),.hub-search[data-mode=inline] :is(.hub-search-ring,.hub-search-glow){opacity:0;animation:none}.hub-search[data-mode=header] .hub-search-box,.hub-search[data-mode=inline] .hub-search-box{gap:8px;padding:0 8px 0 14px;background:var(--bg-soft);box-shadow:inset 0 0 0 1px var(--line)}.hub-search[data-mode=header] .hub-search-icon,.hub-search[data-mode=inline] .hub-search-icon{width:16px;height:16px}.hub-search[data-mode=header] .hub-search-input,.hub-search[data-mode=inline] .hub-search-input{font-size:14px}.hub-search[data-mode=header] .hub-search-input{pointer-events:none}.hub-search[data-mode=header] .hub-search-kbd,.hub-search[data-mode=inline] .hub-search-kbd{display:inline-block}.hub-search[data-mode=header] .hub-search-clear{display:none}.hub-search[data-mode=header]:hover .hub-search-box{box-shadow:inset 0 0 0 1px var(--line-2)}.hub-search[data-mode=header]:hover .hub-search-icon{color:var(--fg)}.hub-search[data-mode=inline]{z-index:61;cursor:text}.hub-search[data-mode=inline] .hub-search-box{background:var(--bg);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--a1) 55%,transparent),0 0 0 4px color-mix(in srgb,var(--a1) 16%,transparent)}.hub-search[data-mode=inline] .hub-search-icon{color:var(--fg)}.hub-search[data-mode=inline] .hub-search-kbd{opacity:0}.hub-search[data-mode=inline][data-query] .hub-search-kbd{display:none}.hub-search[data-mode=inline] .hub-search-clear{margin-right:0}@media (max-width:1060px){.hub-search[data-mode=header] .hub-search-box{justify-content:center;gap:0;padding:0}.hub-search[data-mode=header] :is(.hub-search-input,.hub-search-kbd){flex:0 0 0;width:0;padding:0;opacity:0;box-shadow:none}}.hub-search[data-mode=overlay]{z-index:61}.hub-search[data-mode=overlay] .hub-search-glow{opacity:.7}.hub-dim{position:fixed;inset:0;z-index:60;background:var(--veil);opacity:0;pointer-events:none;transition:opacity .3s ease}.hub-dim[data-on]{opacity:1;pointer-events:auto}.hub-overlay-head{position:fixed;z-index:61;left:var(--xm);top:176px;width:var(--mw);margin:0;font:600 40px/48px var(--font-text);letter-spacing:-.035em;opacity:0;pointer-events:none;transition:opacity .3s ease}.hub-overlay-head[data-on]{opacity:1}.hub-overlay-head[data-late][data-on],.hub-results[data-late][data-on]{transition-delay:.26s}html.hub-search-open .hub-hero-head{opacity:0}.hub-results{position:fixed;z-index:61;overflow-y:auto;overscroll-behavior:contain;padding:8px;border-radius:20px;background:var(--bg);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-pop);opacity:0;transform:translateY(-6px);transform-origin:top right;pointer-events:none;scrollbar-width:thin;scrollbar-color:var(--gray-d) transparent;transition:opacity .24s ease,transform .24s ease}.hub-results[data-on]{opacity:1;transform:none;pointer-events:auto}.hub-result{display:block;width:100%;padding:10px 12px;border-radius:12px;transition:background-color .14s ease}.hub-result[aria-selected=true]{background:var(--bg-soft)}.hub-result-title{display:block;font-size:16px;line-height:24px;font-weight:500}.hub-result-text{display:block;overflow:hidden;font-size:14px;line-height:20px;color:var(--gray-l);white-space:nowrap;text-overflow:ellipsis}.hub-result-text b{color:var(--fg);font-weight:500}.hub-results-label{padding:8px 12px 4px;font-size:14px;color:var(--gray-l)}.hub-results-empty{padding:10px 12px 2px;font-size:14px;color:var(--gray-l)}.hub-results-empty strong{color:var(--fg);font-weight:500}@media (max-width:899px){.hub-overlay-head{font-size:30px;line-height:36px}}.hub-tree{position:fixed;left:calc(var(--xe) - 4px);top:92px;bottom:0;z-index:20;width:calc(var(--xs) - var(--xe) + 4px);padding-left:4px;overflow-x:hidden;overflow-y:auto;scrollbar-width:none;font-size:14px;line-height:20px}.hub-tree::-webkit-scrollbar{display:none}.hub-tree[data-fade=top]{-webkit-mask-image:linear-gradient(90deg,#000 7px,transparent 0),linear-gradient(transparent,#000 120px);mask-image:linear-gradient(90deg,#000 7px,transparent 0),linear-gradient(transparent,#000 120px)}.hub-tree[data-fade=bottom]{-webkit-mask-image:linear-gradient(90deg,#000 7px,transparent 0),linear-gradient(#000 calc(100% - 160px),transparent);mask-image:linear-gradient(90deg,#000 7px,transparent 0),linear-gradient(#000 calc(100% - 160px),transparent)}.hub-tree[data-fade=both]{-webkit-mask-image:linear-gradient(90deg,#000 7px,transparent 0),linear-gradient(transparent,#000 120px,#000 calc(100% - 160px),transparent);mask-image:linear-gradient(90deg,#000 7px,transparent 0),linear-gradient(transparent,#000 120px,#000 calc(100% - 160px),transparent)}.hub-tree-inner{position:relative;padding-bottom:48px}.hub-tree-lines{position:absolute;left:0;top:0;width:100%;overflow:visible;pointer-events:none}.hub-tree-lines path[data-hover]{opacity:0;transition:opacity .22s ease}.hub-tree-lines path[data-hover][data-on]{opacity:1}.hub-tree-group{position:relative;display:block;width:100%;padding:6px 8px 6px 51px;font-weight:600;color:var(--gray-l);text-align:left;transition:color var(--fade)}.hub-tree-group[data-depth="1"]{padding-left:78px}.hub-tree-group:hover,.hub-tree-group[aria-expanded=true],.hub-tree-group[data-active]{color:var(--fg)}.hub-tree-chevron{position:absolute;left:33px;top:9px;width:14px;height:14px;transition:transform .24s var(--ease)}.hub-tree-group[data-depth="1"] .hub-tree-chevron{left:60px}.hub-tree-group[aria-expanded=true] .hub-tree-chevron{transform:rotate(90deg)}.hub-tree-leaf{display:block;width:100%;padding:6px 8px 6px 51px;color:var(--gray-l);transition:color var(--fade)}.hub-tree-leaf[data-depth="1"]{padding-left:78px}.hub-tree-leaf:hover{color:var(--fg)}.hub-tree-leaf[aria-current=page]{font-weight:600}.hub-tree-leaf[aria-current=page] span{background:var(--accent);-webkit-background-clip:text;background-clip:text;color:transparent}.hub-tree-kids[data-fresh]{animation:hub-kids-in .26s var(--ease)}@keyframes hub-kids-in{0%{opacity:0;transform:translateY(-4px)}}@media (max-width:899px){.hub-tree{display:none}}.hub-toc{position:fixed;left:var(--xt);top:156px;z-index:20;width:150px;font-size:14px;line-height:20px}.hub-toc-title{display:block;margin:0 0 16px;font-weight:600;color:var(--fg);text-align:left}.hub-toc-item{display:block;margin-bottom:12px;color:var(--gray-l);transform-origin:left center;transition:color .3s ease,transform .3s var(--ease)}.hub-toc-item[data-near]{transform:scale(1.025)}.hub-toc-item[aria-current=location]{color:var(--fg);transform:scale(1.06)}.hub-toc-item:hover{color:var(--fg)}@media (max-width:1069px){.hub-toc{display:none}}.hub-main{position:relative;width:var(--mw);margin-left:var(--xm);padding:92px 0 120px}.hub-page{animation:hub-page-in .2s ease}@keyframes hub-page-in{0%{opacity:0}}.hub-h1{margin:0;font:600 40px/48px var(--font-text);letter-spacing:-.035em;text-wrap:balance}.hub-crumb{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;font-size:16px;line-height:24px;font-weight:500;color:var(--gray-l)}.hub-crumb a{transition:color var(--fade)}.hub-crumb a:hover{color:var(--fg)}.hub-crumb-sep{opacity:.6}.hub-hero-head{margin-top:84px;transition:opacity .3s ease}.hub-hero-slot{height:56px;margin-top:32px}.hub-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:40px -24px 0}.hub-tile{position:relative;display:flex;flex-direction:column;padding:28px 24px;border-radius:20px;isolation:isolate;transition:background-color .24s var(--ease),box-shadow .24s var(--ease),transform .24s var(--ease)}.hub-tile:after,.hub-tile:before{content:"";position:absolute;background:var(--grid-line);pointer-events:none;transition:opacity .2s ease}.hub-tile:before{inset:20px auto 20px 0;width:1px}.hub-tile:after{top:0;left:20px;right:20px;height:1px}.hub-tile:nth-child(-n+3):after,.hub-tile:nth-child(3n+1):before{display:none}.hub-tile:nth-child(3n+1):after{left:24px}.hub-tile:nth-child(3n):after{right:24px}.hub-tile:hover{z-index:2;background:var(--card);box-shadow:var(--shadow-float);transform:translateY(-2px)}.hub-tile:hover+.hub-tile+.hub-tile+.hub-tile:after,.hub-tile:hover+.hub-tile:before,.hub-tile:hover:after,.hub-tile:hover:before{opacity:0}.hub-tile-icon{width:32px;height:32px;stroke-width:1.75;color:var(--gray-l)}.hub-tile:hover .hub-tile-icon{stroke:url(#hub-icon-gradient)}.hub-tile-title{margin-top:20px;font-size:18px;line-height:26px;font-weight:600}.hub-tile-text{margin-top:4px;padding-bottom:4px;font-size:15px;line-height:22px;color:var(--gray-l)}.hub-list{margin:0 -12px}.hub-list a{display:block;padding:10px 12px;border-radius:12px;font-weight:600;transition:background-color var(--fade)}.hub-list a:hover{background:var(--bg-soft)}.hub-pn{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:56px}.hub-pn-link{display:flex;flex-direction:column;gap:2px;padding:14px 18px;border-radius:18px;box-shadow:inset 0 0 0 1px var(--line-2);color:var(--gray-l);transition:color var(--fade),background-color var(--fade)}.hub-pn-link[rel=next]{grid-column:2;align-items:flex-end;text-align:right}.hub-pn-link:hover{color:var(--fg);background:var(--bg-soft)}.hub-pn-dir{display:flex;align-items:center;gap:4px;font-size:14px;line-height:20px}.hub-pn-dir svg{width:14px;height:14px}.hub-pn-title{font-size:16px;line-height:24px;color:var(--fg)}@media (max-width:899px){.hub-main{padding-top:88px}.hub-h1{font-size:30px;line-height:36px}.hub-hero-head{margin-top:24px}.hub-hero-slot{margin-top:20px}.hub-tiles{grid-template-columns:1fr;margin:24px -16px 0}.hub-tile{padding:20px 16px}.hub-tile:nth-child(n):before{display:none}.hub-tile:nth-child(n):after{display:block;left:16px;right:16px}.hub-tile:first-child:after{display:none}.hub-pn{grid-template-columns:1fr}.hub-pn-link[rel=next]{grid-column:auto}}.hub-doc{font-size:16px;line-height:24px}.hub-doc p{margin:0 0 16px}.hub-doc h2{margin:44px 0 12px;font:600 22px/28px var(--font-text);letter-spacing:-.015em;scroll-margin-top:104px}.hub-doc h3{margin:28px 0 8px;scroll-margin-top:104px}.hub-doc h3,.hub-doc h4{font:600 16px/24px var(--font-text)}.hub-doc h4{margin:20px 0 8px}.hub-doc ol,.hub-doc ul{margin:0 0 16px;padding-left:22px}.hub-doc ul{list-style:disc}.hub-doc ol{list-style:decimal}.hub-doc li{margin-bottom:4px}.hub-doc li::marker{color:var(--gray-l)}.hub-doc strong{font-weight:600}.hub-doc em{font-style:italic}.hub-doc :is(p:not(.hub-crumb),li) a{text-decoration:none;background:var(--accent);-webkit-background-clip:text;background-clip:text;color:transparent;transition:filter var(--fade)}.hub-doc :is(p:not(.hub-crumb),li) a:hover{filter:brightness(1.3)}.hub-doc code{padding:1px 5px;border-radius:5px;background:var(--bg-soft);box-shadow:inset 0 0 0 1px var(--line);font-family:var(--font-mono),ui-monospace,"SF Mono",Menlo,monospace;font-size:.85em}.hub-doc figure{margin:24px 0}.hub-doc figure[data-width=half]{width:50%}.hub-doc figcaption{margin-top:8px;text-align:left;font-size:14px;line-height:20px;color:var(--gray-l)}.hub-shot{position:relative;display:block;overflow:hidden;border-radius:18px;background:var(--bg-soft)}.hub-shot img{display:block;width:100%;height:auto}.hub-shot:after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px var(--shot-line);pointer-events:none}.hub-callout{display:flex;gap:12px;margin:0 0 20px;padding:16px 20px;border-radius:18px;background:var(--bg-soft)}.hub-callout>svg{flex:none;width:20px;height:20px;margin-top:2px;color:var(--a1)}.hub-callout p:last-child{margin:0}.hub-help-article{padding-top:64px}.hub-help-article .hub-h1{margin-bottom:32px}.hub-lede{margin:-16px 0 32px;font-size:18px;line-height:28px;color:var(--ink-2)}@media (max-width:899px){.hub-help-article{padding-top:24px}}.hub-lane{position:fixed;top:80px;left:0;right:0;z-index:39;height:64px;background:var(--bg);transition:background-color var(--fade)}.hub-lane:after{content:"";position:absolute;left:var(--xs);right:calc(var(--vw) - var(--xt) + 24px);top:100%;height:32px;background:linear-gradient(var(--bg),color-mix(in srgb,var(--bg) 0%,transparent));opacity:0;pointer-events:none;transition:opacity .3s ease}html.hub-condensed .hub-lane:after{opacity:1}.hub[data-site=blog] .hub-header-bg:after{display:none}.hub-tabs{position:absolute;left:var(--xm);top:32px;display:flex;gap:24px;transform:translateY(-50%)}.hub:has(.hub-wide) .hub-tabs{left:var(--xg)}.hub-tab{font-weight:500;color:var(--gray-l);white-space:nowrap;transition:color var(--fade)}.hub-tab:hover{color:var(--fg)}.hub-tab[aria-current=page]{font-weight:600;background:var(--accent);-webkit-background-clip:text;background-clip:text;color:transparent}.hub[data-site=blog] .hub-main{padding-top:168px}.hub-main:has(.hub-wide){width:var(--gw);margin-left:var(--xg)}.hub[data-site=blog] .hub-tree{top:172px}.hub[data-site=blog] .hub-tree-leaf{padding-right:0}.hub[data-site=blog] .hub-tree-leaf span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.hub[data-site=blog] .hub-toc{top:172px}.hub[data-site=blog] .hub-doc :is(h2,h3,details){scroll-margin-top:184px}@media (max-width:899px){.hub-lane{top:64px;height:48px}.hub-lane:after{left:0;right:0}.hub-tabs,.hub:has(.hub-wide) .hub-tabs{left:16px;top:24px}.hub[data-site=blog] .hub-main{padding-top:128px}}.hub-frame{position:relative;display:block;overflow:hidden;border-radius:18px;background:var(--bg-soft)}.hub-frame img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center top;object-position:center top;transform-origin:top center;transition:transform .5s var(--ease)}.hub-frame:after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px var(--shot-line);pointer-events:none}.hub-frame-empty{display:grid;place-items:center;font-size:14px;font-weight:600;color:var(--gray-l)}.hub-lead{position:relative;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);overflow:hidden;border-radius:32px;background:var(--bg-soft)}.hub-lead:after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;box-shadow:inset 0 0 0 1px var(--shot-line);pointer-events:none}.hub-lead-text{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-width:0;padding:56px 56px 56px 48px}.hub-lead .hub-crumb{margin:0;font-size:15px;line-height:22px}.hub-lead-title{margin-top:14px;font:600 44px/48px var(--font-text);letter-spacing:-.035em;text-wrap:balance;transition:opacity var(--fade)}.hub-lead-lede{display:-webkit-box;align-self:stretch;overflow:hidden;margin-top:18px;font-size:18px;line-height:28px;color:var(--ink-2);-webkit-box-orient:vertical;-webkit-line-clamp:3}.hub-lead-more{display:inline-flex;align-items:center;gap:6px;height:40px;margin-top:28px;padding:0 18px;border-radius:999px;font-size:14px;font-weight:600;background:var(--fg);color:var(--bg)}.hub-lead-more svg{width:16px;height:16px;transition:transform .2s var(--ease)}.hub-lead:hover .hub-lead-more svg{transform:translateX(3px)}.hub-lead .hub-frame{min-height:440px;border-radius:0}.hub-lead .hub-frame:after{display:none}.hub-lead .hub-frame img{position:absolute;inset:0;-o-object-position:center;object-position:center}.hub-card:hover .hub-frame img,.hub-lead:hover .hub-frame img{transform:scale(1.012)}.hub-section{margin-top:96px}.hub-section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:28px}.hub-section-head h2{margin:0;font:600 32px/38px var(--font-text);letter-spacing:-.03em}.hub-section-all{display:inline-flex;align-items:center;gap:6px;font-size:15px;font-weight:500;color:var(--gray-l);transition:color var(--fade)}.hub-section-all:hover{color:var(--fg)}.hub-section-all svg{width:16px;height:16px;transition:transform .2s var(--ease)}.hub-section-all:hover svg{transform:translateX(3px)}.hub-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:56px 32px}.hub-card{display:flex;flex-direction:column;align-items:flex-start;min-width:0}.hub-card .hub-frame{width:100%;aspect-ratio:16/10;border-radius:20px}.hub-card-date{margin-top:18px;font-size:14px;line-height:20px;color:var(--gray-l)}.hub-card-title{margin-top:6px;font:600 20px/27px var(--font-text);letter-spacing:-.015em;text-wrap:balance;transition:opacity var(--fade)}.hub-card:hover .hub-card-title{opacity:.7}.hub-lead:hover .hub-lead-title{opacity:.8}.hub-card-lede{display:-webkit-box;align-self:stretch;overflow:hidden;min-height:44px;max-height:44px;margin-top:6px;font-size:15px;line-height:22px;color:var(--ink-2);-webkit-box-orient:vertical;-webkit-line-clamp:2}.hub-listing-head{margin-bottom:40px}.hub-listing-head .hub-h1:first-letter{text-transform:uppercase}.hub-pager{display:flex;justify-content:center;align-items:center;gap:20px;margin-top:72px;font-size:14px;color:var(--gray-l)}.hub-pager button{min-width:20px;color:var(--gray-l);text-align:center;transition:color var(--fade)}.hub-pager button:hover,.hub-pager button[aria-current=page]{color:var(--fg)}.hub-pager button:disabled{opacity:.3;cursor:default}.hub-pager svg{display:block;width:16px;height:16px}@media (max-width:1100px){.hub-lead{grid-template-columns:1fr}.hub-lead .hub-frame{order:-1;min-height:0;aspect-ratio:16/10}.hub-lead-text{padding:32px}.hub-lead-title{font-size:36px;line-height:40px}}@media (max-width:899px){.hub-lead{border-radius:24px}.hub-lead-text{padding:20px}.hub-lead-title{font-size:28px;line-height:32px}.hub-cards{grid-template-columns:1fr;gap:40px}.hub-section{margin-top:64px}.hub-section-head h2{font-size:26px;line-height:32px}}.hub-post .hub-h1{margin-bottom:16px}.hub-post-lede{margin:0 0 16px}.hub-author{display:flex;align-items:center;gap:10px;margin-bottom:32px;font-size:14px}.hub-author img{width:24px;height:24px;border-radius:50%;-o-object-fit:cover;object-fit:cover}.hub-kp{margin-bottom:8px;padding:20px 24px 4px;border-radius:18px;background:var(--bg-soft)}.hub-fix{margin-top:44px}.hub-fix summary{display:flex;align-items:center;gap:8px;font:600 20px/28px var(--font-text);list-style:none;cursor:pointer}.hub-fix summary::-webkit-details-marker{display:none}.hub-fix summary svg{width:18px;height:18px;transition:transform .24s var(--ease)}.hub-fix[open] summary svg{transform:rotate(90deg)}.hub-fix>div{padding-top:16px}.hub-more{margin-top:64px}.hub-more h2{margin-top:0}.hub-more a{display:block;padding:10px 0}.hub-more-title{display:block;font:600 16px/24px var(--font-text);transition:opacity var(--fade)}.hub-more a:hover .hub-more-title{opacity:.75}.hub-more-lede{display:block;margin-top:2px;font-size:14px;line-height:20px;color:var(--gray-l)}.hub-post figure:not([data-width=half]){margin:48px -40px}.hub-post figure:not([data-width=half]) figcaption{padding-inline:40px}.hub-doc blockquote{margin:24px 0;padding-left:20px;border-left:2px solid var(--a1);font-size:20px;line-height:28px}.hub-doc blockquote footer{margin-top:8px;font-size:14px;line-height:20px;color:var(--gray-l)}.hub-doc pre{overflow-x:auto;margin:0 0 20px;padding:16px 20px;border-radius:18px;background:hsl(var(--gray-900));color:hsl(var(--gray-200));font-family:var(--font-mono),ui-monospace,"SF Mono",Menlo,monospace;font-size:13px;line-height:20px}.hub-doc pre code{padding:0;background:none;box-shadow:none;font-size:inherit}.hub-doc table{width:100%;margin:0 0 20px;border-collapse:collapse;font-size:14px;line-height:20px}.hub-doc :is(th,td){padding:8px 12px 8px 0;border-bottom:1px solid var(--line-2);text-align:left;vertical-align:top}.hub-doc th{font-weight:600}.hub-math,.hub-table{overflow-x:auto}.hub-math{margin:0 0 20px}@media (max-width:1180px){.hub-post figure:not([data-width=half]){margin:40px -24px}.hub-post figure:not([data-width=half]) figcaption{padding-inline:24px}}@media (max-width:899px){.hub-post figure:not([data-width=half]){margin:32px 0}.hub-post figure:not([data-width=half]) figcaption{padding-inline:0}}@media (prefers-reduced-motion:reduce){.hub *,.hub :after,.hub :before{animation:none!important;transition-duration:1ms!important}}