/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_mintlify/assets/fonts/google/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPb54C-s0.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_mintlify/assets/fonts/google/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPb94C-s0.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_mintlify/assets/fonts/google/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPbF4Cw.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_mintlify/assets/fonts/google/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPb54C-s0.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_mintlify/assets/fonts/google/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPb94C-s0.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_mintlify/assets/fonts/google/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPbF4Cw.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/_mintlify/assets/fonts/google/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPb54C-s0.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/_mintlify/assets/fonts/google/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPb94C-s0.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/_mintlify/assets/fonts/google/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPbF4Cw.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
.link.nav-tabs-item.group{font-weight:400}.dark footer a:hover,.navbar-link a:hover{color:var(--color-accent-light)!important}.nav-tabs-item>div.absolute.bottom-0{height:2px!important}.nav-tabs-item>div.absolute.bottom-0.bg-primary,footer a[href*="x.com"]:hover svg,footer a[href*=community]:hover svg,footer a[href*=github]:hover svg,footer a[href*=linkedin]:hover svg,footer a[href*=youtube]:hover svg{background-color:var(--color-accent)!important}html:not(.dark) #navbar-transition[data-is-opaque=true]{background-color:rgba(247,248,248,.75)!important}#search-bar-entry,#topbar-cta-button a{border-radius:9999px!important}#topbar-cta-button a{--font-weight-body-custom:700!important;padding-left:.75rem!important;padding-right:.75rem!important}#topbar-cta-button a>span.absolute{background-color:var(--color-accent)!important;border-radius:9999px!important}#topbar-cta-button a:hover>span.absolute{background-color:var(--color-btn-primary-hover-bg)!important;opacity:1!important}#topbar-cta-button svg{display:none!important}.gs-root{--accent:#6046ff;--accent-h:#5038e0;--accent-on:#ffffff;--accent-bg:rgba(96, 70, 255, 0.08);--accent-br:rgba(96, 70, 255, 0.2);--th:#0E1113;--tb:#2B3134;--tm:#6b7a90;--tf:#a0aec0;--border:#e2e8f0;--bhi:#b8c0d4;--card:#ffffff;--subtle:#f7f8fb;--font:'Instrument Sans', system-ui, sans-serif;--mono:'SFMono-Regular', 'Consolas', monospace;--r:10px;--sh:0 1px 4px rgba(0, 0, 0, 0.06), 0 4px 14px rgba(0, 0, 0, 0.08)}[data-theme=dark] .gs-root,html.dark .gs-root{--accent:#BFB5FF;--accent-h:#bfb5ff;--accent-on:#ffffff;--accent-bg:rgba(160, 144, 255, 0.1);--accent-br:rgba(160, 144, 255, 0.2);--th:#eef0f8;--tb:#9aa6bf;--tm:#5c6880;--tf:#3c4560;--border:rgba(255, 255, 255, 0.08);--bhi:rgba(255, 255, 255, 0.16);--card:#191C1E;--subtle:#0E1113;--sh:0 1px 4px rgba(0, 0, 0, 0.3), 0 4px 14px rgba(0, 0, 0, 0.3)}.gs-root *{box-sizing:border-box}.gs-section-sub{font-family:var(--font);font-size:14px;color:var(--tb);line-height:1.6;margin:0 0 20px}.gs-fw-section{display:block}.gs-fw-filter{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.gs-fw-btn{font-family:var(--font);font-size:11.5px;font-weight:600;background:var(--card);border:1.5px solid var(--border);color:var(--th);padding:5px 13px;border-radius:7px;cursor:pointer;transition:border-color .13s,background .13s}.gs-fw-btn:hover{border-color:var(--bhi);background:var(--subtle)}.gs-fw-btn.active{background:var(--accent);border-color:var(--accent);color:var(--accent-on);font-weight:800}.gs-fw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:7px}.gs-fw-card{display:flex;align-items:center;text-decoration:none;color:inherit;gap:9px;padding:10px 12px;background:var(--card);border:1.5px solid var(--border);border-radius:var(--r);transition:border-color .15s,box-shadow .15s,transform .13s;cursor:pointer}.gs-fw-card:hover{border-color:var(--bhi);box-shadow:var(--sh);transform:translateY(-1px)}.nav-logo{height:2rem}.gs-fw-logo{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:var(--font);font-weight:800;font-size:11px;flex-shrink:0}.gs-fw-new{background:var(--accent-bg);color:var(--accent);border:1px solid var(--accent-br);font-size:8px;font-weight:800}:root{--color-bg-page:#F7F8F8;--color-bg-card:#FFFFFF;--color-bg-alt:#F0F1F2;--color-text-default:#2B3134;--color-text-heading:#0E1113;--color-text-muted:#2B3134;--color-text-subtle:#6b7a90;--color-accent:#6046ff;--color-accent-light:#6046ff;--color-focus-ring:#6046ff;--color-link:#4D38CC;--color-link-hover-text:#EFEDFF;--color-link-hover-bg:#6046FF;--color-btn-primary-text:#EFEDFF;--color-btn-primary-bg:#6046ff;--color-btn-primary-hover-bg:#4D38CC;--color-btn-secondary-text:#0E1113;--color-btn-secondary-bg:transparent;--color-btn-secondary-border:#0E1113;--color-btn-secondary-hover-text:#E1E3E4;--color-btn-secondary-hover-bg:#0E1113;--color-btn-secondary-hover-border:#0E1113}.dark{--color-bg-page:#0E1113;--color-bg-card:#191C1E;--color-bg-alt:#1E2225;--color-text-default:#E1E3E4;--color-text-heading:#FFFFFF;--color-text-muted:#E1E3E4;--color-text-subtle:#646F75;--color-accent:#6046ff;--color-accent-light:#BFB5FF;--color-focus-ring:#D5F800;--color-link:#bfb5ff;--color-link-hover-text:#efedff;--color-link-hover-bg:#6046ff;--color-btn-primary-text:#efedff;--color-btn-primary-bg:#6046ff;--color-btn-primary-hover-bg:#806bff;--color-btn-secondary-text:#ffffff;--color-btn-secondary-bg:transparent;--color-btn-secondary-border:#ffffff;--color-btn-secondary-hover-text:#191c1e;--color-btn-secondary-hover-bg:#ffffff;--color-btn-secondary-hover-border:#ffffff}body{color:var(--color-text-default)}#sidebar-title{font-weight:600}#sidebar-title,h1,h2,h3,h4,h5,h6{color:var(--color-text-heading)}[data-nav-tag=New]{color:#fff!important;background-color:var(--color-accent)!important;border-radius:4px!important}.dark #sidebar a[class*=bg-primary],.dark #sidebar button[class*=bg-primary]{background-color:#2b3134!important;color:#bfb5ff!important;border-radius:8px!important}#navigation-items>ul:has(>li>a.nav-anchor){background:var(--color-bg-alt);border:1px solid rgba(0,0,0,.08);border-radius:10px;padding:4px;margin-bottom:1.25rem}.dark #navigation-items>ul:has(>li>a.nav-anchor){border-color:rgba(255,255,255,.08)}#navigation-items>ul:has(>li>a.nav-anchor)>li{margin:0!important}#navigation-items>ul:has(>li>a.nav-anchor)>li>a.nav-anchor{width:100%;margin:0!important;padding:7px 10px!important;border-radius:7px!important}#navigation-items>ul:has(>li>a.nav-anchor)>li>a.nav-anchor:not([aria-current=location]):hover{background-color:var(--color-bg-card)}#navigation-items>ul:has(>li>a.nav-anchor)>li>a.nav-anchor[aria-current=location]{background-color:var(--color-accent)!important;color:#fff!important}#navigation-items>ul:has(>li>a.nav-anchor)>li>a.nav-anchor[aria-current=location] *{color:#fff!important}[data-component-part=card-icon]{color:var(--color-accent-light)!important;fill:var(--color-accent-light)!important}.dark footer a[href*="x.com"]:hover svg,.dark footer a[href*=community]:hover svg,.dark footer a[href*=github]:hover svg,.dark footer a[href*=linkedin]:hover svg,.dark footer a[href*=youtube]:hover svg,[data-component-part=card-icon] svg[style*=mask-image]{background-color:var(--color-accent-light)!important}.dark [data-component-part=card-content]{color:#e1e3e4!important}.icon-current svg[style*=mask-image],svg.icon-current[style*=mask-image]{background-color:currentColor!important}.dark .card:hover{border-color:#a090ff!important}#content .product-card-link:focus-within,#content .product-card-link:hover,.dark #content .product-card-link:focus-within,.dark #content .product-card-link:hover{color:inherit!important}#content .product-card-link.card-cloud:focus-within,#content .product-card-link.card-cloud:hover,.dark #content .product-card-link.card-cloud:focus-within,.dark #content .product-card-link.card-cloud:hover{background-color:rgba(96,70,255,.08)!important}#content .product-card-link.card-dispatch:focus-within,#content .product-card-link.card-dispatch:hover,.dark #content .product-card-link.card-dispatch:focus-within,.dark #content .product-card-link.card-dispatch:hover{background-color:rgba(232,28,236,.08)!important}#content .product-card-link:focus-within,.dark #content .product-card-link:focus-within{outline:2px solid #6046ff!important;outline-offset:2px}#content a.product-card-body-link,#content a.product-card-body-link:focus,#content a.product-card-body-link:hover,.dark #content a.product-card-body-link,.dark #content a.product-card-body-link:focus,.dark #content a.product-card-body-link:hover{color:inherit!important;background-color:transparent!important;outline:0!important;box-shadow:none!important}#content a.product-card-chip{padding:.25rem .625rem!important;margin:-.25rem -.625rem!important;border-radius:9999px!important}#content a.product-card-chip.chip-dispatch,.dark #content a.product-card-chip.chip-dispatch{color:#e81cec!important;background-color:transparent!important}#content a.product-card-chip.chip-dispatch:focus,#content a.product-card-chip.chip-dispatch:hover,.dark #content a.product-card-chip.chip-dispatch:focus,.dark #content a.product-card-chip.chip-dispatch:hover{color:#a21caf!important;background-color:rgba(232,28,236,.08)!important;font-weight:700!important}#content a.product-card-chip.chip-dispatch:focus,.dark #content a.product-card-chip.chip-dispatch:focus{outline:0!important;box-shadow:none!important}#content a.product-card-chip.chip-cloud,.dark #content a.product-card-chip.chip-cloud{color:#6046ff!important;background-color:transparent!important}#content a.product-card-chip.chip-cloud:focus,#content a.product-card-chip.chip-cloud:hover,.dark #content a.product-card-chip.chip-cloud:focus,.dark #content a.product-card-chip.chip-cloud:hover{color:#4d38cc!important;background-color:rgba(96,70,255,.08)!important}#content a.product-card-chip.chip-cloud:focus,.dark #content a.product-card-chip.chip-cloud:focus{outline:0!important;box-shadow:none!important}#content a.product-card-chip.chip-muted{color:#9ca3af!important;background-color:transparent!important}.dark #content a.product-card-chip.chip-muted{color:#6b7280!important;background-color:transparent!important}#content a.product-card-chip.chip-muted:hover,.dark #content a.product-card-chip.chip-muted:hover{background-color:rgba(96,70,255,.08)!important}#content a.product-card-chip.chip-muted:focus,.dark #content a.product-card-chip.chip-muted:focus{color:#bfb5ff!important;background-color:rgba(96,70,255,.08)!important;outline:0!important;box-shadow:none!important}#content a.dispatch-outline-btn,.dark #content a.dispatch-outline-btn{color:#e81cec!important;background-color:transparent!important;background-image:none!important;border:2px solid #e81cec!important}#content a.dispatch-outline-btn:hover,.dark #content a.dispatch-outline-btn:hover{color:#fff!important;background-color:transparent!important;background-image:linear-gradient(135deg,#6046ff,#e81cec)!important;border-color:transparent!important}#content a.dispatch-outline-btn:focus,.dark #content a.dispatch-outline-btn:focus{outline:2px solid #e81cec!important;outline-offset:2px;box-shadow:none!important}#content a.dispatch-gradient-btn,#content a.dispatch-gradient-btn:hover,.dark #content a.dispatch-gradient-btn,.dark #content a.dispatch-gradient-btn:hover{color:#fff!important;background-image:linear-gradient(135deg,#6046ff,#e81cec)!important;background-color:transparent!important}#content a.dispatch-gradient-btn:hover,.dark #content a.dispatch-gradient-btn:hover{opacity:.9}#content a.dispatch-gradient-btn:focus,.dark #content a.dispatch-gradient-btn:focus{outline:2px solid #e81cec!important;outline-offset:2px;box-shadow:none!important}#content a.link{color:#4d38cc!important}#content .bg-surface-dark .bg-code-block a.link:hover,#content a.link:hover{color:#efedff!important;background-color:#6046ff!important}#content-area a.link code{z-index:1!important;position:relative!important}#content a.link:focus{color:#4d38cc!important;outline:2px solid #6046ff!important;outline-offset:2px;box-shadow:0 0 4px 1px rgba(96,70,255,.5)!important}#content .bg-surface-dark .bg-code-block a.link,.dark #content a.link{color:#bfb5ff!important}.dark #content a.link:hover{color:#efedff!important;background-color:#6046ff!important}.dark #content a.link:focus{color:#bfb5ff!important;outline:2px solid #a090ff!important;box-shadow:0 0 4px 1px rgba(160,144,255,.5)!important}.text-accent{color:var(--color-accent)}.dark .text-accent,.text-accent-light{color:var(--color-accent-light)}.bg-surface-dark .text-accent-light{color:#bfb5ff}.text-muted{color:var(--color-text-muted)}.text-subtle{color:var(--color-text-subtle)}.tracking-heading{letter-spacing:-.035em}.tracking-subheading{letter-spacing:-.02em}.border-theme{border:1px solid #e5e7eb}.dark .border-theme{border-color:rgba(191,181,255,.2)}.bg-card{background-color:var(--color-bg-card)}.bg-alt{background-color:var(--color-bg-alt)}.bg-accent{background-color:var(--color-accent)}.bg-accent-subtle{background-color:rgba(96,70,255,.08)}.dark .bg-accent-subtle{background-color:rgba(96,70,255,.15)}.bg-accent-badge{background-color:rgba(96,70,255,.1)}.dark .bg-accent-badge{background-color:rgba(96,70,255,.2)}.bg-accent-tag{background-color:rgba(96,70,255,.08)}.dark .bg-accent-tag{background-color:rgba(160,144,255,.15)}.bg-surface-dark{background-color:#191c1e}.bg-code-block{background-color:#2b3134}.text-on-dark{color:#e1e3e4}.text-on-dark-muted{color:#b4babd}.text-accent-deep{color:#4d38cc}#content a.text-accent-deep,.dark #content a.text-accent-deep{color:#4d38cc!important}#content a.text-accent-deep:hover,.dark #content a.text-accent-deep:hover{color:#4d38cc!important;background-color:#dfdaff!important}.border-accent-subtle{border-color:rgba(96,70,255,.12)}.border-accent-soft,.dark .border-accent-subtle{border-color:rgba(96,70,255,.2)}.card-hover:hover{border-color:var(--color-accent)}.dark .card-hover:hover{border-color:#a090ff}.bg-accent a,.hero-get-started-btn,.hero-what-is-upsun-btn,.resources-btn,.specification-btn,[class*=btn-primary],[class*=btn-secondary]{font-family:'Space Grotesk',sans-serif;--font-weight-body-custom:700!important}#content a.btn-primary,.dark #content a.btn-primary{background-color:var(--color-btn-primary-bg)!important;color:var(--color-btn-primary-text)!important}#content a.btn-primary:hover,.dark #content a.btn-primary:hover{background-color:var(--color-btn-primary-hover-bg)!important;color:var(--color-btn-primary-text)!important}#content a.btn-secondary,.dark #content a.btn-secondary{background-color:var(--color-btn-secondary-bg)!important;color:var(--color-btn-secondary-text)!important;border:2px solid var(--color-btn-secondary-border)!important}#content a.btn-secondary:hover,.dark #content a.btn-secondary:hover{background-color:var(--color-btn-secondary-hover-bg)!important;color:var(--color-btn-secondary-hover-text)!important;border-color:var(--color-btn-secondary-hover-border)!important}#content a.btn-primary>p,#content a.btn-secondary>p{margin:0;color:inherit!important}#content .bg-accent a[class*=text-white]{color:#fff!important}#content .bg-accent a[class*=text-white]:hover{color:var(--color-accent)!important;background-color:#dfdaff!important}.link-accent,.link-accent:hover{text-decoration-color:currentColor}.link-accent{color:#4d38cc;text-decoration:underline;font-weight:inherit}.link-accent:hover{color:#efedff!important;background-color:#6046ff!important}.link-accent:focus{color:#4d38cc;outline:2px solid #6046ff!important;outline-offset:2px;box-shadow:0 0 4px 1px rgba(96,70,255,.5)!important}.dark .link-accent{color:#bfb5ff}.dark .link-accent:hover{color:#efedff!important;background-color:#6046ff!important}.dark .link-accent:focus{color:#bfb5ff;outline:2px solid #a090ff!important;box-shadow:0 0 4px 1px rgba(160,144,255,.5)!important}.gradient-accent-line{background:linear-gradient(240deg,#ed49f0,#6046ff 100%)}.gs-fw-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.gs-fw-name{font-family:var(--font);font-size:12px;font-weight:600;color:var(--th);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gs-fw-tag{font-family:var(--mono);font-size:9px;border-radius:3px;padding:1px 5px;display:inline-block;width:fit-content;font-weight:600}.gs-fw-php{background:rgba(80,80,220,.1);color:#2d2d99}.gs-fw-js{background:rgba(160,110,0,.1);color:#4d3500}.gs-fw-py{background:rgba(15,130,60,.1);color:#0a4020}.gs-fw-ai{background:var(--accent-bg);color:var(--accent);border:1px solid var(--accent-br)}html.dark .gs-fw-php{color:#a0a0ff}html.dark .gs-fw-js{color:#fbd26a}html.dark .gs-fw-py{color:#5de08a}[data-theme=dark] .gs-fw-ai,html.dark .gs-fw-ai{color:var(--accent)}.gs-fw-arr{color:var(--tf);flex-shrink:0;transition:transform .14s,color .14s}.gs-fw-card:hover .gs-fw-arr{transform:translate(2px,-2px);color:var(--tm)}footer a[href*="x.com"] svg,footer a[href*=community] svg,footer a[href*=github] svg,footer a[href*=linkedin] svg,footer a[href*=youtube] svg{transition:background-color .15s}#content a.community-forum-btn,#content a.community-forum-btn:focus,#content a.community-forum-btn:hover{text-decoration:none!important;font-family:'Space Grotesk',sans-serif;font-size:16px;font-weight:700;letter-spacing:.48px;border-radius:80px;padding:10px 16px;white-space:nowrap;color:#efedff!important;background:var(--color-btn-primary-bg)!important;border:0;outline:0!important;box-shadow:none!important}#content a.community-forum-btn:hover{background:var(--color-btn-primary-hover-bg)!important}.dark #content a.community-forum-btn,.dark #content a.community-forum-btn:focus,.dark #content a.community-forum-btn:hover{color:#efedff!important}#footer{display:flex!important}.dark footer a,.dark footer h4,.dark footer h5{font-family:'Instrument Sans',system-ui,sans-serif;font-size:18px;font-style:normal;font-weight:700;line-height:28px;color:#fff}.dark footer a{font-family:'Space Grotesk',sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:.48px;color:#e1e3e4;transition:color .15s}footer a:hover{color:var(--color-accent)!important}.tab-container[id]{scroll-margin-top:400px}.callout .prose>:first-child,.callout .prose>:first-child>:first-child{margin-top:0;padding-top:0}:root:not(.dark) [data-component-part=step-number]>div.rounded-full{background-color:#fff!important;color:#0e1113!important}.card code:not(pre code){z-index:auto;position:relative}:root:not(.dark) code:not(pre code){background-color:rgba(180,186,189,.3)!important}pre code{font-family:'SFMono-Regular','Menlo','Monaco','Consolas','Liberation Mono','Courier New',monospace!important}.callout .accordion{background:0 0!important;border:0!important;box-shadow:none!important;border-radius:0!important;margin-bottom:0!important;border-bottom:1px solid rgba(0,0,0,.1)!important}.dark .callout .accordion{border-bottom:1px solid rgba(255,255,255,.1)!important}.callout .accordion:last-of-type{border-bottom:none!important}.callout .accordion,.callout .accordion *{font-size:inherit!important}.region-table-row td{min-width:auto!important}[data-table-wrapper]>[data-testid],[data-table-wrapper]>button{display:none!important}@media (max-width:640px){.card-group{grid-template-columns:1fr!important}}.region-filter{font-size:13px;padding:0;border:0;background:0 0;color:var(--color-text-default);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:color .15s}.region-filter::after{content:'';display:inline-block;width:10px;height:6px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%236b7a90' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;flex-shrink:0}.region-filter:hover{color:var(--color-accent)}.region-filter:focus{outline:2px solid var(--color-focus-ring);outline-offset:2px}.dark .region-filter{color:var(--color-text-default)}.dark .region-filter::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23646F75' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.dark .region-filter:hover{color:var(--color-accent-light)}.region-dropdown{position:absolute;top:calc(100% + 4px);left:0;min-width:160px;background:var(--color-bg-card);border:1px solid var(--border, #e2e8f0);border-radius:8px;padding:4px 0;box-shadow:0 4px 12px rgba(0,0,0,.1);z-index:10}.dark .region-dropdown{border-color:rgba(255,255,255,.1);box-shadow:0 4px 12px rgba(0,0,0,.4)}.region-dropdown-item{display:block;width:100%;text-align:left;padding:6px 12px;font-size:13px;border:0;background:0 0;color:var(--color-text-default);cursor:pointer;transition:background-color .1s,color .1s}.dark .region-dropdown-item:hover,.region-dropdown-item:hover{background-color:var(--color-bg-alt);color:var(--color-accent)}.region-clear-btn,.region-dropdown-item.active{font-weight:600;color:var(--color-accent)}.dark .region-dropdown-item:hover{color:var(--color-accent-light)}.dark .region-dropdown-item.active{color:var(--color-accent-light)}.region-clear-btn{font-size:13px;padding:0;border:0;background:0 0;cursor:pointer;transition:color .15s}.region-clear-btn:hover{color:var(--color-link)}.region-clear-btn:focus{outline:2px solid var(--color-focus-ring);outline-offset:2px}.dark .region-clear-btn{color:var(--color-accent-light)}.dark .region-clear-btn:hover{color:var(--color-link-hover-text)}.region-sort-th{cursor:pointer;user-select:none;white-space:nowrap;transition:color .15s}.region-sort-th:hover{color:var(--color-accent)}.dark .region-sort-th:hover{color:var(--color-accent-light)}.region-table-row{cursor:pointer;transition:background-color .15s}.region-table-row:hover{background-color:var(--color-bg-alt)}.runtime-version-badge{font-family:var(--mono, monospace)}.runtime-version-badge.incoming{background-color:rgba(59,130,246,.12);color:#2563eb}.runtime-version-badge.retired{background-color:rgba(107,114,128,.14);color:#4b5563}.dark .runtime-version-badge.incoming{background-color:rgba(59,130,246,.2);color:#60a5fa}.dark .runtime-version-badge.retired{background-color:rgba(148,163,184,.2);color:#cbd5e1}.pg-ext-table.nix-runtimes-table{width:auto!important;font-size:.8125rem}.pg-ext-table.nix-runtimes-table tbody td:first-child,.pg-ext-table.nix-runtimes-table thead th:first-child{min-width:0!important}.nix-runtimes-table td,.nix-runtimes-table th{padding:4px 8px!important;word-break:normal!important}.nix-runtimes-table thead th{vertical-align:top!important;white-space:nowrap}.nix-runtimes-table .nix-channel-col{width:1%;min-width:0!important;white-space:nowrap;text-align:center}.nix-runtimes-table .nix-channels-group{text-align:center!important}.nix-runtimes-table .nix-name-cell,.nix-runtimes-table .nix-pkg-cell{width:1%;min-width:0!important;white-space:nowrap;vertical-align:middle;border-right:1px solid var(--color-border, #e2e8f0)}.nix-runtimes-table .nix-pkg-cell{font-size:.75rem}.nix-runtimes-table .nix-pkg-cell code,.nix-runtimes-table .nix-version-cell code{padding:0!important;background:0 0!important;border:0!important;font-size:.72rem!important}.dark .nix-runtimes-table .nix-name-cell,.dark .nix-runtimes-table .nix-pkg-cell{border-right-color:rgba(148,163,184,.25)}.nix-runtimes-table .nix-version-col{width:1%;min-width:0!important;white-space:nowrap;padding-right:6px!important;font-size:.7rem!important;letter-spacing:0!important}.nix-runtimes-table .nix-version-cell{width:30px;max-width:30px;min-width:0!important;white-space:nowrap;padding-right:6px!important;font-family:var(--mono, monospace);font-size:.75rem}.nix-runtimes-table .nix-matrix-cell{width:1%;min-width:0!important;text-align:center;white-space:nowrap}.nix-runtimes-table .nix-matrix-check{color:#059669;font-weight:700}.dark .nix-runtimes-table .nix-matrix-check{color:#34d399}.nix-runtimes-legend{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:10px;font-size:.8125rem}.nix-runtimes-legend-title{font-weight:600;color:var(--color-text-muted, #6b7a90)}.nix-runtimes-legend-item{display:inline-flex;align-items:center;gap:6px}.nix-runtimes-legend-label{color:var(--color-text-muted, #6b7a90)}.peer.is-wide~[class*=max-w]>div:last-child{max-width:none!important}.blog-category-nav{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}@media (max-width:1024px){.blog-category-nav{grid-template-columns:repeat(3,1fr)}}@media (max-width:640px){.blog-category-nav{display:flex;overflow-x:auto;gap:10px;padding-bottom:8px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.blog-category-nav::-webkit-scrollbar{display:none}.blog-category-nav a{flex-direction:row!important;padding:8px 14px!important;border-radius:9999px!important;white-space:nowrap;gap:6px!important;min-width:max-content}.blog-category-nav a svg{width:16px;height:16px}}.blog-grid{display:flex;flex-direction:column;border-top:1px solid #e5e7eb}.dark .blog-grid{border-top-color:rgba(255,255,255,.1)}.blog-list-item{border-bottom:1px solid #e5e7eb}.dark .blog-list-item{border-bottom-color:rgba(255,255,255,.1)}.blog-mobile-cards{display:none}@media (max-width:640px){.blog-desktop-list{display:none}.blog-mobile-cards{display:grid!important;grid-template-columns:1fr;gap:16px}}.blog-paginated>:nth-child(n+13){display:none!important}.blog-btn-desktop-only{display:flex;justify-content:center}.blog-btn-mobile-only{display:none}@media (max-width:640px){.blog-btn-desktop-only{display:none}.blog-btn-mobile-only{display:flex;justify-content:center}}.blog-card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}@media (max-width:900px){.blog-card-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.blog-card-grid{grid-template-columns:1fr}}.blog-card-img-wrap{width:100%;height:160px;flex-shrink:0;overflow:hidden}@media (max-width:640px){.blog-card-img-wrap{height:120px}}.blog-card-img{width:100%;height:100%;object-fit:cover;margin:0!important;transition:transform .3s;pointer-events:none}.blog-card:hover .blog-card-img{transform:scale(1.03)}.blog-card-body{padding:16px 20px;display:flex;flex-direction:column;flex:1;min-width:0;gap:6px}@media (max-width:640px){.blog-card-body{padding:12px 14px}}.blog-card-title{font-size:16px;font-weight:600;color:var(--color-text-heading);line-height:1.4;margin:0}.blog-card-desc{font-size:14px;color:var(--color-text-subtle);line-height:1.5;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.post-meta{display:flex;flex-direction:column;gap:24px;margin-bottom:36px}.post-meta-image{width:100%;object-fit:cover;border-radius:12px;margin:0!important;display:block}.post-meta-authors,.post-meta-info{display:flex;align-items:center;flex-wrap:wrap}.post-meta-info{gap:8px;padding-bottom:20px;border-bottom:1px solid rgba(0,0,0,.12)}.dark .post-meta-info{border-bottom-color:rgba(255,255,255,.12)}.post-meta-authors{gap:12px}.post-meta-author{display:flex;align-items:center;gap:8px;text-decoration:none!important;color:var(--color-text-default)!important;font-size:14px;font-weight:500}.post-meta-author-name{font-size:14px;font-weight:500;color:#4d38cc}.dark .post-meta-author-name{color:#bfb5ff}.post-meta-author:hover .post-meta-author-name{color:#efedff!important;background-color:#6046ff!important}.post-meta-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover;margin:0!important;flex-shrink:0;border:1.5px solid var(--color-border-default, rgba(0, 0, 0, 0.08))}.post-meta-separator{color:var(--color-text-subtle, rgba(0, 0, 0, 0.3));font-size:12px;user-select:none}.post-meta-date{font-size:13px;color:var(--color-text-subtle);letter-spacing:.01em}.runtime-version-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:.8rem;font-weight:500;line-height:1.4;position:relative}.runtime-version-badge.supported{background-color:rgba(16,185,129,.12);color:#059669}.runtime-version-badge.deprecated{background-color:rgba(245,158,11,.12);color:#d97706}.dark .runtime-version-badge.supported{background-color:rgba(16,185,129,.2);color:#34d399}.dark .runtime-version-badge.deprecated{background-color:rgba(245,158,11,.2);color:#fbbf24}.pg-ext-dot[data-tooltip],.php-ext-available[data-tooltip],.php-ext-builtin[data-tooltip],.php-ext-default[data-tooltip],.runtime-version-badge[data-tooltip]{position:relative;cursor:help}.runtime-version-badge[data-tooltip]{padding-right:14px}.runtime-version-badge[data-tooltip]::after{content:'';position:absolute;top:4px;right:4px;width:5px;height:5px;border-radius:50%;background-color:currentColor;opacity:.4;transition:opacity .15s ease}.runtime-version-badge[data-tooltip]:hover::after{opacity:0}.pg-ext-dot[data-tooltip]::before,.php-ext-available[data-tooltip]::before,.php-ext-builtin[data-tooltip]::before,.php-ext-default[data-tooltip]::before,.runtime-version-badge[data-tooltip]::before{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%) translateY(4px);padding:4px 8px;border-radius:6px;background-color:#18181b;color:#fafafa;font-size:.7rem;font-weight:400;white-space:nowrap;z-index:50;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);pointer-events:none;opacity:0;transition:opacity .15s ease,transform .15s ease}.pg-ext-dot[data-tooltip]:hover::before,.php-ext-available[data-tooltip]:hover::before,.php-ext-builtin[data-tooltip]:hover::before,.php-ext-default[data-tooltip]:hover::before,.runtime-version-badge[data-tooltip]:hover::before{opacity:1;transform:translateX(-50%) translateY(0)}html.meta-js .meta-static-fallback{display:none}.pg-ext-wrapper{margin:1rem 0}.pg-ext-toolbar{display:flex;gap:12px;margin-bottom:12px;flex-wrap:wrap}.pg-ext-search-wrapper{position:relative;flex:1;min-width:200px}.pg-ext-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--color-text-muted, #6b7a90);pointer-events:none}.pg-ext-search{width:100%;padding:8px 32px 8px 36px;border:1px solid var(--color-border-default, #d0d5dd);border-radius:8px;font-size:14px;background:var(--color-bg-default, #fff);color:var(--color-text-default, #0E1113);transition:border-color .15s}.pg-ext-search:focus{outline:0;border-color:var(--color-accent, #6046ff);box-shadow:0 0 0 3px rgba(96,70,255,.15)}.pg-ext-search-clear{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:0 0;border:0;cursor:pointer;font-size:14px;line-height:1;padding:2px 4px;color:var(--color-text-muted, #6b7a90);border-radius:4px;display:flex;align-items:center;justify-content:center}.pg-ext-search-clear:hover{color:var(--color-text-default, #0E1113);background:var(--color-bg-muted, #f0f2f5)}.dark .pg-ext-search-clear:hover{color:var(--color-text-default, #e0e0e0);background:var(--color-bg-muted, #2e3338)}.dark .pg-ext-search{background:var(--color-bg-default, #1a1d21);border-color:var(--color-border-default, #2e3338);color:var(--color-text-default, #e0e0e0)}.dark .pg-ext-search:focus{border-color:var(--color-accent-light, #BFB5FF);box-shadow:0 0 0 3px rgba(191,181,255,.15)}.pg-ext-version-select{padding:8px 32px 8px 12px;border:1px solid var(--color-border-default, #d0d5dd);border-radius:8px;font-size:14px;background:var(--color-bg-default, #fff);color:var(--color-text-default, #0E1113);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%236b7a90' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.dark .pg-ext-version-select{background-color:var(--color-bg-default, #1a1d21);border-color:var(--color-border-default, #2e3338);color:var(--color-text-default, #e0e0e0);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23646F75' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.pg-ext-count{font-size:13px;color:var(--color-text-muted, #6b7a90);margin:0 0 8px}.pg-ext-table-container{overflow-x:auto;overflow-y:auto;max-height:560px;border:1px solid var(--color-border-default, #d0d5dd);border-radius:8px}.nix-runtimes .pg-ext-table-container{max-height:none;overflow-y:visible}.pg-ext-table-container [data-table-wrapper=true],.pg-ext-table-container>div{margin:0!important;padding:0!important;width:100%!important;overflow:visible!important}.dark .pg-ext-table-container{border-color:var(--color-border-default, #2e3338)}.pg-ext-table{width:100%;border-collapse:collapse;font-size:14px}.pg-ext-table tbody td:first-child,.pg-ext-table thead th:first-child{min-width:200px!important;white-space:nowrap}.pg-ext-table thead th{text-align:left;padding:10px 16px;font-weight:600;font-size:13px;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted, #6b7a90);background:var(--color-bg-alt, #f7f8f8);border-bottom:1px solid var(--color-border-default, #d0d5dd);position:sticky;top:0;z-index:1}.dark .pg-ext-table thead th,.dark .php-ext-grid thead th{background:var(--color-bg-alt, #1a1d21);border-bottom-color:var(--color-border-default, #2e3338)}.pg-ext-table tbody tr,.php-ext-grid tbody tr{border-bottom:1px solid var(--color-border-default, #e8eaed);transition:background-color .1s}.dark .pg-ext-table tbody tr{border-bottom-color:var(--color-border-default, #2e3338)}.pg-ext-table tbody tr:last-child{border-bottom:none}.pg-ext-table tbody tr:hover{background-color:var(--color-bg-alt, #f7f8f8)}.dark .pg-ext-table tbody tr:hover,.dark .php-ext-grid tbody tr:hover{background-color:rgba(255,255,255,.03)}.pg-ext-table td{padding:10px 16px;vertical-align:top;word-break:break-word}.pg-ext-table td:first-child code{font-size:12.5px}.pg-ext-desc,.pg-ext-empty,.php-ext-grid thead th{color:var(--color-text-muted, #6b7a90)}.pg-ext-empty,.php-ext-grid thead th{text-align:center}.pg-ext-empty{padding:32px 12px!important}.pg-ext-version-dots{display:flex;flex-wrap:wrap;gap:4px}.pg-ext-dot{display:inline-block;padding:2px 6px;border-radius:4px;font-size:11px;font-weight:500;line-height:1.4;white-space:nowrap}.pg-ext-status-available{background:rgba(16,185,129,.12);color:#059669}.dark .pg-ext-status-available{background:rgba(16,185,129,.15);color:#34d399}.pg-ext-status-deprecated{background:rgba(245,158,11,.12);color:#d97706}.dark .pg-ext-status-deprecated{background:rgba(245,158,11,.15);color:#fbbf24}.pg-ext-status-retired{background:rgba(239,68,68,.12);color:#dc2626}.dark .pg-ext-status-retired{background:rgba(239,68,68,.15);color:#f87171}.pg-ext-status-unavailable{background:rgba(107,122,144,.1);color:#9ca3af;text-decoration:line-through}.dark .pg-ext-status-unavailable{background:rgba(107,122,144,.1);color:#6b7280}.pg-ext-status-builtin{background:rgba(37,99,235,.12);color:#2563eb}.dark .pg-ext-status-builtin{background:rgba(37,99,235,.15);color:#60a5fa}.pg-ext-status-default{background:rgba(124,58,237,.12);color:#7c3aed}.dark .pg-ext-status-default{background:rgba(124,58,237,.15);color:#a78bfa}.php-ext-grid{width:100%;border-collapse:collapse;font-size:13px}.php-ext-grid td{min-width:60px}.php-ext-grid thead th{padding:6px 2px;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.03em;background:var(--color-bg-alt, #f7f8f8);border-bottom:1px solid var(--color-border-default, #d0d5dd);white-space:nowrap;position:sticky;top:0;z-index:3}.php-ext-grid thead th.php-ext-name-col{text-align:left!important;min-width:150px;padding-left:12px;position:sticky;left:0;z-index:5;background:var(--color-bg-alt, #f7f8f8)}.dark .php-ext-grid thead th.php-ext-name-col{background:var(--color-bg-alt, #1a1d21)}.php-ext-ver-col{min-width:22px;width:22px}.php-ext-ver-active{background:rgba(96,70,255,.07)!important}.dark .php-ext-ver-active{background:rgba(191,181,255,.08)!important}.dark .php-ext-grid tbody tr{border-bottom-color:var(--color-border-default, #2e3338)}.php-ext-grid tbody tr:last-child{border-bottom:none}.php-ext-grid tbody tr:hover{background-color:var(--color-bg-alt, #f7f8f8)}.php-ext-name-cell{padding:7px 12px;position:sticky;left:0;background:var(--color-bg-default, #fff);z-index:1}.dark .php-ext-name-cell{background:var(--color-bg-default, #0E1113)}.php-ext-name-cell code{font-size:12px;white-space:nowrap}.php-ext-desc-col{text-align:left!important;min-width:220px}.php-ext-desc-cell{padding:7px 12px;text-align:left;font-size:12px;color:var(--color-text-muted, #6b7a90);white-space:normal}.php-ext-ver-cell{padding:7px 4px;text-align:center;vertical-align:middle}.php-ext-default{color:#059669;font-size:13px;font-weight:700}.dark .php-ext-default{color:#34d399}.php-ext-builtin{color:#2563eb;font-size:11px}.dark .php-ext-builtin{color:#60a5fa}.php-ext-available{color:#9ca3af;font-size:12px}.dark .php-ext-available{color:#6b7280}.php-ext-meta-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;flex-wrap:wrap;gap:8px}.php-ext-meta-row .pg-ext-count{margin:0}.php-ext-legend{display:flex;gap:16px;font-size:12px;color:var(--color-text-muted, #6b7a90);flex-wrap:wrap;justify-content:flex-end}.php-ext-legend>span{display:flex;align-items:center;gap:4px}.cl-artwork{float:right;margin-left:20px;margin-bottom:12px;width:120px;height:auto;border-radius:10px;background-color:#fff;border:1px solid var(--color-border-default, #d0d5dd);box-shadow:0 2px 8px rgba(0,0,0,.08);display:block;pointer-events:none}.dark .cl-artwork{border-color:var(--color-border-default, #2e3338);box-shadow:0 2px 8px rgba(0,0,0,.3)}.cl-subtitle{margin-top:-.75rem;margin-bottom:1rem;font-size:1rem;font-style:italic;color:var(--colors-content-subtle, #6b7280);font-weight:400;line-height:1.5}@media (max-width:640px){.cl-artwork{width:72px;border-radius:8px}}.composable-properties-table table,.composable-stack-table table{table-layout:fixed;width:100%}.composable-properties-table td,.composable-properties-table th,.composable-stack-table td,.composable-stack-table th{overflow-wrap:break-word;word-break:normal;vertical-align:top}.composable-properties-table th,.composable-stack-table th{white-space:nowrap}.composable-properties-table td:nth-child(1),.composable-stack-table td:nth-child(1){white-space:nowrap}.composable-properties-table td:nth-child(1),.composable-properties-table th:nth-child(1){width:18%}.composable-properties-table td:nth-child(2),.composable-properties-table th:nth-child(2){width:15%}.composable-properties-table td:nth-child(3),.composable-properties-table th:nth-child(3){width:9%}.composable-properties-table td:nth-child(4),.composable-properties-table th:nth-child(4){width:10%}.composable-properties-table th:nth-child(4){white-space:normal}.composable-properties-table td:nth-child(5),.composable-properties-table th:nth-child(5){width:48%}.composable-stack-table td:nth-child(1),.composable-stack-table th:nth-child(1){width:12%}.composable-stack-table td:nth-child(2),.composable-stack-table th:nth-child(2){width:10%}.composable-stack-table td:nth-child(3),.composable-stack-table th:nth-child(3){width:9%}.composable-stack-table td:nth-child(4),.composable-stack-table th:nth-child(4){width:26%}.composable-stack-table td:nth-child(5),.composable-stack-table th:nth-child(5){width:43%}@media (max-width:768px){.composable-properties-table table,.composable-stack-table table{table-layout:auto}}