.site-status_page__79f6D{position:relative;isolation:isolate;display:flex;min-height:70svh;align-items:center;overflow:hidden;border-bottom:1px solid color-mix(in oklab,var(--border) 72%,transparent);color:var(--foreground);background:var(--background)}.site-status_container__hkSNB{position:relative;padding-block:clamp(4rem,9vw,8rem)}.site-status_panel__EKZS_{position:relative;padding-block:clamp(2.5rem,6vw,5rem);border-block:1px solid color-mix(in oklab,var(--border) 76%,transparent)}.site-status_copy__ALK64{position:relative;z-index:1;max-width:52rem}.site-status_context__2EJkV{display:inline-flex;align-items:center;gap:.65rem;color:var(--primary);font-family:var(--font-mono,ui-monospace),SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.6875rem;font-weight:600;letter-spacing:.16em;line-height:1.4;text-transform:uppercase}.site-status_context__2EJkV:before{width:.45rem;height:.45rem;content:"";background:currentColor}.site-status_title__qJELn{max-width:13ch;margin-top:clamp(1.25rem,2.5vw,2rem);font-size:clamp(2.75rem,6.5vw,6.5rem);font-weight:400;letter-spacing:-.055em;line-height:.94;text-wrap:balance}.site-status_description__H3VcD{max-width:42rem;margin-top:clamp(1.5rem,3vw,2.25rem);color:var(--muted-foreground);font-size:clamp(1rem,1.4vw,1.125rem);line-height:1.7}.site-status_actions__iRfRk{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:clamp(2rem,4vw,3rem)}.site-status_ambient__EhFs8{position:absolute;right:-.06em;bottom:-.26em;z-index:0;color:var(--foreground);font-family:var(--font-mono,ui-monospace),SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:clamp(12rem,32vw,30rem);font-weight:400;letter-spacing:-.12em;line-height:.75;opacity:.035;pointer-events:none;user-select:none}@media (max-width:639px){.site-status_page__79f6D{min-height:68svh}.site-status_container__hkSNB{padding-block:3rem}.site-status_panel__EKZS_{padding-block:2.5rem}.site-status_title__qJELn{max-width:12ch;font-size:clamp(2.6rem,13vw,4rem);line-height:.98}.site-status_actions__iRfRk{align-items:stretch;flex-direction:column}.site-status_actions__iRfRk>*{width:100%}.site-status_ambient__EhFs8{right:-.08em;bottom:-.18em;font-size:clamp(11rem,58vw,16rem)}}@media (forced-colors:active){.site-status_page__79f6D,.site-status_panel__EKZS_{border-color:CanvasText}.site-status_ambient__EhFs8{display:none}}.search_dialog__Ug6_W{position:fixed;inset:0;width:min(34rem,calc(100vw - 2rem));max-height:calc(100dvh - 2rem);margin:auto;padding:1.75rem;border:1px solid var(--blog-border);border-radius:.5rem;background:var(--blog-panel);color:var(--blog-ink);overflow-y:auto;overscroll-behavior:contain;box-shadow:0 1rem 5rem rgb(0 0 0/.2)}.search_dialog__Ug6_W::backdrop{background:rgb(0 0 0/.55)}.search_top__3IfP_{display:flex;align-items:start;justify-content:space-between;gap:1rem}.search_top__3IfP_ h2{margin:.25rem 0;font-family:var(--blog-heading),system-ui,sans-serif;font-size:1.5rem;line-height:1.3}.search_close__GA1Ed{flex-shrink:0;width:2.75rem;height:2.75rem;border:1px solid var(--blog-control);border-radius:.375rem;background:transparent;color:inherit;font-size:1.6rem;cursor:pointer}.search_scope__KTtAd{margin:.75rem 0 1.5rem;color:var(--blog-muted);font-size:.9375rem;line-height:1.6}.search_dialog__Ug6_W label{display:block;margin:1rem 0 .45rem;font-size:.875rem;font-weight:600}.search_dialog__Ug6_W input,.search_dialog__Ug6_W select{display:block;width:100%;min-width:0;min-height:2.875rem;padding:.65rem .8rem;border:1px solid var(--blog-muted);border-radius:.375rem;background:var(--blog-bg);color:var(--blog-ink);font:inherit;font-size:1rem}.search_actions__cle99{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}.search_actions__cle99 button{min-height:2.75rem;padding:.65rem 1rem;border:1px solid var(--blog-action);border-radius:.375rem;background:var(--blog-action);color:#fff;font:inherit;font-weight:600;font-size:.875rem;cursor:pointer}.search_actions__cle99 button+button{border-color:var(--blog-control);background:transparent;color:var(--blog-ink)}.search_actions__cle99 button:hover,.search_close__GA1Ed:hover{text-decoration:underline}.search_status__kQGFB{margin:1rem 0;font-size:.875rem;color:var(--blog-muted)}.search_all__Rwjb8{display:inline-block;color:var(--blog-blue);font-size:.9375rem;text-decoration:underline;text-underline-offset:.2em}.search_dialog__Ug6_W :is(button,input,select,a):focus-visible{outline:2px solid var(--blog-blue);outline-offset:3px}@media (max-width:480px){.search_dialog__Ug6_W{padding:1rem}}.github_home__YP3z_{--blog-bg:#fff;--blog-panel:#fff;--blog-ink:#1f2328;--blog-muted:#59636e;--blog-blue:#0969da;--blog-border:#d1d9e0;--blog-control:#59636e;--blog-action:#0969da;font-family:var(--github-blog-font);color:var(--blog-ink);background:var(--blog-bg);font-weight:450}.github_container__xAtmE{width:100%;max-width:1280px;padding-inline:24px;margin-inline:auto}.github_srOnly__Je3Vn{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.github_dark__3_eKs{--blog-ink:#fff;--blog-muted:#9198a1;--blog-border:#3d444d;--blog-blue:#79c0ff;color:var(--blog-ink)}.github_hero__YyiOF{background:#0d1117;padding-block:48px 80px;position:relative;overflow:hidden}.github_hero__YyiOF:before{content:"";position:absolute;inset:auto -14.5% -44px;height:244px;filter:blur(120px);opacity:.6;background:linear-gradient(93.23deg,#f778ba 2.35%,#79c0ff 76.99%)}.github_hero__YyiOF>*{position:relative}.github_heroGrid__8u0eR{display:grid;gap:48px;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:min-content min-content 1fr}.github_heroGrid__8u0eR>:first-child{grid-row:span 3}.github_heroNewsletter__EmZ5H{margin-top:64px}.github_card__VW7s_{min-width:0;position:relative;align-self:start}.github_card__VW7s_:before{content:"";border-bottom:1px solid var(--blog-border);position:absolute;inset:calc(100% + 24px) 0 auto}.github_card__VW7s_:last-child:before,.github_engineeringLead__nVRex:before,.github_lead__e0EXw:before{display:none}.github_image__hb8qi{display:block;position:relative;border-radius:6px;overflow:hidden;aspect-ratio:1200/637}.github_image__hb8qi img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1) translateZ(0);transition:transform .6s cubic-bezier(.165,.84,.44,1);backface-visibility:hidden}.github_card__VW7s_:has(.github_cardLink__7dGuB:hover,.github_cardLink__7dGuB:focus-visible) .github_image__hb8qi img,.github_image__hb8qi:is(:hover,:focus-visible) img{transform:scale(1.02) translateZ(0)}.github_cardTitle__Qm6MB{margin:0 0 8px;font-size:20px;line-height:24px;font-weight:600;letter-spacing:-.01em;overflow-wrap:break-word}.github_cardLink__7dGuB{color:inherit}.github_cardLink__7dGuB:before{content:"";position:absolute;inset:0;z-index:1}.github_cardLink__7dGuB:is(:hover,:focus-visible){color:var(--blog-blue)}.github_topic__S7moP{display:block;position:relative;z-index:2;width:fit-content;color:#8250df;margin-bottom:4px;font-size:14px;font-weight:600;line-height:21px}.github_dark__3_eKs .github_topic__S7moP{color:#f778ba;background:linear-gradient(140deg,#d2a8ff 12.09%,#f778ba 42.58%,#ff7b72 84.96%);background-clip:text;-webkit-text-fill-color:transparent}.github_excerpt__gSfF9{font-size:16px;font-weight:450;line-height:24px;color:var(--blog-muted);margin:0 0 10px}.github_byline__fcI14{display:flex;align-items:center;gap:16px;margin-top:8px;margin-bottom:6px;font-size:14px;line-height:21px}.github_byline__fcI14 p{margin:0}.github_byline__fcI14 a{position:relative;z-index:2;font-weight:600}.github_byline__fcI14 span,.github_byline__fcI14 time{color:var(--blog-muted)}.github_byline__fcI14 time{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;font-weight:400;white-space:nowrap}.github_avatar__6upFF{display:flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;border:1px solid var(--blog-border);border-radius:50%;background:#fff;color:#0d1117}.github_avatar__6upFF svg{width:25px;height:25px}.github_engineeringLead__nVRex .github_image__hb8qi,.github_lead__e0EXw .github_image__hb8qi{margin-bottom:24px}.github_engineeringLead__nVRex .github_cardTitle__Qm6MB,.github_lead__e0EXw .github_cardTitle__Qm6MB{font-size:48px;line-height:52px;letter-spacing:-.03em;font-weight:800}.github_engineeringLead__nVRex .github_byline__fcI14,.github_lead__e0EXw .github_byline__fcI14{margin-top:8px}.github_row__SpIea{display:grid;grid-template-columns:168px minmax(0,1fr);gap:28px}.github_row__SpIea .github_image__hb8qi{aspect-ratio:1}.github_row__SpIea .github_cardBody__6NKYq{padding-right:10.6667px}.github_grid__2oQY1 .github_image__hb8qi{margin-bottom:16px}.github_grid__2oQY1 .github_byline__fcI14{margin-top:8px}.github_discovery__v5e75{padding-block:80px}.github_twoColumns__heETK{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px}.github_sectionHeading__DlvoM{border-top:5px solid var(--blog-ink);border-bottom:1px solid var(--blog-border);padding-block:12px 16px;margin-bottom:24px;display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:59px}.github_sectionHeading__DlvoM h2{font-size:20px;line-height:25px;font-weight:600;margin:0;letter-spacing:0}.github_sectionHeading__DlvoM>a{display:inline-flex;align-items:center;flex-shrink:0;gap:8px;font-size:14px;line-height:21px;font-weight:600}.github_sectionHeading__DlvoM>a:hover{color:var(--blog-blue)}.github_rows__ju9hd{display:grid;grid-template-columns:minmax(0,1fr);gap:48px}.github_recommendedRows__FxGzM{gap:72px}.github_recommendedRows__FxGzM .github_card__VW7s_:before{inset-block-start:calc(100% + 36px)}.github_timeline__WITAo{position:relative;margin:80px 0 0;padding:40px;background:#f6f8fa;border-radius:12px}.github_timeline__WITAo>h2{display:flex;align-items:center;gap:8px;margin:0 0 32px;font-size:24px;line-height:28px;font-weight:800}.github_timeline__WITAo ol{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;list-style:none;padding:0;margin:0;position:relative}.github_timeline__WITAo ol:before{content:"";position:absolute;top:4px;left:0;right:0;height:4px;background:linear-gradient(90deg,#ea6cb6 2.2%,#7a87ff 96.97%)}.github_timeline__WITAo li{position:relative;padding:32px 24px 0 0}.github_timeline__WITAo li:before{content:"";position:absolute;top:0;left:0;width:12px;height:12px;border-radius:6px;border:2px solid #ea6cb6;background:#f6f8fa}.github_timeline__WITAo li:nth-child(2):before{border-color:#cb74cb}.github_timeline__WITAo li:nth-child(3):before{border-color:#ae7cdf}.github_timeline__WITAo li:nth-child(4):before{border-color:#8f83f3}.github_timeline__WITAo time{display:block;margin-top:16px;font-size:12px;line-height:18px;color:var(--blog-muted)}.github_timeline__WITAo h3{margin:0;font-size:20px;line-height:24px;font-weight:600;overflow-wrap:anywhere}.github_timelineAll__4O_dV{position:absolute;right:40px;top:44px;display:inline-flex;align-items:center;gap:4px;font-size:14px;line-height:21px;font-weight:600}.github_engineering__nXiwY{background:#212830;padding-block:48px 80px}.github_engineeringGrid__lWPU4{display:grid;grid-template-columns:2fr 1fr 1fr;grid-auto-rows:min-content 1fr;gap:48px}.github_engineeringGrid__lWPU4>:first-child{grid-row:span 2}.github_engineeringLead__nVRex .github_image__hb8qi{aspect-ratio:1}.github_engineeringGrid__lWPU4>:nth-last-child(-n+2):before{display:none}.github_spotlightBand__Q0nGp{background:#f6f8fa;padding-block:80px}.github_spotlightGrid__ByjsN{display:grid;grid-template-columns:7fr 5fr;grid-auto-rows:min-content 1fr;gap:48px;padding-top:24px}.github_spotlightGrid__ByjsN>:first-child{grid-row:span 2}.github_spotlightLead__m8ch9 .github_image__hb8qi,.github_spotlight__ZjQGJ .github_image__hb8qi{aspect-ratio:16/9;margin-bottom:20px}.github_spotlightLead__m8ch9 .github_cardTitle__Qm6MB,.github_spotlight__ZjQGJ .github_cardTitle__Qm6MB{font-weight:700}.github_spotlightLead__m8ch9 .github_cardTitle__Qm6MB{font-size:48px;line-height:1.2;font-weight:800;letter-spacing:-.03em}.github_spotlightLead__m8ch9:before,.github_spotlight__ZjQGJ:before{display:none}.github_spotlightLead__m8ch9 .github_excerpt__gSfF9,.github_spotlight__ZjQGJ .github_excerpt__gSfF9{margin:0;color:var(--blog-ink)}.github_collections__ECNCy{margin-top:80px}.github_collectionsGrid__72J6B{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:48px;padding-top:24px}.github_collectionsGrid__72J6B article{position:relative;min-width:0}.github_collectionImage__ssoqm{display:block;overflow:hidden;aspect-ratio:16/9;border-radius:6px;margin-bottom:12px}.github_collectionImage__ssoqm img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.165,.84,.44,1)}.github_collectionsGrid__72J6B article:focus-within img,.github_collectionsGrid__72J6B article:hover img{transform:scale(1.02)}.github_collectionsGrid__72J6B h3{font-size:20px;line-height:32px;font-weight:600;margin:0;letter-spacing:-.01em}.github_collectionsGrid__72J6B h3 a:after{content:"";position:absolute;inset:0}.github_collectionsGrid__72J6B p{margin:0;font-size:16px;line-height:24px;color:var(--blog-muted)}.github_news__gjqfR{padding-block:80px}.github_newsGrid__VxEbu{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px}.github_newsGrid__VxEbu>:nth-last-child(-n+2):before{display:none}.github_results__NmHnf{padding-block:48px 80px}.github_results__NmHnf h1{font-size:48px;line-height:52px;font-weight:800;letter-spacing:-.03em;margin:0 0 16px}.github_resultSummary__kyd5v{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:40px;color:var(--blog-muted)}.github_resultSummary__kyd5v p{margin:0}.github_resultSummary__kyd5v button{color:var(--blog-blue)}.github_resultGrid__FKUvc{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:48px}.github_resultGrid__FKUvc .github_card__VW7s_:before{display:none}.github_empty__5tz5N{padding-block:40px}.github_empty__5tz5N h2{font-size:24px;font-weight:600;margin-bottom:16px}.github_pagination__9C0Rc{display:flex;justify-content:space-between;gap:24px;margin-top:48px}@media (min-width:544px) and (max-width:1011px){.github_container__xAtmE{padding-inline:40px}}@media (max-width:1011px){.github_heroGrid__8u0eR,.github_newsGrid__VxEbu,.github_twoColumns__heETK{grid-template-columns:minmax(0,1fr)}.github_heroGrid__8u0eR{grid-auto-rows:auto}.github_heroGrid__8u0eR>:first-child{grid-row:auto}.github_heroGrid__8u0eR>.github_lead__e0EXw:before{display:block}.github_hero__YyiOF:before{bottom:-106px;height:360px;left:-11%;right:-11%}.github_engineeringLead__nVRex .github_cardTitle__Qm6MB,.github_lead__e0EXw .github_cardTitle__Qm6MB{font-size:40px;line-height:44px;letter-spacing:-.01em}.github_twoColumns__heETK{gap:80px}.github_engineering__nXiwY>.github_container__xAtmE,.github_feedSection__EfRqi,.github_news__gjqfR{position:relative;padding-bottom:64px}.github_sectionHeading__DlvoM>a{position:absolute;bottom:0;right:0}.github_engineering__nXiwY>.github_container__xAtmE>.github_sectionHeading__DlvoM>a,.github_news__gjqfR>.github_sectionHeading__DlvoM>a{right:40px}.github_news__gjqfR>.github_sectionHeading__DlvoM>a{bottom:48px}.github_news__gjqfR{padding-bottom:112px}.github_sectionHeading__DlvoM{position:static}.github_recommendedRows__FxGzM{gap:48px}.github_recommendedRows__FxGzM .github_card__VW7s_:before{inset-block-start:calc(100% + 24px)}.github_timeline__WITAo{padding:24px}.github_timelineAll__4O_dV{position:static;margin-top:32px}.github_timeline__WITAo ol{grid-template-columns:minmax(0,1fr)}.github_timeline__WITAo ol:before{inset:8px auto 0 4px;height:calc(100% - 8px);width:4px;background:linear-gradient(180deg,#ea6cb6 2.2%,#7a87ff 96.97%)}.github_timeline__WITAo li{padding:0 0 32px 36px}.github_timeline__WITAo li:before{top:4px}.github_timeline__WITAo li:last-child{padding-bottom:0}.github_engineeringGrid__lWPU4{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto}.github_engineeringGrid__lWPU4>:first-child{grid-column:span 2;grid-row:auto}.github_engineeringGrid__lWPU4>.github_engineeringLead__nVRex:before{display:block}.github_engineeringLead__nVRex .github_image__hb8qi{aspect-ratio:1200/637}.github_spotlightGrid__ByjsN{grid-template-columns:minmax(0,1fr);padding-top:24px}.github_spotlightGrid__ByjsN>:first-child{grid-row:auto}.github_spotlightLead__m8ch9 .github_cardTitle__Qm6MB{font-size:20px;line-height:24px;letter-spacing:-.01em;font-weight:700}.github_collections__ECNCy,.github_spotlightSection__xGy0T{position:relative;padding-bottom:64px}.github_newsGrid__VxEbu>:nth-last-child(2):before{display:block}.github_resultGrid__FKUvc{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:1012px){.github_collectionsGrid__72J6B{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:768px){.github_collectionsGrid__72J6B{grid-template-columns:minmax(0,1fr)}.github_collectionsGrid__72J6B article:not(:last-child){padding-bottom:24px;border-bottom:1px solid var(--blog-border)}}@media (max-width:767px){.github_engineeringLead__nVRex .github_image__hb8qi,.github_lead__e0EXw .github_image__hb8qi{margin-bottom:16px}.github_engineeringLead__nVRex .github_cardTitle__Qm6MB,.github_lead__e0EXw .github_cardTitle__Qm6MB{font-size:28px;line-height:32px}.github_engineeringGrid__lWPU4,.github_resultGrid__FKUvc{grid-template-columns:minmax(0,1fr)}.github_engineeringGrid__lWPU4>:first-child{grid-column:auto}.github_engineeringGrid__lWPU4>:nth-last-child(2):before{display:block}.github_results__NmHnf h1{font-size:28px;line-height:32px;letter-spacing:-.01em}}@media (max-width:543px){.github_row__SpIea{grid-template-columns:minmax(0,1fr);gap:16px}.github_row__SpIea .github_image__hb8qi{aspect-ratio:1200/637}.github_row__SpIea .github_cardBody__6NKYq{padding:0}.github_engineering__nXiwY>.github_container__xAtmE>.github_sectionHeading__DlvoM>a,.github_news__gjqfR>.github_sectionHeading__DlvoM>a{right:24px}.github_byline__fcI14{gap:12px}.github_pagination__9C0Rc,.github_resultSummary__kyd5v{flex-wrap:wrap}}@media (prefers-reduced-motion:reduce){.github_collectionImage__ssoqm img,.github_image__hb8qi img{transition:none}}.newsletter_embedded__jMwLg,.newsletter_section__0Tkv5{--blog-blue:#79c0ff;color:#fff;font-family:var(--github-blog-font)}.newsletter_section__0Tkv5{background:#0d1117;padding-block:80px;position:relative;overflow:hidden}.newsletter_section__0Tkv5:before{content:"";position:absolute;inset:auto -14.5% -44px;height:244px;filter:blur(120px);opacity:.6;background:linear-gradient(93.23deg,#f778ba 2.35%,#79c0ff 76.99%)}.newsletter_container__mlBi1{width:100%;max-width:1280px;margin-inline:auto;padding-inline:24px;position:relative}.newsletter_embedded__jMwLg .newsletter_container__mlBi1{max-width:none;padding:0}.newsletter_border__q30OP{padding:1px;border-radius:6px;background:linear-gradient(92.05deg,#d2a8ff 12.09%,#f778ba 42.58%,#ff7b72 84.96%)}.newsletter_inner__07Rwn{display:grid;grid-template-columns:minmax(0,calc((100% + 48px) * 7 / 12 - 48px)) minmax(0,1fr);column-gap:48px;padding:40px 32px;background:#0d1117;border-radius:5px}.newsletter_copy__ONdBn h2{margin:0 0 2px;font-size:32px;line-height:36px;letter-spacing:-.01em;font-weight:800}.newsletter_embedded__jMwLg .newsletter_inner__07Rwn{min-height:237px}.newsletter_section__0Tkv5[data-variant=article]{background:#151b23;padding-block:64px}.newsletter_section__0Tkv5[data-variant=article]:before{display:none}.newsletter_section__0Tkv5[data-variant=article] .newsletter_border__q30OP{margin-top:5px}.newsletter_section__0Tkv5[data-variant=article] .newsletter_inner__07Rwn{background:#151b23}.newsletter_section__0Tkv5[data-variant=article] .newsletter_form__e9PdL{background:transparent}.newsletter_section__0Tkv5[data-variant=article] .newsletter_controls__Jn0iA{min-height:0}.newsletter_section__0Tkv5[data-variant=article] .newsletter_controls__Jn0iA button,.newsletter_section__0Tkv5[data-variant=article] .newsletter_controls__Jn0iA input{height:32px}.newsletter_copy__ONdBn p{margin:0;font-size:20px;line-height:28px;font-weight:450;color:#9198a1}.newsletter_signup__LLPX7{min-width:0}.newsletter_signup__LLPX7 label{display:block;font-size:14px;font-weight:500;line-height:21px}.newsletter_form__e9PdL{background:#010409}.newsletter_controls__Jn0iA{display:flex;align-items:center;min-height:72px}.newsletter_controls__Jn0iA>span{margin-left:22px;color:#f778ba}.newsletter_controls__Jn0iA input{font:inherit;color:#9198a1;min-width:0;width:100%;height:56px;padding:0 8px;border:0;background:none;opacity:1}.newsletter_controls__Jn0iA input::placeholder{color:#9198a1;opacity:1}.newsletter_controls__Jn0iA button{display:flex;align-items:center;flex-shrink:0;gap:4px;padding:0 24px 0 16px;height:56px;background:none;border:0;font-size:20px;line-height:28px;color:#f778ba;opacity:1}.newsletter_notice__9Ud6i{font-size:12px;line-height:20px;margin:0;padding:4px 0 0;color:#9198a1}.newsletter_notice__9Ud6i a{color:#79c0ff}@layer base{.newsletter_notice__9Ud6i a{text-decoration-line:underline!important}}@media (min-width:544px) and (max-width:1011px){.newsletter_container__mlBi1{padding-inline:40px}}@media (min-width:1012px) and (max-width:1279px){.newsletter_inner__07Rwn{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:1011px){.newsletter_section__0Tkv5[data-variant=article]{padding-block:40px}.newsletter_inner__07Rwn{grid-template-columns:minmax(0,1fr);row-gap:32px}.newsletter_copy__ONdBn h2{font-size:28px;line-height:32px}.newsletter_section__0Tkv5:before{bottom:-106px;height:360px;left:-11%;right:-11%}}@media (max-width:767px){.newsletter_section__0Tkv5[data-variant=article] .newsletter_inner__07Rwn{padding:32px 24px}.newsletter_section__0Tkv5[data-variant=article] .newsletter_controls__Jn0iA{background:#010409}.newsletter_section__0Tkv5[data-variant=article] .newsletter_controls__Jn0iA input{height:56px}.newsletter_section__0Tkv5[data-variant=article] .newsletter_controls__Jn0iA button{height:46px}.newsletter_inner__07Rwn{padding:24px 16px}.newsletter_copy__ONdBn h2{font-size:24px;line-height:28px}.newsletter_controls__Jn0iA{flex-wrap:wrap}.newsletter_controls__Jn0iA input{width:calc(100% - 36px)}.newsletter_controls__Jn0iA button{width:100%;justify-content:center;border-top:1px solid #3d444d}}.resources_resources__vbBzA{--resources-bg:#151b23;--resources-card:#0d1117;--resources-ink:#fff;--resources-muted:#8b949e;--resources-border:#3d444db3;--resources-link:#79c0ff;background:var(--resources-bg);color:var(--resources-ink);font-family:var(--github-blog-font),-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;min-width:0}.resources_inner__n2Eag{max-width:1280px;padding:80px 24px;margin:auto}.resources_inner__n2Eag>h2{margin:0 0 64px;font-family:inherit;text-align:center;font-size:48px;line-height:52px;font-weight:800;letter-spacing:-1.44px}.resources_grid__E9Xwl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}.resources_card__tc781{display:flex;flex-direction:column;align-items:flex-start;padding:32px;min-width:0;min-height:396px;border:1px solid var(--resources-border);border-radius:12px;background:var(--resources-card)}.resources_icon__Zgaq1{display:grid;place-items:center;width:44px;height:44px;margin-bottom:16px;border-radius:50%;flex:0 0 auto}.resources_icon__Zgaq1 svg{width:22px;height:22px}.resources_violet__I6lqq{color:#8250df;background:#f0efff}.resources_brand__m6XVf{color:#0d1117;background:#f6f8fa}.resources_brand__m6XVf svg{width:20px;height:20px}.resources_pink__ujAtl{color:#bf3989;background:#ffeff7}.resources_green___EX5e{color:#1a7f37;background:#dafbe1}.resources_card__tc781>h3{margin:0 0 16px;font-family:inherit;font-size:20px;line-height:28px;letter-spacing:normal;font-weight:600}.resources_description__QeNBW{margin-bottom:auto;color:var(--resources-muted);font-size:16px;line-height:24px;font-weight:450}.resources_description__QeNBW>p{margin:0 0 10px}.resources_action__DGvW_{display:inline-flex;align-items:center;gap:4px;margin-top:48px;color:var(--resources-link);font-size:16px;line-height:24px;font-weight:500}.resources_action__DGvW_ svg{flex-shrink:0;width:16px;height:16px}.resources_action__DGvW_:focus-visible,.resources_services__2vQ62 a:focus-visible{outline:2px solid var(--resources-link);outline-offset:4px}.resources_services__2vQ62{display:flex;flex-wrap:wrap;gap:8px 12px;font-size:14px;line-height:21px}.resources_services__2vQ62 a{color:var(--resources-link)}.resources_resources__vbBzA[data-variant=article]{--resources-bg:#fff;--resources-card:#f6f8fa;--resources-ink:#1f2328;--resources-muted:#59636e;--resources-link:#1f2328;margin-bottom:128px}.resources_resources__vbBzA[data-variant=article] .resources_inner__n2Eag{padding-block:0}.resources_resources__vbBzA[data-variant=article] .resources_inner__n2Eag>h2{padding-bottom:16px;border-bottom:1px solid #d1d9e0;margin-bottom:40px;text-align:left;font-size:24px;line-height:28px;letter-spacing:-.24px}.resources_resources__vbBzA[data-variant=article] .resources_card__tc781{border:0;min-height:394px}@layer base{.resources_action__DGvW_:hover,.resources_services__2vQ62 a:hover{text-decoration-line:underline!important}}@media (max-width:1011px){.resources_grid__E9Xwl{grid-template-columns:repeat(2,minmax(0,1fr))}.resources_inner__n2Eag>h2{margin-bottom:48px}}@media (max-width:767px){.resources_inner__n2Eag{padding-block:48px}.resources_inner__n2Eag>h2{font-size:28px;line-height:32px;letter-spacing:-.28px;margin-bottom:32px}.resources_grid__E9Xwl{grid-template-columns:1fr}.resources_card__tc781,.resources_resources__vbBzA[data-variant=article] .resources_card__tc781{min-height:0}.resources_card__tc781>h3{font-size:16px;line-height:24px}.resources_resources__vbBzA[data-variant=article] .resources_inner__n2Eag>h2{font-size:20px;line-height:24px;letter-spacing:-.2px;font-weight:600;margin-bottom:24px}}.article_surface__Tu8kC{--article-ink:#1f2328;--article-muted:#59636e;--article-border:#d1d9e0;--article-link:#0969da;color:var(--article-ink);background:#fff;font-family:var(--github-blog-font),-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;font-size:14px;line-height:21px;min-width:0;isolation:isolate;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}.article_surface__Tu8kC *,.article_surface__Tu8kC :after,.article_surface__Tu8kC :before{box-sizing:border-box}.article_article__UU5ZG :is(h1,h2,h3,p,figure){margin:0}.article_surface__Tu8kC :is(h1,h2,h3){font-family:inherit;text-wrap:wrap}.article_surface__Tu8kC :is(a,button,input,summary):focus-visible{outline:2px solid #0969da;outline-offset:4px}.article_surface__Tu8kC a{text-underline-offset:.15em}.article_surface__Tu8kC button{cursor:pointer}.article_surface__Tu8kC :is([id],pre,table){scroll-margin-top:24px}@layer base{.article_prose___CRKZ a,.article_surface__Tu8kC a:focus-visible,.article_surface__Tu8kC a:hover{text-decoration-line:underline!important}.article_desktopToc__XjjS3 a:focus-visible,.article_desktopToc__XjjS3 a:hover,.article_share__2CkJa a:focus-visible,.article_share__2CkJa a:hover,.article_tags__f_mKS a:focus-visible,.article_tags__f_mKS a:hover{text-decoration-line:none!important}}.article_container__jFVPN{max-width:1280px;margin-inline:auto}.article_heroHeader__c_k5S{position:relative;background:#212830;color:#fff}.article_heroHeader__c_k5S:after{content:"";position:absolute;bottom:0;inset-inline:0;height:80px;background:#fff}.article_headingColumn__29qcV{width:66.666667%;margin-left:8.333333%;padding:40px 24px}.article_breadcrumbs__6oWbj{display:block;margin-bottom:64px;font-size:14px;line-height:21px}.article_breadcrumbs__6oWbj span{margin-inline:12px;color:#9198a1}.article_breadcrumbs__6oWbj a{color:#fff}.article_surface__Tu8kC .article_title__HJzKh{margin:0 0 16px;font-size:48px;line-height:52px;font-weight:800;letter-spacing:-1.44px;overflow-wrap:break-word}.article_surface__Tu8kC .article_excerpt__RBgQ2{margin:0 0 10px;color:#9198a1;font-size:16px;line-height:24px;font-weight:450}.article_surface__Tu8kC .article_hero__YdqGr{position:relative;z-index:1;width:83.333333%;padding:0 24px;margin-left:8.333333%}.article_hero__YdqGr .cc-casper-image-button{display:block;width:100%;padding:0;border:0;border-radius:6px;overflow:hidden;cursor:zoom-in;background:transparent}.article_hero__YdqGr .gh-feature-image{display:block;width:100%;height:auto;aspect-ratio:1000/531;object-fit:cover}.article_articleWidth__DOQBm{width:83.333333%;padding:0 24px;margin-left:8.333333%}.article_byline__0D93M{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-top:24px}.article_surface__Tu8kC .article_authorName__ot6wF{margin-bottom:6px;font-size:14px;line-height:21px;font-weight:600}.article_dates__IZpK0{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;line-height:21px;color:var(--article-muted)}.article_dates__IZpK0>span{display:inline-flex;align-items:center;gap:8px}.article_dates__IZpK0>span:before{content:"|";margin-right:8px}.article_readingTime__mrLpy svg{display:none;flex-shrink:0}.article_share__2CkJa{display:flex;flex:0 0 auto;align-items:center;gap:16px;color:var(--article-ink);font-size:14px}.article_share__2CkJa .gh-button-share,.article_share__2CkJa>a{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--article-border);border-radius:50%;color:var(--article-link);background:#fff}.article_share__2CkJa svg{width:10px;height:10px}.article_share__2CkJa .gh-button-share{font-size:0}.article_share__2CkJa .gh-button-share:before{content:"";width:11px;height:11px;background:currentColor;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='black' d='M4.75 1A1.75 1.75 0 0 0 3 2.75v.75h1.5v-.75a.25.25 0 0 1 .25-.25h8.5a.25.25 0 0 1 .25.25v8.5a.25.25 0 0 1-.25.25h-.75V13h.75A1.75 1.75 0 0 0 15 11.25v-8.5A1.75 1.75 0 0 0 13.25 1Zm-2 4A1.75 1.75 0 0 0 1 6.75v6.5A1.75 1.75 0 0 0 2.75 15h6.5A1.75 1.75 0 0 0 11 13.25v-6.5A1.75 1.75 0 0 0 9.25 5Zm-.25 1.75a.25.25 0 0 1 .25-.25h6.5a.25.25 0 0 1 .25.25v6.5a.25.25 0 0 1-.25.25h-6.5a.25.25 0 0 1-.25-.25Z'/%3E%3C/svg%3E") center /contain no-repeat}.article_share__2CkJa .gh-button-share:hover,.article_share__2CkJa>a:hover{background:#f6f8fa;border-color:#0969da}.article_separator__9JKEs{height:2px;margin-top:24px;background:#545df0}.article_reading__4r4rh{display:flex;justify-content:center;flex-wrap:wrap;align-items:stretch;margin-top:48px;margin-bottom:80px}.article_column__qh1fQ{width:58.333333%;padding:0 24px;min-width:0}.article_sidebar__GTGWe{width:25%;padding:0 24px;min-width:0}.article_sidebarTags__7Igp4{margin-bottom:64px}.article_tags__f_mKS{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px}.article_tags__f_mKS a{display:block;border:1px solid #b7c1ce;border-radius:100px;padding:6px 16px 8px;color:var(--article-ink);font-size:14px;line-height:14px;font-weight:500}.article_tags__f_mKS a:hover{background:#f6f8fa;border-color:#0969da}.article_stickySidebar__NF9mW{position:sticky;top:max(80px,calc(var(--cc-site-header-height, 57px) + 23px))}.article_desktopToc__XjjS3{margin-bottom:64px}.article_surface__Tu8kC .article_desktopToc__XjjS3 h2,.article_surface__Tu8kC .article_more__LUpb9>h2{padding-bottom:6px;border-bottom:2px solid #d8dee4;margin-bottom:16px;font-size:18px;line-height:30px;font-weight:600;letter-spacing:-.18px}.article_desktopToc__XjjS3 ol{margin:0;padding:0;list-style:none}.article_desktopToc__XjjS3 li{position:relative;margin-top:8px}.article_desktopToc__XjjS3 a{display:block;padding:8px 16px 10px;color:var(--article-ink);font-size:14px;font-weight:500;line-height:20px;border-radius:12px}.article_desktopToc__XjjS3 [data-level="3"] a{padding-left:28px}.article_desktopToc__XjjS3 a:hover{color:#0969da}.article_desktopToc__XjjS3 a[aria-current]{background:#f6f8fa;box-shadow:inset 2px 0 #0969da}.article_prose___CRKZ{font-size:18px;line-height:30px;letter-spacing:-.18px;overflow-wrap:break-word}.article_prose___CRKZ>*+*{margin-top:24px}.article_prose___CRKZ p{margin-bottom:22.5px}.article_prose___CRKZ :is(h2,h3):focus{outline:2px solid #0969da;outline-offset:6px}.article_surface__Tu8kC[data-blog-article-page] .article_prose___CRKZ :is(h2,h3){scroll-margin-top:max(0px,calc(72px - var(--blog-viewport-header-height, 57px)))}.article_surface__Tu8kC .article_prose___CRKZ h2{margin:40px 0 20px;font-size:32px;line-height:40px;font-weight:700;letter-spacing:inherit}.article_surface__Tu8kC .article_prose___CRKZ h3{margin:40px 0 20px;font-size:24px;line-height:32px;font-weight:700;letter-spacing:inherit}.article_prose___CRKZ a{color:#0969da}.article_prose___CRKZ a:hover{text-decoration-thickness:2px}.article_prose___CRKZ strong{font-weight:600}.article_prose___CRKZ ol,.article_prose___CRKZ ul{padding-left:24px;margin-bottom:22.5px}.article_prose___CRKZ ul{list-style:disc}.article_prose___CRKZ ol{list-style:decimal}.article_prose___CRKZ li{margin-top:4px}.article_prose___CRKZ blockquote{margin:32px 0;padding:0 16px;border-left:4px solid #d1d9e0;color:#59636e}.article_prose___CRKZ blockquote p:last-child{margin-bottom:0}.article_prose___CRKZ hr{height:1px;margin:32px 0;background:#d1d9e0;border:0}.article_prose___CRKZ img{display:block;max-width:100%;height:auto;border-radius:6px}.article_prose___CRKZ code{padding:.2em .4em;border-radius:3px;background:#eff1f3;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:85%}.article_prose___CRKZ pre{max-width:100%;overflow:auto;padding:16px;font-size:14px;line-height:22px;color:#e6edf3;background:#0d1117;tab-size:2}.article_prose___CRKZ pre code{display:block;min-width:max-content;padding:0;background:transparent;font-size:inherit}.article_prose___CRKZ table{display:block;max-width:100%;overflow:auto;border-collapse:collapse;font-size:16px;line-height:24px}.article_prose___CRKZ td,.article_prose___CRKZ th{min-width:128px;padding:8px 16px;border:1px solid #d1d9e0;text-align:left}.article_prose___CRKZ th{background:#f6f8fa;font-weight:600}.article_afterword__QC9bD{margin-top:48px}.article_endingTags__cjpjo{display:flex;align-items:flex-start;gap:16px}.article_endingTags__cjpjo>span{padding-block:4px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:16px;line-height:24px}.article_author__1otgd{margin-top:64px}.article_surface__Tu8kC .article_author__1otgd>h2{font-size:24px;line-height:28px;letter-spacing:-.24px;font-weight:800}.article_authorBio__jj9YE{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px 32px;margin-top:40px;align-items:start}.article_avatar__9h2vC{grid-row:span 2;display:grid;place-items:center;width:120px;height:120px;border-radius:50%;background:#0d1117;color:#fff}.article_avatar__9h2vC svg{width:68px;height:68px}.article_surface__Tu8kC .article_authorInfo__5kCRB h3{font-size:20px;line-height:24px;font-weight:600}.article_surface__Tu8kC .article_authorInfo__5kCRB p{margin-top:8px;font-size:16px;line-height:24px;color:#59636e}.article_surface__Tu8kC .article_authorDescription__QdfCh{font-size:16px;line-height:24px}.article_related__EzPcf{max-width:1280px;padding-inline:24px;margin:128px auto 64px}.article_surface__Tu8kC .article_related__EzPcf>h2{border-bottom:1px solid #d1d9e0b3;padding-bottom:16px;margin-bottom:48px;font-size:24px;line-height:28px;letter-spacing:-.24px;font-weight:800}.article_relatedGrid__QJKw3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:48px}.article_card__QFUEn{min-width:0}.article_cardImage__eUXeP{display:block;overflow:hidden;border-radius:6px;aspect-ratio:1000/531;margin-bottom:16px}.article_cardImage__eUXeP img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.165,.84,.44,1)}.article_card__QFUEn:has(a:hover) .article_cardImage__eUXeP img{transform:scale(1.05)}.article_category__WTVVF{display:inline-block;padding-bottom:4px;font-size:14px;line-height:20px;font-weight:600;background:linear-gradient(90deg,#8250df,#bf3989);background-clip:text;-webkit-text-fill-color:transparent;color:#8250df}.article_surface__Tu8kC .article_card__QFUEn h3{margin:0 0 8px;font-size:20px;line-height:24px;letter-spacing:-.2px;font-weight:600}.article_surface__Tu8kC .article_cardExcerpt__F0bWt{margin-bottom:10px;font-size:16px;line-height:24px;font-weight:450;color:#59636e}.article_surface__Tu8kC .article_cardMeta__Z4XdE{margin-top:12px;font-size:14px;line-height:21px}.article_cardMeta__Z4XdE a{font-weight:600}.article_cardMeta__Z4XdE time{color:#59636e;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.article_more__LUpb9 .article_card__QFUEn{padding-top:8px;padding-bottom:24px}.article_surface__Tu8kC .article_more__LUpb9 .article_card__QFUEn h3{margin-bottom:12px}.article_article__UU5ZG .cc-casper-dialog{position:fixed;inset:0;margin:auto;width:min(600px,calc(100% - 32px));max-height:calc(100dvh - 32px);overflow:auto;padding:24px;background:#fff;color:#1f2328;border:1px solid #d1d9e0;border-radius:6px;font-size:16px;line-height:24px}.article_article__UU5ZG dialog::backdrop{background:#000b}.article_surface__Tu8kC .article_article__UU5ZG dialog h2{margin-bottom:16px;font-size:24px;line-height:28px;font-weight:700}.article_surface__Tu8kC .article_article__UU5ZG dialog p{margin-block:16px}.article_article__UU5ZG dialog label{display:block;font-weight:600}.article_article__UU5ZG dialog input{display:block;width:100%;margin-top:8px;padding:12px;border:1px solid #b7c1ce;border-radius:6px}.article_article__UU5ZG .cc-casper-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.article_article__UU5ZG .cc-casper-actions button{padding:8px 14px;border:1px solid #b7c1ce;border-radius:6px}.article_article__UU5ZG .cc-casper-code{margin:32px 0;min-width:0}.article_article__UU5ZG .cc-casper-code-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:8px 16px;background:#212830;color:#f0f6fc;font-size:13px;border-radius:6px 6px 0 0}.article_article__UU5ZG .cc-casper-code-tools button{padding:8px;text-decoration:underline;text-underline-offset:.2em}.article_article__UU5ZG .cc-casper-code pre{margin:0;border-radius:0 0 6px 6px;background:#0d1117!important}.article_article__UU5ZG .cc-casper-lightbox{position:fixed;inset:0;margin:0;width:100%;max-width:100%;height:100%;max-height:100%;padding:64px 16px 16px;color:#fff;background:#0d1117}.article_article__UU5ZG .cc-casper-lightbox img{display:block;width:auto;max-width:100%;max-height:calc(100dvh - 180px);height:auto;object-fit:contain;margin:auto}.article_article__UU5ZG .cc-casper-lightbox-media{max-height:calc(100dvh - 180px);overflow:auto}.article_article__UU5ZG .cc-casper-lightbox-close,.article_article__UU5ZG .cc-casper-lightbox-zoom{position:absolute;top:8px;padding:12px;border:1px solid #9198a1;border-radius:6px}.article_article__UU5ZG .cc-casper-lightbox-close{right:16px}.article_article__UU5ZG .cc-casper-lightbox-zoom{left:16px}@media (max-width:1279px){.article_headingColumn__29qcV{width:83.333333%}}@media (max-width:1011px){.article_articleWidth__DOQBm,.article_headingColumn__29qcV,.article_surface__Tu8kC .article_hero__YdqGr{width:100%;margin-left:0}.article_column__qh1fQ{width:66.666667%}.article_sidebar__GTGWe{width:33.333333%}.article_byline__0D93M{align-items:flex-start;flex-direction:column}.article_surface__Tu8kC .article_title__HJzKh{font-size:40px;line-height:44px;letter-spacing:-.8px}}@media (max-width:767px){.article_headingColumn__29qcV{padding-block:32px}.article_breadcrumbs__6oWbj{margin-bottom:32px}.article_surface__Tu8kC .article_title__HJzKh{font-size:28px;line-height:32px;letter-spacing:-.28px}.article_dates__IZpK0{align-items:flex-start;flex-direction:column}.article_dates__IZpK0>span:before{display:none}.article_readingTime__mrLpy svg{display:block}.article_column__qh1fQ,.article_sidebar__GTGWe{width:100%}.article_reading__4r4rh{margin-top:24px;margin-bottom:48px}.article_prose___CRKZ{font-size:16px;line-height:26px;letter-spacing:normal}.article_prose___CRKZ p{margin-bottom:20px}.article_desktopToc__XjjS3,.article_sidebarTags__7Igp4{display:none}.article_stickySidebar__NF9mW{position:static;margin-top:48px}.article_more__LUpb9{margin-bottom:48px}.article_surface__Tu8kC .article_more__LUpb9>h2{font-size:20px;line-height:24px;padding-bottom:16px}.article_surface__Tu8kC .article_author__1otgd>h2{font-size:20px;line-height:24px;font-weight:600;letter-spacing:-.2px}.article_authorBio__jj9YE{grid-template-columns:80px minmax(0,1fr);align-items:center}.article_avatar__9h2vC{grid-row:auto;width:80px;height:80px}.article_avatar__9h2vC svg{width:46px;height:46px}.article_authorDescription__QdfCh{grid-column:1/-1}.article_relatedGrid__QJKw3{grid-template-columns:1fr;gap:48px}.article_surface__Tu8kC .article_related__EzPcf>h2{margin-bottom:24px;font-size:20px;line-height:24px;font-weight:600;letter-spacing:-.2px}}@media (prefers-reduced-motion:reduce){.article_cardImage__eUXeP img{transition:none}}