<!DOCTYPE html><html lang="en" dir="ltr" data-theme="dark" class="astro-vdxcvpsm"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Acquia Developer Portal | Acquia Dev Portal</title><link rel="canonical" href="https://dev.acquia.com/"/><link rel="sitemap" href="/sitemap-index.xml"/><link rel="icon" href="/favicon.ico" sizes="32x32"/><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-MZSFM3X9');</script><link rel="shortcut icon" href="/favicon.svg" type="image/svg+xml"/><meta name="generator" content="Astro v7.2.6"/><meta name="generator" content="Starlight v0.41.9"/><meta property="og:title" content="Acquia Developer Portal"/><meta property="og:type" content="article"/><meta property="og:url" content="https://dev.acquia.com/"/><meta property="og:locale" content="en"/><meta property="og:description" content="Explore our guides, quickstarts, and working examples to build on Acquia."/><meta property="og:site_name" content="Acquia Dev Portal"/><meta name="description" content="Explore our guides, quickstarts, and working examples to build on Acquia."/><meta property="og:image" content="/og.png"/><meta name="twitter:card" content="summary_large_image"/><meta name="theme-color" content="#141938"/><script>
	window.StarlightThemeProvider = (() => {
		const storedTheme =
			typeof localStorage !== 'undefined' && localStorage.getItem('starlight-theme');
		const theme =
			storedTheme ||
			(window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark');
		document.documentElement.dataset.theme = theme === 'light' ? 'light' : 'dark';
		return {
			updatePickers(theme = storedTheme || 'auto') {
				document.querySelectorAll('starlight-theme-select').forEach((picker) => {
					const select = picker.querySelector('select');
					if (select) select.value = theme;
					/** @type {HTMLTemplateElement | null} */
					const tmpl = document.querySelector(`#theme-icons`);
					const newIcon = tmpl && tmpl.content.querySelector('.' + theme);
					if (newIcon) {
						const oldIcon = picker.querySelector('svg.label-icon');
						if (oldIcon) {
							oldIcon.replaceChildren(...newIcon.cloneNode(true).childNodes);
						}
					}
				});
			},
		};
	})();
</script><template id="theme-icons"><svg aria-hidden="true" class="light astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M5 12a1 1 0 0 0-1-1H3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1Zm.64 5-.71.71a1 1 0 0 0 0 1.41 1 1 0 0 0 1.41 0l.71-.71A1 1 0 0 0 5.64 17ZM12 5a1 1 0 0 0 1-1V3a1 1 0 0 0-2 0v1a1 1 0 0 0 1 1Zm5.66 2.34a1 1 0 0 0 .7-.29l.71-.71a1 1 0 1 0-1.41-1.41l-.66.71a1 1 0 0 0 0 1.41 1 1 0 0 0 .66.29Zm-12-.29a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.71-.71a1.004 1.004 0 1 0-1.43 1.41l.73.71ZM21 11h-1a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2Zm-2.64 6A1 1 0 0 0 17 18.36l.71.71a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.76-.66ZM12 6.5a5.5 5.5 0 1 0 5.5 5.5A5.51 5.51 0 0 0 12 6.5Zm0 9a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7Zm0 3.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1a1 1 0 0 0-1-1Z"/></svg><svg aria-hidden="true" class="dark astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.64 13a1 1 0 0 0-1.05-.14 8.049 8.049 0 0 1-3.37.73 8.15 8.15 0 0 1-8.14-8.1 8.59 8.59 0 0 1 .25-2A1 1 0 0 0 8 2.36a10.14 10.14 0 1 0 14 11.69 1 1 0 0 0-.36-1.05Zm-9.5 6.69A8.14 8.14 0 0 1 7.08 5.22v.27a10.15 10.15 0 0 0 10.14 10.14 9.784 9.784 0 0 0 2.1-.22 8.11 8.11 0 0 1-7.18 4.32v-.04Z"/></svg><svg aria-hidden="true" class="auto astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg></template><link rel="stylesheet" href="/_astro/print.ehPL0gv-.css" media="print"><link rel="stylesheet" href="/_astro/common.D8VrBoFQ.css"><link rel="stylesheet" href="/_astro/ConceptDiagram.7XMt9QpV.css"><style>@layer starlight.components{.card-grid:where(.astro-lmor3ela){grid-template-columns:100%;gap:1rem;display:grid}.card-grid:where(.astro-lmor3ela)>*{margin-top:0!important}@media (width>=50rem){.card-grid:where(.astro-lmor3ela){grid-template-columns:1fr 1fr;gap:1.5rem}.stagger:where(.astro-lmor3ela){--stagger-height:5rem;padding-bottom:var(--stagger-height)}.stagger:where(.astro-lmor3ela)>:nth-child(2n){transform:translateY(var(--stagger-height))}}}.specimen-eyebrow{font:700 var(--text-xs) / 1.4 var(--font-heading);letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent-text);margin:0 0 var(--spacing-3)}.specimen-lead{font-size:var(--text-xl);color:var(--color-text-muted);margin:0 0 var(--spacing-6);line-height:1.6}.specimen-swatch-row{gap:var(--spacing-3);margin:var(--spacing-4) 0 var(--spacing-6);grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr));padding:0;list-style:none;display:grid}.specimen-swatch{border-radius:var(--radius-md);border:1px solid var(--color-border);overflow:hidden}.specimen-swatch-chip{height:3.5rem}.specimen-swatch b{font:600 var(--text-xs) / 1.4 var(--font-mono);color:var(--color-heading);padding:var(--spacing-2) var(--spacing-3) 0;display:block}.specimen-swatch span{font:400 var(--text-xs) / 1.4 var(--font-mono);color:var(--color-text-muted);padding:0 var(--spacing-3) var(--spacing-2);display:block}.specimen-type-row{align-items:baseline;gap:var(--spacing-4);border-bottom:1px solid var(--color-border);padding:var(--spacing-3) 0;display:flex}.specimen-type-row .specimen-type-label{min-width:9rem;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted)}
@layer starlight.components{svg:where(.astro-n5k4ipy7){color:var(--sl-icon-color);font-size:var(--sl-icon-size,1em);width:1em;height:1em}}
@layer starlight.components{starlight-tabs:where(.astro-hbt4ddzs){display:block}.tablist-wrapper:where(.astro-hbt4ddzs){overflow-x:auto}:where(.astro-hbt4ddzs)[role=tablist]{border-bottom:2px solid var(--sl-color-gray-5);padding:0;list-style:none;display:flex}.tab:where(.astro-hbt4ddzs){display:flex}.tab:where(.astro-hbt4ddzs)>:where(.astro-hbt4ddzs)[role=tab]{--sl-tab-color-border:var(--sl-color-gray-5);line-height:var(--sl-line-height-headings);box-shadow:0 2px 0 var(--sl-tab-color-border);color:var(--sl-color-gray-3);outline-offset:var(--sl-outline-offset-inside);overflow-wrap:initial;align-items:center;gap:.5rem;padding:.275rem 1.25rem;text-decoration:none;display:flex}.tab:where(.astro-hbt4ddzs) :where(.astro-hbt4ddzs)[role=tab][aria-selected=true]{--sl-tab-color-border:var(--sl-color-text-accent);color:var(--sl-color-white);font-weight:600}.tablist-wrapper:where(.astro-hbt4ddzs)~[role=tabpanel]{margin-top:1rem}}
@layer starlight.components{.sl-link-card:where(.astro-vodiqeol){border:1px solid var(--sl-color-gray-5);box-shadow:var(--sl-shadow-sm);border-radius:.5rem;grid-template-columns:1fr auto;gap:.5rem;padding:1rem;display:grid;position:relative}a:where(.astro-vodiqeol){line-height:var(--sl-line-height-headings);text-decoration:none}a:where(.astro-vodiqeol):before{content:"";position:absolute;inset:0}.stack:where(.astro-vodiqeol){flex-direction:column;gap:.5rem}.title:where(.astro-vodiqeol){color:var(--sl-color-white);font-weight:600;font-size:var(--sl-text-lg)}.description:where(.astro-vodiqeol){color:var(--sl-color-gray-3);line-height:1.5}.icon:where(.astro-vodiqeol){color:var(--sl-color-gray-3)}.sl-link-card:where(.astro-vodiqeol):hover{background:var(--sl-color-gray-7,var(--sl-color-gray-6));border-color:var(--sl-color-gray-2)}.sl-link-card:where(.astro-vodiqeol):hover .icon:where(.astro-vodiqeol){color:var(--sl-color-white)}}
@layer starlight.components{.sl-steps{--bullet-size:calc(var(--sl-line-height) * 1rem);--bullet-margin:.375rem;counter-reset:steps-counter var(--sl-steps-start,0);padding-inline-start:0;list-style:none}.sl-steps>li{counter-increment:steps-counter;padding-inline-start:calc(var(--bullet-size) + 1rem);min-height:calc(var(--bullet-size) + var(--bullet-margin));padding-bottom:1px;position:relative}.sl-steps>li+li{margin-top:0}.sl-steps>li:before{content:counter(steps-counter);top:0;width:var(--bullet-size);height:var(--bullet-size);line-height:var(--bullet-size);font-size:var(--sl-text-xs);text-align:center;color:var(--sl-color-white);background-color:var(--sl-color-gray-6);box-shadow:inset 0 0 0 1px var(--sl-color-gray-5);border-radius:99rem;font-weight:600;position:absolute;inset-inline-start:0}.sl-steps>li:after{--guide-width:1px;content:"";top:calc(var(--bullet-size) + var(--bullet-margin));bottom:var(--bullet-margin);width:var(--guide-width);background-color:var(--sl-color-hairline-light);position:absolute;inset-inline-start:calc((var(--bullet-size) - var(--guide-width)) / 2)}}@layer starlight.content{.sl-steps>li>:first-child{--lh:calc(1em * var(--sl-line-height));--shift-y:calc(.5 * (var(--bullet-size) - var(--lh)));transform:translateY(var(--shift-y));margin-bottom:var(--shift-y)}.sl-steps>li>:first-child:where(h1,h2,h3,h4,h5,h6){--lh:calc(1em * var(--sl-line-height-headings))}@supports (--prop:1lh){.sl-steps>li>:first-child{--lh:1lh}}}
@layer starlight.components{.sl-link-button:where(.astro-hlbqph7b){font-size:var(--sl-text-sm);outline-offset:.25rem;border:1px solid #0000;border-radius:999rem;align-items:center;gap:.5em;padding:.4375rem 1.125rem;line-height:1.1875;text-decoration:none;display:inline-flex}.sl-link-button:where(.astro-hlbqph7b).primary{background:var(--sl-color-text-accent);border-color:var(--sl-color-text-accent);color:var(--sl-color-black)}.sl-link-button:where(.astro-hlbqph7b).primary:hover{color:var(--sl-color-black)}.sl-link-button:where(.astro-hlbqph7b).secondary{border-color:inherit;color:var(--sl-color-white)}.sl-link-button:where(.astro-hlbqph7b).minimal{color:var(--sl-color-white);padding-inline:0}.sl-link-button:where(.astro-hlbqph7b) svg{flex-shrink:0}@media (width>=50rem){.sl-link-button:where(.astro-hlbqph7b){font-size:var(--sl-text-base);padding:.9375rem 1.25rem}}.sl-markdown-content .sl-link-button:where(.astro-hlbqph7b){margin-inline-end:1rem}.sl-markdown-content .sl-link-button:where(.astro-hlbqph7b):not(:where(p *)){margin-block:1rem}}
</style><script type="module" src="/_astro/page.Dwipeu-R.js"></script><style>main>.content-panel:first-child{padding:0}main>.content-panel:first-child h1{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}main .sl-markdown-content>section:first-child{margin-top:calc(-1 * (var(--sl-nav-height) + 1rem))}.content-panel+.content-panel{border-top:0}main .content-panel{padding-block:0;padding-inline:0}main .sl-container,main .sl-markdown-content{max-width:none;margin-inline:0}.sl-markdown-content>*{margin-top:0}.home-dark{--color-bg:var(--color-navy-950);--color-bg-subtle:#ffffff0a;--color-surface:#ffffff12;--color-border:#2b3360;--color-border-strong:#4a5490;--color-heading:#fff;--color-text:#e9edfb;--color-text-muted:#aeb4d6;--color-link:var(--color-blue-500);--color-link-hover:var(--color-blue-400);--color-btn-primary-bg:#eef1ff;--color-btn-primary-hover:var(--color-blue-500);--color-btn-primary-text:var(--color-navy-800)}.landing-band{--color-bg:var(--color-band-bg);--color-bg-subtle:#ffffff0d;--color-surface:#ffffff14;--color-border:var(--color-band-border);--color-border-strong:#7b84b4;--color-heading:var(--color-band-heading);--color-text:var(--color-band-text);--color-text-soft:var(--color-band-text);--color-text-muted:var(--color-band-text-muted);--color-link:var(--color-blue-500);--color-link-hover:var(--color-blue-400);--color-accent:var(--color-pink-500);--color-focus:#79c8f0}header.header>div>:not(:has(dialog)),header.header button[data-open-modal]{--color-text:#e9edfb;--color-text-muted:#aeb4d6;--color-heading:#fff;--color-border:#2b3360;--color-border-strong:#4a5490;--color-bg:transparent;--color-bg-subtle:#ffffff0f;--sl-color-text:#e9edfb;--sl-color-gray-2:#aeb4d6;--sl-color-white:#fff}header.header{transition:background-color var(--duration-base) var(--ease-standard)}:root:not([data-home-scrolled]) header.header{background-color:#0000}header.header:after{opacity:0;transition:opacity var(--duration-base) var(--ease-standard)}:root[data-home-scrolled] header.header{background-color:color-mix(in srgb, var(--color-navy-950) 82%, transparent)}:root[data-home-scrolled] header.header:after{opacity:1}header .site-title img:first-of-type{display:block}header .site-title img:last-of-type{display:none}
</style></head><body class="astro-vdxcvpsm"><a class="sl-skip-link astro-vxeigawq" href="#_top">Skip to content</a><div class="page sl-flex astro-gqpr5s5a"><header class="header astro-gqpr5s5a"><div class="flex h-full items-center gap-[var(--sl-nav-gap)] [@media(max-width:49.999rem)]:pe-[calc(var(--sl-nav-gap)+var(--sl-menu-button-size))]"><div class="sl-flex -m-1 min-w-0 shrink-0 overflow-clip p-1"><a href="/" class="site-title sl-flex astro-clw6ags5"><img class="light:sl-hidden print:hidden astro-clw6ags5" alt="Acquia Developer Portal" src="/_astro/logo-dark.DlqOPgTF.svg" width="117" height="48"><img class="dark:sl-hidden print:block astro-clw6ags5" alt="Acquia Developer Portal" src="/_astro/logo.8B6uCc8k.svg" width="117" height="48"><span class="sr-only astro-clw6ags5" translate="no">Acquia Dev Portal</span></a></div><nav class="ms-4 shrink-0 [@media(max-width:49.999rem)]:hidden" aria-label="Documentation sections"><ul class="m-0 flex list-none p-0 items-center gap-1"><li><a class="flex items-center gap-2 font-heading text-sm leading-body font-semibold whitespace-nowrap text-text-muted no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:text-text rounded-full border border-transparent px-3 py-1 hover:bg-bg-subtle aria-[current=true]:border-border aria-[current=true]:bg-bg-subtle aria-[current=true]:text-heading" href="/start-here/what-you-can-build/">Start here</a></li><li><a class="flex items-center gap-2 font-heading text-sm leading-body font-semibold whitespace-nowrap text-text-muted no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:text-text rounded-full border border-transparent px-3 py-1 hover:bg-bg-subtle aria-[current=true]:border-border aria-[current=true]:bg-bg-subtle aria-[current=true]:text-heading" href="/source-cms/canvas-components/">Source CMS</a></li><li><a class="flex items-center gap-2 font-heading text-sm leading-body font-semibold whitespace-nowrap text-text-muted no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:text-text rounded-full border border-transparent px-3 py-1 hover:bg-bg-subtle aria-[current=true]:border-border aria-[current=true]:bg-bg-subtle aria-[current=true]:text-heading" href="/cloud-platform/cli/">Cloud Platform</a></li></ul></nav><div class="sl-flex print:hidden min-w-0 flex-1 justify-end"><site-search class=" astro-r5ar4xm7" data-translations="{&quot;placeholder&quot;:&quot;Search&quot;}"><button data-open-modal disabled aria-label="Search" aria-keyshortcuts="Control+K" class="astro-r5ar4xm7"><svg aria-hidden="true" class="astro-r5ar4xm7 astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.71 20.29 18 16.61A9 9 0 1 0 16.61 18l3.68 3.68a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.39ZM11 18a7 7 0 1 1 0-14 7 7 0 0 1 0 14Z"/></svg><span class="sl-hidden md:sl-block astro-r5ar4xm7" aria-hidden="true">Search</span><kbd class="sl-hidden md:sl-flex astro-r5ar4xm7" style="display: none;"><kbd class="astro-r5ar4xm7">Ctrl</kbd><kbd class="astro-r5ar4xm7">K</kbd></kbd></button><dialog style="padding:0" aria-label="Search" class="astro-r5ar4xm7"><div class="dialog-frame sl-flex astro-r5ar4xm7"><button data-close-modal class="sl-flex md:sl-hidden astro-r5ar4xm7">Cancel</button><div class="search-container astro-r5ar4xm7"><div id="starlight__search" class="astro-r5ar4xm7"></div></div></div></dialog></site-search><script>
	(() => {
		const openBtn = document.querySelector('button[data-open-modal]');
		const shortcut = openBtn?.querySelector('kbd');
		if (!openBtn || !(shortcut instanceof HTMLElement)) return;
		const platformKey = shortcut.querySelector('kbd');
		if (platformKey && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)) {
			platformKey.textContent = '⌘';
			openBtn.setAttribute('aria-keyshortcuts', 'Meta+K');
		}
		shortcut.style.display = '';
	})();
</script><script type="module" src="/_astro/Search.astro_astro_type_script_index_0_lang.B-Vh4ymV.js"></script></div><div class="sl-hidden md:sl-flex print:hidden items-center gap-4"><div class="sl-flex items-center gap-4 not-empty:after:h-8 not-empty:after:border-e not-empty:after:border-(--sl-color-gray-5) not-empty:after:content-['']"></div><starlight-theme-select><label style="--sl-select-width: 6.25em" class="astro-r2p65idu"><span class="sr-only astro-r2p65idu">Select theme</span><svg aria-hidden="true" class="icon label-icon astro-r2p65idu astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg><select autocomplete="off" class="astro-r2p65idu"><option value="dark" class="astro-r2p65idu">Dark</option><option value="light" class="astro-r2p65idu">Light</option><option value="auto" selected class="astro-r2p65idu">Auto</option></select><svg aria-hidden="true" class="icon caret astro-r2p65idu astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg></label></starlight-theme-select><script>
	StarlightThemeProvider.updatePickers();
</script><script type="module">var e=`starlight-theme`,t=e=>e===`auto`||e===`dark`||e===`light`?e:`auto`,n=()=>t(typeof localStorage<`u`&&localStorage.getItem(e));function r(t){typeof localStorage<`u`&&localStorage.setItem(e,t===`light`||t===`dark`?t:``)}var i=()=>matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`;function a(e){StarlightThemeProvider.updatePickers(e),document.documentElement.dataset.theme=e===`auto`?i():e,r(e)}matchMedia(`(prefers-color-scheme: light)`).addEventListener(`change`,()=>{n()===`auto`&&a(`auto`)});var o=class extends HTMLElement{constructor(){super(),a(n()),this.querySelector(`select`)?.addEventListener(`change`,e=>{e.currentTarget instanceof HTMLSelectElement&&a(t(e.currentTarget.value))})}};customElements.define(`starlight-theme-select`,o);</script><script type="module">var e=class extends HTMLElement{constructor(){super();let e=this.querySelector(`select`);e&&(e.addEventListener(`change`,e=>{e.currentTarget instanceof HTMLSelectElement&&(window.location.pathname=e.currentTarget.value)}),window.addEventListener(`pageshow`,t=>{if(!t.persisted)return;let n=e.querySelector(`option[selected]`)?.index;n!==e.selectedIndex&&(e.selectedIndex=n??0)}))}};customElements.define(`starlight-lang-select`,e);</script></div></div><nav aria-label="Main" class="print:hidden [@media(min-width:50rem)]:hidden"><starlight-menu-button class="print:hidden astro-vvx7mffu"><button aria-expanded="false" aria-label="Menu" aria-controls="starlight__sidebar" class="sl-flex md:sl-hidden astro-vvx7mffu"><svg aria-hidden="true" class="open-menu astro-vvx7mffu astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M3 8h18a1 1 0 1 0 0-2H3a1 1 0 0 0 0 2Zm18 8H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Zm0-5H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Z"/></svg><svg aria-hidden="true" class="close-menu astro-vvx7mffu astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="m13.41 12 6.3-6.29a1.004 1.004 0 1 0-1.42-1.42L12 10.59l-6.29-6.3a1.004 1.004 0 0 0-1.42 1.42l6.3 6.29-6.3 6.29a1 1 0 0 0 0 1.42.998.998 0 0 0 1.42 0l6.29-6.3 6.29 6.3a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.42L13.41 12Z"/></svg></button></starlight-menu-button><script type="module">var e=class extends HTMLElement{btn=this.querySelector(`button`);constructor(){super(),this.btn.addEventListener(`click`,()=>this.toggleExpanded());let e=this.closest(`nav`);e&&e.addEventListener(`keyup`,e=>this.closeOnEscape(e)),matchMedia(`(min-width: 50em)`).addEventListener(`change`,()=>this.setExpanded(!1))}setExpanded(e){this.setAttribute(`aria-expanded`,String(e)),document.body.toggleAttribute(`data-mobile-menu-expanded`,e),document.querySelectorAll(`.main-frame, .sl-skip-link`).forEach(t=>{t.toggleAttribute(`inert`,e)})}toggleExpanded(){this.setExpanded(this.getAttribute(`aria-expanded`)!==`true`)}closeOnEscape(e){e.code===`Escape`&&(this.setExpanded(!1),this.btn.focus())}};customElements.define(`starlight-menu-button`,e);</script><div id="starlight__sidebar" class="absolute inset-x-0 top-full hidden h-[calc(100dvh-var(--sl-nav-height))] overflow-y-auto bg-bg px-[var(--sl-sidebar-pad-x)] pt-4 [[aria-expanded=true]~&amp;]:block"><ul class="m-0 flex list-none flex-col gap-4 p-0"><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text font-semibold text-heading" href="/start-here/what-you-can-build/">Start here</a><ul class="m-0 list-none p-0"><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/start-here/what-you-can-build/">What you can build</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/start-here/choose-your-backend/">Choose your path</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/start-here/glossary/">Glossary</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/start-here/acquia-apis/">Acquia APIs directory</a></li></ul></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text font-semibold text-heading" href="/source-cms/canvas-components/">Source CMS</a><ul class="m-0 list-none p-0"><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/source-cms/canvas-components/">Build page components</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/source-cms/ai-agents/">Connect AI agents</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/source-cms/authenticate/">Authenticate API requests</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/source-cms/content-api/">Work with content via the API</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/source-cms/get-content/">Build a headless frontend</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/source-cms/deploy/">Deploy a headless frontend</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/source-cms/reference/">Reference</a></li></ul></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text font-semibold text-heading" href="/cloud-platform/cli/">Cloud Platform</a><ul class="m-0 list-none p-0"><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/cloud-platform/cli/">Work from the terminal</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/cloud-platform/code-workflow/">Ship code to environments</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/cloud-platform/local-dev/">Set up local development</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/cloud-platform/ci-cd/">Automate with CI/CD</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/cloud-platform/configure/">Configure environments</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/cloud-platform/caching/">Cache and deliver pages</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/cloud-platform/observability/">Read logs and diagnose</a></li><li><a class="flex items-center border-s-2 border-s-transparent px-3 py-2 font-heading text-sm leading-body no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-s-border-strong hover:bg-bg-subtle hover:text-text focus-visible:border-s-border-strong focus-visible:bg-bg-subtle focus-visible:text-text ps-6 font-medium text-text-muted" href="/cloud-platform/reference/">Reference</a></li></ul></li></ul><div class="mobile-preferences sl-flex astro-b5gddk54"><div class="social-icons astro-b5gddk54"></div><starlight-theme-select><label style="--sl-select-width: 6.25em" class="astro-r2p65idu"><span class="sr-only astro-r2p65idu">Select theme</span><svg aria-hidden="true" class="icon label-icon astro-r2p65idu astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg><select autocomplete="off" class="astro-r2p65idu"><option value="dark" class="astro-r2p65idu">Dark</option><option value="light" class="astro-r2p65idu">Light</option><option value="auto" selected class="astro-r2p65idu">Auto</option></select><svg aria-hidden="true" class="icon caret astro-r2p65idu astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg></label></starlight-theme-select><script>
	StarlightThemeProvider.updatePickers();
</script></div></div></nav><script type="module">for(let e of document.querySelectorAll(`starlight-menu-button`)){let t=e.querySelector(`button`);t&&new MutationObserver(()=>t.setAttribute(`aria-expanded`,e.getAttribute(`aria-expanded`)??`false`)).observe(e,{attributes:!0,attributeFilter:[`aria-expanded`]})}var e=document.querySelector(`site-search`),t=e?.querySelector(`dialog`),n=e?.querySelector(`#starlight__search`);if(e&&t&&n){let r=document.createElement(`div`);r.className=`sr-only`,r.setAttribute(`role`,`status`),t.append(r),new MutationObserver(()=>{let e=n.querySelector(`.pagefind-ui__message`)?.textContent?.trim()??``;r.textContent!==e&&(r.textContent=e)}).observe(n,{childList:!0,subtree:!0,characterData:!0}),t.addEventListener(`keydown`,t=>{if(t.key!==`ArrowDown`&&t.key!==`ArrowUp`)return;let r=[e.querySelector(`input`),...n.querySelectorAll(`a.pagefind-ui__result-link`)].filter(e=>e instanceof HTMLElement),i=r.findIndex(e=>e===document.activeElement);if(i===-1)return;let a=r[i+(t.key===`ArrowDown`?1:-1)];a&&(t.preventDefault(),a.focus())})}</script></header><div class="main-frame astro-gqpr5s5a"><script type="module">var e=document.getElementById(`starlight__sidebar`),t=e?.querySelector(`sl-sidebar-state-persist`),n=`sl-sidebar-state`,r=()=>{let r=[],i=t?.dataset.hash||``;try{let e=sessionStorage.getItem(n),t=JSON.parse(e||`{}`);Array.isArray(t.open)&&t.hash===i&&(r=t.open)}catch{}return{hash:i,open:r,scroll:e?.scrollTop||0}},i=e=>{try{sessionStorage.setItem(n,JSON.stringify(e))}catch{}},a=()=>i(r()),o=(e,t)=>{let n=r();n.open[t]=e,i(n)};t?.addEventListener(`click`,e=>{if(!(e.target instanceof Element))return;let t=e.target.closest(`summary`)?.closest(`details`);if(!t)return;let n=t.querySelector(`sl-sidebar-restore`),r=parseInt(n?.dataset.index||``);isNaN(r)||o(!t.open,r)}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&a()});</script><div class="lg:sl-flex astro-abfeecmu"><div class="main-pane astro-abfeecmu"><main data-pagefind-body class="astro-vdxcvpsm" lang="en" dir="ltr"><div class="content-panel astro-oil7k7jf"><div class="sl-container astro-oil7k7jf"><div class="flex flex-wrap items-center justify-between gap-x-4 gap-y-2 mt-4 astro-u72m6wot"><h1 id="_top" class="astro-u72m6wot">Acquia Developer Portal</h1></div><script type="module">function e(){document.querySelectorAll(`.ai-export:not([data-bound])`).forEach(e=>{e.dataset.bound=``;let t=e.querySelector(`.ai-export__menu`);t&&(t.querySelectorAll(`a`).forEach(e=>e.addEventListener(`click`,()=>t.open=!1)),t.addEventListener(`keydown`,e=>e.key===`Escape`&&(t.open=!1)),document.addEventListener(`click`,e=>{t.open&&!t.contains(e.target)&&(t.open=!1)}));let n=e.querySelector(`.ai-export__copy`),r=n?.querySelector(`.ai-export__label`),i=e.getAttribute(`data-md`);!n||!r||!i||n.addEventListener(`click`,async()=>{let e=r.textContent;try{let e=await fetch(i);if(!e.ok)throw Error(String(e.status));await navigator.clipboard.writeText(await e.text()),r.textContent=`Copied`,n.dataset.copied=``}catch{r.textContent=`Copy failed`}setTimeout(()=>{r.textContent=e,delete n.dataset.copied},1500)})})}e(),document.addEventListener(`astro:page-load`,e);</script></div></div><div class="content-panel astro-oil7k7jf"><div class="sl-container astro-oil7k7jf"><div class="sl-markdown-content"><section class="not-content py-12 home-dark relative isolate overflow-hidden bg-navy-950 pt-[calc(var(--sl-nav-height)+4rem)] pb-18 [@media(max-width:960px)]:pt-[calc(var(--sl-nav-height)+2.5rem)] [@media(max-width:960px)]:pb-14" aria-label="Introduction"><div class="mx-auto max-w-[var(--shell-max)] px-[clamp(var(--spacing-4),4vw,var(--spacing-12))]"><div class="grid grid-cols-[minmax(0,6fr)_minmax(0,5fr)] items-center gap-x-16 gap-y-10 [@media(max-width:960px)]:grid-cols-1"><div class="flex flex-col gap-6"><p class="m-0 font-heading text-[clamp(2.75rem,5.6vw,4.25rem)] leading-[1.02] font-bold tracking-[-0.03em] text-balance text-heading">Structured content, on <span class="text-blue-500">any frontend</span></p><p class="m-0 max-w-[54ch] text-[1.3125rem] leading-[1.5] text-text">Build and scale structured content, with fine-grained access controls and collaborative editorial tools, on as many frontends as you want, with reads and writes over an open API.</p><p class="m-0 max-w-[54ch] text-[1.0625rem] leading-[1.6] text-text">Drupal gives you all of that out of the box: content types and fields, roles and permissions, editorial workflow, revisions. You write the components and editors compose pages with them. Acquia runs what’s underneath.</p><p class="m-0 max-w-[54ch] text-[0.9375rem] leading-[1.6] text-text-muted">Drupal and Drupal Canvas are open source: you can run the same pieces on your laptop today.</p><ul class="m-0 flex list-none flex-wrap gap-x-5 gap-y-2 p-0 font-heading text-[0.75rem] leading-none font-bold uppercase tracking-[0.13em] text-text-muted"><li class="border-s-[3px] border-s-blue-500 ps-2">Open source freedom</li><li class="border-s-[3px] border-s-blue-500 ps-2">Enterprise governance and security</li><li class="border-s-[3px] border-s-blue-500 ps-2">Agent ready</li></ul></div><svg aria-hidden="true" class="h-auto w-full max-w-[38rem] justify-self-end text-blue-600 [@media(max-width:960px)]:justify-self-center" viewBox="-184 14 554 208" fill="none"><path d="M-11.5567 18.6525V69.4686M124.275 18.6525V69.4686M-88.7881 18.6525V69.4686M220.138 18.6525V69.4686M142.906 18.6525V69.4686M-12.0157 166.613V217.424M123.129 166.613V217.424M-88.7881 166.613V217.424M218.301 166.613V217.424M141.529 166.613V217.424M-68.5175 92.0716V142.883M11.992 92.0716V142.883M-88.7881 92.0716V142.883M173.016 92.0716V142.883M253.525 92.0716V142.883M273.801 92.0716V142.883M152.745 92.0716V142.883M-40.6542 30.9697C-44.9542 27.5839 -47.6842 22.8537 -49.1011 20.071L-49.812 18.5734L-50.0588 18.0593C-50.0983 17.9802 -50.2069 17.9802 -50.2464 18.0593L-50.7302 19.0479L-51.2535 20.1748C-52.6704 22.9823 -55.4251 27.6334 -59.7004 30.9647C-66.2022 36.1101 -70.1664 42.2045 -70.1664 49.8163C-70.1664 59.5337 -62.5884 70.116 -50.1526 70.116C-37.7168 70.116 -30.1931 59.5337 -30.1931 49.8163C-30.1931 42.1995 -34.1277 36.1101 -40.6591 30.9647L-40.6542 30.9697ZM36.5772 30.9697C32.2773 27.5839 29.5472 22.8537 28.1304 20.071L27.4194 18.5734L27.1726 18.0593C27.1331 17.9802 27.0245 17.9802 26.985 18.0593L26.5012 19.0479L25.9779 20.1748C24.561 22.9823 21.8063 27.6334 17.531 30.9647C11.0292 36.1101 7.06499 42.2045 7.06499 49.8163C7.06499 59.5337 14.643 70.116 27.0788 70.116C39.5146 70.116 47.0383 59.5337 47.0383 49.8163C47.0383 42.1995 43.1037 36.1101 36.5723 30.9647L36.5772 30.9697ZM95.1822 30.9697C90.8823 27.5839 88.1522 22.8537 86.7353 20.071L86.0244 18.5734L85.7776 18.0593C85.7381 17.9802 85.6295 17.9802 85.59 18.0593L85.1062 19.0479L84.5829 20.1748C83.166 22.9823 80.4113 27.6334 76.136 30.9647C69.6342 36.1101 65.67 42.2045 65.67 49.8163C65.67 59.5337 73.248 70.116 85.6838 70.116C98.1196 70.116 105.643 59.5337 105.643 49.8163C105.643 42.1995 101.709 36.1101 95.1773 30.9647L95.1822 30.9697ZM191.045 30.9697C186.745 27.5839 184.015 22.8537 182.598 20.071L181.887 18.5734L181.64 18.0593C181.601 17.9802 181.492 17.9802 181.453 18.0593L180.969 19.0479L180.446 20.1748C179.029 22.9823 176.274 27.6334 171.999 30.9647C165.497 36.1101 161.533 42.2045 161.533 49.8163C161.533 59.5337 169.111 70.116 181.547 70.116C193.982 70.116 201.506 59.5337 201.506 49.8163C201.506 42.1995 197.571 36.1101 191.04 30.9647L191.045 30.9697ZM268.276 30.9697C263.976 27.5839 261.246 22.8537 259.83 20.071L259.119 18.5734L258.872 18.0593C258.832 17.9802 258.724 17.9802 258.684 18.0593L258.2 19.0479L257.677 20.1748C256.26 22.9823 253.506 27.6334 249.23 30.9647C242.728 36.1101 238.764 42.2045 238.764 49.8163C238.764 59.5337 246.342 70.116 258.778 70.116C271.214 70.116 278.738 59.5337 278.738 49.8163C278.738 42.1995 274.803 36.1101 268.272 30.9647L268.276 30.9697ZM-40.8813 178.925C-45.1812 175.539 -47.9113 170.809 -49.3282 168.026L-50.0391 166.529L-50.2859 166.015C-50.3254 165.936 -50.434 165.936 -50.4735 166.015L-50.9573 167.003L-51.4806 168.13C-52.8975 170.938 -55.6522 175.589 -59.9275 178.92C-66.4293 184.065 -70.3935 190.16 -70.3935 197.772C-70.3935 207.489 -62.8155 218.071 -50.3797 218.071C-37.9439 218.071 -30.4202 207.489 -30.4202 197.772C-30.4202 190.155 -34.3548 184.065 -40.8862 178.92L-40.8813 178.925ZM35.8911 178.925C31.5911 175.539 28.861 170.809 27.4442 168.026L26.7333 166.529L26.4865 166.015C26.447 165.936 26.3383 165.936 26.2988 166.015L25.815 167.003L25.2917 168.13C23.8749 170.938 21.1201 175.589 16.8449 178.92C10.3431 184.065 6.37881 190.16 6.37881 197.772C6.37881 207.489 13.9568 218.071 26.3927 218.071C38.8285 218.071 46.3522 207.489 46.3522 197.772C46.3522 190.155 42.4175 184.065 35.8861 178.92L35.8911 178.925ZM94.2639 178.925C89.9639 175.539 87.2339 170.809 85.817 168.026L85.1061 166.529L84.8593 166.015C84.8198 165.936 84.7112 165.936 84.6717 166.015L84.1879 167.003L83.6646 168.13C82.2477 170.938 79.493 175.589 75.2177 178.92C68.7159 184.065 64.7516 190.16 64.7516 197.772C64.7516 207.489 72.3296 218.071 84.7655 218.071C97.2013 218.071 104.725 207.489 104.725 197.772C104.725 190.155 100.79 184.065 94.259 178.92L94.2639 178.925ZM189.436 178.925C185.136 175.539 182.406 170.809 180.989 168.026L180.278 166.529L180.031 166.015C179.992 165.936 179.883 165.936 179.844 166.015L179.36 167.003L178.836 168.13C177.42 170.938 174.665 175.589 170.39 178.92C163.888 184.065 159.923 190.16 159.923 197.772C159.923 207.489 167.501 218.071 179.937 218.071C192.373 218.071 199.897 207.489 199.897 197.772C199.897 190.155 195.962 184.065 189.431 178.92L189.436 178.925ZM266.208 178.925C261.908 175.539 259.178 170.809 257.761 168.026L257.05 166.529L256.803 166.015C256.764 165.936 256.655 165.936 256.616 166.015L256.132 167.003L255.609 168.13C254.192 170.938 251.437 175.589 247.162 178.92C240.66 184.065 236.696 190.16 236.696 197.772C236.696 207.489 244.274 218.071 256.71 218.071C269.145 218.071 276.669 207.489 276.669 197.772C276.669 190.155 272.734 184.065 266.203 178.92L266.208 178.925ZM122.009 104.389C117.709 101.003 114.979 96.2729 113.562 93.4901L112.851 91.9925L112.604 91.4785C112.565 91.3994 112.456 91.3994 112.417 91.4785L111.933 92.467L111.409 93.5939C109.993 96.4014 107.238 101.053 102.962 104.384C96.4607 109.529 92.4965 115.624 92.4965 123.235C92.4965 132.953 100.074 143.535 112.51 143.535C124.946 143.535 132.47 132.953 132.47 123.235C132.47 115.619 128.535 109.529 122.004 104.384L122.009 104.389ZM-18.7396 104.389C-23.0396 101.003 -25.7697 96.2729 -27.1865 93.4901L-27.8974 91.9925L-28.1443 91.4785C-28.1838 91.3994 -28.2924 91.3994 -28.3319 91.4785L-28.8157 92.467L-29.339 93.5939C-30.7558 96.4014 -33.5106 101.053 -37.7858 104.384C-44.2876 109.529 -48.2519 115.624 -48.2519 123.235C-48.2519 132.953 -40.6739 143.535 -28.2381 143.535C-15.8022 143.535 -8.27853 132.953 -8.27853 123.235C-8.27853 115.619 -12.2132 109.529 -18.7446 104.384L-18.7396 104.389ZM61.7698 104.389C57.4698 101.003 54.7398 96.2729 53.3229 93.4901L52.612 91.9925L52.3652 91.4785C52.3257 91.3994 52.2171 91.3994 52.1776 91.4785L51.6938 92.467L51.1705 93.5939C49.7536 96.4014 46.9988 101.053 42.7236 104.384C36.2218 109.529 32.2575 115.624 32.2575 123.235C32.2575 132.953 39.8355 143.535 52.2714 143.535C64.7072 143.535 72.2309 132.953 72.2309 123.235C72.2309 115.619 68.2962 109.529 61.7648 104.384L61.7698 104.389ZM222.794 104.389C218.494 101.003 215.764 96.2729 214.347 93.4901L213.636 91.9925L213.389 91.4785C213.35 91.3994 213.241 91.3994 213.201 91.4785L212.718 92.467L212.194 93.5939C210.777 96.4014 208.023 101.053 203.747 104.384C197.246 109.529 193.281 115.624 193.281 123.235C193.281 132.953 200.859 143.535 213.295 143.535C225.731 143.535 233.255 132.953 233.255 123.235C233.255 115.619 229.32 109.529 222.789 104.384L222.794 104.389ZM-182 128.598V107.982L-122.423 59.7363V82.1564L-166.809 118.411L-122.423 154.187V176.607L-182 128.598ZM308.423 176.607V154.187L352.81 118.411L308.423 82.1564V59.7363L368 107.982V128.598L308.423 176.607Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></div><div class="mt-12 border-t border-border pt-12"><h2 class="m-0 mb-10 font-heading text-[2rem] leading-[1.1] font-bold tracking-[-0.025em] text-heading">How you build</h2><div class="relative mb-9 border-t border-border"><p class="absolute -top-[0.72rem] left-0 m-0 flex items-baseline gap-2.5 bg-navy-950 pe-4 font-heading text-xs leading-none font-bold uppercase tracking-[0.11em] text-text"><span class="font-mono text-xs font-normal tracking-normal text-pink-500">01</span>Pick your backend</p></div><div class="mb-14 grid grid-cols-[repeat(auto-fit,minmax(min(100%,21rem),1fr))] gap-x-16 gap-y-9"><a class="group/door flex flex-col items-start no-underline" href="/source-cms/"><span class="font-heading text-[0.6875rem] leading-none font-bold uppercase tracking-[0.11em] text-blue-500">Source CMS</span><span class="mt-2 inline-flex items-center gap-2 font-heading text-[1.75rem] leading-[1.15] font-bold tracking-[-0.02em] text-heading transition-colors duration-[var(--duration-fast)] ease-standard group-hover/door:text-link">A fully managed CMS<svg aria-hidden="true" width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.75" class="flex-shrink-0 text-accent"><path d="M3 8h10M9 4l4 4-4 4"></path></svg></span><span class="mt-3 max-w-[46ch] leading-[1.6] text-text-muted">Fully managed SaaS: Acquia runs, updates, and hosts the CMS. No infrastructure to operate and no upgrades to schedule. A site is there on day one, serving content over its API.</span></a><a class="group/door flex flex-col items-start no-underline" href="/cloud-platform/"><span class="font-heading text-[0.6875rem] leading-none font-bold uppercase tracking-[0.11em] text-blue-500">Cloud Platform</span><span class="mt-2 inline-flex items-center gap-2 font-heading text-[1.75rem] leading-[1.15] font-bold tracking-[-0.02em] text-heading transition-colors duration-[var(--duration-fast)] ease-standard group-hover/door:text-link">Maximum control and flexibility<svg aria-hidden="true" width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.75" class="flex-shrink-0 text-accent"><path d="M3 8h10M9 4l4 4-4 4"></path></svg></span><span class="mt-3 max-w-[46ch] leading-[1.6] text-text-muted">Your own Drupal codebase on Drupal-optimized hosting: contributed and custom modules, custom PHP, the content model in code, promoted through git across Dev, Stage, and Prod.</span></a></div><div class="relative mb-9 border-t border-border"><p class="absolute -top-[0.72rem] left-0 m-0 flex items-baseline gap-2.5 bg-navy-950 pe-4 font-heading text-xs leading-none font-bold uppercase tracking-[0.11em] text-text"><span class="font-mono text-xs font-normal tracking-normal text-pink-500">02</span>Pick your frontend</p></div><div class="flex flex-wrap gap-3"><a class="group/card flex flex-[1_1_17rem] flex-col rounded-lg border border-blue-500 bg-blue-500/10 px-[1.45rem] py-[1.35rem] no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:bg-blue-500/15" href="/source-cms/canvas-components/"><span class="font-heading text-[0.6875rem] leading-none font-bold uppercase tracking-[0.09em] text-text-muted">Drupal Canvas</span><span class="mt-2 flex items-center gap-2.5 font-heading text-[1.375rem] leading-[1.25] font-bold tracking-[-0.02em] text-heading"><img src="/home/drupal.svg" alt="" width="26" height="26" class="h-[26px] w-[26px] flex-shrink-0"><span aria-hidden="true" class="-ms-2 -me-1 font-heading text-[0.9375rem] leading-none font-semibold text-text-muted">+</span><img src="/home/react.svg" alt="" width="26" height="26" class="h-[26px] w-[26px] flex-shrink-0">Single application<svg aria-hidden="true" width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.75" class="flex-shrink-0 text-accent"><path d="M3 8h10M9 4l4 4-4 4"></path></svg></span><span class="mt-2.5 text-[0.9375rem] leading-[1.55] text-text-muted">Rendered by Drupal: push your React components and the platform serves the finished pages.</span><span class="mt-auto pt-5 text-sm leading-[1.5] text-text-muted">Faster to get started, simpler to maintain: no frontend to build, host, or deploy.</span></a><div class="flex flex-[2_1_28rem] flex-col rounded-lg border border-border bg-bg-subtle px-[1.45rem] py-[1.35rem]"><span class="font-heading text-[0.6875rem] leading-none font-bold uppercase tracking-[0.09em] text-text-muted">Canvas Headless</span><a class="mt-2 flex items-center gap-2.5 font-heading text-[1.375rem] leading-[1.25] font-bold tracking-[-0.02em] text-heading w-fit no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:text-link" href="/source-cms/get-content/">Decoupled<svg aria-hidden="true" width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.75" class="flex-shrink-0 text-accent"><path d="M3 8h10M9 4l4 4-4 4"></path></svg></a><p class="m-0 mt-2.5 text-[0.9375rem] leading-[1.55] text-text-muted">Rendered by your frontend: the same Canvas components, served from your own app. One scaffold command per adapter.</p><ul class="m-0 mt-4 grid list-none grid-cols-[repeat(auto-fit,minmax(min(100%,10.25rem),1fr))] gap-2.5 p-0"><li><a class="flex h-full items-center gap-2.5 rounded-[9px] border border-border bg-bg-subtle px-3 py-2.5 no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-border-strong" href="/source-cms/get-content/quickstart/"><span class="flex h-[26px] w-[26px] flex-shrink-0 items-center justify-center rounded-md bg-white shadow-1"><img src="/home/nextjs.svg" alt="" width="17" height="17"></span><span class="font-heading text-[0.9375rem] leading-tight font-semibold whitespace-nowrap text-heading">Next.js</span></a></li><li><a class="flex h-full items-center gap-2.5 rounded-[9px] border border-border bg-bg-subtle px-3 py-2.5 no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-border-strong" href="/source-cms/get-content/quickstart/"><span class="flex h-[26px] w-[26px] flex-shrink-0 items-center justify-center rounded-md bg-white shadow-1"><img src="/home/astro.svg" alt="" width="17" height="17"></span><span class="font-heading text-[0.9375rem] leading-tight font-semibold whitespace-nowrap text-heading">Astro</span></a></li><li><a class="flex h-full items-center gap-2.5 rounded-[9px] border border-border bg-bg-subtle px-3 py-2.5 no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-border-strong" href="/source-cms/get-content/quickstart/"><span class="flex h-[26px] w-[26px] flex-shrink-0 items-center justify-center rounded-md bg-white shadow-1"><img src="/home/nuxt.svg" alt="" width="17" height="17"></span><span class="font-heading text-[0.9375rem] leading-tight font-semibold whitespace-nowrap text-heading">Nuxt</span></a></li><li><a class="flex h-full items-center gap-2.5 rounded-[9px] border border-border bg-bg-subtle px-3 py-2.5 no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-border-strong" href="/source-cms/get-content/quickstart/"><img src="/home/tanstack-start.svg" alt="" width="26" height="26" class="flex-shrink-0 rounded-md shadow-1"><span class="font-heading text-[0.9375rem] leading-tight font-semibold whitespace-nowrap text-heading">TanStack Start</span></a></li></ul></div></div><p class="m-0 mt-6 flex flex-wrap items-baseline gap-x-6 gap-y-2 border-s-[3px] border-s-blue-500 ps-[0.85rem] text-[0.9375rem] leading-[1.6] text-text-muted"><span>Either way, editors compose pages in Drupal Canvas, a modern visual editor, from the components you write, and nothing reaches readers until it is published. They are still your own components, even when Drupal renders the pages. A site renders one way at a time, and both work on either backend.</span><a class="font-semibold text-link no-underline hover:text-link-hover" href="/start-here/choose-your-backend/">Choose your path →</a></p></div><div class="absolute inset-x-0 bottom-0 h-0.5 bg-(image:--gradient-brand)" aria-hidden="true"></div></div></section><script type="module">var e=()=>document.documentElement.toggleAttribute(`data-home-scrolled`,window.scrollY>24);e(),addEventListener(`scroll`,e,{passive:!0});</script><section class="not-content py-12" aria-labelledby="browse-heading"><div class="mx-auto max-w-[var(--shell-max)] px-[clamp(var(--spacing-4),4vw,var(--spacing-12))]"><div class="mb-4 h-0.5 w-10 bg-(image:--gradient-brand)" aria-hidden="true"></div><h2 id="browse-heading" class="mt-0 mb-2 font-heading font-bold text-heading text-3xl leading-heading tracking-heading text-balance">Pick your task</h2><ul class="m-0 grid list-none grid-cols-3 gap-4 p-0 [@media(600px&lt;width&lt;=960px)]:grid-cols-2 [@media(max-width:600px)]:grid-cols-1"><li class="flex h-full flex-col rounded-lg border border-border bg-surface"><a class="flex flex-col gap-2 px-6 pt-6 pb-4 no-underline" href="/start-here/what-you-can-build/"><span class="font-heading text-lg leading-heading font-semibold text-heading">Start here</span><span class="text-sm leading-[1.5] text-text-muted">What you can build on Acquia, which docs live where, and how to choose your path.</span></a><ul class="m-0 flex list-none flex-col gap-2 px-6 pt-0 pb-6 text-sm leading-body font-medium"><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/start-here/what-you-can-build/">What you can build</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/start-here/choose-your-backend/">Choose your path</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/start-here/glossary/">Glossary</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/start-here/acquia-apis/">Acquia APIs directory</a></li></ul></li><li class="flex h-full flex-col rounded-lg border border-border bg-surface"><a class="flex flex-col gap-2 px-6 pt-6 pb-4 no-underline" href="/source-cms/canvas-components/"><span class="font-heading text-lg leading-heading font-semibold text-heading">Source CMS</span><span class="text-sm leading-[1.5] text-text-muted">A fully managed SaaS CMS; you build on it: Canvas components, AI agents, headless frontends.</span></a><ul class="m-0 flex list-none flex-col gap-2 px-6 pt-0 pb-6 text-sm leading-body font-medium"><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/source-cms/canvas-components/">Build page components</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/source-cms/ai-agents/">Connect AI agents</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/source-cms/authenticate/">Authenticate API requests</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/source-cms/content-api/">Work with content via the API</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/source-cms/get-content/">Build a headless frontend</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/source-cms/deploy/">Deploy a headless frontend</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/source-cms/reference/">Reference</a></li></ul></li><li class="flex h-full flex-col rounded-lg border border-border bg-surface"><a class="flex flex-col gap-2 px-6 pt-6 pb-4 no-underline" href="/cloud-platform/cli/"><span class="font-heading text-lg leading-heading font-semibold text-heading">Cloud Platform</span><span class="text-sm leading-[1.5] text-text-muted">You run Drupal; Acquia hosts it on a Drupal-optimized platform: the CLI, code workflow, local dev, CI/CD, automation.</span></a><ul class="m-0 flex list-none flex-col gap-2 px-6 pt-0 pb-6 text-sm leading-body font-medium"><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/cloud-platform/cli/">Work from the terminal</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/cloud-platform/code-workflow/">Ship code to environments</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/cloud-platform/local-dev/">Set up local development</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/cloud-platform/ci-cd/">Automate with CI/CD</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/cloud-platform/configure/">Configure environments</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/cloud-platform/caching/">Cache and deliver pages</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/cloud-platform/observability/">Read logs and diagnose</a></li><li><a class="text-link no-underline hover:text-link-hover hover:underline" href="/cloud-platform/reference/">Reference</a></li></ul></li></ul></div></section><section class="not-content py-12 bg-bg-subtle" aria-labelledby="tools-heading"><div class="mx-auto max-w-[var(--shell-max)] px-[clamp(var(--spacing-4),4vw,var(--spacing-12))]"><div class="mb-4 h-0.5 w-10 bg-(image:--gradient-brand)" aria-hidden="true"></div><h2 id="tools-heading" class="mt-0 mb-2 font-heading font-bold text-heading text-3xl leading-heading tracking-heading text-balance">Developer tools &amp; reference</h2><ul class="m-0 flex list-none flex-wrap gap-3 p-0"><li><a class="inline-flex items-center rounded-full border border-border bg-surface px-4 py-2 font-mono text-sm leading-body text-text no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-border-strong hover:text-heading" href="/source-cms/reference/content-api/">Content API reference</a></li><li><a class="inline-flex items-center rounded-full border border-border bg-surface px-4 py-2 font-mono text-sm leading-body text-text no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-border-strong hover:text-heading" href="/cloud-platform/reference/acli/">acli commands</a></li><li><a class="inline-flex items-center rounded-full border border-border bg-surface px-4 py-2 font-mono text-sm leading-body text-text no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-border-strong hover:text-heading" href="/source-cms/reference/canvas-cli/">Canvas CLI</a></li><li><a class="inline-flex items-center rounded-full border border-border bg-surface px-4 py-2 font-mono text-sm leading-body text-text no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-border-strong hover:text-heading" href="/source-cms/reference/mcp-server/">MCP server</a></li><li><a class="inline-flex items-center rounded-full border border-border bg-surface px-4 py-2 font-mono text-sm leading-body text-text no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-border-strong hover:text-heading" href="/source-cms/reference/webhooks/">Webhooks</a></li><li><a class="inline-flex items-center rounded-full border border-border bg-surface px-4 py-2 font-mono text-sm leading-body text-text no-underline transition-colors duration-[var(--duration-fast)] ease-standard hover:border-border-strong hover:text-heading" href="/start-here/glossary/">Glossary</a></li></ul></div></section><section class="not-content py-12" aria-labelledby="routing-heading"><div class="mx-auto max-w-[var(--shell-max)] px-[clamp(var(--spacing-4),4vw,var(--spacing-12))] grid grid-cols-[minmax(0,2fr)_minmax(0,1fr)] gap-8 border-t border-border pt-12 [@media(max-width:960px)]:grid-cols-1"><div><h2 id="routing-heading" class="mt-0 mb-2 font-heading text-2xl leading-heading font-bold tracking-heading text-heading">Get oriented</h2><p class="m-0 max-w-[60ch] text-text-muted">New to Acquia? Start with what you can build and which path fits you. Subscription settings, teams, and billing are at <a class="text-link hover:text-link-hover" href="https://docs.acquia.com">docs.acquia.com</a>.</p></div><ul class="m-0 flex list-none flex-col gap-3 p-0 font-semibold"><li><a class="text-link hover:text-link-hover" href="/start-here/what-you-can-build/">What you can build</a></li><li><a class="text-link hover:text-link-hover" href="/start-here/choose-your-backend/#where-each-kind-of-work-happens">Which docs site do I need?</a></li><li><a class="text-link hover:text-link-hover" href="/start-here/choose-your-backend/">Choose your path</a></li></ul></div></section></div><footer class="sl-flex astro-xhxjzfa7"><div class="meta sl-flex astro-xhxjzfa7"></div><div class="pagination-links print:hidden astro-jgq3vlii" dir="ltr"></div></footer><footer class="site-footer relative left-1/2 -ml-[50vw] mt-12 mb-[calc(-1.5rem-3vh)] w-screen border-t border-border bg-bg-subtle" data-pagefind-ignore><div class="mx-auto max-w-[var(--shell-max)] px-[clamp(var(--spacing-4),4vw,var(--spacing-12))] pt-12 pb-8"><div class="flex flex-wrap gap-8 [@media(max-width:600px)]:flex-col [@media(max-width:600px)]:gap-6"><div class="flex-[1_1_10rem]"><p class="mt-0 mb-3 font-heading text-xs leading-body font-bold tracking-[0.06em] text-text-muted uppercase">Build on Acquia</p><ul class="m-0 flex list-none flex-col gap-2 p-0"><li><a class="text-sm leading-body text-text-muted no-underline hover:text-link hover:underline" href="/start-here/what-you-can-build/">What you can build</a></li><li><a class="text-sm leading-body text-text-muted no-underline hover:text-link hover:underline" href="/start-here/choose-your-backend/#where-each-kind-of-work-happens">Which docs site do I need?</a></li><li><a class="text-sm leading-body text-text-muted no-underline hover:text-link hover:underline" href="/start-here/glossary/">Glossary</a></li></ul></div><div class="flex-[1_1_10rem]"><p class="mt-0 mb-3 font-heading text-xs leading-body font-bold tracking-[0.06em] text-text-muted uppercase">Acquia</p><ul class="m-0 flex list-none flex-col gap-2 p-0"><li><a class="text-sm leading-body text-text-muted no-underline hover:text-link hover:underline" href="https://docs.acquia.com">docs.acquia.com</a></li><li><a class="text-sm leading-body text-text-muted no-underline hover:text-link hover:underline" href="https://www.acquia.com">acquia.com</a></li><li><a class="text-sm leading-body text-text-muted no-underline hover:text-link hover:underline" href="https://status.acquia.com">status.acquia.com</a></li></ul></div><div class="flex-[1_1_10rem]"><p class="mt-0 mb-3 font-heading text-xs leading-body font-bold tracking-[0.06em] text-text-muted uppercase">Getting started</p><ul class="m-0 flex list-none flex-col gap-2 p-0"><li><a class="text-sm leading-body text-text-muted no-underline hover:text-link hover:underline" href="/source-cms/get-content/quickstart/">Canvas Headless quickstart</a></li><li><a class="text-sm leading-body text-text-muted no-underline hover:text-link hover:underline" href="/source-cms/content-api/first-fetch/">First fetch</a></li><li><a class="text-sm leading-body text-text-muted no-underline hover:text-link hover:underline" href="/source-cms/authenticate/quickstart/">Authenticate API requests</a></li><li><a class="text-sm leading-body text-text-muted no-underline hover:text-link hover:underline" href="/start-here/choose-your-backend/">Choose your path</a></li></ul></div></div><p class="mt-8 mb-0 text-sm leading-body text-text-muted">© 2026 Acquia Inc.</p></div></footer><script type="module">function e(){let e=document.querySelector(`.site-footer`);if(e instanceof HTMLElement){if(!window.matchMedia(`(min-width: 50rem)`).matches){e.style.left=e.style.marginLeft=e.style.width=``;return}e.style.left=`0`,e.style.marginLeft=`0`,e.style.width=`${document.documentElement.clientWidth}px`,e.style.marginLeft=`${-e.getBoundingClientRect().left}px`}}function t(e,t){let n=document.querySelector(`.site-footer`);if(!(e instanceof HTMLElement)||!n)return;if(!window.matchMedia(t).matches){e.style.height=``;return}let r=e.getBoundingClientRect().top+window.scrollY,i=n.getBoundingClientRect().top+window.scrollY;e.style.height=`${Math.max(i-r,0)}px`}function n(){t(document.querySelector(`nav.sidebar`),`(min-width: 50rem)`),t(document.querySelector(`.right-sidebar-container`),`(min-width: 72rem)`)}function r(){e(),n()}r(),window.addEventListener(`load`,r),window.addEventListener(`resize`,r),document.fonts?.ready?.then(r);</script></div></div></main></div></div></div></div></body></html>