Showing source for: https://getambassador.com/
Duration: 0.094175s
Server: cloudflare

<!--
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  SOURCE OF TRUTH: GitHub repo ambassador-website
  Path: src/templates/layouts/base.html  (branch: main)

  DO NOT EDIT IN DESIGN MANAGER OR VIA THE CLAUDE / HUBSPOT MCP CONNECTOR.
  Changes made here will be overwritten on the next deploy from git.
  For changes, open a PR in the repo or ping Ethan in Slack.
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
--><!doctype html><html lang="en"><head>
    <meta charset="utf-8">
    <title>The Customer Lifecycle Operating System | Ambassador</title>
    <link rel="shortcut icon" href="https://getambassador.com/hubfs/Ambassador%20-%20Icon%2c%20Transparent-1.png">
    <meta name="description" content="Grow, keep, and prove revenue from the customers you already have. Ambassador is the Customer Lifecycle Operating System, orchestrated by HiroAI.">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link rel="preconnect" href="https://js.hsforms.net" crossorigin>
    <link rel="preconnect" href="https://forms.hubspot.com" crossorigin>
    <link rel="preconnect" href="https://www.g2.com" crossorigin>
    <link rel="preload" href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600;700&amp;family=Raleway:wght@800&amp;display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
    <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600;700&amp;family=Raleway:wght@800&amp;display=swap"></noscript>
    
    
    
    
    
    <meta name="viewport" content="width=device-width, initial-scale=1">

    
    <meta property="og:description" content="Grow, keep, and prove revenue from the customers you already have. Ambassador is the Customer Lifecycle Operating System, orchestrated by HiroAI.">
    <meta property="og:title" content="The Customer Lifecycle Operating System | Ambassador">
    <meta name="twitter:description" content="Grow, keep, and prove revenue from the customers you already have. Ambassador is the Customer Lifecycle Operating System, orchestrated by HiroAI.">
    <meta name="twitter:title" content="The Customer Lifecycle Operating System | Ambassador">

    

    
    <style>
a.cta_button{-moz-box-sizing:content-box !important;-webkit-box-sizing:content-box !important;box-sizing:content-box !important;vertical-align:middle}.hs-breadcrumb-menu{list-style-type:none;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px}.hs-breadcrumb-menu-item{float:left;padding:10px 0px 10px 10px}.hs-breadcrumb-menu-divider:before{content:'›';padding-left:10px}.hs-featured-image-link{border:0}.hs-featured-image{float:right;margin:0 0 20px 20px;max-width:50%}@media (max-width: 568px){.hs-featured-image{float:none;margin:0;width:100%;max-width:100%}}.hs-screen-reader-text{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}
</style>

<link rel="stylesheet" href="https://getambassador.com/hubfs/hub_generated/template_assets/1/321618318019/1782829173174/template_main.min.css">
<link rel="stylesheet" href="https://getambassador.com/hubfs/hub_generated/template_assets/1/321603514092/1782829176555/template_theme-overrides.min.css">
<style>
  @font-face {
    font-family: "Lato";
    font-weight: 400;
    font-style: normal;
    font-display: swap;
    src: url("/_hcms/googlefonts/Lato/regular.woff2") format("woff2"), url("/_hcms/googlefonts/Lato/regular.woff") format("woff");
  }
  @font-face {
    font-family: "Lato";
    font-weight: 700;
    font-style: normal;
    font-display: swap;
    src: url("/_hcms/googlefonts/Lato/700.woff2") format("woff2"), url("/_hcms/googlefonts/Lato/700.woff") format("woff");
  }
  @font-face {
    font-family: "Merriweather";
    font-weight: 400;
    font-style: normal;
    font-display: swap;
    src: url("/_hcms/googlefonts/Merriweather/regular.woff2") format("woff2"), url("/_hcms/googlefonts/Merriweather/regular.woff") format("woff");
  }
  @font-face {
    font-family: "Merriweather";
    font-weight: 700;
    font-style: normal;
    font-display: swap;
    src: url("/_hcms/googlefonts/Merriweather/700.woff2") format("woff2"), url("/_hcms/googlefonts/Merriweather/700.woff") format("woff");
  }
</style>

    

    
<!--  Added by GoogleAnalytics4 integration -->
<script data-cookieconsent="ignore">
var _hsp = window._hsp = window._hsp || [];
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

var useGoogleConsentModeV2 = true;
var waitForUpdateMillis = 1000;


if (!window._hsGoogleConsentRunOnce) {
  window._hsGoogleConsentRunOnce = true;

  gtag('consent', 'default', {
    'ad_storage': 'denied',
    'analytics_storage': 'denied',
    'ad_user_data': 'denied',
    'ad_personalization': 'denied',
    'wait_for_update': waitForUpdateMillis
  });

  if (useGoogleConsentModeV2) {
    _hsp.push(['useGoogleConsentModeV2'])
  } else {
    _hsp.push(['addPrivacyConsentListener', function(consent){
      var hasAnalyticsConsent = consent && (consent.allowed || (consent.categories && consent.categories.analytics));
      var hasAdsConsent = consent && (consent.allowed || (consent.categories && consent.categories.advertisement));

      gtag('consent', 'update', {
        'ad_storage': hasAdsConsent ? 'granted' : 'denied',
        'analytics_storage': hasAnalyticsConsent ? 'granted' : 'denied',
        'ad_user_data': hasAdsConsent ? 'granted' : 'denied',
        'ad_personalization': hasAdsConsent ? 'granted' : 'denied'
      });
    }]);
  }
}

gtag('js', new Date());
gtag('set', 'developer_id.dZTQ1Zm', true);
gtag('config', 'G-2CHRCDRML8');
</script>
<script data-cookieconsent="ignore" async src="https://www.googletagmanager.com/gtag/js?id=G-2CHRCDRML8"></script>

<!-- /Added by GoogleAnalytics4 integration -->

<!--  Added by GoogleTagManager integration -->
<script data-cookieconsent="ignore">
var _hsp = window._hsp = window._hsp || [];
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

var useGoogleConsentModeV2 = true;
var waitForUpdateMillis = 1000;

if (useGoogleConsentModeV2) {

  gtag('set','developer_id.dZTQ1Zm',true);

  gtag('consent', 'default', {
  'ad_storage': 'denied',
  'analytics_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'wait_for_update': waitForUpdateMillis
  });
}

var hsLoadGtm = function loadGtm() {
    if(window._hsGtmLoadOnce) {
      return;
    }

    if (useGoogleConsentModeV2) {
      _hsp.push(['useGoogleConsentModeV2'])
    }

    (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-MS4V6QS');

    window._hsGtmLoadOnce = true;
};

_hsp.push(['addPrivacyConsentListener', function(consent){
  if(consent.allowed || (consent.categories && consent.categories.analytics)){
    hsLoadGtm();
  }
}]);

</script>

<!-- /Added by GoogleTagManager integration -->

    <link rel="canonical" href="https://getambassador.com">

<style>
  /* ===== Layout ===== */
  
  [data-hsfc-id=Renderer] .hsfc-Row{
    gap: 15px !important;
    margin-bottom: 2px !important;
  }
  
  [id*="d40a74d2-e075-4eec-9296-f1ca663d9291"][id*="hs_form_target_form"] button[type="submit"]{
  	width: 100% !important;
    font-size: 16px !important;
  }
  
  .hsfc-FieldLabel__RequiredIndicator{
  display: none !important;
  }
  
  .hsfc-Form .hsfc-TextInput,
  .hsfc-Form select,
  .hsfc-Form textarea {
    outline: none !important;
    border: 2px solid #CFC6D6;
    color: #CFC6D6;
    border-radius: 6px;
    padding: 18px;
    height: 55px;
    font-size: 16px !important;
    font-weight: 600;
    box-sizing: border-box;
    width: 100%;
    background: #fff;
  }
</style>

<script>
  window.addEventListener("message", function(event) {
    // HubSpot global form events send postMessage payloads
    if (!event.data || typeof event.data !== "object") return;
	
    const attachForm = document.querySelector('[id*="d40a74d2-e075-4eec-9296-f1ca663d9291"]')
	const enhanced_email = attachForm?.querySelector('[name*="email"]');
    const enhancedNumEmployees = attachForm?.querySelector('[placeholder*="Employee"]')

    if (event.data.formGuid === "d40a74d2-e075-4eec-9296-f1ca663d9291") {
      console.log("HubSpot form submitted!", event.data);
      window.dataLayer = window.dataLayer || [];
      window.dataLayer.push({ event: 'bookMeetingForm', email: enhanced_email?.value, numEmployees: enhancedNumEmployees?.value });
    }
  });
</script>
<meta property="og:image" content="https://getambassador.com/hubfs/ambassador-og-featured-image%20(1).png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<meta name="twitter:image" content="https://getambassador.com/hubfs/ambassador-og-featured-image%20(1).png">


<meta property="og:url" content="https://getambassador.com">
<meta name="twitter:card" content="summary_large_image">
<meta http-equiv="content-language" content="en">






    <style>
    @font-face { font-family: 'Merriweather'; src: local('Georgia'); font-weight: 400; font-style: normal; font-display: optional; }
    @font-face { font-family: 'Merriweather'; src: local('Georgia'); font-weight: 700; font-style: normal; font-display: optional; }
    @font-face { font-family: 'Merriweather'; src: local('Georgia'); font-weight: 400; font-style: italic; font-display: optional; }
    @font-face { font-family: 'Merriweather Sans'; src: local('Arial'); font-weight: 400; font-style: normal; font-display: optional; }
    @font-face { font-family: 'Merriweather Sans'; src: local('Arial'); font-weight: 700; font-style: normal; font-display: optional; }
    @font-face { font-family: 'Lato'; src: local('Arial'); font-weight: 400; font-style: normal; font-display: optional; }
    @font-face { font-family: 'Lato'; src: local('Arial'); font-weight: 700; font-style: normal; font-display: optional; }
    @font-face { font-family: 'Lato'; src: local('Arial'); font-weight: 400; font-style: italic; font-display: optional; }
    </style>
    <link rel="service-doc" href="https://docs.getambassador.com/">
    <link rel="service-doc" href="https://knowledgebase.getambassador.com/">
    
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Organization",
      "@id": "https://getambassador.com/#organization",
      "name": "Ambassador",
      "legalName": "i2H, Inc. dba Ambassador",
      "url": "https://getambassador.com/",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "2212 Queen Anne Ave North, Suite 767",
        "addressLocality": "Seattle",
        "addressRegion": "WA",
        "postalCode": "98109",
        "addressCountry": "US"
      }
    }
    </script>
  <meta name="generator" content="HubSpot"></head>
  <body>
<!--  Added by GoogleTagManager integration -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MS4V6QS" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>

<!-- /Added by GoogleTagManager integration -->

    <div class="body-wrapper   hs-content-id-322410684105 hs-site-page page ">
      
        <!--
  ========================================================================
  SOURCE OF TRUTH: GitHub repo ambassador-website
  Path: src/templates/partials/header.html  (branch: main)

  DO NOT EDIT IN DESIGN MANAGER OR VIA THE CLAUDE / HUBSPOT MCP CONNECTOR.
  Changes made here will be overwritten on the next deploy from git.
  For changes, open a PR in the repo or ping Ethan in Slack.
  ========================================================================
-->

<style>
/* ══════════════════════════════════════════
   SITE NAV v5 — Always visible, scroll enhances
   Default: white background, always shown
   Scroll adds shadow + border refinement
══════════════════════════════════════════ */

/* Skip link */
.nav-skip {
  position: absolute;
  top: -100px;
  left: 0;
  padding: 8px 16px;
  background: #1A3BAE;
  color: #fff;
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  z-index: 9999;
  border-radius: 0 0 6px 0;
  transition: top 0.1s;
}
.nav-skip:focus { top: 0; }

/* ── Outer shell: always visible ── */
.nav-site {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 1000;
  /* Much more translucent + stronger blur + saturate so the nav reads as
     a frosted-glass strip rather than a hard white rectangle on dark
     sections. Hard edges (border, shadow) removed at rest; subtle ones
     come back via .nav--scrolled. */
  background: rgba(255,255,255,0.55);
  border-bottom: 1px solid transparent;
  box-shadow: none;
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  font-family: 'DM Sans', Arial, sans-serif;
  overflow: visible;
  transition: background 300ms ease, box-shadow 300ms ease, border-color 300ms ease;
}

.nav-site__inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 32px;
  height: 72px;
  display: flex;
  align-items: center;
  gap: 0;
  position: relative;
  overflow: visible;
}

/* ── Logo ── */
.nav-site__logo {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  text-decoration: none;
  margin-right: 40px;
  overflow: visible;
  min-width: 160px;
}
.nav-site__logo .nav-site__mark {
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  display: block;
}
.nav-site__wordmark {
  margin-left: 9px;
  font-family: 'Raleway', sans-serif;
  font-size: 18px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #0F1F3D;
  line-height: 1;
}

/* ── Primary nav ── */
.nav-site__nav { flex: 1; min-width: 0; }

.nav-site .menu {
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  align-items: center;
  gap: 2px;
}

/* ── Nav links ── */
.nav-site .menu__link,
.nav-site .menu__toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 8px 14px;
  font-size: 14px;
  font-weight: 500;
  color: #0F1F3D;
  text-decoration: none;
  background: none;
  border: none;
  cursor: pointer;
  border-radius: 7px;
  transition: color 250ms ease, background-color 250ms ease;
  white-space: nowrap;
  line-height: 1;
  min-height: 36px;
}
.nav-site .menu__link:hover,
.nav-site .menu__toggle:hover {
  color: #1A3BAE;
  background-color: #EFF6FF;
}

/* Chevron */
.nav-site .menu__toggle::after { display: none !important; content: none !important; }
.nav-site .menu__toggle .nav-chevron {
  width: 14px; height: 14px;
  flex-shrink: 0;
  transition: transform 0.25s ease;
}
.nav-site .menu__item--drop.open .nav-chevron {
  transform: rotate(180deg);
}

/* ── Mega menu panel ── */
.nav-site .menu__item--drop {
  position: relative;
  align-self: stretch;
  display: flex;
  align-items: center;
  height: 72px;
}
.nav-site .nav-mega {
  display: flex;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  position: absolute;
  top: 100%;
  left: 0;
  width: max-content;
  background: #ffffff;
  border: 1px solid #CDCFD6;
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.10);
  padding: 8px 24px 24px;
  z-index: 200;
  transition: opacity 160ms ease-out, visibility 160ms ease-out;
}
.nav-site .menu__item--mega-global {
  position: relative;
  align-self: stretch;
  display: flex;
  align-items: center;
}
.nav-site .menu__item--drop .nav-mega__col {
  flex: 0 0 200px;
  min-width: 0;
}
.nav-site .nav-mega__col--strategy .nav-mega__link { white-space: normal; line-height: 1.35; }

.nav-site .menu__item--drop:hover .nav-mega,
.nav-site .menu__item--drop.open .nav-mega {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

/* Mega inner */
.nav-site .nav-mega__inner { display: flex; gap: 28px; }
.nav-site .nav-mega__col { min-width: 140px; }
.nav-site .nav-mega__heading {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #606F9F;
  margin: 0 0 12px 4px;
}
.nav-site .nav-mega__list {
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.nav-site .nav-mega__link {
  display: flex;
  align-items: center;
  padding: 10px 16px;
  font-size: 14px;
  font-weight: 400;
  color: #0F1F3D;
  text-decoration: none;
  border-radius: 6px;
  min-height: 44px;
  transition: color 150ms ease, background-color 150ms ease, box-shadow 150ms ease;
  white-space: nowrap;
}
.nav-site .nav-mega__link:hover { background-color: #F8FAFC; }
.nav-site .nav-mega__link--disabled {
  color: #606F9F;
  pointer-events: none;
  cursor: default;
}

/* Coming soon badge */
.nav-mega__badge {
  display: inline-flex;
  align-items: center;
  margin-left: 8px;
  padding: 1px 7px;
  font-size: 12px;
  font-weight: 500;
  color: #606F9F;
  background: #F1F5F9;
  border-radius: 99px;
}
/* "New" pill -- green tint, matches GROW column accent. */
.nav-mega__badge--new {
  color: #095839;
  background: rgba(7, 151, 105, 0.08);
  font-weight: 600;
  letter-spacing: 0.04em;
}

/* Column top borders + heading colors */
/* Vibrant accent treatment (approved June 2026): borders and headings use the
   pillar FACE colors so the menus don't read dark/dramatic. Blue accents use
   blue/500 #1C48D9 (7:1, passes AAA). Green/orange faces sit below 4.5:1 at
   12px -- accepted deviation for one-word uppercase headings; hover TEXT on
   green/orange columns keeps the deep steps for 14px legibility. Purple is
   HiroAI-only, so Strategy and Program Type columns take the blue treatment. */
.nav-site .nav-mega__col--overview  { border-top: 3px solid #1C48D9; padding-top: 12px; }
.nav-site .nav-mega__col--grow      { border-top: 3px solid #079769; padding-top: 12px; }
.nav-site .nav-mega__col--keep      { border-top: 3px solid #EC7313; padding-top: 12px; }
.nav-site .nav-mega__col--prove     { border-top: 3px solid #1C48D9; padding-top: 12px; }
.nav-site .nav-mega__col--solutions    { border-top: 3px solid #1C48D9; padding-top: 16px; }
.nav-site .nav-mega__col--strategy     { border-top: 3px solid #1C48D9; padding-top: 16px; }
.nav-site .nav-mega__col--program-type { border-top: 3px solid #1C48D9; padding-top: 16px; }

.nav-site .nav-mega__col--overview  .nav-mega__heading { color: #1C48D9; }
.nav-site .nav-mega__col--grow      .nav-mega__heading { color: #079769; }
.nav-site .nav-mega__col--keep      .nav-mega__heading { color: #EC7313; }
.nav-site .nav-mega__col--prove     .nav-mega__heading { color: #1C48D9; }
.nav-site .nav-mega__col--solutions    .nav-mega__heading { color: #1C48D9; }
.nav-site .nav-mega__col--strategy     .nav-mega__heading { color: #1C48D9; }
.nav-site .nav-mega__col--program-type .nav-mega__heading { color: #1C48D9; }

.nav-site .nav-mega__col--overview  .nav-mega__link:hover { color: #1C48D9; box-shadow: inset 3px 0 0 #1C48D9; background-color: #F8FAFC; }
.nav-site .nav-mega__col--grow      .nav-mega__link:hover { color: #095839; box-shadow: inset 3px 0 0 #079769; background-color: #F8FAFC; }
.nav-site .nav-mega__col--keep      .nav-mega__link:hover { color: #934910; box-shadow: inset 3px 0 0 #EC7313; background-color: #F8FAFC; }
.nav-site .nav-mega__col--prove     .nav-mega__link:hover { color: #1C48D9; box-shadow: inset 3px 0 0 #1C48D9; background-color: #F8FAFC; }
.nav-site .nav-mega__col--solutions    .nav-mega__link:hover { color: #1C48D9; box-shadow: inset 3px 0 0 #1C48D9; background-color: #F8FAFC; }
.nav-site .nav-mega__col--strategy     .nav-mega__link:hover { color: #1C48D9; box-shadow: inset 3px 0 0 #1C48D9; background-color: #F8FAFC; }
.nav-site .nav-mega__col--program-type .nav-mega__link:hover { color: #1C48D9; box-shadow: inset 3px 0 0 #1C48D9; background-color: #F8FAFC; }

/* ── Right side: Login + Demo CTA ── */
.nav-site__right {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  margin-left: 24px;
}
.nav-site__login {
  padding: 8px 14px;
  font-size: 14px;
  font-weight: 500;
  color: #606F9F;
  text-decoration: none;
  border-radius: 7px;
  transition: color 200ms ease, background-color 200ms ease;
  white-space: nowrap;
}
.nav-site__login:hover {
  color: #1A3BAE;
  background-color: #EFF6FF;
}
/* Pin all states -- HubSpot compiled CSS otherwise recolors the link on
   focus/active (canonical pattern: .faq-demo-btn in partials/faq.html). */
.nav-site__demo-btn,
.nav-site__demo-btn:link,
.nav-site__demo-btn:visited,
.nav-site__demo-btn:hover,
.nav-site__demo-btn:focus,
.nav-site__demo-btn:active {
  color: #ffffff;
  text-decoration: none;
}
.nav-site__demo-btn {
  padding: 9px 20px;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.4;
  background: #1A3BAE;
  border: 1px solid #1A3BAE;
  border-radius: 8px;
  transition: background-color 250ms ease, border-color 250ms ease, box-shadow 250ms ease;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  min-height: 38px;
}
.nav-site__demo-btn:hover {
  background: #11215B;
  border-color: #11215B;
  box-shadow: 0 4px 14px rgba(26,59,174,0.28);
}
.nav-site__demo-btn:focus-visible {
  outline: 2px solid #3B63E8;
  outline-offset: 2px;
}

/* ── Mobile hamburger toggle ── */
.nav-site .nav-mobile-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 8px;
  margin-left: auto;
  flex-shrink: 0;
}
.nav-site .nav-mobile-toggle span {
  display: block;
  width: 22px;
  height: 2px;
  background: #324278;
  border-radius: 2px;
  transition: transform 0.2s ease, opacity 0.2s ease;
}
.nav-site .nav-mobile-toggle.is-active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-site .nav-mobile-toggle.is-active span:nth-child(2) { opacity: 0; }
.nav-site .nav-mobile-toggle.is-active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Mobile-only CTA block — hidden on desktop */
.nav-mobile-cta { display: none; }

/* ── Scroll enhancement ── */
.nav-site.nav--scrolled {
  background: rgba(255,255,255,0.7);
  border-bottom-color: rgba(205,207,214,0.4);
  box-shadow: 0 1px 8px rgba(0,0,0,0.03);
}

/* ── Mobile layout ── */
@media (max-width: 767px) {
  .nav-site__inner { padding: 0 16px; }
  .nav-site .nav-site__nav { display: none; }
  /* Hide the right-side bar entirely — Login + Get Demo move into the drawer */
  .nav-site .nav-site__right { display: none; }
  .nav-site .nav-mobile-toggle { display: flex; }

  /* Get Demo button inside mobile drawer */
  .nav-mobile-cta {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 16px 8px 8px;
    border-top: 1px solid #CDCFD6;
    margin-top: 8px;
  }
  .nav-mobile-cta__demo {
    display: block;
    text-align: center;
    padding: 12px 20px;
    background: #1A3BAE;
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    border-radius: 8px;
    text-decoration: none;
  }
  .nav-mobile-cta__login {
    display: block;
    text-align: center;
    padding: 10px 20px;
    color: #606F9F;
    font-size: 14px;
    font-weight: 500;
    text-decoration: none;
    border-radius: 8px;
  }

  /* Mobile nav drawer */
  .nav-site .nav-site__nav.is-open {
    display: block;
    position: absolute;
    top: 72px;
    left: 0; right: 0;
    background: #ffffff;
    border-top: 1px solid #CDCFD6;
    border-bottom: 1px solid #CDCFD6;
    padding: 12px 20px 24px;
    box-shadow: 0 8px 24px rgba(15,31,61,0.10);
    z-index: 999;
    max-height: calc(100vh - 72px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  .nav-site .menu { flex-direction: column; align-items: stretch; gap: 0; }
  .nav-site .menu__item { width: 100%; }
  .nav-site .menu__item--drop { height: auto; }
  .nav-site .menu__link,
  .nav-site .menu__toggle {
    width: 100%;
    justify-content: space-between;
    padding: 13px 8px;
    border-bottom: 1px solid #F1F5F9;
    border-radius: 0;
    font-size: 15px;
    color: #0F1F3D;
  }
  .nav-site .menu__item:last-child .menu__link { border-bottom: none; }

  /* Mobile mega: inline accordion */
  .nav-site .nav-mega {
    display: none;
    opacity: 1; visibility: visible; pointer-events: auto;
    transform: none; position: static;
    border: none; border-radius: 0; box-shadow: none;
    padding: 4px 0 12px 12px;
    min-width: 0; background: #F8FAFC; transition: none;
  }
  .nav-site .menu__item--drop.is-open .nav-mega { display: flex; }
  .nav-site .menu__item--drop.is-open .nav-chevron { transform: rotate(180deg); }
  .nav-site .nav-mega__inner { flex-direction: column; gap: 16px; padding: 8px 0; }
  .nav-site .nav-mega__col { min-width: 0; }
  .nav-site .nav-mega__link { white-space: normal; font-size: 14px; padding: 6px 10px; min-height: 0; }
  .nav-site .nav-mega__col--overview,
  .nav-site .nav-mega__col--grow,
  .nav-site .nav-mega__col--keep,
  .nav-site .nav-mega__col--prove,
  .nav-site .nav-mega__col--solutions { border-top: none; padding-top: 0; }
}
</style>


<a class="nav-skip" href="#main-content">Skip to main content</a>


<header class="nav-site" id="ambNav" role="banner">
  <div class="nav-site__inner">

    <a class="nav-site__logo" href="/?hsLang=en" aria-label="Ambassador -- Home">
      <svg class="nav-site__mark" width="40" height="40" viewbox="9 10 62 62" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
        <defs>
          <radialgradient id="ambHubNav" cx="38%" cy="34%" r="62%">
            <stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.95" />
            <stop offset="22%" stop-color="#9457F7" />
            <stop offset="60%" stop-color="#5F11E4" />
            <stop offset="100%" stop-color="#3B0E8C" />
          </radialgradient>
          <filter id="ambHubNavShadow" x="-60%" y="-60%" width="220%" height="220%">
            <fedropshadow dx="0" dy="0.5" stdDeviation="0.85" flood-color="#0B0620" flood-opacity="0.35" />
          </filter>
        </defs>
        <line x1="40" y1="17.6" x2="14.1" y2="62.4" stroke="#C4CEDE" stroke-width="1.15" stroke-linecap="round" opacity="0.95" />
        <line x1="14.1" y1="62.4" x2="65.9" y2="62.4" stroke="#C4CEDE" stroke-width="1.15" stroke-linecap="round" opacity="0.95" />
        <line x1="65.9" y1="62.4" x2="40" y2="17.6" stroke="#C4CEDE" stroke-width="1.15" stroke-linecap="round" opacity="0.95" />
        <line x1="40" y1="47.5" x2="40" y2="17.6" stroke="#9457F7" stroke-width="0.75" stroke-linecap="round" opacity="0.55" />
        <line x1="40" y1="47.5" x2="14.1" y2="62.4" stroke="#9457F7" stroke-width="0.75" stroke-linecap="round" opacity="0.55" />
        <line x1="40" y1="47.5" x2="65.9" y2="62.4" stroke="#9457F7" stroke-width="0.75" stroke-linecap="round" opacity="0.55" />
        <circle cx="40" cy="17.6" r="4.25" fill="#1C48D9" />
        <circle cx="14.1" cy="62.4" r="4.25" fill="#1C48D9" />
        <circle cx="65.9" cy="62.4" r="4.25" fill="#1C48D9" />
        <circle cx="40" cy="47.5" r="7.6" fill="url(#ambHubNav)" filter="url(#ambHubNavShadow)" />
      </svg>
      <span class="nav-site__wordmark">AMBASSADOR</span>
    </a>

    
    <nav class="nav-site__nav" id="ambNavMenu" aria-label="Site navigation">
      <ul class="menu" role="list">

        
        <li class="menu__item menu__item--drop menu__item--mega-global">
          <button class="menu__toggle" type="button" aria-haspopup="true" aria-expanded="false">
            Platform
            <svg class="nav-chevron" viewbox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
              <path d="M4 6l4 4 4-4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
            </svg>
          </button>

          <div class="nav-mega" role="region" aria-label="Platform menu">
            <div class="nav-mega__inner">

              <div class="nav-mega__col nav-mega__col--overview">
                <p class="nav-mega__heading">Overview</p>
                <ul class="nav-mega__list">
                  <li><a class="nav-mega__link" href="/platform?hsLang=en">Platform Overview</a></li>
                  <li><a class="nav-mega__link" href="/ambassador-hiroai?hsLang=en">HiroAI</a></li>
                  <li><a class="nav-mega__link" href="https://getambassador.com/integrations-layer?hsLang=en">Integrations</a></li>
                </ul>
              </div>

              <div class="nav-mega__col nav-mega__col--grow">
                <p class="nav-mega__heading">GROW</p>
                <ul class="nav-mega__list">
                  <li><a class="nav-mega__link" href="/advocacy-engine?hsLang=en">Advocacy</a></li>
                  <li><a class="nav-mega__link" href="/prospect-intelligence-engine?hsLang=en">Prospect</a></li>
                  <li><a class="nav-mega__link" href="/programmatic?hsLang=en">Programmatic <span class="nav-mega__badge nav-mega__badge--new">New</span></a></li>
                </ul>
              </div>

              <div class="nav-mega__col nav-mega__col--keep">
                <p class="nav-mega__heading">KEEP</p>
                <ul class="nav-mega__list">
                  <li><a class="nav-mega__link" href="/customer-value-engine?hsLang=en">Retention</a></li>
                  <li><a class="nav-mega__link" href="/incentive-storefront-engine?hsLang=en">Incentive</a></li>
                  <li><a class="nav-mega__link" href="/communication-cloud-engine?hsLang=en">Communication</a></li>
                </ul>
              </div>

              <div class="nav-mega__col nav-mega__col--prove">
                <p class="nav-mega__heading">PROVE</p>
                <ul class="nav-mega__list">
                  <li><a class="nav-mega__link" href="/predictive-recommendation-engine?hsLang=en">Predictive</a></li>
                  <li><span class="nav-mega__link nav-mega__link--disabled">Attribution <span class="nav-mega__badge">Coming soon</span></span></li>
                  <li><span class="nav-mega__link nav-mega__link--disabled">Finance <span class="nav-mega__badge">Coming soon</span></span></li>
                </ul>
              </div>

            </div>
          </div>
        </li>

        
        <li class="menu__item menu__item--drop">
          <button class="menu__toggle" type="button" aria-haspopup="true" aria-expanded="false">
            Solutions
            <svg class="nav-chevron" viewbox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
              <path d="M4 6l4 4 4-4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
            </svg>
          </button>

          <div class="nav-mega nav-mega--wide" role="region" aria-label="Solutions menu">
            <div class="nav-mega__inner">

              <div class="nav-mega__col nav-mega__col--solutions">
                <p class="nav-mega__heading">By Industry</p>
                <ul class="nav-mega__list">
                  <li><a class="nav-mega__link" href="https://getambassador.com/telecom?hsLang=en">Telecom</a></li>
                  <li><span class="nav-mega__link nav-mega__link--disabled">CPaaS <span class="nav-mega__badge">Coming soon</span></span></li>
                  <li><span class="nav-mega__link nav-mega__link--disabled">SaaS <span class="nav-mega__badge">Coming soon</span></span></li>
                  <li><span class="nav-mega__link nav-mega__link--disabled">FinTech <span class="nav-mega__badge">Coming soon</span></span></li>
                </ul>
              </div>

              <div class="nav-mega__col nav-mega__col--strategy">
                <p class="nav-mega__heading">By Strategy</p>
                <ul class="nav-mega__list">
                  <li><a class="nav-mega__link" href="/customer-growth?hsLang=en">Customer Growth Overview</a></li>
                  <li><a class="nav-mega__link" href="https://getambassador.com/customer-growth-strategy?hsLang=en">Build your Customer Growth Strategy</a></li>
                </ul>
              </div>

              <div class="nav-mega__col nav-mega__col--program-type">
                <p class="nav-mega__heading">By Program Type</p>
                <ul class="nav-mega__list">
                  <li><a class="nav-mega__link" href="/solutions/program-type/affiliate-marketing-software?hsLang=en">Affiliates</a></li>
                  <li><a class="nav-mega__link" href="/solutions/program-type/referral-marketing-software?hsLang=en">Referrals</a></li>
                  <li><a class="nav-mega__link" href="/solutions/program-type/influencer-marketing-platform?hsLang=en">Influencers</a></li>
                  <li><a class="nav-mega__link" href="/solutions/program-type/loyalty-program-software?hsLang=en">Loyalty</a></li>
                </ul>
              </div>

            </div>
          </div>
        </li>

        <li class="menu__item"><a class="menu__link" href="https://getambassador.com/why-ambassador?hsLang=en">Why Ambassador</a></li>
        <li class="menu__item"><a class="menu__link" href="/resources?hsLang=en">Resources</a></li>
        <li class="menu__item"><a class="menu__link" href="https://getambassador.com/pricing-ent?hsLang=en">Pricing</a></li>

      </ul>

      
      <div class="nav-mobile-cta">
        <a class="nav-mobile-cta__demo" href="https://getambassador.com/get-a-demo/?hsLang=en">Get Demo</a>
        <a class="nav-mobile-cta__login" href="https://admin2.getambassador.com/login">Login</a>
      </div>

    </nav>

    
    <div class="nav-site__right">
      <a class="nav-site__login" href="https://admin2.getambassador.com/login">Login</a>
      <a class="nav-site__demo-btn" href="https://getambassador.com/get-a-demo/?hsLang=en">Get Demo</a>
    </div>

    
    <button class="nav-mobile-toggle" id="ambNavToggle" aria-expanded="false" aria-controls="ambNavMenu" aria-label="Open navigation">
      <span></span>
      <span></span>
      <span></span>
    </button>

  </div>
</header>

<script>
/* ── Desktop dropdown: hover + click toggle ── */
(function () {
  var timers = {};
  var dropItems = document.querySelectorAll('.menu__item--drop');

  function setExpanded(item, isOpen) {
    var toggle = item.querySelector('.menu__toggle');
    if (toggle) toggle.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
  }

  function fullClose(item) {
    item.classList.remove('open');
    delete item.dataset.pinned;
    setExpanded(item, false);
  }

  dropItems.forEach(function (item, idx) {
    var mega = item.querySelector('.nav-mega');
    var toggleBtn = item.querySelector('.menu__toggle');
    if (!mega) return;

    function openMenu() {
      if (timers[idx]) { clearTimeout(timers[idx]); timers[idx] = null; }
      dropItems.forEach(function (other) {
        if (other !== item) fullClose(other);
      });
      item.classList.add('open');
      setExpanded(item, true);
    }
    function scheduleClose() {
      if (item.dataset.pinned === 'true') return;
      timers[idx] = setTimeout(function () {
        fullClose(item);
        timers[idx] = null;
      }, 200);
    }
    function cancelClose() {
      if (timers[idx]) { clearTimeout(timers[idx]); timers[idx] = null; }
    }

    item.addEventListener('mouseenter', openMenu);
    item.addEventListener('mouseleave', scheduleClose);
    mega.addEventListener('mouseenter', cancelClose);
    mega.addEventListener('mouseleave', scheduleClose);

    if (toggleBtn) {
      toggleBtn.addEventListener('click', function (e) {
        if (window.innerWidth <= 767) return;
        e.preventDefault();
        e.stopPropagation();
        if (item.dataset.pinned === 'true') {
          fullClose(item);
        } else {
          item.dataset.pinned = 'true';
          openMenu();
        }
      });
    }
  });

  document.addEventListener('click', function (e) {
    if (window.innerWidth <= 767) return;
    dropItems.forEach(function (item) {
      if (item.dataset.pinned === 'true' && !item.contains(e.target)) {
        fullClose(item);
      }
    });
  });

  document.addEventListener('keydown', function (e) {
    if (e.key !== 'Escape') return;
    dropItems.forEach(fullClose);
  });
})();

/* ── Mobile hamburger toggle ── */
(function () {
  var toggle = document.getElementById('ambNavToggle');
  var menu   = document.getElementById('ambNavMenu');
  if (!toggle || !menu) return;

  toggle.addEventListener('click', function () {
    var isOpen = menu.classList.toggle('is-open');
    toggle.classList.toggle('is-active', isOpen);
    toggle.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
    toggle.setAttribute('aria-label', isOpen ? 'Close navigation' : 'Open navigation');
  });

  /* Mobile: accordion for dropdown items */
  menu.querySelectorAll('.menu__item--drop .menu__toggle').forEach(function (btn) {
    btn.addEventListener('click', function (e) {
      /* Only intercept on mobile */
      if (window.innerWidth > 767) return;
      e.stopPropagation();
      var item = btn.closest('.menu__item--drop');
      var isOpen = item.classList.toggle('is-open');
      btn.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
    });
  });

  /* Close drawer when a nav link is tapped */
  menu.querySelectorAll('.nav-mega__link:not(.nav-mega__link--disabled), .menu__link').forEach(function (link) {
    link.addEventListener('click', function () {
      menu.classList.remove('is-open');
      toggle.classList.remove('is-active');
      toggle.setAttribute('aria-expanded', 'false');
      toggle.setAttribute('aria-label', 'Open navigation');
    });
  });

  /* Close on outside click */
  document.addEventListener('click', function (e) {
    if (!menu.contains(e.target) && !toggle.contains(e.target)) {
      menu.classList.remove('is-open');
      toggle.classList.remove('is-active');
      toggle.setAttribute('aria-expanded', 'false');
    }
  });
})();

/* ── Scroll enhancement: deeper shadow on scroll ── */
(function () {
  var nav = document.getElementById('ambNav');
  if (!nav) return;
  function checkScroll() {
    var scrollTop = window.pageYOffset || document.documentElement.scrollTop || 0;
    nav.classList.toggle('nav--scrolled', scrollTop > 40);
  }
  window.addEventListener('scroll', function () { requestAnimationFrame(checkScroll); }, { passive: true });
  checkScroll();
})();
</script>
      

      

      <main id="main-content" class="body-container-wrapper">
        





<!--
  ========================================================================
  SOURCE OF TRUTH: GitHub repo ambassador-website
  Path: src/templates/partials/humming-announcement-banner.html  (branch: main)

  DO NOT EDIT IN DESIGN MANAGER OR VIA THE CLAUDE / HUBSPOT MCP CONNECTOR.
  Changes made here will be overwritten on the next deploy from git.
  For changes, open a PR in the repo or ping Ethan in Slack.

  TRANSITIONAL: this banner exists to surface the Humming -> Ambassador
  Programmatic transition. Slated for removal once the Humming brand
  has fully folded in. Currently included on home.html and programmatic.html.
  ========================================================================
-->
<style>
  /* Slim dark band above the page hero, acknowledging the Humming
     acquisition and pointing readers at the announcement. Visually echoes
     the Humming pulse mark (concentric blue/purple rings) on the left. */
  .amb-humming-banner {
    background: linear-gradient(90deg, #0A1628 0%, #0F1F3D 50%, #1E1B4B 100%);
    color: rgba(255, 255, 255, 0.92);
    padding: 14px 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    flex-wrap: wrap;
    font-family: 'DM Sans', sans-serif;
    font-size: 14px;
    line-height: 1.4;
    text-align: center;
    border-bottom: 1px solid rgba(95, 17, 228, 0.18);
  }
  .amb-humming-banner__mark {
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
  .amb-humming-banner__mark svg { width: 100%; height: 100%; display: block; }
  .amb-humming-banner__text { font-weight: 500; }
  .amb-humming-banner__text strong {
    font-weight: 700;
    color: #FFFFFF;
  }
  .amb-humming-banner__link {
    color: #9457F7;
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px solid rgba(148, 87, 247, 0.4);
    transition: color .2s ease, border-color .2s ease;
    white-space: nowrap;
  }
  .amb-humming-banner__link:hover {
    color: #FFFFFF;
    border-color: #FFFFFF;
  }
  @media (max-width: 640px) {
    .amb-humming-banner { font-size: 13px; padding: 12px 18px; gap: 10px; }
    .amb-humming-banner__mark { width: 24px; height: 24px; }
  }
</style>






<div class="amb-humming-banner" role="region" aria-label="Humming acquisition announcement">
  <span class="amb-humming-banner__mark" aria-hidden="true">
    <svg viewbox="0 0 40 40" xmlns="http://www.w3.org/2000/svg" fill="none">
      <circle cx="20" cy="20" r="18" stroke="#9457F7" stroke-width="1" opacity="0.55" />
      <circle cx="20" cy="20" r="12" stroke="#5F11E4" stroke-width="1.4" opacity="0.85" />
      <circle cx="20" cy="20" r="5" fill="#1C48D9" />
    </svg>
  </span>
  <span class="amb-humming-banner__text"><strong>Humming is now Ambassador Programmatic.</strong> The same closed-loop architecture.</span>
  <a class="amb-humming-banner__link" href="/programmatic?hsLang=en">See Programmatic <span aria-hidden="true">→</span></a>
</div>



<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://getambassador.com/#organization",
      "name": "Ambassador",
      "legalName": "i2H, Inc. dba Ambassador",
      "url": "https://getambassador.com/",
      "logo": {
        "@type": "ImageObject",
        "url": "https://getambassador.com/assets/ambassador-logo.svg",
        "width": 512,
        "height": 128
      },
      "description": "Ambassador is the Customer Lifecycle Operating System. Nine engines, organized into three pillars: GROW, KEEP, PROVE, orchestrated by HiroAI.",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "2212 Queen Anne Ave North, Suite 767",
        "addressLocality": "Seattle",
        "addressRegion": "WA",
        "postalCode": "98109",
        "addressCountry": "US"
      },
      "sameAs": [
        "https://www.linkedin.com/company/getambassador",
        "https://twitter.com/getambassador",
        "https://www.crunchbase.com/organization/ambassador",
        "https://www.g2.com/products/ambassador",
        "https://www.capterra.com/p/ambassador/"
      ],
      "contactPoint": [{
        "@type": "ContactPoint",
        "contactType": "sales",
        "email": "[email protected]",
        "availableLanguage": ["English"]
      }]
    },
    {
      "@type": "WebSite",
      "@id": "https://getambassador.com/#website",
      "url": "https://getambassador.com/",
      "name": "Ambassador",
      "publisher": { "@id": "https://getambassador.com/#organization" },
      "inLanguage": "en-US",
      "potentialAction": {
        "@type": "SearchAction",
        "target": "https://getambassador.com/search?q={search_term_string}",
        "query-input": "required name=search_term_string"
      }
    },
    {
      "@type": "SoftwareApplication",
      "@id": "https://getambassador.com/#software",
      "name": "Ambassador",
      "applicationCategory": "BusinessApplication",
      "applicationSubCategory": "Customer Lifecycle Operating System",
      "operatingSystem": "Web",
      "browserRequirements": "Requires JavaScript and modern browser",
      "url": "https://getambassador.com/",
      "publisher": { "@id": "https://getambassador.com/#organization" },
      "description": "The Customer Lifecycle Operating System unifying referral, loyalty, advocacy, retention, and attribution into nine engines orchestrated by HiroAI.",
      "featureList": [
        "Advocacy: customer, affiliate, influencer, and employee programs",
        "Prospect: net-new acquisition from conversion patterns",
        "Programmatic: automated campaign orchestration",
        "Retention: loyalty, NPS, CSAT, expansion signals",
        "Incentive: issue, store, track, and redeem rewards",
        "Communication: behavioral email and SMS automation",
        "Predictive: AI-driven next-best-action",
        "Attribution: full-funnel revenue attribution",
        "Finance: CFO-grade revenue reporting and Salesforce sync"
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://getambassador.com/#engines",
      "name": "Ambassador Platform Engines",
      "itemListOrder": "https://schema.org/ItemListUnordered",
      "numberOfItems": 9,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Advocacy", "url": "https://getambassador.com/advocacy-engine" },
        { "@type": "ListItem", "position": 2, "name": "Prospect", "url": "https://getambassador.com/prospect-intelligence-engine" },
        { "@type": "ListItem", "position": 3, "name": "Programmatic", "url": "https://getambassador.com/programmatic" },
        { "@type": "ListItem", "position": 4, "name": "Retention", "url": "https://getambassador.com/customer-value-engine" },
        { "@type": "ListItem", "position": 5, "name": "Incentive", "url": "https://getambassador.com/incentive-storefront-engine" },
        { "@type": "ListItem", "position": 6, "name": "Communication", "url": "https://getambassador.com/communication-cloud-engine" },
        { "@type": "ListItem", "position": 7, "name": "Predictive", "url": "https://getambassador.com/predictive-recommendation-engine" },
        { "@type": "ListItem", "position": 8, "name": "Attribution" },
        { "@type": "ListItem", "position": 9, "name": "Finance" }
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://getambassador.com/#breadcrumbs",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://getambassador.com/" }
      ]
    }
  ]
}
</script>


<style>
  :root {
    /* Brand palette v2.2 */
    --blue-500: #1C48D9;   /* mark outer nodes */
    --blue-600: #1A3BAE;   /* face, links */
    --blue-700: #1A3BAE;   /* alias to face; deep text consumers use --blue-800 */
    --blue-800: #11215B;   /* deep, text on light */
    --blue-400: #3B63E8;   /* on-dark */
    --purple-600: #5F11E4;
    --purple-700: #3B0E8C;
    --purple-400: #9457F7;
    --green-600: #079769;  /* fills only */
    --green-800: #095839;  /* text on light */
    --green-400: #07E49E;  /* on-dark */
    --amber-600: #EC7313;  /* orange face; never text on light */
    --amber-700: #934910;  /* orange deep, text on light */
    --orange-400: #F7A25F; /* on-dark */
    --dark-card: #0A1628;
    --navy: #0F1F3D;
    --slate-700: #324278;
    --slate-500: #606F9F;
    --slate-200: #CDCFD6;
    --white: #FFFFFF;
    --offwhite: #F5F5FA;
  }

  * { box-sizing: border-box; margin: 0; padding: 0; }

  html { scroll-behavior: smooth; }

  /* ============== CYCLONE ANGLE PROPERTY (per ambassador-cyclone-motion) ============== */
  @property --cyc-angle {
    syntax: '<angle>';
    initial-value: 0deg;
    inherits: false;
  }

  /* Force DM Sans on all headings -- beats theme-overrides.css
     which applies h1_font.style from theme settings (currently a serif). */
  h1, h2, h3, h4, h5, h6,
  .h1, .h2, .h3, .h4, .h5, .h6 {
    font-family: 'DM Sans', Arial, Helvetica, sans-serif;
  }

  body {
    font-family: 'DM Sans', sans-serif;
    font-weight: 400;
    background: var(--offwhite);
    color: var(--navy);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    overflow-x: hidden;
  }

  /* Visually hidden utility: removes content from visual rendering while
     keeping it readable by screen readers and AI parsers. Used for
     accessibility labels on visual elements (architecture diagram, HiroAI
     presence). Standard pattern from WCAG/MDN. */
  .visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }

  /* ============== NAV ============== */
  .nav {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 100;
    padding: 28px 48px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: rgba(245, 245, 250, 0.85);
    backdrop-filter: saturate(180%) blur(12px);
    -webkit-backdrop-filter: saturate(180%) blur(12px);
    border-bottom: 1px solid rgba(205, 207, 214, 0.5);
  }
  .wordmark {
    font-family: 'Raleway', sans-serif;
    font-weight: 800;
    font-size: 18px;
    letter-spacing: 0.02em;
    color: var(--navy);
  }
  .wordmark .dot { color: var(--purple-600); }

  /* Wordmark link wraps mark + AMBASSADOR text as a single home-link */
  .wordmark-link {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    color: inherit;
  }
  .nav-links { display: flex; gap: 40px; align-items: center; }
  .nav-links a:not(.nav-cta) {
    color: var(--slate-700);
    text-decoration: none;
    font-size: 15px;
    font-weight: 500;
    transition: color 0.2s ease;
  }
  .nav-links a:not(.nav-cta):hover { color: var(--navy); }
  /* Nav CTA — same paint as the hero .cta-primary (Purple 600 solid, white
     text, soft purple shadow), just smaller for the nav header context. Both
     buttons should read as the same brand statement at two different sizes. */
  .nav-cta {
    background: var(--purple-600);
    color: var(--white);
    padding: 10px 22px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    box-shadow: 0 4px 14px rgba(95, 17, 228, 0.25);
    transition: transform 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
  }
  .nav-cta:hover {
    background: var(--purple-700);
    transform: translateY(-1px);
    box-shadow: 0 8px 24px rgba(95, 17, 228, 0.35);
  }

  /* ============== HERO ============== */
  .hero {
    min-height: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 40px;
    padding: 112px 48px 64px;
    max-width: 1200px;
    margin: 0 auto;
    position: relative;
  }

  .hero-content {
    position: relative;
    width: 100%;
    max-width: 920px;
    margin: 0 auto;
    text-align: left;
  }

  .eyebrow {
    font-size: 14px;
    font-weight: 500;
    color: var(--slate-700);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    /* Generous bottom margin so eyebrow sits near the top with white space
       between it and the H1 greeting -- "taking advantage of the white
       space" per design direction. */
    margin-bottom: 56px;
    opacity: 0;
    animation: fadeUp 0.8s ease 0.2s forwards;
  }

  .hero h1 {
    /* Sized for "The Customer Lifecycle Operating System for [Carrier Networks]"
       -- the longest rotator word ("Carrier Networks", 16ch) needs to
       fit inside the 600px desktop content column at this size. */
    font-size: clamp(36px, 4.5vw, 60px);
    font-weight: 700;
    line-height: 1.12;
    letter-spacing: -0.025em;
    color: var(--navy);
    margin-bottom: 24px;
    opacity: 0;
    animation: fadeUp 1s ease 0.4s forwards;
  }
  /* "HiroAI" word in the sub-heading -- purple to match the
     nebula orb. */
  .hero-tagline-sub .hero-hiro {
    color: var(--purple-600);
    font-weight: 700;
  }
  .hero h1 .verb-grow { color: var(--green-600); font-weight: 700; }
  .hero h1 .verb-keep { color: var(--amber-600); font-weight: 700; }
  .hero h1 .verb-prove { color: var(--blue-500); font-weight: 700; }
  .hero h1 .connective { font-weight: inherit; color: inherit; }

  /* Sub-heading sentence under the greeting: "The Lifecycle Operating
     System for [rotating word]". Medium scale -- subordinate to the H1
     but still prominent enough to read as the main value prop. */
  .hero-tagline-sub {
    font-size: clamp(28px, 3vw, 40px);
    font-weight: 600;
    line-height: 1.25;
    letter-spacing: -0.02em;
    color: var(--navy);
    margin-bottom: 40px;
    max-width: 600px;
    opacity: 0;
    animation: fadeUp 1s ease 0.6s forwards;
  }

  /* Rotating ICP heading -- iOS clock-picker style vertical scroll.
     Clipped container shows one word height; the inner track slides up by
     one line every cycle. Container height is 1.4em (vs the H1's 1.02
     line-height) so descenders (g, p, y) clear the bottom edge, and there's
     equal vertical margin above and below to keep the rotator visually
     centered between "System for" and "HiroAI.". The first word is duplicated
     at the end of the track so the snap-back to top is invisible. */
  .hero-rotator {
    display: inline-block;
    overflow: hidden;
    height: 1.4em;
    line-height: 1.4;
    font-weight: 700;
    vertical-align: bottom;
    /* H1 line-height is ~1.12, but the rotator clip is 1.4em (taller, so
       descenders survive). Without compensation the word visually centers
       higher than the surrounding text's baseline. position:relative + top
       nudges the clip down so the visible word's baseline lines up with
       "for" / "System" beside it. */
    position: relative;
    top: 0.18em;
    font-size: 1em;
    max-width: 100%;
    margin: 0;
    /* Symmetric fade-out at top and bottom edges so words don't pop in/out
       with hard purple edges as the track slides. Middle 64% is fully
       visible (resting word renders at full opacity); top 18% and bottom
       18% fade to transparent. */
    -webkit-mask-image: linear-gradient(
      to bottom,
      transparent 0%,
      rgba(0, 0, 0, 1) 18%,
      rgba(0, 0, 0, 1) 82%,
      transparent 100%
    );
            mask-image: linear-gradient(
      to bottom,
      transparent 0%,
      rgba(0, 0, 0, 1) 18%,
      rgba(0, 0, 0, 1) 82%,
      transparent 100%
    );
  }
  .hero-rotator__track {
    display: flex;
    flex-direction: column;
    transform: translateY(0);
    transition: transform 850ms cubic-bezier(0.65, 0, 0.35, 1);
    will-change: transform;
  }
  .hero-rotator__word {
    display: block;
    height: 1.4em;
    line-height: 1.4;
    white-space: nowrap;
    background: linear-gradient(90deg, var(--blue-700), var(--purple-600));
    -webkit-background-clip: text;
            background-clip: text;
    color: transparent;
    font-weight: 700;
  }
  @media (prefers-reduced-motion: reduce) {
    .hero-rotator__track {
      transition: none;
    }
  }

  .hiro-name {
    font-size: clamp(48px, 6.5vw, 88px);
    font-weight: 700;
    color: var(--purple-600);
    line-height: 1;
    letter-spacing: -0.03em;
    margin-top: 16px;
    opacity: 0;
    animation: fadeUp 1s ease 0.9s forwards;
    display: inline-block;
    position: relative;
  }

  .hero-sub {
    font-size: 18px;
    line-height: 1.55;
    font-weight: 500;
    color: var(--slate-700);
    max-width: 540px;
    margin-top: 40px;
    opacity: 0;
    animation: fadeUp 1s ease 1.4s forwards;
  }
  .hero-sub strong.kf {
    font-weight: 700;
    letter-spacing: 0.08em;
  }
  .hero-sub .kf-grow { color: var(--green-600); }
  .hero-sub .kf-keep { color: var(--amber-600); }
  .hero-sub .kf-prove { color: var(--blue-500); }

  /* ====== Brand-canon GROW. KEEP. PROVE. tagline below sub-heading ======
     Each word is a link to its respective pillar page in its deep /800
     accent. No halo on light surfaces (v2.2 rule). Hover lifts the word
     and draws the underline for affordance. */
  .hero-tagline {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 24px;
    font-size: 18px;
    font-weight: 700;
    letter-spacing: 0.12em;
    line-height: 1;
    opacity: 0;
    animation: fadeUp 1s ease 1.55s forwards;
  }
  .gkp-link {
    text-decoration: none;
    cursor: pointer;
    display: inline-block;
    position: relative;
    transition: transform 0.25s ease;
  }
  /* Click affordance — underline draws in from left on hover. Tells users these
     are navigational entry points to the pillar pages without competing with
     the glowing tagline aesthetic when at rest. currentColor inherits the
     engine accent so each link's underline matches its word. */
  .gkp-link::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: -4px;
    height: 2px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.3s cubic-bezier(0.65, 0, 0.35, 1);
    opacity: 0.85;
  }
  .gkp-link:hover::after {
    transform: scaleX(1);
  }
  .gkp-link:focus-visible {
    outline: 2px solid var(--blue-400);
    outline-offset: 2px;
    border-radius: 2px;
  }

  /* Tagline on light surfaces: vibrant FACE colors, no halo (halos are
     dark-surface-only per v2.2). Face green/orange sit below 4.5:1 on white;
     approved deviation (June 2026) -- the v2.2 deep steps read too dark for
     the flagship brand moment. Blue uses blue/500 (passes AAA). */
  .hero-tagline .gkp-grow {
    color: var(--green-600);
  }
  .hero-tagline .gkp-grow:hover {
    transform: translateY(-1px);
  }

  .hero-tagline .gkp-keep {
    color: var(--amber-600);
  }
  .hero-tagline .gkp-keep:hover {
    transform: translateY(-1px);
  }

  .hero-tagline .gkp-prove {
    color: var(--blue-500);
  }
  .hero-tagline .gkp-prove:hover {
    transform: translateY(-1px);
  }

  .hero-ctas {
    display: flex;
    gap: 16px;
    margin-top: 40px;
    opacity: 0;
    animation: fadeUp 1s ease 1.7s forwards;
  }
  /* "Meet HiroAI" button: exact match to the /ambassador-hiroai page button
     (purple domed, gradient-text label). Keep identical in both templates. */
  .hai-btn-primary,
  .hai-btn-primary:link,
  .hai-btn-primary:visited,
  .hai-btn-primary:hover,
  .hai-btn-primary:focus,
  .hai-btn-primary:active { text-decoration: none; }
  .hai-btn-primary {
    position: relative;
    display: inline-flex; align-items: center; justify-content: center;
    font-family: 'DM Sans', sans-serif; font-size: 18px; font-weight: 500;
    cursor: pointer; border: none; border-radius: 12px; padding: 13px 24px;
    background: radial-gradient(128.3% 100% at 50% 0%, #3F0E96 0%, #9559F3 42.76%, #3F0E96 84.6%, #5010BE 100%);
    box-shadow: 0 4px 25px 0 rgba(149,89,243,.20), 0 -3px 3px -2px #B081F5 inset, 0 -6px 6px -3px #6011E8 inset, 0 -5px 22px -5px #C9A8F8 inset, 0 5px 12px -4px #E2CFFB inset, 0 0 1px 0.5px #C9A8F8 inset;
    transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
  }
  .hai-btn-primary > span {
    background: linear-gradient(180deg, #FFF 13.83%, #C9A8F8 94.31%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .hai-btn-primary:hover {
    transform: translateY(-2px); filter: brightness(1.06);
    box-shadow: 0 8px 38px 0 rgba(149,89,243,.4), 0 -3px 3px -2px #B081F5 inset, 0 -6px 6px -3px #6011E8 inset, 0 -5px 22px -5px #C9A8F8 inset, 0 5px 12px -4px #E2CFFB inset, 0 0 1px 0.5px #C9A8F8 inset;
  }
  /* Match the site-wide button click feel (theme-overrides.css: scale(0.97) on :active). */
  .hai-btn-primary:active { transform: scale(0.97); }
  .hai-btn-primary:focus-visible { outline: 2px solid #C9A8F8; outline-offset: 3px; }
  .cta-secondary {
    background: transparent;
    color: var(--navy);
    padding: 16px 32px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 16px;
    text-decoration: none;
    border: 1.5px solid var(--slate-200);
    transition: border-color 0.2s ease, transform 0.2s ease;
  }
  .cta-secondary:hover { border-color: var(--navy); transform: translateY(-2px); }

  /* ============== SHARED ANIMATIONS ============== */
  @keyframes fadeUp {
    from { opacity: 0; transform: translateY(16px); }
    to { opacity: 1; transform: translateY(0); }
  }
  @keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
  }


  /* ============== ARCHITECTURE SECTION ============== */
  .architecture {
    background: var(--navy);
    padding: 64px 48px 80px;
    position: relative;
    overflow: hidden;
  }
  .architecture::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -20%;
    width: 140%;
    height: 200%;
    background: radial-gradient(ellipse at 50% 30%, rgba(95, 17, 228, 0.15) 0%, transparent 60%);
    pointer-events: none;
  }
  .arch-inner {
    max-width: 1400px;
    margin: 0 auto;
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr);
    gap: 64px;
    align-items: start;
  }
  @media (max-width: 900px) {
    .arch-inner {
      grid-template-columns: 1fr;
      gap: 40px;
    }
  }
  /* Section-eyebrow shared spec: same letter-spacing, weight, and tracking
     across .trust, .arch, and .hiro-action. Color flips between purple-600
     (light bg) and purple-400 (dark bg) for contrast. */
  .arch-eyebrow {
    font-size: 12px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--purple-400);
    font-weight: 700;
    margin-bottom: 32px;
  }
  /* Section-headline shared spec: same clamp, weight, line-height, tracking
     across all three sections. Color stays contextual (white on dark, navy
     on light). */
  .arch-headline {
    font-size: clamp(29px, 3vw, 40px);
    font-weight: 700;
    color: var(--white);
    line-height: 1.2;
    letter-spacing: -0.025em;
    margin: 0 0 28px;
  }
  .arch-headline em { font-style: normal; color: var(--purple-400); }
  .arch-subheadline {
    font-size: clamp(20px, 2vw, 26px);
    font-weight: 700;
    color: var(--purple-400);
    line-height: 1.2;
    letter-spacing: -0.02em;
    margin: 0 0 32px;
  }
  .arch-sub {
    color: rgba(255, 255, 255, 0.7);
    font-size: 16px;
    line-height: 1.7;
    margin: 0;
  }

  /* ============================================================
     Compact architecture board — orchestrator bar on top, three
     outcome columns in the middle, outcome graph bar at the bottom.
     Fits in one viewport at typical laptop heights.
     ============================================================ */
  .arch-board {
    background: rgba(10, 22, 40, 0.7);
    border: 1px solid rgba(95, 17, 228, 0.25);
    border-radius: 14px;
    padding: 24px;
    display: grid;
    gap: 18px;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
  }

  /* Top bar — Hiro orchestrator */
  .arch-orch {
    position: relative;
    background: linear-gradient(90deg, var(--purple-700), var(--purple-600));
    color: var(--white);
    padding: 18px 28px;
    border-radius: 10px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 14px;
    box-shadow: 0 0 30px rgba(95, 17, 228, 0.22);
    transition: opacity 600ms ease, transform 300ms cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 400ms ease;
  }
  /* Orchestrator reveal — fade in smoothly, no perimeter sweep. */
  .arch-orch.is-empty { opacity: 0; }
  .arch-orch.is-revealing,
  .arch-orch.is-complete { opacity: 1; }
  .arch-orch.is-complete:hover {
    transform: translateY(-4px) scale(1.003);
    box-shadow: 0 12px 36px rgba(95, 17, 228, 0.5), 0 0 70px rgba(95, 17, 228, 0.3);
  }
  .arch-orch-label {
    font-size: 12.5px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
  }
  .arch-orch-detail {
    font-size: 13px;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.86);
  }

  /* Three outcome columns */
  .arch-cols {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 16px;
  }
  .arch-col {
    position: relative;
    background: rgba(15, 31, 61, 0.85);
    border-radius: 10px;
    border-top: 3px solid;
    padding: 22px 22px 22px;
    transition: transform 300ms cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 400ms ease;
    cursor: default;
  }
  .arch-col--grow  { border-top-color: #07E49E; }
  .arch-col--keep  { border-top-color: #F7A25F; }
  .arch-col--prove { border-top-color: #3B63E8; }

  /* Perimeter cyclone removed — the top border accent is the only "line"
     per column. Reveal animation is the staggered engine items + the
     glow halo fading in. Hover lift still active. */

  /* Glow halos on completed columns + Spring Bob hover */
  .arch-col--grow.is-complete  { box-shadow: 0 0 50px rgba(7, 151, 105, 0.14); }
  .arch-col--keep.is-complete  { box-shadow: 0 0 50px rgba(236, 115, 19, 0.14); }
  .arch-col--prove.is-complete { box-shadow: 0 0 50px rgba(26, 59, 174, 0.18); }
  .arch-col.is-complete:hover {
    transform: translateY(-4px) scale(1.005);
  }
  .arch-col--grow.is-complete:hover  { box-shadow: 0 8px 28px rgba(7, 151, 105, 0.22),  0 0 60px rgba(7, 151, 105, 0.16); }
  .arch-col--keep.is-complete:hover  { box-shadow: 0 8px 28px rgba(236, 115, 19, 0.22),  0 0 60px rgba(236, 115, 19, 0.16); }
  .arch-col--prove.is-complete:hover { box-shadow: 0 8px 28px rgba(26, 59, 174, 0.28),  0 0 60px rgba(26, 59, 174, 0.20); }
  .arch-col.is-complete:active {
    transform: translateY(0) scale(0.995);
    transition-duration: 150ms;
  }

  .arch-col-head { margin-bottom: 18px; }
  .arch-col-h {
    font-size: 17px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    margin: 0 0 4px;
  }
  .arch-col--grow  .arch-col-h { color: #07E49E; }
  .arch-col--keep  .arch-col-h { color: #F7A25F; }
  .arch-col--prove .arch-col-h { color: #3B63E8; }
  .arch-col-sub {
    font-size: 14px;
    color: rgba(255, 255, 255, 0.55);
    margin: 0;
    font-style: italic;
  }

  /* Engine list */
  .arch-engines {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
  }
  .arch-engines li {
    display: flex;
    flex-direction: column;
    gap: 3px;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 500ms ease, transform 500ms ease;
  }
  .arch-engines li.is-visible {
    opacity: 1;
    transform: translateY(0);
  }
  .arch-engine-name {
    font-size: 16px;
    font-weight: 600;
    color: var(--white);
    line-height: 1.25;
  }
  .arch-engine-desc {
    font-size: 13px;
    color: rgba(255, 255, 255, 0.62);
    line-height: 1.4;
    margin: 0;
  }

  /* Bottom bar — Customer Outcome Graph (static, no cyclone) */
  .arch-graph {
    background: rgba(11, 21, 38, 0.92);
    border: 1px solid rgba(59, 99, 232, 0.22);
    color: var(--white);
    padding: 18px 28px;
    border-radius: 10px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 14px;
  }
  .arch-graph-label {
    font-size: 12.5px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--blue-400);
  }
  .arch-graph-detail {
    font-size: 13px;
    color: rgba(255, 255, 255, 0.7);
  }

  /* ============== MEET HIRO SECTION ============== */
  /* ============== LATEST FROM AMBASSADOR — news grid ==============
     Anthropic-style 3-up card grid for blog posts. Cards lift on hover via
     Pattern 1 .de-hover from the hover-motion skill. Category eyebrows tint
     to the post type — Thesis (purple), Product (blue), Company (slate). */
  .news {
    background: var(--offwhite);
    padding: 112px 48px;
    position: relative;
  }
  .news-inner {
    max-width: 1400px;
    margin: 0 auto;
  }
  .news-header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 16px;
    margin-bottom: 48px;
  }
  .news-title {
    font-size: clamp(28px, 3vw, 40px);
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--navy);
    margin: 0;
  }
  .news-all {
    font-size: 15px;
    font-weight: 500;
    color: var(--blue-700);
    text-decoration: none;
    transition: color 0.15s ease;
  }
  .news-all:hover { color: var(--blue-500); }

  .news-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
  }

  .news-card {
    background: var(--white);
    border: 1px solid var(--slate-200);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(15, 31, 61, 0.04);
  }
  .news-card-link {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 32px 28px 24px;
    text-decoration: none;
    color: inherit;
  }

  .news-card-top {
    flex: 1;
    display: flex;
    flex-direction: column;
    margin-bottom: 28px;
  }

  .news-eyebrow {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    margin-bottom: 20px;
    align-self: flex-start;
    padding: 6px 11px;
    border-radius: 999px;
    line-height: 1;
  }
  .news-eyebrow--thesis {
    color: var(--purple-600);
    background: rgba(95, 17, 228, 0.08);
  }
  .news-eyebrow--product {
    color: var(--blue-700);
    background: rgba(26, 59, 174, 0.08);
  }
  .news-eyebrow--company {
    color: var(--slate-700);
    background: rgba(50, 66, 120, 0.08);
  }

  .news-card-title {
    font-size: 22px;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -0.015em;
    color: var(--navy);
    margin: 0 0 14px;
  }
  .news-card-dek {
    font-size: 15px;
    line-height: 1.55;
    font-weight: 400;
    color: var(--slate-700);
    margin: 0 0 20px;
    flex: 1;
  }
  .news-inline-cta {
    font-size: 14px;
    font-weight: 600;
    color: var(--blue-700);
    align-self: flex-start;
    transition: color 0.15s ease;
  }
  .news-card:hover .news-inline-cta { color: var(--blue-500); }

  .news-card-meta {
    border-top: 1px solid var(--slate-200);
    border-bottom: 1px solid var(--slate-200);
    padding: 16px 0;
    margin-bottom: 24px;
  }
  .news-meta-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 6px 0;
    font-size: 13px;
  }
  .news-meta-label {
    text-transform: uppercase;
    letter-spacing: 0.14em;
    font-weight: 600;
    color: var(--slate-500);
  }
  .news-meta-value {
    color: var(--slate-700);
    font-weight: 500;
  }

  .news-card-cta {
    align-self: flex-start;
  }
  .news-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--navy);
    color: var(--white);
    font-size: 14px;
    font-weight: 600;
    padding: 11px 18px;
    border-radius: 999px;
    transition: background 0.2s ease, transform 0.2s ease;
  }
  .news-card:hover .news-pill {
    background: var(--blue-700);
  }

  /* ============== TRUST & COMPLIANCE — text-led compliance strip ==============
     Honest treatment: every claim defensible, no asset gymnastics. Five pills
     in a row, each linking to its detail page in the Trust Center. Pills
     are uniform white with slate borders — let the typography carry weight,
     hover bumps the border to Blue 500 with a subtle 1px lift. The headline
     and the Trust Center link below do the heavier visual work. */
  .trust {
    background: var(--offwhite);
    padding: 80px 48px 88px;
    position: relative;
    border-top: 1px solid var(--slate-200);
  }
  .trust-inner {
    max-width: 1100px;
    margin: 0 auto;
    text-align: center;
  }
  .trust-header {
    max-width: 920px;
    margin: 0 auto 72px;
  }
  .trust-eyebrow {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--purple-600);
    margin-bottom: 24px;
  }
  .trust-title {
    font-size: clamp(32px, 3.8vw, 48px);
    font-weight: 700;
    letter-spacing: -0.025em;
    line-height: 1.15;
    color: var(--navy);
    margin: 0 0 24px;
    /* Keep "Audited. Documented. Defensible." on a single line on desktop.
       The mobile breakpoint below releases this so the title wraps on
       phones where there isn't horizontal room. */
    white-space: nowrap;
  }
  @media (max-width: 640px) {
    .trust-title { white-space: normal; }
  }
  .trust-dek {
    font-size: 18px;
    line-height: 1.7;
    font-weight: 500;
    color: var(--slate-700);
    margin: 0;
    max-width: 580px;
    margin-left: auto;
    margin-right: auto;
  }

  /* The strip — official Vanta compliance badges, wraps on narrow screens */
  .trust-strip {
    list-style: none;
    padding: 0;
    margin: 0 0 60px;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 48px;
  }
  .trust-strip > li { display: flex; }
  .trust-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 96px;
    height: 96px;
    text-decoration: none;
    border-radius: 14px;
    transition: transform 0.2s ease, filter 0.2s ease;
  }
  .trust-badge img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
    filter: grayscale(15%);
    transition: filter 0.2s ease;
  }
  .trust-badge:hover {
    transform: translateY(-2px);
  }
  .trust-badge:hover img {
    filter: grayscale(0%);
  }
  .trust-badge:focus-visible {
    outline: 2px solid var(--blue-500);
    outline-offset: 4px;
  }

  .trust-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 15px;
    font-weight: 600;
    color: var(--blue-700);
    text-decoration: none;
    transition: color 0.15s ease;
  }
  .trust-link:hover { color: var(--blue-500); }

  /* ============== FOOTER — directory-style ============== */
  .footer {
    background: var(--navy);
    color: rgba(255, 255, 255, 0.65);
    padding: 80px 48px 32px;
    font-size: 14px;
    line-height: 1.55;
    border-top: 1px solid rgba(255, 255, 255, 0.06);
  }
  .footer-grid {
    max-width: 1400px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1.2fr 1.5fr 1.4fr 1.2fr;
    gap: 48px;
    padding-bottom: 64px;
  }

  /* Brand column */
  .footer-brand-mark {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 20px;
  }
  .footer-brand-mark .brand-mark {
    width: 26px;
    height: 26px;
  }
  .footer-brand-mark .wordmark {
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: var(--white);
  }
  .footer-tagline {
    font-size: 14px;
    color: rgba(255, 255, 255, 0.6);
    line-height: 1.55;
    margin-bottom: 28px;
    max-width: 280px;
  }
  .footer-socials {
    display: flex;
    gap: 12px;
  }
  .footer-socials a {
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.08);
    color: rgba(255, 255, 255, 0.65);
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
  }
  .footer-socials a:hover {
    background: rgba(95, 17, 228, 0.18);
    border-color: rgba(95, 17, 228, 0.4);
    color: var(--white);
  }

  /* Link columns */
  .footer-col-title {
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.85);
    font-weight: 600;
    margin-bottom: 20px;
  }
  .footer-subgroup {
    margin-bottom: 24px;
  }
  .footer-subgroup:last-child { margin-bottom: 0; }
  .footer-sub-eyebrow {
    font-size: 10px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    font-weight: 600;
    margin-bottom: 8px;
  }
  /* When the eyebrow is a link (GROW/KEEP/PROVE pillars), strip default
     anchor styles and add a glow-on-hover to mirror the hero tagline pattern. */
  a.footer-sub-eyebrow {
    display: block;
    text-decoration: none;
    cursor: pointer;
    transition: text-shadow 0.2s ease, transform 0.2s ease, color 0.2s ease;
  }
  a.footer-sub-eyebrow:hover {
    transform: translateX(2px);
  }
  a.footer-sub-eyebrow.is-grow:hover {
    text-shadow: 0 0 14px rgba(7, 228, 158, 0.7);
  }
  a.footer-sub-eyebrow.is-keep:hover {
    text-shadow: 0 0 14px rgba(247, 162, 95, 0.7);
  }
  a.footer-sub-eyebrow.is-prove:hover {
    text-shadow: 0 0 14px rgba(59, 99, 232, 0.8);
  }
  /* Engine-accent eyebrows for the Platform column subgroups */
  .footer-sub-eyebrow.is-grow  { color: #07E49E; }
  .footer-sub-eyebrow.is-keep  { color: #F7A25F; }
  .footer-sub-eyebrow.is-prove { color: var(--blue-400); }
  .footer-sub-eyebrow.is-overview { color: var(--purple-400); }
  .footer-sub-eyebrow.is-by-industry,
  .footer-sub-eyebrow.is-by-program,
  .footer-sub-eyebrow.is-by-strategy { color: var(--blue-400); }

  .footer ul {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 7px;
  }
  .footer ul a {
    color: rgba(255, 255, 255, 0.62);
    text-decoration: none;
    font-size: 14px;
    font-weight: 400;
    transition: color 0.2s ease;
    display: inline-flex;
    align-items: center;
    gap: 8px;
  }
  .footer ul a:hover {
    color: var(--white);
  }
  .footer .badge-soon {
    display: inline-block;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 2.5px 7px;
    border-radius: 100px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: rgba(255, 255, 255, 0.55);
  }
  .footer ul a.is-disabled { color: rgba(255, 255, 255, 0.35); pointer-events: none; }

  /* Bottom strip — compliance, copyright, legal */
  .footer-bottom {
    max-width: 1400px;
    margin: 0 auto;
    padding-top: 32px;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 32px;
    flex-wrap: wrap;
  }
  .footer-compliance {
    display: flex;
    align-items: center;
    gap: 16px;
    font-size: 13px;
    color: rgba(255, 255, 255, 0.5);
  }
  .footer-soc-badge {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid rgba(255, 255, 255, 0.12);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: rgba(255, 255, 255, 0.55);
    line-height: 1.1;
    text-align: center;
  }
  .footer-legal-row {
    max-width: 1400px;
    margin: 24px auto 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 32px;
    flex-wrap: wrap;
    font-size: 12.5px;
    color: rgba(255, 255, 255, 0.45);
  }
  .footer-legal-links {
    display: flex;
    gap: 24px;
  }
  .footer-legal-links a {
    color: rgba(255, 255, 255, 0.5);
    text-decoration: none;
    transition: color 0.2s ease;
  }
  .footer-legal-links a:hover { color: var(--white); }

  /* Canonical taglines anchor at the very bottom */
  .footer-tagline-block {
    max-width: 1400px;
    margin: 40px auto 0;
    padding-top: 32px;
    border-top: 1px solid rgba(255, 255, 255, 0.05);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    text-align: center;
  }
  .footer-tag-fig {
    font-size: 13px;
    font-weight: 400;
    letter-spacing: 0.16em;
    color: rgba(255, 255, 255, 0.6);
  }
  .footer-tag-fig .dot { color: var(--purple-400); }
  .footer-tag-gkp {
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.12em;
  }
  .footer-tag-gkp .gkp-grow  { color: #07E49E; }
  .footer-tag-gkp .gkp-keep  { color: #F7A25F; }
  .footer-tag-gkp .gkp-prove { color: var(--blue-400); }

  /* ============== SCROLL REVEAL ============== */
  .reveal {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.9s ease, transform 0.9s ease;
  }
  .reveal.visible {
    opacity: 1;
    transform: translateY(0);
  }
  .reveal.delay-1 { transition-delay: 0.15s; }
  .reveal.delay-2 { transition-delay: 0.3s; }
  .reveal.delay-3 { transition-delay: 0.45s; }
  .reveal.delay-4 { transition-delay: 0.6s; }
  .reveal.delay-5 { transition-delay: 0.75s; }

  /* ============== RESPONSIVE ============== */
  /* Desktop ≥1025px: 2-column hero, nebula orb on right, content on left.
     Uses row-reverse so the existing HTML order (presence first, content second)
     naturally flips. Below 1025px the default mobile-first column layout applies
     and the orb stays on top. */
  @media (min-width: 1025px) {
    .hero {
      flex-direction: row-reverse;
      /* Top-align both columns so the eyebrow sits near the top of the
         hero and takes advantage of the available white space, rather
         than getting vertically centered in the middle of the section. */
      align-items: flex-start;
      justify-content: space-between;
      gap: 56px;
      padding: 36px 48px 64px;
    }
    .hero-content {
      flex: 1 1 0;
      max-width: 600px;
      margin: 0;
      /* Nudge the content column down slightly while keeping the eyebrow
         high. */
      padding-top: 8px;
    }
  }

  /* Tablet (1024px): smooth two-step collapse instead of jumping straight to 1col.
     Engine cols + news grid step down to 2 columns here, then to 1 below 700px. */
  @media (max-width: 1024px) {
    .hero { padding: 48px 24px 48px; gap: 32px; }
    .nav { padding: 20px 24px; }
    .nav-links { gap: 24px; }
    .architecture, .news, .trust { padding: 80px 24px; }
    .news-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
    .arch-cols { grid-template-columns: 1fr; gap: 12px; }
    .arch-board { padding: 16px; gap: 12px; }
    .arch-orch, .arch-graph { flex-direction: column; align-items: flex-start; gap: 4px; padding: 14px 18px; }
    .footer { padding: 64px 24px 32px; }
    .footer-grid { grid-template-columns: 1fr 1fr; gap: 40px; }
    .hero-rotator { min-width: 10ch; }
  }

  /* Small tablet / large phone (700px): collapse to single column. */
  @media (max-width: 700px) {
    .news-grid { grid-template-columns: 1fr; }
  }

  @media (max-width: 640px) {
    .nav-links a:not(.nav-cta) { display: none; }
    .hero h1, .hiro-name { font-size: clamp(32px, 8vw, 42px); line-height: 1.06; }
    /* Keep inline-block so the rotator's height:1.4em clip survives.
       Earlier `display:inline` here collapsed the rotator and the words
       disappeared on phones. */
    .hero-rotator { min-width: 0; }
    .eyebrow { margin-bottom: 32px; }
    .hero-ctas { flex-direction: column; }
    .hero-ctas a { width: 100%; text-align: center; }
    .news-card-link { padding: 24px 20px 20px; }
    .news-card-title { font-size: 19px; }
    .trust-badge { width: 76px; height: 76px; }
    .trust-strip { gap: 20px; margin-bottom: 32px; }
    .footer-grid { grid-template-columns: 1fr; gap: 40px; }
    .footer-bottom, .footer-legal-row { justify-content: flex-start; }
  }

  /* ============== REDUCED MOTION ============== */
  @media (prefers-reduced-motion: reduce) {
    .reveal { opacity: 1; transform: none; transition: none; }
    .eyebrow, .hero h1, .hiro-name, .hero-sub, .hero-tagline, .hero-ctas {
      animation: none;
      opacity: 1;
    }

    /* Architecture: show static end-state, items visible immediately */
    .arch-col, .arch-orch { transition: none; opacity: 1; }
    .arch-engines li { opacity: 1; transform: none; transition: none; }
  }

  /* ============== HIRO IN ACTION ==============
     Three pillars side by side, all playing simultaneously on a synchronized
     10-second loop. GROW (left, green), KEEP (middle, amber), PROVE (right,
     blue). Each column has its own pillar chip, widget canvas with before/
     after states, and compact chat strip with prompt -> plan -> approve ->
     done. Each column carries a faint pillar-color glow. CSS-driven on a
     single shared timeline so all three columns stay in sync without JS.
     IntersectionObserver toggles data-paused on the section to flip
     animation-play-state for every descendant. */

  .hiro-action {
    background: var(--offwhite);
    padding: 120px 32px;
    position: relative;
  }
  .hiro-action-inner {
    max-width: 1280px;
    margin: 0 auto;
  }
  .hiro-action-eyebrow {
    font-family: 'DM Sans', sans-serif;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--purple-600);
    margin-bottom: 24px;
  }
  .hiro-action-headline {
    font-family: 'DM Sans', sans-serif;
    font-size: clamp(32px, 3.8vw, 48px);
    font-weight: 700;
    letter-spacing: -0.025em;
    line-height: 1.15;
    color: var(--navy);
    margin: 0 0 24px;
    max-width: 900px;
  }
  .hiro-action-headline em {
    font-style: normal;
    background: linear-gradient(90deg, var(--purple-600) 0%, var(--blue-500) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
  }
  /* Sub-heading -- second beat of the headline thought, sized just under the
     H2 and rendered in the purple-to-blue gradient that previously highlighted
     the same phrase via <em>. */
  .hiro-action-subheadline {
    font-family: 'DM Sans', sans-serif;
    font-size: clamp(24px, 2.8vw, 36px);
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.15;
    margin: 0 0 28px;
    max-width: 900px;
    background: linear-gradient(90deg, var(--purple-600) 0%, var(--blue-500) 100%);
    -webkit-background-clip: text;
            background-clip: text;
    color: transparent;
  }
  .hiro-action-sub {
    font-size: 18px;
    line-height: 1.5;
    color: var(--slate-700);
    max-width: 720px;
    margin: 0 0 56px;
  }

  .hiro-action-stage {
    position: relative;
    background: linear-gradient(180deg, var(--navy) 0%, var(--dark-card) 100%);
    border-radius: 24px;
    padding: 32px;
    border: 1px solid rgba(95, 17, 228, 0.15);
    box-shadow: 0 24px 60px -20px rgba(15, 31, 61, 0.4);
    overflow: hidden;
  }
  .hiro-action-stage::before {
    content: '';
    position: absolute;
    top: -120px;
    right: -120px;
    width: 380px;
    height: 380px;
    background: radial-gradient(circle, rgba(95, 17, 228, 0.12), transparent 70%);
    pointer-events: none;
    filter: blur(40px);
  }

  /* Corner badge -- "stapled" to the top-right of the stage in Claude Code
     orange. Top and right edges sit flush with the stage; only the
     bottom-left corner is softened with a radius so it reads as a clean
     adhesive label tucked into the corner. The parent's border-radius +
     overflow:hidden clips the badge's top-right curve naturally. */
  .hiro-action-stage-badge {
    position: absolute;
    top: 0;
    right: 0;
    z-index: 3;
    background: linear-gradient(135deg, #D97757 0%, #C2410C 100%);
    padding: 11px 22px 11px 22px;
    border-radius: 0 0 0 14px;
    font-family: 'DM Sans', sans-serif;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: #FFFFFF;
    white-space: nowrap;
    box-shadow: -6px 6px 18px -8px rgba(0, 0, 0, 0.45),
                inset 0 -1px 0 rgba(0, 0, 0, 0.12);
    pointer-events: none;
  }
  .hiro-action-stage-badge-dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #FFFFFF;
    margin-right: 8px;
    vertical-align: 1px;
    box-shadow: 0 0 8px rgba(255, 255, 255, 0.85);
  }
  @media (max-width: 720px) {
    .hiro-action-stage-badge {
      font-size: 12px;
      padding: 9px 16px 9px 22px;
      letter-spacing: 0.1em;
    }
  }

  /* 3-column pillar grid */
  .hiro-pillars {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: stretch;
    gap: 20px;
  }
  .hiro-pillar {
    position: relative;
    border-radius: 16px;
    padding: 18px;
    display: flex;
    flex-direction: column;
    gap: 14px;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.025) 0%, rgba(255, 255, 255, 0) 100%);
    border: 1px solid rgba(255, 255, 255, 0.06);
  }

  /* Per-column pillar glow */
  .pillar-keep {
    box-shadow: 0 0 80px -28px rgba(236, 115, 19, 0.55),
                inset 0 0 0 1px rgba(236, 115, 19, 0.12);
  }
  .pillar-grow {
    box-shadow: 0 0 80px -28px rgba(7, 151, 105, 0.55),
                inset 0 0 0 1px rgba(7, 151, 105, 0.12);
  }
  .pillar-prove {
    box-shadow: 0 0 80px -28px rgba(26, 59, 174, 0.6),
                inset 0 0 0 1px rgba(26, 59, 174, 0.12);
  }

  /* Pillar chip — top of each column */
  .pillar-chip {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 6px 12px;
    border-radius: 100px;
    font-family: 'DM Sans', sans-serif;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.08);
    color: white;
    align-self: flex-start;
    white-space: nowrap;
    opacity: 0;
    transform: translateY(4px);
    animation: pillarChipShow 7.5s linear infinite;
  }
  .pillar-chip .chip-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    display: inline-block;
  }
  .pillar-keep .chip-dot { background: var(--amber-600); box-shadow: 0 0 7px rgba(236, 115, 19, 0.7); }
  .pillar-grow .chip-dot { background: var(--green-600); box-shadow: 0 0 7px rgba(7, 151, 105, 0.7); }
  .pillar-prove .chip-dot { background: var(--blue-400); box-shadow: 0 0 7px rgba(59, 99, 232, 0.7); }

  /* Widget canvas (top of each pillar column). min-height sized for the
     12px type floor inside the mock UIs (v2.2 rule: nothing under 12px). */
  .widget-canvas {
    position: relative;
    background: white;
    border-radius: 12px;
    padding: 20px;
    min-height: 300px;
    overflow: hidden;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
  }
  .widget-mock {
    position: absolute;
    inset: 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    opacity: 0;
  }
  .widget-mock-eyebrow {
    font-family: 'DM Sans', sans-serif;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--slate-500);
  }
  .widget-mock-h {
    font-family: 'DM Sans', sans-serif;
    font-size: 16px;
    font-weight: 600;
    line-height: 1.2;
    color: var(--navy);
    margin: 0;
  }
  .widget-mock-p {
    font-size: 12px;
    line-height: 1.4;
    color: var(--slate-700);
    margin: 0;
  }
  .widget-mock-field {
    display: flex;
    flex-direction: column;
    gap: 3px;
  }
  .widget-mock-field label {
    font-size: 12px;
    font-weight: 500;
    color: var(--slate-700);
  }
  .widget-mock-field input {
    height: 28px;
    padding: 0 10px;
    border: 1px solid var(--slate-200);
    border-radius: 6px;
    background: white;
    font-family: 'DM Sans', sans-serif;
    font-size: 12px;
    color: var(--navy);
  }
  .widget-mock-cta {
    margin-top: 4px;
    padding: 8px 14px;
    background: var(--blue-500);
    color: white;
    border: none;
    border-radius: 6px;
    font-family: 'DM Sans', sans-serif;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    align-self: flex-start;
  }
  .widget-mock-cta-row {
    display: flex;
    gap: 6px;
    margin-top: 4px;
  }
  .widget-mock-cta-2 {
    padding: 7px 14px;
    border-radius: 6px;
    font-family: 'DM Sans', sans-serif;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
  }
  .widget-mock-cta-default { background: var(--blue-500); color: white; border: none; }
  .widget-mock-cta-2-default { background: white; color: var(--blue-500); border: 1px solid var(--blue-500); }
  .widget-mock-cta-brand { background: #1A2B3C; color: white; border: none; }
  .widget-mock-cta-2-brand { background: white; color: #FF6600; border: 1px solid #FF6600; }
  .widget-mock-perks {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 8px;
    background: var(--offwhite);
    border-radius: 6px;
  }
  .widget-mock-perk {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: var(--slate-700);
  }
  .perk-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    background: rgba(95, 17, 228, 0.12);
    color: var(--purple-600);
    border-radius: 4px;
    font-size: 12px;
  }
  .nps-row {
    display: grid;
    gap: 4px;
    margin-top: 6px;
    transition: grid-template-columns 0.6s cubic-bezier(0.4, 0, 0.2, 1);
  }
  .nps-row-uneven {
    grid-template-columns: 1fr 1fr 1.7fr 1fr 1.6fr 1fr 1fr 1.5fr 1fr 1fr 1.8fr;
  }
  .nps-row-even {
    grid-template-columns: repeat(11, 1fr);
  }
  .nps-btn {
    height: 26px;
    border: 1px solid var(--slate-200);
    background: white;
    border-radius: 4px;
    font-family: 'DM Sans', sans-serif;
    font-size: 12px;
    font-weight: 500;
    color: var(--slate-700);
    cursor: pointer;
  }

  /* Compact chat strip (bottom of each pillar column) */
  .chat-strip {
    position: relative;
    background: rgba(15, 31, 61, 0.85);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(95, 17, 228, 0.12);
    border-radius: 12px;
    padding: 12px;
    min-height: 180px;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 8px;
  }

  /* Prompt bubble */
  .chat-prompt {
    display: flex;
    justify-content: flex-end;
  }
  .chat-prompt-bubble {
    max-width: 90%;
    padding: 8px 11px;
    background: rgba(95, 17, 228, 0.18);
    border: 1px solid rgba(95, 17, 228, 0.3);
    border-radius: 12px 12px 4px 12px;
    font-size: 12px;
    line-height: 1.4;
    color: white;
    overflow: hidden;
  }
  .chat-prompt-text {
    display: inline-block;
    clip-path: inset(0 100% 0 0);
    animation: promptTypeIn 7.5s linear infinite;
  }

  /* Plan card */
  .chat-plan {
    padding: 10px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: 8px;
    opacity: 0;
    transform: translateY(6px);
    animation: planSlideUp 7.5s linear infinite;
  }
  .chat-plan-header {
    font-family: 'DM Sans', sans-serif;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--purple-400);
    margin-bottom: 6px;
  }
  .chat-plan-step {
    font-size: 12px;
    line-height: 1.4;
    color: rgba(255, 255, 255, 0.85);
    display: flex;
    gap: 5px;
    align-items: flex-start;
    margin-bottom: 3px;
  }
  .chat-plan-step:last-child { margin-bottom: 0; }
  .step-arrow { color: var(--purple-400); font-weight: 600; flex-shrink: 0; }

  /* Approve button (gets click pulse) */
  .chat-actions {
    display: flex;
    gap: 6px;
    opacity: 0;
    margin-top: auto;
    animation: actionsAppear 7.5s linear infinite;
  }
  .chat-approve, .chat-reject {
    padding: 6px 14px;
    font-family: 'DM Sans', sans-serif;
    font-size: 12px;
    font-weight: 600;
    border-radius: 6px;
    cursor: pointer;
    border: none;
  }
  .chat-approve {
    background: var(--purple-600);
    color: white;
    box-shadow: 0 0 0 0 rgba(95, 17, 228, 0);
    animation: approvePulse 7.5s linear infinite;
  }
  .chat-reject {
    background: transparent;
    color: rgba(255, 255, 255, 0.55);
    border: 1px solid rgba(255, 255, 255, 0.1);
  }

  /* Done indicator (per-pillar color tint) */
  .chat-done {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 500;
    opacity: 0;
    transform: translateY(4px);
    animation: doneAppear 7.5s linear infinite;
  }
  .pillar-keep .chat-done { color: #F7A25F; }
  .pillar-grow .chat-done { color: #07E49E; }
  .pillar-prove .chat-done { color: #3B63E8; }
  .done-check {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    font-size: 12px;
    font-weight: 700;
  }
  .pillar-keep .done-check { background: rgba(252, 211, 77, 0.18); }
  .pillar-grow .done-check { background: rgba(7, 228, 158, 0.18); }
  .pillar-prove .done-check { background: rgba(59, 99, 232, 0.18); }

  /* === SHARED 10s ANIMATION TIMELINE ===
     All three pillars share these keyframes since they animate in sync.
     0-5%      chips fade in, widgets show before
     12-32%    prompts type in via clip-path reveal
     32-40%    plan cards slide up
     40-55%    actions visible, approve pulse fires at 50-55%
     55-65%    widgets transform from before to after
     65-90%    done indicator visible
     90-100%   fade out, loop reset */

  @keyframes pillarChipShow {
    0%, 1% { opacity: 0; transform: translateY(4px); }
    5% { opacity: 1; transform: translateY(0); }
    90% { opacity: 1; transform: translateY(0); }
    95% { opacity: 0; transform: translateY(-4px); }
    100% { opacity: 0; transform: translateY(-4px); }
  }

  @keyframes widgetBeforeShow {
    0%, 6% { opacity: 0; }
    10% { opacity: 1; }
    55% { opacity: 1; }
    60% { opacity: 0; }
    100% { opacity: 0; }
  }
  @keyframes widgetAfterShow {
    0%, 60% { opacity: 0; transform: translateY(4px); }
    65% { opacity: 1; transform: translateY(0); }
    90% { opacity: 1; transform: translateY(0); }
    95% { opacity: 0; transform: translateY(-4px); }
    100% { opacity: 0; }
  }
  .widget-before { animation: widgetBeforeShow 7.5s linear infinite; }
  .widget-after { animation: widgetAfterShow 7.5s linear infinite; }

  @keyframes promptTypeIn {
    0%, 12% { clip-path: inset(0 100% 0 0); }
    32% { clip-path: inset(0 0% 0 0); }
    90% { clip-path: inset(0 0% 0 0); }
    95% { clip-path: inset(0 100% 0 0); }
    100% { clip-path: inset(0 100% 0 0); }
  }

  @keyframes planSlideUp {
    0%, 32% { opacity: 0; transform: translateY(6px); }
    40% { opacity: 1; transform: translateY(0); }
    90% { opacity: 1; transform: translateY(0); }
    95% { opacity: 0; transform: translateY(-3px); }
    100% { opacity: 0; }
  }

  @keyframes actionsAppear {
    0%, 40% { opacity: 0; transform: translateY(3px); }
    45% { opacity: 1; transform: translateY(0); }
    55% { opacity: 1; }
    60% { opacity: 0; }
    100% { opacity: 0; }
  }

  @keyframes approvePulse {
    0%, 49% { box-shadow: 0 0 0 0 rgba(95, 17, 228, 0); }
    50% { box-shadow: 0 0 0 6px rgba(95, 17, 228, 0.35); }
    55% { box-shadow: 0 0 0 14px rgba(95, 17, 228, 0); }
    100% { box-shadow: 0 0 0 0 rgba(95, 17, 228, 0); }
  }

  @keyframes doneAppear {
    0%, 60% { opacity: 0; transform: translateY(4px); }
    66% { opacity: 1; transform: translateY(0); }
    90% { opacity: 1; }
    95% { opacity: 0; }
    100% { opacity: 0; }
  }

  /* Pillar interactivity: hover-to-play matching the architecture engine-col
     pattern (Spring Bob lift, colored shadow intensify). All inner animations
     are paused by default; the .is-active class (added on mouseenter) flips
     them to running. JS removes-and-re-adds the class to force a restart from
     0% on every hover so the user always sees the full sequence. */
  .hiro-pillar {
    transition: transform 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
                box-shadow 400ms ease;
    cursor: pointer;
  }
  .hiro-pillar:hover {
    transform: translateY(-4px) scale(1.005);
  }
  .pillar-keep:hover {
    box-shadow: 0 8px 28px rgba(236, 115, 19, 0.28),
                0 0 90px -20px rgba(236, 115, 19, 0.7),
                inset 0 0 0 1px rgba(236, 115, 19, 0.22);
  }
  .pillar-grow:hover {
    box-shadow: 0 8px 28px rgba(7, 151, 105, 0.28),
                0 0 90px -20px rgba(7, 151, 105, 0.7),
                inset 0 0 0 1px rgba(7, 151, 105, 0.22);
  }
  .pillar-prove:hover {
    box-shadow: 0 8px 28px rgba(26, 59, 174, 0.32),
                0 0 90px -20px rgba(26, 59, 174, 0.75),
                inset 0 0 0 1px rgba(26, 59, 174, 0.24);
  }
  .hiro-pillar:active {
    transform: translateY(0) scale(0.995);
    transition-duration: 150ms;
  }

  /* Default state: every animation inside a pillar is paused. The pillar
     only plays its sequence when it carries the .is-active class. */
  .hiro-pillar *,
  .hiro-pillar *::before,
  .hiro-pillar *::after {
    animation-play-state: paused;
  }
  .hiro-pillar.is-active *,
  .hiro-pillar.is-active *::before,
  .hiro-pillar.is-active *::after {
    animation-play-state: running;
  }

  /* Static "hint" frame for non-active pillars: show the chip and the
     "before" widget state, so the card doesn't read as broken. */
  .hiro-pillar:not(.is-active) .pillar-chip {
    opacity: 1;
    transform: translateY(0);
  }
  .hiro-pillar:not(.is-active) .widget-before {
    opacity: 1;
  }

  /* Reduced-motion: lock everything to a single static "after" frame */
  @media (prefers-reduced-motion: reduce) {
    .hiro-action *,
    .hiro-action *::before,
    .hiro-action *::after {
      animation: none !important;
    }
    .pillar-chip { opacity: 1; transform: none; }
    .widget-after { opacity: 1; transform: none; }
    .chat-prompt-text { clip-path: none; }
    .chat-plan { opacity: 1; transform: none; }
    .chat-done { opacity: 1; transform: none; }
  }

  /* Tablet: drop to 2 columns then 1 */
  @media (max-width: 1024px) {
    .hiro-pillars {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .pillar-prove {
      grid-column: span 2;
    }
  }
  @media (max-width: 700px) {
    .hiro-action { padding: 80px 20px; }
    .hiro-pillars {
      grid-template-columns: 1fr;
    }
    .pillar-prove {
      grid-column: auto;
    }
  }
  @media (max-width: 480px) {
    .hiro-action *,
    .hiro-action *::before,
    .hiro-action *::after {
      animation: none !important;
    }
    .pillar-chip { opacity: 1; transform: none; }
    .widget-after { opacity: 1; transform: none; }
    .chat-prompt-text { clip-path: none; }
    .chat-plan { opacity: 1; transform: none; }
    .chat-done { opacity: 1; transform: none; }
  }

  @media (max-width: 768px) {
    .hiro-action { padding: 80px 20px; }
    .hiro-action-grid {
      grid-template-columns: 1fr;
      min-height: auto;
    }
    .widget-canvas { min-height: 380px; }
    .chat-cursor { display: none; }
  }

  @media (max-width: 480px) {
    .hiro-action *,
    .hiro-action *::before,
    .hiro-action *::after {
      animation: none !important;
    }
    .hiro-chip-grow { opacity: 1; transform: none; }
    .widget-grow-after { opacity: 1; transform: none; }
    .chat-grow { opacity: 1; }
    .chat-grow .chat-prompt-text { clip-path: none; }
    .chat-grow .chat-plan { opacity: 1; transform: none; }
    .chat-grow .chat-done { opacity: 1; transform: none; }
  }

  /* ============================================================
     HERO A/B COPY TEST (added). Centered hero: full-width gradient
     CLOS on one line (JS fit-to-width, capped), "for [vertical]"
     rotator, then the tested marketing hook, then three uniform
     CTAs. Overrides the prior two-column .hero layout. The tested
     hook (.test-headline) is the only thing that changes per test
     variation. NO content-visibility here -- above the fold.
     ============================================================ */
  .hero { display: block; text-align: center; padding: 56px 24px 80px; }
  .hero-stack { position: relative; z-index: 1; }
  .hero .clos-band { width: 100%; }
  .hero .clos-oneline {
    display: inline-block; white-space: nowrap; margin: 0;
    font-weight: 600; line-height: 1.04; letter-spacing: -0.015em; color: var(--navy);
    opacity: 0; animation: fadeUp 1s ease 0.2s forwards;
  }
  .hero .clos-grad { color: #11215B; }
  @supports ((-webkit-background-clip: text) or (background-clip: text)) {
    .hero .clos-grad {
      background-image: linear-gradient(90deg, #079769 0%, #EC7313 50%, #1A3BAE 100%);
      -webkit-background-clip: text; background-clip: text;
      color: transparent; -webkit-text-fill-color: transparent;
    }
  }
  .hero .clos-sub {
    font-size: clamp(19px, 2.1vw, 30px); font-weight: 700; line-height: 1.2; color: var(--navy);
    margin: 12px 0 40px; opacity: 0; animation: fadeUp 1s ease 0.35s forwards;
  }
  .hero .clos-for { color: var(--slate-500); font-weight: 600; }
  /* Rotating vertical is left-justified inside its fixed-width box so it hugs
     "for" (no gap), and the box stays a constant width so "for" never moves. */
  .hero .hero-rotator__word { text-align: left; }
  .hero .test-headline {
    font-size: clamp(34px, 4.6vw, 60px); font-weight: 700; letter-spacing: -0.025em;
    color: var(--navy); line-height: 1.08; max-width: 30ch; margin: 0 auto;
    opacity: 0; animation: fadeUp 1s ease 0.5s forwards;
  }
  .hero .hero-ctas { justify-content: center; flex-wrap: wrap; }
  /* Uniform CTA geometry; unique only by fill/role. */
  .hct-btn, .hct-btn:link, .hct-btn:visited, .hct-btn:hover, .hct-btn:focus, .hct-btn:active { text-decoration: none; }
  .hct-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    height: 52px; padding: 0 30px; border-radius: 8px; border: 1.5px solid transparent;
    font-family: 'DM Sans', sans-serif; font-size: 16px; font-weight: 600; cursor: pointer;
    transition: transform .2s ease, box-shadow .25s ease, background-color .25s ease, border-color .2s ease, filter .2s ease;
  }
  .hct-btn:hover { transform: translateY(-2px); }
  .hct-btn:focus-visible { outline: 2px solid #3B63E8; outline-offset: 2px; }
  .hct-btn--demo, .hct-btn--demo:link, .hct-btn--demo:visited, .hct-btn--demo:hover, .hct-btn--demo:focus, .hct-btn--demo:active { color: #FFFFFF; }
  .hct-btn--demo { background: #1A3BAE; border-color: #1A3BAE; }
  .hct-btn--demo:hover { background: #11215B; border-color: #11215B; box-shadow: 0 6px 18px rgba(26,59,174,0.3); }
  .hct-btn--hiro, .hct-btn--hiro:link, .hct-btn--hiro:visited, .hct-btn--hiro:hover, .hct-btn--hiro:focus, .hct-btn--hiro:active { color: #FFFFFF; }
  .hct-btn--hiro { background: radial-gradient(120% 130% at 50% 0%, #7A3BF0 0%, #5F11E4 62%, #4A0FB0 100%); border-color: #5F11E4; box-shadow: 0 4px 16px rgba(95,17,228,0.28); }
  .hct-btn--hiro:hover { filter: brightness(1.07); box-shadow: 0 8px 22px rgba(95,17,228,0.42); }
  .hct-btn--hiro:focus-visible { outline: 2px solid #9457F7; outline-offset: 2px; }
  .hct-btn--see, .hct-btn--see:link, .hct-btn--see:visited, .hct-btn--see:hover, .hct-btn--see:focus, .hct-btn--see:active { color: var(--navy); }
  .hct-btn--see { background: transparent; border-color: var(--slate-200); }
  .hct-btn--see:hover { border-color: var(--navy); }
  /* Below ~760px a single full-width line would fall under the 12px floor, so CLOS wraps. */
  @media (max-width: 759px) {
    .hero .clos-oneline { white-space: normal; display: block; font-size: clamp(30px, 8.5vw, 46px); }
  }
  @media (max-width: 640px) {
    .hero { padding: 40px 24px 56px; }
  }
  @media (prefers-reduced-motion: reduce) {
    .hero .clos-oneline, .hero .clos-sub, .hero .test-headline { opacity: 1; animation: none; }
  }
</style>




<!-- ============== HERO (A/B copy test) ==============
     Centered hero. The gradient CLOS line is the constant category
     statement (H1); the .test-headline below it is the tested
     marketing hook -- the ONLY element that changes between test
     variations. Old two-column orb hero retired here (July 2026). -->
<section class="hero">
  <div class="hero-stack">
    <div class="clos-band" id="closBand">
      <h1 class="clos-oneline" id="closLine"><span class="clos-grad">The Customer Lifecycle Operating System</span></h1>
    </div>
    <div class="clos-sub">
      <span class="clos-for">for</span>
      <span class="hero-rotator" aria-live="polite" aria-atomic="true">
        <span class="hero-rotator__track" data-rotator-track>
          <span class="hero-rotator__word">Agents</span>
          <span class="hero-rotator__word">ISVs</span>
          <span class="hero-rotator__word">MVNO</span>
          <span class="hero-rotator__word">MVNx</span>
          <span class="hero-rotator__word">TelCo</span>
          <span class="hero-rotator__word">Carrier Networks</span>
          <span class="hero-rotator__word">FinTech</span>
          <span class="hero-rotator__word">FinServ</span>
          <span class="hero-rotator__word">SaaS</span>
          <span class="hero-rotator__word">CPaaS</span>
          <span class="hero-rotator__word">Cable</span>
          <span class="hero-rotator__word">OTE</span>
          <span class="hero-rotator__word" aria-hidden="true">Agents</span>
        </span>
      </span>
    </div>

    <!-- TESTED MARKETING HOOK — swap this line per A/B variation -->
    <p class="test-headline" id="hero-hook">The last asset worth owning.</p>

    <div class="hero-ctas">
      <a class="hct-btn hct-btn--demo" href="https://getambassador.com/get-a-demo/?hsLang=en">Get Demo</a>
      <a class="hct-btn hct-btn--hiro" href="https://getambassador.com/ambassador-hiroai?hsLang=en">Meet HiroAI</a>
      <a class="hct-btn hct-btn--see" href="https://getambassador.com/platform?hsLang=en">See how it works</a>
    </div>
  </div>
</section>




<style>
.amb-trustbar {
  background: #ffffff;
  border-top: 1px solid #E8EDF5;
  border-bottom: 1px solid #E8EDF5;
  padding: 32px 0;
  overflow: hidden;
  font-family: 'DM Sans', Arial, Helvetica, sans-serif;
}
.amb-trustbar__label {
  text-align: center;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #606F9F;
  margin: 0 0 24px;
}
.amb-trustbar__wrap {
  overflow: hidden;
  -webkit-mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);
          mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);
}
@keyframes amb-trustbar-marquee {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.amb-trustbar__track {
  display: flex;
  width: max-content;
  align-items: center;
  gap: 4rem;
  animation: amb-trustbar-marquee 35s linear infinite;
  will-change: transform;
}
.amb-trustbar__track:hover {
  animation-play-state: paused;
}
.amb-trustbar__item {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 150px;
  height: 44px;
  flex-shrink: 0;
}
.amb-trustbar__item img {
  max-height: 100%;
  max-width: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  filter: grayscale(100%) opacity(0.55);
  transition: filter 300ms ease;
  display: block;
}
.amb-trustbar__item img:hover {
  filter: grayscale(0%) opacity(1);
}
@media (prefers-reduced-motion: reduce) {
  .amb-trustbar__track {
    animation: none;
    transform: none;
  }
}
</style>

<section class="amb-trustbar" aria-label="Trusted by">
  <p class="amb-trustbar__label">Trusted by leading enterprise growth teams</p>
  <div class="amb-trustbar__wrap">
    <div class="amb-trustbar__track" aria-hidden="true">
      
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hs-fs/hubfs/Sparklight.webp?width=145&amp;height=43" alt="Sparklight" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hs-fs/hubfs/logo-astound-vertical.webp?width=145&amp;height=80" alt="Astound" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hubfs/visible-by-verizon-logo.svg" alt="Visible by Verizon" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hs-fs/hubfs/CIBC_logo_2021.webp?width=145&amp;height=37" alt="CIBC" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hubfs/rippling.svg" alt="Rippling" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hubfs/Kaplan_Logo.svg" alt="Kaplan" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hubfs/gas-south.svg" alt="Gas South" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hs-fs/hubfs/Rover.webp?width=145&amp;height=49" alt="Rover" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hubfs/AuPairCare-logo.svg" alt="AuPairCare" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hs-fs/hubfs/aceable-logo.webp?width=145&amp;height=29" alt="Aceable" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hs-fs/hubfs/mcmakler-1024x176.webp?width=145&amp;height=25" alt="McMakler" loading="lazy"></span>
      
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hs-fs/hubfs/Sparklight.webp?width=145&amp;height=43" alt="Sparklight" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hs-fs/hubfs/logo-astound-vertical.webp?width=145&amp;height=80" alt="Astound" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hubfs/visible-by-verizon-logo.svg" alt="Visible by Verizon" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hs-fs/hubfs/CIBC_logo_2021.webp?width=145&amp;height=37" alt="CIBC" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hubfs/rippling.svg" alt="Rippling" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hubfs/Kaplan_Logo.svg" alt="Kaplan" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hubfs/gas-south.svg" alt="Gas South" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hs-fs/hubfs/Rover.webp?width=145&amp;height=49" alt="Rover" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hubfs/AuPairCare-logo.svg" alt="AuPairCare" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hs-fs/hubfs/aceable-logo.webp?width=145&amp;height=29" alt="Aceable" loading="lazy"></span>
      <span class="amb-trustbar__item"><img src="https://getambassador.com/hs-fs/hubfs/mcmakler-1024x176.webp?width=145&amp;height=25" alt="McMakler" loading="lazy"></span>
    </div>
  </div>
</section>

<!-- ============== ARCHITECTURE ============== -->
<section class="architecture" id="architecture">
  <div class="arch-inner">
    <div class="reveal">
      <div class="arch-eyebrow">The system underneath</div>
      <h2 class="arch-headline">Nine Engines.<br>One Closed Loop.</h2>
      <p class="arch-subheadline">One Operating System.</p>
      <p class="arch-sub">
        Most platforms are stitched together. HiroAI orchestrates one. Every signal connects to revenue. Every action runs through the same node. The architecture is the product.
      </p>
    </div>

    <div class="arch-board reveal delay-2">

      <!-- Orchestrator bar -->
      <div class="arch-orch is-empty" id="arch-orch">
        <span class="arch-orch-label">Hiro Orchestration</span>
        <span class="arch-orch-detail">Reads. Predicts. Executes. Learns.</span>
      </div>

      <!-- Three outcome columns -->
      <div class="arch-cols">
        <article class="arch-col arch-col--grow is-empty" data-engine="grow">
            <header class="arch-col-head">
            <h3 class="arch-col-h">Grow</h3>
            <p class="arch-col-sub">Acquire at lower CAC.</p>
          </header>
          <ul class="arch-engines">
            <li>
              <span class="arch-engine-name">Advocacy</span>
              <p class="arch-engine-desc">Happy customers to active promoters.</p>
            </li>
            <li>
              <span class="arch-engine-name">Prospect</span>
              <p class="arch-engine-desc">Net-new from conversion patterns.</p>
            </li>
            <li>
              <span class="arch-engine-name">Programmatic</span>
              <p class="arch-engine-desc">DSP: display, video, CTV, audio.</p>
            </li>
          </ul>
        </article>

        <article class="arch-col arch-col--keep is-empty" data-engine="keep">
            <header class="arch-col-head">
            <h3 class="arch-col-h">Keep</h3>
            <p class="arch-col-sub">Higher LTV. Lower churn.</p>
          </header>
          <ul class="arch-engines">
            <li>
              <span class="arch-engine-name">Retention</span>
              <p class="arch-engine-desc">Spot at-risk customers from signals.</p>
            </li>
            <li>
              <span class="arch-engine-name">Incentive</span>
              <p class="arch-engine-desc">Dynamic rewards tied to outcomes.</p>
            </li>
            <li>
              <span class="arch-engine-name">Communication</span>
              <p class="arch-engine-desc">Right message, channel, time.</p>
            </li>
          </ul>
        </article>

        <article class="arch-col arch-col--prove is-empty" data-engine="prove">
            <header class="arch-col-head">
            <h3 class="arch-col-h">Prove</h3>
            <p class="arch-col-sub">Every dollar accounted for.</p>
          </header>
          <ul class="arch-engines">
            <li>
              <span class="arch-engine-name">Predictive</span>
              <p class="arch-engine-desc">Forecast churn, LTV, performance.</p>
            </li>
            <li>
              <span class="arch-engine-name">Attribution</span>
              <p class="arch-engine-desc">Full-journey, cross-session tracking.</p>
            </li>
            <li>
              <span class="arch-engine-name">Finance</span>
              <p class="arch-engine-desc">Activity to revenue. CFO-grade.</p>
            </li>
          </ul>
        </article>
      </div>

      <!-- Customer Outcome Graph bar (static base layer, no cyclone) -->
      <div class="arch-graph">
        <span class="arch-graph-label">Customer Outcome Graph</span>
        <span class="arch-graph-detail">One subscriber record. Every engine reads. Every engine writes.</span>
      </div>

    </div>
  </div>
</section>

<!-- ============== HIRO IN ACTION ==============
     Three pillars side by side, all playing simultaneously on a synchronized
     10-second loop. GROW (left, green), KEEP (middle, amber), PROVE (right,
     blue), each with its own pillar-color glow. Same beats per column:
     prompt -> plan -> approve -> result. Auto-plays on scroll into view,
     pauses out of view, freezes for users with reduced motion. -->
<section class="hiro-action" id="hiro-in-action" aria-labelledby="hiro-action-title">
  <div class="hiro-action-inner">
    <div class="reveal">
      <div class="hiro-action-eyebrow">HiroAI in action</div>
      <h2 class="hiro-action-headline" id="hiro-action-title">Plain language. Real changes.</h2>
      <p class="hiro-action-subheadline">Live across the platform.</p>
      <p class="hiro-action-sub">
        Three widgets, three prompts. Plan, approve, ship. No code, no tickets, no queue. HiroAI moves at the speed of intent.
      </p>
    </div>

    <div class="hiro-action-stage reveal delay-2" role="img" aria-labelledby="hiro-action-title hiro-action-desc">
      <div class="hiro-action-stage-badge">We ship weekly · 95% Claude Code</div>
      <span id="hiro-action-desc" class="visually-hidden">A 10-second looping animation showing HiroAI Widget Agent working simultaneously across all three Ambassador pillars. On the left under GROW, a user prompts HiroAI to retarget a referral signup form toward bill-saving customers and HiroAI rewrites the headline and copy. In the middle under KEEP, a user provides hex brand colors and HiroAI recolors the loyalty enrollment buttons. On the right under PROVE, a user asks to fix uneven columns on an NPS feedback widget and HiroAI snaps the layout into a clean 11-column grid. All three columns animate in sync: prompts type in, plan cards slide up, approve buttons pulse, widgets transform.</span>

      <div class="hiro-pillars">

        <!-- GROW (left, green) — referral signup copy rewrite -->
        <div class="hiro-pillar pillar-grow" aria-hidden="true">
          <span class="pillar-chip"><span class="chip-dot"></span>GROW · Referral signup</span>

          <div class="widget-canvas">
            <div class="widget-mock widget-before">
              <div class="widget-mock-eyebrow">Refer a friend</div>
              <h3 class="widget-mock-h">Join our referral program</h3>
              <p class="widget-mock-p">Earn rewards when your friends sign up.</p>
              <div class="widget-mock-field"><label>Email</label><input placeholder="[email protected]" disabled></div>
              <div class="widget-mock-field"><label>Phone</label><input placeholder="(555) 555-5555" disabled></div>
              <button class="widget-mock-cta" type="button" tabindex="-1">Sign up</button>
            </div>
            <div class="widget-mock widget-after">
              <div class="widget-mock-eyebrow">Save on your next bill</div>
              <h3 class="widget-mock-h">Share with friends. Save together.</h3>
              <p class="widget-mock-p">They save $20. You get $20 back. Every referral, every month.</p>
              <div class="widget-mock-field"><label>Your email</label><input placeholder="[email protected]" disabled></div>
              <div class="widget-mock-field"><label>Your phone</label><input placeholder="(555) 555-5555" disabled></div>
              <button class="widget-mock-cta" type="button" tabindex="-1">Start saving</button>
            </div>
          </div>

          <div class="chat-strip">
            <div class="chat-prompt">
              <div class="chat-prompt-bubble">
                <span class="chat-prompt-text">Make this form target bill-saving customers</span>
              </div>
            </div>
            <div class="chat-plan">
              <div class="chat-plan-header">Plan</div>
              <div class="chat-plan-step"><span class="step-arrow">→</span> Rewrite headline for bill savings</div>
              <div class="chat-plan-step"><span class="step-arrow">→</span> Update sub-headline value prop</div>
            </div>
            <div class="chat-actions">
              <button class="chat-approve" type="button" tabindex="-1">Approve</button>
              <button class="chat-reject" type="button" tabindex="-1">Reject</button>
            </div>
            <div class="chat-done"><span class="done-check">✓</span>Shipped to live widget</div>
          </div>
        </div>

        <!-- KEEP (middle, amber) — loyalty enrollment recolor -->
        <div class="hiro-pillar pillar-keep" aria-hidden="true">
          <span class="pillar-chip"><span class="chip-dot"></span>KEEP · Loyalty enrollment</span>

          <div class="widget-canvas">
            <div class="widget-mock widget-before">
              <div class="widget-mock-eyebrow">Loyalty rewards</div>
              <h3 class="widget-mock-h">Welcome to the program</h3>
              <p class="widget-mock-p">Earn points on every purchase. Redeem for exclusive rewards.</p>
              <div class="widget-mock-perks">
                <div class="widget-mock-perk"><span class="perk-icon">★</span>Earn 5x points on signup</div>
                <div class="widget-mock-perk"><span class="perk-icon">◆</span>Member-only sales access</div>
              </div>
              <div class="widget-mock-cta-row">
                <button class="widget-mock-cta-2 widget-mock-cta-default" type="button" tabindex="-1">Join now</button>
                <button class="widget-mock-cta-2 widget-mock-cta-2-default" type="button" tabindex="-1">Learn more</button>
              </div>
            </div>
            <div class="widget-mock widget-after">
              <div class="widget-mock-eyebrow">Loyalty rewards</div>
              <h3 class="widget-mock-h">Welcome to the program</h3>
              <p class="widget-mock-p">Earn points on every purchase. Redeem for exclusive rewards.</p>
              <div class="widget-mock-perks">
                <div class="widget-mock-perk"><span class="perk-icon">★</span>Earn 5x points on signup</div>
                <div class="widget-mock-perk"><span class="perk-icon">◆</span>Member-only sales access</div>
              </div>
              <div class="widget-mock-cta-row">
                <button class="widget-mock-cta-2 widget-mock-cta-brand" type="button" tabindex="-1">Join now</button>
                <button class="widget-mock-cta-2 widget-mock-cta-2-brand" type="button" tabindex="-1">Learn more</button>
              </div>
            </div>
          </div>

          <div class="chat-strip">
            <div class="chat-prompt">
              <div class="chat-prompt-bubble">
                <span class="chat-prompt-text">Apply brand colors to the buttons: #1A2B3C and #FF6600</span>
              </div>
            </div>
            <div class="chat-plan">
              <div class="chat-plan-header">Plan</div>
              <div class="chat-plan-step"><span class="step-arrow">→</span> Set primary CTA to #1A2B3C</div>
              <div class="chat-plan-step"><span class="step-arrow">→</span> Set secondary accent to #FF6600</div>
            </div>
            <div class="chat-actions">
              <button class="chat-approve" type="button" tabindex="-1">Approve</button>
              <button class="chat-reject" type="button" tabindex="-1">Reject</button>
            </div>
            <div class="chat-done"><span class="done-check">✓</span>Brand colors applied</div>
          </div>
        </div>

        <!-- PROVE (right, blue) — NPS column alignment -->
        <div class="hiro-pillar pillar-prove" aria-hidden="true">
          <span class="pillar-chip"><span class="chip-dot"></span>PROVE · NPS feedback</span>

          <div class="widget-canvas">
            <div class="widget-mock widget-before">
              <div class="widget-mock-eyebrow">Feedback</div>
              <h3 class="widget-mock-h">How likely are you to recommend us?</h3>
              <p class="widget-mock-p">0 = Not likely · 10 = Extremely likely</p>
              <div class="nps-row nps-row-uneven">
                <button class="nps-btn" type="button" tabindex="-1">0</button>
                <button class="nps-btn" type="button" tabindex="-1">1</button>
                <button class="nps-btn" type="button" tabindex="-1">2</button>
                <button class="nps-btn" type="button" tabindex="-1">3</button>
                <button class="nps-btn" type="button" tabindex="-1">4</button>
                <button class="nps-btn" type="button" tabindex="-1">5</button>
                <button class="nps-btn" type="button" tabindex="-1">6</button>
                <button class="nps-btn" type="button" tabindex="-1">7</button>
                <button class="nps-btn" type="button" tabindex="-1">8</button>
                <button class="nps-btn" type="button" tabindex="-1">9</button>
                <button class="nps-btn" type="button" tabindex="-1">10</button>
              </div>
            </div>
            <div class="widget-mock widget-after">
              <div class="widget-mock-eyebrow">Feedback</div>
              <h3 class="widget-mock-h">How likely are you to recommend us?</h3>
              <p class="widget-mock-p">0 = Not likely · 10 = Extremely likely</p>
              <div class="nps-row nps-row-even">
                <button class="nps-btn" type="button" tabindex="-1">0</button>
                <button class="nps-btn" type="button" tabindex="-1">1</button>
                <button class="nps-btn" type="button" tabindex="-1">2</button>
                <button class="nps-btn" type="button" tabindex="-1">3</button>
                <button class="nps-btn" type="button" tabindex="-1">4</button>
                <button class="nps-btn" type="button" tabindex="-1">5</button>
                <button class="nps-btn" type="button" tabindex="-1">6</button>
                <button class="nps-btn" type="button" tabindex="-1">7</button>
                <button class="nps-btn" type="button" tabindex="-1">8</button>
                <button class="nps-btn" type="button" tabindex="-1">9</button>
                <button class="nps-btn" type="button" tabindex="-1">10</button>
              </div>
            </div>
          </div>

          <div class="chat-strip">
            <div class="chat-prompt">
              <div class="chat-prompt-bubble">
                <span class="chat-prompt-text">The columns look uneven, fix them</span>
              </div>
            </div>
            <div class="chat-plan">
              <div class="chat-plan-header">Plan</div>
              <div class="chat-plan-step"><span class="step-arrow">→</span> Equalize button widths</div>
              <div class="chat-plan-step"><span class="step-arrow">→</span> Snap to clean 11-column grid</div>
            </div>
            <div class="chat-actions">
              <button class="chat-approve" type="button" tabindex="-1">Approve</button>
              <button class="chat-reject" type="button" tabindex="-1">Reject</button>
            </div>
            <div class="chat-done"><span class="done-check">✓</span>Layout aligned</div>
          </div>
        </div>

      </div>
    </div>
  </div>
</section>

<!-- ============== LATEST FROM AMBASSADOR — news grid ==============
     Anthropic-style card grid. Three latest blog posts surfaced from the
     Ambassador feed. Cards lift on hover (Pattern 1 .de-hover from the
     hover-motion skill). Each card has a category pill, headline, dek,
     date row, and primary CTA. -->
<section class="news" id="news">
  <div class="news-inner">
    <div class="news-header">
      <h2 class="news-title">Latest from Ambassador</h2>
      <a href="/blog?hsLang=en" class="news-all">View all posts <span aria-hidden="true">→</span></a>
    </div>

    <div class="news-grid">

      
      
      
      
        
        
        <article class="news-card de-hover reveal">
          <a href="https://getambassador.com/blog/the-signals-that-matter-most-show-up-after-the-sale?hsLang=en" class="news-card-link" aria-label="Read: The Signals That Matter Most Show Up After the Sale">
            <div class="news-card-top">
              
                <div class="news-eyebrow news-eyebrow--company">Brand Ambassador</div>
              
              <h3 class="news-card-title">The Signals That Matter Most Show Up After the Sale</h3>
              <p class="news-card-dek">By Geoff McDonald, CEO, Ambassador</p>
              <span class="news-inline-cta">Read the post <span aria-hidden="true">→</span></span>
            </div>
            <div class="news-card-meta">
              <div class="news-meta-row">
                <span class="news-meta-label">Date</span>
                
                <span class="news-meta-value">October 13, 2026</span>
              </div>
              
              <div class="news-meta-row">
                <span class="news-meta-label">Category</span>
                <span class="news-meta-value">Brand Ambassador</span>
              </div>
              
            </div>
            <div class="news-card-cta">
              <span class="news-pill">Read the post <span aria-hidden="true">→</span></span>
            </div>
          </a>
        </article>
      
        
        
        <article class="news-card de-hover reveal delay-1">
          <a href="https://getambassador.com/blog/money-got-expensive.-dont-cut-the-customers-you-already-paid-for?hsLang=en" class="news-card-link" aria-label="Read: Money Got Expensive. Don't Cut the Customers You Already Paid For.">
            <div class="news-card-top">
              
              <h3 class="news-card-title">Money Got Expensive. Don't Cut the Customers You Already Paid For.</h3>
              <p class="news-card-dek">By Geoff McDonald, CEO, Ambassador</p>
              <span class="news-inline-cta">Read the post <span aria-hidden="true">→</span></span>
            </div>
            <div class="news-card-meta">
              <div class="news-meta-row">
                <span class="news-meta-label">Date</span>
                
                <span class="news-meta-value">October 6, 2026</span>
              </div>
              
            </div>
            <div class="news-card-cta">
              <span class="news-pill">Read the post <span aria-hidden="true">→</span></span>
            </div>
          </a>
        </article>
      
        
        
        <article class="news-card de-hover reveal delay-2">
          <a href="https://getambassador.com/blog/signals-got-a-5b-price-tag.-yours-are-sitting-in-a-report?hsLang=en" class="news-card-link" aria-label="Read: Signals Got a $5B Price Tag. Yours Are Sitting in a Report.">
            <div class="news-card-top">
              
                <div class="news-eyebrow news-eyebrow--company">Ambassador 3.0</div>
              
              <h3 class="news-card-title">Signals Got a $5B Price Tag. Yours Are Sitting in a Report.</h3>
              <p class="news-card-dek">-By Geoff McDonald, CEO, Ambassador</p>
              <span class="news-inline-cta">Read the post <span aria-hidden="true">→</span></span>
            </div>
            <div class="news-card-meta">
              <div class="news-meta-row">
                <span class="news-meta-label">Date</span>
                
                <span class="news-meta-value">September 28, 2026</span>
              </div>
              
              <div class="news-meta-row">
                <span class="news-meta-label">Category</span>
                <span class="news-meta-value">Ambassador 3.0</span>
              </div>
              
            </div>
            <div class="news-card-cta">
              <span class="news-pill">Read the post <span aria-hidden="true">→</span></span>
            </div>
          </a>
        </article>
      

    </div>
  </div>
</section>

<!-- ============== FAQ — AEO answers block ==============
     Shared partial: section styling, accordion behavior, and the FAQPage
     JSON-LD are all rendered by partials/faq.html from faq_items below.
     Edit the items here; the schema mirrors the visible copy automatically. -->










<style>
  .faq {
    /* Theme accent for the hover/open item border. Defaults to blue/500;
       pages pass faq_accent to match their color theme (see header comment). */
    --faq-accent: #1C48D9;
    background: #FFFFFF;
    padding: 112px 48px;
    border-top: 1px solid #CDCFD6;
    font-family: 'DM Sans', sans-serif;
  }
  .faq-inner {
    max-width: 880px;
    margin: 0 auto;
  }
  .faq-header {
    text-align: center;
    margin-bottom: 52px;
  }
  .faq-title {
    font-size: clamp(28px, 3vw, 40px);
    font-weight: 700;
    letter-spacing: -0.02em;
    color: #0F1F3D;
    margin: 0 0 14px;
  }
  .faq-dek {
    font-size: 18px;
    line-height: 1.7;
    font-weight: 500;
    color: #324278;
    margin: 0;
  }
  .faq-list {
    /* Lets block-size animate to/from `auto` (Chrome 129+; elsewhere the
       declaration is ignored and open/close falls back to instant). */
    interpolate-size: allow-keywords;
  }
  .faq-item {
    background: #FFFFFF;
    border: 1px solid #CDCFD6;
    border-radius: 14px;
    margin-bottom: 12px;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
  }
  .faq-item:hover,
  .faq-item[open] {
    border-color: var(--faq-accent);
    box-shadow: 0 1px 2px rgba(15, 31, 61, 0.04);
  }
  /* Smooth expand/collapse so opening an answer doesn't snap the rest of
     the page down. Native ::details-content animation; browsers without
     support keep the instant toggle. */
  .faq-item::details-content {
    block-size: 0;
    overflow: clip;
    transition: block-size 0.3s ease, content-visibility 0.3s allow-discrete;
  }
  .faq-item[open]::details-content {
    block-size: auto;
  }
  .faq-q {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    cursor: pointer;
    list-style: none;
    padding: 21px 26px;
    font-size: 17px;
    font-weight: 600;
    line-height: 1.4;
    color: #0F1F3D;
  }
  .faq-q::-webkit-details-marker { display: none; }
  .faq-q::after {
    content: "";
    flex: none;
    width: 9px;
    height: 9px;
    margin-top: -4px;
    border-right: 2px solid #606F9F;
    border-bottom: 2px solid #606F9F;
    transform: rotate(45deg);
    transition: transform 0.2s ease, margin-top 0.2s ease;
  }
  .faq-item[open] .faq-q::after {
    transform: rotate(225deg);
    margin-top: 4px;
  }
  .faq-a {
    padding: 0 26px 24px;
  }
  .faq-a p {
    font-size: 15.5px;
    line-height: 1.7;
    font-weight: 400;
    color: #324278;
    margin: 0;
  }
  .faq-cta {
    text-align: center;
    margin-top: 48px;
  }
  /* Blue, not purple -- purple is HiroAI-only. Every link state is pinned
     because HubSpot's global anchor CSS recolors and underlines on
     hover/focus/active otherwise. */
  .faq-demo-btn,
  .faq-demo-btn:link,
  .faq-demo-btn:visited,
  .faq-demo-btn:hover,
  .faq-demo-btn:focus,
  .faq-demo-btn:active {
    color: #FFFFFF;
    text-decoration: none;
  }
  .faq-demo-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #1A3BAE;
    border: 1px solid #1A3BAE;
    padding: 16px 32px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 16px;
    transition: background-color 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease, transform 0.25s ease;
  }
  .faq-demo-btn:hover {
    background: #11215B;
    border-color: #11215B;
    transform: translateY(-2px);
    box-shadow: 0 4px 14px rgba(26, 59, 174, 0.28);
  }
  .faq-demo-btn:focus-visible {
    outline: 2px solid #3B63E8;
    outline-offset: 2px;
  }
  @media (max-width: 640px) {
    .faq { padding: 80px 24px; }
    .faq-q { padding: 18px 20px; font-size: 16px; }
    .faq-a { padding: 0 20px 20px; }
  }
</style>

<section class="faq" id="faq">
  <div class="faq-inner">
    <div class="faq-header reveal">
      <h2 class="faq-title">Frequently asked questions</h2>
      <p class="faq-dek">Straight answers before you talk to us.</p>
    </div>

    <div class="faq-list reveal d1">
      
      <details class="faq-item" name="faq">
        <summary class="faq-q">What is Ambassador?</summary>
        <div class="faq-a">
          <p>Ambassador is the Customer Lifecycle Operating System. It runs advocacy, referral, affiliate, influencer, and loyalty programs as one system, orchestrated by HiroAI across nine engines under three pillars: GROW, KEEP, and PROVE. Instead of stitching together a tool for each program, you run every customer program on one data model, so every signal connects to revenue you can prove.</p>
        </div>
      </details>
      
      <details class="faq-item" name="faq">
        <summary class="faq-q">Is Ambassador an affiliate network or a creator marketplace?</summary>
        <div class="faq-a">
          <p>No. Ambassador is not a network or a marketplace. It does not maintain a pool of publishers or creators for you to browse and recruit. Ambassador is the operating system you run your own programs on, covering tracking, attribution, communication, rewards, payouts, and reporting across affiliate, referral, advocacy, and loyalty. If you are looking for a marketplace to discover new partners, that is a different category of tool. Ambassador is what you use to manage, attribute, and pay the partners you bring in, with durable cross-session attribution instead of a 30-day cookie.</p>
        </div>
      </details>
      
      <details class="faq-item" name="faq">
        <summary class="faq-q">Does Ambassador find or recruit creators and affiliates for me?</summary>
        <div class="faq-a">
          <p>No. Ambassador does not source or discover creators and affiliates. Sourcing is a discovery problem, solved by influencer marketplaces and creator-discovery tools. Ambassador is the system of record for everything that happens once a partner joins your program: branded sign-up and onboarding, tracking links, performance reporting, multi-touch attribution, flexible commissions and rewards, payouts, and tax compliance. Many teams pair a discovery tool for finding partners with Ambassador for running, attributing, and paying them in one place.</p>
        </div>
      </details>
      
      <details class="faq-item" name="faq">
        <summary class="faq-q">How is Ambassador different from point tools like Impact, PartnerStack, or Refersion?</summary>
        <div class="faq-a">
          <p>Most affiliate and partner tools are networks or single-program point solutions connected by tracking pixels. Ambassador is built as one operating system, and the difference shows up in three places. Attribution is multi-touch and cross-device rather than last-click cookie. Programs share one data model, so affiliate, referral, loyalty, and advocacy compound instead of sitting in silos. Reporting is finance-grade, so your CFO gets one number to defend. You are not buying a tool per program. You are running every program on one platform, with enterprise security built in: SOC 2 Type II, GDPR, CCPA, and PCI DSS.</p>
        </div>
      </details>
      
      <details class="faq-item" name="faq">
        <summary class="faq-q">What programs can I run on Ambassador?</summary>
        <div class="faq-a">
          <p>One platform runs them all: advocacy, referral, affiliate, influencer, and loyalty, plus the rewards and incentives that power them. Because every program runs on the same data model and is orchestrated by HiroAI, a loyalty tier upgrade can trigger a referral invite, and an at-risk customer can pause outreach and route to a save campaign automatically. Your programs stop being silos and start compounding.</p>
        </div>
      </details>
      
      <details class="faq-item" name="faq">
        <summary class="faq-q">Who is Ambassador for?</summary>
        <div class="faq-a">
          <p>Ambassador is built for enterprise and upper mid-market revenue teams that need their customer programs to be measurable and defensible to the board. Customers range from high-growth companies launching their first structured program to global brands running multi-program, multi-region operations across FinTech, Telecom, and SaaS. If your programs have to be attributed, automated, and reportable, you are the fit. If you need a self-serve tool to find a handful of creators, you are not, and we will point you to the right category.</p>
        </div>
      </details>
      
      <details class="faq-item" name="faq">
        <summary class="faq-q">How does Ambassador prove ROI?</summary>
        <div class="faq-a">
          <p>Ambassador connects every customer action to revenue through its PROVE pillar: Predictive, Attribution, and Finance. Attribution traces the full path from first touch to conversion across sessions and devices. Finance turns that activity into CFO-grade reporting with audit trails. The result is one defensible number for what your programs produced, not engagement metrics that fall apart in a budget review. Programs on Ambassador target 3:1 to 5:1 ROI, against $2.4B+ in revenue already attributed across the platform.</p>
        </div>
      </details>
      
      <details class="faq-item" name="faq">
        <summary class="faq-q">How is Ambassador priced?</summary>
        <div class="faq-a">
          <p>Ambassador is priced to the return it delivers, not per conversion or per payout. Pricing is scoped to your program goals, the engines you activate, and the size of your customer base. Most scoping conversations take about 30 minutes and end with an ROI model for your business. The starting question is what your programs return, not what the software costs.</p>
        </div>
      </details>
      
    </div>

    
    <div class="faq-cta reveal d2">
      <a href="/get-a-demo/?hsLang=en" class="faq-demo-btn">Request Enterprise Demo <span aria-hidden="true">→</span></a>
    </div>
    
  </div>
</section>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is Ambassador?",
      "acceptedAnswer": { "@type": "Answer", "text": "Ambassador is the Customer Lifecycle Operating System. It runs advocacy, referral, affiliate, influencer, and loyalty programs as one system, orchestrated by HiroAI across nine engines under three pillars: GROW, KEEP, and PROVE. Instead of stitching together a tool for each program, you run every customer program on one data model, so every signal connects to revenue you can prove." }
    },
    {
      "@type": "Question",
      "name": "Is Ambassador an affiliate network or a creator marketplace?",
      "acceptedAnswer": { "@type": "Answer", "text": "No. Ambassador is not a network or a marketplace. It does not maintain a pool of publishers or creators for you to browse and recruit. Ambassador is the operating system you run your own programs on, covering tracking, attribution, communication, rewards, payouts, and reporting across affiliate, referral, advocacy, and loyalty. If you are looking for a marketplace to discover new partners, that is a different category of tool. Ambassador is what you use to manage, attribute, and pay the partners you bring in, with durable cross-session attribution instead of a 30-day cookie." }
    },
    {
      "@type": "Question",
      "name": "Does Ambassador find or recruit creators and affiliates for me?",
      "acceptedAnswer": { "@type": "Answer", "text": "No. Ambassador does not source or discover creators and affiliates. Sourcing is a discovery problem, solved by influencer marketplaces and creator-discovery tools. Ambassador is the system of record for everything that happens once a partner joins your program: branded sign-up and onboarding, tracking links, performance reporting, multi-touch attribution, flexible commissions and rewards, payouts, and tax compliance. Many teams pair a discovery tool for finding partners with Ambassador for running, attributing, and paying them in one place." }
    },
    {
      "@type": "Question",
      "name": "How is Ambassador different from point tools like Impact, PartnerStack, or Refersion?",
      "acceptedAnswer": { "@type": "Answer", "text": "Most affiliate and partner tools are networks or single-program point solutions connected by tracking pixels. Ambassador is built as one operating system, and the difference shows up in three places. Attribution is multi-touch and cross-device rather than last-click cookie. Programs share one data model, so affiliate, referral, loyalty, and advocacy compound instead of sitting in silos. Reporting is finance-grade, so your CFO gets one number to defend. You are not buying a tool per program. You are running every program on one platform, with enterprise security built in: SOC 2 Type II, GDPR, CCPA, and PCI DSS." }
    },
    {
      "@type": "Question",
      "name": "What programs can I run on Ambassador?",
      "acceptedAnswer": { "@type": "Answer", "text": "One platform runs them all: advocacy, referral, affiliate, influencer, and loyalty, plus the rewards and incentives that power them. Because every program runs on the same data model and is orchestrated by HiroAI, a loyalty tier upgrade can trigger a referral invite, and an at-risk customer can pause outreach and route to a save campaign automatically. Your programs stop being silos and start compounding." }
    },
    {
      "@type": "Question",
      "name": "Who is Ambassador for?",
      "acceptedAnswer": { "@type": "Answer", "text": "Ambassador is built for enterprise and upper mid-market revenue teams that need their customer programs to be measurable and defensible to the board. Customers range from high-growth companies launching their first structured program to global brands running multi-program, multi-region operations across FinTech, Telecom, and SaaS. If your programs have to be attributed, automated, and reportable, you are the fit. If you need a self-serve tool to find a handful of creators, you are not, and we will point you to the right category." }
    },
    {
      "@type": "Question",
      "name": "How does Ambassador prove ROI?",
      "acceptedAnswer": { "@type": "Answer", "text": "Ambassador connects every customer action to revenue through its PROVE pillar: Predictive, Attribution, and Finance. Attribution traces the full path from first touch to conversion across sessions and devices. Finance turns that activity into CFO-grade reporting with audit trails. The result is one defensible number for what your programs produced, not engagement metrics that fall apart in a budget review. Programs on Ambassador target 3:1 to 5:1 ROI, against $2.4B+ in revenue already attributed across the platform." }
    },
    {
      "@type": "Question",
      "name": "How is Ambassador priced?",
      "acceptedAnswer": { "@type": "Answer", "text": "Ambassador is priced to the return it delivers, not per conversion or per payout. Pricing is scoped to your program goals, the engines you activate, and the size of your customer base. Most scoping conversations take about 30 minutes and end with an ROI model for your business. The starting question is what your programs return, not what the software costs." }
    }
  ]
}
</script>


<!-- ============== TRUST & COMPLIANCE — enterprise security badges ==============
     Five compliance badges in Ambassador's visual language: each badge is a
     central engine-accent disc with a halo of small satellite nodes. Hover lifts
     via Pattern 1 .de-hover. Capstone trust signal before the footer. -->
<section class="trust" id="trust">
  <div class="trust-inner">
    <div class="trust-header">
      <div class="trust-eyebrow">Enterprise security &amp; compliance</div>
      <h2 class="trust-title">Audited. Documented. Defensible.</h2>
      <p class="trust-dek">
        Your security team gets what they need so the deal keeps moving.
      </p>
    </div>

    <!-- Compliance badge strip — official Vanta-issued artwork served from
         /images/trust-badges/. Each badge links to the Trust Center detail page.
         File-based (not inlined) so each SVG's filter IDs stay scoped. -->
    <ul class="trust-strip" role="list">
      <li><a class="trust-badge" href="/security?hsLang=en" aria-label="SOC 2 Type II">
        <img src="https://getambassador.com/hs-fs/hubfs/raw_assets/public/ambassador-rebrand-theme/images/trust-badges/soc2.png?width=96&amp;height=96&amp;name=soc2.png" alt="SOC 2 Type II" width="96" height="96" loading="lazy" srcset="https://getambassador.com/hs-fs/hubfs/raw_assets/public/ambassador-rebrand-theme/images/trust-badges/soc2.png?width=48&amp;height=48&amp;name=soc2.png 48w, https://getambassador.com/hs-fs/hubfs/raw_assets/public/ambassador-rebrand-theme/images/trust-badges/soc2.png?width=96&amp;height=96&amp;name=soc2.png 96w, https://getambassador.com/hs-fs/hubfs/raw_assets/public/ambassador-rebrand-theme/images/trust-badges/soc2.png?width=144&amp;height=144&amp;name=soc2.png 144w, https://getambassador.com/hs-fs/hubfs/raw_assets/public/ambassador-rebrand-theme/images/trust-badges/soc2.png?width=192&amp;height=192&amp;name=soc2.png 192w, https://getambassador.com/hs-fs/hubfs/raw_assets/public/ambassador-rebrand-theme/images/trust-badges/soc2.png?width=240&amp;height=240&amp;name=soc2.png 240w, https://getambassador.com/hs-fs/hubfs/raw_assets/public/ambassador-rebrand-theme/images/trust-badges/soc2.png?width=288&amp;height=288&amp;name=soc2.png 288w" sizes="(max-width: 96px) 100vw, 96px">
      </a></li>
      <li><a class="trust-badge" href="/security?hsLang=en" aria-label="PCI DSS">
        <img src="https://getambassador.com/hubfs/raw_assets/public/ambassador-rebrand-theme/images/trust-badges/pci-dss.svg" alt="PCI DSS" width="96" height="96" loading="lazy">
      </a></li>
      <li><a class="trust-badge" href="/security?hsLang=en" aria-label="GDPR">
        <img src="https://getambassador.com/hubfs/raw_assets/public/ambassador-rebrand-theme/images/trust-badges/gdpr.svg" alt="GDPR" width="96" height="96" loading="lazy">
      </a></li>
      <li><a class="trust-badge" href="/security?hsLang=en" aria-label="US Data Privacy">
        <img src="https://getambassador.com/hubfs/raw_assets/public/ambassador-rebrand-theme/images/trust-badges/us-data-privacy.svg" alt="US Data Privacy" width="96" height="96" loading="lazy">
      </a></li>
      <li><a class="trust-badge" href="/security?hsLang=en" aria-label="CCPA Compliant">
        <img src="https://getambassador.com/hubfs/raw_assets/public/ambassador-rebrand-theme/images/trust-badges/ccpa.svg" alt="CCPA Compliant" width="96" height="96" loading="lazy">
      </a></li>
    </ul>

    <a href="/security?hsLang=en" class="trust-link">Full documentation in the Trust Center <span aria-hidden="true">→</span></a>
  </div>
</section>





<script>

  // ============================================================
  // Scroll reveal observer (used for the eyebrow/headline/sub copy)
  // ============================================================
  const reveals = document.querySelectorAll('.reveal');
  const revealObserver = new IntersectionObserver((entries) => {
    entries.forEach((entry) => {
      if (entry.isIntersecting) {
        entry.target.classList.add('visible');
        revealObserver.unobserve(entry.target);
      }
    });
  }, { threshold: 0.15, rootMargin: '0px 0px -80px 0px' });
  reveals.forEach((el) => revealObserver.observe(el));

  // ============================================================
  // Architecture choreography — fires once when section enters view.
  // No perimeter cyclone; reveal is just staggered engine items + the
  // glow halo fading in via the .is-complete class. Orchestrator fades
  // in as a final beat.
  // ============================================================
  const archSection = document.querySelector('#architecture');
  let archChoreoFired = false;

  function revealArchCol(card, startDelayMs, lapMs) {
    if (!card) return;
    const items = card.querySelectorAll('.arch-engines li');
    setTimeout(() => {
      card.classList.remove('is-empty');
      card.classList.add('is-revealing');
      items.forEach((li, i) => {
        setTimeout(() => li.classList.add('is-visible'), 200 + i * 250);
      });
      setTimeout(() => {
        card.classList.remove('is-revealing');
        card.classList.add('is-complete');
      }, lapMs);
    }, startDelayMs);
  }

  function revealArchBar(bar, startDelayMs, lapMs) {
    if (!bar) return;
    setTimeout(() => {
      bar.classList.remove('is-empty');
      bar.classList.add('is-revealing');
      setTimeout(() => {
        bar.classList.remove('is-revealing');
        bar.classList.add('is-complete');
      }, lapMs);
    }, startDelayMs);
  }

  if (archSection) {
    const archObserver = new IntersectionObserver((entries) => {
      entries.forEach((entry) => {
        if (entry.isIntersecting && !archChoreoFired) {
          archChoreoFired = true;

          const grow  = archSection.querySelector('[data-engine="grow"]');
          const keep  = archSection.querySelector('[data-engine="keep"]');
          const prove = archSection.querySelector('[data-engine="prove"]');
          const orch  = archSection.querySelector('#arch-orch');

          revealArchCol(grow,    0, 1500);   // 0.0s -> 1.5s
          revealArchCol(keep,  700, 1500);   // 0.7s -> 2.2s
          revealArchCol(prove,1400, 1500);   // 1.4s -> 2.9s
          revealArchBar(orch, 2000,  800);   // 2.0s -> 2.8s
        }
      });
    }, { threshold: 0.25 });
    archObserver.observe(archSection);
  }

  /* HiroAI in action — auto-play per pillar on scroll into view. Each pillar
     activates when it enters the viewport and stays active for the rest of
     the page lifetime. CSS animations are infinite at 6s/loop so the
     prompt -> plan -> approve -> done sequence repeats on its own.
     Reduced-motion users skip activation and see the static "before" frame. */
  (function () {
    const pillars = document.querySelectorAll('.hiro-pillar');
    if (!pillars.length) return;

    const reduced = window.matchMedia('(prefers-reduced-motion: reduce)');
    if (reduced.matches) return;

    const io = new IntersectionObserver((entries) => {
      entries.forEach((entry) => {
        if (!entry.isIntersecting) return;
        // Force reflow so the class add restarts animations from 0%
        entry.target.classList.remove('is-active');
        void entry.target.offsetWidth;
        entry.target.classList.add('is-active');
        io.unobserve(entry.target);
      });
    }, { threshold: 0.25 });

    pillars.forEach((pillar) => io.observe(pillar));

    reduced.addEventListener('change', (e) => {
      if (e.matches) {
        pillars.forEach((p) => p.classList.remove('is-active'));
      }
    });
  })();

  // ============================================================
  // Hero rotator -- iOS clock-picker style. The full word list lives in the
  // DOM (see <span class="hero-rotator__track">); JS just steps an index and
  // sets translateY on the track. When we land on the duplicated first word
  // at the bottom of the track we snap back to 0 invisibly.
  // ============================================================
  (function () {
    const track = document.querySelector('[data-rotator-track]');
    if (!track) return;
    const total = track.querySelectorAll('.hero-rotator__word').length;
    if (total < 2) return;
    // total = unique words + 1 (duplicated first). We step through unique words,
    // then advance to the duplicate, then snap back to 0.
    const cycleCount = total - 1;

    const SWAP_MS = 2200;          // total time per word (dwell + slide)
    const SLIDE_MS = 850;          // must match CSS transition duration

    if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
      // Reduced-motion users: pin the first word visible, no animation.
      track.style.transition = 'none';
      return;
    }

    let i = 0;
    function tick() {
      i += 1;
      track.style.transform = `translateY(-${(i * 1.4).toFixed(3)}em)`;
      if (i === cycleCount) {
        // We just slid onto the duplicated first word at the bottom.
        // After the slide completes, kill the transition, snap to 0, restore.
        setTimeout(() => {
          track.style.transition = 'none';
          track.style.transform = 'translateY(0)';
          // force reflow so the transition reset applies before we resume
          void track.offsetWidth;
          track.style.transition = '';
          i = 0;
        }, SLIDE_MS + 20);
      }
    }
    setInterval(tick, SWAP_MS);
  })();

  // ============================================================
  // CLOS headline fit-to-width -- sizes the gradient category line to one
  // full-width line, capped at 64px so it stays prominent without going
  // overbearing. Below 760px it wraps (CSS), so we skip the fit there.
  // ============================================================
  (function initClosFit() {
    const el = document.getElementById('closLine');
    const band = document.getElementById('closBand');
    if (!el || !band) return;
    function fit() {
      if (window.innerWidth < 760) { el.style.fontSize = ''; return; }
      const avail = band.clientWidth - 48;
      el.style.fontSize = '100px';
      const w = el.getBoundingClientRect().width;
      if (w > 0) el.style.fontSize = Math.min(100 * avail / w, 64) + 'px';
    }
    window.addEventListener('resize', fit, { passive: true });
    window.addEventListener('load', fit);
    if (document.fonts && document.fonts.ready) { document.fonts.ready.then(fit); }
    fit();
  })();
</script>



      </main>

      
        <!--
  ========================================================================
  SOURCE OF TRUTH: GitHub repo ambassador-website
  Path: src/templates/partials/footer.html  (branch: main)

  DO NOT EDIT IN DESIGN MANAGER OR VIA THE CLAUDE / HUBSPOT MCP CONNECTOR.
  Changes made here will be overwritten on the next deploy from git.
  For changes, open a PR in the repo or ping Ethan in Slack.
  ========================================================================
-->
<style>
/* ============== FOOTER — compact directory style ==============
   Trimmed vertical rhythm vs the prior version (~45% less total height)
   so the footer fits in roughly one scroll. All link wiring + HubSpot
   tokens + SOC image preserved.
================================================================ */

.amb-footer {
  background: #0F1F3D;
  color: rgba(255, 255, 255, 0.65);
  padding: 40px 48px 20px;
  font-family: 'DM Sans', sans-serif;
  font-size: 13px;
  line-height: 1.5;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}
.amb-footer__grid {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.2fr 1.4fr 1fr 1fr;
  gap: 32px;
  padding-bottom: 28px;
}

/* Brand column -- left-aligned stack so the logo, tagline, socials, and
   G2 banner share one matching left edge. The tagline, socials, and G2
   banner are all width-locked to 180px. */
.amb-footer__brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.amb-footer__brand-mark {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  text-decoration: none;
}
.amb-footer__brand-mark .brand-mark {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
}
.amb-footer__brand-mark .wordmark {
  font-family: 'Raleway', sans-serif;
  font-size: 14px;
  font-weight: 800;
  letter-spacing: 0.18em;
  color: #ffffff;
}
.amb-footer__tagline {
  font-size: 12.5px;
  color: rgba(255, 255, 255, 0.55);
  line-height: 1.45;
  margin: 0 0 14px;
  width: 180px;
  max-width: 100%;
}
/* Socials row -- width-locked to match the G2 banner below so outer chip
   edges align flush with the banner's edges and the middle chip falls dead
   center. */
.amb-footer__socials {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 180px;
  max-width: 100%;
}
.amb-footer__social {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.15);
  box-shadow: 0 4px 12px rgba(0,0,0,0.25);
  overflow: hidden;
  cursor: pointer;
  text-decoration: none;
  color: #ffffff;
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease, background 0.3s ease;
}
.amb-footer__social svg {
  width: 17px;
  height: 17px;
  position: relative;
  z-index: 1;
  color: #ffffff;
}
/* Shine sweep: translucent diagonal band slides L->R on hover */
.amb-footer__social::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.18), transparent);
  transform: translateX(-100%);
  transition: transform 0.7s ease;
  pointer-events: none;
}
.amb-footer__social:hover::before { transform: translateX(100%); }
.amb-footer__social:hover { transform: translateY(-2px) scale(1.06); }
.amb-footer__social:active { transform: translateY(0) scale(0.97); }

/* LinkedIn -- muted brand blue at rest, full brand blue on hover */
.amb-footer__social--linkedin {
  background: #0F3D6B;
  border-color: rgba(10, 102, 194, 0.5);
  box-shadow: 0 4px 10px rgba(10, 102, 194, 0.18);
}
.amb-footer__social--linkedin:hover {
  background: #0A66C2;
  border-color: rgba(10, 102, 194, 0.9);
  box-shadow: 0 8px 22px rgba(10, 102, 194, 0.45);
}

/* Instagram -- desaturated diagonal gradient at rest, full saturation on hover */
.amb-footer__social--instagram {
  background: linear-gradient(45deg, #8C5A23 0%, #8A3E25 25%, #7E1B2D 50%, #74173B 75%, #6B164E 100%);
  border-color: rgba(220, 39, 67, 0.5);
  box-shadow: 0 4px 10px rgba(220, 39, 67, 0.18);
}
.amb-footer__social--instagram:hover {
  background: linear-gradient(45deg, #F09433 0%, #E6683C 25%, #DC2743 50%, #CC2366 75%, #BC1888 100%);
  border-color: rgba(220, 39, 67, 0.9);
  box-shadow: 0 8px 22px rgba(220, 39, 67, 0.45);
}

/* YouTube -- muted brand red at rest, full brand red on hover */
.amb-footer__social--youtube {
  background: #8B1010;
  border-color: rgba(255, 0, 0, 0.5);
  box-shadow: 0 4px 10px rgba(255, 0, 0, 0.18);
}
.amb-footer__social--youtube:hover {
  background: #FF0000;
  border-color: rgba(255, 0, 0, 0.9);
  box-shadow: 0 8px 22px rgba(255, 0, 0, 0.45);
}

/* Facebook -- muted brand blue at rest, full brand blue on hover */
.amb-footer__social--facebook {
  background: #123A6E;
  border-color: rgba(24, 119, 242, 0.5);
  box-shadow: 0 4px 10px rgba(24, 119, 242, 0.18);
}
.amb-footer__social--facebook:hover {
  background: #1877F2;
  border-color: rgba(24, 119, 242, 0.9);
  box-shadow: 0 8px 22px rgba(24, 119, 242, 0.45);
}

/* Review badges (G2 + Capterra) -- same glass + shine + lift as the social
   chips, tinted toward Ambassador's blue->purple gradient. Each wrapper <a>
   carries the routing to its review profile; styling does not affect the href.
   Both are width-locked to 180px so they stack flush with the socials row. */
.amb-footer__g2,
.amb-footer__capterra {
  position: relative;
  display: block;
  margin-top: 14px;
  width: 180px;
  max-width: 100%;
  border-radius: 8px;
  border: 1px solid rgba(59, 99, 232, 0.5);
  box-shadow: 0 4px 14px rgba(26, 59, 174, 0.3);
  overflow: hidden;
  text-decoration: none;
  line-height: 0;
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}
/* Capterra sits directly under the G2 banner -- tighter gap between the pair. */
.amb-footer__capterra { margin-top: 10px; }
.amb-footer__g2::before,
.amb-footer__capterra::before {
  content: '';
  position: absolute;
  inset: 0;
  /* Sits in front of the badge image (z-index: 2) so the sheen is
     visible over the banner artwork, not hidden behind it. */
  z-index: 2;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.28), transparent);
  transform: translateX(-100%);
  transition: transform 0.7s ease;
  pointer-events: none;
}
.amb-footer__g2:hover::before,
.amb-footer__capterra:hover::before { transform: translateX(100%); }
.amb-footer__g2:hover,
.amb-footer__capterra:hover {
  transform: translateY(-2px) scale(1.04);
  border-color: rgba(59, 99, 232, 0.8);
  box-shadow: 0 8px 24px rgba(26, 59, 174, 0.45);
}
.amb-footer__g2:active,
.amb-footer__capterra:active { transform: translateY(0) scale(0.98); }
.amb-footer__g2 img,
.amb-footer__capterra img {
  display: block;
  width: 100%;
  height: auto;
  position: relative;
  z-index: 1;
}

/* Link columns */
.amb-footer__col-title {
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.85);
  font-weight: 600;
  margin: 0 0 10px;
}
.amb-footer__subgroup {
  margin-bottom: 11px;
}
.amb-footer__subgroup:last-child { margin-bottom: 0; }
.amb-footer__sub-eyebrow {
  display: block;
  font-size: 9px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 4px;
}
a.amb-footer__sub-eyebrow {
  text-decoration: none;
  cursor: pointer;
  transition: text-shadow 0.2s ease, transform 0.2s ease, color 0.2s ease;
}
a.amb-footer__sub-eyebrow:hover { transform: translateX(2px); }
a.amb-footer__sub-eyebrow.is-grow:hover  { text-shadow: 0 0 12px rgba(7, 228, 158, 0.7); }
a.amb-footer__sub-eyebrow.is-keep:hover  { text-shadow: 0 0 12px rgba(247, 162, 95, 0.7); }
a.amb-footer__sub-eyebrow.is-prove:hover { text-shadow: 0 0 12px rgba(59, 99, 232, 0.8); }
.amb-footer__sub-eyebrow.is-grow        { color: #07E49E; }
.amb-footer__sub-eyebrow.is-keep        { color: #F7A25F; }
.amb-footer__sub-eyebrow.is-prove       { color: #3B63E8; }
.amb-footer__sub-eyebrow.is-overview        { color: #3B63E8; }
.amb-footer__sub-eyebrow.is-by-industry     { color: #3B63E8; }
.amb-footer__sub-eyebrow.is-by-strategy     { color: #3B63E8; }
.amb-footer__sub-eyebrow.is-by-program-type { color: #3B63E8; }

.amb-footer ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 3.5px;
}
.amb-footer ul a {
  color: rgba(255, 255, 255, 0.62);
  text-decoration: none;
  font-size: 12.5px;
  font-weight: 400;
  transition: color 0.2s ease;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.amb-footer ul a:hover { color: #ffffff; }

/* "Join our influencer program" callout pill -- green-tinted secondary action
   on the dark footer, on-dark green per brand v2.2. */
.amb-footer ul a.amb-footer__callout {
  margin-top: 4px;
  padding: 5px 10px;
  background: rgba(7, 228, 158, 0.08);
  border: 1px solid rgba(7, 228, 158, 0.35);
  border-radius: 999px;
  color: #07E49E;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
  white-space: nowrap;
  align-self: flex-start;
  transition: background 0.2s ease, border-color 0.2s ease;
}
.amb-footer ul a.amb-footer__callout::after {
  content: '\2192';
  font-weight: 700;
  transition: transform 0.18s ease;
}
.amb-footer ul a.amb-footer__callout:hover {
  color: #07E49E;
  background: rgba(7, 228, 158, 0.14);
  border-color: rgba(7, 228, 158, 0.55);
}
.amb-footer ul a.amb-footer__callout:hover::after { transform: translateX(2px); }
.amb-footer .nav-muted {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.35);
  cursor: default;
}
.amb-footer .badge-soon {
  display: inline-block;
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 2px 6px;
  border-radius: 100px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: rgba(255, 255, 255, 0.55);
}
/* "New" pill -- green tint, sits next to a real link (not a muted label). */
.amb-footer .badge-new {
  display: inline-block;
  margin-left: 6px;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 2px 6px;
  border-radius: 100px;
  background: rgba(7, 228, 158, 0.18);
  border: 1px solid rgba(7, 228, 158, 0.35);
  color: #07E49E;
}

/* Compact bottom strip: SOC + address on left, GKP centered on the page,
   legal + copyright on right. 3-column grid so GKP stays page-centered
   regardless of how wide the side groups grow. */
.amb-footer__bar {
  max-width: 1400px;
  margin: 0 auto;
  padding-top: 14px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 20px;
  font-size: 11px;
  color: rgba(255, 255, 255, 0.45);
}
.amb-footer__bar-left {
  display: flex;
  align-items: center;
  gap: 9px;
  flex-wrap: wrap;
  justify-self: start;
}
.amb-footer__location {
  color: rgba(255, 255, 255, 0.5);
}
.amb-footer__bar-center {
  display: flex;
  align-items: center;
  justify-self: center;
}
.amb-footer__bar-right {
  display: flex;
  align-items: center;
  gap: 9px;
  flex-wrap: wrap;
  justify-self: end;
}
.amb-footer__bar-right a {
  color: rgba(255, 255, 255, 0.5);
  text-decoration: none;
  transition: color 0.2s ease;
}
.amb-footer__bar-right a:hover { color: #ffffff; }
.amb-footer__bar-dot {
  color: rgba(255, 255, 255, 0.3);
  user-select: none;
}
.amb-footer__copy { color: rgba(255, 255, 255, 0.5); }
.amb-footer__tag-gkp {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  white-space: nowrap;
}
.amb-footer__tag-gkp .gkp-grow  { color: #07E49E; }
.amb-footer__tag-gkp .gkp-keep  { color: #F7A25F; }
.amb-footer__tag-gkp .gkp-prove { color: #3B63E8; }

@media (max-width: 1024px) {
  .amb-footer { padding: 32px 24px 16px; }
  .amb-footer__grid { grid-template-columns: 1fr 1fr; gap: 28px; }
}
@media (max-width: 640px) {
  .amb-footer__grid { grid-template-columns: 1fr; gap: 24px; }
  .amb-footer__bar {
    grid-template-columns: 1fr;
    justify-items: start;
    gap: 12px;
  }
  .amb-footer__bar-left,
  .amb-footer__bar-center,
  .amb-footer__bar-right { justify-self: start; width: 100%; }
}
</style>

<footer class="amb-footer">
  <div class="amb-footer__grid">

    <!-- Brand column -->
    <div class="amb-footer__brand">
      <a href="/?hsLang=en" class="amb-footer__brand-mark" aria-label="Ambassador -- Home">
        <svg class="brand-mark" viewbox="9 10 62 62" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
          <defs>
            <radialgradient id="ambHubFooter" cx="38%" cy="34%" r="62%">
              <stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.95" />
              <stop offset="22%" stop-color="#9457F7" />
              <stop offset="60%" stop-color="#5F11E4" />
              <stop offset="100%" stop-color="#3B0E8C" />
            </radialgradient>
            <filter id="ambHubFooterShadow" x="-60%" y="-60%" width="220%" height="220%">
              <fedropshadow dx="0" dy="0" stdDeviation="1.4" flood-color="#9457F7" flood-opacity="0.55" />
            </filter>
          </defs>
          <line x1="40" y1="17.6" x2="14.1" y2="62.4" stroke="rgba(196, 206, 222, 0.85)" stroke-width="1.0" stroke-linecap="round" />
          <line x1="14.1" y1="62.4" x2="65.9" y2="62.4" stroke="rgba(196, 206, 222, 0.85)" stroke-width="1.0" stroke-linecap="round" />
          <line x1="65.9" y1="62.4" x2="40" y2="17.6" stroke="rgba(196, 206, 222, 0.85)" stroke-width="1.0" stroke-linecap="round" />
          <line x1="40" y1="47.5" x2="40" y2="17.6" stroke="#9457F7" stroke-width="0.7" stroke-linecap="round" opacity="0.75" />
          <line x1="40" y1="47.5" x2="14.1" y2="62.4" stroke="#9457F7" stroke-width="0.7" stroke-linecap="round" opacity="0.75" />
          <line x1="40" y1="47.5" x2="65.9" y2="62.4" stroke="#9457F7" stroke-width="0.7" stroke-linecap="round" opacity="0.75" />
          <circle cx="40" cy="17.6" r="4.25" fill="#3B63E8" />
          <circle cx="14.1" cy="62.4" r="4.25" fill="#3B63E8" />
          <circle cx="65.9" cy="62.4" r="4.25" fill="#3B63E8" />
          <circle cx="40" cy="47.5" r="7.6" fill="url(#ambHubFooter)" filter="url(#ambHubFooterShadow)" />
        </svg>
        <span class="wordmark">AMBASSADOR</span>
      </a>

      <p class="amb-footer__tagline">The Customer Lifecycle Operating System for revenue teams that need the number to be right.</p>

      <div class="amb-footer__socials">
        <a class="amb-footer__social amb-footer__social--linkedin" href="https://www.linkedin.com/company/getambassador" aria-label="LinkedIn" target="_blank" rel="noopener">
          <svg viewbox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z" /></svg>
        </a>
        <a class="amb-footer__social amb-footer__social--instagram" href="https://www.instagram.com/get.ambassador" aria-label="Instagram" target="_blank" rel="noopener">
          <svg viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="2" width="20" height="20" rx="5" ry="5" /><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z" /><line x1="17.5" y1="6.5" x2="17.51" y2="6.5" /></svg>
        </a>
        <a class="amb-footer__social amb-footer__social--youtube" href="https://www.youtube.com/@getambassador" aria-label="YouTube" target="_blank" rel="noopener">
          <svg viewbox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z" /></svg>
        </a>
        <a class="amb-footer__social amb-footer__social--facebook" href="https://www.facebook.com/profile.php?id=61563676799402" aria-label="Facebook" target="_blank" rel="noopener">
          <svg viewbox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-5.6v-7.2h2.4l.36-2.8h-2.76V9.2c0-.81.22-1.36 1.38-1.36H16V5.33c-.26-.03-1.13-.11-2.14-.11-2.12 0-3.57 1.3-3.57 3.67v2.05H7.9v2.8h2.39V21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14z" /></svg>
        </a>
      </div>

      <!-- G2 review banner: official G2 widget. Inline <script> injects the
           schema.org rating markup into <head> for SEO rich-snippet support. -->
      <a class="amb-footer__g2" href="https://www.g2.com/products/ambassador-software/take_survey?utm_source=review-widget" title="Leave a review of Ambassador Software on G2" target="_blank" rel="noopener">
        <img alt="Review Ambassador Software on G2" src="https://www.g2.com/products/ambassador-software/widgets/stars?color=blue&amp;type=reviews" fetchpriority="high" decoding="async">
      </a>
      <script>(function(a,b,c,d){window.fetch("https://www.g2.com/products/ambassador-software/rating_schema.json").then(e=>e.json()).then(f=>{c=a.createElement(b);c.type="application/ld+json";c.text=JSON.stringify(f);d=a.getElementsByTagName(b)[0];d.parentNode.insertBefore(c,d);});})(document,"script");</script>

      <!-- Capterra review badge: official Capterra brand-asset SVG, matched to
           the G2 banner chip. Static badge, no widget script required. -->
      <a class="amb-footer__capterra" href="https://www.capterra.com/p/227998/Ambassador/reviews/" title="Read reviews of Ambassador on Capterra" target="_blank" rel="noopener">
        <img alt="Read reviews of Ambassador on Capterra" src="https://brand-assets.capterra.com/badge/8e6df12a-19f5-4315-a370-18e17c81f517.svg" loading="lazy" decoding="async" fetchpriority="low">
      </a>
    </div>

    <!-- Platform column — wiring preserved -->
    <div>
      <div class="amb-footer__col-title">Platform</div>

      <div class="amb-footer__subgroup">
        <span class="amb-footer__sub-eyebrow is-overview">Overview</span>
        <ul>
          <li><a href="/platform?hsLang=en">Platform Overview</a></li>
          <li><a href="/ambassador-hiroai?hsLang=en">HiroAI</a></li>
          <li><a href="https://getambassador.com/integrations-layer?hsLang=en">Integrations</a></li>
        </ul>
      </div>

      <div class="amb-footer__subgroup">
        <a href="#grow" class="amb-footer__sub-eyebrow is-grow">Grow</a>
        <ul>
          <li><a href="/advocacy-engine?hsLang=en">Advocacy</a></li>
          <li><a href="/prospect-intelligence-engine?hsLang=en">Prospect</a></li>
          <li><a href="/programmatic?hsLang=en">Programmatic <span class="badge-new">New</span></a></li>
        </ul>
      </div>

      <div class="amb-footer__subgroup">
        <a href="#keep" class="amb-footer__sub-eyebrow is-keep">Keep</a>
        <ul>
          <li><a href="/customer-value-engine?hsLang=en">Retention</a></li>
          <li><a href="/incentive-storefront-engine?hsLang=en">Incentive</a></li>
          <li><a href="/communication-cloud-engine?hsLang=en">Communication</a></li>
        </ul>
      </div>

      <div class="amb-footer__subgroup">
        <a href="#prove" class="amb-footer__sub-eyebrow is-prove">Prove</a>
        <ul>
          <li><a href="/predictive-recommendation-engine?hsLang=en">Predictive</a></li>
          <li><span class="nav-muted">Attribution <span class="badge-soon">Soon</span></span></li>
          <li><span class="nav-muted">Finance <span class="badge-soon">Soon</span></span></li>
        </ul>
      </div>
    </div>

    <!-- Solutions column — wiring preserved -->
    <div>
      <div class="amb-footer__col-title">Solutions</div>
      <div class="amb-footer__subgroup">
        <span class="amb-footer__sub-eyebrow is-by-industry">By Industry</span>
        <ul>
          <li><a href="https://getambassador.com/telecom?hsLang=en">Telecom</a></li>
          <li><span class="nav-muted">CPaaS <span class="badge-soon">Soon</span></span></li>
          <li><span class="nav-muted">B2B SaaS <span class="badge-soon">Soon</span></span></li>
          <li><span class="nav-muted">FinTech <span class="badge-soon">Soon</span></span></li>
        </ul>
      </div>
      <div class="amb-footer__subgroup">
        <span class="amb-footer__sub-eyebrow is-by-strategy">By Strategy</span>
        <ul>
          <li><a href="/customer-growth?hsLang=en">Customer Growth Overview</a></li>
          <li><a href="https://getambassador.com/customer-growth-strategy?hsLang=en">Build your Customer Growth Strategy</a></li>
        </ul>
      </div>
      <div class="amb-footer__subgroup">
        <span class="amb-footer__sub-eyebrow is-by-program-type">By Program Type</span>
        <ul>
          <li><a href="/solutions/program-type/affiliate-marketing-software?hsLang=en">Affiliates</a></li>
          <li><a href="/solutions/program-type/referral-marketing-software?hsLang=en">Referrals</a></li>
          <li><a href="/solutions/program-type/influencer-marketing-platform?hsLang=en">Influencers</a></li>
          <li><a href="/solutions/program-type/loyalty-program-software?hsLang=en">Loyalty</a></li>
          <li><a class="amb-footer__callout" href="/join-influencer-program?hsLang=en">Join our influencer program</a></li>
        </ul>
      </div>
    </div>

    <!-- Company column — wiring preserved -->
    <div>
      <div class="amb-footer__col-title">Company</div>
      <ul>
        <li><a href="https://getambassador.com/why-ambassador?hsLang=en">Why Ambassador</a></li>
        <li><a href="/resources?hsLang=en">Resources</a></li>
        <li><a href="/blog?hsLang=en">Blog</a></li>
        <li><a href="https://getambassador.com/pricing-ent?hsLang=en">Pricing</a></li>
        <li><a href="https://getambassador.com/get-a-demo/?hsLang=en">Get Demo</a></li>
        <li><a href="https://admin2.getambassador.com/login">Login</a></li>
        <li><a href="/legal?hsLang=en">Legal</a></li>
      </ul>
    </div>

  </div>

  <!-- Compact bar: identity cluster (location + copyright) left, GKP
       centered, legal nav right. 3-col grid keeps GKP page-centered. -->
  <div class="amb-footer__bar">
    <div class="amb-footer__bar-left">
      <span class="amb-footer__location">Seattle, WA</span>
      <span class="amb-footer__bar-dot" aria-hidden="true">·</span>
      <span class="amb-footer__copy">© 2026 Ambassador</span>
    </div>
    <div class="amb-footer__bar-center">
      <span class="amb-footer__tag-gkp">
        <span class="gkp-grow">GROW</span>. <span class="gkp-keep">KEEP</span>. <span class="gkp-prove">PROVE</span>.
      </span>
    </div>
    <div class="amb-footer__bar-right">
      <a href="/legal?hsLang=en">Legal</a>
      <span class="amb-footer__bar-dot" aria-hidden="true">·</span>
      <a href="/privacy?hsLang=en">Privacy</a>
      <span class="amb-footer__bar-dot" aria-hidden="true">·</span>
      <a href="/terms-of-service?hsLang=en">Terms</a>
      <span class="amb-footer__bar-dot" aria-hidden="true">·</span>
      <a href="/security?hsLang=en">Security</a>
    </div>
  </div>

</footer>
      
    </div>
    
    
    
<!-- HubSpot performance collection script -->
<script defer src="/hs/hsstatic/content-cwv-embed/static-1.1293/embed.js"></script>
<script src="https://getambassador.com/hubfs/hub_generated/template_assets/1/321618468555/1782829180534/template_main.min.js"></script>

<!-- Start of HubSpot Analytics Code -->
<script type="text/javascript">
var _hsq = _hsq || [];
_hsq.push(["setContentType", "standard-page"]);
_hsq.push(["setCanonicalUrl", "https:\/\/getambassador.com"]);
_hsq.push(["setPageId", "322410684105"]);
_hsq.push(["setContentMetadata", {
    "contentPageId": 322410684105,
    "legacyPageId": "322410684105",
    "contentFolderId": null,
    "contentGroupId": null,
    "abTestId": null,
    "languageVariantId": 322410684105,
    "languageCode": "en",
    
    
}]);
</script>

<script type="text/javascript" id="hs-script-loader" async defer src="/hs/scriptloader/244219189.js"></script>
<!-- End of HubSpot Analytics Code -->


<script type="text/javascript">
var hsVars = {
    render_id: "f8ce3156-d842-42b1-a056-3d0110afc441",
    ticks: 1791863909700,
    page_id: 322410684105,
    
    content_group_id: 0,
    portal_id: 244219189,
    app_hs_base_url: "https://app-na2.hubspot.com",
    cp_hs_base_url: "https://cp-na2.hubspot.com",
    language: "en",
    analytics_page_type: "standard-page",
    scp_content_type: "",
    
    analytics_page_id: "322410684105",
    category_id: 1,
    folder_id: 0,
    is_hubspot_user: false
}
</script>


<script defer src="/hs/hsstatic/HubspotToolsMenu/static-1.640/js/index.js"></script>




    <script>
    if (typeof navigator !== 'undefined' && navigator.modelContext && typeof navigator.modelContext.registerTool === 'function') {
      try {
        var _ac = new AbortController();
        window.addEventListener('pagehide', function() { _ac.abort(); }, { once: true });
        var _sig = _ac.signal;
        navigator.modelContext.registerTool({
          name: 'book_demo',
          description: 'Book a 30-minute Ambassador product demo or revenue review session.',
          inputSchema: { type: 'object', properties: {} },
          execute: async function() { return { url: 'https://getambassador.com/get-a-demo' }; }
        }, _sig);
        navigator.modelContext.registerTool({
          name: 'explore_platform',
          description: 'Navigate to a specific Ambassador platform engine or product page.',
          inputSchema: {
            type: 'object',
            properties: {
              engine: {
                type: 'string',
                enum: ['advocacy','loyalty','communication','incentives','prospect-intelligence','analytics','integrations','platform'],
                description: 'The Ambassador engine or section to explore'
              }
            },
            required: ['engine']
          },
          execute: async function(args) {
            var map = {
              advocacy: '/advocacy-engine',
              loyalty: '/customer-value-engine',
              communication: '/communication-cloud-engine',
              incentives: '/incentive-storefront-engine',
              'prospect-intelligence': '/prospect-intelligence-engine',
              analytics: '/data-intelligence-layer',
              integrations: '/integrations-layer',
              platform: '/platform'
            };
            return { url: 'https://getambassador.com' + (map[args.engine] || '/platform') };
          }
        }, _sig);
        navigator.modelContext.registerTool({
          name: 'get_pricing',
          description: 'Request an enterprise quote or talk to sales.',
          inputSchema: { type: 'object', properties: {} },
          execute: async function() { return { url: 'https://getambassador.com/pricing-ent' }; }
        }, _sig);
        navigator.modelContext.registerTool({
          name: 'find_resources',
          description: 'Browse Ambassador case studies, whitepapers, and industry guides.',
          inputSchema: { type: 'object', properties: {} },
          execute: async function() { return { url: 'https://getambassador.com/resources' }; }
        }, _sig);
      } catch(e) {}
    }
    </script>
  
</body></html>

Latest requests

# Url Url Source Date
1 https://getambassador.com/ 2026-10-16 17:36:59
2 https://auth.mediacorp.sg/u/login?… 2026-10-16 17:36:59
3 https://www.tandem.edu.co/ 2026-10-16 17:36:58
4 https://welovespells.net/ 2026-10-16 17:36:58
5 https://www.texarkanatwins.com/%25… 2026-10-16 17:36:58
6 https://www.thebolditalic.com/?gi=… 2026-10-16 17:36:57
7 http://image.google.com.kh/ 2026-10-16 17:36:56
8 https://psilocybinshroomshop.org/ 2026-10-16 17:36:56
9 https://www.texarkanatwins.com/%25… 2026-10-16 17:36:55
10 https://webtrial.dlbr.dk/da 2026-10-16 17:36:55
11 https://auth.acog.org/OAuth/SignIn… 2026-10-16 17:36:53
12 https://www.texarkanatwins.com/%25… 2026-10-16 17:36:53
13 https://www.texarkanatwins.com/%25… 2026-10-16 17:36:52
14 https://www.thebolditalic.com/?gi=… 2026-10-16 17:36:52
15 https://www.texarkanatwins.com/&qu… 2026-10-16 17:36:51
16 https://www.texarkanatwins.com/%25… 2026-10-16 17:36:51
17 https://www.thebolditalic.com/?gi=… 2026-10-16 17:36:50
18 https://www.texarkanatwins.com/&qu… 2026-10-16 17:36:50
19 https://www.thebolditalic.com/?gi=… 2026-10-16 17:36:50
20 https://www.texarkanatwins.com/&qu… 2026-10-16 17:36:49