<!DOCTYPE html><html lang="en" style="" data-color-mode="light" class=" useReactApp  "><head><meta charset="utf-8"><link rel="preconnect" href="https://cdn.readme.io"><link rel="preconnect" href="https://cdn.readme.io" crossorigin><meta name="readme-deploy" content="5.926.0"><meta name="readme-subdomain" content="recurly-commerce-docs"><meta name="readme-repo" content="recurly-commerce-docs-f50349edc07d"><meta name="readme-basepath-childProject" content="recurly-commerce"><meta name="readme-project-flags" content="egUrUs92Tg/SWR1eA1UcFw==:RESi++hvgku4G30fa3Pmb4piujypvRJWhKKZWPECOz01CLiat3qUFNnfwqyUl1zmZa4/WNshHbtdWCsFi78GnWEJCJDFfQwiPAXQYyBeoOiacVexRa9HbhKnXVaHSa6nCIibcRhq9X1SIagb9nIVb8UVzgw3gZnhIttaQBTbxfk="><meta name="readme-version" content="1.0"><title>Postscript Integration</title><meta name="description" content="Enable Postscript to use Recurly Commerce subscriber events and tags for powerful SMS automations—no code required." data-rh="true"><meta property="og:title" content="Postscript Integration" data-rh="true"><meta property="og:description" content="Enable Postscript to use Recurly Commerce subscriber events and tags for powerful SMS automations—no code required." data-rh="true"><meta property="og:site_name" content="Recurly Commerce Docs"><meta name="twitter:title" content="Postscript Integration" data-rh="true"><meta name="twitter:description" content="Enable Postscript to use Recurly Commerce subscriber events and tags for powerful SMS automations—no code required." data-rh="true"><meta name="twitter:card" content="summary_large_image"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta property="og:image" content="https://cdn.readme.io/og-image/create?type=docs&amp;title=Postscript%20Integration&amp;projectTitle=Recurly%20Commerce%20Docs&amp;description=Enable%20Postscript%20to%20use%20Recurly%20Commerce%20subscriber%20events%20and%20tags%20for%20powerful%20SMS%20automations%E2%80%94no%20code%20required.&amp;logoUrl=https%3A%2F%2Ffiles.readme.io%2F84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg&amp;color=%230d0d0b&amp;variant=light" data-rh="true"><meta name="twitter:image" content="https://cdn.readme.io/og-image/create?type=docs&amp;title=Postscript%20Integration&amp;projectTitle=Recurly%20Commerce%20Docs&amp;description=Enable%20Postscript%20to%20use%20Recurly%20Commerce%20subscriber%20events%20and%20tags%20for%20powerful%20SMS%20automations%E2%80%94no%20code%20required.&amp;logoUrl=https%3A%2F%2Ffiles.readme.io%2F84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg&amp;color=%230d0d0b&amp;variant=light" data-rh="true"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta name="dateModified" content="2025-08-26T17:03:24.000Z" data-rh="true"><meta property="article:modified_time" content="2025-08-26T17:03:24.000Z" data-rh="true"><meta property="og:updated_time" content="2025-08-26T17:03:24.000Z" data-rh="true"><script type="application/ld+json" data-rh="true">{"@context":"https://schema.org","@type":"TechArticle","headline":"Postscript Integration","dateModified":"2025-08-26T17:03:24.000Z"}</script><link id="favicon" rel="shortcut icon" href="https://files.readme.io/f5415736f6306f3aff84928311144e1e776487dbb4c3dffa4129f3cc583c3f7f-Recurly-Profile-Image.png" type="image/png"><link rel="canonical" href="https://docs.recurly.com/recurly-commerce/docs/postcript-integration"><script src="https://cdn.readme.io/public/js/cash-dom.min.js?1792080869056"></script><link data-chunk="Footer" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Footer.769aa3e9fc194cc963d9.css">
<link data-chunk="components-AIDropdown" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/components-AIDropdown.99bc192bac06a6bceec5.css">
<link data-chunk="RMDXISH" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/RMDXISH.8afadbfc559c06195d33.css">
<link data-chunk="RMDXISH" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/2985.07d8154a4f956a2e17c1.css">
<link data-chunk="Doc" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Doc.1c622c61d0aac808909f.css">
<link data-chunk="Header" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Header.6adac57c3992ff6f7240.css">
<link data-chunk="Header" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/ui-styles.6a696bf47111d9f431c7.css">
<link data-chunk="Containers-EndUserContainer" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Containers-EndUserContainer.aec39b624707989fbe23.css">
<link data-chunk="main" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/main.2200abb19ed42944f55c.css">
<link data-chunk="main" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/main.4941e1501aed0bd793a8.js">
<link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-SuperHub.f0603bbd01361005f7fd.js">
<link data-chunk="Containers-EndUserContainer" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Containers-EndUserContainer.ba279dfe398ef78005d4.js">
<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4011.ce6c48bb14576e39a138.js">
<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6269.778792ccd2658420d5c4.js">
<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/5952.8c6a0fa16493b16dbf27.js">
<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4148.76cd30a5d4802a3dbe20.js">
<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Header.a71e74e7b9156d9e1784.js">
<link data-chunk="routes-SuperHub-Routes" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-SuperHub-Routes.e46d22cd13527ce84b7c.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6636.ac569a48bed8092de5b8.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/9977.a933c2a0ee96169ffef7.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6146.e0750bc6839fd326854d.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/441.0bca8969b4854384884a.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/1347.6265ddeff9b9202723b8.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/8836.278c0fa83edd766823b0.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/5446.66a863132dae0648c54c.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/1306.50782c5e797f388d05de.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/9023.bcc85902ea2bf985310b.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/3183.f59d0ce21b70afe46a86.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/1913.d1821e29b5614715e8ad.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/9173.6fb37b017755ea3477f3.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/7358.f1226fb1f000aa5b010a.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/8490.bfb52ac8715ebb4a36cc.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/3906.0710d2e9919fd8c73afa.js">
<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Doc.803db4e6172d7a220de7.js">
<link data-chunk="ConnectMetadata" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/ConnectMetadata.cf7f38752be4f58ead13.js">
<link data-chunk="RMDXISH" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/2712.4cdafc1e56a745cc323d.js">
<link data-chunk="RMDXISH" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4683.d51d276619f8a3e43f84.js">
<link data-chunk="RMDXISH" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/3299.329900392cfb84c1b904.js">
<link data-chunk="RMDXISH" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/2985.2821e5d64493c24beadb.js">
<link data-chunk="RMDXISH" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/2719.c0c0bbd27932020b0b87.js">
<link data-chunk="RMDXISH" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/RMDXISH.d7b601daf87c1d4d60bf.js">
<link data-chunk="components-AIDropdown" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4818.3980b107f271071ef683.js">
<link data-chunk="components-AIDropdown" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/components-AIDropdown.88def46aeefbfb1f9434.js">
<link data-chunk="Footer" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Footer.b7b7b02c71741a3ff9fc.js">
<link data-chunk="main" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/main.2200abb19ed42944f55c.css">
<link data-chunk="Containers-EndUserContainer" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Containers-EndUserContainer.aec39b624707989fbe23.css">
<link data-chunk="Header" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/ui-styles.6a696bf47111d9f431c7.css">
<link data-chunk="Header" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Header.6adac57c3992ff6f7240.css">
<link data-chunk="Doc" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Doc.1c622c61d0aac808909f.css">
<link data-chunk="RMDXISH" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/2985.07d8154a4f956a2e17c1.css">
<link data-chunk="RMDXISH" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/RMDXISH.8afadbfc559c06195d33.css">
<link data-chunk="components-AIDropdown" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/components-AIDropdown.99bc192bac06a6bceec5.css">
<link data-chunk="Footer" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Footer.769aa3e9fc194cc963d9.css"><!-- CUSTOM CSS--><style title="rm-custom-css">:root{--project-color-primary:#0d0d0b;--project-color-inverse:#fff;--recipe-button-color:#0d0d0b;--recipe-button-color-hover:#000000;--recipe-button-color-active:#000000;--recipe-button-color-focus:rgba(13, 13, 11, 0.25);--recipe-button-color-disabled:#7b7b68}[id=enterprise] .ReadMeUI[is=AlgoliaSearch]{--project-color-primary:#0d0d0b;--project-color-inverse:#fff}a{color:var(--color-link-primary,#0d0d0b)}a:hover{color:var(--color-link-primary-darken-5,#000)}a.text-muted:hover{color:var(--color-link-primary,#0d0d0b)}.btn.btn-primary{background-color:#0d0d0b}.btn.btn-primary:hover{background-color:#000}.theme-line #hub-landing-top h2{color:#0d0d0b}#hub-landing-top .btn:hover{color:#0d0d0b}.theme-line #hub-landing-top .btn:hover{color:#fff}.theme-solid header#hub-header #header-top{background-color:#0d0d0b}.theme-solid.header-gradient header#hub-header #header-top{background:linear-gradient(to bottom,#0d0d0b,#000)}.theme-solid.header-custom header#hub-header #header-top{background-image:url("undefined")}.theme-line header#hub-header #header-top{border-bottom-color:#0d0d0b}.theme-line header#hub-header #header-top .btn{background-color:#0d0d0b}header#hub-header #header-top #header-logo{width:nullpx;height:nullpx;margin-top:20px;background-image:url("https://files.readme.io/84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg")}#hub-subheader-parent #hub-subheader .hub-subheader-breadcrumbs .dropdown-menu a:hover{background-color:#0d0d0b}#subheader-links a.active{color:#0d0d0b!important;box-shadow:inset 0 -2px 0 #0d0d0b}#subheader-links a:hover{color:#0d0d0b!important;box-shadow:inset 0 -2px 0 #0d0d0b;opacity:.7}.discussion .submit-vote.submit-vote-parent.voted a.submit-vote-button{background-color:#0d0d0b}section#hub-discuss .discussion a .discuss-body h4{color:#0d0d0b}section#hub-discuss .discussion a:hover .discuss-body h4{color:#000}#hub-subheader-parent #hub-subheader.sticky-header.sticky{border-bottom-color:#0d0d0b}#hub-subheader-parent #hub-subheader.sticky-header.sticky .search-box{border-bottom-color:#0d0d0b}#hub-search-results h3 em{color:#0d0d0b}.main_background,.tag-item{background:#0d0d0b!important}.main_background:hover{background:#000!important}.main_color{color:#0d0d0b!important}.border_bottom_main_color{border-bottom:2px solid #0d0d0b}.main_color_hover:hover{color:#0d0d0b!important}section#hub-discuss h1{color:#0d0d0b}#hub-reference .hub-api .api-definition .api-try-it-out.active{border-color:#0d0d0b;background-color:#0d0d0b}#hub-reference .hub-api .api-definition .api-try-it-out.active:hover{background-color:#000;border-color:#000}#hub-reference .hub-api .api-definition .api-try-it-out:hover{border-color:#0d0d0b;color:#0d0d0b}#hub-reference .hub-reference .logs .logs-empty .logs-login-button,#hub-reference .hub-reference .logs .logs-login .logs-login-button{background-color:var(--project-color-primary,#0d0d0b);border-color:var(--project-color-primary,#0d0d0b)}#hub-reference .hub-reference .logs .logs-empty .logs-login-button:hover,#hub-reference .hub-reference .logs .logs-login .logs-login-button:hover{background-color:#000;border-color:#000}#hub-reference .hub-reference .logs .logs-empty>svg>path,#hub-reference .hub-reference .logs .logs-login>svg>path{fill:#0d0d0b;fill:var(--project-color-primary,#0d0d0b)}#hub-reference .hub-reference .logs:last-child .logs-empty,#hub-reference .hub-reference .logs:last-child .logs-login{margin-bottom:35px}#hub-reference .hub-reference .hub-reference-section .hub-reference-left header .hub-reference-edit:hover{color:#0d0d0b}.main-color-accent{border-bottom:3px solid #0d0d0b;padding-bottom:8px}/*! BEGIN HUB_CUSTOM_STYLES */@font-face{font-family:Polar;font-weight:400;font-style:normal;src:url("https://recurly.com/img2/fonts/FTPolar-Regular.woff2") format("woff2"),url("https://recurly.com/img2/fonts/FTPolar-Regular.woff") format("woff")}@font-face{font-family:Polar;font-weight:700;font-style:normal;src:url("/img2/fonts/FTPolar-Bold.woff2") format("woff2"),url("/img2/fonts/FTPolar-Bold.woff") format("woff")}@font-face{font-family:Gruffy;font-weight:400;font-style:normal;src:url("https://recurly.com/img2/fonts/F37Gruffy-Regular.woff2") format("woff2"),url("https://recurly.com/img2/fonts/F37Gruffy-Regular.woff") format("woff")}@font-face{font-family:Gruffy;font-weight:700;font-style:normal;src:url("/img2/fonts/F37Gruffy-Bold.woff2") format("woff2"),url("/img2/fonts/F37Gruffy-Bold.woff") format("woff")}.rm-TryIt{display:none!important}.Reference-section{margin-bottom:1em;display:none}body{margin:0;font-family:Polar,"Helvetica Neue",Helvetica,arial,sans-serif!important}.ThemeContext_line .rm-Header{--Header-background:#0D0D0B}.rm-Header-top-link.Button{color:#fcfbf7}#enterprise .SuperHub-hub-wrapper3t_-5gSx4Sax{border-radius:0}#enterprise .rm-Header-bottom-link{display:none}#enterprise .rm-SearchToggle{width:320px;height:48px}#enterprise .Header-search_featherYsmQBn55F3d9{position:absolute;top:420px;left:50%;transform:translateX(-50%)}.new-btn-group{display:flex;flex-wrap:wrap;gap:20px;align-items:center}.new-btn-icon{margin-right:4px!important}.new-btn-text{position:relative;font-size:16px;line-height:20px;font-weight:600}.new-btn{position:relative;border-radius:8px;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:4px;color:#0d0d0b;min-width:112px;min-height:42px;padding:10px 16px;box-sizing:border-box;cursor:pointer;outline:0!important;transition:background-color .5s ease-in-out;text-decoration:none;width:100%;margin:24px}.new-btn-primary{background:linear-gradient(102.03deg,#fff688,#ffd706)}.new-btn-primary:hover{background:linear-gradient(90.39deg,#ffec5f,#ffc10b)}.new-btn-primary:active,.new-btn-primary:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px #51a1c9}.globallp-header-section{background:#0d0d0b;padding:48px 0 150px}.globallp-header-content{font-family:Polar,"Helvetica Neue",Helvetica,arial,sans-serif!important;max-width:700px;margin:0 auto;padding:0 32px;display:flex;justify-content:center;flex-direction:column;align-items:center}.globallp-subheading{font-family:Polar,"Helvetica Neue",Helvetica,arial,sans-serif!important;color:#ffd706;font-size:16px;margin-bottom:12px;text-align:center}.globallp-heading{color:#fff;font-size:48px;font-family:Gruffy,"Helvetica Neue",Helvetica,arial,sans-serif;font-weight:700;margin-bottom:24px;text-align:center}.globallp-supporting-text{font-family:Polar,"Helvetica Neue",Helvetica,arial,sans-serif!important;color:#f9f7eb;font-size:20px;margin-bottom:32px;text-align:center}.search-bar{max-width:320px;margin:0 auto 64px auto;padding:12px 14px;background:#fff;box-shadow:0 1px 2px rgba(13,13,11,.05);border-radius:8px;border:1px solid #d1cfc4;display:flex;align-items:center;gap:8px}.search-icon{width:20px;height:20px;border:1.67px solid #807d75;border-radius:50%}.search-text{color:#807d75;font-size:16px}.globallp-card-container{font-family:Polar,"Helvetica Neue",Helvetica,arial,sans-serif!important;max-width:1200px;margin:96px auto}.globallp-cards-section{display:grid;grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr);gap:96px 32px;justify-items:center;align-items:center;background:#fff;margin:0 12px}.globallp-cards-section>a{color:inherit;text-decoration:none}.globallp-card{background:#fff;border-radius:16px;box-shadow:0 2px 2px -1px rgba(13,13,11,.04);outline:1px solid rgba(13,13,11,.08);max-width:600px;display:flex;flex-direction:column;justify-content:space-between;align-items:center;gap:24px;height:auto;overflow:hidden;text-decoration:none}.globallp-card:hover{box-shadow:0 12px 16px -4px rgba(13,13,11,.08),0 4px 6px -2px rgba(13,13,11,.03),0 2px 2px -1px rgba(13,13,11,.04)!important}.globallp-card:hover .new-btn-primary{background:linear-gradient(90.39deg,#ffec5f,#ffc10b)}.globallp-card-header{padding:32px;text-align:center}.globallp-card-icon{width:56px;height:56px;background:#ffd706;border-radius:50%;margin:0 auto 24px auto;border:2px solid #fff;display:flex;align-items:center;justify-content:center}.globallp-card-image{width:auto;height:32px;margin-bottom:8px}.globallp-card-desc-title{color:#0d0d0b;font-size:18px;line-height:28px;margin-bottom:4px;font-weight:600}.globallp-card-desc-text{color:#46443f;font-size:16px;line-height:24px}.globallp-card-footer{width:100%;background:#f2f1ea;border-top:1px solid #e2dfd0;display:flex;align-items:center;justify-content:center}.globallp-card-button{background:linear-gradient(135deg,#fff688 0,#ffd706 100%);border-radius:8px;padding:12px 18px;margin:16px;color:#0d0d0b;font-size:16px;font-family:inherit;font-weight:400;border:none;cursor:pointer}.newsletter-section{background:#f2f1ea;padding:64px 32px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:32px}.newsletter-header{margin-bottom:32px}.newsletter-header h2{color:#0d0d0b;font-size:36px;line-height:42px;margin-bottom:16px}.newsletter-header p{color:#0d0d0b;font-size:20px}.newsletter-footer{width:100%}.globallp-footer{font-family:Polar,"Helvetica Neue",Helvetica,arial,sans-serif!important;background:#0d0d0b;color:#fff;padding:48px 0;text-align:center}.globallp-footer-content{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.globallp-footer-content img{width:auto;height:16px;margin:0}.globallp-footer-content p{margin:0;font-size:14px;color:#fcfbf7}.globallp-footer-content a{color:#fcfbf7;text-decoration:none;margin-right:20px}.globallp-footer-content a:hover{text-decoration:underline}@media (max-width:1024px){.globallp-header-content{max-width:100%}.globallp-cards-section{display:flex;flex-direction:column;align-items:center;gap:24px}.globallp-card{width:90%;margin-bottom:32px}}:root{--recurly-brightgray:#F2F1EA;--recurly-darknavy:#0D0D0B;--recurly-deepchar:#0D0D0B}#content,#hub-content,.SuperHub,.content-body,.rm-Article,.rm-ReferenceMain,.rm-SuperHub,[class*=Article-content],[class*=ReferenceMain],[class*=SuperHub-body],[class*=SuperHub-content],[class*=SuperHub-wrapper]{background:#fff!important}#hub-sidebar,#reference-sidebar,.rm-Sidebar{background:#fff!important}.rm-Markdown.markdown-body li:not(.menu-item)>a:not([class*=Button]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download),.rm-Markdown.markdown-body p>a:not([class*=Button]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download){color:var(--recurly-tangerine)!important;text-decoration:none!important;border-bottom:1px solid transparent!important;transition:border-color .15s!important}.rm-Markdown.markdown-body li:not(.menu-item)>a:not([class*=Button]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download):hover,.rm-Markdown.markdown-body p>a:not([class*=Button]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download):hover{border-bottom-color:var(--recurly-tangerine)!important}.AIDropdownzmvdRdsNayZl .Button,.rm-AIDropdown .Button{font-family:var(--recurly-font)!important;font-size:12px!important;font-weight:700!important;color:var(--recurly-darkgray)!important;background:0 0!important;border-color:var(--recurly-lightgray)!important;transition:background .12s,border-color .12s,color .12s!important}.AIDropdownzmvdRdsNayZl .Button:hover,.rm-AIDropdown .Button:hover{background:var(--recurly-offblack)!important;border-color:var(--recurly-offblack)!important;color:var(--recurly-yellow)!important}.CopyToClipboard{background:0 0!important;border-color:var(--recurly-lightgray)!important;color:var(--recurly-gray)!important;transition:background .12s,border-color .12s,color .12s!important}.CopyToClipboard:focus,.CopyToClipboard:hover{background:var(--recurly-tangerine)!important;border-color:var(--recurly-tangerine)!important;color:var(--recurly-offblack)!important}pre:has(> code.rdmd-code):not(.CodeTabs *){position:relative!important}pre:has(> code.rdmd-code):not(.CodeTabs *)>.rdmd-code-copy{position:absolute!important;top:16px!important;right:10px!important;background:0 0!important;border:1px solid var(--recurly-gray)!important;color:var(--recurly-lightgray)!important;border-radius:6px!important;padding:4px 10px!important;cursor:pointer!important;z-index:2!important;transition:background .12s,border-color .12s,color .12s!important}pre:has(> code.rdmd-code):not(.CodeTabs *)>.rdmd-code-copy:hover{background:var(--recurly-tangerine)!important;border-color:var(--recurly-tangerine)!important;color:var(--recurly-offblack)!important}.rm-Pagination{font-family:var(--recurly-font)!important}.rm-Pagination .PaginationControls-link{font-weight:700!important;font-size:14px!important;color:var(--recurly-offblack)!important;text-decoration:none!important;transition:color .15s!important}.rm-Pagination .PaginationControls-link:hover{color:var(--recurly-tangerine)!important}.NextStepsDivider{border:0!important;border-top:1px solid var(--recurly-lightgray)!important;margin:28px 0!important}.DateLine,.UpdatedAt .DateLine{font-family:var(--recurly-font)!important;font-size:12px!important;color:var(--recurly-gray)!important}.rm-PageThumbs .PageThumbs-helpful{font-family:var(--recurly-font)!important;font-size:13px!important;color:var(--recurly-darkgray)!important}.rm-PageThumbs .PageThumbs-button{font-family:var(--recurly-font)!important;font-size:13px!important;color:var(--recurly-gray)!important;background:0 0!important;border:0!important;transition:color .15s!important}.rm-PageThumbs .PageThumbs-button:hover{color:var(--recurly-tangerine)!important}.rm-Guides-SuperHub #content-head h1,.rm-Guides-SuperHub .Title.Title1{font-family:var(--recurly-font)!important;color:var(--recurly-offblack)!important;font-weight:800!important;border-bottom:2px solid var(--recurly-yellow)!important;padding-bottom:10px!important;margin-bottom:20px!important}.rm-Article .excerpt,.rm-Guides-SuperHub .excerpt{font-family:var(--recurly-font)!important;font-size:15px!important;color:var(--recurly-darkgray)!important;line-height:1.65!important;background:0 0!important;border:0!important;padding:0!important;margin:0 0 24px!important}.rm-Article .excerpt a,.rm-Guides-SuperHub .excerpt a{color:var(--recurly-tangerine)!important}.content-toc{font-family:var(--recurly-font)!important;font-size:13px!important}.content-toc a{color:var(--recurly-gray)!important;text-decoration:none!important;transition:color .15s!important}.content-toc a:hover{color:var(--recurly-offblack)!important}.content-toc .toc-active>a,.content-toc a.active{color:var(--recurly-offblack)!important;font-weight:700!important}.rm-Markdown.markdown-body h1.heading{font-family:var(--recurly-font)!important;font-size:1.75rem!important;font-weight:800!important;color:var(--recurly-offblack)!important;margin:40px 0 16px!important;padding-bottom:10px!important;border-bottom:2px solid var(--recurly-yellow)!important}.rm-Markdown.markdown-body h2.heading{font-family:var(--recurly-font)!important;font-size:1.5rem!important;font-weight:800!important;color:var(--recurly-offblack)!important;margin:36px 0 14px!important;padding-bottom:0!important;border-bottom:0!important}.rm-Markdown.markdown-body h3.heading{font-family:var(--recurly-font)!important;font-size:1.1rem!important;font-weight:700!important;color:var(--recurly-darkgray)!important;margin:28px 0 10px!important;border-bottom:0!important;padding-bottom:0!important}.rm-Markdown.markdown-body h4.heading{font-family:var(--recurly-font)!important;font-size:.95rem!important;font-weight:700!important;color:var(--recurly-darkgray)!important;margin:20px 0 8px!important;border-bottom:0!important;padding-bottom:0!important}.rm-Markdown.markdown-body h5.heading{font-family:var(--recurly-font)!important;font-size:.9rem!important;font-weight:600!important;color:var(--recurly-darkgray)!important;margin:16px 0 6px!important;border-bottom:0!important;padding-bottom:0!important}.rm-Markdown.markdown-body h3.heading:first-child,.rm-Markdown.markdown-body h4.heading:first-child,.rm-Markdown.markdown-body h5.heading:first-child{margin-block-start:0!important}.rm-Markdown.markdown-body h1.heading,.rm-Markdown.markdown-body h2.heading,.rm-Markdown.markdown-body h3.heading,.rm-Markdown.markdown-body h4.heading,.rm-Markdown.markdown-body h5.heading{position:relative!important;overflow:visible!important;cursor:pointer!important}.rm-Markdown.markdown-body h1.heading .heading-anchor-icon,.rm-Markdown.markdown-body h2.heading .heading-anchor-icon,.rm-Markdown.markdown-body h3.heading .heading-anchor-icon,.rm-Markdown.markdown-body h4.heading .heading-anchor-icon,.rm-Markdown.markdown-body h5.heading .heading-anchor-icon{position:absolute!important;left:-22px!important;top:50%!important;transform:translateY(-50%)!important;width:18px!important;height:18px!important;display:flex!important;align-items:center!important;justify-content:center!important;opacity:0!important;color:var(--recurly-lightgray)!important;font-size:.75em!important;margin:0!important;text-decoration:none!important;outline:0!important;border:0!important;box-shadow:none!important;transition:opacity .15s!important;pointer-events:auto!important;z-index:1!important}.rm-Markdown.markdown-body h1.heading .heading-anchor-icon:focus,.rm-Markdown.markdown-body h2.heading .heading-anchor-icon:focus,.rm-Markdown.markdown-body h3.heading .heading-anchor-icon:focus,.rm-Markdown.markdown-body h4.heading .heading-anchor-icon:focus,.rm-Markdown.markdown-body h5.heading .heading-anchor-icon:focus{outline:0!important;border:0!important;box-shadow:none!important}.rm-Markdown.markdown-body h1.heading:hover .heading-anchor-icon,.rm-Markdown.markdown-body h2.heading:hover .heading-anchor-icon,.rm-Markdown.markdown-body h3.heading:hover .heading-anchor-icon,.rm-Markdown.markdown-body h4.heading:hover .heading-anchor-icon,.rm-Markdown.markdown-body h5.heading:hover .heading-anchor-icon{opacity:1!important}[data-testid=serverurl]{font-family:Menlo,Monaco,Consolas,'Courier New',monospace!important;font-size:13px!important;color:var(--recurly-tangerine)!important}.APIMethod,.rm-APIMethod{font-family:var(--recurly-font)!important;font-size:11px!important;font-weight:800!important;letter-spacing:.6px!important;text-transform:uppercase!important;padding:4px 12px!important;border-radius:14px!important;border:0!important;background:var(--recurly-offblack)!important;color:var(--recurly-offwhite)!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;line-height:1!important}.APIMethod_get{color:var(--recurly-green)!important}.APIMethod_post{color:var(--recurly-tangerine)!important}.APIMethod_put{color:var(--recurly-yellow)!important}.APIMethod_patch{color:var(--recurly-teal)!important}.APIMethod_delete{color:var(--recurly-vermillion)!important}.APIMethod_del{color:var(--recurly-vermillion)!important}.APIMethod_head{color:var(--recurly-lightgray)!important}.rm-APISectionHeader{font-family:var(--recurly-font)!important;border-bottom:1px solid var(--recurly-lightgray)!important;padding-bottom:8px!important;margin-bottom:16px!important}.rm-APISectionHeader [class*=APISectionHeader-heading]{font-family:var(--recurly-font)!important;font-size:12px!important;font-weight:700!important;color:var(--recurly-darkgray)!important;text-transform:uppercase!important;letter-spacing:.5px!important}[class*=Param-name]{font-family:Menlo,Monaco,Consolas,'Courier New',monospace!important;font-size:13px!important;font-weight:700!important;color:var(--recurly-offblack)!important}[class*=Param-type]{font-size:11px!important;font-weight:700!important;color:var(--recurly-gray)!important;text-transform:uppercase!important;letter-spacing:.3px!important}[class*=Param-is-enum]{font-size:11px!important;font-weight:700!important;color:var(--recurly-tangerine)!important;background:rgba(0,140,255,.1)!important;padding:1px 6px!important;border-radius:10px!important}[class*=Param-default-label],[class*=Param-minmax-label]{font-size:11px!important;color:var(--recurly-gray)!important}[class*=Param-description] .markdown-body,[class*=Param-description] .rm-Markdown{font-size:13px!important;color:var(--recurly-darkgray)!important;line-height:1.55!important}[class*=Param-enum-section-item]{font-family:Menlo,Monaco,Consolas,'Courier New',monospace!important;font-size:11px!important;font-weight:600!important;background:var(--recurly-offblack)!important;border:1px solid var(--recurly-offblack)!important;color:var(--recurly-offwhite)!important;border-radius:20px!important;padding:4px 12px!important;transition:background .12s,border-color .12s,color .12s!important}[class*=Param-enum-section-item]:hover{background:var(--recurly-darkgray)!important;border-color:var(--recurly-darkgray)!important;color:var(--recurly-yellow)!important}[class*=Param-enum-section-item-value],[class*=Param-enum-section-item] code{background:0 0!important;color:inherit!important;font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;padding:0!important;border-radius:0!important;box-shadow:none!important}.rm-ParamInput,.rm-ParamSelect{font-family:var(--recurly-font)!important;font-size:13px!important;background:var(--recurly-offwhite)!important;border-color:var(--recurly-lightgray)!important;color:var(--recurly-darkgray)!important}.rm-ParamInput:focus,.rm-ParamSelect:focus{border-color:var(--recurly-offblack)!important;outline:0!important}.HTTPStatus{font-family:Menlo,Monaco,Consolas,'Courier New',monospace!important;font-size:12px!important;font-weight:700!important;padding:2px 8px!important;border-radius:10px!important}.HTTPStatus_2{background:rgba(93,195,46,.14)!important;color:var(--recurly-green)!important}.HTTPStatus_4{background:rgba(255,81,38,.12)!important;color:var(--recurly-vermillion)!important}.HTTPStatus_5{background:rgba(255,81,38,.2)!important;color:var(--recurly-vermillion)!important}.HTTPStatus_1{background:var(--recurly-brightgray)!important;color:var(--recurly-gray)!important}.rm-APIResponseSchemaPicker{border:1px solid var(--recurly-lightgray)!important;border-radius:10px!important;overflow:hidden!important;margin:8px 0 24px!important;font-family:var(--recurly-font)!important;background:var(--recurly-offblack)!important;--Accordion-icon-color:var(--recurly-gray)!important}.rm-APIResponseSchemaPicker [class*=APIResponseSchemaPicker-option],.rm-APIResponseSchemaPicker [class*=AccordionPanel]{background:0 0!important;margin:0!important;padding:0!important}.rm-APIResponseSchemaPicker [class*=AccordionToggle]{background:0 0!important;margin:0!important;padding:0!important}.rm-APIResponseSchemaPicker [class*=AccordionPanel]:not([class*=AccordionPanel_active]) [class*=AccordionToggle]:has(button:hover){background:var(--recurly-yellow)!important;--Accordion-icon-color:var(--recurly-offblack)!important;--icon-color:var(--recurly-offblack)!important;color:var(--recurly-offblack)!important}.rm-APIResponseSchemaPicker [class*=APIResponseSchemaPicker-option]{border-bottom:1px solid var(--recurly-darkgray)!important}.rm-APIResponseSchemaPicker [class*=APIResponseSchemaPicker-option]:last-child{border-bottom:0!important}.rm-APIResponseSchemaPicker [class*=AccordionToggle] button{font-family:var(--recurly-font)!important;font-size:14px!important;font-weight:600!important;padding:16px 20px!important;background:0 0!important;color:#fff!important;width:100%!important;text-align:left!important;border:0!important;display:flex!important;align-items:center!important;transition:color .15s!important}.rm-APIResponseSchemaPicker [class*=AccordionPanel]:not([class*=AccordionPanel_active]) [class*=AccordionToggle] button:hover{background:0 0!important;color:var(--recurly-offblack)!important}.rm-APIResponseSchemaPicker [class*=AccordionPanel]:not([class*=AccordionPanel_active]) [class*=AccordionToggle] button:hover *,.rm-APIResponseSchemaPicker [class*=AccordionPanel]:not([class*=AccordionPanel_active]) [class*=AccordionToggle] button:hover p{color:var(--recurly-offblack)!important}.rm-APIResponseSchemaPicker [class*=AccordionPanel_active] [class*=AccordionToggle] button,.rm-APIResponseSchemaPicker [class*=AccordionToggle_active] button{background:0 0!important;border-left:3px solid var(--recurly-yellow)!important;padding-left:17px!important;color:var(--recurly-yellow)!important}.rm-APIResponseSchemaPicker [class*=AccordionContent]{background:#fff!important;border-top:1px solid var(--recurly-darkgray)!important}[class*=APIResponseSchemaPicker-label]{color:#fff!important;font-weight:600!important}[class*=APIResponseSchemaPicker-description],[class*=APIResponseSchemaPicker-description] p{font-family:var(--recurly-font)!important;font-size:13px!important;color:var(--recurly-gray)!important}.rm-APIResponseSchemaPicker [class*=AccordionToggle-icon]{color:var(--recurly-gray)!important}.rm-Playground{background:var(--recurly-offblack)!important;border-left:1px solid var(--recurly-darkgray)!important;font-family:var(--recurly-font)!important;color:var(--recurly-offwhite)!important}[class*=Playground-section]{border-bottom:1px solid var(--recurly-darkgray)!important;padding:14px 16px!important}.rm-Playground .rm-APISectionHeader{border-bottom-color:var(--recurly-darkgray)!important}.rm-Playground .rm-APISectionHeader [class*=APISectionHeader-heading]{color:var(--recurly-lightgray)!important;font-size:11px!important;font-weight:700!important;text-transform:uppercase!important;letter-spacing:.5px!important}.rm-LanguageButton{font-size:12px!important;font-weight:700!important;color:var(--recurly-lightgray)!important;background:0 0!important;border:0!important;padding:5px 12px!important;border-radius:14px!important;cursor:pointer!important;transition:background .12s,color .12s!important}.rm-LanguageButton:hover{background:0 0!important;color:var(--recurly-yellow)!important}.rm-LanguageButton[aria-pressed=true],.rm-LanguageButton_active{background:var(--recurly-yellow)!important;color:var(--recurly-offblack)!important;cursor:default!important}.rm-APIAuth [class*=InputGroup-input]{background:rgba(255,253,242,.06)!important;border-color:var(--recurly-darkgray)!important;color:var(--recurly-offwhite)!important;font-family:var(--recurly-font)!important;font-size:13px!important}.rm-APIAuth [class*=InputGroup-input]::placeholder{color:var(--recurly-gray)!important}.rm-APIAuth [class*=InputGroup-input]:focus{border-color:var(--recurly-yellow)!important;outline:0!important}.rm-APIAuth [class*=InputGroup-button]{background:var(--recurly-darkgray)!important;border-color:var(--recurly-darkgray)!important;color:var(--recurly-lightgray)!important;font-family:var(--recurly-font)!important;font-size:12px!important;font-weight:700!important}.ServerVars [class*=InputGroup-button]{background:var(--recurly-darkgray)!important;border-color:var(--recurly-darkgray)!important;color:var(--recurly-lightgray)!important;font-family:var(--recurly-font)!important;font-size:12px!important;font-weight:700!important}.ServerVars [class*=ServerVars-url]{background:rgba(255,253,242,.06)!important;border-color:var(--recurly-darkgray)!important;color:var(--recurly-offwhite)!important;font-family:Menlo,Monaco,Consolas,'Courier New',monospace!important;font-size:12px!important}.rm-PlaygroundRequest [class*=APIRequest-header]{font-size:12px!important;font-weight:700!important;color:var(--recurly-lightgray)!important;letter-spacing:.3px!important;text-transform:uppercase!important}.rm-PlaygroundRequest .CodeSnippet,.rm-PlaygroundRequest [class*=CodeSnippet]{background:var(--recurly-offblack)!important;border:1px solid var(--recurly-darkgray)!important;border-radius:8px!important;font-family:Menlo,Monaco,Consolas,'Courier New',monospace!important;font-size:12px!important}.rm-PlaygroundRequest .CodeMirror{background:var(--recurly-offblack)!important;color:var(--recurly-offwhite)!important;font-family:Menlo,Monaco,Consolas,'Courier New',monospace!important;font-size:12px!important;line-height:1.55!important}.rm-PlaygroundRequest .CodeMirror .cm-builtin{color:var(--recurly-yellow)!important}.rm-PlaygroundRequest .CodeMirror .cm-attribute{color:var(--recurly-tangerine)!important}.rm-PlaygroundRequest .CodeMirror .cm-string{color:var(--recurly-green)!important}[class*=APIRequest-footer]{border-top:1px solid var(--recurly-darkgray)!important;padding:10px 14px!important}.rm-TryIt{background:var(--recurly-yellow)!important;color:var(--recurly-offblack)!important;font-family:var(--recurly-font)!important;font-weight:700!important;font-size:13px!important;border-radius:8px!important;border:0!important;padding:8px 18px!important;cursor:pointer!important;transition:background .12s!important}.rm-TryIt:hover{background:var(--recurly-tangerine)!important}.rm-PlaygroundResponse{background:var(--recurly-offblack)!important;font-family:var(--recurly-font)!important}[class*=APIResponse-header]{border-bottom:1px solid var(--recurly-darkgray)!important;padding:10px 14px!important}[class*=APIResponse-header-title]{font-size:12px!important;font-weight:700!important;color:var(--recurly-lightgray)!important;text-transform:uppercase!important;letter-spacing:.3px!important}[class*=APIResponse-empty-prompt]{color:var(--recurly-gray)!important;font-size:13px!important;line-height:1.6!important}[class*=APIResponse-empty-tryit]{color:var(--recurly-yellow)!important;background:rgba(255,215,6,.12)!important;padding:1px 6px!important;border-radius:4px!important;font-family:Menlo,Monaco,Consolas,'Courier New',monospace!important}[class*=APIResponse-empty-examples-header]{font-size:11px!important;font-weight:700!important;color:var(--recurly-lightgray)!important;text-transform:uppercase!important;letter-spacing:.4px!important}[class*=APIResponse-empty-examples-button]{font-family:var(--recurly-font)!important;font-size:12px!important;font-weight:700!important;background:rgba(255,253,242,.06)!important;border-color:var(--recurly-darkgray)!important;color:var(--recurly-lightgray)!important;border-radius:6px!important;transition:background .12s,border-color .12s,color .12s!important}[class*=APIResponse-empty-examples-button]:hover{background:var(--recurly-yellow)!important;border-color:var(--recurly-yellow)!important;color:var(--recurly-offblack)!important}.rm-APILogsTable{font-family:var(--recurly-font)!important;border-radius:10px!important;overflow:hidden!important;border:1px solid var(--recurly-lightgray)!important}.rm-APILogsTable table{width:100%!important;table-layout:fixed!important;border-collapse:collapse!important;border:0!important}.rm-APILogsTable thead tr{background:var(--recurly-offblack)!important}.rm-APILogsTable thead th{font-family:var(--recurly-font)!important;font-size:11px!important;font-weight:800!important;color:var(--recurly-offwhite)!important;text-transform:uppercase!important;letter-spacing:.6px!important;background:var(--recurly-offblack)!important;padding:10px 16px!important;border:0!important;text-align:left!important}.rm-APILogsTable tbody td{font-family:var(--recurly-font)!important;font-size:13px!important;color:var(--recurly-darkgray)!important;background:#fff!important;padding:12px 16px!important;border:0!important;border-bottom:1px solid var(--recurly-lightgray)!important}[class*=APILogsTable_empty],[class*=LogsTable_empty]{font-family:var(--recurly-font)!important;font-size:13px!important;color:var(--recurly-gray)!important;padding:28px 16px!important;text-align:center!important}.rm-APILogInfo,[class*=APILogsTable-footer]{background:var(--recurly-offblack)!important;border-top:1px solid var(--recurly-darkgray)!important;font-family:var(--recurly-font)!important;font-size:13px!important;padding:10px 16px!important}[class*=APILogInfo-requests-count]{color:var(--recurly-offwhite)!important;font-family:var(--recurly-font)!important;font-size:12px!important}.rm-APILogInfo .Button{font-family:var(--recurly-font)!important;font-size:11px!important;font-weight:700!important;letter-spacing:.3px!important;color:var(--recurly-offwhite)!important;background:0 0!important;border:1px solid var(--recurly-gray)!important;border-radius:20px!important;padding:6px 16px!important;transition:background .12s,border-color .12s,color .12s!important}.rm-APILogInfo .Button:hover{background:var(--recurly-yellow)!important;border-color:var(--recurly-yellow)!important;color:var(--recurly-offblack)!important}#hub-sidebar,#reference-sidebar,.rm-Sidebar{font-family:var(--recurly-font)!important;background:#fff!important}#hub-sidebar .rm-Sidebar-heading,#reference-sidebar .rm-Sidebar-heading,.rm-Sidebar .rm-Sidebar-heading{font-family:var(--recurly-font)!important;font-size:10px!important;font-weight:800!important;color:var(--recurly-gray)!important;letter-spacing:.8px!important;text-transform:uppercase!important;padding:20px 16px 6px!important;margin:0!important;border-bottom:0!important}#hub-sidebar .rm-Sidebar-list,#reference-sidebar .rm-Sidebar-list,.rm-Sidebar .rm-Sidebar-list{list-style:none!important;margin:0!important;padding:0!important}#hub-sidebar .rm-Sidebar-link,#reference-sidebar .rm-Sidebar-link,.rm-Sidebar .rm-Sidebar-link{font-family:var(--recurly-font)!important;font-size:13px!important;font-weight:500!important;color:var(--recurly-offblack)!important;text-decoration:none!important;display:flex!important;align-items:center!important;justify-content:space-between!important;padding:7px 16px!important;transition:background .12s,color .12s!important;line-height:1.4!important}#hub-sidebar .rm-Sidebar-link:hover,#reference-sidebar .rm-Sidebar-link:hover,.rm-Sidebar .rm-Sidebar-link:hover{color:var(--recurly-offblack)!important;background:rgba(13,13,11,.05)!important;text-decoration:none!important}#hub-sidebar .rm-Sidebar-link.active,#hub-sidebar .rm-Sidebar-link[aria-current=page],#reference-sidebar .rm-Sidebar-link.active,#reference-sidebar .rm-Sidebar-link[aria-current=page],.rm-Sidebar .rm-Sidebar-link.active,.rm-Sidebar .rm-Sidebar-link[aria-current=page]{color:var(--recurly-offblack)!important;font-weight:700!important;background:rgba(255,215,6,.2)!important}#hub-sidebar .rm-Sidebar-link.Sidebar-link_parent,#reference-sidebar .rm-Sidebar-link.Sidebar-link_parent,.rm-Sidebar .rm-Sidebar-link.Sidebar-link_parent{font-weight:600!important}#hub-sidebar .rm-Sidebar-link.Sidebar-link_hidden,#reference-sidebar .rm-Sidebar-link.Sidebar-link_hidden,.rm-Sidebar .rm-Sidebar-link.Sidebar-link_hidden{opacity:.45!important}#hub-sidebar .rm-Sidebar-link.Sidebar-link_hidden:hover,#reference-sidebar .rm-Sidebar-link.Sidebar-link_hidden:hover,.rm-Sidebar .rm-Sidebar-link.Sidebar-link_hidden:hover{opacity:.7!important}#hub-sidebar .rm-Sidebar-link.subpage,#reference-sidebar .rm-Sidebar-link.subpage,.rm-Sidebar .rm-Sidebar-link.subpage{font-size:12.5px!important;font-weight:400!important;color:var(--recurly-offblack)!important;padding-left:28px!important;align-items:flex-start!important}#hub-sidebar .rm-Sidebar-link.subpage:hover,#reference-sidebar .rm-Sidebar-link.subpage:hover,.rm-Sidebar .rm-Sidebar-link.subpage:hover{color:var(--recurly-offblack)!important;background:rgba(13,13,11,.04)!important}#hub-sidebar .rm-Sidebar-link.subpage.active,#hub-sidebar .rm-Sidebar-link.subpage[aria-current=page],#reference-sidebar .rm-Sidebar-link.subpage.active,#reference-sidebar .rm-Sidebar-link.subpage[aria-current=page],.rm-Sidebar .rm-Sidebar-link.subpage.active,.rm-Sidebar .rm-Sidebar-link.subpage[aria-current=page]{color:var(--recurly-offblack)!important;font-weight:700!important;background:rgba(255,215,6,.2)!important}#hub-sidebar .subpages .subpages .rm-Sidebar-link.subpage,#reference-sidebar .subpages .subpages .rm-Sidebar-link.subpage,.rm-Sidebar .subpages .subpages .rm-Sidebar-link.subpage{padding-left:40px!important}#hub-sidebar .subpages .subpages .subpages .rm-Sidebar-link.subpage,#reference-sidebar .subpages .subpages .subpages .rm-Sidebar-link.subpage,.rm-Sidebar .subpages .subpages .subpages .rm-Sidebar-link.subpage{padding-left:52px!important}[class*=Sidebar-link-text_label]{display:block!important;overflow:hidden!important;text-overflow:ellipsis!important;font-size:inherit!important;font-weight:inherit!important;color:inherit!important}#hub-sidebar [class*=Sidebar-link-buttonWrapper],#reference-sidebar [class*=Sidebar-link-buttonWrapper],.rm-Sidebar [class*=Sidebar-link-buttonWrapper]{background:0 0!important;border:0!important;padding:4px 6px!important;color:var(--recurly-offblack)!important;cursor:pointer!important;flex-shrink:0!important;display:flex!important;align-items:center!important;justify-content:center!important;border-radius:4px!important;transition:background .12s,color .12s!important}#hub-sidebar [class*=Sidebar-link-buttonWrapper]:hover,#reference-sidebar [class*=Sidebar-link-buttonWrapper]:hover,.rm-Sidebar [class*=Sidebar-link-buttonWrapper]:hover{background:rgba(13,13,11,.06)!important;color:var(--recurly-tangerine)!important}[class*=Sidebar-link-expandIcon]{font-size:13px!important;transition:transform .18s ease!important;color:inherit!important}.subnav-expanded>.rm-Sidebar-link>[class*=Sidebar-link-buttonWrapper] [class*=Sidebar-link-expandIcon],[class*=Sidebar-link-buttonWrapper][aria-expanded=true] [class*=Sidebar-link-expandIcon]{transform:rotate(90deg)!important;color:var(--recurly-tangerine)!important}[class*=Sidebar-link-externalIcon]{font-size:10px!important;color:var(--recurly-offblack)!important}.rm-Sidebar-link:hover [class*=Sidebar-link-externalIcon]{color:var(--recurly-tangerine)!important}#hub-sidebar .rm-Sidebar-section+.rm-Sidebar-section,#reference-sidebar .rm-Sidebar-section+.rm-Sidebar-section,.rm-Sidebar .rm-Sidebar-section+.rm-Sidebar-section{border-top:1px solid var(--recurly-lightgray)!important;margin-top:4px!important}[class*=Nav-toggle-collapse]{color:var(--recurly-gray)!important;background:0 0!important;border:0!important;transition:color .12s!important}[class*=Nav-toggle-collapse]:hover{color:var(--recurly-offblack)!important}[class*=QuickNav-button]{font-family:var(--recurly-font)!important;font-size:11px!important;font-weight:800!important;letter-spacing:.6px!important;color:var(--recurly-gray)!important;background:0 0!important;border:1px solid var(--recurly-lightgray)!important;border-radius:8px!important;padding:6px 12px!important;cursor:pointer!important;display:flex!important;align-items:center!important;gap:8px!important;width:100%!important;transition:background .12s,border-color .12s,color .12s!important}[class*=QuickNav-button]:hover{background:rgba(13,13,11,.05)!important;border-color:var(--recurly-offblack)!important;color:var(--recurly-offblack)!important}[class*=KbdShortcut]{font-family:Menlo,Monaco,Consolas,'Courier New',monospace!important;font-size:10px!important;color:var(--recurly-gray)!important;background:rgba(13,13,11,.06)!important;border:1px solid var(--recurly-lightgray)!important;border-radius:4px!important;padding:1px 5px!important}#reference-sidebar .rm-APIMethod,[class*=Sidebar-method]{font-family:var(--recurly-font)!important;font-size:9px!important;font-weight:800!important;letter-spacing:.4px!important;text-transform:uppercase!important;padding:2px 6px!important;border-radius:10px!important;border:0!important;background:var(--recurly-offblack)!important;color:var(--recurly-offwhite)!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;line-height:1!important;flex-shrink:0!important;margin-top:2px!important}[class*=Sidebar-link-pageIconCustom]{display:flex!important;align-items:center!important;justify-content:center!important;width:18px!important;height:18px!important;flex-shrink:0!important;color:var(--recurly-gray)!important}.rm-Sidebar-link:hover [class*=Sidebar-link-pageIconCustom]{color:var(--recurly-tangerine)!important}.rm-Sidebar-link.active [class*=Sidebar-link-pageIconCustom],.rm-Sidebar-link[aria-current=page] [class*=Sidebar-link-pageIconCustom]{color:var(--recurly-offblack)!important}.rm-UserAvatar{font-family:var(--recurly-font)!important;font-size:9px!important;font-weight:800!important;background:var(--recurly-offblack)!important;color:var(--recurly-yellow)!important;border-radius:50%!important;width:18px!important;height:18px!important;display:flex!important;align-items:center!important;justify-content:center!important;flex-shrink:0!important}[class*=QuickNav-modal-search]{font-family:var(--recurly-font)!important;font-size:14px!important;color:var(--recurly-offblack)!important;background:var(--recurly-offwhite)!important;border:1px solid var(--recurly-lightgray)!important;border-radius:8px!important;padding:10px 14px!important;width:100%!important;outline:0!important;transition:border-color .12s!important}[class*=QuickNav-modal-search]:focus{border-color:var(--recurly-offblack)!important}[class*=QuickNav-modal-search]::placeholder{color:var(--recurly-lightgray)!important}[class*=QuickNav-content]{font-family:var(--recurly-font)!important}[class*=QuickNav-destination-section]{list-style:none!important;margin:0 0 8px!important;padding:0!important}[class*=QuickNav-destination-section-heading]{font-family:var(--recurly-font)!important;font-size:9px!important;font-weight:800!important;color:var(--recurly-lightgray)!important;letter-spacing:1px!important;text-transform:uppercase!important;padding:14px 12px 6px!important;list-style:none!important}[class*=destination-item]{list-style:none!important}[class*=destination-item-anchor]{font-family:var(--recurly-font)!important;font-size:13px!important;font-weight:400!important;color:var(--recurly-darkgray)!important;text-decoration:none!important;display:block!important;padding:6px 12px!important;transition:background .1s,color .1s!important}[class*=destination-item-anchor]:hover{color:var(--recurly-offblack)!important;background:rgba(13,13,11,.04)!important;text-decoration:none!important}[class*=destination-item-anchor].active,[class*=destination-item-anchor][aria-current=page]{color:var(--recurly-offblack)!important;font-weight:700!important;background:rgba(255,215,6,.2)!important}[class*=destination-item-anchor-row-container]{display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:8px!important;font-size:inherit!important;color:inherit!important}[class*=destination-item-anchor-row-container-method]{font-family:var(--recurly-font)!important;font-size:9px!important;font-weight:800!important;letter-spacing:.4px!important;text-transform:uppercase!important;padding:2px 6px!important;border-radius:10px!important;border:0!important;background:var(--recurly-offblack)!important;color:var(--recurly-offwhite)!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;line-height:1!important;flex-shrink:0!important;margin-top:2px!important}[class*=destination-item-anchor-row-container-method].APIMethod_get{color:var(--recurly-green)!important}[class*=destination-item-anchor-row-container-method].APIMethod_post{color:var(--recurly-tangerine)!important}[class*=destination-item-anchor-row-container-method].APIMethod_put{color:var(--recurly-yellow)!important}[class*=destination-item-anchor-row-container-method].APIMethod_patch{color:var(--recurly-teal)!important}[class*=destination-item-anchor-row-container-method].APIMethod_del{color:var(--recurly-vermillion)!important}#recurly-changelog-header{background:var(--recurly-offblack)!important;border-radius:12px!important;padding:32px 36px!important;margin:0 auto 28px auto!important;max-width:1080px!important}#recurly-changelog-header h1{font-family:var(--recurly-font)!important;font-size:1.5rem!important;font-weight:800!important;color:var(--recurly-yellow)!important;margin:0 0 12px!important;padding:0!important;border:0!important}#recurly-changelog-header p{font-family:var(--recurly-font)!important;font-size:15px!important;color:var(--recurly-lightgray)!important;line-height:1.6!important;margin:0!important;padding:0!important;background:0 0!important;border:0!important;border-radius:0!important}#recurly-changelog-header .rss-line{margin-top:14px!important;padding-top:14px!important;border-top:1px solid var(--recurly-darkgray)!important;font-size:13px!important;color:var(--recurly-lightgray)!important;display:flex!important;align-items:center!important;gap:8px!important}#recurly-changelog-header .rss-icon{color:var(--recurly-yellow)!important;font-size:13px!important;flex-shrink:0!important;opacity:.9!important}#recurly-changelog-header .rss-copy{background:0 0!important;border:0!important;padding:0!important;font-family:inherit!important;font-size:inherit!important;font-weight:700!important;color:var(--recurly-yellow)!important;text-decoration:underline!important;text-decoration-color:var(--recurly-yellow)!important;text-underline-offset:3px!important;cursor:pointer!important;transition:color .15s,text-decoration-color .15s!important}#recurly-changelog-header .rss-copy:hover{color:var(--recurly-tangerine)!important;text-decoration-color:var(--recurly-tangerine)!important}#recurly-changelog-header .rss-copy.rss-copied{color:var(--recurly-yellow)!important;text-decoration:none!important}main.rm-Changelog article,main.rm-Changelog article.rm-Changelog-post{background:#fff!important;border:1px solid var(--recurly-lightgray)!important;border-radius:10px!important;padding:22px 26px!important;margin:0 auto 16px!important;max-width:1080px!important;width:100%!important;box-sizing:border-box!important;overflow:hidden!important}main.rm-Changelog .ChangelogPage_list-post,main.rm-Changelog .rm-Changelog-post,main.rm-Changelog [class*=ChangelogPost_text],main.rm-Changelog [class*=ChangelogPost_text]>.markdown-body{min-width:0!important;max-width:100%!important;box-sizing:border-box!important;overflow-wrap:anywhere!important}.rm-Changelog [class*=ChangelogPost_title]{font-family:var(--recurly-font)!important;font-size:1.1rem!important;font-weight:700!important;margin:0 0 8px!important;padding-bottom:10px!important;border-bottom:2px solid var(--recurly-tangerine)!important}.rm-Changelog [class*=ChangelogPost_title] a{color:var(--recurly-offblack)!important;text-decoration:none!important;transition:color .15s!important}.rm-Changelog [class*=ChangelogPost_title] a:hover{color:var(--recurly-tangerine)!important}.rm-Changelog .DateLine{font-family:var(--recurly-font)!important;font-size:13px!important;color:var(--recurly-gray)!important;margin-bottom:12px!important}.rm-Changelog [class*=ChangelogPost_text]>.markdown-body>p:first-child,.rm-Changelog [class*=ChangelogPost_text]>p{font-family:var(--recurly-font)!important;font-size:14px!important;color:var(--recurly-darkgray)!important;line-height:1.65!important;margin:0!important}[class*=ChangelogPost_text]{overflow:hidden!important}[class*=ChangelogPost_text]>.markdown-body>h2,[class*=ChangelogPost_text]>.markdown-body>p{max-width:880px!important}[class*=ChangelogPost_text] .markdown-body p{font-family:var(--recurly-font)!important;font-size:14px!important;color:var(--recurly-darkgray)!important;line-height:1.65!important}[class*=ChangelogPost_text] .markdown-body a{color:var(--recurly-tangerine)!important;text-decoration:none!important}[class*=ChangelogPost_text] .markdown-body a:hover{text-decoration:underline!important;text-decoration-color:var(--recurly-tangerine)!important}[class*=ChangelogPost_text] .markdown-body h2,[class*=ChangelogPost_text] .markdown-body h2.heading{font-family:var(--recurly-font)!important;font-size:1.05rem!important;font-weight:800!important;color:var(--recurly-offblack)!important;margin:32px 0 12px!important;padding-bottom:8px!important;border-bottom:2px solid var(--recurly-yellow)!important;background:0 0!important;border-left:0!important;border-right:0!important;border-top:0!important}[class*=ChangelogPost_text] .heading-anchor-icon{display:none!important}[class*=ChangelogPost_text] .rdmd-table{overflow-x:auto!important;-webkit-overflow-scrolling:touch!important;margin:4px 0 24px!important;border-radius:8px!important;border:1px solid var(--recurly-lightgray)!important;max-width:100%!important;width:100%!important}[class*=ChangelogPost_text] .rdmd-table-inner{min-width:660px!important;width:100%!important}[class*=ChangelogPost_text] .rdmd-table table{width:100%!important;table-layout:fixed!important;border-collapse:collapse!important;font-family:var(--recurly-font)!important;font-size:13px!important;line-height:1.5!important;border:0!important}[class*=ChangelogPost_text] .rdmd-table thead th,[class*=ChangelogPost_text] .rdmd-table thead tr{background:var(--recurly-offblack)!important}[class*=ChangelogPost_text] .rdmd-table thead th{color:var(--recurly-offwhite)!important;font-family:var(--recurly-font)!important;font-size:12px!important;font-weight:700!important;text-align:left!important;padding:10px 12px!important;border:0!important;white-space:normal!important;line-height:1.3!important;vertical-align:middle!important}[class*=ChangelogPost_text] .rdmd-table tbody td,[class*=ChangelogPost_text] .rdmd-table tbody tr{background:#fff!important}[class*=ChangelogPost_text] .rdmd-table tbody td{color:var(--recurly-darkgray)!important;font-family:var(--recurly-font)!important;font-size:13px!important;padding:10px 12px!important;vertical-align:top!important;border:0!important;border-bottom:1px solid var(--recurly-lightgray)!important;line-height:1.55!important}[class*=ChangelogPost_text] .rdmd-table tbody tr:last-child td{border-bottom:0!important}[class*=ChangelogPost_text] .rdmd-table tbody td:first-child{white-space:nowrap!important;color:var(--recurly-gray)!important;font-size:12px!important;width:72px!important}[class*=ChangelogPost_text] .rdmd-table tbody td:nth-child(2){font-weight:600!important;color:var(--recurly-offblack)!important;width:180px!important}[class*=ChangelogPost_text] .rdmd-table tbody td:nth-child(3){white-space:nowrap!important;width:80px!important;font-weight:700!important;font-size:11px!important;text-transform:uppercase!important;letter-spacing:.4px!important;color:var(--recurly-gray)!important}[class*=ChangelogPost_text] .rdmd-table tbody td:nth-child(4){white-space:nowrap!important}[class*=ChangelogPost_text] .rdmd-table tbody td:nth-child(5){width:auto!important;font-size:14px!important;line-height:1.65!important}[class*=ChangelogPost_text] .rdmd-table thead th:first-child{width:76px!important}[class*=ChangelogPost_text] .rdmd-table thead th:nth-child(2){width:100px!important}[class*=ChangelogPost_text] .rdmd-table thead th:nth-child(3){width:108px!important}[class*=ChangelogPost_text] .rdmd-table thead th:nth-child(4){width:88px!important}[class*=ChangelogPost_text] .rdmd-table thead th:nth-child(5){width:auto!important}[class*=ChangelogPost_text] .rdmd-table tbody td a{color:var(--recurly-tangerine)!important;text-decoration:none!important}[class*=ChangelogPost_text] .rdmd-table tbody td a:hover{text-decoration:underline!important}[class*=ChangelogPost_text] .rdmd-table tbody td code.rdmd-code{background:var(--recurly-brightgray)!important;color:var(--recurly-darkgray)!important;font-size:12px!important;padding:2px 6px!important;border-radius:4px!important;font-family:Menlo,Monaco,Consolas,monospace!important;display:inline!important}[class*=ChangelogPost_text] .rdmd-table .rdmd-code-copy{display:none!important}#recurly-changelog-header .rss-instructions-wrap{margin-top:10px!important}#recurly-changelog-header .rss-instructions-toggle{display:inline-flex!important;align-items:center!important;gap:7px!important;background:0 0!important;border:1px solid var(--recurly-darkgray)!important;border-radius:20px!important;padding:5px 14px 5px 10px!important;font-family:var(--recurly-font)!important;font-size:12px!important;font-weight:600!important;color:var(--recurly-lightgray)!important;cursor:pointer!important;transition:border-color .15s,color .15s!important;line-height:1!important}#recurly-changelog-header .rss-instructions-toggle:hover{border-color:var(--recurly-yellow)!important;color:var(--recurly-yellow)!important}#recurly-changelog-header .rss-chevron{font-size:10px!important;transition:transform .2s ease!important}#recurly-changelog-header .rss-instructions-open .rss-chevron{transform:rotate(180deg)!important}#recurly-changelog-header .rss-instructions-body{margin-top:14px!important;padding:16px 18px!important;background:rgba(255,253,242,.04)!important;border-radius:8px!important;border:1px solid var(--recurly-darkgray)!important}#recurly-changelog-header .rss-instructions-body p{font-size:13px!important;color:var(--recurly-lightgray)!important;line-height:1.65!important;margin:0 0 10px!important;opacity:1!important}#recurly-changelog-header .rss-instructions-body p:last-child{margin-bottom:0!important}#recurly-changelog-header .rss-instructions-body ol{margin:10px 0 12px 0!important;padding-left:20px!important;list-style:decimal!important}#recurly-changelog-header .rss-instructions-body ol li{font-family:var(--recurly-font)!important;font-size:13px!important;color:var(--recurly-lightgray)!important;line-height:1.65!important;margin-bottom:6px!important;opacity:1!important}#recurly-changelog-header .rss-instructions-body ol li:last-child{margin-bottom:0!important}#recurly-changelog-header .rss-instructions-body strong{font-weight:700!important;color:rgba(255,253,242,.92)!important}#recurly-changelog-header .rss-instructions-body a{color:var(--recurly-tangerine)!important;text-decoration:none!important;font-weight:600!important}#recurly-changelog-header .rss-instructions-body a:hover{text-decoration:underline!important;text-decoration-color:var(--recurly-tangerine)!important}#recurly-changelog-header .rss-instructions-tip{margin-top:12px!important;padding:10px 12px!important;background:rgba(255,201,0,.06)!important;border-left:3px solid var(--recurly-yellow)!important;border-radius:0 6px 6px 0!important;font-size:12px!important;color:var(--recurly-lightgray)!important;display:flex!important;gap:8px!important;align-items:flex-start!important}#recurly-changelog-header .rss-instructions-tip i{color:var(--recurly-yellow)!important;font-size:13px!important;margin-top:2px!important;flex-shrink:0!important}@media (max-width:640px){[class*=ChangelogPost_text] .rdmd-table tbody td:first-child,[class*=ChangelogPost_text] .rdmd-table thead th:first-child{display:none!important}[class*=ChangelogPost_text] .rdmd-table tbody td:nth-child(2){width:130px!important}}.rm-ToC{font-family:var(--recurly-font)!important;font-size:13px!important;position:relative!important}.rm-ToC::before{background:var(--recurly-yellow)!important;transition:top .2s ease,height .2s ease!important}.rm-ToC .toc-list,.rm-ToC .toc-list ul{list-style:none!important;margin:0!important;padding:0!important}:root{--recurly-yellow:#FFD706;--recurly-offblack:#0D0D0B;--recurly-blue:#008CFF;--recurly-blue-hover:#0067BE;--recurly-poppy:#FF5126;--recurly-teal:#2DCECE;--recurly-green:#5DC32E;--recurly-ob1:#FCFBF7;--recurly-ob2:#F2F1EA;--recurly-ob3:#D1CFC4;--recurly-ob4:#807D75;--recurly-ob5:#32312D;--recurly-offwhite:var(--recurly-ob1);--recurly-brightgray:var(--recurly-ob2);--recurly-lightgray:var(--recurly-ob3);--recurly-gray:var(--recurly-ob4);--recurly-darkgray:var(--recurly-ob5);--recurly-tangerine:var(--recurly-blue);--recurly-vermillion:var(--recurly-poppy);--recurly-salmon:var(--recurly-poppy);--recurly-deepchar:var(--recurly-offblack);--recurly-darknavy:var(--recurly-offblack);--recurly-font:'Figtree','Segoe UI',system-ui,sans-serif;--yellow:var(--recurly-yellow);--offblack:var(--recurly-offblack);--blue:var(--recurly-blue);--blue-hover:var(--recurly-blue-hover);--poppy:var(--recurly-poppy);--teal:var(--recurly-teal);--green:var(--recurly-green);--tangerine:var(--recurly-tangerine);--vermillion:var(--recurly-vermillion);--salmon:var(--recurly-salmon);--darkgray:var(--recurly-darkgray);--gray:var(--recurly-gray);--lightgray:var(--recurly-lightgray);--brightgray:var(--recurly-brightgray);--offwhite:var(--recurly-offwhite);--deepchar:var(--recurly-deepchar);--darknavy:var(--recurly-darknavy);--font:var(--recurly-font);--rm-font-body:var(--recurly-font);--rm-font-heading:var(--recurly-font);--markdown-font:var(--recurly-font);--font-family:var(--recurly-font)}*,::after,::before{box-sizing:border-box}.rp-page{font-family:var(--font);color:var(--deepchar);font-size:15px;line-height:1.6;max-width:860px}.rp-overview{border-left:4px solid var(--yellow);background:var(--offwhite);padding:16px 22px;border-radius:0 8px 8px 0;margin-bottom:20px;font-size:15px;color:var(--darkgray)}.rp-plan{display:inline-block;background:var(--offblack)!important;color:var(--yellow)!important;border:0!important;font-size:13px;font-weight:700;padding:6px 16px;border-radius:20px;margin-bottom:24px;letter-spacing:.3px}.rp-cost{border-left:4px solid var(--tangerine);background:#fff8f2;padding:14px 20px;border-radius:0 8px 8px 0;margin-bottom:20px;font-size:14px;color:var(--darkgray)}.rp-cost a{color:var(--tangerine)}.rp-definition{background:var(--brightgray);border-radius:10px;padding:22px 26px;margin-bottom:28px;font-size:15px;color:var(--darkgray);line-height:1.7}.rp-benefits{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:32px}.rp-benefits.rp-benefits-2x2{grid-template-columns:repeat(2,1fr)}.rp-benefit{background:var(--offblack)!important;color:var(--offwhite)!important;border-radius:10px;padding:20px}.rp-benefit-icon{color:var(--yellow)!important;font-size:20px;margin-bottom:10px}.rp-benefit strong{display:block;font-size:14px;font-weight:700;margin-bottom:6px;color:var(--offwhite)!important}.rp-benefit span{font-size:13px;color:var(--lightgray)!important;line-height:1.5}.rp-benefit .rdmd-code,.rp-benefit code,.rp-benefit code.rdmd-code{background:rgba(255,253,242,.1)!important;color:var(--tangerine)!important;border-radius:4px!important;padding:1px 5px!important;font-size:.92em!important;box-shadow:none!important}.rp-h1{font-size:1.5rem!important;font-weight:800!important;color:var(--offblack)!important;margin:36px 0 14px;padding-bottom:8px;border-bottom:2px solid var(--yellow)!important}.rp-h2{font-size:1.1rem!important;font-weight:700!important;color:var(--offblack)!important;margin:28px 0 10px;border-bottom:0!important;padding-bottom:0!important;text-decoration:none!important}.rp-h3{font-size:.95rem!important;font-weight:700!important;color:var(--darkgray)!important;margin:20px 0 8px;border-bottom:0!important;padding-bottom:0!important;text-decoration:none!important}.rp-h4{font-size:.9rem!important;font-weight:600!important;color:var(--darkgray)!important;margin:16px 0 6px;border-bottom:0!important;padding-bottom:0!important;text-decoration:none!important}.rp-h2:first-child{margin-top:0!important}.rp-h3:first-child{margin-top:0!important}.rp-card{background:var(--offwhite);border:1px solid var(--lightgray);border-radius:10px;padding:22px 26px;margin-bottom:20px;font-size:14px;color:var(--darkgray);line-height:1.65}.rp-steps{display:flex;flex-direction:column;margin-bottom:24px}.rp-step{display:flex;gap:16px;align-items:flex-start;background:var(--offwhite);border:1px solid var(--lightgray);border-radius:10px;padding:18px 22px;margin-bottom:12px}.rp-steps .rp-step{margin-bottom:0}.rp-steps .rp-step+.rp-step{margin-top:12px}.rp-step-num{width:34px;height:34px;border-radius:50%;background:var(--offblack);color:var(--yellow);font-weight:800;font-size:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.rp-step h4{font-size:.95rem;font-weight:700;color:var(--offblack);margin:0 0 4px}.rp-step p{font-size:.87rem;color:var(--gray);line-height:1.6;margin:0}.rp-callout{border-radius:0 8px 8px 0;padding:14px 18px;margin:16px 0;font-size:14px}.rp-callout strong{display:inline}.rp-callout strong:first-child{display:block;margin-bottom:4px}.rp-callout-note{border-left:4px solid var(--offblack);background:var(--brightgray);color:var(--offblack)}.rp-callout-tip{border-left:4px solid var(--green);background:#effaea;color:var(--offblack)}.rp-callout-warning{border-left:4px solid var(--yellow);background:#fffecb;color:var(--offblack)}.rp-callout-important{border-left:4px solid var(--poppy);background:#ffeee9;color:var(--offblack)}.rp-gw-table{width:100%;border-collapse:separate!important;border-spacing:0!important;font-size:14px;margin-bottom:28px;border-radius:10px!important;border:1px solid var(--lightgray)}.rp-gw-table tr.rp-thead-row td{background:var(--offblack)!important;color:var(--offwhite)!important;font-weight:700;padding:12px 16px}.rp-gw-table tr.rp-thead-row td:first-child{color:var(--offwhite)!important}.rp-gw-table td{padding:12px 16px;vertical-align:top;background:var(--offwhite)!important}.rp-gw-table tr:not(.rp-thead-row) td:first-child{font-weight:600;color:var(--offblack);width:35%}.rp-gw-table a{color:var(--tangerine)}.rp-gw-table tr:first-child td:first-child{border-top-left-radius:9px}.rp-gw-table tr:first-child td:last-child{border-top-right-radius:9px}.rp-gw-table tr:last-child td:first-child{border-bottom-left-radius:9px}.rp-gw-table tr:last-child td:last-child{border-bottom-right-radius:9px}.rp-pm-table{width:100%;border-collapse:separate!important;border-spacing:0!important;font-size:13px;margin:12px 0 24px;border-radius:10px!important;border:1px solid var(--lightgray)}.rp-pm-table tr.rp-thead-row td{background:var(--offblack)!important;color:var(--offwhite)!important;font-weight:700;padding:10px 12px}.rp-pm-table tr.rp-thead-row td:first-child{color:var(--offwhite)!important}.rp-pm-table td{padding:10px 12px;border-bottom:1px solid var(--lightgray);vertical-align:top;background:var(--offwhite)!important}.rp-pm-table tr:last-child td{border-bottom:0!important}.rp-pm-table tr:first-child td:first-child{border-top-left-radius:9px}.rp-pm-table tr:first-child td:last-child{border-top-right-radius:9px}.rp-pm-table tr:last-child td:first-child{border-bottom-left-radius:9px}.rp-pm-table tr:last-child td:last-child{border-bottom-right-radius:9px}.rp-params{width:100%;border-collapse:separate!important;border-spacing:0!important;font-size:14px;margin:12px 0 24px;border-radius:10px!important;border:1px solid var(--lightgray)}.rp-params tr.rp-thead-row td{background:var(--offblack)!important;color:var(--offwhite)!important;font-weight:700;padding:10px 14px}.rp-params tr.rp-thead-row td:first-child{color:var(--offwhite)!important}.rp-params td{padding:10px 14px;border-bottom:1px solid var(--lightgray);vertical-align:top;background:var(--offwhite)!important}.rp-params tr:last-child td{border-bottom:0!important}.rp-params tr:not(.rp-thead-row) td:first-child{font-weight:600;color:var(--offblack);width:28%}.rp-params tr:first-child td:first-child{border-top-left-radius:9px}.rp-params tr:first-child td:last-child{border-top-right-radius:9px}.rp-params tr:last-child td:first-child{border-bottom-left-radius:9px}.rp-params tr:last-child td:last-child{border-bottom-right-radius:9px}.rp-btn-download{display:inline-flex!important;align-items:center!important;gap:8px!important;background:var(--yellow)!important;color:var(--offblack)!important;font-family:var(--font)!important;font-size:14px!important;font-weight:700!important;padding:10px 22px!important;border-radius:8px!important;text-decoration:none!important;margin-bottom:20px!important;border:0!important;cursor:pointer!important;transition:filter .15s ease,transform .15s ease,box-shadow .15s ease!important}.rp-btn-download:hover{filter:brightness(.92)!important;transform:translateY(-1px)!important;box-shadow:0 4px 12px rgba(255,215,6,.25)!important}.rp-btn-download:active{transform:scale(.97) translateY(0)!important;box-shadow:0 1px 4px rgba(255,215,6,.15)!important;filter:brightness(.85)!important}.rp-list{background:var(--offwhite);border:1px solid var(--lightgray);border-radius:10px;padding:16px 22px 16px 38px;margin-bottom:20px;font-size:14px;color:var(--darkgray);line-height:1.7}.rp-video{position:relative;padding-top:56.25%;margin-bottom:28px;border-radius:10px;overflow:hidden}.rp-video iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}iframe:not([style*="position: absolute"]):not([style*="position:absolute"]){width:100%;height:450px}[style*=padding-top]>iframe,[style*=paddingTop]>iframe{position:absolute!important;top:0!important;left:0!important;width:100%!important;height:100%!important;border:none!important}.img.img-align-center,span.img.img-align-center{display:block!important;margin-left:auto!important;margin-right:auto!important;text-align:center!important}.rp-zoom{display:contents}.rp-zoom-label{display:block}a.rp-zoom-label{pointer-events:none!important}a.rp-zoom-label .img.lightbox,a.rp-zoom-label span.img{pointer-events:auto!important;cursor:zoom-in!important}.rp-zoom-overlay{display:none!important}.rp-zoom-label .img.lightbox,.rp-zoom-label span.img{display:block!important;width:90%!important;max-width:860px!important;margin:16px auto!important;cursor:zoom-in!important}.rp-zoom-label .lightbox-inner{display:block!important;width:100%!important}.rp-zoom-img,.rp-zoom-label .lightbox-inner img,.rp-zoom-label img.img{display:block!important;width:100%!important;height:auto!important;max-width:100%!important;border-radius:8px!important;box-shadow:0 0 0 1px #d1cfc4!important;transition:opacity .15s ease;box-sizing:border-box!important}.rp-zoom-label:hover .lightbox-inner img,.rp-zoom-label:hover img.img{opacity:.88}a.rp-zoom-label.rp-zoom-small{display:block!important;max-width:320px!important;width:320px!important;margin-left:auto!important;margin-right:auto!important}a.rp-zoom-label.rp-zoom-small .img.lightbox.closed,a.rp-zoom-label.rp-zoom-small span.img.closed{max-width:320px!important;width:320px!important}a.rp-zoom-label.rp-zoom-small .img.lightbox.open,a.rp-zoom-label.rp-zoom-small span.img.open{max-width:none!important;width:90%!important}.rp-toc{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 32px}.rp-toc-pill{display:inline-flex;align-items:center;gap:8px;padding:8px 18px 8px 10px;border-radius:20px;border:1px solid var(--offblack)!important;background:var(--offblack)!important;color:var(--offwhite)!important;text-decoration:none!important;font-size:13px;font-weight:700;white-space:nowrap;transition:background .15s,border-color .15s,color .15s}.rp-toc-pill:hover{background:var(--tangerine)!important;border-color:var(--tangerine)!important;color:var(--offblack)!important}.rp-toc-num{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--yellow)!important;color:var(--offblack)!important;font-size:11px;font-weight:800;flex-shrink:0;text-decoration:none!important}.rp-anchor{color:inherit!important;text-decoration:none!important;font-size:inherit!important;font-weight:inherit!important;border-bottom:0!important}.rp-anchor::after{content:" #";opacity:0;color:var(--lightgray);font-weight:400;font-size:.75em;transition:opacity .15s}.rp-anchor:hover::after{opacity:1}.rp-page ol:not(.rp-list),.rp-page ul:not(.rp-list){margin:8px 0 16px;padding-left:24px}.rp-page ol:not(.rp-list) li,.rp-page ul:not(.rp-list) li{margin-bottom:6px;line-height:1.6}@media (max-width:640px){.rp-benefits,.rp-benefits.rp-benefits-2x2{grid-template-columns:1fr}.rp-h1{font-size:1.25rem}}.rm-Markdown.markdown-body .rp-btn-primary,.rm-Markdown.markdown-body a.rp-btn-primary{display:inline-block!important;padding:10px 22px!important;border-radius:8px!important;border:0!important;box-shadow:none!important;font-weight:700!important;font-size:14px!important;font-family:var(--recurly-font)!important;text-decoration:none!important;cursor:pointer!important;margin:6px 8px 6px 0!important;background:#0d0d0b!important;color:#ffd706!important;transition:all .15s ease!important}.rm-Markdown.markdown-body .rp-btn-primary:hover,.rm-Markdown.markdown-body a.rp-btn-primary:hover{background:#32312d!important;color:#ffd706!important;transform:translateY(-1px)!important;box-shadow:0 4px 12px rgba(13,13,11,.15)!important}.rm-Markdown.markdown-body .rp-btn-secondary,.rm-Markdown.markdown-body a.rp-btn-secondary{display:inline-block!important;padding:10px 22px!important;border-radius:8px!important;border:0!important;box-shadow:none!important;font-weight:700!important;font-size:14px!important;font-family:var(--recurly-font)!important;text-decoration:none!important;cursor:pointer!important;margin:6px 8px 6px 0!important;background:#ffd706!important;color:#0d0d0b!important;transition:all .15s ease!important}.rm-Markdown.markdown-body .rp-btn-secondary:hover,.rm-Markdown.markdown-body a.rp-btn-secondary:hover{filter:brightness(.9)!important;color:#0d0d0b!important;transform:translateY(-1px)!important;box-shadow:0 4px 12px rgba(255,215,6,.2)!important}.rm-Markdown.markdown-body .rp-btn-ghost,.rm-Markdown.markdown-body a.rp-btn-ghost{display:inline-block!important;padding:10px 22px!important;border-radius:8px!important;border:1px solid #d1cfc4!important;box-shadow:none!important;font-weight:700!important;font-size:14px!important;font-family:var(--recurly-font)!important;text-decoration:none!important;cursor:pointer!important;margin:6px 8px 6px 0!important;background:0 0!important;color:#32312d!important;transition:all .15s ease!important}.rm-Markdown.markdown-body .rp-btn-ghost:hover,.rm-Markdown.markdown-body a.rp-btn-ghost:hover{background:#ffd706!important;color:#0d0d0b!important;border-color:#ffd706!important}.rm-Markdown.markdown-body .rp-btn-download,.rm-Markdown.markdown-body a.rp-btn-download{display:inline-flex!important;align-items:center!important;gap:8px!important;padding:10px 22px!important;border-radius:8px!important;border:0!important;box-shadow:none!important;font-weight:700!important;font-size:14px!important;font-family:var(--recurly-font)!important;text-decoration:none!important;cursor:pointer!important;margin-bottom:20px!important;background:#ffd706!important;color:#0d0d0b!important;transition:filter .15s ease,transform .15s ease,box-shadow .15s ease!important}.rm-Markdown.markdown-body .rp-btn-download:hover,.rm-Markdown.markdown-body a.rp-btn-download:hover{filter:brightness(.92)!important;color:#0d0d0b!important;transform:translateY(-1px)!important;box-shadow:0 4px 12px rgba(255,215,6,.25)!important}.rm-Markdown.markdown-body .rp-btn-download:active,.rm-Markdown.markdown-body a.rp-btn-download:active{transform:scale(.97) translateY(0)!important;box-shadow:0 1px 4px rgba(255,215,6,.15)!important;filter:brightness(.85)!important}.rm-Markdown.markdown-body p:has(> a.rp-btn-download),.rm-Markdown.markdown-body p:has(> a.rp-btn-ghost),.rm-Markdown.markdown-body p:has(> a.rp-btn-primary),.rm-Markdown.markdown-body p:has(> a.rp-btn-secondary){margin-bottom:0!important;margin-top:0!important}.rp-shelf{background:#0d0d0b;border-radius:16px;padding:24px 20px 20px;margin-bottom:20px;box-shadow:0 0 0 1px rgba(255,215,6,.1),0 24px 60px -30px rgba(255,215,6,.2)}.rp-shelf-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.rp-shelf-label{display:inline-flex;align-items:center;gap:8px;background:#ffd706;color:#0d0d0b;font-size:13px;font-weight:700;padding:6px 16px;border-radius:20px;letter-spacing:.3px;font-family:var(--recurly-font)}.rp-shelf-count{font-size:11px;color:rgba(252,251,247,.45);letter-spacing:1.2px;text-transform:uppercase;font-weight:600;font-family:var(--recurly-font)}.rp-shelf-viewport{overflow:hidden}.rp-shelf-track{display:flex;gap:14px;will-change:transform}.rp-shelf-card{background:linear-gradient(135deg,#1c1b18 0,#0d0d0b 100%);border:1px solid rgba(255,215,6,.15);border-radius:12px;padding:24px 26px;min-height:140px;opacity:.3;transform:scale(.95);transition:opacity .5s ease,transform .5s ease,border-color .5s ease,box-shadow .5s ease}.rp-shelf-card strong{display:block;font-size:15px;font-weight:700;color:#fcfbf7;margin-bottom:10px;font-family:var(--recurly-font)}.rp-shelf-card span{display:block;font-size:13px;color:rgba(252,251,247,.7);line-height:1.65;font-family:var(--recurly-font)}.rp-shelf-card a{color:#ffd706;text-decoration:underline}.rp-shelf-card.rp-active{opacity:1;transform:scale(1);border-color:rgba(255,215,6,.35);box-shadow:0 0 40px -10px rgba(255,215,6,.25),0 0 0 1px rgba(255,215,6,.2)}.rp-shelf-carousel .rp-shelf-card{flex:0 0 calc((100% - 28px)/ 3)}.rp-shelf-carousel .rp-shelf-track{transition:transform .5s cubic-bezier(.4, 0, .2, 1)}.rp-shelf-pair .rp-shelf-track,.rp-shelf-single .rp-shelf-track{justify-content:center}.rp-shelf-pair .rp-shelf-card{flex:0 0 calc((100% - 14px)/ 2)}.rp-shelf-single .rp-shelf-card{flex:0 0 88%}.rp-shelf-pair .rp-shelf-card,.rp-shelf-single .rp-shelf-card{opacity:1;transform:none;border-color:rgba(255,215,6,.3)}.rp-shelf-controls{display:flex;justify-content:center;gap:16px;margin-top:20px}.rp-shelf-btn{width:44px!important;height:44px!important;border-radius:50%!important;border:1px solid rgba(255,215,6,.25)!important;background:0 0!important;color:#ffd706!important;font-size:14px!important;cursor:pointer!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;padding:0!important;transition:all .25s cubic-bezier(.4, 0, .2, 1)!important}.rp-shelf-btn:hover{background:#ffd706!important;color:#0d0d0b!important;border-color:#ffd706!important;transform:translateY(-1px)!important;box-shadow:0 4px 20px rgba(255,215,6,.35)!important}.rp-shelf-btn:active{transform:translateY(0)!important}.rp-shelf-btn:focus-visible{outline:2px solid #FFD706!important;outline-offset:2px!important}@media (max-width:640px){.rp-shelf-carousel .rp-shelf-card{flex:0 0 82%}.rp-shelf-pair .rp-shelf-card{flex:0 0 88%}.rp-shelf-pair .rp-shelf-track{overflow-x:auto;justify-content:flex-start;scroll-snap-type:x mandatory;padding-bottom:6px}.rp-shelf-pair .rp-shelf-card{scroll-snap-align:center}}.CodeTabs,.CodeTabs.CodeTabs_initial,.CodeTabs.theme-dark,.CodeTabs.theme-light{background:var(--recurly-offblack)!important;color:var(--recurly-offwhite)!important;border:1px solid var(--recurly-darkgray)!important;border-radius:10px!important;margin:16px 0 24px!important;overflow:hidden!important;font-family:Menlo,Monaco,Consolas,'Courier New',monospace!important;font-size:13px!important;line-height:1.55!important}.CodeTabs-toolbar{background:var(--recurly-offblack)!important;border-bottom:1px solid var(--recurly-darkgray)!important;padding:8px 14px!important;display:flex!important;align-items:center!important;gap:4px!important;flex-wrap:wrap!important}.CodeTabs{--color-tab-active:#FFD706}.CodeTabs-toolbar button{background:0 0!important;border:0!important;color:var(--recurly-lightgray)!important;font-family:var(--recurly-font)!important;font-size:12px!important;font-weight:700!important;padding:5px 12px!important;border-radius:14px!important;cursor:pointer!important;transition:background .12s,color .12s!important}.CodeTabs-toolbar button:not(.CodeTabs_active):hover{background:0 0!important;color:#ffd706!important}.CodeTabs-toolbar button.CodeTabs_active{background:#ffd706!important;color:#0d0d0b!important;border-radius:14px!important;cursor:default!important;opacity:1!important;pointer-events:none!important}.CodeTabs-toolbar:has(> button:only-child)>button{background:0 0!important;color:#ffd706!important;border-radius:0!important;cursor:default!important;pointer-events:none!important;opacity:1!important}.CodeTabs-inner{background:var(--recurly-offblack)!important;position:relative!important}.CodeTabs-inner pre{background:var(--recurly-offblack)!important;color:var(--recurly-offwhite)!important;margin:0!important;padding:16px 18px!important;border:0!important;border-radius:0!important;overflow-x:auto!important;position:relative!important}.CodeTabs code.rdmd-code,.CodeTabs-inner pre code{background:0 0!important;color:var(--recurly-offwhite)!important;font-family:inherit!important;font-size:inherit!important;line-height:inherit!important;padding:0!important}.CodeTabs .rdmd-code-copy{background:0 0!important;border:1px solid var(--recurly-gray)!important;color:var(--recurly-lightgray)!important;border-radius:6px!important;padding:4px 10px!important;cursor:pointer!important;transition:background .12s,border-color .12s,color .12s!important}.CodeTabs .rdmd-code-copy:focus,.CodeTabs .rdmd-code-copy:hover{background:var(--recurly-tangerine)!important;border-color:var(--recurly-tangerine)!important;color:var(--recurly-offblack)!important}.CodeTabs .rdmd-code-copy.fa::before{color:inherit!important}pre>code.rdmd-code:not(.CodeTabs *){display:block!important;background:var(--recurly-offblack)!important;color:var(--recurly-offwhite)!important;border:1px solid var(--recurly-darkgray)!important;border-radius:10px!important;margin:16px 0 24px!important;padding:16px 18px!important;overflow-x:auto!important;font-family:Menlo,Monaco,Consolas,'Courier New',monospace!important;font-size:13px!important;line-height:1.55!important;white-space:pre!important}pre:has(> code.rdmd-code):not(.CodeTabs *){background:0 0!important;border:0!important;padding:0!important;margin:0!important}.CodeTabs code.rdmd-code .cm-s-neo,.CodeTabs code.rdmd-code .cm-s-neo span,pre>code.rdmd-code .cm-s-neo,pre>code.rdmd-code .cm-s-neo span{color:var(--recurly-offwhite)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-keyword,pre>code.rdmd-code .cm-s-neo .cm-keyword{color:var(--recurly-yellow)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-def,pre>code.rdmd-code .cm-s-neo .cm-def{color:var(--recurly-tangerine)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-attribute,pre>code.rdmd-code .cm-s-neo .cm-attribute{color:var(--recurly-tangerine)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-string,pre>code.rdmd-code .cm-s-neo .cm-string{color:var(--recurly-green)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-string-2,pre>code.rdmd-code .cm-s-neo .cm-string-2{color:var(--recurly-green)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-number,pre>code.rdmd-code .cm-s-neo .cm-number{color:var(--recurly-vermillion)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-comment,pre>code.rdmd-code .cm-s-neo .cm-comment{color:var(--recurly-gray)!important;font-style:italic}.CodeTabs code.rdmd-code .cm-s-neo .cm-meta,pre>code.rdmd-code .cm-s-neo .cm-meta{color:var(--recurly-tangerine)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-tag,pre>code.rdmd-code .cm-s-neo .cm-tag{color:var(--recurly-yellow)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-builtin,pre>code.rdmd-code .cm-s-neo .cm-builtin{color:var(--recurly-yellow)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-atom,pre>code.rdmd-code .cm-s-neo .cm-atom{color:var(--recurly-vermillion)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-variable,pre>code.rdmd-code .cm-s-neo .cm-variable{color:var(--recurly-offwhite)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-variable-2,pre>code.rdmd-code .cm-s-neo .cm-variable-2{color:var(--recurly-offwhite)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-variable-3,pre>code.rdmd-code .cm-s-neo .cm-variable-3{color:var(--recurly-lightgray)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-property,pre>code.rdmd-code .cm-s-neo .cm-property{color:var(--recurly-lightgray)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-operator,pre>code.rdmd-code .cm-s-neo .cm-operator{color:var(--recurly-lightgray)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-punctuation,pre>code.rdmd-code .cm-s-neo .cm-punctuation{color:var(--recurly-gray)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-bracket,pre>code.rdmd-code .cm-s-neo .cm-bracket{color:var(--recurly-lightgray)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-qualifier,pre>code.rdmd-code .cm-s-neo .cm-qualifier{color:var(--recurly-tangerine)!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-link,pre>code.rdmd-code .cm-s-neo .cm-link{color:var(--recurly-yellow)!important;text-decoration:underline!important}.CodeTabs code.rdmd-code .cm-s-neo .cm-error,pre>code.rdmd-code .cm-s-neo .cm-error{color:var(--recurly-vermillion)!important}.Accordion{background:0 0!important;border:1px solid var(--recurly-lightgray)!important;border-radius:10px!important;margin-bottom:12px!important;overflow:hidden!important;font-family:var(--recurly-font)!important}.Accordion-title{list-style:none!important;cursor:pointer!important;padding:16px 22px!important;font-size:15px!important;font-weight:700!important;color:var(--recurly-offblack)!important;background:var(--recurly-yellow)!important;display:flex!important;align-items:center!important;gap:12px!important;transition:background .15s,color .15s!important}.Accordion-title::-webkit-details-marker{display:none!important}.Accordion-title::marker{content:""!important}.Accordion-title:hover{background:var(--recurly-offblack)!important;color:var(--recurly-offwhite)!important}.Accordion[open] .Accordion-title{background:var(--recurly-offblack)!important;color:var(--recurly-offwhite)!important}.Accordion-toggleIcon{color:var(--recurly-offblack)!important;font-size:13px!important;font-weight:900!important;transition:transform .2s,color .15s!important;flex-shrink:0!important;width:14px!important;text-align:center!important}.Accordion-title:hover .Accordion-toggleIcon,.Accordion[open] .Accordion-title .Accordion-toggleIcon{color:var(--recurly-yellow)!important}.Accordion[open] .Accordion-toggleIcon{transform:rotate(90deg)!important}.Accordion-icon{color:var(--recurly-offblack)!important;--fa-primary-color:var(--recurly-offblack)!important;--fa-secondary-color:var(--recurly-offblack)!important;font-size:15px!important;flex-shrink:0!important;width:16px!important;text-align:center!important;transition:color .15s!important}.Accordion-title:hover .Accordion-icon,.Accordion[open] .Accordion-title .Accordion-icon{color:var(--recurly-yellow)!important;--fa-primary-color:var(--recurly-yellow)!important;--fa-secondary-color:var(--recurly-yellow)!important}.Accordion-content{padding:16px 22px 18px 48px!important;font-size:14px!important;line-height:1.65!important;color:var(--recurly-darkgray)!important}.Accordion-content p{margin:0 0 10px!important}.Accordion-content p:last-child{margin-bottom:0!important}.Accordion-content a{color:var(--recurly-tangerine)!important}.Accordion-content code{background:var(--recurly-brightgray)!important;padding:2px 6px!important;border-radius:4px!important;font-size:.92em!important}.CardsGrid{display:grid!important;grid-template-columns:repeat(min(var(--CardsGrid-columns,3),3),minmax(var(--CardsGrid-cardWidth,200px),1fr))!important;gap:14px!important;margin:16px 0 24px!important}.Card,.Card.Card_card{display:flex!important;flex-direction:column!important;gap:14px!important;background:var(--recurly-yellow)!important;border:0!important;border-radius:10px!important;padding:20px!important;text-decoration:none!important;transition:background .15s,transform .15s,box-shadow .15s!important;font-family:var(--recurly-font)!important;color:var(--recurly-offblack)!important}.Card.Card_card:hover,.Card:hover{background:var(--recurly-offblack)!important;transform:translateY(-2px)!important;box-shadow:0 6px 14px rgba(13,13,11,.2)!important;text-decoration:none!important}.Card-icon{color:var(--recurly-offblack)!important;font-size:22px!important;width:22px!important;height:22px!important;flex-shrink:0!important;filter:none!important}.Card:hover .Card-icon{color:var(--recurly-yellow)!important}.Card-content{display:flex!important;flex-direction:column!important;gap:6px!important}.Card-title{font-size:15px!important;font-weight:700!important;color:var(--recurly-offblack)!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;line-height:1.3!important}.Card:hover .Card-title{color:var(--recurly-offwhite)!important}.Card-arrow{color:var(--recurly-offblack)!important;font-size:13px!important;transition:transform .15s!important;flex-shrink:0!important}.Card:hover .Card-arrow{transform:translateX(3px)!important;color:var(--recurly-yellow)!important}.fa-duotone.fa-solid,.fad.fa-solid{font-family:"Font Awesome 6 Pro"!important;font-weight:900!important}.fa-duotone.fa-solid::after,.fad.fa-solid::after{display:none!important}.fa-duotone.fa-solid::before,.fad.fa-solid::before{position:static!important;opacity:1!important}.Card p,.Card-body,.Card-content,.Card-content div,.Card-content p,.Card>div:not(.Card-title):not(.Card-icon):not(.Card-arrow):not(.Card-content),.Card>p{margin:0!important;font-size:13px!important;color:var(--recurly-darkgray)!important;line-height:1.55!important;font-family:var(--recurly-font)!important}.Card-content .Card-title{color:var(--recurly-offblack)!important;font-size:15px!important;font-weight:700!important}.Card:hover .Card-body,.Card:hover .Card-content,.Card:hover .Card-content div,.Card:hover .Card-content p,.Card:hover p,.Card:hover>div:not(.Card-title):not(.Card-icon):not(.Card-arrow):not(.Card-content),.Card:hover>p{color:var(--recurly-lightgray)!important}.Card:hover .Card-content .Card-title{color:var(--recurly-offwhite)!important}.rp-sdk-grid{margin-top:28px!important}.rp-sdk-grid .Card,.rp-sdk-grid .Card.Card_card{position:relative!important;display:flex!important;flex-direction:row!important;align-items:stretch!important;background:#0d0d0b!important;border:0!important;border-radius:8px!important;padding:0!important;gap:0!important;overflow:hidden!important;box-shadow:none!important;transition:transform .15s,box-shadow .15s!important;text-decoration:none!important}.rp-sdk-grid .Card.Card_card:hover,.rp-sdk-grid .Card:hover{transform:translateY(-2px)!important;box-shadow:0 4px 12px rgba(255,215,6,.22)!important}.rp-sdk-grid .Card-content{flex:1!important;background:0 0!important;padding:11px 14px!important;display:flex!important;align-items:center!important;min-width:0!important}.rp-sdk-grid .Card-title{display:flex!important;align-items:center!important;justify-content:flex-start!important;font-size:13px!important;font-weight:700!important;color:#fcfbf7!important;letter-spacing:.2px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;width:100%!important}.rp-sdk-grid .Card-arrow{display:none!important}.rp-sdk-grid .Card::after{content:'→'!important;flex-shrink:0!important;background:#ffd706!important;color:#0d0d0b!important;padding:0 13px!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:12px!important;font-weight:700!important;box-shadow:-3px 0 8px rgba(13,13,11,.3)!important;transition:background .15s,color .15s,box-shadow .15s!important;align-self:stretch!important}.rp-sdk-grid .Card:hover{background:#ffd706!important}.rp-sdk-grid .Card:hover .Card-title{color:#0d0d0b!important}.rp-sdk-grid .Card:hover::after{background:#0d0d0b!important;color:#ffd706!important;box-shadow:-3px 0 8px rgba(0,0,0,.4)!important}.rp-nav-grid{margin-top:28px!important}.rp-nav-grid .Card,.rp-nav-grid .Card.Card_card{display:flex!important;flex-direction:column!important;background:var(--recurly-yellow)!important;border:0!important;border-radius:10px!important;padding:20px 24px!important;gap:8px!important;overflow:hidden!important;box-shadow:none!important;transition:background .15s,box-shadow .15s,transform .15s!important;text-decoration:none!important}.rp-nav-grid .Card.Card_card:hover,.rp-nav-grid .Card:hover{background:var(--recurly-offblack)!important;box-shadow:0 6px 14px rgba(13,13,11,.2)!important;transform:translateY(-2px)!important}.rp-nav-grid .Card-icon{display:none!important}.rp-nav-grid .Card-title{font-size:15px!important;font-weight:700!important;color:var(--recurly-offblack)!important;justify-content:space-between!important;white-space:normal!important}.rp-nav-grid .Card:hover .Card-title{color:var(--recurly-offwhite)!important}.rp-nav-grid .Card-arrow{color:var(--recurly-offblack)!important;flex-shrink:0!important}.rp-nav-grid .Card:hover .Card-arrow{color:var(--recurly-yellow)!important;transform:translateX(3px)!important}.rp-nav-grid .Card p,.rp-nav-grid .Card-content div,.rp-nav-grid .Card-content p,.rp-nav-grid .Card>p{font-size:13px!important;color:var(--recurly-offblack)!important;line-height:1.6!important;margin:0!important}.rp-nav-grid .Card:hover .Card-content div,.rp-nav-grid .Card:hover .Card-content p,.rp-nav-grid .Card:hover p,.rp-nav-grid .Card:hover>p{color:var(--recurly-lightgray)!important}.TabGroup-nav{display:flex!important;flex-wrap:wrap!important;align-items:flex-end!important;border-bottom:2px solid var(--recurly-lightgray)!important;margin:16px 0 24px!important;padding:0!important;gap:4px!important;font-family:var(--recurly-font)!important}.TabGroup-tab,.TabGroup-tab_active{background:0 0!important;border:0!important;border-bottom:2px solid transparent!important;margin-bottom:-2px!important;padding:10px 18px!important;font-family:var(--recurly-font)!important;font-size:14px!important;font-weight:700!important;color:var(--recurly-gray)!important;cursor:pointer!important;transition:color .15s,border-color .15s!important}.TabGroup-tab:hover{color:var(--recurly-yellow)!important}.TabGroup-tab_active{color:var(--recurly-offblack)!important;border-bottom-color:var(--recurly-yellow)!important;cursor:default!important}.Columns{display:grid!important;gap:20px!important;margin:16px 0 24px!important;font-family:var(--recurly-font)!important}.Column{font-size:14px!important;color:var(--recurly-darkgray)!important;line-height:1.65!important;min-width:0!important}.Column>:first-child{margin-top:0!important}.Column>:last-child{margin-bottom:0!important}.Column p{margin:0 0 12px!important}.Column blockquote{margin:0!important;padding:0!important;border:0!important;background:0 0!important;border-radius:0!important}.Column blockquote p{margin:0 0 12px!important;font-style:normal!important;color:inherit!important}.Column blockquote p:last-child{margin-bottom:0!important}.Column a{color:var(--recurly-tangerine)!important}@media (max-width:640px){.Columns{grid-template-columns:1fr!important}.CardsGrid{grid-template-columns:1fr!important}}.rdmd-table:has(thead) table{width:100%!important;border-collapse:collapse!important;font-family:var(--recurly-font)!important;font-size:14px!important;margin:12px 0 24px!important}.rdmd-table thead tr{background:var(--recurly-offblack)!important}.rdmd-table thead tr th{background:var(--recurly-offblack)!important;color:var(--recurly-offwhite)!important;font-family:var(--recurly-font)!important;font-size:14px!important;font-weight:700!important;padding:12px 16px!important;border:0!important;text-align:left!important}.rdmd-table thead tr th *,.rdmd-table thead tr th strong{color:var(--recurly-offwhite)!important}.rdmd-table tbody tr{background:var(--recurly-offwhite)!important}.rdmd-table tbody tr td{background:var(--recurly-offwhite)!important;color:var(--recurly-darkgray)!important;font-family:var(--recurly-font)!important;font-size:14px!important;padding:12px 16px!important;border:0!important;border-bottom:1px solid var(--recurly-lightgray)!important;vertical-align:top!important;line-height:1.6!important}.rdmd-table tbody tr td a{color:var(--recurly-tangerine)!important}.rdmd-table tbody tr td a:hover{color:var(--recurly-offblack)!important}.rdmd-table tbody tr td code.rdmd-code{background:var(--recurly-brightgray)!important;color:var(--recurly-darkgray)!important;padding:2px 6px!important;border-radius:4px!important;font-size:.92em!important}.rdmd-table-inner{border-radius:10px!important;overflow:hidden!important;border:1px solid var(--recurly-lightgray)!important}.rdmd-table:not(:has(thead)) table{width:100%!important;border-collapse:collapse!important;font-family:var(--recurly-font)!important;font-size:14px!important;margin:12px 0 24px!important}.rdmd-table tr.rp-thead-row{background:var(--recurly-offblack)!important}.rdmd-table tr.rp-thead-row td{background:var(--recurly-offblack)!important;color:var(--recurly-offwhite)!important;font-family:var(--recurly-font)!important;font-size:14px!important;font-weight:700!important;padding:12px 16px!important;border:0!important;text-align:left!important}.rdmd-table tr.rp-thead-row td *,.rdmd-table tr.rp-thead-row td strong{color:var(--recurly-offwhite)!important}.rdmd-table:not(:has(thead)) tbody tr,.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row){background:var(--recurly-offwhite)!important}.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td{background:var(--recurly-offwhite)!important;color:var(--recurly-darkgray)!important;font-family:var(--recurly-font)!important;font-size:14px!important;padding:12px 16px!important;border:0!important;border-bottom:1px solid var(--recurly-lightgray)!important;vertical-align:top!important;line-height:1.6!important}.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td a{color:var(--recurly-tangerine)!important}.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td a:hover{color:var(--recurly-offblack)!important}.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td code.rdmd-code{background:var(--recurly-brightgray)!important;color:var(--recurly-darkgray)!important;padding:2px 6px!important;border-radius:4px!important;font-size:.92em!important}[data-tippy-root]:has(.rm-VersionDropdown-menu){width:min(920px,calc(100vw - 40px))!important;max-width:min(920px,calc(100vw - 40px))!important}[data-tippy-root]:has(.rm-VersionDropdown-menu) .Box,[data-tippy-root]:has(.rm-VersionDropdown-menu) .Dropdown-content,[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu,[data-tippy-root]:has(.rm-VersionDropdown-menu) .tippy-box,[data-tippy-root]:has(.rm-VersionDropdown-menu) .tippy-content{width:100%!important;max-width:100%!important;box-sizing:border-box!important}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu{max-height:620px!important;overflow:auto!important;padding:16px!important;display:grid!important;grid-template-columns:repeat(auto-fill,minmax(145px,1fr))!important;gap:10px!important;font-family:var(--recurly-font)!important}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu::before{content:"API V3";order:1;grid-column:1/-1;margin:0 0 2px 0;color:var(--recurly-darkgray)!important;font-family:var(--recurly-font)!important;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu::after{content:"API V2";order:20;grid-column:1/-1;margin:10px 0 2px 0;color:var(--recurly-darkgray)!important;font-family:var(--recurly-font)!important;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item{width:auto!important;min-width:0!important;min-height:48px!important;height:auto!important;display:flex!important;align-items:center!important;padding:10px 12px!important;border:1px solid var(--recurly-lightgray)!important;border-radius:10px!important;background:var(--recurly-offwhite)!important;color:var(--recurly-darkgray)!important;font-family:var(--recurly-font)!important;text-decoration:none!important;box-sizing:border-box!important;transition:background .15s,border-color .15s,color .15s!important}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*="/v20"],[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*="/v2999"]{order:10}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*="/v2."]{order:30}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*="/v1."]{display:none!important}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href="/reference-docs/reference"]{display:none!important}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=VersionDropdown-item-content],[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=VersionDropdown-item]{width:100%!important;min-width:0!important}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=VersionDropdown-item-label]{display:block!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;font-family:var(--recurly-font)!important;font-size:15px!important;font-weight:600!important}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item_active{border-color:var(--recurly-tangerine)!important;background:var(--recurly-brightgray)!important;color:var(--recurly-offblack)!important;box-shadow:0 0 0 2px rgba(0,140,255,.12)!important}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item:focus,[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item:hover{border-color:var(--recurly-tangerine)!important;background:var(--recurly-brightgray)!important;color:var(--recurly-offblack)!important;outline:0!important}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Badge,[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .IconWrapper,[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=IconWrapper]{flex:0 0 auto!important}@media (max-width:700px){[data-tippy-root]:has(.rm-VersionDropdown-menu){width:calc(100vw - 32px)!important;max-width:calc(100vw - 32px)!important}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))!important;max-height:420px!important}[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item{min-height:44px!important;padding:9px 10px!important}}[class*=Param-required]{font-family:var(--recurly-font)!important;font-size:10px!important;font-weight:700!important;letter-spacing:.4px!important;text-transform:uppercase!important;color:var(--recurly-vermillion)!important;background:rgba(255,81,38,.1)!important;border-radius:4px!important;padding:1px 6px!important}[class*=Param-enum-section_compact-label]{font-family:var(--recurly-font)!important;font-size:10px!important;font-weight:800!important;letter-spacing:.5px!important;text-transform:uppercase!important;color:var(--recurly-gray)!important}[class*=Param-enum-section-item-value],[class*=Param-enum-section-item] code{background:0 0!important;color:inherit!important;font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;padding:0!important;border-radius:0!important;box-shadow:none!important}[class*=Param-expand]{background:0 0!important}[class*=Flex][class*=Param-expand-button]{font-family:var(--recurly-font)!important;font-size:12px!important;font-weight:700!important;letter-spacing:.3px!important;color:var(--recurly-offwhite)!important;background:var(--recurly-offblack)!important;border:1px solid var(--recurly-darkgray)!important;border-radius:8px!important;padding:8px 12px!important;width:100%!important;text-align:left!important;cursor:pointer!important;transition:background .12s,border-color .12s,color .12s!important}[class*=Flex][class*=Param-expand-button]:hover{background:var(--recurly-darkgray)!important;border-color:var(--recurly-gray)!important;color:var(--recurly-yellow)!important}[class*=Param-expand-label]{font-family:var(--recurly-font)!important;font-size:12px!important;font-weight:700!important;color:inherit!important;text-transform:uppercase!important;letter-spacing:.3px!important}[class*=Param-expand-button-icon]{color:inherit!important}[class*=Param-enum-section_expanded-container-header] .Button,[class*=Param-enum-section_expanded-container-header] button{font-family:var(--recurly-font)!important;font-size:11px!important;font-weight:700!important;letter-spacing:.3px!important;color:var(--recurly-offwhite)!important;background:var(--recurly-offblack)!important;border:1px solid var(--recurly-offblack)!important;border-radius:20px!important;padding:5px 14px!important;transition:background .12s,border-color .12s,color .12s!important}[class*=Param-enum-section_expanded-container-header] .Button:hover,[class*=Param-enum-section_expanded-container-header] button:hover{background:var(--recurly-darkgray)!important;border-color:var(--recurly-darkgray)!important;color:var(--recurly-yellow)!important}[class*=Param-enum-section]>div>.Button[class*=Button_minimum],[class*=Param-enum-section]>div>button[class*=Button_minimum]{font-family:var(--recurly-font)!important;font-size:11px!important;font-weight:700!important;letter-spacing:.3px!important;color:var(--recurly-offwhite)!important;background:var(--recurly-offblack)!important;border:1px solid var(--recurly-offblack)!important;border-radius:20px!important;padding:5px 14px!important;transition:background .12s,border-color .12s,color .12s!important}[class*=Param-enum-section]>div>.Button[class*=Button_minimum]:hover,[class*=Param-enum-section]>div>button[class*=Button_minimum]:hover{background:var(--recurly-darkgray)!important;border-color:var(--recurly-darkgray)!important;color:var(--recurly-yellow)!important}[class*=Param-expand] .Input,[class*=Param-expand] input{font-family:var(--recurly-font)!important;font-size:13px!important;background:#fff!important;border:1px solid var(--recurly-lightgray)!important;border-radius:6px!important;color:var(--recurly-darkgray)!important}[class*=Param-expand] .Input:focus,[class*=Param-expand] input:focus{border-color:var(--recurly-offblack)!important;outline:0!important}.rm-APISchema,[class*=Fieldset],[class*=Param-contentWrapper],[class*=rjsf],[class*=rm-ParamContainer]{background:#fff!important}.rm-ParamInput,.rm-ParamSelect{background:#fff!important}.rm-APIResponseSchemaPicker [class*=AccordionContent]{background:#fff!important}.rm-APIResponseSchemaPicker .rm-APISectionHeader{background:#fff!important;border-bottom:1px solid var(--recurly-lightgray)!important;padding-bottom:8px!important;margin-bottom:12px!important}.rm-APIResponseSchemaPicker .rm-APISectionHeader [class*=APISectionHeader-heading]{font-family:var(--recurly-font)!important;font-size:10px!important;font-weight:800!important;color:var(--recurly-gray)!important;text-transform:uppercase!important;letter-spacing:.8px!important}[class*=TagTooltip-tag-button]{font-family:var(--recurly-font)!important;font-size:10px!important;font-weight:700!important;color:var(--recurly-gray)!important;background:0 0!important;border:0!important;border-radius:4px!important;padding:2px 4px!important;transition:background .12s,color .12s!important}[class*=TagTooltip-tag-button]:hover{background:var(--recurly-offblack)!important;color:var(--recurly-yellow)!important}[class*=headline-container] h1,[class*=headline-container] h1.Title{font-family:var(--recurly-font)!important;font-weight:800!important;color:var(--recurly-offblack)!important;font-size:1.6rem!important;padding-bottom:10px!important;border-bottom:2px solid var(--recurly-yellow)!important;margin-bottom:14px!important}.CodeTabs-toolbar button.CodeTabs_active{background:#ffd706!important;color:#0d0d0b!important;border-radius:14px!important;cursor:default!important;opacity:1!important;pointer-events:none!important}.CodeTabs-toolbar:has(> button:only-child)>button{background:0 0!important;color:#ffd706!important;border-radius:0!important;cursor:default!important;pointer-events:none!important;opacity:1!important}.CodeTabs-toolbar button:not(.CodeTabs_active):hover{background:0 0!important;color:#ffd706!important}body .hub-is-home{opacity:0;animation:hubFadeIn .4s ease forwards;animation-delay:1s}.rm-Header-bottom-link{-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-flex}@keyframes hubFadeIn{to{opacity:1}}*{box-sizing:border-box}body{font-family:Polar,"Helvetica Neue",Helvetica,arial,sans-serif}.image-zoomer-container{position:relative;width:720px;height:720px;overflow:hidden;border:2px solid #ccc;padding:20px;marging:20px;cursor:crosshair}.image-zoomer-container img{width:100%;height:100%;object-fit:cover;transition:transform .2s ease-out}.image-zoomer-container:hover img{transform:scale(7)}.image-zoomer-container:hover img.move{transition:ease-in-out}iframe{width:100%;height:450px}.rm-LandingPage{width:1200px}.rm-Header-top{background:#0d0d0b}.rm-LandingPageHeader{padding:170px 20px 80px}.rm-LandingPageHeader .rm-SearchToggle{position:relative;width:469px;background:#fff;border-radius:4px}.rm-LandingPageHeader .rm-SearchToggle:before{display:block;content:"How can we help?";position:absolute;top:-84px;left:-40px;text-align:center;width:120%;font-size:60px;font-weight:800;font-family:proxima-nova;pointer-events:none}.rm-LandingPageHeader .rm-SearchToggle .rm-SearchToggle-icon{color:#5a5a5a}.rm-LandingPageHeader .rm-SearchToggle .rm-SearchToggle-placeholder{color:#fff;font-size:16px;font-weight:400}.sl-embed{position:relative;padding-bottom:calc(56.68% + 25px);width:100%;height:0;transform:scale(1)}.sl-demo{width:100%!important;border:1px solid rgba(63,95,172,.35);box-shadow:0 0 18px rgba(26,19,72,.15);border-radius:10px;box-sizing:border-box}main.main-index{width:1200px;display:flex;flex-direction:column;align-items:center;gap:25px;margin:0 auto 80px;font-family:Proxima-nova,sans-serif}header.main-header{background-color:#ffd706;border-radius:0;display:flex;justify-content:space-between;align-items:center;min-height:80px;width:100%;margin:10px 10px 50px;padding:0 20px;box-sizing:border-box}header.main-header p.header-paragraph{font-size:20px;line-height:28px;color:#0d0d0b}header.main-header .image-wrap{display:flex;align-items:center}header.main-header img{margin:0 20px 0 0}header.main-header p,header.main-header strong{color:#0d0d0b;margin:0}header.main-header strong{font-weight:700;text-decoration:none}header.main-header a{margin:0 0 0 10rem;padding:8px 25px;color:#0d0d0b;text-decoration:none;font-size:14px;font-weight:800;border-radius:3px;border:2px solid #0d0d0b}header.main-header a:hover{text-decoration:none}.main-index section{width:100%;height:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px;padding:0;margin:0}.card{width:340px;margin:0 0 40px;display:flex;justify-content:center;flex-direction:column;align-items:flex-start;padding:0 15px;cursor:auto;transition:.175s all ease-in-out}.card img{width:48px;height:48px;margin:0;margin-bottom:10px}.card h2{color:#0d0d0b;font-size:24px;font-weight:700;line-height:32px;margin:0;margin-bottom:11px}.card p{margin:0;color:#0d0d0b;margin-bottom:15px}.LandingBlock3PM-HyBxby3X a,.card a{color:#0d0d0b;text-decoration-thickness:2px;text-underline-offset:5px;text-decoration:underline;transition:.25s ease all}.LandingBlock3PM-HyBxby3X a:hover,.card a:hover{color:#0d0d0b;text-decoration:none}.reference-redesign .Sidebar-listWrapper6Q9_yUrG906C{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:start;-webkit-box-flex:0;-ms-flex:0;flex:0!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;align-items:flex-start!important}.reference-redesign .Sidebar-link2Dsha-r-GKh2.active,.reference-redesign .Sidebar-link2Dsha-r-GKh2:active{background:var(--Sidebar-link-background);color:#0d0d0b)!important}.LandingBlock3PM-HyBxby3X a:not(:hover){text-decoration:underline!important}@media (max-width:768px){.rm-LandingPage{width:100%}main.main-index{width:100%;height:100%}.rm-LandingPageHeader{display:block}.rm-LandingPageHeader .rm-SearchToggle{width:340px}.rm-LandingPageHeader .rm-SearchToggle:before{font-size:44px}header.main-header{display:block;width:95%;min-height:auto}header.main-header img{display:block;margin:10px auto}header.main-header a{display:block;margin:16px auto 20px;max-width:160px}header.main-header p.header-paragraph{margin:0 10px;text-align:center}.card{width:90%;padding:0 25px 0 20px}.Header-searchtb6Foi0-D9Vx{position:absolute;top:55px;right:0;margin:0;padding:0;box-shadow:none;border:none;outline:0;width:50%;display:flex;justify-content:center;align-items:center}.Header-searchtb6Foi0-D9Vx button{width:25%!important;padding-left:20px;border:1px solid #0d0d0b!important}.Header-searchtb6Foi0-D9Vx button .icon-search1{color:#ffd706!important}}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;min-width:320px;position:relative}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.list-reset{list-style:none;margin-top:0;margin-bottom:0;padding:0}footer{position:relative;font-size:14px;overflow:hidden;color:#fff;background:#0d0d0b}.btn--footer{display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;height:50px;padding:0 1.5rem;text-align:center;border-radius:6px;font-weight:400;text-decoration:none;cursor:pointer;font-family:Polar,"Helvetica Neue",Helvetica,arial,sans-serif;border-width:0;text-align:center}.btn-primary--footer{background-color:#ffd706;color:#0d0d0b;-webkit-transition:background-color .25s;transition:background-color .25s;margin:0 2.2rem 0 0;width:auto}.feedback__header{font-size:3rem}@media (max-width:790px){.feedback__header{font-size:1.6rem}}.footer__feedback{display:flex;gap:30px;align-items:center;justify-content:center}@media (min-width:768px){.footer__feedback{flex-direction:row;flex-flow:row}}.footer__bottom{padding:30px 0;border-top:1px solid #32312d}a:not(.btn){color:inherit;-webkit-text-decoration-color:#FF5810;text-decoration-color:#FF5810;text-decoration-thickness:2px;text-underline-offset:5px;-webkit-transition:-webkit-text-decoration-color .25s;transition:-webkit-text-decoration-color .25s;transition:text-decoration-color .25s;transition:text-decoration-color .25s,-webkit-text-decoration-color .25s}a:not(.btn).link-no-underline{-webkit-text-decoration-color:transparent;text-decoration-color:transparent}a:not(.btn).link-no-underline:hover{-webkit-text-decoration-color:#FF5810;text-decoration-color:#FF5810}.footer-basic__grid{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:center;align-items:center;gap:40px}@media (max-width:768px){.footer-basic__grid{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:center;justify-content:center;flex-wrap:wrap;margin:0;padding:0}}.footer__doc-logo{width:200px}.footer__links{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;gap:20px;padding:1rem 0 1rem 0;margin:0 auto}.footer__list-secondary{display:flex;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;gap:20px}@media (min-width:768px){.footer__list-secondary{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:end;justify-content:end;flex-wrap:wrap}}.footer__social{grid-area:social;display:-webkit-box;display:flex;gap:20px;align-self:end}.footer__social a{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;width:40px;height:40px;padding:10px;border-radius:50%;background-color:#ff5810;-webkit-transition:background-color .3s;transition:background-color .3s}.modal-bg{position:fixed;top:0;left:0;display:none;width:100%;height:100%;background:rgba(35,41,50,.75);z-index:10;backdrop-filter:blur(10px);opacity:0;transition:opacity .25s}.modal__wrap{display:none;position:fixed;top:-10%;left:0;width:90%;margin:7rem 1.5rem;padding:1rem 2rem 2rem;background:#fffdf2;border-radius:2rem;z-index:11}@media (min-width:1080px){.modal__wrap{top:-10%;left:50%;width:63.6rem;margin:8rem 0 0 -31.8rem;padding:1rem 5rem 3rem}}.modal__close{position:absolute;top:2rem;right:2rem;width:2.2rem;height:2.2rem;cursor:pointer;text-indent:-9999px;background:url("https://recurly.com/img2/events/subscriptionsessions/close-btn.svg") center no-repeat;background-size:12px}.modal__headline{margin:1.5rem 0 0;color:#0d0d0b;font-size:2.2rem;line-height:2.2rem;font-variation-settings:"ital" 0,"wdth" 100,"wght" 300}.blur-background{filter:blur(5px);pointer-events:none}.mktoForm{width:100%!important}.mktoForm .mktoGutter,.mktoForm .mktoOffset{display:none}.mktoForm .mktoAsterix{display:none}.mktoForm .mktoRequiredField .mktoAsterix{display:inline-block;margin:0 .3rem 0 0}.mktoForm .mktoField.mktoHasWidth.mktoRequired.mktoInvalid{border:1px solid #df381f}.mktoForm div{text-align:left;margin:0;padding:0}.mktoForm .mktoClear{clear:both;float:none}.mktoForm #LblGDPR_Consent__c,.mktoForm .gdpr__privacy{font-family:Polar,"Helvetica Neue",Helvetica,arial,sans-serif;color:#0d0d0b;font-weight:400}.mktoForm #LblGDPR_Consent__c{position:relative;background:0 0;font-size:1rem;line-height:2rem;margin-bottom:.8rem;padding-right:.2rem}.mktoForm .gdpr__privacy{font-size:1rem;line-height:1.5rem;margin:1rem 0 0}.mktoForm input{-webkit-transition:.1s ease-out;transition:.1s ease-out}.mktoForm input[type=date],.mktoForm input[type=email],.mktoForm input[type=number],.mktoForm input[type=tel],.mktoForm input[type=text],.mktoForm input[type=url],.mktoForm select.mktoField,.mktoForm textarea.mktoField{width:100%!important}.mktoForm input[type=email]+.mktoError .mktoErrorMsg{max-width:19.5rem}.mktoForm select.mktoField{padding:1.5rem 1.5rem 0 1.2rem;font-family:Polar,"Helvetica Neue",Helvetica,arial,sans-serif;background:url("https://recurly.com/img2/demo-request/dropdown-caret_expand.svg") 96% center #fff no-repeat;background-size:12px 7px;border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4rem;width:100%;padding:.6rem;color:#535356;font-size:1.8rem;font-weight:500;border:0 none;border-radius:0;box-shadow:none}.mktoForm select.mktoField>option:first-child{color:transparent}.mktoForm select.mktoField:focus{outline:0}.mktoForm select.mktoField:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.mktoForm .consent-label-container{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;flex-direction:row-reverse;-webkit-box-align:start;align-items:flex-start}.mktoForm .consent-label-container .mktoLabel{line-height:2rem}.mktoForm div.mktoFieldWrap:not(.consent-label-container) .mktoLabel.mktoHasWidth{font-size:1rem;line-height:1.5rem;position:relative;width:auto!important;left:1.4rem;right:30px;top:30px;background-color:#fff;-webkit-transition:.1s ease-out;transition:.1s ease-out;-webkit-transform-origin:left top;transform-origin:left top;pointer-events:none}.mktoForm div.mktoFieldWrap:not(.consent-label-container) .mktoLabel.mktoHasWidth.active{line-height:2.2rem;font-size:1.2rem;top:0;-webkit-transform:translateY(17%) scale(.9);transform:translateY(17%) scale(.9)}.mktoForm div.mktoRequiredField.selectLabel label.mktoLabel{position:relative;background:0 0;line-height:1.5rem;left:0;top:0;-webkit-transition:none;transition:none;-webkit-transform:none;transform:none}.mktoForm div.mktoRequiredField.selectLabel label.mktoLabel.active{font-size:1.6rem;line-height:2rem;-webkit-transform:none;transform:none}.mktoForm .mktoCheckboxList{padding:0;float:left;position:relative;top:0}.mktoForm .mktoCheckboxList label{font-size:1.4rem;line-height:2rem}.mktoForm .mktoCheckboxList>input{margin:0 1rem 0 0}.mktoForm .mktoCheckboxList>input:after{content:" ";font-size:1.4rem;background-color:#ab4ac3;display:inline-block;visibility:visible}.mktoForm .mktoCheckboxList>input:checked:after{content:"\2713";box-shadow:0 2px 4px rgba(155,155,155,.15);border-radius:3px;height:1.5rem;display:block;width:1.5rem;text-align:center;font-size:1.2rem;color:#fff}.mktoForm .mktoLabel{line-height:3rem;font-family:Polar,"Helvetica Neue",Helvetica,arial,sans-serif;font-size:1.6rem;font-weight:400;color:#0d0d0b;display:inline-block;float:none!important;width:auto}.mktoForm .mktoLabel span{color:#0d0d0b;font-size:1rem;line-height:1.5rem}.mktoButtonWrap.mktoSimple{margin-left:0!important}.mktoForm .mktoButtonWrap.mktoSimple .mktoButton{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;height:4rem;padding:1rem 3rem;font-size:1.2rem;line-height:2.2rem;font-weight:400;color:#fff;text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:lowercase;white-space:nowrap;overflow:hidden;vertical-align:middle;cursor:pointer;border:0;margin-top:15px;border-radius:6px;background:#0d0d0b;-webkit-transition:all .3s ease-in;transition:all .3s ease-in}.mktoForm .mktoButtonWrap.mktoSimple .mktoButton span:first-letter,.mktoForm .mktoButtonWrap.mktoSimple .mktoButton:first-letter{text-transform:capitalize}.mktoForm .mktoButtonWrap.mktoSimple .mktoButton:hover{background:#ff9d88;color:#0d0d0b;-webkit-transform:none;transform:none}.mktoForm .mktoFormRow .mktoField:not([type=checkbox]){background-color:#fff;border-radius:4px;border:1px solid #bdbbb6;color:#0d0d0b;display:block;float:none;height:3.5rem;font-family:Polar,"Helvetica Neue",Helvetica,arial,sans-serif;font-size:1.2rem!important;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:1.7rem 1.5rem 0 1.2rem}.mktoForm .mktoFormRow .mktoField:not([type=checkbox]):focus{outline:0;border-color:#0d0d0b;font-weight:400}.mktoForm .mktoFormRow select.mktoField:not([type=checkbox]){padding:1.6rem 1.5rem 0 1.2rem}.mktoForm .mktoError{position:initial;z-index:99;color:#bf0000}.mktoForm .mktoError .mktoErrorArrowWrap{display:none;width:16px;height:8px;overflow:hidden;position:absolute;top:0;left:5px;z-index:100}.mktoForm .mktoError .mktoErrorArrow{display:inline-block;height:16px;width:16px;margin-top:5px;border:0 none!important;background-color:#e35256!important;border-right:none;border-bottom:none;-webkit-transform:rotate(45deg);transform:rotate(45deg);-ms-transform:rotate(45deg)}.mktoForm .mktoError .mktoErrorMsg{display:block;margin:0;padding:0;font-size:1rem;line-height:2.1rem;font-weight:400;max-width:18rem;color:#e35256;border:0 none!important;border-radius:3px!important;background:0 0!important;box-shadow:none!important;text-shadow:none!important}.rm-LandingPage{width:100%!important;background-color:#0d0d0b!important;padding:0!important}.globallp-header-section{background:#0d0d0b!important;padding:64px 0!important}.feature-section{background:#fff!important;padding:94px 0!important}.feature-grid{max-width:1200px!important;margin:0 auto!important;display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:32px 24px!important;padding:0 24px!important}.feature-card{border:1px solid #ece9d7!important;border-radius:12px!important;padding:32px 24px!important;background:#fff!important;display:flex!important;flex-direction:column!important;gap:8px!important;cursor:pointer!important;transition:box-shadow .2s!important;height:120px!important;justify-content:flex-start!important;box-sizing:unset!important}.feature-grid a{text-decoration:none!important;color:inherit!important}.feature-card:hover{box-shadow:0 12px 16px -4px rgba(13,13,11,.08),0 4px 6px -2px rgba(13,13,11,.03),0 2px 2px -1px rgba(13,13,11,.04)!important}.feature-card-icon-group{display:flex!important;align-items:center!important;gap:12px!important}.feature-card-icon{width:40px!important;height:40px!important;display:flex!important;align-items:center!important;margin:0!important}.feature-card-title{color:#0d0d0b!important;font-weight:600!important;font-size:18px!important;margin-top:8px!important}.feature-card:hover .feature-card-title{color:#b0361e!important;font-weight:600!important}.feature-card-desc{color:#0d0d0b!important;font-size:14px!important}.feature-badge{position:relative!important;border-radius:9999px!important;background-color:#f9f7eb!important;border:1px solid #e2dfd0!important;box-sizing:border-box!important;width:100%!important;display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;padding:2px 10px!important;text-align:center!important;font-size:14px!important;color:#46443f!important;width:fit-content!important}.feature-badge-text{position:relative!important;letter-spacing:.01em!important;font-size:10px!important;line-height:20px!important;font-weight:600!important}.more-docs-section{background:#f6f3e0!important;padding:94px 12px!important}.more-docs-container{max-width:1200px!important;margin:0 auto!important;text-align:center!important}.more-docs-title{font-weight:700!important;margin:0 0 16px!important;font-size:36px!important}.more-docs-desc{font-size:20px!important;color:#0d0d0b!important;margin-bottom:40px!important}.more-docs-grid{display:flex!important;justify-content:space-around!important;gap:48px!important;flex-wrap:wrap!important}.more-docs-card{flex:1 1 30%!important;max-width:100%!important;display:flex!important;flex-direction:column!important;align-items:center!important;gap:12px!important}.more-docs-card-icon{width:48px!important;height:48px!important}.more-docs-card-image{width:auto!important;height:32px!important;margin-bottom:8px!important}.more-docs-card-title{font-weight:700!important;color:#0d0d0b!important}.more-docs-card-title span{color:#888!important;font-weight:400!important}.more-docs-card-desc{font-size:16px!important;line-height:24px!important;color:#0d0d0b!important}.more-docs-link{color:#b0361e!important;font-size:16px!important;font-weight:600!important;text-decoration:none!important;display:flex!important;align-items:center!important}.more-docs-link:hover{text-decoration:underline!important}.more-docs-icon-arrow{width:20px!important}.release-section{background:#ffd706!important;padding:64px 0!important}.release-container{max-width:600px!important;margin:0 auto!important;text-align:center!important}.release-title{font-family:'F37 Gruffy',cursive!important;font-size:2rem!important;font-weight:700!important;margin-bottom:16px!important}.release-desc{font-size:18px!important;color:#0d0d0b!important;margin-bottom:32px!important}.release-form{display:flex!important;gap:8px!important;justify-content:center!important;margin-bottom:8px!important}.release-input{flex:1!important;min-width:0!important;padding:12px!important;border-radius:6px!important;border:1px solid #ccc!important;font-size:16px!important}.release-button{background:#0d0d0b!important;color:#fff!important;border:none!important;border-radius:6px!important;padding:12px 24px!important;font-size:16px!important;font-weight:600!important;cursor:pointer!important}.release-privacy{font-size:13px!important;color:#0d0d0b!important}.release-privacy a{color:#0d0d0b!important;text-decoration:underline!important}@media (max-width:1024px){.globallp-header-content{max-width:100%!important}.feature-grid{max-width:1200px!important;margin:0 auto!important;display:grid!important;grid-template-columns:repeat(2,1fr)!important;gap:32px 24px!important;padding:0 24px!important}}@media (max-width:768px){.feature-grid{max-width:1200px!important;margin:0 auto!important;display:grid!important;grid-template-columns:repeat(1,1fr)!important;gap:32px 24px!important;padding:0 24px!important}.feature-card{height:100px!important}}/*! END HUB_CUSTOM_STYLES */</style><style>
/* Hide immediately, then fade in after 1s */
body .hub-is-home {
  opacity: 0;
  animation: hubFadeIn 0.4s ease forwards;
  animation-delay: .8s;
}

@keyframes hubFadeIn {
  to { opacity: 1; }
}
</style>




<!-- OneTrust Cookies Consent Notice start for docs.recurly.com -->
<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js"  type="text/javascript" charset="UTF-8" data-domain-script="c934b14c-a690-45e9-bc4e-7fdf36ff3e69" ></script>
<script type="text/javascript">
function OptanonWrapper() { }
</script>
<!-- OneTrust Cookies Consent Notice end for docs.recurly.com -->

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-P8SKV3B');</script>
<!-- End Google Tag Manager -->

<!-- Google tag for GA4 docs.recurly.com (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-CP3HCXSJ9X"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-CP3HCXSJ9X');
</script>


<!--Linkedin Conversion Tracking-->
<script type="text/javascript">
  _linkedin_data_partner_id = "42036";
  (function()
  {var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript";b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);}
  )();
</script>

<!-- Facebook Pixel Code -->
<script>
	!function(f,b,e,v,n,t,s)
	{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
	n.callMethod.apply(n,arguments):n.queue.push(arguments)};
	if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
	n.queue=[];t=b.createElement(e);t.async=!0;
	t.src=v;s=b.getElementsByTagName(e)[0];
	s.parentNode.insertBefore(t,s)}(window,document,'script',
	'https://connect.facebook.net/en_US/fbevents.js');
	 
	fbq('init', '1810072655916642');
	fbq('track', 'PageView');
</script>
<noscript>
	<img height="1" width="1" src="https://www.facebook.com/tr?id=1810072655916642&ev=PageView&noscript=1"/>
</noscript>
<!-- End Facebook Pixel Code -->

<!-- facebook -->

<meta property="og:image" content="https://recurly.com/img2/og-image.gif">
<meta property="og:image:url" content="https://recurly.com/img2/og-image.gif">
<meta property="og:image:secure_url" content="https://recurly.com/img2/og-image.gif">
<meta property="og:image:type" content="image/gif">
<meta property="og:image:width" content="1500">
<meta property="og:image:height" content="1500">
  
<!-- twitter -->
<meta name="twitter:account_id" content="57871527">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@recurly">

<meta name="twitter:image:src" content="https://recurly.com/img2/og-image.gif">
<meta name="twitter:image:width" content="1500">
<meta name="twitter:image:height" content="1500">
<meta name="format-detection" content="telephone=no">

<!-- Zendesk -->
<meta name='zd-site-verification' content='xd6yjutf4fpsbsgddhodm'>

<!-- Image zoomer -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/viewerjs@1.10.5/dist/viewer.min.css">
<script src="https://cdn.jsdelivr.net/npm/viewerjs@1.10.5/dist/viewer.min.js"></script>
<meta name="google-site-verification" content="sG8AdEuNVeHvLg7vOG9fRj2mIGw0jWHLa5MzHQHUgGo"><meta name="loadedProject" content="recurly-commerce"><meta name="parentProject" content="recurly-group"><meta name="childrenProjects" content="[{&quot;subdomain&quot;:&quot;recurly-engage-docs&quot;,&quot;subpath&quot;:&quot;recurly-engage&quot;,&quot;name&quot;:&quot;Recurly Engage Docs&quot;,&quot;_id&quot;:&quot;6865c5ccaabb920030954384&quot;},{&quot;subdomain&quot;:&quot;recurly-revrec-docs&quot;,&quot;subpath&quot;:&quot;recurly-revrec&quot;,&quot;name&quot;:&quot;Recurly RevRec Docs&quot;,&quot;_id&quot;:&quot;6865c47f44422c001062c4de&quot;},{&quot;subdomain&quot;:&quot;recurly-commerce-docs&quot;,&quot;subpath&quot;:&quot;recurly-commerce&quot;,&quot;name&quot;:&quot;Recurly Commerce Docs&quot;,&quot;_id&quot;:&quot;6865c648c6b75f0030446843&quot;},{&quot;subdomain&quot;:&quot;reference-docs&quot;,&quot;subpath&quot;:&quot;recurly-subscriptions&quot;,&quot;name&quot;:&quot;Recurly Subscriptions Docs&quot;,&quot;_id&quot;:&quot;56450a342229d7170010928a&quot;},{&quot;subdomain&quot;:&quot;recurly-recover&quot;,&quot;subpath&quot;:&quot;&quot;,&quot;name&quot;:&quot;Recurly Recover&quot;,&quot;_id&quot;:&quot;6a909f963c00925d1070727c&quot;}]"><meta name="siblingProjects" content="[{&quot;subdomain&quot;:&quot;recurly-engage-docs&quot;,&quot;name&quot;:&quot;Recurly Engage Docs&quot;,&quot;_id&quot;:&quot;6865c5ccaabb920030954384&quot;},{&quot;subdomain&quot;:&quot;recurly-revrec-docs&quot;,&quot;name&quot;:&quot;Recurly RevRec Docs&quot;,&quot;_id&quot;:&quot;6865c47f44422c001062c4de&quot;},{&quot;subdomain&quot;:&quot;recurly-commerce-docs&quot;,&quot;name&quot;:&quot;Recurly Commerce Docs&quot;,&quot;_id&quot;:&quot;6865c648c6b75f0030446843&quot;},{&quot;subdomain&quot;:&quot;reference-docs&quot;,&quot;name&quot;:&quot;Recurly Subscriptions Docs&quot;,&quot;_id&quot;:&quot;56450a342229d7170010928a&quot;},{&quot;subdomain&quot;:&quot;recurly-recover&quot;,&quot;name&quot;:&quot;Recurly Recover&quot;,&quot;_id&quot;:&quot;6a909f963c00925d1070727c&quot;}]"><script>(function () {
  var scheme = 'light';
  var mode = scheme;

  if (scheme === 'system') {
    try {
      mode = window.localStorage.getItem('color-scheme');
    } catch (e) {
      // localStorage throws in some privacy modes
    }
  }

  // anything else (null on a first visit, a stale poisoned value) falls back to the OS
  if (mode !== 'light' && mode !== 'dark' && mode !== 'system') mode = 'system';

  document.documentElement.setAttribute('data-color-mode', mode);
})();</script><script id="config" type="application/json" data-json="{&quot;algoliaIndex&quot;:&quot;readme_search_v2&quot;,&quot;amplitude&quot;:{&quot;apiKey&quot;:&quot;8b550cf334a130e3d6ea41a88b894d8&quot;,&quot;enabled&quot;:&quot;true&quot;,&quot;sessionReplay&quot;:{&quot;enabled&quot;:&quot;true&quot;,&quot;sampleRate&quot;:&quot;0.1&quot;}},&quot;api&quot;:{&quot;upload&quot;:{&quot;fileSizeLimit&quot;:10485760,&quot;fileSizeLimitFormatted&quot;:&quot;10MB&quot;}},&quot;asset_url&quot;:&quot;https://cdn.readme.io&quot;,&quot;dashDomain&quot;:&quot;dash.readme.com&quot;,&quot;domain&quot;:&quot;readme.io&quot;,&quot;domainFull&quot;:&quot;https://dash.readme.com&quot;,&quot;encryptedLocalStorageKey&quot;:&quot;ekfls-2025-03-27&quot;,&quot;fullstory&quot;:{&quot;enabled&quot;:true,&quot;orgId&quot;:&quot;FSV9A&quot;},&quot;git&quot;:{&quot;preview&quot;:&quot;https://githug-prod.gitto.rdme.io&quot;,&quot;sync&quot;:{&quot;bitbucket&quot;:{&quot;installationLink&quot;:&quot;https://developer.atlassian.com/console/install/310151e6-ca1a-4a44-9af6-1b523fea0561?signature=AYABeMn9vqFkrg%2F1DrJAQxSyVf4AAAADAAdhd3Mta21zAEthcm46YXdzOmttczp1cy13ZXN0LTI6NzA5NTg3ODM1MjQzOmtleS83MDVlZDY3MC1mNTdjLTQxYjUtOWY5Yi1lM2YyZGNjMTQ2ZTcAuAECAQB4IOp8r3eKNYw8z2v%2FEq3%2FfvrZguoGsXpNSaDveR%2FF%2Fo0BHUxIjSWx71zNK2RycuMYSgAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDOJgARbqndU9YM%2FRdQIBEIA7unpCah%2BIu53NA72LkkCDhNHOv%2BgRD7agXAO3jXqw0%2FAcBOB0%2F5LmpzB5f6B1HpkmsAN2i2SbsFL30nkAB2F3cy1rbXMAS2Fybjphd3M6a21zOmV1LXdlc3QtMTo3MDk1ODc4MzUyNDM6a2V5LzQ2MzBjZTZiLTAwYzMtNGRlMi04NzdiLTYyN2UyMDYwZTVjYwC4AQICAHijmwVTMt6Oj3F%2B0%2B0cVrojrS8yZ9ktpdfDxqPMSIkvHAGT%2FMTvCxC3XwnwlulZe975AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMMUUe9d1YmFOo373TAgEQgDuJo7TayM6NL19Sj9RPooRrl8rYxwKgvu9gkLNc3GuyyovWI1xA2qTr0LQzMRsf3imrAWsywzPcsjnvuAAHYXdzLWttcwBLYXJuOmF3czprbXM6dXMtZWFzdC0xOjcwOTU4NzgzNTI0MzprZXkvNmMxMjBiYTAtNGNkNS00OTg1LWI4MmUtNDBhMDQ5NTJjYzU3ALgBAgIAeLKa7Dfn9BgbXaQmJGrkKztjV4vrreTkqr7wGwhqIYs5AZR28Sibv2eBxSIg2MydtvEAAAB%2BMHwGCSqGSIb3DQEHBqBvMG0CAQAwaAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAzzWhThsIgJwrr%2FY2ECARCAOxoaW9pob21lweyAfrIm6Fw7gd8D%2B%2F8LHk4rl3jjULDM35%2FVPuqBrqKunYZSVCCGNGB3RqpQJr%2FasASiAgAAAAAMAAAQAAAAAAAAAAAAAAAAAEokowLKsF1tMABEq%2BKNyJP%2F%2F%2F%2F%2FAAAAAQAAAAAAAAAAAAAAAQAAADJLzRcp6MkqKR43PUjOiRxxbxXYhLc6vFXEutK3%2BQ71yuPq4dC8pAHruOVQpvVcUSe8dptV8c7wR8BTJjv%2F%2FNe8r0g%3D&amp;product=bitbucket&quot;}}},&quot;hubspot&quot;:{&quot;portalId&quot;:&quot;9401557&quot;},&quot;metrics&quot;:{&quot;billingCronEnabled&quot;:&quot;true&quot;,&quot;dashUrl&quot;:&quot;https://m.readme.io&quot;,&quot;defaultUrl&quot;:&quot;https://m.readme.io&quot;,&quot;exportMaxRetries&quot;:12,&quot;wsUrl&quot;:&quot;wss://m.readme.io&quot;},&quot;micro&quot;:{&quot;baseUrl&quot;:&quot;https://micro-beta.readme.com&quot;},&quot;novuNotification&quot;:{&quot;appId&quot;:&quot;ob_MiAPOPqgP&quot;,&quot;showUnreleasedWorkflows&quot;:false},&quot;proxyUrl&quot;:&quot;https://try.readme.io&quot;,&quot;readmeRecaptchaSiteKey&quot;:&quot;6LesVBYpAAAAAESOCHOyo2kF9SZXPVb54Nwf3i2x&quot;,&quot;releaseVersion&quot;:&quot;5.926.0&quot;,&quot;reservedWords&quot;:{&quot;tools&quot;:[&quot;execute-request&quot;,&quot;get-endpoint&quot;,&quot;get-server-variables&quot;,&quot;list-endpoints&quot;,&quot;list-specs&quot;,&quot;search-endpoints&quot;,&quot;search&quot;,&quot;fetch&quot;]},&quot;sentry&quot;:{&quot;dsn&quot;:&quot;https://3bbe57a973254129bcb93e47dc0cc46f@o343074.ingest.sentry.io/2052166&quot;,&quot;enabled&quot;:true},&quot;shMigration&quot;:{&quot;promoVideo&quot;:&quot;&quot;,&quot;forceWaitlist&quot;:false,&quot;migrationPreview&quot;:false},&quot;sslBaseDomain&quot;:&quot;readmessl.com&quot;,&quot;sslGenerationService&quot;:&quot;ssl.readmessl.com&quot;,&quot;superHub&quot;:{&quot;newProjectsEnabled&quot;:true},&quot;tiptapCloud&quot;:{&quot;appId&quot;:&quot;8mzorjl9&quot;,&quot;url&quot;:&quot;wss://8mzorjl9.collab.tiptap.cloud&quot;},&quot;wootric&quot;:{&quot;accountToken&quot;:&quot;NPS-122b75a4&quot;,&quot;enabled&quot;:true}}"></script></head><body class="body-none theme-solid header-solid header-bg-size-auto header-bg-pos-tl header-overlay-triangles reference-layout-row lumosity-dark  is-hub-themed"><div style="display:none" aria-hidden="true">For AI agents: the docs index is at https://docs.recurly.com/recurly-commerce/llms.txt. The index for every project on this site is at https://docs.recurly.com/llms.txt. Append .md to any documentation page URL to get its markdown version.</div><div id="ssr-top"></div><div id="ssr-main"><div class="App ThemeContext ThemeContext_dark ThemeContext_classic ThemeContext_spacing_legacy ThemeContext_solid" style="--color-primary:#0d0d0b;--color-primary-inverse:#fff;--color-primary-alt:#000000;--color-primary-darken-10:#000000;--color-primary-darken-20:#000000;--color-primary-alpha-25:rgba(13, 13, 11, 0.25);--color-link-primary:#0d0d0b;--color-link-primary-dark-override:#ffffff;--color-link-button:#0d0d0b;--color-link-button-text:#fff;--color-link-button-border:rgba(255, 255, 255, 0.2);--color-link-button-darken-5:#000000;--color-link-button-darken-10:#000000;--color-link-button-alpha-50:rgba(13, 13, 11, 0.5);--color-link-button-alpha-25:rgba(13, 13, 11, 0.25);--color-link-primary-darken-5:#000000;--color-link-primary-darken-10:#000000;--color-link-primary-darken-20:#000000;--color-link-primary-alpha-50:rgba(13, 13, 11, 0.5);--color-link-primary-alpha-25:rgba(13, 13, 11, 0.25);--color-link-background:rgba(13, 13, 11, 0.09);--color-link-background-dark-override:rgba(255, 255, 255, 0.09);--color-link-text:#fff;--color-tab-active:#0d0d0b;--color-login-link:#0d0d0b;--color-login-link-text:#fff;--color-login-link-darken-10:#000000;--color-login-link-primary-alpha-50:rgba(13, 13, 11, 0.5)"><div class="SuperHub2RNxzk6HzHiJ rm-ReadMe"><div class="ContentWithOwlbotx4PaFDoA1KMz"><div class="ContentWithOwlbot-content2X1XexaN8Lf2"><header class="Header3zzata9F_ZPQ rm-Header_classic Header_collapsible3n0YXfOvb_Al rm-Header"><div class="rm-Header-top Header-topuTMpygDG4e1V Header-top_classic3g7Q6zoBy8zh"><div class="rm-Container rm-Container_flex"><div style="outline:none" tabindex="-1"><a href="#content" target="_self" class="Button Button_md rm-JumpTo Header-jumpTo3IWKQXmhSI5D Button_primary">Jump to Content</a></div><div class="rm-Header-left Header-leftADQdGVqx1wqU"><a class="rm-Logo Header-logo1Xy41PtkzbdG" href="https://docs.recurly.com/" target="_self"><img alt="Recurly Commerce Docs" class="rm-Logo-img Header-logo-img3YvV4lcGKkeb" src="https://files.readme.io/84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg"/></a></div><div class="rm-Header-left Header-leftADQdGVqx1wqU Header-left_mobile1RG-X93lx6PF"><div><button aria-label="Toggle navigation menu" class="icon-menu menu3d6DYNDa3tk5" type="button"></button><div class=""><div class="Flyout95xhYIIoTKtc undefined rm-Flyout" data-testid="flyout"><div class="MobileFlyout1hHJpUd-nYkd"><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- " href="/recurly-commerce/" target="_self"><i aria-hidden="true" class="icon-landing-page-2 NavItem-badge1qOxpfTiALoz rm-Header-bottom-link-icon"></i><span class="NavItem-textSlZuuL489uiw">Home</span></a><a aria-current="page" class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck-  active" href="/recurly-commerce/docs" target="_self"><i aria-hidden="true" class="icon-guides NavItem-badge1qOxpfTiALoz rm-Header-bottom-link-icon"></i><span class="NavItem-textSlZuuL489uiw">Directory</span></a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- " href="/recurly-commerce/reference" target="_self"><i aria-hidden="true" class="icon-references NavItem-badge1qOxpfTiALoz rm-Header-bottom-link-icon"></i><span class="NavItem-textSlZuuL489uiw">API Reference</span></a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- " href="/recurly-commerce/changelog" target="_self"><i aria-hidden="true" class="icon-changelog NavItem-badge1qOxpfTiALoz rm-Header-bottom-link-icon"></i><span class="NavItem-textSlZuuL489uiw">Changelog</span></a><hr class="MobileFlyout-divider10xf7R2X1MeW"/><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="https://docs.recurly.com/#/" rel="noopener" target="_blank" to="https://docs.recurly.com/#/">Docs hub</a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="https://support.recurly.com/" rel="noopener" target="_blank" to="https://support.recurly.com/">Support</a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="https://recurly.com/contact-us/" rel="noopener" target="_blank" to="https://recurly.com/contact-us/">Contact us</a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="https://recurly.com/request-a-demo/" rel="noopener" target="_blank" to="https://recurly.com/request-a-demo/">Book demo</a><a class="MobileFlyout-logo3Lq1eTlk1K76 Header-logo1Xy41PtkzbdG rm-Logo" href="https://docs.recurly.com/" target="_self"><img alt="Recurly Commerce Docs" class="Header-logo-img3YvV4lcGKkeb rm-Logo-img" src="https://files.readme.io/84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg"/></a></div></div></div></div><div class="Header-left-nav2xWPWMNHOGf_"><i aria-hidden="true" class="icon-guides Header-left-nav-icon10glJKFwewOv"></i>Directory</div></div><div class="rm-Header-right Header-right21PC2XTT6aMg"><span class="Header-right_desktop14ja01RUQ7HE"><a class="Button Button_md rm-Header-link rm-Header-top-link Button_slate_text Header-link2tXYTgXq85zW" href="https://docs.recurly.com/#/" target="_self" to="https://docs.recurly.com/#/">Docs hub</a><a class="Button Button_md rm-Header-link rm-Header-top-link Button_slate_text Header-link2tXYTgXq85zW" href="https://support.recurly.com/" target="_self" to="https://support.recurly.com/">Support</a><a class="Button Button_md rm-Header-link rm-Header-top-link Button_slate_text Header-link2tXYTgXq85zW" href="https://recurly.com/contact-us/" target="_self" to="https://recurly.com/contact-us/">Contact us</a><a class="Button Button_md rm-Header-link rm-Header-top-link Button_slate_text Header-link2tXYTgXq85zW" href="https://recurly.com/request-a-demo/" target="_self" to="https://recurly.com/request-a-demo/">Book demo</a></span><div class="Header-searchtb6Foi0-D9Vx"><button aria-label="Search ⌘k" class="rm-SearchToggle" data-symbol="⌘"><div class="rm-SearchToggle-icon icon-search1"></div></button></div></div></div></div><div class="Header-bottom2eLKOFXMEmh5 Header-bottom_classic rm-Header-bottom rm-Header-bottom_withOwlbot Header-bottom_withOwlbot3wuKp8NLXCqs"><div class="rm-Container rm-Container_flex"><nav aria-label="Primary navigation" class="Header-leftADQdGVqx1wqU Header-subnavnVH8URdkgvEl Header-subnav_links1fSsYMNRxHdu" role="navigation"><a class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile " href="/recurly-commerce/" target="_self"><i aria-hidden="true" class="icon-landing-page-2 rm-Header-bottom-link-icon"></i><span>Home</span></a><a aria-current="page" class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile  active" href="/recurly-commerce/docs" target="_self"><i aria-hidden="true" class="icon-guides rm-Header-bottom-link-icon"></i><span>Directory</span></a><a class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile " href="/recurly-commerce/reference" target="_self"><i aria-hidden="true" class="icon-references rm-Header-bottom-link-icon"></i><span>API Reference</span></a><a class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile " href="/recurly-commerce/changelog" target="_self"><i aria-hidden="true" class="icon-changelog rm-Header-bottom-link-icon"></i><span>Changelog</span></a><div class="Header-subnav-tabyNLkcOA6xAra" style="transform:translateX(0px);width:0"></div></nav><button align="center" justify="between" style="--flex-gap:var(--xs)" class="Button Button_sm Flex Flex_row MobileSubnav1DsTfasXloM2 Button_secondary Button_secondary_outline" type="button"><span class="Button-label">Postscript Integration</span><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a" data-name="chevron-up-down" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m6 16 6 6 6-6M18 8l-6-6-6 6" class="icon-stroke-width"></path></svg></span></button></div></div><div class="hub-search-results--reactApp " id="hub-search-results"><div class="hub-container"><div class="modal-backdrop rm-SearchModal rm-SearchModal_classic" role="button" tabindex="0"></div></div></div></header><main class="SuperHubDoc3Z-1XSVTg-Q1 rm-Guides" id="content"><div class="SuperHubDoc-container2RY1FPE4Ewze rm-Container rm-Container_flex"><nav aria-label="Secondary navigation" class="rm-Sidebar hub-sidebar reference-redesign Nav3C5f8FcjkaHj rm-Sidebar_guides" id="hub-sidebar" role="navigation"><div class="Sidebar1t2G1ZJq-vU1 rm-Sidebar hub-sidebar-content"><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">GETTING STARTED</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/overview-recurly-commerce"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Overview: Recurly Commerce</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/getting-started-rc"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Getting started in Recurly Commerce</span></span><button aria-expanded="false" aria-label="Show subpages for Getting started in Recurly Commerce" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ" type="button"><i aria-hidden="true" class="Sidebar-link-iconnjiqEiZlPn0W Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/installing-and-onboarding-to-recurly-commerce"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Installing and onboarding to Recurly Commerce</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/migrating-to-recurly-commerce"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Migrating to Recurly Commerce</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/recurly-commerce-changelog"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Recurly Commerce Changelog</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">SUBSCRIPTION MANAGEMENT</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/subscription-management"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Overview: Subscription management</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/create-a-subscription-plan"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Create a subscription plan</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/edit-a-subscription-plan"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Edit a subscription plan</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/edit-a-subscription"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Edit a customer subscription</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/subscriber-activity"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Subscriber activity</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/subscription-creation-and-combining"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Subscription order logic </span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">REVENUE RECOVERY</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/recurly-commerce-revenue-recovery"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Overview: Revenue recovery</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/intelligent-retries"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Payment Retries</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/dunning-management-in-recurly-commerce"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Dunning Campaign</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">STOREFRONT</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/storefront"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Overview: Storefront</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/storefront-setup"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Storefront setup</span></span><button aria-expanded="false" aria-label="Show subpages for Storefront setup" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ" type="button"><i aria-hidden="true" class="Sidebar-link-iconnjiqEiZlPn0W Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/storefront-with-recurly-commerce-theme-app-embeds-and-blocks"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Storefront with Recurly Commerce theme app embeds and blocks</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/widget-api"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Widget API</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/storefront-management"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Storefront management</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">CUSTOMER PORTAL</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/customer-portal"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Overview: Customer portal</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/customer-portal-management"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Customer portal management</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/cancellation-and-churn-prevention-flows"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Cancellation and churn prevention flows</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">NOTIFICATIONS</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/notifications"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Overview: Notifications</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/transactional-emails"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Transactional emails</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/transactional-sms"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Transactional SMS</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">SHOPIFY</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/shopify-settings"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Overview: Shopify settings</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/fulfill-a-subscription-in-shopify"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Fulfill a subscription in Shopify</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/refund-a-subscription-in-shopify"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Refund a subscription in Shopify</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/discount-codes"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Discount codes</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/manage-shipping-profiles"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Manage shipping profiles</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/order-tagging"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Order tagging</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">ANALYTICS</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/recurly-commerce-analytics"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Overview: Recurly Commerce analytics</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/general-analytics"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">General analytics</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/subscription-analytics"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Subscription analytics</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/subscriber-analytics"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Subscriber analytics</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/cohort-analysis-analytics"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Cohort analysis analytics</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/product-breakdown-analytics"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Product breakdown analytics</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/forecasting-analytics"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Forecasting analytics</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/advanced-analytics"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Advanced analytics</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C Sidebar-listWrapper_expandedvCieTVZJcoub rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">PARTNER INTEGRATIONS</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 Sidebar-list_expandedWy9fQM8vmtOc rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/recurly-commerce-integrations"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Overview: Integrations</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3 subnav-expanded"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/email-and-sms-integration"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Email and SMS integrations</span></span><button aria-expanded="true" aria-label="Hide subpages for Email and SMS integrations" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ" type="button"><i aria-hidden="true" class="Sidebar-link-iconnjiqEiZlPn0W Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/klaviyo-integration"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Klaviyo integration</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a aria-current="page" class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link active" target="_self" href="/recurly-commerce/docs/postcript-integration"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Postscript Integration</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" rel="noopener" target="_blank" data-active="" href="https://docs.attentive.com/pages/authentication/"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Attentive integration</span></span><span class="Sidebar-link-metaLhOiyAaGZrkY"><i aria-label="Opens in new tab" class="Sidebar-link-iconnjiqEiZlPn0W Sidebar-link-externalIcon icon-arrow-up-right" role="img"></i></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/gorgias-integration"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Gorgias integration</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/fivetran-integration"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Fivetran integration</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">ADVANCED FEATURES</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/advanced-features"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Overview: Advanced features</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/bundles-in-recurly-commerce"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Bundles</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/bulk-updater-in-recurly-commerce"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Bulk updater</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/gift-subscriptions-in-recurly-commerce"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Gift subscriptions</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/automations"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Automations</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/compass-assistant-in-commerce"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Compass AI Assistant</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">SETTINGS</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/settings"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Overview: Settings</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/change-your-recurly-commerce-plan"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Change your Recurly Commerce plan</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">INTEGRATIONS</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/recurly-commerce/docs/webhooks"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Webhooks</span></span></a></li></ul></section><div class="readme-logo" id="readmeLogo">Powered by<!-- --> <a aria-label="ReadMe" href="https://readme.com?ref_src=hub&amp;project=recurly-commerce-docs" style="color:unset"><svg class="readme-logo-icon" height="50" viewBox="0 0 293 50" width="293"><path d="M114.851 9.35c-9.218 0-15.76 6.482-15.76 15.522 0 9.456 7.196 15.462 16.354 15.462 4.316 0 10.001-1.388 13.158-5.3a1 1 0 0 0-.062-1.345l-2.987-2.942a.978.978 0 0 0-1.37-.01c-2.438 2.415-5.548 3.352-8.382 3.352-4.401 0-8.089-2.438-8.564-7.374h22.231a.492.492 0 0 0 .49-.422c.077-.579.116-1.18.116-1.898 0-4.519-1.606-8.206-4.342-10.882-2.676-2.677-6.482-4.163-10.882-4.163Zm-7.554 12.429c.536-3.985 3.331-6.423 7.375-6.423 2.141 0 3.985.714 5.293 2.082 1.011 1.13 1.784 2.557 2.022 4.34h-14.69ZM286.422 13.513c-2.675-2.676-6.482-4.163-10.882-4.163-9.218 0-15.76 6.482-15.76 15.522 0 9.456 7.196 15.462 16.354 15.462 4.316 0 10.001-1.388 13.159-5.3a1.002 1.002 0 0 0-.062-1.345l-2.988-2.942a.978.978 0 0 0-1.37-.01c-2.437 2.415-5.548 3.352-8.382 3.352-4.401 0-8.088-2.438-8.563-7.374h22.23a.493.493 0 0 0 .491-.422c.076-.579.115-1.18.115-1.897 0-4.52-1.606-8.207-4.342-10.883Zm-18.436 8.266c.536-3.985 3.331-6.423 7.375-6.423 2.141 0 3.985.714 5.293 2.082 1.011 1.13 1.784 2.557 2.022 4.34h-14.69ZM167.264 33.54l.003-.039h-1.541V11.238c0-.682-.552-1.234-1.233-1.234h-4.561c-.682 0-1.234.553-1.234 1.234v2.146c-2.615-2.491-6.119-4.034-10.158-4.034-8.921 0-15.165 6.66-15.165 15.522 0 8.741 6.186 15.462 15.165 15.462 4.579 0 8.087-1.903 10.585-4.757v1.202a2.961 2.961 0 0 0 2.961 2.96h4.987c.681 0 1.234-.552 1.234-1.233v-3.77c0-.614-.456-1.1-1.043-1.196Zm-17.416-.164c-4.876 0-8.385-3.747-8.385-8.504 0-4.817 3.509-8.564 8.385-8.564 4.401 0 8.266 3.092 8.266 8.564 0 5.411-3.865 8.504-8.266 8.504ZM257.585 33.502h-2.222V22.077c0-7.613-4.817-12.727-12.192-12.727-4.459 0-7.909 1.843-10.228 4.58-2.021-2.915-5.293-4.58-9.515-4.58s-7.362 1.808-9.445 4.496v-2.667c0-.681-.552-1.234-1.233-1.234h-4.561c-.682 0-1.234.553-1.234 1.234v26.249a2.312 2.312 0 0 0 2.312 2.311h8.173c.681 0 1.233-.552 1.233-1.233v-3.77c0-.682-.552-1.234-1.233-1.234h-2.218v-10.77c0-3.866 2.497-6.305 6.124-6.305 3.569 0 5.65 2.438 5.65 6.304v14.697a2.312 2.312 0 0 0 2.312 2.311h7.307c.678 0 1.228-.55 1.228-1.228V34.73c0-.678-.55-1.228-1.228-1.228h-1.352v-10.77c0-3.866 2.557-6.304 6.125-6.304s5.709 2.438 5.709 6.304V33.5l.004 3.083v.843a2.311 2.311 0 0 0 2.311 2.312h8.173c.682 0 1.234-.552 1.234-1.234v-3.77c0-.681-.553-1.234-1.234-1.234ZM199.36.005h-6.647c-.681 0-1.233.553-1.233 1.234v3.77c0 .682.552 1.234 1.233 1.234h.353l-.001.007h.99v6.074c-2.438-1.844-5.471-2.974-8.921-2.974-8.919 0-15.164 6.66-15.164 15.522 0 8.741 6.185 15.462 15.164 15.462 4.328 0 7.688-1.712 10.153-4.307v2.478c0 .682.552 1.234 1.233 1.234h4.561c.682 0 1.234-.552 1.234-1.234V34.36l.006-.001V2.966a2.961 2.961 0 0 0-2.961-2.96Zm-12.917 33.371c-4.877 0-8.385-3.747-8.385-8.504 0-4.817 3.508-8.564 8.385-8.564 4.401 0 8.266 3.092 8.266 8.564 0 5.412-3.865 8.504-8.266 8.504ZM54.631 7.158H40.196c-5.072 0-9.307 3.551-10.375 8.3-1.068-4.749-5.304-8.3-10.375-8.3H5.01A5.01 5.01 0 0 0 0 12.168v25.4a5.01 5.01 0 0 0 5.01 5.01h9.579c9.99.031 13.266 2.377 14.844 7.172a.428.428 0 0 0 .388.255.424.424 0 0 0 .387-.255c1.578-4.795 4.854-7.14 14.844-7.171h9.58a5.01 5.01 0 0 0 5.01-5.01V12.167a5.01 5.01 0 0 0-5.01-5.01Zm-29.606 27.21c0 .294-.24.534-.534.534H8.175a.535.535 0 0 1-.535-.535v-2.03c0-.296.24-.535.535-.535H24.49c.295 0 .534.24.534.535v2.03Zm0-6.32c0 .294-.24.534-.534.534H8.175a.535.535 0 0 1-.535-.535v-2.03c0-.296.24-.535.535-.535H24.49c.295 0 .534.24.534.535v2.03Zm0-6.32c0 .294-.24.534-.534.534H8.175a.535.535 0 0 1-.535-.535v-2.03c0-.296.24-.535.535-.535H24.49c.295 0 .534.24.534.535v2.03Zm26.976 12.64c0 .294-.24.534-.535.534H35.151a.535.535 0 0 1-.535-.535v-2.03c0-.296.24-.535.535-.535h16.315c.296 0 .535.24.535.535v2.03Zm0-6.32c0 .294-.24.534-.535.534H35.151a.535.535 0 0 1-.535-.535v-2.03c0-.296.24-.535.535-.535h16.315c.296 0 .535.24.535.535v2.03Zm0-6.32c0 .294-.24.534-.535.534H35.151a.535.535 0 0 1-.535-.535v-2.03c0-.296.24-.535.535-.535h16.315c.296 0 .535.24.535.535v2.03ZM100.322 10.883c-.967-.651-3.238-1.75-7.368-1.533-3.743.196-6.661 1.963-8.623 5.114v-.594l-.002-.022v-.884a2.96 2.96 0 0 0-2.96-2.961h-6.45c-.68 0-1.233.552-1.233 1.234v3.896c0 .68.553 1.233 1.234 1.233h1.137-.48.664l.002.001h1.367v17.134h-2.216c-.675 0-1.222.547-1.222 1.222v3.794c0 .675.547 1.222 1.222 1.222h12.693c.674 0 1.22-.547 1.22-1.221v-3.795c0-.675-.546-1.222-1.22-1.222h-2.211v-9.759c0-4.163 2.444-6.996 6.363-7.196 1.825-.092 3.115.187 3.906.453.22.075.45-.037.548-.249a16.908 16.908 0 0 1 3.676-5.155.454.454 0 0 0-.048-.712h.001Z"></path></svg></a></div></div><button aria-label="Hide sidebar navigation" class="Nav-toggle-collapse39KxgTH727KL" type="button"></button></nav><article class="SuperHubDoc-article3ArTrEavUTKg rm-Article rm-Guides-SuperHub"><header class="rm-PageHeader" id="content-head"><div class="row clearfix"><div class="col-xs-9"><div class="Breadcrumb2NpDM3I8sjWu rm-Breadcrumb SuperHubDoc-breadcrumb3CiEhI-z7_no"><ol class="Breadcrumb-list3wDDSRTNEBCQ rm-Breadcrumb-list"><li class="Breadcrumb-itemhU0JQW_9l3fK rm-Breadcrumb-item"><span>PARTNER INTEGRATIONS</span><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a Breadcrumb-separator1MLziD-gOLe- rm-Breadcrumb-separator" data-name="chevron-right" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m9 18 6-6-6-6" class="icon-stroke-width"></path></svg></span></li><li class="Breadcrumb-itemhU0JQW_9l3fK rm-Breadcrumb-item"><a href="/recurly-commerce/docs/email-and-sms-integration">Email and SMS integrations</a></li></ol></div><h1 class="rm-PageHeader-title">Postscript Integration</h1><div class="excerpt rm-PageHeader-excerpt"><div class="rm-Markdown markdown-body" data-testid="RDMD"><style data-tailwind-stylesheet="true"></style><p>Enable Postscript to use Recurly Commerce subscriber events and tags for powerful SMS automations—no code required.</p></div></div></div></div></header><div class="grid-container-fluid" id="content-container"><section class="content-body grid-75 "><div style="display:contents"><div class="rm-Markdown markdown-body rm-Markdown markdown-body ng-non-bindable" data-testid="RDMD" style="margin-left:31px"><style>/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
@layer properties;
@layer theme, base, components, utilities;
@layer theme {
  .readme-tailwind, .readme-tailwind :host {
    --color-gray-300: oklch(87.2% 0.01 258.338);
    --color-gray-600: oklch(44.6% 0.03 256.802);
    --color-gray-800: oklch(27.8% 0.033 256.848);
    --spacing: 0.25rem;
    --container-lg: 32rem;
    --text-lg: 1.125rem;
    --text-lg--line-height: calc(1.75 / 1.125);
    --font-weight-bold: 700;
    --radius-md: 0.375rem;
  }
}
@layer utilities {
  .readme-tailwind .m-4 {
    margin: calc(var(--spacing) * 4);
  }
  .readme-tailwind .mr-2 {
    margin-right: calc(var(--spacing) * 2);
  }
  .readme-tailwind .mr-4 {
    margin-right: calc(var(--spacing) * 4);
  }
  .readme-tailwind .flex {
    display: flex;
  }
  .readme-tailwind .max-w-lg {
    max-width: var(--container-lg);
  }
  .readme-tailwind .justify-start {
    justify-content: flex-start;
  }
  .readme-tailwind .rounded-md {
    border-radius: var(--radius-md);
  }
  .readme-tailwind .border {
    border-style: var(--tw-border-style);
    border-width: 1px;
  }
  .readme-tailwind .border-gray-300 {
    border-color: var(--color-gray-300);
  }
  .readme-tailwind .p-6 {
    padding: calc(var(--spacing) * 6);
  }
  .readme-tailwind .text-lg {
    font-size: var(--text-lg);
    line-height: var(--tw-leading, var(--text-lg--line-height));
  }
  .readme-tailwind .font-bold {
    --tw-font-weight: var(--font-weight-bold);
    font-weight: var(--font-weight-bold);
  }
  .readme-tailwind .shadow-md {
    --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .readme-tailwind .dark\:border-gray-600 {
    .readme-tailwind &:where(.rm-ReadMe[data-color-mode=dark], .rm-ReadMe[data-color-mode=dark] *) {
      border-color: var(--color-gray-600);
    }
  }
  .readme-tailwind .dark\:bg-gray-800 {
    .readme-tailwind &:where(.rm-ReadMe[data-color-mode=dark], .rm-ReadMe[data-color-mode=dark] *) {
      background-color: var(--color-gray-800);
    }
  }
}
@property --tw-border-style {
  syntax: "*";
  inherits: false;
  initial-value: solid;
}
@property --tw-font-weight {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-inset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-ring-inset {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-offset-width {
  syntax: "<length>";
  inherits: false;
  initial-value: 0px;
}
@property --tw-ring-offset-color {
  syntax: "*";
  inherits: false;
  initial-value: #fff;
}
@property --tw-ring-offset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@layer properties {
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
    .readme-tailwind *, .readme-tailwind ::before, .readme-tailwind ::after, .readme-tailwind ::backdrop {
      --tw-border-style: solid;
      --tw-font-weight: initial;
      --tw-shadow: 0 0 #0000;
      --tw-shadow-color: initial;
      --tw-shadow-alpha: 100%;
      --tw-inset-shadow: 0 0 #0000;
      --tw-inset-shadow-color: initial;
      --tw-inset-shadow-alpha: 100%;
      --tw-ring-color: initial;
      --tw-ring-shadow: 0 0 #0000;
      --tw-inset-ring-color: initial;
      --tw-inset-ring-shadow: 0 0 #0000;
      --tw-ring-inset: initial;
      --tw-ring-offset-width: 0px;
      --tw-ring-offset-color: #fff;
      --tw-ring-offset-shadow: 0 0 #0000;
    }
  }
}
</style><h1 class="heading heading-1 header-scroll"><div class="heading-anchor anchor waypoint" id="overview"></div><div class="heading-text">Overview</div><a aria-label="Skip link to Overview" class="heading-anchor-icon fa fa-regular fa-anchor" href="#overview"></a></h1>
<div class="readme-tailwind"><div class="flex justify-start"><div class="rounded-md p-6 m-4 max-w-lg shadow-md border border-gray-300 dark:bg-gray-800 dark:border-gray-600"><p class="text-lg font-bold">Prerequisites &amp; limitations</p><p><i class="fa-solid fa-check mr-2"></i>A Postscript account with Admin access.</p><p><i class="fa-solid fa-check mr-2"></i>Recurly Commerce merchant admin access to configure the integration.</p><p><i class="fa-solid fa-exclamation-triangle mr-4"></i>No limitations on subscriber volume; tags and triggers fire in real time.</p></div></div></div>
<h1 class="heading heading-1 header-scroll"><div class="heading-anchor anchor waypoint" id="definition"></div><div class="heading-text">Definition</div><a aria-label="Skip link to Definition" class="heading-anchor-icon fa fa-regular fa-anchor" href="#definition"></a></h1>
<p>The Postscript integration writes Recurly Commerce-specific subscriber tags and fires custom triggers into Postscript. Use these to build segments and automations that reach your subscribers at key moments—starts, cancellations, failed payments, and upcoming orders.</p>
<h1 class="heading heading-1 header-scroll"><div class="heading-anchor anchor waypoint" id="key-benefits"></div><div class="heading-text">Key benefits</div><a aria-label="Skip link to Key benefits" class="heading-anchor-icon fa fa-regular fa-anchor" href="#key-benefits"></a></h1>
<ul>
<li><strong>Automated segmentation</strong>: Tag subscribers as “active” or “inactive” in Postscript without manual work.</li>
<li><strong>Event-driven automations</strong>: Trigger SMS flows on subscription starts, cancellations, billing failures, or upcoming renewals.</li>
<li><strong>Seamless setup</strong>: Configure in minutes via API key—no developer resources needed.</li>
</ul>
<h1 class="heading heading-1 header-scroll"><div class="heading-anchor anchor waypoint" id="key-details"></div><div class="heading-text">Key details</div><a aria-label="Skip link to Key details" class="heading-anchor-icon fa fa-regular fa-anchor" href="#key-details"></a></h1>
<h2 class="heading heading-2 header-scroll"><div class="heading-anchor anchor waypoint" id="integrating-postscript-into-recurly-commerce"></div><div class="heading-text">Integrating Postscript into Recurly Commerce</div><a aria-label="Skip link to Integrating Postscript into Recurly Commerce" class="heading-anchor-icon fa fa-regular fa-anchor" href="#integrating-postscript-into-recurly-commerce"></a></h2>
<h3 class="heading heading-3 header-scroll"><div class="heading-anchor anchor waypoint" id="create-a-postscript-api-key"></div><div class="heading-text"><strong>Create a Postscript API Key</strong></div><a aria-label="Skip link to [object Object]" class="heading-anchor-icon fa fa-regular fa-anchor" href="#create-a-postscript-api-key"></a></h3>
<ol>
<li>In your <a href="https://app.postscript.io/dashboard" target="" title="">Postscript dashboard</a>, select your <strong>Shop Name</strong> → <strong>API</strong>.</li>
<li>Click <strong>Create Security Key Pair</strong>, then confirm with <strong>Yes</strong>.</li>
<li>Under <strong>Private Key</strong>, click <strong>Show</strong> and copy your new API key.</li>
</ol>
<div class="readme-tailwind"><span aria-label="Expand image" class="img lightbox closed" role="button" tabindex="0"><span class="lightbox-inner"><img alt="" class="img img-align-center border" height="auto" loading="lazy" src="https://files.readme.io/af2c4db2c6e2196e750e668de94e98b90511b90fac76d573b985c384c0180f42-CreateAPIKey.gif" title="" width="80% "/></span></span></div>
<ol start="4">
<li><strong>Paste the API Key</strong>:  In Recurly Commerce → Settings → Integrations → Postscript, enter the API key and save.</li>
</ol>
<h2 class="heading heading-2 header-scroll"><div class="heading-anchor anchor waypoint" id="after-integration"></div><div class="heading-text">After integration</div><a aria-label="Skip link to After integration" class="heading-anchor-icon fa fa-regular fa-anchor" href="#after-integration"></a></h2>
<h3 class="heading heading-3 header-scroll"><div class="heading-anchor anchor waypoint" id="available-recurly-commerce-filters"></div><div class="heading-text">Available Recurly Commerce filters</div><a aria-label="Skip link to Available Recurly Commerce filters" class="heading-anchor-icon fa fa-regular fa-anchor" href="#available-recurly-commerce-filters"></a></h3>
<p>Use these Subscriber Tags in Postscript to segment your audience:</p>

















<div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th>Tag name</th><th>Description</th></tr></thead><tbody><tr><td>SUBSCRIBER_IS_PRIVE_ACTIVE_SUBSCRIBER</td><td>Applied if the customer has ≥ 1 active Recurly Commerce subscription.</td></tr><tr><td>SUBSCRIBER_IS_PRIVE_INACTIVE_SUBSCRIBER</td><td>Applied if the customer has no active subscriptions but was a subscriber in the past.</td></tr></tbody></table></div></div>
<blockquote>
<p><strong>Use Case:</strong> Build a Segment of inactive subscribers for win-back SMS campaigns.</p>
</blockquote>
<div class="readme-tailwind"><span aria-label="Expand image" class="img lightbox closed" role="button" tabindex="0"><span class="lightbox-inner"><img alt="" class="img img-align-center border" height="auto" loading="lazy" src="https://files.readme.io/0ecd26943a880d2f938f052c33079d2393ba4fd7a5a0649c39fee18db90406d7-image.png" title="" width="80% "/></span></span></div>
<h3 class="heading heading-3 header-scroll"><div class="heading-anchor anchor waypoint" id="available-recurly-commerce-triggers"></div><div class="heading-text">Available Recurly Commerce triggers</div><a aria-label="Skip link to Available Recurly Commerce triggers" class="heading-anchor-icon fa fa-regular fa-anchor" href="#available-recurly-commerce-triggers"></a></h3>
<p>Fire these Postscript triggers in real time to power automations:</p>

























<div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th>Trigger Name</th><th>Description</th></tr></thead><tbody><tr><td>Recurly Commerce: Subscription Started</td><td>Fires when a subscription is created/purchased by the shopper.</td></tr><tr><td>Recurly Commerce: Subscription Canceled</td><td>Fires when a subscription is canceled in the merchant admin or by the customer in the portal.</td></tr><tr><td>Recurly Commerce: Billing Attempt Failed</td><td>Fires when a billing attempt fails for a renewal order.</td></tr><tr><td>Recurly Commerce: Upcoming Order</td><td>Fires <strong>3 days</strong> before the next scheduled renewal order.</td></tr></tbody></table></div></div>
<blockquote>
<p><strong>Use Case:</strong> Send an SMS reminder for upcoming orders or recovery texts for failed payments.</p>
</blockquote>
<div class="readme-tailwind"><span aria-label="Expand image" class="img lightbox closed" role="button" tabindex="0"><span class="lightbox-inner"><img alt="" class="img img-align-center border" height="auto" loading="lazy" src="https://files.readme.io/33394d0cb8a149a0ac9fa349d763e8610bf79cf1866a19cb7e85d5724dca6c11-image.png" title="" width="80% "/></span></span></div></div></div><div align="center" class="Flex Flex_row " justify="between" style="--flex-gap:var(--md)"><div class="UpdatedAt"><p class="DateLine "><i class="icon icon-watch"></i>Updated<!-- --> <!-- -->about 1 year ago<!-- --> </p></div></div><hr class="NextStepsDivider"/><nav aria-label="Pagination Controls" class="PaginationControlsjDYuqu8pBMUy rm-Pagination"><a class="PaginationControls-link254uPEbaP92i PaginationControls-link_left1G58BmNHDbVm" aria-label="Previous Page: Klaviyo integration" href="/recurly-commerce/docs/klaviyo-integration"><span class="PaginationControls-iconZbaZ3tgyhNmI icon-arrow-left2"></span><div class="PaginationControls-text3qEXHZU00znD PaginationControls-text_left3wBkn4C9R0W_">Klaviyo integration</div></a><a class="PaginationControls-link254uPEbaP92i PaginationControls-link_right5lsfuICZqXYk" aria-label="Next Page: Gorgias integration" href="/recurly-commerce/docs/gorgias-integration"><div class="PaginationControls-text3qEXHZU00znD PaginationControls-text_right3EIfWubgRVVP">Gorgias integration</div><span class="PaginationControls-iconZbaZ3tgyhNmI icon-arrow-right2"></span></a></nav><div class="rm-PageThumbs PageThumbs"><div class="PageThumbs-helpful">Did this page help you?<div class="PageThumbs-cta"><div class="Dropdown Dropdown_closed" data-testid="dropdown-container"><button aria-label="Yes, this page helped me" aria-haspopup="dialog" class="Button Button_sm PageThumbs-button Dropdown-toggle Button_secondary Button_secondary_text" type="button"><i class="icon icon-thumbs-up-2"></i><span>Yes</span></button></div><div class="Dropdown Dropdown_closed" data-testid="dropdown-container"><button aria-label="No, this page did not help me" aria-haspopup="dialog" class="Button Button_sm PageThumbs-button Dropdown-toggle Button_secondary Button_secondary_text" type="button"><i class="icon icon-thumbs-down1"></i><span>No</span></button></div></div></div></div></section><section class="content-toc grid-25 rm-Aside rm-Aside_line "><div class="AIDropdownzmvdRdsNayZl rm-AIDropdown"><button class="Button Button_sm AIDropdown-splitButton2KQ9N2VEvBcT AIDropdown-splitButton_left2tTf2UmhJFyZ Button_secondary_ghost Button_secondary" type="button"><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a" data-name="copy" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M20 9h-9a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2Z" class="icon-stroke-width"></path><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" class="icon-stroke-width"></path></svg></span><span>Copy Page</span></button><div class="Dropdown Dropdown_closed" data-testid="dropdown-container"><button aria-haspopup="dialog" class="Button Button_sm AIDropdown-splitButton2KQ9N2VEvBcT AIDropdown-splitButton_rightW_JEw7Q1_yEG Dropdown-toggle Button_secondary_ghost Button_secondary" type="button"><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a" data-name="chevron-down" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m6 9 6 6 6-6" class="icon-stroke-width"></path></svg></span></button></div></div><div><nav aria-label="Table of contents" class="rm-ToC"><ul class="toc-list"><li class="toc-children"><ul><li><a href="#overview">Overview</a></li><li><a href="#definition">Definition</a></li><li><a href="#key-benefits">Key benefits</a></li><li><a href="#key-details">Key details</a></li><li><ul><li><a href="#integrating-postscript-into-recurly-commerce">Integrating Postscript into Recurly Commerce</a></li><li><ul><li><a href="#create-a-postscript-api-key">Create a Postscript API Key</a></li></ul></li><li><a href="#after-integration">After integration</a></li><li><ul><li><a href="#available-recurly-commerce-filters">Available Recurly Commerce filters</a></li><li><a href="#available-recurly-commerce-triggers">Available Recurly Commerce triggers</a></li></ul></li></ul></li></ul></li></ul></nav></div></section></div></article></div></main><footer aria-label="Status banner" class="Footer2U8XAPoGhlgO AppFooter rm-Banners"></footer><div class="ModalWrapper" id="ChatGPT-modal"></div></div><div class="ContentWithOwlbot-sidebar1cgUrK3uYZLh rm-AskAi-sidebar"></div></div></div><div class="ModalWrapper" id="tutorialmodal-root"></div></div></div><div class="ng-non-bindable"><script id="ssr-props" type="application/x-ssr-props">{"sidebars":{},"apiBaseUrl":"/recurly-commerce","baseUrl":"/recurly-commerce","search":{"appId":"","searchApiKey":"","indexName":"readme_search_v2","projectsMeta":[{"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"id":"6865c5ccaabb920030954384","name":"Recurly Engage Docs","subdomain":"recurly-engage-docs","subpath":"recurly-engage","nav_names":{"docs":"Directory","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""}},{"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"id":"6865c47f44422c001062c4de","name":"Recurly RevRec Docs","subdomain":"recurly-revrec-docs","subpath":"recurly-revrec","nav_names":{"docs":"Directory","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""}},{"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"id":"6865c648c6b75f0030446843","name":"Recurly Commerce Docs","subdomain":"recurly-commerce-docs","subpath":"recurly-commerce","nav_names":{"docs":"Directory","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""}},{"modules":{"landing":true,"reference":true,"suggested_edits":false,"discuss":false,"docs":true,"examples":true,"changelog":true,"logs":false,"custompages":true,"tutorials":false,"graphql":false},"id":"56450a342229d7170010928a","name":"Recurly Subscriptions Docs","subdomain":"reference-docs","subpath":"recurly-subscriptions","nav_names":{"discuss":"","docs":"Product Docs","reference":"","changelog":"Changelog","tutorials":"","recipes":""}},{"modules":{"landing":true,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"id":"6a909f963c00925d1070727c","name":"Recurly Recover","subdomain":"recurly-recover","subpath":"","nav_names":{"docs":"Product Docs","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""}}],"urlManagerOpts":{"lang":"en","parent":{"subdomain":"recurly-group","childrenProjects":["recurly-engage","recurly-revrec","recurly-commerce","recurly-subscriptions","recurly-recover"]},"project":{"subdomain":"recurly-commerce"},"version":"1.0"}},"customBlocks":[{"name":"PrerequisitesAndLimitations","project":"6865c54a5d7fcb002ec16725","processing_status":null,"renderable":{"status":true},"source":"export const PrerequisitesLimitations = ({ header }) => {\n  return (\n    \u003cdiv className=\"flex justify-center\">\n      \u003cdiv className=\"rounded-md p-6 m-4 max-w-lg shadow-md border border-gray-300 dark:bg-gray-800 dark:border-gray-600\">\n        \u003cp className=\"text-lg font-bold\">{header}\u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-check mr-2\" />\n          Node.js &gt;= 14\n        \u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-check mr-2\" />\n          ReadMe CLI installed\n        \u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-exclamation-triangle mr-4\" />\n          Not supported on IE11\n        \u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-exclamation-triangle mr-4\" />\n          Requires internet connection\n        \u003c/p>\n      \u003c/div>\n    \u003c/div>\n  );\n};\n\n\u003cPrerequisitesLimitations header=\"Prerequisites & limitations\" />","tag":"PrerequisitesAndLimitations","type":"component","updated_at":"2025-07-22T16:38:21.000Z","uri":"/branches/1.0/custom_blocks/PrerequisitesAndLimitations","links":{"project":"/projects/recurly-group"},"usage":{"page_count":null,"project_count":null},"branch":{"uri":"/branches/1.0","name":"1.0"}}],"document":{"allow_crawlers":"enabled","processing_status":null,"renderable":{"status":true},"slug":"postcript-integration","state":"current","title":"Postscript Integration","type":"basic","updated_at":"2025-08-26T17:03:24.000Z","uri":"/branches/1.0/guides/postcript-integration","appearance":{"icon":{"name":null,"type":null},"table_of_contents":"default"},"category":{"uri":"/branches/1.0/categories/guides/PARTNER%20INTEGRATIONS"},"href":{"dash":"https://dash.readme.com/project/recurly-commerce-docs/v1.0/docs/postcript-integration","hub":"https://docs.recurly.com/recurly-commerce/docs/postcript-integration","github_url":null},"links":{"project":"/projects/me"},"parent":{"uri":"/branches/1.0/guides/email-and-sms-integration"},"privacy":{"view":"public"},"project":{"name":"Recurly Commerce Docs","subdomain":"recurly-commerce-docs","uri":"/projects/me"},"content":{"body":"# Overview\n\nexport const PrerequisitesLimitations = ({ header }) => {\n  return (\n    \u003cdiv className=\"flex justify-start\">\n      \u003cdiv className=\"rounded-md p-6 m-4 max-w-lg shadow-md border border-gray-300 dark:bg-gray-800 dark:border-gray-600\">\n        \u003cp className=\"text-lg font-bold\">{header}\u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-check mr-2\" />\n          A Postscript account with Admin access.\n        \u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-check mr-2\" />\n          Recurly Commerce merchant admin access to configure the integration.\n        \u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-exclamation-triangle mr-4\" />\n          No limitations on subscriber volume; tags and triggers fire in real time.\n        \u003c/p>\n      \u003c/div>\n    \u003c/div>\n  );\n};\n\n\u003cPrerequisitesLimitations header=\"Prerequisites & limitations\" />\n\n# Definition\n\nThe Postscript integration writes Recurly Commerce-specific subscriber tags and fires custom triggers into Postscript. Use these to build segments and automations that reach your subscribers at key moments—starts, cancellations, failed payments, and upcoming orders.\n\n# Key benefits\n\n* **Automated segmentation**: Tag subscribers as “active” or “inactive” in Postscript without manual work.\n* **Event-driven automations**: Trigger SMS flows on subscription starts, cancellations, billing failures, or upcoming renewals.\n* **Seamless setup**: Configure in minutes via API key—no developer resources needed.\n\n# Key details\n\n## Integrating Postscript into Recurly Commerce\n\n### **Create a Postscript API Key**\n\n1. In your [Postscript dashboard](https://app.postscript.io/dashboard), select your **Shop Name** → **API**.\n2. Click **Create Security Key Pair**, then confirm with **Yes**.\n3. Under **Private Key**, click **Show** and copy your new API key.\n\n\u003cImage align=\"center\" className=\"border\" border={true} width=\"80% \" src=\"https://files.readme.io/af2c4db2c6e2196e750e668de94e98b90511b90fac76d573b985c384c0180f42-CreateAPIKey.gif\" />\n\n4. **Paste the API Key**:  In Recurly Commerce → Settings → Integrations → Postscript, enter the API key and save.\n\n## After integration\n\n### Available Recurly Commerce filters\n\nUse these Subscriber Tags in Postscript to segment your audience:\n\n| Tag name                                    | Description                                                                           |\n| ------------------------------------------- | ------------------------------------------------------------------------------------- |\n| SUBSCRIBER\\_IS\\_PRIVE\\_ACTIVE\\_SUBSCRIBER   | Applied if the customer has ≥ 1 active Recurly Commerce subscription.                 |\n| SUBSCRIBER\\_IS\\_PRIVE\\_INACTIVE\\_SUBSCRIBER | Applied if the customer has no active subscriptions but was a subscriber in the past. |\n\n> **Use Case:** Build a Segment of inactive subscribers for win-back SMS campaigns.\n\n\u003cImage align=\"center\" className=\"border\" border={true} width=\"80% \" src=\"https://files.readme.io/0ecd26943a880d2f938f052c33079d2393ba4fd7a5a0649c39fee18db90406d7-image.png\" />\n\n### Available Recurly Commerce triggers\n\nFire these Postscript triggers in real time to power automations:\n\n| Trigger Name                             | Description                                                                                   |\n| ---------------------------------------- | --------------------------------------------------------------------------------------------- |\n| Recurly Commerce: Subscription Started   | Fires when a subscription is created/purchased by the shopper.                                |\n| Recurly Commerce: Subscription Canceled  | Fires when a subscription is canceled in the merchant admin or by the customer in the portal. |\n| Recurly Commerce: Billing Attempt Failed | Fires when a billing attempt fails for a renewal order.                                       |\n| Recurly Commerce: Upcoming Order         | Fires **3 days** before the next scheduled renewal order.                                     |\n\n> **Use Case:** Send an SMS reminder for upcoming orders or recovery texts for failed payments.\n\n\u003cImage align=\"center\" className=\"border\" border={true} width=\"80% \" src=\"https://files.readme.io/33394d0cb8a149a0ac9fa349d763e8610bf79cf1866a19cb7e85d5724dca6c11-image.png\" />","excerpt":"Enable Postscript to use Recurly Commerce subscriber events and tags for powerful SMS automations—no code required.","link":{"url":null,"new_tab":false},"next":{"description":null,"pages":[]}},"metadata":{"description":null,"keywords":null,"title":null,"x_import":null,"image":{"uri":null,"url":null}}},"meta":{"baseUrl":"/recurly-commerce","description":"Enable Postscript to use Recurly Commerce subscriber events and tags for powerful SMS automations—no code required.","hidden":false,"image":[],"metaTitle":"Postscript Integration","robots":"index","slug":"postcript-integration","title":"Postscript Integration","type":"docs","updatedAt":"2025-08-26T17:03:24.000Z"},"rdmd":{"dehydrated":{"toc":"\u003cnav aria-label=\"Table of contents\" class=\"rm-ToC\">\u003cul class=\"toc-list\">\u003cli class=\"toc-children\">\u003cul>\u003cli>\u003ca href=\"#overview\">Overview\u003c/a>\u003c/li>\u003cli>\u003ca href=\"#definition\">Definition\u003c/a>\u003c/li>\u003cli>\u003ca href=\"#key-benefits\">Key benefits\u003c/a>\u003c/li>\u003cli>\u003ca href=\"#key-details\">Key details\u003c/a>\u003c/li>\u003cli>\u003cul>\u003cli>\u003ca href=\"#integrating-postscript-into-recurly-commerce\">Integrating Postscript into Recurly Commerce\u003c/a>\u003c/li>\u003cli>\u003cul>\u003cli>\u003ca href=\"#create-a-postscript-api-key\">Create a Postscript API Key\u003c/a>\u003c/li>\u003c/ul>\u003c/li>\u003cli>\u003ca href=\"#after-integration\">After integration\u003c/a>\u003c/li>\u003cli>\u003cul>\u003cli>\u003ca href=\"#available-recurly-commerce-filters\">Available Recurly Commerce filters\u003c/a>\u003c/li>\u003cli>\u003ca href=\"#available-recurly-commerce-triggers\">Available Recurly Commerce triggers\u003c/a>\u003c/li>\u003c/ul>\u003c/li>\u003c/ul>\u003c/li>\u003c/ul>\u003c/li>\u003c/ul>\u003c/nav>","body":"\u003cstyle>/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n  .readme-tailwind, .readme-tailwind :host {\n    --color-gray-300: oklch(87.2% 0.01 258.338);\n    --color-gray-600: oklch(44.6% 0.03 256.802);\n    --color-gray-800: oklch(27.8% 0.033 256.848);\n    --spacing: 0.25rem;\n    --container-lg: 32rem;\n    --text-lg: 1.125rem;\n    --text-lg--line-height: calc(1.75 / 1.125);\n    --font-weight-bold: 700;\n    --radius-md: 0.375rem;\n  }\n}\n@layer utilities {\n  .readme-tailwind .m-4 {\n    margin: calc(var(--spacing) * 4);\n  }\n  .readme-tailwind .mr-2 {\n    margin-right: calc(var(--spacing) * 2);\n  }\n  .readme-tailwind .mr-4 {\n    margin-right: calc(var(--spacing) * 4);\n  }\n  .readme-tailwind .flex {\n    display: flex;\n  }\n  .readme-tailwind .max-w-lg {\n    max-width: var(--container-lg);\n  }\n  .readme-tailwind .justify-start {\n    justify-content: flex-start;\n  }\n  .readme-tailwind .rounded-md {\n    border-radius: var(--radius-md);\n  }\n  .readme-tailwind .border {\n    border-style: var(--tw-border-style);\n    border-width: 1px;\n  }\n  .readme-tailwind .border-gray-300 {\n    border-color: var(--color-gray-300);\n  }\n  .readme-tailwind .p-6 {\n    padding: calc(var(--spacing) * 6);\n  }\n  .readme-tailwind .text-lg {\n    font-size: var(--text-lg);\n    line-height: var(--tw-leading, var(--text-lg--line-height));\n  }\n  .readme-tailwind .font-bold {\n    --tw-font-weight: var(--font-weight-bold);\n    font-weight: var(--font-weight-bold);\n  }\n  .readme-tailwind .shadow-md {\n    --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n  }\n  .readme-tailwind .dark\\:border-gray-600 {\n    .readme-tailwind &:where(.rm-ReadMe[data-color-mode=dark], .rm-ReadMe[data-color-mode=dark] *) {\n      border-color: var(--color-gray-600);\n    }\n  }\n  .readme-tailwind .dark\\:bg-gray-800 {\n    .readme-tailwind &:where(.rm-ReadMe[data-color-mode=dark], .rm-ReadMe[data-color-mode=dark] *) {\n      background-color: var(--color-gray-800);\n    }\n  }\n}\n@property --tw-border-style {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: solid;\n}\n@property --tw-font-weight {\n  syntax: \"*\";\n  inherits: false;\n}\n@property --tw-shadow {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n  syntax: \"*\";\n  inherits: false;\n}\n@property --tw-shadow-alpha {\n  syntax: \"\u003cpercentage>\";\n  inherits: false;\n  initial-value: 100%;\n}\n@property --tw-inset-shadow {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n  syntax: \"*\";\n  inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n  syntax: \"\u003cpercentage>\";\n  inherits: false;\n  initial-value: 100%;\n}\n@property --tw-ring-color {\n  syntax: \"*\";\n  inherits: false;\n}\n@property --tw-ring-shadow {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n  syntax: \"*\";\n  inherits: false;\n}\n@property --tw-inset-ring-shadow {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n  syntax: \"*\";\n  inherits: false;\n}\n@property --tw-ring-offset-width {\n  syntax: \"\u003clength>\";\n  inherits: false;\n  initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: 0 0 #0000;\n}\n@layer properties {\n  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n    .readme-tailwind *, .readme-tailwind ::before, .readme-tailwind ::after, .readme-tailwind ::backdrop {\n      --tw-border-style: solid;\n      --tw-font-weight: initial;\n      --tw-shadow: 0 0 #0000;\n      --tw-shadow-color: initial;\n      --tw-shadow-alpha: 100%;\n      --tw-inset-shadow: 0 0 #0000;\n      --tw-inset-shadow-color: initial;\n      --tw-inset-shadow-alpha: 100%;\n      --tw-ring-color: initial;\n      --tw-ring-shadow: 0 0 #0000;\n      --tw-inset-ring-color: initial;\n      --tw-inset-ring-shadow: 0 0 #0000;\n      --tw-ring-inset: initial;\n      --tw-ring-offset-width: 0px;\n      --tw-ring-offset-color: #fff;\n      --tw-ring-offset-shadow: 0 0 #0000;\n    }\n  }\n}\n\u003c/style>\u003ch1 class=\"heading heading-1 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"overview\">\u003c/div>\u003cdiv class=\"heading-text\">Overview\u003c/div>\u003ca aria-label=\"Skip link to Overview\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#overview\">\u003c/a>\u003c/h1>\n\u003cdiv class=\"readme-tailwind\">\u003cdiv class=\"flex justify-start\">\u003cdiv class=\"rounded-md p-6 m-4 max-w-lg shadow-md border border-gray-300 dark:bg-gray-800 dark:border-gray-600\">\u003cp class=\"text-lg font-bold\">Prerequisites &amp; limitations\u003c/p>\u003cp>\u003ci class=\"fa-solid fa-check mr-2\">\u003c/i>A Postscript account with Admin access.\u003c/p>\u003cp>\u003ci class=\"fa-solid fa-check mr-2\">\u003c/i>Recurly Commerce merchant admin access to configure the integration.\u003c/p>\u003cp>\u003ci class=\"fa-solid fa-exclamation-triangle mr-4\">\u003c/i>No limitations on subscriber volume; tags and triggers fire in real time.\u003c/p>\u003c/div>\u003c/div>\u003c/div>\n\u003ch1 class=\"heading heading-1 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"definition\">\u003c/div>\u003cdiv class=\"heading-text\">Definition\u003c/div>\u003ca aria-label=\"Skip link to Definition\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#definition\">\u003c/a>\u003c/h1>\n\u003cp>The Postscript integration writes Recurly Commerce-specific subscriber tags and fires custom triggers into Postscript. Use these to build segments and automations that reach your subscribers at key moments—starts, cancellations, failed payments, and upcoming orders.\u003c/p>\n\u003ch1 class=\"heading heading-1 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"key-benefits\">\u003c/div>\u003cdiv class=\"heading-text\">Key benefits\u003c/div>\u003ca aria-label=\"Skip link to Key benefits\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#key-benefits\">\u003c/a>\u003c/h1>\n\u003cul>\n\u003cli>\u003cstrong>Automated segmentation\u003c/strong>: Tag subscribers as “active” or “inactive” in Postscript without manual work.\u003c/li>\n\u003cli>\u003cstrong>Event-driven automations\u003c/strong>: Trigger SMS flows on subscription starts, cancellations, billing failures, or upcoming renewals.\u003c/li>\n\u003cli>\u003cstrong>Seamless setup\u003c/strong>: Configure in minutes via API key—no developer resources needed.\u003c/li>\n\u003c/ul>\n\u003ch1 class=\"heading heading-1 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"key-details\">\u003c/div>\u003cdiv class=\"heading-text\">Key details\u003c/div>\u003ca aria-label=\"Skip link to Key details\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#key-details\">\u003c/a>\u003c/h1>\n\u003ch2 class=\"heading heading-2 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"integrating-postscript-into-recurly-commerce\">\u003c/div>\u003cdiv class=\"heading-text\">Integrating Postscript into Recurly Commerce\u003c/div>\u003ca aria-label=\"Skip link to Integrating Postscript into Recurly Commerce\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#integrating-postscript-into-recurly-commerce\">\u003c/a>\u003c/h2>\n\u003ch3 class=\"heading heading-3 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"create-a-postscript-api-key\">\u003c/div>\u003cdiv class=\"heading-text\">\u003cstrong>Create a Postscript API Key\u003c/strong>\u003c/div>\u003ca aria-label=\"Skip link to [object Object]\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#create-a-postscript-api-key\">\u003c/a>\u003c/h3>\n\u003col>\n\u003cli>In your \u003ca href=\"https://app.postscript.io/dashboard\" target=\"\" title=\"\">Postscript dashboard\u003c/a>, select your \u003cstrong>Shop Name\u003c/strong> → \u003cstrong>API\u003c/strong>.\u003c/li>\n\u003cli>Click \u003cstrong>Create Security Key Pair\u003c/strong>, then confirm with \u003cstrong>Yes\u003c/strong>.\u003c/li>\n\u003cli>Under \u003cstrong>Private Key\u003c/strong>, click \u003cstrong>Show\u003c/strong> and copy your new API key.\u003c/li>\n\u003c/ol>\n\u003cdiv class=\"readme-tailwind\">\u003cspan aria-label=\"Expand image\" class=\"img lightbox closed\" role=\"button\" tabindex=\"0\">\u003cspan class=\"lightbox-inner\">\u003cimg alt=\"\" class=\"img img-align-center border\" height=\"auto\" loading=\"lazy\" src=\"https://files.readme.io/af2c4db2c6e2196e750e668de94e98b90511b90fac76d573b985c384c0180f42-CreateAPIKey.gif\" title=\"\" width=\"80% \"/>\u003c/span>\u003c/span>\u003c/div>\n\u003col start=\"4\">\n\u003cli>\u003cstrong>Paste the API Key\u003c/strong>:  In Recurly Commerce → Settings → Integrations → Postscript, enter the API key and save.\u003c/li>\n\u003c/ol>\n\u003ch2 class=\"heading heading-2 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"after-integration\">\u003c/div>\u003cdiv class=\"heading-text\">After integration\u003c/div>\u003ca aria-label=\"Skip link to After integration\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#after-integration\">\u003c/a>\u003c/h2>\n\u003ch3 class=\"heading heading-3 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"available-recurly-commerce-filters\">\u003c/div>\u003cdiv class=\"heading-text\">Available Recurly Commerce filters\u003c/div>\u003ca aria-label=\"Skip link to Available Recurly Commerce filters\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#available-recurly-commerce-filters\">\u003c/a>\u003c/h3>\n\u003cp>Use these Subscriber Tags in Postscript to segment your audience:\u003c/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"rdmd-table\">\u003cdiv class=\"rdmd-table-inner\">\u003ctable>\u003cthead>\u003ctr>\u003cth>Tag name\u003c/th>\u003cth>Description\u003c/th>\u003c/tr>\u003c/thead>\u003ctbody>\u003ctr>\u003ctd>SUBSCRIBER_IS_PRIVE_ACTIVE_SUBSCRIBER\u003c/td>\u003ctd>Applied if the customer has ≥ 1 active Recurly Commerce subscription.\u003c/td>\u003c/tr>\u003ctr>\u003ctd>SUBSCRIBER_IS_PRIVE_INACTIVE_SUBSCRIBER\u003c/td>\u003ctd>Applied if the customer has no active subscriptions but was a subscriber in the past.\u003c/td>\u003c/tr>\u003c/tbody>\u003c/table>\u003c/div>\u003c/div>\n\u003cblockquote>\n\u003cp>\u003cstrong>Use Case:\u003c/strong> Build a Segment of inactive subscribers for win-back SMS campaigns.\u003c/p>\n\u003c/blockquote>\n\u003cdiv class=\"readme-tailwind\">\u003cspan aria-label=\"Expand image\" class=\"img lightbox closed\" role=\"button\" tabindex=\"0\">\u003cspan class=\"lightbox-inner\">\u003cimg alt=\"\" class=\"img img-align-center border\" height=\"auto\" loading=\"lazy\" src=\"https://files.readme.io/0ecd26943a880d2f938f052c33079d2393ba4fd7a5a0649c39fee18db90406d7-image.png\" title=\"\" width=\"80% \"/>\u003c/span>\u003c/span>\u003c/div>\n\u003ch3 class=\"heading heading-3 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"available-recurly-commerce-triggers\">\u003c/div>\u003cdiv class=\"heading-text\">Available Recurly Commerce triggers\u003c/div>\u003ca aria-label=\"Skip link to Available Recurly Commerce triggers\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#available-recurly-commerce-triggers\">\u003c/a>\u003c/h3>\n\u003cp>Fire these Postscript triggers in real time to power automations:\u003c/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"rdmd-table\">\u003cdiv class=\"rdmd-table-inner\">\u003ctable>\u003cthead>\u003ctr>\u003cth>Trigger Name\u003c/th>\u003cth>Description\u003c/th>\u003c/tr>\u003c/thead>\u003ctbody>\u003ctr>\u003ctd>Recurly Commerce: Subscription Started\u003c/td>\u003ctd>Fires when a subscription is created/purchased by the shopper.\u003c/td>\u003c/tr>\u003ctr>\u003ctd>Recurly Commerce: Subscription Canceled\u003c/td>\u003ctd>Fires when a subscription is canceled in the merchant admin or by the customer in the portal.\u003c/td>\u003c/tr>\u003ctr>\u003ctd>Recurly Commerce: Billing Attempt Failed\u003c/td>\u003ctd>Fires when a billing attempt fails for a renewal order.\u003c/td>\u003c/tr>\u003ctr>\u003ctd>Recurly Commerce: Upcoming Order\u003c/td>\u003ctd>Fires \u003cstrong>3 days\u003c/strong> before the next scheduled renewal order.\u003c/td>\u003c/tr>\u003c/tbody>\u003c/table>\u003c/div>\u003c/div>\n\u003cblockquote>\n\u003cp>\u003cstrong>Use Case:\u003c/strong> Send an SMS reminder for upcoming orders or recovery texts for failed payments.\u003c/p>\n\u003c/blockquote>\n\u003cdiv class=\"readme-tailwind\">\u003cspan aria-label=\"Expand image\" class=\"img lightbox closed\" role=\"button\" tabindex=\"0\">\u003cspan class=\"lightbox-inner\">\u003cimg alt=\"\" class=\"img img-align-center border\" height=\"auto\" loading=\"lazy\" src=\"https://files.readme.io/33394d0cb8a149a0ac9fa349d763e8610bf79cf1866a19cb7e85d5724dca6c11-image.png\" title=\"\" width=\"80% \"/>\u003c/span>\u003c/span>\u003c/div>","css":"/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n  .readme-tailwind, .readme-tailwind :host {\n    --color-gray-300: oklch(87.2% 0.01 258.338);\n    --color-gray-600: oklch(44.6% 0.03 256.802);\n    --color-gray-800: oklch(27.8% 0.033 256.848);\n    --spacing: 0.25rem;\n    --container-lg: 32rem;\n    --text-lg: 1.125rem;\n    --text-lg--line-height: calc(1.75 / 1.125);\n    --font-weight-bold: 700;\n    --radius-md: 0.375rem;\n  }\n}\n@layer utilities {\n  .readme-tailwind .m-4 {\n    margin: calc(var(--spacing) * 4);\n  }\n  .readme-tailwind .mr-2 {\n    margin-right: calc(var(--spacing) * 2);\n  }\n  .readme-tailwind .mr-4 {\n    margin-right: calc(var(--spacing) * 4);\n  }\n  .readme-tailwind .flex {\n    display: flex;\n  }\n  .readme-tailwind .max-w-lg {\n    max-width: var(--container-lg);\n  }\n  .readme-tailwind .justify-start {\n    justify-content: flex-start;\n  }\n  .readme-tailwind .rounded-md {\n    border-radius: var(--radius-md);\n  }\n  .readme-tailwind .border {\n    border-style: var(--tw-border-style);\n    border-width: 1px;\n  }\n  .readme-tailwind .border-gray-300 {\n    border-color: var(--color-gray-300);\n  }\n  .readme-tailwind .p-6 {\n    padding: calc(var(--spacing) * 6);\n  }\n  .readme-tailwind .text-lg {\n    font-size: var(--text-lg);\n    line-height: var(--tw-leading, var(--text-lg--line-height));\n  }\n  .readme-tailwind .font-bold {\n    --tw-font-weight: var(--font-weight-bold);\n    font-weight: var(--font-weight-bold);\n  }\n  .readme-tailwind .shadow-md {\n    --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n  }\n  .readme-tailwind .dark\\:border-gray-600 {\n    .readme-tailwind &:where(.rm-ReadMe[data-color-mode=dark], .rm-ReadMe[data-color-mode=dark] *) {\n      border-color: var(--color-gray-600);\n    }\n  }\n  .readme-tailwind .dark\\:bg-gray-800 {\n    .readme-tailwind &:where(.rm-ReadMe[data-color-mode=dark], .rm-ReadMe[data-color-mode=dark] *) {\n      background-color: var(--color-gray-800);\n    }\n  }\n}\n@property --tw-border-style {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: solid;\n}\n@property --tw-font-weight {\n  syntax: \"*\";\n  inherits: false;\n}\n@property --tw-shadow {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n  syntax: \"*\";\n  inherits: false;\n}\n@property --tw-shadow-alpha {\n  syntax: \"\u003cpercentage>\";\n  inherits: false;\n  initial-value: 100%;\n}\n@property --tw-inset-shadow {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n  syntax: \"*\";\n  inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n  syntax: \"\u003cpercentage>\";\n  inherits: false;\n  initial-value: 100%;\n}\n@property --tw-ring-color {\n  syntax: \"*\";\n  inherits: false;\n}\n@property --tw-ring-shadow {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n  syntax: \"*\";\n  inherits: false;\n}\n@property --tw-inset-ring-shadow {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n  syntax: \"*\";\n  inherits: false;\n}\n@property --tw-ring-offset-width {\n  syntax: \"\u003clength>\";\n  inherits: false;\n  initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n  syntax: \"*\";\n  inherits: false;\n  initial-value: 0 0 #0000;\n}\n@layer properties {\n  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n    .readme-tailwind *, .readme-tailwind ::before, .readme-tailwind ::after, .readme-tailwind ::backdrop {\n      --tw-border-style: solid;\n      --tw-font-weight: initial;\n      --tw-shadow: 0 0 #0000;\n      --tw-shadow-color: initial;\n      --tw-shadow-alpha: 100%;\n      --tw-inset-shadow: 0 0 #0000;\n      --tw-inset-shadow-color: initial;\n      --tw-inset-shadow-alpha: 100%;\n      --tw-ring-color: initial;\n      --tw-ring-shadow: 0 0 #0000;\n      --tw-inset-ring-color: initial;\n      --tw-inset-ring-shadow: 0 0 #0000;\n      --tw-ring-inset: initial;\n      --tw-ring-offset-width: 0px;\n      --tw-ring-offset-color: #fff;\n      --tw-ring-offset-shadow: 0 0 #0000;\n    }\n  }\n}\n"},"opts":{"hardBreaks":true,"alwaysThrow":false,"compatibilityMode":false,"copyButtons":true,"correctnewlines":false,"markdownOptions":{"fences":true,"commonmark":true,"gfm":true,"ruleSpaces":false,"listItemIndent":"1","spacedTable":true,"paddedTable":true},"normalize":true,"lazyImages":true,"reusableContent":{"tags":{},"disabled":false,"serialize":true,"wrap":true},"safeMode":false,"settings":{"position":true},"theme":"light","customBlocks":{"PrerequisitesAndLimitations":"export const PrerequisitesLimitations = ({ header }) => {\n  return (\n    \u003cdiv className=\"flex justify-center\">\n      \u003cdiv className=\"rounded-md p-6 m-4 max-w-lg shadow-md border border-gray-300 dark:bg-gray-800 dark:border-gray-600\">\n        \u003cp className=\"text-lg font-bold\">{header}\u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-check mr-2\" />\n          Node.js &gt;= 14\n        \u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-check mr-2\" />\n          ReadMe CLI installed\n        \u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-exclamation-triangle mr-4\" />\n          Not supported on IE11\n        \u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-exclamation-triangle mr-4\" />\n          Requires internet connection\n        \u003c/p>\n      \u003c/div>\n    \u003c/div>\n  );\n};\n\n\u003cPrerequisitesLimitations header=\"Prerequisites & limitations\" />"},"componentTypes":{"PrerequisitesAndLimitations":"component"},"resourceID":"/branches/1.0/guides/postcript-integration","resourceType":"page","components":{"PrerequisitesAndLimitations":"export const PrerequisitesLimitations = ({ header }) => {\n  return (\n    \u003cdiv className=\"flex justify-center\">\n      \u003cdiv className=\"rounded-md p-6 m-4 max-w-lg shadow-md border border-gray-300 dark:bg-gray-800 dark:border-gray-600\">\n        \u003cp className=\"text-lg font-bold\">{header}\u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-check mr-2\" />\n          Node.js &gt;= 14\n        \u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-check mr-2\" />\n          ReadMe CLI installed\n        \u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-exclamation-triangle mr-4\" />\n          Not supported on IE11\n        \u003c/p>\n        \u003cp>\n          \u003ci className=\"fa-solid fa-exclamation-triangle mr-4\" />\n          Requires internet connection\n        \u003c/p>\n      \u003c/div>\n    \u003c/div>\n  );\n};\n\n\u003cPrerequisitesLimitations header=\"Prerequisites & limitations\" />"},"baseUrl":"/recurly-commerce","terms":[{"term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!","_id":"68825cc7a7cffa08ce74f92d"}],"variables":{"user":{},"defaults":[{"file":"commerce-api-documentation.json","name":"bearer","source":"security","type":"http","_id":"6abbd77ef19c7c43cbab59b9"}]}}},"sidebar":[{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"overview-recurly-commerce","title":"Overview: Recurly Commerce","type":"basic","updatedAt":"2026-09-22T16:13:05.000Z","pages":[],"category":"/branches/1.0/categories/guides/GETTING%20STARTED","uri":"/branches/1.0/guides/overview-recurly-commerce","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"getting-started-rc","title":"Getting started in Recurly Commerce","type":"basic","updatedAt":"2026-09-22T16:13:05.000Z","pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"installing-and-onboarding-to-recurly-commerce","title":"Installing and onboarding to Recurly Commerce","type":"basic","updatedAt":"2026-09-22T16:13:05.000Z","pages":[],"category":"/branches/1.0/categories/guides/GETTING%20STARTED","uri":"/branches/1.0/guides/installing-and-onboarding-to-recurly-commerce","parent":"/branches/1.0/guides/getting-started-rc"},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"migrating-to-recurly-commerce","title":"Migrating to Recurly Commerce","type":"basic","updatedAt":"2026-09-22T16:13:05.000Z","pages":[],"category":"/branches/1.0/categories/guides/GETTING%20STARTED","uri":"/branches/1.0/guides/migrating-to-recurly-commerce","parent":"/branches/1.0/guides/getting-started-rc"}],"category":"/branches/1.0/categories/guides/GETTING%20STARTED","uri":"/branches/1.0/guides/getting-started-rc","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"recurly-commerce-changelog","title":"Recurly Commerce Changelog","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/GETTING%20STARTED","uri":"/branches/1.0/guides/recurly-commerce-changelog","parent":null}],"title":"GETTING STARTED","uri":"/branches/1.0/categories/guides/GETTING%20STARTED"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"subscription-management","title":"Overview: Subscription management","type":"basic","updatedAt":"2026-09-22T16:20:13.000Z","pages":[],"category":"/branches/1.0/categories/guides/SUBSCRIPTION%20MANAGEMENT","uri":"/branches/1.0/guides/subscription-management","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"create-a-subscription-plan","title":"Create a subscription plan","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/SUBSCRIPTION%20MANAGEMENT","uri":"/branches/1.0/guides/create-a-subscription-plan","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"edit-a-subscription-plan","title":"Edit a subscription plan","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/SUBSCRIPTION%20MANAGEMENT","uri":"/branches/1.0/guides/edit-a-subscription-plan","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"edit-a-subscription","title":"Edit a customer subscription","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/SUBSCRIPTION%20MANAGEMENT","uri":"/branches/1.0/guides/edit-a-subscription","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"subscriber-activity","title":"Subscriber activity","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/SUBSCRIPTION%20MANAGEMENT","uri":"/branches/1.0/guides/subscriber-activity","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"link_external":false,"renderable":{"status":true},"slug":"subscription-creation-and-combining","title":"Subscription order logic ","type":"basic","updatedAt":"2026-09-22T16:20:45.000Z","pages":[],"category":"/branches/1.0/categories/guides/SUBSCRIPTION%20MANAGEMENT","uri":"/branches/1.0/guides/subscription-creation-and-combining","parent":null}],"title":"SUBSCRIPTION MANAGEMENT","uri":"/branches/1.0/categories/guides/SUBSCRIPTION%20MANAGEMENT"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"recurly-commerce-revenue-recovery","title":"Overview: Revenue recovery","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/REVENUE%20RECOVERY","uri":"/branches/1.0/guides/recurly-commerce-revenue-recovery","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"intelligent-retries","title":"Payment Retries","type":"basic","updatedAt":"2026-09-21T21:53:55.000Z","pages":[],"category":"/branches/1.0/categories/guides/REVENUE%20RECOVERY","uri":"/branches/1.0/guides/intelligent-retries","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"dunning-management-in-recurly-commerce","title":"Dunning Campaign","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/REVENUE%20RECOVERY","uri":"/branches/1.0/guides/dunning-management-in-recurly-commerce","parent":null}],"title":"REVENUE RECOVERY","uri":"/branches/1.0/categories/guides/REVENUE%20RECOVERY"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"storefront","title":"Overview: Storefront","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/STOREFRONT","uri":"/branches/1.0/guides/storefront","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"storefront-setup","title":"Storefront setup","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"storefront-with-recurly-commerce-theme-app-embeds-and-blocks","title":"Storefront with Recurly Commerce theme app embeds and blocks","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/STOREFRONT","uri":"/branches/1.0/guides/storefront-with-recurly-commerce-theme-app-embeds-and-blocks","parent":"/branches/1.0/guides/storefront-setup"}],"category":"/branches/1.0/categories/guides/STOREFRONT","uri":"/branches/1.0/guides/storefront-setup","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"widget-api","title":"Widget API","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/STOREFRONT","uri":"/branches/1.0/guides/widget-api","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"storefront-management","title":"Storefront management","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/STOREFRONT","uri":"/branches/1.0/guides/storefront-management","parent":null}],"title":"STOREFRONT","uri":"/branches/1.0/categories/guides/STOREFRONT"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"customer-portal","title":"Overview: Customer portal","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/CUSTOMER%20PORTAL","uri":"/branches/1.0/guides/customer-portal","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"customer-portal-management","title":"Customer portal management","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/CUSTOMER%20PORTAL","uri":"/branches/1.0/guides/customer-portal-management","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"cancellation-and-churn-prevention-flows","title":"Cancellation and churn prevention flows","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/CUSTOMER%20PORTAL","uri":"/branches/1.0/guides/cancellation-and-churn-prevention-flows","parent":null}],"title":"CUSTOMER PORTAL","uri":"/branches/1.0/categories/guides/CUSTOMER%20PORTAL"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"notifications","title":"Overview: Notifications","type":"basic","updatedAt":"2026-09-21T21:53:55.000Z","pages":[],"category":"/branches/1.0/categories/guides/NOTIFICATIONS","uri":"/branches/1.0/guides/notifications","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"transactional-emails","title":"Transactional emails","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/NOTIFICATIONS","uri":"/branches/1.0/guides/transactional-emails","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"transactional-sms","title":"Transactional SMS","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/NOTIFICATIONS","uri":"/branches/1.0/guides/transactional-sms","parent":null}],"title":"NOTIFICATIONS","uri":"/branches/1.0/categories/guides/NOTIFICATIONS"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"shopify-settings","title":"Overview: Shopify settings","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/SHOPIFY","uri":"/branches/1.0/guides/shopify-settings","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"fulfill-a-subscription-in-shopify","title":"Fulfill a subscription in Shopify","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/SHOPIFY","uri":"/branches/1.0/guides/fulfill-a-subscription-in-shopify","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"refund-a-subscription-in-shopify","title":"Refund a subscription in Shopify","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/SHOPIFY","uri":"/branches/1.0/guides/refund-a-subscription-in-shopify","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"discount-codes","title":"Discount codes","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/SHOPIFY","uri":"/branches/1.0/guides/discount-codes","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"manage-shipping-profiles","title":"Manage shipping profiles","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/SHOPIFY","uri":"/branches/1.0/guides/manage-shipping-profiles","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"order-tagging","title":"Order tagging","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/SHOPIFY","uri":"/branches/1.0/guides/order-tagging","parent":null}],"title":"SHOPIFY","uri":"/branches/1.0/categories/guides/SHOPIFY"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"recurly-commerce-analytics","title":"Overview: Recurly Commerce analytics","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/ANALYTICS","uri":"/branches/1.0/guides/recurly-commerce-analytics","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"general-analytics","title":"General analytics","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/ANALYTICS","uri":"/branches/1.0/guides/general-analytics","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"subscription-analytics","title":"Subscription analytics","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/ANALYTICS","uri":"/branches/1.0/guides/subscription-analytics","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"subscriber-analytics","title":"Subscriber analytics","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/ANALYTICS","uri":"/branches/1.0/guides/subscriber-analytics","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"cohort-analysis-analytics","title":"Cohort analysis analytics","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/ANALYTICS","uri":"/branches/1.0/guides/cohort-analysis-analytics","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"product-breakdown-analytics","title":"Product breakdown analytics","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/ANALYTICS","uri":"/branches/1.0/guides/product-breakdown-analytics","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"forecasting-analytics","title":"Forecasting analytics","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/ANALYTICS","uri":"/branches/1.0/guides/forecasting-analytics","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"advanced-analytics","title":"Advanced analytics","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/ANALYTICS","uri":"/branches/1.0/guides/advanced-analytics","parent":null}],"title":"ANALYTICS","uri":"/branches/1.0/categories/guides/ANALYTICS"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"recurly-commerce-integrations","title":"Overview: Integrations","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/PARTNER%20INTEGRATIONS","uri":"/branches/1.0/guides/recurly-commerce-integrations","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"email-and-sms-integration","title":"Email and SMS integrations","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"klaviyo-integration","title":"Klaviyo integration","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/PARTNER%20INTEGRATIONS","uri":"/branches/1.0/guides/klaviyo-integration","parent":"/branches/1.0/guides/email-and-sms-integration"},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"postcript-integration","title":"Postscript Integration","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/PARTNER%20INTEGRATIONS","uri":"/branches/1.0/guides/postcript-integration","parent":"/branches/1.0/guides/email-and-sms-integration"},{"deprecated":false,"hidden":false,"isBodyEmpty":true,"link_url":"https://docs.attentive.com/pages/authentication/","link_external":true,"renderable":{"status":true},"slug":"attentive-integration","title":"Attentive integration","type":"link","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/PARTNER%20INTEGRATIONS","uri":"/branches/1.0/guides/attentive-integration","parent":"/branches/1.0/guides/email-and-sms-integration"}],"category":"/branches/1.0/categories/guides/PARTNER%20INTEGRATIONS","uri":"/branches/1.0/guides/email-and-sms-integration","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"gorgias-integration","title":"Gorgias integration","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/PARTNER%20INTEGRATIONS","uri":"/branches/1.0/guides/gorgias-integration","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"fivetran-integration","title":"Fivetran integration","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/PARTNER%20INTEGRATIONS","uri":"/branches/1.0/guides/fivetran-integration","parent":null}],"title":"PARTNER INTEGRATIONS","uri":"/branches/1.0/categories/guides/PARTNER%20INTEGRATIONS"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"advanced-features","title":"Overview: Advanced features","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/ADVANCED%20FEATURES","uri":"/branches/1.0/guides/advanced-features","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"bundles-in-recurly-commerce","title":"Bundles","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/ADVANCED%20FEATURES","uri":"/branches/1.0/guides/bundles-in-recurly-commerce","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"bulk-updater-in-recurly-commerce","title":"Bulk updater","type":"basic","updatedAt":"2026-09-21T17:53:46.000Z","pages":[],"category":"/branches/1.0/categories/guides/ADVANCED%20FEATURES","uri":"/branches/1.0/guides/bulk-updater-in-recurly-commerce","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"gift-subscriptions-in-recurly-commerce","title":"Gift subscriptions","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/ADVANCED%20FEATURES","uri":"/branches/1.0/guides/gift-subscriptions-in-recurly-commerce","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"automations","title":"Automations","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/ADVANCED%20FEATURES","uri":"/branches/1.0/guides/automations","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"link_external":false,"renderable":{"status":true},"slug":"compass-assistant-in-commerce","title":"Compass AI Assistant","type":"basic","updatedAt":"2026-09-22T16:20:13.000Z","pages":[],"category":"/branches/1.0/categories/guides/ADVANCED%20FEATURES","uri":"/branches/1.0/guides/compass-assistant-in-commerce","parent":null}],"title":"ADVANCED FEATURES","uri":"/branches/1.0/categories/guides/ADVANCED%20FEATURES"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"settings","title":"Overview: Settings","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/SETTINGS","uri":"/branches/1.0/guides/settings","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"change-your-recurly-commerce-plan","title":"Change your Recurly Commerce plan","type":"basic","updatedAt":"2026-09-22T15:14:34.000Z","pages":[],"category":"/branches/1.0/categories/guides/SETTINGS","uri":"/branches/1.0/guides/change-your-recurly-commerce-plan","parent":null}],"title":"SETTINGS","uri":"/branches/1.0/categories/guides/SETTINGS"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"webhooks","title":"Webhooks","type":"basic","updatedAt":"2026-09-21T21:53:55.000Z","pages":[],"category":"/branches/1.0/categories/guides/INTEGRATIONS","uri":"/branches/1.0/guides/webhooks","parent":null}],"title":"INTEGRATIONS","uri":"/branches/1.0/categories/guides/INTEGRATIONS"}],"aiConfig":{"enabled":false,"settings":{"errors":null,"styleguide":null,"warnings":null}},"config":{"algoliaIndex":"readme_search_v2","amplitude":{"apiKey":"8b550cf334a130e3d6ea41a88b894d8","enabled":"true","sessionReplay":{"enabled":"true","sampleRate":"0.1"}},"api":{"upload":{"fileSizeLimit":10485760,"fileSizeLimitFormatted":"10MB"}},"asset_url":"https://cdn.readme.io","dashDomain":"dash.readme.com","domain":"readme.io","domainFull":"https://dash.readme.com","encryptedLocalStorageKey":"ekfls-2025-03-27","fullstory":{"enabled":true,"orgId":"FSV9A"},"git":{"preview":"https://githug-prod.gitto.rdme.io","sync":{"bitbucket":{"installationLink":"https://developer.atlassian.com/console/install/310151e6-ca1a-4a44-9af6-1b523fea0561?signature=AYABeMn9vqFkrg%2F1DrJAQxSyVf4AAAADAAdhd3Mta21zAEthcm46YXdzOmttczp1cy13ZXN0LTI6NzA5NTg3ODM1MjQzOmtleS83MDVlZDY3MC1mNTdjLTQxYjUtOWY5Yi1lM2YyZGNjMTQ2ZTcAuAECAQB4IOp8r3eKNYw8z2v%2FEq3%2FfvrZguoGsXpNSaDveR%2FF%2Fo0BHUxIjSWx71zNK2RycuMYSgAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDOJgARbqndU9YM%2FRdQIBEIA7unpCah%2BIu53NA72LkkCDhNHOv%2BgRD7agXAO3jXqw0%2FAcBOB0%2F5LmpzB5f6B1HpkmsAN2i2SbsFL30nkAB2F3cy1rbXMAS2Fybjphd3M6a21zOmV1LXdlc3QtMTo3MDk1ODc4MzUyNDM6a2V5LzQ2MzBjZTZiLTAwYzMtNGRlMi04NzdiLTYyN2UyMDYwZTVjYwC4AQICAHijmwVTMt6Oj3F%2B0%2B0cVrojrS8yZ9ktpdfDxqPMSIkvHAGT%2FMTvCxC3XwnwlulZe975AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMMUUe9d1YmFOo373TAgEQgDuJo7TayM6NL19Sj9RPooRrl8rYxwKgvu9gkLNc3GuyyovWI1xA2qTr0LQzMRsf3imrAWsywzPcsjnvuAAHYXdzLWttcwBLYXJuOmF3czprbXM6dXMtZWFzdC0xOjcwOTU4NzgzNTI0MzprZXkvNmMxMjBiYTAtNGNkNS00OTg1LWI4MmUtNDBhMDQ5NTJjYzU3ALgBAgIAeLKa7Dfn9BgbXaQmJGrkKztjV4vrreTkqr7wGwhqIYs5AZR28Sibv2eBxSIg2MydtvEAAAB%2BMHwGCSqGSIb3DQEHBqBvMG0CAQAwaAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAzzWhThsIgJwrr%2FY2ECARCAOxoaW9pob21lweyAfrIm6Fw7gd8D%2B%2F8LHk4rl3jjULDM35%2FVPuqBrqKunYZSVCCGNGB3RqpQJr%2FasASiAgAAAAAMAAAQAAAAAAAAAAAAAAAAAEokowLKsF1tMABEq%2BKNyJP%2F%2F%2F%2F%2FAAAAAQAAAAAAAAAAAAAAAQAAADJLzRcp6MkqKR43PUjOiRxxbxXYhLc6vFXEutK3%2BQ71yuPq4dC8pAHruOVQpvVcUSe8dptV8c7wR8BTJjv%2F%2FNe8r0g%3D&product=bitbucket"}}},"hubspot":{"portalId":"9401557"},"metrics":{"billingCronEnabled":"true","dashUrl":"https://m.readme.io","defaultUrl":"https://m.readme.io","exportMaxRetries":12,"wsUrl":"wss://m.readme.io"},"micro":{"baseUrl":"https://micro-beta.readme.com"},"novuNotification":{"appId":"ob_MiAPOPqgP","showUnreleasedWorkflows":false},"proxyUrl":"https://try.readme.io","readmeRecaptchaSiteKey":"6LesVBYpAAAAAESOCHOyo2kF9SZXPVb54Nwf3i2x","releaseVersion":"5.926.0","reservedWords":{"tools":["execute-request","get-endpoint","get-server-variables","list-endpoints","list-specs","search-endpoints","search","fetch"]},"sentry":{"dsn":"https://3bbe57a973254129bcb93e47dc0cc46f@o343074.ingest.sentry.io/2052166","enabled":true},"shMigration":{"promoVideo":"","forceWaitlist":false,"migrationPreview":false},"sslBaseDomain":"readmessl.com","sslGenerationService":"ssl.readmessl.com","superHub":{"newProjectsEnabled":true},"tiptapCloud":{"appId":"8mzorjl9","url":"wss://8mzorjl9.collab.tiptap.cloud"},"wootric":{"accountToken":"NPS-122b75a4","enabled":true}},"context":{"labs":{},"user":{"isAuthenticated":false,"notifications":{}},"terms":[{"_id":"68825cc7a7cffa08ce74f92d","term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!"}],"variables":{"user":{},"defaults":[{"file":"commerce-api-documentation.json","name":"bearer","source":"security","type":"http","_id":"6abbd77ef19c7c43cbab59b9"}]},"navigation":[],"project":{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":true,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":true,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":true,"superHubBranchReviewActions":false},"versions":[{"__v":9,"_id":"6865c648c6b75f0030446866","createdAt":"2025-07-02T23:52:40.369Z","updatedAt":"2026-10-14T16:53:45.328Z","project":"6865c648c6b75f0030446843","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2025-07-02T23:52:40.338Z","pdfStatus":"","apiRegistries":[{"filename":"commerce-api-documentation.json","uuid":"7atcmv8cn3rm"},{"filename":"prive-widget-documentation.json","uuid":"4nl9ge0momyj4x1"},{"filename":"prive-api-documentation.json","uuid":"e1ttaq3nmcb337q9"}],"source":"readme"}],"stable":{"version":"1.0"},"_id":"6865c648c6b75f0030446843","accessRules":{"branch_approve":{"admin":true,"editor":false},"branch_merge":{"admin":true,"editor":false},"version_edit":{"admin":true,"editor":false}},"ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true}},"appearance":{"allowApiExplorerJsonEditor":false,"borderRadius":"default","changelog":{"layoutExpanded":false,"showAuthor":false,"showExactDate":false},"referenceFlatSections":"disabled","referenceLayout":"row","referenceParamFont":"default","referenceParamInputs":"all","referenceSimpleMode":true,"methodBadgeStyle":"classic","oneOfLayout":"dropdown","showCredentials":true,"showExactDate":false,"showMethodInSidebar":true,"link_logo_to_url":false,"theme":"solid","theme_preset":"default","colorScheme":"system","overlay":"triangles","landing":true,"sticky":false,"hide_logo":false,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":true,"showMetricsInReference":true,"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":"","markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"links"},"colors":{"highlight":"","main":"#0d0d0b","main_dark":"","main_alt":"","header_text":"","body_highlight":"#0d0d0b","body_highlight_dark":"","custom_login_link_color":"","page_background":"","page_background_dark":"","background_tint":"","background_tint_dark":"","border":"","border_dark":"","breadcrumb":"","breadcrumb_dark":"","header":"","header_dark":"","askai_button_bg":"","askai_button_bg_dark":"","sidebar_border":"","sidebar_border_dark":""},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","code":"","spacing":null,"typekit":false,"tk_key":"","tk_headline":"","tk_body":""},"header":{"img":[],"img_size":"auto","img_pos":"tl","linkStyle":"tabs","style":"solid","subnav":{"alignment":"start"}},"body":{"style":"none"},"promos":[{"_id":"6865c648c6b75f0030446844","title":"","text":"","extras":{"type":"none","buttonPrimary":"","buttonSecondary":"none"}}],"layout":{"full_width":false,"style":"classic","sticky_header":null},"logo":["https://files.readme.io/84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg","84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg",null,null,"#ffd706",null,"6a0caab85a19dc4e20cd9637"],"loginLogo":[],"logo_white":[],"logo_white_use":false,"logo_large":false,"logo_size":"default","favicon":["https://files.readme.io/f5415736f6306f3aff84928311144e1e776487dbb4c3dffa4129f3cc583c3f7f-Recurly-Profile-Image.png","f5415736f6306f3aff84928311144e1e776487dbb4c3dffa4129f3cc583c3f7f-Recurly-Profile-Image.png",300,300,"#fbd404",null,"68754ea392d1d6374f1ee479"],"tocVariant":"line","stylesheet":"","stylesheet_hub2":"@import url('https://fonts.googleapis.com/css2?family=Figtree:ital,wght@0,300..900;1,300..900&display=swap');\n\n@font-face {\n    font-family: \"Polar\";\n    font-weight: 400;\n    font-style: normal;\n    src:\n        url(\"https://recurly.com/img2/fonts/FTPolar-Regular.woff2\") format(\"woff2\"),\n        url(\"https://recurly.com/img2/fonts/FTPolar-Regular.woff\") format(\"woff\");\n    }\n\n    @font-face {\n    font-family: \"Polar\";\n    font-weight: 700;\n    font-style: normal;\n    src:\n    url(\"/img2/fonts/FTPolar-Bold.woff2\") format(\"woff2\"),\n    url(\"/img2/fonts/FTPolar-Bold.woff\") format(\"woff\");\n    }\n\n@font-face {\n    font-family: \"Gruffy\";\n    font-weight: 400;\n    font-style: normal;\n    src:\n    url(\"https://recurly.com/img2/fonts/F37Gruffy-Regular.woff2\") format(\"woff2\"),\n    url(\"https://recurly.com/img2/fonts/F37Gruffy-Regular.woff\") format(\"woff\");\n    }\n\n@font-face {\n    font-family: \"Gruffy\";\n    font-weight: 700;\n    font-style: normal;\n    src:\n    url(\"/img2/fonts/F37Gruffy-Bold.woff2\") format(\"woff2\"),\n    url(\"/img2/fonts/F37Gruffy-Bold.woff\") format(\"woff\");\n}\n\n.rm-TryIt {display:none !important}\n\n.Reference-section {\n    margin-bottom: 1em;\n    display: none;\n}\nbody {\n    margin: 0;\n    font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n}\n\n.ThemeContext_line .rm-Header {\n\t    --Header-background: #0D0D0B;\n}\n\n.rm-Header-top-link.Button {\n\tcolor: #FCFBF7;\n}\n\n#enterprise .SuperHub-hub-wrapper3t_-5gSx4Sax {\n\tborder-radius: 0;\n}\n\n\n#enterprise .rm-Header-bottom-link {\n    display: none;\n} \n\n#enterprise .rm-SearchToggle {\n  width: 320px;\t\n\theight: 48px;\n}\n\n#enterprise .Header-search_featherYsmQBn55F3d9 {\n    position: absolute;\n    top: 420px;\n    left: 50%;\n    transform: translateX(-50%);\n}\n\n.new-btn-group {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 20px;\n    align-items: center;\n}\n\n.new-btn-icon {\n      margin-right: 4px !important;\n  }\n\n.new-btn-text {\n    position: relative;\n    font-size: 16px;\n    line-height: 20px;\n    font-weight: 600;\n}\n\n.new-btn {\n    position: relative;\n    border-radius: 8px;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    justify-content: center;\n    gap: 4px;\n    color: #0d0d0b;\n    min-width: 112px;\n    min-height: 42px;\n    padding: 10px 16px;\n    box-sizing: border-box;\n    cursor: pointer;\n    outline: none !important;\n    transition: background-color 500ms ease-in-out;\n  \ttext-decoration: none;\n\t\twidth: 100%;\n\t\tmargin: 24px;\n}\n\n.new-btn-primary {\n    background: linear-gradient(102.03deg, #fff688, #ffd706);\n}\n\n.new-btn-primary:hover {\n    background: linear-gradient(90.39deg, #ffec5f, #ffc10b);\n}\n\n.new-btn-primary:active,\n.new-btn-primary:focus {\n    box-shadow: 0px 0px 0px 2px #fff, 0px 0px 0px 4px #51a1c9;\n}\n\n.globallp-header-section {\n    background: #0D0D0B;\n    padding: 48px 0 150px;\n}\n\n.globallp-header-content {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    max-width: 700px;\n    margin: 0 auto;\n    padding: 0 32px;\n    display: flex;\n    justify-content: center;\n    flex-direction: column;\n    align-items: center;\n}\n\n.globallp-subheading {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    color: #FFD706;\n    font-size: 16px;\n    margin-bottom: 12px;\n    text-align: center;\n}\n\n.globallp-heading {\n    color: #fff;\n    font-size: 48px;\n    font-family: \"Gruffy\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n    font-weight: 700;\n    margin-bottom: 24px;\n    text-align: center;\n}\n\n.globallp-supporting-text {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    color: #F9F7EB;\n    font-size: 20px;\n    margin-bottom: 32px;\n    text-align: center;\n}\n\n.search-bar {\n    max-width: 320px;\n    margin: 0 auto 64px auto;\n    padding: 12px 14px;\n    background: #fff;\n    box-shadow: 0 1px 2px rgba(13, 13, 11, 0.05);\n    border-radius: 8px;\n    border: 1px solid #D1CFC4;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n.search-icon {\n    width: 20px;\n    height: 20px;\n    border: 1.67px solid #807D75;\n    border-radius: 50%;\n}\n\n.search-text {\n    color: #807D75;\n    font-size: 16px;\n}\n\n.globallp-card-container {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    max-width: 1200px;\n    margin: 96px auto;\n}\n\n.globallp-cards-section {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    grid-template-rows: repeat(2, 1fr);\n    gap: 96px 32px;\n    justify-items: center;\n    align-items: center;\n    background: #fff;\n    margin: 0 12px;\n}\n\n.globallp-cards-section > a {\n    color: inherit;\n    text-decoration: none;\n}\n\n.globallp-card {\n    background: #fff;\n    border-radius: 16px;\n    box-shadow: 0 2px 2px -1px rgba(13, 13, 11, 0.04);\n    outline: 1px solid rgba(13, 13, 11, 0.08);\n    max-width: 600px;\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n    align-items: center;\n    gap: 24px;\n    height: auto;\n    overflow: hidden;\n    text-decoration: none;\n}\n\n.globallp-card:hover {\n    box-shadow: 0px 12px 16px -4px rgba(13, 13, 11, 0.08), 0px 4px 6px -2px rgba(13, 13, 11, 0.03), 0px 2px 2px -1px rgba(13, 13, 11, 0.04) !important;\n    \n}\n\n.globallp-card:hover .new-btn-primary {\n    background: linear-gradient(90.39deg, #ffec5f, #ffc10b);\n}\n\n.globallp-card-header {\n    padding: 32px;\n    text-align: center;\n}\n\n.globallp-card-icon {\n    width: 56px;\n    height: 56px;\n    background: #FFD706;\n    border-radius: 50%;\n    margin: 0 auto 24px auto;\n    border: 2px solid #fff;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.globallp-card-image {\n    width: auto;\n    height: 32px;\n    margin-bottom: 8px;\n}\n\n.globallp-card-desc-title {\n    color: #0D0D0B;\n    font-size: 18px;\n    line-height: 28px;\n    margin-bottom: 4px;\n    font-weight: 600;\n}\n\n.globallp-card-desc-text {\n    color: #46443F;\n    font-size: 16px;\n    line-height: 24px;\n}\n\n.globallp-card-footer {\n    width: 100%;\n    background: #F2F1EA;\n    border-top: 1px solid #E2DFD0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.globallp-card-button {\n    background: linear-gradient(135deg, #FFF688 0%, #FFD706 100%);\n    border-radius: 8px;\n    padding: 12px 18px;\n    margin: 16px;\n    color: #0D0D0B;\n    font-size: 16px;\n    font-family: inherit;\n    font-weight: 400;\n    border: none;\n    cursor: pointer;\n}\n\n.newsletter-section {\n    background: #F2F1EA;\n    padding: 64px 32px;\n    text-align: center;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 32px;\n}\n\n.newsletter-header {\n    margin-bottom: 32px;\n}\n\n.newsletter-header h2 {\n    color: #0D0D0B;\n    font-size: 36px;\n    line-height: 42px;\n    margin-bottom: 16px;\n}\n\n.newsletter-header p {\n    color: #0D0D0B;\n    font-size: 20px;\n}\n\n.newsletter-footer {\n    width: 100%;\n}\n\n.globallp-footer {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    background: #0D0D0B;\n    color: #fff;\n    padding: 48px 0;\n    text-align: center;\n}\n\n.globallp-footer-content {\n    max-width: 1200px;\n    margin: 0 auto;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n}\n\n.globallp-footer-content img {\n    width: auto;\n    height: 16px;\n    margin: 0;\n}\n\n.globallp-footer-content p {\n    margin: 0;\n    font-size: 14px;\n    color: #FCFBF7;\n}\n\n.globallp-footer-content a {\n    color: #FCFBF7;\n    text-decoration: none;\n    margin-right: 20px;\n}\n\n.globallp-footer-content a:hover {\n    text-decoration: underline;\n}\n\n@media (max-width: 1024px) {\n    .globallp-header-content {\n        max-width: 100%;\n    }\n    .globallp-cards-section {\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        gap: 24px;\n    }\n\n    .globallp-card {\n        width: 90%;\n        margin-bottom: 32px;\n    }\n}\n\n/* ============================================================\n   RECURLY DOCS — README NATIVE CSS\n   ============================================================\n   Single consolidated stylesheet for ReadMe's global CSS settings.\n   Targets ReadMe's own native classes across all page types and\n   UI surfaces.\n\n   DEPENDENCY\n   ─────────────────────────────────────────────────────────────\n   Requires recurly-readme-theme-v8.1.css to be present in the same\n   global theme. V8.1 provides the full --recurly-* color token set.\n   This file adds the three tokens V8.0 didn't yet prefix, then\n   uses --recurly-* throughout for consistency.\n\n   PARTS\n   ─────────────────────────────────────────────────────────────\n   1 — General Articles    Shared chrome: prose links, AI dropdown,\n                           copy button, pagination, date line,\n                           page thumbs, dividers. Fires on both\n                           Guide and API Reference.\n\n   2 — Guide pages         h1 yellow border (guide-only), excerpt\n                           subtitle, and right-hand TOC sidebar.\n\n   3 — API Reference pages HTTP method badges, endpoint URL,\n                           section headers, parameter rows,\n                           response accordion, status chits,\n                           and the full Playground panel.\n\n   4 — Sidebar navigation  Shared sidebar chrome: container,\n                           section headings, links, subpages,\n                           expand chevron, external icon,\n                           section separators.\n\n   5 — API Reference sidebar  ID alias, QuickNav button, inline\n                           method pills, page icon wrappers,\n                           user avatar.\n\n   6 — QuickNav modal      The \"Jump To\" search overlay.\n\n   7 — Changelog           Full brand styling for the changelog.\n\n   SELECTOR STABILITY NOTE\n   ─────────────────────────────────────────────────────────────\n   ReadMe exposes two tiers of class names:\n\n     Stable  — prefixed with rm- (rm-Playground, rm-TryIt,\n               rm-LanguageButton, rm-APIMethod, etc.).\n               Primary selectors throughout.\n\n     Hashed  — long alphanumeric suffixes generated by CSS-in-JS.\n               May change between ReadMe deployments. Used only\n               alongside a stable rm-* counterpart — never solo.\n\n   All rules use !important to override ReadMe's host CSS.\n   ============================================================ */\n\n\n/* ============================================================\n   Token extensions\n   NOTE: superseded by the consolidated brand v2 palette block\n   further down this file. Values kept in sync to avoid a stale\n   landmine if this file is ever reordered. darknavy/deepchar are\n   retired bluish neutrals — brand v2 has no bluish gray, so they\n   collapse to Off Black.\n   ============================================================ */\n\n:root {\n  --recurly-brightgray: #F2F1EA;  /* OB Tint 2 */\n  --recurly-darknavy:   #0D0D0B;  /* retired → Off Black */\n  --recurly-deepchar:   #0D0D0B;  /* retired → Off Black */\n}\n\n\n/* ============================================================\n   PART 0 — Global page background\n   ============================================================\n   Sets the overall ReadMe canvas and content areas to\n   Recurly offwhite (#FCFBF7) for both Guide and API Reference\n   pages. Targets the SuperHub wrapper and inner content panes.\n   ============================================================ */\n\n.rm-SuperHub,\n.SuperHub,\n[class*=\"SuperHub-wrapper\"],\n[class*=\"SuperHub-content\"],\n[class*=\"SuperHub-body\"],\n.rm-ReferenceMain,\n[class*=\"ReferenceMain\"],\n.rm-Article,\n[class*=\"Article-content\"],\n.content-body,\n#hub-content,\n#content {\n  background: #fff !important;\n}\n\n/* Sidebar background is set again here to complement Part 4's\n   rule — Part 4 handles font/link, this handles the bg color. */\n#hub-sidebar,\n#reference-sidebar,\n.rm-Sidebar {\n  background: #fff !important;\n}\n\n\n/* ============================================================\n   PART 1 — General Articles\n   ============================================================\n   Fires on BOTH Guide and API Reference pages.\n   h1 yellow border is intentionally NOT here — it is scoped\n   to Guide pages only in Part 2 to avoid clashing with the\n   compact badge + URL layout on API Reference pages.\n   ============================================================ */\n\n/* ——— 1.1 — Prose links inside the markdown body ——— */\n\n.rm-Markdown.markdown-body p > a:not([class*=\"Button\"]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download),\n.rm-Markdown.markdown-body li:not(.menu-item) > a:not([class*=\"Button\"]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download) {\n  color: var(--recurly-tangerine) !important;\n  text-decoration: none !important;\n  border-bottom: 1px solid transparent !important;\n  transition: border-color 0.15s !important;\n}\n\n.rm-Markdown.markdown-body p > a:not([class*=\"Button\"]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download):hover,\n.rm-Markdown.markdown-body li:not(.menu-item) > a:not([class*=\"Button\"]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download):hover {\n  border-bottom-color: var(--recurly-tangerine) !important;\n}\n\n/* ——— 1.2 — AI Dropdown (\"Copy Page\" / \"Ask AI\" button cluster) ——— */\n\n.rm-AIDropdown .Button,\n.AIDropdownzmvdRdsNayZl .Button {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-darkgray) !important;\n  background: transparent !important;\n  border-color: var(--recurly-lightgray) !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n.rm-AIDropdown .Button:hover,\n.AIDropdownzmvdRdsNayZl .Button:hover {\n  background: var(--recurly-offblack) !important;\n  border-color: var(--recurly-offblack) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* ——— 1.3 — Copy to Clipboard button ——— */\n\n.CopyToClipboard {\n  background: transparent !important;\n  border-color: var(--recurly-lightgray) !important;\n  color: var(--recurly-gray) !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n.CopyToClipboard:hover,\n.CopyToClipboard:focus {\n  background: var(--recurly-tangerine) !important;\n  border-color: var(--recurly-tangerine) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* Copy button inside Text-type snippets */\npre:has(> code.rdmd-code):not(.CodeTabs *) {\n  position: relative !important;\n}\n\npre:has(> code.rdmd-code):not(.CodeTabs *) > .rdmd-code-copy {\n  position: absolute !important;\n  top: 16px !important;\n  right: 10px !important;\n  background: transparent !important;\n  border: 1px solid var(--recurly-gray) !important;\n  color: var(--recurly-lightgray) !important;\n  border-radius: 6px !important;\n  padding: 4px 10px !important;\n  cursor: pointer !important;\n  z-index: 2 !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\npre:has(> code.rdmd-code):not(.CodeTabs *) > .rdmd-code-copy:hover {\n  background: var(--recurly-tangerine) !important;\n  border-color: var(--recurly-tangerine) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* ——— 1.4 — Pagination controls ——— */\n\n.rm-Pagination {\n  font-family: var(--recurly-font) !important;\n}\n\n.rm-Pagination .PaginationControls-link {\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  color: var(--recurly-offblack) !important;\n  text-decoration: none !important;\n  transition: color 0.15s !important;\n}\n\n.rm-Pagination .PaginationControls-link:hover {\n  color: var(--recurly-tangerine) !important;\n}\n\n/* ——— 1.5 — Next steps divider ——— */\n\n.NextStepsDivider {\n  border: 0 !important;\n  border-top: 1px solid var(--recurly-lightgray) !important;\n  margin: 28px 0 !important;\n}\n\n/* ——— 1.6 — Updated-at date line ——— */\n\n.UpdatedAt .DateLine,\n.DateLine {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  color: var(--recurly-gray) !important;\n}\n\n/* ——— 1.7 — \"Did this page help you?\" thumbs ——— */\n\n.rm-PageThumbs .PageThumbs-helpful {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-darkgray) !important;\n}\n\n.rm-PageThumbs .PageThumbs-button {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-gray) !important;\n  background: transparent !important;\n  border: 0 !important;\n  transition: color 0.15s !important;\n}\n\n.rm-PageThumbs .PageThumbs-button:hover {\n  color: var(--recurly-tangerine) !important;\n}\n\n\n/* ============================================================\n   PART 2 — Guide article pages\n   ============================================================ */\n\n/* ——— 2.1 — Page h1 yellow border (guide-only) ——— */\n\n.rm-Guides-SuperHub #content-head h1,\n.rm-Guides-SuperHub .Title.Title1 {\n  font-family: var(--recurly-font) !important;\n  color: var(--recurly-offblack) !important;\n  font-weight: 800 !important;\n  border-bottom: 2px solid var(--recurly-yellow) !important;\n  padding-bottom: 10px !important;\n  margin-bottom: 20px !important;\n}\n\n/* ——— 2.2 — Page excerpt ——— */\n\n.rm-Guides-SuperHub .excerpt,\n.rm-Article .excerpt {\n  font-family: var(--recurly-font) !important;\n  font-size: 15px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.65 !important;\n  background: transparent !important;\n  border: 0 !important;\n  padding: 0 !important;\n  margin: 0 0 24px !important;\n}\n\n.rm-Guides-SuperHub .excerpt a,\n.rm-Article .excerpt a {\n  color: var(--recurly-tangerine) !important;\n}\n\n/* ——— 2.3 — Right-hand TOC sidebar ——— */\n\n.content-toc {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n}\n\n.content-toc a {\n  color: var(--recurly-gray) !important;\n  text-decoration: none !important;\n  transition: color 0.15s !important;\n}\n\n.content-toc a:hover {\n  color: var(--recurly-offblack) !important;\n}\n\n.content-toc a.active,\n.content-toc .toc-active > a {\n  color: var(--recurly-offblack) !important;\n  font-weight: 700 !important;\n}\n\n/* ——— 2.4 — Content headings h1–h5 ——— */\n\n.rm-Markdown.markdown-body h1.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.75rem !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offblack) !important;\n  margin: 40px 0 16px !important;\n  padding-bottom: 10px !important;\n  border-bottom: 2px solid var(--recurly-yellow) !important;\n}\n\n.rm-Markdown.markdown-body h2.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.5rem !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offblack) !important;\n  margin: 36px 0 14px !important;\n  padding-bottom: 0 !important;\n  border-bottom: 0 !important;\n}\n\n.rm-Markdown.markdown-body h3.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.1rem !important;\n  font-weight: 700 !important;\n  color: var(--recurly-darkgray) !important;\n  margin: 28px 0 10px !important;\n  border-bottom: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.rm-Markdown.markdown-body h4.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 0.95rem !important;\n  font-weight: 700 !important;\n  color: var(--recurly-darkgray) !important;\n  margin: 20px 0 8px !important;\n  border-bottom: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.rm-Markdown.markdown-body h5.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 0.9rem !important;\n  font-weight: 600 !important;\n  color: var(--recurly-darkgray) !important;\n  margin: 16px 0 6px !important;\n  border-bottom: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n/* ——— 2.5 — First-child margin resets ——— */\n\n.rm-Markdown.markdown-body h3.heading:first-child,\n.rm-Markdown.markdown-body h4.heading:first-child,\n.rm-Markdown.markdown-body h5.heading:first-child {\n  margin-block-start: 0 !important;\n}\n\n/* ——— 2.6 — Heading anchor icons ——— */\n\n.rm-Markdown.markdown-body h1.heading,\n.rm-Markdown.markdown-body h2.heading,\n.rm-Markdown.markdown-body h3.heading,\n.rm-Markdown.markdown-body h4.heading,\n.rm-Markdown.markdown-body h5.heading {\n  position: relative !important;\n  overflow: visible !important;\n  cursor: pointer !important;\n}\n\n.rm-Markdown.markdown-body h1.heading .heading-anchor-icon,\n.rm-Markdown.markdown-body h2.heading .heading-anchor-icon,\n.rm-Markdown.markdown-body h3.heading .heading-anchor-icon,\n.rm-Markdown.markdown-body h4.heading .heading-anchor-icon,\n.rm-Markdown.markdown-body h5.heading .heading-anchor-icon {\n  position: absolute !important;\n  left: -22px !important;\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n  width: 18px !important;\n  height: 18px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  opacity: 0 !important;\n  color: var(--recurly-lightgray) !important;\n  font-size: 0.75em !important;\n  margin: 0 !important;\n  text-decoration: none !important;\n  outline: none !important;\n  border: 0 !important;\n  box-shadow: none !important;\n  transition: opacity 0.15s !important;\n  /* Tight bounding box — never overlaps the sidebar */\n  pointer-events: auto !important;\n  z-index: 1 !important;\n}\n\n.rm-Markdown.markdown-body h1.heading .heading-anchor-icon:focus,\n.rm-Markdown.markdown-body h2.heading .heading-anchor-icon:focus,\n.rm-Markdown.markdown-body h3.heading .heading-anchor-icon:focus,\n.rm-Markdown.markdown-body h4.heading .heading-anchor-icon:focus,\n.rm-Markdown.markdown-body h5.heading .heading-anchor-icon:focus {\n  outline: none !important;\n  border: 0 !important;\n  box-shadow: none !important;\n}\n\n.rm-Markdown.markdown-body h1.heading:hover .heading-anchor-icon,\n.rm-Markdown.markdown-body h2.heading:hover .heading-anchor-icon,\n.rm-Markdown.markdown-body h3.heading:hover .heading-anchor-icon,\n.rm-Markdown.markdown-body h4.heading:hover .heading-anchor-icon,\n.rm-Markdown.markdown-body h5.heading:hover .heading-anchor-icon {\n  opacity: 1 !important;\n}\n\n\n/* ============================================================\n   PART 3 — API Reference article pages\n   ============================================================ */\n\n/* ——— 3.1 — Endpoint URL ——— */\n\n[data-testid=\"serverurl\"] {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 13px !important;\n  color: var(--recurly-tangerine) !important;\n}\n\n/* ——— 3.2 — HTTP method badges ——— */\n\n.rm-APIMethod,\n.APIMethod {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.6px !important;\n  text-transform: uppercase !important;\n  padding: 4px 12px !important;\n  border-radius: 14px !important;\n  border: 0 !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  line-height: 1 !important;\n}\n\n.APIMethod_get    { color: var(--recurly-green) !important; }\n.APIMethod_post   { color: var(--recurly-tangerine) !important; }\n.APIMethod_put    { color: var(--recurly-yellow) !important; }\n.APIMethod_patch  { color: var(--recurly-teal) !important; }\n.APIMethod_delete { color: var(--recurly-vermillion) !important; }\n.APIMethod_del    { color: var(--recurly-vermillion) !important; }\n.APIMethod_head   { color: var(--recurly-lightgray) !important; }\n\n/* ——— 3.3 — API section headers (light background context) ——— */\n\n.rm-APISectionHeader {\n  font-family: var(--recurly-font) !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  padding-bottom: 8px !important;\n  margin-bottom: 16px !important;\n}\n\n.rm-APISectionHeader [class*=\"APISectionHeader-heading\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-darkgray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n}\n\n/* ——— 3.4 — Parameter rows ——— */\n\n[class*=\"Param-name\"] {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 13px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-offblack) !important;\n}\n\n[class*=\"Param-type\"] {\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-gray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.3px !important;\n}\n\n[class*=\"Param-is-enum\"] {\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-tangerine) !important;\n  background: rgba(0, 140, 255, 0.10) !important;\n  padding: 1px 6px !important;\n  border-radius: 10px !important;\n}\n\n[class*=\"Param-default-label\"],\n[class*=\"Param-minmax-label\"] {\n  font-size: 11px !important;\n  color: var(--recurly-gray) !important;\n}\n\n[class*=\"Param-description\"] .rm-Markdown,\n[class*=\"Param-description\"] .markdown-body {\n  font-size: 13px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.55 !important;\n}\n\n[class*=\"Param-enum-section-item\"] {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 11px !important;\n  font-weight: 600 !important;\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  border-radius: 20px !important;\n  padding: 4px 12px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"Param-enum-section-item\"]:hover {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Inner code token — transparent so button shell color wins */\n[class*=\"Param-enum-section-item\"] code,\n[class*=\"Param-enum-section-item-value\"] {\n  background: transparent !important;\n  color: inherit !important;\n  font-family: inherit !important;\n  font-size: inherit !important;\n  font-weight: inherit !important;\n  padding: 0 !important;\n  border-radius: 0 !important;\n  box-shadow: none !important;\n}\n\n.rm-ParamInput,\n.rm-ParamSelect {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  background: var(--recurly-offwhite) !important;\n  border-color: var(--recurly-lightgray) !important;\n  color: var(--recurly-darkgray) !important;\n}\n\n.rm-ParamInput:focus,\n.rm-ParamSelect:focus {\n  border-color: var(--recurly-offblack) !important;\n  outline: none !important;\n}\n\n/* ——— 3.5 — HTTP status chits ——— */\n\n.HTTPStatus {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  padding: 2px 8px !important;\n  border-radius: 10px !important;\n}\n\n.HTTPStatus_2 { background: rgba(93, 195, 46, 0.14) !important; color: var(--recurly-green) !important; }\n.HTTPStatus_4 { background: rgba(255, 81, 38, 0.12) !important; color: var(--recurly-vermillion) !important; }\n.HTTPStatus_5 { background: rgba(255, 81, 38, 0.20) !important; color: var(--recurly-vermillion) !important; }\n.HTTPStatus_1 { background: var(--recurly-brightgray) !important; color: var(--recurly-gray) !important; }\n\n/* ——— 3.6 — Response schema accordion ——— */\n\n.rm-APIResponseSchemaPicker {\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 10px !important;\n  overflow: hidden !important;\n  margin: 8px 0 24px !important;\n  font-family: var(--recurly-font) !important;\n  background: var(--recurly-offblack) !important;\n  /* Override ReadMe's --Accordion-icon-color custom property used by SVG chevron */\n  --Accordion-icon-color: var(--recurly-gray) !important;\n}\n\n/* Kill background on intermediate wrappers — AccordionToggle handled separately below */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"],\n.rm-APIResponseSchemaPicker [class*=\"APIResponseSchemaPicker-option\"] {\n  background: transparent !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n/* AccordionToggle h1 — no own background; inherits offblack from parent section */\n.rm-APIResponseSchemaPicker [class*=\"AccordionToggle\"] {\n  background: transparent !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n/* On hover (closed rows only): entire h1 turns yellow.\n   --Accordion-icon-color controls the chevron fill/stroke via ReadMe's Icon system.\n   --icon-color is the resolved custom property the SVG inline style reads directly. */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"]:not([class*=\"AccordionPanel_active\"]) [class*=\"AccordionToggle\"]:has(button:hover) {\n  background: var(--recurly-yellow) !important;\n  --Accordion-icon-color: var(--recurly-offblack) !important;\n  --icon-color: var(--recurly-offblack) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* Row divider — subtle on dark bg */\n.rm-APIResponseSchemaPicker [class*=\"APIResponseSchemaPicker-option\"] {\n  border-bottom: 1px solid var(--recurly-darkgray) !important;\n}\n.rm-APIResponseSchemaPicker [class*=\"APIResponseSchemaPicker-option\"]:last-child {\n  border-bottom: 0 !important;\n}\n\n/* Toggle button — offblack default, pure white text */\n.rm-APIResponseSchemaPicker [class*=\"AccordionToggle\"] button {\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  font-weight: 600 !important;\n  padding: 16px 20px !important;\n  background: transparent !important;\n  color: #fff !important;\n  width: 100% !important;\n  text-align: left !important;\n  border: 0 !important;\n  display: flex !important;\n  align-items: center !important;\n  transition: color 0.15s !important;\n}\n\n/* Hover — text goes offblack; background handled by parent h1 :has() rule above */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"]:not([class*=\"AccordionPanel_active\"]) [class*=\"AccordionToggle\"] button:hover {\n  background: transparent !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* All text descendants go offblack on hover (closed rows only) */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"]:not([class*=\"AccordionPanel_active\"]) [class*=\"AccordionToggle\"] button:hover *,\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"]:not([class*=\"AccordionPanel_active\"]) [class*=\"AccordionToggle\"] button:hover p {\n  color: var(--recurly-offblack) !important;\n}\n\n/* Active/open row — yellow left accent, offblack bg */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel_active\"] [class*=\"AccordionToggle\"] button,\n.rm-APIResponseSchemaPicker [class*=\"AccordionToggle_active\"] button {\n  background: transparent !important;\n  border-left: 3px solid var(--recurly-yellow) !important;\n  padding-left: 17px !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Expanded content pane — clean white */\n.rm-APIResponseSchemaPicker [class*=\"AccordionContent\"] {\n  background: #fff !important;\n  border-top: 1px solid var(--recurly-darkgray) !important;\n}\n\n/* Status label text (\"200\", \"404\") — always white on dark bg */\n[class*=\"APIResponseSchemaPicker-label\"] {\n  color: #fff !important;\n  font-weight: 600 !important;\n}\n\n/* Description text — warm secondary gray */\n[class*=\"APIResponseSchemaPicker-description\"],\n[class*=\"APIResponseSchemaPicker-description\"] p {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-gray) !important;\n}\n\n/* Chevron default color — controlled by --Accordion-icon-color on parent */\n.rm-APIResponseSchemaPicker [class*=\"AccordionToggle-icon\"] {\n  color: var(--recurly-gray) !important;\n}\n\n/* ——— 3.7 — API Playground panel (right-hand column) ——— */\n\n.rm-Playground {\n  background: var(--recurly-offblack) !important;\n  border-left: 1px solid var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  color: var(--recurly-offwhite) !important;\n}\n\n[class*=\"Playground-section\"] {\n  border-bottom: 1px solid var(--recurly-darkgray) !important;\n  padding: 14px 16px !important;\n}\n\n.rm-Playground .rm-APISectionHeader {\n  border-bottom-color: var(--recurly-darkgray) !important;\n}\n\n.rm-Playground .rm-APISectionHeader [class*=\"APISectionHeader-heading\"] {\n  color: var(--recurly-lightgray) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n}\n\n/* 3.7.1 — Language picker */\n\n.rm-LanguageButton {\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-lightgray) !important;\n  background: transparent !important;\n  border: 0 !important;\n  padding: 5px 12px !important;\n  border-radius: 14px !important;\n  cursor: pointer !important;\n  transition: background 0.12s, color 0.12s !important;\n}\n\n.rm-LanguageButton:hover {\n  background: transparent !important;\n  color: var(--recurly-yellow) !important;\n}\n\n.rm-LanguageButton_active,\n.rm-LanguageButton[aria-pressed=\"true\"] {\n  background: var(--recurly-yellow) !important;\n  color: var(--recurly-offblack) !important;\n  cursor: default !important;\n}\n\n/* 3.7.2 — Credentials / Auth inputs */\n\n.rm-APIAuth [class*=\"InputGroup-input\"] {\n  background: rgba(255, 253, 242, 0.06) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n}\n\n.rm-APIAuth [class*=\"InputGroup-input\"]::placeholder {\n  color: var(--recurly-gray) !important;\n}\n\n.rm-APIAuth [class*=\"InputGroup-input\"]:focus {\n  border-color: var(--recurly-yellow) !important;\n  outline: none !important;\n}\n\n.rm-APIAuth [class*=\"InputGroup-button\"] {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-lightgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n}\n\n/* 3.7.3 — URL bar */\n\n.ServerVars [class*=\"InputGroup-button\"] {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-lightgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n}\n\n.ServerVars [class*=\"ServerVars-url\"] {\n  background: rgba(255, 253, 242, 0.06) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 12px !important;\n}\n\n/* 3.7.4 — Request code block */\n\n.rm-PlaygroundRequest [class*=\"APIRequest-header\"] {\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-lightgray) !important;\n  letter-spacing: 0.3px !important;\n  text-transform: uppercase !important;\n}\n\n.rm-PlaygroundRequest .CodeSnippet,\n.rm-PlaygroundRequest [class*=\"CodeSnippet\"] {\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 8px !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 12px !important;\n}\n\n.rm-PlaygroundRequest .CodeMirror {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 12px !important;\n  line-height: 1.55 !important;\n}\n\n.rm-PlaygroundRequest .CodeMirror .cm-builtin  { color: var(--recurly-yellow) !important; }\n.rm-PlaygroundRequest .CodeMirror .cm-attribute { color: var(--recurly-tangerine) !important; }\n.rm-PlaygroundRequest .CodeMirror .cm-string    { color: var(--recurly-green) !important; }\n\n[class*=\"APIRequest-footer\"] {\n  border-top: 1px solid var(--recurly-darkgray) !important;\n  padding: 10px 14px !important;\n}\n\n/* 3.7.5 — Try It! button */\n\n.rm-TryIt {\n  background: var(--recurly-yellow) !important;\n  color: var(--recurly-offblack) !important;\n  font-family: var(--recurly-font) !important;\n  font-weight: 700 !important;\n  font-size: 13px !important;\n  border-radius: 8px !important;\n  border: 0 !important;\n  padding: 8px 18px !important;\n  cursor: pointer !important;\n  transition: background 0.12s !important;\n}\n\n.rm-TryIt:hover {\n  background: var(--recurly-tangerine) !important;\n}\n\n/* 3.7.6 — Response panel */\n\n.rm-PlaygroundResponse {\n  background: var(--recurly-offblack) !important;\n  font-family: var(--recurly-font) !important;\n}\n\n[class*=\"APIResponse-header\"] {\n  border-bottom: 1px solid var(--recurly-darkgray) !important;\n  padding: 10px 14px !important;\n}\n\n[class*=\"APIResponse-header-title\"] {\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-lightgray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.3px !important;\n}\n\n[class*=\"APIResponse-empty-prompt\"] {\n  color: var(--recurly-gray) !important;\n  font-size: 13px !important;\n  line-height: 1.6 !important;\n}\n\n[class*=\"APIResponse-empty-tryit\"] {\n  color: var(--recurly-yellow) !important;\n  background: rgba(255, 215, 6, 0.12) !important;\n  padding: 1px 6px !important;\n  border-radius: 4px !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n}\n\n[class*=\"APIResponse-empty-examples-header\"] {\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-lightgray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.4px !important;\n}\n\n[class*=\"APIResponse-empty-examples-button\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  background: rgba(255, 253, 242, 0.06) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-lightgray) !important;\n  border-radius: 6px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"APIResponse-empty-examples-button\"]:hover {\n  background: var(--recurly-yellow) !important;\n  border-color: var(--recurly-yellow) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* 3.7.7 — API Logs Table + footer */\n\n/* Table container */\n.rm-APILogsTable {\n  font-family: var(--recurly-font) !important;\n  border-radius: 10px !important;\n  overflow: hidden !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  /* No background here — table and footer handle their own backgrounds */\n}\n\n/* The actual \u003ctable> — must be full-width to match the footer */\n.rm-APILogsTable table {\n  width: 100% !important;\n  table-layout: fixed !important;\n  border-collapse: collapse !important;\n  border: 0 !important;\n}\n\n/* Header row — offblack */\n.rm-APILogsTable thead tr {\n  background: var(--recurly-offblack) !important;\n}\n\n.rm-APILogsTable thead th {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offwhite) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.6px !important;\n  background: var(--recurly-offblack) !important;\n  padding: 10px 16px !important;\n  border: 0 !important;\n  text-align: left !important;\n}\n\n/* Body rows */\n.rm-APILogsTable tbody td {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-darkgray) !important;\n  background: #fff !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n}\n\n/* Empty state */\n[class*=\"APILogsTable_empty\"],\n[class*=\"LogsTable_empty\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-gray) !important;\n  padding: 28px 16px !important;\n  text-align: center !important;\n}\n\n/* Footer — offblack to match the Playground panel */\n.rm-APILogInfo,\n[class*=\"APILogsTable-footer\"] {\n  background: var(--recurly-offblack) !important;\n  border-top: 1px solid var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  padding: 10px 16px !important;\n}\n\n[class*=\"APILogInfo-requests-count\"] {\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n}\n\n/* \"See All Requests →\" button — ghost white, yellow pill on hover */\n.rm-APILogInfo .Button {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.3px !important;\n  color: var(--recurly-offwhite) !important;\n  background: transparent !important;\n  border: 1px solid var(--recurly-gray) !important;\n  border-radius: 20px !important;\n  padding: 6px 16px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n.rm-APILogInfo .Button:hover {\n  background: var(--recurly-yellow) !important;\n  border-color: var(--recurly-yellow) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n\n/* ============================================================\n   PART 4 — Sidebar navigation\n   ============================================================ */\n\n#hub-sidebar,\n#reference-sidebar,\n.rm-Sidebar {\n  font-family: var(--recurly-font) !important;\n  background: #fff !important;\n}\n\n.rm-Sidebar .rm-Sidebar-heading,\n#hub-sidebar .rm-Sidebar-heading,\n#reference-sidebar .rm-Sidebar-heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 800 !important;\n  color: var(--recurly-gray) !important;\n  letter-spacing: 0.8px !important;\n  text-transform: uppercase !important;\n  padding: 20px 16px 6px !important;\n  margin: 0 !important;\n  border-bottom: 0 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-list,\n#hub-sidebar .rm-Sidebar-list,\n#reference-sidebar .rm-Sidebar-list {\n  list-style: none !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link,\n#hub-sidebar .rm-Sidebar-link,\n#reference-sidebar .rm-Sidebar-link {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  font-weight: 500 !important;\n  color: var(--recurly-offblack) !important;\n  text-decoration: none !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: space-between !important;\n  padding: 7px 16px !important;\n  transition: background 0.12s, color 0.12s !important;\n  line-height: 1.4 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link:hover,\n#hub-sidebar .rm-Sidebar-link:hover,\n#reference-sidebar .rm-Sidebar-link:hover {\n  color: var(--recurly-offblack) !important;\n  background: rgba(13, 13, 11, 0.05) !important;\n  text-decoration: none !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.active,\n.rm-Sidebar .rm-Sidebar-link[aria-current=\"page\"],\n#hub-sidebar .rm-Sidebar-link.active,\n#hub-sidebar .rm-Sidebar-link[aria-current=\"page\"],\n#reference-sidebar .rm-Sidebar-link.active,\n#reference-sidebar .rm-Sidebar-link[aria-current=\"page\"] {\n  color: var(--recurly-offblack) !important;\n  font-weight: 700 !important;\n  background: rgba(255, 215, 6, 0.20) !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.Sidebar-link_parent,\n#hub-sidebar .rm-Sidebar-link.Sidebar-link_parent,\n#reference-sidebar .rm-Sidebar-link.Sidebar-link_parent {\n  font-weight: 600 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.Sidebar-link_hidden,\n#hub-sidebar .rm-Sidebar-link.Sidebar-link_hidden,\n#reference-sidebar .rm-Sidebar-link.Sidebar-link_hidden {\n  opacity: 0.45 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.Sidebar-link_hidden:hover,\n#hub-sidebar .rm-Sidebar-link.Sidebar-link_hidden:hover,\n#reference-sidebar .rm-Sidebar-link.Sidebar-link_hidden:hover {\n  opacity: 0.7 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.subpage,\n#hub-sidebar .rm-Sidebar-link.subpage,\n#reference-sidebar .rm-Sidebar-link.subpage {\n  font-size: 12.5px !important;\n  font-weight: 400 !important;\n  color: var(--recurly-offblack) !important;\n  padding-left: 28px !important;\n  align-items: flex-start !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.subpage:hover,\n#hub-sidebar .rm-Sidebar-link.subpage:hover,\n#reference-sidebar .rm-Sidebar-link.subpage:hover {\n  color: var(--recurly-offblack) !important;\n  background: rgba(13, 13, 11, 0.04) !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.subpage.active,\n.rm-Sidebar .rm-Sidebar-link.subpage[aria-current=\"page\"],\n#hub-sidebar .rm-Sidebar-link.subpage.active,\n#hub-sidebar .rm-Sidebar-link.subpage[aria-current=\"page\"],\n#reference-sidebar .rm-Sidebar-link.subpage.active,\n#reference-sidebar .rm-Sidebar-link.subpage[aria-current=\"page\"] {\n  color: var(--recurly-offblack) !important;\n  font-weight: 700 !important;\n  background: rgba(255, 215, 6, 0.20) !important;\n}\n\n.rm-Sidebar .subpages .subpages .rm-Sidebar-link.subpage,\n#hub-sidebar .subpages .subpages .rm-Sidebar-link.subpage,\n#reference-sidebar .subpages .subpages .rm-Sidebar-link.subpage {\n  padding-left: 40px !important;\n}\n\n.rm-Sidebar .subpages .subpages .subpages .rm-Sidebar-link.subpage,\n#hub-sidebar .subpages .subpages .subpages .rm-Sidebar-link.subpage,\n#reference-sidebar .subpages .subpages .subpages .rm-Sidebar-link.subpage {\n  padding-left: 52px !important;\n}\n\n[class*=\"Sidebar-link-text_label\"] {\n  display: block !important;\n  overflow: hidden !important;\n  text-overflow: ellipsis !important;\n  font-size: inherit !important;\n  font-weight: inherit !important;\n  color: inherit !important;\n}\n\n.rm-Sidebar [class*=\"Sidebar-link-buttonWrapper\"],\n#hub-sidebar [class*=\"Sidebar-link-buttonWrapper\"],\n#reference-sidebar [class*=\"Sidebar-link-buttonWrapper\"] {\n  background: transparent !important;\n  border: 0 !important;\n  padding: 4px 6px !important;\n  color: var(--recurly-offblack) !important;\n  cursor: pointer !important;\n  flex-shrink: 0 !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  border-radius: 4px !important;\n  transition: background 0.12s, color 0.12s !important;\n}\n\n.rm-Sidebar [class*=\"Sidebar-link-buttonWrapper\"]:hover,\n#hub-sidebar [class*=\"Sidebar-link-buttonWrapper\"]:hover,\n#reference-sidebar [class*=\"Sidebar-link-buttonWrapper\"]:hover {\n  background: rgba(13, 13, 11, 0.06) !important;\n  color: var(--recurly-tangerine) !important;\n}\n\n[class*=\"Sidebar-link-expandIcon\"] {\n  font-size: 13px !important;\n  transition: transform 0.18s ease !important;\n  color: inherit !important;\n}\n\n[class*=\"Sidebar-link-buttonWrapper\"][aria-expanded=\"true\"] [class*=\"Sidebar-link-expandIcon\"],\n.subnav-expanded > .rm-Sidebar-link > [class*=\"Sidebar-link-buttonWrapper\"] [class*=\"Sidebar-link-expandIcon\"] {\n  transform: rotate(90deg) !important;\n  color: var(--recurly-tangerine) !important;\n}\n\n[class*=\"Sidebar-link-externalIcon\"] {\n  font-size: 10px !important;\n  color: var(--recurly-offblack) !important;\n}\n\n.rm-Sidebar-link:hover [class*=\"Sidebar-link-externalIcon\"] {\n  color: var(--recurly-tangerine) !important;\n}\n\n.rm-Sidebar .rm-Sidebar-section + .rm-Sidebar-section,\n#hub-sidebar .rm-Sidebar-section + .rm-Sidebar-section,\n#reference-sidebar .rm-Sidebar-section + .rm-Sidebar-section {\n  border-top: 1px solid var(--recurly-lightgray) !important;\n  margin-top: 4px !important;\n}\n\n[class*=\"Nav-toggle-collapse\"] {\n  color: var(--recurly-gray) !important;\n  background: transparent !important;\n  border: 0 !important;\n  transition: color 0.12s !important;\n}\n\n[class*=\"Nav-toggle-collapse\"]:hover {\n  color: var(--recurly-offblack) !important;\n}\n\n\n/* ============================================================\n   PART 5 — API Reference sidebar specifics\n   ============================================================ */\n\n[class*=\"QuickNav-button\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.6px !important;\n  color: var(--recurly-gray) !important;\n  background: transparent !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 8px !important;\n  padding: 6px 12px !important;\n  cursor: pointer !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  width: 100% !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"QuickNav-button\"]:hover {\n  background: rgba(13, 13, 11, 0.05) !important;\n  border-color: var(--recurly-offblack) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n[class*=\"KbdShortcut\"] {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 10px !important;\n  color: var(--recurly-gray) !important;\n  background: rgba(13, 13, 11, 0.06) !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 4px !important;\n  padding: 1px 5px !important;\n}\n\n#reference-sidebar .rm-APIMethod,\n[class*=\"Sidebar-method\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 9px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.4px !important;\n  text-transform: uppercase !important;\n  padding: 2px 6px !important;\n  border-radius: 10px !important;\n  border: 0 !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  line-height: 1 !important;\n  flex-shrink: 0 !important;\n  margin-top: 2px !important;\n}\n\n[class*=\"Sidebar-link-pageIconCustom\"] {\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  width: 18px !important;\n  height: 18px !important;\n  flex-shrink: 0 !important;\n  color: var(--recurly-gray) !important;\n}\n\n.rm-Sidebar-link:hover [class*=\"Sidebar-link-pageIconCustom\"] {\n  color: var(--recurly-tangerine) !important;\n}\n\n.rm-Sidebar-link.active [class*=\"Sidebar-link-pageIconCustom\"],\n.rm-Sidebar-link[aria-current=\"page\"] [class*=\"Sidebar-link-pageIconCustom\"] {\n  color: var(--recurly-offblack) !important;\n}\n\n.rm-UserAvatar {\n  font-family: var(--recurly-font) !important;\n  font-size: 9px !important;\n  font-weight: 800 !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-yellow) !important;\n  border-radius: 50% !important;\n  width: 18px !important;\n  height: 18px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  flex-shrink: 0 !important;\n}\n\n\n/* ============================================================\n   PART 6 — QuickNav modal\n   ============================================================ */\n\n[class*=\"QuickNav-modal-search\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  color: var(--recurly-offblack) !important;\n  background: var(--recurly-offwhite) !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 8px !important;\n  padding: 10px 14px !important;\n  width: 100% !important;\n  outline: none !important;\n  transition: border-color 0.12s !important;\n}\n\n[class*=\"QuickNav-modal-search\"]:focus {\n  border-color: var(--recurly-offblack) !important;\n}\n\n[class*=\"QuickNav-modal-search\"]::placeholder {\n  color: var(--recurly-lightgray) !important;\n}\n\n[class*=\"QuickNav-content\"] {\n  font-family: var(--recurly-font) !important;\n}\n\n[class*=\"QuickNav-destination-section\"] {\n  list-style: none !important;\n  margin: 0 0 8px !important;\n  padding: 0 !important;\n}\n\n[class*=\"QuickNav-destination-section-heading\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 9px !important;\n  font-weight: 800 !important;\n  color: var(--recurly-lightgray) !important;\n  letter-spacing: 1px !important;\n  text-transform: uppercase !important;\n  padding: 14px 12px 6px !important;\n  list-style: none !important;\n}\n\n[class*=\"destination-item\"] {\n  list-style: none !important;\n}\n\n[class*=\"destination-item-anchor\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  font-weight: 400 !important;\n  color: var(--recurly-darkgray) !important;\n  text-decoration: none !important;\n  display: block !important;\n  padding: 6px 12px !important;\n  transition: background 0.1s, color 0.1s !important;\n}\n\n[class*=\"destination-item-anchor\"]:hover {\n  color: var(--recurly-offblack) !important;\n  background: rgba(13, 13, 11, 0.04) !important;\n  text-decoration: none !important;\n}\n\n[class*=\"destination-item-anchor\"].active,\n[class*=\"destination-item-anchor\"][aria-current=\"page\"] {\n  color: var(--recurly-offblack) !important;\n  font-weight: 700 !important;\n  background: rgba(255, 215, 6, 0.20) !important;\n}\n\n[class*=\"destination-item-anchor-row-container\"] {\n  display: flex !important;\n  align-items: flex-start !important;\n  justify-content: space-between !important;\n  gap: 8px !important;\n  font-size: inherit !important;\n  color: inherit !important;\n}\n\n[class*=\"destination-item-anchor-row-container-method\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 9px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.4px !important;\n  text-transform: uppercase !important;\n  padding: 2px 6px !important;\n  border-radius: 10px !important;\n  border: 0 !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  line-height: 1 !important;\n  flex-shrink: 0 !important;\n  margin-top: 2px !important;\n}\n\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_get    { color: var(--recurly-green) !important; }\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_post   { color: var(--recurly-tangerine) !important; }\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_put    { color: var(--recurly-yellow) !important; }\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_patch  { color: var(--recurly-teal) !important; }\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_del    { color: var(--recurly-vermillion) !important; }\n\n\n/* ============================================================\n   PART 7 — Changelog\n   ============================================================ */\n\n#recurly-changelog-header {\n  background: var(--recurly-offblack) !important;\n  border-radius: 12px !important;\n  padding: 32px 36px !important;\n  margin: 0 auto 28px auto !important;\n  max-width: 1080px !important;\n}\n\n#recurly-changelog-header h1 {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.5rem !important;\n  font-weight: 800 !important;\n  color: var(--recurly-yellow) !important;\n  margin: 0 0 12px !important;\n  padding: 0 !important;\n  border: 0 !important;\n}\n\n#recurly-changelog-header p {\n  font-family: var(--recurly-font) !important;\n  font-size: 15px !important;\n  color: var(--recurly-lightgray) !important;\n  line-height: 1.6 !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  background: transparent !important;\n  border: 0 !important;\n  border-radius: 0 !important;\n}\n\n#recurly-changelog-header .rss-line {\n  margin-top: 14px !important;\n  padding-top: 14px !important;\n  border-top: 1px solid var(--recurly-darkgray) !important;\n  font-size: 13px !important;\n  color: var(--recurly-lightgray) !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n}\n\n#recurly-changelog-header .rss-icon {\n  color: var(--recurly-yellow) !important;\n  font-size: 13px !important;\n  flex-shrink: 0 !important;\n  opacity: 0.9 !important;\n}\n\n#recurly-changelog-header .rss-copy {\n  background: transparent !important;\n  border: 0 !important;\n  padding: 0 !important;\n  font-family: inherit !important;\n  font-size: inherit !important;\n  font-weight: 700 !important;\n  color: var(--recurly-yellow) !important;\n  text-decoration: underline !important;\n  text-decoration-color: var(--recurly-yellow) !important;\n  text-underline-offset: 3px !important;\n  cursor: pointer !important;\n  transition: color 0.15s, text-decoration-color 0.15s !important;\n}\n\n#recurly-changelog-header .rss-copy:hover {\n  color: var(--recurly-tangerine) !important;\n  text-decoration-color: var(--recurly-tangerine) !important;\n}\n\n#recurly-changelog-header .rss-copy.rss-copied {\n  color: var(--recurly-yellow) !important;\n  text-decoration: none !important;\n}\n\nmain.rm-Changelog article,\nmain.rm-Changelog article.rm-Changelog-post {\n  background: #fff !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 10px !important;\n  padding: 22px 26px !important;\n  margin: 0 auto 16px !important;\n  max-width: 1080px !important;\n  width: 100% !important;\n  box-sizing: border-box !important;\n  overflow: hidden !important; /* clip any child spill so nothing escapes the card */\n}\n\n/* SuperHub layout fix — the post column is a flex/grid item, which defaults to\n   min-width:auto and refuses to shrink below its widest child (the table),\n   dragging the paragraphs out past the card. Force the whole content chain to\n   shrink to the card width and wrap. */\nmain.rm-Changelog .rm-Changelog-post,\nmain.rm-Changelog .ChangelogPage_list-post,\nmain.rm-Changelog [class*=\"ChangelogPost_text\"],\nmain.rm-Changelog [class*=\"ChangelogPost_text\"] > .markdown-body {\n  min-width: 0 !important;\n  max-width: 100% !important;\n  box-sizing: border-box !important;\n  overflow-wrap: anywhere !important;\n}\n\n.rm-Changelog [class*=\"ChangelogPost_title\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.1rem !important;\n  font-weight: 700 !important;\n  margin: 0 0 8px !important;\n  padding-bottom: 10px !important;\n  border-bottom: 2px solid var(--recurly-tangerine) !important;\n}\n\n.rm-Changelog [class*=\"ChangelogPost_title\"] a {\n  color: var(--recurly-offblack) !important;\n  text-decoration: none !important;\n  transition: color 0.15s !important;\n}\n\n.rm-Changelog [class*=\"ChangelogPost_title\"] a:hover {\n  color: var(--recurly-tangerine) !important;\n}\n\n.rm-Changelog .DateLine {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-gray) !important;\n  margin-bottom: 12px !important;\n}\n\n.rm-Changelog [class*=\"ChangelogPost_text\"] > .markdown-body > p:first-child,\n.rm-Changelog [class*=\"ChangelogPost_text\"] > p {\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.65 !important;\n  margin: 0 !important;\n}\n\n[class*=\"ChangelogPost_text\"] { overflow: hidden !important; }\n\n/* The card is wide to give the table room; keep the intro prose at a comfortable\n   reading measure so paragraphs don't stretch the full width. The table is a\n   sibling of these paragraphs, so it is unaffected and still spans the card. */\n[class*=\"ChangelogPost_text\"] > .markdown-body > p,\n[class*=\"ChangelogPost_text\"] > .markdown-body > h2 {\n  max-width: 880px !important;\n}\n\n[class*=\"ChangelogPost_text\"] .markdown-body p {\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.65 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .markdown-body a {\n  color: var(--recurly-tangerine) !important;\n  text-decoration: none !important;\n}\n\n[class*=\"ChangelogPost_text\"] .markdown-body a:hover {\n  text-decoration: underline !important;\n  text-decoration-color: var(--recurly-tangerine) !important;\n}\n\n[class*=\"ChangelogPost_text\"] .markdown-body h2,\n[class*=\"ChangelogPost_text\"] .markdown-body h2.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.05rem !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offblack) !important;\n  margin: 32px 0 12px !important;\n  padding-bottom: 8px !important;\n  border-bottom: 2px solid var(--recurly-yellow) !important;\n  background: transparent !important;\n  border-left: 0 !important;\n  border-right: 0 !important;\n  border-top: 0 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .heading-anchor-icon {\n  display: none !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table {\n  overflow-x: auto !important;\n  -webkit-overflow-scrolling: touch !important;\n  margin: 4px 0 24px !important;\n  border-radius: 8px !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  max-width: 100% !important;\n  width: 100% !important;\n}\n\n/* Fits the card on desktop (no scroll); on narrow screens the min-width kicks in\n   and the .rdmd-table scroll box gives the horizontal scroll bar. */\n[class*=\"ChangelogPost_text\"] .rdmd-table-inner {\n  min-width: 660px !important;\n  width: 100% !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table table {\n  width: 100% !important;\n  table-layout: fixed !important;\n  border-collapse: collapse !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  line-height: 1.5 !important;\n  border: 0 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table thead tr,\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th {\n  background: var(--recurly-offblack) !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th {\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  text-align: left !important;\n  padding: 10px 12px !important;\n  border: 0 !important;\n  white-space: normal !important;\n  line-height: 1.3 !important;\n  vertical-align: middle !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody tr,\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td {\n  background: #fff !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td {\n  color: var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  padding: 10px 12px !important;\n  vertical-align: top !important;\n  border: 0 !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  line-height: 1.55 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody tr:last-child td {\n  border-bottom: 0 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:first-child {\n  white-space: nowrap !important;\n  color: var(--recurly-gray) !important;\n  font-size: 12px !important;\n  width: 72px !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(2) {\n  font-weight: 600 !important;\n  color: var(--recurly-offblack) !important;\n  width: 180px !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(3) {\n  white-space: nowrap !important;\n  width: 80px !important;\n  font-weight: 700 !important;\n  font-size: 11px !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.4px !important;\n  color: var(--recurly-gray) !important;\n}\n\n/* Potential Impact body values (Low / Med / High) stay on one line */\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(4) {\n  white-space: nowrap !important;\n}\n\n/* Description / Overview — widest column, slightly larger and less tight */\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(5) {\n  width: auto !important;\n  font-size: 14px !important;\n  line-height: 1.65 !important;\n}\n\n/* With table-layout:fixed the header row sets the columns. Fixed columns sum to\n   372px; Description (col 5) is left auto so it soaks up all remaining width,\n   making it by far the widest column on any screen. */\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(1) { width: 76px !important; }\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(2) { width: 100px !important; }\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(3) { width: 108px !important; }\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(4) { width: 88px !important; }\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(5) { width: auto !important; }\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td a {\n  color: var(--recurly-tangerine) !important;\n  text-decoration: none !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td a:hover {\n  text-decoration: underline !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td code.rdmd-code {\n  background: var(--recurly-brightgray) !important;\n  color: var(--recurly-darkgray) !important;\n  font-size: 12px !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', monospace !important;\n  display: inline !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table .rdmd-code-copy {\n  display: none !important;\n}\n\n/* ── RSS instructions collapsible ───────────────────────── */\n\n#recurly-changelog-header .rss-instructions-wrap {\n  margin-top: 10px !important;\n}\n\n/* Toggle button — pill style, subtle border */\n#recurly-changelog-header .rss-instructions-toggle {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 7px !important;\n  background: transparent !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 20px !important;\n  padding: 5px 14px 5px 10px !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 600 !important;\n  color: var(--recurly-lightgray) !important;\n  cursor: pointer !important;\n  transition: border-color 0.15s, color 0.15s !important;\n  line-height: 1 !important;\n}\n\n#recurly-changelog-header .rss-instructions-toggle:hover {\n  border-color: var(--recurly-yellow) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Chevron rotates when open */\n#recurly-changelog-header .rss-chevron {\n  font-size: 10px !important;\n  transition: transform 0.2s ease !important;\n}\n\n#recurly-changelog-header .rss-instructions-open .rss-chevron {\n  transform: rotate(180deg) !important;\n}\n\n/* Body panel */\n#recurly-changelog-header .rss-instructions-body {\n  margin-top: 14px !important;\n  padding: 16px 18px !important;\n  background: rgba(255, 253, 242, 0.04) !important;\n  border-radius: 8px !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n}\n\n/* Paragraphs — override the broad header p rule */\n#recurly-changelog-header .rss-instructions-body p {\n  font-size: 13px !important;\n  color: var(--recurly-lightgray) !important;\n  line-height: 1.65 !important;\n  margin: 0 0 10px !important;\n  opacity: 1 !important;\n}\n\n#recurly-changelog-header .rss-instructions-body p:last-child {\n  margin-bottom: 0 !important;\n}\n\n/* Ordered list */\n#recurly-changelog-header .rss-instructions-body ol {\n  margin: 10px 0 12px 0 !important;\n  padding-left: 20px !important;\n  list-style: decimal !important;\n}\n\n#recurly-changelog-header .rss-instructions-body ol li {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-lightgray) !important;\n  line-height: 1.65 !important;\n  margin-bottom: 6px !important;\n  opacity: 1 !important;\n}\n\n#recurly-changelog-header .rss-instructions-body ol li:last-child {\n  margin-bottom: 0 !important;\n}\n\n/* Strong inside body */\n#recurly-changelog-header .rss-instructions-body strong {\n  font-weight: 700 !important;\n  color: rgba(255, 253, 242, 0.92) !important;\n}\n\n/* Links (Feedly / Feeder) */\n#recurly-changelog-header .rss-instructions-body a {\n  color: var(--recurly-tangerine) !important;\n  text-decoration: none !important;\n  font-weight: 600 !important;\n}\n\n#recurly-changelog-header .rss-instructions-body a:hover {\n  text-decoration: underline !important;\n  text-decoration-color: var(--recurly-tangerine) !important;\n}\n\n/* Tip paragraph — yellow left-border callout */\n#recurly-changelog-header .rss-instructions-tip {\n  margin-top: 12px !important;\n  padding: 10px 12px !important;\n  background: rgba(255, 201, 0, 0.06) !important;\n  border-left: 3px solid var(--recurly-yellow) !important;\n  border-radius: 0 6px 6px 0 !important;\n  font-size: 12px !important;\n  color: var(--recurly-lightgray) !important;\n  display: flex !important;\n  gap: 8px !important;\n  align-items: flex-start !important;\n}\n\n#recurly-changelog-header .rss-instructions-tip i {\n  color: var(--recurly-yellow) !important;\n  font-size: 13px !important;\n  margin-top: 2px !important;\n  flex-shrink: 0 !important;\n}\n\n/* ── end RSS instructions collapsible ───────────────────── */\n\n@media (max-width: 640px) {\n  [class*=\"ChangelogPost_text\"] .rdmd-table tbody td:first-child,\n  [class*=\"ChangelogPost_text\"] .rdmd-table thead th:first-child {\n    display: none !important;\n  }\n  [class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(2) {\n    width: 130px !important;\n  }\n}\n\n/* ============================================================\n   PART 8 — rm-ToC animated active indicator\n   ============================================================ */\n\n.rm-ToC {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  position: relative !important;\n}\n\n.rm-ToC::before {\n  background: var(--recurly-yellow) !important;\n  transition: top 0.2s ease, height 0.2s ease !important;\n}\n\n.rm-ToC .toc-list,\n.rm-ToC .toc-list ul {\n  list-style: none !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n/* ============================================================\n   RECURLY READMETHEME — V8.1\n   ============================================================\n   Drop-in stylesheet for ReadMe's theme CSS. Five layers:\n\n     PART 1 — Recurly brand design system (rp-* classes)\n     PART 2 — ReadMe native code-snippet overrides\n     PART 3 — ReadMe native MDX component branding\n     PART 4 — ReadMe native table branding\n     PART 5 — Version selector branding\n\n   V8.1 changelog:\n     - rp-plan pill: offblack bg + yellow text, premium badge treatment.\n     - rp-btn-ghost hover: solid yellow bg + offblack text.\n     - rp-h2, rp-h3 first-child: margin-top: 0.\n     - Card (MDX): solid yellow bg, offblack icons, inverts on hover.\n     - Accordion chevron: offblack weight 900 for contrast.\n     - Sidebar container: border-right removed.\n     - h2.heading: yellow underline removed (h1 only).\n     - Tables: border-collapse separate, corner-cell radius, :has(thead)\n       scope on rdmd-table to prevent rule collision with rp-* tables.\n   ============================================================ */\n\n\n/* ============================================================\n   Brand color tokens\n   ============================================================ */\n\n:root {\n  /* =====================================================================\n     RECURLY BRAND v2 — palette source of truth\n     Neutrals follow the Off Black tint scale (OB1–OB5).\n     Secondary = Blue; accents = Poppy / Teal / Green (semantic success).\n     Legacy accent + gray names below are retained as aliases so every\n     existing rule keeps resolving — the values are remapped to brand v2.\n     ===================================================================== */\n\n  /* Primary */\n  --recurly-yellow:      #FFD706;\n  --recurly-offblack:    #0D0D0B;\n\n  /* Secondary — Blue */\n  --recurly-blue:        #008CFF;\n  --recurly-blue-hover:  #0067BE;   /* B Shade 1 — available for hover states */\n\n  /* Accents — use sparingly */\n  --recurly-poppy:       #FF5126;   /* errors / negative data */\n  --recurly-teal:        #2DCECE;   /* occasional data-viz / method accent */\n  --recurly-green:       #5DC32E;   /* semantic success */\n\n  /* Neutrals — Off Black tint scale */\n  --recurly-ob1:         #FCFBF7;   /* card surfaces */\n  --recurly-ob2:         #F2F1EA;   /* page / content backgrounds */\n  --recurly-ob3:         #D1CFC4;   /* borders, inactive states */\n  --recurly-ob4:         #807D75;   /* tertiary text, dividers */\n  --recurly-ob5:         #32312D;   /* secondary text, dark UI */\n\n  /* Neutral aliases (legacy names → OB scale) */\n  --recurly-offwhite:    var(--recurly-ob1);\n  --recurly-brightgray:  var(--recurly-ob2);\n  --recurly-lightgray:   var(--recurly-ob3);\n  --recurly-gray:        var(--recurly-ob4);\n  --recurly-darkgray:    var(--recurly-ob5);\n\n  /* Legacy accent aliases (remapped to brand v2) */\n  --recurly-tangerine:   var(--recurly-blue);     /* was #FF8200 — links / interactive */\n  --recurly-vermillion:  var(--recurly-poppy);    /* was #FF5810 — errors / DELETE / 4xx-5xx */\n  --recurly-salmon:      var(--recurly-poppy);    /* was #FF9D88 — deprecated; usages migrated to Teal/Green */\n  --recurly-deepchar:    var(--recurly-offblack); /* was #232932 — retired bluish neutral */\n  --recurly-darknavy:    var(--recurly-offblack); /* was #343F4B — retired bluish neutral */\n\n  --recurly-font: 'Figtree', 'Segoe UI', system-ui, sans-serif;\n\n  /* Shorthand set — mirrors the --recurly-* tokens above */\n  --yellow:      var(--recurly-yellow);\n  --offblack:    var(--recurly-offblack);\n  --blue:        var(--recurly-blue);\n  --blue-hover:  var(--recurly-blue-hover);\n  --poppy:       var(--recurly-poppy);\n  --teal:        var(--recurly-teal);\n  --green:       var(--recurly-green);\n  --tangerine:   var(--recurly-tangerine);\n  --vermillion:  var(--recurly-vermillion);\n  --salmon:      var(--recurly-salmon);\n  --darkgray:    var(--recurly-darkgray);\n  --gray:        var(--recurly-gray);\n  --lightgray:   var(--recurly-lightgray);\n  --brightgray:  var(--recurly-brightgray);\n  --offwhite:    var(--recurly-offwhite);\n  --deepchar:    var(--recurly-deepchar);\n  --darknavy:    var(--recurly-darknavy);\n  --font:        var(--recurly-font);\n\n  /* ReadMe markdown font tokens → Figtree */\n  --rm-font-body:    var(--recurly-font);\n  --rm-font-heading: var(--recurly-font);\n  --markdown-font:   var(--recurly-font);\n  --font-family:     var(--recurly-font);\n}\n\n\n/* ============================================================\n   PART 1 — Recurly brand design system (rp-* classes)\n   ============================================================ */\n\n*, *::before, *::after { box-sizing: border-box; }\n\n  .rp-page {\n    font-family: var(--font);\n    color: var(--deepchar);\n    font-size: 15px;\n    line-height: 1.6;\n    max-width: 860px;\n  }\n\n  .rp-overview {\n    border-left: 4px solid var(--yellow);\n    background: var(--offwhite);\n    padding: 16px 22px;\n    border-radius: 0 8px 8px 0;\n    margin-bottom: 20px;\n    font-size: 15px;\n    color: var(--darkgray);\n  }\n\n  .rp-plan {\n    display: inline-block;\n    background: var(--offblack) !important;\n    color: var(--yellow) !important;\n    border: 0 !important;\n    font-size: 13px;\n    font-weight: 700;\n    padding: 6px 16px;\n    border-radius: 20px;\n    margin-bottom: 24px;\n    letter-spacing: 0.3px;\n  }\n\n  .rp-cost {\n    border-left: 4px solid var(--tangerine);\n    background: #FFF8F2;\n    padding: 14px 20px;\n    border-radius: 0 8px 8px 0;\n    margin-bottom: 20px;\n    font-size: 14px;\n    color: var(--darkgray);\n  }\n  .rp-cost a { color: var(--tangerine); }\n\n  .rp-definition {\n    background: var(--brightgray);\n    border-radius: 10px;\n    padding: 22px 26px;\n    margin-bottom: 28px;\n    font-size: 15px;\n    color: var(--darkgray);\n    line-height: 1.7;\n  }\n\n  .rp-benefits {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));\n    gap: 14px;\n    margin-bottom: 32px;\n  }\n  .rp-benefits.rp-benefits-2x2 { grid-template-columns: repeat(2, 1fr); }\n  .rp-benefit {\n    background: var(--offblack) !important;\n    color: var(--offwhite) !important;\n    border-radius: 10px;\n    padding: 20px;\n  }\n  .rp-benefit-icon { color: var(--yellow) !important; font-size: 20px; margin-bottom: 10px; }\n  .rp-benefit strong {\n    display: block; font-size: 14px; font-weight: 700;\n    margin-bottom: 6px; color: var(--offwhite) !important;\n  }\n  .rp-benefit span { font-size: 13px; color: var(--lightgray) !important; line-height: 1.5; }\n  .rp-benefit code,\n  .rp-benefit code.rdmd-code,\n  .rp-benefit .rdmd-code {\n    background: rgba(255, 253, 242, 0.10) !important;\n    color: var(--tangerine) !important;\n    border-radius: 4px !important;\n    padding: 1px 5px !important;\n    font-size: 0.92em !important;\n    box-shadow: none !important;\n  }\n  .rp-h1 {\n    font-size: 1.5rem !important; font-weight: 800 !important; color: var(--offblack) !important;\n    margin: 36px 0 14px; padding-bottom: 8px;\n    border-bottom: 2px solid var(--yellow) !important;\n  }\n  .rp-h2 { font-size: 1.1rem !important; font-weight: 700 !important; color: var(--offblack) !important; margin: 28px 0 10px; border-bottom: 0 !important; padding-bottom: 0 !important; text-decoration: none !important; }\n  .rp-h3 { font-size: 0.95rem !important; font-weight: 700 !important; color: var(--darkgray) !important; margin: 20px 0 8px; border-bottom: 0 !important; padding-bottom: 0 !important; text-decoration: none !important; }\n  .rp-h4 { font-size: 0.9rem !important; font-weight: 600 !important; color: var(--darkgray) !important; margin: 16px 0 6px; border-bottom: 0 !important; padding-bottom: 0 !important; text-decoration: none !important; }\n\n  .rp-h2:first-child { margin-top: 0 !important; }\n  .rp-h3:first-child { margin-top: 0 !important; }\n\n  .rp-card {\n    background: var(--offwhite);\n    border: 1px solid var(--lightgray);\n    border-radius: 10px;\n    padding: 22px 26px;\n    margin-bottom: 20px;\n    font-size: 14px;\n    color: var(--darkgray);\n    line-height: 1.65;\n  }\n\n  .rp-steps { display: flex; flex-direction: column; margin-bottom: 24px; }\n  .rp-step {\n    display: flex; gap: 16px; align-items: flex-start;\n    background: var(--offwhite); border: 1px solid var(--lightgray);\n    border-radius: 10px; padding: 18px 22px;\n    margin-bottom: 12px;\n  }\n  .rp-steps .rp-step { margin-bottom: 0; }\n  .rp-steps .rp-step + .rp-step { margin-top: 12px; }\n  .rp-step-num {\n    width: 34px; height: 34px; border-radius: 50%;\n    background: var(--offblack); color: var(--yellow);\n    font-weight: 800; font-size: 14px;\n    display: flex; align-items: center; justify-content: center; flex-shrink: 0;\n  }\n  .rp-step h4 { font-size: 0.95rem; font-weight: 700; color: var(--offblack); margin: 0 0 4px; }\n  .rp-step p  { font-size: 0.87rem; color: var(--gray); line-height: 1.6; margin: 0; }\n\n  /* Callout icons: Note fa-info-circle | Tip fa-lightbulb | Warning fa-exclamation-triangle | Important fa-exclamation-circle */\n  .rp-callout {\n    border-radius: 0 8px 8px 0; padding: 14px 18px; margin: 16px 0;\n    font-size: 14px;\n  }\n  .rp-callout strong { display: inline; }\n  .rp-callout strong:first-child { display: block; margin-bottom: 4px; }\n  .rp-callout-note      { border-left: 4px solid var(--offblack); background: var(--brightgray); color: var(--offblack); }\n  .rp-callout-tip       { border-left: 4px solid var(--green);    background: #EFFAEA;           color: var(--offblack); }\n  .rp-callout-warning   { border-left: 4px solid var(--yellow);   background: #FFFECB;           color: var(--offblack); }\n  .rp-callout-important { border-left: 4px solid var(--poppy);    background: #FFEEE9;           color: var(--offblack); }\n\n  /* rp-btn-* rules moved outside this scoped block — see Part 1.5 below */\n\n  /* border-collapse: separate allows border-radius on corner \u003ctd> cells.\n     :has(thead) scoping on rdmd-table (Part 4) prevents that rule from\n     overriding these with border-collapse: collapse !important. */\n  .rp-gw-table { width: 100%; border-collapse: separate !important; border-spacing: 0 !important; font-size: 14px; margin-bottom: 28px; border-radius: 10px !important; border: 1px solid var(--lightgray); }\n  .rp-gw-table tr.rp-thead-row td {\n    background: var(--offblack) !important;\n    color: var(--offwhite) !important;\n    font-weight: 700;\n    padding: 12px 16px;\n  }\n  .rp-gw-table tr.rp-thead-row td:first-child { color: var(--offwhite) !important; }\n  .rp-gw-table td { padding: 12px 16px; vertical-align: top; background: var(--offwhite) !important; }\n  .rp-gw-table tr:not(.rp-thead-row) td:first-child { font-weight: 600; color: var(--offblack); width: 35%; }\n  .rp-gw-table a { color: var(--tangerine); }\n  .rp-gw-table tr:first-child td:first-child { border-top-left-radius:    9px; }\n  .rp-gw-table tr:first-child td:last-child  { border-top-right-radius:   9px; }\n  .rp-gw-table tr:last-child  td:first-child { border-bottom-left-radius:  9px; }\n  .rp-gw-table tr:last-child  td:last-child  { border-bottom-right-radius: 9px; }\n\n  .rp-pm-table { width: 100%; border-collapse: separate !important; border-spacing: 0 !important; font-size: 13px; margin: 12px 0 24px; border-radius: 10px !important; border: 1px solid var(--lightgray); }\n  .rp-pm-table tr.rp-thead-row td {\n    background: var(--offblack) !important;\n    color: var(--offwhite) !important;\n    font-weight: 700;\n    padding: 10px 12px;\n  }\n  .rp-pm-table tr.rp-thead-row td:first-child { color: var(--offwhite) !important; }\n  .rp-pm-table td { padding: 10px 12px; border-bottom: 1px solid var(--lightgray); vertical-align: top; background: var(--offwhite) !important; }\n  .rp-pm-table tr:last-child td { border-bottom: 0 !important; }\n  .rp-pm-table tr:first-child td:first-child { border-top-left-radius:    9px; }\n  .rp-pm-table tr:first-child td:last-child  { border-top-right-radius:   9px; }\n  .rp-pm-table tr:last-child  td:first-child { border-bottom-left-radius:  9px; }\n  .rp-pm-table tr:last-child  td:last-child  { border-bottom-right-radius: 9px; }\n\n  .rp-params { width: 100%; border-collapse: separate !important; border-spacing: 0 !important; font-size: 14px; margin: 12px 0 24px; border-radius: 10px !important; border: 1px solid var(--lightgray); }\n  .rp-params tr.rp-thead-row td {\n    background: var(--offblack) !important;\n    color: var(--offwhite) !important;\n    font-weight: 700;\n    padding: 10px 14px;\n  }\n  .rp-params tr.rp-thead-row td:first-child { color: var(--offwhite) !important; }\n  .rp-params td { padding: 10px 14px; border-bottom: 1px solid var(--lightgray); vertical-align: top; background: var(--offwhite) !important; }\n  .rp-params tr:last-child td { border-bottom: 0 !important; }\n  .rp-params tr:not(.rp-thead-row) td:first-child { font-weight: 600; color: var(--offblack); width: 28%; }\n  .rp-params tr:first-child td:first-child { border-top-left-radius:    9px; }\n  .rp-params tr:first-child td:last-child  { border-top-right-radius:   9px; }\n  .rp-params tr:last-child  td:first-child { border-bottom-left-radius:  9px; }\n  .rp-params tr:last-child  td:last-child  { border-bottom-right-radius: 9px; }\n\n  .rp-btn-download {\n    display: inline-flex !important; align-items: center !important; gap: 8px !important;\n    background: var(--yellow) !important; color: var(--offblack) !important;\n    font-family: var(--font) !important; font-size: 14px !important; font-weight: 700 !important;\n    padding: 10px 22px !important; border-radius: 8px !important; text-decoration: none !important;\n    margin-bottom: 20px !important; border: 0 !important; cursor: pointer !important;\n    transition: filter 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease !important;\n  }\n  .rp-btn-download:hover {\n    filter: brightness(0.92) !important;\n    transform: translateY(-1px) !important;\n    box-shadow: 0 4px 12px rgba(255, 215, 6, 0.25) !important;\n  }\n  .rp-btn-download:active {\n    transform: scale(0.97) translateY(0) !important;\n    box-shadow: 0 1px 4px rgba(255, 215, 6, 0.15) !important;\n    filter: brightness(0.85) !important;\n  }\n\n  .rp-list {\n    background: var(--offwhite); border: 1px solid var(--lightgray);\n    border-radius: 10px; padding: 16px 22px 16px 38px;\n    margin-bottom: 20px; font-size: 14px; color: var(--darkgray); line-height: 1.7;\n  }\n\n  .rp-video { position: relative; padding-top: 56.25%; margin-bottom: 28px;\n              border-radius: 10px; overflow: hidden; }\n  .rp-video iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; }\n\n  /* ── IFRAME SIZING ───────────────────────────────────────────\n     The project-specific CSS applies a blanket iframe height for\n     non-video contexts. These two rules ensure that iframes inside\n     a padding-top aspect-ratio wrapper (Wistia embeds) always fill\n     the container correctly, regardless of that blanket rule.\n     The :not selector excludes video embeds from the blanket rule;\n     the child selector restores correct sizing inside wrappers.\n     ──────────────────────────────────────────────────────────── */\n  iframe:not([style*=\"position: absolute\"]):not([style*=\"position:absolute\"]) {\n    width: 100%;\n    height: 450px;\n  }\n\n  [style*=\"padding-top\"] > iframe,\n  [style*=\"paddingTop\"] > iframe {\n    position: absolute !important;\n    top: 0 !important;\n    left: 0 !important;\n    width: 100% !important;\n    height: 100% !important;\n    border: none !important;\n  }\n\n  /* ── NATIVE IMAGE COMPONENT — ALIGNMENT ─────────────────────\n     ReadMe's \u003cImage align=\"center\"> renders as:\n       span.img.img-align-center\n         span.lightbox-inner\n           img.img\n     The span is display:block by default; margin:auto handles centering.\n     text-align:center covers inline-block fallback contexts.\n     ──────────────────────────────────────────────────────────── */\n  .img.img-align-center,\n  span.img.img-align-center {\n    display: block !important;\n    margin-left: auto !important;\n    margin-right: auto !important;\n    text-align: center !important;\n  }\n\n  /* ── IMAGE LIGHTBOX ─────────────────────────────────────────\n     ReadMe renders our \u003ca class=\"rp-zoom-label\">\u003cimg> as:\n       span.img.lightbox.closed\n         span.lightbox-inner\n           img.img[width=\"auto\"][height=\"auto\"]\n     When clicked, ReadMe's native JS opens its own lightbox.\n     We style the inline image only — sizing, border, hover.\n     The open-state lightbox is left to ReadMe's native behavior.\n\n     IMPORTANT: rp-zoom-label anchors must NEVER have target=\"_blank\".\n     When target=\"_blank\" is present, ReadMe skips lightbox conversion\n     and renders a real \u003ca> that opens/downloads the image in a new tab.\n     Keep the \u003ca> as a plain href with no target attribute.\n     ──────────────────────────────────────────────────────── */\n  .rp-zoom { display: contents; }\n  .rp-zoom-label { display: block; }\n\n  /* Defensive rule: if the anchor survives as a real \u003ca> (lightbox\n     conversion skipped), block navigation so the image isn't downloaded. */\n  a.rp-zoom-label {\n    pointer-events: none !important;\n  }\n  a.rp-zoom-label .img.lightbox,\n  a.rp-zoom-label span.img {\n    pointer-events: auto !important;\n    cursor: zoom-in !important;\n  }\n\n  /* Hide the legacy :target overlay anchor — still present in page MDX\n     but no longer needed now that ReadMe's native lightbox handles clicks */\n  .rp-zoom-overlay { display: none !important; }\n\n  /* Outermost wrapper — controls width and centering */\n  .rp-zoom-label .img.lightbox,\n  .rp-zoom-label span.img {\n    display: block !important;\n    width: 90% !important;\n    max-width: 860px !important;\n    margin: 16px auto !important;\n    cursor: zoom-in !important;\n  }\n  /* Inner span */\n  .rp-zoom-label .lightbox-inner {\n    display: block !important;\n    width: 100% !important;\n  }\n  /* The actual image — box-shadow for border (immune to border:none resets) */\n  .rp-zoom-label .lightbox-inner img,\n  .rp-zoom-label img.img,\n  .rp-zoom-img {\n    display: block !important;\n    width: 100% !important;\n    height: auto !important;\n    max-width: 100% !important;\n    border-radius: 8px !important;\n    box-shadow: 0 0 0 1px #D1CFC4 !important;\n    transition: opacity 0.15s ease;\n    box-sizing: border-box !important;\n  }\n  .rp-zoom-label:hover .lightbox-inner img,\n  .rp-zoom-label:hover img.img { opacity: 0.88; }\n\n  /* Small images — add class=\"rp-zoom-small\" directly on the \u003ca class=\"rp-zoom-label\"> */\n  /* The \u003cdiv class=\"rp-zoom-small\"> wrapper approach fails: ReadMe's MDX parser strips\n     block-level elements (div) from inline/paragraph contexts before the DOM is built,\n     so the div never renders and no descendant selectors fire.\n     Solution: apply rp-zoom-small as an additional class on the \u003ca> anchor itself.\n     Scope to .img.lightbox.closed (not .open) — ReadMe toggles closed→open on click,\n     not removes the class. The open lightbox renders in a separate fixed full-screen\n     overlay so the anchor width cap must not apply when open. */\n  a.rp-zoom-label.rp-zoom-small {\n    display: block !important;\n    max-width: 320px !important;\n    width: 320px !important;\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  a.rp-zoom-label.rp-zoom-small .img.lightbox.closed,\n  a.rp-zoom-label.rp-zoom-small span.img.closed {\n    max-width: 320px !important;\n    width: 320px !important;\n  }\n\n  /* When open: release all size constraints so the full-screen overlay renders naturally */\n  a.rp-zoom-label.rp-zoom-small .img.lightbox.open,\n  a.rp-zoom-label.rp-zoom-small span.img.open {\n    max-width: none !important;\n    width: 90% !important;\n  }\n\n  .rp-toc {\n    display: flex; flex-wrap: wrap; gap: 8px;\n    margin: 0 0 32px;\n  }\n  .rp-toc-pill {\n    display: inline-flex; align-items: center; gap: 8px;\n    padding: 8px 18px 8px 10px; border-radius: 20px;\n    border: 1px solid var(--offblack) !important; background: var(--offblack) !important;\n    color: var(--offwhite) !important; text-decoration: none !important;\n    font-size: 13px; font-weight: 700;\n    white-space: nowrap;\n    transition: background 0.15s, border-color 0.15s, color 0.15s;\n  }\n  .rp-toc-pill:hover {\n    background: var(--tangerine) !important;\n    border-color: var(--tangerine) !important;\n    color: var(--offblack) !important;\n  }\n  .rp-toc-num {\n    display: inline-flex; align-items: center; justify-content: center;\n    width: 24px; height: 24px; border-radius: 50%;\n    background: var(--yellow) !important; color: var(--offblack) !important;\n    font-size: 11px; font-weight: 800; flex-shrink: 0;\n    text-decoration: none !important;\n  }\n\n  .rp-anchor {\n    color: inherit !important;\n    text-decoration: none !important;\n    font-size: inherit !important;\n    font-weight: inherit !important;\n    border-bottom: 0 !important;\n  }\n  .rp-anchor::after {\n    content: \" #\"; opacity: 0;\n    color: var(--lightgray); font-weight: 400; font-size: 0.75em;\n    transition: opacity 0.15s;\n  }\n  .rp-anchor:hover::after { opacity: 1; }\n\n  .rp-page ol:not(.rp-list), .rp-page ul:not(.rp-list) {\n    margin: 8px 0 16px;\n    padding-left: 24px;\n  }\n  .rp-page ol:not(.rp-list) li, .rp-page ul:not(.rp-list) li {\n    margin-bottom: 6px;\n    line-height: 1.6;\n  }\n\n  @media (max-width: 640px) {\n    .rp-benefits,\n    .rp-benefits.rp-benefits-2x2 { grid-template-columns: 1fr; }\n    .rp-h1 { font-size: 1.25rem; }\n  }\n\n\n/* ============================================================\n   PART 1.5 — rp-btn-* navigation buttons\n   ============================================================\n   Placed OUTSIDE the scoped :root theme block so these rules\n   run at top-level specificity. Scoped under .rm-Markdown to\n   beat ReadMe's own .rm-Markdown.markdown-body a rules which\n   apply tangerine color, border-radius-full, and borders to\n   all \u003ca> elements.\n\n   Every variant is self-contained (single class). ReadMe's MDX\n   parser mangles space-separated multi-class strings on \u003ca>\n   elements into comma-separated values — \"rp-btn rp-btn-primary\"\n   becomes the literal class \"rp-btn,rp-btn-primary\" which matches\n   nothing. Single class only, always.\n\n   Token values are hardcoded here (not var()) because these rules\n   sit outside the :root scoped block where the shorthand tokens\n   (--yellow, --offblack, etc.) are defined.\n   ============================================================ */\n\n.rm-Markdown.markdown-body a.rp-btn-primary,\n.rm-Markdown.markdown-body .rp-btn-primary {\n  display: inline-block !important;\n  padding: 10px 22px !important;\n  border-radius: 8px !important;\n  border: 0 !important;\n  box-shadow: none !important;\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  font-family: var(--recurly-font) !important;\n  text-decoration: none !important;\n  cursor: pointer !important;\n  margin: 6px 8px 6px 0 !important;\n  background: #0D0D0B !important;\n  color: #FFD706 !important;\n  transition: all 0.15s ease !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-primary:hover,\n.rm-Markdown.markdown-body .rp-btn-primary:hover {\n  background: #32312D !important;\n  color: #FFD706 !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 4px 12px rgba(13, 13, 11, 0.15) !important;\n}\n\n.rm-Markdown.markdown-body a.rp-btn-secondary,\n.rm-Markdown.markdown-body .rp-btn-secondary {\n  display: inline-block !important;\n  padding: 10px 22px !important;\n  border-radius: 8px !important;\n  border: 0 !important;\n  box-shadow: none !important;\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  font-family: var(--recurly-font) !important;\n  text-decoration: none !important;\n  cursor: pointer !important;\n  margin: 6px 8px 6px 0 !important;\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  transition: all 0.15s ease !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-secondary:hover,\n.rm-Markdown.markdown-body .rp-btn-secondary:hover {\n  filter: brightness(0.9) !important;\n  color: #0D0D0B !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 4px 12px rgba(255, 215, 6, 0.2) !important;\n}\n\n.rm-Markdown.markdown-body a.rp-btn-ghost,\n.rm-Markdown.markdown-body .rp-btn-ghost {\n  display: inline-block !important;\n  padding: 10px 22px !important;\n  border-radius: 8px !important;\n  border: 1px solid #D1CFC4 !important;\n  box-shadow: none !important;\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  font-family: var(--recurly-font) !important;\n  text-decoration: none !important;\n  cursor: pointer !important;\n  margin: 6px 8px 6px 0 !important;\n  background: transparent !important;\n  color: #32312D !important;\n  transition: all 0.15s ease !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-ghost:hover,\n.rm-Markdown.markdown-body .rp-btn-ghost:hover {\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  border-color: #FFD706 !important;\n}\n\n.rm-Markdown.markdown-body a.rp-btn-download,\n.rm-Markdown.markdown-body .rp-btn-download {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  padding: 10px 22px !important;\n  border-radius: 8px !important;\n  border: 0 !important;\n  box-shadow: none !important;\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  font-family: var(--recurly-font) !important;\n  text-decoration: none !important;\n  cursor: pointer !important;\n  margin-bottom: 20px !important;\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  transition: filter 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-download:hover,\n.rm-Markdown.markdown-body .rp-btn-download:hover {\n  filter: brightness(0.92) !important;\n  color: #0D0D0B !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 4px 12px rgba(255, 215, 6, 0.25) !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-download:active,\n.rm-Markdown.markdown-body .rp-btn-download:active {\n  transform: scale(0.97) translateY(0) !important;\n  box-shadow: 0 1px 4px rgba(255, 215, 6, 0.15) !important;\n  filter: brightness(0.85) !important;\n}\n\n/* ——— Collapse \u003cp> wrapper margin around button anchors ———\n   ReadMe wraps standalone \u003ca> elements in a \u003cp> tag which carries\n   margin-bottom: 15px from the markdown body styles. Zero it out\n   when the paragraph contains only a button anchor. */\n.rm-Markdown.markdown-body p:has(> a.rp-btn-primary),\n.rm-Markdown.markdown-body p:has(> a.rp-btn-secondary),\n.rm-Markdown.markdown-body p:has(> a.rp-btn-ghost),\n.rm-Markdown.markdown-body p:has(> a.rp-btn-download) {\n  margin-bottom: 0 !important;\n  margin-top: 0 !important;\n}\n\n\n/* ============================================================\n   PART 1.6 — rp-shelf-* spotlight carousel\n   ============================================================\n   Interactive category shelf used on browsable overview pages\n   (e.g., \"More uses\"). Three variants:\n\n     .rp-shelf-single    → 1 card, centered. No carousel.\n     .rp-shelf-pair      → 2 cards, both fully lit. No carousel.\n     .rp-shelf-carousel  → 3+ cards, infinite loop. Active card\n                           centered at 100% opacity, neighbors at\n                           30% opacity. Requires the companion\n                           rp-shelf init script in Custom JS.\n\n   Expected structure (rendered inside HTMLBlock):\n\n     \u003cdiv class=\"rp-shelf rp-shelf-carousel\">\n       \u003cdiv class=\"rp-shelf-header\">\n         \u003cdiv class=\"rp-shelf-label\">\u003ci class=\"fa-solid fa-*\">\u003c/i>Category\u003c/div>\n         \u003cdiv class=\"rp-shelf-count\">N scenarios\u003c/div>\n       \u003c/div>\n       \u003cdiv class=\"rp-shelf-viewport\">\n         \u003cdiv class=\"rp-shelf-track\">\n           \u003cdiv class=\"rp-shelf-card\">\n             \u003cstrong>Title\u003c/strong>\n             \u003cspan>Body copy.\u003c/span>\n           \u003c/div>\n           ...\n         \u003c/div>\n       \u003c/div>\n       \u003cdiv class=\"rp-shelf-controls\">\n         \u003cbutton class=\"rp-shelf-btn rp-shelf-prev\">...\u003c/button>\n         \u003cbutton class=\"rp-shelf-btn rp-shelf-next\">...\u003c/button>\n       \u003c/div>\n     \u003c/div>\n\n   Token values are hardcoded (not var()) because these rules\n   sit outside the :root scoped block where the shorthand tokens\n   (--yellow, --offblack, etc.) are defined — same pattern as\n   PART 1.5.\n   ============================================================ */\n\n/* ——— Outer container: dark hero panel with soft yellow glow ——— */\n.rp-shelf {\n  background: #0D0D0B;\n  border-radius: 16px;\n  padding: 24px 20px 20px;\n  margin-bottom: 20px;\n  box-shadow:\n    0 0 0 1px rgba(255, 215, 6, 0.10),\n    0 24px 60px -30px rgba(255, 215, 6, 0.20);\n}\n\n/* ——— Header: yellow pill label + muted count ——— */\n.rp-shelf-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin-bottom: 18px;\n}\n.rp-shelf-label {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  background: #FFD706;\n  color: #0D0D0B;\n  font-size: 13px;\n  font-weight: 700;\n  padding: 6px 16px;\n  border-radius: 20px;\n  letter-spacing: 0.3px;\n  font-family: var(--recurly-font);\n}\n.rp-shelf-count {\n  font-size: 11px;\n  color: rgba(252, 251, 247, 0.45);\n  letter-spacing: 1.2px;\n  text-transform: uppercase;\n  font-weight: 600;\n  font-family: var(--recurly-font);\n}\n\n/* ——— Viewport clips overflow; track holds the cards ——— */\n.rp-shelf-viewport {\n  overflow: hidden;\n}\n.rp-shelf-track {\n  display: flex;\n  gap: 14px;\n  will-change: transform;\n}\n\n/* ——— Cards: dimmed by default, spotlit when .rp-active ——— */\n.rp-shelf-card {\n  background: linear-gradient(135deg, #1C1B18 0%, #0D0D0B 100%);\n  border: 1px solid rgba(255, 215, 6, 0.15);\n  border-radius: 12px;\n  padding: 24px 26px;\n  min-height: 140px;\n  opacity: 0.3;\n  transform: scale(0.95);\n  transition:\n    opacity 0.5s ease,\n    transform 0.5s ease,\n    border-color 0.5s ease,\n    box-shadow 0.5s ease;\n}\n.rp-shelf-card strong {\n  display: block;\n  font-size: 15px;\n  font-weight: 700;\n  color: #FCFBF7;\n  margin-bottom: 10px;\n  font-family: var(--recurly-font);\n}\n.rp-shelf-card span {\n  display: block;\n  font-size: 13px;\n  color: rgba(252, 251, 247, 0.70);\n  line-height: 1.65;\n  font-family: var(--recurly-font);\n}\n.rp-shelf-card a {\n  color: #FFD706;\n  text-decoration: underline;\n}\n.rp-shelf-card.rp-active {\n  opacity: 1;\n  transform: scale(1);\n  border-color: rgba(255, 215, 6, 0.35);\n  box-shadow:\n    0 0 40px -10px rgba(255, 215, 6, 0.25),\n    0 0 0 1px rgba(255, 215, 6, 0.20);\n}\n\n/* ——— Carousel variant (3+ cards): 3 visible at a time ——— */\n.rp-shelf-carousel .rp-shelf-card {\n  flex: 0 0 calc((100% - 28px) / 3);\n}\n.rp-shelf-carousel .rp-shelf-track {\n  transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* ——— Static variants (1 or 2 cards): no carousel, all lit ——— */\n.rp-shelf-pair .rp-shelf-track,\n.rp-shelf-single .rp-shelf-track {\n  justify-content: center;\n}\n.rp-shelf-pair .rp-shelf-card {\n  flex: 0 0 calc((100% - 14px) / 2);\n}\n.rp-shelf-single .rp-shelf-card {\n  flex: 0 0 88%;\n}\n.rp-shelf-pair .rp-shelf-card,\n.rp-shelf-single .rp-shelf-card {\n  opacity: 1;\n  transform: none;\n  border-color: rgba(255, 215, 6, 0.30);\n}\n\n/* ——— Controls (rendered only in .rp-shelf-carousel) ——— */\n.rp-shelf-controls {\n  display: flex;\n  justify-content: center;\n  gap: 16px;\n  margin-top: 20px;\n}\n.rp-shelf-btn {\n  width: 44px !important;\n  height: 44px !important;\n  border-radius: 50% !important;\n  border: 1px solid rgba(255, 215, 6, 0.25) !important;\n  background: transparent !important;\n  color: #FFD706 !important;\n  font-size: 14px !important;\n  cursor: pointer !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  padding: 0 !important;\n  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;\n}\n.rp-shelf-btn:hover {\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  border-color: #FFD706 !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 4px 20px rgba(255, 215, 6, 0.35) !important;\n}\n.rp-shelf-btn:active {\n  transform: translateY(0) !important;\n}\n.rp-shelf-btn:focus-visible {\n  outline: 2px solid #FFD706 !important;\n  outline-offset: 2px !important;\n}\n\n/* ——— Mobile: ~1 card visible, larger touch targets ——— */\n@media (max-width: 640px) {\n  .rp-shelf-carousel .rp-shelf-card { flex: 0 0 82%; }\n  .rp-shelf-pair .rp-shelf-card { flex: 0 0 88%; }\n  .rp-shelf-pair .rp-shelf-track {\n    overflow-x: auto;\n    justify-content: flex-start;\n    scroll-snap-type: x mandatory;\n    padding-bottom: 6px;\n  }\n  .rp-shelf-pair .rp-shelf-card {\n    scroll-snap-align: center;\n  }\n}\n\n\n/* ============================================================\n   PART 2 — ReadMe native code-snippet overrides\n   ============================================================ */\n\n.CodeTabs,\n.CodeTabs.theme-light,\n.CodeTabs.theme-dark,\n.CodeTabs.CodeTabs_initial {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 10px !important;\n  margin: 16px 0 24px !important;\n  overflow: hidden !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 13px !important;\n  line-height: 1.55 !important;\n}\n\n.CodeTabs-toolbar {\n  background: var(--recurly-offblack) !important;\n  border-bottom: 1px solid var(--recurly-darkgray) !important;\n  padding: 8px 14px !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 4px !important;\n  flex-wrap: wrap !important;\n}\n\n/* ── CodeTabs toolbar buttons ─────────────────────────────────\n   ReadMe's JS adds class=\"CodeTabs_active\" to the selected button.\n   DOM confirmed: \u003cbutton class=\"CodeTabs_active\">Language\u003c/button>\n   ──────────────────────────────────────────────────────────── */\n\n.CodeTabs { --color-tab-active: #FFD706; }\n\n/* Base — all buttons */\n.CodeTabs-toolbar button {\n  background: transparent !important;\n  border: 0 !important;\n  color: var(--recurly-lightgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  padding: 5px 12px !important;\n  border-radius: 14px !important;\n  cursor: pointer !important;\n  transition: background 0.12s, color 0.12s !important;\n}\n\n/* Hover — inactive tabs only */\n.CodeTabs-toolbar button:not(.CodeTabs_active):hover {\n  background: transparent !important;\n  color: #FFD706 !important;\n}\n\n/* Active tab — ReadMe adds class=\"CodeTabs_active\" on the selected button */\n.CodeTabs-toolbar button.CodeTabs_active {\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  border-radius: 14px !important;\n  cursor: default !important;\n  opacity: 1 !important;\n  pointer-events: none !important;\n}\n\n/* Single-language block — plain yellow text label, never a pill */\n.CodeTabs-toolbar:has(> button:only-child) > button {\n  background: transparent !important;\n  color: #FFD706 !important;\n  border-radius: 0 !important;\n  cursor: default !important;\n  pointer-events: none !important;\n  opacity: 1 !important;\n}\n\n\n.CodeTabs-inner {\n  background: var(--recurly-offblack) !important;\n  position: relative !important;\n}\n\n.CodeTabs-inner pre {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  margin: 0 !important;\n  padding: 16px 18px !important;\n  border: 0 !important;\n  border-radius: 0 !important;\n  overflow-x: auto !important;\n  position: relative !important;\n}\n\n.CodeTabs-inner pre code,\n.CodeTabs code.rdmd-code {\n  background: transparent !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: inherit !important;\n  font-size: inherit !important;\n  line-height: inherit !important;\n  padding: 0 !important;\n}\n\n.CodeTabs .rdmd-code-copy {\n  background: transparent !important;\n  border: 1px solid var(--recurly-gray) !important;\n  color: var(--recurly-lightgray) !important;\n  border-radius: 6px !important;\n  padding: 4px 10px !important;\n  cursor: pointer !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n.CodeTabs .rdmd-code-copy:hover,\n.CodeTabs .rdmd-code-copy:focus {\n  background: var(--recurly-tangerine) !important;\n  border-color: var(--recurly-tangerine) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n.CodeTabs .rdmd-code-copy.fa::before { color: inherit !important; }\n\npre > code.rdmd-code:not(.CodeTabs *) {\n  display: block !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 10px !important;\n  margin: 16px 0 24px !important;\n  padding: 16px 18px !important;\n  overflow-x: auto !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 13px !important;\n  line-height: 1.55 !important;\n  white-space: pre !important;\n}\n\npre:has(> code.rdmd-code):not(.CodeTabs *) {\n  background: transparent !important;\n  border: 0 !important;\n  padding: 0 !important;\n  margin: 0 !important;\n}\n\n.CodeTabs code.rdmd-code .cm-s-neo,\n.CodeTabs code.rdmd-code .cm-s-neo span,\npre > code.rdmd-code .cm-s-neo,\npre > code.rdmd-code .cm-s-neo span { color: var(--recurly-offwhite) !important; }\n\n.CodeTabs code.rdmd-code .cm-s-neo .cm-keyword,\npre > code.rdmd-code .cm-s-neo .cm-keyword     { color: var(--recurly-yellow)     !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-def,\npre > code.rdmd-code .cm-s-neo .cm-def         { color: var(--recurly-tangerine)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-attribute,\npre > code.rdmd-code .cm-s-neo .cm-attribute   { color: var(--recurly-tangerine)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-string,\npre > code.rdmd-code .cm-s-neo .cm-string      { color: var(--recurly-green)      !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-string-2,\npre > code.rdmd-code .cm-s-neo .cm-string-2    { color: var(--recurly-green)      !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-number,\npre > code.rdmd-code .cm-s-neo .cm-number      { color: var(--recurly-vermillion) !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-comment,\npre > code.rdmd-code .cm-s-neo .cm-comment     { color: var(--recurly-gray)       !important; font-style: italic; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-meta,\npre > code.rdmd-code .cm-s-neo .cm-meta        { color: var(--recurly-tangerine)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-tag,\npre > code.rdmd-code .cm-s-neo .cm-tag         { color: var(--recurly-yellow)     !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-builtin,\npre > code.rdmd-code .cm-s-neo .cm-builtin     { color: var(--recurly-yellow)     !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-atom,\npre > code.rdmd-code .cm-s-neo .cm-atom        { color: var(--recurly-vermillion) !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-variable,\npre > code.rdmd-code .cm-s-neo .cm-variable    { color: var(--recurly-offwhite)   !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-variable-2,\npre > code.rdmd-code .cm-s-neo .cm-variable-2  { color: var(--recurly-offwhite)   !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-variable-3,\npre > code.rdmd-code .cm-s-neo .cm-variable-3  { color: var(--recurly-lightgray)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-property,\npre > code.rdmd-code .cm-s-neo .cm-property    { color: var(--recurly-lightgray)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-operator,\npre > code.rdmd-code .cm-s-neo .cm-operator    { color: var(--recurly-lightgray)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-punctuation,\npre > code.rdmd-code .cm-s-neo .cm-punctuation { color: var(--recurly-gray)       !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-bracket,\npre > code.rdmd-code .cm-s-neo .cm-bracket     { color: var(--recurly-lightgray)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-qualifier,\npre > code.rdmd-code .cm-s-neo .cm-qualifier   { color: var(--recurly-tangerine)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-link,\npre > code.rdmd-code .cm-s-neo .cm-link        { color: var(--recurly-yellow)     !important; text-decoration: underline !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-error,\npre > code.rdmd-code .cm-s-neo .cm-error       { color: var(--recurly-vermillion) !important; }\n\n\n/* ============================================================\n   PART 3 — ReadMe native MDX component branding\n   ============================================================ */\n\n.Accordion {\n  background: transparent !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 10px !important;\n  margin-bottom: 12px !important;\n  overflow: hidden !important;\n  font-family: var(--recurly-font) !important;\n}\n\n.Accordion-title {\n  list-style: none !important;\n  cursor: pointer !important;\n  padding: 16px 22px !important;\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-offblack) !important;\n  background: var(--recurly-yellow) !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 12px !important;\n  transition: background 0.15s, color 0.15s !important;\n}\n\n.Accordion-title::-webkit-details-marker { display: none !important; }\n.Accordion-title::marker { content: \"\" !important; }\n\n.Accordion-title:hover {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n}\n\n.Accordion[open] .Accordion-title {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n}\n\n.Accordion-toggleIcon {\n  color: var(--recurly-offblack) !important;\n  font-size: 13px !important;\n  font-weight: 900 !important;\n  transition: transform 0.2s, color 0.15s !important;\n  flex-shrink: 0 !important;\n  width: 14px !important;\n  text-align: center !important;\n}\n\n.Accordion-title:hover .Accordion-toggleIcon,\n.Accordion[open] .Accordion-title .Accordion-toggleIcon {\n  color: var(--recurly-yellow) !important;\n}\n\n.Accordion[open] .Accordion-toggleIcon {\n  transform: rotate(90deg) !important;\n}\n\n.Accordion-icon {\n  color: var(--recurly-offblack) !important;\n  --fa-primary-color: var(--recurly-offblack) !important;\n  --fa-secondary-color: var(--recurly-offblack) !important;\n  font-size: 15px !important;\n  flex-shrink: 0 !important;\n  width: 16px !important;\n  text-align: center !important;\n  transition: color 0.15s !important;\n}\n\n.Accordion-title:hover .Accordion-icon,\n.Accordion[open] .Accordion-title .Accordion-icon {\n  color: var(--recurly-yellow) !important;\n  --fa-primary-color: var(--recurly-yellow) !important;\n  --fa-secondary-color: var(--recurly-yellow) !important;\n}\n\n.Accordion-content {\n  padding: 16px 22px 18px 48px !important;\n  font-size: 14px !important;\n  line-height: 1.65 !important;\n  color: var(--recurly-darkgray) !important;\n}\n\n.Accordion-content p { margin: 0 0 10px !important; }\n.Accordion-content p:last-child { margin-bottom: 0 !important; }\n.Accordion-content a { color: var(--recurly-tangerine) !important; }\n.Accordion-content code {\n  background: var(--recurly-brightgray) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 0.92em !important;\n}\n\n.CardsGrid {\n  display: grid !important;\n  grid-template-columns: repeat(min(var(--CardsGrid-columns, 3), 3), minmax(var(--CardsGrid-cardWidth, 200px), 1fr)) !important;\n  gap: 14px !important;\n  margin: 16px 0 24px !important;\n}\n\n.Card,\n.Card.Card_card {\n  display: flex !important;\n  flex-direction: column !important;\n  gap: 14px !important;\n  background: var(--recurly-yellow) !important;\n  border: 0 !important;\n  border-radius: 10px !important;\n  padding: 20px !important;\n  text-decoration: none !important;\n  transition: background 0.15s, transform 0.15s, box-shadow 0.15s !important;\n  font-family: var(--recurly-font) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n.Card:hover,\n.Card.Card_card:hover {\n  background: var(--recurly-offblack) !important;\n  transform: translateY(-2px) !important;\n  box-shadow: 0 6px 14px rgba(13, 13, 11, 0.20) !important;\n  text-decoration: none !important;\n}\n\n.Card-icon {\n  color: var(--recurly-offblack) !important;\n  font-size: 22px !important;\n  width: 22px !important;\n  height: 22px !important;\n  flex-shrink: 0 !important;\n  filter: none !important;\n}\n\n.Card:hover .Card-icon { color: var(--recurly-yellow) !important; }\n\n.Card-content { display: flex !important; flex-direction: column !important; gap: 6px !important; }\n\n.Card-title {\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-offblack) !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: space-between !important;\n  gap: 8px !important;\n  line-height: 1.3 !important;\n}\n\n.Card:hover .Card-title { color: var(--recurly-offwhite) !important; }\n\n.Card-arrow {\n  color: var(--recurly-offblack) !important;\n  font-size: 13px !important;\n  transition: transform 0.15s !important;\n  flex-shrink: 0 !important;\n}\n\n.Card:hover .Card-arrow { transform: translateX(3px) !important; color: var(--recurly-yellow) !important; }\n\n\n/* ── FA6 DUOTONE DOUBLING FIX ────────────────────────────────\n   ReadMe's Card component outputs fa-duotone + fa-solid together.\n   In FA6 Pro, fa-duotone switches the font-family to the Duotone\n   font which renders two pseudo-element layers — causing doubled\n   or incomplete icons when the two layers don't align.\n   Fix: force the FA6 Pro solid font-family on these combos so\n   the icon renders as a clean single-layer solid icon.\n   This overrides the font-family set by fa-duotone without\n   touching the pseudo-elements, preserving icon completeness.\n   ──────────────────────────────────────────────────────────── */\n.fa-duotone.fa-solid,\n.fad.fa-solid {\n  font-family: \"Font Awesome 6 Pro\" !important;\n  font-weight: 900 !important;\n}\n.fa-duotone.fa-solid::after,\n.fad.fa-solid::after {\n  display: none !important;\n}\n.fa-duotone.fa-solid::before,\n.fad.fa-solid::before {\n  position: static !important;\n  opacity: 1 !important;\n}\n\n.Card p,\n.Card-body,\n.Card-content,\n.Card-content p,\n.Card-content div,\n.Card > p,\n.Card > div:not(.Card-title):not(.Card-icon):not(.Card-arrow):not(.Card-content) {\n  margin: 0 !important;\n  font-size: 13px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.55 !important;\n  font-family: var(--recurly-font) !important;\n}\n\n/* Card-title sits inside Card-content — restore its own color */\n.Card-content .Card-title {\n  color: var(--recurly-offblack) !important;\n  font-size: 15px !important;\n  font-weight: 700 !important;\n}\n\n.Card:hover p,\n.Card:hover .Card-body,\n.Card:hover .Card-content,\n.Card:hover .Card-content p,\n.Card:hover .Card-content div,\n.Card:hover > p,\n.Card:hover > div:not(.Card-title):not(.Card-icon):not(.Card-arrow):not(.Card-content) {\n  color: var(--recurly-lightgray) !important;\n}\n\n.Card:hover .Card-content .Card-title {\n  color: var(--recurly-offwhite) !important;\n}\n\n/* SDK split-pill cards — actual DOM:\n   \u003ca class=\"Card\"> \u003cdiv class=\"Card-content\"> \u003cdiv class=\"Card-title\">\n     Label \u003ci class=\"Card-arrow\">\u003c/i>\n   \u003c/div> \u003c/div> \u003c/a>\n   The yellow right block is a ::after pseudo-element on .Card so it's\n   independent of the DOM structure. The inline arrow \u003ci> is hidden;\n   the arrow visual comes from the ::after pseudo's content.\n   Hover: full inversion — yellow body, offblack arrow block.\n   rp-sdk-grid margin-top separates the grid from TOC pills above. */\n.rp-sdk-grid {\n  margin-top: 28px !important;\n}\n\n.rp-sdk-grid .Card,\n.rp-sdk-grid .Card.Card_card {\n  position: relative !important;\n  display: flex !important;\n  flex-direction: row !important;\n  align-items: stretch !important;\n  background: #0D0D0B !important;\n  border: 0 !important;\n  border-radius: 8px !important;\n  padding: 0 !important;\n  gap: 0 !important;\n  overflow: hidden !important;\n  box-shadow: none !important;\n  transition: transform 0.15s, box-shadow 0.15s !important;\n  text-decoration: none !important;\n}\n\n.rp-sdk-grid .Card:hover,\n.rp-sdk-grid .Card.Card_card:hover {\n  transform: translateY(-2px) !important;\n  box-shadow: 0 4px 12px rgba(255, 215, 6, 0.22) !important;\n}\n\n/* Left body */\n.rp-sdk-grid .Card-content {\n  flex: 1 !important;\n  background: transparent !important;\n  padding: 11px 14px !important;\n  display: flex !important;\n  align-items: center !important;\n  min-width: 0 !important;\n}\n\n.rp-sdk-grid .Card-title {\n  display: flex !important;\n  align-items: center !important;\n  justify-content: flex-start !important;\n  font-size: 13px !important;\n  font-weight: 700 !important;\n  color: #FCFBF7 !important;\n  letter-spacing: 0.2px !important;\n  white-space: nowrap !important;\n  overflow: hidden !important;\n  text-overflow: ellipsis !important;\n  width: 100% !important;\n}\n\n/* Hide the inline arrow icon — the ::after pseudo provides the arrow zone */\n.rp-sdk-grid .Card-arrow {\n  display: none !important;\n}\n\n/* Right yellow accent block via pseudo-element */\n.rp-sdk-grid .Card::after {\n  content: '→' !important;\n  flex-shrink: 0 !important;\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  padding: 0 13px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  box-shadow: -3px 0 8px rgba(13, 13, 11, 0.30) !important;\n  transition: background 0.15s, color 0.15s, box-shadow 0.15s !important;\n  align-self: stretch !important;\n}\n\n/* Hover inversion */\n.rp-sdk-grid .Card:hover {\n  background: #FFD706 !important;\n}\n\n.rp-sdk-grid .Card:hover .Card-title {\n  color: #0D0D0B !important;\n}\n\n.rp-sdk-grid .Card:hover::after {\n  background: #0D0D0B !important;\n  color: #FFD706 !important;\n  box-shadow: -3px 0 8px rgba(0, 0, 0, 0.40) !important;\n}\n\n/* ── NAVIGATIONAL OVERVIEW CARDS (rp-nav-grid) ───────────────\n   Use for overview/orientation pages that link to child pages,\n   where each card has a title + multi-line description.\n   Distinct from rp-sdk-grid (compact split-pill, title-only).\n   rp-sdk-grid  → SDK links, partner integrations, short labels\n   rp-nav-grid  → overview pages, \"Key details\" nav cards with descriptions\n   ──────────────────────────────────────────────────────────── */\n.rp-nav-grid {\n  margin-top: 28px !important;\n}\n\n.rp-nav-grid .Card,\n.rp-nav-grid .Card.Card_card {\n  display: flex !important;\n  flex-direction: column !important;\n  background: var(--recurly-yellow) !important;\n  border: 0 !important;\n  border-radius: 10px !important;\n  padding: 20px 24px !important;\n  gap: 8px !important;\n  overflow: hidden !important;\n  box-shadow: none !important;\n  transition: background 0.15s, box-shadow 0.15s, transform 0.15s !important;\n  text-decoration: none !important;\n}\n\n.rp-nav-grid .Card:hover,\n.rp-nav-grid .Card.Card_card:hover {\n  background: var(--recurly-offblack) !important;\n  box-shadow: 0 6px 14px rgba(13, 13, 11, 0.20) !important;\n  transform: translateY(-2px) !important;\n}\n\n.rp-nav-grid .Card-icon {\n  display: none !important;\n}\n\n.rp-nav-grid .Card-title {\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-offblack) !important;\n  justify-content: space-between !important;\n  white-space: normal !important;\n}\n\n.rp-nav-grid .Card:hover .Card-title {\n  color: var(--recurly-offwhite) !important;\n}\n\n.rp-nav-grid .Card-arrow {\n  color: var(--recurly-offblack) !important;\n  flex-shrink: 0 !important;\n}\n\n.rp-nav-grid .Card:hover .Card-arrow {\n  color: var(--recurly-yellow) !important;\n  transform: translateX(3px) !important;\n}\n\n.rp-nav-grid .Card p,\n.rp-nav-grid .Card-content p,\n.rp-nav-grid .Card-content div,\n.rp-nav-grid .Card > p {\n  font-size: 13px !important;\n  color: var(--recurly-offblack) !important;\n  line-height: 1.6 !important;\n  margin: 0 !important;\n}\n\n.rp-nav-grid .Card:hover p,\n.rp-nav-grid .Card:hover .Card-content p,\n.rp-nav-grid .Card:hover .Card-content div,\n.rp-nav-grid .Card:hover > p {\n  color: var(--recurly-lightgray) !important;\n}\n\n.TabGroup-nav {\n  display: flex !important;\n  flex-wrap: wrap !important;\n  align-items: flex-end !important;\n  border-bottom: 2px solid var(--recurly-lightgray) !important;\n  margin: 16px 0 24px !important;\n  padding: 0 !important;\n  gap: 4px !important;\n  font-family: var(--recurly-font) !important;\n}\n\n.TabGroup-tab,\n.TabGroup-tab_active {\n  background: transparent !important;\n  border: 0 !important;\n  border-bottom: 2px solid transparent !important;\n  margin-bottom: -2px !important;\n  padding: 10px 18px !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-gray) !important;\n  cursor: pointer !important;\n  transition: color 0.15s, border-color 0.15s !important;\n}\n\n.TabGroup-tab:hover { color: var(--recurly-yellow) !important; }\n\n.TabGroup-tab_active {\n  color: var(--recurly-offblack) !important;\n  border-bottom-color: var(--recurly-yellow) !important;\n  cursor: default !important;\n}\n\n.Columns { display: grid !important; gap: 20px !important; margin: 16px 0 24px !important; font-family: var(--recurly-font) !important; }\n\n.Column { font-size: 14px !important; color: var(--recurly-darkgray) !important; line-height: 1.65 !important; min-width: 0 !important; }\n.Column > *:first-child { margin-top: 0 !important; }\n.Column > *:last-child  { margin-bottom: 0 !important; }\n.Column p { margin: 0 0 12px !important; }\n.Column blockquote { margin: 0 !important; padding: 0 !important; border: 0 !important; background: transparent !important; border-radius: 0 !important; }\n.Column blockquote p { margin: 0 0 12px !important; font-style: normal !important; color: inherit !important; }\n.Column blockquote p:last-child { margin-bottom: 0 !important; }\n.Column a { color: var(--recurly-tangerine) !important; }\n\n@media (max-width: 640px) {\n  .Columns { grid-template-columns: 1fr !important; }\n  .CardsGrid { grid-template-columns: 1fr !important; }\n}\n\n\n/* ============================================================\n   PART 4 — ReadMe native table branding\n   ============================================================ */\n\n/* Scoped to :has(thead) so this collapse rule never fires on\n   rp-* HTML tables (which use rp-thead-row / td, not thead / th). */\n.rdmd-table:has(thead) table {\n  width: 100% !important;\n  border-collapse: collapse !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  margin: 12px 0 24px !important;\n}\n\n.rdmd-table thead tr { background: var(--recurly-offblack) !important; }\n\n.rdmd-table thead tr th {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  font-weight: 700 !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  text-align: left !important;\n}\n\n.rdmd-table thead tr th strong,\n.rdmd-table thead tr th * { color: var(--recurly-offwhite) !important; }\n\n.rdmd-table tbody tr { background: var(--recurly-offwhite) !important; }\n\n.rdmd-table tbody tr td {\n  background: var(--recurly-offwhite) !important;\n  color: var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  vertical-align: top !important;\n  line-height: 1.6 !important;\n}\n\n.rdmd-table tbody tr td a { color: var(--recurly-tangerine) !important; }\n.rdmd-table tbody tr td a:hover { color: var(--recurly-offblack) !important; }\n\n.rdmd-table tbody tr td code.rdmd-code {\n  background: var(--recurly-brightgray) !important;\n  color: var(--recurly-darkgray) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 0.92em !important;\n}\n\n.rdmd-table-inner {\n  border-radius: 10px !important;\n  overflow: hidden !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n}\n\n/* rp-thead-row variant — tables that use \u003ctr class=\"rp-thead-row\"> instead of \u003cthead>.\n   Mirrors the :has(thead) rules above without the thead scope guard. */\n.rdmd-table:not(:has(thead)) table {\n  width: 100% !important;\n  border-collapse: collapse !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  margin: 12px 0 24px !important;\n}\n\n.rdmd-table tr.rp-thead-row {\n  background: var(--recurly-offblack) !important;\n}\n\n.rdmd-table tr.rp-thead-row td {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  font-weight: 700 !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  text-align: left !important;\n}\n\n.rdmd-table tr.rp-thead-row td strong,\n.rdmd-table tr.rp-thead-row td * { color: var(--recurly-offwhite) !important; }\n\n.rdmd-table:not(:has(thead)) tbody tr,\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) {\n  background: var(--recurly-offwhite) !important;\n}\n\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td {\n  background: var(--recurly-offwhite) !important;\n  color: var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  vertical-align: top !important;\n  line-height: 1.6 !important;\n}\n\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td a { color: var(--recurly-tangerine) !important; }\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td a:hover { color: var(--recurly-offblack) !important; }\n\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td code.rdmd-code {\n  background: var(--recurly-brightgray) !important;\n  color: var(--recurly-darkgray) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 0.92em !important;\n}\n\n\n/* ============================================================\n   PART 5 — Version selector branding\n   ============================================================ */\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) {\n  width: min(920px, calc(100vw - 40px)) !important;\n  max-width: min(920px, calc(100vw - 40px)) !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .tippy-box,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .tippy-content,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .Dropdown-content,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .Box,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu {\n  width: 100% !important;\n  max-width: 100% !important;\n  box-sizing: border-box !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu {\n  max-height: 620px !important;\n  overflow: auto !important;\n  padding: 16px !important;\n  display: grid !important;\n  grid-template-columns: repeat(auto-fill, minmax(145px, 1fr)) !important;\n  gap: 10px !important;\n  font-family: var(--recurly-font) !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu::before {\n  content: \"API V3\"; order: 1; grid-column: 1 / -1; margin: 0 0 2px 0;\n  color: var(--recurly-darkgray) !important; font-family: var(--recurly-font) !important;\n  font-size: 12px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu::after {\n  content: \"API V2\"; order: 20; grid-column: 1 / -1; margin: 10px 0 2px 0;\n  color: var(--recurly-darkgray) !important; font-family: var(--recurly-font) !important;\n  font-size: 12px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item {\n  width: auto !important; min-width: 0 !important; min-height: 48px !important; height: auto !important;\n  display: flex !important; align-items: center !important; padding: 10px 12px !important;\n  border: 1px solid var(--recurly-lightgray) !important; border-radius: 10px !important;\n  background: var(--recurly-offwhite) !important; color: var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important; text-decoration: none !important;\n  box-sizing: border-box !important; transition: background 0.15s, border-color 0.15s, color 0.15s !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*=\"/v20\"],\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*=\"/v2999\"] { order: 10; }\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*=\"/v2.\"] { order: 30; }\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*=\"/v1.\"] { display: none !important; }\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href=\"/reference-docs/reference\"] { display: none !important; }\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=\"VersionDropdown-item\"],\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=\"VersionDropdown-item-content\"] { width: 100% !important; min-width: 0 !important; }\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=\"VersionDropdown-item-label\"] {\n  display: block !important; min-width: 0 !important; overflow: hidden !important;\n  text-overflow: ellipsis !important; white-space: nowrap !important;\n  font-family: var(--recurly-font) !important; font-size: 15px !important; font-weight: 600 !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item_active {\n  border-color: var(--recurly-tangerine) !important; background: var(--recurly-brightgray) !important;\n  color: var(--recurly-offblack) !important; box-shadow: 0 0 0 2px rgba(0, 140, 255, 0.12) !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item:hover,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item:focus {\n  border-color: var(--recurly-tangerine) !important; background: var(--recurly-brightgray) !important;\n  color: var(--recurly-offblack) !important; outline: none !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Badge,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .IconWrapper,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=\"IconWrapper\"] { flex: 0 0 auto !important; }\n\n@media (max-width: 700px) {\n  [data-tippy-root]:has(.rm-VersionDropdown-menu) { width: calc(100vw - 32px) !important; max-width: calc(100vw - 32px) !important; }\n  [data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)) !important; max-height: 420px !important; }\n  [data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item { min-height: 44px !important; padding: 9px 10px !important; }\n}\n\n/* ============================================================\n   PART 9 — API Reference supplemental polish\n   ============================================================\n   Part 3 owns the primary styles for enum pills, response\n   accordion rows, and logs table/footer. This part only covers\n   what Part 3 doesn't: param expand rows, \"required\" badge,\n   param container backgrounds, page h1, and misc elements.\n   ============================================================ */\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.1 — \"required\" badge  +  \"Allowed:\" label\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"Param-required\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.4px !important;\n  text-transform: uppercase !important;\n  color: var(--recurly-vermillion) !important;\n  background: rgba(255, 81, 38, 0.10) !important;\n  border-radius: 4px !important;\n  padding: 1px 6px !important;\n}\n\n[class*=\"Param-enum-section_compact-label\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.5px !important;\n  text-transform: uppercase !important;\n  color: var(--recurly-gray) !important;\n}\n\n/* Inner code token inside enum pills — inherit from button shell */\n[class*=\"Param-enum-section-item\"] code,\n[class*=\"Param-enum-section-item-value\"] {\n  background: transparent !important;\n  color: inherit !important;\n  font-family: inherit !important;\n  font-size: inherit !important;\n  font-weight: inherit !important;\n  padding: 0 !important;\n  border-radius: 0 !important;\n  box-shadow: none !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.2 — Param expand rows  (array-of-string: ADD STRING / STRING)\n   The full-row button has class \"Flex … Param-expand-button…\".\n   The icon-only reorder/delete buttons do NOT have \"Flex\".\n   Selecting on BOTH fragments excludes the icon buttons safely.\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"Param-expand\"] {\n  background: transparent !important;\n}\n\n/* Full-row expand button only (has both Flex + Param-expand-button in its class) */\n[class*=\"Flex\"][class*=\"Param-expand-button\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.3px !important;\n  color: var(--recurly-offwhite) !important;\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 8px !important;\n  padding: 8px 12px !important;\n  width: 100% !important;\n  text-align: left !important;\n  cursor: pointer !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"Flex\"][class*=\"Param-expand-button\"]:hover {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-gray) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Label and icon inside — inherit color from button */\n[class*=\"Param-expand-label\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: inherit !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.3px !important;\n}\n\n[class*=\"Param-expand-button-icon\"] {\n  color: inherit !important;\n}\n\n/* ── \"Show N enum values\" / \"Hide enum values\" toggle ─────────\n   DOM: button.Button_minimum_ghost.Button_minimum inside\n        [class*=\"Param-enum-section_expanded-container-header\"]\n   Same offblack→yellow pill style as enum pills.\n   ──────────────────────────────────────────────────────────── */\n[class*=\"Param-enum-section_expanded-container-header\"] .Button,\n[class*=\"Param-enum-section_expanded-container-header\"] button {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.3px !important;\n  color: var(--recurly-offwhite) !important;\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-offblack) !important;\n  border-radius: 20px !important;\n  padding: 5px 14px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"Param-enum-section_expanded-container-header\"] .Button:hover,\n[class*=\"Param-enum-section_expanded-container-header\"] button:hover {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Also style the \"Show N enum values\" collapsed button (sits outside the expanded container) */\n[class*=\"Param-enum-section\"] > div > .Button[class*=\"Button_minimum\"],\n[class*=\"Param-enum-section\"] > div > button[class*=\"Button_minimum\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.3px !important;\n  color: var(--recurly-offwhite) !important;\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-offblack) !important;\n  border-radius: 20px !important;\n  padding: 5px 14px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"Param-enum-section\"] > div > .Button[class*=\"Button_minimum\"]:hover,\n[class*=\"Param-enum-section\"] > div > button[class*=\"Button_minimum\"]:hover {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n[class*=\"Param-expand\"] input,\n[class*=\"Param-expand\"] .Input {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  background: #fff !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 6px !important;\n  color: var(--recurly-darkgray) !important;\n}\n\n[class*=\"Param-expand\"] input:focus,\n[class*=\"Param-expand\"] .Input:focus {\n  border-color: var(--recurly-offblack) !important;\n  outline: none !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.3 — Param container backgrounds\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"Param-contentWrapper\"],\n[class*=\"rm-ParamContainer\"],\n[class*=\"Fieldset\"],\n.rm-APISchema,\n[class*=\"rjsf\"] {\n  background: #fff !important;\n}\n\n.rm-ParamInput,\n.rm-ParamSelect {\n  background: #fff !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.4 — Response accordion interior  (expanded pane only)\n   Part 3 owns the toggle buttons. This styles the open pane.\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n.rm-APIResponseSchemaPicker [class*=\"AccordionContent\"] {\n  background: #fff !important;\n}\n\n.rm-APIResponseSchemaPicker .rm-APISectionHeader {\n  background: #fff !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  padding-bottom: 8px !important;\n  margin-bottom: 12px !important;\n}\n\n.rm-APIResponseSchemaPicker .rm-APISectionHeader [class*=\"APISectionHeader-heading\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 800 !important;\n  color: var(--recurly-gray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.8px !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.5 — Tag tooltip button (top-right of h1)\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"TagTooltip-tag-button\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-gray) !important;\n  background: transparent !important;\n  border: 0 !important;\n  border-radius: 4px !important;\n  padding: 2px 4px !important;\n  transition: background 0.12s, color 0.12s !important;\n}\n\n[class*=\"TagTooltip-tag-button\"]:hover {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.6 — API page h1\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"headline-container\"] h1.Title,\n[class*=\"headline-container\"] h1 {\n  font-family: var(--recurly-font) !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offblack) !important;\n  font-size: 1.6rem !important;\n  padding-bottom: 10px !important;\n  border-bottom: 2px solid var(--recurly-yellow) !important;\n  margin-bottom: 14px !important;\n}\n\n\n/* ============================================================\n   CODETABS ACTIVE BUTTON — KEPT LAST IN FILE\n   DOM confirmed: class=\"CodeTabs_active\" on selected button.\n   Duplicated here to win cascade battles with ReadMe's host\n   CSS which loads after this stylesheet.\n   ============================================================ */\n\n.CodeTabs-toolbar button.CodeTabs_active {\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  border-radius: 14px !important;\n  cursor: default !important;\n  opacity: 1 !important;\n  pointer-events: none !important;\n}\n\n/* Single-language lone button — plain yellow label, never a pill */\n.CodeTabs-toolbar:has(> button:only-child) > button {\n  background: transparent !important;\n  color: #FFD706 !important;\n  border-radius: 0 !important;\n  cursor: default !important;\n  pointer-events: none !important;\n  opacity: 1 !important;\n}\n\n/* Hover — inactive buttons only */\n.CodeTabs-toolbar button:not(.CodeTabs_active):hover {\n  background: transparent !important;\n  color: #FFD706 !important;\n}\n/* Hide immediately, then fade in after 1s */\nbody .hub-is-home {\n  opacity: 0;\n  animation: hubFadeIn 0.4s ease forwards;\n  animation-delay: 1s;\n}\n\n/* turn header links back on */\n.rm-Header-bottom-link {\n    -webkit-box-sizing: border-box;\n    box-sizing: border-box;\n    display: inline-flex;\n}\n\n@keyframes hubFadeIn {\n  to { opacity: 1; }\n}\n\n* {\n    box-sizing: border-box;\n}\nbody {\n      font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n    }\n\n/* Image zoomer start */\n  .image-zoomer-container {\n      position: relative;\n      width: 720px;\n      height: 720px;\n      overflow: hidden;\n      border: 2px solid #ccc;\n    \tpadding: 20px;\n    \tmarging: 20px;\n      cursor: crosshair;\n    }\n\n    .image-zoomer-container img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      transition: transform 0.2s ease-out;\n    }\n\n    .image-zoomer-container:hover img {\n      transform: scale(7); /* Adjust zoom level */\n    }\n\n    .image-zoomer-container:hover img.move {\n      /*transition: none; /* Disable smooth transition when moving */\n      transition: ease-in-out;\n    }\n\t\t\n/* Image zoomer end */\n\n\n\t/* fix for width getting changed to % on the page for video iframes */\n    iframe {\n      width: 100%;\n      height: 450px;\n    }\n  \n    .rm-LandingPage {\n      width: 1200px;\n    }\n  \n    .rm-Header-top {\n      background: #0D0D0B;\n    }\n  \n    .rm-LandingPageHeader {\n      padding: 170px 20px 80px;\n    }\n    .rm-LandingPageHeader .rm-SearchToggle {\n      position: relative;\n      width: 469px;\n      background: #fff;\n      border-radius: 4px;\n    }\n  \n    .rm-LandingPageHeader .rm-SearchToggle:before {\n      display: block;\n      content: \"How can we help?\";\n      position: absolute;\n      top: -84px;\n      left: -40px;\n      text-align: center;\n      width: 120%;\n      font-size: 60px;\n      font-weight: 800;\n      font-family: 'proxima-nova';\n      pointer-events: none;\n    }\n  \n    .rm-LandingPageHeader .rm-SearchToggle .rm-SearchToggle-icon {\n      color: #5a5a5a;\n    }\n    .rm-LandingPageHeader .rm-SearchToggle .rm-SearchToggle-placeholder {\n      color: #fff;\n      font-size: 16px;\n      font-weight: 400;\n    }\n\n/* Start Storylane custome CSS */\n\t\t\t.sl-embed {   \n\t\t\t\t\t\tposition: relative;\n            padding-bottom: calc(56.68% + 25px);\n            width: 100%;\n            height: 0;\n            transform: scale(1);\n        }\n        .sl-demo {\n            width: 100% !important;\n            border: 1px solid rgba(63, 95, 172, 0.35);\n            box-shadow: 0px 0px 18px rgba(26, 19, 72, 0.15);\n            border-radius: 10px;\n            box-sizing: border-box;\n        }\n/* End Storylane custome CSS */\n  \n    main.main-index {\n      /* background-color: red; */\n      width: 1200px;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 25px;\n      margin: 0 auto 80px;\n      font-family: \"Proxima-nova\", sans-serif;\n    }\n  \n    header.main-header {\n      background-color: #ffd706;\n      border-radius: 0;\n      /*box-shadow: 0 4px 22px 0 rgba(35, 41, 50, 0.15);*/\n      /* margin-top: 25px; */\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      min-height: 80px;\n      width: 100%;\n      margin: 10px 10px 50px;\n      padding: 0 20px;\n      box-sizing: border-box;\n    }\n  \n    header.main-header p.header-paragraph {\n      font-size: 20px;\n      line-height: 28px;\n      color: #0D0D0B;\n    }\n    header.main-header .image-wrap {\n      display: flex;\n      align-items: center;\n    }\n  \n    header.main-header img {\n        margin: 0 20px 0 0;\n    }\n  \n    header.main-header p,\n    header.main-header strong {\n      color: #0D0D0B;\n      margin: 0;\n    }\n  \n    header.main-header strong {\n      font-weight: bold;\n      text-decoration: none;\n    }\n  \n    header.main-header a {\n      margin: 0 0 0 10rem;\n      padding: 8px 25px;\n      color: #0D0D0B;\n      text-decoration: none;\n      font-size: 14px;\n      font-weight: 800;\n      border-radius: 3px;\n      border: 2px solid #0D0D0B;\n    }\n  \n    header.main-header a:hover {\n      text-decoration: none;\n    }\n  \n   .main-index section {\n      /* background-color: green; */\n      width: 100%;\n      height: 100%;\n      display: flex;\n      flex-wrap: wrap;\n      align-items: center;\n      justify-content: space-between;\n      gap: 20px;\n      padding: 0;\n      margin: 0;\n    }\n  \n    .card {\n      width: 340px;\n      margin: 0 0 40px;\n  /*    border-radius: 20px;*/\n  /*    box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);*/\n      display: flex;\n      justify-content: center;\n      flex-direction: column;\n      align-items: flex-start;\n      padding: 0 15px;\n      cursor: auto;\n      transition: .175s all ease-in-out;\n    }\n  \n    /* .card:hover {\n      background-color: #ffffff;\n      transform: scale(1.05);\n      box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);\n    } */\n  \n    .card img {\n      width: 48px;\n      height: 48px;\n      margin: 0;\n      margin-bottom: 10px;\n    }\n  \n    .card h2 {\n      color: #0D0D0B;\n      font-size: 24px;\n      font-weight: 700;\n      line-height: 32px;\n      margin: 0;\n      margin-bottom: 11px;\n    }\n  \n    .card p {\n      margin: 0;\n      color: #0D0D0B;\n      margin-bottom: 15px;\n    }\n  \n    .card a, .LandingBlock3PM-HyBxby3X a {\n      color: #0D0D0B;\n      text-decoration-thickness: 2px;\n\t    text-underline-offset: 5px;\n      text-decoration: underline;\n      transition: 0.25s ease all;\n    }\n  \n    .card a:hover, .LandingBlock3PM-HyBxby3X a:hover {\n      color: #0D0D0B;\n      text-decoration: none;\n    }\n  \n    /* .Header-searchtb6Foi0-D9Vx {\n      position: absolute;\n      top: 50px;\n      right: 5px;\n      margin: 0;\n      padding: 0;\n      box-shadow: none;\n      border: none;\n      outline: none;\n      width: 50%;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n    }\n  \n    .Header-searchtb6Foi0-D9Vx button {\n  \n      width: 25%;\n      height: 53px;\n    }  */\n.reference-redesign .Sidebar-listWrapper6Q9_yUrG906C{\n        display: -webkit-box;\n        display: -ms-flexbox;\n        display: flex;\n        -ms-flex-item-align: start;\n        -ms-flex-align: ;\n        -webkit-box-flex: 0;\n        -ms-flex: 0;\n        flex: 0 !important;\n        -webkit-box-orient: vertical;\n        -webkit-box-direction: normal;\n        -ms-flex-direction: column;\n        flex-direction: column;\n        align-items: flex-start !important;\n      }\n    .reference-redesign .Sidebar-link2Dsha-r-GKh2:active, .reference-redesign .Sidebar-link2Dsha-r-GKh2.active {\n        background: var(--Sidebar-link-background);\n        color: #0D0D0B) !important;\n      }\n      .LandingBlock3PM-HyBxby3X a:not(:hover){\n\t\t\t\ttext-decoration: underline !important;\n      }\n  \n    @media (max-width: 768px) {\n      .rm-LandingPage {\n        width: 100%;\n      }\n  \n      main.main-index {\n        width: 100%;\n        height: 100%;\n      }\n  \n      .rm-LandingPageHeader {\n        display: block;\n      }\n  \n      .rm-LandingPageHeader .rm-SearchToggle {\n        width: 340px;\n      }\n  \n      .rm-LandingPageHeader .rm-SearchToggle:before {\n        font-size: 44px;\n      }\n  \n      header.main-header {\n        display: block;\n        width: 95%;\n        min-height: auto;\n      }\n  \n      header.main-header img {\n        display: block;\n        margin: 10px auto;\n      }\n  \n      header.main-header a {\n        display: block;\n        margin: 16px auto 20px;\n        max-width: 160px;\n      }\n  \n      header.main-header p.header-paragraph {\n        margin: 0 10px;\n        text-align: center;\n      }\n  \n      .card {\n        width: 90%;\n        padding: 0 25px 0 20px;\n      }\n  \n      .Header-searchtb6Foi0-D9Vx {\n        position: absolute;\n        top: 55px;\n        right: 0px;\n        margin: 0;\n        padding: 0;\n        box-shadow: none;\n        border: none;\n        outline: none;\n        width: 50%;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n      }\n  \n      .Header-searchtb6Foi0-D9Vx button {\n        width: 25% !important;\n        padding-left: 20px;\n        border: 1px solid #0D0D0B !important;\n      } \n  \n      .Header-searchtb6Foi0-D9Vx button .icon-search1  {\n        color: #ffd706 !important;\n      }\n    }\n\n/* beginning of footer */\n\n\n.container {\n    margin-right: auto;\n    margin-left: auto;\n    padding-left: 15px;\n    padding-right: 15px;\n    min-width: 320px;\n    position: relative;\n\n    \n\n}\n@media (min-width: 768px) {\n    .container {\n        width: 750px;\n    }\n}\n@media (min-width: 992px) {\n    .container {\n        width: 970px;\n    }\n}\n@media (min-width: 1200px) {\n    .container {\n        width: 1170px;\n    }\n}\n.list-reset {\n    list-style: none;\n    margin-top: 0;\n    margin-bottom: 0;\n    padding: 0;\n}\nfooter {\n\tposition:relative;\n\tfont-size:14px;\n\toverflow:hidden;\n\tcolor:#fff;\n\tbackground:#0D0D0B\n}\n.btn--footer {\n    display: -webkit-inline-box;\n    display: inline-flex;\n    -webkit-box-align: center;\n    align-items: center;\n    -webkit-box-pack: center;\n    justify-content: center;\n    height: 50px;\n    padding: 0 1.5rem;\n    text-align: center;\n    border-radius: 6px;\n    font-weight: 400;\n    text-decoration: none;\n    cursor: pointer;\n    font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n    border-width: 0;\n    text-align: center;\n}\n.btn-primary--footer {\n    background-color: #FFD706;\n    color: #0D0D0B;\n    -webkit-transition: background-color 0.25s;\n    transition: background-color 0.25s;\n    margin: 0 2.2rem 0 0;\n    width: auto;\n}\n.feedback__header {\n    font-size: 3rem;\n}\n@media (max-width: 790px) {\n    .feedback__header {\n      font-size: 1.6rem;\n    }\n  }\n.footer__feedback {\n    display: flex;\n    gap: 30px;\n    align-items: center;\n    justify-content: center;\n\n}\n@media (min-width:768px) {\n    .footer__feedback {\n        flex-direction: row;\n        flex-flow: row;\n    }\n}\n.footer__bottom {\n    padding: 30px 0;\n    border-top: 1px solid #32312D;\n}\na:not(.btn) {\n    color: inherit;\n    -webkit-text-decoration-color: #FF5810;\n    text-decoration-color: #FF5810;\n    text-decoration-thickness: 2px;\n    text-underline-offset: 5px;\n    -webkit-transition: -webkit-text-decoration-color 0.25s;\n    transition: -webkit-text-decoration-color 0.25s;\n    transition: text-decoration-color 0.25s;\n    transition: text-decoration-color 0.25s, -webkit-text-decoration-color 0.25s;\n}\na:not(.btn).link-no-underline {\n    -webkit-text-decoration-color: transparent;\n    text-decoration-color: transparent;\n}\na:not(.btn).link-no-underline:hover {\n    -webkit-text-decoration-color: #FF5810;\n    text-decoration-color: #FF5810;\n}\n.footer-basic__grid {\n    display: -webkit-box;\n    display: flex;\n    -webkit-box-pack: justify;\n    justify-content: space-between;\n    -webkit-box-align: center;\n    align-items: center;\n    gap: 40px;\n}\n@media (max-width:768px) {\n    .footer-basic__grid {\n        -webkit-box-orient: horizontal;\n        -webkit-box-direction: normal;\n        flex-direction: row;\n        -webkit-box-pack: center;\n        justify-content: center;\n        flex-wrap: wrap;\n        margin: 0;\n        padding: 0;\n    }\n}\n.footer__doc-logo {\n    width: 200px;\n}\n.footer__links {\n    display: -webkit-box;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    flex-direction: column;\n    gap: 20px;\n    padding: 1rem 0 1rem 0;\n    margin: 0 auto;\n}\n\n.footer__list-secondary {\n    display: flex;\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    flex-direction: column;\n    gap: 20px;\n}\n@media (min-width:768px) {\n    .footer__list-secondary {\n        -webkit-box-orient: horizontal;\n        -webkit-box-direction: normal;\n        flex-direction: row;\n        -webkit-box-pack: end;\n        justify-content: end;\n        flex-wrap: wrap;\n    }\n}\n.footer__social {\n    grid-area: social;\n    display: -webkit-box;\n    display: flex;\n    gap: 20px;\n    align-self: end;\n}\n.footer__social a {\n    display: -webkit-box;\n    display: flex;\n    -webkit-box-align: center;\n    align-items: center;\n    -webkit-box-pack: center;\n    justify-content: center;\n    width: 40px;\n    height: 40px;\n    padding:10px;\n    border-radius: 50%;\n    background-color: #FF5810;\n    -webkit-transition: background-color .3s;\n    transition: background-color .3s;\n}\n\n\n\n  .modal-bg {\n    position: fixed;\n    top: 0;\n    left: 0;\n    display: none;\n    width: 100%;\n    height: 100%;\n    background: rgba(35, 41, 50, 0.75);\n    z-index: 10;\n    backdrop-filter: blur(10px);\n    opacity: 0;\n    transition: opacity 0.25s;\n  }\n\n  .modal__wrap {\n    display: none;\n    position: fixed;\n    top: -10%;\n    left: 0;\n    width: 90%;\n    margin: 7rem 1.5rem;\n    padding: 1rem 2rem 2rem;\n    background: #FFFDF2;\n    border-radius: 2rem;\n    z-index: 11;\n  }\n  @media (min-width: 1080px) {\n    .modal__wrap {\n      top: -10%;\n      left: 50%;\n      width: 63.6rem;\n      margin: 8rem 0 0 -31.8rem;\n      padding: 1rem 5rem 3rem;\n    }\n}\n\n  .modal__close {\n    position: absolute;\n    top: 2rem;\n    right: 2rem;\n    width: 2.2rem;\n    height: 2.2rem;\n    cursor: pointer;\n    text-indent: -9999px;\n    background: url(\"https://recurly.com/img2/events/subscriptionsessions/close-btn.svg\")\n      center no-repeat;\n    background-size: 12px;\n  }\n\n  .modal__headline {\n    margin: 1.5rem 0 0;\n    color: #0D0D0B;\n    font-size: 2.2rem;\n    line-height: 2.2rem;\n    font-variation-settings: \"ital\" 0, \"wdth\" 100, \"wght\" 300;\n  }\n\n  /* Blur effect on background */\n        .blur-background {\n            filter: blur(5px);\n            pointer-events: none; /* Prevent interaction with blurred content */\n        }\n\n\n.mktoForm{\n\twidth:100% !important\n}\n.mktoForm .mktoOffset,.mktoForm .mktoGutter{\n\tdisplay:none\n}\n.mktoForm .mktoAsterix{\n\tdisplay:none\n}\n.mktoForm .mktoRequiredField .mktoAsterix{\n\tdisplay:inline-block;\n\tmargin:0 0.3rem 0 0\n}\n.mktoForm .mktoField.mktoHasWidth.mktoRequired.mktoInvalid{\n\tborder:1px solid #DF381F\n}\n.mktoForm div{\n\ttext-align:left;\n\tmargin:0;\n\tpadding:0\n}\n.mktoForm .mktoClear{\n\tclear:both;\n\tfloat:none\n}\n.mktoForm .gdpr__privacy,.mktoForm #LblGDPR_Consent__c{\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tcolor:#0D0D0B;\n\tfont-weight:400\n}\n.mktoForm #LblGDPR_Consent__c{\n\tposition:relative;\n\tbackground:transparent;\n\tfont-size:1rem;\n\tline-height:2rem;\n\tmargin-bottom:.8rem;\n\tpadding-right:.2rem\n}\n.mktoForm .gdpr__privacy{\n\tfont-size:1rem;\n\tline-height:1.5rem;\n\tmargin:1.0rem 0 0;\n}\n.mktoForm input{\n\t-webkit-transition:0.1s ease-out;\n\ttransition:0.1s ease-out\n}\n.mktoForm input[type=url],.mktoForm input[type=text],.mktoForm input[type=date],.mktoForm input[type=tel],.mktoForm input[type=email],.mktoForm input[type=number],.mktoForm textarea.mktoField,.mktoForm select.mktoField{\n\twidth:100% !important\n}\n.mktoForm input[type=email]+.mktoError .mktoErrorMsg{\n\tmax-width:19.5rem\n}\n.mktoForm select.mktoField{\n\tpadding:1.5rem 1.5rem 0rem 1.2rem;\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tbackground:url(\"https://recurly.com/img2/demo-request/dropdown-caret_expand.svg\") 96% center #fff no-repeat;\n\tbackground-size:12px 7px;\n\tborder-radius:0;\n\t-webkit-appearance:none;\n\t-moz-appearance:none;\n\tappearance:none;\n\theight:4rem;\n\twidth:100%;\n\tpadding:0.6rem;\n\tcolor:#535356;\n\tfont-size:1.8rem;\n\tfont-weight:500;\n\tborder:0 none;\n\tborder-radius:0;\n\tbox-shadow:none\n}\n.mktoForm select.mktoField>option:first-child{\n\tcolor:transparent\n}\n.mktoForm select.mktoField:focus{\n\toutline:none\n}\n.mktoForm select.mktoField:-moz-focusring{\n\tcolor:transparent;\n\ttext-shadow:0 0 0 #000\n}\n.mktoForm .consent-label-container{\n\tdisplay:-webkit-box;\n\tdisplay:flex;\n\t-webkit-box-orient:horizontal;\n\t-webkit-box-direction:reverse;\n\tflex-direction:row-reverse;\n\t-webkit-box-align:start;\n\talign-items:flex-start\n}\n.mktoForm .consent-label-container .mktoLabel{\n\tline-height:2rem\n}\n.mktoForm div.mktoFieldWrap:not(.consent-label-container) .mktoLabel.mktoHasWidth{\n\tfont-size:1rem;\n\tline-height:1.5rem;\n\tposition:relative;\n  width:auto !important;\n\tleft:1.4rem;\n\tright:30px;\n\ttop:30px;\n\tbackground-color:white;\n\t-webkit-transition:.1s ease-out;\n\ttransition:.1s ease-out;\n\t-webkit-transform-origin:left top;\n\ttransform-origin:left top;\n\tpointer-events:none\n}\n.mktoForm div.mktoFieldWrap:not(.consent-label-container) .mktoLabel.mktoHasWidth.active{\n\tline-height:2.2rem;\n\tfont-size:1.2rem;\n\ttop:0;\n\t-webkit-transform:translateY(17%) scale(0.9);\n\ttransform:translateY(17%) scale(0.9)\n}\n.mktoForm div.mktoRequiredField.selectLabel label.mktoLabel{\n\tposition:relative;\n\tbackground:none;\n\tline-height:1.5rem;\n\tleft:0;\n\ttop:0;\n\t-webkit-transition:none;\n\ttransition:none;\n\t-webkit-transform:none;\n\ttransform:none\n}\n.mktoForm div.mktoRequiredField.selectLabel label.mktoLabel.active{\n\tfont-size:1.6rem;\n\tline-height:2rem;\n\t-webkit-transform:none;\n\ttransform:none\n}\n.mktoForm .mktoCheckboxList{\n\tpadding:0;\n\tfloat:left;\n\tposition:relative;\n\ttop:0\n}\n.mktoForm .mktoCheckboxList label{\n\tfont-size:1.4rem;\n\tline-height:2rem\n}\n.mktoForm .mktoCheckboxList>input{\n\tmargin:0 1rem 0 0\n}\n.mktoForm .mktoCheckboxList>input:after{\n\tcontent:\" \";\n\tfont-size:1.4rem;\n\tbackground-color:#ab4ac3;\n\tdisplay:inline-block;\n\tvisibility:visible\n}\n.mktoForm .mktoCheckboxList>input:checked:after{\n\tcontent:\"\\2713\";\n\tbox-shadow:0px 2px 4px rgba(155,155,155,0.15);\n\tborder-radius:3px;\n\theight:1.5rem;\n\tdisplay:block;\n\twidth:1.5rem;\n\ttext-align:center;\n\tfont-size:1.2rem;\n\tcolor:white\n}\n.mktoForm .mktoLabel{\n\tline-height:3rem;\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tfont-size:1.6rem;\n\tfont-weight:400;\n\tcolor:#0D0D0B;\n\tdisplay:inline-block;\n\tfloat:none !important;\n\twidth:auto\n}\n.mktoForm .mktoLabel span{\n\tcolor:#0D0D0B;\n\tfont-size:1.0rem;\n\tline-height:1.5rem\n}\n.mktoButtonWrap.mktoSimple {\n  margin-left: 0 !important;\n}\n.mktoForm .mktoButtonWrap.mktoSimple .mktoButton{\n\tdisplay:inline-block;\n\t-webkit-user-select:none;\n\t-moz-user-select:none;\n\t-ms-user-select:none;\n\tuser-select:none;\n\theight:4rem;\n\tpadding:1rem 3rem;\n\tfont-size:1.2rem;\n\tline-height:2.2rem;\n\tfont-weight:400;\n\tcolor:#fff;\n\ttext-align:center;\n\ttext-decoration:none;\n\ttext-overflow:ellipsis;\n\ttext-transform:lowercase;\n\twhite-space:nowrap;\n\toverflow:hidden;\n\tvertical-align:middle;\n\tcursor:pointer;\n\tborder:0;\n  margin-top: 15px;\n\tborder-radius:6px;\n\tbackground:#0D0D0B;\n\t-webkit-transition:all .3s ease-in;\n\ttransition:all .3s ease-in\n}\n.mktoForm .mktoButtonWrap.mktoSimple .mktoButton:first-letter,.mktoForm .mktoButtonWrap.mktoSimple .mktoButton span:first-letter{\n\ttext-transform:capitalize\n}\n.mktoForm .mktoButtonWrap.mktoSimple .mktoButton:hover{\n\tbackground:#FF9D88;\n\tcolor:#0D0D0B;\n\t-webkit-transform:none;\n\ttransform:none\n}\n.mktoForm .mktoFormRow .mktoField:not([type=\"checkbox\"]){\n\tbackground-color:#fff;\n\tborder-radius:4px;\n\tborder:1px solid #bdbbb6;\n\tcolor:#0D0D0B;\n\tdisplay:block;\n\tfloat:none;\n\theight:3.5rem;\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tfont-size:1.2rem !important;\n\t-webkit-appearance:none;\n\t-moz-appearance:none;\n\tappearance:none;\n\tpadding:1.7rem 1.5rem 0rem 1.2rem\n}\n.mktoForm .mktoFormRow .mktoField:not([type=\"checkbox\"]):focus{\n\toutline:none;\n\tborder-color:#0D0D0B;\n  font-weight: 400;\n}\n.mktoForm .mktoFormRow select.mktoField:not([type=\"checkbox\"]){\n\tpadding:1.6rem 1.5rem 0rem 1.2rem\n}\n.mktoForm .mktoError{\n\tposition:initial;\n\tz-index:99;\n\tcolor:#bf0000\n}\n.mktoForm .mktoError .mktoErrorArrowWrap{\n\tdisplay:none;\n\twidth:16px;\n\theight:8px;\n\toverflow:hidden;\n\tposition:absolute;\n\ttop:0;\n\tleft:5px;\n\tz-index:100\n}\n.mktoForm .mktoError .mktoErrorArrow{\n\tdisplay:inline-block;\n\theight:16px;\n\twidth:16px;\n\tmargin-top:5px;\n\tborder:0 none !important;\n\tbackground-color:#e35256 !important;\n\tborder-right:none;\n\tborder-bottom:none;\n\t-webkit-transform:rotate(45deg);\n\ttransform:rotate(45deg);\n\t-ms-transform:rotate(45deg)\n}\n.mktoForm .mktoError .mktoErrorMsg{\n\tdisplay:block;\n\tmargin:0;\n\tpadding:0;\n\tfont-size:1.0rem;\n\tline-height:2.1rem;\n\tfont-weight:400;\n\tmax-width:18rem;\n\tcolor:#e35256;\n\tborder:0 none !important;\n\tborder-radius:3px !important;\n\tbackground:transparent !important;\n\tbox-shadow:none !important;\n\ttext-shadow:none !important\n}\n\n/* ===== product landing page overwrite ======= */\n\n.rm-LandingPage {\n          width: 100% !important;\n          background-color: #0D0D0B !important;\n          padding: 0 !important;\n}\n\n/* ===== Product landing page CSS ======= */\n.globallp-header-section {\n          background: #0D0D0B !important;\n          padding: 64px 0 !important;\n}\n.feature-section {\n          background: #fff !important;\n          padding: 94px 0 !important;\n}\n\n.feature-grid {\n          max-width: 1200px !important;\n          margin: 0 auto !important;\n          display: grid !important;\n          grid-template-columns: repeat(3, 1fr) !important;\n          gap: 32px 24px !important;\n          padding: 0 24px !important;\n}\n\n.feature-card {\n          border: 1px solid #ece9d7 !important;\n          border-radius: 12px !important;\n          padding: 32px 24px !important;\n          background: #fff !important;\n          display: flex !important;\n          flex-direction: column !important;\n          gap: 8px !important;\n          cursor: pointer !important;\n          transition: box-shadow 0.2s !important;\n          height: 120px !important;\n          justify-content: flex-start !important;\n          box-sizing: unset !important;\n}\n\n.feature-grid a {\n          text-decoration: none !important;\n          color: inherit !important;\n}\n\n.feature-card:hover {\n          box-shadow: 0px 12px 16px -4px rgba(13, 13, 11, 0.08), 0px 4px 6px -2px rgba(13, 13, 11, 0.03), 0px 2px 2px -1px rgba(13, 13, 11, 0.04) !important;\n}\n\n.feature-card-icon-group {\n          display: flex !important;\n          align-items: center !important;\n          gap: 12px !important;\n}\n\n.feature-card-icon {\n          width: 40px !important;\n          height: 40px !important;\n          display: flex !important;\n          align-items: center !important;\n          margin: 0 !important;\n}\n\n.feature-card-title {\n          color: #0D0D0B !important;\n          font-weight: 600 !important;\n          font-size: 18px !important;\n          margin-top: 8px !important;\n}\n\n.feature-card:hover .feature-card-title {\n          color: #B0361E !important;\n          font-weight: 600 !important;\n}\n\n.feature-card-desc {\n          color: #0D0D0B !important;\n          font-size: 14px !important;\n}\n\n.feature-badge {\n          position: relative !important;\n          border-radius: 9999px !important;\n          background-color: #f9f7eb !important;\n          border: 1px solid #e2dfd0 !important;\n          box-sizing: border-box !important;\n          width: 100% !important;\n          display: flex !important;\n          flex-direction: row !important;\n          align-items: center !important;\n          justify-content: flex-start !important;\n          padding: 2px 10px !important;\n          text-align: center !important;\n          font-size: 14px !important;\n          color: #46443f !important;\n          width: fit-content !important;\n}\n\n.feature-badge-text {\n          position: relative !important;\n          letter-spacing: 0.01em !important;\n          font-size: 10px !important;\n          line-height: 20px !important;\n          font-weight: 600 !important;\n}\n\n.more-docs-section {\n          background: #f6f3e0 !important;\n          padding: 94px 12px !important;\n}\n\n.more-docs-container {\n          max-width: 1200px !important;\n          margin: 0 auto !important;\n          text-align: center !important;\n}\n\n.more-docs-title {\n          font-weight: 700 !important;\n          margin: 0 0 16px !important;\n          font-size: 36px !important;\n}\n\n.more-docs-desc {\n          font-size: 20px !important;\n          color: #0D0D0B !important;\n          margin-bottom: 40px !important;\n}\n\n.more-docs-grid {\n          display: flex !important;\n          justify-content: space-around !important;\n          gap: 48px !important;\n          flex-wrap: wrap !important;\n}\n\n.more-docs-card {\n          flex: 1 1 30% !important;\n          max-width: 100% !important;\n          display: flex !important;\n          flex-direction: column !important;\n          align-items: center !important;\n          gap: 12px !important;\n}\n\n.more-docs-card-icon {\n          width: 48px !important;\n          height: 48px !important;\n}\n\n.more-docs-card-image {\n          width: auto !important;\n          height: 32px !important;\n          margin-bottom: 8px !important;\n}\n\n.more-docs-card-title {\n          font-weight: 700 !important;\n          color: #0D0D0B !important;\n}\n\n.more-docs-card-title span {\n          color: #888 !important;\n          font-weight: 400 !important;\n}\n\n.more-docs-card-desc {\n          font-size: 16px !important;\n          line-height: 24px !important;\n          color: #0D0D0B !important;\n}\n\n.more-docs-link {\n          color: #B0361E !important;\n          font-size: 16px !important;\n          font-weight: 600 !important;\n          text-decoration: none !important;\n          display: flex !important;\n          align-items: center !important;\n}\n.more-docs-link:hover {\n          text-decoration: underline !important;\n}\n\n.more-docs-icon-arrow {\n          width: 20px !important;\n}\n\n.release-section {\n          background: #FFD706 !important;\n          padding: 64px 0 !important;\n}\n\n.release-container {\n          max-width: 600px !important;\n          margin: 0 auto !important;\n          text-align: center !important;\n}\n\n.release-title {\n          font-family: 'F37 Gruffy', cursive !important;\n          font-size: 2rem !important;\n          font-weight: 700 !important;\n          margin-bottom: 16px !important;\n}\n\n.release-desc {\n          font-size: 18px !important;\n          color: #0D0D0B !important;\n          margin-bottom: 32px !important;\n}\n\n.release-form {\n          display: flex !important;\n          gap: 8px !important;\n          justify-content: center !important;\n          margin-bottom: 8px !important;\n}\n\n.release-input {\n          flex: 1 !important;\n          min-width: 0 !important;\n          padding: 12px !important;\n          border-radius: 6px !important;\n          border: 1px solid #ccc !important;\n          font-size: 16px !important;\n}\n\n.release-button {\n          background: #0D0D0B !important;\n          color: #fff !important;\n          border: none !important;\n          border-radius: 6px !important;\n          padding: 12px 24px !important;\n          font-size: 16px !important;\n          font-weight: 600 !important;\n          cursor: pointer !important;\n}\n\n.release-privacy {\n          font-size: 13px !important;\n          color: #0D0D0B !important;\n}\n\n.release-privacy a {\n          color: #0D0D0B !important;\n          text-decoration: underline !important;\n}\n\n@media (max-width: 1024px) {\n          .globallp-header-content {\n              max-width: 100% !important;\n          }\n\n          .feature-grid {\n              max-width: 1200px !important;\n              margin: 0 auto !important;\n              display: grid !important;\n              grid-template-columns: repeat(2, 1fr) !important;\n              gap: 32px 24px !important;\n              padding: 0 24px !important;\n          }\n\n}\n@media (max-width: 768px) {\n          .feature-grid {\n              max-width: 1200px !important;\n              margin: 0 auto !important;\n              display: grid !important;\n              grid-template-columns: repeat(1, 1fr) !important;\n              gap: 32px 24px !important;\n              padding: 0 24px !important;\n          }\n          .feature-card {\n              height: 100px !important;\n          }\n}","stylesheet_hub3":"","javascript":"","javascript_hub2":"(() => {\n  \"use strict\";\n\n  /*\n   * Recurly Changelog navigation override\n   *\n   * - Rewrites each native ReadMe Changelog link\n   * - Supports full page loads and ReadMe SPA navigation\n   * - Highlights Changelog only on the exact custom changelog page\n   * - Restores Directory and other native section highlighting everywhere else\n   */\n\n  const SCRIPT_KEY = \"__recurlyChangelogNavigation\";\n\n  const PROJECTS = {\n    \"recurly-subscriptions\": {\n      targetPath:\n        \"/recurly-subscriptions/docs/recurly-subscriptions-changelog\",\n    },\n\n    \"recurly-commerce\": {\n      targetPath:\n        \"/recurly-commerce/docs/recurly-commerce-changelog\",\n    },\n\n    \"recurly-engage\": {\n      targetPath:\n        \"/recurly-engage/docs/recurly-engage-changelog\",\n    },\n\n    \"recurly-revrec\": {\n      targetPath:\n        \"/recurly-revrec/docs/changelog\",\n    },\n  };\n\n  const NAV_SELECTOR =\n    'nav[aria-label=\"Primary navigation\"]';\n\n  /*\n   * ReadMe's mobile hamburger menu is a separate\n   * \"flyout\" component, not a \u003cnav aria-label=\"Primary\n   * navigation\">. Its items carry ReadMe's stable \"rm-\"\n   * prefixed hook class (unlike the CSS-module hashed\n   * classes alongside it, which change across deploys).\n   */\n  const MOBILE_NAV_SELECTOR =\n    \".rm-MobileFlyout-item[href]\";\n\n  const CHANGELOG_TARGET_ATTRIBUTE =\n    \"data-recurly-changelog-target\";\n\n  /*\n   * Remove an older instance if this script is loaded again.\n   */\n  if (\n    window[SCRIPT_KEY] &&\n    typeof window[SCRIPT_KEY].destroy === \"function\"\n  ) {\n    window[SCRIPT_KEY].destroy();\n  }\n\n  const state = {\n    observer: null,\n    routeInterval: null,\n    animationFrame: null,\n    retryTimers: new Set(),\n    lastPath: \"\",\n    destroyed: false,\n  };\n\n  function normalizePath(value) {\n    try {\n      const url = new URL(\n        value,\n        window.location.origin\n      );\n\n      const pathname = url.pathname || \"/\";\n\n      if (pathname === \"/\") {\n        return \"/\";\n      }\n\n      return pathname.replace(/\\/+$/, \"\");\n    } catch (error) {\n      return \"\";\n    }\n  }\n\n  function getCurrentPath() {\n    return normalizePath(window.location.href);\n  }\n\n  function getCurrentProject() {\n    const pathname = getCurrentPath();\n\n    const projectKey = pathname\n      .split(\"/\")\n      .filter(Boolean)[0];\n\n    const projectConfig =\n      PROJECTS[projectKey];\n\n    if (!projectConfig) {\n      return null;\n    }\n\n    const rootPath = `/${projectKey}`;\n\n    return {\n      key: projectKey,\n      pathname,\n      rootPath,\n      docsPath: `${rootPath}/docs`,\n      referencePath: `${rootPath}/reference`,\n      recipesPath: `${rootPath}/recipes`,\n      discussionsPath: `${rootPath}/discuss`,\n      nativeChangelogPath: `${rootPath}/changelog`,\n      targetPath: normalizePath(\n        projectConfig.targetPath\n      ),\n      targetUrl: new URL(\n        projectConfig.targetPath,\n        window.location.origin\n      ).href,\n    };\n  }\n\n  function pathIsWithin(\n    pathname,\n    sectionPath\n  ) {\n    return (\n      pathname === sectionPath ||\n      pathname.startsWith(\n        `${sectionPath}/`\n      )\n    );\n  }\n\n  function getPrimaryNavs() {\n    return Array.from(\n      document.querySelectorAll(\n        NAV_SELECTOR\n      )\n    );\n  }\n\n  function getNavLinks(nav) {\n    return Array.from(\n      nav.querySelectorAll(\"a[href]\")\n    );\n  }\n\n  function getLinkText(link) {\n    return link.textContent\n      .replace(/\\s+/g, \" \")\n      .trim()\n      .toLowerCase();\n  }\n\n  function getLinkPath(link) {\n    return normalizePath(\n      link.getAttribute(\"href\")\n    );\n  }\n\n  function hasIcon(link, iconClass) {\n    return Boolean(\n      link.querySelector(`.${iconClass}`)\n    );\n  }\n\n  function isChangelogLink(\n    link,\n    project\n  ) {\n    if (\n      !(link instanceof HTMLAnchorElement)\n    ) {\n      return false;\n    }\n\n    if (\n      link.hasAttribute(\n        CHANGELOG_TARGET_ATTRIBUTE\n      )\n    ) {\n      return true;\n    }\n\n    if (\n      hasIcon(link, \"icon-changelog\")\n    ) {\n      return true;\n    }\n\n    if (\n      getLinkText(link) === \"changelog\"\n    ) {\n      return true;\n    }\n\n    const linkPath = getLinkPath(link);\n\n    return (\n      linkPath ===\n        project.nativeChangelogPath ||\n      linkPath === project.targetPath\n    );\n  }\n\n  function findChangelogLink(\n    nav,\n    project\n  ) {\n    return (\n      getNavLinks(nav).find((link) =>\n        isChangelogLink(link, project)\n      ) || null\n    );\n  }\n\n  function findLinkByIcon(\n    nav,\n    iconClass\n  ) {\n    return (\n      getNavLinks(nav).find((link) =>\n        hasIcon(link, iconClass)\n      ) || null\n    );\n  }\n\n  function findLinkByPath(\n    nav,\n    pathname\n  ) {\n    return (\n      getNavLinks(nav).find(\n        (link) =>\n          getLinkPath(link) === pathname\n      ) || null\n    );\n  }\n\n  function findLinkByText(nav, text) {\n    const expectedText = text\n      .trim()\n      .toLowerCase();\n\n    return (\n      getNavLinks(nav).find(\n        (link) =>\n          getLinkText(link) ===\n          expectedText\n      ) || null\n    );\n  }\n\n  function findHomeLink(nav, project) {\n    return (\n      findLinkByIcon(\n        nav,\n        \"icon-landing-page-2\"\n      ) ||\n      findLinkByPath(\n        nav,\n        project.rootPath\n      ) ||\n      findLinkByText(nav, \"home\")\n    );\n  }\n\n  function findDirectoryLink(\n    nav,\n    project\n  ) {\n    return (\n      findLinkByIcon(\n        nav,\n        \"icon-guides\"\n      ) ||\n      findLinkByPath(\n        nav,\n        project.docsPath\n      ) ||\n      findLinkByText(\n        nav,\n        \"directory\"\n      ) ||\n      findLinkByText(nav, \"guides\")\n    );\n  }\n\n  function findReferenceLink(\n    nav,\n    project\n  ) {\n    return (\n      findLinkByIcon(\n        nav,\n        \"icon-references\"\n      ) ||\n      findLinkByPath(\n        nav,\n        project.referencePath\n      ) ||\n      findLinkByText(\n        nav,\n        \"api reference\"\n      )\n    );\n  }\n\n  function findRecipesLink(\n    nav,\n    project\n  ) {\n    return (\n      findLinkByPath(\n        nav,\n        project.recipesPath\n      ) ||\n      findLinkByText(nav, \"recipes\")\n    );\n  }\n\n  function findDiscussionsLink(\n    nav,\n    project\n  ) {\n    return (\n      findLinkByPath(\n        nav,\n        project.discussionsPath\n      ) ||\n      findLinkByText(\n        nav,\n        \"discussions\"\n      )\n    );\n  }\n\n  function normalizeChangelogLink(\n    changelogLink,\n    project\n  ) {\n    if (!changelogLink) {\n      return null;\n    }\n\n    if (\n      changelogLink.getAttribute(\n        CHANGELOG_TARGET_ATTRIBUTE\n      ) !== project.targetUrl\n    ) {\n      changelogLink.setAttribute(\n        CHANGELOG_TARGET_ATTRIBUTE,\n        project.targetUrl\n      );\n    }\n\n    if (\n      changelogLink.href !==\n      project.targetUrl\n    ) {\n      changelogLink.setAttribute(\n        \"href\",\n        project.targetUrl\n      );\n    }\n\n    if (\n      changelogLink.getAttribute(\n        \"target\"\n      ) !== \"_self\"\n    ) {\n      changelogLink.setAttribute(\n        \"target\",\n        \"_self\"\n      );\n    }\n\n    return changelogLink;\n  }\n\n  function rewriteChangelogLink(\n    nav,\n    project\n  ) {\n    const changelogLink =\n      findChangelogLink(nav, project);\n\n    return normalizeChangelogLink(\n      changelogLink,\n      project\n    );\n  }\n\n  /*\n   * ReadMe's mobile flyout menu is a separate DOM\n   * structure from the desktop tab bar (see\n   * MOBILE_NAV_SELECTOR), so it is never reached by the\n   * NAV_SELECTOR-scoped rewrite below. Fix its Changelog\n   * link the same way.\n   */\n  function normalizeMobileChangelogLinks(\n    project\n  ) {\n    Array.from(\n      document.querySelectorAll(\n        MOBILE_NAV_SELECTOR\n      )\n    )\n      .filter((link) =>\n        isChangelogLink(link, project)\n      )\n      .forEach((link) =>\n        normalizeChangelogLink(\n          link,\n          project\n        )\n      );\n  }\n\n  /*\n   * This is the important part.\n   *\n   * Changelog is returned only when the URL is an exact match.\n   * Every other /docs page returns Directory.\n   */\n  function getExpectedActiveLink(\n    nav,\n    project,\n    changelogLink\n  ) {\n    const pathname = project.pathname;\n\n    if (\n      pathname === project.targetPath\n    ) {\n      return changelogLink;\n    }\n\n    if (\n      pathname === project.rootPath\n    ) {\n      return findHomeLink(\n        nav,\n        project\n      );\n    }\n\n    if (\n      pathIsWithin(\n        pathname,\n        project.docsPath\n      )\n    ) {\n      return findDirectoryLink(\n        nav,\n        project\n      );\n    }\n\n    if (\n      pathIsWithin(\n        pathname,\n        project.referencePath\n      )\n    ) {\n      return findReferenceLink(\n        nav,\n        project\n      );\n    }\n\n    if (\n      pathIsWithin(\n        pathname,\n        project.recipesPath\n      )\n    ) {\n      return findRecipesLink(\n        nav,\n        project\n      );\n    }\n\n    if (\n      pathIsWithin(\n        pathname,\n        project.discussionsPath\n      )\n    ) {\n      return findDiscussionsLink(\n        nav,\n        project\n      );\n    }\n\n    return null;\n  }\n\n  function findIndicator(nav) {\n    return (\n      Array.from(nav.children).find(\n        (element) => {\n          return (\n            element instanceof\n              HTMLElement &&\n            element.tagName === \"DIV\" &&\n            typeof element.className ===\n              \"string\" &&\n            element.className.includes(\n              \"Header-subnav-tab\"\n            )\n          );\n        }\n      ) || null\n    );\n  }\n\n  function setLinkActive(\n    link,\n    shouldBeActive\n  ) {\n    if (!link) {\n      return;\n    }\n\n    if (\n      link.classList.contains(\"active\") !==\n      shouldBeActive\n    ) {\n      link.classList.toggle(\n        \"active\",\n        shouldBeActive\n      );\n    }\n\n    if (shouldBeActive) {\n      if (\n        link.getAttribute(\n          \"aria-current\"\n        ) !== \"page\"\n      ) {\n        link.setAttribute(\n          \"aria-current\",\n          \"page\"\n        );\n      }\n    } else if (\n      link.hasAttribute(\"aria-current\")\n    ) {\n      link.removeAttribute(\n        \"aria-current\"\n      );\n    }\n  }\n\n  function moveIndicator(\n    nav,\n    activeLink\n  ) {\n    if (!activeLink) {\n      return;\n    }\n\n    const indicator =\n      findIndicator(nav);\n\n    if (!indicator) {\n      return;\n    }\n\n    const navRect =\n      nav.getBoundingClientRect();\n\n    const linkRect =\n      activeLink.getBoundingClientRect();\n\n    /*\n     * Skip hidden duplicate or mobile navigation\n     * until it becomes visible.\n     */\n    if (\n      navRect.width \u003c= 0 ||\n      linkRect.width \u003c= 0\n    ) {\n      return;\n    }\n\n    const left =\n      linkRect.left -\n      navRect.left +\n      nav.scrollLeft;\n\n    const expectedTransform =\n      `translateX(${Math.round(left)}px)`;\n\n    const expectedWidth =\n      `${Math.round(linkRect.width)}px`;\n\n    if (\n      indicator.style.transform !==\n      expectedTransform\n    ) {\n      indicator.style.transform =\n        expectedTransform;\n    }\n\n    if (\n      indicator.style.width !==\n      expectedWidth\n    ) {\n      indicator.style.width =\n        expectedWidth;\n    }\n  }\n\n  function updateActiveState(\n    nav,\n    project,\n    changelogLink\n  ) {\n    const expectedActiveLink =\n      getExpectedActiveLink(\n        nav,\n        project,\n        changelogLink\n      );\n\n    /*\n     * Even if the current route is unknown, Changelog must\n     * never remain active unless this is the exact target page.\n     */\n    if (!expectedActiveLink) {\n      setLinkActive(\n        changelogLink,\n        false\n      );\n\n      return;\n    }\n\n    getNavLinks(nav).forEach((link) => {\n      setLinkActive(\n        link,\n        link === expectedActiveLink\n      );\n    });\n\n    moveIndicator(\n      nav,\n      expectedActiveLink\n    );\n  }\n\n  function applyNavigationState() {\n    if (state.destroyed) {\n      return;\n    }\n\n    const project =\n      getCurrentProject();\n\n    if (!project) {\n      return;\n    }\n\n    normalizeMobileChangelogLinks(\n      project\n    );\n\n    getPrimaryNavs().forEach((nav) => {\n      const changelogLink =\n        rewriteChangelogLink(\n          nav,\n          project\n        );\n\n      if (!changelogLink) {\n        return;\n      }\n\n      updateActiveState(\n        nav,\n        project,\n        changelogLink\n      );\n    });\n  }\n\n  function queueApply() {\n    if (\n      state.destroyed ||\n      state.animationFrame !== null\n    ) {\n      return;\n    }\n\n    state.animationFrame =\n      window.requestAnimationFrame(() => {\n        state.animationFrame = null;\n        applyNavigationState();\n      });\n  }\n\n  function clearRetryTimers() {\n    state.retryTimers.forEach(\n      (timer) => {\n        window.clearTimeout(timer);\n      }\n    );\n\n    state.retryTimers.clear();\n  }\n\n  function scheduleSettlingPasses() {\n    clearRetryTimers();\n    queueApply();\n\n    /*\n     * ReadMe may change the URL, article, and active\n     * classes in separate render passes.\n     */\n    [50, 150, 400, 900].forEach(\n      (delay) => {\n        const timer =\n          window.setTimeout(() => {\n            state.retryTimers.delete(\n              timer\n            );\n\n            queueApply();\n          }, delay);\n\n        state.retryTimers.add(timer);\n      }\n    );\n  }\n\n  function activeStateNeedsRepair() {\n    const project =\n      getCurrentProject();\n\n    if (!project) {\n      return false;\n    }\n\n    const navs = getPrimaryNavs();\n\n    if (!navs.length) {\n      return true;\n    }\n\n    return navs.some((nav) => {\n      const changelogLink =\n        findChangelogLink(\n          nav,\n          project\n        );\n\n      if (!changelogLink) {\n        return true;\n      }\n\n      const expectedActiveLink =\n        getExpectedActiveLink(\n          nav,\n          project,\n          changelogLink\n        );\n\n      /*\n       * Unknown routes still must not leave\n       * Changelog highlighted.\n       */\n      if (!expectedActiveLink) {\n        return (\n          changelogLink.classList.contains(\n            \"active\"\n          ) ||\n          changelogLink.hasAttribute(\n            \"aria-current\"\n          )\n        );\n      }\n\n      const activeLinks =\n        getNavLinks(nav).filter(\n          (link) =>\n            link.classList.contains(\n              \"active\"\n            ) ||\n            link.getAttribute(\n              \"aria-current\"\n            ) === \"page\"\n        );\n\n      return (\n        activeLinks.length !== 1 ||\n        activeLinks[0] !==\n          expectedActiveLink\n      );\n    });\n  }\n\n  function handleRouteCheck() {\n    const currentPath =\n      getCurrentPath();\n\n    if (\n      currentPath !== state.lastPath\n    ) {\n      state.lastPath = currentPath;\n      scheduleSettlingPasses();\n      return;\n    }\n\n    if (activeStateNeedsRepair()) {\n      queueApply();\n    }\n  }\n\n  function getEventElement(event) {\n    if (\n      event.target instanceof Element\n    ) {\n      return event.target;\n    }\n\n    if (\n      event.target instanceof Node\n    ) {\n      return event.target.parentElement;\n    }\n\n    return null;\n  }\n\n  function handleClick(event) {\n    const eventElement =\n      getEventElement(event);\n\n    if (!eventElement) {\n      return;\n    }\n\n    /*\n     * Match links in the desktop tab bar OR the mobile\n     * flyout menu. ReadMe's mobile menu is a structurally\n     * different DOM from the desktop tab bar and is never\n     * inside NAV_SELECTOR, so scoping the lookup to that\n     * selector alone silently missed every mobile\n     * Changelog tap.\n     */\n    const link = eventElement.closest(\n      `${NAV_SELECTOR} a[href], ${MOBILE_NAV_SELECTOR}`\n    );\n\n    if (\n      !(link instanceof\n        HTMLAnchorElement)\n    ) {\n      return;\n    }\n\n    const project =\n      getCurrentProject();\n\n    if (!project) {\n      return;\n    }\n\n    /*\n     * For normal header/flyout links, let ReadMe handle\n     * its normal SPA navigation. The observer and route\n     * watcher will update the active state afterward.\n     */\n    if (\n      !isChangelogLink(\n        link,\n        project\n      )\n    ) {\n      window.setTimeout(\n        scheduleSettlingPasses,\n        0\n      );\n\n      return;\n    }\n\n    /*\n     * Always make sure modified clicks and\n     * open-in-new-tab use the correct URL.\n     */\n    link.setAttribute(\n      CHANGELOG_TARGET_ATTRIBUTE,\n      project.targetUrl\n    );\n\n    link.setAttribute(\n      \"href\",\n      project.targetUrl\n    );\n\n    link.setAttribute(\n      \"target\",\n      \"_self\"\n    );\n\n    const isModifiedClick =\n      event.metaKey ||\n      event.ctrlKey ||\n      event.shiftKey ||\n      event.altKey ||\n      event.button !== 0;\n\n    if (isModifiedClick) {\n      return;\n    }\n\n    /*\n     * Prevent ReadMe's native Changelog router from\n     * reducing the destination back to /docs.\n     */\n    event.preventDefault();\n    event.stopPropagation();\n    event.stopImmediatePropagation();\n\n    window.location.assign(\n      project.targetUrl\n    );\n  }\n\n  function handlePageShow() {\n    state.lastPath =\n      getCurrentPath();\n\n    scheduleSettlingPasses();\n  }\n\n  function initialize() {\n    state.lastPath =\n      getCurrentPath();\n\n    /*\n     * Capture phase runs before ReadMe's\n     * React click handlers.\n     */\n    window.addEventListener(\n      \"click\",\n      handleClick,\n      true\n    );\n\n    window.addEventListener(\n      \"popstate\",\n      handleRouteCheck\n    );\n\n    window.addEventListener(\n      \"hashchange\",\n      handleRouteCheck\n    );\n\n    window.addEventListener(\n      \"pageshow\",\n      handlePageShow\n    );\n\n    /*\n     * The header itself may remain mounted while the\n     * article changes. Watching body content catches\n     * those SPA article replacements.\n     *\n     * Only child-list changes are observed, so the\n     * script's own class and href updates do not\n     * create a MutationObserver loop.\n     */\n    state.observer =\n      new MutationObserver(() => {\n        handleRouteCheck();\n      });\n\n    state.observer.observe(\n      document.body,\n      {\n        childList: true,\n        subtree: true,\n      }\n    );\n\n    /*\n     * Fallback route check. This only updates the DOM\n     * when the pathname or active state is incorrect.\n     */\n    state.routeInterval =\n      window.setInterval(\n        handleRouteCheck,\n        500\n      );\n\n    scheduleSettlingPasses();\n  }\n\n  function destroy() {\n    state.destroyed = true;\n\n    window.removeEventListener(\n      \"click\",\n      handleClick,\n      true\n    );\n\n    window.removeEventListener(\n      \"popstate\",\n      handleRouteCheck\n    );\n\n    window.removeEventListener(\n      \"hashchange\",\n      handleRouteCheck\n    );\n\n    window.removeEventListener(\n      \"pageshow\",\n      handlePageShow\n    );\n\n    if (state.observer) {\n      state.observer.disconnect();\n      state.observer = null;\n    }\n\n    if (\n      state.routeInterval !== null\n    ) {\n      window.clearInterval(\n        state.routeInterval\n      );\n\n      state.routeInterval = null;\n    }\n\n    if (\n      state.animationFrame !== null\n    ) {\n      window.cancelAnimationFrame(\n        state.animationFrame\n      );\n\n      state.animationFrame = null;\n    }\n\n    clearRetryTimers();\n  }\n\n  window[SCRIPT_KEY] = {\n    destroy,\n    refresh:\n      scheduleSettlingPasses,\n  };\n\n  if (\n    document.readyState ===\n    \"loading\"\n  ) {\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      initialize,\n      { once: true }\n    );\n  } else {\n    initialize();\n  }\n})();\n\n\n// Hero search trigger\nfunction initHeroSearch() {\n  var trigger = document.getElementById('hero-search-trigger');\n  var searchBtn = document.querySelector('.rm-SearchToggle');\n\n  if (trigger && searchBtn && !trigger.dataset.bound) {\n    trigger.dataset.bound = 'true';\n    trigger.addEventListener('click', function () {\n      searchBtn.click();\n    });\n    return true;\n  }\n  return false;\n}\n\nvar attempts = 0;\nvar poll = setInterval(function () {\n  attempts++;\n  if (initHeroSearch() || attempts > 20) {\n    clearInterval(poll);\n  }\n}, 300);\n\n// AdRoll\nadroll_adv_id = \"TFQKXJNRFJEF5CM6V73ISQ\";\nadroll_pix_id = \"ONVWEBEM5BGVHHBA6X32YK\";\n\n(function () {\n  var _onload = function () {\n    if (document.readyState && !/loaded|complete/.test(document.readyState)) { setTimeout(_onload, 10); return; }\n    if (!window.__adroll_loaded) { __adroll_loaded = true; setTimeout(_onload, 50); return; }\n    var scr = document.createElement(\"script\");\n    var host = ((\"https:\" == document.location.protocol) ? \"https://s.adroll.com\" : \"http://a.adroll.com\");\n    scr.setAttribute('async', 'true');\n    scr.type = \"text/javascript\";\n    scr.src = host + \"/j/roundtrip.js\";\n    ((document.getElementsByTagName('head') || [null])[0] ||\n      document.getElementsByTagName('script')[0].parentNode).appendChild(scr);\n  };\n  if (window.addEventListener) { window.addEventListener('load', _onload, false); }\n  else { window.attachEvent('onload', _onload); }\n}());\n\n// Image zoom\n(function () {\n  const zoomerContainer = document.querySelector('.image-zoomer-container');\n  const zoomImage = document.getElementById('zoom-image');\n\n  if (!zoomerContainer || !zoomImage) return;\n\n  zoomerContainer.addEventListener('mousemove', (e) => {\n    const rect = zoomerContainer.getBoundingClientRect();\n    const x = e.clientX - rect.left;\n    const y = e.clientY - rect.top;\n    const xPercent = (x / rect.width) * 100;\n    const yPercent = (y / rect.height) * 100;\n    zoomImage.style.transformOrigin = `${xPercent}% ${yPercent}%`;\n    zoomImage.classList.add('move');\n  });\n\n  zoomerContainer.addEventListener('mouseleave', () => {\n    zoomImage.style.transformOrigin = 'center';\n    zoomImage.classList.remove('move');\n  });\n}());\n\n\n// Heading click — \"Link copied\" pill notification\n(function () {\n\n  // Creates and animates a floating \"Link copied\" pill on the clicked heading\n  // Also copies the full URL (including hash) to the clipboard\n  function showLinkCopiedPill(heading) {\n    var anchor = heading.querySelector('.heading-anchor-icon');\n    if (!anchor) return;\n\n    var href = anchor.getAttribute('href');\n    if (!href) return;\n\n    // Build the full URL with the hash\n    var fullUrl = window.location.origin + window.location.pathname + href;\n\n    // Copy to clipboard, then show the pill\n    navigator.clipboard.writeText(fullUrl).then(function () {\n      // Remove any existing pill before creating a new one\n      var existing = heading.querySelector('.rp-link-copied-pill');\n      if (existing) existing.remove();\n\n      // Build the pill element\n      var pill = document.createElement('span');\n      pill.className = 'rp-link-copied-pill';\n      pill.textContent = '🔗 Link copied';\n      pill.style.cssText = [\n        'position: absolute',\n        'right: 32px',\n        'top: 50%',\n        'transform: translateY(-50%)',\n        'font-family: var(--recurly-font, sans-serif)',\n        'font-size: 11px',\n        'font-weight: 700',\n        'color: #0D0D0B',\n        'background: #FFD706',\n        'padding: 3px 10px',\n        'border-radius: 12px',\n        'pointer-events: none',\n        'white-space: nowrap',\n        'z-index: 10',\n        'opacity: 1',\n        'transition: opacity 2.5s ease, transform 2.5s ease',\n      ].join(';');\n\n      heading.appendChild(pill);\n\n      // Double rAF ensures the browser has painted the initial state\n      // before triggering the float-up + fade-out transition\n      requestAnimationFrame(function () {\n        requestAnimationFrame(function () {\n          pill.style.transform = 'translateY(calc(-50% - 14px))';\n          pill.style.opacity = '0';\n        });\n      });\n\n      // Remove the pill from the DOM after the transition completes\n      setTimeout(function () {\n        pill.remove();\n      }, 8000);\n    }).catch(function (err) {\n      console.error('Failed to copy link to clipboard:', err);\n    });\n  }\n\n  function attachListeners() {\n    document.querySelectorAll('.rm-Markdown.markdown-body .heading').forEach(function (heading) {\n      // Skip headings that already have listeners attached\n      if (heading.dataset.rpAttached) return;\n      heading.dataset.rpAttached = 'true';\n\n      // Click anywhere on the heading text (not the anchor icon)\n      // — programmatically click the anchor so ReadMe's native handler\n      // runs normally, then show the pill and copy the link\n      heading.addEventListener('click', function (e) {\n        // Ignore clicks on the anchor icon itself — it has its own listener below\n        if (e.target.closest('.heading-anchor-icon')) return;\n\n        var anchor = heading.querySelector('.heading-anchor-icon');\n        if (!anchor) return;\n\n        // Let ReadMe handle the navigation natively\n        anchor.click();\n        showLinkCopiedPill(heading);\n      });\n\n      // Click on the anchor icon — ReadMe handles the hash natively,\n      // we just copy the link and show the pill\n      var anchor = heading.querySelector('.heading-anchor-icon');\n      if (anchor) {\n        anchor.addEventListener('click', function () {\n          showLinkCopiedPill(heading);\n        });\n      }\n    });\n  }\n\n  // Attach listeners on initial page load\n  attachListeners();\n\n  // Re-attach after ReadMe's SPA router swaps page content\n  var observer = new MutationObserver(function () {\n    attachListeners();\n  });\n\n  observer.observe(document.body, { childList: true, subtree: true });\n\n})();\n\n/* ============================================================\n   rp-shelf — infinite carousel behavior.\n   Paste into ReadMe Custom JS.\n\n   Structure expected per shelf (inside HTMLBlock):\n     \u003cdiv class=\"rp-shelf rp-shelf-carousel\">\n       \u003cdiv class=\"rp-shelf-header\">...\u003c/div>\n       \u003cdiv class=\"rp-shelf-viewport\">\n         \u003cdiv class=\"rp-shelf-track\">\n           \u003cdiv class=\"rp-shelf-card\">...\u003c/div>\n           ...\n         \u003c/div>\n       \u003c/div>\n       \u003cdiv class=\"rp-shelf-controls\">\n         \u003cbutton class=\"rp-shelf-btn rp-shelf-prev\">...\u003c/button>\n         \u003cbutton class=\"rp-shelf-btn rp-shelf-next\">...\u003c/button>\n       \u003c/div>\n     \u003c/div>\n   ============================================================ */\n\n(function () {\n  'use strict';\n\n  var TRANSITION_MS = 500;\n  var GAP_PX = 14;\n\n  function initShelf(shelf) {\n    if (shelf.dataset.rpShelfInit === '1') return;\n    shelf.dataset.rpShelfInit = '1';\n\n    var track = shelf.querySelector('.rp-shelf-track');\n    var prevBtn = shelf.querySelector('.rp-shelf-prev');\n    var nextBtn = shelf.querySelector('.rp-shelf-next');\n    if (!track || !prevBtn || !nextBtn) return;\n\n    var realCards = Array.prototype.slice.call(track.children);\n    var total = realCards.length;\n    if (total \u003c 3) return; // safety net — 3+ cards required for carousel\n\n    // Prepend 2 clones (last two) and append 2 clones (first two).\n    // This lets us show a full 3-card frame when currentIndex is -1 or total,\n    // so the loop reset is visually seamless.\n    var prevPrev = realCards[total - 2].cloneNode(true);\n    var prev = realCards[total - 1].cloneNode(true);\n    var next = realCards[0].cloneNode(true);\n    var nextNext = realCards[1].cloneNode(true);\n    [prevPrev, prev, next, nextNext].forEach(function (c) {\n      c.setAttribute('data-clone', 'true');\n      c.classList.remove('rp-active');\n    });\n    track.insertBefore(prevPrev, realCards[0]);\n    track.insertBefore(prev, realCards[0]);\n    track.appendChild(next);\n    track.appendChild(nextNext);\n\n    var currentIndex = 0; // pointer into real cards (0..total-1)\n    var isTransitioning = false;\n\n    function cardWidth() {\n      return realCards[0].getBoundingClientRect().width;\n    }\n\n    function setActive(idx) {\n      var all = track.children;\n      // Active card lives at track index (idx + 2) because of the two prepended clones.\n      var activeTrackIdx = idx + 2;\n      for (var i = 0; i \u003c all.length; i++) {\n        if (i === activeTrackIdx) all[i].classList.add('rp-active');\n        else all[i].classList.remove('rp-active');\n      }\n    }\n\n    function positionTrack(withTransition) {\n      var w = cardWidth();\n      if (!w) {\n        // Not yet laid out — retry next frame.\n        requestAnimationFrame(function () { positionTrack(withTransition); });\n        return;\n      }\n      var offset = (currentIndex + 1) * (w + GAP_PX);\n      track.style.transition = withTransition\n        ? 'transform ' + TRANSITION_MS + 'ms cubic-bezier(0.4, 0, 0.2, 1)'\n        : 'none';\n      track.style.transform = 'translateX(' + (-offset) + 'px)';\n    }\n\n    function go(delta) {\n      if (isTransitioning) return;\n      isTransitioning = true;\n      currentIndex += delta;\n      setActive(currentIndex);\n      positionTrack(true);\n\n      window.setTimeout(function () {\n        // Handle infinite-loop reset\n        if (currentIndex >= total) currentIndex = 0;\n        else if (currentIndex \u003c 0) currentIndex = total - 1;\n        setActive(currentIndex);\n        // Snap to real position without transition\n        positionTrack(false);\n        // Force a reflow so the next transition takes effect\n        void track.offsetHeight;\n        isTransitioning = false;\n      }, TRANSITION_MS);\n    }\n\n    nextBtn.addEventListener('click', function () { go(1); });\n    prevBtn.addEventListener('click', function () { go(-1); });\n\n    // Keyboard support once a control is focused\n    shelf.addEventListener('keydown', function (e) {\n      if (e.key === 'ArrowRight') { e.preventDefault(); go(1); }\n      else if (e.key === 'ArrowLeft') { e.preventDefault(); go(-1); }\n    });\n\n    // Reposition on window resize (card widths change with layout)\n    var resizeTimer;\n    window.addEventListener('resize', function () {\n      window.clearTimeout(resizeTimer);\n      resizeTimer = window.setTimeout(function () {\n        positionTrack(false);\n      }, 100);\n    });\n\n    // Initial state\n    setActive(currentIndex);\n    positionTrack(false);\n  }\n\n  function initAll() {\n    var shelves = document.querySelectorAll('.rp-shelf-carousel');\n    for (var i = 0; i \u003c shelves.length; i++) initShelf(shelves[i]);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initAll);\n  } else {\n    initAll();\n  }\n  // Re-init when ReadMe SPA-navigates to a new page\n  window.addEventListener('load', initAll);\n  var mo = new MutationObserver(function () { initAll(); });\n  mo.observe(document.body, { childList: true, subtree: true });\n})();\n/* ============================================================\n   Changelog page — inject branded intro header\n   Uses MutationObserver to handle SPA navigation. Each time\n   the DOM changes, attempts to inject the header. Idempotent —\n   the function checks for an existing header and bails if found.\n   ============================================================ */\n(function () {\n  function injectChangelogHeader() {\n    var container = document.querySelector('.rm-Changelog .rm-ContainerNarrow');\n    if (!container) return;\n    if (document.getElementById('recurly-changelog-header')) return;\n    var header = document.createElement('div');\n    header.id = 'recurly-changelog-header';\n    header.className = 'rm-Markdown markdown-body';\n    header.style.padding = '24px 0 8px';\n    header.innerHTML = `\n      \u003ch1>Recurly Commerce Changelog\u003c/h1>\n      \u003cp>Discover what's new in Recurly Commerce. Browse posts by year to see recent launches, enhancements, and behind-the-scenes improvements that keep your platform sharp.\u003c/p>\n      \u003cp class=\"rss-line\">\n        \u003ci class=\"fa-solid fa-rss rss-icon\" aria-hidden=\"true\">\u003c/i>\n        Stay in the loop — copy our \u003cbutton type=\"button\" class=\"rss-copy\" data-url=\"https://docs.recurly.com/recurly-subscriptions/changelog.rss\">RSS feed URL\u003c/button> and paste it into your favorite RSS reader to get every update the moment it ships.\n      \u003c/p>\n      \u003cdiv class=\"rss-instructions-wrap\">\n        \u003cbutton type=\"button\" class=\"rss-instructions-toggle\" aria-expanded=\"false\" aria-controls=\"rss-instructions-body\">\n          \u003ci class=\"fa-solid fa-circle-question\" aria-hidden=\"true\">\u003c/i>\n          How to use this URL\n          \u003ci class=\"fa-solid fa-chevron-down rss-chevron\" aria-hidden=\"true\">\u003c/i>\n        \u003c/button>\n        \u003cdiv id=\"rss-instructions-body\" class=\"rss-instructions-body\" hidden>\n          \u003cp>An RSS reader lets you subscribe to the changelog and receive new posts automatically — no need to check back manually. You can usually choose to see posts as a combined feed or read each one in full.\u003c/p>\n          \u003cp>We recommend \u003ca href=\"https://feedly.com\" target=\"_blank\" rel=\"noopener\">Feedly\u003c/a> or \u003ca href=\"https://feeder.co\" target=\"_blank\" rel=\"noopener\">Feeder\u003c/a> — both are free to start, work in your browser, and let you choose how to view updates (summary list or full article view).\u003c/p>\n          \u003col>\n            \u003cli>Click \u003cstrong>RSS feed URL\u003c/strong> above to copy the feed address.\u003c/li>\n            \u003cli>Open your RSS reader (e.g. \u003ca href=\"https://feedly.com\" target=\"_blank\" rel=\"noopener\">Feedly\u003c/a> or \u003ca href=\"https://feeder.co\" target=\"_blank\" rel=\"noopener\">Feeder\u003c/a>) and look for an \u003cstrong>Add feed\u003c/strong> or \u003cstrong>Follow\u003c/strong> option.\u003c/li>\n            \u003cli>Paste the URL you copied and confirm the subscription.\u003c/li>\n            \u003cli>New changelog entries will appear in your reader automatically the moment they publish.\u003c/li>\n          \u003c/ol>\n          \u003cp class=\"rss-instructions-tip\">\u003ci class=\"fa-solid fa-lightbulb\" aria-hidden=\"true\">\u003c/i> \u003cstrong>Tip:\u003c/strong> Most readers let you switch between a compact list view (titles only) and an expanded view (full post content). Pick whichever fits your workflow.\u003c/p>\n        \u003c/div>\n      \u003c/div>\n    `;\n    container.insertBefore(header, container.firstChild);\n  }\n\n  /* Click-to-copy handler — registered once via event delegation\n     so it works for any .rss-copy button, including re-injected ones */\n  document.addEventListener('click', function (e) {\n    var btn = e.target.closest('.rss-copy');\n    if (!btn) return;\n    var url = btn.getAttribute('data-url');\n    navigator.clipboard.writeText(url).then(function () {\n      var original = btn.textContent;\n      btn.textContent = 'Copied!';\n      btn.classList.add('rss-copied');\n      setTimeout(function () {\n        btn.textContent = original;\n        btn.classList.remove('rss-copied');\n      }, 1500);\n    });\n  });\n\n  /* Collapsible toggle handler — event delegation, works after re-injection */\n  document.addEventListener('click', function (e) {\n    var toggle = e.target.closest('.rss-instructions-toggle');\n    if (!toggle) return;\n    var body = document.getElementById('rss-instructions-body');\n    if (!body) return;\n    var isOpen = toggle.getAttribute('aria-expanded') === 'true';\n    toggle.setAttribute('aria-expanded', isOpen ? 'false' : 'true');\n    body.hidden = isOpen;\n    toggle.classList.toggle('rss-instructions-open', !isOpen);\n  });\n\n  /* Run immediately for first page load */\n  injectChangelogHeader();\n\n  /* Watch DOM for changes — re-injects on SPA navigation\n     when ReadMe rebuilds the changelog subtree */\n  var observer = new MutationObserver(injectChangelogHeader);\n  observer.observe(document.body, {\n    childList: true,\n    subtree: true\n  });\n})();","html_promo":"","html_body":"","html_footer":"","html_head":"\u003cstyle>\n/* Hide immediately, then fade in after 1s */\nbody .hub-is-home {\n  opacity: 0;\n  animation: hubFadeIn 0.4s ease forwards;\n  animation-delay: .8s;\n}\n\n@keyframes hubFadeIn {\n  to { opacity: 1; }\n}\n\u003c/style>\n\n\n\n\n\u003c!-- OneTrust Cookies Consent Notice start for docs.recurly.com -->\n\u003cscript src=\"https://cdn.cookielaw.org/scripttemplates/otSDKStub.js\"  type=\"text/javascript\" charset=\"UTF-8\" data-domain-script=\"c934b14c-a690-45e9-bc4e-7fdf36ff3e69\" >\u003c/script>\n\u003cscript type=\"text/javascript\">\nfunction OptanonWrapper() { }\n\u003c/script>\n\u003c!-- OneTrust Cookies Consent Notice end for docs.recurly.com -->\n\n\u003c!-- Google Tag Manager -->\n\u003cscript>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\nnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\nj=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n})(window,document,'script','dataLayer','GTM-P8SKV3B');\u003c/script>\n\u003c!-- End Google Tag Manager -->\n\n\u003c!-- Google tag for GA4 docs.recurly.com (gtag.js) -->\n\u003cscript async src=\"https://www.googletagmanager.com/gtag/js?id=G-CP3HCXSJ9X\">\u003c/script>\n\u003cscript>\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n  gtag('js', new Date());\n\n  gtag('config', 'G-CP3HCXSJ9X');\n\u003c/script>\n\n\n\u003c!--Linkedin Conversion Tracking-->\n\u003cscript type=\"text/javascript\">\n  _linkedin_data_partner_id = \"42036\";\n  (function()\n  {var s = document.getElementsByTagName(\"script\")[0]; var b = document.createElement(\"script\"); b.type = \"text/javascript\";b.async = true; b.src = \"https://snap.licdn.com/li.lms-analytics/insight.min.js\"; s.parentNode.insertBefore(b, s);}\n  )();\n\u003c/script>\n\n\u003c!-- Facebook Pixel Code -->\n\u003cscript>\n\t!function(f,b,e,v,n,t,s)\n\t{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n\tn.callMethod.apply(n,arguments):n.queue.push(arguments)};\n\tif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n\tn.queue=[];t=b.createElement(e);t.async=!0;\n\tt.src=v;s=b.getElementsByTagName(e)[0];\n\ts.parentNode.insertBefore(t,s)}(window,document,'script',\n\t'https://connect.facebook.net/en_US/fbevents.js');\n\t \n\tfbq('init', '1810072655916642');\n\tfbq('track', 'PageView');\n\u003c/script>\n\u003cnoscript>\n\t\u003cimg height=\"1\" width=\"1\" src=\"https://www.facebook.com/tr?id=1810072655916642&ev=PageView&noscript=1\"/>\n\u003c/noscript>\n\u003c!-- End Facebook Pixel Code -->\n\n\u003c!-- facebook -->\n\n\u003cmeta property=\"og:image\" content=\"https://recurly.com/img2/og-image.gif\">\n\u003cmeta property=\"og:image:url\" content=\"https://recurly.com/img2/og-image.gif\">\n\u003cmeta property=\"og:image:secure_url\" content=\"https://recurly.com/img2/og-image.gif\">\n\u003cmeta property=\"og:image:type\" content=\"image/gif\">\n\u003cmeta property=\"og:image:width\" content=\"1500\">\n\u003cmeta property=\"og:image:height\" content=\"1500\">\n  \n\u003c!-- twitter -->\n\u003cmeta name=\"twitter:account_id\" content=\"57871527\">\n\u003cmeta name=\"twitter:card\" content=\"summary\">\n\u003cmeta name=\"twitter:site\" content=\"@recurly\">\n\n\u003cmeta name=\"twitter:image:src\" content=\"https://recurly.com/img2/og-image.gif\">\n\u003cmeta name=\"twitter:image:width\" content=\"1500\">\n\u003cmeta name=\"twitter:image:height\" content=\"1500\">\n\u003cmeta name=\"format-detection\" content=\"telephone=no\">\n\n\u003c!-- Zendesk -->\n\u003cmeta name='zd-site-verification' content='xd6yjutf4fpsbsgddhodm'>\n\n\u003c!-- Image zoomer -->\n\u003clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/viewerjs@1.10.5/dist/viewer.min.css\">\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/viewerjs@1.10.5/dist/viewer.min.js\">\u003c/script>\n","html_footer_meta":"\u003c!-- Google Tag Manager (noscript) -->\n\u003cnoscript>\u003ciframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-P8SKV3B\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\">\u003c/iframe>\u003c/noscript>\n\u003c!-- End Google Tag Manager (noscript) -->\n\n\u003cstyle>\n\n@media print {\n  * {\n    -webkit-print-color-adjust: exact;\n    print-color-adjust: exact;\n  }\n  html,\n  body.theme-solid.page-docs,\n  .wrapper,\n  .container.body-container,\n  .main-content {\n    margin:0px 20px !important;\n    padding: 0 !important;\n  }\n  \n  header#header,\n  .header,\n  .navbar-brand,\n  .navbar {\n    display:block !important;\n    background-color: #723080 !important;\n    box-shadow:  inset 0 0 0 1000px #723080;\n  }\n  header#header {\n  \tmargin: 0 auto 60px !important;\n  }\n  #header.header h1.navbar-brand a {\n    width: 178px !important;\n    height: 40px !important;\n    display:block !important;\n  \tbackground: url(https://files.readme.io/noVlqxc0QhiP1Psgyw2Y_documentation.png) no-repeat !important;\n  \tbackground-size: contain !important;\n  }\n\t.section-left,\n  .docs-header nav {\n    display: none !important;\n  }\n\n  .main-content {\n  \tmargin-top: 0px !important;\n    padding-top: 0px !important;\n  }\n  \n}\n\u003c/style>\n\u003c!-- Image zoomer -->\n\u003cscript>\n        document.addEventListener('DOMContentLoaded', function () {\n            var container = document.getElementById('image-container');\n            var viewer = new Viewer(container, {\n                inline: false,\n                viewed: function() {\n                    viewer.zoomTo(1);\n                },\n                toolbar: {\n                    zoomIn: 4,\n                    zoomOut: 4,\n                    oneToOne: 4,\n                    reset: 4,\n                    prev: 4,\n                    next: 4,\n                    rotateLeft: 4,\n                    rotateRight: 4,\n                    flipHorizontal: 4,\n                    flipVertical: 4,\n                },\n                title: false,\n                tooltip: false,\n                movable: true,\n                zoomable: true,\n                rotatable: false,\n                scalable: false,\n                transition: false,\n                fullscreen: true,\n                keyboard: false,\n            });\n        });\n    \u003c/script>\n","global_landing_page":{"html":"","redirect":""},"html_hidelinks":false,"collapsibleCategories":false,"showBreadcrumbs":true,"showPageIcons":true,"showVersion":false,"searchModal":"classic","hideTableOfContents":false,"nextStepsLabel":"","ai_dropdown":"enabled","print_button":"disabled","ai_options":{"ask_ai":"disabled","chatgpt":"enabled","claude":"enabled","clipboard":"enabled","copilot":"enabled","mcp":{"command":"enabled","config":"enabled","cursor":"enabled","vscode":"enabled"},"view_as_markdown":"enabled"}},"custom_domain":"docs.recurly.com","description":"Welcome to the Recurly Documentation Hub: your single source for everything Recurly. Explore comprehensive guides, API references, and best practices across all our products.","hstsIncludeSubdomains":false,"planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"","error404":"","first_page":"landing","git":{"renamedSlugs":[]},"glossaryTerms":[{"_id":"68825cc7a7cffa08ce74f92d","term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!"}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"healthCheck":{"provider":"","settings":{}},"i18n":{"defaultLanguage":"en","languages":[{"code":"en","type":"manual"}],"state":"enabled"},"intercom":"","aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"html","alignment":"left","title":null,"text":null,"html":"\u003chead>\n    \u003cstyle>\n        /* ============================================================\n           GLOBAL OVERRIDES\n        ============================================================ */\n        main.main-index,\n        .rm-LandingPage {\n            width: 100% !important;\n            max-width: 100% !important;\n            margin: 0 !important;\n            padding: 0 !important;\n            background: #0D0D0B !important;\n        }\n\n        .hub-is-home .rm-VersionDropdown { display: none !important; }\n\n        .feature-grid a,\n        .feature-grid a:hover,\n        .more-docs-link,\n        .globallp-footer-content a {\n            text-decoration: none !important;\n            -webkit-text-decoration-color: transparent !important;\n            text-decoration-color: transparent !important;\n        }\n\n        /* ============================================================\n           OVERFLOW PROTECTION\n        ============================================================ */\n        .globallp-header-section,\n        .feature-container {\n            overflow-x: hidden !important;\n        }\n\n        .feature-grid > * { min-width: 0 !important; }\n\n        .feature-card {\n            max-width: 100% !important;\n            min-width: 0 !important;\n            box-sizing: border-box !important;\n        }\n\n        /* ============================================================\n           SHARED: dark section base\n        ============================================================ */\n        body,\n        .globallp-header-section,\n        .feature-container,\n        .feature-section {\n            background: #0D0D0B !important;\n        }\n\n        /* ============================================================\n           HERO\n        ============================================================ */\n        .globallp-header-section {\n            padding: 64px 0 !important;\n        }\n\n        /* ============================================================\n           HERO SEARCH\n        ============================================================ */\n        .hero-search-bar { display: flex !important; align-items: center !important; gap: 10px !important; background: rgba(255,255,255,0.08) !important; border: 1px solid rgba(255,255,255,0.15) !important; border-radius: 8px !important; padding: 10px 16px !important; max-width: 420px !important; cursor: pointer !important; margin-bottom: 24px !important; transition: background 0.2s, border-color 0.2s !important; }\n        .hero-search-bar:hover { background: rgba(255,255,255,0.13) !important; border-color: rgba(255,255,255,0.3) !important; }\n        .hero-search-icon { color: rgba(255,255,255,0.5) !important; flex-shrink: 0 !important; }\n        .hero-search-placeholder { flex: 1 !important; font-size: 15px !important; color: rgba(255,255,255,0.45) !important; font-family: \"Polar\",\"Helvetica Neue\",Helvetica,arial,sans-serif !important; }\n        .hero-search-kbd { font-size: 12px !important; color: rgba(255,255,255,0.3) !important; background: rgba(255,255,255,0.08) !important; border: 1px solid rgba(255,255,255,0.15) !important; border-radius: 4px !important; padding: 2px 7px !important; font-family: monospace !important; }\n\n        /* ============================================================\n           FEATURE SECTION\n        ============================================================ */\n        .feature-container {\n            width: 100% !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n        }\n\n        .feature-section {\n            padding: 64px 32px !important;\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            box-sizing: border-box !important;\n        }\n\n        /* Section header */\n        .section-header-block {\n            display: flex !important;\n            justify-content: space-between !important;\n            align-items: center !important;\n            gap: 48px !important;\n            margin-bottom: 32px !important;\n            padding: 28px 36px !important;\n            background: rgba(255, 253, 242, 0.03) !important;\n            border: 1px solid rgba(255, 253, 242, 0.08) !important;\n            border-left: 4px solid #FFD706 !important;\n            border-radius: 0 12px 12px 0 !important;\n            box-sizing: border-box !important;\n            max-width: 100% !important;\n            overflow: hidden !important;\n        }\n\n        .section-header-left { flex: 1 !important; min-width: 0 !important; }\n        .section-header-right { flex: 1 !important; max-width: 420px !important; min-width: 0 !important; }\n\n        .section-eyebrow {\n            display: inline-flex !important;\n            align-items: center !important;\n            gap: 8px !important;\n            color: #FFD706 !important;\n            font-size: 11px !important;\n            font-weight: 700 !important;\n            letter-spacing: 0.12em !important;\n            text-transform: uppercase !important;\n            margin-bottom: 10px !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n        }\n\n        .section-eyebrow-dot {\n            display: inline-block !important;\n            width: 6px !important;\n            height: 6px !important;\n            border-radius: 50% !important;\n            background: #FFD706 !important;\n            flex-shrink: 0 !important;\n        }\n\n        .section-title {\n            font-size: 32px !important;\n            font-weight: 800 !important;\n            color: #FFFDF2 !important;\n            margin: 0 !important;\n            line-height: 1.1 !important;\n            letter-spacing: -0.02em !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            overflow-wrap: break-word !important;\n            word-break: break-word !important;\n        }\n\n        .section-desc {\n            font-size: 15px !important;\n            color: rgba(255, 253, 242, 0.82) !important;\n            margin: 0 !important;\n            line-height: 1.65 !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            overflow-wrap: break-word !important;\n            word-break: break-word !important;\n        }\n\n        /* ============================================================\n           FEATURE GRID — 3 columns\n        ============================================================ */\n        .feature-grid {\n            width: 100% !important;\n            display: grid !important;\n            grid-template-columns: repeat(3, 1fr) !important;\n            gap: 16px !important;\n            box-sizing: border-box !important;\n        }\n\n        .feature-card {\n            background: #131210 !important;\n            border: 1px solid rgba(255, 253, 242, 0.07) !important;\n            border-radius: 14px !important;\n            padding: 28px 26px !important;\n            display: flex !important;\n            flex-direction: column !important;\n            gap: 12px !important;\n            cursor: pointer !important;\n            transition: background 0.2s ease, border-color 0.2s ease !important;\n            width: 100% !important;\n            height: auto !important;\n            min-height: 0 !important;\n            overflow: visible !important;\n            box-sizing: border-box !important;\n        }\n\n        .feature-grid a {\n            text-decoration: none !important;\n            color: inherit !important;\n            display: flex !important;\n            height: auto !important;\n        }\n\n        .feature-card:hover {\n            background: #1C1B18 !important;\n            border-color: rgba(255, 215, 6, 0.22) !important;\n        }\n\n        .feature-card-icon {\n            width: 48px !important;\n            height: 48px !important;\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            flex-shrink: 0 !important;\n            background: #FFD706 !important;\n            border-radius: 50% !important;\n        }\n\n        /* Badge inline with icon for API card */\n        .feature-card-icon-group {\n            display: flex !important;\n            align-items: center !important;\n            gap: 12px !important;\n        }\n\n        .feature-badge {\n            display: inline-flex !important;\n            align-items: center !important;\n            background: rgba(255, 215, 6, 0.1) !important;\n            border: 1px solid rgba(255, 215, 6, 0.2) !important;\n            border-radius: 99px !important;\n            padding: 3px 10px !important;\n        }\n\n        .feature-badge-text {\n            font-size: 10px !important;\n            font-weight: 700 !important;\n            letter-spacing: 0.08em !important;\n            text-transform: uppercase !important;\n            color: #FFD706 !important;\n        }\n\n        .feature-card-title {\n            color: #FFFDF2 !important;\n            font-weight: 700 !important;\n            font-size: 15px !important;\n            margin: 0 !important;\n            line-height: 1.3 !important;\n            overflow-wrap: break-word !important;\n        }\n\n        .feature-card:hover .feature-card-title { color: #FFD706 !important; }\n\n        .feature-card-desc {\n            color: rgba(255, 253, 242, 0.82) !important;\n            font-size: 13px !important;\n            margin: 0 !important;\n            line-height: 1.55 !important;\n            overflow-wrap: break-word !important;\n        }\n\n        /* ============================================================\n           MORE DOCS\n        ============================================================ */\n        .more-docs-section {\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            background: #f6f3e0 !important;\n            padding: 94px 32px !important;\n        }\n\n        .more-docs-container {\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            text-align: center !important;\n            box-sizing: border-box !important;\n        }\n\n        .more-docs-title { font-weight: 700 !important; margin: 0 0 16px !important; font-size: 36px !important; }\n        .more-docs-desc { font-size: 20px !important; color: #0D0D0B !important; margin-bottom: 40px !important; }\n\n        .more-docs-grid {\n            display: flex !important;\n            justify-content: space-around !important;\n            gap: 48px !important;\n            flex-wrap: wrap !important;\n        }\n\n        .more-docs-card {\n            flex: 1 1 30% !important;\n            display: flex !important;\n            flex-direction: column !important;\n            align-items: center !important;\n            gap: 12px !important;\n        }\n\n        .more-docs-card-icon { width: 48px !important; height: 48px !important; }\n        .more-docs-card-image { width: auto !important; height: 32px !important; margin-bottom: 8px !important; }\n        .more-docs-card-desc { font-size: 16px !important; line-height: 24px !important; color: #0D0D0B !important; }\n\n        .more-docs-link {\n            color: #FF5810 !important;\n            font-size: 16px !important;\n            font-weight: 600 !important;\n            text-decoration: none !important;\n            display: flex !important;\n            align-items: center !important;\n        }\n        .more-docs-link:hover { text-decoration: underline !important; }\n        .more-docs-icon-arrow { width: 20px !important; margin-left: 8px !important; }\n\n        /* ============================================================\n           FOOTER\n        ============================================================ */\n        .globallp-footer {\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            background: #0D0D0B !important;\n            color: #fff !important;\n            padding: 48px 0 !important;\n        }\n\n        .globallp-footer-content {\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            display: flex !important;\n            justify-content: space-between !important;\n            align-items: center !important;\n            padding: 0 32px !important;\n            box-sizing: border-box !important;\n        }\n\n        .globallp-footer-content img { width: auto !important; height: 16px !important; margin: 0 !important; }\n        .globallp-footer-content p { margin: 0 !important; font-size: 14px !important; color: #FFFDF2 !important; }\n        .globallp-footer-content a { color: #FFFDF2 !important; text-decoration: none !important; margin-right: 20px !important; }\n        .globallp-footer-content a:hover { text-decoration: underline !important; }\n\n        /* ============================================================\n           RESPONSIVE\n        ============================================================ */\n        @media (max-width: 1024px) {\n            .feature-grid { grid-template-columns: repeat(2, 1fr) !important; }\n        }\n\n        @media (max-width: 768px) {\n            .globallp-header-section   { padding: 48px 0 !important; }\n            .globallp-header-content   { padding: 0 20px !important; }\n            .globallp-heading          { font-size: 36px !important; }\n            .globallp-supporting-text  { font-size: 16px !important; }\n            .hero-search-bar           { max-width: 100% !important; }\n            .feature-section           { padding: 48px 20px !important; }\n            .section-header-block { flex-direction: column !important; align-items: flex-start !important; gap: 10px !important; padding: 20px !important; margin-bottom: 24px !important; }\n            .section-header-right      { max-width: 100% !important; }\n            .section-title             { font-size: 24px !important; }\n            .feature-grid { grid-template-columns: 1fr !important; }\n            .feature-card              { padding: 20px !important; }\n            .more-docs-section         { padding: 60px 20px !important; }\n            .more-docs-title           { font-size: 28px !important; }\n            .more-docs-desc            { font-size: 16px !important; }\n            .more-docs-grid { flex-direction: column !important; align-items: center !important; gap: 40px !important; }\n            .more-docs-card { flex: 1 1 100% !important; max-width: 400px !important; }\n            .globallp-footer           { padding: 36px 0 !important; }\n            .globallp-footer-content { flex-direction: column !important; align-items: center !important; text-align: center !important; gap: 16px !important; padding: 0 20px !important; }\n            .globallp-footer-content p { display: flex !important; flex-wrap: wrap !important; justify-content: center !important; gap: 6px !important; }\n            .globallp-footer-content a { margin-right: 0 !important; }\n        }\n\n        @media (max-width: 480px) {\n            .globallp-header-section   { padding: 36px 0 !important; }\n            .globallp-heading          { font-size: 28px !important; }\n            .globallp-supporting-text  { font-size: 15px !important; }\n            .hero-search-kbd           { display: none !important; }\n            .feature-section           { padding: 40px 16px !important; }\n            .section-header-block      { padding: 18px 16px !important; }\n            .section-title             { font-size: 20px !important; }\n            .section-desc              { font-size: 13px !important; }\n            .feature-card              { padding: 18px 16px !important; gap: 10px !important; }\n            .feature-card-icon         { width: 40px !important; height: 40px !important; }\n            .feature-card-title        { font-size: 14px !important; }\n            .feature-card-desc         { font-size: 12px !important; }\n            .more-docs-section         { padding: 48px 16px !important; }\n            .more-docs-title           { font-size: 24px !important; }\n        }\n\n        @media (max-width: 375px) {\n            .globallp-heading          { font-size: 26px !important; }\n            .section-title             { font-size: 18px !important; }\n        }\n    \u003c/style>\n\u003c/head>\n\n\u003cbody>\n\n    \u003c!-- ===== Hero ===== -->\n    \u003csection class=\"globallp-header-section\">\n        \u003cdiv class=\"globallp-header-content\">\n            \u003cdiv class=\"hero-search-bar\" id=\"hero-search-trigger\">\n                \u003csvg class=\"hero-search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                    \u003ccircle cx=\"11\" cy=\"11\" r=\"8\">\u003c/circle>\n                    \u003cline x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\">\u003c/line>\n                \u003c/svg>\n                \u003cspan class=\"hero-search-placeholder\">Search documentation...\u003c/span>\n                \u003cspan class=\"hero-search-kbd\">⌘K\u003c/span>\n            \u003c/div>\n            \u003cdiv class=\"globallp-subheading\">DOCUMENTATION\u003c/div>\n            \u003cdiv class=\"globallp-heading\">Let's get started\u003c/div>\n            \u003cdiv class=\"globallp-supporting-text\">Get guides, API references, and best practices for Recurly Commerce.\u003c/div>\n            \u003cdiv class=\"cta-group\">\n                \u003cdiv class=\"new-btn-group\">\n                    \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/\" class=\"new-btn new-btn-primary\">\n                        \u003cdiv class=\"new-btn-text\">\u003cimg class=\"new-btn-icon\" src=\"https://recurly.com/img2/product-docs/icon-docs-book.svg\" alt=\"book icon\">View all docs\u003c/div>\n                    \u003c/a>\n                \u003c/div>\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== Feature Grid ===== -->\n    \u003csection class=\"feature-container\">\n        \u003cdiv class=\"feature-section\">\n\n            \u003cdiv class=\"section-header-block\">\n                \u003cdiv class=\"section-header-left\">\n                    \u003cdiv class=\"section-eyebrow\">\u003cspan class=\"section-eyebrow-dot\">\u003c/span>Recurly Commerce\u003c/div>\n                    \u003ch2 class=\"section-title\">Explore all of our features\u003c/h2>\n                \u003c/div>\n                \u003cdiv class=\"section-header-right\">\n                    \u003cp class=\"section-desc\">Everything you need to manage subscriptions, recover revenue, and power your Shopify storefront — all in one place.\u003c/p>\n                \u003c/div>\n            \u003c/div>\n\n            \u003cdiv class=\"feature-grid\">\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/subscription-management#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M20 12V22H4V12\">\u003c/path>\n                                \u003cpath d=\"M22 7H2v5h20V7z\">\u003c/path>\n                                \u003cpath d=\"M12 22V7\">\u003c/path>\n                                \u003cpath d=\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\">\u003c/path>\n                                \u003cpath d=\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\">\u003c/path>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Subscription management\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Plan creation, plan editing, contract updates, and activity logs.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/recurly-commerce-revenue-recovery#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpolyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\">\u003c/polyline>\n                                \u003cpolyline points=\"17 6 23 6 23 12\">\u003c/polyline>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Revenue recovery\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Maximize involuntary revenue recovery and reduce churn.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/storefront#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\">\u003c/path>\n                                \u003cpolyline points=\"9 22 9 12 15 12 15 22\">\u003c/polyline>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Storefront\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Storefront resources, customization, and technical resources.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/customer-portal#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\">\u003c/path>\n                                \u003ccircle cx=\"12\" cy=\"7\" r=\"4\">\u003c/circle>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Customer portal\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Self-service portal: skip, swap, pause, gift, and more for your customers.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/notifications#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\">\u003c/path>\n                                \u003cpath d=\"M13.73 21a2 2 0 0 1-3.46 0\">\u003c/path>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Notifications\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Emails, SMS, and integrations.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/shopify-settings#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\">\u003c/path>\n                                \u003cline x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\">\u003c/line>\n                                \u003cpath d=\"M16 10a4 4 0 0 1-8 0\">\u003c/path>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Shopify\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Orders, refunds, discounts, shipping, and tagging directly within Shopify.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/recurly-commerce-analytics#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cline x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\">\u003c/line>\n                                \u003cline x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\">\u003c/line>\n                                \u003cline x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\">\u003c/line>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Analytics\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Performance, cohorts, forecast growth, and exports.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/recurly-commerce-integrations#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003crect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\">\u003c/rect>\n                                \u003cline x1=\"1\" y1=\"10\" x2=\"23\" y2=\"10\">\u003c/line>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Integrations\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Recurly Commerce integrations and partner connections.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/update/reference/publicapicontroller_listsubscriptions-1\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon-group\">\n                            \u003cdiv class=\"feature-card-icon\">\n                                \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                    \u003cpath d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\">\u003c/path>\n                                    \u003cpath d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\">\u003c/path>\n                                \u003c/svg>\n                            \u003c/div>\n                            \u003cdiv class=\"feature-badge\">\n                                \u003cspan class=\"feature-badge-text\">Technical docs\u003c/span>\n                            \u003c/div>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">API reference\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Complete endpoint documentation for accessing and managing Commerce.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== More docs ===== -->\n    \u003csection class=\"more-docs-section\">\n        \u003cdiv class=\"more-docs-container\">\n            \u003ch2 class=\"more-docs-title\">Looking for more documentation?\u003c/h2>\n            \u003cdiv class=\"more-docs-desc\">Visit our dedicated documentation for other Recurly Products.\u003c/div>\n            \u003cdiv class=\"more-docs-grid\">\n                \u003cdiv class=\"more-docs-card\">\n                    \u003cimg class=\"more-docs-card-icon\" src=\"https://recurly.com/img2/product-docs/icon-subscriptions-docs.svg\" alt=\"Subscriptions icon\">\n                    \u003cimg class=\"more-docs-card-image\" src=\"https://recurly.com/img2/product-docs/img-r-subscription-docs.webp\" alt=\"Subscriptions\">\n                    \u003cdiv class=\"more-docs-card-desc\">Everything you need to scale your subscription business and keep customers coming back.\u003c/div>\n                    \u003ca href=\"https://docs.recurly.com/recurly-subscriptions/\" class=\"more-docs-link\">Explore docs \u003cimg class=\"more-docs-icon-arrow\" src=\"https://recurly.com/img2/product-docs/arrow-right.svg\" alt=\"→\">\u003c/a>\n                \u003c/div>\n                \u003cdiv class=\"more-docs-card\">\n                    \u003cimg class=\"more-docs-card-icon\" src=\"https://recurly.com/img2/product-docs/icon-engage-docs.svg\" alt=\"Engage icon\">\n                    \u003cimg class=\"more-docs-card-image\" src=\"https://recurly.com/img2/product-docs/img-r-engage-docs.webp\" alt=\"Engage\">\n                    \u003cdiv class=\"more-docs-card-desc\">Power your subscribers' journey with personalized prompts and automation that fuel revenue growth.\u003c/div>\n                    \u003ca href=\"https://docs.recurly.com/recurly-engage/\" class=\"more-docs-link\">Explore docs \u003cimg class=\"more-docs-icon-arrow\" src=\"https://recurly.com/img2/product-docs/arrow-right.svg\" alt=\"→\">\u003c/a>\n                \u003c/div>\n                \u003cdiv class=\"more-docs-card\">\n                    \u003cimg class=\"more-docs-card-icon\" src=\"https://recurly.com/img2/product-docs/icon-revrec-docs.svg\" alt=\"RevRec icon\">\n                    \u003cimg class=\"more-docs-card-image\" src=\"https://recurly.com/img2/product-docs/img-r-revrec-docs.webp\" alt=\"RevRec\">\n                    \u003cdiv class=\"more-docs-card-desc\">Streamline and automate compliance with multiple revenue reporting standards.\u003c/div>\n                    \u003ca href=\"https://docs.recurly.com/recurly-revrec/\" class=\"more-docs-link\">Explore docs \u003cimg class=\"more-docs-icon-arrow\" src=\"https://recurly.com/img2/product-docs/arrow-right.svg\" alt=\"→\">\u003c/a>\n                \u003c/div>\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== Footer ===== -->\n    \u003csection class=\"globallp-footer\">\n        \u003cdiv class=\"globallp-footer-content\">\n            \u003cimg src=\"https://recurly.com/img2/product-docs/img-footer-logo-tagline.webp\" alt=\"Recurly Logo\">\n            \u003cp>\n                \u003ca href=\"https://recurly.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Recurly.com\u003c/a>\n                \u003ca href=\"https://recurly.com/legal/\" target=\"_blank\" rel=\"noopener noreferrer\">Legal\u003c/a>\n                &copy; 2025 Recurly, Inc.\n            \u003c/p>\n        \u003c/div>\n    \u003c/section>\n\n\u003c/body>","pageType":null,"side":null,"mediaType":null,"mediaHTML":null,"mediaImage":null,"mediaCode":null,"group0":null,"group1":null,"group2":null}],"llms_txt":true,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"enabled"},"mdxishMigrationStatus":{"migratedFrom":"mdx"},"metrics":{"monthlyLimit":0,"monthlyPurchaseLimit":0,"thumbsEnabled":true,"meteredBilling":{}},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Recurly Commerce Docs","nav_names":{"docs":"Directory","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"oauth_url":"","onboardingCompleted":{"api":true,"appearance":false,"documentation":true,"domain":false,"jwt":false,"logs":false,"metricsSDK":false,"aiReady":false,"team":false,"gitSync":false},"openapiVisibility":"public","owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":true,"newExperience":true,"placements":["header","in_search"],"isPaying":false,"lastIndexed":"2026-10-16T02:22:06.213Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"plan":"enterprise","planOverride":"business","readmeScore":{},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"seo":{"overwrite_title_tag":false},"searchSettings":{"default_to_current_project":false,"show_project_filter":true,"sort_projects_alphabetically":false},"ssl":{"minTLS":"1.2"},"subdomain":"recurly-commerce-docs","subpath":"recurly-commerce","topnav":{"left":[],"right":[{"type":"url","text":"Docs hub","url":"https://docs.recurly.com/#/"},{"type":"url","text":"Support","url":"https://support.recurly.com/"},{"type":"url","text":"Contact us","url":"https://recurly.com/contact-us/"},{"type":"url","text":"Book demo","url":"https://recurly.com/request-a-demo/"}],"bottom":[],"edited":false},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2025-07-16T23:52:40.256Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"","variableDefaults":[{"file":"commerce-api-documentation.json","name":"bearer","source":"security","type":"http"}],"child":{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":false,"superHubBranchReviewActions":false},"versions":[{"__v":9,"_id":"6865c648c6b75f0030446866","createdAt":"2025-07-02T23:52:40.369Z","updatedAt":"2026-10-14T16:53:45.328Z","project":"6865c648c6b75f0030446843","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2025-07-02T23:52:40.338Z","pdfStatus":"","apiRegistries":[{"filename":"commerce-api-documentation.json","uuid":"7atcmv8cn3rm"},{"filename":"prive-widget-documentation.json","uuid":"4nl9ge0momyj4x1"},{"filename":"prive-api-documentation.json","uuid":"e1ttaq3nmcb337q9"}],"source":"readme"}],"stable":{"__v":9,"_id":"6865c648c6b75f0030446866","createdAt":"2025-07-02T23:52:40.369Z","updatedAt":"2026-10-14T16:53:45.328Z","project":"6865c648c6b75f0030446843","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2025-07-02T23:52:40.338Z","pdfStatus":"","apiRegistries":[{"filename":"commerce-api-documentation.json","uuid":"7atcmv8cn3rm"},{"filename":"prive-widget-documentation.json","uuid":"4nl9ge0momyj4x1"},{"filename":"prive-api-documentation.json","uuid":"e1ttaq3nmcb337q9"}],"source":"readme"},"_id":"6865c648c6b75f0030446843","accessRules":{"branch_approve":{"admin":true,"editor":false},"branch_merge":{"admin":true,"editor":false},"version_edit":{"admin":true,"editor":false}},"ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true}},"appearance":{"allowApiExplorerJsonEditor":false,"borderRadius":"default","changelog":{"layoutExpanded":false,"showAuthor":false,"showExactDate":false},"referenceFlatSections":"disabled","referenceLayout":"row","referenceParamFont":"default","referenceParamInputs":"all","referenceSimpleMode":true,"methodBadgeStyle":"classic","oneOfLayout":"dropdown","showCredentials":true,"showExactDate":false,"showMethodInSidebar":true,"link_logo_to_url":false,"theme":"solid","theme_preset":"default","colorScheme":"system","overlay":"triangles","landing":true,"sticky":false,"hide_logo":false,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":true,"showMetricsInReference":true,"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":"","markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"links"},"colors":{"highlight":"","main":"#0d0d0b","main_dark":"","main_alt":"","header_text":"","body_highlight":"#0d0d0b","body_highlight_dark":"","custom_login_link_color":"","page_background":"","page_background_dark":"","background_tint":"","background_tint_dark":"","border":"","border_dark":"","breadcrumb":"","breadcrumb_dark":"","header":"","header_dark":"","askai_button_bg":"","askai_button_bg_dark":"","sidebar_border":"","sidebar_border_dark":""},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","code":"","spacing":null,"typekit":false,"tk_key":"","tk_headline":"","tk_body":""},"header":{"img":[],"img_size":"auto","img_pos":"tl","linkStyle":"tabs","style":"solid","subnav":{"alignment":"start"}},"body":{"style":"none"},"promos":[{"_id":"6865c648c6b75f0030446844","title":"","text":"","extras":{"type":"none","buttonPrimary":"","buttonSecondary":"none"}}],"layout":{"full_width":false,"style":"classic","sticky_header":null},"logo":["https://files.readme.io/84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg","84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg",null,null,"#ffd706",null,"6a0caab85a19dc4e20cd9637"],"loginLogo":[],"logo_white":[],"logo_white_use":false,"logo_large":false,"logo_size":"default","favicon":["https://files.readme.io/f5415736f6306f3aff84928311144e1e776487dbb4c3dffa4129f3cc583c3f7f-Recurly-Profile-Image.png","f5415736f6306f3aff84928311144e1e776487dbb4c3dffa4129f3cc583c3f7f-Recurly-Profile-Image.png",300,300,"#fbd404",null,"68754ea392d1d6374f1ee479"],"tocVariant":"line","stylesheet":"","stylesheet_hub2":"/* Hide immediately, then fade in after 1s */\nbody .hub-is-home {\n  opacity: 0;\n  animation: hubFadeIn 0.4s ease forwards;\n  animation-delay: 1s;\n}\n\n/* turn header links back on */\n.rm-Header-bottom-link {\n    -webkit-box-sizing: border-box;\n    box-sizing: border-box;\n    display: inline-flex;\n}\n\n@keyframes hubFadeIn {\n  to { opacity: 1; }\n}\n\n* {\n    box-sizing: border-box;\n}\nbody {\n      font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n    }\n\n/* Image zoomer start */\n  .image-zoomer-container {\n      position: relative;\n      width: 720px;\n      height: 720px;\n      overflow: hidden;\n      border: 2px solid #ccc;\n    \tpadding: 20px;\n    \tmarging: 20px;\n      cursor: crosshair;\n    }\n\n    .image-zoomer-container img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      transition: transform 0.2s ease-out;\n    }\n\n    .image-zoomer-container:hover img {\n      transform: scale(7); /* Adjust zoom level */\n    }\n\n    .image-zoomer-container:hover img.move {\n      /*transition: none; /* Disable smooth transition when moving */\n      transition: ease-in-out;\n    }\n\t\t\n/* Image zoomer end */\n\n\n\t/* fix for width getting changed to % on the page for video iframes */\n    iframe {\n      width: 100%;\n      height: 450px;\n    }\n  \n    .rm-LandingPage {\n      width: 1200px;\n    }\n  \n    .rm-Header-top {\n      background: #0D0D0B;\n    }\n  \n    .rm-LandingPageHeader {\n      padding: 170px 20px 80px;\n    }\n    .rm-LandingPageHeader .rm-SearchToggle {\n      position: relative;\n      width: 469px;\n      background: #fff;\n      border-radius: 4px;\n    }\n  \n    .rm-LandingPageHeader .rm-SearchToggle:before {\n      display: block;\n      content: \"How can we help?\";\n      position: absolute;\n      top: -84px;\n      left: -40px;\n      text-align: center;\n      width: 120%;\n      font-size: 60px;\n      font-weight: 800;\n      font-family: 'proxima-nova';\n      pointer-events: none;\n    }\n  \n    .rm-LandingPageHeader .rm-SearchToggle .rm-SearchToggle-icon {\n      color: #5a5a5a;\n    }\n    .rm-LandingPageHeader .rm-SearchToggle .rm-SearchToggle-placeholder {\n      color: #fff;\n      font-size: 16px;\n      font-weight: 400;\n    }\n\n/* Start Storylane custome CSS */\n\t\t\t.sl-embed {   \n\t\t\t\t\t\tposition: relative;\n            padding-bottom: calc(56.68% + 25px);\n            width: 100%;\n            height: 0;\n            transform: scale(1);\n        }\n        .sl-demo {\n            width: 100% !important;\n            border: 1px solid rgba(63, 95, 172, 0.35);\n            box-shadow: 0px 0px 18px rgba(26, 19, 72, 0.15);\n            border-radius: 10px;\n            box-sizing: border-box;\n        }\n/* End Storylane custome CSS */\n  \n    main.main-index {\n      /* background-color: red; */\n      width: 1200px;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 25px;\n      margin: 0 auto 80px;\n      font-family: \"Proxima-nova\", sans-serif;\n    }\n  \n    header.main-header {\n      background-color: #ffd706;\n      border-radius: 0;\n      /*box-shadow: 0 4px 22px 0 rgba(35, 41, 50, 0.15);*/\n      /* margin-top: 25px; */\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      min-height: 80px;\n      width: 100%;\n      margin: 10px 10px 50px;\n      padding: 0 20px;\n      box-sizing: border-box;\n    }\n  \n    header.main-header p.header-paragraph {\n      font-size: 20px;\n      line-height: 28px;\n      color: #0D0D0B;\n    }\n    header.main-header .image-wrap {\n      display: flex;\n      align-items: center;\n    }\n  \n    header.main-header img {\n        margin: 0 20px 0 0;\n    }\n  \n    header.main-header p,\n    header.main-header strong {\n      color: #0D0D0B;\n      margin: 0;\n    }\n  \n    header.main-header strong {\n      font-weight: bold;\n      text-decoration: none;\n    }\n  \n    header.main-header a {\n      margin: 0 0 0 10rem;\n      padding: 8px 25px;\n      color: #0D0D0B;\n      text-decoration: none;\n      font-size: 14px;\n      font-weight: 800;\n      border-radius: 3px;\n      border: 2px solid #0D0D0B;\n    }\n  \n    header.main-header a:hover {\n      text-decoration: none;\n    }\n  \n   .main-index section {\n      /* background-color: green; */\n      width: 100%;\n      height: 100%;\n      display: flex;\n      flex-wrap: wrap;\n      align-items: center;\n      justify-content: space-between;\n      gap: 20px;\n      padding: 0;\n      margin: 0;\n    }\n  \n    .card {\n      width: 340px;\n      margin: 0 0 40px;\n  /*    border-radius: 20px;*/\n  /*    box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);*/\n      display: flex;\n      justify-content: center;\n      flex-direction: column;\n      align-items: flex-start;\n      padding: 0 15px;\n      cursor: auto;\n      transition: .175s all ease-in-out;\n    }\n  \n    /* .card:hover {\n      background-color: #ffffff;\n      transform: scale(1.05);\n      box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);\n    } */\n  \n    .card img {\n      width: 48px;\n      height: 48px;\n      margin: 0;\n      margin-bottom: 10px;\n    }\n  \n    .card h2 {\n      color: #0D0D0B;\n      font-size: 24px;\n      font-weight: 700;\n      line-height: 32px;\n      margin: 0;\n      margin-bottom: 11px;\n    }\n  \n    .card p {\n      margin: 0;\n      color: #0D0D0B;\n      margin-bottom: 15px;\n    }\n  \n    .card a, .LandingBlock3PM-HyBxby3X a {\n      color: #0D0D0B;\n      text-decoration-thickness: 2px;\n\t    text-underline-offset: 5px;\n      text-decoration: underline;\n      transition: 0.25s ease all;\n    }\n  \n    .card a:hover, .LandingBlock3PM-HyBxby3X a:hover {\n      color: #0D0D0B;\n      text-decoration: none;\n    }\n  \n    /* .Header-searchtb6Foi0-D9Vx {\n      position: absolute;\n      top: 50px;\n      right: 5px;\n      margin: 0;\n      padding: 0;\n      box-shadow: none;\n      border: none;\n      outline: none;\n      width: 50%;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n    }\n  \n    .Header-searchtb6Foi0-D9Vx button {\n  \n      width: 25%;\n      height: 53px;\n    }  */\n.reference-redesign .Sidebar-listWrapper6Q9_yUrG906C{\n        display: -webkit-box;\n        display: -ms-flexbox;\n        display: flex;\n        -ms-flex-item-align: start;\n        -ms-flex-align: ;\n        -webkit-box-flex: 0;\n        -ms-flex: 0;\n        flex: 0 !important;\n        -webkit-box-orient: vertical;\n        -webkit-box-direction: normal;\n        -ms-flex-direction: column;\n        flex-direction: column;\n        align-items: flex-start !important;\n      }\n    .reference-redesign .Sidebar-link2Dsha-r-GKh2:active, .reference-redesign .Sidebar-link2Dsha-r-GKh2.active {\n        background: var(--Sidebar-link-background);\n        color: #0D0D0B) !important;\n      }\n      .LandingBlock3PM-HyBxby3X a:not(:hover){\n\t\t\t\ttext-decoration: underline !important;\n      }\n  \n    @media (max-width: 768px) {\n      .rm-LandingPage {\n        width: 100%;\n      }\n  \n      main.main-index {\n        width: 100%;\n        height: 100%;\n      }\n  \n      .rm-LandingPageHeader {\n        display: block;\n      }\n  \n      .rm-LandingPageHeader .rm-SearchToggle {\n        width: 340px;\n      }\n  \n      .rm-LandingPageHeader .rm-SearchToggle:before {\n        font-size: 44px;\n      }\n  \n      header.main-header {\n        display: block;\n        width: 95%;\n        min-height: auto;\n      }\n  \n      header.main-header img {\n        display: block;\n        margin: 10px auto;\n      }\n  \n      header.main-header a {\n        display: block;\n        margin: 16px auto 20px;\n        max-width: 160px;\n      }\n  \n      header.main-header p.header-paragraph {\n        margin: 0 10px;\n        text-align: center;\n      }\n  \n      .card {\n        width: 90%;\n        padding: 0 25px 0 20px;\n      }\n  \n      .Header-searchtb6Foi0-D9Vx {\n        position: absolute;\n        top: 55px;\n        right: 0px;\n        margin: 0;\n        padding: 0;\n        box-shadow: none;\n        border: none;\n        outline: none;\n        width: 50%;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n      }\n  \n      .Header-searchtb6Foi0-D9Vx button {\n        width: 25% !important;\n        padding-left: 20px;\n        border: 1px solid #0D0D0B !important;\n      } \n  \n      .Header-searchtb6Foi0-D9Vx button .icon-search1  {\n        color: #ffd706 !important;\n      }\n    }\n\n/* beginning of footer */\n\n\n.container {\n    margin-right: auto;\n    margin-left: auto;\n    padding-left: 15px;\n    padding-right: 15px;\n    min-width: 320px;\n    position: relative;\n\n    \n\n}\n@media (min-width: 768px) {\n    .container {\n        width: 750px;\n    }\n}\n@media (min-width: 992px) {\n    .container {\n        width: 970px;\n    }\n}\n@media (min-width: 1200px) {\n    .container {\n        width: 1170px;\n    }\n}\n.list-reset {\n    list-style: none;\n    margin-top: 0;\n    margin-bottom: 0;\n    padding: 0;\n}\nfooter {\n\tposition:relative;\n\tfont-size:14px;\n\toverflow:hidden;\n\tcolor:#fff;\n\tbackground:#0D0D0B\n}\n.btn--footer {\n    display: -webkit-inline-box;\n    display: inline-flex;\n    -webkit-box-align: center;\n    align-items: center;\n    -webkit-box-pack: center;\n    justify-content: center;\n    height: 50px;\n    padding: 0 1.5rem;\n    text-align: center;\n    border-radius: 6px;\n    font-weight: 400;\n    text-decoration: none;\n    cursor: pointer;\n    font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n    border-width: 0;\n    text-align: center;\n}\n.btn-primary--footer {\n    background-color: #FFD706;\n    color: #0D0D0B;\n    -webkit-transition: background-color 0.25s;\n    transition: background-color 0.25s;\n    margin: 0 2.2rem 0 0;\n    width: auto;\n}\n.feedback__header {\n    font-size: 3rem;\n}\n@media (max-width: 790px) {\n    .feedback__header {\n      font-size: 1.6rem;\n    }\n  }\n.footer__feedback {\n    display: flex;\n    gap: 30px;\n    align-items: center;\n    justify-content: center;\n\n}\n@media (min-width:768px) {\n    .footer__feedback {\n        flex-direction: row;\n        flex-flow: row;\n    }\n}\n.footer__bottom {\n    padding: 30px 0;\n    border-top: 1px solid #32312D;\n}\na:not(.btn) {\n    color: inherit;\n    -webkit-text-decoration-color: #FF5810;\n    text-decoration-color: #FF5810;\n    text-decoration-thickness: 2px;\n    text-underline-offset: 5px;\n    -webkit-transition: -webkit-text-decoration-color 0.25s;\n    transition: -webkit-text-decoration-color 0.25s;\n    transition: text-decoration-color 0.25s;\n    transition: text-decoration-color 0.25s, -webkit-text-decoration-color 0.25s;\n}\na:not(.btn).link-no-underline {\n    -webkit-text-decoration-color: transparent;\n    text-decoration-color: transparent;\n}\na:not(.btn).link-no-underline:hover {\n    -webkit-text-decoration-color: #FF5810;\n    text-decoration-color: #FF5810;\n}\n.footer-basic__grid {\n    display: -webkit-box;\n    display: flex;\n    -webkit-box-pack: justify;\n    justify-content: space-between;\n    -webkit-box-align: center;\n    align-items: center;\n    gap: 40px;\n}\n@media (max-width:768px) {\n    .footer-basic__grid {\n        -webkit-box-orient: horizontal;\n        -webkit-box-direction: normal;\n        flex-direction: row;\n        -webkit-box-pack: center;\n        justify-content: center;\n        flex-wrap: wrap;\n        margin: 0;\n        padding: 0;\n    }\n}\n.footer__doc-logo {\n    width: 200px;\n}\n.footer__links {\n    display: -webkit-box;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    flex-direction: column;\n    gap: 20px;\n    padding: 1rem 0 1rem 0;\n    margin: 0 auto;\n}\n\n.footer__list-secondary {\n    display: flex;\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    flex-direction: column;\n    gap: 20px;\n}\n@media (min-width:768px) {\n    .footer__list-secondary {\n        -webkit-box-orient: horizontal;\n        -webkit-box-direction: normal;\n        flex-direction: row;\n        -webkit-box-pack: end;\n        justify-content: end;\n        flex-wrap: wrap;\n    }\n}\n.footer__social {\n    grid-area: social;\n    display: -webkit-box;\n    display: flex;\n    gap: 20px;\n    align-self: end;\n}\n.footer__social a {\n    display: -webkit-box;\n    display: flex;\n    -webkit-box-align: center;\n    align-items: center;\n    -webkit-box-pack: center;\n    justify-content: center;\n    width: 40px;\n    height: 40px;\n    padding:10px;\n    border-radius: 50%;\n    background-color: #FF5810;\n    -webkit-transition: background-color .3s;\n    transition: background-color .3s;\n}\n\n\n\n  .modal-bg {\n    position: fixed;\n    top: 0;\n    left: 0;\n    display: none;\n    width: 100%;\n    height: 100%;\n    background: rgba(35, 41, 50, 0.75);\n    z-index: 10;\n    backdrop-filter: blur(10px);\n    opacity: 0;\n    transition: opacity 0.25s;\n  }\n\n  .modal__wrap {\n    display: none;\n    position: fixed;\n    top: -10%;\n    left: 0;\n    width: 90%;\n    margin: 7rem 1.5rem;\n    padding: 1rem 2rem 2rem;\n    background: #FFFDF2;\n    border-radius: 2rem;\n    z-index: 11;\n  }\n  @media (min-width: 1080px) {\n    .modal__wrap {\n      top: -10%;\n      left: 50%;\n      width: 63.6rem;\n      margin: 8rem 0 0 -31.8rem;\n      padding: 1rem 5rem 3rem;\n    }\n}\n\n  .modal__close {\n    position: absolute;\n    top: 2rem;\n    right: 2rem;\n    width: 2.2rem;\n    height: 2.2rem;\n    cursor: pointer;\n    text-indent: -9999px;\n    background: url(\"https://recurly.com/img2/events/subscriptionsessions/close-btn.svg\")\n      center no-repeat;\n    background-size: 12px;\n  }\n\n  .modal__headline {\n    margin: 1.5rem 0 0;\n    color: #0D0D0B;\n    font-size: 2.2rem;\n    line-height: 2.2rem;\n    font-variation-settings: \"ital\" 0, \"wdth\" 100, \"wght\" 300;\n  }\n\n  /* Blur effect on background */\n        .blur-background {\n            filter: blur(5px);\n            pointer-events: none; /* Prevent interaction with blurred content */\n        }\n\n\n.mktoForm{\n\twidth:100% !important\n}\n.mktoForm .mktoOffset,.mktoForm .mktoGutter{\n\tdisplay:none\n}\n.mktoForm .mktoAsterix{\n\tdisplay:none\n}\n.mktoForm .mktoRequiredField .mktoAsterix{\n\tdisplay:inline-block;\n\tmargin:0 0.3rem 0 0\n}\n.mktoForm .mktoField.mktoHasWidth.mktoRequired.mktoInvalid{\n\tborder:1px solid #DF381F\n}\n.mktoForm div{\n\ttext-align:left;\n\tmargin:0;\n\tpadding:0\n}\n.mktoForm .mktoClear{\n\tclear:both;\n\tfloat:none\n}\n.mktoForm .gdpr__privacy,.mktoForm #LblGDPR_Consent__c{\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tcolor:#0D0D0B;\n\tfont-weight:400\n}\n.mktoForm #LblGDPR_Consent__c{\n\tposition:relative;\n\tbackground:transparent;\n\tfont-size:1rem;\n\tline-height:2rem;\n\tmargin-bottom:.8rem;\n\tpadding-right:.2rem\n}\n.mktoForm .gdpr__privacy{\n\tfont-size:1rem;\n\tline-height:1.5rem;\n\tmargin:1.0rem 0 0;\n}\n.mktoForm input{\n\t-webkit-transition:0.1s ease-out;\n\ttransition:0.1s ease-out\n}\n.mktoForm input[type=url],.mktoForm input[type=text],.mktoForm input[type=date],.mktoForm input[type=tel],.mktoForm input[type=email],.mktoForm input[type=number],.mktoForm textarea.mktoField,.mktoForm select.mktoField{\n\twidth:100% !important\n}\n.mktoForm input[type=email]+.mktoError .mktoErrorMsg{\n\tmax-width:19.5rem\n}\n.mktoForm select.mktoField{\n\tpadding:1.5rem 1.5rem 0rem 1.2rem;\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tbackground:url(\"https://recurly.com/img2/demo-request/dropdown-caret_expand.svg\") 96% center #fff no-repeat;\n\tbackground-size:12px 7px;\n\tborder-radius:0;\n\t-webkit-appearance:none;\n\t-moz-appearance:none;\n\tappearance:none;\n\theight:4rem;\n\twidth:100%;\n\tpadding:0.6rem;\n\tcolor:#535356;\n\tfont-size:1.8rem;\n\tfont-weight:500;\n\tborder:0 none;\n\tborder-radius:0;\n\tbox-shadow:none\n}\n.mktoForm select.mktoField>option:first-child{\n\tcolor:transparent\n}\n.mktoForm select.mktoField:focus{\n\toutline:none\n}\n.mktoForm select.mktoField:-moz-focusring{\n\tcolor:transparent;\n\ttext-shadow:0 0 0 #000\n}\n.mktoForm .consent-label-container{\n\tdisplay:-webkit-box;\n\tdisplay:flex;\n\t-webkit-box-orient:horizontal;\n\t-webkit-box-direction:reverse;\n\tflex-direction:row-reverse;\n\t-webkit-box-align:start;\n\talign-items:flex-start\n}\n.mktoForm .consent-label-container .mktoLabel{\n\tline-height:2rem\n}\n.mktoForm div.mktoFieldWrap:not(.consent-label-container) .mktoLabel.mktoHasWidth{\n\tfont-size:1rem;\n\tline-height:1.5rem;\n\tposition:relative;\n  width:auto !important;\n\tleft:1.4rem;\n\tright:30px;\n\ttop:30px;\n\tbackground-color:white;\n\t-webkit-transition:.1s ease-out;\n\ttransition:.1s ease-out;\n\t-webkit-transform-origin:left top;\n\ttransform-origin:left top;\n\tpointer-events:none\n}\n.mktoForm div.mktoFieldWrap:not(.consent-label-container) .mktoLabel.mktoHasWidth.active{\n\tline-height:2.2rem;\n\tfont-size:1.2rem;\n\ttop:0;\n\t-webkit-transform:translateY(17%) scale(0.9);\n\ttransform:translateY(17%) scale(0.9)\n}\n.mktoForm div.mktoRequiredField.selectLabel label.mktoLabel{\n\tposition:relative;\n\tbackground:none;\n\tline-height:1.5rem;\n\tleft:0;\n\ttop:0;\n\t-webkit-transition:none;\n\ttransition:none;\n\t-webkit-transform:none;\n\ttransform:none\n}\n.mktoForm div.mktoRequiredField.selectLabel label.mktoLabel.active{\n\tfont-size:1.6rem;\n\tline-height:2rem;\n\t-webkit-transform:none;\n\ttransform:none\n}\n.mktoForm .mktoCheckboxList{\n\tpadding:0;\n\tfloat:left;\n\tposition:relative;\n\ttop:0\n}\n.mktoForm .mktoCheckboxList label{\n\tfont-size:1.4rem;\n\tline-height:2rem\n}\n.mktoForm .mktoCheckboxList>input{\n\tmargin:0 1rem 0 0\n}\n.mktoForm .mktoCheckboxList>input:after{\n\tcontent:\" \";\n\tfont-size:1.4rem;\n\tbackground-color:#ab4ac3;\n\tdisplay:inline-block;\n\tvisibility:visible\n}\n.mktoForm .mktoCheckboxList>input:checked:after{\n\tcontent:\"\\2713\";\n\tbox-shadow:0px 2px 4px rgba(155,155,155,0.15);\n\tborder-radius:3px;\n\theight:1.5rem;\n\tdisplay:block;\n\twidth:1.5rem;\n\ttext-align:center;\n\tfont-size:1.2rem;\n\tcolor:white\n}\n.mktoForm .mktoLabel{\n\tline-height:3rem;\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tfont-size:1.6rem;\n\tfont-weight:400;\n\tcolor:#0D0D0B;\n\tdisplay:inline-block;\n\tfloat:none !important;\n\twidth:auto\n}\n.mktoForm .mktoLabel span{\n\tcolor:#0D0D0B;\n\tfont-size:1.0rem;\n\tline-height:1.5rem\n}\n.mktoButtonWrap.mktoSimple {\n  margin-left: 0 !important;\n}\n.mktoForm .mktoButtonWrap.mktoSimple .mktoButton{\n\tdisplay:inline-block;\n\t-webkit-user-select:none;\n\t-moz-user-select:none;\n\t-ms-user-select:none;\n\tuser-select:none;\n\theight:4rem;\n\tpadding:1rem 3rem;\n\tfont-size:1.2rem;\n\tline-height:2.2rem;\n\tfont-weight:400;\n\tcolor:#fff;\n\ttext-align:center;\n\ttext-decoration:none;\n\ttext-overflow:ellipsis;\n\ttext-transform:lowercase;\n\twhite-space:nowrap;\n\toverflow:hidden;\n\tvertical-align:middle;\n\tcursor:pointer;\n\tborder:0;\n  margin-top: 15px;\n\tborder-radius:6px;\n\tbackground:#0D0D0B;\n\t-webkit-transition:all .3s ease-in;\n\ttransition:all .3s ease-in\n}\n.mktoForm .mktoButtonWrap.mktoSimple .mktoButton:first-letter,.mktoForm .mktoButtonWrap.mktoSimple .mktoButton span:first-letter{\n\ttext-transform:capitalize\n}\n.mktoForm .mktoButtonWrap.mktoSimple .mktoButton:hover{\n\tbackground:#FF9D88;\n\tcolor:#0D0D0B;\n\t-webkit-transform:none;\n\ttransform:none\n}\n.mktoForm .mktoFormRow .mktoField:not([type=\"checkbox\"]){\n\tbackground-color:#fff;\n\tborder-radius:4px;\n\tborder:1px solid #bdbbb6;\n\tcolor:#0D0D0B;\n\tdisplay:block;\n\tfloat:none;\n\theight:3.5rem;\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tfont-size:1.2rem !important;\n\t-webkit-appearance:none;\n\t-moz-appearance:none;\n\tappearance:none;\n\tpadding:1.7rem 1.5rem 0rem 1.2rem\n}\n.mktoForm .mktoFormRow .mktoField:not([type=\"checkbox\"]):focus{\n\toutline:none;\n\tborder-color:#0D0D0B;\n  font-weight: 400;\n}\n.mktoForm .mktoFormRow select.mktoField:not([type=\"checkbox\"]){\n\tpadding:1.6rem 1.5rem 0rem 1.2rem\n}\n.mktoForm .mktoError{\n\tposition:initial;\n\tz-index:99;\n\tcolor:#bf0000\n}\n.mktoForm .mktoError .mktoErrorArrowWrap{\n\tdisplay:none;\n\twidth:16px;\n\theight:8px;\n\toverflow:hidden;\n\tposition:absolute;\n\ttop:0;\n\tleft:5px;\n\tz-index:100\n}\n.mktoForm .mktoError .mktoErrorArrow{\n\tdisplay:inline-block;\n\theight:16px;\n\twidth:16px;\n\tmargin-top:5px;\n\tborder:0 none !important;\n\tbackground-color:#e35256 !important;\n\tborder-right:none;\n\tborder-bottom:none;\n\t-webkit-transform:rotate(45deg);\n\ttransform:rotate(45deg);\n\t-ms-transform:rotate(45deg)\n}\n.mktoForm .mktoError .mktoErrorMsg{\n\tdisplay:block;\n\tmargin:0;\n\tpadding:0;\n\tfont-size:1.0rem;\n\tline-height:2.1rem;\n\tfont-weight:400;\n\tmax-width:18rem;\n\tcolor:#e35256;\n\tborder:0 none !important;\n\tborder-radius:3px !important;\n\tbackground:transparent !important;\n\tbox-shadow:none !important;\n\ttext-shadow:none !important\n}\n\n/* ===== product landing page overwrite ======= */\n\n.rm-LandingPage {\n          width: 100% !important;\n          background-color: #0D0D0B !important;\n          padding: 0 !important;\n}\n\n/* ===== Product landing page CSS ======= */\n.globallp-header-section {\n          background: #0D0D0B !important;\n          padding: 64px 0 !important;\n}\n.feature-section {\n          background: #fff !important;\n          padding: 94px 0 !important;\n}\n\n.feature-grid {\n          max-width: 1200px !important;\n          margin: 0 auto !important;\n          display: grid !important;\n          grid-template-columns: repeat(3, 1fr) !important;\n          gap: 32px 24px !important;\n          padding: 0 24px !important;\n}\n\n.feature-card {\n          border: 1px solid #ece9d7 !important;\n          border-radius: 12px !important;\n          padding: 32px 24px !important;\n          background: #fff !important;\n          display: flex !important;\n          flex-direction: column !important;\n          gap: 8px !important;\n          cursor: pointer !important;\n          transition: box-shadow 0.2s !important;\n          height: 120px !important;\n          justify-content: flex-start !important;\n          box-sizing: unset !important;\n}\n\n.feature-grid a {\n          text-decoration: none !important;\n          color: inherit !important;\n}\n\n.feature-card:hover {\n          box-shadow: 0px 12px 16px -4px rgba(13, 13, 11, 0.08), 0px 4px 6px -2px rgba(13, 13, 11, 0.03), 0px 2px 2px -1px rgba(13, 13, 11, 0.04) !important;\n}\n\n.feature-card-icon-group {\n          display: flex !important;\n          align-items: center !important;\n          gap: 12px !important;\n}\n\n.feature-card-icon {\n          width: 40px !important;\n          height: 40px !important;\n          display: flex !important;\n          align-items: center !important;\n          margin: 0 !important;\n}\n\n.feature-card-title {\n          color: #0D0D0B !important;\n          font-weight: 600 !important;\n          font-size: 18px !important;\n          margin-top: 8px !important;\n}\n\n.feature-card:hover .feature-card-title {\n          color: #B0361E !important;\n          font-weight: 600 !important;\n}\n\n.feature-card-desc {\n          color: #0D0D0B !important;\n          font-size: 14px !important;\n}\n\n.feature-badge {\n          position: relative !important;\n          border-radius: 9999px !important;\n          background-color: #f9f7eb !important;\n          border: 1px solid #e2dfd0 !important;\n          box-sizing: border-box !important;\n          width: 100% !important;\n          display: flex !important;\n          flex-direction: row !important;\n          align-items: center !important;\n          justify-content: flex-start !important;\n          padding: 2px 10px !important;\n          text-align: center !important;\n          font-size: 14px !important;\n          color: #46443f !important;\n          width: fit-content !important;\n}\n\n.feature-badge-text {\n          position: relative !important;\n          letter-spacing: 0.01em !important;\n          font-size: 10px !important;\n          line-height: 20px !important;\n          font-weight: 600 !important;\n}\n\n.more-docs-section {\n          background: #f6f3e0 !important;\n          padding: 94px 12px !important;\n}\n\n.more-docs-container {\n          max-width: 1200px !important;\n          margin: 0 auto !important;\n          text-align: center !important;\n}\n\n.more-docs-title {\n          font-weight: 700 !important;\n          margin: 0 0 16px !important;\n          font-size: 36px !important;\n}\n\n.more-docs-desc {\n          font-size: 20px !important;\n          color: #0D0D0B !important;\n          margin-bottom: 40px !important;\n}\n\n.more-docs-grid {\n          display: flex !important;\n          justify-content: space-around !important;\n          gap: 48px !important;\n          flex-wrap: wrap !important;\n}\n\n.more-docs-card {\n          flex: 1 1 30% !important;\n          max-width: 100% !important;\n          display: flex !important;\n          flex-direction: column !important;\n          align-items: center !important;\n          gap: 12px !important;\n}\n\n.more-docs-card-icon {\n          width: 48px !important;\n          height: 48px !important;\n}\n\n.more-docs-card-image {\n          width: auto !important;\n          height: 32px !important;\n          margin-bottom: 8px !important;\n}\n\n.more-docs-card-title {\n          font-weight: 700 !important;\n          color: #0D0D0B !important;\n}\n\n.more-docs-card-title span {\n          color: #888 !important;\n          font-weight: 400 !important;\n}\n\n.more-docs-card-desc {\n          font-size: 16px !important;\n          line-height: 24px !important;\n          color: #0D0D0B !important;\n}\n\n.more-docs-link {\n          color: #B0361E !important;\n          font-size: 16px !important;\n          font-weight: 600 !important;\n          text-decoration: none !important;\n          display: flex !important;\n          align-items: center !important;\n}\n.more-docs-link:hover {\n          text-decoration: underline !important;\n}\n\n.more-docs-icon-arrow {\n          width: 20px !important;\n}\n\n.release-section {\n          background: #FFD706 !important;\n          padding: 64px 0 !important;\n}\n\n.release-container {\n          max-width: 600px !important;\n          margin: 0 auto !important;\n          text-align: center !important;\n}\n\n.release-title {\n          font-family: 'F37 Gruffy', cursive !important;\n          font-size: 2rem !important;\n          font-weight: 700 !important;\n          margin-bottom: 16px !important;\n}\n\n.release-desc {\n          font-size: 18px !important;\n          color: #0D0D0B !important;\n          margin-bottom: 32px !important;\n}\n\n.release-form {\n          display: flex !important;\n          gap: 8px !important;\n          justify-content: center !important;\n          margin-bottom: 8px !important;\n}\n\n.release-input {\n          flex: 1 !important;\n          min-width: 0 !important;\n          padding: 12px !important;\n          border-radius: 6px !important;\n          border: 1px solid #ccc !important;\n          font-size: 16px !important;\n}\n\n.release-button {\n          background: #0D0D0B !important;\n          color: #fff !important;\n          border: none !important;\n          border-radius: 6px !important;\n          padding: 12px 24px !important;\n          font-size: 16px !important;\n          font-weight: 600 !important;\n          cursor: pointer !important;\n}\n\n.release-privacy {\n          font-size: 13px !important;\n          color: #0D0D0B !important;\n}\n\n.release-privacy a {\n          color: #0D0D0B !important;\n          text-decoration: underline !important;\n}\n\n@media (max-width: 1024px) {\n          .globallp-header-content {\n              max-width: 100% !important;\n          }\n\n          .feature-grid {\n              max-width: 1200px !important;\n              margin: 0 auto !important;\n              display: grid !important;\n              grid-template-columns: repeat(2, 1fr) !important;\n              gap: 32px 24px !important;\n              padding: 0 24px !important;\n          }\n\n}\n@media (max-width: 768px) {\n          .feature-grid {\n              max-width: 1200px !important;\n              margin: 0 auto !important;\n              display: grid !important;\n              grid-template-columns: repeat(1, 1fr) !important;\n              gap: 32px 24px !important;\n              padding: 0 24px !important;\n          }\n          .feature-card {\n              height: 100px !important;\n          }\n}","stylesheet_hub3":"","javascript":"","javascript_hub2":"/* ============================================================\n   Changelog page — inject branded intro header\n   Uses MutationObserver to handle SPA navigation. Each time\n   the DOM changes, attempts to inject the header. Idempotent —\n   the function checks for an existing header and bails if found.\n   ============================================================ */\n(function () {\n  function injectChangelogHeader() {\n    var container = document.querySelector('.rm-Changelog .rm-ContainerNarrow');\n    if (!container) return;\n    if (document.getElementById('recurly-changelog-header')) return;\n    var header = document.createElement('div');\n    header.id = 'recurly-changelog-header';\n    header.className = 'rm-Markdown markdown-body';\n    header.style.padding = '24px 0 8px';\n    header.innerHTML = `\n      \u003ch1>Recurly Commerce Changelog\u003c/h1>\n      \u003cp>Discover what's new in Recurly Commerce. Browse posts by year to see recent launches, enhancements, and behind-the-scenes improvements that keep your platform sharp.\u003c/p>\n      \u003cp class=\"rss-line\">\n        \u003ci class=\"fa-solid fa-rss rss-icon\" aria-hidden=\"true\">\u003c/i>\n        Stay in the loop — copy our \u003cbutton type=\"button\" class=\"rss-copy\" data-url=\"https://docs.recurly.com/recurly-subscriptions/changelog.rss\">RSS feed URL\u003c/button> and paste it into your favorite RSS reader to get every update the moment it ships.\n      \u003c/p>\n      \u003cdiv class=\"rss-instructions-wrap\">\n        \u003cbutton type=\"button\" class=\"rss-instructions-toggle\" aria-expanded=\"false\" aria-controls=\"rss-instructions-body\">\n          \u003ci class=\"fa-solid fa-circle-question\" aria-hidden=\"true\">\u003c/i>\n          How to use this URL\n          \u003ci class=\"fa-solid fa-chevron-down rss-chevron\" aria-hidden=\"true\">\u003c/i>\n        \u003c/button>\n        \u003cdiv id=\"rss-instructions-body\" class=\"rss-instructions-body\" hidden>\n          \u003cp>An RSS reader lets you subscribe to the changelog and receive new posts automatically — no need to check back manually. You can usually choose to see posts as a combined feed or read each one in full.\u003c/p>\n          \u003cp>We recommend \u003ca href=\"https://feedly.com\" target=\"_blank\" rel=\"noopener\">Feedly\u003c/a> or \u003ca href=\"https://feeder.co\" target=\"_blank\" rel=\"noopener\">Feeder\u003c/a> — both are free to start, work in your browser, and let you choose how to view updates (summary list or full article view).\u003c/p>\n          \u003col>\n            \u003cli>Click \u003cstrong>RSS feed URL\u003c/strong> above to copy the feed address.\u003c/li>\n            \u003cli>Open your RSS reader (e.g. \u003ca href=\"https://feedly.com\" target=\"_blank\" rel=\"noopener\">Feedly\u003c/a> or \u003ca href=\"https://feeder.co\" target=\"_blank\" rel=\"noopener\">Feeder\u003c/a>) and look for an \u003cstrong>Add feed\u003c/strong> or \u003cstrong>Follow\u003c/strong> option.\u003c/li>\n            \u003cli>Paste the URL you copied and confirm the subscription.\u003c/li>\n            \u003cli>New changelog entries will appear in your reader automatically the moment they publish.\u003c/li>\n          \u003c/ol>\n          \u003cp class=\"rss-instructions-tip\">\u003ci class=\"fa-solid fa-lightbulb\" aria-hidden=\"true\">\u003c/i> \u003cstrong>Tip:\u003c/strong> Most readers let you switch between a compact list view (titles only) and an expanded view (full post content). Pick whichever fits your workflow.\u003c/p>\n        \u003c/div>\n      \u003c/div>\n    `;\n    container.insertBefore(header, container.firstChild);\n  }\n\n  /* Click-to-copy handler — registered once via event delegation\n     so it works for any .rss-copy button, including re-injected ones */\n  document.addEventListener('click', function (e) {\n    var btn = e.target.closest('.rss-copy');\n    if (!btn) return;\n    var url = btn.getAttribute('data-url');\n    navigator.clipboard.writeText(url).then(function () {\n      var original = btn.textContent;\n      btn.textContent = 'Copied!';\n      btn.classList.add('rss-copied');\n      setTimeout(function () {\n        btn.textContent = original;\n        btn.classList.remove('rss-copied');\n      }, 1500);\n    });\n  });\n\n  /* Collapsible toggle handler — event delegation, works after re-injection */\n  document.addEventListener('click', function (e) {\n    var toggle = e.target.closest('.rss-instructions-toggle');\n    if (!toggle) return;\n    var body = document.getElementById('rss-instructions-body');\n    if (!body) return;\n    var isOpen = toggle.getAttribute('aria-expanded') === 'true';\n    toggle.setAttribute('aria-expanded', isOpen ? 'false' : 'true');\n    body.hidden = isOpen;\n    toggle.classList.toggle('rss-instructions-open', !isOpen);\n  });\n\n  /* Run immediately for first page load */\n  injectChangelogHeader();\n\n  /* Watch DOM for changes — re-injects on SPA navigation\n     when ReadMe rebuilds the changelog subtree */\n  var observer = new MutationObserver(injectChangelogHeader);\n  observer.observe(document.body, {\n    childList: true,\n    subtree: true\n  });\n})();","html_promo":"","html_body":"","html_footer":"","html_head":"","html_footer_meta":"","global_landing_page":{"html":"","redirect":""},"html_hidelinks":false,"collapsibleCategories":false,"showBreadcrumbs":true,"showPageIcons":true,"showVersion":false,"searchModal":"classic","hideTableOfContents":false,"nextStepsLabel":"","ai_dropdown":"enabled","print_button":"disabled","ai_options":{"ask_ai":"disabled","chatgpt":"enabled","claude":"enabled","clipboard":"enabled","copilot":"enabled","mcp":{"command":"enabled","config":"enabled","cursor":"enabled","vscode":"enabled"},"view_as_markdown":"enabled"}},"custom_domain":"","description":"","hstsIncludeSubdomains":false,"planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"","error404":"","first_page":"landing","git":{"renamedSlugs":[]},"glossaryTerms":[{"_id":"68825cc7a7cffa08ce74f92d","term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!"}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"healthCheck":{"provider":"","settings":{}},"i18n":{"defaultLanguage":"en","languages":[{"code":"en","type":"manual"}],"state":"enabled"},"intercom":"","aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"html","alignment":"left","title":null,"text":null,"html":"\u003chead>\n    \u003cstyle>\n        /* ============================================================\n           GLOBAL OVERRIDES\n        ============================================================ */\n        main.main-index,\n        .rm-LandingPage {\n            width: 100% !important;\n            max-width: 100% !important;\n            margin: 0 !important;\n            padding: 0 !important;\n            background: #0D0D0B !important;\n        }\n\n        .hub-is-home .rm-VersionDropdown { display: none !important; }\n\n        .feature-grid a,\n        .feature-grid a:hover,\n        .more-docs-link,\n        .globallp-footer-content a {\n            text-decoration: none !important;\n            -webkit-text-decoration-color: transparent !important;\n            text-decoration-color: transparent !important;\n        }\n\n        /* ============================================================\n           OVERFLOW PROTECTION\n        ============================================================ */\n        .globallp-header-section,\n        .feature-container {\n            overflow-x: hidden !important;\n        }\n\n        .feature-grid > * { min-width: 0 !important; }\n\n        .feature-card {\n            max-width: 100% !important;\n            min-width: 0 !important;\n            box-sizing: border-box !important;\n        }\n\n        /* ============================================================\n           SHARED: dark section base\n        ============================================================ */\n        body,\n        .globallp-header-section,\n        .feature-container,\n        .feature-section {\n            background: #0D0D0B !important;\n        }\n\n        /* ============================================================\n           HERO\n        ============================================================ */\n        .globallp-header-section {\n            padding: 64px 0 !important;\n        }\n\n        /* ============================================================\n           HERO SEARCH\n        ============================================================ */\n        .hero-search-bar { display: flex !important; align-items: center !important; gap: 10px !important; background: rgba(255,255,255,0.08) !important; border: 1px solid rgba(255,255,255,0.15) !important; border-radius: 8px !important; padding: 10px 16px !important; max-width: 420px !important; cursor: pointer !important; margin-bottom: 24px !important; transition: background 0.2s, border-color 0.2s !important; }\n        .hero-search-bar:hover { background: rgba(255,255,255,0.13) !important; border-color: rgba(255,255,255,0.3) !important; }\n        .hero-search-icon { color: rgba(255,255,255,0.5) !important; flex-shrink: 0 !important; }\n        .hero-search-placeholder { flex: 1 !important; font-size: 15px !important; color: rgba(255,255,255,0.45) !important; font-family: \"Polar\",\"Helvetica Neue\",Helvetica,arial,sans-serif !important; }\n        .hero-search-kbd { font-size: 12px !important; color: rgba(255,255,255,0.3) !important; background: rgba(255,255,255,0.08) !important; border: 1px solid rgba(255,255,255,0.15) !important; border-radius: 4px !important; padding: 2px 7px !important; font-family: monospace !important; }\n\n        /* ============================================================\n           FEATURE SECTION\n        ============================================================ */\n        .feature-container {\n            width: 100% !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n        }\n\n        .feature-section {\n            padding: 64px 32px !important;\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            box-sizing: border-box !important;\n        }\n\n        /* Section header */\n        .section-header-block {\n            display: flex !important;\n            justify-content: space-between !important;\n            align-items: center !important;\n            gap: 48px !important;\n            margin-bottom: 32px !important;\n            padding: 28px 36px !important;\n            background: rgba(255, 253, 242, 0.03) !important;\n            border: 1px solid rgba(255, 253, 242, 0.08) !important;\n            border-left: 4px solid #FFD706 !important;\n            border-radius: 0 12px 12px 0 !important;\n            box-sizing: border-box !important;\n            max-width: 100% !important;\n            overflow: hidden !important;\n        }\n\n        .section-header-left { flex: 1 !important; min-width: 0 !important; }\n        .section-header-right { flex: 1 !important; max-width: 420px !important; min-width: 0 !important; }\n\n        .section-eyebrow {\n            display: inline-flex !important;\n            align-items: center !important;\n            gap: 8px !important;\n            color: #FFD706 !important;\n            font-size: 11px !important;\n            font-weight: 700 !important;\n            letter-spacing: 0.12em !important;\n            text-transform: uppercase !important;\n            margin-bottom: 10px !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n        }\n\n        .section-eyebrow-dot {\n            display: inline-block !important;\n            width: 6px !important;\n            height: 6px !important;\n            border-radius: 50% !important;\n            background: #FFD706 !important;\n            flex-shrink: 0 !important;\n        }\n\n        .section-title {\n            font-size: 32px !important;\n            font-weight: 800 !important;\n            color: #FFFDF2 !important;\n            margin: 0 !important;\n            line-height: 1.1 !important;\n            letter-spacing: -0.02em !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            overflow-wrap: break-word !important;\n            word-break: break-word !important;\n        }\n\n        .section-desc {\n            font-size: 15px !important;\n            color: rgba(255, 253, 242, 0.82) !important;\n            margin: 0 !important;\n            line-height: 1.65 !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            overflow-wrap: break-word !important;\n            word-break: break-word !important;\n        }\n\n        /* ============================================================\n           FEATURE GRID — 3 columns\n        ============================================================ */\n        .feature-grid {\n            width: 100% !important;\n            display: grid !important;\n            grid-template-columns: repeat(3, 1fr) !important;\n            gap: 16px !important;\n            box-sizing: border-box !important;\n        }\n\n        .feature-card {\n            background: #131210 !important;\n            border: 1px solid rgba(255, 253, 242, 0.07) !important;\n            border-radius: 14px !important;\n            padding: 28px 26px !important;\n            display: flex !important;\n            flex-direction: column !important;\n            gap: 12px !important;\n            cursor: pointer !important;\n            transition: background 0.2s ease, border-color 0.2s ease !important;\n            width: 100% !important;\n            height: auto !important;\n            min-height: 0 !important;\n            overflow: visible !important;\n            box-sizing: border-box !important;\n        }\n\n        .feature-grid a {\n            text-decoration: none !important;\n            color: inherit !important;\n            display: flex !important;\n            height: auto !important;\n        }\n\n        .feature-card:hover {\n            background: #1C1B18 !important;\n            border-color: rgba(255, 215, 6, 0.22) !important;\n        }\n\n        .feature-card-icon {\n            width: 48px !important;\n            height: 48px !important;\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            flex-shrink: 0 !important;\n            background: #FFD706 !important;\n            border-radius: 50% !important;\n        }\n\n        /* Badge inline with icon for API card */\n        .feature-card-icon-group {\n            display: flex !important;\n            align-items: center !important;\n            gap: 12px !important;\n        }\n\n        .feature-badge {\n            display: inline-flex !important;\n            align-items: center !important;\n            background: rgba(255, 215, 6, 0.1) !important;\n            border: 1px solid rgba(255, 215, 6, 0.2) !important;\n            border-radius: 99px !important;\n            padding: 3px 10px !important;\n        }\n\n        .feature-badge-text {\n            font-size: 10px !important;\n            font-weight: 700 !important;\n            letter-spacing: 0.08em !important;\n            text-transform: uppercase !important;\n            color: #FFD706 !important;\n        }\n\n        .feature-card-title {\n            color: #FFFDF2 !important;\n            font-weight: 700 !important;\n            font-size: 15px !important;\n            margin: 0 !important;\n            line-height: 1.3 !important;\n            overflow-wrap: break-word !important;\n        }\n\n        .feature-card:hover .feature-card-title { color: #FFD706 !important; }\n\n        .feature-card-desc {\n            color: rgba(255, 253, 242, 0.82) !important;\n            font-size: 13px !important;\n            margin: 0 !important;\n            line-height: 1.55 !important;\n            overflow-wrap: break-word !important;\n        }\n\n        /* ============================================================\n           MORE DOCS\n        ============================================================ */\n        .more-docs-section {\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            background: #f6f3e0 !important;\n            padding: 94px 32px !important;\n        }\n\n        .more-docs-container {\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            text-align: center !important;\n            box-sizing: border-box !important;\n        }\n\n        .more-docs-title { font-weight: 700 !important; margin: 0 0 16px !important; font-size: 36px !important; }\n        .more-docs-desc { font-size: 20px !important; color: #0D0D0B !important; margin-bottom: 40px !important; }\n\n        .more-docs-grid {\n            display: flex !important;\n            justify-content: space-around !important;\n            gap: 48px !important;\n            flex-wrap: wrap !important;\n        }\n\n        .more-docs-card {\n            flex: 1 1 30% !important;\n            display: flex !important;\n            flex-direction: column !important;\n            align-items: center !important;\n            gap: 12px !important;\n        }\n\n        .more-docs-card-icon { width: 48px !important; height: 48px !important; }\n        .more-docs-card-image { width: auto !important; height: 32px !important; margin-bottom: 8px !important; }\n        .more-docs-card-desc { font-size: 16px !important; line-height: 24px !important; color: #0D0D0B !important; }\n\n        .more-docs-link {\n            color: #FF5810 !important;\n            font-size: 16px !important;\n            font-weight: 600 !important;\n            text-decoration: none !important;\n            display: flex !important;\n            align-items: center !important;\n        }\n        .more-docs-link:hover { text-decoration: underline !important; }\n        .more-docs-icon-arrow { width: 20px !important; margin-left: 8px !important; }\n\n        /* ============================================================\n           FOOTER\n        ============================================================ */\n        .globallp-footer {\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            background: #0D0D0B !important;\n            color: #fff !important;\n            padding: 48px 0 !important;\n        }\n\n        .globallp-footer-content {\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            display: flex !important;\n            justify-content: space-between !important;\n            align-items: center !important;\n            padding: 0 32px !important;\n            box-sizing: border-box !important;\n        }\n\n        .globallp-footer-content img { width: auto !important; height: 16px !important; margin: 0 !important; }\n        .globallp-footer-content p { margin: 0 !important; font-size: 14px !important; color: #FFFDF2 !important; }\n        .globallp-footer-content a { color: #FFFDF2 !important; text-decoration: none !important; margin-right: 20px !important; }\n        .globallp-footer-content a:hover { text-decoration: underline !important; }\n\n        /* ============================================================\n           RESPONSIVE\n        ============================================================ */\n        @media (max-width: 1024px) {\n            .feature-grid { grid-template-columns: repeat(2, 1fr) !important; }\n        }\n\n        @media (max-width: 768px) {\n            .globallp-header-section   { padding: 48px 0 !important; }\n            .globallp-header-content   { padding: 0 20px !important; }\n            .globallp-heading          { font-size: 36px !important; }\n            .globallp-supporting-text  { font-size: 16px !important; }\n            .hero-search-bar           { max-width: 100% !important; }\n            .feature-section           { padding: 48px 20px !important; }\n            .section-header-block { flex-direction: column !important; align-items: flex-start !important; gap: 10px !important; padding: 20px !important; margin-bottom: 24px !important; }\n            .section-header-right      { max-width: 100% !important; }\n            .section-title             { font-size: 24px !important; }\n            .feature-grid { grid-template-columns: 1fr !important; }\n            .feature-card              { padding: 20px !important; }\n            .more-docs-section         { padding: 60px 20px !important; }\n            .more-docs-title           { font-size: 28px !important; }\n            .more-docs-desc            { font-size: 16px !important; }\n            .more-docs-grid { flex-direction: column !important; align-items: center !important; gap: 40px !important; }\n            .more-docs-card { flex: 1 1 100% !important; max-width: 400px !important; }\n            .globallp-footer           { padding: 36px 0 !important; }\n            .globallp-footer-content { flex-direction: column !important; align-items: center !important; text-align: center !important; gap: 16px !important; padding: 0 20px !important; }\n            .globallp-footer-content p { display: flex !important; flex-wrap: wrap !important; justify-content: center !important; gap: 6px !important; }\n            .globallp-footer-content a { margin-right: 0 !important; }\n        }\n\n        @media (max-width: 480px) {\n            .globallp-header-section   { padding: 36px 0 !important; }\n            .globallp-heading          { font-size: 28px !important; }\n            .globallp-supporting-text  { font-size: 15px !important; }\n            .hero-search-kbd           { display: none !important; }\n            .feature-section           { padding: 40px 16px !important; }\n            .section-header-block      { padding: 18px 16px !important; }\n            .section-title             { font-size: 20px !important; }\n            .section-desc              { font-size: 13px !important; }\n            .feature-card              { padding: 18px 16px !important; gap: 10px !important; }\n            .feature-card-icon         { width: 40px !important; height: 40px !important; }\n            .feature-card-title        { font-size: 14px !important; }\n            .feature-card-desc         { font-size: 12px !important; }\n            .more-docs-section         { padding: 48px 16px !important; }\n            .more-docs-title           { font-size: 24px !important; }\n        }\n\n        @media (max-width: 375px) {\n            .globallp-heading          { font-size: 26px !important; }\n            .section-title             { font-size: 18px !important; }\n        }\n    \u003c/style>\n\u003c/head>\n\n\u003cbody>\n\n    \u003c!-- ===== Hero ===== -->\n    \u003csection class=\"globallp-header-section\">\n        \u003cdiv class=\"globallp-header-content\">\n            \u003cdiv class=\"hero-search-bar\" id=\"hero-search-trigger\">\n                \u003csvg class=\"hero-search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                    \u003ccircle cx=\"11\" cy=\"11\" r=\"8\">\u003c/circle>\n                    \u003cline x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\">\u003c/line>\n                \u003c/svg>\n                \u003cspan class=\"hero-search-placeholder\">Search documentation...\u003c/span>\n                \u003cspan class=\"hero-search-kbd\">⌘K\u003c/span>\n            \u003c/div>\n            \u003cdiv class=\"globallp-subheading\">DOCUMENTATION\u003c/div>\n            \u003cdiv class=\"globallp-heading\">Let's get started\u003c/div>\n            \u003cdiv class=\"globallp-supporting-text\">Get guides, API references, and best practices for Recurly Commerce.\u003c/div>\n            \u003cdiv class=\"cta-group\">\n                \u003cdiv class=\"new-btn-group\">\n                    \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/\" class=\"new-btn new-btn-primary\">\n                        \u003cdiv class=\"new-btn-text\">\u003cimg class=\"new-btn-icon\" src=\"https://recurly.com/img2/product-docs/icon-docs-book.svg\" alt=\"book icon\">View all docs\u003c/div>\n                    \u003c/a>\n                \u003c/div>\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== Feature Grid ===== -->\n    \u003csection class=\"feature-container\">\n        \u003cdiv class=\"feature-section\">\n\n            \u003cdiv class=\"section-header-block\">\n                \u003cdiv class=\"section-header-left\">\n                    \u003cdiv class=\"section-eyebrow\">\u003cspan class=\"section-eyebrow-dot\">\u003c/span>Recurly Commerce\u003c/div>\n                    \u003ch2 class=\"section-title\">Explore all of our features\u003c/h2>\n                \u003c/div>\n                \u003cdiv class=\"section-header-right\">\n                    \u003cp class=\"section-desc\">Everything you need to manage subscriptions, recover revenue, and power your Shopify storefront — all in one place.\u003c/p>\n                \u003c/div>\n            \u003c/div>\n\n            \u003cdiv class=\"feature-grid\">\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/subscription-management#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M20 12V22H4V12\">\u003c/path>\n                                \u003cpath d=\"M22 7H2v5h20V7z\">\u003c/path>\n                                \u003cpath d=\"M12 22V7\">\u003c/path>\n                                \u003cpath d=\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\">\u003c/path>\n                                \u003cpath d=\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\">\u003c/path>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Subscription management\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Plan creation, plan editing, contract updates, and activity logs.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/recurly-commerce-revenue-recovery#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpolyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\">\u003c/polyline>\n                                \u003cpolyline points=\"17 6 23 6 23 12\">\u003c/polyline>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Revenue recovery\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Maximize involuntary revenue recovery and reduce churn.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/storefront#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\">\u003c/path>\n                                \u003cpolyline points=\"9 22 9 12 15 12 15 22\">\u003c/polyline>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Storefront\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Storefront resources, customization, and technical resources.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/customer-portal#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\">\u003c/path>\n                                \u003ccircle cx=\"12\" cy=\"7\" r=\"4\">\u003c/circle>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Customer portal\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Self-service portal: skip, swap, pause, gift, and more for your customers.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/notifications#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\">\u003c/path>\n                                \u003cpath d=\"M13.73 21a2 2 0 0 1-3.46 0\">\u003c/path>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Notifications\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Emails, SMS, and integrations.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/shopify-settings#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\">\u003c/path>\n                                \u003cline x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\">\u003c/line>\n                                \u003cpath d=\"M16 10a4 4 0 0 1-8 0\">\u003c/path>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Shopify\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Orders, refunds, discounts, shipping, and tagging directly within Shopify.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/recurly-commerce-analytics#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cline x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\">\u003c/line>\n                                \u003cline x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\">\u003c/line>\n                                \u003cline x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\">\u003c/line>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Analytics\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Performance, cohorts, forecast growth, and exports.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/recurly-commerce-integrations#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003crect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\">\u003c/rect>\n                                \u003cline x1=\"1\" y1=\"10\" x2=\"23\" y2=\"10\">\u003c/line>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Integrations\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Recurly Commerce integrations and partner connections.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/update/reference/publicapicontroller_listsubscriptions-1\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon-group\">\n                            \u003cdiv class=\"feature-card-icon\">\n                                \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                    \u003cpath d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\">\u003c/path>\n                                    \u003cpath d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\">\u003c/path>\n                                \u003c/svg>\n                            \u003c/div>\n                            \u003cdiv class=\"feature-badge\">\n                                \u003cspan class=\"feature-badge-text\">Technical docs\u003c/span>\n                            \u003c/div>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">API reference\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Complete endpoint documentation for accessing and managing Commerce.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== More docs ===== -->\n    \u003csection class=\"more-docs-section\">\n        \u003cdiv class=\"more-docs-container\">\n            \u003ch2 class=\"more-docs-title\">Looking for more documentation?\u003c/h2>\n            \u003cdiv class=\"more-docs-desc\">Visit our dedicated documentation for other Recurly Products.\u003c/div>\n            \u003cdiv class=\"more-docs-grid\">\n                \u003cdiv class=\"more-docs-card\">\n                    \u003cimg class=\"more-docs-card-icon\" src=\"https://recurly.com/img2/product-docs/icon-subscriptions-docs.svg\" alt=\"Subscriptions icon\">\n                    \u003cimg class=\"more-docs-card-image\" src=\"https://recurly.com/img2/product-docs/img-r-subscription-docs.webp\" alt=\"Subscriptions\">\n                    \u003cdiv class=\"more-docs-card-desc\">Everything you need to scale your subscription business and keep customers coming back.\u003c/div>\n                    \u003ca href=\"https://docs.recurly.com/recurly-subscriptions/\" class=\"more-docs-link\">Explore docs \u003cimg class=\"more-docs-icon-arrow\" src=\"https://recurly.com/img2/product-docs/arrow-right.svg\" alt=\"→\">\u003c/a>\n                \u003c/div>\n                \u003cdiv class=\"more-docs-card\">\n                    \u003cimg class=\"more-docs-card-icon\" src=\"https://recurly.com/img2/product-docs/icon-engage-docs.svg\" alt=\"Engage icon\">\n                    \u003cimg class=\"more-docs-card-image\" src=\"https://recurly.com/img2/product-docs/img-r-engage-docs.webp\" alt=\"Engage\">\n                    \u003cdiv class=\"more-docs-card-desc\">Power your subscribers' journey with personalized prompts and automation that fuel revenue growth.\u003c/div>\n                    \u003ca href=\"https://docs.recurly.com/recurly-engage/\" class=\"more-docs-link\">Explore docs \u003cimg class=\"more-docs-icon-arrow\" src=\"https://recurly.com/img2/product-docs/arrow-right.svg\" alt=\"→\">\u003c/a>\n                \u003c/div>\n                \u003cdiv class=\"more-docs-card\">\n                    \u003cimg class=\"more-docs-card-icon\" src=\"https://recurly.com/img2/product-docs/icon-revrec-docs.svg\" alt=\"RevRec icon\">\n                    \u003cimg class=\"more-docs-card-image\" src=\"https://recurly.com/img2/product-docs/img-r-revrec-docs.webp\" alt=\"RevRec\">\n                    \u003cdiv class=\"more-docs-card-desc\">Streamline and automate compliance with multiple revenue reporting standards.\u003c/div>\n                    \u003ca href=\"https://docs.recurly.com/recurly-revrec/\" class=\"more-docs-link\">Explore docs \u003cimg class=\"more-docs-icon-arrow\" src=\"https://recurly.com/img2/product-docs/arrow-right.svg\" alt=\"→\">\u003c/a>\n                \u003c/div>\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== Footer ===== -->\n    \u003csection class=\"globallp-footer\">\n        \u003cdiv class=\"globallp-footer-content\">\n            \u003cimg src=\"https://recurly.com/img2/product-docs/img-footer-logo-tagline.webp\" alt=\"Recurly Logo\">\n            \u003cp>\n                \u003ca href=\"https://recurly.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Recurly.com\u003c/a>\n                \u003ca href=\"https://recurly.com/legal/\" target=\"_blank\" rel=\"noopener noreferrer\">Legal\u003c/a>\n                &copy; 2025 Recurly, Inc.\n            \u003c/p>\n        \u003c/div>\n    \u003c/section>\n\n\u003c/body>","pageType":null,"side":null,"mediaType":null,"mediaHTML":null,"mediaImage":null,"mediaCode":null,"group0":null,"group1":null,"group2":null}],"llms_txt":true,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"enabled"},"mdxishMigrationStatus":{"migratedFrom":"mdx"},"metrics":{"monthlyLimit":0,"monthlyPurchaseLimit":0,"thumbsEnabled":true,"meteredBilling":{}},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Recurly Commerce Docs","nav_names":{"docs":"Directory","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"oauth_url":"","onboardingCompleted":{"api":true,"appearance":false,"documentation":true,"domain":false,"jwt":false,"logs":false,"metricsSDK":false,"aiReady":false,"team":false,"gitSync":false},"openapiVisibility":"public","owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":false,"newExperience":true,"isPaying":false,"lastIndexed":"2026-10-16T02:22:06.213Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"plan":"enterprise","planOverride":"","readmeScore":{},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"seo":{"overwrite_title_tag":false},"searchSettings":{"default_to_current_project":false,"show_project_filter":true,"sort_projects_alphabetically":false},"ssl":{"minTLS":"1.2"},"subdomain":"recurly-commerce-docs","subpath":"recurly-commerce","topnav":{"left":[],"right":[{"type":"url","text":"Docs hub","url":"https://docs.recurly.com/#/"},{"type":"url","text":"Support","url":"https://support.recurly.com/"},{"type":"url","text":"Contact us","url":"https://recurly.com/contact-us/"},{"type":"url","text":"Book demo","url":"https://recurly.com/request-a-demo/"}],"bottom":[],"edited":false},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2025-07-16T23:52:40.256Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"","variableDefaults":[{"file":"commerce-api-documentation.json","name":"bearer","source":"security","type":"http"}],"childrenProjects":[],"derivedPlan":"enterprise","fullBaseUrl":"https://recurly-commerce-docs.readme.io/","isExternalSnippetActive":false,"isPublished":true,"planTrial":"enterprise","shouldGateDash":false,"webhookEnabled":false},"childrenProjects":[],"siblings":[{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":true,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":false,"superHubBranchReviewActions":false},"stable":{"version":"1.0"},"_id":"6865c5ccaabb920030954384","ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true}},"description":"","git":{"renamedSlugs":[]},"aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","llms_txt":true,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"enabled"},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Recurly Engage Docs","nav_names":{"docs":"Directory","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":false,"newExperience":true,"isPaying":false,"lastIndexed":"2026-10-16T02:22:06.172Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"subdomain":"recurly-engage-docs","subpath":"recurly-engage","childrenProjects":[],"derivedPlan":"enterprise","fullBaseUrl":"https://recurly-engage-docs.readme.io/","isExternalSnippetActive":false,"isPublished":true,"shouldGateDash":false,"webhookEnabled":false,"readmeScore":0,"reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"ssl":{},"translate":{}},{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":true,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":false,"superHubBranchReviewActions":false},"stable":{"version":"1.0"},"_id":"6865c47f44422c001062c4de","ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true}},"description":"","git":{"renamedSlugs":[]},"aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","llms_txt":true,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"disabled"},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Recurly RevRec Docs","nav_names":{"docs":"Directory","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":false,"newExperience":true,"isPaying":false,"lastIndexed":"2026-10-16T02:22:06.134Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"subdomain":"recurly-revrec-docs","subpath":"recurly-revrec","childrenProjects":[],"derivedPlan":"enterprise","fullBaseUrl":"https://recurly-revrec-docs.readme.io/","isExternalSnippetActive":false,"isPublished":true,"shouldGateDash":false,"webhookEnabled":false,"readmeScore":0,"reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"ssl":{},"translate":{}},{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":false,"superHubBranchReviewActions":false},"stable":{"version":"1.0"},"_id":"6865c648c6b75f0030446843","ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true}},"description":"","git":{"renamedSlugs":[]},"aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","llms_txt":true,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"enabled"},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Recurly Commerce Docs","nav_names":{"docs":"Directory","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":false,"newExperience":true,"isPaying":false,"lastIndexed":"2026-10-16T02:22:06.213Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"subdomain":"recurly-commerce-docs","subpath":"recurly-commerce","childrenProjects":[],"derivedPlan":"enterprise","fullBaseUrl":"https://recurly-commerce-docs.readme.io/","isExternalSnippetActive":false,"isPublished":true,"shouldGateDash":false,"webhookEnabled":false,"readmeScore":0,"reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"ssl":{},"translate":{}},{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowApiExplorerJsonEditor":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":true,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":true,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":true,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":false,"superHubBranchReviewActions":false},"stable":{"version":"1.0"},"_id":"56450a342229d7170010928a","ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true}},"description":"These pages serve as a guide to set up your Recurly account and as reference documentation for working with everything Recurly has to offer.","git":{"migration":{"createRepository":{"end":"2025-02-11T13:09:45.368Z","start":"2025-02-11T13:09:44.917Z","status":"successful"},"transformation":{"end":"2025-02-11T13:10:01.580Z","start":"2025-02-11T13:09:45.842Z","status":"successful"},"migratingPages":{"end":"2025-02-11T13:10:02.665Z","start":"2025-02-11T13:10:01.626Z","status":"successful"},"enableSuperhub":{"end":"2025-02-11T13:25:45.870Z","start":"2025-02-11T13:25:45.870Z","status":"successful"}},"renamedSlugs":[]},"aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","llms_txt":true,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"enabled"},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":true,"tutorials":false},"name":"Recurly Subscriptions Docs","nav_names":{"docs":"Product Docs","reference":"","changelog":"Changelog","discuss":"","recipes":"","tutorials":""},"owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":false,"newExperience":true,"isPaying":false,"lastIndexed":"2026-10-16T02:21:54.657Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"subdomain":"reference-docs","subpath":"recurly-subscriptions","childrenProjects":[],"derivedPlan":"enterprise","fullBaseUrl":"https://reference-docs.readme.io/","isExternalSnippetActive":false,"isPublished":true,"shouldGateDash":false,"webhookEnabled":false,"readmeScore":0,"reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"ssl":{},"translate":{}},{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":false,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false},"stable":{"version":"1.0"},"_id":"6a909f963c00925d1070727c","ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":null,"search":true,"ai_input":true},"link_headers":null,"markdown_negotiation":null,"agent_hint_banner":null,"api_catalog":null,"agent_skills_index":null,"mcp_server_card":null,"webmcp":null,"oauth":{"type":null,"issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":null,"show_sibling_pages":null,"show_whats_next":null}},"description":"","git":{"renamedSlugs":[]},"aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","llms_txt":null,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"enabled"},"modules":{"landing":true,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Recurly Recover","nav_names":{"docs":"Product Docs","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"owlbot":{"enabled":true,"newExperience":true,"placements":["header","in_search"],"isPaying":false,"lastIndexed":"2026-10-16T02:18:18.574Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"subdomain":"recurly-recover","subpath":"","childrenProjects":[],"derivedPlan":"enterprise","fullBaseUrl":"https://recurly-recover.readme.io/","isExternalSnippetActive":false,"isPublished":true,"shouldGateDash":false,"webhookEnabled":false,"readmeScore":0,"reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"ssl":{},"translate":{}}],"derivedPlan":"enterprise","fullBaseUrl":"https://docs.recurly.com/recurly-commerce","isExternalSnippetActive":false,"isPublished":true,"planTrial":"enterprise","shouldGateDash":false,"webhookEnabled":false,"parent":{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":true,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":true,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":false,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":true,"superHubBranchReviewActions":false},"versions":[{"__v":0,"_id":"6865c54a5d7fcb002ec16724","createdAt":"2025-07-02T23:48:26.161Z","updatedAt":"2025-07-02T23:48:26.352Z","project":"6865c54a5d7fcb002ec16725","version":"1.0.0","version_clean":"1.0.0","codename":"","is_stable":false,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2025-07-02T23:48:26.084Z","pdfStatus":"","apiRegistries":[],"source":"readme"}],"stable":{"__v":0,"_id":"6865c54a5d7fcb002ec16724","createdAt":"2025-07-02T23:48:26.161Z","updatedAt":"2025-07-02T23:48:26.352Z","project":"6865c54a5d7fcb002ec16725","version":"1.0.0","version_clean":"1.0.0","codename":"","is_stable":false,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2025-07-02T23:48:26.084Z","pdfStatus":"","apiRegistries":[],"source":"readme"},"_id":"6865c54a5d7fcb002ec16725","accessRules":{"branch_approve":{"admin":true,"editor":false},"branch_merge":{"admin":true,"editor":false},"version_edit":{"admin":true,"editor":false}},"ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true}},"appearance":{"allowApiExplorerJsonEditor":false,"borderRadius":"default","changelog":{"layoutExpanded":false,"showAuthor":true,"showExactDate":false},"referenceFlatSections":"disabled","referenceLayout":"row","referenceParamFont":"default","referenceParamInputs":"all","referenceSimpleMode":true,"methodBadgeStyle":"classic","oneOfLayout":"dropdown","showCredentials":true,"showExactDate":false,"showMethodInSidebar":true,"link_logo_to_url":false,"theme":"line","theme_preset":"default","colorScheme":"light","overlay":"triangles","landing":true,"sticky":false,"hide_logo":false,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":false,"showMetricsInReference":true,"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":"","markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"links"},"colors":{"highlight":"","main":"#0D0D0B","main_dark":"","main_alt":"","header_text":"","body_highlight":"","body_highlight_dark":"","custom_login_link_color":"","page_background":"","page_background_dark":"","background_tint":"","background_tint_dark":"","border":"","border_dark":"","breadcrumb":"","breadcrumb_dark":"","header":"","header_dark":"","askai_button_bg":"","askai_button_bg_dark":"","sidebar_border":"","sidebar_border_dark":""},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","code":"","spacing":null,"typekit":false,"tk_key":"snh4sns","tk_headline":"","tk_body":""},"header":{"img":[],"img_size":"auto","img_pos":"tl","linkStyle":"buttons","style":"line","subnav":{"alignment":"start"}},"body":{"style":"none"},"promos":[],"layout":{"full_width":false,"style":"classic","sticky_header":null},"logo":["https://files.readme.io/e9ecada60ccf2a5821918f18f923288e0f9b17437b7c65fefd035fad96b5bb34-logo-docs-recurly.svg","e9ecada60ccf2a5821918f18f923288e0f9b17437b7c65fefd035fad96b5bb34-logo-docs-recurly.svg",482,72,"#ffd706","6a0caad349758608da5dbc29"],"loginLogo":[],"logo_white":[],"logo_white_use":false,"logo_large":false,"logo_size":"default","favicon":["https://files.readme.io/f63aafbe6ee74110dedf62147827be3e4b1736cf2d05d45ae336c8185128fcf6-small-Recurly-Profile-Image.png","f63aafbe6ee74110dedf62147827be3e4b1736cf2d05d45ae336c8185128fcf6-small-Recurly-Profile-Image.png",32,32,"#fbd404","https://files.readme.io/a1190fa451abad3191046f9888346b3f336432de99f089d8f953589e587f5e93-Recurly-Profile-Image.png","68755d3c84e69748610209ba"],"tocVariant":"line","stylesheet":"","stylesheet_hub2":"@import url('https://fonts.googleapis.com/css2?family=Figtree:ital,wght@0,300..900;1,300..900&display=swap');\n\n@font-face {\n    font-family: \"Polar\";\n    font-weight: 400;\n    font-style: normal;\n    src:\n        url(\"https://recurly.com/img2/fonts/FTPolar-Regular.woff2\") format(\"woff2\"),\n        url(\"https://recurly.com/img2/fonts/FTPolar-Regular.woff\") format(\"woff\");\n    }\n\n    @font-face {\n    font-family: \"Polar\";\n    font-weight: 700;\n    font-style: normal;\n    src:\n    url(\"/img2/fonts/FTPolar-Bold.woff2\") format(\"woff2\"),\n    url(\"/img2/fonts/FTPolar-Bold.woff\") format(\"woff\");\n    }\n\n@font-face {\n    font-family: \"Gruffy\";\n    font-weight: 400;\n    font-style: normal;\n    src:\n    url(\"https://recurly.com/img2/fonts/F37Gruffy-Regular.woff2\") format(\"woff2\"),\n    url(\"https://recurly.com/img2/fonts/F37Gruffy-Regular.woff\") format(\"woff\");\n    }\n\n@font-face {\n    font-family: \"Gruffy\";\n    font-weight: 700;\n    font-style: normal;\n    src:\n    url(\"/img2/fonts/F37Gruffy-Bold.woff2\") format(\"woff2\"),\n    url(\"/img2/fonts/F37Gruffy-Bold.woff\") format(\"woff\");\n}\n\n.rm-TryIt {display:none !important}\n\n.Reference-section {\n    margin-bottom: 1em;\n    display: none;\n}\nbody {\n    margin: 0;\n    font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n}\n\n.ThemeContext_line .rm-Header {\n\t    --Header-background: #0D0D0B;\n}\n\n.rm-Header-top-link.Button {\n\tcolor: #FCFBF7;\n}\n\n#enterprise .SuperHub-hub-wrapper3t_-5gSx4Sax {\n\tborder-radius: 0;\n}\n\n\n#enterprise .rm-Header-bottom-link {\n    display: none;\n} \n\n#enterprise .rm-SearchToggle {\n  width: 320px;\t\n\theight: 48px;\n}\n\n#enterprise .Header-search_featherYsmQBn55F3d9 {\n    position: absolute;\n    top: 420px;\n    left: 50%;\n    transform: translateX(-50%);\n}\n\n.new-btn-group {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 20px;\n    align-items: center;\n}\n\n.new-btn-icon {\n      margin-right: 4px !important;\n  }\n\n.new-btn-text {\n    position: relative;\n    font-size: 16px;\n    line-height: 20px;\n    font-weight: 600;\n}\n\n.new-btn {\n    position: relative;\n    border-radius: 8px;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    justify-content: center;\n    gap: 4px;\n    color: #0d0d0b;\n    min-width: 112px;\n    min-height: 42px;\n    padding: 10px 16px;\n    box-sizing: border-box;\n    cursor: pointer;\n    outline: none !important;\n    transition: background-color 500ms ease-in-out;\n  \ttext-decoration: none;\n\t\twidth: 100%;\n\t\tmargin: 24px;\n}\n\n.new-btn-primary {\n    background: linear-gradient(102.03deg, #fff688, #ffd706);\n}\n\n.new-btn-primary:hover {\n    background: linear-gradient(90.39deg, #ffec5f, #ffc10b);\n}\n\n.new-btn-primary:active,\n.new-btn-primary:focus {\n    box-shadow: 0px 0px 0px 2px #fff, 0px 0px 0px 4px #51a1c9;\n}\n\n.globallp-header-section {\n    background: #0D0D0B;\n    padding: 48px 0 150px;\n}\n\n.globallp-header-content {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    max-width: 700px;\n    margin: 0 auto;\n    padding: 0 32px;\n    display: flex;\n    justify-content: center;\n    flex-direction: column;\n    align-items: center;\n}\n\n.globallp-subheading {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    color: #FFD706;\n    font-size: 16px;\n    margin-bottom: 12px;\n    text-align: center;\n}\n\n.globallp-heading {\n    color: #fff;\n    font-size: 48px;\n    font-family: \"Gruffy\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n    font-weight: 700;\n    margin-bottom: 24px;\n    text-align: center;\n}\n\n.globallp-supporting-text {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    color: #F9F7EB;\n    font-size: 20px;\n    margin-bottom: 32px;\n    text-align: center;\n}\n\n.search-bar {\n    max-width: 320px;\n    margin: 0 auto 64px auto;\n    padding: 12px 14px;\n    background: #fff;\n    box-shadow: 0 1px 2px rgba(13, 13, 11, 0.05);\n    border-radius: 8px;\n    border: 1px solid #D1CFC4;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n.search-icon {\n    width: 20px;\n    height: 20px;\n    border: 1.67px solid #807D75;\n    border-radius: 50%;\n}\n\n.search-text {\n    color: #807D75;\n    font-size: 16px;\n}\n\n.globallp-card-container {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    max-width: 1200px;\n    margin: 96px auto;\n}\n\n.globallp-cards-section {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    grid-template-rows: repeat(2, 1fr);\n    gap: 96px 32px;\n    justify-items: center;\n    align-items: center;\n    background: #fff;\n    margin: 0 12px;\n}\n\n.globallp-cards-section > a {\n    color: inherit;\n    text-decoration: none;\n}\n\n.globallp-card {\n    background: #fff;\n    border-radius: 16px;\n    box-shadow: 0 2px 2px -1px rgba(13, 13, 11, 0.04);\n    outline: 1px solid rgba(13, 13, 11, 0.08);\n    max-width: 600px;\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n    align-items: center;\n    gap: 24px;\n    height: auto;\n    overflow: hidden;\n    text-decoration: none;\n}\n\n.globallp-card:hover {\n    box-shadow: 0px 12px 16px -4px rgba(13, 13, 11, 0.08), 0px 4px 6px -2px rgba(13, 13, 11, 0.03), 0px 2px 2px -1px rgba(13, 13, 11, 0.04) !important;\n    \n}\n\n.globallp-card:hover .new-btn-primary {\n    background: linear-gradient(90.39deg, #ffec5f, #ffc10b);\n}\n\n.globallp-card-header {\n    padding: 32px;\n    text-align: center;\n}\n\n.globallp-card-icon {\n    width: 56px;\n    height: 56px;\n    background: #FFD706;\n    border-radius: 50%;\n    margin: 0 auto 24px auto;\n    border: 2px solid #fff;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.globallp-card-image {\n    width: auto;\n    height: 32px;\n    margin-bottom: 8px;\n}\n\n.globallp-card-desc-title {\n    color: #0D0D0B;\n    font-size: 18px;\n    line-height: 28px;\n    margin-bottom: 4px;\n    font-weight: 600;\n}\n\n.globallp-card-desc-text {\n    color: #46443F;\n    font-size: 16px;\n    line-height: 24px;\n}\n\n.globallp-card-footer {\n    width: 100%;\n    background: #F2F1EA;\n    border-top: 1px solid #E2DFD0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.globallp-card-button {\n    background: linear-gradient(135deg, #FFF688 0%, #FFD706 100%);\n    border-radius: 8px;\n    padding: 12px 18px;\n    margin: 16px;\n    color: #0D0D0B;\n    font-size: 16px;\n    font-family: inherit;\n    font-weight: 400;\n    border: none;\n    cursor: pointer;\n}\n\n.newsletter-section {\n    background: #F2F1EA;\n    padding: 64px 32px;\n    text-align: center;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 32px;\n}\n\n.newsletter-header {\n    margin-bottom: 32px;\n}\n\n.newsletter-header h2 {\n    color: #0D0D0B;\n    font-size: 36px;\n    line-height: 42px;\n    margin-bottom: 16px;\n}\n\n.newsletter-header p {\n    color: #0D0D0B;\n    font-size: 20px;\n}\n\n.newsletter-footer {\n    width: 100%;\n}\n\n.globallp-footer {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    background: #0D0D0B;\n    color: #fff;\n    padding: 48px 0;\n    text-align: center;\n}\n\n.globallp-footer-content {\n    max-width: 1200px;\n    margin: 0 auto;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n}\n\n.globallp-footer-content img {\n    width: auto;\n    height: 16px;\n    margin: 0;\n}\n\n.globallp-footer-content p {\n    margin: 0;\n    font-size: 14px;\n    color: #FCFBF7;\n}\n\n.globallp-footer-content a {\n    color: #FCFBF7;\n    text-decoration: none;\n    margin-right: 20px;\n}\n\n.globallp-footer-content a:hover {\n    text-decoration: underline;\n}\n\n@media (max-width: 1024px) {\n    .globallp-header-content {\n        max-width: 100%;\n    }\n    .globallp-cards-section {\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        gap: 24px;\n    }\n\n    .globallp-card {\n        width: 90%;\n        margin-bottom: 32px;\n    }\n}\n\n/* ============================================================\n   RECURLY DOCS — README NATIVE CSS\n   ============================================================\n   Single consolidated stylesheet for ReadMe's global CSS settings.\n   Targets ReadMe's own native classes across all page types and\n   UI surfaces.\n\n   DEPENDENCY\n   ─────────────────────────────────────────────────────────────\n   Requires recurly-readme-theme-v8.1.css to be present in the same\n   global theme. V8.1 provides the full --recurly-* color token set.\n   This file adds the three tokens V8.0 didn't yet prefix, then\n   uses --recurly-* throughout for consistency.\n\n   PARTS\n   ─────────────────────────────────────────────────────────────\n   1 — General Articles    Shared chrome: prose links, AI dropdown,\n                           copy button, pagination, date line,\n                           page thumbs, dividers. Fires on both\n                           Guide and API Reference.\n\n   2 — Guide pages         h1 yellow border (guide-only), excerpt\n                           subtitle, and right-hand TOC sidebar.\n\n   3 — API Reference pages HTTP method badges, endpoint URL,\n                           section headers, parameter rows,\n                           response accordion, status chits,\n                           and the full Playground panel.\n\n   4 — Sidebar navigation  Shared sidebar chrome: container,\n                           section headings, links, subpages,\n                           expand chevron, external icon,\n                           section separators.\n\n   5 — API Reference sidebar  ID alias, QuickNav button, inline\n                           method pills, page icon wrappers,\n                           user avatar.\n\n   6 — QuickNav modal      The \"Jump To\" search overlay.\n\n   7 — Changelog           Full brand styling for the changelog.\n\n   SELECTOR STABILITY NOTE\n   ─────────────────────────────────────────────────────────────\n   ReadMe exposes two tiers of class names:\n\n     Stable  — prefixed with rm- (rm-Playground, rm-TryIt,\n               rm-LanguageButton, rm-APIMethod, etc.).\n               Primary selectors throughout.\n\n     Hashed  — long alphanumeric suffixes generated by CSS-in-JS.\n               May change between ReadMe deployments. Used only\n               alongside a stable rm-* counterpart — never solo.\n\n   All rules use !important to override ReadMe's host CSS.\n   ============================================================ */\n\n\n/* ============================================================\n   Token extensions\n   NOTE: superseded by the consolidated brand v2 palette block\n   further down this file. Values kept in sync to avoid a stale\n   landmine if this file is ever reordered. darknavy/deepchar are\n   retired bluish neutrals — brand v2 has no bluish gray, so they\n   collapse to Off Black.\n   ============================================================ */\n\n:root {\n  --recurly-brightgray: #F2F1EA;  /* OB Tint 2 */\n  --recurly-darknavy:   #0D0D0B;  /* retired → Off Black */\n  --recurly-deepchar:   #0D0D0B;  /* retired → Off Black */\n}\n\n\n/* ============================================================\n   PART 0 — Global page background\n   ============================================================\n   Sets the overall ReadMe canvas and content areas to\n   Recurly offwhite (#FCFBF7) for both Guide and API Reference\n   pages. Targets the SuperHub wrapper and inner content panes.\n   ============================================================ */\n\n.rm-SuperHub,\n.SuperHub,\n[class*=\"SuperHub-wrapper\"],\n[class*=\"SuperHub-content\"],\n[class*=\"SuperHub-body\"],\n.rm-ReferenceMain,\n[class*=\"ReferenceMain\"],\n.rm-Article,\n[class*=\"Article-content\"],\n.content-body,\n#hub-content,\n#content {\n  background: #fff !important;\n}\n\n/* Sidebar background is set again here to complement Part 4's\n   rule — Part 4 handles font/link, this handles the bg color. */\n#hub-sidebar,\n#reference-sidebar,\n.rm-Sidebar {\n  background: #fff !important;\n}\n\n\n/* ============================================================\n   PART 1 — General Articles\n   ============================================================\n   Fires on BOTH Guide and API Reference pages.\n   h1 yellow border is intentionally NOT here — it is scoped\n   to Guide pages only in Part 2 to avoid clashing with the\n   compact badge + URL layout on API Reference pages.\n   ============================================================ */\n\n/* ——— 1.1 — Prose links inside the markdown body ——— */\n\n.rm-Markdown.markdown-body p > a:not([class*=\"Button\"]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download),\n.rm-Markdown.markdown-body li:not(.menu-item) > a:not([class*=\"Button\"]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download) {\n  color: var(--recurly-tangerine) !important;\n  text-decoration: none !important;\n  border-bottom: 1px solid transparent !important;\n  transition: border-color 0.15s !important;\n}\n\n.rm-Markdown.markdown-body p > a:not([class*=\"Button\"]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download):hover,\n.rm-Markdown.markdown-body li:not(.menu-item) > a:not([class*=\"Button\"]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download):hover {\n  border-bottom-color: var(--recurly-tangerine) !important;\n}\n\n/* ——— 1.2 — AI Dropdown (\"Copy Page\" / \"Ask AI\" button cluster) ——— */\n\n.rm-AIDropdown .Button,\n.AIDropdownzmvdRdsNayZl .Button {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-darkgray) !important;\n  background: transparent !important;\n  border-color: var(--recurly-lightgray) !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n.rm-AIDropdown .Button:hover,\n.AIDropdownzmvdRdsNayZl .Button:hover {\n  background: var(--recurly-offblack) !important;\n  border-color: var(--recurly-offblack) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* ——— 1.3 — Copy to Clipboard button ——— */\n\n.CopyToClipboard {\n  background: transparent !important;\n  border-color: var(--recurly-lightgray) !important;\n  color: var(--recurly-gray) !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n.CopyToClipboard:hover,\n.CopyToClipboard:focus {\n  background: var(--recurly-tangerine) !important;\n  border-color: var(--recurly-tangerine) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* Copy button inside Text-type snippets */\npre:has(> code.rdmd-code):not(.CodeTabs *) {\n  position: relative !important;\n}\n\npre:has(> code.rdmd-code):not(.CodeTabs *) > .rdmd-code-copy {\n  position: absolute !important;\n  top: 16px !important;\n  right: 10px !important;\n  background: transparent !important;\n  border: 1px solid var(--recurly-gray) !important;\n  color: var(--recurly-lightgray) !important;\n  border-radius: 6px !important;\n  padding: 4px 10px !important;\n  cursor: pointer !important;\n  z-index: 2 !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\npre:has(> code.rdmd-code):not(.CodeTabs *) > .rdmd-code-copy:hover {\n  background: var(--recurly-tangerine) !important;\n  border-color: var(--recurly-tangerine) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* ——— 1.4 — Pagination controls ——— */\n\n.rm-Pagination {\n  font-family: var(--recurly-font) !important;\n}\n\n.rm-Pagination .PaginationControls-link {\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  color: var(--recurly-offblack) !important;\n  text-decoration: none !important;\n  transition: color 0.15s !important;\n}\n\n.rm-Pagination .PaginationControls-link:hover {\n  color: var(--recurly-tangerine) !important;\n}\n\n/* ——— 1.5 — Next steps divider ——— */\n\n.NextStepsDivider {\n  border: 0 !important;\n  border-top: 1px solid var(--recurly-lightgray) !important;\n  margin: 28px 0 !important;\n}\n\n/* ——— 1.6 — Updated-at date line ——— */\n\n.UpdatedAt .DateLine,\n.DateLine {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  color: var(--recurly-gray) !important;\n}\n\n/* ——— 1.7 — \"Did this page help you?\" thumbs ——— */\n\n.rm-PageThumbs .PageThumbs-helpful {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-darkgray) !important;\n}\n\n.rm-PageThumbs .PageThumbs-button {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-gray) !important;\n  background: transparent !important;\n  border: 0 !important;\n  transition: color 0.15s !important;\n}\n\n.rm-PageThumbs .PageThumbs-button:hover {\n  color: var(--recurly-tangerine) !important;\n}\n\n\n/* ============================================================\n   PART 2 — Guide article pages\n   ============================================================ */\n\n/* ——— 2.1 — Page h1 yellow border (guide-only) ——— */\n\n.rm-Guides-SuperHub #content-head h1,\n.rm-Guides-SuperHub .Title.Title1 {\n  font-family: var(--recurly-font) !important;\n  color: var(--recurly-offblack) !important;\n  font-weight: 800 !important;\n  border-bottom: 2px solid var(--recurly-yellow) !important;\n  padding-bottom: 10px !important;\n  margin-bottom: 20px !important;\n}\n\n/* ——— 2.2 — Page excerpt ——— */\n\n.rm-Guides-SuperHub .excerpt,\n.rm-Article .excerpt {\n  font-family: var(--recurly-font) !important;\n  font-size: 15px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.65 !important;\n  background: transparent !important;\n  border: 0 !important;\n  padding: 0 !important;\n  margin: 0 0 24px !important;\n}\n\n.rm-Guides-SuperHub .excerpt a,\n.rm-Article .excerpt a {\n  color: var(--recurly-tangerine) !important;\n}\n\n/* ——— 2.3 — Right-hand TOC sidebar ——— */\n\n.content-toc {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n}\n\n.content-toc a {\n  color: var(--recurly-gray) !important;\n  text-decoration: none !important;\n  transition: color 0.15s !important;\n}\n\n.content-toc a:hover {\n  color: var(--recurly-offblack) !important;\n}\n\n.content-toc a.active,\n.content-toc .toc-active > a {\n  color: var(--recurly-offblack) !important;\n  font-weight: 700 !important;\n}\n\n/* ——— 2.4 — Content headings h1–h5 ——— */\n\n.rm-Markdown.markdown-body h1.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.75rem !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offblack) !important;\n  margin: 40px 0 16px !important;\n  padding-bottom: 10px !important;\n  border-bottom: 2px solid var(--recurly-yellow) !important;\n}\n\n.rm-Markdown.markdown-body h2.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.5rem !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offblack) !important;\n  margin: 36px 0 14px !important;\n  padding-bottom: 0 !important;\n  border-bottom: 0 !important;\n}\n\n.rm-Markdown.markdown-body h3.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.1rem !important;\n  font-weight: 700 !important;\n  color: var(--recurly-darkgray) !important;\n  margin: 28px 0 10px !important;\n  border-bottom: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.rm-Markdown.markdown-body h4.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 0.95rem !important;\n  font-weight: 700 !important;\n  color: var(--recurly-darkgray) !important;\n  margin: 20px 0 8px !important;\n  border-bottom: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.rm-Markdown.markdown-body h5.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 0.9rem !important;\n  font-weight: 600 !important;\n  color: var(--recurly-darkgray) !important;\n  margin: 16px 0 6px !important;\n  border-bottom: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n/* ——— 2.5 — First-child margin resets ——— */\n\n.rm-Markdown.markdown-body h3.heading:first-child,\n.rm-Markdown.markdown-body h4.heading:first-child,\n.rm-Markdown.markdown-body h5.heading:first-child {\n  margin-block-start: 0 !important;\n}\n\n/* ——— 2.6 — Heading anchor icons ——— */\n\n.rm-Markdown.markdown-body h1.heading,\n.rm-Markdown.markdown-body h2.heading,\n.rm-Markdown.markdown-body h3.heading,\n.rm-Markdown.markdown-body h4.heading,\n.rm-Markdown.markdown-body h5.heading {\n  position: relative !important;\n  overflow: visible !important;\n  cursor: pointer !important;\n}\n\n.rm-Markdown.markdown-body h1.heading .heading-anchor-icon,\n.rm-Markdown.markdown-body h2.heading .heading-anchor-icon,\n.rm-Markdown.markdown-body h3.heading .heading-anchor-icon,\n.rm-Markdown.markdown-body h4.heading .heading-anchor-icon,\n.rm-Markdown.markdown-body h5.heading .heading-anchor-icon {\n  position: absolute !important;\n  left: -22px !important;\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n  width: 18px !important;\n  height: 18px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  opacity: 0 !important;\n  color: var(--recurly-lightgray) !important;\n  font-size: 0.75em !important;\n  margin: 0 !important;\n  text-decoration: none !important;\n  outline: none !important;\n  border: 0 !important;\n  box-shadow: none !important;\n  transition: opacity 0.15s !important;\n  /* Tight bounding box — never overlaps the sidebar */\n  pointer-events: auto !important;\n  z-index: 1 !important;\n}\n\n.rm-Markdown.markdown-body h1.heading .heading-anchor-icon:focus,\n.rm-Markdown.markdown-body h2.heading .heading-anchor-icon:focus,\n.rm-Markdown.markdown-body h3.heading .heading-anchor-icon:focus,\n.rm-Markdown.markdown-body h4.heading .heading-anchor-icon:focus,\n.rm-Markdown.markdown-body h5.heading .heading-anchor-icon:focus {\n  outline: none !important;\n  border: 0 !important;\n  box-shadow: none !important;\n}\n\n.rm-Markdown.markdown-body h1.heading:hover .heading-anchor-icon,\n.rm-Markdown.markdown-body h2.heading:hover .heading-anchor-icon,\n.rm-Markdown.markdown-body h3.heading:hover .heading-anchor-icon,\n.rm-Markdown.markdown-body h4.heading:hover .heading-anchor-icon,\n.rm-Markdown.markdown-body h5.heading:hover .heading-anchor-icon {\n  opacity: 1 !important;\n}\n\n\n/* ============================================================\n   PART 3 — API Reference article pages\n   ============================================================ */\n\n/* ——— 3.1 — Endpoint URL ——— */\n\n[data-testid=\"serverurl\"] {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 13px !important;\n  color: var(--recurly-tangerine) !important;\n}\n\n/* ——— 3.2 — HTTP method badges ——— */\n\n.rm-APIMethod,\n.APIMethod {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.6px !important;\n  text-transform: uppercase !important;\n  padding: 4px 12px !important;\n  border-radius: 14px !important;\n  border: 0 !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  line-height: 1 !important;\n}\n\n.APIMethod_get    { color: var(--recurly-green) !important; }\n.APIMethod_post   { color: var(--recurly-tangerine) !important; }\n.APIMethod_put    { color: var(--recurly-yellow) !important; }\n.APIMethod_patch  { color: var(--recurly-teal) !important; }\n.APIMethod_delete { color: var(--recurly-vermillion) !important; }\n.APIMethod_del    { color: var(--recurly-vermillion) !important; }\n.APIMethod_head   { color: var(--recurly-lightgray) !important; }\n\n/* ——— 3.3 — API section headers (light background context) ——— */\n\n.rm-APISectionHeader {\n  font-family: var(--recurly-font) !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  padding-bottom: 8px !important;\n  margin-bottom: 16px !important;\n}\n\n.rm-APISectionHeader [class*=\"APISectionHeader-heading\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-darkgray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n}\n\n/* ——— 3.4 — Parameter rows ——— */\n\n[class*=\"Param-name\"] {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 13px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-offblack) !important;\n}\n\n[class*=\"Param-type\"] {\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-gray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.3px !important;\n}\n\n[class*=\"Param-is-enum\"] {\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-tangerine) !important;\n  background: rgba(0, 140, 255, 0.10) !important;\n  padding: 1px 6px !important;\n  border-radius: 10px !important;\n}\n\n[class*=\"Param-default-label\"],\n[class*=\"Param-minmax-label\"] {\n  font-size: 11px !important;\n  color: var(--recurly-gray) !important;\n}\n\n[class*=\"Param-description\"] .rm-Markdown,\n[class*=\"Param-description\"] .markdown-body {\n  font-size: 13px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.55 !important;\n}\n\n[class*=\"Param-enum-section-item\"] {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 11px !important;\n  font-weight: 600 !important;\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  border-radius: 20px !important;\n  padding: 4px 12px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"Param-enum-section-item\"]:hover {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Inner code token — transparent so button shell color wins */\n[class*=\"Param-enum-section-item\"] code,\n[class*=\"Param-enum-section-item-value\"] {\n  background: transparent !important;\n  color: inherit !important;\n  font-family: inherit !important;\n  font-size: inherit !important;\n  font-weight: inherit !important;\n  padding: 0 !important;\n  border-radius: 0 !important;\n  box-shadow: none !important;\n}\n\n.rm-ParamInput,\n.rm-ParamSelect {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  background: var(--recurly-offwhite) !important;\n  border-color: var(--recurly-lightgray) !important;\n  color: var(--recurly-darkgray) !important;\n}\n\n.rm-ParamInput:focus,\n.rm-ParamSelect:focus {\n  border-color: var(--recurly-offblack) !important;\n  outline: none !important;\n}\n\n/* ——— 3.5 — HTTP status chits ——— */\n\n.HTTPStatus {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  padding: 2px 8px !important;\n  border-radius: 10px !important;\n}\n\n.HTTPStatus_2 { background: rgba(93, 195, 46, 0.14) !important; color: var(--recurly-green) !important; }\n.HTTPStatus_4 { background: rgba(255, 81, 38, 0.12) !important; color: var(--recurly-vermillion) !important; }\n.HTTPStatus_5 { background: rgba(255, 81, 38, 0.20) !important; color: var(--recurly-vermillion) !important; }\n.HTTPStatus_1 { background: var(--recurly-brightgray) !important; color: var(--recurly-gray) !important; }\n\n/* ——— 3.6 — Response schema accordion ——— */\n\n.rm-APIResponseSchemaPicker {\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 10px !important;\n  overflow: hidden !important;\n  margin: 8px 0 24px !important;\n  font-family: var(--recurly-font) !important;\n  background: var(--recurly-offblack) !important;\n  /* Override ReadMe's --Accordion-icon-color custom property used by SVG chevron */\n  --Accordion-icon-color: var(--recurly-gray) !important;\n}\n\n/* Kill background on intermediate wrappers — AccordionToggle handled separately below */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"],\n.rm-APIResponseSchemaPicker [class*=\"APIResponseSchemaPicker-option\"] {\n  background: transparent !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n/* AccordionToggle h1 — no own background; inherits offblack from parent section */\n.rm-APIResponseSchemaPicker [class*=\"AccordionToggle\"] {\n  background: transparent !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n/* On hover (closed rows only): entire h1 turns yellow.\n   --Accordion-icon-color controls the chevron fill/stroke via ReadMe's Icon system.\n   --icon-color is the resolved custom property the SVG inline style reads directly. */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"]:not([class*=\"AccordionPanel_active\"]) [class*=\"AccordionToggle\"]:has(button:hover) {\n  background: var(--recurly-yellow) !important;\n  --Accordion-icon-color: var(--recurly-offblack) !important;\n  --icon-color: var(--recurly-offblack) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* Row divider — subtle on dark bg */\n.rm-APIResponseSchemaPicker [class*=\"APIResponseSchemaPicker-option\"] {\n  border-bottom: 1px solid var(--recurly-darkgray) !important;\n}\n.rm-APIResponseSchemaPicker [class*=\"APIResponseSchemaPicker-option\"]:last-child {\n  border-bottom: 0 !important;\n}\n\n/* Toggle button — offblack default, pure white text */\n.rm-APIResponseSchemaPicker [class*=\"AccordionToggle\"] button {\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  font-weight: 600 !important;\n  padding: 16px 20px !important;\n  background: transparent !important;\n  color: #fff !important;\n  width: 100% !important;\n  text-align: left !important;\n  border: 0 !important;\n  display: flex !important;\n  align-items: center !important;\n  transition: color 0.15s !important;\n}\n\n/* Hover — text goes offblack; background handled by parent h1 :has() rule above */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"]:not([class*=\"AccordionPanel_active\"]) [class*=\"AccordionToggle\"] button:hover {\n  background: transparent !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* All text descendants go offblack on hover (closed rows only) */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"]:not([class*=\"AccordionPanel_active\"]) [class*=\"AccordionToggle\"] button:hover *,\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"]:not([class*=\"AccordionPanel_active\"]) [class*=\"AccordionToggle\"] button:hover p {\n  color: var(--recurly-offblack) !important;\n}\n\n/* Active/open row — yellow left accent, offblack bg */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel_active\"] [class*=\"AccordionToggle\"] button,\n.rm-APIResponseSchemaPicker [class*=\"AccordionToggle_active\"] button {\n  background: transparent !important;\n  border-left: 3px solid var(--recurly-yellow) !important;\n  padding-left: 17px !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Expanded content pane — clean white */\n.rm-APIResponseSchemaPicker [class*=\"AccordionContent\"] {\n  background: #fff !important;\n  border-top: 1px solid var(--recurly-darkgray) !important;\n}\n\n/* Status label text (\"200\", \"404\") — always white on dark bg */\n[class*=\"APIResponseSchemaPicker-label\"] {\n  color: #fff !important;\n  font-weight: 600 !important;\n}\n\n/* Description text — warm secondary gray */\n[class*=\"APIResponseSchemaPicker-description\"],\n[class*=\"APIResponseSchemaPicker-description\"] p {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-gray) !important;\n}\n\n/* Chevron default color — controlled by --Accordion-icon-color on parent */\n.rm-APIResponseSchemaPicker [class*=\"AccordionToggle-icon\"] {\n  color: var(--recurly-gray) !important;\n}\n\n/* ——— 3.7 — API Playground panel (right-hand column) ——— */\n\n.rm-Playground {\n  background: var(--recurly-offblack) !important;\n  border-left: 1px solid var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  color: var(--recurly-offwhite) !important;\n}\n\n[class*=\"Playground-section\"] {\n  border-bottom: 1px solid var(--recurly-darkgray) !important;\n  padding: 14px 16px !important;\n}\n\n.rm-Playground .rm-APISectionHeader {\n  border-bottom-color: var(--recurly-darkgray) !important;\n}\n\n.rm-Playground .rm-APISectionHeader [class*=\"APISectionHeader-heading\"] {\n  color: var(--recurly-lightgray) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n}\n\n/* 3.7.1 — Language picker */\n\n.rm-LanguageButton {\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-lightgray) !important;\n  background: transparent !important;\n  border: 0 !important;\n  padding: 5px 12px !important;\n  border-radius: 14px !important;\n  cursor: pointer !important;\n  transition: background 0.12s, color 0.12s !important;\n}\n\n.rm-LanguageButton:hover {\n  background: transparent !important;\n  color: var(--recurly-yellow) !important;\n}\n\n.rm-LanguageButton_active,\n.rm-LanguageButton[aria-pressed=\"true\"] {\n  background: var(--recurly-yellow) !important;\n  color: var(--recurly-offblack) !important;\n  cursor: default !important;\n}\n\n/* 3.7.2 — Credentials / Auth inputs */\n\n.rm-APIAuth [class*=\"InputGroup-input\"] {\n  background: rgba(255, 253, 242, 0.06) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n}\n\n.rm-APIAuth [class*=\"InputGroup-input\"]::placeholder {\n  color: var(--recurly-gray) !important;\n}\n\n.rm-APIAuth [class*=\"InputGroup-input\"]:focus {\n  border-color: var(--recurly-yellow) !important;\n  outline: none !important;\n}\n\n.rm-APIAuth [class*=\"InputGroup-button\"] {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-lightgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n}\n\n/* 3.7.3 — URL bar */\n\n.ServerVars [class*=\"InputGroup-button\"] {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-lightgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n}\n\n.ServerVars [class*=\"ServerVars-url\"] {\n  background: rgba(255, 253, 242, 0.06) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 12px !important;\n}\n\n/* 3.7.4 — Request code block */\n\n.rm-PlaygroundRequest [class*=\"APIRequest-header\"] {\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-lightgray) !important;\n  letter-spacing: 0.3px !important;\n  text-transform: uppercase !important;\n}\n\n.rm-PlaygroundRequest .CodeSnippet,\n.rm-PlaygroundRequest [class*=\"CodeSnippet\"] {\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 8px !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 12px !important;\n}\n\n.rm-PlaygroundRequest .CodeMirror {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 12px !important;\n  line-height: 1.55 !important;\n}\n\n.rm-PlaygroundRequest .CodeMirror .cm-builtin  { color: var(--recurly-yellow) !important; }\n.rm-PlaygroundRequest .CodeMirror .cm-attribute { color: var(--recurly-tangerine) !important; }\n.rm-PlaygroundRequest .CodeMirror .cm-string    { color: var(--recurly-green) !important; }\n\n[class*=\"APIRequest-footer\"] {\n  border-top: 1px solid var(--recurly-darkgray) !important;\n  padding: 10px 14px !important;\n}\n\n/* 3.7.5 — Try It! button */\n\n.rm-TryIt {\n  background: var(--recurly-yellow) !important;\n  color: var(--recurly-offblack) !important;\n  font-family: var(--recurly-font) !important;\n  font-weight: 700 !important;\n  font-size: 13px !important;\n  border-radius: 8px !important;\n  border: 0 !important;\n  padding: 8px 18px !important;\n  cursor: pointer !important;\n  transition: background 0.12s !important;\n}\n\n.rm-TryIt:hover {\n  background: var(--recurly-tangerine) !important;\n}\n\n/* 3.7.6 — Response panel */\n\n.rm-PlaygroundResponse {\n  background: var(--recurly-offblack) !important;\n  font-family: var(--recurly-font) !important;\n}\n\n[class*=\"APIResponse-header\"] {\n  border-bottom: 1px solid var(--recurly-darkgray) !important;\n  padding: 10px 14px !important;\n}\n\n[class*=\"APIResponse-header-title\"] {\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-lightgray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.3px !important;\n}\n\n[class*=\"APIResponse-empty-prompt\"] {\n  color: var(--recurly-gray) !important;\n  font-size: 13px !important;\n  line-height: 1.6 !important;\n}\n\n[class*=\"APIResponse-empty-tryit\"] {\n  color: var(--recurly-yellow) !important;\n  background: rgba(255, 215, 6, 0.12) !important;\n  padding: 1px 6px !important;\n  border-radius: 4px !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n}\n\n[class*=\"APIResponse-empty-examples-header\"] {\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-lightgray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.4px !important;\n}\n\n[class*=\"APIResponse-empty-examples-button\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  background: rgba(255, 253, 242, 0.06) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-lightgray) !important;\n  border-radius: 6px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"APIResponse-empty-examples-button\"]:hover {\n  background: var(--recurly-yellow) !important;\n  border-color: var(--recurly-yellow) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* 3.7.7 — API Logs Table + footer */\n\n/* Table container */\n.rm-APILogsTable {\n  font-family: var(--recurly-font) !important;\n  border-radius: 10px !important;\n  overflow: hidden !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  /* No background here — table and footer handle their own backgrounds */\n}\n\n/* The actual \u003ctable> — must be full-width to match the footer */\n.rm-APILogsTable table {\n  width: 100% !important;\n  table-layout: fixed !important;\n  border-collapse: collapse !important;\n  border: 0 !important;\n}\n\n/* Header row — offblack */\n.rm-APILogsTable thead tr {\n  background: var(--recurly-offblack) !important;\n}\n\n.rm-APILogsTable thead th {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offwhite) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.6px !important;\n  background: var(--recurly-offblack) !important;\n  padding: 10px 16px !important;\n  border: 0 !important;\n  text-align: left !important;\n}\n\n/* Body rows */\n.rm-APILogsTable tbody td {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-darkgray) !important;\n  background: #fff !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n}\n\n/* Empty state */\n[class*=\"APILogsTable_empty\"],\n[class*=\"LogsTable_empty\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-gray) !important;\n  padding: 28px 16px !important;\n  text-align: center !important;\n}\n\n/* Footer — offblack to match the Playground panel */\n.rm-APILogInfo,\n[class*=\"APILogsTable-footer\"] {\n  background: var(--recurly-offblack) !important;\n  border-top: 1px solid var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  padding: 10px 16px !important;\n}\n\n[class*=\"APILogInfo-requests-count\"] {\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n}\n\n/* \"See All Requests →\" button — ghost white, yellow pill on hover */\n.rm-APILogInfo .Button {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.3px !important;\n  color: var(--recurly-offwhite) !important;\n  background: transparent !important;\n  border: 1px solid var(--recurly-gray) !important;\n  border-radius: 20px !important;\n  padding: 6px 16px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n.rm-APILogInfo .Button:hover {\n  background: var(--recurly-yellow) !important;\n  border-color: var(--recurly-yellow) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n\n/* ============================================================\n   PART 4 — Sidebar navigation\n   ============================================================ */\n\n#hub-sidebar,\n#reference-sidebar,\n.rm-Sidebar {\n  font-family: var(--recurly-font) !important;\n  background: #fff !important;\n}\n\n.rm-Sidebar .rm-Sidebar-heading,\n#hub-sidebar .rm-Sidebar-heading,\n#reference-sidebar .rm-Sidebar-heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 800 !important;\n  color: var(--recurly-gray) !important;\n  letter-spacing: 0.8px !important;\n  text-transform: uppercase !important;\n  padding: 20px 16px 6px !important;\n  margin: 0 !important;\n  border-bottom: 0 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-list,\n#hub-sidebar .rm-Sidebar-list,\n#reference-sidebar .rm-Sidebar-list {\n  list-style: none !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link,\n#hub-sidebar .rm-Sidebar-link,\n#reference-sidebar .rm-Sidebar-link {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  font-weight: 500 !important;\n  color: var(--recurly-offblack) !important;\n  text-decoration: none !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: space-between !important;\n  padding: 7px 16px !important;\n  transition: background 0.12s, color 0.12s !important;\n  line-height: 1.4 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link:hover,\n#hub-sidebar .rm-Sidebar-link:hover,\n#reference-sidebar .rm-Sidebar-link:hover {\n  color: var(--recurly-offblack) !important;\n  background: rgba(13, 13, 11, 0.05) !important;\n  text-decoration: none !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.active,\n.rm-Sidebar .rm-Sidebar-link[aria-current=\"page\"],\n#hub-sidebar .rm-Sidebar-link.active,\n#hub-sidebar .rm-Sidebar-link[aria-current=\"page\"],\n#reference-sidebar .rm-Sidebar-link.active,\n#reference-sidebar .rm-Sidebar-link[aria-current=\"page\"] {\n  color: var(--recurly-offblack) !important;\n  font-weight: 700 !important;\n  background: rgba(255, 215, 6, 0.20) !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.Sidebar-link_parent,\n#hub-sidebar .rm-Sidebar-link.Sidebar-link_parent,\n#reference-sidebar .rm-Sidebar-link.Sidebar-link_parent {\n  font-weight: 600 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.Sidebar-link_hidden,\n#hub-sidebar .rm-Sidebar-link.Sidebar-link_hidden,\n#reference-sidebar .rm-Sidebar-link.Sidebar-link_hidden {\n  opacity: 0.45 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.Sidebar-link_hidden:hover,\n#hub-sidebar .rm-Sidebar-link.Sidebar-link_hidden:hover,\n#reference-sidebar .rm-Sidebar-link.Sidebar-link_hidden:hover {\n  opacity: 0.7 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.subpage,\n#hub-sidebar .rm-Sidebar-link.subpage,\n#reference-sidebar .rm-Sidebar-link.subpage {\n  font-size: 12.5px !important;\n  font-weight: 400 !important;\n  color: var(--recurly-offblack) !important;\n  padding-left: 28px !important;\n  align-items: flex-start !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.subpage:hover,\n#hub-sidebar .rm-Sidebar-link.subpage:hover,\n#reference-sidebar .rm-Sidebar-link.subpage:hover {\n  color: var(--recurly-offblack) !important;\n  background: rgba(13, 13, 11, 0.04) !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.subpage.active,\n.rm-Sidebar .rm-Sidebar-link.subpage[aria-current=\"page\"],\n#hub-sidebar .rm-Sidebar-link.subpage.active,\n#hub-sidebar .rm-Sidebar-link.subpage[aria-current=\"page\"],\n#reference-sidebar .rm-Sidebar-link.subpage.active,\n#reference-sidebar .rm-Sidebar-link.subpage[aria-current=\"page\"] {\n  color: var(--recurly-offblack) !important;\n  font-weight: 700 !important;\n  background: rgba(255, 215, 6, 0.20) !important;\n}\n\n.rm-Sidebar .subpages .subpages .rm-Sidebar-link.subpage,\n#hub-sidebar .subpages .subpages .rm-Sidebar-link.subpage,\n#reference-sidebar .subpages .subpages .rm-Sidebar-link.subpage {\n  padding-left: 40px !important;\n}\n\n.rm-Sidebar .subpages .subpages .subpages .rm-Sidebar-link.subpage,\n#hub-sidebar .subpages .subpages .subpages .rm-Sidebar-link.subpage,\n#reference-sidebar .subpages .subpages .subpages .rm-Sidebar-link.subpage {\n  padding-left: 52px !important;\n}\n\n[class*=\"Sidebar-link-text_label\"] {\n  display: block !important;\n  overflow: hidden !important;\n  text-overflow: ellipsis !important;\n  font-size: inherit !important;\n  font-weight: inherit !important;\n  color: inherit !important;\n}\n\n.rm-Sidebar [class*=\"Sidebar-link-buttonWrapper\"],\n#hub-sidebar [class*=\"Sidebar-link-buttonWrapper\"],\n#reference-sidebar [class*=\"Sidebar-link-buttonWrapper\"] {\n  background: transparent !important;\n  border: 0 !important;\n  padding: 4px 6px !important;\n  color: var(--recurly-offblack) !important;\n  cursor: pointer !important;\n  flex-shrink: 0 !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  border-radius: 4px !important;\n  transition: background 0.12s, color 0.12s !important;\n}\n\n.rm-Sidebar [class*=\"Sidebar-link-buttonWrapper\"]:hover,\n#hub-sidebar [class*=\"Sidebar-link-buttonWrapper\"]:hover,\n#reference-sidebar [class*=\"Sidebar-link-buttonWrapper\"]:hover {\n  background: rgba(13, 13, 11, 0.06) !important;\n  color: var(--recurly-tangerine) !important;\n}\n\n[class*=\"Sidebar-link-expandIcon\"] {\n  font-size: 13px !important;\n  transition: transform 0.18s ease !important;\n  color: inherit !important;\n}\n\n[class*=\"Sidebar-link-buttonWrapper\"][aria-expanded=\"true\"] [class*=\"Sidebar-link-expandIcon\"],\n.subnav-expanded > .rm-Sidebar-link > [class*=\"Sidebar-link-buttonWrapper\"] [class*=\"Sidebar-link-expandIcon\"] {\n  transform: rotate(90deg) !important;\n  color: var(--recurly-tangerine) !important;\n}\n\n[class*=\"Sidebar-link-externalIcon\"] {\n  font-size: 10px !important;\n  color: var(--recurly-offblack) !important;\n}\n\n.rm-Sidebar-link:hover [class*=\"Sidebar-link-externalIcon\"] {\n  color: var(--recurly-tangerine) !important;\n}\n\n.rm-Sidebar .rm-Sidebar-section + .rm-Sidebar-section,\n#hub-sidebar .rm-Sidebar-section + .rm-Sidebar-section,\n#reference-sidebar .rm-Sidebar-section + .rm-Sidebar-section {\n  border-top: 1px solid var(--recurly-lightgray) !important;\n  margin-top: 4px !important;\n}\n\n[class*=\"Nav-toggle-collapse\"] {\n  color: var(--recurly-gray) !important;\n  background: transparent !important;\n  border: 0 !important;\n  transition: color 0.12s !important;\n}\n\n[class*=\"Nav-toggle-collapse\"]:hover {\n  color: var(--recurly-offblack) !important;\n}\n\n\n/* ============================================================\n   PART 5 — API Reference sidebar specifics\n   ============================================================ */\n\n[class*=\"QuickNav-button\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.6px !important;\n  color: var(--recurly-gray) !important;\n  background: transparent !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 8px !important;\n  padding: 6px 12px !important;\n  cursor: pointer !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  width: 100% !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"QuickNav-button\"]:hover {\n  background: rgba(13, 13, 11, 0.05) !important;\n  border-color: var(--recurly-offblack) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n[class*=\"KbdShortcut\"] {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 10px !important;\n  color: var(--recurly-gray) !important;\n  background: rgba(13, 13, 11, 0.06) !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 4px !important;\n  padding: 1px 5px !important;\n}\n\n#reference-sidebar .rm-APIMethod,\n[class*=\"Sidebar-method\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 9px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.4px !important;\n  text-transform: uppercase !important;\n  padding: 2px 6px !important;\n  border-radius: 10px !important;\n  border: 0 !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  line-height: 1 !important;\n  flex-shrink: 0 !important;\n  margin-top: 2px !important;\n}\n\n[class*=\"Sidebar-link-pageIconCustom\"] {\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  width: 18px !important;\n  height: 18px !important;\n  flex-shrink: 0 !important;\n  color: var(--recurly-gray) !important;\n}\n\n.rm-Sidebar-link:hover [class*=\"Sidebar-link-pageIconCustom\"] {\n  color: var(--recurly-tangerine) !important;\n}\n\n.rm-Sidebar-link.active [class*=\"Sidebar-link-pageIconCustom\"],\n.rm-Sidebar-link[aria-current=\"page\"] [class*=\"Sidebar-link-pageIconCustom\"] {\n  color: var(--recurly-offblack) !important;\n}\n\n.rm-UserAvatar {\n  font-family: var(--recurly-font) !important;\n  font-size: 9px !important;\n  font-weight: 800 !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-yellow) !important;\n  border-radius: 50% !important;\n  width: 18px !important;\n  height: 18px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  flex-shrink: 0 !important;\n}\n\n\n/* ============================================================\n   PART 6 — QuickNav modal\n   ============================================================ */\n\n[class*=\"QuickNav-modal-search\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  color: var(--recurly-offblack) !important;\n  background: var(--recurly-offwhite) !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 8px !important;\n  padding: 10px 14px !important;\n  width: 100% !important;\n  outline: none !important;\n  transition: border-color 0.12s !important;\n}\n\n[class*=\"QuickNav-modal-search\"]:focus {\n  border-color: var(--recurly-offblack) !important;\n}\n\n[class*=\"QuickNav-modal-search\"]::placeholder {\n  color: var(--recurly-lightgray) !important;\n}\n\n[class*=\"QuickNav-content\"] {\n  font-family: var(--recurly-font) !important;\n}\n\n[class*=\"QuickNav-destination-section\"] {\n  list-style: none !important;\n  margin: 0 0 8px !important;\n  padding: 0 !important;\n}\n\n[class*=\"QuickNav-destination-section-heading\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 9px !important;\n  font-weight: 800 !important;\n  color: var(--recurly-lightgray) !important;\n  letter-spacing: 1px !important;\n  text-transform: uppercase !important;\n  padding: 14px 12px 6px !important;\n  list-style: none !important;\n}\n\n[class*=\"destination-item\"] {\n  list-style: none !important;\n}\n\n[class*=\"destination-item-anchor\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  font-weight: 400 !important;\n  color: var(--recurly-darkgray) !important;\n  text-decoration: none !important;\n  display: block !important;\n  padding: 6px 12px !important;\n  transition: background 0.1s, color 0.1s !important;\n}\n\n[class*=\"destination-item-anchor\"]:hover {\n  color: var(--recurly-offblack) !important;\n  background: rgba(13, 13, 11, 0.04) !important;\n  text-decoration: none !important;\n}\n\n[class*=\"destination-item-anchor\"].active,\n[class*=\"destination-item-anchor\"][aria-current=\"page\"] {\n  color: var(--recurly-offblack) !important;\n  font-weight: 700 !important;\n  background: rgba(255, 215, 6, 0.20) !important;\n}\n\n[class*=\"destination-item-anchor-row-container\"] {\n  display: flex !important;\n  align-items: flex-start !important;\n  justify-content: space-between !important;\n  gap: 8px !important;\n  font-size: inherit !important;\n  color: inherit !important;\n}\n\n[class*=\"destination-item-anchor-row-container-method\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 9px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.4px !important;\n  text-transform: uppercase !important;\n  padding: 2px 6px !important;\n  border-radius: 10px !important;\n  border: 0 !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  line-height: 1 !important;\n  flex-shrink: 0 !important;\n  margin-top: 2px !important;\n}\n\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_get    { color: var(--recurly-green) !important; }\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_post   { color: var(--recurly-tangerine) !important; }\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_put    { color: var(--recurly-yellow) !important; }\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_patch  { color: var(--recurly-teal) !important; }\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_del    { color: var(--recurly-vermillion) !important; }\n\n\n/* ============================================================\n   PART 7 — Changelog\n   ============================================================ */\n\n#recurly-changelog-header {\n  background: var(--recurly-offblack) !important;\n  border-radius: 12px !important;\n  padding: 32px 36px !important;\n  margin: 0 auto 28px auto !important;\n  max-width: 1080px !important;\n}\n\n#recurly-changelog-header h1 {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.5rem !important;\n  font-weight: 800 !important;\n  color: var(--recurly-yellow) !important;\n  margin: 0 0 12px !important;\n  padding: 0 !important;\n  border: 0 !important;\n}\n\n#recurly-changelog-header p {\n  font-family: var(--recurly-font) !important;\n  font-size: 15px !important;\n  color: var(--recurly-lightgray) !important;\n  line-height: 1.6 !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  background: transparent !important;\n  border: 0 !important;\n  border-radius: 0 !important;\n}\n\n#recurly-changelog-header .rss-line {\n  margin-top: 14px !important;\n  padding-top: 14px !important;\n  border-top: 1px solid var(--recurly-darkgray) !important;\n  font-size: 13px !important;\n  color: var(--recurly-lightgray) !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n}\n\n#recurly-changelog-header .rss-icon {\n  color: var(--recurly-yellow) !important;\n  font-size: 13px !important;\n  flex-shrink: 0 !important;\n  opacity: 0.9 !important;\n}\n\n#recurly-changelog-header .rss-copy {\n  background: transparent !important;\n  border: 0 !important;\n  padding: 0 !important;\n  font-family: inherit !important;\n  font-size: inherit !important;\n  font-weight: 700 !important;\n  color: var(--recurly-yellow) !important;\n  text-decoration: underline !important;\n  text-decoration-color: var(--recurly-yellow) !important;\n  text-underline-offset: 3px !important;\n  cursor: pointer !important;\n  transition: color 0.15s, text-decoration-color 0.15s !important;\n}\n\n#recurly-changelog-header .rss-copy:hover {\n  color: var(--recurly-tangerine) !important;\n  text-decoration-color: var(--recurly-tangerine) !important;\n}\n\n#recurly-changelog-header .rss-copy.rss-copied {\n  color: var(--recurly-yellow) !important;\n  text-decoration: none !important;\n}\n\nmain.rm-Changelog article,\nmain.rm-Changelog article.rm-Changelog-post {\n  background: #fff !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 10px !important;\n  padding: 22px 26px !important;\n  margin: 0 auto 16px !important;\n  max-width: 1080px !important;\n  width: 100% !important;\n  box-sizing: border-box !important;\n  overflow: hidden !important; /* clip any child spill so nothing escapes the card */\n}\n\n/* SuperHub layout fix — the post column is a flex/grid item, which defaults to\n   min-width:auto and refuses to shrink below its widest child (the table),\n   dragging the paragraphs out past the card. Force the whole content chain to\n   shrink to the card width and wrap. */\nmain.rm-Changelog .rm-Changelog-post,\nmain.rm-Changelog .ChangelogPage_list-post,\nmain.rm-Changelog [class*=\"ChangelogPost_text\"],\nmain.rm-Changelog [class*=\"ChangelogPost_text\"] > .markdown-body {\n  min-width: 0 !important;\n  max-width: 100% !important;\n  box-sizing: border-box !important;\n  overflow-wrap: anywhere !important;\n}\n\n.rm-Changelog [class*=\"ChangelogPost_title\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.1rem !important;\n  font-weight: 700 !important;\n  margin: 0 0 8px !important;\n  padding-bottom: 10px !important;\n  border-bottom: 2px solid var(--recurly-tangerine) !important;\n}\n\n.rm-Changelog [class*=\"ChangelogPost_title\"] a {\n  color: var(--recurly-offblack) !important;\n  text-decoration: none !important;\n  transition: color 0.15s !important;\n}\n\n.rm-Changelog [class*=\"ChangelogPost_title\"] a:hover {\n  color: var(--recurly-tangerine) !important;\n}\n\n.rm-Changelog .DateLine {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-gray) !important;\n  margin-bottom: 12px !important;\n}\n\n.rm-Changelog [class*=\"ChangelogPost_text\"] > .markdown-body > p:first-child,\n.rm-Changelog [class*=\"ChangelogPost_text\"] > p {\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.65 !important;\n  margin: 0 !important;\n}\n\n[class*=\"ChangelogPost_text\"] { overflow: hidden !important; }\n\n/* The card is wide to give the table room; keep the intro prose at a comfortable\n   reading measure so paragraphs don't stretch the full width. The table is a\n   sibling of these paragraphs, so it is unaffected and still spans the card. */\n[class*=\"ChangelogPost_text\"] > .markdown-body > p,\n[class*=\"ChangelogPost_text\"] > .markdown-body > h2 {\n  max-width: 880px !important;\n}\n\n[class*=\"ChangelogPost_text\"] .markdown-body p {\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.65 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .markdown-body a {\n  color: var(--recurly-tangerine) !important;\n  text-decoration: none !important;\n}\n\n[class*=\"ChangelogPost_text\"] .markdown-body a:hover {\n  text-decoration: underline !important;\n  text-decoration-color: var(--recurly-tangerine) !important;\n}\n\n[class*=\"ChangelogPost_text\"] .markdown-body h2,\n[class*=\"ChangelogPost_text\"] .markdown-body h2.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.05rem !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offblack) !important;\n  margin: 32px 0 12px !important;\n  padding-bottom: 8px !important;\n  border-bottom: 2px solid var(--recurly-yellow) !important;\n  background: transparent !important;\n  border-left: 0 !important;\n  border-right: 0 !important;\n  border-top: 0 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .heading-anchor-icon {\n  display: none !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table {\n  overflow-x: auto !important;\n  -webkit-overflow-scrolling: touch !important;\n  margin: 4px 0 24px !important;\n  border-radius: 8px !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  max-width: 100% !important;\n  width: 100% !important;\n}\n\n/* Fits the card on desktop (no scroll); on narrow screens the min-width kicks in\n   and the .rdmd-table scroll box gives the horizontal scroll bar. */\n[class*=\"ChangelogPost_text\"] .rdmd-table-inner {\n  min-width: 660px !important;\n  width: 100% !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table table {\n  width: 100% !important;\n  table-layout: fixed !important;\n  border-collapse: collapse !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  line-height: 1.5 !important;\n  border: 0 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table thead tr,\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th {\n  background: var(--recurly-offblack) !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th {\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  text-align: left !important;\n  padding: 10px 12px !important;\n  border: 0 !important;\n  white-space: normal !important;\n  line-height: 1.3 !important;\n  vertical-align: middle !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody tr,\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td {\n  background: #fff !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td {\n  color: var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  padding: 10px 12px !important;\n  vertical-align: top !important;\n  border: 0 !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  line-height: 1.55 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody tr:last-child td {\n  border-bottom: 0 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:first-child {\n  white-space: nowrap !important;\n  color: var(--recurly-gray) !important;\n  font-size: 12px !important;\n  width: 72px !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(2) {\n  font-weight: 600 !important;\n  color: var(--recurly-offblack) !important;\n  width: 180px !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(3) {\n  white-space: nowrap !important;\n  width: 80px !important;\n  font-weight: 700 !important;\n  font-size: 11px !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.4px !important;\n  color: var(--recurly-gray) !important;\n}\n\n/* Potential Impact body values (Low / Med / High) stay on one line */\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(4) {\n  white-space: nowrap !important;\n}\n\n/* Description / Overview — widest column, slightly larger and less tight */\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(5) {\n  width: auto !important;\n  font-size: 14px !important;\n  line-height: 1.65 !important;\n}\n\n/* With table-layout:fixed the header row sets the columns. Fixed columns sum to\n   372px; Description (col 5) is left auto so it soaks up all remaining width,\n   making it by far the widest column on any screen. */\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(1) { width: 76px !important; }\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(2) { width: 100px !important; }\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(3) { width: 108px !important; }\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(4) { width: 88px !important; }\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(5) { width: auto !important; }\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td a {\n  color: var(--recurly-tangerine) !important;\n  text-decoration: none !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td a:hover {\n  text-decoration: underline !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td code.rdmd-code {\n  background: var(--recurly-brightgray) !important;\n  color: var(--recurly-darkgray) !important;\n  font-size: 12px !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', monospace !important;\n  display: inline !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table .rdmd-code-copy {\n  display: none !important;\n}\n\n/* ── RSS instructions collapsible ───────────────────────── */\n\n#recurly-changelog-header .rss-instructions-wrap {\n  margin-top: 10px !important;\n}\n\n/* Toggle button — pill style, subtle border */\n#recurly-changelog-header .rss-instructions-toggle {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 7px !important;\n  background: transparent !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 20px !important;\n  padding: 5px 14px 5px 10px !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 600 !important;\n  color: var(--recurly-lightgray) !important;\n  cursor: pointer !important;\n  transition: border-color 0.15s, color 0.15s !important;\n  line-height: 1 !important;\n}\n\n#recurly-changelog-header .rss-instructions-toggle:hover {\n  border-color: var(--recurly-yellow) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Chevron rotates when open */\n#recurly-changelog-header .rss-chevron {\n  font-size: 10px !important;\n  transition: transform 0.2s ease !important;\n}\n\n#recurly-changelog-header .rss-instructions-open .rss-chevron {\n  transform: rotate(180deg) !important;\n}\n\n/* Body panel */\n#recurly-changelog-header .rss-instructions-body {\n  margin-top: 14px !important;\n  padding: 16px 18px !important;\n  background: rgba(255, 253, 242, 0.04) !important;\n  border-radius: 8px !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n}\n\n/* Paragraphs — override the broad header p rule */\n#recurly-changelog-header .rss-instructions-body p {\n  font-size: 13px !important;\n  color: var(--recurly-lightgray) !important;\n  line-height: 1.65 !important;\n  margin: 0 0 10px !important;\n  opacity: 1 !important;\n}\n\n#recurly-changelog-header .rss-instructions-body p:last-child {\n  margin-bottom: 0 !important;\n}\n\n/* Ordered list */\n#recurly-changelog-header .rss-instructions-body ol {\n  margin: 10px 0 12px 0 !important;\n  padding-left: 20px !important;\n  list-style: decimal !important;\n}\n\n#recurly-changelog-header .rss-instructions-body ol li {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-lightgray) !important;\n  line-height: 1.65 !important;\n  margin-bottom: 6px !important;\n  opacity: 1 !important;\n}\n\n#recurly-changelog-header .rss-instructions-body ol li:last-child {\n  margin-bottom: 0 !important;\n}\n\n/* Strong inside body */\n#recurly-changelog-header .rss-instructions-body strong {\n  font-weight: 700 !important;\n  color: rgba(255, 253, 242, 0.92) !important;\n}\n\n/* Links (Feedly / Feeder) */\n#recurly-changelog-header .rss-instructions-body a {\n  color: var(--recurly-tangerine) !important;\n  text-decoration: none !important;\n  font-weight: 600 !important;\n}\n\n#recurly-changelog-header .rss-instructions-body a:hover {\n  text-decoration: underline !important;\n  text-decoration-color: var(--recurly-tangerine) !important;\n}\n\n/* Tip paragraph — yellow left-border callout */\n#recurly-changelog-header .rss-instructions-tip {\n  margin-top: 12px !important;\n  padding: 10px 12px !important;\n  background: rgba(255, 201, 0, 0.06) !important;\n  border-left: 3px solid var(--recurly-yellow) !important;\n  border-radius: 0 6px 6px 0 !important;\n  font-size: 12px !important;\n  color: var(--recurly-lightgray) !important;\n  display: flex !important;\n  gap: 8px !important;\n  align-items: flex-start !important;\n}\n\n#recurly-changelog-header .rss-instructions-tip i {\n  color: var(--recurly-yellow) !important;\n  font-size: 13px !important;\n  margin-top: 2px !important;\n  flex-shrink: 0 !important;\n}\n\n/* ── end RSS instructions collapsible ───────────────────── */\n\n@media (max-width: 640px) {\n  [class*=\"ChangelogPost_text\"] .rdmd-table tbody td:first-child,\n  [class*=\"ChangelogPost_text\"] .rdmd-table thead th:first-child {\n    display: none !important;\n  }\n  [class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(2) {\n    width: 130px !important;\n  }\n}\n\n/* ============================================================\n   PART 8 — rm-ToC animated active indicator\n   ============================================================ */\n\n.rm-ToC {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  position: relative !important;\n}\n\n.rm-ToC::before {\n  background: var(--recurly-yellow) !important;\n  transition: top 0.2s ease, height 0.2s ease !important;\n}\n\n.rm-ToC .toc-list,\n.rm-ToC .toc-list ul {\n  list-style: none !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n/* ============================================================\n   RECURLY READMETHEME — V8.1\n   ============================================================\n   Drop-in stylesheet for ReadMe's theme CSS. Five layers:\n\n     PART 1 — Recurly brand design system (rp-* classes)\n     PART 2 — ReadMe native code-snippet overrides\n     PART 3 — ReadMe native MDX component branding\n     PART 4 — ReadMe native table branding\n     PART 5 — Version selector branding\n\n   V8.1 changelog:\n     - rp-plan pill: offblack bg + yellow text, premium badge treatment.\n     - rp-btn-ghost hover: solid yellow bg + offblack text.\n     - rp-h2, rp-h3 first-child: margin-top: 0.\n     - Card (MDX): solid yellow bg, offblack icons, inverts on hover.\n     - Accordion chevron: offblack weight 900 for contrast.\n     - Sidebar container: border-right removed.\n     - h2.heading: yellow underline removed (h1 only).\n     - Tables: border-collapse separate, corner-cell radius, :has(thead)\n       scope on rdmd-table to prevent rule collision with rp-* tables.\n   ============================================================ */\n\n\n/* ============================================================\n   Brand color tokens\n   ============================================================ */\n\n:root {\n  /* =====================================================================\n     RECURLY BRAND v2 — palette source of truth\n     Neutrals follow the Off Black tint scale (OB1–OB5).\n     Secondary = Blue; accents = Poppy / Teal / Green (semantic success).\n     Legacy accent + gray names below are retained as aliases so every\n     existing rule keeps resolving — the values are remapped to brand v2.\n     ===================================================================== */\n\n  /* Primary */\n  --recurly-yellow:      #FFD706;\n  --recurly-offblack:    #0D0D0B;\n\n  /* Secondary — Blue */\n  --recurly-blue:        #008CFF;\n  --recurly-blue-hover:  #0067BE;   /* B Shade 1 — available for hover states */\n\n  /* Accents — use sparingly */\n  --recurly-poppy:       #FF5126;   /* errors / negative data */\n  --recurly-teal:        #2DCECE;   /* occasional data-viz / method accent */\n  --recurly-green:       #5DC32E;   /* semantic success */\n\n  /* Neutrals — Off Black tint scale */\n  --recurly-ob1:         #FCFBF7;   /* card surfaces */\n  --recurly-ob2:         #F2F1EA;   /* page / content backgrounds */\n  --recurly-ob3:         #D1CFC4;   /* borders, inactive states */\n  --recurly-ob4:         #807D75;   /* tertiary text, dividers */\n  --recurly-ob5:         #32312D;   /* secondary text, dark UI */\n\n  /* Neutral aliases (legacy names → OB scale) */\n  --recurly-offwhite:    var(--recurly-ob1);\n  --recurly-brightgray:  var(--recurly-ob2);\n  --recurly-lightgray:   var(--recurly-ob3);\n  --recurly-gray:        var(--recurly-ob4);\n  --recurly-darkgray:    var(--recurly-ob5);\n\n  /* Legacy accent aliases (remapped to brand v2) */\n  --recurly-tangerine:   var(--recurly-blue);     /* was #FF8200 — links / interactive */\n  --recurly-vermillion:  var(--recurly-poppy);    /* was #FF5810 — errors / DELETE / 4xx-5xx */\n  --recurly-salmon:      var(--recurly-poppy);    /* was #FF9D88 — deprecated; usages migrated to Teal/Green */\n  --recurly-deepchar:    var(--recurly-offblack); /* was #232932 — retired bluish neutral */\n  --recurly-darknavy:    var(--recurly-offblack); /* was #343F4B — retired bluish neutral */\n\n  --recurly-font: 'Figtree', 'Segoe UI', system-ui, sans-serif;\n\n  /* Shorthand set — mirrors the --recurly-* tokens above */\n  --yellow:      var(--recurly-yellow);\n  --offblack:    var(--recurly-offblack);\n  --blue:        var(--recurly-blue);\n  --blue-hover:  var(--recurly-blue-hover);\n  --poppy:       var(--recurly-poppy);\n  --teal:        var(--recurly-teal);\n  --green:       var(--recurly-green);\n  --tangerine:   var(--recurly-tangerine);\n  --vermillion:  var(--recurly-vermillion);\n  --salmon:      var(--recurly-salmon);\n  --darkgray:    var(--recurly-darkgray);\n  --gray:        var(--recurly-gray);\n  --lightgray:   var(--recurly-lightgray);\n  --brightgray:  var(--recurly-brightgray);\n  --offwhite:    var(--recurly-offwhite);\n  --deepchar:    var(--recurly-deepchar);\n  --darknavy:    var(--recurly-darknavy);\n  --font:        var(--recurly-font);\n\n  /* ReadMe markdown font tokens → Figtree */\n  --rm-font-body:    var(--recurly-font);\n  --rm-font-heading: var(--recurly-font);\n  --markdown-font:   var(--recurly-font);\n  --font-family:     var(--recurly-font);\n}\n\n\n/* ============================================================\n   PART 1 — Recurly brand design system (rp-* classes)\n   ============================================================ */\n\n*, *::before, *::after { box-sizing: border-box; }\n\n  .rp-page {\n    font-family: var(--font);\n    color: var(--deepchar);\n    font-size: 15px;\n    line-height: 1.6;\n    max-width: 860px;\n  }\n\n  .rp-overview {\n    border-left: 4px solid var(--yellow);\n    background: var(--offwhite);\n    padding: 16px 22px;\n    border-radius: 0 8px 8px 0;\n    margin-bottom: 20px;\n    font-size: 15px;\n    color: var(--darkgray);\n  }\n\n  .rp-plan {\n    display: inline-block;\n    background: var(--offblack) !important;\n    color: var(--yellow) !important;\n    border: 0 !important;\n    font-size: 13px;\n    font-weight: 700;\n    padding: 6px 16px;\n    border-radius: 20px;\n    margin-bottom: 24px;\n    letter-spacing: 0.3px;\n  }\n\n  .rp-cost {\n    border-left: 4px solid var(--tangerine);\n    background: #FFF8F2;\n    padding: 14px 20px;\n    border-radius: 0 8px 8px 0;\n    margin-bottom: 20px;\n    font-size: 14px;\n    color: var(--darkgray);\n  }\n  .rp-cost a { color: var(--tangerine); }\n\n  .rp-definition {\n    background: var(--brightgray);\n    border-radius: 10px;\n    padding: 22px 26px;\n    margin-bottom: 28px;\n    font-size: 15px;\n    color: var(--darkgray);\n    line-height: 1.7;\n  }\n\n  .rp-benefits {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));\n    gap: 14px;\n    margin-bottom: 32px;\n  }\n  .rp-benefits.rp-benefits-2x2 { grid-template-columns: repeat(2, 1fr); }\n  .rp-benefit {\n    background: var(--offblack) !important;\n    color: var(--offwhite) !important;\n    border-radius: 10px;\n    padding: 20px;\n  }\n  .rp-benefit-icon { color: var(--yellow) !important; font-size: 20px; margin-bottom: 10px; }\n  .rp-benefit strong {\n    display: block; font-size: 14px; font-weight: 700;\n    margin-bottom: 6px; color: var(--offwhite) !important;\n  }\n  .rp-benefit span { font-size: 13px; color: var(--lightgray) !important; line-height: 1.5; }\n  .rp-benefit code,\n  .rp-benefit code.rdmd-code,\n  .rp-benefit .rdmd-code {\n    background: rgba(255, 253, 242, 0.10) !important;\n    color: var(--tangerine) !important;\n    border-radius: 4px !important;\n    padding: 1px 5px !important;\n    font-size: 0.92em !important;\n    box-shadow: none !important;\n  }\n  .rp-h1 {\n    font-size: 1.5rem !important; font-weight: 800 !important; color: var(--offblack) !important;\n    margin: 36px 0 14px; padding-bottom: 8px;\n    border-bottom: 2px solid var(--yellow) !important;\n  }\n  .rp-h2 { font-size: 1.1rem !important; font-weight: 700 !important; color: var(--offblack) !important; margin: 28px 0 10px; border-bottom: 0 !important; padding-bottom: 0 !important; text-decoration: none !important; }\n  .rp-h3 { font-size: 0.95rem !important; font-weight: 700 !important; color: var(--darkgray) !important; margin: 20px 0 8px; border-bottom: 0 !important; padding-bottom: 0 !important; text-decoration: none !important; }\n  .rp-h4 { font-size: 0.9rem !important; font-weight: 600 !important; color: var(--darkgray) !important; margin: 16px 0 6px; border-bottom: 0 !important; padding-bottom: 0 !important; text-decoration: none !important; }\n\n  .rp-h2:first-child { margin-top: 0 !important; }\n  .rp-h3:first-child { margin-top: 0 !important; }\n\n  .rp-card {\n    background: var(--offwhite);\n    border: 1px solid var(--lightgray);\n    border-radius: 10px;\n    padding: 22px 26px;\n    margin-bottom: 20px;\n    font-size: 14px;\n    color: var(--darkgray);\n    line-height: 1.65;\n  }\n\n  .rp-steps { display: flex; flex-direction: column; margin-bottom: 24px; }\n  .rp-step {\n    display: flex; gap: 16px; align-items: flex-start;\n    background: var(--offwhite); border: 1px solid var(--lightgray);\n    border-radius: 10px; padding: 18px 22px;\n    margin-bottom: 12px;\n  }\n  .rp-steps .rp-step { margin-bottom: 0; }\n  .rp-steps .rp-step + .rp-step { margin-top: 12px; }\n  .rp-step-num {\n    width: 34px; height: 34px; border-radius: 50%;\n    background: var(--offblack); color: var(--yellow);\n    font-weight: 800; font-size: 14px;\n    display: flex; align-items: center; justify-content: center; flex-shrink: 0;\n  }\n  .rp-step h4 { font-size: 0.95rem; font-weight: 700; color: var(--offblack); margin: 0 0 4px; }\n  .rp-step p  { font-size: 0.87rem; color: var(--gray); line-height: 1.6; margin: 0; }\n\n  /* Callout icons: Note fa-info-circle | Tip fa-lightbulb | Warning fa-exclamation-triangle | Important fa-exclamation-circle */\n  .rp-callout {\n    border-radius: 0 8px 8px 0; padding: 14px 18px; margin: 16px 0;\n    font-size: 14px;\n  }\n  .rp-callout strong { display: inline; }\n  .rp-callout strong:first-child { display: block; margin-bottom: 4px; }\n  .rp-callout-note      { border-left: 4px solid var(--offblack); background: var(--brightgray); color: var(--offblack); }\n  .rp-callout-tip       { border-left: 4px solid var(--green);    background: #EFFAEA;           color: var(--offblack); }\n  .rp-callout-warning   { border-left: 4px solid var(--yellow);   background: #FFFECB;           color: var(--offblack); }\n  .rp-callout-important { border-left: 4px solid var(--poppy);    background: #FFEEE9;           color: var(--offblack); }\n\n  /* rp-btn-* rules moved outside this scoped block — see Part 1.5 below */\n\n  /* border-collapse: separate allows border-radius on corner \u003ctd> cells.\n     :has(thead) scoping on rdmd-table (Part 4) prevents that rule from\n     overriding these with border-collapse: collapse !important. */\n  .rp-gw-table { width: 100%; border-collapse: separate !important; border-spacing: 0 !important; font-size: 14px; margin-bottom: 28px; border-radius: 10px !important; border: 1px solid var(--lightgray); }\n  .rp-gw-table tr.rp-thead-row td {\n    background: var(--offblack) !important;\n    color: var(--offwhite) !important;\n    font-weight: 700;\n    padding: 12px 16px;\n  }\n  .rp-gw-table tr.rp-thead-row td:first-child { color: var(--offwhite) !important; }\n  .rp-gw-table td { padding: 12px 16px; vertical-align: top; background: var(--offwhite) !important; }\n  .rp-gw-table tr:not(.rp-thead-row) td:first-child { font-weight: 600; color: var(--offblack); width: 35%; }\n  .rp-gw-table a { color: var(--tangerine); }\n  .rp-gw-table tr:first-child td:first-child { border-top-left-radius:    9px; }\n  .rp-gw-table tr:first-child td:last-child  { border-top-right-radius:   9px; }\n  .rp-gw-table tr:last-child  td:first-child { border-bottom-left-radius:  9px; }\n  .rp-gw-table tr:last-child  td:last-child  { border-bottom-right-radius: 9px; }\n\n  .rp-pm-table { width: 100%; border-collapse: separate !important; border-spacing: 0 !important; font-size: 13px; margin: 12px 0 24px; border-radius: 10px !important; border: 1px solid var(--lightgray); }\n  .rp-pm-table tr.rp-thead-row td {\n    background: var(--offblack) !important;\n    color: var(--offwhite) !important;\n    font-weight: 700;\n    padding: 10px 12px;\n  }\n  .rp-pm-table tr.rp-thead-row td:first-child { color: var(--offwhite) !important; }\n  .rp-pm-table td { padding: 10px 12px; border-bottom: 1px solid var(--lightgray); vertical-align: top; background: var(--offwhite) !important; }\n  .rp-pm-table tr:last-child td { border-bottom: 0 !important; }\n  .rp-pm-table tr:first-child td:first-child { border-top-left-radius:    9px; }\n  .rp-pm-table tr:first-child td:last-child  { border-top-right-radius:   9px; }\n  .rp-pm-table tr:last-child  td:first-child { border-bottom-left-radius:  9px; }\n  .rp-pm-table tr:last-child  td:last-child  { border-bottom-right-radius: 9px; }\n\n  .rp-params { width: 100%; border-collapse: separate !important; border-spacing: 0 !important; font-size: 14px; margin: 12px 0 24px; border-radius: 10px !important; border: 1px solid var(--lightgray); }\n  .rp-params tr.rp-thead-row td {\n    background: var(--offblack) !important;\n    color: var(--offwhite) !important;\n    font-weight: 700;\n    padding: 10px 14px;\n  }\n  .rp-params tr.rp-thead-row td:first-child { color: var(--offwhite) !important; }\n  .rp-params td { padding: 10px 14px; border-bottom: 1px solid var(--lightgray); vertical-align: top; background: var(--offwhite) !important; }\n  .rp-params tr:last-child td { border-bottom: 0 !important; }\n  .rp-params tr:not(.rp-thead-row) td:first-child { font-weight: 600; color: var(--offblack); width: 28%; }\n  .rp-params tr:first-child td:first-child { border-top-left-radius:    9px; }\n  .rp-params tr:first-child td:last-child  { border-top-right-radius:   9px; }\n  .rp-params tr:last-child  td:first-child { border-bottom-left-radius:  9px; }\n  .rp-params tr:last-child  td:last-child  { border-bottom-right-radius: 9px; }\n\n  .rp-btn-download {\n    display: inline-flex !important; align-items: center !important; gap: 8px !important;\n    background: var(--yellow) !important; color: var(--offblack) !important;\n    font-family: var(--font) !important; font-size: 14px !important; font-weight: 700 !important;\n    padding: 10px 22px !important; border-radius: 8px !important; text-decoration: none !important;\n    margin-bottom: 20px !important; border: 0 !important; cursor: pointer !important;\n    transition: filter 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease !important;\n  }\n  .rp-btn-download:hover {\n    filter: brightness(0.92) !important;\n    transform: translateY(-1px) !important;\n    box-shadow: 0 4px 12px rgba(255, 215, 6, 0.25) !important;\n  }\n  .rp-btn-download:active {\n    transform: scale(0.97) translateY(0) !important;\n    box-shadow: 0 1px 4px rgba(255, 215, 6, 0.15) !important;\n    filter: brightness(0.85) !important;\n  }\n\n  .rp-list {\n    background: var(--offwhite); border: 1px solid var(--lightgray);\n    border-radius: 10px; padding: 16px 22px 16px 38px;\n    margin-bottom: 20px; font-size: 14px; color: var(--darkgray); line-height: 1.7;\n  }\n\n  .rp-video { position: relative; padding-top: 56.25%; margin-bottom: 28px;\n              border-radius: 10px; overflow: hidden; }\n  .rp-video iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; }\n\n  /* ── IFRAME SIZING ───────────────────────────────────────────\n     The project-specific CSS applies a blanket iframe height for\n     non-video contexts. These two rules ensure that iframes inside\n     a padding-top aspect-ratio wrapper (Wistia embeds) always fill\n     the container correctly, regardless of that blanket rule.\n     The :not selector excludes video embeds from the blanket rule;\n     the child selector restores correct sizing inside wrappers.\n     ──────────────────────────────────────────────────────────── */\n  iframe:not([style*=\"position: absolute\"]):not([style*=\"position:absolute\"]) {\n    width: 100%;\n    height: 450px;\n  }\n\n  [style*=\"padding-top\"] > iframe,\n  [style*=\"paddingTop\"] > iframe {\n    position: absolute !important;\n    top: 0 !important;\n    left: 0 !important;\n    width: 100% !important;\n    height: 100% !important;\n    border: none !important;\n  }\n\n  /* ── NATIVE IMAGE COMPONENT — ALIGNMENT ─────────────────────\n     ReadMe's \u003cImage align=\"center\"> renders as:\n       span.img.img-align-center\n         span.lightbox-inner\n           img.img\n     The span is display:block by default; margin:auto handles centering.\n     text-align:center covers inline-block fallback contexts.\n     ──────────────────────────────────────────────────────────── */\n  .img.img-align-center,\n  span.img.img-align-center {\n    display: block !important;\n    margin-left: auto !important;\n    margin-right: auto !important;\n    text-align: center !important;\n  }\n\n  /* ── IMAGE LIGHTBOX ─────────────────────────────────────────\n     ReadMe renders our \u003ca class=\"rp-zoom-label\">\u003cimg> as:\n       span.img.lightbox.closed\n         span.lightbox-inner\n           img.img[width=\"auto\"][height=\"auto\"]\n     When clicked, ReadMe's native JS opens its own lightbox.\n     We style the inline image only — sizing, border, hover.\n     The open-state lightbox is left to ReadMe's native behavior.\n\n     IMPORTANT: rp-zoom-label anchors must NEVER have target=\"_blank\".\n     When target=\"_blank\" is present, ReadMe skips lightbox conversion\n     and renders a real \u003ca> that opens/downloads the image in a new tab.\n     Keep the \u003ca> as a plain href with no target attribute.\n     ──────────────────────────────────────────────────────── */\n  .rp-zoom { display: contents; }\n  .rp-zoom-label { display: block; }\n\n  /* Defensive rule: if the anchor survives as a real \u003ca> (lightbox\n     conversion skipped), block navigation so the image isn't downloaded. */\n  a.rp-zoom-label {\n    pointer-events: none !important;\n  }\n  a.rp-zoom-label .img.lightbox,\n  a.rp-zoom-label span.img {\n    pointer-events: auto !important;\n    cursor: zoom-in !important;\n  }\n\n  /* Hide the legacy :target overlay anchor — still present in page MDX\n     but no longer needed now that ReadMe's native lightbox handles clicks */\n  .rp-zoom-overlay { display: none !important; }\n\n  /* Outermost wrapper — controls width and centering */\n  .rp-zoom-label .img.lightbox,\n  .rp-zoom-label span.img {\n    display: block !important;\n    width: 90% !important;\n    max-width: 860px !important;\n    margin: 16px auto !important;\n    cursor: zoom-in !important;\n  }\n  /* Inner span */\n  .rp-zoom-label .lightbox-inner {\n    display: block !important;\n    width: 100% !important;\n  }\n  /* The actual image — box-shadow for border (immune to border:none resets) */\n  .rp-zoom-label .lightbox-inner img,\n  .rp-zoom-label img.img,\n  .rp-zoom-img {\n    display: block !important;\n    width: 100% !important;\n    height: auto !important;\n    max-width: 100% !important;\n    border-radius: 8px !important;\n    box-shadow: 0 0 0 1px #D1CFC4 !important;\n    transition: opacity 0.15s ease;\n    box-sizing: border-box !important;\n  }\n  .rp-zoom-label:hover .lightbox-inner img,\n  .rp-zoom-label:hover img.img { opacity: 0.88; }\n\n  /* Small images — add class=\"rp-zoom-small\" directly on the \u003ca class=\"rp-zoom-label\"> */\n  /* The \u003cdiv class=\"rp-zoom-small\"> wrapper approach fails: ReadMe's MDX parser strips\n     block-level elements (div) from inline/paragraph contexts before the DOM is built,\n     so the div never renders and no descendant selectors fire.\n     Solution: apply rp-zoom-small as an additional class on the \u003ca> anchor itself.\n     Scope to .img.lightbox.closed (not .open) — ReadMe toggles closed→open on click,\n     not removes the class. The open lightbox renders in a separate fixed full-screen\n     overlay so the anchor width cap must not apply when open. */\n  a.rp-zoom-label.rp-zoom-small {\n    display: block !important;\n    max-width: 320px !important;\n    width: 320px !important;\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  a.rp-zoom-label.rp-zoom-small .img.lightbox.closed,\n  a.rp-zoom-label.rp-zoom-small span.img.closed {\n    max-width: 320px !important;\n    width: 320px !important;\n  }\n\n  /* When open: release all size constraints so the full-screen overlay renders naturally */\n  a.rp-zoom-label.rp-zoom-small .img.lightbox.open,\n  a.rp-zoom-label.rp-zoom-small span.img.open {\n    max-width: none !important;\n    width: 90% !important;\n  }\n\n  .rp-toc {\n    display: flex; flex-wrap: wrap; gap: 8px;\n    margin: 0 0 32px;\n  }\n  .rp-toc-pill {\n    display: inline-flex; align-items: center; gap: 8px;\n    padding: 8px 18px 8px 10px; border-radius: 20px;\n    border: 1px solid var(--offblack) !important; background: var(--offblack) !important;\n    color: var(--offwhite) !important; text-decoration: none !important;\n    font-size: 13px; font-weight: 700;\n    white-space: nowrap;\n    transition: background 0.15s, border-color 0.15s, color 0.15s;\n  }\n  .rp-toc-pill:hover {\n    background: var(--tangerine) !important;\n    border-color: var(--tangerine) !important;\n    color: var(--offblack) !important;\n  }\n  .rp-toc-num {\n    display: inline-flex; align-items: center; justify-content: center;\n    width: 24px; height: 24px; border-radius: 50%;\n    background: var(--yellow) !important; color: var(--offblack) !important;\n    font-size: 11px; font-weight: 800; flex-shrink: 0;\n    text-decoration: none !important;\n  }\n\n  .rp-anchor {\n    color: inherit !important;\n    text-decoration: none !important;\n    font-size: inherit !important;\n    font-weight: inherit !important;\n    border-bottom: 0 !important;\n  }\n  .rp-anchor::after {\n    content: \" #\"; opacity: 0;\n    color: var(--lightgray); font-weight: 400; font-size: 0.75em;\n    transition: opacity 0.15s;\n  }\n  .rp-anchor:hover::after { opacity: 1; }\n\n  .rp-page ol:not(.rp-list), .rp-page ul:not(.rp-list) {\n    margin: 8px 0 16px;\n    padding-left: 24px;\n  }\n  .rp-page ol:not(.rp-list) li, .rp-page ul:not(.rp-list) li {\n    margin-bottom: 6px;\n    line-height: 1.6;\n  }\n\n  @media (max-width: 640px) {\n    .rp-benefits,\n    .rp-benefits.rp-benefits-2x2 { grid-template-columns: 1fr; }\n    .rp-h1 { font-size: 1.25rem; }\n  }\n\n\n/* ============================================================\n   PART 1.5 — rp-btn-* navigation buttons\n   ============================================================\n   Placed OUTSIDE the scoped :root theme block so these rules\n   run at top-level specificity. Scoped under .rm-Markdown to\n   beat ReadMe's own .rm-Markdown.markdown-body a rules which\n   apply tangerine color, border-radius-full, and borders to\n   all \u003ca> elements.\n\n   Every variant is self-contained (single class). ReadMe's MDX\n   parser mangles space-separated multi-class strings on \u003ca>\n   elements into comma-separated values — \"rp-btn rp-btn-primary\"\n   becomes the literal class \"rp-btn,rp-btn-primary\" which matches\n   nothing. Single class only, always.\n\n   Token values are hardcoded here (not var()) because these rules\n   sit outside the :root scoped block where the shorthand tokens\n   (--yellow, --offblack, etc.) are defined.\n   ============================================================ */\n\n.rm-Markdown.markdown-body a.rp-btn-primary,\n.rm-Markdown.markdown-body .rp-btn-primary {\n  display: inline-block !important;\n  padding: 10px 22px !important;\n  border-radius: 8px !important;\n  border: 0 !important;\n  box-shadow: none !important;\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  font-family: var(--recurly-font) !important;\n  text-decoration: none !important;\n  cursor: pointer !important;\n  margin: 6px 8px 6px 0 !important;\n  background: #0D0D0B !important;\n  color: #FFD706 !important;\n  transition: all 0.15s ease !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-primary:hover,\n.rm-Markdown.markdown-body .rp-btn-primary:hover {\n  background: #32312D !important;\n  color: #FFD706 !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 4px 12px rgba(13, 13, 11, 0.15) !important;\n}\n\n.rm-Markdown.markdown-body a.rp-btn-secondary,\n.rm-Markdown.markdown-body .rp-btn-secondary {\n  display: inline-block !important;\n  padding: 10px 22px !important;\n  border-radius: 8px !important;\n  border: 0 !important;\n  box-shadow: none !important;\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  font-family: var(--recurly-font) !important;\n  text-decoration: none !important;\n  cursor: pointer !important;\n  margin: 6px 8px 6px 0 !important;\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  transition: all 0.15s ease !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-secondary:hover,\n.rm-Markdown.markdown-body .rp-btn-secondary:hover {\n  filter: brightness(0.9) !important;\n  color: #0D0D0B !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 4px 12px rgba(255, 215, 6, 0.2) !important;\n}\n\n.rm-Markdown.markdown-body a.rp-btn-ghost,\n.rm-Markdown.markdown-body .rp-btn-ghost {\n  display: inline-block !important;\n  padding: 10px 22px !important;\n  border-radius: 8px !important;\n  border: 1px solid #D1CFC4 !important;\n  box-shadow: none !important;\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  font-family: var(--recurly-font) !important;\n  text-decoration: none !important;\n  cursor: pointer !important;\n  margin: 6px 8px 6px 0 !important;\n  background: transparent !important;\n  color: #32312D !important;\n  transition: all 0.15s ease !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-ghost:hover,\n.rm-Markdown.markdown-body .rp-btn-ghost:hover {\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  border-color: #FFD706 !important;\n}\n\n.rm-Markdown.markdown-body a.rp-btn-download,\n.rm-Markdown.markdown-body .rp-btn-download {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  padding: 10px 22px !important;\n  border-radius: 8px !important;\n  border: 0 !important;\n  box-shadow: none !important;\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  font-family: var(--recurly-font) !important;\n  text-decoration: none !important;\n  cursor: pointer !important;\n  margin-bottom: 20px !important;\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  transition: filter 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-download:hover,\n.rm-Markdown.markdown-body .rp-btn-download:hover {\n  filter: brightness(0.92) !important;\n  color: #0D0D0B !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 4px 12px rgba(255, 215, 6, 0.25) !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-download:active,\n.rm-Markdown.markdown-body .rp-btn-download:active {\n  transform: scale(0.97) translateY(0) !important;\n  box-shadow: 0 1px 4px rgba(255, 215, 6, 0.15) !important;\n  filter: brightness(0.85) !important;\n}\n\n/* ——— Collapse \u003cp> wrapper margin around button anchors ———\n   ReadMe wraps standalone \u003ca> elements in a \u003cp> tag which carries\n   margin-bottom: 15px from the markdown body styles. Zero it out\n   when the paragraph contains only a button anchor. */\n.rm-Markdown.markdown-body p:has(> a.rp-btn-primary),\n.rm-Markdown.markdown-body p:has(> a.rp-btn-secondary),\n.rm-Markdown.markdown-body p:has(> a.rp-btn-ghost),\n.rm-Markdown.markdown-body p:has(> a.rp-btn-download) {\n  margin-bottom: 0 !important;\n  margin-top: 0 !important;\n}\n\n\n/* ============================================================\n   PART 1.6 — rp-shelf-* spotlight carousel\n   ============================================================\n   Interactive category shelf used on browsable overview pages\n   (e.g., \"More uses\"). Three variants:\n\n     .rp-shelf-single    → 1 card, centered. No carousel.\n     .rp-shelf-pair      → 2 cards, both fully lit. No carousel.\n     .rp-shelf-carousel  → 3+ cards, infinite loop. Active card\n                           centered at 100% opacity, neighbors at\n                           30% opacity. Requires the companion\n                           rp-shelf init script in Custom JS.\n\n   Expected structure (rendered inside HTMLBlock):\n\n     \u003cdiv class=\"rp-shelf rp-shelf-carousel\">\n       \u003cdiv class=\"rp-shelf-header\">\n         \u003cdiv class=\"rp-shelf-label\">\u003ci class=\"fa-solid fa-*\">\u003c/i>Category\u003c/div>\n         \u003cdiv class=\"rp-shelf-count\">N scenarios\u003c/div>\n       \u003c/div>\n       \u003cdiv class=\"rp-shelf-viewport\">\n         \u003cdiv class=\"rp-shelf-track\">\n           \u003cdiv class=\"rp-shelf-card\">\n             \u003cstrong>Title\u003c/strong>\n             \u003cspan>Body copy.\u003c/span>\n           \u003c/div>\n           ...\n         \u003c/div>\n       \u003c/div>\n       \u003cdiv class=\"rp-shelf-controls\">\n         \u003cbutton class=\"rp-shelf-btn rp-shelf-prev\">...\u003c/button>\n         \u003cbutton class=\"rp-shelf-btn rp-shelf-next\">...\u003c/button>\n       \u003c/div>\n     \u003c/div>\n\n   Token values are hardcoded (not var()) because these rules\n   sit outside the :root scoped block where the shorthand tokens\n   (--yellow, --offblack, etc.) are defined — same pattern as\n   PART 1.5.\n   ============================================================ */\n\n/* ——— Outer container: dark hero panel with soft yellow glow ——— */\n.rp-shelf {\n  background: #0D0D0B;\n  border-radius: 16px;\n  padding: 24px 20px 20px;\n  margin-bottom: 20px;\n  box-shadow:\n    0 0 0 1px rgba(255, 215, 6, 0.10),\n    0 24px 60px -30px rgba(255, 215, 6, 0.20);\n}\n\n/* ——— Header: yellow pill label + muted count ——— */\n.rp-shelf-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin-bottom: 18px;\n}\n.rp-shelf-label {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  background: #FFD706;\n  color: #0D0D0B;\n  font-size: 13px;\n  font-weight: 700;\n  padding: 6px 16px;\n  border-radius: 20px;\n  letter-spacing: 0.3px;\n  font-family: var(--recurly-font);\n}\n.rp-shelf-count {\n  font-size: 11px;\n  color: rgba(252, 251, 247, 0.45);\n  letter-spacing: 1.2px;\n  text-transform: uppercase;\n  font-weight: 600;\n  font-family: var(--recurly-font);\n}\n\n/* ——— Viewport clips overflow; track holds the cards ——— */\n.rp-shelf-viewport {\n  overflow: hidden;\n}\n.rp-shelf-track {\n  display: flex;\n  gap: 14px;\n  will-change: transform;\n}\n\n/* ——— Cards: dimmed by default, spotlit when .rp-active ——— */\n.rp-shelf-card {\n  background: linear-gradient(135deg, #1C1B18 0%, #0D0D0B 100%);\n  border: 1px solid rgba(255, 215, 6, 0.15);\n  border-radius: 12px;\n  padding: 24px 26px;\n  min-height: 140px;\n  opacity: 0.3;\n  transform: scale(0.95);\n  transition:\n    opacity 0.5s ease,\n    transform 0.5s ease,\n    border-color 0.5s ease,\n    box-shadow 0.5s ease;\n}\n.rp-shelf-card strong {\n  display: block;\n  font-size: 15px;\n  font-weight: 700;\n  color: #FCFBF7;\n  margin-bottom: 10px;\n  font-family: var(--recurly-font);\n}\n.rp-shelf-card span {\n  display: block;\n  font-size: 13px;\n  color: rgba(252, 251, 247, 0.70);\n  line-height: 1.65;\n  font-family: var(--recurly-font);\n}\n.rp-shelf-card a {\n  color: #FFD706;\n  text-decoration: underline;\n}\n.rp-shelf-card.rp-active {\n  opacity: 1;\n  transform: scale(1);\n  border-color: rgba(255, 215, 6, 0.35);\n  box-shadow:\n    0 0 40px -10px rgba(255, 215, 6, 0.25),\n    0 0 0 1px rgba(255, 215, 6, 0.20);\n}\n\n/* ——— Carousel variant (3+ cards): 3 visible at a time ——— */\n.rp-shelf-carousel .rp-shelf-card {\n  flex: 0 0 calc((100% - 28px) / 3);\n}\n.rp-shelf-carousel .rp-shelf-track {\n  transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* ——— Static variants (1 or 2 cards): no carousel, all lit ——— */\n.rp-shelf-pair .rp-shelf-track,\n.rp-shelf-single .rp-shelf-track {\n  justify-content: center;\n}\n.rp-shelf-pair .rp-shelf-card {\n  flex: 0 0 calc((100% - 14px) / 2);\n}\n.rp-shelf-single .rp-shelf-card {\n  flex: 0 0 88%;\n}\n.rp-shelf-pair .rp-shelf-card,\n.rp-shelf-single .rp-shelf-card {\n  opacity: 1;\n  transform: none;\n  border-color: rgba(255, 215, 6, 0.30);\n}\n\n/* ——— Controls (rendered only in .rp-shelf-carousel) ——— */\n.rp-shelf-controls {\n  display: flex;\n  justify-content: center;\n  gap: 16px;\n  margin-top: 20px;\n}\n.rp-shelf-btn {\n  width: 44px !important;\n  height: 44px !important;\n  border-radius: 50% !important;\n  border: 1px solid rgba(255, 215, 6, 0.25) !important;\n  background: transparent !important;\n  color: #FFD706 !important;\n  font-size: 14px !important;\n  cursor: pointer !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  padding: 0 !important;\n  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;\n}\n.rp-shelf-btn:hover {\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  border-color: #FFD706 !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 4px 20px rgba(255, 215, 6, 0.35) !important;\n}\n.rp-shelf-btn:active {\n  transform: translateY(0) !important;\n}\n.rp-shelf-btn:focus-visible {\n  outline: 2px solid #FFD706 !important;\n  outline-offset: 2px !important;\n}\n\n/* ——— Mobile: ~1 card visible, larger touch targets ——— */\n@media (max-width: 640px) {\n  .rp-shelf-carousel .rp-shelf-card { flex: 0 0 82%; }\n  .rp-shelf-pair .rp-shelf-card { flex: 0 0 88%; }\n  .rp-shelf-pair .rp-shelf-track {\n    overflow-x: auto;\n    justify-content: flex-start;\n    scroll-snap-type: x mandatory;\n    padding-bottom: 6px;\n  }\n  .rp-shelf-pair .rp-shelf-card {\n    scroll-snap-align: center;\n  }\n}\n\n\n/* ============================================================\n   PART 2 — ReadMe native code-snippet overrides\n   ============================================================ */\n\n.CodeTabs,\n.CodeTabs.theme-light,\n.CodeTabs.theme-dark,\n.CodeTabs.CodeTabs_initial {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 10px !important;\n  margin: 16px 0 24px !important;\n  overflow: hidden !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 13px !important;\n  line-height: 1.55 !important;\n}\n\n.CodeTabs-toolbar {\n  background: var(--recurly-offblack) !important;\n  border-bottom: 1px solid var(--recurly-darkgray) !important;\n  padding: 8px 14px !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 4px !important;\n  flex-wrap: wrap !important;\n}\n\n/* ── CodeTabs toolbar buttons ─────────────────────────────────\n   ReadMe's JS adds class=\"CodeTabs_active\" to the selected button.\n   DOM confirmed: \u003cbutton class=\"CodeTabs_active\">Language\u003c/button>\n   ──────────────────────────────────────────────────────────── */\n\n.CodeTabs { --color-tab-active: #FFD706; }\n\n/* Base — all buttons */\n.CodeTabs-toolbar button {\n  background: transparent !important;\n  border: 0 !important;\n  color: var(--recurly-lightgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  padding: 5px 12px !important;\n  border-radius: 14px !important;\n  cursor: pointer !important;\n  transition: background 0.12s, color 0.12s !important;\n}\n\n/* Hover — inactive tabs only */\n.CodeTabs-toolbar button:not(.CodeTabs_active):hover {\n  background: transparent !important;\n  color: #FFD706 !important;\n}\n\n/* Active tab — ReadMe adds class=\"CodeTabs_active\" on the selected button */\n.CodeTabs-toolbar button.CodeTabs_active {\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  border-radius: 14px !important;\n  cursor: default !important;\n  opacity: 1 !important;\n  pointer-events: none !important;\n}\n\n/* Single-language block — plain yellow text label, never a pill */\n.CodeTabs-toolbar:has(> button:only-child) > button {\n  background: transparent !important;\n  color: #FFD706 !important;\n  border-radius: 0 !important;\n  cursor: default !important;\n  pointer-events: none !important;\n  opacity: 1 !important;\n}\n\n\n.CodeTabs-inner {\n  background: var(--recurly-offblack) !important;\n  position: relative !important;\n}\n\n.CodeTabs-inner pre {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  margin: 0 !important;\n  padding: 16px 18px !important;\n  border: 0 !important;\n  border-radius: 0 !important;\n  overflow-x: auto !important;\n  position: relative !important;\n}\n\n.CodeTabs-inner pre code,\n.CodeTabs code.rdmd-code {\n  background: transparent !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: inherit !important;\n  font-size: inherit !important;\n  line-height: inherit !important;\n  padding: 0 !important;\n}\n\n.CodeTabs .rdmd-code-copy {\n  background: transparent !important;\n  border: 1px solid var(--recurly-gray) !important;\n  color: var(--recurly-lightgray) !important;\n  border-radius: 6px !important;\n  padding: 4px 10px !important;\n  cursor: pointer !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n.CodeTabs .rdmd-code-copy:hover,\n.CodeTabs .rdmd-code-copy:focus {\n  background: var(--recurly-tangerine) !important;\n  border-color: var(--recurly-tangerine) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n.CodeTabs .rdmd-code-copy.fa::before { color: inherit !important; }\n\npre > code.rdmd-code:not(.CodeTabs *) {\n  display: block !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 10px !important;\n  margin: 16px 0 24px !important;\n  padding: 16px 18px !important;\n  overflow-x: auto !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 13px !important;\n  line-height: 1.55 !important;\n  white-space: pre !important;\n}\n\npre:has(> code.rdmd-code):not(.CodeTabs *) {\n  background: transparent !important;\n  border: 0 !important;\n  padding: 0 !important;\n  margin: 0 !important;\n}\n\n.CodeTabs code.rdmd-code .cm-s-neo,\n.CodeTabs code.rdmd-code .cm-s-neo span,\npre > code.rdmd-code .cm-s-neo,\npre > code.rdmd-code .cm-s-neo span { color: var(--recurly-offwhite) !important; }\n\n.CodeTabs code.rdmd-code .cm-s-neo .cm-keyword,\npre > code.rdmd-code .cm-s-neo .cm-keyword     { color: var(--recurly-yellow)     !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-def,\npre > code.rdmd-code .cm-s-neo .cm-def         { color: var(--recurly-tangerine)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-attribute,\npre > code.rdmd-code .cm-s-neo .cm-attribute   { color: var(--recurly-tangerine)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-string,\npre > code.rdmd-code .cm-s-neo .cm-string      { color: var(--recurly-green)      !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-string-2,\npre > code.rdmd-code .cm-s-neo .cm-string-2    { color: var(--recurly-green)      !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-number,\npre > code.rdmd-code .cm-s-neo .cm-number      { color: var(--recurly-vermillion) !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-comment,\npre > code.rdmd-code .cm-s-neo .cm-comment     { color: var(--recurly-gray)       !important; font-style: italic; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-meta,\npre > code.rdmd-code .cm-s-neo .cm-meta        { color: var(--recurly-tangerine)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-tag,\npre > code.rdmd-code .cm-s-neo .cm-tag         { color: var(--recurly-yellow)     !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-builtin,\npre > code.rdmd-code .cm-s-neo .cm-builtin     { color: var(--recurly-yellow)     !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-atom,\npre > code.rdmd-code .cm-s-neo .cm-atom        { color: var(--recurly-vermillion) !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-variable,\npre > code.rdmd-code .cm-s-neo .cm-variable    { color: var(--recurly-offwhite)   !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-variable-2,\npre > code.rdmd-code .cm-s-neo .cm-variable-2  { color: var(--recurly-offwhite)   !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-variable-3,\npre > code.rdmd-code .cm-s-neo .cm-variable-3  { color: var(--recurly-lightgray)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-property,\npre > code.rdmd-code .cm-s-neo .cm-property    { color: var(--recurly-lightgray)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-operator,\npre > code.rdmd-code .cm-s-neo .cm-operator    { color: var(--recurly-lightgray)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-punctuation,\npre > code.rdmd-code .cm-s-neo .cm-punctuation { color: var(--recurly-gray)       !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-bracket,\npre > code.rdmd-code .cm-s-neo .cm-bracket     { color: var(--recurly-lightgray)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-qualifier,\npre > code.rdmd-code .cm-s-neo .cm-qualifier   { color: var(--recurly-tangerine)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-link,\npre > code.rdmd-code .cm-s-neo .cm-link        { color: var(--recurly-yellow)     !important; text-decoration: underline !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-error,\npre > code.rdmd-code .cm-s-neo .cm-error       { color: var(--recurly-vermillion) !important; }\n\n\n/* ============================================================\n   PART 3 — ReadMe native MDX component branding\n   ============================================================ */\n\n.Accordion {\n  background: transparent !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 10px !important;\n  margin-bottom: 12px !important;\n  overflow: hidden !important;\n  font-family: var(--recurly-font) !important;\n}\n\n.Accordion-title {\n  list-style: none !important;\n  cursor: pointer !important;\n  padding: 16px 22px !important;\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-offblack) !important;\n  background: var(--recurly-yellow) !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 12px !important;\n  transition: background 0.15s, color 0.15s !important;\n}\n\n.Accordion-title::-webkit-details-marker { display: none !important; }\n.Accordion-title::marker { content: \"\" !important; }\n\n.Accordion-title:hover {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n}\n\n.Accordion[open] .Accordion-title {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n}\n\n.Accordion-toggleIcon {\n  color: var(--recurly-offblack) !important;\n  font-size: 13px !important;\n  font-weight: 900 !important;\n  transition: transform 0.2s, color 0.15s !important;\n  flex-shrink: 0 !important;\n  width: 14px !important;\n  text-align: center !important;\n}\n\n.Accordion-title:hover .Accordion-toggleIcon,\n.Accordion[open] .Accordion-title .Accordion-toggleIcon {\n  color: var(--recurly-yellow) !important;\n}\n\n.Accordion[open] .Accordion-toggleIcon {\n  transform: rotate(90deg) !important;\n}\n\n.Accordion-icon {\n  color: var(--recurly-offblack) !important;\n  --fa-primary-color: var(--recurly-offblack) !important;\n  --fa-secondary-color: var(--recurly-offblack) !important;\n  font-size: 15px !important;\n  flex-shrink: 0 !important;\n  width: 16px !important;\n  text-align: center !important;\n  transition: color 0.15s !important;\n}\n\n.Accordion-title:hover .Accordion-icon,\n.Accordion[open] .Accordion-title .Accordion-icon {\n  color: var(--recurly-yellow) !important;\n  --fa-primary-color: var(--recurly-yellow) !important;\n  --fa-secondary-color: var(--recurly-yellow) !important;\n}\n\n.Accordion-content {\n  padding: 16px 22px 18px 48px !important;\n  font-size: 14px !important;\n  line-height: 1.65 !important;\n  color: var(--recurly-darkgray) !important;\n}\n\n.Accordion-content p { margin: 0 0 10px !important; }\n.Accordion-content p:last-child { margin-bottom: 0 !important; }\n.Accordion-content a { color: var(--recurly-tangerine) !important; }\n.Accordion-content code {\n  background: var(--recurly-brightgray) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 0.92em !important;\n}\n\n.CardsGrid {\n  display: grid !important;\n  grid-template-columns: repeat(min(var(--CardsGrid-columns, 3), 3), minmax(var(--CardsGrid-cardWidth, 200px), 1fr)) !important;\n  gap: 14px !important;\n  margin: 16px 0 24px !important;\n}\n\n.Card,\n.Card.Card_card {\n  display: flex !important;\n  flex-direction: column !important;\n  gap: 14px !important;\n  background: var(--recurly-yellow) !important;\n  border: 0 !important;\n  border-radius: 10px !important;\n  padding: 20px !important;\n  text-decoration: none !important;\n  transition: background 0.15s, transform 0.15s, box-shadow 0.15s !important;\n  font-family: var(--recurly-font) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n.Card:hover,\n.Card.Card_card:hover {\n  background: var(--recurly-offblack) !important;\n  transform: translateY(-2px) !important;\n  box-shadow: 0 6px 14px rgba(13, 13, 11, 0.20) !important;\n  text-decoration: none !important;\n}\n\n.Card-icon {\n  color: var(--recurly-offblack) !important;\n  font-size: 22px !important;\n  width: 22px !important;\n  height: 22px !important;\n  flex-shrink: 0 !important;\n  filter: none !important;\n}\n\n.Card:hover .Card-icon { color: var(--recurly-yellow) !important; }\n\n.Card-content { display: flex !important; flex-direction: column !important; gap: 6px !important; }\n\n.Card-title {\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-offblack) !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: space-between !important;\n  gap: 8px !important;\n  line-height: 1.3 !important;\n}\n\n.Card:hover .Card-title { color: var(--recurly-offwhite) !important; }\n\n.Card-arrow {\n  color: var(--recurly-offblack) !important;\n  font-size: 13px !important;\n  transition: transform 0.15s !important;\n  flex-shrink: 0 !important;\n}\n\n.Card:hover .Card-arrow { transform: translateX(3px) !important; color: var(--recurly-yellow) !important; }\n\n\n/* ── FA6 DUOTONE DOUBLING FIX ────────────────────────────────\n   ReadMe's Card component outputs fa-duotone + fa-solid together.\n   In FA6 Pro, fa-duotone switches the font-family to the Duotone\n   font which renders two pseudo-element layers — causing doubled\n   or incomplete icons when the two layers don't align.\n   Fix: force the FA6 Pro solid font-family on these combos so\n   the icon renders as a clean single-layer solid icon.\n   This overrides the font-family set by fa-duotone without\n   touching the pseudo-elements, preserving icon completeness.\n   ──────────────────────────────────────────────────────────── */\n.fa-duotone.fa-solid,\n.fad.fa-solid {\n  font-family: \"Font Awesome 6 Pro\" !important;\n  font-weight: 900 !important;\n}\n.fa-duotone.fa-solid::after,\n.fad.fa-solid::after {\n  display: none !important;\n}\n.fa-duotone.fa-solid::before,\n.fad.fa-solid::before {\n  position: static !important;\n  opacity: 1 !important;\n}\n\n.Card p,\n.Card-body,\n.Card-content,\n.Card-content p,\n.Card-content div,\n.Card > p,\n.Card > div:not(.Card-title):not(.Card-icon):not(.Card-arrow):not(.Card-content) {\n  margin: 0 !important;\n  font-size: 13px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.55 !important;\n  font-family: var(--recurly-font) !important;\n}\n\n/* Card-title sits inside Card-content — restore its own color */\n.Card-content .Card-title {\n  color: var(--recurly-offblack) !important;\n  font-size: 15px !important;\n  font-weight: 700 !important;\n}\n\n.Card:hover p,\n.Card:hover .Card-body,\n.Card:hover .Card-content,\n.Card:hover .Card-content p,\n.Card:hover .Card-content div,\n.Card:hover > p,\n.Card:hover > div:not(.Card-title):not(.Card-icon):not(.Card-arrow):not(.Card-content) {\n  color: var(--recurly-lightgray) !important;\n}\n\n.Card:hover .Card-content .Card-title {\n  color: var(--recurly-offwhite) !important;\n}\n\n/* SDK split-pill cards — actual DOM:\n   \u003ca class=\"Card\"> \u003cdiv class=\"Card-content\"> \u003cdiv class=\"Card-title\">\n     Label \u003ci class=\"Card-arrow\">\u003c/i>\n   \u003c/div> \u003c/div> \u003c/a>\n   The yellow right block is a ::after pseudo-element on .Card so it's\n   independent of the DOM structure. The inline arrow \u003ci> is hidden;\n   the arrow visual comes from the ::after pseudo's content.\n   Hover: full inversion — yellow body, offblack arrow block.\n   rp-sdk-grid margin-top separates the grid from TOC pills above. */\n.rp-sdk-grid {\n  margin-top: 28px !important;\n}\n\n.rp-sdk-grid .Card,\n.rp-sdk-grid .Card.Card_card {\n  position: relative !important;\n  display: flex !important;\n  flex-direction: row !important;\n  align-items: stretch !important;\n  background: #0D0D0B !important;\n  border: 0 !important;\n  border-radius: 8px !important;\n  padding: 0 !important;\n  gap: 0 !important;\n  overflow: hidden !important;\n  box-shadow: none !important;\n  transition: transform 0.15s, box-shadow 0.15s !important;\n  text-decoration: none !important;\n}\n\n.rp-sdk-grid .Card:hover,\n.rp-sdk-grid .Card.Card_card:hover {\n  transform: translateY(-2px) !important;\n  box-shadow: 0 4px 12px rgba(255, 215, 6, 0.22) !important;\n}\n\n/* Left body */\n.rp-sdk-grid .Card-content {\n  flex: 1 !important;\n  background: transparent !important;\n  padding: 11px 14px !important;\n  display: flex !important;\n  align-items: center !important;\n  min-width: 0 !important;\n}\n\n.rp-sdk-grid .Card-title {\n  display: flex !important;\n  align-items: center !important;\n  justify-content: flex-start !important;\n  font-size: 13px !important;\n  font-weight: 700 !important;\n  color: #FCFBF7 !important;\n  letter-spacing: 0.2px !important;\n  white-space: nowrap !important;\n  overflow: hidden !important;\n  text-overflow: ellipsis !important;\n  width: 100% !important;\n}\n\n/* Hide the inline arrow icon — the ::after pseudo provides the arrow zone */\n.rp-sdk-grid .Card-arrow {\n  display: none !important;\n}\n\n/* Right yellow accent block via pseudo-element */\n.rp-sdk-grid .Card::after {\n  content: '→' !important;\n  flex-shrink: 0 !important;\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  padding: 0 13px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  box-shadow: -3px 0 8px rgba(13, 13, 11, 0.30) !important;\n  transition: background 0.15s, color 0.15s, box-shadow 0.15s !important;\n  align-self: stretch !important;\n}\n\n/* Hover inversion */\n.rp-sdk-grid .Card:hover {\n  background: #FFD706 !important;\n}\n\n.rp-sdk-grid .Card:hover .Card-title {\n  color: #0D0D0B !important;\n}\n\n.rp-sdk-grid .Card:hover::after {\n  background: #0D0D0B !important;\n  color: #FFD706 !important;\n  box-shadow: -3px 0 8px rgba(0, 0, 0, 0.40) !important;\n}\n\n/* ── NAVIGATIONAL OVERVIEW CARDS (rp-nav-grid) ───────────────\n   Use for overview/orientation pages that link to child pages,\n   where each card has a title + multi-line description.\n   Distinct from rp-sdk-grid (compact split-pill, title-only).\n   rp-sdk-grid  → SDK links, partner integrations, short labels\n   rp-nav-grid  → overview pages, \"Key details\" nav cards with descriptions\n   ──────────────────────────────────────────────────────────── */\n.rp-nav-grid {\n  margin-top: 28px !important;\n}\n\n.rp-nav-grid .Card,\n.rp-nav-grid .Card.Card_card {\n  display: flex !important;\n  flex-direction: column !important;\n  background: var(--recurly-yellow) !important;\n  border: 0 !important;\n  border-radius: 10px !important;\n  padding: 20px 24px !important;\n  gap: 8px !important;\n  overflow: hidden !important;\n  box-shadow: none !important;\n  transition: background 0.15s, box-shadow 0.15s, transform 0.15s !important;\n  text-decoration: none !important;\n}\n\n.rp-nav-grid .Card:hover,\n.rp-nav-grid .Card.Card_card:hover {\n  background: var(--recurly-offblack) !important;\n  box-shadow: 0 6px 14px rgba(13, 13, 11, 0.20) !important;\n  transform: translateY(-2px) !important;\n}\n\n.rp-nav-grid .Card-icon {\n  display: none !important;\n}\n\n.rp-nav-grid .Card-title {\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-offblack) !important;\n  justify-content: space-between !important;\n  white-space: normal !important;\n}\n\n.rp-nav-grid .Card:hover .Card-title {\n  color: var(--recurly-offwhite) !important;\n}\n\n.rp-nav-grid .Card-arrow {\n  color: var(--recurly-offblack) !important;\n  flex-shrink: 0 !important;\n}\n\n.rp-nav-grid .Card:hover .Card-arrow {\n  color: var(--recurly-yellow) !important;\n  transform: translateX(3px) !important;\n}\n\n.rp-nav-grid .Card p,\n.rp-nav-grid .Card-content p,\n.rp-nav-grid .Card-content div,\n.rp-nav-grid .Card > p {\n  font-size: 13px !important;\n  color: var(--recurly-offblack) !important;\n  line-height: 1.6 !important;\n  margin: 0 !important;\n}\n\n.rp-nav-grid .Card:hover p,\n.rp-nav-grid .Card:hover .Card-content p,\n.rp-nav-grid .Card:hover .Card-content div,\n.rp-nav-grid .Card:hover > p {\n  color: var(--recurly-lightgray) !important;\n}\n\n.TabGroup-nav {\n  display: flex !important;\n  flex-wrap: wrap !important;\n  align-items: flex-end !important;\n  border-bottom: 2px solid var(--recurly-lightgray) !important;\n  margin: 16px 0 24px !important;\n  padding: 0 !important;\n  gap: 4px !important;\n  font-family: var(--recurly-font) !important;\n}\n\n.TabGroup-tab,\n.TabGroup-tab_active {\n  background: transparent !important;\n  border: 0 !important;\n  border-bottom: 2px solid transparent !important;\n  margin-bottom: -2px !important;\n  padding: 10px 18px !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-gray) !important;\n  cursor: pointer !important;\n  transition: color 0.15s, border-color 0.15s !important;\n}\n\n.TabGroup-tab:hover { color: var(--recurly-yellow) !important; }\n\n.TabGroup-tab_active {\n  color: var(--recurly-offblack) !important;\n  border-bottom-color: var(--recurly-yellow) !important;\n  cursor: default !important;\n}\n\n.Columns { display: grid !important; gap: 20px !important; margin: 16px 0 24px !important; font-family: var(--recurly-font) !important; }\n\n.Column { font-size: 14px !important; color: var(--recurly-darkgray) !important; line-height: 1.65 !important; min-width: 0 !important; }\n.Column > *:first-child { margin-top: 0 !important; }\n.Column > *:last-child  { margin-bottom: 0 !important; }\n.Column p { margin: 0 0 12px !important; }\n.Column blockquote { margin: 0 !important; padding: 0 !important; border: 0 !important; background: transparent !important; border-radius: 0 !important; }\n.Column blockquote p { margin: 0 0 12px !important; font-style: normal !important; color: inherit !important; }\n.Column blockquote p:last-child { margin-bottom: 0 !important; }\n.Column a { color: var(--recurly-tangerine) !important; }\n\n@media (max-width: 640px) {\n  .Columns { grid-template-columns: 1fr !important; }\n  .CardsGrid { grid-template-columns: 1fr !important; }\n}\n\n\n/* ============================================================\n   PART 4 — ReadMe native table branding\n   ============================================================ */\n\n/* Scoped to :has(thead) so this collapse rule never fires on\n   rp-* HTML tables (which use rp-thead-row / td, not thead / th). */\n.rdmd-table:has(thead) table {\n  width: 100% !important;\n  border-collapse: collapse !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  margin: 12px 0 24px !important;\n}\n\n.rdmd-table thead tr { background: var(--recurly-offblack) !important; }\n\n.rdmd-table thead tr th {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  font-weight: 700 !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  text-align: left !important;\n}\n\n.rdmd-table thead tr th strong,\n.rdmd-table thead tr th * { color: var(--recurly-offwhite) !important; }\n\n.rdmd-table tbody tr { background: var(--recurly-offwhite) !important; }\n\n.rdmd-table tbody tr td {\n  background: var(--recurly-offwhite) !important;\n  color: var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  vertical-align: top !important;\n  line-height: 1.6 !important;\n}\n\n.rdmd-table tbody tr td a { color: var(--recurly-tangerine) !important; }\n.rdmd-table tbody tr td a:hover { color: var(--recurly-offblack) !important; }\n\n.rdmd-table tbody tr td code.rdmd-code {\n  background: var(--recurly-brightgray) !important;\n  color: var(--recurly-darkgray) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 0.92em !important;\n}\n\n.rdmd-table-inner {\n  border-radius: 10px !important;\n  overflow: hidden !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n}\n\n/* rp-thead-row variant — tables that use \u003ctr class=\"rp-thead-row\"> instead of \u003cthead>.\n   Mirrors the :has(thead) rules above without the thead scope guard. */\n.rdmd-table:not(:has(thead)) table {\n  width: 100% !important;\n  border-collapse: collapse !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  margin: 12px 0 24px !important;\n}\n\n.rdmd-table tr.rp-thead-row {\n  background: var(--recurly-offblack) !important;\n}\n\n.rdmd-table tr.rp-thead-row td {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  font-weight: 700 !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  text-align: left !important;\n}\n\n.rdmd-table tr.rp-thead-row td strong,\n.rdmd-table tr.rp-thead-row td * { color: var(--recurly-offwhite) !important; }\n\n.rdmd-table:not(:has(thead)) tbody tr,\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) {\n  background: var(--recurly-offwhite) !important;\n}\n\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td {\n  background: var(--recurly-offwhite) !important;\n  color: var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  vertical-align: top !important;\n  line-height: 1.6 !important;\n}\n\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td a { color: var(--recurly-tangerine) !important; }\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td a:hover { color: var(--recurly-offblack) !important; }\n\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td code.rdmd-code {\n  background: var(--recurly-brightgray) !important;\n  color: var(--recurly-darkgray) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 0.92em !important;\n}\n\n\n/* ============================================================\n   PART 5 — Version selector branding\n   ============================================================ */\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) {\n  width: min(920px, calc(100vw - 40px)) !important;\n  max-width: min(920px, calc(100vw - 40px)) !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .tippy-box,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .tippy-content,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .Dropdown-content,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .Box,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu {\n  width: 100% !important;\n  max-width: 100% !important;\n  box-sizing: border-box !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu {\n  max-height: 620px !important;\n  overflow: auto !important;\n  padding: 16px !important;\n  display: grid !important;\n  grid-template-columns: repeat(auto-fill, minmax(145px, 1fr)) !important;\n  gap: 10px !important;\n  font-family: var(--recurly-font) !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu::before {\n  content: \"API V3\"; order: 1; grid-column: 1 / -1; margin: 0 0 2px 0;\n  color: var(--recurly-darkgray) !important; font-family: var(--recurly-font) !important;\n  font-size: 12px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu::after {\n  content: \"API V2\"; order: 20; grid-column: 1 / -1; margin: 10px 0 2px 0;\n  color: var(--recurly-darkgray) !important; font-family: var(--recurly-font) !important;\n  font-size: 12px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item {\n  width: auto !important; min-width: 0 !important; min-height: 48px !important; height: auto !important;\n  display: flex !important; align-items: center !important; padding: 10px 12px !important;\n  border: 1px solid var(--recurly-lightgray) !important; border-radius: 10px !important;\n  background: var(--recurly-offwhite) !important; color: var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important; text-decoration: none !important;\n  box-sizing: border-box !important; transition: background 0.15s, border-color 0.15s, color 0.15s !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*=\"/v20\"],\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*=\"/v2999\"] { order: 10; }\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*=\"/v2.\"] { order: 30; }\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*=\"/v1.\"] { display: none !important; }\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href=\"/reference-docs/reference\"] { display: none !important; }\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=\"VersionDropdown-item\"],\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=\"VersionDropdown-item-content\"] { width: 100% !important; min-width: 0 !important; }\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=\"VersionDropdown-item-label\"] {\n  display: block !important; min-width: 0 !important; overflow: hidden !important;\n  text-overflow: ellipsis !important; white-space: nowrap !important;\n  font-family: var(--recurly-font) !important; font-size: 15px !important; font-weight: 600 !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item_active {\n  border-color: var(--recurly-tangerine) !important; background: var(--recurly-brightgray) !important;\n  color: var(--recurly-offblack) !important; box-shadow: 0 0 0 2px rgba(0, 140, 255, 0.12) !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item:hover,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item:focus {\n  border-color: var(--recurly-tangerine) !important; background: var(--recurly-brightgray) !important;\n  color: var(--recurly-offblack) !important; outline: none !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Badge,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .IconWrapper,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=\"IconWrapper\"] { flex: 0 0 auto !important; }\n\n@media (max-width: 700px) {\n  [data-tippy-root]:has(.rm-VersionDropdown-menu) { width: calc(100vw - 32px) !important; max-width: calc(100vw - 32px) !important; }\n  [data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)) !important; max-height: 420px !important; }\n  [data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item { min-height: 44px !important; padding: 9px 10px !important; }\n}\n\n/* ============================================================\n   PART 9 — API Reference supplemental polish\n   ============================================================\n   Part 3 owns the primary styles for enum pills, response\n   accordion rows, and logs table/footer. This part only covers\n   what Part 3 doesn't: param expand rows, \"required\" badge,\n   param container backgrounds, page h1, and misc elements.\n   ============================================================ */\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.1 — \"required\" badge  +  \"Allowed:\" label\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"Param-required\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.4px !important;\n  text-transform: uppercase !important;\n  color: var(--recurly-vermillion) !important;\n  background: rgba(255, 81, 38, 0.10) !important;\n  border-radius: 4px !important;\n  padding: 1px 6px !important;\n}\n\n[class*=\"Param-enum-section_compact-label\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.5px !important;\n  text-transform: uppercase !important;\n  color: var(--recurly-gray) !important;\n}\n\n/* Inner code token inside enum pills — inherit from button shell */\n[class*=\"Param-enum-section-item\"] code,\n[class*=\"Param-enum-section-item-value\"] {\n  background: transparent !important;\n  color: inherit !important;\n  font-family: inherit !important;\n  font-size: inherit !important;\n  font-weight: inherit !important;\n  padding: 0 !important;\n  border-radius: 0 !important;\n  box-shadow: none !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.2 — Param expand rows  (array-of-string: ADD STRING / STRING)\n   The full-row button has class \"Flex … Param-expand-button…\".\n   The icon-only reorder/delete buttons do NOT have \"Flex\".\n   Selecting on BOTH fragments excludes the icon buttons safely.\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"Param-expand\"] {\n  background: transparent !important;\n}\n\n/* Full-row expand button only (has both Flex + Param-expand-button in its class) */\n[class*=\"Flex\"][class*=\"Param-expand-button\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.3px !important;\n  color: var(--recurly-offwhite) !important;\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 8px !important;\n  padding: 8px 12px !important;\n  width: 100% !important;\n  text-align: left !important;\n  cursor: pointer !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"Flex\"][class*=\"Param-expand-button\"]:hover {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-gray) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Label and icon inside — inherit color from button */\n[class*=\"Param-expand-label\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: inherit !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.3px !important;\n}\n\n[class*=\"Param-expand-button-icon\"] {\n  color: inherit !important;\n}\n\n/* ── \"Show N enum values\" / \"Hide enum values\" toggle ─────────\n   DOM: button.Button_minimum_ghost.Button_minimum inside\n        [class*=\"Param-enum-section_expanded-container-header\"]\n   Same offblack→yellow pill style as enum pills.\n   ──────────────────────────────────────────────────────────── */\n[class*=\"Param-enum-section_expanded-container-header\"] .Button,\n[class*=\"Param-enum-section_expanded-container-header\"] button {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.3px !important;\n  color: var(--recurly-offwhite) !important;\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-offblack) !important;\n  border-radius: 20px !important;\n  padding: 5px 14px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"Param-enum-section_expanded-container-header\"] .Button:hover,\n[class*=\"Param-enum-section_expanded-container-header\"] button:hover {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Also style the \"Show N enum values\" collapsed button (sits outside the expanded container) */\n[class*=\"Param-enum-section\"] > div > .Button[class*=\"Button_minimum\"],\n[class*=\"Param-enum-section\"] > div > button[class*=\"Button_minimum\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.3px !important;\n  color: var(--recurly-offwhite) !important;\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-offblack) !important;\n  border-radius: 20px !important;\n  padding: 5px 14px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"Param-enum-section\"] > div > .Button[class*=\"Button_minimum\"]:hover,\n[class*=\"Param-enum-section\"] > div > button[class*=\"Button_minimum\"]:hover {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n[class*=\"Param-expand\"] input,\n[class*=\"Param-expand\"] .Input {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  background: #fff !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 6px !important;\n  color: var(--recurly-darkgray) !important;\n}\n\n[class*=\"Param-expand\"] input:focus,\n[class*=\"Param-expand\"] .Input:focus {\n  border-color: var(--recurly-offblack) !important;\n  outline: none !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.3 — Param container backgrounds\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"Param-contentWrapper\"],\n[class*=\"rm-ParamContainer\"],\n[class*=\"Fieldset\"],\n.rm-APISchema,\n[class*=\"rjsf\"] {\n  background: #fff !important;\n}\n\n.rm-ParamInput,\n.rm-ParamSelect {\n  background: #fff !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.4 — Response accordion interior  (expanded pane only)\n   Part 3 owns the toggle buttons. This styles the open pane.\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n.rm-APIResponseSchemaPicker [class*=\"AccordionContent\"] {\n  background: #fff !important;\n}\n\n.rm-APIResponseSchemaPicker .rm-APISectionHeader {\n  background: #fff !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  padding-bottom: 8px !important;\n  margin-bottom: 12px !important;\n}\n\n.rm-APIResponseSchemaPicker .rm-APISectionHeader [class*=\"APISectionHeader-heading\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 800 !important;\n  color: var(--recurly-gray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.8px !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.5 — Tag tooltip button (top-right of h1)\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"TagTooltip-tag-button\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-gray) !important;\n  background: transparent !important;\n  border: 0 !important;\n  border-radius: 4px !important;\n  padding: 2px 4px !important;\n  transition: background 0.12s, color 0.12s !important;\n}\n\n[class*=\"TagTooltip-tag-button\"]:hover {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.6 — API page h1\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"headline-container\"] h1.Title,\n[class*=\"headline-container\"] h1 {\n  font-family: var(--recurly-font) !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offblack) !important;\n  font-size: 1.6rem !important;\n  padding-bottom: 10px !important;\n  border-bottom: 2px solid var(--recurly-yellow) !important;\n  margin-bottom: 14px !important;\n}\n\n\n/* ============================================================\n   CODETABS ACTIVE BUTTON — KEPT LAST IN FILE\n   DOM confirmed: class=\"CodeTabs_active\" on selected button.\n   Duplicated here to win cascade battles with ReadMe's host\n   CSS which loads after this stylesheet.\n   ============================================================ */\n\n.CodeTabs-toolbar button.CodeTabs_active {\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  border-radius: 14px !important;\n  cursor: default !important;\n  opacity: 1 !important;\n  pointer-events: none !important;\n}\n\n/* Single-language lone button — plain yellow label, never a pill */\n.CodeTabs-toolbar:has(> button:only-child) > button {\n  background: transparent !important;\n  color: #FFD706 !important;\n  border-radius: 0 !important;\n  cursor: default !important;\n  pointer-events: none !important;\n  opacity: 1 !important;\n}\n\n/* Hover — inactive buttons only */\n.CodeTabs-toolbar button:not(.CodeTabs_active):hover {\n  background: transparent !important;\n  color: #FFD706 !important;\n}","stylesheet_hub3":"","javascript":"","javascript_hub2":"(() => {\n  \"use strict\";\n\n  /*\n   * Recurly Changelog navigation override\n   *\n   * - Rewrites each native ReadMe Changelog link\n   * - Supports full page loads and ReadMe SPA navigation\n   * - Highlights Changelog only on the exact custom changelog page\n   * - Restores Directory and other native section highlighting everywhere else\n   */\n\n  const SCRIPT_KEY = \"__recurlyChangelogNavigation\";\n\n  const PROJECTS = {\n    \"recurly-subscriptions\": {\n      targetPath:\n        \"/recurly-subscriptions/docs/recurly-subscriptions-changelog\",\n    },\n\n    \"recurly-commerce\": {\n      targetPath:\n        \"/recurly-commerce/docs/recurly-commerce-changelog\",\n    },\n\n    \"recurly-engage\": {\n      targetPath:\n        \"/recurly-engage/docs/recurly-engage-changelog\",\n    },\n\n    \"recurly-revrec\": {\n      targetPath:\n        \"/recurly-revrec/docs/changelog\",\n    },\n  };\n\n  const NAV_SELECTOR =\n    'nav[aria-label=\"Primary navigation\"]';\n\n  /*\n   * ReadMe's mobile hamburger menu is a separate\n   * \"flyout\" component, not a \u003cnav aria-label=\"Primary\n   * navigation\">. Its items carry ReadMe's stable \"rm-\"\n   * prefixed hook class (unlike the CSS-module hashed\n   * classes alongside it, which change across deploys).\n   */\n  const MOBILE_NAV_SELECTOR =\n    \".rm-MobileFlyout-item[href]\";\n\n  const CHANGELOG_TARGET_ATTRIBUTE =\n    \"data-recurly-changelog-target\";\n\n  /*\n   * Remove an older instance if this script is loaded again.\n   */\n  if (\n    window[SCRIPT_KEY] &&\n    typeof window[SCRIPT_KEY].destroy === \"function\"\n  ) {\n    window[SCRIPT_KEY].destroy();\n  }\n\n  const state = {\n    observer: null,\n    routeInterval: null,\n    animationFrame: null,\n    retryTimers: new Set(),\n    lastPath: \"\",\n    destroyed: false,\n  };\n\n  function normalizePath(value) {\n    try {\n      const url = new URL(\n        value,\n        window.location.origin\n      );\n\n      const pathname = url.pathname || \"/\";\n\n      if (pathname === \"/\") {\n        return \"/\";\n      }\n\n      return pathname.replace(/\\/+$/, \"\");\n    } catch (error) {\n      return \"\";\n    }\n  }\n\n  function getCurrentPath() {\n    return normalizePath(window.location.href);\n  }\n\n  function getCurrentProject() {\n    const pathname = getCurrentPath();\n\n    const projectKey = pathname\n      .split(\"/\")\n      .filter(Boolean)[0];\n\n    const projectConfig =\n      PROJECTS[projectKey];\n\n    if (!projectConfig) {\n      return null;\n    }\n\n    const rootPath = `/${projectKey}`;\n\n    return {\n      key: projectKey,\n      pathname,\n      rootPath,\n      docsPath: `${rootPath}/docs`,\n      referencePath: `${rootPath}/reference`,\n      recipesPath: `${rootPath}/recipes`,\n      discussionsPath: `${rootPath}/discuss`,\n      nativeChangelogPath: `${rootPath}/changelog`,\n      targetPath: normalizePath(\n        projectConfig.targetPath\n      ),\n      targetUrl: new URL(\n        projectConfig.targetPath,\n        window.location.origin\n      ).href,\n    };\n  }\n\n  function pathIsWithin(\n    pathname,\n    sectionPath\n  ) {\n    return (\n      pathname === sectionPath ||\n      pathname.startsWith(\n        `${sectionPath}/`\n      )\n    );\n  }\n\n  function getPrimaryNavs() {\n    return Array.from(\n      document.querySelectorAll(\n        NAV_SELECTOR\n      )\n    );\n  }\n\n  function getNavLinks(nav) {\n    return Array.from(\n      nav.querySelectorAll(\"a[href]\")\n    );\n  }\n\n  function getLinkText(link) {\n    return link.textContent\n      .replace(/\\s+/g, \" \")\n      .trim()\n      .toLowerCase();\n  }\n\n  function getLinkPath(link) {\n    return normalizePath(\n      link.getAttribute(\"href\")\n    );\n  }\n\n  function hasIcon(link, iconClass) {\n    return Boolean(\n      link.querySelector(`.${iconClass}`)\n    );\n  }\n\n  function isChangelogLink(\n    link,\n    project\n  ) {\n    if (\n      !(link instanceof HTMLAnchorElement)\n    ) {\n      return false;\n    }\n\n    if (\n      link.hasAttribute(\n        CHANGELOG_TARGET_ATTRIBUTE\n      )\n    ) {\n      return true;\n    }\n\n    if (\n      hasIcon(link, \"icon-changelog\")\n    ) {\n      return true;\n    }\n\n    if (\n      getLinkText(link) === \"changelog\"\n    ) {\n      return true;\n    }\n\n    const linkPath = getLinkPath(link);\n\n    return (\n      linkPath ===\n        project.nativeChangelogPath ||\n      linkPath === project.targetPath\n    );\n  }\n\n  function findChangelogLink(\n    nav,\n    project\n  ) {\n    return (\n      getNavLinks(nav).find((link) =>\n        isChangelogLink(link, project)\n      ) || null\n    );\n  }\n\n  function findLinkByIcon(\n    nav,\n    iconClass\n  ) {\n    return (\n      getNavLinks(nav).find((link) =>\n        hasIcon(link, iconClass)\n      ) || null\n    );\n  }\n\n  function findLinkByPath(\n    nav,\n    pathname\n  ) {\n    return (\n      getNavLinks(nav).find(\n        (link) =>\n          getLinkPath(link) === pathname\n      ) || null\n    );\n  }\n\n  function findLinkByText(nav, text) {\n    const expectedText = text\n      .trim()\n      .toLowerCase();\n\n    return (\n      getNavLinks(nav).find(\n        (link) =>\n          getLinkText(link) ===\n          expectedText\n      ) || null\n    );\n  }\n\n  function findHomeLink(nav, project) {\n    return (\n      findLinkByIcon(\n        nav,\n        \"icon-landing-page-2\"\n      ) ||\n      findLinkByPath(\n        nav,\n        project.rootPath\n      ) ||\n      findLinkByText(nav, \"home\")\n    );\n  }\n\n  function findDirectoryLink(\n    nav,\n    project\n  ) {\n    return (\n      findLinkByIcon(\n        nav,\n        \"icon-guides\"\n      ) ||\n      findLinkByPath(\n        nav,\n        project.docsPath\n      ) ||\n      findLinkByText(\n        nav,\n        \"directory\"\n      ) ||\n      findLinkByText(nav, \"guides\")\n    );\n  }\n\n  function findReferenceLink(\n    nav,\n    project\n  ) {\n    return (\n      findLinkByIcon(\n        nav,\n        \"icon-references\"\n      ) ||\n      findLinkByPath(\n        nav,\n        project.referencePath\n      ) ||\n      findLinkByText(\n        nav,\n        \"api reference\"\n      )\n    );\n  }\n\n  function findRecipesLink(\n    nav,\n    project\n  ) {\n    return (\n      findLinkByPath(\n        nav,\n        project.recipesPath\n      ) ||\n      findLinkByText(nav, \"recipes\")\n    );\n  }\n\n  function findDiscussionsLink(\n    nav,\n    project\n  ) {\n    return (\n      findLinkByPath(\n        nav,\n        project.discussionsPath\n      ) ||\n      findLinkByText(\n        nav,\n        \"discussions\"\n      )\n    );\n  }\n\n  function normalizeChangelogLink(\n    changelogLink,\n    project\n  ) {\n    if (!changelogLink) {\n      return null;\n    }\n\n    if (\n      changelogLink.getAttribute(\n        CHANGELOG_TARGET_ATTRIBUTE\n      ) !== project.targetUrl\n    ) {\n      changelogLink.setAttribute(\n        CHANGELOG_TARGET_ATTRIBUTE,\n        project.targetUrl\n      );\n    }\n\n    if (\n      changelogLink.href !==\n      project.targetUrl\n    ) {\n      changelogLink.setAttribute(\n        \"href\",\n        project.targetUrl\n      );\n    }\n\n    if (\n      changelogLink.getAttribute(\n        \"target\"\n      ) !== \"_self\"\n    ) {\n      changelogLink.setAttribute(\n        \"target\",\n        \"_self\"\n      );\n    }\n\n    return changelogLink;\n  }\n\n  function rewriteChangelogLink(\n    nav,\n    project\n  ) {\n    const changelogLink =\n      findChangelogLink(nav, project);\n\n    return normalizeChangelogLink(\n      changelogLink,\n      project\n    );\n  }\n\n  /*\n   * ReadMe's mobile flyout menu is a separate DOM\n   * structure from the desktop tab bar (see\n   * MOBILE_NAV_SELECTOR), so it is never reached by the\n   * NAV_SELECTOR-scoped rewrite below. Fix its Changelog\n   * link the same way.\n   */\n  function normalizeMobileChangelogLinks(\n    project\n  ) {\n    Array.from(\n      document.querySelectorAll(\n        MOBILE_NAV_SELECTOR\n      )\n    )\n      .filter((link) =>\n        isChangelogLink(link, project)\n      )\n      .forEach((link) =>\n        normalizeChangelogLink(\n          link,\n          project\n        )\n      );\n  }\n\n  /*\n   * This is the important part.\n   *\n   * Changelog is returned only when the URL is an exact match.\n   * Every other /docs page returns Directory.\n   */\n  function getExpectedActiveLink(\n    nav,\n    project,\n    changelogLink\n  ) {\n    const pathname = project.pathname;\n\n    if (\n      pathname === project.targetPath\n    ) {\n      return changelogLink;\n    }\n\n    if (\n      pathname === project.rootPath\n    ) {\n      return findHomeLink(\n        nav,\n        project\n      );\n    }\n\n    if (\n      pathIsWithin(\n        pathname,\n        project.docsPath\n      )\n    ) {\n      return findDirectoryLink(\n        nav,\n        project\n      );\n    }\n\n    if (\n      pathIsWithin(\n        pathname,\n        project.referencePath\n      )\n    ) {\n      return findReferenceLink(\n        nav,\n        project\n      );\n    }\n\n    if (\n      pathIsWithin(\n        pathname,\n        project.recipesPath\n      )\n    ) {\n      return findRecipesLink(\n        nav,\n        project\n      );\n    }\n\n    if (\n      pathIsWithin(\n        pathname,\n        project.discussionsPath\n      )\n    ) {\n      return findDiscussionsLink(\n        nav,\n        project\n      );\n    }\n\n    return null;\n  }\n\n  function findIndicator(nav) {\n    return (\n      Array.from(nav.children).find(\n        (element) => {\n          return (\n            element instanceof\n              HTMLElement &&\n            element.tagName === \"DIV\" &&\n            typeof element.className ===\n              \"string\" &&\n            element.className.includes(\n              \"Header-subnav-tab\"\n            )\n          );\n        }\n      ) || null\n    );\n  }\n\n  function setLinkActive(\n    link,\n    shouldBeActive\n  ) {\n    if (!link) {\n      return;\n    }\n\n    if (\n      link.classList.contains(\"active\") !==\n      shouldBeActive\n    ) {\n      link.classList.toggle(\n        \"active\",\n        shouldBeActive\n      );\n    }\n\n    if (shouldBeActive) {\n      if (\n        link.getAttribute(\n          \"aria-current\"\n        ) !== \"page\"\n      ) {\n        link.setAttribute(\n          \"aria-current\",\n          \"page\"\n        );\n      }\n    } else if (\n      link.hasAttribute(\"aria-current\")\n    ) {\n      link.removeAttribute(\n        \"aria-current\"\n      );\n    }\n  }\n\n  function moveIndicator(\n    nav,\n    activeLink\n  ) {\n    if (!activeLink) {\n      return;\n    }\n\n    const indicator =\n      findIndicator(nav);\n\n    if (!indicator) {\n      return;\n    }\n\n    const navRect =\n      nav.getBoundingClientRect();\n\n    const linkRect =\n      activeLink.getBoundingClientRect();\n\n    /*\n     * Skip hidden duplicate or mobile navigation\n     * until it becomes visible.\n     */\n    if (\n      navRect.width \u003c= 0 ||\n      linkRect.width \u003c= 0\n    ) {\n      return;\n    }\n\n    const left =\n      linkRect.left -\n      navRect.left +\n      nav.scrollLeft;\n\n    const expectedTransform =\n      `translateX(${Math.round(left)}px)`;\n\n    const expectedWidth =\n      `${Math.round(linkRect.width)}px`;\n\n    if (\n      indicator.style.transform !==\n      expectedTransform\n    ) {\n      indicator.style.transform =\n        expectedTransform;\n    }\n\n    if (\n      indicator.style.width !==\n      expectedWidth\n    ) {\n      indicator.style.width =\n        expectedWidth;\n    }\n  }\n\n  function updateActiveState(\n    nav,\n    project,\n    changelogLink\n  ) {\n    const expectedActiveLink =\n      getExpectedActiveLink(\n        nav,\n        project,\n        changelogLink\n      );\n\n    /*\n     * Even if the current route is unknown, Changelog must\n     * never remain active unless this is the exact target page.\n     */\n    if (!expectedActiveLink) {\n      setLinkActive(\n        changelogLink,\n        false\n      );\n\n      return;\n    }\n\n    getNavLinks(nav).forEach((link) => {\n      setLinkActive(\n        link,\n        link === expectedActiveLink\n      );\n    });\n\n    moveIndicator(\n      nav,\n      expectedActiveLink\n    );\n  }\n\n  function applyNavigationState() {\n    if (state.destroyed) {\n      return;\n    }\n\n    const project =\n      getCurrentProject();\n\n    if (!project) {\n      return;\n    }\n\n    normalizeMobileChangelogLinks(\n      project\n    );\n\n    getPrimaryNavs().forEach((nav) => {\n      const changelogLink =\n        rewriteChangelogLink(\n          nav,\n          project\n        );\n\n      if (!changelogLink) {\n        return;\n      }\n\n      updateActiveState(\n        nav,\n        project,\n        changelogLink\n      );\n    });\n  }\n\n  function queueApply() {\n    if (\n      state.destroyed ||\n      state.animationFrame !== null\n    ) {\n      return;\n    }\n\n    state.animationFrame =\n      window.requestAnimationFrame(() => {\n        state.animationFrame = null;\n        applyNavigationState();\n      });\n  }\n\n  function clearRetryTimers() {\n    state.retryTimers.forEach(\n      (timer) => {\n        window.clearTimeout(timer);\n      }\n    );\n\n    state.retryTimers.clear();\n  }\n\n  function scheduleSettlingPasses() {\n    clearRetryTimers();\n    queueApply();\n\n    /*\n     * ReadMe may change the URL, article, and active\n     * classes in separate render passes.\n     */\n    [50, 150, 400, 900].forEach(\n      (delay) => {\n        const timer =\n          window.setTimeout(() => {\n            state.retryTimers.delete(\n              timer\n            );\n\n            queueApply();\n          }, delay);\n\n        state.retryTimers.add(timer);\n      }\n    );\n  }\n\n  function activeStateNeedsRepair() {\n    const project =\n      getCurrentProject();\n\n    if (!project) {\n      return false;\n    }\n\n    const navs = getPrimaryNavs();\n\n    if (!navs.length) {\n      return true;\n    }\n\n    return navs.some((nav) => {\n      const changelogLink =\n        findChangelogLink(\n          nav,\n          project\n        );\n\n      if (!changelogLink) {\n        return true;\n      }\n\n      const expectedActiveLink =\n        getExpectedActiveLink(\n          nav,\n          project,\n          changelogLink\n        );\n\n      /*\n       * Unknown routes still must not leave\n       * Changelog highlighted.\n       */\n      if (!expectedActiveLink) {\n        return (\n          changelogLink.classList.contains(\n            \"active\"\n          ) ||\n          changelogLink.hasAttribute(\n            \"aria-current\"\n          )\n        );\n      }\n\n      const activeLinks =\n        getNavLinks(nav).filter(\n          (link) =>\n            link.classList.contains(\n              \"active\"\n            ) ||\n            link.getAttribute(\n              \"aria-current\"\n            ) === \"page\"\n        );\n\n      return (\n        activeLinks.length !== 1 ||\n        activeLinks[0] !==\n          expectedActiveLink\n      );\n    });\n  }\n\n  function handleRouteCheck() {\n    const currentPath =\n      getCurrentPath();\n\n    if (\n      currentPath !== state.lastPath\n    ) {\n      state.lastPath = currentPath;\n      scheduleSettlingPasses();\n      return;\n    }\n\n    if (activeStateNeedsRepair()) {\n      queueApply();\n    }\n  }\n\n  function getEventElement(event) {\n    if (\n      event.target instanceof Element\n    ) {\n      return event.target;\n    }\n\n    if (\n      event.target instanceof Node\n    ) {\n      return event.target.parentElement;\n    }\n\n    return null;\n  }\n\n  function handleClick(event) {\n    const eventElement =\n      getEventElement(event);\n\n    if (!eventElement) {\n      return;\n    }\n\n    /*\n     * Match links in the desktop tab bar OR the mobile\n     * flyout menu. ReadMe's mobile menu is a structurally\n     * different DOM from the desktop tab bar and is never\n     * inside NAV_SELECTOR, so scoping the lookup to that\n     * selector alone silently missed every mobile\n     * Changelog tap.\n     */\n    const link = eventElement.closest(\n      `${NAV_SELECTOR} a[href], ${MOBILE_NAV_SELECTOR}`\n    );\n\n    if (\n      !(link instanceof\n        HTMLAnchorElement)\n    ) {\n      return;\n    }\n\n    const project =\n      getCurrentProject();\n\n    if (!project) {\n      return;\n    }\n\n    /*\n     * For normal header/flyout links, let ReadMe handle\n     * its normal SPA navigation. The observer and route\n     * watcher will update the active state afterward.\n     */\n    if (\n      !isChangelogLink(\n        link,\n        project\n      )\n    ) {\n      window.setTimeout(\n        scheduleSettlingPasses,\n        0\n      );\n\n      return;\n    }\n\n    /*\n     * Always make sure modified clicks and\n     * open-in-new-tab use the correct URL.\n     */\n    link.setAttribute(\n      CHANGELOG_TARGET_ATTRIBUTE,\n      project.targetUrl\n    );\n\n    link.setAttribute(\n      \"href\",\n      project.targetUrl\n    );\n\n    link.setAttribute(\n      \"target\",\n      \"_self\"\n    );\n\n    const isModifiedClick =\n      event.metaKey ||\n      event.ctrlKey ||\n      event.shiftKey ||\n      event.altKey ||\n      event.button !== 0;\n\n    if (isModifiedClick) {\n      return;\n    }\n\n    /*\n     * Prevent ReadMe's native Changelog router from\n     * reducing the destination back to /docs.\n     */\n    event.preventDefault();\n    event.stopPropagation();\n    event.stopImmediatePropagation();\n\n    window.location.assign(\n      project.targetUrl\n    );\n  }\n\n  function handlePageShow() {\n    state.lastPath =\n      getCurrentPath();\n\n    scheduleSettlingPasses();\n  }\n\n  function initialize() {\n    state.lastPath =\n      getCurrentPath();\n\n    /*\n     * Capture phase runs before ReadMe's\n     * React click handlers.\n     */\n    window.addEventListener(\n      \"click\",\n      handleClick,\n      true\n    );\n\n    window.addEventListener(\n      \"popstate\",\n      handleRouteCheck\n    );\n\n    window.addEventListener(\n      \"hashchange\",\n      handleRouteCheck\n    );\n\n    window.addEventListener(\n      \"pageshow\",\n      handlePageShow\n    );\n\n    /*\n     * The header itself may remain mounted while the\n     * article changes. Watching body content catches\n     * those SPA article replacements.\n     *\n     * Only child-list changes are observed, so the\n     * script's own class and href updates do not\n     * create a MutationObserver loop.\n     */\n    state.observer =\n      new MutationObserver(() => {\n        handleRouteCheck();\n      });\n\n    state.observer.observe(\n      document.body,\n      {\n        childList: true,\n        subtree: true,\n      }\n    );\n\n    /*\n     * Fallback route check. This only updates the DOM\n     * when the pathname or active state is incorrect.\n     */\n    state.routeInterval =\n      window.setInterval(\n        handleRouteCheck,\n        500\n      );\n\n    scheduleSettlingPasses();\n  }\n\n  function destroy() {\n    state.destroyed = true;\n\n    window.removeEventListener(\n      \"click\",\n      handleClick,\n      true\n    );\n\n    window.removeEventListener(\n      \"popstate\",\n      handleRouteCheck\n    );\n\n    window.removeEventListener(\n      \"hashchange\",\n      handleRouteCheck\n    );\n\n    window.removeEventListener(\n      \"pageshow\",\n      handlePageShow\n    );\n\n    if (state.observer) {\n      state.observer.disconnect();\n      state.observer = null;\n    }\n\n    if (\n      state.routeInterval !== null\n    ) {\n      window.clearInterval(\n        state.routeInterval\n      );\n\n      state.routeInterval = null;\n    }\n\n    if (\n      state.animationFrame !== null\n    ) {\n      window.cancelAnimationFrame(\n        state.animationFrame\n      );\n\n      state.animationFrame = null;\n    }\n\n    clearRetryTimers();\n  }\n\n  window[SCRIPT_KEY] = {\n    destroy,\n    refresh:\n      scheduleSettlingPasses,\n  };\n\n  if (\n    document.readyState ===\n    \"loading\"\n  ) {\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      initialize,\n      { once: true }\n    );\n  } else {\n    initialize();\n  }\n})();\n\n\n// Hero search trigger\nfunction initHeroSearch() {\n  var trigger = document.getElementById('hero-search-trigger');\n  var searchBtn = document.querySelector('.rm-SearchToggle');\n\n  if (trigger && searchBtn && !trigger.dataset.bound) {\n    trigger.dataset.bound = 'true';\n    trigger.addEventListener('click', function () {\n      searchBtn.click();\n    });\n    return true;\n  }\n  return false;\n}\n\nvar attempts = 0;\nvar poll = setInterval(function () {\n  attempts++;\n  if (initHeroSearch() || attempts > 20) {\n    clearInterval(poll);\n  }\n}, 300);\n\n// AdRoll\nadroll_adv_id = \"TFQKXJNRFJEF5CM6V73ISQ\";\nadroll_pix_id = \"ONVWEBEM5BGVHHBA6X32YK\";\n\n(function () {\n  var _onload = function () {\n    if (document.readyState && !/loaded|complete/.test(document.readyState)) { setTimeout(_onload, 10); return; }\n    if (!window.__adroll_loaded) { __adroll_loaded = true; setTimeout(_onload, 50); return; }\n    var scr = document.createElement(\"script\");\n    var host = ((\"https:\" == document.location.protocol) ? \"https://s.adroll.com\" : \"http://a.adroll.com\");\n    scr.setAttribute('async', 'true');\n    scr.type = \"text/javascript\";\n    scr.src = host + \"/j/roundtrip.js\";\n    ((document.getElementsByTagName('head') || [null])[0] ||\n      document.getElementsByTagName('script')[0].parentNode).appendChild(scr);\n  };\n  if (window.addEventListener) { window.addEventListener('load', _onload, false); }\n  else { window.attachEvent('onload', _onload); }\n}());\n\n// Image zoom\n(function () {\n  const zoomerContainer = document.querySelector('.image-zoomer-container');\n  const zoomImage = document.getElementById('zoom-image');\n\n  if (!zoomerContainer || !zoomImage) return;\n\n  zoomerContainer.addEventListener('mousemove', (e) => {\n    const rect = zoomerContainer.getBoundingClientRect();\n    const x = e.clientX - rect.left;\n    const y = e.clientY - rect.top;\n    const xPercent = (x / rect.width) * 100;\n    const yPercent = (y / rect.height) * 100;\n    zoomImage.style.transformOrigin = `${xPercent}% ${yPercent}%`;\n    zoomImage.classList.add('move');\n  });\n\n  zoomerContainer.addEventListener('mouseleave', () => {\n    zoomImage.style.transformOrigin = 'center';\n    zoomImage.classList.remove('move');\n  });\n}());\n\n\n// Heading click — \"Link copied\" pill notification\n(function () {\n\n  // Creates and animates a floating \"Link copied\" pill on the clicked heading\n  // Also copies the full URL (including hash) to the clipboard\n  function showLinkCopiedPill(heading) {\n    var anchor = heading.querySelector('.heading-anchor-icon');\n    if (!anchor) return;\n\n    var href = anchor.getAttribute('href');\n    if (!href) return;\n\n    // Build the full URL with the hash\n    var fullUrl = window.location.origin + window.location.pathname + href;\n\n    // Copy to clipboard, then show the pill\n    navigator.clipboard.writeText(fullUrl).then(function () {\n      // Remove any existing pill before creating a new one\n      var existing = heading.querySelector('.rp-link-copied-pill');\n      if (existing) existing.remove();\n\n      // Build the pill element\n      var pill = document.createElement('span');\n      pill.className = 'rp-link-copied-pill';\n      pill.textContent = '🔗 Link copied';\n      pill.style.cssText = [\n        'position: absolute',\n        'right: 32px',\n        'top: 50%',\n        'transform: translateY(-50%)',\n        'font-family: var(--recurly-font, sans-serif)',\n        'font-size: 11px',\n        'font-weight: 700',\n        'color: #0D0D0B',\n        'background: #FFD706',\n        'padding: 3px 10px',\n        'border-radius: 12px',\n        'pointer-events: none',\n        'white-space: nowrap',\n        'z-index: 10',\n        'opacity: 1',\n        'transition: opacity 2.5s ease, transform 2.5s ease',\n      ].join(';');\n\n      heading.appendChild(pill);\n\n      // Double rAF ensures the browser has painted the initial state\n      // before triggering the float-up + fade-out transition\n      requestAnimationFrame(function () {\n        requestAnimationFrame(function () {\n          pill.style.transform = 'translateY(calc(-50% - 14px))';\n          pill.style.opacity = '0';\n        });\n      });\n\n      // Remove the pill from the DOM after the transition completes\n      setTimeout(function () {\n        pill.remove();\n      }, 8000);\n    }).catch(function (err) {\n      console.error('Failed to copy link to clipboard:', err);\n    });\n  }\n\n  function attachListeners() {\n    document.querySelectorAll('.rm-Markdown.markdown-body .heading').forEach(function (heading) {\n      // Skip headings that already have listeners attached\n      if (heading.dataset.rpAttached) return;\n      heading.dataset.rpAttached = 'true';\n\n      // Click anywhere on the heading text (not the anchor icon)\n      // — programmatically click the anchor so ReadMe's native handler\n      // runs normally, then show the pill and copy the link\n      heading.addEventListener('click', function (e) {\n        // Ignore clicks on the anchor icon itself — it has its own listener below\n        if (e.target.closest('.heading-anchor-icon')) return;\n\n        var anchor = heading.querySelector('.heading-anchor-icon');\n        if (!anchor) return;\n\n        // Let ReadMe handle the navigation natively\n        anchor.click();\n        showLinkCopiedPill(heading);\n      });\n\n      // Click on the anchor icon — ReadMe handles the hash natively,\n      // we just copy the link and show the pill\n      var anchor = heading.querySelector('.heading-anchor-icon');\n      if (anchor) {\n        anchor.addEventListener('click', function () {\n          showLinkCopiedPill(heading);\n        });\n      }\n    });\n  }\n\n  // Attach listeners on initial page load\n  attachListeners();\n\n  // Re-attach after ReadMe's SPA router swaps page content\n  var observer = new MutationObserver(function () {\n    attachListeners();\n  });\n\n  observer.observe(document.body, { childList: true, subtree: true });\n\n})();\n\n/* ============================================================\n   rp-shelf — infinite carousel behavior.\n   Paste into ReadMe Custom JS.\n\n   Structure expected per shelf (inside HTMLBlock):\n     \u003cdiv class=\"rp-shelf rp-shelf-carousel\">\n       \u003cdiv class=\"rp-shelf-header\">...\u003c/div>\n       \u003cdiv class=\"rp-shelf-viewport\">\n         \u003cdiv class=\"rp-shelf-track\">\n           \u003cdiv class=\"rp-shelf-card\">...\u003c/div>\n           ...\n         \u003c/div>\n       \u003c/div>\n       \u003cdiv class=\"rp-shelf-controls\">\n         \u003cbutton class=\"rp-shelf-btn rp-shelf-prev\">...\u003c/button>\n         \u003cbutton class=\"rp-shelf-btn rp-shelf-next\">...\u003c/button>\n       \u003c/div>\n     \u003c/div>\n   ============================================================ */\n\n(function () {\n  'use strict';\n\n  var TRANSITION_MS = 500;\n  var GAP_PX = 14;\n\n  function initShelf(shelf) {\n    if (shelf.dataset.rpShelfInit === '1') return;\n    shelf.dataset.rpShelfInit = '1';\n\n    var track = shelf.querySelector('.rp-shelf-track');\n    var prevBtn = shelf.querySelector('.rp-shelf-prev');\n    var nextBtn = shelf.querySelector('.rp-shelf-next');\n    if (!track || !prevBtn || !nextBtn) return;\n\n    var realCards = Array.prototype.slice.call(track.children);\n    var total = realCards.length;\n    if (total \u003c 3) return; // safety net — 3+ cards required for carousel\n\n    // Prepend 2 clones (last two) and append 2 clones (first two).\n    // This lets us show a full 3-card frame when currentIndex is -1 or total,\n    // so the loop reset is visually seamless.\n    var prevPrev = realCards[total - 2].cloneNode(true);\n    var prev = realCards[total - 1].cloneNode(true);\n    var next = realCards[0].cloneNode(true);\n    var nextNext = realCards[1].cloneNode(true);\n    [prevPrev, prev, next, nextNext].forEach(function (c) {\n      c.setAttribute('data-clone', 'true');\n      c.classList.remove('rp-active');\n    });\n    track.insertBefore(prevPrev, realCards[0]);\n    track.insertBefore(prev, realCards[0]);\n    track.appendChild(next);\n    track.appendChild(nextNext);\n\n    var currentIndex = 0; // pointer into real cards (0..total-1)\n    var isTransitioning = false;\n\n    function cardWidth() {\n      return realCards[0].getBoundingClientRect().width;\n    }\n\n    function setActive(idx) {\n      var all = track.children;\n      // Active card lives at track index (idx + 2) because of the two prepended clones.\n      var activeTrackIdx = idx + 2;\n      for (var i = 0; i \u003c all.length; i++) {\n        if (i === activeTrackIdx) all[i].classList.add('rp-active');\n        else all[i].classList.remove('rp-active');\n      }\n    }\n\n    function positionTrack(withTransition) {\n      var w = cardWidth();\n      if (!w) {\n        // Not yet laid out — retry next frame.\n        requestAnimationFrame(function () { positionTrack(withTransition); });\n        return;\n      }\n      var offset = (currentIndex + 1) * (w + GAP_PX);\n      track.style.transition = withTransition\n        ? 'transform ' + TRANSITION_MS + 'ms cubic-bezier(0.4, 0, 0.2, 1)'\n        : 'none';\n      track.style.transform = 'translateX(' + (-offset) + 'px)';\n    }\n\n    function go(delta) {\n      if (isTransitioning) return;\n      isTransitioning = true;\n      currentIndex += delta;\n      setActive(currentIndex);\n      positionTrack(true);\n\n      window.setTimeout(function () {\n        // Handle infinite-loop reset\n        if (currentIndex >= total) currentIndex = 0;\n        else if (currentIndex \u003c 0) currentIndex = total - 1;\n        setActive(currentIndex);\n        // Snap to real position without transition\n        positionTrack(false);\n        // Force a reflow so the next transition takes effect\n        void track.offsetHeight;\n        isTransitioning = false;\n      }, TRANSITION_MS);\n    }\n\n    nextBtn.addEventListener('click', function () { go(1); });\n    prevBtn.addEventListener('click', function () { go(-1); });\n\n    // Keyboard support once a control is focused\n    shelf.addEventListener('keydown', function (e) {\n      if (e.key === 'ArrowRight') { e.preventDefault(); go(1); }\n      else if (e.key === 'ArrowLeft') { e.preventDefault(); go(-1); }\n    });\n\n    // Reposition on window resize (card widths change with layout)\n    var resizeTimer;\n    window.addEventListener('resize', function () {\n      window.clearTimeout(resizeTimer);\n      resizeTimer = window.setTimeout(function () {\n        positionTrack(false);\n      }, 100);\n    });\n\n    // Initial state\n    setActive(currentIndex);\n    positionTrack(false);\n  }\n\n  function initAll() {\n    var shelves = document.querySelectorAll('.rp-shelf-carousel');\n    for (var i = 0; i \u003c shelves.length; i++) initShelf(shelves[i]);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initAll);\n  } else {\n    initAll();\n  }\n  // Re-init when ReadMe SPA-navigates to a new page\n  window.addEventListener('load', initAll);\n  var mo = new MutationObserver(function () { initAll(); });\n  mo.observe(document.body, { childList: true, subtree: true });\n})();","html_promo":"","html_body":"","html_footer":"","html_head":"\u003cstyle>\n/* Hide immediately, then fade in after 1s */\nbody .hub-is-home {\n  opacity: 0;\n  animation: hubFadeIn 0.4s ease forwards;\n  animation-delay: .8s;\n}\n\n@keyframes hubFadeIn {\n  to { opacity: 1; }\n}\n\u003c/style>\n\n\n\n\n\u003c!-- OneTrust Cookies Consent Notice start for docs.recurly.com -->\n\u003cscript src=\"https://cdn.cookielaw.org/scripttemplates/otSDKStub.js\"  type=\"text/javascript\" charset=\"UTF-8\" data-domain-script=\"c934b14c-a690-45e9-bc4e-7fdf36ff3e69\" >\u003c/script>\n\u003cscript type=\"text/javascript\">\nfunction OptanonWrapper() { }\n\u003c/script>\n\u003c!-- OneTrust Cookies Consent Notice end for docs.recurly.com -->\n\n\u003c!-- Google Tag Manager -->\n\u003cscript>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\nnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\nj=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n})(window,document,'script','dataLayer','GTM-P8SKV3B');\u003c/script>\n\u003c!-- End Google Tag Manager -->\n\n\u003c!-- Google tag for GA4 docs.recurly.com (gtag.js) -->\n\u003cscript async src=\"https://www.googletagmanager.com/gtag/js?id=G-CP3HCXSJ9X\">\u003c/script>\n\u003cscript>\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n  gtag('js', new Date());\n\n  gtag('config', 'G-CP3HCXSJ9X');\n\u003c/script>\n\n\n\u003c!--Linkedin Conversion Tracking-->\n\u003cscript type=\"text/javascript\">\n  _linkedin_data_partner_id = \"42036\";\n  (function()\n  {var s = document.getElementsByTagName(\"script\")[0]; var b = document.createElement(\"script\"); b.type = \"text/javascript\";b.async = true; b.src = \"https://snap.licdn.com/li.lms-analytics/insight.min.js\"; s.parentNode.insertBefore(b, s);}\n  )();\n\u003c/script>\n\n\u003c!-- Facebook Pixel Code -->\n\u003cscript>\n\t!function(f,b,e,v,n,t,s)\n\t{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n\tn.callMethod.apply(n,arguments):n.queue.push(arguments)};\n\tif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n\tn.queue=[];t=b.createElement(e);t.async=!0;\n\tt.src=v;s=b.getElementsByTagName(e)[0];\n\ts.parentNode.insertBefore(t,s)}(window,document,'script',\n\t'https://connect.facebook.net/en_US/fbevents.js');\n\t \n\tfbq('init', '1810072655916642');\n\tfbq('track', 'PageView');\n\u003c/script>\n\u003cnoscript>\n\t\u003cimg height=\"1\" width=\"1\" src=\"https://www.facebook.com/tr?id=1810072655916642&ev=PageView&noscript=1\"/>\n\u003c/noscript>\n\u003c!-- End Facebook Pixel Code -->\n\n\u003c!-- facebook -->\n\n\u003cmeta property=\"og:image\" content=\"https://recurly.com/img2/og-image.gif\">\n\u003cmeta property=\"og:image:url\" content=\"https://recurly.com/img2/og-image.gif\">\n\u003cmeta property=\"og:image:secure_url\" content=\"https://recurly.com/img2/og-image.gif\">\n\u003cmeta property=\"og:image:type\" content=\"image/gif\">\n\u003cmeta property=\"og:image:width\" content=\"1500\">\n\u003cmeta property=\"og:image:height\" content=\"1500\">\n  \n\u003c!-- twitter -->\n\u003cmeta name=\"twitter:account_id\" content=\"57871527\">\n\u003cmeta name=\"twitter:card\" content=\"summary\">\n\u003cmeta name=\"twitter:site\" content=\"@recurly\">\n\n\u003cmeta name=\"twitter:image:src\" content=\"https://recurly.com/img2/og-image.gif\">\n\u003cmeta name=\"twitter:image:width\" content=\"1500\">\n\u003cmeta name=\"twitter:image:height\" content=\"1500\">\n\u003cmeta name=\"format-detection\" content=\"telephone=no\">\n\n\u003c!-- Zendesk -->\n\u003cmeta name='zd-site-verification' content='xd6yjutf4fpsbsgddhodm'>\n\n\u003c!-- Image zoomer -->\n\u003clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/viewerjs@1.10.5/dist/viewer.min.css\">\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/viewerjs@1.10.5/dist/viewer.min.js\">\u003c/script>","html_footer_meta":"\u003c!-- Google Tag Manager (noscript) -->\n\u003cnoscript>\u003ciframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-P8SKV3B\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\">\u003c/iframe>\u003c/noscript>\n\u003c!-- End Google Tag Manager (noscript) -->\n\n\u003cstyle>\n\n@media print {\n  * {\n    -webkit-print-color-adjust: exact;\n    print-color-adjust: exact;\n  }\n  html,\n  body.theme-solid.page-docs,\n  .wrapper,\n  .container.body-container,\n  .main-content {\n    margin:0px 20px !important;\n    padding: 0 !important;\n  }\n  \n  header#header,\n  .header,\n  .navbar-brand,\n  .navbar {\n    display:block !important;\n    background-color: #723080 !important;\n    box-shadow:  inset 0 0 0 1000px #723080;\n  }\n  header#header {\n  \tmargin: 0 auto 60px !important;\n  }\n  #header.header h1.navbar-brand a {\n    width: 178px !important;\n    height: 40px !important;\n    display:block !important;\n  \tbackground: url(https://files.readme.io/noVlqxc0QhiP1Psgyw2Y_documentation.png) no-repeat !important;\n  \tbackground-size: contain !important;\n  }\n\t.section-left,\n  .docs-header nav {\n    display: none !important;\n  }\n\n  .main-content {\n  \tmargin-top: 0px !important;\n    padding-top: 0px !important;\n  }\n  \n}\n\u003c/style>\n\u003c!-- Image zoomer -->\n\u003cscript>\n        document.addEventListener('DOMContentLoaded', function () {\n            var container = document.getElementById('image-container');\n            var viewer = new Viewer(container, {\n                inline: false,\n                viewed: function() {\n                    viewer.zoomTo(1);\n                },\n                toolbar: {\n                    zoomIn: 4,\n                    zoomOut: 4,\n                    oneToOne: 4,\n                    reset: 4,\n                    prev: 4,\n                    next: 4,\n                    rotateLeft: 4,\n                    rotateRight: 4,\n                    flipHorizontal: 4,\n                    flipVertical: 4,\n                },\n                title: false,\n                tooltip: false,\n                movable: true,\n                zoomable: true,\n                rotatable: false,\n                scalable: false,\n                transition: false,\n                fullscreen: true,\n                keyboard: false,\n            });\n        });\n    \u003c/script>","global_landing_page":{"html":"\u003chead>\n    \u003cstyle>\n        /* ============================================================\n           GLOBAL OVERRIDES\n        ============================================================ */\n        main.main-index,\n        .rm-LandingPage {\n            width: 100% !important;\n            max-width: 100% !important;\n            margin: 0 !important;\n            padding: 0 !important;\n            background: #0D0D0B !important;\n        }\n\n        .hub-is-home .rm-VersionDropdown { display: none !important; }\n\n        a.product-card,\n        a.product-card:hover,\n        .globallp-footer-content a {\n            text-decoration: none !important;\n            -webkit-text-decoration-color: transparent !important;\n            text-decoration-color: transparent !important;\n        }\n\n        /* ============================================================\n           OVERFLOW PROTECTION\n        ============================================================ */\n        .globallp-header-section,\n        .products-section {\n            overflow-x: hidden !important;\n        }\n\n        a.product-card {\n            min-width: 0 !important;\n            box-sizing: border-box !important;\n        }\n\n        /* ============================================================\n           SHARED DARK BASE\n        ============================================================ */\n        .globallp-header-section,\n        .products-section {\n            background: #0D0D0B !important;\n        }\n\n        /* ============================================================\n           HERO\n        ============================================================ */\n        .globallp-header-section {\n            padding: 64px 0 !important;\n        }\n\n        /* ============================================================\n           PRODUCTS SECTION\n        ============================================================ */\n        .products-section {\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            padding: 0 32px 80px !important;\n        }\n\n        .products-container {\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            box-sizing: border-box !important;\n        }\n\n        /* Section header */\n        .section-header-block {\n            display: flex !important;\n            justify-content: space-between !important;\n            align-items: center !important;\n            gap: 48px !important;\n            margin-bottom: 32px !important;\n            padding: 28px 36px !important;\n            background: rgba(255, 253, 242, 0.03) !important;\n            border: 1px solid rgba(255, 253, 242, 0.08) !important;\n            border-left: 4px solid #FFD706 !important;\n            border-radius: 0 12px 12px 0 !important;\n            box-sizing: border-box !important;\n            max-width: 100% !important;\n            overflow: hidden !important;\n        }\n\n        .section-header-left { flex: 1 !important; min-width: 0 !important; }\n        .section-header-right { flex: 1 !important; max-width: 420px !important; min-width: 0 !important; }\n\n        .section-eyebrow {\n            display: inline-flex !important;\n            align-items: center !important;\n            gap: 8px !important;\n            color: #FFD706 !important;\n            font-size: 11px !important;\n            font-weight: 700 !important;\n            letter-spacing: 0.12em !important;\n            text-transform: uppercase !important;\n            margin-bottom: 10px !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n        }\n\n        .section-eyebrow-dot {\n            display: inline-block !important;\n            width: 6px !important;\n            height: 6px !important;\n            border-radius: 50% !important;\n            background: #FFD706 !important;\n            flex-shrink: 0 !important;\n        }\n\n        .section-title {\n            font-size: 32px !important;\n            font-weight: 800 !important;\n            color: #FFFDF2 !important;\n            margin: 0 !important;\n            line-height: 1.1 !important;\n            letter-spacing: -0.02em !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            overflow-wrap: break-word !important;\n        }\n\n        .section-desc {\n            font-size: 15px !important;\n            color: rgba(255, 253, 242, 0.82) !important;\n            margin: 0 !important;\n            line-height: 1.65 !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n        }\n\n        /* ============================================================\n           PRODUCT CARDS GRID — 2×2\n        ============================================================ */\n        .products-grid {\n            display: grid !important;\n            grid-template-columns: repeat(2, 1fr) !important;\n            gap: 16px !important;\n            box-sizing: border-box !important;\n            width: 100% !important;\n        }\n\n        a.product-card {\n            background: #131210 !important;\n            border: 1px solid rgba(255, 253, 242, 0.07) !important;\n            border-radius: 16px !important;\n            display: flex !important;\n            flex-direction: column !important;\n            overflow: hidden !important;\n            text-decoration: none !important;\n            color: #FFFDF2 !important;\n            transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease !important;\n            max-width: 100% !important;\n        }\n\n        a.product-card:hover {\n            background: #1A1917 !important;\n            border-color: rgba(255, 215, 6, 0.28) !important;\n            transform: translateY(-3px) !important;\n        }\n\n        /* ── Visual header: dark surface + centred icon ── */\n        .product-card-visual {\n            width: 100% !important;\n            height: 190px !important;\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            position: relative !important;\n            border-bottom: 1px solid rgba(255, 253, 242, 0.06) !important;\n            overflow: hidden !important;\n            flex-shrink: 0 !important;\n        }\n\n        /* Per-product tinted background */\n        \n        \n        \n        \n\n        /* Uniform dark background for all card visuals */\n        .product-card-visual {\n            background: #0F0E0C !important;\n        }\n\n        /* Logo box fills the full visual strip */\n        .product-card-visual-logo-box {\n            width: 100% !important;\n            height: 100% !important;\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            position: relative !important;\n            overflow: hidden !important;\n        }\n\n        /* Decorative rings — all cards */\n        .product-card-visual-logo-box::before {\n            content: \"\" !important;\n            position: absolute !important;\n            width: 210px !important;\n            height: 210px !important;\n            border-radius: 50% !important;\n            border: 1px solid rgba(255, 253, 242, 0.06) !important;\n            pointer-events: none !important;\n        }\n        .product-card-visual-logo-box::after {\n            content: \"\" !important;\n            position: absolute !important;\n            width: 130px !important;\n            height: 130px !important;\n            border-radius: 50% !important;\n            border: 1px solid rgba(255, 253, 242, 0.08) !important;\n            pointer-events: none !important;\n        }\n\n        .product-card-visual-logo {\n            height: 40px !important;\n            width: auto !important;\n            max-width: calc(100% - 80px) !important;\n            object-fit: contain !important;\n            position: relative !important;\n            z-index: 1 !important;\n            opacity: 0.9 !important;\n            transition: transform 0.25s ease, opacity 0.25s ease !important;\n        }\n\n        a.product-card:hover .product-card-visual-logo {\n            transform: scale(1.04) !important;\n            opacity: 1 !important;\n        }\n\n\n\n        /* ── Card body ── */\n        .product-card-body {\n            padding: 26px 28px 24px !important;\n            display: flex !important;\n            flex-direction: column !important;\n            gap: 12px !important;\n            flex: 1 !important;\n        }\n\n        .product-card-label {\n            display: inline-flex !important;\n            align-items: center !important;\n            gap: 6px !important;\n            background: rgba(255, 215, 6, 0.1) !important;\n            color: #FFD706 !important;\n            font-size: 10px !important;\n            font-weight: 700 !important;\n            letter-spacing: 0.1em !important;\n            text-transform: uppercase !important;\n            padding: 4px 10px !important;\n            border-radius: 99px !important;\n            border: 1px solid rgba(255, 215, 6, 0.18) !important;\n            width: fit-content !important;\n        }\n\n        .product-card-title {\n            font-size: 19px !important;\n            font-weight: 800 !important;\n            color: #FFFDF2 !important;\n            margin: 0 !important;\n            line-height: 1.25 !important;\n            letter-spacing: -0.02em !important;\n            overflow-wrap: break-word !important;\n            transition: color 0.2s ease !important;\n        }\n\n        a.product-card:hover .product-card-title { color: #FFD706 !important; }\n\n        .product-card-desc {\n            font-size: 13px !important;\n            color: rgba(255, 253, 242, 0.82) !important;\n            margin: 0 !important;\n            line-height: 1.65 !important;\n            overflow-wrap: break-word !important;\n            flex: 1 !important;\n        }\n\n        /* CTA row */\n        .product-card-cta-row {\n            display: flex !important;\n            align-items: center !important;\n            justify-content: space-between !important;\n            padding-top: 16px !important;\n            border-top: 1px solid rgba(255, 253, 242, 0.06) !important;\n            margin-top: 4px !important;\n        }\n\n        .product-card-cta {\n            display: inline-flex !important;\n            align-items: center !important;\n            gap: 8px !important;\n            color: #FFD706 !important;\n            font-size: 13px !important;\n            font-weight: 700 !important;\n            letter-spacing: 0.02em !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n        }\n\n        .product-card-cta svg { transition: transform 0.2s ease !important; }\n        a.product-card:hover .product-card-cta svg { transform: translateX(4px) !important; }\n\n        .product-card-tag {\n            font-size: 11px !important;\n            color: rgba(255, 253, 242, 0.45) !important;\n            font-weight: 500 !important;\n            letter-spacing: 0.04em !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n        }\n\n        /* ============================================================\n           FEATURED \"NEW\" CARD — Recover\n           Spotlight: content left · logo panel right\n        ============================================================ */\n        a.product-card.product-card-featured {\n            grid-column: 1 / -1 !important;\n            flex-direction: row !important;\n            align-items: stretch !important;\n            border-color: rgba(255, 215, 6, 0.22) !important;\n            background: linear-gradient(115deg, #151310 0%, #121110 58%, #18140c 100%) !important;\n        }\n\n        a.product-card.product-card-featured:hover {\n            background: linear-gradient(115deg, #1A1712 0%, #161311 58%, #1E1810 100%) !important;\n            border-color: rgba(255, 215, 6, 0.42) !important;\n            transform: translateY(-3px) !important;\n        }\n\n        /* ── Left: content column ── */\n        .product-card-featured-content {\n            flex: 1 1 56% !important;\n            min-width: 0 !important;\n            display: flex !important;\n            flex-direction: column !important;\n            align-items: flex-start !important;\n            justify-content: center !important;\n            gap: 16px !important;\n            padding: 48px 52px !important;\n            box-sizing: border-box !important;\n        }\n\n        .product-card-featured-badge {\n            display: inline-flex !important;\n            align-items: center !important;\n            gap: 7px !important;\n            background: #FFD706 !important;\n            color: #0D0D0B !important;\n            font-size: 11px !important;\n            font-weight: 800 !important;\n            letter-spacing: 0.12em !important;\n            text-transform: uppercase !important;\n            padding: 5px 13px !important;\n            border-radius: 99px !important;\n            box-shadow: 0 2px 14px rgba(255, 215, 6, 0.42);\n            animation: newBadgeGlow 2.8s ease-in-out infinite !important;\n        }\n\n        .product-card-featured-badge-dot {\n            width: 6px !important;\n            height: 6px !important;\n            border-radius: 50% !important;\n            background: #0D0D0B !important;\n            flex-shrink: 0 !important;\n        }\n\n        .product-card-featured-title {\n            font-size: 26px !important;\n            font-weight: 800 !important;\n            color: #FFFDF2 !important;\n            margin: 0 !important;\n            line-height: 1.2 !important;\n            letter-spacing: -0.02em !important;\n            overflow-wrap: break-word !important;\n            transition: color 0.2s ease !important;\n        }\n\n        .product-card-featured:hover .product-card-featured-title { color: #FFD706 !important; }\n\n        .product-card-featured-desc {\n            font-size: 14.5px !important;\n            color: rgba(255, 253, 242, 0.82) !important;\n            margin: 0 !important;\n            line-height: 1.7 !important;\n            max-width: 520px !important;\n            overflow-wrap: break-word !important;\n        }\n\n        .product-card-featured-cta {\n            display: inline-flex !important;\n            align-items: center !important;\n            gap: 9px !important;\n            background: #FFD706 !important;\n            color: #0D0D0B !important;\n            font-size: 13px !important;\n            font-weight: 700 !important;\n            letter-spacing: 0.02em !important;\n            padding: 12px 22px !important;\n            border-radius: 8px !important;\n            margin-top: 6px !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            transition: background 0.18s ease, box-shadow 0.18s ease !important;\n        }\n\n        .product-card-featured-cta svg { transition: transform 0.2s ease !important; }\n        .product-card-featured:hover .product-card-featured-cta { background: #FFE24D !important; box-shadow: 0 6px 18px rgba(255, 215, 6, 0.28) !important; }\n        .product-card-featured:hover .product-card-featured-cta svg { transform: translateX(4px) !important; }\n\n        /* ── Right: logo panel with centred rings + glow ── */\n        .product-card-featured-media {\n            flex: 1 1 44% !important;\n            min-width: 0 !important;\n            position: relative !important;\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            overflow: hidden !important;\n            border-left: 1px solid rgba(255, 253, 242, 0.06) !important;\n            background:\n                radial-gradient(115% 100% at 68% 50%, rgba(255, 215, 6, 0.12), transparent 60%),\n                #0F0E0C !important;\n        }\n\n        .product-card-featured-media::before,\n        .product-card-featured-media::after {\n            content: \"\" !important;\n            position: absolute !important;\n            border-radius: 50% !important;\n            border: 1px solid rgba(255, 215, 6, 0.12) !important;\n            pointer-events: none !important;\n        }\n        .product-card-featured-media::before { width: 340px !important; height: 340px !important; }\n        .product-card-featured-media::after  { width: 210px !important; height: 210px !important; border-color: rgba(255, 215, 6, 0.17) !important; }\n\n        .product-card-featured-logo {\n            position: relative !important;\n            z-index: 1 !important;\n            height: 42px !important;\n            width: auto !important;\n            max-width: calc(100% - 72px) !important;\n            object-fit: contain !important;\n            transition: transform 0.25s ease !important;\n        }\n\n        .product-card-featured:hover .product-card-featured-logo { transform: scale(1.04) !important; }\n\n        @keyframes newBadgeGlow {\n            0%, 100% { box-shadow: 0 2px 12px rgba(255, 215, 6, 0.30); }\n            50%      { box-shadow: 0 2px 22px rgba(255, 215, 6, 0.62); }\n        }\n\n        @media (prefers-reduced-motion: reduce) {\n            .product-card-featured-badge { animation: none !important; }\n        }\n\n        /* ============================================================\n           FOOTER\n        ============================================================ */\n        .globallp-footer {\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            background: #0D0D0B !important;\n            color: #fff !important;\n            padding: 48px 0 !important;\n            border-top: 1px solid rgba(255, 253, 242, 0.06) !important;\n        }\n\n        .globallp-footer-content {\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            display: flex !important;\n            justify-content: space-between !important;\n            align-items: center !important;\n            padding: 0 32px !important;\n            box-sizing: border-box !important;\n        }\n\n        .globallp-footer-content img { width: auto !important; height: 16px !important; margin: 0 !important; }\n        .globallp-footer-content p { margin: 0 !important; font-size: 14px !important; color: #FFFDF2 !important; }\n        .globallp-footer-content a { color: #FFFDF2 !important; text-decoration: none !important; margin-right: 20px !important; }\n        .globallp-footer-content a:hover { text-decoration: underline !important; }\n\n        /* ============================================================\n           HERO SEARCH\n        ============================================================ */\n        .hero-search-bar { display: none !important; align-items: center !important; gap: 10px !important; background: rgba(255,255,255,0.08) !important; border: 1px solid rgba(255,255,255,0.15) !important; border-radius: 8px !important; padding: 10px 16px !important; max-width: 420px !important; cursor: pointer !important; margin-bottom: 24px !important; transition: background 0.2s, border-color 0.2s !important; }\n        .hero-search-bar:hover { background: rgba(255,255,255,0.13) !important; border-color: rgba(255,255,255,0.3) !important; }\n        .hero-search-icon { color: rgba(255,255,255,0.5) !important; flex-shrink: 0 !important; }\n        .hero-search-placeholder { flex: 1 !important; font-size: 15px !important; color: rgba(255,255,255,0.45) !important; font-family: \"Polar\",\"Helvetica Neue\",Helvetica,arial,sans-serif !important; }\n        .hero-search-kbd { font-size: 12px !important; color: rgba(255,255,255,0.3) !important; background: rgba(255,255,255,0.08) !important; border: 1px solid rgba(255,255,255,0.15) !important; border-radius: 4px !important; padding: 2px 7px !important; font-family: monospace !important; }\n\n        /* ============================================================\n           RESPONSIVE\n        ============================================================ */\n        @media (max-width: 768px) {\n            .globallp-header-section       { padding: 48px 0 !important; }\n            .globallp-header-content       { padding: 0 20px !important; }\n            .globallp-heading              { font-size: 36px !important; }\n            .globallp-supporting-text      { font-size: 16px !important; }\n            .hero-search-bar               { max-width: 100% !important; }\n\n            .products-section              { padding: 0 20px 64px !important; }\n\n            .section-header-block {\n                flex-direction: column !important;\n                align-items: flex-start !important;\n                gap: 10px !important;\n                padding: 20px !important;\n                margin-bottom: 24px !important;\n            }\n            .section-header-right          { max-width: 100% !important; }\n            .section-title                 { font-size: 24px !important; }\n\n            .products-grid                 { grid-template-columns: 1fr !important; }\n            .product-card-visual           { height: 150px !important; }\n            .product-card-visual-icon-box  { padding: 0 28px !important; }\n            .product-card-icon             { width: 48px !important; height: 48px !important; }\n            .product-card-visual-logo      { height: 36px !important; }\n            .product-card-body             { padding: 22px 22px 20px !important; }\n            .product-card-title            { font-size: 17px !important; }\n\n            /* Featured card stacks — logo panel on top */\n            a.product-card.product-card-featured { flex-direction: column-reverse !important; }\n            .product-card-featured-media         { flex: none !important; width: 100% !important; height: 150px !important; border-left: 0 !important; border-bottom: 1px solid rgba(255, 253, 242, 0.06) !important; }\n            .product-card-featured-media::before { width: 260px !important; height: 260px !important; }\n            .product-card-featured-media::after  { width: 160px !important; height: 160px !important; }\n            .product-card-featured-logo          { height: 36px !important; }\n            .product-card-featured-content       { flex: none !important; width: 100% !important; padding: 24px 22px !important; gap: 14px !important; }\n            .product-card-featured-title         { font-size: 19px !important; }\n            .product-card-featured-desc          { font-size: 13.5px !important; max-width: 100% !important; }\n\n            .globallp-footer               { padding: 36px 0 !important; }\n            .globallp-footer-content {\n                flex-direction: column !important;\n                align-items: center !important;\n                text-align: center !important;\n                gap: 16px !important;\n                padding: 0 20px !important;\n            }\n            .globallp-footer-content p { display: flex !important; flex-wrap: wrap !important; justify-content: center !important; gap: 6px !important; }\n            .globallp-footer-content a     { margin-right: 0 !important; }\n        }\n\n        @media (max-width: 480px) {\n            .globallp-header-section       { padding: 36px 0 !important; }\n            .globallp-heading              { font-size: 28px !important; }\n            .globallp-supporting-text      { font-size: 15px !important; }\n            .hero-search-kbd               { display: none !important; }\n            .products-section              { padding: 0 16px 56px !important; }\n            .section-header-block          { padding: 18px 16px !important; }\n            .section-title                 { font-size: 20px !important; }\n            .product-card-visual           { height: 130px !important; }\n            .product-card-visual-icon-box  { padding: 0 20px !important; }\n            .product-card-icon             { width: 40px !important; height: 40px !important; }\n            .product-card-visual-logo      { height: 30px !important; }\n            .product-card-body             { padding: 18px 18px 16px !important; }\n            .product-card-title            { font-size: 16px !important; }\n            .product-card-desc             { font-size: 12px !important; }\n\n            /* Featured card — small-screen sizing */\n            .product-card-featured-media         { height: 130px !important; }\n            .product-card-featured-media::before { width: 210px !important; height: 210px !important; }\n            .product-card-featured-media::after  { width: 130px !important; height: 130px !important; }\n            .product-card-featured-logo          { height: 30px !important; }\n            .product-card-featured-content       { padding: 20px 18px !important; }\n            .product-card-featured-title         { font-size: 17px !important; }\n            .product-card-featured-desc          { font-size: 12.5px !important; }\n            .product-card-featured-cta           { padding: 10px 18px !important; }\n        }\n\n        @media (max-width: 375px) {\n            .globallp-heading              { font-size: 26px !important; }\n            .section-title                 { font-size: 18px !important; }\n            .product-card-title            { font-size: 15px !important; }\n            .product-card-featured-title { font-size: 16px !important; }\n        }\n    \u003c/style>\n\u003c/head>\n\n\u003cbody>\n\n    \u003c!-- ===== Hero ===== -->\n    \u003csection class=\"globallp-header-section\">\n        \u003cdiv class=\"globallp-header-content\">\n            \u003cdiv class=\"hero-search-bar\" id=\"hero-search-trigger\">\n                \u003csvg class=\"hero-search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                    \u003ccircle cx=\"11\" cy=\"11\" r=\"8\">\u003c/circle>\n                    \u003cline x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\">\u003c/line>\n                \u003c/svg>\n                \u003cspan class=\"hero-search-placeholder\">Search documentation...\u003c/span>\n                \u003cspan class=\"hero-search-kbd\">⌘K\u003c/span>\n            \u003c/div>\n            \u003cdiv class=\"globallp-subheading\">DOCUMENTATION HUB\u003c/div>\n            \u003cdiv class=\"globallp-heading\">Your single source for \u003cspan style=\"color:#FFD706\">everything\u003c/span> Recurly\u003c/div>\n            \u003cdiv class=\"globallp-supporting-text\" style=\"margin-bottom: 40px !important;\">Explore comprehensive guides, API references, and best practices across all our products.\u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== Products ===== -->\n    \u003csection class=\"products-section\">\n        \u003cdiv class=\"products-container\">\n\n            \u003cdiv class=\"section-header-block\">\n                \u003cdiv class=\"section-header-left\">\n                    \u003cdiv class=\"section-eyebrow\">\u003cspan class=\"section-eyebrow-dot\">\u003c/span>All products\u003c/div>\n                    \u003ch2 class=\"section-title\">Explore our documentation\u003c/h2>\n                \u003c/div>\n                \u003cdiv class=\"section-header-right\">\n                    \u003cp class=\"section-desc\">Every Recurly product has its own dedicated documentation hub — pick a product to dive in.\u003c/p>\n                \u003c/div>\n            \u003c/div>\n\n            \u003cdiv class=\"products-grid\">\n\n                \u003c!-- Recover (featured / new) -->\n                \u003ca href=\"https://docs.recurly.com/recurly-recover/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"product-card product-card-featured product-recover\">\n                    \u003cdiv class=\"product-card-featured-content\">\n                        \u003cspan class=\"product-card-featured-badge\">\u003cspan class=\"product-card-featured-badge-dot\">\u003c/span>New\u003c/span>\n                        \u003cdiv class=\"product-card-featured-title\">Recover failed payments automatically\u003c/div>\n                        \u003cdiv class=\"product-card-featured-desc\">A standalone retry engine that collects on past-due invoices — plug Recurly's optimized dunning into your existing billing stack and let it manage the entire recovery lifecycle.\u003c/div>\n                        \u003cspan class=\"product-card-featured-cta\">\n                            Explore docs\n                            \u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\">\u003c/line>\n                                \u003cpolyline points=\"12 5 19 12 12 19\">\u003c/polyline>\n                            \u003c/svg>\n                        \u003c/span>\n                    \u003c/div>\n                    \u003cdiv class=\"product-card-featured-media\">\n                        \u003cimg class=\"product-card-featured-logo\" src=\"https://files.readme.io/972a95e0a4de5ce8a015aa67218d46e7ace6469eefede2d89b2eeacab59ee52a-logo_recurly-recover-docs_yellow.svg\" alt=\"Recurly Recover\">\n                    \u003c/div>\n                \u003c/a>\n\n                \u003c!-- Subscriptions -->\n                \u003ca href=\"https://docs.recurly.com/recurly-subscriptions/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"product-card product-subscriptions\">\n                    \u003cdiv class=\"product-card-visual\">\n                        \u003cdiv class=\"product-card-visual-logo-box\">\n                            \u003cimg class=\"product-card-visual-logo\" src=\"https://files.readme.io/eb473e08a5d8ea2855c5eea7a997615ac57b2104d6ea30c34fb2922d9187f11b-logo-docs-subscriptions.svg\" alt=\"Recurly Subscriptions\">\n                        \u003c/div>\n                    \u003c/div>\n                    \u003cdiv class=\"product-card-body\">\n                        \u003cdiv class=\"product-card-title\">Subscription lifecycle management\u003c/div>\n                        \u003cdiv class=\"product-card-desc\">Everything you need to scale your subscription business and keep customers coming back — plans, billing, payments, and analytics in one platform.\u003c/div>\n                        \u003cdiv class=\"product-card-cta-row\">\n                            \u003cspan class=\"product-card-cta\">\n                                Explore docs\n                                \u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                    \u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\">\u003c/line>\n                                    \u003cpolyline points=\"12 5 19 12 12 19\">\u003c/polyline>\n                                \u003c/svg>\n                            \u003c/span>\n                            \u003cspan class=\"product-card-tag\">docs.recurly.com\u003c/span>\n                        \u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003c!-- Commerce -->\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"product-card product-commerce\">\n                    \u003cdiv class=\"product-card-visual\">\n                        \u003cdiv class=\"product-card-visual-logo-box\">\n                            \u003cimg class=\"product-card-visual-logo\" src=\"https://files.readme.io/7e2772a53b366d01d8bcd19e60271894bcc470594ee3902e1a77a0b6d0d79b2b-logo-docs-commerce.svg\" alt=\"Recurly Commerce\">\n                        \u003c/div>\n                    \u003c/div>\n                    \u003cdiv class=\"product-card-body\">\n                        \u003cdiv class=\"product-card-title\">Boost subscription sales on Shopify\u003c/div>\n                        \u003cdiv class=\"product-card-desc\">An e-commerce solution that empowers subscribers with skip, swap, and more — driving retention and predictable revenue.\u003c/div>\n                        \u003cdiv class=\"product-card-cta-row\">\n                            \u003cspan class=\"product-card-cta\">\n                                Explore docs\n                                \u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                    \u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\">\u003c/line>\n                                    \u003cpolyline points=\"12 5 19 12 12 19\">\u003c/polyline>\n                                \u003c/svg>\n                            \u003c/span>\n                            \u003cspan class=\"product-card-tag\">docs.recurly.com\u003c/span>\n                        \u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003c!-- Engage -->\n                \u003ca href=\"https://docs.recurly.com/recurly-engage/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"product-card product-engage\">\n                    \u003cdiv class=\"product-card-visual\">\n                        \u003cdiv class=\"product-card-visual-logo-box\">\n                            \u003cimg class=\"product-card-visual-logo\" src=\"https://files.readme.io/2db76b2c902ac18c8aac850ab3a7e0268909e4bd9c834ac9be32641143d9039f-logo-docs-engage.svg\" alt=\"Recurly Engage\">\n                        \u003c/div>\n                    \u003c/div>\n                    \u003cdiv class=\"product-card-body\">\n                        \u003cdiv class=\"product-card-title\">Drive upsells, retention, and product adoption\u003c/div>\n                        \u003cdiv class=\"product-card-desc\">Power your subscribers' journey with personalized prompts and automation that fuel revenue growth.\u003c/div>\n                        \u003cdiv class=\"product-card-cta-row\">\n                            \u003cspan class=\"product-card-cta\">\n                                Explore docs\n                                \u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                    \u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\">\u003c/line>\n                                    \u003cpolyline points=\"12 5 19 12 12 19\">\u003c/polyline>\n                                \u003c/svg>\n                            \u003c/span>\n                            \u003cspan class=\"product-card-tag\">docs.recurly.com\u003c/span>\n                        \u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003c!-- RevRec -->\n                \u003ca href=\"https://docs.recurly.com/recurly-revrec/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"product-card product-revrec\">\n                    \u003cdiv class=\"product-card-visual\">\n                        \u003cdiv class=\"product-card-visual-logo-box\">\n                            \u003cimg class=\"product-card-visual-logo\" src=\"https://files.readme.io/610ce61eb183e21844f128c3e33c58a101c952aa18712f67999e4d6d6a966d73-logo-docs-revrec.svg\" alt=\"Recurly RevRec\">\n                        \u003c/div>\n                    \u003c/div>\n                    \u003cdiv class=\"product-card-body\">\n                        \u003cdiv class=\"product-card-title\">Automate revenue recognition for subscriptions\u003c/div>\n                        \u003cdiv class=\"product-card-desc\">Streamline and automate compliance with multiple revenue reporting standards with Recurly's enterprise-grade, fully configurable solution.\u003c/div>\n                        \u003cdiv class=\"product-card-cta-row\">\n                            \u003cspan class=\"product-card-cta\">\n                                Explore docs\n                                \u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                    \u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\">\u003c/line>\n                                    \u003cpolyline points=\"12 5 19 12 12 19\">\u003c/polyline>\n                                \u003c/svg>\n                            \u003c/span>\n                            \u003cspan class=\"product-card-tag\">docs.recurly.com\u003c/span>\n                        \u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== Footer ===== -->\n    \u003csection class=\"globallp-footer\">\n        \u003cdiv class=\"globallp-footer-content\">\n            \u003cimg src=\"https://recurly.com/img2/product-docs/img-footer-logo-tagline.webp\" alt=\"Recurly Logo\">\n            \u003cp>\n                \u003ca href=\"https://recurly.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Recurly.com\u003c/a>\n                \u003ca href=\"https://recurly.com/legal/\" target=\"_blank\" rel=\"noopener noreferrer\">Legal\u003c/a>\n                &copy; 2026 Recurly, Inc.\n            \u003c/p>\n        \u003c/div>\n    \u003c/section>\n\n\u003c/body>","redirect":""},"html_hidelinks":false,"collapsibleCategories":false,"showBreadcrumbs":false,"showPageIcons":true,"showVersion":true,"searchModal":"classic","hideTableOfContents":false,"nextStepsLabel":"","ai_dropdown":"disabled","print_button":"disabled","ai_options":{"ask_ai":"enabled","chatgpt":"enabled","claude":"enabled","clipboard":"enabled","copilot":"enabled","mcp":{"command":"enabled","config":"enabled","cursor":"enabled","vscode":"enabled"},"view_as_markdown":"enabled"}},"custom_domain":"docs.recurly.com","description":"Welcome to the Recurly Documentation Hub: your single source for everything Recurly. Explore comprehensive guides, API references, and best practices across all our products.","hstsIncludeSubdomains":false,"planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"","error404":"","first_page":"landing","git":{"renamedSlugs":[]},"glossaryTerms":[],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"healthCheck":{"provider":"","settings":{}},"i18n":{"defaultLanguage":"en","languages":[{"code":"en","type":"manual"}],"state":"enabled"},"intercom":"","aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","jwtExpirationTime":0,"landing_bottom":[],"llms_txt":true,"llms_txt_options":{"split":true,"query":false,"use_custom":true},"mcp":{"state":"disabled"},"mdxishMigrationStatus":{"migratedFrom":"rdmd"},"metrics":{"monthlyLimit":0,"monthlyPurchaseLimit":0,"thumbsEnabled":true,"meteredBilling":{}},"modules":{"landing":false,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":true,"suggested_edits":false,"custompages":false,"tutorials":true},"name":"Recurly Documentation","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"oauth_url":"","onboardingCompleted":{"api":false,"appearance":false,"documentation":false,"domain":false,"jwt":false,"logs":false,"metricsSDK":false,"aiReady":false,"team":false,"gitSync":false},"openapiVisibility":"admin","owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":true,"newExperience":true,"isPaying":false,"lastIndexed":"2025-10-07T17:31:29.539Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"plan":"enterprise","planOverride":"enterprise","readmeScore":{},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"seo":{"overwrite_title_tag":false},"searchSettings":{"default_to_current_project":false,"show_project_filter":true,"sort_projects_alphabetically":false},"ssl":{"minTLS":"1.2"},"subdomain":"recurly-group","subpath":"","topnav":{"left":[],"right":[{"type":"url","text":"Support","url":"https://support.recurly.com/"},{"type":"url","text":"Contact us","url":"https://recurly.com/contact-us/"},{"type":"url","text":"Book demo","url":"https://recurly.com/request-a-demo/"}],"bottom":[],"edited":true},"trial":{"trialDeadlineEnabled":true,"trialEndsAt":"2025-07-16T23:48:26.089Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"","variableDefaults":[],"child":{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":false,"superHubBranchReviewActions":false},"versions":[{"__v":9,"_id":"6865c648c6b75f0030446866","createdAt":"2025-07-02T23:52:40.369Z","updatedAt":"2026-10-14T16:53:45.328Z","project":"6865c648c6b75f0030446843","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2025-07-02T23:52:40.338Z","pdfStatus":"","apiRegistries":[{"filename":"commerce-api-documentation.json","uuid":"7atcmv8cn3rm"},{"filename":"prive-widget-documentation.json","uuid":"4nl9ge0momyj4x1"},{"filename":"prive-api-documentation.json","uuid":"e1ttaq3nmcb337q9"}],"source":"readme"}],"stable":{"__v":9,"_id":"6865c648c6b75f0030446866","createdAt":"2025-07-02T23:52:40.369Z","updatedAt":"2026-10-14T16:53:45.328Z","project":"6865c648c6b75f0030446843","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2025-07-02T23:52:40.338Z","pdfStatus":"","apiRegistries":[{"filename":"commerce-api-documentation.json","uuid":"7atcmv8cn3rm"},{"filename":"prive-widget-documentation.json","uuid":"4nl9ge0momyj4x1"},{"filename":"prive-api-documentation.json","uuid":"e1ttaq3nmcb337q9"}],"source":"readme"},"_id":"6865c648c6b75f0030446843","accessRules":{"branch_approve":{"admin":true,"editor":false},"branch_merge":{"admin":true,"editor":false},"version_edit":{"admin":true,"editor":false}},"ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true}},"appearance":{"allowApiExplorerJsonEditor":false,"borderRadius":"default","changelog":{"layoutExpanded":false,"showAuthor":false,"showExactDate":false},"referenceFlatSections":"disabled","referenceLayout":"row","referenceParamFont":"default","referenceParamInputs":"all","referenceSimpleMode":true,"methodBadgeStyle":"classic","oneOfLayout":"dropdown","showCredentials":true,"showExactDate":false,"showMethodInSidebar":true,"link_logo_to_url":false,"theme":"solid","theme_preset":"default","colorScheme":"system","overlay":"triangles","landing":true,"sticky":false,"hide_logo":false,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":true,"showMetricsInReference":true,"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":"","markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"links"},"colors":{"highlight":"","main":"#0d0d0b","main_dark":"","main_alt":"","header_text":"","body_highlight":"#0d0d0b","body_highlight_dark":"","custom_login_link_color":"","page_background":"","page_background_dark":"","background_tint":"","background_tint_dark":"","border":"","border_dark":"","breadcrumb":"","breadcrumb_dark":"","header":"","header_dark":"","askai_button_bg":"","askai_button_bg_dark":"","sidebar_border":"","sidebar_border_dark":""},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","code":"","spacing":null,"typekit":false,"tk_key":"","tk_headline":"","tk_body":""},"header":{"img":[],"img_size":"auto","img_pos":"tl","linkStyle":"tabs","style":"solid","subnav":{"alignment":"start"}},"body":{"style":"none"},"promos":[{"_id":"6865c648c6b75f0030446844","title":"","text":"","extras":{"type":"none","buttonPrimary":"","buttonSecondary":"none"}}],"layout":{"full_width":false,"style":"classic","sticky_header":null},"logo":["https://files.readme.io/84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg","84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg",null,null,"#ffd706",null,"6a0caab85a19dc4e20cd9637"],"loginLogo":[],"logo_white":[],"logo_white_use":false,"logo_large":false,"logo_size":"default","favicon":["https://files.readme.io/f5415736f6306f3aff84928311144e1e776487dbb4c3dffa4129f3cc583c3f7f-Recurly-Profile-Image.png","f5415736f6306f3aff84928311144e1e776487dbb4c3dffa4129f3cc583c3f7f-Recurly-Profile-Image.png",300,300,"#fbd404",null,"68754ea392d1d6374f1ee479"],"tocVariant":"line","stylesheet":"","stylesheet_hub2":"/* Hide immediately, then fade in after 1s */\nbody .hub-is-home {\n  opacity: 0;\n  animation: hubFadeIn 0.4s ease forwards;\n  animation-delay: 1s;\n}\n\n/* turn header links back on */\n.rm-Header-bottom-link {\n    -webkit-box-sizing: border-box;\n    box-sizing: border-box;\n    display: inline-flex;\n}\n\n@keyframes hubFadeIn {\n  to { opacity: 1; }\n}\n\n* {\n    box-sizing: border-box;\n}\nbody {\n      font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n    }\n\n/* Image zoomer start */\n  .image-zoomer-container {\n      position: relative;\n      width: 720px;\n      height: 720px;\n      overflow: hidden;\n      border: 2px solid #ccc;\n    \tpadding: 20px;\n    \tmarging: 20px;\n      cursor: crosshair;\n    }\n\n    .image-zoomer-container img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      transition: transform 0.2s ease-out;\n    }\n\n    .image-zoomer-container:hover img {\n      transform: scale(7); /* Adjust zoom level */\n    }\n\n    .image-zoomer-container:hover img.move {\n      /*transition: none; /* Disable smooth transition when moving */\n      transition: ease-in-out;\n    }\n\t\t\n/* Image zoomer end */\n\n\n\t/* fix for width getting changed to % on the page for video iframes */\n    iframe {\n      width: 100%;\n      height: 450px;\n    }\n  \n    .rm-LandingPage {\n      width: 1200px;\n    }\n  \n    .rm-Header-top {\n      background: #0D0D0B;\n    }\n  \n    .rm-LandingPageHeader {\n      padding: 170px 20px 80px;\n    }\n    .rm-LandingPageHeader .rm-SearchToggle {\n      position: relative;\n      width: 469px;\n      background: #fff;\n      border-radius: 4px;\n    }\n  \n    .rm-LandingPageHeader .rm-SearchToggle:before {\n      display: block;\n      content: \"How can we help?\";\n      position: absolute;\n      top: -84px;\n      left: -40px;\n      text-align: center;\n      width: 120%;\n      font-size: 60px;\n      font-weight: 800;\n      font-family: 'proxima-nova';\n      pointer-events: none;\n    }\n  \n    .rm-LandingPageHeader .rm-SearchToggle .rm-SearchToggle-icon {\n      color: #5a5a5a;\n    }\n    .rm-LandingPageHeader .rm-SearchToggle .rm-SearchToggle-placeholder {\n      color: #fff;\n      font-size: 16px;\n      font-weight: 400;\n    }\n\n/* Start Storylane custome CSS */\n\t\t\t.sl-embed {   \n\t\t\t\t\t\tposition: relative;\n            padding-bottom: calc(56.68% + 25px);\n            width: 100%;\n            height: 0;\n            transform: scale(1);\n        }\n        .sl-demo {\n            width: 100% !important;\n            border: 1px solid rgba(63, 95, 172, 0.35);\n            box-shadow: 0px 0px 18px rgba(26, 19, 72, 0.15);\n            border-radius: 10px;\n            box-sizing: border-box;\n        }\n/* End Storylane custome CSS */\n  \n    main.main-index {\n      /* background-color: red; */\n      width: 1200px;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 25px;\n      margin: 0 auto 80px;\n      font-family: \"Proxima-nova\", sans-serif;\n    }\n  \n    header.main-header {\n      background-color: #ffd706;\n      border-radius: 0;\n      /*box-shadow: 0 4px 22px 0 rgba(35, 41, 50, 0.15);*/\n      /* margin-top: 25px; */\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      min-height: 80px;\n      width: 100%;\n      margin: 10px 10px 50px;\n      padding: 0 20px;\n      box-sizing: border-box;\n    }\n  \n    header.main-header p.header-paragraph {\n      font-size: 20px;\n      line-height: 28px;\n      color: #0D0D0B;\n    }\n    header.main-header .image-wrap {\n      display: flex;\n      align-items: center;\n    }\n  \n    header.main-header img {\n        margin: 0 20px 0 0;\n    }\n  \n    header.main-header p,\n    header.main-header strong {\n      color: #0D0D0B;\n      margin: 0;\n    }\n  \n    header.main-header strong {\n      font-weight: bold;\n      text-decoration: none;\n    }\n  \n    header.main-header a {\n      margin: 0 0 0 10rem;\n      padding: 8px 25px;\n      color: #0D0D0B;\n      text-decoration: none;\n      font-size: 14px;\n      font-weight: 800;\n      border-radius: 3px;\n      border: 2px solid #0D0D0B;\n    }\n  \n    header.main-header a:hover {\n      text-decoration: none;\n    }\n  \n   .main-index section {\n      /* background-color: green; */\n      width: 100%;\n      height: 100%;\n      display: flex;\n      flex-wrap: wrap;\n      align-items: center;\n      justify-content: space-between;\n      gap: 20px;\n      padding: 0;\n      margin: 0;\n    }\n  \n    .card {\n      width: 340px;\n      margin: 0 0 40px;\n  /*    border-radius: 20px;*/\n  /*    box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);*/\n      display: flex;\n      justify-content: center;\n      flex-direction: column;\n      align-items: flex-start;\n      padding: 0 15px;\n      cursor: auto;\n      transition: .175s all ease-in-out;\n    }\n  \n    /* .card:hover {\n      background-color: #ffffff;\n      transform: scale(1.05);\n      box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);\n    } */\n  \n    .card img {\n      width: 48px;\n      height: 48px;\n      margin: 0;\n      margin-bottom: 10px;\n    }\n  \n    .card h2 {\n      color: #0D0D0B;\n      font-size: 24px;\n      font-weight: 700;\n      line-height: 32px;\n      margin: 0;\n      margin-bottom: 11px;\n    }\n  \n    .card p {\n      margin: 0;\n      color: #0D0D0B;\n      margin-bottom: 15px;\n    }\n  \n    .card a, .LandingBlock3PM-HyBxby3X a {\n      color: #0D0D0B;\n      text-decoration-thickness: 2px;\n\t    text-underline-offset: 5px;\n      text-decoration: underline;\n      transition: 0.25s ease all;\n    }\n  \n    .card a:hover, .LandingBlock3PM-HyBxby3X a:hover {\n      color: #0D0D0B;\n      text-decoration: none;\n    }\n  \n    /* .Header-searchtb6Foi0-D9Vx {\n      position: absolute;\n      top: 50px;\n      right: 5px;\n      margin: 0;\n      padding: 0;\n      box-shadow: none;\n      border: none;\n      outline: none;\n      width: 50%;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n    }\n  \n    .Header-searchtb6Foi0-D9Vx button {\n  \n      width: 25%;\n      height: 53px;\n    }  */\n.reference-redesign .Sidebar-listWrapper6Q9_yUrG906C{\n        display: -webkit-box;\n        display: -ms-flexbox;\n        display: flex;\n        -ms-flex-item-align: start;\n        -ms-flex-align: ;\n        -webkit-box-flex: 0;\n        -ms-flex: 0;\n        flex: 0 !important;\n        -webkit-box-orient: vertical;\n        -webkit-box-direction: normal;\n        -ms-flex-direction: column;\n        flex-direction: column;\n        align-items: flex-start !important;\n      }\n    .reference-redesign .Sidebar-link2Dsha-r-GKh2:active, .reference-redesign .Sidebar-link2Dsha-r-GKh2.active {\n        background: var(--Sidebar-link-background);\n        color: #0D0D0B) !important;\n      }\n      .LandingBlock3PM-HyBxby3X a:not(:hover){\n\t\t\t\ttext-decoration: underline !important;\n      }\n  \n    @media (max-width: 768px) {\n      .rm-LandingPage {\n        width: 100%;\n      }\n  \n      main.main-index {\n        width: 100%;\n        height: 100%;\n      }\n  \n      .rm-LandingPageHeader {\n        display: block;\n      }\n  \n      .rm-LandingPageHeader .rm-SearchToggle {\n        width: 340px;\n      }\n  \n      .rm-LandingPageHeader .rm-SearchToggle:before {\n        font-size: 44px;\n      }\n  \n      header.main-header {\n        display: block;\n        width: 95%;\n        min-height: auto;\n      }\n  \n      header.main-header img {\n        display: block;\n        margin: 10px auto;\n      }\n  \n      header.main-header a {\n        display: block;\n        margin: 16px auto 20px;\n        max-width: 160px;\n      }\n  \n      header.main-header p.header-paragraph {\n        margin: 0 10px;\n        text-align: center;\n      }\n  \n      .card {\n        width: 90%;\n        padding: 0 25px 0 20px;\n      }\n  \n      .Header-searchtb6Foi0-D9Vx {\n        position: absolute;\n        top: 55px;\n        right: 0px;\n        margin: 0;\n        padding: 0;\n        box-shadow: none;\n        border: none;\n        outline: none;\n        width: 50%;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n      }\n  \n      .Header-searchtb6Foi0-D9Vx button {\n        width: 25% !important;\n        padding-left: 20px;\n        border: 1px solid #0D0D0B !important;\n      } \n  \n      .Header-searchtb6Foi0-D9Vx button .icon-search1  {\n        color: #ffd706 !important;\n      }\n    }\n\n/* beginning of footer */\n\n\n.container {\n    margin-right: auto;\n    margin-left: auto;\n    padding-left: 15px;\n    padding-right: 15px;\n    min-width: 320px;\n    position: relative;\n\n    \n\n}\n@media (min-width: 768px) {\n    .container {\n        width: 750px;\n    }\n}\n@media (min-width: 992px) {\n    .container {\n        width: 970px;\n    }\n}\n@media (min-width: 1200px) {\n    .container {\n        width: 1170px;\n    }\n}\n.list-reset {\n    list-style: none;\n    margin-top: 0;\n    margin-bottom: 0;\n    padding: 0;\n}\nfooter {\n\tposition:relative;\n\tfont-size:14px;\n\toverflow:hidden;\n\tcolor:#fff;\n\tbackground:#0D0D0B\n}\n.btn--footer {\n    display: -webkit-inline-box;\n    display: inline-flex;\n    -webkit-box-align: center;\n    align-items: center;\n    -webkit-box-pack: center;\n    justify-content: center;\n    height: 50px;\n    padding: 0 1.5rem;\n    text-align: center;\n    border-radius: 6px;\n    font-weight: 400;\n    text-decoration: none;\n    cursor: pointer;\n    font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n    border-width: 0;\n    text-align: center;\n}\n.btn-primary--footer {\n    background-color: #FFD706;\n    color: #0D0D0B;\n    -webkit-transition: background-color 0.25s;\n    transition: background-color 0.25s;\n    margin: 0 2.2rem 0 0;\n    width: auto;\n}\n.feedback__header {\n    font-size: 3rem;\n}\n@media (max-width: 790px) {\n    .feedback__header {\n      font-size: 1.6rem;\n    }\n  }\n.footer__feedback {\n    display: flex;\n    gap: 30px;\n    align-items: center;\n    justify-content: center;\n\n}\n@media (min-width:768px) {\n    .footer__feedback {\n        flex-direction: row;\n        flex-flow: row;\n    }\n}\n.footer__bottom {\n    padding: 30px 0;\n    border-top: 1px solid #32312D;\n}\na:not(.btn) {\n    color: inherit;\n    -webkit-text-decoration-color: #FF5810;\n    text-decoration-color: #FF5810;\n    text-decoration-thickness: 2px;\n    text-underline-offset: 5px;\n    -webkit-transition: -webkit-text-decoration-color 0.25s;\n    transition: -webkit-text-decoration-color 0.25s;\n    transition: text-decoration-color 0.25s;\n    transition: text-decoration-color 0.25s, -webkit-text-decoration-color 0.25s;\n}\na:not(.btn).link-no-underline {\n    -webkit-text-decoration-color: transparent;\n    text-decoration-color: transparent;\n}\na:not(.btn).link-no-underline:hover {\n    -webkit-text-decoration-color: #FF5810;\n    text-decoration-color: #FF5810;\n}\n.footer-basic__grid {\n    display: -webkit-box;\n    display: flex;\n    -webkit-box-pack: justify;\n    justify-content: space-between;\n    -webkit-box-align: center;\n    align-items: center;\n    gap: 40px;\n}\n@media (max-width:768px) {\n    .footer-basic__grid {\n        -webkit-box-orient: horizontal;\n        -webkit-box-direction: normal;\n        flex-direction: row;\n        -webkit-box-pack: center;\n        justify-content: center;\n        flex-wrap: wrap;\n        margin: 0;\n        padding: 0;\n    }\n}\n.footer__doc-logo {\n    width: 200px;\n}\n.footer__links {\n    display: -webkit-box;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    flex-direction: column;\n    gap: 20px;\n    padding: 1rem 0 1rem 0;\n    margin: 0 auto;\n}\n\n.footer__list-secondary {\n    display: flex;\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    flex-direction: column;\n    gap: 20px;\n}\n@media (min-width:768px) {\n    .footer__list-secondary {\n        -webkit-box-orient: horizontal;\n        -webkit-box-direction: normal;\n        flex-direction: row;\n        -webkit-box-pack: end;\n        justify-content: end;\n        flex-wrap: wrap;\n    }\n}\n.footer__social {\n    grid-area: social;\n    display: -webkit-box;\n    display: flex;\n    gap: 20px;\n    align-self: end;\n}\n.footer__social a {\n    display: -webkit-box;\n    display: flex;\n    -webkit-box-align: center;\n    align-items: center;\n    -webkit-box-pack: center;\n    justify-content: center;\n    width: 40px;\n    height: 40px;\n    padding:10px;\n    border-radius: 50%;\n    background-color: #FF5810;\n    -webkit-transition: background-color .3s;\n    transition: background-color .3s;\n}\n\n\n\n  .modal-bg {\n    position: fixed;\n    top: 0;\n    left: 0;\n    display: none;\n    width: 100%;\n    height: 100%;\n    background: rgba(35, 41, 50, 0.75);\n    z-index: 10;\n    backdrop-filter: blur(10px);\n    opacity: 0;\n    transition: opacity 0.25s;\n  }\n\n  .modal__wrap {\n    display: none;\n    position: fixed;\n    top: -10%;\n    left: 0;\n    width: 90%;\n    margin: 7rem 1.5rem;\n    padding: 1rem 2rem 2rem;\n    background: #FFFDF2;\n    border-radius: 2rem;\n    z-index: 11;\n  }\n  @media (min-width: 1080px) {\n    .modal__wrap {\n      top: -10%;\n      left: 50%;\n      width: 63.6rem;\n      margin: 8rem 0 0 -31.8rem;\n      padding: 1rem 5rem 3rem;\n    }\n}\n\n  .modal__close {\n    position: absolute;\n    top: 2rem;\n    right: 2rem;\n    width: 2.2rem;\n    height: 2.2rem;\n    cursor: pointer;\n    text-indent: -9999px;\n    background: url(\"https://recurly.com/img2/events/subscriptionsessions/close-btn.svg\")\n      center no-repeat;\n    background-size: 12px;\n  }\n\n  .modal__headline {\n    margin: 1.5rem 0 0;\n    color: #0D0D0B;\n    font-size: 2.2rem;\n    line-height: 2.2rem;\n    font-variation-settings: \"ital\" 0, \"wdth\" 100, \"wght\" 300;\n  }\n\n  /* Blur effect on background */\n        .blur-background {\n            filter: blur(5px);\n            pointer-events: none; /* Prevent interaction with blurred content */\n        }\n\n\n.mktoForm{\n\twidth:100% !important\n}\n.mktoForm .mktoOffset,.mktoForm .mktoGutter{\n\tdisplay:none\n}\n.mktoForm .mktoAsterix{\n\tdisplay:none\n}\n.mktoForm .mktoRequiredField .mktoAsterix{\n\tdisplay:inline-block;\n\tmargin:0 0.3rem 0 0\n}\n.mktoForm .mktoField.mktoHasWidth.mktoRequired.mktoInvalid{\n\tborder:1px solid #DF381F\n}\n.mktoForm div{\n\ttext-align:left;\n\tmargin:0;\n\tpadding:0\n}\n.mktoForm .mktoClear{\n\tclear:both;\n\tfloat:none\n}\n.mktoForm .gdpr__privacy,.mktoForm #LblGDPR_Consent__c{\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tcolor:#0D0D0B;\n\tfont-weight:400\n}\n.mktoForm #LblGDPR_Consent__c{\n\tposition:relative;\n\tbackground:transparent;\n\tfont-size:1rem;\n\tline-height:2rem;\n\tmargin-bottom:.8rem;\n\tpadding-right:.2rem\n}\n.mktoForm .gdpr__privacy{\n\tfont-size:1rem;\n\tline-height:1.5rem;\n\tmargin:1.0rem 0 0;\n}\n.mktoForm input{\n\t-webkit-transition:0.1s ease-out;\n\ttransition:0.1s ease-out\n}\n.mktoForm input[type=url],.mktoForm input[type=text],.mktoForm input[type=date],.mktoForm input[type=tel],.mktoForm input[type=email],.mktoForm input[type=number],.mktoForm textarea.mktoField,.mktoForm select.mktoField{\n\twidth:100% !important\n}\n.mktoForm input[type=email]+.mktoError .mktoErrorMsg{\n\tmax-width:19.5rem\n}\n.mktoForm select.mktoField{\n\tpadding:1.5rem 1.5rem 0rem 1.2rem;\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tbackground:url(\"https://recurly.com/img2/demo-request/dropdown-caret_expand.svg\") 96% center #fff no-repeat;\n\tbackground-size:12px 7px;\n\tborder-radius:0;\n\t-webkit-appearance:none;\n\t-moz-appearance:none;\n\tappearance:none;\n\theight:4rem;\n\twidth:100%;\n\tpadding:0.6rem;\n\tcolor:#535356;\n\tfont-size:1.8rem;\n\tfont-weight:500;\n\tborder:0 none;\n\tborder-radius:0;\n\tbox-shadow:none\n}\n.mktoForm select.mktoField>option:first-child{\n\tcolor:transparent\n}\n.mktoForm select.mktoField:focus{\n\toutline:none\n}\n.mktoForm select.mktoField:-moz-focusring{\n\tcolor:transparent;\n\ttext-shadow:0 0 0 #000\n}\n.mktoForm .consent-label-container{\n\tdisplay:-webkit-box;\n\tdisplay:flex;\n\t-webkit-box-orient:horizontal;\n\t-webkit-box-direction:reverse;\n\tflex-direction:row-reverse;\n\t-webkit-box-align:start;\n\talign-items:flex-start\n}\n.mktoForm .consent-label-container .mktoLabel{\n\tline-height:2rem\n}\n.mktoForm div.mktoFieldWrap:not(.consent-label-container) .mktoLabel.mktoHasWidth{\n\tfont-size:1rem;\n\tline-height:1.5rem;\n\tposition:relative;\n  width:auto !important;\n\tleft:1.4rem;\n\tright:30px;\n\ttop:30px;\n\tbackground-color:white;\n\t-webkit-transition:.1s ease-out;\n\ttransition:.1s ease-out;\n\t-webkit-transform-origin:left top;\n\ttransform-origin:left top;\n\tpointer-events:none\n}\n.mktoForm div.mktoFieldWrap:not(.consent-label-container) .mktoLabel.mktoHasWidth.active{\n\tline-height:2.2rem;\n\tfont-size:1.2rem;\n\ttop:0;\n\t-webkit-transform:translateY(17%) scale(0.9);\n\ttransform:translateY(17%) scale(0.9)\n}\n.mktoForm div.mktoRequiredField.selectLabel label.mktoLabel{\n\tposition:relative;\n\tbackground:none;\n\tline-height:1.5rem;\n\tleft:0;\n\ttop:0;\n\t-webkit-transition:none;\n\ttransition:none;\n\t-webkit-transform:none;\n\ttransform:none\n}\n.mktoForm div.mktoRequiredField.selectLabel label.mktoLabel.active{\n\tfont-size:1.6rem;\n\tline-height:2rem;\n\t-webkit-transform:none;\n\ttransform:none\n}\n.mktoForm .mktoCheckboxList{\n\tpadding:0;\n\tfloat:left;\n\tposition:relative;\n\ttop:0\n}\n.mktoForm .mktoCheckboxList label{\n\tfont-size:1.4rem;\n\tline-height:2rem\n}\n.mktoForm .mktoCheckboxList>input{\n\tmargin:0 1rem 0 0\n}\n.mktoForm .mktoCheckboxList>input:after{\n\tcontent:\" \";\n\tfont-size:1.4rem;\n\tbackground-color:#ab4ac3;\n\tdisplay:inline-block;\n\tvisibility:visible\n}\n.mktoForm .mktoCheckboxList>input:checked:after{\n\tcontent:\"\\2713\";\n\tbox-shadow:0px 2px 4px rgba(155,155,155,0.15);\n\tborder-radius:3px;\n\theight:1.5rem;\n\tdisplay:block;\n\twidth:1.5rem;\n\ttext-align:center;\n\tfont-size:1.2rem;\n\tcolor:white\n}\n.mktoForm .mktoLabel{\n\tline-height:3rem;\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tfont-size:1.6rem;\n\tfont-weight:400;\n\tcolor:#0D0D0B;\n\tdisplay:inline-block;\n\tfloat:none !important;\n\twidth:auto\n}\n.mktoForm .mktoLabel span{\n\tcolor:#0D0D0B;\n\tfont-size:1.0rem;\n\tline-height:1.5rem\n}\n.mktoButtonWrap.mktoSimple {\n  margin-left: 0 !important;\n}\n.mktoForm .mktoButtonWrap.mktoSimple .mktoButton{\n\tdisplay:inline-block;\n\t-webkit-user-select:none;\n\t-moz-user-select:none;\n\t-ms-user-select:none;\n\tuser-select:none;\n\theight:4rem;\n\tpadding:1rem 3rem;\n\tfont-size:1.2rem;\n\tline-height:2.2rem;\n\tfont-weight:400;\n\tcolor:#fff;\n\ttext-align:center;\n\ttext-decoration:none;\n\ttext-overflow:ellipsis;\n\ttext-transform:lowercase;\n\twhite-space:nowrap;\n\toverflow:hidden;\n\tvertical-align:middle;\n\tcursor:pointer;\n\tborder:0;\n  margin-top: 15px;\n\tborder-radius:6px;\n\tbackground:#0D0D0B;\n\t-webkit-transition:all .3s ease-in;\n\ttransition:all .3s ease-in\n}\n.mktoForm .mktoButtonWrap.mktoSimple .mktoButton:first-letter,.mktoForm .mktoButtonWrap.mktoSimple .mktoButton span:first-letter{\n\ttext-transform:capitalize\n}\n.mktoForm .mktoButtonWrap.mktoSimple .mktoButton:hover{\n\tbackground:#FF9D88;\n\tcolor:#0D0D0B;\n\t-webkit-transform:none;\n\ttransform:none\n}\n.mktoForm .mktoFormRow .mktoField:not([type=\"checkbox\"]){\n\tbackground-color:#fff;\n\tborder-radius:4px;\n\tborder:1px solid #bdbbb6;\n\tcolor:#0D0D0B;\n\tdisplay:block;\n\tfloat:none;\n\theight:3.5rem;\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tfont-size:1.2rem !important;\n\t-webkit-appearance:none;\n\t-moz-appearance:none;\n\tappearance:none;\n\tpadding:1.7rem 1.5rem 0rem 1.2rem\n}\n.mktoForm .mktoFormRow .mktoField:not([type=\"checkbox\"]):focus{\n\toutline:none;\n\tborder-color:#0D0D0B;\n  font-weight: 400;\n}\n.mktoForm .mktoFormRow select.mktoField:not([type=\"checkbox\"]){\n\tpadding:1.6rem 1.5rem 0rem 1.2rem\n}\n.mktoForm .mktoError{\n\tposition:initial;\n\tz-index:99;\n\tcolor:#bf0000\n}\n.mktoForm .mktoError .mktoErrorArrowWrap{\n\tdisplay:none;\n\twidth:16px;\n\theight:8px;\n\toverflow:hidden;\n\tposition:absolute;\n\ttop:0;\n\tleft:5px;\n\tz-index:100\n}\n.mktoForm .mktoError .mktoErrorArrow{\n\tdisplay:inline-block;\n\theight:16px;\n\twidth:16px;\n\tmargin-top:5px;\n\tborder:0 none !important;\n\tbackground-color:#e35256 !important;\n\tborder-right:none;\n\tborder-bottom:none;\n\t-webkit-transform:rotate(45deg);\n\ttransform:rotate(45deg);\n\t-ms-transform:rotate(45deg)\n}\n.mktoForm .mktoError .mktoErrorMsg{\n\tdisplay:block;\n\tmargin:0;\n\tpadding:0;\n\tfont-size:1.0rem;\n\tline-height:2.1rem;\n\tfont-weight:400;\n\tmax-width:18rem;\n\tcolor:#e35256;\n\tborder:0 none !important;\n\tborder-radius:3px !important;\n\tbackground:transparent !important;\n\tbox-shadow:none !important;\n\ttext-shadow:none !important\n}\n\n/* ===== product landing page overwrite ======= */\n\n.rm-LandingPage {\n          width: 100% !important;\n          background-color: #0D0D0B !important;\n          padding: 0 !important;\n}\n\n/* ===== Product landing page CSS ======= */\n.globallp-header-section {\n          background: #0D0D0B !important;\n          padding: 64px 0 !important;\n}\n.feature-section {\n          background: #fff !important;\n          padding: 94px 0 !important;\n}\n\n.feature-grid {\n          max-width: 1200px !important;\n          margin: 0 auto !important;\n          display: grid !important;\n          grid-template-columns: repeat(3, 1fr) !important;\n          gap: 32px 24px !important;\n          padding: 0 24px !important;\n}\n\n.feature-card {\n          border: 1px solid #ece9d7 !important;\n          border-radius: 12px !important;\n          padding: 32px 24px !important;\n          background: #fff !important;\n          display: flex !important;\n          flex-direction: column !important;\n          gap: 8px !important;\n          cursor: pointer !important;\n          transition: box-shadow 0.2s !important;\n          height: 120px !important;\n          justify-content: flex-start !important;\n          box-sizing: unset !important;\n}\n\n.feature-grid a {\n          text-decoration: none !important;\n          color: inherit !important;\n}\n\n.feature-card:hover {\n          box-shadow: 0px 12px 16px -4px rgba(13, 13, 11, 0.08), 0px 4px 6px -2px rgba(13, 13, 11, 0.03), 0px 2px 2px -1px rgba(13, 13, 11, 0.04) !important;\n}\n\n.feature-card-icon-group {\n          display: flex !important;\n          align-items: center !important;\n          gap: 12px !important;\n}\n\n.feature-card-icon {\n          width: 40px !important;\n          height: 40px !important;\n          display: flex !important;\n          align-items: center !important;\n          margin: 0 !important;\n}\n\n.feature-card-title {\n          color: #0D0D0B !important;\n          font-weight: 600 !important;\n          font-size: 18px !important;\n          margin-top: 8px !important;\n}\n\n.feature-card:hover .feature-card-title {\n          color: #B0361E !important;\n          font-weight: 600 !important;\n}\n\n.feature-card-desc {\n          color: #0D0D0B !important;\n          font-size: 14px !important;\n}\n\n.feature-badge {\n          position: relative !important;\n          border-radius: 9999px !important;\n          background-color: #f9f7eb !important;\n          border: 1px solid #e2dfd0 !important;\n          box-sizing: border-box !important;\n          width: 100% !important;\n          display: flex !important;\n          flex-direction: row !important;\n          align-items: center !important;\n          justify-content: flex-start !important;\n          padding: 2px 10px !important;\n          text-align: center !important;\n          font-size: 14px !important;\n          color: #46443f !important;\n          width: fit-content !important;\n}\n\n.feature-badge-text {\n          position: relative !important;\n          letter-spacing: 0.01em !important;\n          font-size: 10px !important;\n          line-height: 20px !important;\n          font-weight: 600 !important;\n}\n\n.more-docs-section {\n          background: #f6f3e0 !important;\n          padding: 94px 12px !important;\n}\n\n.more-docs-container {\n          max-width: 1200px !important;\n          margin: 0 auto !important;\n          text-align: center !important;\n}\n\n.more-docs-title {\n          font-weight: 700 !important;\n          margin: 0 0 16px !important;\n          font-size: 36px !important;\n}\n\n.more-docs-desc {\n          font-size: 20px !important;\n          color: #0D0D0B !important;\n          margin-bottom: 40px !important;\n}\n\n.more-docs-grid {\n          display: flex !important;\n          justify-content: space-around !important;\n          gap: 48px !important;\n          flex-wrap: wrap !important;\n}\n\n.more-docs-card {\n          flex: 1 1 30% !important;\n          max-width: 100% !important;\n          display: flex !important;\n          flex-direction: column !important;\n          align-items: center !important;\n          gap: 12px !important;\n}\n\n.more-docs-card-icon {\n          width: 48px !important;\n          height: 48px !important;\n}\n\n.more-docs-card-image {\n          width: auto !important;\n          height: 32px !important;\n          margin-bottom: 8px !important;\n}\n\n.more-docs-card-title {\n          font-weight: 700 !important;\n          color: #0D0D0B !important;\n}\n\n.more-docs-card-title span {\n          color: #888 !important;\n          font-weight: 400 !important;\n}\n\n.more-docs-card-desc {\n          font-size: 16px !important;\n          line-height: 24px !important;\n          color: #0D0D0B !important;\n}\n\n.more-docs-link {\n          color: #B0361E !important;\n          font-size: 16px !important;\n          font-weight: 600 !important;\n          text-decoration: none !important;\n          display: flex !important;\n          align-items: center !important;\n}\n.more-docs-link:hover {\n          text-decoration: underline !important;\n}\n\n.more-docs-icon-arrow {\n          width: 20px !important;\n}\n\n.release-section {\n          background: #FFD706 !important;\n          padding: 64px 0 !important;\n}\n\n.release-container {\n          max-width: 600px !important;\n          margin: 0 auto !important;\n          text-align: center !important;\n}\n\n.release-title {\n          font-family: 'F37 Gruffy', cursive !important;\n          font-size: 2rem !important;\n          font-weight: 700 !important;\n          margin-bottom: 16px !important;\n}\n\n.release-desc {\n          font-size: 18px !important;\n          color: #0D0D0B !important;\n          margin-bottom: 32px !important;\n}\n\n.release-form {\n          display: flex !important;\n          gap: 8px !important;\n          justify-content: center !important;\n          margin-bottom: 8px !important;\n}\n\n.release-input {\n          flex: 1 !important;\n          min-width: 0 !important;\n          padding: 12px !important;\n          border-radius: 6px !important;\n          border: 1px solid #ccc !important;\n          font-size: 16px !important;\n}\n\n.release-button {\n          background: #0D0D0B !important;\n          color: #fff !important;\n          border: none !important;\n          border-radius: 6px !important;\n          padding: 12px 24px !important;\n          font-size: 16px !important;\n          font-weight: 600 !important;\n          cursor: pointer !important;\n}\n\n.release-privacy {\n          font-size: 13px !important;\n          color: #0D0D0B !important;\n}\n\n.release-privacy a {\n          color: #0D0D0B !important;\n          text-decoration: underline !important;\n}\n\n@media (max-width: 1024px) {\n          .globallp-header-content {\n              max-width: 100% !important;\n          }\n\n          .feature-grid {\n              max-width: 1200px !important;\n              margin: 0 auto !important;\n              display: grid !important;\n              grid-template-columns: repeat(2, 1fr) !important;\n              gap: 32px 24px !important;\n              padding: 0 24px !important;\n          }\n\n}\n@media (max-width: 768px) {\n          .feature-grid {\n              max-width: 1200px !important;\n              margin: 0 auto !important;\n              display: grid !important;\n              grid-template-columns: repeat(1, 1fr) !important;\n              gap: 32px 24px !important;\n              padding: 0 24px !important;\n          }\n          .feature-card {\n              height: 100px !important;\n          }\n}","stylesheet_hub3":"","javascript":"","javascript_hub2":"/* ============================================================\n   Changelog page — inject branded intro header\n   Uses MutationObserver to handle SPA navigation. Each time\n   the DOM changes, attempts to inject the header. Idempotent —\n   the function checks for an existing header and bails if found.\n   ============================================================ */\n(function () {\n  function injectChangelogHeader() {\n    var container = document.querySelector('.rm-Changelog .rm-ContainerNarrow');\n    if (!container) return;\n    if (document.getElementById('recurly-changelog-header')) return;\n    var header = document.createElement('div');\n    header.id = 'recurly-changelog-header';\n    header.className = 'rm-Markdown markdown-body';\n    header.style.padding = '24px 0 8px';\n    header.innerHTML = `\n      \u003ch1>Recurly Commerce Changelog\u003c/h1>\n      \u003cp>Discover what's new in Recurly Commerce. Browse posts by year to see recent launches, enhancements, and behind-the-scenes improvements that keep your platform sharp.\u003c/p>\n      \u003cp class=\"rss-line\">\n        \u003ci class=\"fa-solid fa-rss rss-icon\" aria-hidden=\"true\">\u003c/i>\n        Stay in the loop — copy our \u003cbutton type=\"button\" class=\"rss-copy\" data-url=\"https://docs.recurly.com/recurly-subscriptions/changelog.rss\">RSS feed URL\u003c/button> and paste it into your favorite RSS reader to get every update the moment it ships.\n      \u003c/p>\n      \u003cdiv class=\"rss-instructions-wrap\">\n        \u003cbutton type=\"button\" class=\"rss-instructions-toggle\" aria-expanded=\"false\" aria-controls=\"rss-instructions-body\">\n          \u003ci class=\"fa-solid fa-circle-question\" aria-hidden=\"true\">\u003c/i>\n          How to use this URL\n          \u003ci class=\"fa-solid fa-chevron-down rss-chevron\" aria-hidden=\"true\">\u003c/i>\n        \u003c/button>\n        \u003cdiv id=\"rss-instructions-body\" class=\"rss-instructions-body\" hidden>\n          \u003cp>An RSS reader lets you subscribe to the changelog and receive new posts automatically — no need to check back manually. You can usually choose to see posts as a combined feed or read each one in full.\u003c/p>\n          \u003cp>We recommend \u003ca href=\"https://feedly.com\" target=\"_blank\" rel=\"noopener\">Feedly\u003c/a> or \u003ca href=\"https://feeder.co\" target=\"_blank\" rel=\"noopener\">Feeder\u003c/a> — both are free to start, work in your browser, and let you choose how to view updates (summary list or full article view).\u003c/p>\n          \u003col>\n            \u003cli>Click \u003cstrong>RSS feed URL\u003c/strong> above to copy the feed address.\u003c/li>\n            \u003cli>Open your RSS reader (e.g. \u003ca href=\"https://feedly.com\" target=\"_blank\" rel=\"noopener\">Feedly\u003c/a> or \u003ca href=\"https://feeder.co\" target=\"_blank\" rel=\"noopener\">Feeder\u003c/a>) and look for an \u003cstrong>Add feed\u003c/strong> or \u003cstrong>Follow\u003c/strong> option.\u003c/li>\n            \u003cli>Paste the URL you copied and confirm the subscription.\u003c/li>\n            \u003cli>New changelog entries will appear in your reader automatically the moment they publish.\u003c/li>\n          \u003c/ol>\n          \u003cp class=\"rss-instructions-tip\">\u003ci class=\"fa-solid fa-lightbulb\" aria-hidden=\"true\">\u003c/i> \u003cstrong>Tip:\u003c/strong> Most readers let you switch between a compact list view (titles only) and an expanded view (full post content). Pick whichever fits your workflow.\u003c/p>\n        \u003c/div>\n      \u003c/div>\n    `;\n    container.insertBefore(header, container.firstChild);\n  }\n\n  /* Click-to-copy handler — registered once via event delegation\n     so it works for any .rss-copy button, including re-injected ones */\n  document.addEventListener('click', function (e) {\n    var btn = e.target.closest('.rss-copy');\n    if (!btn) return;\n    var url = btn.getAttribute('data-url');\n    navigator.clipboard.writeText(url).then(function () {\n      var original = btn.textContent;\n      btn.textContent = 'Copied!';\n      btn.classList.add('rss-copied');\n      setTimeout(function () {\n        btn.textContent = original;\n        btn.classList.remove('rss-copied');\n      }, 1500);\n    });\n  });\n\n  /* Collapsible toggle handler — event delegation, works after re-injection */\n  document.addEventListener('click', function (e) {\n    var toggle = e.target.closest('.rss-instructions-toggle');\n    if (!toggle) return;\n    var body = document.getElementById('rss-instructions-body');\n    if (!body) return;\n    var isOpen = toggle.getAttribute('aria-expanded') === 'true';\n    toggle.setAttribute('aria-expanded', isOpen ? 'false' : 'true');\n    body.hidden = isOpen;\n    toggle.classList.toggle('rss-instructions-open', !isOpen);\n  });\n\n  /* Run immediately for first page load */\n  injectChangelogHeader();\n\n  /* Watch DOM for changes — re-injects on SPA navigation\n     when ReadMe rebuilds the changelog subtree */\n  var observer = new MutationObserver(injectChangelogHeader);\n  observer.observe(document.body, {\n    childList: true,\n    subtree: true\n  });\n})();","html_promo":"","html_body":"","html_footer":"","html_head":"","html_footer_meta":"","global_landing_page":{"html":"","redirect":""},"html_hidelinks":false,"collapsibleCategories":false,"showBreadcrumbs":true,"showPageIcons":true,"showVersion":false,"searchModal":"classic","hideTableOfContents":false,"nextStepsLabel":"","ai_dropdown":"enabled","print_button":"disabled","ai_options":{"ask_ai":"disabled","chatgpt":"enabled","claude":"enabled","clipboard":"enabled","copilot":"enabled","mcp":{"command":"enabled","config":"enabled","cursor":"enabled","vscode":"enabled"},"view_as_markdown":"enabled"}},"custom_domain":"","description":"","hstsIncludeSubdomains":false,"planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"","error404":"","first_page":"landing","git":{"renamedSlugs":[]},"glossaryTerms":[{"_id":"68825cc7a7cffa08ce74f92d","term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!"}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"healthCheck":{"provider":"","settings":{}},"i18n":{"defaultLanguage":"en","languages":[{"code":"en","type":"manual"}],"state":"enabled"},"intercom":"","aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"html","alignment":"left","title":null,"text":null,"html":"\u003chead>\n    \u003cstyle>\n        /* ============================================================\n           GLOBAL OVERRIDES\n        ============================================================ */\n        main.main-index,\n        .rm-LandingPage {\n            width: 100% !important;\n            max-width: 100% !important;\n            margin: 0 !important;\n            padding: 0 !important;\n            background: #0D0D0B !important;\n        }\n\n        .hub-is-home .rm-VersionDropdown { display: none !important; }\n\n        .feature-grid a,\n        .feature-grid a:hover,\n        .more-docs-link,\n        .globallp-footer-content a {\n            text-decoration: none !important;\n            -webkit-text-decoration-color: transparent !important;\n            text-decoration-color: transparent !important;\n        }\n\n        /* ============================================================\n           OVERFLOW PROTECTION\n        ============================================================ */\n        .globallp-header-section,\n        .feature-container {\n            overflow-x: hidden !important;\n        }\n\n        .feature-grid > * { min-width: 0 !important; }\n\n        .feature-card {\n            max-width: 100% !important;\n            min-width: 0 !important;\n            box-sizing: border-box !important;\n        }\n\n        /* ============================================================\n           SHARED: dark section base\n        ============================================================ */\n        body,\n        .globallp-header-section,\n        .feature-container,\n        .feature-section {\n            background: #0D0D0B !important;\n        }\n\n        /* ============================================================\n           HERO\n        ============================================================ */\n        .globallp-header-section {\n            padding: 64px 0 !important;\n        }\n\n        /* ============================================================\n           HERO SEARCH\n        ============================================================ */\n        .hero-search-bar { display: flex !important; align-items: center !important; gap: 10px !important; background: rgba(255,255,255,0.08) !important; border: 1px solid rgba(255,255,255,0.15) !important; border-radius: 8px !important; padding: 10px 16px !important; max-width: 420px !important; cursor: pointer !important; margin-bottom: 24px !important; transition: background 0.2s, border-color 0.2s !important; }\n        .hero-search-bar:hover { background: rgba(255,255,255,0.13) !important; border-color: rgba(255,255,255,0.3) !important; }\n        .hero-search-icon { color: rgba(255,255,255,0.5) !important; flex-shrink: 0 !important; }\n        .hero-search-placeholder { flex: 1 !important; font-size: 15px !important; color: rgba(255,255,255,0.45) !important; font-family: \"Polar\",\"Helvetica Neue\",Helvetica,arial,sans-serif !important; }\n        .hero-search-kbd { font-size: 12px !important; color: rgba(255,255,255,0.3) !important; background: rgba(255,255,255,0.08) !important; border: 1px solid rgba(255,255,255,0.15) !important; border-radius: 4px !important; padding: 2px 7px !important; font-family: monospace !important; }\n\n        /* ============================================================\n           FEATURE SECTION\n        ============================================================ */\n        .feature-container {\n            width: 100% !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n        }\n\n        .feature-section {\n            padding: 64px 32px !important;\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            box-sizing: border-box !important;\n        }\n\n        /* Section header */\n        .section-header-block {\n            display: flex !important;\n            justify-content: space-between !important;\n            align-items: center !important;\n            gap: 48px !important;\n            margin-bottom: 32px !important;\n            padding: 28px 36px !important;\n            background: rgba(255, 253, 242, 0.03) !important;\n            border: 1px solid rgba(255, 253, 242, 0.08) !important;\n            border-left: 4px solid #FFD706 !important;\n            border-radius: 0 12px 12px 0 !important;\n            box-sizing: border-box !important;\n            max-width: 100% !important;\n            overflow: hidden !important;\n        }\n\n        .section-header-left { flex: 1 !important; min-width: 0 !important; }\n        .section-header-right { flex: 1 !important; max-width: 420px !important; min-width: 0 !important; }\n\n        .section-eyebrow {\n            display: inline-flex !important;\n            align-items: center !important;\n            gap: 8px !important;\n            color: #FFD706 !important;\n            font-size: 11px !important;\n            font-weight: 700 !important;\n            letter-spacing: 0.12em !important;\n            text-transform: uppercase !important;\n            margin-bottom: 10px !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n        }\n\n        .section-eyebrow-dot {\n            display: inline-block !important;\n            width: 6px !important;\n            height: 6px !important;\n            border-radius: 50% !important;\n            background: #FFD706 !important;\n            flex-shrink: 0 !important;\n        }\n\n        .section-title {\n            font-size: 32px !important;\n            font-weight: 800 !important;\n            color: #FFFDF2 !important;\n            margin: 0 !important;\n            line-height: 1.1 !important;\n            letter-spacing: -0.02em !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            overflow-wrap: break-word !important;\n            word-break: break-word !important;\n        }\n\n        .section-desc {\n            font-size: 15px !important;\n            color: rgba(255, 253, 242, 0.82) !important;\n            margin: 0 !important;\n            line-height: 1.65 !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            overflow-wrap: break-word !important;\n            word-break: break-word !important;\n        }\n\n        /* ============================================================\n           FEATURE GRID — 3 columns\n        ============================================================ */\n        .feature-grid {\n            width: 100% !important;\n            display: grid !important;\n            grid-template-columns: repeat(3, 1fr) !important;\n            gap: 16px !important;\n            box-sizing: border-box !important;\n        }\n\n        .feature-card {\n            background: #131210 !important;\n            border: 1px solid rgba(255, 253, 242, 0.07) !important;\n            border-radius: 14px !important;\n            padding: 28px 26px !important;\n            display: flex !important;\n            flex-direction: column !important;\n            gap: 12px !important;\n            cursor: pointer !important;\n            transition: background 0.2s ease, border-color 0.2s ease !important;\n            width: 100% !important;\n            height: auto !important;\n            min-height: 0 !important;\n            overflow: visible !important;\n            box-sizing: border-box !important;\n        }\n\n        .feature-grid a {\n            text-decoration: none !important;\n            color: inherit !important;\n            display: flex !important;\n            height: auto !important;\n        }\n\n        .feature-card:hover {\n            background: #1C1B18 !important;\n            border-color: rgba(255, 215, 6, 0.22) !important;\n        }\n\n        .feature-card-icon {\n            width: 48px !important;\n            height: 48px !important;\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            flex-shrink: 0 !important;\n            background: #FFD706 !important;\n            border-radius: 50% !important;\n        }\n\n        /* Badge inline with icon for API card */\n        .feature-card-icon-group {\n            display: flex !important;\n            align-items: center !important;\n            gap: 12px !important;\n        }\n\n        .feature-badge {\n            display: inline-flex !important;\n            align-items: center !important;\n            background: rgba(255, 215, 6, 0.1) !important;\n            border: 1px solid rgba(255, 215, 6, 0.2) !important;\n            border-radius: 99px !important;\n            padding: 3px 10px !important;\n        }\n\n        .feature-badge-text {\n            font-size: 10px !important;\n            font-weight: 700 !important;\n            letter-spacing: 0.08em !important;\n            text-transform: uppercase !important;\n            color: #FFD706 !important;\n        }\n\n        .feature-card-title {\n            color: #FFFDF2 !important;\n            font-weight: 700 !important;\n            font-size: 15px !important;\n            margin: 0 !important;\n            line-height: 1.3 !important;\n            overflow-wrap: break-word !important;\n        }\n\n        .feature-card:hover .feature-card-title { color: #FFD706 !important; }\n\n        .feature-card-desc {\n            color: rgba(255, 253, 242, 0.82) !important;\n            font-size: 13px !important;\n            margin: 0 !important;\n            line-height: 1.55 !important;\n            overflow-wrap: break-word !important;\n        }\n\n        /* ============================================================\n           MORE DOCS\n        ============================================================ */\n        .more-docs-section {\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            background: #f6f3e0 !important;\n            padding: 94px 32px !important;\n        }\n\n        .more-docs-container {\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            text-align: center !important;\n            box-sizing: border-box !important;\n        }\n\n        .more-docs-title { font-weight: 700 !important; margin: 0 0 16px !important; font-size: 36px !important; }\n        .more-docs-desc { font-size: 20px !important; color: #0D0D0B !important; margin-bottom: 40px !important; }\n\n        .more-docs-grid {\n            display: flex !important;\n            justify-content: space-around !important;\n            gap: 48px !important;\n            flex-wrap: wrap !important;\n        }\n\n        .more-docs-card {\n            flex: 1 1 30% !important;\n            display: flex !important;\n            flex-direction: column !important;\n            align-items: center !important;\n            gap: 12px !important;\n        }\n\n        .more-docs-card-icon { width: 48px !important; height: 48px !important; }\n        .more-docs-card-image { width: auto !important; height: 32px !important; margin-bottom: 8px !important; }\n        .more-docs-card-desc { font-size: 16px !important; line-height: 24px !important; color: #0D0D0B !important; }\n\n        .more-docs-link {\n            color: #FF5810 !important;\n            font-size: 16px !important;\n            font-weight: 600 !important;\n            text-decoration: none !important;\n            display: flex !important;\n            align-items: center !important;\n        }\n        .more-docs-link:hover { text-decoration: underline !important; }\n        .more-docs-icon-arrow { width: 20px !important; margin-left: 8px !important; }\n\n        /* ============================================================\n           FOOTER\n        ============================================================ */\n        .globallp-footer {\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            background: #0D0D0B !important;\n            color: #fff !important;\n            padding: 48px 0 !important;\n        }\n\n        .globallp-footer-content {\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            display: flex !important;\n            justify-content: space-between !important;\n            align-items: center !important;\n            padding: 0 32px !important;\n            box-sizing: border-box !important;\n        }\n\n        .globallp-footer-content img { width: auto !important; height: 16px !important; margin: 0 !important; }\n        .globallp-footer-content p { margin: 0 !important; font-size: 14px !important; color: #FFFDF2 !important; }\n        .globallp-footer-content a { color: #FFFDF2 !important; text-decoration: none !important; margin-right: 20px !important; }\n        .globallp-footer-content a:hover { text-decoration: underline !important; }\n\n        /* ============================================================\n           RESPONSIVE\n        ============================================================ */\n        @media (max-width: 1024px) {\n            .feature-grid { grid-template-columns: repeat(2, 1fr) !important; }\n        }\n\n        @media (max-width: 768px) {\n            .globallp-header-section   { padding: 48px 0 !important; }\n            .globallp-header-content   { padding: 0 20px !important; }\n            .globallp-heading          { font-size: 36px !important; }\n            .globallp-supporting-text  { font-size: 16px !important; }\n            .hero-search-bar           { max-width: 100% !important; }\n            .feature-section           { padding: 48px 20px !important; }\n            .section-header-block { flex-direction: column !important; align-items: flex-start !important; gap: 10px !important; padding: 20px !important; margin-bottom: 24px !important; }\n            .section-header-right      { max-width: 100% !important; }\n            .section-title             { font-size: 24px !important; }\n            .feature-grid { grid-template-columns: 1fr !important; }\n            .feature-card              { padding: 20px !important; }\n            .more-docs-section         { padding: 60px 20px !important; }\n            .more-docs-title           { font-size: 28px !important; }\n            .more-docs-desc            { font-size: 16px !important; }\n            .more-docs-grid { flex-direction: column !important; align-items: center !important; gap: 40px !important; }\n            .more-docs-card { flex: 1 1 100% !important; max-width: 400px !important; }\n            .globallp-footer           { padding: 36px 0 !important; }\n            .globallp-footer-content { flex-direction: column !important; align-items: center !important; text-align: center !important; gap: 16px !important; padding: 0 20px !important; }\n            .globallp-footer-content p { display: flex !important; flex-wrap: wrap !important; justify-content: center !important; gap: 6px !important; }\n            .globallp-footer-content a { margin-right: 0 !important; }\n        }\n\n        @media (max-width: 480px) {\n            .globallp-header-section   { padding: 36px 0 !important; }\n            .globallp-heading          { font-size: 28px !important; }\n            .globallp-supporting-text  { font-size: 15px !important; }\n            .hero-search-kbd           { display: none !important; }\n            .feature-section           { padding: 40px 16px !important; }\n            .section-header-block      { padding: 18px 16px !important; }\n            .section-title             { font-size: 20px !important; }\n            .section-desc              { font-size: 13px !important; }\n            .feature-card              { padding: 18px 16px !important; gap: 10px !important; }\n            .feature-card-icon         { width: 40px !important; height: 40px !important; }\n            .feature-card-title        { font-size: 14px !important; }\n            .feature-card-desc         { font-size: 12px !important; }\n            .more-docs-section         { padding: 48px 16px !important; }\n            .more-docs-title           { font-size: 24px !important; }\n        }\n\n        @media (max-width: 375px) {\n            .globallp-heading          { font-size: 26px !important; }\n            .section-title             { font-size: 18px !important; }\n        }\n    \u003c/style>\n\u003c/head>\n\n\u003cbody>\n\n    \u003c!-- ===== Hero ===== -->\n    \u003csection class=\"globallp-header-section\">\n        \u003cdiv class=\"globallp-header-content\">\n            \u003cdiv class=\"hero-search-bar\" id=\"hero-search-trigger\">\n                \u003csvg class=\"hero-search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                    \u003ccircle cx=\"11\" cy=\"11\" r=\"8\">\u003c/circle>\n                    \u003cline x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\">\u003c/line>\n                \u003c/svg>\n                \u003cspan class=\"hero-search-placeholder\">Search documentation...\u003c/span>\n                \u003cspan class=\"hero-search-kbd\">⌘K\u003c/span>\n            \u003c/div>\n            \u003cdiv class=\"globallp-subheading\">DOCUMENTATION\u003c/div>\n            \u003cdiv class=\"globallp-heading\">Let's get started\u003c/div>\n            \u003cdiv class=\"globallp-supporting-text\">Get guides, API references, and best practices for Recurly Commerce.\u003c/div>\n            \u003cdiv class=\"cta-group\">\n                \u003cdiv class=\"new-btn-group\">\n                    \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/\" class=\"new-btn new-btn-primary\">\n                        \u003cdiv class=\"new-btn-text\">\u003cimg class=\"new-btn-icon\" src=\"https://recurly.com/img2/product-docs/icon-docs-book.svg\" alt=\"book icon\">View all docs\u003c/div>\n                    \u003c/a>\n                \u003c/div>\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== Feature Grid ===== -->\n    \u003csection class=\"feature-container\">\n        \u003cdiv class=\"feature-section\">\n\n            \u003cdiv class=\"section-header-block\">\n                \u003cdiv class=\"section-header-left\">\n                    \u003cdiv class=\"section-eyebrow\">\u003cspan class=\"section-eyebrow-dot\">\u003c/span>Recurly Commerce\u003c/div>\n                    \u003ch2 class=\"section-title\">Explore all of our features\u003c/h2>\n                \u003c/div>\n                \u003cdiv class=\"section-header-right\">\n                    \u003cp class=\"section-desc\">Everything you need to manage subscriptions, recover revenue, and power your Shopify storefront — all in one place.\u003c/p>\n                \u003c/div>\n            \u003c/div>\n\n            \u003cdiv class=\"feature-grid\">\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/subscription-management#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M20 12V22H4V12\">\u003c/path>\n                                \u003cpath d=\"M22 7H2v5h20V7z\">\u003c/path>\n                                \u003cpath d=\"M12 22V7\">\u003c/path>\n                                \u003cpath d=\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\">\u003c/path>\n                                \u003cpath d=\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\">\u003c/path>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Subscription management\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Plan creation, plan editing, contract updates, and activity logs.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/recurly-commerce-revenue-recovery#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpolyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\">\u003c/polyline>\n                                \u003cpolyline points=\"17 6 23 6 23 12\">\u003c/polyline>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Revenue recovery\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Maximize involuntary revenue recovery and reduce churn.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/storefront#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\">\u003c/path>\n                                \u003cpolyline points=\"9 22 9 12 15 12 15 22\">\u003c/polyline>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Storefront\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Storefront resources, customization, and technical resources.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/customer-portal#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\">\u003c/path>\n                                \u003ccircle cx=\"12\" cy=\"7\" r=\"4\">\u003c/circle>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Customer portal\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Self-service portal: skip, swap, pause, gift, and more for your customers.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/notifications#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\">\u003c/path>\n                                \u003cpath d=\"M13.73 21a2 2 0 0 1-3.46 0\">\u003c/path>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Notifications\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Emails, SMS, and integrations.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/shopify-settings#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\">\u003c/path>\n                                \u003cline x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\">\u003c/line>\n                                \u003cpath d=\"M16 10a4 4 0 0 1-8 0\">\u003c/path>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Shopify\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Orders, refunds, discounts, shipping, and tagging directly within Shopify.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/recurly-commerce-analytics#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cline x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\">\u003c/line>\n                                \u003cline x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\">\u003c/line>\n                                \u003cline x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\">\u003c/line>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Analytics\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Performance, cohorts, forecast growth, and exports.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/recurly-commerce-integrations#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003crect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\">\u003c/rect>\n                                \u003cline x1=\"1\" y1=\"10\" x2=\"23\" y2=\"10\">\u003c/line>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Integrations\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Recurly Commerce integrations and partner connections.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/update/reference/publicapicontroller_listsubscriptions-1\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon-group\">\n                            \u003cdiv class=\"feature-card-icon\">\n                                \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                    \u003cpath d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\">\u003c/path>\n                                    \u003cpath d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\">\u003c/path>\n                                \u003c/svg>\n                            \u003c/div>\n                            \u003cdiv class=\"feature-badge\">\n                                \u003cspan class=\"feature-badge-text\">Technical docs\u003c/span>\n                            \u003c/div>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">API reference\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Complete endpoint documentation for accessing and managing Commerce.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== More docs ===== -->\n    \u003csection class=\"more-docs-section\">\n        \u003cdiv class=\"more-docs-container\">\n            \u003ch2 class=\"more-docs-title\">Looking for more documentation?\u003c/h2>\n            \u003cdiv class=\"more-docs-desc\">Visit our dedicated documentation for other Recurly Products.\u003c/div>\n            \u003cdiv class=\"more-docs-grid\">\n                \u003cdiv class=\"more-docs-card\">\n                    \u003cimg class=\"more-docs-card-icon\" src=\"https://recurly.com/img2/product-docs/icon-subscriptions-docs.svg\" alt=\"Subscriptions icon\">\n                    \u003cimg class=\"more-docs-card-image\" src=\"https://recurly.com/img2/product-docs/img-r-subscription-docs.webp\" alt=\"Subscriptions\">\n                    \u003cdiv class=\"more-docs-card-desc\">Everything you need to scale your subscription business and keep customers coming back.\u003c/div>\n                    \u003ca href=\"https://docs.recurly.com/recurly-subscriptions/\" class=\"more-docs-link\">Explore docs \u003cimg class=\"more-docs-icon-arrow\" src=\"https://recurly.com/img2/product-docs/arrow-right.svg\" alt=\"→\">\u003c/a>\n                \u003c/div>\n                \u003cdiv class=\"more-docs-card\">\n                    \u003cimg class=\"more-docs-card-icon\" src=\"https://recurly.com/img2/product-docs/icon-engage-docs.svg\" alt=\"Engage icon\">\n                    \u003cimg class=\"more-docs-card-image\" src=\"https://recurly.com/img2/product-docs/img-r-engage-docs.webp\" alt=\"Engage\">\n                    \u003cdiv class=\"more-docs-card-desc\">Power your subscribers' journey with personalized prompts and automation that fuel revenue growth.\u003c/div>\n                    \u003ca href=\"https://docs.recurly.com/recurly-engage/\" class=\"more-docs-link\">Explore docs \u003cimg class=\"more-docs-icon-arrow\" src=\"https://recurly.com/img2/product-docs/arrow-right.svg\" alt=\"→\">\u003c/a>\n                \u003c/div>\n                \u003cdiv class=\"more-docs-card\">\n                    \u003cimg class=\"more-docs-card-icon\" src=\"https://recurly.com/img2/product-docs/icon-revrec-docs.svg\" alt=\"RevRec icon\">\n                    \u003cimg class=\"more-docs-card-image\" src=\"https://recurly.com/img2/product-docs/img-r-revrec-docs.webp\" alt=\"RevRec\">\n                    \u003cdiv class=\"more-docs-card-desc\">Streamline and automate compliance with multiple revenue reporting standards.\u003c/div>\n                    \u003ca href=\"https://docs.recurly.com/recurly-revrec/\" class=\"more-docs-link\">Explore docs \u003cimg class=\"more-docs-icon-arrow\" src=\"https://recurly.com/img2/product-docs/arrow-right.svg\" alt=\"→\">\u003c/a>\n                \u003c/div>\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== Footer ===== -->\n    \u003csection class=\"globallp-footer\">\n        \u003cdiv class=\"globallp-footer-content\">\n            \u003cimg src=\"https://recurly.com/img2/product-docs/img-footer-logo-tagline.webp\" alt=\"Recurly Logo\">\n            \u003cp>\n                \u003ca href=\"https://recurly.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Recurly.com\u003c/a>\n                \u003ca href=\"https://recurly.com/legal/\" target=\"_blank\" rel=\"noopener noreferrer\">Legal\u003c/a>\n                &copy; 2025 Recurly, Inc.\n            \u003c/p>\n        \u003c/div>\n    \u003c/section>\n\n\u003c/body>","pageType":null,"side":null,"mediaType":null,"mediaHTML":null,"mediaImage":null,"mediaCode":null,"group0":null,"group1":null,"group2":null}],"llms_txt":true,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"enabled"},"mdxishMigrationStatus":{"migratedFrom":"mdx"},"metrics":{"monthlyLimit":0,"monthlyPurchaseLimit":0,"thumbsEnabled":true,"meteredBilling":{}},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Recurly Commerce Docs","nav_names":{"docs":"Directory","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"oauth_url":"","onboardingCompleted":{"api":true,"appearance":false,"documentation":true,"domain":false,"jwt":false,"logs":false,"metricsSDK":false,"aiReady":false,"team":false,"gitSync":false},"openapiVisibility":"public","owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":false,"newExperience":true,"isPaying":false,"lastIndexed":"2026-10-16T02:22:06.213Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"plan":"enterprise","planOverride":"","readmeScore":{},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"seo":{"overwrite_title_tag":false},"searchSettings":{"default_to_current_project":false,"show_project_filter":true,"sort_projects_alphabetically":false},"ssl":{"minTLS":"1.2"},"subdomain":"recurly-commerce-docs","subpath":"recurly-commerce","topnav":{"left":[],"right":[{"type":"url","text":"Docs hub","url":"https://docs.recurly.com/#/"},{"type":"url","text":"Support","url":"https://support.recurly.com/"},{"type":"url","text":"Contact us","url":"https://recurly.com/contact-us/"},{"type":"url","text":"Book demo","url":"https://recurly.com/request-a-demo/"}],"bottom":[],"edited":false},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2025-07-16T23:52:40.256Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"","variableDefaults":[{"file":"commerce-api-documentation.json","name":"bearer","source":"security","type":"http"}],"childrenProjects":[],"derivedPlan":"enterprise","fullBaseUrl":"https://recurly-commerce-docs.readme.io/","isExternalSnippetActive":false,"isPublished":true,"planTrial":"enterprise","shouldGateDash":false,"webhookEnabled":false},"childrenProjects":[{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":true,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":false,"superHubBranchReviewActions":false},"stable":{"version":"1.0"},"_id":"6865c5ccaabb920030954384","ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true}},"description":"","git":{"renamedSlugs":[]},"aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","llms_txt":true,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"enabled"},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Recurly Engage Docs","nav_names":{"docs":"Directory","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":false,"newExperience":true,"isPaying":false,"lastIndexed":"2026-10-16T02:22:06.172Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"subdomain":"recurly-engage-docs","subpath":"recurly-engage","childrenProjects":[],"derivedPlan":"enterprise","fullBaseUrl":"https://recurly-engage-docs.readme.io/","isExternalSnippetActive":false,"isPublished":true,"shouldGateDash":false,"webhookEnabled":false,"readmeScore":0,"reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"ssl":{},"translate":{},"appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""}},{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":true,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":false,"superHubBranchReviewActions":false},"stable":{"version":"1.0"},"_id":"6865c47f44422c001062c4de","ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true}},"description":"","git":{"renamedSlugs":[]},"aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","llms_txt":true,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"disabled"},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Recurly RevRec Docs","nav_names":{"docs":"Directory","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":false,"newExperience":true,"isPaying":false,"lastIndexed":"2026-10-16T02:22:06.134Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"subdomain":"recurly-revrec-docs","subpath":"recurly-revrec","childrenProjects":[],"derivedPlan":"enterprise","fullBaseUrl":"https://recurly-revrec-docs.readme.io/","isExternalSnippetActive":false,"isPublished":true,"shouldGateDash":false,"webhookEnabled":false,"readmeScore":0,"reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"ssl":{},"translate":{},"appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""}},{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":false,"superHubBranchReviewActions":false},"stable":{"version":"1.0"},"_id":"6865c648c6b75f0030446843","ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true}},"description":"","git":{"renamedSlugs":[]},"aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","llms_txt":true,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"enabled"},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Recurly Commerce Docs","nav_names":{"docs":"Directory","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":false,"newExperience":true,"isPaying":false,"lastIndexed":"2026-10-16T02:22:06.213Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"subdomain":"recurly-commerce-docs","subpath":"recurly-commerce","childrenProjects":[],"derivedPlan":"enterprise","fullBaseUrl":"https://recurly-commerce-docs.readme.io/","isExternalSnippetActive":false,"isPublished":true,"shouldGateDash":false,"webhookEnabled":false,"readmeScore":0,"reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"ssl":{},"translate":{},"appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""}},{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowApiExplorerJsonEditor":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":true,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":true,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":true,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":false,"superHubBranchReviewActions":false},"stable":{"version":"1.0"},"_id":"56450a342229d7170010928a","ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true}},"description":"These pages serve as a guide to set up your Recurly account and as reference documentation for working with everything Recurly has to offer.","git":{"migration":{"createRepository":{"end":"2025-02-11T13:09:45.368Z","start":"2025-02-11T13:09:44.917Z","status":"successful"},"transformation":{"end":"2025-02-11T13:10:01.580Z","start":"2025-02-11T13:09:45.842Z","status":"successful"},"migratingPages":{"end":"2025-02-11T13:10:02.665Z","start":"2025-02-11T13:10:01.626Z","status":"successful"},"enableSuperhub":{"end":"2025-02-11T13:25:45.870Z","start":"2025-02-11T13:25:45.870Z","status":"successful"}},"renamedSlugs":[]},"aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","llms_txt":true,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"enabled"},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":true,"tutorials":false},"name":"Recurly Subscriptions Docs","nav_names":{"docs":"Product Docs","reference":"","changelog":"Changelog","discuss":"","recipes":"","tutorials":""},"owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":false,"newExperience":true,"isPaying":false,"lastIndexed":"2026-10-16T02:21:54.657Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"subdomain":"reference-docs","subpath":"recurly-subscriptions","childrenProjects":[],"derivedPlan":"enterprise","fullBaseUrl":"https://reference-docs.readme.io/","isExternalSnippetActive":false,"isPublished":true,"shouldGateDash":false,"webhookEnabled":false,"readmeScore":0,"reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"ssl":{},"translate":{},"appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""}},{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":false,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":true,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpAuthValidation":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false},"stable":{"version":"1.0"},"_id":"6a909f963c00925d1070727c","ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":null,"search":true,"ai_input":true},"link_headers":null,"markdown_negotiation":null,"agent_hint_banner":null,"api_catalog":null,"agent_skills_index":null,"mcp_server_card":null,"webmcp":null,"oauth":{"type":null,"issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":null,"show_sibling_pages":null,"show_whats_next":null}},"description":"","git":{"renamedSlugs":[]},"aiOverageCapped":false,"is_active":true,"branchSharing":"enabled","internal":"","llms_txt":null,"llms_txt_options":{"split":null,"query":null,"use_custom":null},"mcp":{"state":"enabled"},"modules":{"landing":true,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":true,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Recurly Recover","nav_names":{"docs":"Product Docs","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"owlbot":{"enabled":true,"newExperience":true,"placements":["header","in_search"],"isPaying":false,"lastIndexed":"2026-10-16T02:18:18.574Z","exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"subdomain":"recurly-recover","subpath":"","childrenProjects":[],"derivedPlan":"enterprise","fullBaseUrl":"https://recurly-recover.readme.io/","isExternalSnippetActive":false,"isPublished":true,"shouldGateDash":false,"webhookEnabled":false,"readmeScore":0,"reference":{"alwaysUseDefaults":false,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false,"validateRequiredFields":false},"ssl":{},"translate":{},"appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""}}],"derivedPlan":"enterprise","fullBaseUrl":"https://docs.recurly.com/","isExternalSnippetActive":false,"isPublished":true,"planTrial":"enterprise","shouldGateDash":false,"webhookEnabled":false},"isHubEditable":true},"projectStore":{"data":{"allow_crawlers":"disabled","canonical_url":null,"default_version":{"name":"1.0"},"description":"Welcome to the Recurly Documentation Hub: your single source for everything Recurly. Explore comprehensive guides, API references, and best practices across all our products.","git":{"repository_name":null,"connection":{"repository":null,"organization":null,"status":"none"},"remediation_status":null,"remediated_at":null,"remediation_initiated_by":null,"remediation_dry_run":null,"remediation_job_id":null},"glossary":[{"term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!","inherited":false}],"homepage_url":null,"created_at":null,"updated_at":null,"id":"6865c648c6b75f0030446843","name":"Recurly Commerce Docs","parent":null,"sitemap":"disabled","llms_txt":"enabled","subdomain":"recurly-commerce-docs","suggested_edits":"disabled","notification_settings":{"project_topic_key":null},"uri":"/projects/me","variable_defaults":[{"name":"bearer","source":"security","type":"http","id":null}],"webhooks":[],"api_designer":{"allow_editing":"enabled"},"custom_login":{"jwt_secret":null,"jwt_expiration_time":0,"login_url":null,"logout_url":null},"features":{"mdx":"disabled"},"onboarding_completed":{"api":true,"appearance":false,"documentation":true,"domain":false,"jwt":false,"logs":false,"metricsSDK":false,"ai_ready":false,"team":false,"git_sync":false},"owner":{"id":null,"email":null,"name":null},"privacy":{"branches":"enabled","openapi":"public","password":null,"view":"public"},"refactored":{"status":"enabled","migrated":"unknown"},"seo":{"overwrite_title_tag":"disabled"},"ssl":{"min_tls_version":"1.2"},"hsts":{"include_subdomains":false},"feature_rules":{"merge":{"requirements":[],"allow_override":[]}},"god_mode":{"is_active":null,"flags":{},"admin_limit_override":null,"notes":null,"legacy_css":null,"children_limit":null,"extra_sections_limit":null,"owlbot":{"enabled":null,"new_experience":null,"trial_ends_at":null},"salesforce":{"account_id":null},"enterprise_notes":{"account_name":null,"owner_csm":null,"owner_sales":null,"status":null,"superhub_migration_eligibility":null},"mdxish_migration_status":{"migrated_at":null,"migrated_from":null,"reverted_at":null,"source":null}},"mcp":{"state":"enabled","custom_tools":[],"disabled_routes":[],"explicitly_enabled_routes":[],"disabled_tools":[],"has_password":false,"auth_validation_url":null,"auth_validation_enabled":true,"oauth_pages":{"auth_url":null,"success_url":null,"error_url":null},"openai_challenge_token":null,"oauth_credentials":{},"inherit_oauth_credentials":true,"oauth_callback_url":"https://docs.recurly.com/mcp/oauth/callback","inherited_oauth_config":{"inherited":false,"credentials":{},"oauth_pages":{"auth_url":null,"success_url":null,"error_url":null}},"privacy":{"password":null}},"plan":{"type":"enterprise","admin_limit_override_active":false,"bills_extra_admin_seats":false,"extra_sections_limit":1,"override":null,"stripe_subscription_id":null,"grace_period":{"enabled":false,"end_date":null},"trial":{"active":false,"enabled":null,"expired":false,"end_date":"2025-07-16T23:52:40.256Z"}},"redirects":[],"reference":{"api_sdk_snippets":"enabled","defaults":"use_only_if_required","show_openapi_download":"disabled","fill_optional_objects_on_expand":"enabled","validate_required_fields":"disabled","json_editor":"disabled","method_badge_style":"classic","flat_sections":"disabled","param_font":"default","credentials":"enabled","param_inputs":"all","oauth_flows":"disabled","oneof_layout":"dropdown","request_history":"enabled","request_examples":"collapsed","response_examples":"collapsed","response_schemas":"collapsed","show_method_in_sidebar":"enabled","webhook_badge":"pill","sdk_snippets":{"external":"disabled"}},"llms_txt_options":{"split":{"enabled":"disabled","categories":"enabled"},"query":{"enabled":"disabled"},"custom":{"enabled":"disabled"}},"custom_domain":{"name":"docs.recurly.com","target":null,"validation":{"status":null,"code":null}},"ai":{"discovery":{"content_signal":{"ai_train":true,"search":true,"ai_input":true},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"show_sub_pages":true,"show_sibling_pages":true,"show_whats_next":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":null,"authorization_servers":[],"resource_identifier":null,"scopes_supported":[]}},"hidden":false,"readiness":{"status":null,"score":null,"grade":null,"category_scores":null,"pages":null,"summary":null,"results":null,"resolutions":null,"cap":null,"last_checked_at":null,"error_message":null},"ai_writer":{"enabled":true},"docs_audit":{"enabled":true},"inline_editor":{"enabled":true},"linter":{"enabled":true},"chat":{"enabled":true,"models":[],"knowledge":{"custom_knowledge":null,"use_project_knowledge":false}},"owlbot":{"enabled":true,"new_experience":true,"placements":["header","in_search"],"is_paying":false,"trial":{"is_paying":false}},"slack":{"writer":{"allow_branch_deletion":false,"allow_branch_merge":false}}},"integrations":{"aws":{"readme_webhook_login":{"region":null,"external_id":null,"role_arn":null,"usage_plan_id":null}},"bing":{"verify":null},"google":{"analytics":null,"site_verification":null},"heap":{"id":null},"koala":{"key":null},"localize":{"key":null},"postman":{"key":null,"client_id":null,"client_secret":null,"is_connected":false},"recaptcha":{"site_key":null,"secret_key":null},"segment":{"key":null,"domain":null},"speakeasy":{"key":null,"spec_url":null},"typekit":{"key":null},"zendesk":{"subdomain":null},"intercom":{"app_id":null,"secure_mode":{"key":null}}},"pages":{"default_visibility":"public","not_found":null},"permissions":{"appearance":{"private_label":"enabled","custom_code":{"css":"enabled","html":"enabled","js":"enabled"}},"branches":{"merge":{"admin":true,"editor":false},"approve":{"admin":true,"editor":false}},"versions":{"edit":{"admin":true,"editor":false}}},"metrics":{"monthly_purchase_limit":0,"monthly_limit":0,"pii":{"enabled":true},"voting":{"page_quality":{"enabled":true}}},"health_check":{"provider":"none","settings":{"manual":{"status":"down","url":null},"statuspage":{"id":null}}},"appearance":{"border_radius":"default","print_button":"disabled","toc_variant":"line","changelog":{"layout":"collapsed","show_author":false,"show_exact_date":false},"layout":{"full_width":"disabled","sticky_header":null,"style":"classic"},"brand":{"primary_color":"#0d0d0b","primary_color_dark":null,"link_color":"#0d0d0b","link_color_dark":null,"theme":"system","theme_preset":"default","background":{"color":null,"color_dark":null,"tint":null,"tint_dark":null},"border":{"color":null,"color_dark":null},"breadcrumbs":{"color":null,"color_dark":null},"header":{"color":null,"color_dark":null},"sidebar":{"border":null,"border_dark":null},"askai":{"color":null,"color_dark":null}},"markdown":{"callouts":{"icon_font":"emojis"}},"table_of_contents":"enabled","whats_next_label":null,"landing_page":{"sections":[{"type":"html","alignment":"left","title":null,"text":null,"html":"\u003chead>\n    \u003cstyle>\n        /* ============================================================\n           GLOBAL OVERRIDES\n        ============================================================ */\n        main.main-index,\n        .rm-LandingPage {\n            width: 100% !important;\n            max-width: 100% !important;\n            margin: 0 !important;\n            padding: 0 !important;\n            background: #0D0D0B !important;\n        }\n\n        .hub-is-home .rm-VersionDropdown { display: none !important; }\n\n        .feature-grid a,\n        .feature-grid a:hover,\n        .more-docs-link,\n        .globallp-footer-content a {\n            text-decoration: none !important;\n            -webkit-text-decoration-color: transparent !important;\n            text-decoration-color: transparent !important;\n        }\n\n        /* ============================================================\n           OVERFLOW PROTECTION\n        ============================================================ */\n        .globallp-header-section,\n        .feature-container {\n            overflow-x: hidden !important;\n        }\n\n        .feature-grid > * { min-width: 0 !important; }\n\n        .feature-card {\n            max-width: 100% !important;\n            min-width: 0 !important;\n            box-sizing: border-box !important;\n        }\n\n        /* ============================================================\n           SHARED: dark section base\n        ============================================================ */\n        body,\n        .globallp-header-section,\n        .feature-container,\n        .feature-section {\n            background: #0D0D0B !important;\n        }\n\n        /* ============================================================\n           HERO\n        ============================================================ */\n        .globallp-header-section {\n            padding: 64px 0 !important;\n        }\n\n        /* ============================================================\n           HERO SEARCH\n        ============================================================ */\n        .hero-search-bar { display: flex !important; align-items: center !important; gap: 10px !important; background: rgba(255,255,255,0.08) !important; border: 1px solid rgba(255,255,255,0.15) !important; border-radius: 8px !important; padding: 10px 16px !important; max-width: 420px !important; cursor: pointer !important; margin-bottom: 24px !important; transition: background 0.2s, border-color 0.2s !important; }\n        .hero-search-bar:hover { background: rgba(255,255,255,0.13) !important; border-color: rgba(255,255,255,0.3) !important; }\n        .hero-search-icon { color: rgba(255,255,255,0.5) !important; flex-shrink: 0 !important; }\n        .hero-search-placeholder { flex: 1 !important; font-size: 15px !important; color: rgba(255,255,255,0.45) !important; font-family: \"Polar\",\"Helvetica Neue\",Helvetica,arial,sans-serif !important; }\n        .hero-search-kbd { font-size: 12px !important; color: rgba(255,255,255,0.3) !important; background: rgba(255,255,255,0.08) !important; border: 1px solid rgba(255,255,255,0.15) !important; border-radius: 4px !important; padding: 2px 7px !important; font-family: monospace !important; }\n\n        /* ============================================================\n           FEATURE SECTION\n        ============================================================ */\n        .feature-container {\n            width: 100% !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n        }\n\n        .feature-section {\n            padding: 64px 32px !important;\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            box-sizing: border-box !important;\n        }\n\n        /* Section header */\n        .section-header-block {\n            display: flex !important;\n            justify-content: space-between !important;\n            align-items: center !important;\n            gap: 48px !important;\n            margin-bottom: 32px !important;\n            padding: 28px 36px !important;\n            background: rgba(255, 253, 242, 0.03) !important;\n            border: 1px solid rgba(255, 253, 242, 0.08) !important;\n            border-left: 4px solid #FFD706 !important;\n            border-radius: 0 12px 12px 0 !important;\n            box-sizing: border-box !important;\n            max-width: 100% !important;\n            overflow: hidden !important;\n        }\n\n        .section-header-left { flex: 1 !important; min-width: 0 !important; }\n        .section-header-right { flex: 1 !important; max-width: 420px !important; min-width: 0 !important; }\n\n        .section-eyebrow {\n            display: inline-flex !important;\n            align-items: center !important;\n            gap: 8px !important;\n            color: #FFD706 !important;\n            font-size: 11px !important;\n            font-weight: 700 !important;\n            letter-spacing: 0.12em !important;\n            text-transform: uppercase !important;\n            margin-bottom: 10px !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n        }\n\n        .section-eyebrow-dot {\n            display: inline-block !important;\n            width: 6px !important;\n            height: 6px !important;\n            border-radius: 50% !important;\n            background: #FFD706 !important;\n            flex-shrink: 0 !important;\n        }\n\n        .section-title {\n            font-size: 32px !important;\n            font-weight: 800 !important;\n            color: #FFFDF2 !important;\n            margin: 0 !important;\n            line-height: 1.1 !important;\n            letter-spacing: -0.02em !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            overflow-wrap: break-word !important;\n            word-break: break-word !important;\n        }\n\n        .section-desc {\n            font-size: 15px !important;\n            color: rgba(255, 253, 242, 0.82) !important;\n            margin: 0 !important;\n            line-height: 1.65 !important;\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            overflow-wrap: break-word !important;\n            word-break: break-word !important;\n        }\n\n        /* ============================================================\n           FEATURE GRID — 3 columns\n        ============================================================ */\n        .feature-grid {\n            width: 100% !important;\n            display: grid !important;\n            grid-template-columns: repeat(3, 1fr) !important;\n            gap: 16px !important;\n            box-sizing: border-box !important;\n        }\n\n        .feature-card {\n            background: #131210 !important;\n            border: 1px solid rgba(255, 253, 242, 0.07) !important;\n            border-radius: 14px !important;\n            padding: 28px 26px !important;\n            display: flex !important;\n            flex-direction: column !important;\n            gap: 12px !important;\n            cursor: pointer !important;\n            transition: background 0.2s ease, border-color 0.2s ease !important;\n            width: 100% !important;\n            height: auto !important;\n            min-height: 0 !important;\n            overflow: visible !important;\n            box-sizing: border-box !important;\n        }\n\n        .feature-grid a {\n            text-decoration: none !important;\n            color: inherit !important;\n            display: flex !important;\n            height: auto !important;\n        }\n\n        .feature-card:hover {\n            background: #1C1B18 !important;\n            border-color: rgba(255, 215, 6, 0.22) !important;\n        }\n\n        .feature-card-icon {\n            width: 48px !important;\n            height: 48px !important;\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            flex-shrink: 0 !important;\n            background: #FFD706 !important;\n            border-radius: 50% !important;\n        }\n\n        /* Badge inline with icon for API card */\n        .feature-card-icon-group {\n            display: flex !important;\n            align-items: center !important;\n            gap: 12px !important;\n        }\n\n        .feature-badge {\n            display: inline-flex !important;\n            align-items: center !important;\n            background: rgba(255, 215, 6, 0.1) !important;\n            border: 1px solid rgba(255, 215, 6, 0.2) !important;\n            border-radius: 99px !important;\n            padding: 3px 10px !important;\n        }\n\n        .feature-badge-text {\n            font-size: 10px !important;\n            font-weight: 700 !important;\n            letter-spacing: 0.08em !important;\n            text-transform: uppercase !important;\n            color: #FFD706 !important;\n        }\n\n        .feature-card-title {\n            color: #FFFDF2 !important;\n            font-weight: 700 !important;\n            font-size: 15px !important;\n            margin: 0 !important;\n            line-height: 1.3 !important;\n            overflow-wrap: break-word !important;\n        }\n\n        .feature-card:hover .feature-card-title { color: #FFD706 !important; }\n\n        .feature-card-desc {\n            color: rgba(255, 253, 242, 0.82) !important;\n            font-size: 13px !important;\n            margin: 0 !important;\n            line-height: 1.55 !important;\n            overflow-wrap: break-word !important;\n        }\n\n        /* ============================================================\n           MORE DOCS\n        ============================================================ */\n        .more-docs-section {\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            background: #f6f3e0 !important;\n            padding: 94px 32px !important;\n        }\n\n        .more-docs-container {\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            text-align: center !important;\n            box-sizing: border-box !important;\n        }\n\n        .more-docs-title { font-weight: 700 !important; margin: 0 0 16px !important; font-size: 36px !important; }\n        .more-docs-desc { font-size: 20px !important; color: #0D0D0B !important; margin-bottom: 40px !important; }\n\n        .more-docs-grid {\n            display: flex !important;\n            justify-content: space-around !important;\n            gap: 48px !important;\n            flex-wrap: wrap !important;\n        }\n\n        .more-docs-card {\n            flex: 1 1 30% !important;\n            display: flex !important;\n            flex-direction: column !important;\n            align-items: center !important;\n            gap: 12px !important;\n        }\n\n        .more-docs-card-icon { width: 48px !important; height: 48px !important; }\n        .more-docs-card-image { width: auto !important; height: 32px !important; margin-bottom: 8px !important; }\n        .more-docs-card-desc { font-size: 16px !important; line-height: 24px !important; color: #0D0D0B !important; }\n\n        .more-docs-link {\n            color: #FF5810 !important;\n            font-size: 16px !important;\n            font-weight: 600 !important;\n            text-decoration: none !important;\n            display: flex !important;\n            align-items: center !important;\n        }\n        .more-docs-link:hover { text-decoration: underline !important; }\n        .more-docs-icon-arrow { width: 20px !important; margin-left: 8px !important; }\n\n        /* ============================================================\n           FOOTER\n        ============================================================ */\n        .globallp-footer {\n            font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n            background: #0D0D0B !important;\n            color: #fff !important;\n            padding: 48px 0 !important;\n        }\n\n        .globallp-footer-content {\n            max-width: 1200px !important;\n            margin: 0 auto !important;\n            display: flex !important;\n            justify-content: space-between !important;\n            align-items: center !important;\n            padding: 0 32px !important;\n            box-sizing: border-box !important;\n        }\n\n        .globallp-footer-content img { width: auto !important; height: 16px !important; margin: 0 !important; }\n        .globallp-footer-content p { margin: 0 !important; font-size: 14px !important; color: #FFFDF2 !important; }\n        .globallp-footer-content a { color: #FFFDF2 !important; text-decoration: none !important; margin-right: 20px !important; }\n        .globallp-footer-content a:hover { text-decoration: underline !important; }\n\n        /* ============================================================\n           RESPONSIVE\n        ============================================================ */\n        @media (max-width: 1024px) {\n            .feature-grid { grid-template-columns: repeat(2, 1fr) !important; }\n        }\n\n        @media (max-width: 768px) {\n            .globallp-header-section   { padding: 48px 0 !important; }\n            .globallp-header-content   { padding: 0 20px !important; }\n            .globallp-heading          { font-size: 36px !important; }\n            .globallp-supporting-text  { font-size: 16px !important; }\n            .hero-search-bar           { max-width: 100% !important; }\n            .feature-section           { padding: 48px 20px !important; }\n            .section-header-block { flex-direction: column !important; align-items: flex-start !important; gap: 10px !important; padding: 20px !important; margin-bottom: 24px !important; }\n            .section-header-right      { max-width: 100% !important; }\n            .section-title             { font-size: 24px !important; }\n            .feature-grid { grid-template-columns: 1fr !important; }\n            .feature-card              { padding: 20px !important; }\n            .more-docs-section         { padding: 60px 20px !important; }\n            .more-docs-title           { font-size: 28px !important; }\n            .more-docs-desc            { font-size: 16px !important; }\n            .more-docs-grid { flex-direction: column !important; align-items: center !important; gap: 40px !important; }\n            .more-docs-card { flex: 1 1 100% !important; max-width: 400px !important; }\n            .globallp-footer           { padding: 36px 0 !important; }\n            .globallp-footer-content { flex-direction: column !important; align-items: center !important; text-align: center !important; gap: 16px !important; padding: 0 20px !important; }\n            .globallp-footer-content p { display: flex !important; flex-wrap: wrap !important; justify-content: center !important; gap: 6px !important; }\n            .globallp-footer-content a { margin-right: 0 !important; }\n        }\n\n        @media (max-width: 480px) {\n            .globallp-header-section   { padding: 36px 0 !important; }\n            .globallp-heading          { font-size: 28px !important; }\n            .globallp-supporting-text  { font-size: 15px !important; }\n            .hero-search-kbd           { display: none !important; }\n            .feature-section           { padding: 40px 16px !important; }\n            .section-header-block      { padding: 18px 16px !important; }\n            .section-title             { font-size: 20px !important; }\n            .section-desc              { font-size: 13px !important; }\n            .feature-card              { padding: 18px 16px !important; gap: 10px !important; }\n            .feature-card-icon         { width: 40px !important; height: 40px !important; }\n            .feature-card-title        { font-size: 14px !important; }\n            .feature-card-desc         { font-size: 12px !important; }\n            .more-docs-section         { padding: 48px 16px !important; }\n            .more-docs-title           { font-size: 24px !important; }\n        }\n\n        @media (max-width: 375px) {\n            .globallp-heading          { font-size: 26px !important; }\n            .section-title             { font-size: 18px !important; }\n        }\n    \u003c/style>\n\u003c/head>\n\n\u003cbody>\n\n    \u003c!-- ===== Hero ===== -->\n    \u003csection class=\"globallp-header-section\">\n        \u003cdiv class=\"globallp-header-content\">\n            \u003cdiv class=\"hero-search-bar\" id=\"hero-search-trigger\">\n                \u003csvg class=\"hero-search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                    \u003ccircle cx=\"11\" cy=\"11\" r=\"8\">\u003c/circle>\n                    \u003cline x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\">\u003c/line>\n                \u003c/svg>\n                \u003cspan class=\"hero-search-placeholder\">Search documentation...\u003c/span>\n                \u003cspan class=\"hero-search-kbd\">⌘K\u003c/span>\n            \u003c/div>\n            \u003cdiv class=\"globallp-subheading\">DOCUMENTATION\u003c/div>\n            \u003cdiv class=\"globallp-heading\">Let's get started\u003c/div>\n            \u003cdiv class=\"globallp-supporting-text\">Get guides, API references, and best practices for Recurly Commerce.\u003c/div>\n            \u003cdiv class=\"cta-group\">\n                \u003cdiv class=\"new-btn-group\">\n                    \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/\" class=\"new-btn new-btn-primary\">\n                        \u003cdiv class=\"new-btn-text\">\u003cimg class=\"new-btn-icon\" src=\"https://recurly.com/img2/product-docs/icon-docs-book.svg\" alt=\"book icon\">View all docs\u003c/div>\n                    \u003c/a>\n                \u003c/div>\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== Feature Grid ===== -->\n    \u003csection class=\"feature-container\">\n        \u003cdiv class=\"feature-section\">\n\n            \u003cdiv class=\"section-header-block\">\n                \u003cdiv class=\"section-header-left\">\n                    \u003cdiv class=\"section-eyebrow\">\u003cspan class=\"section-eyebrow-dot\">\u003c/span>Recurly Commerce\u003c/div>\n                    \u003ch2 class=\"section-title\">Explore all of our features\u003c/h2>\n                \u003c/div>\n                \u003cdiv class=\"section-header-right\">\n                    \u003cp class=\"section-desc\">Everything you need to manage subscriptions, recover revenue, and power your Shopify storefront — all in one place.\u003c/p>\n                \u003c/div>\n            \u003c/div>\n\n            \u003cdiv class=\"feature-grid\">\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/subscription-management#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M20 12V22H4V12\">\u003c/path>\n                                \u003cpath d=\"M22 7H2v5h20V7z\">\u003c/path>\n                                \u003cpath d=\"M12 22V7\">\u003c/path>\n                                \u003cpath d=\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\">\u003c/path>\n                                \u003cpath d=\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\">\u003c/path>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Subscription management\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Plan creation, plan editing, contract updates, and activity logs.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/recurly-commerce-revenue-recovery#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpolyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\">\u003c/polyline>\n                                \u003cpolyline points=\"17 6 23 6 23 12\">\u003c/polyline>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Revenue recovery\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Maximize involuntary revenue recovery and reduce churn.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/storefront#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\">\u003c/path>\n                                \u003cpolyline points=\"9 22 9 12 15 12 15 22\">\u003c/polyline>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Storefront\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Storefront resources, customization, and technical resources.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/customer-portal#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\">\u003c/path>\n                                \u003ccircle cx=\"12\" cy=\"7\" r=\"4\">\u003c/circle>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Customer portal\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Self-service portal: skip, swap, pause, gift, and more for your customers.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/notifications#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\">\u003c/path>\n                                \u003cpath d=\"M13.73 21a2 2 0 0 1-3.46 0\">\u003c/path>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Notifications\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Emails, SMS, and integrations.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/shopify-settings#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cpath d=\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\">\u003c/path>\n                                \u003cline x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\">\u003c/line>\n                                \u003cpath d=\"M16 10a4 4 0 0 1-8 0\">\u003c/path>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Shopify\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Orders, refunds, discounts, shipping, and tagging directly within Shopify.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/recurly-commerce-analytics#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003cline x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\">\u003c/line>\n                                \u003cline x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\">\u003c/line>\n                                \u003cline x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\">\u003c/line>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Analytics\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Performance, cohorts, forecast growth, and exports.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/docs/recurly-commerce-integrations#/\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon\">\n                            \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                \u003crect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\">\u003c/rect>\n                                \u003cline x1=\"1\" y1=\"10\" x2=\"23\" y2=\"10\">\u003c/line>\n                            \u003c/svg>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">Integrations\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Recurly Commerce integrations and partner connections.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n                \u003ca href=\"https://docs.recurly.com/recurly-commerce/update/reference/publicapicontroller_listsubscriptions-1\">\n                    \u003cdiv class=\"feature-card\">\n                        \u003cdiv class=\"feature-card-icon-group\">\n                            \u003cdiv class=\"feature-card-icon\">\n                                \u003csvg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0D0D0B\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                    \u003cpath d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\">\u003c/path>\n                                    \u003cpath d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\">\u003c/path>\n                                \u003c/svg>\n                            \u003c/div>\n                            \u003cdiv class=\"feature-badge\">\n                                \u003cspan class=\"feature-badge-text\">Technical docs\u003c/span>\n                            \u003c/div>\n                        \u003c/div>\n                        \u003cdiv class=\"feature-card-title\">API reference\u003c/div>\n                        \u003cdiv class=\"feature-card-desc\">Complete endpoint documentation for accessing and managing Commerce.\u003c/div>\n                    \u003c/div>\n                \u003c/a>\n\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== More docs ===== -->\n    \u003csection class=\"more-docs-section\">\n        \u003cdiv class=\"more-docs-container\">\n            \u003ch2 class=\"more-docs-title\">Looking for more documentation?\u003c/h2>\n            \u003cdiv class=\"more-docs-desc\">Visit our dedicated documentation for other Recurly Products.\u003c/div>\n            \u003cdiv class=\"more-docs-grid\">\n                \u003cdiv class=\"more-docs-card\">\n                    \u003cimg class=\"more-docs-card-icon\" src=\"https://recurly.com/img2/product-docs/icon-subscriptions-docs.svg\" alt=\"Subscriptions icon\">\n                    \u003cimg class=\"more-docs-card-image\" src=\"https://recurly.com/img2/product-docs/img-r-subscription-docs.webp\" alt=\"Subscriptions\">\n                    \u003cdiv class=\"more-docs-card-desc\">Everything you need to scale your subscription business and keep customers coming back.\u003c/div>\n                    \u003ca href=\"https://docs.recurly.com/recurly-subscriptions/\" class=\"more-docs-link\">Explore docs \u003cimg class=\"more-docs-icon-arrow\" src=\"https://recurly.com/img2/product-docs/arrow-right.svg\" alt=\"→\">\u003c/a>\n                \u003c/div>\n                \u003cdiv class=\"more-docs-card\">\n                    \u003cimg class=\"more-docs-card-icon\" src=\"https://recurly.com/img2/product-docs/icon-engage-docs.svg\" alt=\"Engage icon\">\n                    \u003cimg class=\"more-docs-card-image\" src=\"https://recurly.com/img2/product-docs/img-r-engage-docs.webp\" alt=\"Engage\">\n                    \u003cdiv class=\"more-docs-card-desc\">Power your subscribers' journey with personalized prompts and automation that fuel revenue growth.\u003c/div>\n                    \u003ca href=\"https://docs.recurly.com/recurly-engage/\" class=\"more-docs-link\">Explore docs \u003cimg class=\"more-docs-icon-arrow\" src=\"https://recurly.com/img2/product-docs/arrow-right.svg\" alt=\"→\">\u003c/a>\n                \u003c/div>\n                \u003cdiv class=\"more-docs-card\">\n                    \u003cimg class=\"more-docs-card-icon\" src=\"https://recurly.com/img2/product-docs/icon-revrec-docs.svg\" alt=\"RevRec icon\">\n                    \u003cimg class=\"more-docs-card-image\" src=\"https://recurly.com/img2/product-docs/img-r-revrec-docs.webp\" alt=\"RevRec\">\n                    \u003cdiv class=\"more-docs-card-desc\">Streamline and automate compliance with multiple revenue reporting standards.\u003c/div>\n                    \u003ca href=\"https://docs.recurly.com/recurly-revrec/\" class=\"more-docs-link\">Explore docs \u003cimg class=\"more-docs-icon-arrow\" src=\"https://recurly.com/img2/product-docs/arrow-right.svg\" alt=\"→\">\u003c/a>\n                \u003c/div>\n            \u003c/div>\n        \u003c/div>\n    \u003c/section>\n\n    \u003c!-- ===== Footer ===== -->\n    \u003csection class=\"globallp-footer\">\n        \u003cdiv class=\"globallp-footer-content\">\n            \u003cimg src=\"https://recurly.com/img2/product-docs/img-footer-logo-tagline.webp\" alt=\"Recurly Logo\">\n            \u003cp>\n                \u003ca href=\"https://recurly.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Recurly.com\u003c/a>\n                \u003ca href=\"https://recurly.com/legal/\" target=\"_blank\" rel=\"noopener noreferrer\">Legal\u003c/a>\n                &copy; 2025 Recurly, Inc.\n            \u003c/p>\n        \u003c/div>\n    \u003c/section>\n\n\u003c/body>","page_type":null,"side":null,"media_type":null,"media_html":null,"media_image":null,"media_code":null,"group0":null,"group1":null,"group2":null}],"promo":{"title":null,"text":null,"content_type":"none","html":null,"button_primary":null,"button_secondary":"none"}},"footer":{"readme_logo":"show"},"logo":{"size":"default","dark_mode":{"uri":null,"url":null,"name":null,"width":null,"height":null,"color":null,"links":{"original_url":null}},"main":{"uri":"/images/6a0caab85a19dc4e20cd9637","url":"https://files.readme.io/84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg","name":"84211730edf64179d47ed6cdf764a152a9ac85c7a32ff6a88db82d2f6851f69e-logo-docs-commerce.svg","width":null,"height":null,"color":"#ffd706","links":{"original_url":null}},"favicon":{"uri":"/images/68754ea392d1d6374f1ee479","url":"https://files.readme.io/f5415736f6306f3aff84928311144e1e776487dbb4c3dffa4129f3cc583c3f7f-Recurly-Profile-Image.png","name":"f5415736f6306f3aff84928311144e1e776487dbb4c3dffa4129f3cc583c3f7f-Recurly-Profile-Image.png","width":300,"height":300,"color":"#fbd404","links":{"original_url":null}}},"typography":{"heading_font":null,"body_font":null,"code_font":null,"spacing":null,"custom_heading":{"url":null,"filename":null,"format":null},"custom_code":{"url":null,"filename":null,"format":null},"custom_body":{"regular":{"url":null,"filename":null,"format":null},"medium":{"url":null,"filename":null,"format":null},"semibold":{"url":null,"filename":null,"format":null}}},"ai":{"dropdown":"enabled","options":{"ask_ai":"disabled","chatgpt":"enabled","claude":"enabled","clipboard":"enabled","view_as_markdown":"enabled","mcp":{"command":"enabled","config":"enabled","cursor":"enabled","vscode":"enabled"}}},"custom_code":{"css":"@import url('https://fonts.googleapis.com/css2?family=Figtree:ital,wght@0,300..900;1,300..900&display=swap');\n\n@font-face {\n    font-family: \"Polar\";\n    font-weight: 400;\n    font-style: normal;\n    src:\n        url(\"https://recurly.com/img2/fonts/FTPolar-Regular.woff2\") format(\"woff2\"),\n        url(\"https://recurly.com/img2/fonts/FTPolar-Regular.woff\") format(\"woff\");\n    }\n\n    @font-face {\n    font-family: \"Polar\";\n    font-weight: 700;\n    font-style: normal;\n    src:\n    url(\"/img2/fonts/FTPolar-Bold.woff2\") format(\"woff2\"),\n    url(\"/img2/fonts/FTPolar-Bold.woff\") format(\"woff\");\n    }\n\n@font-face {\n    font-family: \"Gruffy\";\n    font-weight: 400;\n    font-style: normal;\n    src:\n    url(\"https://recurly.com/img2/fonts/F37Gruffy-Regular.woff2\") format(\"woff2\"),\n    url(\"https://recurly.com/img2/fonts/F37Gruffy-Regular.woff\") format(\"woff\");\n    }\n\n@font-face {\n    font-family: \"Gruffy\";\n    font-weight: 700;\n    font-style: normal;\n    src:\n    url(\"/img2/fonts/F37Gruffy-Bold.woff2\") format(\"woff2\"),\n    url(\"/img2/fonts/F37Gruffy-Bold.woff\") format(\"woff\");\n}\n\n.rm-TryIt {display:none !important}\n\n.Reference-section {\n    margin-bottom: 1em;\n    display: none;\n}\nbody {\n    margin: 0;\n    font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n}\n\n.ThemeContext_line .rm-Header {\n\t    --Header-background: #0D0D0B;\n}\n\n.rm-Header-top-link.Button {\n\tcolor: #FCFBF7;\n}\n\n#enterprise .SuperHub-hub-wrapper3t_-5gSx4Sax {\n\tborder-radius: 0;\n}\n\n\n#enterprise .rm-Header-bottom-link {\n    display: none;\n} \n\n#enterprise .rm-SearchToggle {\n  width: 320px;\t\n\theight: 48px;\n}\n\n#enterprise .Header-search_featherYsmQBn55F3d9 {\n    position: absolute;\n    top: 420px;\n    left: 50%;\n    transform: translateX(-50%);\n}\n\n.new-btn-group {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 20px;\n    align-items: center;\n}\n\n.new-btn-icon {\n      margin-right: 4px !important;\n  }\n\n.new-btn-text {\n    position: relative;\n    font-size: 16px;\n    line-height: 20px;\n    font-weight: 600;\n}\n\n.new-btn {\n    position: relative;\n    border-radius: 8px;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    justify-content: center;\n    gap: 4px;\n    color: #0d0d0b;\n    min-width: 112px;\n    min-height: 42px;\n    padding: 10px 16px;\n    box-sizing: border-box;\n    cursor: pointer;\n    outline: none !important;\n    transition: background-color 500ms ease-in-out;\n  \ttext-decoration: none;\n\t\twidth: 100%;\n\t\tmargin: 24px;\n}\n\n.new-btn-primary {\n    background: linear-gradient(102.03deg, #fff688, #ffd706);\n}\n\n.new-btn-primary:hover {\n    background: linear-gradient(90.39deg, #ffec5f, #ffc10b);\n}\n\n.new-btn-primary:active,\n.new-btn-primary:focus {\n    box-shadow: 0px 0px 0px 2px #fff, 0px 0px 0px 4px #51a1c9;\n}\n\n.globallp-header-section {\n    background: #0D0D0B;\n    padding: 48px 0 150px;\n}\n\n.globallp-header-content {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    max-width: 700px;\n    margin: 0 auto;\n    padding: 0 32px;\n    display: flex;\n    justify-content: center;\n    flex-direction: column;\n    align-items: center;\n}\n\n.globallp-subheading {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    color: #FFD706;\n    font-size: 16px;\n    margin-bottom: 12px;\n    text-align: center;\n}\n\n.globallp-heading {\n    color: #fff;\n    font-size: 48px;\n    font-family: \"Gruffy\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n    font-weight: 700;\n    margin-bottom: 24px;\n    text-align: center;\n}\n\n.globallp-supporting-text {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    color: #F9F7EB;\n    font-size: 20px;\n    margin-bottom: 32px;\n    text-align: center;\n}\n\n.search-bar {\n    max-width: 320px;\n    margin: 0 auto 64px auto;\n    padding: 12px 14px;\n    background: #fff;\n    box-shadow: 0 1px 2px rgba(13, 13, 11, 0.05);\n    border-radius: 8px;\n    border: 1px solid #D1CFC4;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n.search-icon {\n    width: 20px;\n    height: 20px;\n    border: 1.67px solid #807D75;\n    border-radius: 50%;\n}\n\n.search-text {\n    color: #807D75;\n    font-size: 16px;\n}\n\n.globallp-card-container {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    max-width: 1200px;\n    margin: 96px auto;\n}\n\n.globallp-cards-section {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    grid-template-rows: repeat(2, 1fr);\n    gap: 96px 32px;\n    justify-items: center;\n    align-items: center;\n    background: #fff;\n    margin: 0 12px;\n}\n\n.globallp-cards-section > a {\n    color: inherit;\n    text-decoration: none;\n}\n\n.globallp-card {\n    background: #fff;\n    border-radius: 16px;\n    box-shadow: 0 2px 2px -1px rgba(13, 13, 11, 0.04);\n    outline: 1px solid rgba(13, 13, 11, 0.08);\n    max-width: 600px;\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n    align-items: center;\n    gap: 24px;\n    height: auto;\n    overflow: hidden;\n    text-decoration: none;\n}\n\n.globallp-card:hover {\n    box-shadow: 0px 12px 16px -4px rgba(13, 13, 11, 0.08), 0px 4px 6px -2px rgba(13, 13, 11, 0.03), 0px 2px 2px -1px rgba(13, 13, 11, 0.04) !important;\n    \n}\n\n.globallp-card:hover .new-btn-primary {\n    background: linear-gradient(90.39deg, #ffec5f, #ffc10b);\n}\n\n.globallp-card-header {\n    padding: 32px;\n    text-align: center;\n}\n\n.globallp-card-icon {\n    width: 56px;\n    height: 56px;\n    background: #FFD706;\n    border-radius: 50%;\n    margin: 0 auto 24px auto;\n    border: 2px solid #fff;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.globallp-card-image {\n    width: auto;\n    height: 32px;\n    margin-bottom: 8px;\n}\n\n.globallp-card-desc-title {\n    color: #0D0D0B;\n    font-size: 18px;\n    line-height: 28px;\n    margin-bottom: 4px;\n    font-weight: 600;\n}\n\n.globallp-card-desc-text {\n    color: #46443F;\n    font-size: 16px;\n    line-height: 24px;\n}\n\n.globallp-card-footer {\n    width: 100%;\n    background: #F2F1EA;\n    border-top: 1px solid #E2DFD0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.globallp-card-button {\n    background: linear-gradient(135deg, #FFF688 0%, #FFD706 100%);\n    border-radius: 8px;\n    padding: 12px 18px;\n    margin: 16px;\n    color: #0D0D0B;\n    font-size: 16px;\n    font-family: inherit;\n    font-weight: 400;\n    border: none;\n    cursor: pointer;\n}\n\n.newsletter-section {\n    background: #F2F1EA;\n    padding: 64px 32px;\n    text-align: center;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 32px;\n}\n\n.newsletter-header {\n    margin-bottom: 32px;\n}\n\n.newsletter-header h2 {\n    color: #0D0D0B;\n    font-size: 36px;\n    line-height: 42px;\n    margin-bottom: 16px;\n}\n\n.newsletter-header p {\n    color: #0D0D0B;\n    font-size: 20px;\n}\n\n.newsletter-footer {\n    width: 100%;\n}\n\n.globallp-footer {\n\t\tfont-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif !important;\n    background: #0D0D0B;\n    color: #fff;\n    padding: 48px 0;\n    text-align: center;\n}\n\n.globallp-footer-content {\n    max-width: 1200px;\n    margin: 0 auto;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n}\n\n.globallp-footer-content img {\n    width: auto;\n    height: 16px;\n    margin: 0;\n}\n\n.globallp-footer-content p {\n    margin: 0;\n    font-size: 14px;\n    color: #FCFBF7;\n}\n\n.globallp-footer-content a {\n    color: #FCFBF7;\n    text-decoration: none;\n    margin-right: 20px;\n}\n\n.globallp-footer-content a:hover {\n    text-decoration: underline;\n}\n\n@media (max-width: 1024px) {\n    .globallp-header-content {\n        max-width: 100%;\n    }\n    .globallp-cards-section {\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        gap: 24px;\n    }\n\n    .globallp-card {\n        width: 90%;\n        margin-bottom: 32px;\n    }\n}\n\n/* ============================================================\n   RECURLY DOCS — README NATIVE CSS\n   ============================================================\n   Single consolidated stylesheet for ReadMe's global CSS settings.\n   Targets ReadMe's own native classes across all page types and\n   UI surfaces.\n\n   DEPENDENCY\n   ─────────────────────────────────────────────────────────────\n   Requires recurly-readme-theme-v8.1.css to be present in the same\n   global theme. V8.1 provides the full --recurly-* color token set.\n   This file adds the three tokens V8.0 didn't yet prefix, then\n   uses --recurly-* throughout for consistency.\n\n   PARTS\n   ─────────────────────────────────────────────────────────────\n   1 — General Articles    Shared chrome: prose links, AI dropdown,\n                           copy button, pagination, date line,\n                           page thumbs, dividers. Fires on both\n                           Guide and API Reference.\n\n   2 — Guide pages         h1 yellow border (guide-only), excerpt\n                           subtitle, and right-hand TOC sidebar.\n\n   3 — API Reference pages HTTP method badges, endpoint URL,\n                           section headers, parameter rows,\n                           response accordion, status chits,\n                           and the full Playground panel.\n\n   4 — Sidebar navigation  Shared sidebar chrome: container,\n                           section headings, links, subpages,\n                           expand chevron, external icon,\n                           section separators.\n\n   5 — API Reference sidebar  ID alias, QuickNav button, inline\n                           method pills, page icon wrappers,\n                           user avatar.\n\n   6 — QuickNav modal      The \"Jump To\" search overlay.\n\n   7 — Changelog           Full brand styling for the changelog.\n\n   SELECTOR STABILITY NOTE\n   ─────────────────────────────────────────────────────────────\n   ReadMe exposes two tiers of class names:\n\n     Stable  — prefixed with rm- (rm-Playground, rm-TryIt,\n               rm-LanguageButton, rm-APIMethod, etc.).\n               Primary selectors throughout.\n\n     Hashed  — long alphanumeric suffixes generated by CSS-in-JS.\n               May change between ReadMe deployments. Used only\n               alongside a stable rm-* counterpart — never solo.\n\n   All rules use !important to override ReadMe's host CSS.\n   ============================================================ */\n\n\n/* ============================================================\n   Token extensions\n   NOTE: superseded by the consolidated brand v2 palette block\n   further down this file. Values kept in sync to avoid a stale\n   landmine if this file is ever reordered. darknavy/deepchar are\n   retired bluish neutrals — brand v2 has no bluish gray, so they\n   collapse to Off Black.\n   ============================================================ */\n\n:root {\n  --recurly-brightgray: #F2F1EA;  /* OB Tint 2 */\n  --recurly-darknavy:   #0D0D0B;  /* retired → Off Black */\n  --recurly-deepchar:   #0D0D0B;  /* retired → Off Black */\n}\n\n\n/* ============================================================\n   PART 0 — Global page background\n   ============================================================\n   Sets the overall ReadMe canvas and content areas to\n   Recurly offwhite (#FCFBF7) for both Guide and API Reference\n   pages. Targets the SuperHub wrapper and inner content panes.\n   ============================================================ */\n\n.rm-SuperHub,\n.SuperHub,\n[class*=\"SuperHub-wrapper\"],\n[class*=\"SuperHub-content\"],\n[class*=\"SuperHub-body\"],\n.rm-ReferenceMain,\n[class*=\"ReferenceMain\"],\n.rm-Article,\n[class*=\"Article-content\"],\n.content-body,\n#hub-content,\n#content {\n  background: #fff !important;\n}\n\n/* Sidebar background is set again here to complement Part 4's\n   rule — Part 4 handles font/link, this handles the bg color. */\n#hub-sidebar,\n#reference-sidebar,\n.rm-Sidebar {\n  background: #fff !important;\n}\n\n\n/* ============================================================\n   PART 1 — General Articles\n   ============================================================\n   Fires on BOTH Guide and API Reference pages.\n   h1 yellow border is intentionally NOT here — it is scoped\n   to Guide pages only in Part 2 to avoid clashing with the\n   compact badge + URL layout on API Reference pages.\n   ============================================================ */\n\n/* ——— 1.1 — Prose links inside the markdown body ——— */\n\n.rm-Markdown.markdown-body p > a:not([class*=\"Button\"]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download),\n.rm-Markdown.markdown-body li:not(.menu-item) > a:not([class*=\"Button\"]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download) {\n  color: var(--recurly-tangerine) !important;\n  text-decoration: none !important;\n  border-bottom: 1px solid transparent !important;\n  transition: border-color 0.15s !important;\n}\n\n.rm-Markdown.markdown-body p > a:not([class*=\"Button\"]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download):hover,\n.rm-Markdown.markdown-body li:not(.menu-item) > a:not([class*=\"Button\"]):not(.rp-anchor):not(.rp-toc-pill):not(.rp-btn):not(.rp-btn-primary):not(.rp-btn-secondary):not(.rp-btn-ghost):not(.rp-btn-download):hover {\n  border-bottom-color: var(--recurly-tangerine) !important;\n}\n\n/* ——— 1.2 — AI Dropdown (\"Copy Page\" / \"Ask AI\" button cluster) ——— */\n\n.rm-AIDropdown .Button,\n.AIDropdownzmvdRdsNayZl .Button {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-darkgray) !important;\n  background: transparent !important;\n  border-color: var(--recurly-lightgray) !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n.rm-AIDropdown .Button:hover,\n.AIDropdownzmvdRdsNayZl .Button:hover {\n  background: var(--recurly-offblack) !important;\n  border-color: var(--recurly-offblack) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* ——— 1.3 — Copy to Clipboard button ——— */\n\n.CopyToClipboard {\n  background: transparent !important;\n  border-color: var(--recurly-lightgray) !important;\n  color: var(--recurly-gray) !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n.CopyToClipboard:hover,\n.CopyToClipboard:focus {\n  background: var(--recurly-tangerine) !important;\n  border-color: var(--recurly-tangerine) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* Copy button inside Text-type snippets */\npre:has(> code.rdmd-code):not(.CodeTabs *) {\n  position: relative !important;\n}\n\npre:has(> code.rdmd-code):not(.CodeTabs *) > .rdmd-code-copy {\n  position: absolute !important;\n  top: 16px !important;\n  right: 10px !important;\n  background: transparent !important;\n  border: 1px solid var(--recurly-gray) !important;\n  color: var(--recurly-lightgray) !important;\n  border-radius: 6px !important;\n  padding: 4px 10px !important;\n  cursor: pointer !important;\n  z-index: 2 !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\npre:has(> code.rdmd-code):not(.CodeTabs *) > .rdmd-code-copy:hover {\n  background: var(--recurly-tangerine) !important;\n  border-color: var(--recurly-tangerine) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* ——— 1.4 — Pagination controls ——— */\n\n.rm-Pagination {\n  font-family: var(--recurly-font) !important;\n}\n\n.rm-Pagination .PaginationControls-link {\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  color: var(--recurly-offblack) !important;\n  text-decoration: none !important;\n  transition: color 0.15s !important;\n}\n\n.rm-Pagination .PaginationControls-link:hover {\n  color: var(--recurly-tangerine) !important;\n}\n\n/* ——— 1.5 — Next steps divider ——— */\n\n.NextStepsDivider {\n  border: 0 !important;\n  border-top: 1px solid var(--recurly-lightgray) !important;\n  margin: 28px 0 !important;\n}\n\n/* ——— 1.6 — Updated-at date line ——— */\n\n.UpdatedAt .DateLine,\n.DateLine {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  color: var(--recurly-gray) !important;\n}\n\n/* ——— 1.7 — \"Did this page help you?\" thumbs ——— */\n\n.rm-PageThumbs .PageThumbs-helpful {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-darkgray) !important;\n}\n\n.rm-PageThumbs .PageThumbs-button {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-gray) !important;\n  background: transparent !important;\n  border: 0 !important;\n  transition: color 0.15s !important;\n}\n\n.rm-PageThumbs .PageThumbs-button:hover {\n  color: var(--recurly-tangerine) !important;\n}\n\n\n/* ============================================================\n   PART 2 — Guide article pages\n   ============================================================ */\n\n/* ——— 2.1 — Page h1 yellow border (guide-only) ——— */\n\n.rm-Guides-SuperHub #content-head h1,\n.rm-Guides-SuperHub .Title.Title1 {\n  font-family: var(--recurly-font) !important;\n  color: var(--recurly-offblack) !important;\n  font-weight: 800 !important;\n  border-bottom: 2px solid var(--recurly-yellow) !important;\n  padding-bottom: 10px !important;\n  margin-bottom: 20px !important;\n}\n\n/* ——— 2.2 — Page excerpt ——— */\n\n.rm-Guides-SuperHub .excerpt,\n.rm-Article .excerpt {\n  font-family: var(--recurly-font) !important;\n  font-size: 15px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.65 !important;\n  background: transparent !important;\n  border: 0 !important;\n  padding: 0 !important;\n  margin: 0 0 24px !important;\n}\n\n.rm-Guides-SuperHub .excerpt a,\n.rm-Article .excerpt a {\n  color: var(--recurly-tangerine) !important;\n}\n\n/* ——— 2.3 — Right-hand TOC sidebar ——— */\n\n.content-toc {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n}\n\n.content-toc a {\n  color: var(--recurly-gray) !important;\n  text-decoration: none !important;\n  transition: color 0.15s !important;\n}\n\n.content-toc a:hover {\n  color: var(--recurly-offblack) !important;\n}\n\n.content-toc a.active,\n.content-toc .toc-active > a {\n  color: var(--recurly-offblack) !important;\n  font-weight: 700 !important;\n}\n\n/* ——— 2.4 — Content headings h1–h5 ——— */\n\n.rm-Markdown.markdown-body h1.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.75rem !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offblack) !important;\n  margin: 40px 0 16px !important;\n  padding-bottom: 10px !important;\n  border-bottom: 2px solid var(--recurly-yellow) !important;\n}\n\n.rm-Markdown.markdown-body h2.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.5rem !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offblack) !important;\n  margin: 36px 0 14px !important;\n  padding-bottom: 0 !important;\n  border-bottom: 0 !important;\n}\n\n.rm-Markdown.markdown-body h3.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.1rem !important;\n  font-weight: 700 !important;\n  color: var(--recurly-darkgray) !important;\n  margin: 28px 0 10px !important;\n  border-bottom: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.rm-Markdown.markdown-body h4.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 0.95rem !important;\n  font-weight: 700 !important;\n  color: var(--recurly-darkgray) !important;\n  margin: 20px 0 8px !important;\n  border-bottom: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.rm-Markdown.markdown-body h5.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 0.9rem !important;\n  font-weight: 600 !important;\n  color: var(--recurly-darkgray) !important;\n  margin: 16px 0 6px !important;\n  border-bottom: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n/* ——— 2.5 — First-child margin resets ——— */\n\n.rm-Markdown.markdown-body h3.heading:first-child,\n.rm-Markdown.markdown-body h4.heading:first-child,\n.rm-Markdown.markdown-body h5.heading:first-child {\n  margin-block-start: 0 !important;\n}\n\n/* ——— 2.6 — Heading anchor icons ——— */\n\n.rm-Markdown.markdown-body h1.heading,\n.rm-Markdown.markdown-body h2.heading,\n.rm-Markdown.markdown-body h3.heading,\n.rm-Markdown.markdown-body h4.heading,\n.rm-Markdown.markdown-body h5.heading {\n  position: relative !important;\n  overflow: visible !important;\n  cursor: pointer !important;\n}\n\n.rm-Markdown.markdown-body h1.heading .heading-anchor-icon,\n.rm-Markdown.markdown-body h2.heading .heading-anchor-icon,\n.rm-Markdown.markdown-body h3.heading .heading-anchor-icon,\n.rm-Markdown.markdown-body h4.heading .heading-anchor-icon,\n.rm-Markdown.markdown-body h5.heading .heading-anchor-icon {\n  position: absolute !important;\n  left: -22px !important;\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n  width: 18px !important;\n  height: 18px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  opacity: 0 !important;\n  color: var(--recurly-lightgray) !important;\n  font-size: 0.75em !important;\n  margin: 0 !important;\n  text-decoration: none !important;\n  outline: none !important;\n  border: 0 !important;\n  box-shadow: none !important;\n  transition: opacity 0.15s !important;\n  /* Tight bounding box — never overlaps the sidebar */\n  pointer-events: auto !important;\n  z-index: 1 !important;\n}\n\n.rm-Markdown.markdown-body h1.heading .heading-anchor-icon:focus,\n.rm-Markdown.markdown-body h2.heading .heading-anchor-icon:focus,\n.rm-Markdown.markdown-body h3.heading .heading-anchor-icon:focus,\n.rm-Markdown.markdown-body h4.heading .heading-anchor-icon:focus,\n.rm-Markdown.markdown-body h5.heading .heading-anchor-icon:focus {\n  outline: none !important;\n  border: 0 !important;\n  box-shadow: none !important;\n}\n\n.rm-Markdown.markdown-body h1.heading:hover .heading-anchor-icon,\n.rm-Markdown.markdown-body h2.heading:hover .heading-anchor-icon,\n.rm-Markdown.markdown-body h3.heading:hover .heading-anchor-icon,\n.rm-Markdown.markdown-body h4.heading:hover .heading-anchor-icon,\n.rm-Markdown.markdown-body h5.heading:hover .heading-anchor-icon {\n  opacity: 1 !important;\n}\n\n\n/* ============================================================\n   PART 3 — API Reference article pages\n   ============================================================ */\n\n/* ——— 3.1 — Endpoint URL ——— */\n\n[data-testid=\"serverurl\"] {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 13px !important;\n  color: var(--recurly-tangerine) !important;\n}\n\n/* ——— 3.2 — HTTP method badges ——— */\n\n.rm-APIMethod,\n.APIMethod {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.6px !important;\n  text-transform: uppercase !important;\n  padding: 4px 12px !important;\n  border-radius: 14px !important;\n  border: 0 !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  line-height: 1 !important;\n}\n\n.APIMethod_get    { color: var(--recurly-green) !important; }\n.APIMethod_post   { color: var(--recurly-tangerine) !important; }\n.APIMethod_put    { color: var(--recurly-yellow) !important; }\n.APIMethod_patch  { color: var(--recurly-teal) !important; }\n.APIMethod_delete { color: var(--recurly-vermillion) !important; }\n.APIMethod_del    { color: var(--recurly-vermillion) !important; }\n.APIMethod_head   { color: var(--recurly-lightgray) !important; }\n\n/* ——— 3.3 — API section headers (light background context) ——— */\n\n.rm-APISectionHeader {\n  font-family: var(--recurly-font) !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  padding-bottom: 8px !important;\n  margin-bottom: 16px !important;\n}\n\n.rm-APISectionHeader [class*=\"APISectionHeader-heading\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-darkgray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n}\n\n/* ——— 3.4 — Parameter rows ——— */\n\n[class*=\"Param-name\"] {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 13px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-offblack) !important;\n}\n\n[class*=\"Param-type\"] {\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-gray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.3px !important;\n}\n\n[class*=\"Param-is-enum\"] {\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-tangerine) !important;\n  background: rgba(0, 140, 255, 0.10) !important;\n  padding: 1px 6px !important;\n  border-radius: 10px !important;\n}\n\n[class*=\"Param-default-label\"],\n[class*=\"Param-minmax-label\"] {\n  font-size: 11px !important;\n  color: var(--recurly-gray) !important;\n}\n\n[class*=\"Param-description\"] .rm-Markdown,\n[class*=\"Param-description\"] .markdown-body {\n  font-size: 13px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.55 !important;\n}\n\n[class*=\"Param-enum-section-item\"] {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 11px !important;\n  font-weight: 600 !important;\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  border-radius: 20px !important;\n  padding: 4px 12px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"Param-enum-section-item\"]:hover {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Inner code token — transparent so button shell color wins */\n[class*=\"Param-enum-section-item\"] code,\n[class*=\"Param-enum-section-item-value\"] {\n  background: transparent !important;\n  color: inherit !important;\n  font-family: inherit !important;\n  font-size: inherit !important;\n  font-weight: inherit !important;\n  padding: 0 !important;\n  border-radius: 0 !important;\n  box-shadow: none !important;\n}\n\n.rm-ParamInput,\n.rm-ParamSelect {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  background: var(--recurly-offwhite) !important;\n  border-color: var(--recurly-lightgray) !important;\n  color: var(--recurly-darkgray) !important;\n}\n\n.rm-ParamInput:focus,\n.rm-ParamSelect:focus {\n  border-color: var(--recurly-offblack) !important;\n  outline: none !important;\n}\n\n/* ——— 3.5 — HTTP status chits ——— */\n\n.HTTPStatus {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  padding: 2px 8px !important;\n  border-radius: 10px !important;\n}\n\n.HTTPStatus_2 { background: rgba(93, 195, 46, 0.14) !important; color: var(--recurly-green) !important; }\n.HTTPStatus_4 { background: rgba(255, 81, 38, 0.12) !important; color: var(--recurly-vermillion) !important; }\n.HTTPStatus_5 { background: rgba(255, 81, 38, 0.20) !important; color: var(--recurly-vermillion) !important; }\n.HTTPStatus_1 { background: var(--recurly-brightgray) !important; color: var(--recurly-gray) !important; }\n\n/* ——— 3.6 — Response schema accordion ——— */\n\n.rm-APIResponseSchemaPicker {\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 10px !important;\n  overflow: hidden !important;\n  margin: 8px 0 24px !important;\n  font-family: var(--recurly-font) !important;\n  background: var(--recurly-offblack) !important;\n  /* Override ReadMe's --Accordion-icon-color custom property used by SVG chevron */\n  --Accordion-icon-color: var(--recurly-gray) !important;\n}\n\n/* Kill background on intermediate wrappers — AccordionToggle handled separately below */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"],\n.rm-APIResponseSchemaPicker [class*=\"APIResponseSchemaPicker-option\"] {\n  background: transparent !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n/* AccordionToggle h1 — no own background; inherits offblack from parent section */\n.rm-APIResponseSchemaPicker [class*=\"AccordionToggle\"] {\n  background: transparent !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n/* On hover (closed rows only): entire h1 turns yellow.\n   --Accordion-icon-color controls the chevron fill/stroke via ReadMe's Icon system.\n   --icon-color is the resolved custom property the SVG inline style reads directly. */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"]:not([class*=\"AccordionPanel_active\"]) [class*=\"AccordionToggle\"]:has(button:hover) {\n  background: var(--recurly-yellow) !important;\n  --Accordion-icon-color: var(--recurly-offblack) !important;\n  --icon-color: var(--recurly-offblack) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* Row divider — subtle on dark bg */\n.rm-APIResponseSchemaPicker [class*=\"APIResponseSchemaPicker-option\"] {\n  border-bottom: 1px solid var(--recurly-darkgray) !important;\n}\n.rm-APIResponseSchemaPicker [class*=\"APIResponseSchemaPicker-option\"]:last-child {\n  border-bottom: 0 !important;\n}\n\n/* Toggle button — offblack default, pure white text */\n.rm-APIResponseSchemaPicker [class*=\"AccordionToggle\"] button {\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  font-weight: 600 !important;\n  padding: 16px 20px !important;\n  background: transparent !important;\n  color: #fff !important;\n  width: 100% !important;\n  text-align: left !important;\n  border: 0 !important;\n  display: flex !important;\n  align-items: center !important;\n  transition: color 0.15s !important;\n}\n\n/* Hover — text goes offblack; background handled by parent h1 :has() rule above */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"]:not([class*=\"AccordionPanel_active\"]) [class*=\"AccordionToggle\"] button:hover {\n  background: transparent !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* All text descendants go offblack on hover (closed rows only) */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"]:not([class*=\"AccordionPanel_active\"]) [class*=\"AccordionToggle\"] button:hover *,\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel\"]:not([class*=\"AccordionPanel_active\"]) [class*=\"AccordionToggle\"] button:hover p {\n  color: var(--recurly-offblack) !important;\n}\n\n/* Active/open row — yellow left accent, offblack bg */\n.rm-APIResponseSchemaPicker [class*=\"AccordionPanel_active\"] [class*=\"AccordionToggle\"] button,\n.rm-APIResponseSchemaPicker [class*=\"AccordionToggle_active\"] button {\n  background: transparent !important;\n  border-left: 3px solid var(--recurly-yellow) !important;\n  padding-left: 17px !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Expanded content pane — clean white */\n.rm-APIResponseSchemaPicker [class*=\"AccordionContent\"] {\n  background: #fff !important;\n  border-top: 1px solid var(--recurly-darkgray) !important;\n}\n\n/* Status label text (\"200\", \"404\") — always white on dark bg */\n[class*=\"APIResponseSchemaPicker-label\"] {\n  color: #fff !important;\n  font-weight: 600 !important;\n}\n\n/* Description text — warm secondary gray */\n[class*=\"APIResponseSchemaPicker-description\"],\n[class*=\"APIResponseSchemaPicker-description\"] p {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-gray) !important;\n}\n\n/* Chevron default color — controlled by --Accordion-icon-color on parent */\n.rm-APIResponseSchemaPicker [class*=\"AccordionToggle-icon\"] {\n  color: var(--recurly-gray) !important;\n}\n\n/* ——— 3.7 — API Playground panel (right-hand column) ——— */\n\n.rm-Playground {\n  background: var(--recurly-offblack) !important;\n  border-left: 1px solid var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  color: var(--recurly-offwhite) !important;\n}\n\n[class*=\"Playground-section\"] {\n  border-bottom: 1px solid var(--recurly-darkgray) !important;\n  padding: 14px 16px !important;\n}\n\n.rm-Playground .rm-APISectionHeader {\n  border-bottom-color: var(--recurly-darkgray) !important;\n}\n\n.rm-Playground .rm-APISectionHeader [class*=\"APISectionHeader-heading\"] {\n  color: var(--recurly-lightgray) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n}\n\n/* 3.7.1 — Language picker */\n\n.rm-LanguageButton {\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-lightgray) !important;\n  background: transparent !important;\n  border: 0 !important;\n  padding: 5px 12px !important;\n  border-radius: 14px !important;\n  cursor: pointer !important;\n  transition: background 0.12s, color 0.12s !important;\n}\n\n.rm-LanguageButton:hover {\n  background: transparent !important;\n  color: var(--recurly-yellow) !important;\n}\n\n.rm-LanguageButton_active,\n.rm-LanguageButton[aria-pressed=\"true\"] {\n  background: var(--recurly-yellow) !important;\n  color: var(--recurly-offblack) !important;\n  cursor: default !important;\n}\n\n/* 3.7.2 — Credentials / Auth inputs */\n\n.rm-APIAuth [class*=\"InputGroup-input\"] {\n  background: rgba(255, 253, 242, 0.06) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n}\n\n.rm-APIAuth [class*=\"InputGroup-input\"]::placeholder {\n  color: var(--recurly-gray) !important;\n}\n\n.rm-APIAuth [class*=\"InputGroup-input\"]:focus {\n  border-color: var(--recurly-yellow) !important;\n  outline: none !important;\n}\n\n.rm-APIAuth [class*=\"InputGroup-button\"] {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-lightgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n}\n\n/* 3.7.3 — URL bar */\n\n.ServerVars [class*=\"InputGroup-button\"] {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-lightgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n}\n\n.ServerVars [class*=\"ServerVars-url\"] {\n  background: rgba(255, 253, 242, 0.06) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 12px !important;\n}\n\n/* 3.7.4 — Request code block */\n\n.rm-PlaygroundRequest [class*=\"APIRequest-header\"] {\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-lightgray) !important;\n  letter-spacing: 0.3px !important;\n  text-transform: uppercase !important;\n}\n\n.rm-PlaygroundRequest .CodeSnippet,\n.rm-PlaygroundRequest [class*=\"CodeSnippet\"] {\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 8px !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 12px !important;\n}\n\n.rm-PlaygroundRequest .CodeMirror {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 12px !important;\n  line-height: 1.55 !important;\n}\n\n.rm-PlaygroundRequest .CodeMirror .cm-builtin  { color: var(--recurly-yellow) !important; }\n.rm-PlaygroundRequest .CodeMirror .cm-attribute { color: var(--recurly-tangerine) !important; }\n.rm-PlaygroundRequest .CodeMirror .cm-string    { color: var(--recurly-green) !important; }\n\n[class*=\"APIRequest-footer\"] {\n  border-top: 1px solid var(--recurly-darkgray) !important;\n  padding: 10px 14px !important;\n}\n\n/* 3.7.5 — Try It! button */\n\n.rm-TryIt {\n  background: var(--recurly-yellow) !important;\n  color: var(--recurly-offblack) !important;\n  font-family: var(--recurly-font) !important;\n  font-weight: 700 !important;\n  font-size: 13px !important;\n  border-radius: 8px !important;\n  border: 0 !important;\n  padding: 8px 18px !important;\n  cursor: pointer !important;\n  transition: background 0.12s !important;\n}\n\n.rm-TryIt:hover {\n  background: var(--recurly-tangerine) !important;\n}\n\n/* 3.7.6 — Response panel */\n\n.rm-PlaygroundResponse {\n  background: var(--recurly-offblack) !important;\n  font-family: var(--recurly-font) !important;\n}\n\n[class*=\"APIResponse-header\"] {\n  border-bottom: 1px solid var(--recurly-darkgray) !important;\n  padding: 10px 14px !important;\n}\n\n[class*=\"APIResponse-header-title\"] {\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-lightgray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.3px !important;\n}\n\n[class*=\"APIResponse-empty-prompt\"] {\n  color: var(--recurly-gray) !important;\n  font-size: 13px !important;\n  line-height: 1.6 !important;\n}\n\n[class*=\"APIResponse-empty-tryit\"] {\n  color: var(--recurly-yellow) !important;\n  background: rgba(255, 215, 6, 0.12) !important;\n  padding: 1px 6px !important;\n  border-radius: 4px !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n}\n\n[class*=\"APIResponse-empty-examples-header\"] {\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-lightgray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.4px !important;\n}\n\n[class*=\"APIResponse-empty-examples-button\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  background: rgba(255, 253, 242, 0.06) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-lightgray) !important;\n  border-radius: 6px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"APIResponse-empty-examples-button\"]:hover {\n  background: var(--recurly-yellow) !important;\n  border-color: var(--recurly-yellow) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n/* 3.7.7 — API Logs Table + footer */\n\n/* Table container */\n.rm-APILogsTable {\n  font-family: var(--recurly-font) !important;\n  border-radius: 10px !important;\n  overflow: hidden !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  /* No background here — table and footer handle their own backgrounds */\n}\n\n/* The actual \u003ctable> — must be full-width to match the footer */\n.rm-APILogsTable table {\n  width: 100% !important;\n  table-layout: fixed !important;\n  border-collapse: collapse !important;\n  border: 0 !important;\n}\n\n/* Header row — offblack */\n.rm-APILogsTable thead tr {\n  background: var(--recurly-offblack) !important;\n}\n\n.rm-APILogsTable thead th {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offwhite) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.6px !important;\n  background: var(--recurly-offblack) !important;\n  padding: 10px 16px !important;\n  border: 0 !important;\n  text-align: left !important;\n}\n\n/* Body rows */\n.rm-APILogsTable tbody td {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-darkgray) !important;\n  background: #fff !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n}\n\n/* Empty state */\n[class*=\"APILogsTable_empty\"],\n[class*=\"LogsTable_empty\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-gray) !important;\n  padding: 28px 16px !important;\n  text-align: center !important;\n}\n\n/* Footer — offblack to match the Playground panel */\n.rm-APILogInfo,\n[class*=\"APILogsTable-footer\"] {\n  background: var(--recurly-offblack) !important;\n  border-top: 1px solid var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  padding: 10px 16px !important;\n}\n\n[class*=\"APILogInfo-requests-count\"] {\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n}\n\n/* \"See All Requests →\" button — ghost white, yellow pill on hover */\n.rm-APILogInfo .Button {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.3px !important;\n  color: var(--recurly-offwhite) !important;\n  background: transparent !important;\n  border: 1px solid var(--recurly-gray) !important;\n  border-radius: 20px !important;\n  padding: 6px 16px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n.rm-APILogInfo .Button:hover {\n  background: var(--recurly-yellow) !important;\n  border-color: var(--recurly-yellow) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n\n/* ============================================================\n   PART 4 — Sidebar navigation\n   ============================================================ */\n\n#hub-sidebar,\n#reference-sidebar,\n.rm-Sidebar {\n  font-family: var(--recurly-font) !important;\n  background: #fff !important;\n}\n\n.rm-Sidebar .rm-Sidebar-heading,\n#hub-sidebar .rm-Sidebar-heading,\n#reference-sidebar .rm-Sidebar-heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 800 !important;\n  color: var(--recurly-gray) !important;\n  letter-spacing: 0.8px !important;\n  text-transform: uppercase !important;\n  padding: 20px 16px 6px !important;\n  margin: 0 !important;\n  border-bottom: 0 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-list,\n#hub-sidebar .rm-Sidebar-list,\n#reference-sidebar .rm-Sidebar-list {\n  list-style: none !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link,\n#hub-sidebar .rm-Sidebar-link,\n#reference-sidebar .rm-Sidebar-link {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  font-weight: 500 !important;\n  color: var(--recurly-offblack) !important;\n  text-decoration: none !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: space-between !important;\n  padding: 7px 16px !important;\n  transition: background 0.12s, color 0.12s !important;\n  line-height: 1.4 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link:hover,\n#hub-sidebar .rm-Sidebar-link:hover,\n#reference-sidebar .rm-Sidebar-link:hover {\n  color: var(--recurly-offblack) !important;\n  background: rgba(13, 13, 11, 0.05) !important;\n  text-decoration: none !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.active,\n.rm-Sidebar .rm-Sidebar-link[aria-current=\"page\"],\n#hub-sidebar .rm-Sidebar-link.active,\n#hub-sidebar .rm-Sidebar-link[aria-current=\"page\"],\n#reference-sidebar .rm-Sidebar-link.active,\n#reference-sidebar .rm-Sidebar-link[aria-current=\"page\"] {\n  color: var(--recurly-offblack) !important;\n  font-weight: 700 !important;\n  background: rgba(255, 215, 6, 0.20) !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.Sidebar-link_parent,\n#hub-sidebar .rm-Sidebar-link.Sidebar-link_parent,\n#reference-sidebar .rm-Sidebar-link.Sidebar-link_parent {\n  font-weight: 600 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.Sidebar-link_hidden,\n#hub-sidebar .rm-Sidebar-link.Sidebar-link_hidden,\n#reference-sidebar .rm-Sidebar-link.Sidebar-link_hidden {\n  opacity: 0.45 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.Sidebar-link_hidden:hover,\n#hub-sidebar .rm-Sidebar-link.Sidebar-link_hidden:hover,\n#reference-sidebar .rm-Sidebar-link.Sidebar-link_hidden:hover {\n  opacity: 0.7 !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.subpage,\n#hub-sidebar .rm-Sidebar-link.subpage,\n#reference-sidebar .rm-Sidebar-link.subpage {\n  font-size: 12.5px !important;\n  font-weight: 400 !important;\n  color: var(--recurly-offblack) !important;\n  padding-left: 28px !important;\n  align-items: flex-start !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.subpage:hover,\n#hub-sidebar .rm-Sidebar-link.subpage:hover,\n#reference-sidebar .rm-Sidebar-link.subpage:hover {\n  color: var(--recurly-offblack) !important;\n  background: rgba(13, 13, 11, 0.04) !important;\n}\n\n.rm-Sidebar .rm-Sidebar-link.subpage.active,\n.rm-Sidebar .rm-Sidebar-link.subpage[aria-current=\"page\"],\n#hub-sidebar .rm-Sidebar-link.subpage.active,\n#hub-sidebar .rm-Sidebar-link.subpage[aria-current=\"page\"],\n#reference-sidebar .rm-Sidebar-link.subpage.active,\n#reference-sidebar .rm-Sidebar-link.subpage[aria-current=\"page\"] {\n  color: var(--recurly-offblack) !important;\n  font-weight: 700 !important;\n  background: rgba(255, 215, 6, 0.20) !important;\n}\n\n.rm-Sidebar .subpages .subpages .rm-Sidebar-link.subpage,\n#hub-sidebar .subpages .subpages .rm-Sidebar-link.subpage,\n#reference-sidebar .subpages .subpages .rm-Sidebar-link.subpage {\n  padding-left: 40px !important;\n}\n\n.rm-Sidebar .subpages .subpages .subpages .rm-Sidebar-link.subpage,\n#hub-sidebar .subpages .subpages .subpages .rm-Sidebar-link.subpage,\n#reference-sidebar .subpages .subpages .subpages .rm-Sidebar-link.subpage {\n  padding-left: 52px !important;\n}\n\n[class*=\"Sidebar-link-text_label\"] {\n  display: block !important;\n  overflow: hidden !important;\n  text-overflow: ellipsis !important;\n  font-size: inherit !important;\n  font-weight: inherit !important;\n  color: inherit !important;\n}\n\n.rm-Sidebar [class*=\"Sidebar-link-buttonWrapper\"],\n#hub-sidebar [class*=\"Sidebar-link-buttonWrapper\"],\n#reference-sidebar [class*=\"Sidebar-link-buttonWrapper\"] {\n  background: transparent !important;\n  border: 0 !important;\n  padding: 4px 6px !important;\n  color: var(--recurly-offblack) !important;\n  cursor: pointer !important;\n  flex-shrink: 0 !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  border-radius: 4px !important;\n  transition: background 0.12s, color 0.12s !important;\n}\n\n.rm-Sidebar [class*=\"Sidebar-link-buttonWrapper\"]:hover,\n#hub-sidebar [class*=\"Sidebar-link-buttonWrapper\"]:hover,\n#reference-sidebar [class*=\"Sidebar-link-buttonWrapper\"]:hover {\n  background: rgba(13, 13, 11, 0.06) !important;\n  color: var(--recurly-tangerine) !important;\n}\n\n[class*=\"Sidebar-link-expandIcon\"] {\n  font-size: 13px !important;\n  transition: transform 0.18s ease !important;\n  color: inherit !important;\n}\n\n[class*=\"Sidebar-link-buttonWrapper\"][aria-expanded=\"true\"] [class*=\"Sidebar-link-expandIcon\"],\n.subnav-expanded > .rm-Sidebar-link > [class*=\"Sidebar-link-buttonWrapper\"] [class*=\"Sidebar-link-expandIcon\"] {\n  transform: rotate(90deg) !important;\n  color: var(--recurly-tangerine) !important;\n}\n\n[class*=\"Sidebar-link-externalIcon\"] {\n  font-size: 10px !important;\n  color: var(--recurly-offblack) !important;\n}\n\n.rm-Sidebar-link:hover [class*=\"Sidebar-link-externalIcon\"] {\n  color: var(--recurly-tangerine) !important;\n}\n\n.rm-Sidebar .rm-Sidebar-section + .rm-Sidebar-section,\n#hub-sidebar .rm-Sidebar-section + .rm-Sidebar-section,\n#reference-sidebar .rm-Sidebar-section + .rm-Sidebar-section {\n  border-top: 1px solid var(--recurly-lightgray) !important;\n  margin-top: 4px !important;\n}\n\n[class*=\"Nav-toggle-collapse\"] {\n  color: var(--recurly-gray) !important;\n  background: transparent !important;\n  border: 0 !important;\n  transition: color 0.12s !important;\n}\n\n[class*=\"Nav-toggle-collapse\"]:hover {\n  color: var(--recurly-offblack) !important;\n}\n\n\n/* ============================================================\n   PART 5 — API Reference sidebar specifics\n   ============================================================ */\n\n[class*=\"QuickNav-button\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.6px !important;\n  color: var(--recurly-gray) !important;\n  background: transparent !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 8px !important;\n  padding: 6px 12px !important;\n  cursor: pointer !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  width: 100% !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"QuickNav-button\"]:hover {\n  background: rgba(13, 13, 11, 0.05) !important;\n  border-color: var(--recurly-offblack) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n[class*=\"KbdShortcut\"] {\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 10px !important;\n  color: var(--recurly-gray) !important;\n  background: rgba(13, 13, 11, 0.06) !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 4px !important;\n  padding: 1px 5px !important;\n}\n\n#reference-sidebar .rm-APIMethod,\n[class*=\"Sidebar-method\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 9px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.4px !important;\n  text-transform: uppercase !important;\n  padding: 2px 6px !important;\n  border-radius: 10px !important;\n  border: 0 !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  line-height: 1 !important;\n  flex-shrink: 0 !important;\n  margin-top: 2px !important;\n}\n\n[class*=\"Sidebar-link-pageIconCustom\"] {\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  width: 18px !important;\n  height: 18px !important;\n  flex-shrink: 0 !important;\n  color: var(--recurly-gray) !important;\n}\n\n.rm-Sidebar-link:hover [class*=\"Sidebar-link-pageIconCustom\"] {\n  color: var(--recurly-tangerine) !important;\n}\n\n.rm-Sidebar-link.active [class*=\"Sidebar-link-pageIconCustom\"],\n.rm-Sidebar-link[aria-current=\"page\"] [class*=\"Sidebar-link-pageIconCustom\"] {\n  color: var(--recurly-offblack) !important;\n}\n\n.rm-UserAvatar {\n  font-family: var(--recurly-font) !important;\n  font-size: 9px !important;\n  font-weight: 800 !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-yellow) !important;\n  border-radius: 50% !important;\n  width: 18px !important;\n  height: 18px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  flex-shrink: 0 !important;\n}\n\n\n/* ============================================================\n   PART 6 — QuickNav modal\n   ============================================================ */\n\n[class*=\"QuickNav-modal-search\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  color: var(--recurly-offblack) !important;\n  background: var(--recurly-offwhite) !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 8px !important;\n  padding: 10px 14px !important;\n  width: 100% !important;\n  outline: none !important;\n  transition: border-color 0.12s !important;\n}\n\n[class*=\"QuickNav-modal-search\"]:focus {\n  border-color: var(--recurly-offblack) !important;\n}\n\n[class*=\"QuickNav-modal-search\"]::placeholder {\n  color: var(--recurly-lightgray) !important;\n}\n\n[class*=\"QuickNav-content\"] {\n  font-family: var(--recurly-font) !important;\n}\n\n[class*=\"QuickNav-destination-section\"] {\n  list-style: none !important;\n  margin: 0 0 8px !important;\n  padding: 0 !important;\n}\n\n[class*=\"QuickNav-destination-section-heading\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 9px !important;\n  font-weight: 800 !important;\n  color: var(--recurly-lightgray) !important;\n  letter-spacing: 1px !important;\n  text-transform: uppercase !important;\n  padding: 14px 12px 6px !important;\n  list-style: none !important;\n}\n\n[class*=\"destination-item\"] {\n  list-style: none !important;\n}\n\n[class*=\"destination-item-anchor\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  font-weight: 400 !important;\n  color: var(--recurly-darkgray) !important;\n  text-decoration: none !important;\n  display: block !important;\n  padding: 6px 12px !important;\n  transition: background 0.1s, color 0.1s !important;\n}\n\n[class*=\"destination-item-anchor\"]:hover {\n  color: var(--recurly-offblack) !important;\n  background: rgba(13, 13, 11, 0.04) !important;\n  text-decoration: none !important;\n}\n\n[class*=\"destination-item-anchor\"].active,\n[class*=\"destination-item-anchor\"][aria-current=\"page\"] {\n  color: var(--recurly-offblack) !important;\n  font-weight: 700 !important;\n  background: rgba(255, 215, 6, 0.20) !important;\n}\n\n[class*=\"destination-item-anchor-row-container\"] {\n  display: flex !important;\n  align-items: flex-start !important;\n  justify-content: space-between !important;\n  gap: 8px !important;\n  font-size: inherit !important;\n  color: inherit !important;\n}\n\n[class*=\"destination-item-anchor-row-container-method\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 9px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.4px !important;\n  text-transform: uppercase !important;\n  padding: 2px 6px !important;\n  border-radius: 10px !important;\n  border: 0 !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  line-height: 1 !important;\n  flex-shrink: 0 !important;\n  margin-top: 2px !important;\n}\n\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_get    { color: var(--recurly-green) !important; }\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_post   { color: var(--recurly-tangerine) !important; }\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_put    { color: var(--recurly-yellow) !important; }\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_patch  { color: var(--recurly-teal) !important; }\n[class*=\"destination-item-anchor-row-container-method\"].APIMethod_del    { color: var(--recurly-vermillion) !important; }\n\n\n/* ============================================================\n   PART 7 — Changelog\n   ============================================================ */\n\n#recurly-changelog-header {\n  background: var(--recurly-offblack) !important;\n  border-radius: 12px !important;\n  padding: 32px 36px !important;\n  margin: 0 auto 28px auto !important;\n  max-width: 1080px !important;\n}\n\n#recurly-changelog-header h1 {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.5rem !important;\n  font-weight: 800 !important;\n  color: var(--recurly-yellow) !important;\n  margin: 0 0 12px !important;\n  padding: 0 !important;\n  border: 0 !important;\n}\n\n#recurly-changelog-header p {\n  font-family: var(--recurly-font) !important;\n  font-size: 15px !important;\n  color: var(--recurly-lightgray) !important;\n  line-height: 1.6 !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  background: transparent !important;\n  border: 0 !important;\n  border-radius: 0 !important;\n}\n\n#recurly-changelog-header .rss-line {\n  margin-top: 14px !important;\n  padding-top: 14px !important;\n  border-top: 1px solid var(--recurly-darkgray) !important;\n  font-size: 13px !important;\n  color: var(--recurly-lightgray) !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n}\n\n#recurly-changelog-header .rss-icon {\n  color: var(--recurly-yellow) !important;\n  font-size: 13px !important;\n  flex-shrink: 0 !important;\n  opacity: 0.9 !important;\n}\n\n#recurly-changelog-header .rss-copy {\n  background: transparent !important;\n  border: 0 !important;\n  padding: 0 !important;\n  font-family: inherit !important;\n  font-size: inherit !important;\n  font-weight: 700 !important;\n  color: var(--recurly-yellow) !important;\n  text-decoration: underline !important;\n  text-decoration-color: var(--recurly-yellow) !important;\n  text-underline-offset: 3px !important;\n  cursor: pointer !important;\n  transition: color 0.15s, text-decoration-color 0.15s !important;\n}\n\n#recurly-changelog-header .rss-copy:hover {\n  color: var(--recurly-tangerine) !important;\n  text-decoration-color: var(--recurly-tangerine) !important;\n}\n\n#recurly-changelog-header .rss-copy.rss-copied {\n  color: var(--recurly-yellow) !important;\n  text-decoration: none !important;\n}\n\nmain.rm-Changelog article,\nmain.rm-Changelog article.rm-Changelog-post {\n  background: #fff !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 10px !important;\n  padding: 22px 26px !important;\n  margin: 0 auto 16px !important;\n  max-width: 1080px !important;\n  width: 100% !important;\n  box-sizing: border-box !important;\n  overflow: hidden !important; /* clip any child spill so nothing escapes the card */\n}\n\n/* SuperHub layout fix — the post column is a flex/grid item, which defaults to\n   min-width:auto and refuses to shrink below its widest child (the table),\n   dragging the paragraphs out past the card. Force the whole content chain to\n   shrink to the card width and wrap. */\nmain.rm-Changelog .rm-Changelog-post,\nmain.rm-Changelog .ChangelogPage_list-post,\nmain.rm-Changelog [class*=\"ChangelogPost_text\"],\nmain.rm-Changelog [class*=\"ChangelogPost_text\"] > .markdown-body {\n  min-width: 0 !important;\n  max-width: 100% !important;\n  box-sizing: border-box !important;\n  overflow-wrap: anywhere !important;\n}\n\n.rm-Changelog [class*=\"ChangelogPost_title\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.1rem !important;\n  font-weight: 700 !important;\n  margin: 0 0 8px !important;\n  padding-bottom: 10px !important;\n  border-bottom: 2px solid var(--recurly-tangerine) !important;\n}\n\n.rm-Changelog [class*=\"ChangelogPost_title\"] a {\n  color: var(--recurly-offblack) !important;\n  text-decoration: none !important;\n  transition: color 0.15s !important;\n}\n\n.rm-Changelog [class*=\"ChangelogPost_title\"] a:hover {\n  color: var(--recurly-tangerine) !important;\n}\n\n.rm-Changelog .DateLine {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-gray) !important;\n  margin-bottom: 12px !important;\n}\n\n.rm-Changelog [class*=\"ChangelogPost_text\"] > .markdown-body > p:first-child,\n.rm-Changelog [class*=\"ChangelogPost_text\"] > p {\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.65 !important;\n  margin: 0 !important;\n}\n\n[class*=\"ChangelogPost_text\"] { overflow: hidden !important; }\n\n/* The card is wide to give the table room; keep the intro prose at a comfortable\n   reading measure so paragraphs don't stretch the full width. The table is a\n   sibling of these paragraphs, so it is unaffected and still spans the card. */\n[class*=\"ChangelogPost_text\"] > .markdown-body > p,\n[class*=\"ChangelogPost_text\"] > .markdown-body > h2 {\n  max-width: 880px !important;\n}\n\n[class*=\"ChangelogPost_text\"] .markdown-body p {\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.65 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .markdown-body a {\n  color: var(--recurly-tangerine) !important;\n  text-decoration: none !important;\n}\n\n[class*=\"ChangelogPost_text\"] .markdown-body a:hover {\n  text-decoration: underline !important;\n  text-decoration-color: var(--recurly-tangerine) !important;\n}\n\n[class*=\"ChangelogPost_text\"] .markdown-body h2,\n[class*=\"ChangelogPost_text\"] .markdown-body h2.heading {\n  font-family: var(--recurly-font) !important;\n  font-size: 1.05rem !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offblack) !important;\n  margin: 32px 0 12px !important;\n  padding-bottom: 8px !important;\n  border-bottom: 2px solid var(--recurly-yellow) !important;\n  background: transparent !important;\n  border-left: 0 !important;\n  border-right: 0 !important;\n  border-top: 0 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .heading-anchor-icon {\n  display: none !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table {\n  overflow-x: auto !important;\n  -webkit-overflow-scrolling: touch !important;\n  margin: 4px 0 24px !important;\n  border-radius: 8px !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  max-width: 100% !important;\n  width: 100% !important;\n}\n\n/* Fits the card on desktop (no scroll); on narrow screens the min-width kicks in\n   and the .rdmd-table scroll box gives the horizontal scroll bar. */\n[class*=\"ChangelogPost_text\"] .rdmd-table-inner {\n  min-width: 660px !important;\n  width: 100% !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table table {\n  width: 100% !important;\n  table-layout: fixed !important;\n  border-collapse: collapse !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  line-height: 1.5 !important;\n  border: 0 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table thead tr,\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th {\n  background: var(--recurly-offblack) !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th {\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  text-align: left !important;\n  padding: 10px 12px !important;\n  border: 0 !important;\n  white-space: normal !important;\n  line-height: 1.3 !important;\n  vertical-align: middle !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody tr,\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td {\n  background: #fff !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td {\n  color: var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  padding: 10px 12px !important;\n  vertical-align: top !important;\n  border: 0 !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  line-height: 1.55 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody tr:last-child td {\n  border-bottom: 0 !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:first-child {\n  white-space: nowrap !important;\n  color: var(--recurly-gray) !important;\n  font-size: 12px !important;\n  width: 72px !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(2) {\n  font-weight: 600 !important;\n  color: var(--recurly-offblack) !important;\n  width: 180px !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(3) {\n  white-space: nowrap !important;\n  width: 80px !important;\n  font-weight: 700 !important;\n  font-size: 11px !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.4px !important;\n  color: var(--recurly-gray) !important;\n}\n\n/* Potential Impact body values (Low / Med / High) stay on one line */\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(4) {\n  white-space: nowrap !important;\n}\n\n/* Description / Overview — widest column, slightly larger and less tight */\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(5) {\n  width: auto !important;\n  font-size: 14px !important;\n  line-height: 1.65 !important;\n}\n\n/* With table-layout:fixed the header row sets the columns. Fixed columns sum to\n   372px; Description (col 5) is left auto so it soaks up all remaining width,\n   making it by far the widest column on any screen. */\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(1) { width: 76px !important; }\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(2) { width: 100px !important; }\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(3) { width: 108px !important; }\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(4) { width: 88px !important; }\n[class*=\"ChangelogPost_text\"] .rdmd-table thead th:nth-child(5) { width: auto !important; }\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td a {\n  color: var(--recurly-tangerine) !important;\n  text-decoration: none !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td a:hover {\n  text-decoration: underline !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table tbody td code.rdmd-code {\n  background: var(--recurly-brightgray) !important;\n  color: var(--recurly-darkgray) !important;\n  font-size: 12px !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', monospace !important;\n  display: inline !important;\n}\n\n[class*=\"ChangelogPost_text\"] .rdmd-table .rdmd-code-copy {\n  display: none !important;\n}\n\n/* ── RSS instructions collapsible ───────────────────────── */\n\n#recurly-changelog-header .rss-instructions-wrap {\n  margin-top: 10px !important;\n}\n\n/* Toggle button — pill style, subtle border */\n#recurly-changelog-header .rss-instructions-toggle {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 7px !important;\n  background: transparent !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 20px !important;\n  padding: 5px 14px 5px 10px !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 600 !important;\n  color: var(--recurly-lightgray) !important;\n  cursor: pointer !important;\n  transition: border-color 0.15s, color 0.15s !important;\n  line-height: 1 !important;\n}\n\n#recurly-changelog-header .rss-instructions-toggle:hover {\n  border-color: var(--recurly-yellow) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Chevron rotates when open */\n#recurly-changelog-header .rss-chevron {\n  font-size: 10px !important;\n  transition: transform 0.2s ease !important;\n}\n\n#recurly-changelog-header .rss-instructions-open .rss-chevron {\n  transform: rotate(180deg) !important;\n}\n\n/* Body panel */\n#recurly-changelog-header .rss-instructions-body {\n  margin-top: 14px !important;\n  padding: 16px 18px !important;\n  background: rgba(255, 253, 242, 0.04) !important;\n  border-radius: 8px !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n}\n\n/* Paragraphs — override the broad header p rule */\n#recurly-changelog-header .rss-instructions-body p {\n  font-size: 13px !important;\n  color: var(--recurly-lightgray) !important;\n  line-height: 1.65 !important;\n  margin: 0 0 10px !important;\n  opacity: 1 !important;\n}\n\n#recurly-changelog-header .rss-instructions-body p:last-child {\n  margin-bottom: 0 !important;\n}\n\n/* Ordered list */\n#recurly-changelog-header .rss-instructions-body ol {\n  margin: 10px 0 12px 0 !important;\n  padding-left: 20px !important;\n  list-style: decimal !important;\n}\n\n#recurly-changelog-header .rss-instructions-body ol li {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  color: var(--recurly-lightgray) !important;\n  line-height: 1.65 !important;\n  margin-bottom: 6px !important;\n  opacity: 1 !important;\n}\n\n#recurly-changelog-header .rss-instructions-body ol li:last-child {\n  margin-bottom: 0 !important;\n}\n\n/* Strong inside body */\n#recurly-changelog-header .rss-instructions-body strong {\n  font-weight: 700 !important;\n  color: rgba(255, 253, 242, 0.92) !important;\n}\n\n/* Links (Feedly / Feeder) */\n#recurly-changelog-header .rss-instructions-body a {\n  color: var(--recurly-tangerine) !important;\n  text-decoration: none !important;\n  font-weight: 600 !important;\n}\n\n#recurly-changelog-header .rss-instructions-body a:hover {\n  text-decoration: underline !important;\n  text-decoration-color: var(--recurly-tangerine) !important;\n}\n\n/* Tip paragraph — yellow left-border callout */\n#recurly-changelog-header .rss-instructions-tip {\n  margin-top: 12px !important;\n  padding: 10px 12px !important;\n  background: rgba(255, 201, 0, 0.06) !important;\n  border-left: 3px solid var(--recurly-yellow) !important;\n  border-radius: 0 6px 6px 0 !important;\n  font-size: 12px !important;\n  color: var(--recurly-lightgray) !important;\n  display: flex !important;\n  gap: 8px !important;\n  align-items: flex-start !important;\n}\n\n#recurly-changelog-header .rss-instructions-tip i {\n  color: var(--recurly-yellow) !important;\n  font-size: 13px !important;\n  margin-top: 2px !important;\n  flex-shrink: 0 !important;\n}\n\n/* ── end RSS instructions collapsible ───────────────────── */\n\n@media (max-width: 640px) {\n  [class*=\"ChangelogPost_text\"] .rdmd-table tbody td:first-child,\n  [class*=\"ChangelogPost_text\"] .rdmd-table thead th:first-child {\n    display: none !important;\n  }\n  [class*=\"ChangelogPost_text\"] .rdmd-table tbody td:nth-child(2) {\n    width: 130px !important;\n  }\n}\n\n/* ============================================================\n   PART 8 — rm-ToC animated active indicator\n   ============================================================ */\n\n.rm-ToC {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  position: relative !important;\n}\n\n.rm-ToC::before {\n  background: var(--recurly-yellow) !important;\n  transition: top 0.2s ease, height 0.2s ease !important;\n}\n\n.rm-ToC .toc-list,\n.rm-ToC .toc-list ul {\n  list-style: none !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n/* ============================================================\n   RECURLY READMETHEME — V8.1\n   ============================================================\n   Drop-in stylesheet for ReadMe's theme CSS. Five layers:\n\n     PART 1 — Recurly brand design system (rp-* classes)\n     PART 2 — ReadMe native code-snippet overrides\n     PART 3 — ReadMe native MDX component branding\n     PART 4 — ReadMe native table branding\n     PART 5 — Version selector branding\n\n   V8.1 changelog:\n     - rp-plan pill: offblack bg + yellow text, premium badge treatment.\n     - rp-btn-ghost hover: solid yellow bg + offblack text.\n     - rp-h2, rp-h3 first-child: margin-top: 0.\n     - Card (MDX): solid yellow bg, offblack icons, inverts on hover.\n     - Accordion chevron: offblack weight 900 for contrast.\n     - Sidebar container: border-right removed.\n     - h2.heading: yellow underline removed (h1 only).\n     - Tables: border-collapse separate, corner-cell radius, :has(thead)\n       scope on rdmd-table to prevent rule collision with rp-* tables.\n   ============================================================ */\n\n\n/* ============================================================\n   Brand color tokens\n   ============================================================ */\n\n:root {\n  /* =====================================================================\n     RECURLY BRAND v2 — palette source of truth\n     Neutrals follow the Off Black tint scale (OB1–OB5).\n     Secondary = Blue; accents = Poppy / Teal / Green (semantic success).\n     Legacy accent + gray names below are retained as aliases so every\n     existing rule keeps resolving — the values are remapped to brand v2.\n     ===================================================================== */\n\n  /* Primary */\n  --recurly-yellow:      #FFD706;\n  --recurly-offblack:    #0D0D0B;\n\n  /* Secondary — Blue */\n  --recurly-blue:        #008CFF;\n  --recurly-blue-hover:  #0067BE;   /* B Shade 1 — available for hover states */\n\n  /* Accents — use sparingly */\n  --recurly-poppy:       #FF5126;   /* errors / negative data */\n  --recurly-teal:        #2DCECE;   /* occasional data-viz / method accent */\n  --recurly-green:       #5DC32E;   /* semantic success */\n\n  /* Neutrals — Off Black tint scale */\n  --recurly-ob1:         #FCFBF7;   /* card surfaces */\n  --recurly-ob2:         #F2F1EA;   /* page / content backgrounds */\n  --recurly-ob3:         #D1CFC4;   /* borders, inactive states */\n  --recurly-ob4:         #807D75;   /* tertiary text, dividers */\n  --recurly-ob5:         #32312D;   /* secondary text, dark UI */\n\n  /* Neutral aliases (legacy names → OB scale) */\n  --recurly-offwhite:    var(--recurly-ob1);\n  --recurly-brightgray:  var(--recurly-ob2);\n  --recurly-lightgray:   var(--recurly-ob3);\n  --recurly-gray:        var(--recurly-ob4);\n  --recurly-darkgray:    var(--recurly-ob5);\n\n  /* Legacy accent aliases (remapped to brand v2) */\n  --recurly-tangerine:   var(--recurly-blue);     /* was #FF8200 — links / interactive */\n  --recurly-vermillion:  var(--recurly-poppy);    /* was #FF5810 — errors / DELETE / 4xx-5xx */\n  --recurly-salmon:      var(--recurly-poppy);    /* was #FF9D88 — deprecated; usages migrated to Teal/Green */\n  --recurly-deepchar:    var(--recurly-offblack); /* was #232932 — retired bluish neutral */\n  --recurly-darknavy:    var(--recurly-offblack); /* was #343F4B — retired bluish neutral */\n\n  --recurly-font: 'Figtree', 'Segoe UI', system-ui, sans-serif;\n\n  /* Shorthand set — mirrors the --recurly-* tokens above */\n  --yellow:      var(--recurly-yellow);\n  --offblack:    var(--recurly-offblack);\n  --blue:        var(--recurly-blue);\n  --blue-hover:  var(--recurly-blue-hover);\n  --poppy:       var(--recurly-poppy);\n  --teal:        var(--recurly-teal);\n  --green:       var(--recurly-green);\n  --tangerine:   var(--recurly-tangerine);\n  --vermillion:  var(--recurly-vermillion);\n  --salmon:      var(--recurly-salmon);\n  --darkgray:    var(--recurly-darkgray);\n  --gray:        var(--recurly-gray);\n  --lightgray:   var(--recurly-lightgray);\n  --brightgray:  var(--recurly-brightgray);\n  --offwhite:    var(--recurly-offwhite);\n  --deepchar:    var(--recurly-deepchar);\n  --darknavy:    var(--recurly-darknavy);\n  --font:        var(--recurly-font);\n\n  /* ReadMe markdown font tokens → Figtree */\n  --rm-font-body:    var(--recurly-font);\n  --rm-font-heading: var(--recurly-font);\n  --markdown-font:   var(--recurly-font);\n  --font-family:     var(--recurly-font);\n}\n\n\n/* ============================================================\n   PART 1 — Recurly brand design system (rp-* classes)\n   ============================================================ */\n\n*, *::before, *::after { box-sizing: border-box; }\n\n  .rp-page {\n    font-family: var(--font);\n    color: var(--deepchar);\n    font-size: 15px;\n    line-height: 1.6;\n    max-width: 860px;\n  }\n\n  .rp-overview {\n    border-left: 4px solid var(--yellow);\n    background: var(--offwhite);\n    padding: 16px 22px;\n    border-radius: 0 8px 8px 0;\n    margin-bottom: 20px;\n    font-size: 15px;\n    color: var(--darkgray);\n  }\n\n  .rp-plan {\n    display: inline-block;\n    background: var(--offblack) !important;\n    color: var(--yellow) !important;\n    border: 0 !important;\n    font-size: 13px;\n    font-weight: 700;\n    padding: 6px 16px;\n    border-radius: 20px;\n    margin-bottom: 24px;\n    letter-spacing: 0.3px;\n  }\n\n  .rp-cost {\n    border-left: 4px solid var(--tangerine);\n    background: #FFF8F2;\n    padding: 14px 20px;\n    border-radius: 0 8px 8px 0;\n    margin-bottom: 20px;\n    font-size: 14px;\n    color: var(--darkgray);\n  }\n  .rp-cost a { color: var(--tangerine); }\n\n  .rp-definition {\n    background: var(--brightgray);\n    border-radius: 10px;\n    padding: 22px 26px;\n    margin-bottom: 28px;\n    font-size: 15px;\n    color: var(--darkgray);\n    line-height: 1.7;\n  }\n\n  .rp-benefits {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));\n    gap: 14px;\n    margin-bottom: 32px;\n  }\n  .rp-benefits.rp-benefits-2x2 { grid-template-columns: repeat(2, 1fr); }\n  .rp-benefit {\n    background: var(--offblack) !important;\n    color: var(--offwhite) !important;\n    border-radius: 10px;\n    padding: 20px;\n  }\n  .rp-benefit-icon { color: var(--yellow) !important; font-size: 20px; margin-bottom: 10px; }\n  .rp-benefit strong {\n    display: block; font-size: 14px; font-weight: 700;\n    margin-bottom: 6px; color: var(--offwhite) !important;\n  }\n  .rp-benefit span { font-size: 13px; color: var(--lightgray) !important; line-height: 1.5; }\n  .rp-benefit code,\n  .rp-benefit code.rdmd-code,\n  .rp-benefit .rdmd-code {\n    background: rgba(255, 253, 242, 0.10) !important;\n    color: var(--tangerine) !important;\n    border-radius: 4px !important;\n    padding: 1px 5px !important;\n    font-size: 0.92em !important;\n    box-shadow: none !important;\n  }\n  .rp-h1 {\n    font-size: 1.5rem !important; font-weight: 800 !important; color: var(--offblack) !important;\n    margin: 36px 0 14px; padding-bottom: 8px;\n    border-bottom: 2px solid var(--yellow) !important;\n  }\n  .rp-h2 { font-size: 1.1rem !important; font-weight: 700 !important; color: var(--offblack) !important; margin: 28px 0 10px; border-bottom: 0 !important; padding-bottom: 0 !important; text-decoration: none !important; }\n  .rp-h3 { font-size: 0.95rem !important; font-weight: 700 !important; color: var(--darkgray) !important; margin: 20px 0 8px; border-bottom: 0 !important; padding-bottom: 0 !important; text-decoration: none !important; }\n  .rp-h4 { font-size: 0.9rem !important; font-weight: 600 !important; color: var(--darkgray) !important; margin: 16px 0 6px; border-bottom: 0 !important; padding-bottom: 0 !important; text-decoration: none !important; }\n\n  .rp-h2:first-child { margin-top: 0 !important; }\n  .rp-h3:first-child { margin-top: 0 !important; }\n\n  .rp-card {\n    background: var(--offwhite);\n    border: 1px solid var(--lightgray);\n    border-radius: 10px;\n    padding: 22px 26px;\n    margin-bottom: 20px;\n    font-size: 14px;\n    color: var(--darkgray);\n    line-height: 1.65;\n  }\n\n  .rp-steps { display: flex; flex-direction: column; margin-bottom: 24px; }\n  .rp-step {\n    display: flex; gap: 16px; align-items: flex-start;\n    background: var(--offwhite); border: 1px solid var(--lightgray);\n    border-radius: 10px; padding: 18px 22px;\n    margin-bottom: 12px;\n  }\n  .rp-steps .rp-step { margin-bottom: 0; }\n  .rp-steps .rp-step + .rp-step { margin-top: 12px; }\n  .rp-step-num {\n    width: 34px; height: 34px; border-radius: 50%;\n    background: var(--offblack); color: var(--yellow);\n    font-weight: 800; font-size: 14px;\n    display: flex; align-items: center; justify-content: center; flex-shrink: 0;\n  }\n  .rp-step h4 { font-size: 0.95rem; font-weight: 700; color: var(--offblack); margin: 0 0 4px; }\n  .rp-step p  { font-size: 0.87rem; color: var(--gray); line-height: 1.6; margin: 0; }\n\n  /* Callout icons: Note fa-info-circle | Tip fa-lightbulb | Warning fa-exclamation-triangle | Important fa-exclamation-circle */\n  .rp-callout {\n    border-radius: 0 8px 8px 0; padding: 14px 18px; margin: 16px 0;\n    font-size: 14px;\n  }\n  .rp-callout strong { display: inline; }\n  .rp-callout strong:first-child { display: block; margin-bottom: 4px; }\n  .rp-callout-note      { border-left: 4px solid var(--offblack); background: var(--brightgray); color: var(--offblack); }\n  .rp-callout-tip       { border-left: 4px solid var(--green);    background: #EFFAEA;           color: var(--offblack); }\n  .rp-callout-warning   { border-left: 4px solid var(--yellow);   background: #FFFECB;           color: var(--offblack); }\n  .rp-callout-important { border-left: 4px solid var(--poppy);    background: #FFEEE9;           color: var(--offblack); }\n\n  /* rp-btn-* rules moved outside this scoped block — see Part 1.5 below */\n\n  /* border-collapse: separate allows border-radius on corner \u003ctd> cells.\n     :has(thead) scoping on rdmd-table (Part 4) prevents that rule from\n     overriding these with border-collapse: collapse !important. */\n  .rp-gw-table { width: 100%; border-collapse: separate !important; border-spacing: 0 !important; font-size: 14px; margin-bottom: 28px; border-radius: 10px !important; border: 1px solid var(--lightgray); }\n  .rp-gw-table tr.rp-thead-row td {\n    background: var(--offblack) !important;\n    color: var(--offwhite) !important;\n    font-weight: 700;\n    padding: 12px 16px;\n  }\n  .rp-gw-table tr.rp-thead-row td:first-child { color: var(--offwhite) !important; }\n  .rp-gw-table td { padding: 12px 16px; vertical-align: top; background: var(--offwhite) !important; }\n  .rp-gw-table tr:not(.rp-thead-row) td:first-child { font-weight: 600; color: var(--offblack); width: 35%; }\n  .rp-gw-table a { color: var(--tangerine); }\n  .rp-gw-table tr:first-child td:first-child { border-top-left-radius:    9px; }\n  .rp-gw-table tr:first-child td:last-child  { border-top-right-radius:   9px; }\n  .rp-gw-table tr:last-child  td:first-child { border-bottom-left-radius:  9px; }\n  .rp-gw-table tr:last-child  td:last-child  { border-bottom-right-radius: 9px; }\n\n  .rp-pm-table { width: 100%; border-collapse: separate !important; border-spacing: 0 !important; font-size: 13px; margin: 12px 0 24px; border-radius: 10px !important; border: 1px solid var(--lightgray); }\n  .rp-pm-table tr.rp-thead-row td {\n    background: var(--offblack) !important;\n    color: var(--offwhite) !important;\n    font-weight: 700;\n    padding: 10px 12px;\n  }\n  .rp-pm-table tr.rp-thead-row td:first-child { color: var(--offwhite) !important; }\n  .rp-pm-table td { padding: 10px 12px; border-bottom: 1px solid var(--lightgray); vertical-align: top; background: var(--offwhite) !important; }\n  .rp-pm-table tr:last-child td { border-bottom: 0 !important; }\n  .rp-pm-table tr:first-child td:first-child { border-top-left-radius:    9px; }\n  .rp-pm-table tr:first-child td:last-child  { border-top-right-radius:   9px; }\n  .rp-pm-table tr:last-child  td:first-child { border-bottom-left-radius:  9px; }\n  .rp-pm-table tr:last-child  td:last-child  { border-bottom-right-radius: 9px; }\n\n  .rp-params { width: 100%; border-collapse: separate !important; border-spacing: 0 !important; font-size: 14px; margin: 12px 0 24px; border-radius: 10px !important; border: 1px solid var(--lightgray); }\n  .rp-params tr.rp-thead-row td {\n    background: var(--offblack) !important;\n    color: var(--offwhite) !important;\n    font-weight: 700;\n    padding: 10px 14px;\n  }\n  .rp-params tr.rp-thead-row td:first-child { color: var(--offwhite) !important; }\n  .rp-params td { padding: 10px 14px; border-bottom: 1px solid var(--lightgray); vertical-align: top; background: var(--offwhite) !important; }\n  .rp-params tr:last-child td { border-bottom: 0 !important; }\n  .rp-params tr:not(.rp-thead-row) td:first-child { font-weight: 600; color: var(--offblack); width: 28%; }\n  .rp-params tr:first-child td:first-child { border-top-left-radius:    9px; }\n  .rp-params tr:first-child td:last-child  { border-top-right-radius:   9px; }\n  .rp-params tr:last-child  td:first-child { border-bottom-left-radius:  9px; }\n  .rp-params tr:last-child  td:last-child  { border-bottom-right-radius: 9px; }\n\n  .rp-btn-download {\n    display: inline-flex !important; align-items: center !important; gap: 8px !important;\n    background: var(--yellow) !important; color: var(--offblack) !important;\n    font-family: var(--font) !important; font-size: 14px !important; font-weight: 700 !important;\n    padding: 10px 22px !important; border-radius: 8px !important; text-decoration: none !important;\n    margin-bottom: 20px !important; border: 0 !important; cursor: pointer !important;\n    transition: filter 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease !important;\n  }\n  .rp-btn-download:hover {\n    filter: brightness(0.92) !important;\n    transform: translateY(-1px) !important;\n    box-shadow: 0 4px 12px rgba(255, 215, 6, 0.25) !important;\n  }\n  .rp-btn-download:active {\n    transform: scale(0.97) translateY(0) !important;\n    box-shadow: 0 1px 4px rgba(255, 215, 6, 0.15) !important;\n    filter: brightness(0.85) !important;\n  }\n\n  .rp-list {\n    background: var(--offwhite); border: 1px solid var(--lightgray);\n    border-radius: 10px; padding: 16px 22px 16px 38px;\n    margin-bottom: 20px; font-size: 14px; color: var(--darkgray); line-height: 1.7;\n  }\n\n  .rp-video { position: relative; padding-top: 56.25%; margin-bottom: 28px;\n              border-radius: 10px; overflow: hidden; }\n  .rp-video iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; }\n\n  /* ── IFRAME SIZING ───────────────────────────────────────────\n     The project-specific CSS applies a blanket iframe height for\n     non-video contexts. These two rules ensure that iframes inside\n     a padding-top aspect-ratio wrapper (Wistia embeds) always fill\n     the container correctly, regardless of that blanket rule.\n     The :not selector excludes video embeds from the blanket rule;\n     the child selector restores correct sizing inside wrappers.\n     ──────────────────────────────────────────────────────────── */\n  iframe:not([style*=\"position: absolute\"]):not([style*=\"position:absolute\"]) {\n    width: 100%;\n    height: 450px;\n  }\n\n  [style*=\"padding-top\"] > iframe,\n  [style*=\"paddingTop\"] > iframe {\n    position: absolute !important;\n    top: 0 !important;\n    left: 0 !important;\n    width: 100% !important;\n    height: 100% !important;\n    border: none !important;\n  }\n\n  /* ── NATIVE IMAGE COMPONENT — ALIGNMENT ─────────────────────\n     ReadMe's \u003cImage align=\"center\"> renders as:\n       span.img.img-align-center\n         span.lightbox-inner\n           img.img\n     The span is display:block by default; margin:auto handles centering.\n     text-align:center covers inline-block fallback contexts.\n     ──────────────────────────────────────────────────────────── */\n  .img.img-align-center,\n  span.img.img-align-center {\n    display: block !important;\n    margin-left: auto !important;\n    margin-right: auto !important;\n    text-align: center !important;\n  }\n\n  /* ── IMAGE LIGHTBOX ─────────────────────────────────────────\n     ReadMe renders our \u003ca class=\"rp-zoom-label\">\u003cimg> as:\n       span.img.lightbox.closed\n         span.lightbox-inner\n           img.img[width=\"auto\"][height=\"auto\"]\n     When clicked, ReadMe's native JS opens its own lightbox.\n     We style the inline image only — sizing, border, hover.\n     The open-state lightbox is left to ReadMe's native behavior.\n\n     IMPORTANT: rp-zoom-label anchors must NEVER have target=\"_blank\".\n     When target=\"_blank\" is present, ReadMe skips lightbox conversion\n     and renders a real \u003ca> that opens/downloads the image in a new tab.\n     Keep the \u003ca> as a plain href with no target attribute.\n     ──────────────────────────────────────────────────────── */\n  .rp-zoom { display: contents; }\n  .rp-zoom-label { display: block; }\n\n  /* Defensive rule: if the anchor survives as a real \u003ca> (lightbox\n     conversion skipped), block navigation so the image isn't downloaded. */\n  a.rp-zoom-label {\n    pointer-events: none !important;\n  }\n  a.rp-zoom-label .img.lightbox,\n  a.rp-zoom-label span.img {\n    pointer-events: auto !important;\n    cursor: zoom-in !important;\n  }\n\n  /* Hide the legacy :target overlay anchor — still present in page MDX\n     but no longer needed now that ReadMe's native lightbox handles clicks */\n  .rp-zoom-overlay { display: none !important; }\n\n  /* Outermost wrapper — controls width and centering */\n  .rp-zoom-label .img.lightbox,\n  .rp-zoom-label span.img {\n    display: block !important;\n    width: 90% !important;\n    max-width: 860px !important;\n    margin: 16px auto !important;\n    cursor: zoom-in !important;\n  }\n  /* Inner span */\n  .rp-zoom-label .lightbox-inner {\n    display: block !important;\n    width: 100% !important;\n  }\n  /* The actual image — box-shadow for border (immune to border:none resets) */\n  .rp-zoom-label .lightbox-inner img,\n  .rp-zoom-label img.img,\n  .rp-zoom-img {\n    display: block !important;\n    width: 100% !important;\n    height: auto !important;\n    max-width: 100% !important;\n    border-radius: 8px !important;\n    box-shadow: 0 0 0 1px #D1CFC4 !important;\n    transition: opacity 0.15s ease;\n    box-sizing: border-box !important;\n  }\n  .rp-zoom-label:hover .lightbox-inner img,\n  .rp-zoom-label:hover img.img { opacity: 0.88; }\n\n  /* Small images — add class=\"rp-zoom-small\" directly on the \u003ca class=\"rp-zoom-label\"> */\n  /* The \u003cdiv class=\"rp-zoom-small\"> wrapper approach fails: ReadMe's MDX parser strips\n     block-level elements (div) from inline/paragraph contexts before the DOM is built,\n     so the div never renders and no descendant selectors fire.\n     Solution: apply rp-zoom-small as an additional class on the \u003ca> anchor itself.\n     Scope to .img.lightbox.closed (not .open) — ReadMe toggles closed→open on click,\n     not removes the class. The open lightbox renders in a separate fixed full-screen\n     overlay so the anchor width cap must not apply when open. */\n  a.rp-zoom-label.rp-zoom-small {\n    display: block !important;\n    max-width: 320px !important;\n    width: 320px !important;\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  a.rp-zoom-label.rp-zoom-small .img.lightbox.closed,\n  a.rp-zoom-label.rp-zoom-small span.img.closed {\n    max-width: 320px !important;\n    width: 320px !important;\n  }\n\n  /* When open: release all size constraints so the full-screen overlay renders naturally */\n  a.rp-zoom-label.rp-zoom-small .img.lightbox.open,\n  a.rp-zoom-label.rp-zoom-small span.img.open {\n    max-width: none !important;\n    width: 90% !important;\n  }\n\n  .rp-toc {\n    display: flex; flex-wrap: wrap; gap: 8px;\n    margin: 0 0 32px;\n  }\n  .rp-toc-pill {\n    display: inline-flex; align-items: center; gap: 8px;\n    padding: 8px 18px 8px 10px; border-radius: 20px;\n    border: 1px solid var(--offblack) !important; background: var(--offblack) !important;\n    color: var(--offwhite) !important; text-decoration: none !important;\n    font-size: 13px; font-weight: 700;\n    white-space: nowrap;\n    transition: background 0.15s, border-color 0.15s, color 0.15s;\n  }\n  .rp-toc-pill:hover {\n    background: var(--tangerine) !important;\n    border-color: var(--tangerine) !important;\n    color: var(--offblack) !important;\n  }\n  .rp-toc-num {\n    display: inline-flex; align-items: center; justify-content: center;\n    width: 24px; height: 24px; border-radius: 50%;\n    background: var(--yellow) !important; color: var(--offblack) !important;\n    font-size: 11px; font-weight: 800; flex-shrink: 0;\n    text-decoration: none !important;\n  }\n\n  .rp-anchor {\n    color: inherit !important;\n    text-decoration: none !important;\n    font-size: inherit !important;\n    font-weight: inherit !important;\n    border-bottom: 0 !important;\n  }\n  .rp-anchor::after {\n    content: \" #\"; opacity: 0;\n    color: var(--lightgray); font-weight: 400; font-size: 0.75em;\n    transition: opacity 0.15s;\n  }\n  .rp-anchor:hover::after { opacity: 1; }\n\n  .rp-page ol:not(.rp-list), .rp-page ul:not(.rp-list) {\n    margin: 8px 0 16px;\n    padding-left: 24px;\n  }\n  .rp-page ol:not(.rp-list) li, .rp-page ul:not(.rp-list) li {\n    margin-bottom: 6px;\n    line-height: 1.6;\n  }\n\n  @media (max-width: 640px) {\n    .rp-benefits,\n    .rp-benefits.rp-benefits-2x2 { grid-template-columns: 1fr; }\n    .rp-h1 { font-size: 1.25rem; }\n  }\n\n\n/* ============================================================\n   PART 1.5 — rp-btn-* navigation buttons\n   ============================================================\n   Placed OUTSIDE the scoped :root theme block so these rules\n   run at top-level specificity. Scoped under .rm-Markdown to\n   beat ReadMe's own .rm-Markdown.markdown-body a rules which\n   apply tangerine color, border-radius-full, and borders to\n   all \u003ca> elements.\n\n   Every variant is self-contained (single class). ReadMe's MDX\n   parser mangles space-separated multi-class strings on \u003ca>\n   elements into comma-separated values — \"rp-btn rp-btn-primary\"\n   becomes the literal class \"rp-btn,rp-btn-primary\" which matches\n   nothing. Single class only, always.\n\n   Token values are hardcoded here (not var()) because these rules\n   sit outside the :root scoped block where the shorthand tokens\n   (--yellow, --offblack, etc.) are defined.\n   ============================================================ */\n\n.rm-Markdown.markdown-body a.rp-btn-primary,\n.rm-Markdown.markdown-body .rp-btn-primary {\n  display: inline-block !important;\n  padding: 10px 22px !important;\n  border-radius: 8px !important;\n  border: 0 !important;\n  box-shadow: none !important;\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  font-family: var(--recurly-font) !important;\n  text-decoration: none !important;\n  cursor: pointer !important;\n  margin: 6px 8px 6px 0 !important;\n  background: #0D0D0B !important;\n  color: #FFD706 !important;\n  transition: all 0.15s ease !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-primary:hover,\n.rm-Markdown.markdown-body .rp-btn-primary:hover {\n  background: #32312D !important;\n  color: #FFD706 !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 4px 12px rgba(13, 13, 11, 0.15) !important;\n}\n\n.rm-Markdown.markdown-body a.rp-btn-secondary,\n.rm-Markdown.markdown-body .rp-btn-secondary {\n  display: inline-block !important;\n  padding: 10px 22px !important;\n  border-radius: 8px !important;\n  border: 0 !important;\n  box-shadow: none !important;\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  font-family: var(--recurly-font) !important;\n  text-decoration: none !important;\n  cursor: pointer !important;\n  margin: 6px 8px 6px 0 !important;\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  transition: all 0.15s ease !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-secondary:hover,\n.rm-Markdown.markdown-body .rp-btn-secondary:hover {\n  filter: brightness(0.9) !important;\n  color: #0D0D0B !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 4px 12px rgba(255, 215, 6, 0.2) !important;\n}\n\n.rm-Markdown.markdown-body a.rp-btn-ghost,\n.rm-Markdown.markdown-body .rp-btn-ghost {\n  display: inline-block !important;\n  padding: 10px 22px !important;\n  border-radius: 8px !important;\n  border: 1px solid #D1CFC4 !important;\n  box-shadow: none !important;\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  font-family: var(--recurly-font) !important;\n  text-decoration: none !important;\n  cursor: pointer !important;\n  margin: 6px 8px 6px 0 !important;\n  background: transparent !important;\n  color: #32312D !important;\n  transition: all 0.15s ease !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-ghost:hover,\n.rm-Markdown.markdown-body .rp-btn-ghost:hover {\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  border-color: #FFD706 !important;\n}\n\n.rm-Markdown.markdown-body a.rp-btn-download,\n.rm-Markdown.markdown-body .rp-btn-download {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  padding: 10px 22px !important;\n  border-radius: 8px !important;\n  border: 0 !important;\n  box-shadow: none !important;\n  font-weight: 700 !important;\n  font-size: 14px !important;\n  font-family: var(--recurly-font) !important;\n  text-decoration: none !important;\n  cursor: pointer !important;\n  margin-bottom: 20px !important;\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  transition: filter 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-download:hover,\n.rm-Markdown.markdown-body .rp-btn-download:hover {\n  filter: brightness(0.92) !important;\n  color: #0D0D0B !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 4px 12px rgba(255, 215, 6, 0.25) !important;\n}\n.rm-Markdown.markdown-body a.rp-btn-download:active,\n.rm-Markdown.markdown-body .rp-btn-download:active {\n  transform: scale(0.97) translateY(0) !important;\n  box-shadow: 0 1px 4px rgba(255, 215, 6, 0.15) !important;\n  filter: brightness(0.85) !important;\n}\n\n/* ——— Collapse \u003cp> wrapper margin around button anchors ———\n   ReadMe wraps standalone \u003ca> elements in a \u003cp> tag which carries\n   margin-bottom: 15px from the markdown body styles. Zero it out\n   when the paragraph contains only a button anchor. */\n.rm-Markdown.markdown-body p:has(> a.rp-btn-primary),\n.rm-Markdown.markdown-body p:has(> a.rp-btn-secondary),\n.rm-Markdown.markdown-body p:has(> a.rp-btn-ghost),\n.rm-Markdown.markdown-body p:has(> a.rp-btn-download) {\n  margin-bottom: 0 !important;\n  margin-top: 0 !important;\n}\n\n\n/* ============================================================\n   PART 1.6 — rp-shelf-* spotlight carousel\n   ============================================================\n   Interactive category shelf used on browsable overview pages\n   (e.g., \"More uses\"). Three variants:\n\n     .rp-shelf-single    → 1 card, centered. No carousel.\n     .rp-shelf-pair      → 2 cards, both fully lit. No carousel.\n     .rp-shelf-carousel  → 3+ cards, infinite loop. Active card\n                           centered at 100% opacity, neighbors at\n                           30% opacity. Requires the companion\n                           rp-shelf init script in Custom JS.\n\n   Expected structure (rendered inside HTMLBlock):\n\n     \u003cdiv class=\"rp-shelf rp-shelf-carousel\">\n       \u003cdiv class=\"rp-shelf-header\">\n         \u003cdiv class=\"rp-shelf-label\">\u003ci class=\"fa-solid fa-*\">\u003c/i>Category\u003c/div>\n         \u003cdiv class=\"rp-shelf-count\">N scenarios\u003c/div>\n       \u003c/div>\n       \u003cdiv class=\"rp-shelf-viewport\">\n         \u003cdiv class=\"rp-shelf-track\">\n           \u003cdiv class=\"rp-shelf-card\">\n             \u003cstrong>Title\u003c/strong>\n             \u003cspan>Body copy.\u003c/span>\n           \u003c/div>\n           ...\n         \u003c/div>\n       \u003c/div>\n       \u003cdiv class=\"rp-shelf-controls\">\n         \u003cbutton class=\"rp-shelf-btn rp-shelf-prev\">...\u003c/button>\n         \u003cbutton class=\"rp-shelf-btn rp-shelf-next\">...\u003c/button>\n       \u003c/div>\n     \u003c/div>\n\n   Token values are hardcoded (not var()) because these rules\n   sit outside the :root scoped block where the shorthand tokens\n   (--yellow, --offblack, etc.) are defined — same pattern as\n   PART 1.5.\n   ============================================================ */\n\n/* ——— Outer container: dark hero panel with soft yellow glow ——— */\n.rp-shelf {\n  background: #0D0D0B;\n  border-radius: 16px;\n  padding: 24px 20px 20px;\n  margin-bottom: 20px;\n  box-shadow:\n    0 0 0 1px rgba(255, 215, 6, 0.10),\n    0 24px 60px -30px rgba(255, 215, 6, 0.20);\n}\n\n/* ——— Header: yellow pill label + muted count ——— */\n.rp-shelf-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin-bottom: 18px;\n}\n.rp-shelf-label {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  background: #FFD706;\n  color: #0D0D0B;\n  font-size: 13px;\n  font-weight: 700;\n  padding: 6px 16px;\n  border-radius: 20px;\n  letter-spacing: 0.3px;\n  font-family: var(--recurly-font);\n}\n.rp-shelf-count {\n  font-size: 11px;\n  color: rgba(252, 251, 247, 0.45);\n  letter-spacing: 1.2px;\n  text-transform: uppercase;\n  font-weight: 600;\n  font-family: var(--recurly-font);\n}\n\n/* ——— Viewport clips overflow; track holds the cards ——— */\n.rp-shelf-viewport {\n  overflow: hidden;\n}\n.rp-shelf-track {\n  display: flex;\n  gap: 14px;\n  will-change: transform;\n}\n\n/* ——— Cards: dimmed by default, spotlit when .rp-active ——— */\n.rp-shelf-card {\n  background: linear-gradient(135deg, #1C1B18 0%, #0D0D0B 100%);\n  border: 1px solid rgba(255, 215, 6, 0.15);\n  border-radius: 12px;\n  padding: 24px 26px;\n  min-height: 140px;\n  opacity: 0.3;\n  transform: scale(0.95);\n  transition:\n    opacity 0.5s ease,\n    transform 0.5s ease,\n    border-color 0.5s ease,\n    box-shadow 0.5s ease;\n}\n.rp-shelf-card strong {\n  display: block;\n  font-size: 15px;\n  font-weight: 700;\n  color: #FCFBF7;\n  margin-bottom: 10px;\n  font-family: var(--recurly-font);\n}\n.rp-shelf-card span {\n  display: block;\n  font-size: 13px;\n  color: rgba(252, 251, 247, 0.70);\n  line-height: 1.65;\n  font-family: var(--recurly-font);\n}\n.rp-shelf-card a {\n  color: #FFD706;\n  text-decoration: underline;\n}\n.rp-shelf-card.rp-active {\n  opacity: 1;\n  transform: scale(1);\n  border-color: rgba(255, 215, 6, 0.35);\n  box-shadow:\n    0 0 40px -10px rgba(255, 215, 6, 0.25),\n    0 0 0 1px rgba(255, 215, 6, 0.20);\n}\n\n/* ——— Carousel variant (3+ cards): 3 visible at a time ——— */\n.rp-shelf-carousel .rp-shelf-card {\n  flex: 0 0 calc((100% - 28px) / 3);\n}\n.rp-shelf-carousel .rp-shelf-track {\n  transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* ——— Static variants (1 or 2 cards): no carousel, all lit ——— */\n.rp-shelf-pair .rp-shelf-track,\n.rp-shelf-single .rp-shelf-track {\n  justify-content: center;\n}\n.rp-shelf-pair .rp-shelf-card {\n  flex: 0 0 calc((100% - 14px) / 2);\n}\n.rp-shelf-single .rp-shelf-card {\n  flex: 0 0 88%;\n}\n.rp-shelf-pair .rp-shelf-card,\n.rp-shelf-single .rp-shelf-card {\n  opacity: 1;\n  transform: none;\n  border-color: rgba(255, 215, 6, 0.30);\n}\n\n/* ——— Controls (rendered only in .rp-shelf-carousel) ——— */\n.rp-shelf-controls {\n  display: flex;\n  justify-content: center;\n  gap: 16px;\n  margin-top: 20px;\n}\n.rp-shelf-btn {\n  width: 44px !important;\n  height: 44px !important;\n  border-radius: 50% !important;\n  border: 1px solid rgba(255, 215, 6, 0.25) !important;\n  background: transparent !important;\n  color: #FFD706 !important;\n  font-size: 14px !important;\n  cursor: pointer !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  padding: 0 !important;\n  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;\n}\n.rp-shelf-btn:hover {\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  border-color: #FFD706 !important;\n  transform: translateY(-1px) !important;\n  box-shadow: 0 4px 20px rgba(255, 215, 6, 0.35) !important;\n}\n.rp-shelf-btn:active {\n  transform: translateY(0) !important;\n}\n.rp-shelf-btn:focus-visible {\n  outline: 2px solid #FFD706 !important;\n  outline-offset: 2px !important;\n}\n\n/* ——— Mobile: ~1 card visible, larger touch targets ——— */\n@media (max-width: 640px) {\n  .rp-shelf-carousel .rp-shelf-card { flex: 0 0 82%; }\n  .rp-shelf-pair .rp-shelf-card { flex: 0 0 88%; }\n  .rp-shelf-pair .rp-shelf-track {\n    overflow-x: auto;\n    justify-content: flex-start;\n    scroll-snap-type: x mandatory;\n    padding-bottom: 6px;\n  }\n  .rp-shelf-pair .rp-shelf-card {\n    scroll-snap-align: center;\n  }\n}\n\n\n/* ============================================================\n   PART 2 — ReadMe native code-snippet overrides\n   ============================================================ */\n\n.CodeTabs,\n.CodeTabs.theme-light,\n.CodeTabs.theme-dark,\n.CodeTabs.CodeTabs_initial {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 10px !important;\n  margin: 16px 0 24px !important;\n  overflow: hidden !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 13px !important;\n  line-height: 1.55 !important;\n}\n\n.CodeTabs-toolbar {\n  background: var(--recurly-offblack) !important;\n  border-bottom: 1px solid var(--recurly-darkgray) !important;\n  padding: 8px 14px !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 4px !important;\n  flex-wrap: wrap !important;\n}\n\n/* ── CodeTabs toolbar buttons ─────────────────────────────────\n   ReadMe's JS adds class=\"CodeTabs_active\" to the selected button.\n   DOM confirmed: \u003cbutton class=\"CodeTabs_active\">Language\u003c/button>\n   ──────────────────────────────────────────────────────────── */\n\n.CodeTabs { --color-tab-active: #FFD706; }\n\n/* Base — all buttons */\n.CodeTabs-toolbar button {\n  background: transparent !important;\n  border: 0 !important;\n  color: var(--recurly-lightgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  padding: 5px 12px !important;\n  border-radius: 14px !important;\n  cursor: pointer !important;\n  transition: background 0.12s, color 0.12s !important;\n}\n\n/* Hover — inactive tabs only */\n.CodeTabs-toolbar button:not(.CodeTabs_active):hover {\n  background: transparent !important;\n  color: #FFD706 !important;\n}\n\n/* Active tab — ReadMe adds class=\"CodeTabs_active\" on the selected button */\n.CodeTabs-toolbar button.CodeTabs_active {\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  border-radius: 14px !important;\n  cursor: default !important;\n  opacity: 1 !important;\n  pointer-events: none !important;\n}\n\n/* Single-language block — plain yellow text label, never a pill */\n.CodeTabs-toolbar:has(> button:only-child) > button {\n  background: transparent !important;\n  color: #FFD706 !important;\n  border-radius: 0 !important;\n  cursor: default !important;\n  pointer-events: none !important;\n  opacity: 1 !important;\n}\n\n\n.CodeTabs-inner {\n  background: var(--recurly-offblack) !important;\n  position: relative !important;\n}\n\n.CodeTabs-inner pre {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  margin: 0 !important;\n  padding: 16px 18px !important;\n  border: 0 !important;\n  border-radius: 0 !important;\n  overflow-x: auto !important;\n  position: relative !important;\n}\n\n.CodeTabs-inner pre code,\n.CodeTabs code.rdmd-code {\n  background: transparent !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: inherit !important;\n  font-size: inherit !important;\n  line-height: inherit !important;\n  padding: 0 !important;\n}\n\n.CodeTabs .rdmd-code-copy {\n  background: transparent !important;\n  border: 1px solid var(--recurly-gray) !important;\n  color: var(--recurly-lightgray) !important;\n  border-radius: 6px !important;\n  padding: 4px 10px !important;\n  cursor: pointer !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n.CodeTabs .rdmd-code-copy:hover,\n.CodeTabs .rdmd-code-copy:focus {\n  background: var(--recurly-tangerine) !important;\n  border-color: var(--recurly-tangerine) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n.CodeTabs .rdmd-code-copy.fa::before { color: inherit !important; }\n\npre > code.rdmd-code:not(.CodeTabs *) {\n  display: block !important;\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 10px !important;\n  margin: 16px 0 24px !important;\n  padding: 16px 18px !important;\n  overflow-x: auto !important;\n  font-family: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace !important;\n  font-size: 13px !important;\n  line-height: 1.55 !important;\n  white-space: pre !important;\n}\n\npre:has(> code.rdmd-code):not(.CodeTabs *) {\n  background: transparent !important;\n  border: 0 !important;\n  padding: 0 !important;\n  margin: 0 !important;\n}\n\n.CodeTabs code.rdmd-code .cm-s-neo,\n.CodeTabs code.rdmd-code .cm-s-neo span,\npre > code.rdmd-code .cm-s-neo,\npre > code.rdmd-code .cm-s-neo span { color: var(--recurly-offwhite) !important; }\n\n.CodeTabs code.rdmd-code .cm-s-neo .cm-keyword,\npre > code.rdmd-code .cm-s-neo .cm-keyword     { color: var(--recurly-yellow)     !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-def,\npre > code.rdmd-code .cm-s-neo .cm-def         { color: var(--recurly-tangerine)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-attribute,\npre > code.rdmd-code .cm-s-neo .cm-attribute   { color: var(--recurly-tangerine)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-string,\npre > code.rdmd-code .cm-s-neo .cm-string      { color: var(--recurly-green)      !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-string-2,\npre > code.rdmd-code .cm-s-neo .cm-string-2    { color: var(--recurly-green)      !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-number,\npre > code.rdmd-code .cm-s-neo .cm-number      { color: var(--recurly-vermillion) !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-comment,\npre > code.rdmd-code .cm-s-neo .cm-comment     { color: var(--recurly-gray)       !important; font-style: italic; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-meta,\npre > code.rdmd-code .cm-s-neo .cm-meta        { color: var(--recurly-tangerine)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-tag,\npre > code.rdmd-code .cm-s-neo .cm-tag         { color: var(--recurly-yellow)     !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-builtin,\npre > code.rdmd-code .cm-s-neo .cm-builtin     { color: var(--recurly-yellow)     !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-atom,\npre > code.rdmd-code .cm-s-neo .cm-atom        { color: var(--recurly-vermillion) !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-variable,\npre > code.rdmd-code .cm-s-neo .cm-variable    { color: var(--recurly-offwhite)   !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-variable-2,\npre > code.rdmd-code .cm-s-neo .cm-variable-2  { color: var(--recurly-offwhite)   !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-variable-3,\npre > code.rdmd-code .cm-s-neo .cm-variable-3  { color: var(--recurly-lightgray)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-property,\npre > code.rdmd-code .cm-s-neo .cm-property    { color: var(--recurly-lightgray)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-operator,\npre > code.rdmd-code .cm-s-neo .cm-operator    { color: var(--recurly-lightgray)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-punctuation,\npre > code.rdmd-code .cm-s-neo .cm-punctuation { color: var(--recurly-gray)       !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-bracket,\npre > code.rdmd-code .cm-s-neo .cm-bracket     { color: var(--recurly-lightgray)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-qualifier,\npre > code.rdmd-code .cm-s-neo .cm-qualifier   { color: var(--recurly-tangerine)  !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-link,\npre > code.rdmd-code .cm-s-neo .cm-link        { color: var(--recurly-yellow)     !important; text-decoration: underline !important; }\n.CodeTabs code.rdmd-code .cm-s-neo .cm-error,\npre > code.rdmd-code .cm-s-neo .cm-error       { color: var(--recurly-vermillion) !important; }\n\n\n/* ============================================================\n   PART 3 — ReadMe native MDX component branding\n   ============================================================ */\n\n.Accordion {\n  background: transparent !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 10px !important;\n  margin-bottom: 12px !important;\n  overflow: hidden !important;\n  font-family: var(--recurly-font) !important;\n}\n\n.Accordion-title {\n  list-style: none !important;\n  cursor: pointer !important;\n  padding: 16px 22px !important;\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-offblack) !important;\n  background: var(--recurly-yellow) !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 12px !important;\n  transition: background 0.15s, color 0.15s !important;\n}\n\n.Accordion-title::-webkit-details-marker { display: none !important; }\n.Accordion-title::marker { content: \"\" !important; }\n\n.Accordion-title:hover {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n}\n\n.Accordion[open] .Accordion-title {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n}\n\n.Accordion-toggleIcon {\n  color: var(--recurly-offblack) !important;\n  font-size: 13px !important;\n  font-weight: 900 !important;\n  transition: transform 0.2s, color 0.15s !important;\n  flex-shrink: 0 !important;\n  width: 14px !important;\n  text-align: center !important;\n}\n\n.Accordion-title:hover .Accordion-toggleIcon,\n.Accordion[open] .Accordion-title .Accordion-toggleIcon {\n  color: var(--recurly-yellow) !important;\n}\n\n.Accordion[open] .Accordion-toggleIcon {\n  transform: rotate(90deg) !important;\n}\n\n.Accordion-icon {\n  color: var(--recurly-offblack) !important;\n  --fa-primary-color: var(--recurly-offblack) !important;\n  --fa-secondary-color: var(--recurly-offblack) !important;\n  font-size: 15px !important;\n  flex-shrink: 0 !important;\n  width: 16px !important;\n  text-align: center !important;\n  transition: color 0.15s !important;\n}\n\n.Accordion-title:hover .Accordion-icon,\n.Accordion[open] .Accordion-title .Accordion-icon {\n  color: var(--recurly-yellow) !important;\n  --fa-primary-color: var(--recurly-yellow) !important;\n  --fa-secondary-color: var(--recurly-yellow) !important;\n}\n\n.Accordion-content {\n  padding: 16px 22px 18px 48px !important;\n  font-size: 14px !important;\n  line-height: 1.65 !important;\n  color: var(--recurly-darkgray) !important;\n}\n\n.Accordion-content p { margin: 0 0 10px !important; }\n.Accordion-content p:last-child { margin-bottom: 0 !important; }\n.Accordion-content a { color: var(--recurly-tangerine) !important; }\n.Accordion-content code {\n  background: var(--recurly-brightgray) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 0.92em !important;\n}\n\n.CardsGrid {\n  display: grid !important;\n  grid-template-columns: repeat(min(var(--CardsGrid-columns, 3), 3), minmax(var(--CardsGrid-cardWidth, 200px), 1fr)) !important;\n  gap: 14px !important;\n  margin: 16px 0 24px !important;\n}\n\n.Card,\n.Card.Card_card {\n  display: flex !important;\n  flex-direction: column !important;\n  gap: 14px !important;\n  background: var(--recurly-yellow) !important;\n  border: 0 !important;\n  border-radius: 10px !important;\n  padding: 20px !important;\n  text-decoration: none !important;\n  transition: background 0.15s, transform 0.15s, box-shadow 0.15s !important;\n  font-family: var(--recurly-font) !important;\n  color: var(--recurly-offblack) !important;\n}\n\n.Card:hover,\n.Card.Card_card:hover {\n  background: var(--recurly-offblack) !important;\n  transform: translateY(-2px) !important;\n  box-shadow: 0 6px 14px rgba(13, 13, 11, 0.20) !important;\n  text-decoration: none !important;\n}\n\n.Card-icon {\n  color: var(--recurly-offblack) !important;\n  font-size: 22px !important;\n  width: 22px !important;\n  height: 22px !important;\n  flex-shrink: 0 !important;\n  filter: none !important;\n}\n\n.Card:hover .Card-icon { color: var(--recurly-yellow) !important; }\n\n.Card-content { display: flex !important; flex-direction: column !important; gap: 6px !important; }\n\n.Card-title {\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-offblack) !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: space-between !important;\n  gap: 8px !important;\n  line-height: 1.3 !important;\n}\n\n.Card:hover .Card-title { color: var(--recurly-offwhite) !important; }\n\n.Card-arrow {\n  color: var(--recurly-offblack) !important;\n  font-size: 13px !important;\n  transition: transform 0.15s !important;\n  flex-shrink: 0 !important;\n}\n\n.Card:hover .Card-arrow { transform: translateX(3px) !important; color: var(--recurly-yellow) !important; }\n\n\n/* ── FA6 DUOTONE DOUBLING FIX ────────────────────────────────\n   ReadMe's Card component outputs fa-duotone + fa-solid together.\n   In FA6 Pro, fa-duotone switches the font-family to the Duotone\n   font which renders two pseudo-element layers — causing doubled\n   or incomplete icons when the two layers don't align.\n   Fix: force the FA6 Pro solid font-family on these combos so\n   the icon renders as a clean single-layer solid icon.\n   This overrides the font-family set by fa-duotone without\n   touching the pseudo-elements, preserving icon completeness.\n   ──────────────────────────────────────────────────────────── */\n.fa-duotone.fa-solid,\n.fad.fa-solid {\n  font-family: \"Font Awesome 6 Pro\" !important;\n  font-weight: 900 !important;\n}\n.fa-duotone.fa-solid::after,\n.fad.fa-solid::after {\n  display: none !important;\n}\n.fa-duotone.fa-solid::before,\n.fad.fa-solid::before {\n  position: static !important;\n  opacity: 1 !important;\n}\n\n.Card p,\n.Card-body,\n.Card-content,\n.Card-content p,\n.Card-content div,\n.Card > p,\n.Card > div:not(.Card-title):not(.Card-icon):not(.Card-arrow):not(.Card-content) {\n  margin: 0 !important;\n  font-size: 13px !important;\n  color: var(--recurly-darkgray) !important;\n  line-height: 1.55 !important;\n  font-family: var(--recurly-font) !important;\n}\n\n/* Card-title sits inside Card-content — restore its own color */\n.Card-content .Card-title {\n  color: var(--recurly-offblack) !important;\n  font-size: 15px !important;\n  font-weight: 700 !important;\n}\n\n.Card:hover p,\n.Card:hover .Card-body,\n.Card:hover .Card-content,\n.Card:hover .Card-content p,\n.Card:hover .Card-content div,\n.Card:hover > p,\n.Card:hover > div:not(.Card-title):not(.Card-icon):not(.Card-arrow):not(.Card-content) {\n  color: var(--recurly-lightgray) !important;\n}\n\n.Card:hover .Card-content .Card-title {\n  color: var(--recurly-offwhite) !important;\n}\n\n/* SDK split-pill cards — actual DOM:\n   \u003ca class=\"Card\"> \u003cdiv class=\"Card-content\"> \u003cdiv class=\"Card-title\">\n     Label \u003ci class=\"Card-arrow\">\u003c/i>\n   \u003c/div> \u003c/div> \u003c/a>\n   The yellow right block is a ::after pseudo-element on .Card so it's\n   independent of the DOM structure. The inline arrow \u003ci> is hidden;\n   the arrow visual comes from the ::after pseudo's content.\n   Hover: full inversion — yellow body, offblack arrow block.\n   rp-sdk-grid margin-top separates the grid from TOC pills above. */\n.rp-sdk-grid {\n  margin-top: 28px !important;\n}\n\n.rp-sdk-grid .Card,\n.rp-sdk-grid .Card.Card_card {\n  position: relative !important;\n  display: flex !important;\n  flex-direction: row !important;\n  align-items: stretch !important;\n  background: #0D0D0B !important;\n  border: 0 !important;\n  border-radius: 8px !important;\n  padding: 0 !important;\n  gap: 0 !important;\n  overflow: hidden !important;\n  box-shadow: none !important;\n  transition: transform 0.15s, box-shadow 0.15s !important;\n  text-decoration: none !important;\n}\n\n.rp-sdk-grid .Card:hover,\n.rp-sdk-grid .Card.Card_card:hover {\n  transform: translateY(-2px) !important;\n  box-shadow: 0 4px 12px rgba(255, 215, 6, 0.22) !important;\n}\n\n/* Left body */\n.rp-sdk-grid .Card-content {\n  flex: 1 !important;\n  background: transparent !important;\n  padding: 11px 14px !important;\n  display: flex !important;\n  align-items: center !important;\n  min-width: 0 !important;\n}\n\n.rp-sdk-grid .Card-title {\n  display: flex !important;\n  align-items: center !important;\n  justify-content: flex-start !important;\n  font-size: 13px !important;\n  font-weight: 700 !important;\n  color: #FCFBF7 !important;\n  letter-spacing: 0.2px !important;\n  white-space: nowrap !important;\n  overflow: hidden !important;\n  text-overflow: ellipsis !important;\n  width: 100% !important;\n}\n\n/* Hide the inline arrow icon — the ::after pseudo provides the arrow zone */\n.rp-sdk-grid .Card-arrow {\n  display: none !important;\n}\n\n/* Right yellow accent block via pseudo-element */\n.rp-sdk-grid .Card::after {\n  content: '→' !important;\n  flex-shrink: 0 !important;\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  padding: 0 13px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  box-shadow: -3px 0 8px rgba(13, 13, 11, 0.30) !important;\n  transition: background 0.15s, color 0.15s, box-shadow 0.15s !important;\n  align-self: stretch !important;\n}\n\n/* Hover inversion */\n.rp-sdk-grid .Card:hover {\n  background: #FFD706 !important;\n}\n\n.rp-sdk-grid .Card:hover .Card-title {\n  color: #0D0D0B !important;\n}\n\n.rp-sdk-grid .Card:hover::after {\n  background: #0D0D0B !important;\n  color: #FFD706 !important;\n  box-shadow: -3px 0 8px rgba(0, 0, 0, 0.40) !important;\n}\n\n/* ── NAVIGATIONAL OVERVIEW CARDS (rp-nav-grid) ───────────────\n   Use for overview/orientation pages that link to child pages,\n   where each card has a title + multi-line description.\n   Distinct from rp-sdk-grid (compact split-pill, title-only).\n   rp-sdk-grid  → SDK links, partner integrations, short labels\n   rp-nav-grid  → overview pages, \"Key details\" nav cards with descriptions\n   ──────────────────────────────────────────────────────────── */\n.rp-nav-grid {\n  margin-top: 28px !important;\n}\n\n.rp-nav-grid .Card,\n.rp-nav-grid .Card.Card_card {\n  display: flex !important;\n  flex-direction: column !important;\n  background: var(--recurly-yellow) !important;\n  border: 0 !important;\n  border-radius: 10px !important;\n  padding: 20px 24px !important;\n  gap: 8px !important;\n  overflow: hidden !important;\n  box-shadow: none !important;\n  transition: background 0.15s, box-shadow 0.15s, transform 0.15s !important;\n  text-decoration: none !important;\n}\n\n.rp-nav-grid .Card:hover,\n.rp-nav-grid .Card.Card_card:hover {\n  background: var(--recurly-offblack) !important;\n  box-shadow: 0 6px 14px rgba(13, 13, 11, 0.20) !important;\n  transform: translateY(-2px) !important;\n}\n\n.rp-nav-grid .Card-icon {\n  display: none !important;\n}\n\n.rp-nav-grid .Card-title {\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-offblack) !important;\n  justify-content: space-between !important;\n  white-space: normal !important;\n}\n\n.rp-nav-grid .Card:hover .Card-title {\n  color: var(--recurly-offwhite) !important;\n}\n\n.rp-nav-grid .Card-arrow {\n  color: var(--recurly-offblack) !important;\n  flex-shrink: 0 !important;\n}\n\n.rp-nav-grid .Card:hover .Card-arrow {\n  color: var(--recurly-yellow) !important;\n  transform: translateX(3px) !important;\n}\n\n.rp-nav-grid .Card p,\n.rp-nav-grid .Card-content p,\n.rp-nav-grid .Card-content div,\n.rp-nav-grid .Card > p {\n  font-size: 13px !important;\n  color: var(--recurly-offblack) !important;\n  line-height: 1.6 !important;\n  margin: 0 !important;\n}\n\n.rp-nav-grid .Card:hover p,\n.rp-nav-grid .Card:hover .Card-content p,\n.rp-nav-grid .Card:hover .Card-content div,\n.rp-nav-grid .Card:hover > p {\n  color: var(--recurly-lightgray) !important;\n}\n\n.TabGroup-nav {\n  display: flex !important;\n  flex-wrap: wrap !important;\n  align-items: flex-end !important;\n  border-bottom: 2px solid var(--recurly-lightgray) !important;\n  margin: 16px 0 24px !important;\n  padding: 0 !important;\n  gap: 4px !important;\n  font-family: var(--recurly-font) !important;\n}\n\n.TabGroup-tab,\n.TabGroup-tab_active {\n  background: transparent !important;\n  border: 0 !important;\n  border-bottom: 2px solid transparent !important;\n  margin-bottom: -2px !important;\n  padding: 10px 18px !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-gray) !important;\n  cursor: pointer !important;\n  transition: color 0.15s, border-color 0.15s !important;\n}\n\n.TabGroup-tab:hover { color: var(--recurly-yellow) !important; }\n\n.TabGroup-tab_active {\n  color: var(--recurly-offblack) !important;\n  border-bottom-color: var(--recurly-yellow) !important;\n  cursor: default !important;\n}\n\n.Columns { display: grid !important; gap: 20px !important; margin: 16px 0 24px !important; font-family: var(--recurly-font) !important; }\n\n.Column { font-size: 14px !important; color: var(--recurly-darkgray) !important; line-height: 1.65 !important; min-width: 0 !important; }\n.Column > *:first-child { margin-top: 0 !important; }\n.Column > *:last-child  { margin-bottom: 0 !important; }\n.Column p { margin: 0 0 12px !important; }\n.Column blockquote { margin: 0 !important; padding: 0 !important; border: 0 !important; background: transparent !important; border-radius: 0 !important; }\n.Column blockquote p { margin: 0 0 12px !important; font-style: normal !important; color: inherit !important; }\n.Column blockquote p:last-child { margin-bottom: 0 !important; }\n.Column a { color: var(--recurly-tangerine) !important; }\n\n@media (max-width: 640px) {\n  .Columns { grid-template-columns: 1fr !important; }\n  .CardsGrid { grid-template-columns: 1fr !important; }\n}\n\n\n/* ============================================================\n   PART 4 — ReadMe native table branding\n   ============================================================ */\n\n/* Scoped to :has(thead) so this collapse rule never fires on\n   rp-* HTML tables (which use rp-thead-row / td, not thead / th). */\n.rdmd-table:has(thead) table {\n  width: 100% !important;\n  border-collapse: collapse !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  margin: 12px 0 24px !important;\n}\n\n.rdmd-table thead tr { background: var(--recurly-offblack) !important; }\n\n.rdmd-table thead tr th {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  font-weight: 700 !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  text-align: left !important;\n}\n\n.rdmd-table thead tr th strong,\n.rdmd-table thead tr th * { color: var(--recurly-offwhite) !important; }\n\n.rdmd-table tbody tr { background: var(--recurly-offwhite) !important; }\n\n.rdmd-table tbody tr td {\n  background: var(--recurly-offwhite) !important;\n  color: var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  vertical-align: top !important;\n  line-height: 1.6 !important;\n}\n\n.rdmd-table tbody tr td a { color: var(--recurly-tangerine) !important; }\n.rdmd-table tbody tr td a:hover { color: var(--recurly-offblack) !important; }\n\n.rdmd-table tbody tr td code.rdmd-code {\n  background: var(--recurly-brightgray) !important;\n  color: var(--recurly-darkgray) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 0.92em !important;\n}\n\n.rdmd-table-inner {\n  border-radius: 10px !important;\n  overflow: hidden !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n}\n\n/* rp-thead-row variant — tables that use \u003ctr class=\"rp-thead-row\"> instead of \u003cthead>.\n   Mirrors the :has(thead) rules above without the thead scope guard. */\n.rdmd-table:not(:has(thead)) table {\n  width: 100% !important;\n  border-collapse: collapse !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  margin: 12px 0 24px !important;\n}\n\n.rdmd-table tr.rp-thead-row {\n  background: var(--recurly-offblack) !important;\n}\n\n.rdmd-table tr.rp-thead-row td {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-offwhite) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  font-weight: 700 !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  text-align: left !important;\n}\n\n.rdmd-table tr.rp-thead-row td strong,\n.rdmd-table tr.rp-thead-row td * { color: var(--recurly-offwhite) !important; }\n\n.rdmd-table:not(:has(thead)) tbody tr,\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) {\n  background: var(--recurly-offwhite) !important;\n}\n\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td {\n  background: var(--recurly-offwhite) !important;\n  color: var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important;\n  font-size: 14px !important;\n  padding: 12px 16px !important;\n  border: 0 !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  vertical-align: top !important;\n  line-height: 1.6 !important;\n}\n\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td a { color: var(--recurly-tangerine) !important; }\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td a:hover { color: var(--recurly-offblack) !important; }\n\n.rdmd-table:not(:has(thead)) tr:not(.rp-thead-row) td code.rdmd-code {\n  background: var(--recurly-brightgray) !important;\n  color: var(--recurly-darkgray) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 0.92em !important;\n}\n\n\n/* ============================================================\n   PART 5 — Version selector branding\n   ============================================================ */\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) {\n  width: min(920px, calc(100vw - 40px)) !important;\n  max-width: min(920px, calc(100vw - 40px)) !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .tippy-box,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .tippy-content,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .Dropdown-content,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .Box,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu {\n  width: 100% !important;\n  max-width: 100% !important;\n  box-sizing: border-box !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu {\n  max-height: 620px !important;\n  overflow: auto !important;\n  padding: 16px !important;\n  display: grid !important;\n  grid-template-columns: repeat(auto-fill, minmax(145px, 1fr)) !important;\n  gap: 10px !important;\n  font-family: var(--recurly-font) !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu::before {\n  content: \"API V3\"; order: 1; grid-column: 1 / -1; margin: 0 0 2px 0;\n  color: var(--recurly-darkgray) !important; font-family: var(--recurly-font) !important;\n  font-size: 12px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu::after {\n  content: \"API V2\"; order: 20; grid-column: 1 / -1; margin: 10px 0 2px 0;\n  color: var(--recurly-darkgray) !important; font-family: var(--recurly-font) !important;\n  font-size: 12px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item {\n  width: auto !important; min-width: 0 !important; min-height: 48px !important; height: auto !important;\n  display: flex !important; align-items: center !important; padding: 10px 12px !important;\n  border: 1px solid var(--recurly-lightgray) !important; border-radius: 10px !important;\n  background: var(--recurly-offwhite) !important; color: var(--recurly-darkgray) !important;\n  font-family: var(--recurly-font) !important; text-decoration: none !important;\n  box-sizing: border-box !important; transition: background 0.15s, border-color 0.15s, color 0.15s !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*=\"/v20\"],\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*=\"/v2999\"] { order: 10; }\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*=\"/v2.\"] { order: 30; }\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href*=\"/v1.\"] { display: none !important; }\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item[href=\"/reference-docs/reference\"] { display: none !important; }\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=\"VersionDropdown-item\"],\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=\"VersionDropdown-item-content\"] { width: 100% !important; min-width: 0 !important; }\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=\"VersionDropdown-item-label\"] {\n  display: block !important; min-width: 0 !important; overflow: hidden !important;\n  text-overflow: ellipsis !important; white-space: nowrap !important;\n  font-family: var(--recurly-font) !important; font-size: 15px !important; font-weight: 600 !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item_active {\n  border-color: var(--recurly-tangerine) !important; background: var(--recurly-brightgray) !important;\n  color: var(--recurly-offblack) !important; box-shadow: 0 0 0 2px rgba(0, 140, 255, 0.12) !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item:hover,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item:focus {\n  border-color: var(--recurly-tangerine) !important; background: var(--recurly-brightgray) !important;\n  color: var(--recurly-offblack) !important; outline: none !important;\n}\n\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Badge,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .IconWrapper,\n[data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu [class*=\"IconWrapper\"] { flex: 0 0 auto !important; }\n\n@media (max-width: 700px) {\n  [data-tippy-root]:has(.rm-VersionDropdown-menu) { width: calc(100vw - 32px) !important; max-width: calc(100vw - 32px) !important; }\n  [data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)) !important; max-height: 420px !important; }\n  [data-tippy-root]:has(.rm-VersionDropdown-menu) .rm-VersionDropdown-menu .Menu-Item { min-height: 44px !important; padding: 9px 10px !important; }\n}\n\n/* ============================================================\n   PART 9 — API Reference supplemental polish\n   ============================================================\n   Part 3 owns the primary styles for enum pills, response\n   accordion rows, and logs table/footer. This part only covers\n   what Part 3 doesn't: param expand rows, \"required\" badge,\n   param container backgrounds, page h1, and misc elements.\n   ============================================================ */\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.1 — \"required\" badge  +  \"Allowed:\" label\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"Param-required\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.4px !important;\n  text-transform: uppercase !important;\n  color: var(--recurly-vermillion) !important;\n  background: rgba(255, 81, 38, 0.10) !important;\n  border-radius: 4px !important;\n  padding: 1px 6px !important;\n}\n\n[class*=\"Param-enum-section_compact-label\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 800 !important;\n  letter-spacing: 0.5px !important;\n  text-transform: uppercase !important;\n  color: var(--recurly-gray) !important;\n}\n\n/* Inner code token inside enum pills — inherit from button shell */\n[class*=\"Param-enum-section-item\"] code,\n[class*=\"Param-enum-section-item-value\"] {\n  background: transparent !important;\n  color: inherit !important;\n  font-family: inherit !important;\n  font-size: inherit !important;\n  font-weight: inherit !important;\n  padding: 0 !important;\n  border-radius: 0 !important;\n  box-shadow: none !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.2 — Param expand rows  (array-of-string: ADD STRING / STRING)\n   The full-row button has class \"Flex … Param-expand-button…\".\n   The icon-only reorder/delete buttons do NOT have \"Flex\".\n   Selecting on BOTH fragments excludes the icon buttons safely.\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"Param-expand\"] {\n  background: transparent !important;\n}\n\n/* Full-row expand button only (has both Flex + Param-expand-button in its class) */\n[class*=\"Flex\"][class*=\"Param-expand-button\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.3px !important;\n  color: var(--recurly-offwhite) !important;\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-darkgray) !important;\n  border-radius: 8px !important;\n  padding: 8px 12px !important;\n  width: 100% !important;\n  text-align: left !important;\n  cursor: pointer !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"Flex\"][class*=\"Param-expand-button\"]:hover {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-gray) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Label and icon inside — inherit color from button */\n[class*=\"Param-expand-label\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: inherit !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.3px !important;\n}\n\n[class*=\"Param-expand-button-icon\"] {\n  color: inherit !important;\n}\n\n/* ── \"Show N enum values\" / \"Hide enum values\" toggle ─────────\n   DOM: button.Button_minimum_ghost.Button_minimum inside\n        [class*=\"Param-enum-section_expanded-container-header\"]\n   Same offblack→yellow pill style as enum pills.\n   ──────────────────────────────────────────────────────────── */\n[class*=\"Param-enum-section_expanded-container-header\"] .Button,\n[class*=\"Param-enum-section_expanded-container-header\"] button {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.3px !important;\n  color: var(--recurly-offwhite) !important;\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-offblack) !important;\n  border-radius: 20px !important;\n  padding: 5px 14px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"Param-enum-section_expanded-container-header\"] .Button:hover,\n[class*=\"Param-enum-section_expanded-container-header\"] button:hover {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n/* Also style the \"Show N enum values\" collapsed button (sits outside the expanded container) */\n[class*=\"Param-enum-section\"] > div > .Button[class*=\"Button_minimum\"],\n[class*=\"Param-enum-section\"] > div > button[class*=\"Button_minimum\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.3px !important;\n  color: var(--recurly-offwhite) !important;\n  background: var(--recurly-offblack) !important;\n  border: 1px solid var(--recurly-offblack) !important;\n  border-radius: 20px !important;\n  padding: 5px 14px !important;\n  transition: background 0.12s, border-color 0.12s, color 0.12s !important;\n}\n\n[class*=\"Param-enum-section\"] > div > .Button[class*=\"Button_minimum\"]:hover,\n[class*=\"Param-enum-section\"] > div > button[class*=\"Button_minimum\"]:hover {\n  background: var(--recurly-darkgray) !important;\n  border-color: var(--recurly-darkgray) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n[class*=\"Param-expand\"] input,\n[class*=\"Param-expand\"] .Input {\n  font-family: var(--recurly-font) !important;\n  font-size: 13px !important;\n  background: #fff !important;\n  border: 1px solid var(--recurly-lightgray) !important;\n  border-radius: 6px !important;\n  color: var(--recurly-darkgray) !important;\n}\n\n[class*=\"Param-expand\"] input:focus,\n[class*=\"Param-expand\"] .Input:focus {\n  border-color: var(--recurly-offblack) !important;\n  outline: none !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.3 — Param container backgrounds\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"Param-contentWrapper\"],\n[class*=\"rm-ParamContainer\"],\n[class*=\"Fieldset\"],\n.rm-APISchema,\n[class*=\"rjsf\"] {\n  background: #fff !important;\n}\n\n.rm-ParamInput,\n.rm-ParamSelect {\n  background: #fff !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.4 — Response accordion interior  (expanded pane only)\n   Part 3 owns the toggle buttons. This styles the open pane.\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n.rm-APIResponseSchemaPicker [class*=\"AccordionContent\"] {\n  background: #fff !important;\n}\n\n.rm-APIResponseSchemaPicker .rm-APISectionHeader {\n  background: #fff !important;\n  border-bottom: 1px solid var(--recurly-lightgray) !important;\n  padding-bottom: 8px !important;\n  margin-bottom: 12px !important;\n}\n\n.rm-APIResponseSchemaPicker .rm-APISectionHeader [class*=\"APISectionHeader-heading\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 800 !important;\n  color: var(--recurly-gray) !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.8px !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.5 — Tag tooltip button (top-right of h1)\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"TagTooltip-tag-button\"] {\n  font-family: var(--recurly-font) !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  color: var(--recurly-gray) !important;\n  background: transparent !important;\n  border: 0 !important;\n  border-radius: 4px !important;\n  padding: 2px 4px !important;\n  transition: background 0.12s, color 0.12s !important;\n}\n\n[class*=\"TagTooltip-tag-button\"]:hover {\n  background: var(--recurly-offblack) !important;\n  color: var(--recurly-yellow) !important;\n}\n\n\n/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   9.6 — API page h1\n   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n[class*=\"headline-container\"] h1.Title,\n[class*=\"headline-container\"] h1 {\n  font-family: var(--recurly-font) !important;\n  font-weight: 800 !important;\n  color: var(--recurly-offblack) !important;\n  font-size: 1.6rem !important;\n  padding-bottom: 10px !important;\n  border-bottom: 2px solid var(--recurly-yellow) !important;\n  margin-bottom: 14px !important;\n}\n\n\n/* ============================================================\n   CODETABS ACTIVE BUTTON — KEPT LAST IN FILE\n   DOM confirmed: class=\"CodeTabs_active\" on selected button.\n   Duplicated here to win cascade battles with ReadMe's host\n   CSS which loads after this stylesheet.\n   ============================================================ */\n\n.CodeTabs-toolbar button.CodeTabs_active {\n  background: #FFD706 !important;\n  color: #0D0D0B !important;\n  border-radius: 14px !important;\n  cursor: default !important;\n  opacity: 1 !important;\n  pointer-events: none !important;\n}\n\n/* Single-language lone button — plain yellow label, never a pill */\n.CodeTabs-toolbar:has(> button:only-child) > button {\n  background: transparent !important;\n  color: #FFD706 !important;\n  border-radius: 0 !important;\n  cursor: default !important;\n  pointer-events: none !important;\n  opacity: 1 !important;\n}\n\n/* Hover — inactive buttons only */\n.CodeTabs-toolbar button:not(.CodeTabs_active):hover {\n  background: transparent !important;\n  color: #FFD706 !important;\n}\n/* Hide immediately, then fade in after 1s */\nbody .hub-is-home {\n  opacity: 0;\n  animation: hubFadeIn 0.4s ease forwards;\n  animation-delay: 1s;\n}\n\n/* turn header links back on */\n.rm-Header-bottom-link {\n    -webkit-box-sizing: border-box;\n    box-sizing: border-box;\n    display: inline-flex;\n}\n\n@keyframes hubFadeIn {\n  to { opacity: 1; }\n}\n\n* {\n    box-sizing: border-box;\n}\nbody {\n      font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n    }\n\n/* Image zoomer start */\n  .image-zoomer-container {\n      position: relative;\n      width: 720px;\n      height: 720px;\n      overflow: hidden;\n      border: 2px solid #ccc;\n    \tpadding: 20px;\n    \tmarging: 20px;\n      cursor: crosshair;\n    }\n\n    .image-zoomer-container img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      transition: transform 0.2s ease-out;\n    }\n\n    .image-zoomer-container:hover img {\n      transform: scale(7); /* Adjust zoom level */\n    }\n\n    .image-zoomer-container:hover img.move {\n      /*transition: none; /* Disable smooth transition when moving */\n      transition: ease-in-out;\n    }\n\t\t\n/* Image zoomer end */\n\n\n\t/* fix for width getting changed to % on the page for video iframes */\n    iframe {\n      width: 100%;\n      height: 450px;\n    }\n  \n    .rm-LandingPage {\n      width: 1200px;\n    }\n  \n    .rm-Header-top {\n      background: #0D0D0B;\n    }\n  \n    .rm-LandingPageHeader {\n      padding: 170px 20px 80px;\n    }\n    .rm-LandingPageHeader .rm-SearchToggle {\n      position: relative;\n      width: 469px;\n      background: #fff;\n      border-radius: 4px;\n    }\n  \n    .rm-LandingPageHeader .rm-SearchToggle:before {\n      display: block;\n      content: \"How can we help?\";\n      position: absolute;\n      top: -84px;\n      left: -40px;\n      text-align: center;\n      width: 120%;\n      font-size: 60px;\n      font-weight: 800;\n      font-family: 'proxima-nova';\n      pointer-events: none;\n    }\n  \n    .rm-LandingPageHeader .rm-SearchToggle .rm-SearchToggle-icon {\n      color: #5a5a5a;\n    }\n    .rm-LandingPageHeader .rm-SearchToggle .rm-SearchToggle-placeholder {\n      color: #fff;\n      font-size: 16px;\n      font-weight: 400;\n    }\n\n/* Start Storylane custome CSS */\n\t\t\t.sl-embed {   \n\t\t\t\t\t\tposition: relative;\n            padding-bottom: calc(56.68% + 25px);\n            width: 100%;\n            height: 0;\n            transform: scale(1);\n        }\n        .sl-demo {\n            width: 100% !important;\n            border: 1px solid rgba(63, 95, 172, 0.35);\n            box-shadow: 0px 0px 18px rgba(26, 19, 72, 0.15);\n            border-radius: 10px;\n            box-sizing: border-box;\n        }\n/* End Storylane custome CSS */\n  \n    main.main-index {\n      /* background-color: red; */\n      width: 1200px;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 25px;\n      margin: 0 auto 80px;\n      font-family: \"Proxima-nova\", sans-serif;\n    }\n  \n    header.main-header {\n      background-color: #ffd706;\n      border-radius: 0;\n      /*box-shadow: 0 4px 22px 0 rgba(35, 41, 50, 0.15);*/\n      /* margin-top: 25px; */\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      min-height: 80px;\n      width: 100%;\n      margin: 10px 10px 50px;\n      padding: 0 20px;\n      box-sizing: border-box;\n    }\n  \n    header.main-header p.header-paragraph {\n      font-size: 20px;\n      line-height: 28px;\n      color: #0D0D0B;\n    }\n    header.main-header .image-wrap {\n      display: flex;\n      align-items: center;\n    }\n  \n    header.main-header img {\n        margin: 0 20px 0 0;\n    }\n  \n    header.main-header p,\n    header.main-header strong {\n      color: #0D0D0B;\n      margin: 0;\n    }\n  \n    header.main-header strong {\n      font-weight: bold;\n      text-decoration: none;\n    }\n  \n    header.main-header a {\n      margin: 0 0 0 10rem;\n      padding: 8px 25px;\n      color: #0D0D0B;\n      text-decoration: none;\n      font-size: 14px;\n      font-weight: 800;\n      border-radius: 3px;\n      border: 2px solid #0D0D0B;\n    }\n  \n    header.main-header a:hover {\n      text-decoration: none;\n    }\n  \n   .main-index section {\n      /* background-color: green; */\n      width: 100%;\n      height: 100%;\n      display: flex;\n      flex-wrap: wrap;\n      align-items: center;\n      justify-content: space-between;\n      gap: 20px;\n      padding: 0;\n      margin: 0;\n    }\n  \n    .card {\n      width: 340px;\n      margin: 0 0 40px;\n  /*    border-radius: 20px;*/\n  /*    box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);*/\n      display: flex;\n      justify-content: center;\n      flex-direction: column;\n      align-items: flex-start;\n      padding: 0 15px;\n      cursor: auto;\n      transition: .175s all ease-in-out;\n    }\n  \n    /* .card:hover {\n      background-color: #ffffff;\n      transform: scale(1.05);\n      box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);\n    } */\n  \n    .card img {\n      width: 48px;\n      height: 48px;\n      margin: 0;\n      margin-bottom: 10px;\n    }\n  \n    .card h2 {\n      color: #0D0D0B;\n      font-size: 24px;\n      font-weight: 700;\n      line-height: 32px;\n      margin: 0;\n      margin-bottom: 11px;\n    }\n  \n    .card p {\n      margin: 0;\n      color: #0D0D0B;\n      margin-bottom: 15px;\n    }\n  \n    .card a, .LandingBlock3PM-HyBxby3X a {\n      color: #0D0D0B;\n      text-decoration-thickness: 2px;\n\t    text-underline-offset: 5px;\n      text-decoration: underline;\n      transition: 0.25s ease all;\n    }\n  \n    .card a:hover, .LandingBlock3PM-HyBxby3X a:hover {\n      color: #0D0D0B;\n      text-decoration: none;\n    }\n  \n    /* .Header-searchtb6Foi0-D9Vx {\n      position: absolute;\n      top: 50px;\n      right: 5px;\n      margin: 0;\n      padding: 0;\n      box-shadow: none;\n      border: none;\n      outline: none;\n      width: 50%;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n    }\n  \n    .Header-searchtb6Foi0-D9Vx button {\n  \n      width: 25%;\n      height: 53px;\n    }  */\n.reference-redesign .Sidebar-listWrapper6Q9_yUrG906C{\n        display: -webkit-box;\n        display: -ms-flexbox;\n        display: flex;\n        -ms-flex-item-align: start;\n        -ms-flex-align: ;\n        -webkit-box-flex: 0;\n        -ms-flex: 0;\n        flex: 0 !important;\n        -webkit-box-orient: vertical;\n        -webkit-box-direction: normal;\n        -ms-flex-direction: column;\n        flex-direction: column;\n        align-items: flex-start !important;\n      }\n    .reference-redesign .Sidebar-link2Dsha-r-GKh2:active, .reference-redesign .Sidebar-link2Dsha-r-GKh2.active {\n        background: var(--Sidebar-link-background);\n        color: #0D0D0B) !important;\n      }\n      .LandingBlock3PM-HyBxby3X a:not(:hover){\n\t\t\t\ttext-decoration: underline !important;\n      }\n  \n    @media (max-width: 768px) {\n      .rm-LandingPage {\n        width: 100%;\n      }\n  \n      main.main-index {\n        width: 100%;\n        height: 100%;\n      }\n  \n      .rm-LandingPageHeader {\n        display: block;\n      }\n  \n      .rm-LandingPageHeader .rm-SearchToggle {\n        width: 340px;\n      }\n  \n      .rm-LandingPageHeader .rm-SearchToggle:before {\n        font-size: 44px;\n      }\n  \n      header.main-header {\n        display: block;\n        width: 95%;\n        min-height: auto;\n      }\n  \n      header.main-header img {\n        display: block;\n        margin: 10px auto;\n      }\n  \n      header.main-header a {\n        display: block;\n        margin: 16px auto 20px;\n        max-width: 160px;\n      }\n  \n      header.main-header p.header-paragraph {\n        margin: 0 10px;\n        text-align: center;\n      }\n  \n      .card {\n        width: 90%;\n        padding: 0 25px 0 20px;\n      }\n  \n      .Header-searchtb6Foi0-D9Vx {\n        position: absolute;\n        top: 55px;\n        right: 0px;\n        margin: 0;\n        padding: 0;\n        box-shadow: none;\n        border: none;\n        outline: none;\n        width: 50%;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n      }\n  \n      .Header-searchtb6Foi0-D9Vx button {\n        width: 25% !important;\n        padding-left: 20px;\n        border: 1px solid #0D0D0B !important;\n      } \n  \n      .Header-searchtb6Foi0-D9Vx button .icon-search1  {\n        color: #ffd706 !important;\n      }\n    }\n\n/* beginning of footer */\n\n\n.container {\n    margin-right: auto;\n    margin-left: auto;\n    padding-left: 15px;\n    padding-right: 15px;\n    min-width: 320px;\n    position: relative;\n\n    \n\n}\n@media (min-width: 768px) {\n    .container {\n        width: 750px;\n    }\n}\n@media (min-width: 992px) {\n    .container {\n        width: 970px;\n    }\n}\n@media (min-width: 1200px) {\n    .container {\n        width: 1170px;\n    }\n}\n.list-reset {\n    list-style: none;\n    margin-top: 0;\n    margin-bottom: 0;\n    padding: 0;\n}\nfooter {\n\tposition:relative;\n\tfont-size:14px;\n\toverflow:hidden;\n\tcolor:#fff;\n\tbackground:#0D0D0B\n}\n.btn--footer {\n    display: -webkit-inline-box;\n    display: inline-flex;\n    -webkit-box-align: center;\n    align-items: center;\n    -webkit-box-pack: center;\n    justify-content: center;\n    height: 50px;\n    padding: 0 1.5rem;\n    text-align: center;\n    border-radius: 6px;\n    font-weight: 400;\n    text-decoration: none;\n    cursor: pointer;\n    font-family: \"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n    border-width: 0;\n    text-align: center;\n}\n.btn-primary--footer {\n    background-color: #FFD706;\n    color: #0D0D0B;\n    -webkit-transition: background-color 0.25s;\n    transition: background-color 0.25s;\n    margin: 0 2.2rem 0 0;\n    width: auto;\n}\n.feedback__header {\n    font-size: 3rem;\n}\n@media (max-width: 790px) {\n    .feedback__header {\n      font-size: 1.6rem;\n    }\n  }\n.footer__feedback {\n    display: flex;\n    gap: 30px;\n    align-items: center;\n    justify-content: center;\n\n}\n@media (min-width:768px) {\n    .footer__feedback {\n        flex-direction: row;\n        flex-flow: row;\n    }\n}\n.footer__bottom {\n    padding: 30px 0;\n    border-top: 1px solid #32312D;\n}\na:not(.btn) {\n    color: inherit;\n    -webkit-text-decoration-color: #FF5810;\n    text-decoration-color: #FF5810;\n    text-decoration-thickness: 2px;\n    text-underline-offset: 5px;\n    -webkit-transition: -webkit-text-decoration-color 0.25s;\n    transition: -webkit-text-decoration-color 0.25s;\n    transition: text-decoration-color 0.25s;\n    transition: text-decoration-color 0.25s, -webkit-text-decoration-color 0.25s;\n}\na:not(.btn).link-no-underline {\n    -webkit-text-decoration-color: transparent;\n    text-decoration-color: transparent;\n}\na:not(.btn).link-no-underline:hover {\n    -webkit-text-decoration-color: #FF5810;\n    text-decoration-color: #FF5810;\n}\n.footer-basic__grid {\n    display: -webkit-box;\n    display: flex;\n    -webkit-box-pack: justify;\n    justify-content: space-between;\n    -webkit-box-align: center;\n    align-items: center;\n    gap: 40px;\n}\n@media (max-width:768px) {\n    .footer-basic__grid {\n        -webkit-box-orient: horizontal;\n        -webkit-box-direction: normal;\n        flex-direction: row;\n        -webkit-box-pack: center;\n        justify-content: center;\n        flex-wrap: wrap;\n        margin: 0;\n        padding: 0;\n    }\n}\n.footer__doc-logo {\n    width: 200px;\n}\n.footer__links {\n    display: -webkit-box;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    flex-direction: column;\n    gap: 20px;\n    padding: 1rem 0 1rem 0;\n    margin: 0 auto;\n}\n\n.footer__list-secondary {\n    display: flex;\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    flex-direction: column;\n    gap: 20px;\n}\n@media (min-width:768px) {\n    .footer__list-secondary {\n        -webkit-box-orient: horizontal;\n        -webkit-box-direction: normal;\n        flex-direction: row;\n        -webkit-box-pack: end;\n        justify-content: end;\n        flex-wrap: wrap;\n    }\n}\n.footer__social {\n    grid-area: social;\n    display: -webkit-box;\n    display: flex;\n    gap: 20px;\n    align-self: end;\n}\n.footer__social a {\n    display: -webkit-box;\n    display: flex;\n    -webkit-box-align: center;\n    align-items: center;\n    -webkit-box-pack: center;\n    justify-content: center;\n    width: 40px;\n    height: 40px;\n    padding:10px;\n    border-radius: 50%;\n    background-color: #FF5810;\n    -webkit-transition: background-color .3s;\n    transition: background-color .3s;\n}\n\n\n\n  .modal-bg {\n    position: fixed;\n    top: 0;\n    left: 0;\n    display: none;\n    width: 100%;\n    height: 100%;\n    background: rgba(35, 41, 50, 0.75);\n    z-index: 10;\n    backdrop-filter: blur(10px);\n    opacity: 0;\n    transition: opacity 0.25s;\n  }\n\n  .modal__wrap {\n    display: none;\n    position: fixed;\n    top: -10%;\n    left: 0;\n    width: 90%;\n    margin: 7rem 1.5rem;\n    padding: 1rem 2rem 2rem;\n    background: #FFFDF2;\n    border-radius: 2rem;\n    z-index: 11;\n  }\n  @media (min-width: 1080px) {\n    .modal__wrap {\n      top: -10%;\n      left: 50%;\n      width: 63.6rem;\n      margin: 8rem 0 0 -31.8rem;\n      padding: 1rem 5rem 3rem;\n    }\n}\n\n  .modal__close {\n    position: absolute;\n    top: 2rem;\n    right: 2rem;\n    width: 2.2rem;\n    height: 2.2rem;\n    cursor: pointer;\n    text-indent: -9999px;\n    background: url(\"https://recurly.com/img2/events/subscriptionsessions/close-btn.svg\")\n      center no-repeat;\n    background-size: 12px;\n  }\n\n  .modal__headline {\n    margin: 1.5rem 0 0;\n    color: #0D0D0B;\n    font-size: 2.2rem;\n    line-height: 2.2rem;\n    font-variation-settings: \"ital\" 0, \"wdth\" 100, \"wght\" 300;\n  }\n\n  /* Blur effect on background */\n        .blur-background {\n            filter: blur(5px);\n            pointer-events: none; /* Prevent interaction with blurred content */\n        }\n\n\n.mktoForm{\n\twidth:100% !important\n}\n.mktoForm .mktoOffset,.mktoForm .mktoGutter{\n\tdisplay:none\n}\n.mktoForm .mktoAsterix{\n\tdisplay:none\n}\n.mktoForm .mktoRequiredField .mktoAsterix{\n\tdisplay:inline-block;\n\tmargin:0 0.3rem 0 0\n}\n.mktoForm .mktoField.mktoHasWidth.mktoRequired.mktoInvalid{\n\tborder:1px solid #DF381F\n}\n.mktoForm div{\n\ttext-align:left;\n\tmargin:0;\n\tpadding:0\n}\n.mktoForm .mktoClear{\n\tclear:both;\n\tfloat:none\n}\n.mktoForm .gdpr__privacy,.mktoForm #LblGDPR_Consent__c{\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tcolor:#0D0D0B;\n\tfont-weight:400\n}\n.mktoForm #LblGDPR_Consent__c{\n\tposition:relative;\n\tbackground:transparent;\n\tfont-size:1rem;\n\tline-height:2rem;\n\tmargin-bottom:.8rem;\n\tpadding-right:.2rem\n}\n.mktoForm .gdpr__privacy{\n\tfont-size:1rem;\n\tline-height:1.5rem;\n\tmargin:1.0rem 0 0;\n}\n.mktoForm input{\n\t-webkit-transition:0.1s ease-out;\n\ttransition:0.1s ease-out\n}\n.mktoForm input[type=url],.mktoForm input[type=text],.mktoForm input[type=date],.mktoForm input[type=tel],.mktoForm input[type=email],.mktoForm input[type=number],.mktoForm textarea.mktoField,.mktoForm select.mktoField{\n\twidth:100% !important\n}\n.mktoForm input[type=email]+.mktoError .mktoErrorMsg{\n\tmax-width:19.5rem\n}\n.mktoForm select.mktoField{\n\tpadding:1.5rem 1.5rem 0rem 1.2rem;\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tbackground:url(\"https://recurly.com/img2/demo-request/dropdown-caret_expand.svg\") 96% center #fff no-repeat;\n\tbackground-size:12px 7px;\n\tborder-radius:0;\n\t-webkit-appearance:none;\n\t-moz-appearance:none;\n\tappearance:none;\n\theight:4rem;\n\twidth:100%;\n\tpadding:0.6rem;\n\tcolor:#535356;\n\tfont-size:1.8rem;\n\tfont-weight:500;\n\tborder:0 none;\n\tborder-radius:0;\n\tbox-shadow:none\n}\n.mktoForm select.mktoField>option:first-child{\n\tcolor:transparent\n}\n.mktoForm select.mktoField:focus{\n\toutline:none\n}\n.mktoForm select.mktoField:-moz-focusring{\n\tcolor:transparent;\n\ttext-shadow:0 0 0 #000\n}\n.mktoForm .consent-label-container{\n\tdisplay:-webkit-box;\n\tdisplay:flex;\n\t-webkit-box-orient:horizontal;\n\t-webkit-box-direction:reverse;\n\tflex-direction:row-reverse;\n\t-webkit-box-align:start;\n\talign-items:flex-start\n}\n.mktoForm .consent-label-container .mktoLabel{\n\tline-height:2rem\n}\n.mktoForm div.mktoFieldWrap:not(.consent-label-container) .mktoLabel.mktoHasWidth{\n\tfont-size:1rem;\n\tline-height:1.5rem;\n\tposition:relative;\n  width:auto !important;\n\tleft:1.4rem;\n\tright:30px;\n\ttop:30px;\n\tbackground-color:white;\n\t-webkit-transition:.1s ease-out;\n\ttransition:.1s ease-out;\n\t-webkit-transform-origin:left top;\n\ttransform-origin:left top;\n\tpointer-events:none\n}\n.mktoForm div.mktoFieldWrap:not(.consent-label-container) .mktoLabel.mktoHasWidth.active{\n\tline-height:2.2rem;\n\tfont-size:1.2rem;\n\ttop:0;\n\t-webkit-transform:translateY(17%) scale(0.9);\n\ttransform:translateY(17%) scale(0.9)\n}\n.mktoForm div.mktoRequiredField.selectLabel label.mktoLabel{\n\tposition:relative;\n\tbackground:none;\n\tline-height:1.5rem;\n\tleft:0;\n\ttop:0;\n\t-webkit-transition:none;\n\ttransition:none;\n\t-webkit-transform:none;\n\ttransform:none\n}\n.mktoForm div.mktoRequiredField.selectLabel label.mktoLabel.active{\n\tfont-size:1.6rem;\n\tline-height:2rem;\n\t-webkit-transform:none;\n\ttransform:none\n}\n.mktoForm .mktoCheckboxList{\n\tpadding:0;\n\tfloat:left;\n\tposition:relative;\n\ttop:0\n}\n.mktoForm .mktoCheckboxList label{\n\tfont-size:1.4rem;\n\tline-height:2rem\n}\n.mktoForm .mktoCheckboxList>input{\n\tmargin:0 1rem 0 0\n}\n.mktoForm .mktoCheckboxList>input:after{\n\tcontent:\" \";\n\tfont-size:1.4rem;\n\tbackground-color:#ab4ac3;\n\tdisplay:inline-block;\n\tvisibility:visible\n}\n.mktoForm .mktoCheckboxList>input:checked:after{\n\tcontent:\"\\2713\";\n\tbox-shadow:0px 2px 4px rgba(155,155,155,0.15);\n\tborder-radius:3px;\n\theight:1.5rem;\n\tdisplay:block;\n\twidth:1.5rem;\n\ttext-align:center;\n\tfont-size:1.2rem;\n\tcolor:white\n}\n.mktoForm .mktoLabel{\n\tline-height:3rem;\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tfont-size:1.6rem;\n\tfont-weight:400;\n\tcolor:#0D0D0B;\n\tdisplay:inline-block;\n\tfloat:none !important;\n\twidth:auto\n}\n.mktoForm .mktoLabel span{\n\tcolor:#0D0D0B;\n\tfont-size:1.0rem;\n\tline-height:1.5rem\n}\n.mktoButtonWrap.mktoSimple {\n  margin-left: 0 !important;\n}\n.mktoForm .mktoButtonWrap.mktoSimple .mktoButton{\n\tdisplay:inline-block;\n\t-webkit-user-select:none;\n\t-moz-user-select:none;\n\t-ms-user-select:none;\n\tuser-select:none;\n\theight:4rem;\n\tpadding:1rem 3rem;\n\tfont-size:1.2rem;\n\tline-height:2.2rem;\n\tfont-weight:400;\n\tcolor:#fff;\n\ttext-align:center;\n\ttext-decoration:none;\n\ttext-overflow:ellipsis;\n\ttext-transform:lowercase;\n\twhite-space:nowrap;\n\toverflow:hidden;\n\tvertical-align:middle;\n\tcursor:pointer;\n\tborder:0;\n  margin-top: 15px;\n\tborder-radius:6px;\n\tbackground:#0D0D0B;\n\t-webkit-transition:all .3s ease-in;\n\ttransition:all .3s ease-in\n}\n.mktoForm .mktoButtonWrap.mktoSimple .mktoButton:first-letter,.mktoForm .mktoButtonWrap.mktoSimple .mktoButton span:first-letter{\n\ttext-transform:capitalize\n}\n.mktoForm .mktoButtonWrap.mktoSimple .mktoButton:hover{\n\tbackground:#FF9D88;\n\tcolor:#0D0D0B;\n\t-webkit-transform:none;\n\ttransform:none\n}\n.mktoForm .mktoFormRow .mktoField:not([type=\"checkbox\"]){\n\tbackground-color:#fff;\n\tborder-radius:4px;\n\tborder:1px solid #bdbbb6;\n\tcolor:#0D0D0B;\n\tdisplay:block;\n\tfloat:none;\n\theight:3.5rem;\n\tfont-family:\"Polar\", \"Helvetica Neue\", Helvetica, arial, sans-serif;\n\tfont-size:1.2rem !important;\n\t-webkit-appearance:none;\n\t-moz-appearance:none;\n\tappearance:none;\n\tpadding:1.7rem 1.5rem 0rem 1.2rem\n}\n.mktoForm .mktoFormRow .mktoField:not([type=\"checkbox\"]):focus{\n\toutline:none;\n\tborder-color:#0D0D0B;\n  font-weight: 400;\n}\n.mktoForm .mktoFormRow select.mktoField:not([type=\"checkbox\"]){\n\tpadding:1.6rem 1.5rem 0rem 1.2rem\n}\n.mktoForm .mktoError{\n\tposition:initial;\n\tz-index:99;\n\tcolor:#bf0000\n}\n.mktoForm .mktoError .mktoErrorArrowWrap{\n\tdisplay:none;\n\twidth:16px;\n\theight:8px;\n\toverflow:hidden;\n\tposition:absolute;\n\ttop:0;\n\tleft:5px;\n\tz-index:100\n}\n.mktoForm .mktoError .mktoErrorArrow{\n\tdisplay:inline-block;\n\theight:16px;\n\twidth:16px;\n\tmargin-top:5px;\n\tborder:0 none !important;\n\tbackground-color:#e35256 !important;\n\tborder-right:none;\n\tborder-bottom:none;\n\t-webkit-transform:rotate(45deg);\n\ttransform:rotate(45deg);\n\t-ms-transform:rotate(45deg)\n}\n.mktoForm .mktoError .mktoErrorMsg{\n\tdisplay:block;\n\tmargin:0;\n\tpadding:0;\n\tfont-size:1.0rem;\n\tline-height:2.1rem;\n\tfont-weight:400;\n\tmax-width:18rem;\n\tcolor:#e35256;\n\tborder:0 none !important;\n\tborder-radius:3px !important;\n\tbackground:transparent !important;\n\tbox-shadow:none !important;\n\ttext-shadow:none !important\n}\n\n/* ===== product landing page overwrite ======= */\n\n.rm-LandingPage {\n          width: 100% !important;\n          background-color: #0D0D0B !important;\n          padding: 0 !important;\n}\n\n/* ===== Product landing page CSS ======= */\n.globallp-header-section {\n          background: #0D0D0B !important;\n          padding: 64px 0 !important;\n}\n.feature-section {\n          background: #fff !important;\n          padding: 94px 0 !important;\n}\n\n.feature-grid {\n          max-width: 1200px !important;\n          margin: 0 auto !important;\n          display: grid !important;\n          grid-template-columns: repeat(3, 1fr) !important;\n          gap: 32px 24px !important;\n          padding: 0 24px !important;\n}\n\n.feature-card {\n          border: 1px solid #ece9d7 !important;\n          border-radius: 12px !important;\n          padding: 32px 24px !important;\n          background: #fff !important;\n          display: flex !important;\n          flex-direction: column !important;\n          gap: 8px !important;\n          cursor: pointer !important;\n          transition: box-shadow 0.2s !important;\n          height: 120px !important;\n          justify-content: flex-start !important;\n          box-sizing: unset !important;\n}\n\n.feature-grid a {\n          text-decoration: none !important;\n          color: inherit !important;\n}\n\n.feature-card:hover {\n          box-shadow: 0px 12px 16px -4px rgba(13, 13, 11, 0.08), 0px 4px 6px -2px rgba(13, 13, 11, 0.03), 0px 2px 2px -1px rgba(13, 13, 11, 0.04) !important;\n}\n\n.feature-card-icon-group {\n          display: flex !important;\n          align-items: center !important;\n          gap: 12px !important;\n}\n\n.feature-card-icon {\n          width: 40px !important;\n          height: 40px !important;\n          display: flex !important;\n          align-items: center !important;\n          margin: 0 !important;\n}\n\n.feature-card-title {\n          color: #0D0D0B !important;\n          font-weight: 600 !important;\n          font-size: 18px !important;\n          margin-top: 8px !important;\n}\n\n.feature-card:hover .feature-card-title {\n          color: #B0361E !important;\n          font-weight: 600 !important;\n}\n\n.feature-card-desc {\n          color: #0D0D0B !important;\n          font-size: 14px !important;\n}\n\n.feature-badge {\n          position: relative !important;\n          border-radius: 9999px !important;\n          background-color: #f9f7eb !important;\n          border: 1px solid #e2dfd0 !important;\n          box-sizing: border-box !important;\n          width: 100% !important;\n          display: flex !important;\n          flex-direction: row !important;\n          align-items: center !important;\n          justify-content: flex-start !important;\n          padding: 2px 10px !important;\n          text-align: center !important;\n          font-size: 14px !important;\n          color: #46443f !important;\n          width: fit-content !important;\n}\n\n.feature-badge-text {\n          position: relative !important;\n          letter-spacing: 0.01em !important;\n          font-size: 10px !important;\n          line-height: 20px !important;\n          font-weight: 600 !important;\n}\n\n.more-docs-section {\n          background: #f6f3e0 !important;\n          padding: 94px 12px !important;\n}\n\n.more-docs-container {\n          max-width: 1200px !important;\n          margin: 0 auto !important;\n          text-align: center !important;\n}\n\n.more-docs-title {\n          font-weight: 700 !important;\n          margin: 0 0 16px !important;\n          font-size: 36px !important;\n}\n\n.more-docs-desc {\n          font-size: 20px !important;\n          color: #0D0D0B !important;\n          margin-bottom: 40px !important;\n}\n\n.more-docs-grid {\n          display: flex !important;\n          justify-content: space-around !important;\n          gap: 48px !important;\n          flex-wrap: wrap !important;\n}\n\n.more-docs-card {\n          flex: 1 1 30% !important;\n          max-width: 100% !important;\n          display: flex !important;\n          flex-direction: column !important;\n          align-items: center !important;\n          gap: 12px !important;\n}\n\n.more-docs-card-icon {\n          width: 48px !important;\n          height: 48px !important;\n}\n\n.more-docs-card-image {\n          width: auto !important;\n          height: 32px !important;\n          margin-bottom: 8px !important;\n}\n\n.more-docs-card-title {\n          font-weight: 700 !important;\n          color: #0D0D0B !important;\n}\n\n.more-docs-card-title span {\n          color: #888 !important;\n          font-weight: 400 !important;\n}\n\n.more-docs-card-desc {\n          font-size: 16px !important;\n          line-height: 24px !important;\n          color: #0D0D0B !important;\n}\n\n.more-docs-link {\n          color: #B0361E !important;\n          font-size: 16px !important;\n          font-weight: 600 !important;\n          text-decoration: none !important;\n          display: flex !important;\n          align-items: center !important;\n}\n.more-docs-link:hover {\n          text-decoration: underline !important;\n}\n\n.more-docs-icon-arrow {\n          width: 20px !important;\n}\n\n.release-section {\n          background: #FFD706 !important;\n          padding: 64px 0 !important;\n}\n\n.release-container {\n          max-width: 600px !important;\n          margin: 0 auto !important;\n          text-align: center !important;\n}\n\n.release-title {\n          font-family: 'F37 Gruffy', cursive !important;\n          font-size: 2rem !important;\n          font-weight: 700 !important;\n          margin-bottom: 16px !important;\n}\n\n.release-desc {\n          font-size: 18px !important;\n          color: #0D0D0B !important;\n          margin-bottom: 32px !important;\n}\n\n.release-form {\n          display: flex !important;\n          gap: 8px !important;\n          justify-content: center !important;\n          margin-bottom: 8px !important;\n}\n\n.release-input {\n          flex: 1 !important;\n          min-width: 0 !important;\n          padding: 12px !important;\n          border-radius: 6px !important;\n          border: 1px solid #ccc !important;\n          font-size: 16px !important;\n}\n\n.release-button {\n          background: #0D0D0B !important;\n          color: #fff !important;\n          border: none !important;\n          border-radius: 6px !important;\n          padding: 12px 24px !important;\n          font-size: 16px !important;\n          font-weight: 600 !important;\n          cursor: pointer !important;\n}\n\n.release-privacy {\n          font-size: 13px !important;\n          color: #0D0D0B !important;\n}\n\n.release-privacy a {\n          color: #0D0D0B !important;\n          text-decoration: underline !important;\n}\n\n@media (max-width: 1024px) {\n          .globallp-header-content {\n              max-width: 100% !important;\n          }\n\n          .feature-grid {\n              max-width: 1200px !important;\n              margin: 0 auto !important;\n              display: grid !important;\n              grid-template-columns: repeat(2, 1fr) !important;\n              gap: 32px 24px !important;\n              padding: 0 24px !important;\n          }\n\n}\n@media (max-width: 768px) {\n          .feature-grid {\n              max-width: 1200px !important;\n              margin: 0 auto !important;\n              display: grid !important;\n              grid-template-columns: repeat(1, 1fr) !important;\n              gap: 32px 24px !important;\n              padding: 0 24px !important;\n          }\n          .feature-card {\n              height: 100px !important;\n          }\n}","js":"(() => {\n  \"use strict\";\n\n  /*\n   * Recurly Changelog navigation override\n   *\n   * - Rewrites each native ReadMe Changelog link\n   * - Supports full page loads and ReadMe SPA navigation\n   * - Highlights Changelog only on the exact custom changelog page\n   * - Restores Directory and other native section highlighting everywhere else\n   */\n\n  const SCRIPT_KEY = \"__recurlyChangelogNavigation\";\n\n  const PROJECTS = {\n    \"recurly-subscriptions\": {\n      targetPath:\n        \"/recurly-subscriptions/docs/recurly-subscriptions-changelog\",\n    },\n\n    \"recurly-commerce\": {\n      targetPath:\n        \"/recurly-commerce/docs/recurly-commerce-changelog\",\n    },\n\n    \"recurly-engage\": {\n      targetPath:\n        \"/recurly-engage/docs/recurly-engage-changelog\",\n    },\n\n    \"recurly-revrec\": {\n      targetPath:\n        \"/recurly-revrec/docs/changelog\",\n    },\n  };\n\n  const NAV_SELECTOR =\n    'nav[aria-label=\"Primary navigation\"]';\n\n  /*\n   * ReadMe's mobile hamburger menu is a separate\n   * \"flyout\" component, not a \u003cnav aria-label=\"Primary\n   * navigation\">. Its items carry ReadMe's stable \"rm-\"\n   * prefixed hook class (unlike the CSS-module hashed\n   * classes alongside it, which change across deploys).\n   */\n  const MOBILE_NAV_SELECTOR =\n    \".rm-MobileFlyout-item[href]\";\n\n  const CHANGELOG_TARGET_ATTRIBUTE =\n    \"data-recurly-changelog-target\";\n\n  /*\n   * Remove an older instance if this script is loaded again.\n   */\n  if (\n    window[SCRIPT_KEY] &&\n    typeof window[SCRIPT_KEY].destroy === \"function\"\n  ) {\n    window[SCRIPT_KEY].destroy();\n  }\n\n  const state = {\n    observer: null,\n    routeInterval: null,\n    animationFrame: null,\n    retryTimers: new Set(),\n    lastPath: \"\",\n    destroyed: false,\n  };\n\n  function normalizePath(value) {\n    try {\n      const url = new URL(\n        value,\n        window.location.origin\n      );\n\n      const pathname = url.pathname || \"/\";\n\n      if (pathname === \"/\") {\n        return \"/\";\n      }\n\n      return pathname.replace(/\\/+$/, \"\");\n    } catch (error) {\n      return \"\";\n    }\n  }\n\n  function getCurrentPath() {\n    return normalizePath(window.location.href);\n  }\n\n  function getCurrentProject() {\n    const pathname = getCurrentPath();\n\n    const projectKey = pathname\n      .split(\"/\")\n      .filter(Boolean)[0];\n\n    const projectConfig =\n      PROJECTS[projectKey];\n\n    if (!projectConfig) {\n      return null;\n    }\n\n    const rootPath = `/${projectKey}`;\n\n    return {\n      key: projectKey,\n      pathname,\n      rootPath,\n      docsPath: `${rootPath}/docs`,\n      referencePath: `${rootPath}/reference`,\n      recipesPath: `${rootPath}/recipes`,\n      discussionsPath: `${rootPath}/discuss`,\n      nativeChangelogPath: `${rootPath}/changelog`,\n      targetPath: normalizePath(\n        projectConfig.targetPath\n      ),\n      targetUrl: new URL(\n        projectConfig.targetPath,\n        window.location.origin\n      ).href,\n    };\n  }\n\n  function pathIsWithin(\n    pathname,\n    sectionPath\n  ) {\n    return (\n      pathname === sectionPath ||\n      pathname.startsWith(\n        `${sectionPath}/`\n      )\n    );\n  }\n\n  function getPrimaryNavs() {\n    return Array.from(\n      document.querySelectorAll(\n        NAV_SELECTOR\n      )\n    );\n  }\n\n  function getNavLinks(nav) {\n    return Array.from(\n      nav.querySelectorAll(\"a[href]\")\n    );\n  }\n\n  function getLinkText(link) {\n    return link.textContent\n      .replace(/\\s+/g, \" \")\n      .trim()\n      .toLowerCase();\n  }\n\n  function getLinkPath(link) {\n    return normalizePath(\n      link.getAttribute(\"href\")\n    );\n  }\n\n  function hasIcon(link, iconClass) {\n    return Boolean(\n      link.querySelector(`.${iconClass}`)\n    );\n  }\n\n  function isChangelogLink(\n    link,\n    project\n  ) {\n    if (\n      !(link instanceof HTMLAnchorElement)\n    ) {\n      return false;\n    }\n\n    if (\n      link.hasAttribute(\n        CHANGELOG_TARGET_ATTRIBUTE\n      )\n    ) {\n      return true;\n    }\n\n    if (\n      hasIcon(link, \"icon-changelog\")\n    ) {\n      return true;\n    }\n\n    if (\n      getLinkText(link) === \"changelog\"\n    ) {\n      return true;\n    }\n\n    const linkPath = getLinkPath(link);\n\n    return (\n      linkPath ===\n        project.nativeChangelogPath ||\n      linkPath === project.targetPath\n    );\n  }\n\n  function findChangelogLink(\n    nav,\n    project\n  ) {\n    return (\n      getNavLinks(nav).find((link) =>\n        isChangelogLink(link, project)\n      ) || null\n    );\n  }\n\n  function findLinkByIcon(\n    nav,\n    iconClass\n  ) {\n    return (\n      getNavLinks(nav).find((link) =>\n        hasIcon(link, iconClass)\n      ) || null\n    );\n  }\n\n  function findLinkByPath(\n    nav,\n    pathname\n  ) {\n    return (\n      getNavLinks(nav).find(\n        (link) =>\n          getLinkPath(link) === pathname\n      ) || null\n    );\n  }\n\n  function findLinkByText(nav, text) {\n    const expectedText = text\n      .trim()\n      .toLowerCase();\n\n    return (\n      getNavLinks(nav).find(\n        (link) =>\n          getLinkText(link) ===\n          expectedText\n      ) || null\n    );\n  }\n\n  function findHomeLink(nav, project) {\n    return (\n      findLinkByIcon(\n        nav,\n        \"icon-landing-page-2\"\n      ) ||\n      findLinkByPath(\n        nav,\n        project.rootPath\n      ) ||\n      findLinkByText(nav, \"home\")\n    );\n  }\n\n  function findDirectoryLink(\n    nav,\n    project\n  ) {\n    return (\n      findLinkByIcon(\n        nav,\n        \"icon-guides\"\n      ) ||\n      findLinkByPath(\n        nav,\n        project.docsPath\n      ) ||\n      findLinkByText(\n        nav,\n        \"directory\"\n      ) ||\n      findLinkByText(nav, \"guides\")\n    );\n  }\n\n  function findReferenceLink(\n    nav,\n    project\n  ) {\n    return (\n      findLinkByIcon(\n        nav,\n        \"icon-references\"\n      ) ||\n      findLinkByPath(\n        nav,\n        project.referencePath\n      ) ||\n      findLinkByText(\n        nav,\n        \"api reference\"\n      )\n    );\n  }\n\n  function findRecipesLink(\n    nav,\n    project\n  ) {\n    return (\n      findLinkByPath(\n        nav,\n        project.recipesPath\n      ) ||\n      findLinkByText(nav, \"recipes\")\n    );\n  }\n\n  function findDiscussionsLink(\n    nav,\n    project\n  ) {\n    return (\n      findLinkByPath(\n        nav,\n        project.discussionsPath\n      ) ||\n      findLinkByText(\n        nav,\n        \"discussions\"\n      )\n    );\n  }\n\n  function normalizeChangelogLink(\n    changelogLink,\n    project\n  ) {\n    if (!changelogLink) {\n      return null;\n    }\n\n    if (\n      changelogLink.getAttribute(\n        CHANGELOG_TARGET_ATTRIBUTE\n      ) !== project.targetUrl\n    ) {\n      changelogLink.setAttribute(\n        CHANGELOG_TARGET_ATTRIBUTE,\n        project.targetUrl\n      );\n    }\n\n    if (\n      changelogLink.href !==\n      project.targetUrl\n    ) {\n      changelogLink.setAttribute(\n        \"href\",\n        project.targetUrl\n      );\n    }\n\n    if (\n      changelogLink.getAttribute(\n        \"target\"\n      ) !== \"_self\"\n    ) {\n      changelogLink.setAttribute(\n        \"target\",\n        \"_self\"\n      );\n    }\n\n    return changelogLink;\n  }\n\n  function rewriteChangelogLink(\n    nav,\n    project\n  ) {\n    const changelogLink =\n      findChangelogLink(nav, project);\n\n    return normalizeChangelogLink(\n      changelogLink,\n      project\n    );\n  }\n\n  /*\n   * ReadMe's mobile flyout menu is a separate DOM\n   * structure from the desktop tab bar (see\n   * MOBILE_NAV_SELECTOR), so it is never reached by the\n   * NAV_SELECTOR-scoped rewrite below. Fix its Changelog\n   * link the same way.\n   */\n  function normalizeMobileChangelogLinks(\n    project\n  ) {\n    Array.from(\n      document.querySelectorAll(\n        MOBILE_NAV_SELECTOR\n      )\n    )\n      .filter((link) =>\n        isChangelogLink(link, project)\n      )\n      .forEach((link) =>\n        normalizeChangelogLink(\n          link,\n          project\n        )\n      );\n  }\n\n  /*\n   * This is the important part.\n   *\n   * Changelog is returned only when the URL is an exact match.\n   * Every other /docs page returns Directory.\n   */\n  function getExpectedActiveLink(\n    nav,\n    project,\n    changelogLink\n  ) {\n    const pathname = project.pathname;\n\n    if (\n      pathname === project.targetPath\n    ) {\n      return changelogLink;\n    }\n\n    if (\n      pathname === project.rootPath\n    ) {\n      return findHomeLink(\n        nav,\n        project\n      );\n    }\n\n    if (\n      pathIsWithin(\n        pathname,\n        project.docsPath\n      )\n    ) {\n      return findDirectoryLink(\n        nav,\n        project\n      );\n    }\n\n    if (\n      pathIsWithin(\n        pathname,\n        project.referencePath\n      )\n    ) {\n      return findReferenceLink(\n        nav,\n        project\n      );\n    }\n\n    if (\n      pathIsWithin(\n        pathname,\n        project.recipesPath\n      )\n    ) {\n      return findRecipesLink(\n        nav,\n        project\n      );\n    }\n\n    if (\n      pathIsWithin(\n        pathname,\n        project.discussionsPath\n      )\n    ) {\n      return findDiscussionsLink(\n        nav,\n        project\n      );\n    }\n\n    return null;\n  }\n\n  function findIndicator(nav) {\n    return (\n      Array.from(nav.children).find(\n        (element) => {\n          return (\n            element instanceof\n              HTMLElement &&\n            element.tagName === \"DIV\" &&\n            typeof element.className ===\n              \"string\" &&\n            element.className.includes(\n              \"Header-subnav-tab\"\n            )\n          );\n        }\n      ) || null\n    );\n  }\n\n  function setLinkActive(\n    link,\n    shouldBeActive\n  ) {\n    if (!link) {\n      return;\n    }\n\n    if (\n      link.classList.contains(\"active\") !==\n      shouldBeActive\n    ) {\n      link.classList.toggle(\n        \"active\",\n        shouldBeActive\n      );\n    }\n\n    if (shouldBeActive) {\n      if (\n        link.getAttribute(\n          \"aria-current\"\n        ) !== \"page\"\n      ) {\n        link.setAttribute(\n          \"aria-current\",\n          \"page\"\n        );\n      }\n    } else if (\n      link.hasAttribute(\"aria-current\")\n    ) {\n      link.removeAttribute(\n        \"aria-current\"\n      );\n    }\n  }\n\n  function moveIndicator(\n    nav,\n    activeLink\n  ) {\n    if (!activeLink) {\n      return;\n    }\n\n    const indicator =\n      findIndicator(nav);\n\n    if (!indicator) {\n      return;\n    }\n\n    const navRect =\n      nav.getBoundingClientRect();\n\n    const linkRect =\n      activeLink.getBoundingClientRect();\n\n    /*\n     * Skip hidden duplicate or mobile navigation\n     * until it becomes visible.\n     */\n    if (\n      navRect.width \u003c= 0 ||\n      linkRect.width \u003c= 0\n    ) {\n      return;\n    }\n\n    const left =\n      linkRect.left -\n      navRect.left +\n      nav.scrollLeft;\n\n    const expectedTransform =\n      `translateX(${Math.round(left)}px)`;\n\n    const expectedWidth =\n      `${Math.round(linkRect.width)}px`;\n\n    if (\n      indicator.style.transform !==\n      expectedTransform\n    ) {\n      indicator.style.transform =\n        expectedTransform;\n    }\n\n    if (\n      indicator.style.width !==\n      expectedWidth\n    ) {\n      indicator.style.width =\n        expectedWidth;\n    }\n  }\n\n  function updateActiveState(\n    nav,\n    project,\n    changelogLink\n  ) {\n    const expectedActiveLink =\n      getExpectedActiveLink(\n        nav,\n        project,\n        changelogLink\n      );\n\n    /*\n     * Even if the current route is unknown, Changelog must\n     * never remain active unless this is the exact target page.\n     */\n    if (!expectedActiveLink) {\n      setLinkActive(\n        changelogLink,\n        false\n      );\n\n      return;\n    }\n\n    getNavLinks(nav).forEach((link) => {\n      setLinkActive(\n        link,\n        link === expectedActiveLink\n      );\n    });\n\n    moveIndicator(\n      nav,\n      expectedActiveLink\n    );\n  }\n\n  function applyNavigationState() {\n    if (state.destroyed) {\n      return;\n    }\n\n    const project =\n      getCurrentProject();\n\n    if (!project) {\n      return;\n    }\n\n    normalizeMobileChangelogLinks(\n      project\n    );\n\n    getPrimaryNavs().forEach((nav) => {\n      const changelogLink =\n        rewriteChangelogLink(\n          nav,\n          project\n        );\n\n      if (!changelogLink) {\n        return;\n      }\n\n      updateActiveState(\n        nav,\n        project,\n        changelogLink\n      );\n    });\n  }\n\n  function queueApply() {\n    if (\n      state.destroyed ||\n      state.animationFrame !== null\n    ) {\n      return;\n    }\n\n    state.animationFrame =\n      window.requestAnimationFrame(() => {\n        state.animationFrame = null;\n        applyNavigationState();\n      });\n  }\n\n  function clearRetryTimers() {\n    state.retryTimers.forEach(\n      (timer) => {\n        window.clearTimeout(timer);\n      }\n    );\n\n    state.retryTimers.clear();\n  }\n\n  function scheduleSettlingPasses() {\n    clearRetryTimers();\n    queueApply();\n\n    /*\n     * ReadMe may change the URL, article, and active\n     * classes in separate render passes.\n     */\n    [50, 150, 400, 900].forEach(\n      (delay) => {\n        const timer =\n          window.setTimeout(() => {\n            state.retryTimers.delete(\n              timer\n            );\n\n            queueApply();\n          }, delay);\n\n        state.retryTimers.add(timer);\n      }\n    );\n  }\n\n  function activeStateNeedsRepair() {\n    const project =\n      getCurrentProject();\n\n    if (!project) {\n      return false;\n    }\n\n    const navs = getPrimaryNavs();\n\n    if (!navs.length) {\n      return true;\n    }\n\n    return navs.some((nav) => {\n      const changelogLink =\n        findChangelogLink(\n          nav,\n          project\n        );\n\n      if (!changelogLink) {\n        return true;\n      }\n\n      const expectedActiveLink =\n        getExpectedActiveLink(\n          nav,\n          project,\n          changelogLink\n        );\n\n      /*\n       * Unknown routes still must not leave\n       * Changelog highlighted.\n       */\n      if (!expectedActiveLink) {\n        return (\n          changelogLink.classList.contains(\n            \"active\"\n          ) ||\n          changelogLink.hasAttribute(\n            \"aria-current\"\n          )\n        );\n      }\n\n      const activeLinks =\n        getNavLinks(nav).filter(\n          (link) =>\n            link.classList.contains(\n              \"active\"\n            ) ||\n            link.getAttribute(\n              \"aria-current\"\n            ) === \"page\"\n        );\n\n      return (\n        activeLinks.length !== 1 ||\n        activeLinks[0] !==\n          expectedActiveLink\n      );\n    });\n  }\n\n  function handleRouteCheck() {\n    const currentPath =\n      getCurrentPath();\n\n    if (\n      currentPath !== state.lastPath\n    ) {\n      state.lastPath = currentPath;\n      scheduleSettlingPasses();\n      return;\n    }\n\n    if (activeStateNeedsRepair()) {\n      queueApply();\n    }\n  }\n\n  function getEventElement(event) {\n    if (\n      event.target instanceof Element\n    ) {\n      return event.target;\n    }\n\n    if (\n      event.target instanceof Node\n    ) {\n      return event.target.parentElement;\n    }\n\n    return null;\n  }\n\n  function handleClick(event) {\n    const eventElement =\n      getEventElement(event);\n\n    if (!eventElement) {\n      return;\n    }\n\n    /*\n     * Match links in the desktop tab bar OR the mobile\n     * flyout menu. ReadMe's mobile menu is a structurally\n     * different DOM from the desktop tab bar and is never\n     * inside NAV_SELECTOR, so scoping the lookup to that\n     * selector alone silently missed every mobile\n     * Changelog tap.\n     */\n    const link = eventElement.closest(\n      `${NAV_SELECTOR} a[href], ${MOBILE_NAV_SELECTOR}`\n    );\n\n    if (\n      !(link instanceof\n        HTMLAnchorElement)\n    ) {\n      return;\n    }\n\n    const project =\n      getCurrentProject();\n\n    if (!project) {\n      return;\n    }\n\n    /*\n     * For normal header/flyout links, let ReadMe handle\n     * its normal SPA navigation. The observer and route\n     * watcher will update the active state afterward.\n     */\n    if (\n      !isChangelogLink(\n        link,\n        project\n      )\n    ) {\n      window.setTimeout(\n        scheduleSettlingPasses,\n        0\n      );\n\n      return;\n    }\n\n    /*\n     * Always make sure modified clicks and\n     * open-in-new-tab use the correct URL.\n     */\n    link.setAttribute(\n      CHANGELOG_TARGET_ATTRIBUTE,\n      project.targetUrl\n    );\n\n    link.setAttribute(\n      \"href\",\n      project.targetUrl\n    );\n\n    link.setAttribute(\n      \"target\",\n      \"_self\"\n    );\n\n    const isModifiedClick =\n      event.metaKey ||\n      event.ctrlKey ||\n      event.shiftKey ||\n      event.altKey ||\n      event.button !== 0;\n\n    if (isModifiedClick) {\n      return;\n    }\n\n    /*\n     * Prevent ReadMe's native Changelog router from\n     * reducing the destination back to /docs.\n     */\n    event.preventDefault();\n    event.stopPropagation();\n    event.stopImmediatePropagation();\n\n    window.location.assign(\n      project.targetUrl\n    );\n  }\n\n  function handlePageShow() {\n    state.lastPath =\n      getCurrentPath();\n\n    scheduleSettlingPasses();\n  }\n\n  function initialize() {\n    state.lastPath =\n      getCurrentPath();\n\n    /*\n     * Capture phase runs before ReadMe's\n     * React click handlers.\n     */\n    window.addEventListener(\n      \"click\",\n      handleClick,\n      true\n    );\n\n    window.addEventListener(\n      \"popstate\",\n      handleRouteCheck\n    );\n\n    window.addEventListener(\n      \"hashchange\",\n      handleRouteCheck\n    );\n\n    window.addEventListener(\n      \"pageshow\",\n      handlePageShow\n    );\n\n    /*\n     * The header itself may remain mounted while the\n     * article changes. Watching body content catches\n     * those SPA article replacements.\n     *\n     * Only child-list changes are observed, so the\n     * script's own class and href updates do not\n     * create a MutationObserver loop.\n     */\n    state.observer =\n      new MutationObserver(() => {\n        handleRouteCheck();\n      });\n\n    state.observer.observe(\n      document.body,\n      {\n        childList: true,\n        subtree: true,\n      }\n    );\n\n    /*\n     * Fallback route check. This only updates the DOM\n     * when the pathname or active state is incorrect.\n     */\n    state.routeInterval =\n      window.setInterval(\n        handleRouteCheck,\n        500\n      );\n\n    scheduleSettlingPasses();\n  }\n\n  function destroy() {\n    state.destroyed = true;\n\n    window.removeEventListener(\n      \"click\",\n      handleClick,\n      true\n    );\n\n    window.removeEventListener(\n      \"popstate\",\n      handleRouteCheck\n    );\n\n    window.removeEventListener(\n      \"hashchange\",\n      handleRouteCheck\n    );\n\n    window.removeEventListener(\n      \"pageshow\",\n      handlePageShow\n    );\n\n    if (state.observer) {\n      state.observer.disconnect();\n      state.observer = null;\n    }\n\n    if (\n      state.routeInterval !== null\n    ) {\n      window.clearInterval(\n        state.routeInterval\n      );\n\n      state.routeInterval = null;\n    }\n\n    if (\n      state.animationFrame !== null\n    ) {\n      window.cancelAnimationFrame(\n        state.animationFrame\n      );\n\n      state.animationFrame = null;\n    }\n\n    clearRetryTimers();\n  }\n\n  window[SCRIPT_KEY] = {\n    destroy,\n    refresh:\n      scheduleSettlingPasses,\n  };\n\n  if (\n    document.readyState ===\n    \"loading\"\n  ) {\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      initialize,\n      { once: true }\n    );\n  } else {\n    initialize();\n  }\n})();\n\n\n// Hero search trigger\nfunction initHeroSearch() {\n  var trigger = document.getElementById('hero-search-trigger');\n  var searchBtn = document.querySelector('.rm-SearchToggle');\n\n  if (trigger && searchBtn && !trigger.dataset.bound) {\n    trigger.dataset.bound = 'true';\n    trigger.addEventListener('click', function () {\n      searchBtn.click();\n    });\n    return true;\n  }\n  return false;\n}\n\nvar attempts = 0;\nvar poll = setInterval(function () {\n  attempts++;\n  if (initHeroSearch() || attempts > 20) {\n    clearInterval(poll);\n  }\n}, 300);\n\n// AdRoll\nadroll_adv_id = \"TFQKXJNRFJEF5CM6V73ISQ\";\nadroll_pix_id = \"ONVWEBEM5BGVHHBA6X32YK\";\n\n(function () {\n  var _onload = function () {\n    if (document.readyState && !/loaded|complete/.test(document.readyState)) { setTimeout(_onload, 10); return; }\n    if (!window.__adroll_loaded) { __adroll_loaded = true; setTimeout(_onload, 50); return; }\n    var scr = document.createElement(\"script\");\n    var host = ((\"https:\" == document.location.protocol) ? \"https://s.adroll.com\" : \"http://a.adroll.com\");\n    scr.setAttribute('async', 'true');\n    scr.type = \"text/javascript\";\n    scr.src = host + \"/j/roundtrip.js\";\n    ((document.getElementsByTagName('head') || [null])[0] ||\n      document.getElementsByTagName('script')[0].parentNode).appendChild(scr);\n  };\n  if (window.addEventListener) { window.addEventListener('load', _onload, false); }\n  else { window.attachEvent('onload', _onload); }\n}());\n\n// Image zoom\n(function () {\n  const zoomerContainer = document.querySelector('.image-zoomer-container');\n  const zoomImage = document.getElementById('zoom-image');\n\n  if (!zoomerContainer || !zoomImage) return;\n\n  zoomerContainer.addEventListener('mousemove', (e) => {\n    const rect = zoomerContainer.getBoundingClientRect();\n    const x = e.clientX - rect.left;\n    const y = e.clientY - rect.top;\n    const xPercent = (x / rect.width) * 100;\n    const yPercent = (y / rect.height) * 100;\n    zoomImage.style.transformOrigin = `${xPercent}% ${yPercent}%`;\n    zoomImage.classList.add('move');\n  });\n\n  zoomerContainer.addEventListener('mouseleave', () => {\n    zoomImage.style.transformOrigin = 'center';\n    zoomImage.classList.remove('move');\n  });\n}());\n\n\n// Heading click — \"Link copied\" pill notification\n(function () {\n\n  // Creates and animates a floating \"Link copied\" pill on the clicked heading\n  // Also copies the full URL (including hash) to the clipboard\n  function showLinkCopiedPill(heading) {\n    var anchor = heading.querySelector('.heading-anchor-icon');\n    if (!anchor) return;\n\n    var href = anchor.getAttribute('href');\n    if (!href) return;\n\n    // Build the full URL with the hash\n    var fullUrl = window.location.origin + window.location.pathname + href;\n\n    // Copy to clipboard, then show the pill\n    navigator.clipboard.writeText(fullUrl).then(function () {\n      // Remove any existing pill before creating a new one\n      var existing = heading.querySelector('.rp-link-copied-pill');\n      if (existing) existing.remove();\n\n      // Build the pill element\n      var pill = document.createElement('span');\n      pill.className = 'rp-link-copied-pill';\n      pill.textContent = '🔗 Link copied';\n      pill.style.cssText = [\n        'position: absolute',\n        'right: 32px',\n        'top: 50%',\n        'transform: translateY(-50%)',\n        'font-family: var(--recurly-font, sans-serif)',\n        'font-size: 11px',\n        'font-weight: 700',\n        'color: #0D0D0B',\n        'background: #FFD706',\n        'padding: 3px 10px',\n        'border-radius: 12px',\n        'pointer-events: none',\n        'white-space: nowrap',\n        'z-index: 10',\n        'opacity: 1',\n        'transition: opacity 2.5s ease, transform 2.5s ease',\n      ].join(';');\n\n      heading.appendChild(pill);\n\n      // Double rAF ensures the browser has painted the initial state\n      // before triggering the float-up + fade-out transition\n      requestAnimationFrame(function () {\n        requestAnimationFrame(function () {\n          pill.style.transform = 'translateY(calc(-50% - 14px))';\n          pill.style.opacity = '0';\n        });\n      });\n\n      // Remove the pill from the DOM after the transition completes\n      setTimeout(function () {\n        pill.remove();\n      }, 8000);\n    }).catch(function (err) {\n      console.error('Failed to copy link to clipboard:', err);\n    });\n  }\n\n  function attachListeners() {\n    document.querySelectorAll('.rm-Markdown.markdown-body .heading').forEach(function (heading) {\n      // Skip headings that already have listeners attached\n      if (heading.dataset.rpAttached) return;\n      heading.dataset.rpAttached = 'true';\n\n      // Click anywhere on the heading text (not the anchor icon)\n      // — programmatically click the anchor so ReadMe's native handler\n      // runs normally, then show the pill and copy the link\n      heading.addEventListener('click', function (e) {\n        // Ignore clicks on the anchor icon itself — it has its own listener below\n        if (e.target.closest('.heading-anchor-icon')) return;\n\n        var anchor = heading.querySelector('.heading-anchor-icon');\n        if (!anchor) return;\n\n        // Let ReadMe handle the navigation natively\n        anchor.click();\n        showLinkCopiedPill(heading);\n      });\n\n      // Click on the anchor icon — ReadMe handles the hash natively,\n      // we just copy the link and show the pill\n      var anchor = heading.querySelector('.heading-anchor-icon');\n      if (anchor) {\n        anchor.addEventListener('click', function () {\n          showLinkCopiedPill(heading);\n        });\n      }\n    });\n  }\n\n  // Attach listeners on initial page load\n  attachListeners();\n\n  // Re-attach after ReadMe's SPA router swaps page content\n  var observer = new MutationObserver(function () {\n    attachListeners();\n  });\n\n  observer.observe(document.body, { childList: true, subtree: true });\n\n})();\n\n/* ============================================================\n   rp-shelf — infinite carousel behavior.\n   Paste into ReadMe Custom JS.\n\n   Structure expected per shelf (inside HTMLBlock):\n     \u003cdiv class=\"rp-shelf rp-shelf-carousel\">\n       \u003cdiv class=\"rp-shelf-header\">...\u003c/div>\n       \u003cdiv class=\"rp-shelf-viewport\">\n         \u003cdiv class=\"rp-shelf-track\">\n           \u003cdiv class=\"rp-shelf-card\">...\u003c/div>\n           ...\n         \u003c/div>\n       \u003c/div>\n       \u003cdiv class=\"rp-shelf-controls\">\n         \u003cbutton class=\"rp-shelf-btn rp-shelf-prev\">...\u003c/button>\n         \u003cbutton class=\"rp-shelf-btn rp-shelf-next\">...\u003c/button>\n       \u003c/div>\n     \u003c/div>\n   ============================================================ */\n\n(function () {\n  'use strict';\n\n  var TRANSITION_MS = 500;\n  var GAP_PX = 14;\n\n  function initShelf(shelf) {\n    if (shelf.dataset.rpShelfInit === '1') return;\n    shelf.dataset.rpShelfInit = '1';\n\n    var track = shelf.querySelector('.rp-shelf-track');\n    var prevBtn = shelf.querySelector('.rp-shelf-prev');\n    var nextBtn = shelf.querySelector('.rp-shelf-next');\n    if (!track || !prevBtn || !nextBtn) return;\n\n    var realCards = Array.prototype.slice.call(track.children);\n    var total = realCards.length;\n    if (total \u003c 3) return; // safety net — 3+ cards required for carousel\n\n    // Prepend 2 clones (last two) and append 2 clones (first two).\n    // This lets us show a full 3-card frame when currentIndex is -1 or total,\n    // so the loop reset is visually seamless.\n    var prevPrev = realCards[total - 2].cloneNode(true);\n    var prev = realCards[total - 1].cloneNode(true);\n    var next = realCards[0].cloneNode(true);\n    var nextNext = realCards[1].cloneNode(true);\n    [prevPrev, prev, next, nextNext].forEach(function (c) {\n      c.setAttribute('data-clone', 'true');\n      c.classList.remove('rp-active');\n    });\n    track.insertBefore(prevPrev, realCards[0]);\n    track.insertBefore(prev, realCards[0]);\n    track.appendChild(next);\n    track.appendChild(nextNext);\n\n    var currentIndex = 0; // pointer into real cards (0..total-1)\n    var isTransitioning = false;\n\n    function cardWidth() {\n      return realCards[0].getBoundingClientRect().width;\n    }\n\n    function setActive(idx) {\n      var all = track.children;\n      // Active card lives at track index (idx + 2) because of the two prepended clones.\n      var activeTrackIdx = idx + 2;\n      for (var i = 0; i \u003c all.length; i++) {\n        if (i === activeTrackIdx) all[i].classList.add('rp-active');\n        else all[i].classList.remove('rp-active');\n      }\n    }\n\n    function positionTrack(withTransition) {\n      var w = cardWidth();\n      if (!w) {\n        // Not yet laid out — retry next frame.\n        requestAnimationFrame(function () { positionTrack(withTransition); });\n        return;\n      }\n      var offset = (currentIndex + 1) * (w + GAP_PX);\n      track.style.transition = withTransition\n        ? 'transform ' + TRANSITION_MS + 'ms cubic-bezier(0.4, 0, 0.2, 1)'\n        : 'none';\n      track.style.transform = 'translateX(' + (-offset) + 'px)';\n    }\n\n    function go(delta) {\n      if (isTransitioning) return;\n      isTransitioning = true;\n      currentIndex += delta;\n      setActive(currentIndex);\n      positionTrack(true);\n\n      window.setTimeout(function () {\n        // Handle infinite-loop reset\n        if (currentIndex >= total) currentIndex = 0;\n        else if (currentIndex \u003c 0) currentIndex = total - 1;\n        setActive(currentIndex);\n        // Snap to real position without transition\n        positionTrack(false);\n        // Force a reflow so the next transition takes effect\n        void track.offsetHeight;\n        isTransitioning = false;\n      }, TRANSITION_MS);\n    }\n\n    nextBtn.addEventListener('click', function () { go(1); });\n    prevBtn.addEventListener('click', function () { go(-1); });\n\n    // Keyboard support once a control is focused\n    shelf.addEventListener('keydown', function (e) {\n      if (e.key === 'ArrowRight') { e.preventDefault(); go(1); }\n      else if (e.key === 'ArrowLeft') { e.preventDefault(); go(-1); }\n    });\n\n    // Reposition on window resize (card widths change with layout)\n    var resizeTimer;\n    window.addEventListener('resize', function () {\n      window.clearTimeout(resizeTimer);\n      resizeTimer = window.setTimeout(function () {\n        positionTrack(false);\n      }, 100);\n    });\n\n    // Initial state\n    setActive(currentIndex);\n    positionTrack(false);\n  }\n\n  function initAll() {\n    var shelves = document.querySelectorAll('.rp-shelf-carousel');\n    for (var i = 0; i \u003c shelves.length; i++) initShelf(shelves[i]);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initAll);\n  } else {\n    initAll();\n  }\n  // Re-init when ReadMe SPA-navigates to a new page\n  window.addEventListener('load', initAll);\n  var mo = new MutationObserver(function () { initAll(); });\n  mo.observe(document.body, { childList: true, subtree: true });\n})();\n/* ============================================================\n   Changelog page — inject branded intro header\n   Uses MutationObserver to handle SPA navigation. Each time\n   the DOM changes, attempts to inject the header. Idempotent —\n   the function checks for an existing header and bails if found.\n   ============================================================ */\n(function () {\n  function injectChangelogHeader() {\n    var container = document.querySelector('.rm-Changelog .rm-ContainerNarrow');\n    if (!container) return;\n    if (document.getElementById('recurly-changelog-header')) return;\n    var header = document.createElement('div');\n    header.id = 'recurly-changelog-header';\n    header.className = 'rm-Markdown markdown-body';\n    header.style.padding = '24px 0 8px';\n    header.innerHTML = `\n      \u003ch1>Recurly Commerce Changelog\u003c/h1>\n      \u003cp>Discover what's new in Recurly Commerce. Browse posts by year to see recent launches, enhancements, and behind-the-scenes improvements that keep your platform sharp.\u003c/p>\n      \u003cp class=\"rss-line\">\n        \u003ci class=\"fa-solid fa-rss rss-icon\" aria-hidden=\"true\">\u003c/i>\n        Stay in the loop — copy our \u003cbutton type=\"button\" class=\"rss-copy\" data-url=\"https://docs.recurly.com/recurly-subscriptions/changelog.rss\">RSS feed URL\u003c/button> and paste it into your favorite RSS reader to get every update the moment it ships.\n      \u003c/p>\n      \u003cdiv class=\"rss-instructions-wrap\">\n        \u003cbutton type=\"button\" class=\"rss-instructions-toggle\" aria-expanded=\"false\" aria-controls=\"rss-instructions-body\">\n          \u003ci class=\"fa-solid fa-circle-question\" aria-hidden=\"true\">\u003c/i>\n          How to use this URL\n          \u003ci class=\"fa-solid fa-chevron-down rss-chevron\" aria-hidden=\"true\">\u003c/i>\n        \u003c/button>\n        \u003cdiv id=\"rss-instructions-body\" class=\"rss-instructions-body\" hidden>\n          \u003cp>An RSS reader lets you subscribe to the changelog and receive new posts automatically — no need to check back manually. You can usually choose to see posts as a combined feed or read each one in full.\u003c/p>\n          \u003cp>We recommend \u003ca href=\"https://feedly.com\" target=\"_blank\" rel=\"noopener\">Feedly\u003c/a> or \u003ca href=\"https://feeder.co\" target=\"_blank\" rel=\"noopener\">Feeder\u003c/a> — both are free to start, work in your browser, and let you choose how to view updates (summary list or full article view).\u003c/p>\n          \u003col>\n            \u003cli>Click \u003cstrong>RSS feed URL\u003c/strong> above to copy the feed address.\u003c/li>\n            \u003cli>Open your RSS reader (e.g. \u003ca href=\"https://feedly.com\" target=\"_blank\" rel=\"noopener\">Feedly\u003c/a> or \u003ca href=\"https://feeder.co\" target=\"_blank\" rel=\"noopener\">Feeder\u003c/a>) and look for an \u003cstrong>Add feed\u003c/strong> or \u003cstrong>Follow\u003c/strong> option.\u003c/li>\n            \u003cli>Paste the URL you copied and confirm the subscription.\u003c/li>\n            \u003cli>New changelog entries will appear in your reader automatically the moment they publish.\u003c/li>\n          \u003c/ol>\n          \u003cp class=\"rss-instructions-tip\">\u003ci class=\"fa-solid fa-lightbulb\" aria-hidden=\"true\">\u003c/i> \u003cstrong>Tip:\u003c/strong> Most readers let you switch between a compact list view (titles only) and an expanded view (full post content). Pick whichever fits your workflow.\u003c/p>\n        \u003c/div>\n      \u003c/div>\n    `;\n    container.insertBefore(header, container.firstChild);\n  }\n\n  /* Click-to-copy handler — registered once via event delegation\n     so it works for any .rss-copy button, including re-injected ones */\n  document.addEventListener('click', function (e) {\n    var btn = e.target.closest('.rss-copy');\n    if (!btn) return;\n    var url = btn.getAttribute('data-url');\n    navigator.clipboard.writeText(url).then(function () {\n      var original = btn.textContent;\n      btn.textContent = 'Copied!';\n      btn.classList.add('rss-copied');\n      setTimeout(function () {\n        btn.textContent = original;\n        btn.classList.remove('rss-copied');\n      }, 1500);\n    });\n  });\n\n  /* Collapsible toggle handler — event delegation, works after re-injection */\n  document.addEventListener('click', function (e) {\n    var toggle = e.target.closest('.rss-instructions-toggle');\n    if (!toggle) return;\n    var body = document.getElementById('rss-instructions-body');\n    if (!body) return;\n    var isOpen = toggle.getAttribute('aria-expanded') === 'true';\n    toggle.setAttribute('aria-expanded', isOpen ? 'false' : 'true');\n    body.hidden = isOpen;\n    toggle.classList.toggle('rss-instructions-open', !isOpen);\n  });\n\n  /* Run immediately for first page load */\n  injectChangelogHeader();\n\n  /* Watch DOM for changes — re-injects on SPA navigation\n     when ReadMe rebuilds the changelog subtree */\n  var observer = new MutationObserver(injectChangelogHeader);\n  observer.observe(document.body, {\n    childList: true,\n    subtree: true\n  });\n})();","html":{"header":"\u003cstyle>\n/* Hide immediately, then fade in after 1s */\nbody .hub-is-home {\n  opacity: 0;\n  animation: hubFadeIn 0.4s ease forwards;\n  animation-delay: .8s;\n}\n\n@keyframes hubFadeIn {\n  to { opacity: 1; }\n}\n\u003c/style>\n\n\n\n\n\u003c!-- OneTrust Cookies Consent Notice start for docs.recurly.com -->\n\u003cscript src=\"https://cdn.cookielaw.org/scripttemplates/otSDKStub.js\"  type=\"text/javascript\" charset=\"UTF-8\" data-domain-script=\"c934b14c-a690-45e9-bc4e-7fdf36ff3e69\" >\u003c/script>\n\u003cscript type=\"text/javascript\">\nfunction OptanonWrapper() { }\n\u003c/script>\n\u003c!-- OneTrust Cookies Consent Notice end for docs.recurly.com -->\n\n\u003c!-- Google Tag Manager -->\n\u003cscript>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\nnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\nj=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n})(window,document,'script','dataLayer','GTM-P8SKV3B');\u003c/script>\n\u003c!-- End Google Tag Manager -->\n\n\u003c!-- Google tag for GA4 docs.recurly.com (gtag.js) -->\n\u003cscript async src=\"https://www.googletagmanager.com/gtag/js?id=G-CP3HCXSJ9X\">\u003c/script>\n\u003cscript>\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n  gtag('js', new Date());\n\n  gtag('config', 'G-CP3HCXSJ9X');\n\u003c/script>\n\n\n\u003c!--Linkedin Conversion Tracking-->\n\u003cscript type=\"text/javascript\">\n  _linkedin_data_partner_id = \"42036\";\n  (function()\n  {var s = document.getElementsByTagName(\"script\")[0]; var b = document.createElement(\"script\"); b.type = \"text/javascript\";b.async = true; b.src = \"https://snap.licdn.com/li.lms-analytics/insight.min.js\"; s.parentNode.insertBefore(b, s);}\n  )();\n\u003c/script>\n\n\u003c!-- Facebook Pixel Code -->\n\u003cscript>\n\t!function(f,b,e,v,n,t,s)\n\t{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n\tn.callMethod.apply(n,arguments):n.queue.push(arguments)};\n\tif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n\tn.queue=[];t=b.createElement(e);t.async=!0;\n\tt.src=v;s=b.getElementsByTagName(e)[0];\n\ts.parentNode.insertBefore(t,s)}(window,document,'script',\n\t'https://connect.facebook.net/en_US/fbevents.js');\n\t \n\tfbq('init', '1810072655916642');\n\tfbq('track', 'PageView');\n\u003c/script>\n\u003cnoscript>\n\t\u003cimg height=\"1\" width=\"1\" src=\"https://www.facebook.com/tr?id=1810072655916642&ev=PageView&noscript=1\"/>\n\u003c/noscript>\n\u003c!-- End Facebook Pixel Code -->\n\n\u003c!-- facebook -->\n\n\u003cmeta property=\"og:image\" content=\"https://recurly.com/img2/og-image.gif\">\n\u003cmeta property=\"og:image:url\" content=\"https://recurly.com/img2/og-image.gif\">\n\u003cmeta property=\"og:image:secure_url\" content=\"https://recurly.com/img2/og-image.gif\">\n\u003cmeta property=\"og:image:type\" content=\"image/gif\">\n\u003cmeta property=\"og:image:width\" content=\"1500\">\n\u003cmeta property=\"og:image:height\" content=\"1500\">\n  \n\u003c!-- twitter -->\n\u003cmeta name=\"twitter:account_id\" content=\"57871527\">\n\u003cmeta name=\"twitter:card\" content=\"summary\">\n\u003cmeta name=\"twitter:site\" content=\"@recurly\">\n\n\u003cmeta name=\"twitter:image:src\" content=\"https://recurly.com/img2/og-image.gif\">\n\u003cmeta name=\"twitter:image:width\" content=\"1500\">\n\u003cmeta name=\"twitter:image:height\" content=\"1500\">\n\u003cmeta name=\"format-detection\" content=\"telephone=no\">\n\n\u003c!-- Zendesk -->\n\u003cmeta name='zd-site-verification' content='xd6yjutf4fpsbsgddhodm'>\n\n\u003c!-- Image zoomer -->\n\u003clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/viewerjs@1.10.5/dist/viewer.min.css\">\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/viewerjs@1.10.5/dist/viewer.min.js\">\u003c/script>\n","home_footer":null,"page_footer":"\u003c!-- Google Tag Manager (noscript) -->\n\u003cnoscript>\u003ciframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-P8SKV3B\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\">\u003c/iframe>\u003c/noscript>\n\u003c!-- End Google Tag Manager (noscript) -->\n\n\u003cstyle>\n\n@media print {\n  * {\n    -webkit-print-color-adjust: exact;\n    print-color-adjust: exact;\n  }\n  html,\n  body.theme-solid.page-docs,\n  .wrapper,\n  .container.body-container,\n  .main-content {\n    margin:0px 20px !important;\n    padding: 0 !important;\n  }\n  \n  header#header,\n  .header,\n  .navbar-brand,\n  .navbar {\n    display:block !important;\n    background-color: #723080 !important;\n    box-shadow:  inset 0 0 0 1000px #723080;\n  }\n  header#header {\n  \tmargin: 0 auto 60px !important;\n  }\n  #header.header h1.navbar-brand a {\n    width: 178px !important;\n    height: 40px !important;\n    display:block !important;\n  \tbackground: url(https://files.readme.io/noVlqxc0QhiP1Psgyw2Y_documentation.png) no-repeat !important;\n  \tbackground-size: contain !important;\n  }\n\t.section-left,\n  .docs-header nav {\n    display: none !important;\n  }\n\n  .main-content {\n  \tmargin-top: 0px !important;\n    padding-top: 0px !important;\n  }\n  \n}\n\u003c/style>\n\u003c!-- Image zoomer -->\n\u003cscript>\n        document.addEventListener('DOMContentLoaded', function () {\n            var container = document.getElementById('image-container');\n            var viewer = new Viewer(container, {\n                inline: false,\n                viewed: function() {\n                    viewer.zoomTo(1);\n                },\n                toolbar: {\n                    zoomIn: 4,\n                    zoomOut: 4,\n                    oneToOne: 4,\n                    reset: 4,\n                    prev: 4,\n                    next: 4,\n                    rotateLeft: 4,\n                    rotateRight: 4,\n                    flipHorizontal: 4,\n                    flipVertical: 4,\n                },\n                title: false,\n                tooltip: false,\n                movable: true,\n                zoomable: true,\n                rotatable: false,\n                scalable: false,\n                transition: false,\n                fullscreen: true,\n                keyboard: false,\n            });\n        });\n    \u003c/script>\n"}},"header":{"type":"solid","gradient_color":null,"subnav":{"alignment":"start"},"link_style":"tabs","overlay":{"fill":"auto","type":"triangles","position":"top-left","image":{"uri":null,"url":null,"name":null,"width":null,"height":null,"color":null,"links":{"original_url":null}}}},"navigation":{"collapsible_categories":"disabled","breadcrumbs":"enabled","first_page":"landing_page","left":[],"logo_link":"landing_page","page_icons":"enabled","right":[{"type":"link_url","title":"Docs hub","url":"https://docs.recurly.com/#/","custom_page":null},{"type":"link_url","title":"Support","url":"https://support.recurly.com/","custom_page":null},{"type":"link_url","title":"Contact us","url":"https://recurly.com/contact-us/","custom_page":null},{"type":"link_url","title":"Book demo","url":"https://recurly.com/request-a-demo/","custom_page":null}],"search_modal":"classic","sub_nav":[],"subheader_layout":"links","version":"disabled","links":{"home":{"label":"Home","visibility":"enabled"},"graphql":{"label":"GraphQL","visibility":"disabled","schema":null},"guides":{"label":"Guides","alias":"Directory","visibility":"enabled"},"reference":{"label":"API Reference","alias":null,"visibility":"enabled"},"recipes":{"label":"Recipes","alias":null,"visibility":"disabled"},"changelog":{"label":"Changelog","alias":null,"visibility":"enabled"},"discussions":{"label":"Discussions","alias":null,"visibility":"disabled"}}}},"i18n":{"defaultLanguage":"en","languages":[{"code":"en","type":"manual"}],"state":"enabled","do_not_translate_words":[],"custom_contexts":null,"ai_unlocked_languages":null}}},"version":{"_id":"6865c648c6b75f0030446866","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"pdfStatus":"","source":"readme","project":"6865c648c6b75f0030446843","releaseDate":"2025-07-02T23:52:40.338Z","apiRegistries":[{"filename":"commerce-api-documentation.json","uuid":"7atcmv8cn3rm"},{"filename":"prive-widget-documentation.json","uuid":"4nl9ge0momyj4x1"},{"filename":"prive-api-documentation.json","uuid":"e1ttaq3nmcb337q9"}],"createdAt":"2025-07-02T23:52:40.369Z","updatedAt":"2026-10-14T16:53:45.328Z","__v":9}},"i18n":{"language":"en","translations":{"en":{"common":{"ai":{"aiOpenFailed":"Failed to open SuperHub AI panel.","askAi":"Ask AI","askAiAriaLabel":"Open Ask AI Assistant","chatgpt":"Open in ChatGPT","claude":"Open in Claude","copied":"Copied","mdCopy":"Copy Page","mdOpenFailed":"Failed to open as markdown","mdView":"View as Markdown","mcp":{"appNotFound":"{{app}} does not appear to be installed.","command":"Copy MCP Command","config":"Copy MCP Config","copied":"Copied to clipboard!","cursor":"Connect to Cursor","downloadApp":"Download {{app}}","header":"MCP","vscode":"Connect to VS Code"},"noMdToCopy":"No markdown content available to copy.","openFailed":"Failed to open {{option}}.","settings":{"askAiRequired":"Ask AI must be enabled for your project","description":"Adds a dropdown menu for sharing docs with AI assistants.","disabledInternal":"Disabled for internal docs — set to public to enable","dropdownOptions":"Dropdown Options","preview":"Preview","saveFailed":"Failed to save AI dropdown configuration. Please try again.","title":"AI Dropdown"}},"aiInlineEditor":{"disabled":"The AI inline editor has been disabled for this project."},"apiConfig":{"allRequests":"All Requests","allRequestsFilter":"All Requests","apiKeysNotFound":"No API keys found.","apiKeysNotSynced":"API keys are not synced with this developer hub.","apiRequests":"API Requests","authentication":"Authentication","credentials":"Credentials","dayFilter":"Last 24 Hours","emptyStatePrompt":"Make a request to see them here or \u003ca>Try It\u003c/a>!","error":"Error","errorRequestsFilter":"400 & 500","gettingStarted":"Getting Started","logInPrompt":"Log in to see your API keys","monthFilter":"Last 30 Days","moreErrors":"More Errors","moreRequests":"More Requests","myRecentErrors":"My Recent Errors","myRecentRequests":"My Recent Requests","myRequests":"My Requests","myTopEndpoints":"My Top Endpoints","personalizedDocsSetup":"Set up \u003cButton>Personalized Docs\u003c/Button> to show users their API keys.","pickALanguage":"Pick a language","popularEndpoints":"Popular Endpoints","success":"Success","weekFilter":"Past week","yourApiKeys":"Your API Keys"},"attribution":"by {{attribution}}","auth":{"any":"any","apiKey":"API Key","apiKeyPrompt":"Get API Key","apiKeyShow":"Show API Key","apiKeyHide":"Hide API Key","apiKeyToggle":"Toggle API Key","apiInfo":"API Info","authenticate":"Authenticate","authorize":"Authorize","authorizationUrl":"Authorization URL","authorizedScopes":"Authorized scopes for this token","authorizedScopesEmpty":"Token has no authorized scopes","bearer":"Bearer","clearSelection":"Clear Selection","clientId":"Client ID","deselectAll":"Deselect All","credentialMessage":"{{projectName}} accepts {{count}} credential methods. You can use {{option}} of them.","credentialsFor":"Credentials for {{name}}","credentialsForMd":"Credentials for `{{name}}`","either":"eitherLog in to use your API keys","grantType":"Grant Type","info":{"base64":"Your username and password will be combined with a : to form a base64-encoded string: `ENCODED_TOKEN`","basic":"Your username and password are being sent in the [header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization) of the request.","bearer":"\n  Bearer authentication gives access to the “bearer of the token” and must be sent in the Authorization header. For example:\n  ```bash\n  curl --request POST \\\n       --url https://httpbin.org/anything/bearer\n       --header 'Authorization: Bearer BEARER_TOKEN'\n  ```\n  ","cookie":"Your API Key is being sent as a [cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies).","header":"Your API Key is sent in the request [header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers).","jwt":"The bearer token's format is JSON Web Token (JWT). Read more at [JWT.io](https://jwt.io/).","query":"Your API Key is being sent as a query parameter in the [URL](https://developer.mozilla.org/en-US/docs/Web/API/URL)."},"infoTable":{"contact":"Contact","description":"Description","identifier":"Identifier","license":"License","name":"Name","termsOfService":"Terms of Service","title":"Title","summary":"Summary","url":"URL","version":"Version"},"information":"Information","label":"Label","lastUsed":"Last Used","logInPrompt":"Log in to use your API keys","logIn":"Log In","logOut":"Log Out","or":"or","password":"password","passwordHideLabel":"Hide","passwordShowLabel":"Show","reAuthorize":"Re-Authorize","required":"required","requiredScopes":"Required Scopes","requiredScopesMissingMsg_one":"Missing {{count}} required scope","requiredScopesMissingMsg_other":"Missing {{count}} required scopes","scopes":"Scopes","scopeGroupAllRequired":"All {{count}} scopes required","scopesOrRequired":"At least 1 scope group required","scopesMissingCount":"({{count}} missing from this token)","scopesMissingMsg_one":"This operation requires {{count}} additional scope","scopesMissingMsg_other":"This operation requires {{count}} additional scopes","scopesRequiredMsg":"Scopes required for this operation","scopesRequiredNoneMsg":"No scopes required for this operation","selectAll":"Select All","selectCredentials":"Select Credentials","token":"token","tokenDetails":"Token Details","tokenRotationMessage":"We recommend you rotate this token.","tokenUrl":"Token URL","useOwnToken":"Use Your Own Token","username":"username"},"close":"Close","colorScheme":{"dark":"Dark","light":"Light","system":"System","title":"Color Scheme"},"changelog":{"added":"Added","deprecated":"Deprecated","fixed":"Fixed","improved":"Improved","removed":"Removed","title":"Changelog"},"copyToClipboard":{"copiedFull":"Copied to clipboard!","copiedShort":"Copied!","copyFull":"Copy to clipboard","copyShort":"Copy","failed":"Failed to copy to clipboard.","unable":"Unable to copy"},"discussions":{"addCommentLabel":"Add Comment","adminLabel":"Admin","answered":"Answered","askQuestion":"Ask a Question","backToAll":"Back to all","blankBodyError":"Your post body cannot be blank.","blankCommentError":"Your comment cannot be blank.","blankPostError":"Your post cannot be blank.","blankTitleError":"Your post title cannot be blank.","cancelButtonLabel":"Cancel","commentAndMarkAnswered":"Comment and mark answered","commentAndReopen":"Comment and reopen","deleteButtonLabel":"Delete","deleteCommentConfirmation":"Are you sure you want to delete this comment?","deleteCommentPermanentConfirmation":"Are you sure you want to permanently delete this comment?","deleteComentSuccess":"This comment has been deleted","deletePermanentlyButtonLabel":"Permanently Delete","deletePostConfirmation":"Are you sure you want to delete this post?","editButtonLabel":"Edit","editedLabel":"edited","emailInputAriaLabel":"name@email.com","emailInputPlaceholder":"Your Email","errorMessagePrefix":"Error:","faqAddLabel":"Add to FAQ","faqRemoveLabel":"Remove from FAQ","faqsLabel":"FAQs","logInToComment":"\u003cb>Log in\u003c/b> to add a comment.","markAsAnswered":"Mark as answered","markAsUnanswered":"Mark as unanswered","markCommentSpamLabel":"Mark this comment as spam","markPostSpamLabel":"Mark this post as spam","nameAndEmailError":"Please fill out your name and email.","nameInputAriaLabel":"Your name","nameInputPlaceholder":"Full name","permanentlyDeleteLabel":"Permanently delete","questionInputAriaLabel":"New question","recaptchaInvalidError":"Invalid ReCaptcha tokens.","recaptchaRequiredError":"Please complete the reCaptcha verification.","recentLabel":"Recent","saveButtonLabel":"Save","submitButtonLabel":"Post Question","tagButtonLabel":"Tag","tagInputPlaceholder":"Enter tag","titleInputAriaLabel":"Question title","titleInputPlaceholder":"Your question title","unansweredLabel":"Unanswered","voteCountLabel":"{{count}} vote","voteCountLabel_plural":"{{count}} votes"},"docsAudit":{"disabled":"The AI Docs Audit has been disabled for this project.","pageMovedOrDeleted":"This page was moved or deleted after the audit completed. Run a new audit to remove this recommendation.","scheduleDisabled":"Disabled by admin","switchBranchToFix":"Switch to {{branch}} to fix these issues"},"emptyState":{"changelog":{"title":"No Changelogs"},"discussion":{"actionLabel":"New Question","description":"Nobody's asked a question yet. Be the first!","title":"No Discussions"},"guide":{"title":"No Guides"},"recipe":{"title":"No Recipes"},"reference":{"title":"No API Endpoints"}},"llmsTxt":{"documentation":"Documentation","documentationFor":"Documentation for {{name}}","groupIndexHint":"Each project below either links to its own llms.txt, which contains a full index of that project's documentation, or inlines the index its authors wrote by hand. Where links are listed, the section and category ones narrow to that part of the docs.","heading":"{{name}} Documentation","hubBanner":"For AI agents: the docs index is at {{url}}.","indexLink":"{{title}} index","mdSuffixHint":"Append .md to any documentation page URL to get its markdown version.","openapiDefinition":"OpenAPI definition","openapiIntroNote":"This is the part of the API’s OpenAPI definition that covers servers and authentication. Each endpoint page has its own operation.","pageNotFound":"Page not found. The full index is at {{url}}. Use the agentTools in the front matter above to search the docs or browse the index.","projectDocumentation":"{{name}} documentation","queryCapabilityHint":"To search every page by keyword, fetch {{url}} with your own terms. Results come back most relevant first.","queryFailedHint":"Search is temporarily unavailable, so this is the complete index rather than the pages matching `{{query}}`.","queryNoResultsHint":"No pages matched `{{query}}`. Fetch {{url}} for the complete index.","queryResultsHint":"Pages matching `{{query}}`, most relevant first. Fetch {{url}} for the complete index.","searchResults":"Search Results","sectionIndexNote":"full section index","siblingPages":"Sibling pages","siteIndexHint":"The index for every project on this site is at {{url}}.","siteSearchHint":"To search every project on this site, fetch {{url}} with your own terms.","splitCategoriesHint":"Category links narrow to a single category.","splitIndexHint":"Each section below links to its own llms.txt, which indexes every page in that section.","subPages":"Sub pages","subsetIndexHint":"This file lists one part of the documentation. The full index is at {{url}}."},"more":"more…","next":"Next","onlyVisibleToAdmins":"Only visible to ReadMe admins","owlbotChat":{"assistant":"Assistant","clearChat":"Clear chat history","closeChat":"Close chat","emptyMessage":"I’ll help you find answers in the docs","emptyTitle":"Ask AI","failureTitle":"Ask AI","fallbackHeading":"Something went wrong with Ask AI","fallbackMessage":"Please try refreshing the page or contact support if the problem persists.","inputPlaceholder":"Ask AI anything…","interrupted":"Ask AI couldn’t finish this answer. Please try again.","providerFailure":"Ask AI is temporarily unavailable. Please try again in a moment.","resend":"Resend?","sourceCount_one":"{{count}} source","sourceCount_other":"{{count}} sources","sourceLabel":"{{title}} ({{section}})","streamError":"...Something went wrong.","tryAgain":"Try Again","typingLabel":"Generating","voteFailure":"Failed to record vote. It may take a moment for the message to be saved. Please try again.","aiDisclaimer":"AI can get things wrong, so double check any info or code. You're responsible for verifying results are accurate and fit your needs before taking action. Do not input sensitive information.","voteLabelDown":"Not helpful","voteLabelUp":"Helpful","thinkingDefault":"Thinking...","thinkingSearchKnowledge":"Searching knowledge base...","thinkingSearchPages":"Searching for keywords...","thinkingListPages":"Looking up pages...","thinkingReadPage":"Reading relevant pages..."},"pageLinter":{"disabled":"The AI Page Linter has been disabled for this project."},"pageNotFound":{"heading":"Page Not Found","metaTitle":"404 Not Found"},"pageThumbs":{"no":"No","placeHolder":"Leave an optional comment…","prompt":"Did this page help you?","submit":"Vote","thankYou":"Thanks for voting!","yes":"Yes"},"poweredBy":"Powered by","printPage":"Print Page","recipes":{"inThisRecipe":"In this Recipe","openRecipe":"Open Recipe","step_one":"{{count}} step","step_other":"{{count}} steps"},"reference":{"callback":"Callback","clearExample":"Clear Example","clearResponse":"Clear Response","data":"Data","example":"Example","examplePrompt":"Choose an example","examplePromptOr":"Or choose an example","examples":"Examples","headers":"Headers","invalidJSON":"Invalid JSON","inspectRequest":"Inspect Request","jsonEditorAriaLabel":"Toggle Raw JSON Editor","jsonEditorLabel":"Edit JSON Body","language":"Language","library":"Library","log":"Log","logsLoading":"Retrieving recent requests…","logsPrompt":"Make a request to see history.","logsSeeAllLabel":"See All Requests","logsStatusLabel":"Status","logsThisMonth_one":"{{count}} Request This Month","logsThisMonth_other":"{{count}} Requests This Month","logsTimeLabel":"Time","logsUserAgentLabel":"User Agent","payloadExample":"Payload Example","recentRequests":"Recent Requests","replayRequest":"Replay Request","request":"Request","requestExample":"Request Example","requestExamples":"Request Examples","requestHistoryPrompt":"Log in to see full request history","requestInstructions":"Request instructions","resetBody":"Reset","response":"Response","showDescription":"Show Description","hideDescription":"Hide Description","sdkCodeEmpty":"No SDK code available","sdkCodeError":"Error retrieving SDK code. Please try again later.","tryIt":"Try It","tryItPrompt":"Click \u003ccode>Try It!\u003c/code> to start a request and see the response here!","tryItPunctuated":"Try It!"},"search":{"arrowsToNavigate":"Use \u003ckbd>↑\u003c/kbd> \u003ckbd>↓\u003c/kbd> to navigate","askAiAbout":"Ask about \"{{query}}\"","askAiEmpty":"Ask AI","askAiSubtitle":"Find the answer using the Ask AI assistant","askAiSuggestionsTitle":"Ask AI Assistant","askFailure":"We had an issue responding, please try again later","filtersAll":"All","filtersEmpty":"No matches","filtersLabel":"Filters","filtersMore":"{{name}} +{{others}}","filtersPlaceholder":"Filter","forMore":"for more","fromTheDocs":"From the Docs","inProject":"in {{project}}","noResults":"No search results for '{{query}}'","noResultsShort":"No search results","resultsFound_one":"{{count}} search result","resultsFound_other":"{{count}} search results","resultsLabel":"Search results","placeholder":"Search","pressEnterToAskAi":"Press \u003ckbd>Enter\u003c/kbd> to ask AI","pressEnterToOpen":"Press \u003ckbd>Enter\u003c/kbd> to open","promptEmpty":"Start typing to search…","promptLoading":"Keep typing to search…","recentTitle":"Recent","removeRecent":"Remove {{label}} from recent searches","searching":"Searching…","thinking":"Thinking"},"sections":{"all":"All","apiLogs":"API Logs","changelog":"Changelog","discussions":"Discussions","guides":"Guides","graphql":"GraphQL","home":"Home","pages":"Pages","recipes":"Recipes","reference":"API Reference"},"sidebar":{"filter":"Filter","filterPages":"Filter pages","noMatchingPages":"No matching pages","search":"Search"},"superHubAgent":{"disabled":"The SuperHub Agent has been disabled for this project."},"tableOfContents":"Table of Contents","time":{"absolute":{"noPrefix":"{{time}}","noPrefixAttributed":"{{time}} by {{attribution}}","postedPrefix":"Posted {{time}}","postedPrefixAttributed":"Posted {{time}} by {{attribution}}","updatedPrefix":"Updated {{time}}","updatedPrefixAttributed":"Updated {{time}} by {{attribution}}"},"justNow":{"noPrefix":"Less than a minute ago","noPrefixAttributed":"Less than a minute ago by {{attribution}}","postedPrefix":"Posted just now","postedPrefixAttributed":"Posted just now by {{attribution}}","updatedPrefix":"Updated just now","updatedPrefixAttributed":"Updated just now by {{attribution}}"},"relative":{"noPrefix":"{{time}}","noPrefixAttributed":"{{time}} by {{attribution}}","postedPrefix":"Posted {{time}}","postedPrefixAttributed":"Posted {{time}} by {{attribution}}","updatedPrefix":"Updated {{time}}","updatedPrefixAttributed":"Updated {{time}} by {{attribution}}"}},"unableToCopy":"Unable to copy","version":{"beta":"Beta","default":"Default","deprecated":"Deprecated","hiddenLabel":"Hidden Version"},"whatsNext":"What’s Next"}}}},"contentLang":"en","is404":false,"isFramePreview":false,"isIframeSsrTransfer":false,"isStreamingSSR":false,"isDetachedProductionSite":false,"lang":"en","langFull":"Default","reqUrl":"/recurly-commerce/docs/postcript-integration","version":{"_id":"6865c648c6b75f0030446866","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"pdfStatus":"","source":"readme","project":"6865c648c6b75f0030446843","releaseDate":"2025-07-02T23:52:40.338Z","apiRegistries":[{"filename":"commerce-api-documentation.json","uuid":"7atcmv8cn3rm"},{"filename":"prive-widget-documentation.json","uuid":"4nl9ge0momyj4x1"},{"filename":"prive-api-documentation.json","uuid":"e1ttaq3nmcb337q9"}],"createdAt":"2025-07-02T23:52:40.369Z","updatedAt":"2026-10-14T16:53:45.328Z","__v":9},"gitVersion":{"ai_translation":{"status":null,"started_at":null,"completed_at":null},"base":null,"display_name":null,"i18n":{"lang":null,"parsed_version":null},"name":"1.0","release_stage":"release","source":"readme","state":"current","updated_at":"2026-10-14T16:53:26.000Z","uri":"/branches/1.0","privacy":{"view":"default"}},"versions":{"total":1,"data":[{"ai_translation":{"status":null,"started_at":null,"completed_at":null},"base":null,"display_name":null,"i18n":{"lang":null,"parsed_version":null},"name":"1.0","release_stage":"release","source":"readme","state":"current","updated_at":"2026-10-14T16:53:26.407Z","uri":"/branches/1.0","privacy":{"view":"default"}}],"type":"version"},"sidebarStatus":{"changelog":true,"custom_pages":false,"discuss":false,"guides":true,"recipes":false,"reference":true}}</script></div><div id="hub-container"><div class="hub-container"><div state-container ng-attr-id="{{state.current().root !== 'docs' &amp;&amp; 'react-app-content-container'}}"><div id="replace-view" ng-non-bindable></div></div></div></div><script>/*<![CDATA[*/window.zEmbed||function(e,t){var n,o,d,i,s,a=[],r=document.createElement("iframe");window.zEmbed=function(){a.push(arguments)},window.zE=window.zE||window.zEmbed,r.src="javascript:false",r.title="",r.role="presentation",(r.frameElement||r).style.cssText="display: none",d=document.getElementsByTagName("script"),d=d[d.length-1],d.parentNode.insertBefore(r,d),i=r.contentWindow,s=i.document;try{o=s}catch(e){n=document.domain,r.src='javascript:var d=document.open();d.domain="'+n+'";void(0);',o=s}o.open()._l=function(){var o=this.createElement("script");n&&(this.domain=n),o.id="js-iframe-async",o.src=e,this.t=+new Date,this.zendeskHost=t,this.zEQueue=a,this.body.appendChild(o)},o.write('<body onload="document._l();">'),o.close()}("https://assets.zendesk.com/embeddable_framework/main.js","recurly.zendesk.com");
/*]]>*/
</script><script>var is_hub = true;
var is_hub2 = true;
var is_hub_edit = true;
</script><div id="ssr-end"><script id="__LOADABLE_REQUIRED_CHUNKS__" type="application/json">[2852,4863,4011,6269,5952,4148,1456,3307,6636,9977,6146,441,1347,8836,5446,1306,9023,3183,1913,9173,7358,8490,3906,8719,1924,2712,4683,3299,2985,2719,6212,4818,1425,5798]</script><script id="__LOADABLE_REQUIRED_CHUNKS___ext" type="application/json">{"namedChunks":["routes-SuperHub","Containers-EndUserContainer","Header","routes-SuperHub-Routes","Doc","ConnectMetadata","RMDXISH","components-AIDropdown","Footer"]}</script>
<script async data-chunk="main" src="https://cdn.readme.io/public/hub/web/main.4941e1501aed0bd793a8.js"></script>
<script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/routes-SuperHub.f0603bbd01361005f7fd.js"></script>
<script async data-chunk="Containers-EndUserContainer" src="https://cdn.readme.io/public/hub/web/Containers-EndUserContainer.ba279dfe398ef78005d4.js"></script>
<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/4011.ce6c48bb14576e39a138.js"></script>
<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/6269.778792ccd2658420d5c4.js"></script>
<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/5952.8c6a0fa16493b16dbf27.js"></script>
<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/4148.76cd30a5d4802a3dbe20.js"></script>
<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/Header.a71e74e7b9156d9e1784.js"></script>
<script async data-chunk="routes-SuperHub-Routes" src="https://cdn.readme.io/public/hub/web/routes-SuperHub-Routes.e46d22cd13527ce84b7c.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/6636.ac569a48bed8092de5b8.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/9977.a933c2a0ee96169ffef7.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/6146.e0750bc6839fd326854d.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/441.0bca8969b4854384884a.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/1347.6265ddeff9b9202723b8.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/8836.278c0fa83edd766823b0.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/5446.66a863132dae0648c54c.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/1306.50782c5e797f388d05de.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/9023.bcc85902ea2bf985310b.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/3183.f59d0ce21b70afe46a86.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/1913.d1821e29b5614715e8ad.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/9173.6fb37b017755ea3477f3.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/7358.f1226fb1f000aa5b010a.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/8490.bfb52ac8715ebb4a36cc.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/3906.0710d2e9919fd8c73afa.js"></script>
<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/Doc.803db4e6172d7a220de7.js"></script>
<script async data-chunk="ConnectMetadata" src="https://cdn.readme.io/public/hub/web/ConnectMetadata.cf7f38752be4f58ead13.js"></script>
<script async data-chunk="RMDXISH" src="https://cdn.readme.io/public/hub/web/2712.4cdafc1e56a745cc323d.js"></script>
<script async data-chunk="RMDXISH" src="https://cdn.readme.io/public/hub/web/4683.d51d276619f8a3e43f84.js"></script>
<script async data-chunk="RMDXISH" src="https://cdn.readme.io/public/hub/web/3299.329900392cfb84c1b904.js"></script>
<script async data-chunk="RMDXISH" src="https://cdn.readme.io/public/hub/web/2985.2821e5d64493c24beadb.js"></script>
<script async data-chunk="RMDXISH" src="https://cdn.readme.io/public/hub/web/2719.c0c0bbd27932020b0b87.js"></script>
<script async data-chunk="RMDXISH" src="https://cdn.readme.io/public/hub/web/RMDXISH.d7b601daf87c1d4d60bf.js"></script>
<script async data-chunk="components-AIDropdown" src="https://cdn.readme.io/public/hub/web/4818.3980b107f271071ef683.js"></script>
<script async data-chunk="components-AIDropdown" src="https://cdn.readme.io/public/hub/web/components-AIDropdown.88def46aeefbfb1f9434.js"></script>
<script async data-chunk="Footer" src="https://cdn.readme.io/public/hub/web/Footer.b7b7b02c71741a3ff9fc.js"></script></div><script id="customJS">(() => {
  "use strict";

  /*
   * Recurly Changelog navigation override
   *
   * - Rewrites each native ReadMe Changelog link
   * - Supports full page loads and ReadMe SPA navigation
   * - Highlights Changelog only on the exact custom changelog page
   * - Restores Directory and other native section highlighting everywhere else
   */

  const SCRIPT_KEY = "__recurlyChangelogNavigation";

  const PROJECTS = {
    "recurly-subscriptions": {
      targetPath:
        "/recurly-subscriptions/docs/recurly-subscriptions-changelog",
    },

    "recurly-commerce": {
      targetPath:
        "/recurly-commerce/docs/recurly-commerce-changelog",
    },

    "recurly-engage": {
      targetPath:
        "/recurly-engage/docs/recurly-engage-changelog",
    },

    "recurly-revrec": {
      targetPath:
        "/recurly-revrec/docs/changelog",
    },
  };

  const NAV_SELECTOR =
    'nav[aria-label="Primary navigation"]';

  /*
   * ReadMe's mobile hamburger menu is a separate
   * "flyout" component, not a <nav aria-label="Primary
   * navigation">. Its items carry ReadMe's stable "rm-"
   * prefixed hook class (unlike the CSS-module hashed
   * classes alongside it, which change across deploys).
   */
  const MOBILE_NAV_SELECTOR =
    ".rm-MobileFlyout-item[href]";

  const CHANGELOG_TARGET_ATTRIBUTE =
    "data-recurly-changelog-target";

  /*
   * Remove an older instance if this script is loaded again.
   */
  if (
    window[SCRIPT_KEY] &&
    typeof window[SCRIPT_KEY].destroy === "function"
  ) {
    window[SCRIPT_KEY].destroy();
  }

  const state = {
    observer: null,
    routeInterval: null,
    animationFrame: null,
    retryTimers: new Set(),
    lastPath: "",
    destroyed: false,
  };

  function normalizePath(value) {
    try {
      const url = new URL(
        value,
        window.location.origin
      );

      const pathname = url.pathname || "/";

      if (pathname === "/") {
        return "/";
      }

      return pathname.replace(/\/+$/, "");
    } catch (error) {
      return "";
    }
  }

  function getCurrentPath() {
    return normalizePath(window.location.href);
  }

  function getCurrentProject() {
    const pathname = getCurrentPath();

    const projectKey = pathname
      .split("/")
      .filter(Boolean)[0];

    const projectConfig =
      PROJECTS[projectKey];

    if (!projectConfig) {
      return null;
    }

    const rootPath = `/${projectKey}`;

    return {
      key: projectKey,
      pathname,
      rootPath,
      docsPath: `${rootPath}/docs`,
      referencePath: `${rootPath}/reference`,
      recipesPath: `${rootPath}/recipes`,
      discussionsPath: `${rootPath}/discuss`,
      nativeChangelogPath: `${rootPath}/changelog`,
      targetPath: normalizePath(
        projectConfig.targetPath
      ),
      targetUrl: new URL(
        projectConfig.targetPath,
        window.location.origin
      ).href,
    };
  }

  function pathIsWithin(
    pathname,
    sectionPath
  ) {
    return (
      pathname === sectionPath ||
      pathname.startsWith(
        `${sectionPath}/`
      )
    );
  }

  function getPrimaryNavs() {
    return Array.from(
      document.querySelectorAll(
        NAV_SELECTOR
      )
    );
  }

  function getNavLinks(nav) {
    return Array.from(
      nav.querySelectorAll("a[href]")
    );
  }

  function getLinkText(link) {
    return link.textContent
      .replace(/\s+/g, " ")
      .trim()
      .toLowerCase();
  }

  function getLinkPath(link) {
    return normalizePath(
      link.getAttribute("href")
    );
  }

  function hasIcon(link, iconClass) {
    return Boolean(
      link.querySelector(`.${iconClass}`)
    );
  }

  function isChangelogLink(
    link,
    project
  ) {
    if (
      !(link instanceof HTMLAnchorElement)
    ) {
      return false;
    }

    if (
      link.hasAttribute(
        CHANGELOG_TARGET_ATTRIBUTE
      )
    ) {
      return true;
    }

    if (
      hasIcon(link, "icon-changelog")
    ) {
      return true;
    }

    if (
      getLinkText(link) === "changelog"
    ) {
      return true;
    }

    const linkPath = getLinkPath(link);

    return (
      linkPath ===
        project.nativeChangelogPath ||
      linkPath === project.targetPath
    );
  }

  function findChangelogLink(
    nav,
    project
  ) {
    return (
      getNavLinks(nav).find((link) =>
        isChangelogLink(link, project)
      ) || null
    );
  }

  function findLinkByIcon(
    nav,
    iconClass
  ) {
    return (
      getNavLinks(nav).find((link) =>
        hasIcon(link, iconClass)
      ) || null
    );
  }

  function findLinkByPath(
    nav,
    pathname
  ) {
    return (
      getNavLinks(nav).find(
        (link) =>
          getLinkPath(link) === pathname
      ) || null
    );
  }

  function findLinkByText(nav, text) {
    const expectedText = text
      .trim()
      .toLowerCase();

    return (
      getNavLinks(nav).find(
        (link) =>
          getLinkText(link) ===
          expectedText
      ) || null
    );
  }

  function findHomeLink(nav, project) {
    return (
      findLinkByIcon(
        nav,
        "icon-landing-page-2"
      ) ||
      findLinkByPath(
        nav,
        project.rootPath
      ) ||
      findLinkByText(nav, "home")
    );
  }

  function findDirectoryLink(
    nav,
    project
  ) {
    return (
      findLinkByIcon(
        nav,
        "icon-guides"
      ) ||
      findLinkByPath(
        nav,
        project.docsPath
      ) ||
      findLinkByText(
        nav,
        "directory"
      ) ||
      findLinkByText(nav, "guides")
    );
  }

  function findReferenceLink(
    nav,
    project
  ) {
    return (
      findLinkByIcon(
        nav,
        "icon-references"
      ) ||
      findLinkByPath(
        nav,
        project.referencePath
      ) ||
      findLinkByText(
        nav,
        "api reference"
      )
    );
  }

  function findRecipesLink(
    nav,
    project
  ) {
    return (
      findLinkByPath(
        nav,
        project.recipesPath
      ) ||
      findLinkByText(nav, "recipes")
    );
  }

  function findDiscussionsLink(
    nav,
    project
  ) {
    return (
      findLinkByPath(
        nav,
        project.discussionsPath
      ) ||
      findLinkByText(
        nav,
        "discussions"
      )
    );
  }

  function normalizeChangelogLink(
    changelogLink,
    project
  ) {
    if (!changelogLink) {
      return null;
    }

    if (
      changelogLink.getAttribute(
        CHANGELOG_TARGET_ATTRIBUTE
      ) !== project.targetUrl
    ) {
      changelogLink.setAttribute(
        CHANGELOG_TARGET_ATTRIBUTE,
        project.targetUrl
      );
    }

    if (
      changelogLink.href !==
      project.targetUrl
    ) {
      changelogLink.setAttribute(
        "href",
        project.targetUrl
      );
    }

    if (
      changelogLink.getAttribute(
        "target"
      ) !== "_self"
    ) {
      changelogLink.setAttribute(
        "target",
        "_self"
      );
    }

    return changelogLink;
  }

  function rewriteChangelogLink(
    nav,
    project
  ) {
    const changelogLink =
      findChangelogLink(nav, project);

    return normalizeChangelogLink(
      changelogLink,
      project
    );
  }

  /*
   * ReadMe's mobile flyout menu is a separate DOM
   * structure from the desktop tab bar (see
   * MOBILE_NAV_SELECTOR), so it is never reached by the
   * NAV_SELECTOR-scoped rewrite below. Fix its Changelog
   * link the same way.
   */
  function normalizeMobileChangelogLinks(
    project
  ) {
    Array.from(
      document.querySelectorAll(
        MOBILE_NAV_SELECTOR
      )
    )
      .filter((link) =>
        isChangelogLink(link, project)
      )
      .forEach((link) =>
        normalizeChangelogLink(
          link,
          project
        )
      );
  }

  /*
   * This is the important part.
   *
   * Changelog is returned only when the URL is an exact match.
   * Every other /docs page returns Directory.
   */
  function getExpectedActiveLink(
    nav,
    project,
    changelogLink
  ) {
    const pathname = project.pathname;

    if (
      pathname === project.targetPath
    ) {
      return changelogLink;
    }

    if (
      pathname === project.rootPath
    ) {
      return findHomeLink(
        nav,
        project
      );
    }

    if (
      pathIsWithin(
        pathname,
        project.docsPath
      )
    ) {
      return findDirectoryLink(
        nav,
        project
      );
    }

    if (
      pathIsWithin(
        pathname,
        project.referencePath
      )
    ) {
      return findReferenceLink(
        nav,
        project
      );
    }

    if (
      pathIsWithin(
        pathname,
        project.recipesPath
      )
    ) {
      return findRecipesLink(
        nav,
        project
      );
    }

    if (
      pathIsWithin(
        pathname,
        project.discussionsPath
      )
    ) {
      return findDiscussionsLink(
        nav,
        project
      );
    }

    return null;
  }

  function findIndicator(nav) {
    return (
      Array.from(nav.children).find(
        (element) => {
          return (
            element instanceof
              HTMLElement &&
            element.tagName === "DIV" &&
            typeof element.className ===
              "string" &&
            element.className.includes(
              "Header-subnav-tab"
            )
          );
        }
      ) || null
    );
  }

  function setLinkActive(
    link,
    shouldBeActive
  ) {
    if (!link) {
      return;
    }

    if (
      link.classList.contains("active") !==
      shouldBeActive
    ) {
      link.classList.toggle(
        "active",
        shouldBeActive
      );
    }

    if (shouldBeActive) {
      if (
        link.getAttribute(
          "aria-current"
        ) !== "page"
      ) {
        link.setAttribute(
          "aria-current",
          "page"
        );
      }
    } else if (
      link.hasAttribute("aria-current")
    ) {
      link.removeAttribute(
        "aria-current"
      );
    }
  }

  function moveIndicator(
    nav,
    activeLink
  ) {
    if (!activeLink) {
      return;
    }

    const indicator =
      findIndicator(nav);

    if (!indicator) {
      return;
    }

    const navRect =
      nav.getBoundingClientRect();

    const linkRect =
      activeLink.getBoundingClientRect();

    /*
     * Skip hidden duplicate or mobile navigation
     * until it becomes visible.
     */
    if (
      navRect.width <= 0 ||
      linkRect.width <= 0
    ) {
      return;
    }

    const left =
      linkRect.left -
      navRect.left +
      nav.scrollLeft;

    const expectedTransform =
      `translateX(${Math.round(left)}px)`;

    const expectedWidth =
      `${Math.round(linkRect.width)}px`;

    if (
      indicator.style.transform !==
      expectedTransform
    ) {
      indicator.style.transform =
        expectedTransform;
    }

    if (
      indicator.style.width !==
      expectedWidth
    ) {
      indicator.style.width =
        expectedWidth;
    }
  }

  function updateActiveState(
    nav,
    project,
    changelogLink
  ) {
    const expectedActiveLink =
      getExpectedActiveLink(
        nav,
        project,
        changelogLink
      );

    /*
     * Even if the current route is unknown, Changelog must
     * never remain active unless this is the exact target page.
     */
    if (!expectedActiveLink) {
      setLinkActive(
        changelogLink,
        false
      );

      return;
    }

    getNavLinks(nav).forEach((link) => {
      setLinkActive(
        link,
        link === expectedActiveLink
      );
    });

    moveIndicator(
      nav,
      expectedActiveLink
    );
  }

  function applyNavigationState() {
    if (state.destroyed) {
      return;
    }

    const project =
      getCurrentProject();

    if (!project) {
      return;
    }

    normalizeMobileChangelogLinks(
      project
    );

    getPrimaryNavs().forEach((nav) => {
      const changelogLink =
        rewriteChangelogLink(
          nav,
          project
        );

      if (!changelogLink) {
        return;
      }

      updateActiveState(
        nav,
        project,
        changelogLink
      );
    });
  }

  function queueApply() {
    if (
      state.destroyed ||
      state.animationFrame !== null
    ) {
      return;
    }

    state.animationFrame =
      window.requestAnimationFrame(() => {
        state.animationFrame = null;
        applyNavigationState();
      });
  }

  function clearRetryTimers() {
    state.retryTimers.forEach(
      (timer) => {
        window.clearTimeout(timer);
      }
    );

    state.retryTimers.clear();
  }

  function scheduleSettlingPasses() {
    clearRetryTimers();
    queueApply();

    /*
     * ReadMe may change the URL, article, and active
     * classes in separate render passes.
     */
    [50, 150, 400, 900].forEach(
      (delay) => {
        const timer =
          window.setTimeout(() => {
            state.retryTimers.delete(
              timer
            );

            queueApply();
          }, delay);

        state.retryTimers.add(timer);
      }
    );
  }

  function activeStateNeedsRepair() {
    const project =
      getCurrentProject();

    if (!project) {
      return false;
    }

    const navs = getPrimaryNavs();

    if (!navs.length) {
      return true;
    }

    return navs.some((nav) => {
      const changelogLink =
        findChangelogLink(
          nav,
          project
        );

      if (!changelogLink) {
        return true;
      }

      const expectedActiveLink =
        getExpectedActiveLink(
          nav,
          project,
          changelogLink
        );

      /*
       * Unknown routes still must not leave
       * Changelog highlighted.
       */
      if (!expectedActiveLink) {
        return (
          changelogLink.classList.contains(
            "active"
          ) ||
          changelogLink.hasAttribute(
            "aria-current"
          )
        );
      }

      const activeLinks =
        getNavLinks(nav).filter(
          (link) =>
            link.classList.contains(
              "active"
            ) ||
            link.getAttribute(
              "aria-current"
            ) === "page"
        );

      return (
        activeLinks.length !== 1 ||
        activeLinks[0] !==
          expectedActiveLink
      );
    });
  }

  function handleRouteCheck() {
    const currentPath =
      getCurrentPath();

    if (
      currentPath !== state.lastPath
    ) {
      state.lastPath = currentPath;
      scheduleSettlingPasses();
      return;
    }

    if (activeStateNeedsRepair()) {
      queueApply();
    }
  }

  function getEventElement(event) {
    if (
      event.target instanceof Element
    ) {
      return event.target;
    }

    if (
      event.target instanceof Node
    ) {
      return event.target.parentElement;
    }

    return null;
  }

  function handleClick(event) {
    const eventElement =
      getEventElement(event);

    if (!eventElement) {
      return;
    }

    /*
     * Match links in the desktop tab bar OR the mobile
     * flyout menu. ReadMe's mobile menu is a structurally
     * different DOM from the desktop tab bar and is never
     * inside NAV_SELECTOR, so scoping the lookup to that
     * selector alone silently missed every mobile
     * Changelog tap.
     */
    const link = eventElement.closest(
      `${NAV_SELECTOR} a[href], ${MOBILE_NAV_SELECTOR}`
    );

    if (
      !(link instanceof
        HTMLAnchorElement)
    ) {
      return;
    }

    const project =
      getCurrentProject();

    if (!project) {
      return;
    }

    /*
     * For normal header/flyout links, let ReadMe handle
     * its normal SPA navigation. The observer and route
     * watcher will update the active state afterward.
     */
    if (
      !isChangelogLink(
        link,
        project
      )
    ) {
      window.setTimeout(
        scheduleSettlingPasses,
        0
      );

      return;
    }

    /*
     * Always make sure modified clicks and
     * open-in-new-tab use the correct URL.
     */
    link.setAttribute(
      CHANGELOG_TARGET_ATTRIBUTE,
      project.targetUrl
    );

    link.setAttribute(
      "href",
      project.targetUrl
    );

    link.setAttribute(
      "target",
      "_self"
    );

    const isModifiedClick =
      event.metaKey ||
      event.ctrlKey ||
      event.shiftKey ||
      event.altKey ||
      event.button !== 0;

    if (isModifiedClick) {
      return;
    }

    /*
     * Prevent ReadMe's native Changelog router from
     * reducing the destination back to /docs.
     */
    event.preventDefault();
    event.stopPropagation();
    event.stopImmediatePropagation();

    window.location.assign(
      project.targetUrl
    );
  }

  function handlePageShow() {
    state.lastPath =
      getCurrentPath();

    scheduleSettlingPasses();
  }

  function initialize() {
    state.lastPath =
      getCurrentPath();

    /*
     * Capture phase runs before ReadMe's
     * React click handlers.
     */
    window.addEventListener(
      "click",
      handleClick,
      true
    );

    window.addEventListener(
      "popstate",
      handleRouteCheck
    );

    window.addEventListener(
      "hashchange",
      handleRouteCheck
    );

    window.addEventListener(
      "pageshow",
      handlePageShow
    );

    /*
     * The header itself may remain mounted while the
     * article changes. Watching body content catches
     * those SPA article replacements.
     *
     * Only child-list changes are observed, so the
     * script's own class and href updates do not
     * create a MutationObserver loop.
     */
    state.observer =
      new MutationObserver(() => {
        handleRouteCheck();
      });

    state.observer.observe(
      document.body,
      {
        childList: true,
        subtree: true,
      }
    );

    /*
     * Fallback route check. This only updates the DOM
     * when the pathname or active state is incorrect.
     */
    state.routeInterval =
      window.setInterval(
        handleRouteCheck,
        500
      );

    scheduleSettlingPasses();
  }

  function destroy() {
    state.destroyed = true;

    window.removeEventListener(
      "click",
      handleClick,
      true
    );

    window.removeEventListener(
      "popstate",
      handleRouteCheck
    );

    window.removeEventListener(
      "hashchange",
      handleRouteCheck
    );

    window.removeEventListener(
      "pageshow",
      handlePageShow
    );

    if (state.observer) {
      state.observer.disconnect();
      state.observer = null;
    }

    if (
      state.routeInterval !== null
    ) {
      window.clearInterval(
        state.routeInterval
      );

      state.routeInterval = null;
    }

    if (
      state.animationFrame !== null
    ) {
      window.cancelAnimationFrame(
        state.animationFrame
      );

      state.animationFrame = null;
    }

    clearRetryTimers();
  }

  window[SCRIPT_KEY] = {
    destroy,
    refresh:
      scheduleSettlingPasses,
  };

  if (
    document.readyState ===
    "loading"
  ) {
    document.addEventListener(
      "DOMContentLoaded",
      initialize,
      { once: true }
    );
  } else {
    initialize();
  }
})();


// Hero search trigger
function initHeroSearch() {
  var trigger = document.getElementById('hero-search-trigger');
  var searchBtn = document.querySelector('.rm-SearchToggle');

  if (trigger && searchBtn && !trigger.dataset.bound) {
    trigger.dataset.bound = 'true';
    trigger.addEventListener('click', function () {
      searchBtn.click();
    });
    return true;
  }
  return false;
}

var attempts = 0;
var poll = setInterval(function () {
  attempts++;
  if (initHeroSearch() || attempts > 20) {
    clearInterval(poll);
  }
}, 300);

// AdRoll
adroll_adv_id = "TFQKXJNRFJEF5CM6V73ISQ";
adroll_pix_id = "ONVWEBEM5BGVHHBA6X32YK";

(function () {
  var _onload = function () {
    if (document.readyState && !/loaded|complete/.test(document.readyState)) { setTimeout(_onload, 10); return; }
    if (!window.__adroll_loaded) { __adroll_loaded = true; setTimeout(_onload, 50); return; }
    var scr = document.createElement("script");
    var host = (("https:" == document.location.protocol) ? "https://s.adroll.com" : "http://a.adroll.com");
    scr.setAttribute('async', 'true');
    scr.type = "text/javascript";
    scr.src = host + "/j/roundtrip.js";
    ((document.getElementsByTagName('head') || [null])[0] ||
      document.getElementsByTagName('script')[0].parentNode).appendChild(scr);
  };
  if (window.addEventListener) { window.addEventListener('load', _onload, false); }
  else { window.attachEvent('onload', _onload); }
}());

// Image zoom
(function () {
  const zoomerContainer = document.querySelector('.image-zoomer-container');
  const zoomImage = document.getElementById('zoom-image');

  if (!zoomerContainer || !zoomImage) return;

  zoomerContainer.addEventListener('mousemove', (e) => {
    const rect = zoomerContainer.getBoundingClientRect();
    const x = e.clientX - rect.left;
    const y = e.clientY - rect.top;
    const xPercent = (x / rect.width) * 100;
    const yPercent = (y / rect.height) * 100;
    zoomImage.style.transformOrigin = `${xPercent}% ${yPercent}%`;
    zoomImage.classList.add('move');
  });

  zoomerContainer.addEventListener('mouseleave', () => {
    zoomImage.style.transformOrigin = 'center';
    zoomImage.classList.remove('move');
  });
}());


// Heading click — "Link copied" pill notification
(function () {

  // Creates and animates a floating "Link copied" pill on the clicked heading
  // Also copies the full URL (including hash) to the clipboard
  function showLinkCopiedPill(heading) {
    var anchor = heading.querySelector('.heading-anchor-icon');
    if (!anchor) return;

    var href = anchor.getAttribute('href');
    if (!href) return;

    // Build the full URL with the hash
    var fullUrl = window.location.origin + window.location.pathname + href;

    // Copy to clipboard, then show the pill
    navigator.clipboard.writeText(fullUrl).then(function () {
      // Remove any existing pill before creating a new one
      var existing = heading.querySelector('.rp-link-copied-pill');
      if (existing) existing.remove();

      // Build the pill element
      var pill = document.createElement('span');
      pill.className = 'rp-link-copied-pill';
      pill.textContent = '🔗 Link copied';
      pill.style.cssText = [
        'position: absolute',
        'right: 32px',
        'top: 50%',
        'transform: translateY(-50%)',
        'font-family: var(--recurly-font, sans-serif)',
        'font-size: 11px',
        'font-weight: 700',
        'color: #0D0D0B',
        'background: #FFD706',
        'padding: 3px 10px',
        'border-radius: 12px',
        'pointer-events: none',
        'white-space: nowrap',
        'z-index: 10',
        'opacity: 1',
        'transition: opacity 2.5s ease, transform 2.5s ease',
      ].join(';');

      heading.appendChild(pill);

      // Double rAF ensures the browser has painted the initial state
      // before triggering the float-up + fade-out transition
      requestAnimationFrame(function () {
        requestAnimationFrame(function () {
          pill.style.transform = 'translateY(calc(-50% - 14px))';
          pill.style.opacity = '0';
        });
      });

      // Remove the pill from the DOM after the transition completes
      setTimeout(function () {
        pill.remove();
      }, 8000);
    }).catch(function (err) {
      console.error('Failed to copy link to clipboard:', err);
    });
  }

  function attachListeners() {
    document.querySelectorAll('.rm-Markdown.markdown-body .heading').forEach(function (heading) {
      // Skip headings that already have listeners attached
      if (heading.dataset.rpAttached) return;
      heading.dataset.rpAttached = 'true';

      // Click anywhere on the heading text (not the anchor icon)
      // — programmatically click the anchor so ReadMe's native handler
      // runs normally, then show the pill and copy the link
      heading.addEventListener('click', function (e) {
        // Ignore clicks on the anchor icon itself — it has its own listener below
        if (e.target.closest('.heading-anchor-icon')) return;

        var anchor = heading.querySelector('.heading-anchor-icon');
        if (!anchor) return;

        // Let ReadMe handle the navigation natively
        anchor.click();
        showLinkCopiedPill(heading);
      });

      // Click on the anchor icon — ReadMe handles the hash natively,
      // we just copy the link and show the pill
      var anchor = heading.querySelector('.heading-anchor-icon');
      if (anchor) {
        anchor.addEventListener('click', function () {
          showLinkCopiedPill(heading);
        });
      }
    });
  }

  // Attach listeners on initial page load
  attachListeners();

  // Re-attach after ReadMe's SPA router swaps page content
  var observer = new MutationObserver(function () {
    attachListeners();
  });

  observer.observe(document.body, { childList: true, subtree: true });

})();

/* ============================================================
   rp-shelf — infinite carousel behavior.
   Paste into ReadMe Custom JS.

   Structure expected per shelf (inside HTMLBlock):
     <div class="rp-shelf rp-shelf-carousel">
       <div class="rp-shelf-header">...</div>
       <div class="rp-shelf-viewport">
         <div class="rp-shelf-track">
           <div class="rp-shelf-card">...</div>
           ...
         </div>
       </div>
       <div class="rp-shelf-controls">
         <button class="rp-shelf-btn rp-shelf-prev">...</button>
         <button class="rp-shelf-btn rp-shelf-next">...</button>
       </div>
     </div>
   ============================================================ */

(function () {
  'use strict';

  var TRANSITION_MS = 500;
  var GAP_PX = 14;

  function initShelf(shelf) {
    if (shelf.dataset.rpShelfInit === '1') return;
    shelf.dataset.rpShelfInit = '1';

    var track = shelf.querySelector('.rp-shelf-track');
    var prevBtn = shelf.querySelector('.rp-shelf-prev');
    var nextBtn = shelf.querySelector('.rp-shelf-next');
    if (!track || !prevBtn || !nextBtn) return;

    var realCards = Array.prototype.slice.call(track.children);
    var total = realCards.length;
    if (total < 3) return; // safety net — 3+ cards required for carousel

    // Prepend 2 clones (last two) and append 2 clones (first two).
    // This lets us show a full 3-card frame when currentIndex is -1 or total,
    // so the loop reset is visually seamless.
    var prevPrev = realCards[total - 2].cloneNode(true);
    var prev = realCards[total - 1].cloneNode(true);
    var next = realCards[0].cloneNode(true);
    var nextNext = realCards[1].cloneNode(true);
    [prevPrev, prev, next, nextNext].forEach(function (c) {
      c.setAttribute('data-clone', 'true');
      c.classList.remove('rp-active');
    });
    track.insertBefore(prevPrev, realCards[0]);
    track.insertBefore(prev, realCards[0]);
    track.appendChild(next);
    track.appendChild(nextNext);

    var currentIndex = 0; // pointer into real cards (0..total-1)
    var isTransitioning = false;

    function cardWidth() {
      return realCards[0].getBoundingClientRect().width;
    }

    function setActive(idx) {
      var all = track.children;
      // Active card lives at track index (idx + 2) because of the two prepended clones.
      var activeTrackIdx = idx + 2;
      for (var i = 0; i < all.length; i++) {
        if (i === activeTrackIdx) all[i].classList.add('rp-active');
        else all[i].classList.remove('rp-active');
      }
    }

    function positionTrack(withTransition) {
      var w = cardWidth();
      if (!w) {
        // Not yet laid out — retry next frame.
        requestAnimationFrame(function () { positionTrack(withTransition); });
        return;
      }
      var offset = (currentIndex + 1) * (w + GAP_PX);
      track.style.transition = withTransition
        ? 'transform ' + TRANSITION_MS + 'ms cubic-bezier(0.4, 0, 0.2, 1)'
        : 'none';
      track.style.transform = 'translateX(' + (-offset) + 'px)';
    }

    function go(delta) {
      if (isTransitioning) return;
      isTransitioning = true;
      currentIndex += delta;
      setActive(currentIndex);
      positionTrack(true);

      window.setTimeout(function () {
        // Handle infinite-loop reset
        if (currentIndex >= total) currentIndex = 0;
        else if (currentIndex < 0) currentIndex = total - 1;
        setActive(currentIndex);
        // Snap to real position without transition
        positionTrack(false);
        // Force a reflow so the next transition takes effect
        void track.offsetHeight;
        isTransitioning = false;
      }, TRANSITION_MS);
    }

    nextBtn.addEventListener('click', function () { go(1); });
    prevBtn.addEventListener('click', function () { go(-1); });

    // Keyboard support once a control is focused
    shelf.addEventListener('keydown', function (e) {
      if (e.key === 'ArrowRight') { e.preventDefault(); go(1); }
      else if (e.key === 'ArrowLeft') { e.preventDefault(); go(-1); }
    });

    // Reposition on window resize (card widths change with layout)
    var resizeTimer;
    window.addEventListener('resize', function () {
      window.clearTimeout(resizeTimer);
      resizeTimer = window.setTimeout(function () {
        positionTrack(false);
      }, 100);
    });

    // Initial state
    setActive(currentIndex);
    positionTrack(false);
  }

  function initAll() {
    var shelves = document.querySelectorAll('.rp-shelf-carousel');
    for (var i = 0; i < shelves.length; i++) initShelf(shelves[i]);
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', initAll);
  } else {
    initAll();
  }
  // Re-init when ReadMe SPA-navigates to a new page
  window.addEventListener('load', initAll);
  var mo = new MutationObserver(function () { initAll(); });
  mo.observe(document.body, { childList: true, subtree: true });
})();
/* ============================================================
   Changelog page — inject branded intro header
   Uses MutationObserver to handle SPA navigation. Each time
   the DOM changes, attempts to inject the header. Idempotent —
   the function checks for an existing header and bails if found.
   ============================================================ */
(function () {
  function injectChangelogHeader() {
    var container = document.querySelector('.rm-Changelog .rm-ContainerNarrow');
    if (!container) return;
    if (document.getElementById('recurly-changelog-header')) return;
    var header = document.createElement('div');
    header.id = 'recurly-changelog-header';
    header.className = 'rm-Markdown markdown-body';
    header.style.padding = '24px 0 8px';
    header.innerHTML = `
      <h1>Recurly Commerce Changelog</h1>
      <p>Discover what's new in Recurly Commerce. Browse posts by year to see recent launches, enhancements, and behind-the-scenes improvements that keep your platform sharp.</p>
      <p class="rss-line">
        <i class="fa-solid fa-rss rss-icon" aria-hidden="true"></i>
        Stay in the loop — copy our <button type="button" class="rss-copy" data-url="https://docs.recurly.com/recurly-subscriptions/changelog.rss">RSS feed URL</button> and paste it into your favorite RSS reader to get every update the moment it ships.
      </p>
      <div class="rss-instructions-wrap">
        <button type="button" class="rss-instructions-toggle" aria-expanded="false" aria-controls="rss-instructions-body">
          <i class="fa-solid fa-circle-question" aria-hidden="true"></i>
          How to use this URL
          <i class="fa-solid fa-chevron-down rss-chevron" aria-hidden="true"></i>
        </button>
        <div id="rss-instructions-body" class="rss-instructions-body" hidden>
          <p>An RSS reader lets you subscribe to the changelog and receive new posts automatically — no need to check back manually. You can usually choose to see posts as a combined feed or read each one in full.</p>
          <p>We recommend <a href="https://feedly.com" target="_blank" rel="noopener">Feedly</a> or <a href="https://feeder.co" target="_blank" rel="noopener">Feeder</a> — both are free to start, work in your browser, and let you choose how to view updates (summary list or full article view).</p>
          <ol>
            <li>Click <strong>RSS feed URL</strong> above to copy the feed address.</li>
            <li>Open your RSS reader (e.g. <a href="https://feedly.com" target="_blank" rel="noopener">Feedly</a> or <a href="https://feeder.co" target="_blank" rel="noopener">Feeder</a>) and look for an <strong>Add feed</strong> or <strong>Follow</strong> option.</li>
            <li>Paste the URL you copied and confirm the subscription.</li>
            <li>New changelog entries will appear in your reader automatically the moment they publish.</li>
          </ol>
          <p class="rss-instructions-tip"><i class="fa-solid fa-lightbulb" aria-hidden="true"></i> <strong>Tip:</strong> Most readers let you switch between a compact list view (titles only) and an expanded view (full post content). Pick whichever fits your workflow.</p>
        </div>
      </div>
    `;
    container.insertBefore(header, container.firstChild);
  }

  /* Click-to-copy handler — registered once via event delegation
     so it works for any .rss-copy button, including re-injected ones */
  document.addEventListener('click', function (e) {
    var btn = e.target.closest('.rss-copy');
    if (!btn) return;
    var url = btn.getAttribute('data-url');
    navigator.clipboard.writeText(url).then(function () {
      var original = btn.textContent;
      btn.textContent = 'Copied!';
      btn.classList.add('rss-copied');
      setTimeout(function () {
        btn.textContent = original;
        btn.classList.remove('rss-copied');
      }, 1500);
    });
  });

  /* Collapsible toggle handler — event delegation, works after re-injection */
  document.addEventListener('click', function (e) {
    var toggle = e.target.closest('.rss-instructions-toggle');
    if (!toggle) return;
    var body = document.getElementById('rss-instructions-body');
    if (!body) return;
    var isOpen = toggle.getAttribute('aria-expanded') === 'true';
    toggle.setAttribute('aria-expanded', isOpen ? 'false' : 'true');
    body.hidden = isOpen;
    toggle.classList.toggle('rss-instructions-open', !isOpen);
  });

  /* Run immediately for first page load */
  injectChangelogHeader();

  /* Watch DOM for changes — re-injects on SPA navigation
     when ReadMe rebuilds the changelog subtree */
  var observer = new MutationObserver(injectChangelogHeader);
  observer.observe(document.body, {
    childList: true,
    subtree: true
  });
})();
</script><script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
</script><script>ga('create', 'UA-10003220-7', 'auto', {'name': 'custom'});
$(window).on('pageLoad', function(e, state){
  ga('custom.send', 'pageview', window.location.pathname);
});
</script><!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-P8SKV3B" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->

<style>

@media print {
  * {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  html,
  body.theme-solid.page-docs,
  .wrapper,
  .container.body-container,
  .main-content {
    margin:0px 20px !important;
    padding: 0 !important;
  }
  
  header#header,
  .header,
  .navbar-brand,
  .navbar {
    display:block !important;
    background-color: #723080 !important;
    box-shadow:  inset 0 0 0 1000px #723080;
  }
  header#header {
  	margin: 0 auto 60px !important;
  }
  #header.header h1.navbar-brand a {
    width: 178px !important;
    height: 40px !important;
    display:block !important;
  	background: url(https://files.readme.io/noVlqxc0QhiP1Psgyw2Y_documentation.png) no-repeat !important;
  	background-size: contain !important;
  }
	.section-left,
  .docs-header nav {
    display: none !important;
  }

  .main-content {
  	margin-top: 0px !important;
    padding-top: 0px !important;
  }
  
}
</style>
<!-- Image zoomer -->
<script>
        document.addEventListener('DOMContentLoaded', function () {
            var container = document.getElementById('image-container');
            var viewer = new Viewer(container, {
                inline: false,
                viewed: function() {
                    viewer.zoomTo(1);
                },
                toolbar: {
                    zoomIn: 4,
                    zoomOut: 4,
                    oneToOne: 4,
                    reset: 4,
                    prev: 4,
                    next: 4,
                    rotateLeft: 4,
                    rotateRight: 4,
                    flipHorizontal: 4,
                    flipVertical: 4,
                },
                title: false,
                tooltip: false,
                movable: true,
                zoomable: true,
                rotatable: false,
                scalable: false,
                transition: false,
                fullscreen: true,
                keyboard: false,
            });
        });
    </script>
<script id="hub-me" type="application/json" data-json="{&quot;loggedIn&quot;:false,&quot;search&quot;:{&quot;app&quot;:&quot;&quot;,&quot;token&quot;:&quot;&quot;,&quot;filters&quot;:&quot;&quot;,&quot;metaData&quot;:[{&quot;modules&quot;:{&quot;landing&quot;:true,&quot;docs&quot;:true,&quot;examples&quot;:true,&quot;reference&quot;:true,&quot;graphql&quot;:false,&quot;changelog&quot;:true,&quot;discuss&quot;:false,&quot;suggested_edits&quot;:false,&quot;custompages&quot;:false,&quot;tutorials&quot;:false},&quot;id&quot;:&quot;6865c5ccaabb920030954384&quot;,&quot;name&quot;:&quot;Recurly Engage Docs&quot;,&quot;subdomain&quot;:&quot;recurly-engage-docs&quot;,&quot;subpath&quot;:&quot;recurly-engage&quot;,&quot;nav_names&quot;:{&quot;docs&quot;:&quot;Directory&quot;,&quot;reference&quot;:&quot;&quot;,&quot;changelog&quot;:&quot;&quot;,&quot;discuss&quot;:&quot;&quot;,&quot;recipes&quot;:&quot;&quot;,&quot;tutorials&quot;:&quot;&quot;}},{&quot;modules&quot;:{&quot;landing&quot;:true,&quot;docs&quot;:true,&quot;examples&quot;:true,&quot;reference&quot;:true,&quot;graphql&quot;:false,&quot;changelog&quot;:true,&quot;discuss&quot;:false,&quot;suggested_edits&quot;:false,&quot;custompages&quot;:false,&quot;tutorials&quot;:false},&quot;id&quot;:&quot;6865c47f44422c001062c4de&quot;,&quot;name&quot;:&quot;Recurly RevRec Docs&quot;,&quot;subdomain&quot;:&quot;recurly-revrec-docs&quot;,&quot;subpath&quot;:&quot;recurly-revrec&quot;,&quot;nav_names&quot;:{&quot;docs&quot;:&quot;Directory&quot;,&quot;reference&quot;:&quot;&quot;,&quot;changelog&quot;:&quot;&quot;,&quot;discuss&quot;:&quot;&quot;,&quot;recipes&quot;:&quot;&quot;,&quot;tutorials&quot;:&quot;&quot;}},{&quot;modules&quot;:{&quot;landing&quot;:true,&quot;docs&quot;:true,&quot;examples&quot;:true,&quot;reference&quot;:true,&quot;graphql&quot;:false,&quot;changelog&quot;:true,&quot;discuss&quot;:false,&quot;suggested_edits&quot;:false,&quot;custompages&quot;:false,&quot;tutorials&quot;:false},&quot;id&quot;:&quot;6865c648c6b75f0030446843&quot;,&quot;name&quot;:&quot;Recurly Commerce Docs&quot;,&quot;subdomain&quot;:&quot;recurly-commerce-docs&quot;,&quot;subpath&quot;:&quot;recurly-commerce&quot;,&quot;nav_names&quot;:{&quot;docs&quot;:&quot;Directory&quot;,&quot;reference&quot;:&quot;&quot;,&quot;changelog&quot;:&quot;&quot;,&quot;discuss&quot;:&quot;&quot;,&quot;recipes&quot;:&quot;&quot;,&quot;tutorials&quot;:&quot;&quot;}},{&quot;modules&quot;:{&quot;landing&quot;:true,&quot;reference&quot;:true,&quot;suggested_edits&quot;:false,&quot;discuss&quot;:false,&quot;docs&quot;:true,&quot;examples&quot;:true,&quot;changelog&quot;:true,&quot;logs&quot;:false,&quot;custompages&quot;:true,&quot;tutorials&quot;:false,&quot;graphql&quot;:false},&quot;id&quot;:&quot;56450a342229d7170010928a&quot;,&quot;name&quot;:&quot;Recurly Subscriptions Docs&quot;,&quot;subdomain&quot;:&quot;reference-docs&quot;,&quot;subpath&quot;:&quot;recurly-subscriptions&quot;,&quot;nav_names&quot;:{&quot;discuss&quot;:&quot;&quot;,&quot;docs&quot;:&quot;Product Docs&quot;,&quot;reference&quot;:&quot;&quot;,&quot;changelog&quot;:&quot;Changelog&quot;,&quot;tutorials&quot;:&quot;&quot;,&quot;recipes&quot;:&quot;&quot;}},{&quot;modules&quot;:{&quot;landing&quot;:true,&quot;docs&quot;:true,&quot;examples&quot;:true,&quot;reference&quot;:false,&quot;graphql&quot;:false,&quot;changelog&quot;:true,&quot;discuss&quot;:false,&quot;suggested_edits&quot;:false,&quot;custompages&quot;:false,&quot;tutorials&quot;:false},&quot;id&quot;:&quot;6a909f963c00925d1070727c&quot;,&quot;name&quot;:&quot;Recurly Recover&quot;,&quot;subdomain&quot;:&quot;recurly-recover&quot;,&quot;subpath&quot;:&quot;&quot;,&quot;nav_names&quot;:{&quot;docs&quot;:&quot;Product Docs&quot;,&quot;reference&quot;:&quot;&quot;,&quot;changelog&quot;:&quot;&quot;,&quot;discuss&quot;:&quot;&quot;,&quot;recipes&quot;:&quot;&quot;,&quot;tutorials&quot;:&quot;&quot;}}]}}"></script><script id="readme-data-baseUrl" type="application/json"></script></body></html>