PageSourceSearch

https://www.snitcher.com/

html snitcher.com collected 2026-09-24 08:46:54 UTC 369,794 bytes, 3,046 lines download raw bytes

1<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Snitcher turns anonymous website visitors into actionable leads. Identify in-market companies, see buyer intent, and trigger workflows across your stack."><meta name="author" content="Snitcher"><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><!-- Canonical URL --><link rel="canonical" href="https://www.snitcher.com/"><!-- Open Graph --><meta property="og:title" content="Snitcher — Uncover your hidden website visitors"><meta property="og:description" content="Snitcher turns anonymous website visitors into actionable leads. Identify in-market companies, see buyer intent, and trigger workflows across your stack."><meta property="og:type" content="website"><meta property="og:url" content="https://www.snitcher.com/"><meta property="og:site_name" content="Snitcher"><meta property="og:locale" content="en_US"><meta property="og:image" content="https://www.snitcher.com/og-image.png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="Snitcher — Uncover your hidden website visitors"><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Snitcher — Uncover your hidden website visitors"><meta name="twitter:description" content="Snitcher turns anonymous website visitors into actionable leads. Identify in-market companies, see buyer intent, and trigger workflows across your stack."><meta name="twitter:image" content="https://www.snitcher.com/og-image.png"><meta name="twitter:image:alt" content="Snitcher — Uncover your hidden website visitors"><!-- Favicon --><link rel="icon" type="image/png" href="/favicon.png"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><!-- Web App Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><!-- LLM-readable content reference --><link rel="alternate" type="text/plain" href="/llms.txt" title="LLM-readable site description"><!-- Font preloads --><link rel="preload" href="/fonts/AtypText-Semibold.otf" as="font" type="font/opentype" crossorigin><link rel="preload" href="/fonts/PlusJakartaSans-Regular.woff2" as="font" crossorigin><!-- Preconnects for performance --><link rel="dns-prefetch" href="https://app.snitcher.com"><title>Snitcher — Uncover your hidden website visitors | Snitcher</title><!-- Structured Data -->
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Snitcher","url":"https://www.snitcher.com","logo":"https://www.snitcher.com/logo.png","sameAs":["https://linkedin.com/company/snitcher"],"description":"Uncover your hidden website visitors. Snitcher turns anonymous intent into predictable revenue."}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Snitcher","url":"https://www.snitcher.com","description":"Uncover your hidden website visitors. Snitcher turns anonymous intent into predictable revenue."}</script>
1<!-- Personalisation URL capture — MUST run before HeadScripts so the
2         inline capture beats the Radar tracker's URL strip. Always-on (the
3         capture itself is just an indexOf + window assignment); the actual
4         personalisation UI is opted in per page via <PersonalizationProvider />. --><!-- Restore H1 visibility for JS-disabled / crawler agents. Lives next to
5     the capture (not the Provider) because JS-off visitors should always
6     see the original copy regardless of which page they land on. --><noscript><style>[data-personalize-template]{visibility:visible!important}</style></noscript>
6<script>
7  (function () {
8    // Stash the raw URL search on `window` — sessionStorage at this stage
9    // can be wiped by Cookiebot (or other CMP/tracker init) before our
10    // bundled script reads it. `window` survives.
11    var search = window.location.search || '';
12    if (
13      search &&
14      (search.indexOf('sn_email=') !== -1 || search.indexOf('sn_eid=') !== -1)
15    ) {
16      window.__snitcherPersonalizationRawSearch = search;
17    }
18  })();
19</script>
19<!-- Analytics & Tracking --><!-- Preconnects for analytics services --><link rel="preconnect" href="https://cdn.snitcher.com"><link rel="preconnect" href="https://radar.snitcher.com"><link rel="preconnect" href="https://touch.snitcher.com"><link rel="dns-prefetch" href="https://www.googletagmanager.com"><link rel="dns-prefetch" href="https://consent.cookiebot.com"><link rel="dns-prefetch" href="https://connect.facebook.net"><!-- Snitcher Radar -->
19<script>
20!function(e){"use strict";var t=e&&e.namespace;if(t&&e.profileId&&e.cdn){var i=window[t];if(i&&Array.isArray(i)||(i=window[t]=[]),!i.initialized&&!i._loaded)if(i._loaded)console&&console.warn("[Radar] Duplicate initialization attempted");else{i._loaded=!0;["track","page","identify","group","alias","ready","debug","on","off","once","trackClick","trackSubmit","trackLink","trackForm","pageview","screen","reset","register","setAnonymousId","addSourceMiddleware","addIntegrationMiddleware","addDestinationMiddleware","giveCookieConsent"].forEach((function(e){var a;i[e]=(a=e,function(){var e=window[t];if(e.initialized)return e[a].apply(e,arguments);var i=[].slice.call(arguments);return i.unshift(a),e.push(i),e})})),-1===e.apiEndpoint.indexOf("http")&&(e.apiEndpoint="https://"+e.apiEndpoint),i.bootstrap=function(){var t,i=document.createElement("script");i.async=!0,i.type="text/javascript",i.id="__radar__",i.setAttribute("data-settings",JSON.stringify(e)),i.src=[-1!==(t=e.cdn).indexOf("http")?"":"https://",t,"/releases/latest/radar.min.js"].join("");var a=document.scripts[0];a.parentNode.insertBefore(i,a)},i.bootstrap()}}else"undefined"!=typeof console&&console.error("[Radar] Configuration incomplete")}({
21  apiEndpoint: "radar.snitcher.com",
22  cdn: "cdn.snitcher.com",
23  namespace: "Snitcher",
24  profileId: "8395164",
25  features: {
26    formTracking: true,
27    downloadTracking: true,
28  },
29});
30</script>
30<!-- Shared dual-emit tracking helper: Snitcher Radar + GTM dataLayer.
31     Module scripts use the identical `track()` from src/lib/track.ts;
32     this global exists so `is:inline` scripts can emit the same way. -->
32<script>
33window.snitcherTrack = function (event, properties) {
34  var props = properties || {};
35  // Product-stream pages tag events with a product_stream property
36  // (explicit properties win). Keep in sync with src/lib/track.ts.
37  try {
38    var streams = { 'partners': 'partners', 'radar': 'radar', 'platform': 'platform', 'ip-to-company-api': 'ip2c' };
39    var firstSegment = window.location.pathname.split('/').filter(Boolean)[0] || '';
40    if (streams[firstSegment] && !('product_stream' in props)) {
41      var tagged = { product_stream: streams[firstSegment] };
42      for (var pk in props) {
43        if (Object.prototype.hasOwnProperty.call(props, pk)) tagged[pk] = props[pk];
44      }
45      props = tagged;
46    }
47  } catch (e) { /* fall through untagged */ }
48  try {
49    if (window.Snitcher && typeof window.Snitcher.track === 'function') {
50      // Radar names are namespaced so marketing-site events stay separable
51      // from app-emitted events; the dataLayer name below stays bare for
52      // GTM triggers.
53      window.Snitcher.track('website.' + event, props);
54    }
55  } catch (e) { /* analytics must never break the page */ }
56  try {
57    window.dataLayer = window.dataLayer || [];
58    var entry = { event: event };
59    for (var key in props) {
60      if (Object.prototype.hasOwnProperty.call(props, key)) entry[key] = props[key];
61    }
62    window.dataLayer.push(entry);
63  } catch (e) { /* ignore */ }
64};
65</script>
65<!-- Google Tag Manager (consent-gated, then lazy loaded) -->
65<script>
66/*
67 * GTM is injected as a DOM-created 
67<script>. Cookiebot's `data-blockingmode="auto"`
68 * rewrites tags it can see in the markup, so it never intercepts this one — which is
69 * why the container, and the GA, Google Ads, Reddit and Clarity tags inside it, used
70 * to load before the visitor had answered the banner. Consent is therefore checked
71 * here explicitly; the static tags further down stay covered by auto-blocking.
72 */
73function gtmConsentGranted() {
74  var consent = window.Cookiebot && window.Cookiebot.consent;
75  return Boolean(consent && (consent.statistics || consent.marketing));
76}
77function initGTM() {
78  if (window.gtmDidInit || !gtmConsentGranted()) {
79    return false;
80  }
81  window.gtmDidInit = true;
82  const script = document.createElement('script');
83  script.type = 'text/javascript';
84  script.async = true;
85  script.onload = () => {
86    window.dataLayer = window.dataLayer || [];
87    window.dataLayer.push({ event: 'gtm.js', 'gtm.start': new Date().getTime(), 'gtm.uniqueEventId': 0 });
88  };
89  script.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-THP98M8';
90  document.head.appendChild(script);
91  return true;
92}
93function initGTMOnEvent(event) {
94  // Only spend the listener once the container actually loaded — before consent
95  // initGTM() is a no-op, and dropping the listener there would lose the trigger.
96  if (initGTM()) {
97    event.currentTarget.removeEventListener(event.type, initGTMOnEvent);
98  }
99}
100document.addEventListener('DOMContentLoaded', () => {
101  setTimeout(initGTM, 500);
102});
103document.addEventListener('scroll', initGTMOnEvent);
104document.addEventListener('mousemove', initGTMOnEvent);
105document.addEventListener('touchstart', initGTMOnEvent);
106// Consent usually lands after the lazy triggers have already run and no-opped, so
107// load on Cookiebot's own events too.
108window.addEventListener('CookiebotOnAccept', initGTM);
109window.addEventListener('CookiebotOnConsentReady', initGTM);
110</script>
110<!-- Google Consent Mode v2 defaults — MUST run before Cookiebot and any Google tag.
111     Without these Google's tags assume consent, which is what Cookiebot's scan reports
112     as "GCM consent parameters set as Default: At risk". Cookiebot updates the signal
113     once the visitor answers; until then everything non-essential stays denied. -->
113<script>
114window.dataLayer = window.dataLayer || [];
115function gtag() { window.dataLayer.push(arguments); }
116gtag('consent', 'default', {
117  ad_storage: 'denied',
118  ad_user_data: 'denied',
119  ad_personalization: 'denied',
120  analytics_storage: 'denied',
121  functionality_storage: 'denied',
122  personalization_storage: 'denied',
123  security_storage: 'granted',
124  wait_for_update: 500,
125});
126gtag('set', 'ads_data_redaction', true);
127gtag('set', 'url_passthrough', true);
128</script>
128<!-- Cookiebot CMP (Cookie Consent) -->
128<script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="61d78ce6-ca00-4e9d-9b95-3dd373e04e20" data-blockingmode="auto" type="text/javascript"></script>
128<!-- Segment Analytics -->
128<script>
129!function(){var i="analytics",analytics=window[i]=window[i]||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"];analytics.factory=function(e){return function(){if(window[i].initialized)return window[i][e].apply(window[i],arguments);var n=Array.prototype.slice.call(arguments);if(["track","screen","alias","group","page","identify"].indexOf(e)>-1){var c=document.querySelector("link[rel='canonical']");n.push({__t:"bpc",c:c&&c.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}n.unshift(e);analytics.push(n);return analytics}};for(var n=0;n<analytics.methods.length;n++){var key=analytics.methods[n];analytics[key]=analytics.factory(key)}analytics.load=function(key,n){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.setAttribute("data-global-segment-analytics-key",i);t.src="https://touch.snitcher.com/analytics.js/v1/" + key + "/analytics.min.js";var r=document.getElementsByTagName("script")[0];r.parentNode.insertBefore(t,r);analytics._loadOptions=n};analytics._writeKey="fS7MHBg3XdVWDj1Gf6mi7xqpGDv6atOV";;analytics.SNIPPET_VERSION="5.2.0";
130analytics.load("fS7MHBg3XdVWDj1Gf6mi7xqpGDv6atOV");
131analytics.page();
132}}();
133</script>
133<!-- Meta Pixel -->
133<script>
vendor: 399 bytes, lines 133-142
133
134!function(f,b,e,v,n,t,s)
135{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
136n.callMethod.apply(n,arguments):n.queue.push(arguments)};
137if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
138n.queue=[];t=b.createElement(e);t.async=!0;
139t.src=v;s=b.getElementsByTagName(e)[0];
140s.parentNode.insertBefore(t,s)}(window, document,'script',
141'https://connect.facebook.net/en_US/fbevents.js');
142fbq('init', '
1421377135903938422
vendor: 30 bytes, lines 142-143
142');
143fbq('track', 'PageView');
144</script>
144<noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1377135903938422&ev=PageView&noscript=1"></noscript><link rel="stylesheet" href="/_astro/about.D_2VM18I.css">
145<style>.referral-offer-banner[data-astro-cid-nahiwob6].hidden{display:none}.referral-offer-banner[data-astro-cid-nahiwob6].is-visible{display:block}.referral-offer-banner[data-astro-cid-nahiwob6].is-dismissing{transition:opacity .2s ease-out,max-height .2s ease-out,padding .2s ease-out;opacity:0;max-height:0;padding-top:0;padding-bottom:0}#hero .section-container{-o-border-image:linear-gradient(to bottom,transparent,rgba(228,228,231,.5)) 1;border-image:linear-gradient(to bottom,transparent,rgba(228,228,231,.5)) 1}#hero .section-container:before,#hero .section-container:after{-webkit-mask-image:linear-gradient(to bottom,transparent,black);mask-image:linear-gradient(to bottom,transparent,black)}
146:root{--color-palatinate-50: #efefff;--color-palatinate-100: #dadaff;--color-palatinate-200: #b4b4ff;--color-palatinate-300: #8e8eff;--color-palatinate-400: #6a6aff;--color-palatinate-500: #4c4cff;--color-palatinate-600: #3e3ee6;--color-palatinate-700: #3131c2;--color-palatinate-800: #26269e;--color-palatinate-900: #1d1d7a;--color-palatinate-950: #171761;--color-lavender-50: #efefff;--color-lavender-100: #e9e8ff;--color-lavender-200: #d5d4ff;--color-lavender-300: #b8b1ff;--color-lavender-400: #9485ff;--color-lavender-500: #7153ff;--color-lavender-600: #5f30f7;--color-lavender-700: #511ee3;--color-lavender-800: #4318bf;--color-lavender-900: #38169c;--color-lavender-950: #210b6a;--color-jade-50: #ecfdf3;--color-jade-100: #d1fae1;--color-jade-200: #a7f3c9;--color-jade-300: #6de8ab;--color-jade-400: #33d489;--color-jade-500: #0ead69;--color-jade-600: #04975b;--color-jade-700: #03794c;--color-jade-800: #05603d;--color-jade-900: #064e34;--color-jade-950: #022c1e;--color-coral-50: #fef8f7;--color-coral-100: #fdedea;--color-coral-200: #fbd4cc;--color-coral-300: #fabaab;--color-coral-400: #f8a087;--color-coral-500: #f78154;--color-coral-600: #d0602a;--color-coral-700: #a1491f;--color-coral-800: #753313;--color-coral-900: #491d08;--color-coral-950: #351404;--color-honey-50: #feedd1;--color-honey-100: #fde4ba;--color-honey-200: #fcd38d;--color-honey-300: #fbc261;--color-honey-400: #fab034;--color-honey-500: #f99f07;--color-honey-600: #cd8305;--color-honey-700: #a06604;--color-honey-800: #744a03;--color-honey-900: #472d02;--color-honey-950: #301f01;--color-lava-50: #fef2f3;--color-lava-100: #fde3e5;--color-lava-200: #fcccd0;--color-lava-300: #f9a8ae;--color-lava-400: #f3767f;--color-lava-500: #e63946;--color-lava-600: #d52d3a;--color-lava-700: #b3222d;--color-lava-800: #942029;--color-lava-900: #7b2128;--color-lava-950: #430c10;--color-zinc-600: #52525b;--alpha-border: rgba(0, 0, 0, .08)}.dark{--alpha-border: rgba(255, 255, 255, .1)}
147.hero-logo-scatter[data-astro-cid-s4rxgulo]{position:absolute;inset:0;z-index:0;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:0}.hero-logo-scatter[data-astro-cid-s4rxgulo][data-ready=true]{opacity:1}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo]{position:absolute;width:48px;height:48px;-o-object-fit:contain;object-fit:contain;background:#fff;border-radius:12px;padding:6px;box-shadow:0 1px 2px #0000000a,0 6px 16px #0000000f}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="0"]{top:6%;left:4%;width:56px;height:56px;transform:rotate(-8deg);opacity:.6}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="1"]{top:22%;left:11%;width:44px;height:44px;transform:rotate(6deg);opacity:.75}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="2"]{top:54%;left:3%;width:48px;height:48px;transform:rotate(-12deg);opacity:.6}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="3"]{top:78%;left:13%;width:40px;height:40px;transform:rotate(9deg);opacity:.5}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="4"]{top:8%;right:5%;width:52px;height:52px;transform:rotate(7deg);opacity:.6}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="5"]{top:26%;right:12%;width:44px;height:44px;transform:rotate(-5deg);opacity:.75}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="6"]{top:56%;right:4%;width:48px;height:48px;transform:rotate(10deg);opacity:.6}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="7"]{top:80%;right:14%;width:40px;height:40px;transform:rotate(-8deg);opacity:.5}.hero-logo-scatter[data-astro-cid-s4rxgulo][data-align=right] .hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="0"],.hero-logo-scatter[data-astro-cid-s4rxgulo][data-align=right] .hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="1"],.hero-logo-scatter[data-astro-cid-s4rxgulo][data-align=right] .hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="2"],.hero-logo-scatter[data-astro-cid-s4rxgulo][data-align=right] .hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="3"]{display:none}@media (max-width: 1024px){.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="1"],.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="5"]{display:none}}@media (max-width: 640px){.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="2"],.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="3"],.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="6"],.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="7"]{display:none}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="0"],.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="4"]{width:40px;height:40px}}
148</style>
149<link rel="stylesheet" href="/_astro/demo.SKPlMlYs.css">
150<style>.personalized-modal[data-astro-cid-y42wqjr7]{position:fixed;inset:0;z-index:9998;display:flex;align-items:center;justify-content:center;padding:1.5rem;opacity:0;visibility:hidden;transition:opacity .2s ease-out,visibility 0s linear .2s}.personalized-modal[data-astro-cid-y42wqjr7][data-open=true]{opacity:1;visibility:visible;transition:opacity .2s ease-out,visibility 0s linear 0s}.personalized-modal__backdrop[data-astro-cid-y42wqjr7]{position:absolute;inset:0;background:#09090b99;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.personalized-modal__card[data-astro-cid-y42wqjr7]{position:relative;z-index:1;width:100%;max-width:460px;max-height:calc(100vh - 3rem);overflow-y:auto;background:#fff;border-radius:1.25rem;padding:2.5rem 2rem 2rem;text-align:center;box-shadow:0 20px 60px -20px #0000004d,0 8px 24px -8px #0000001a;transform:scale(.96);transition:transform .2s ease-out}.personalized-modal[data-astro-cid-y42wqjr7][data-open=true] .personalized-modal__card[data-astro-cid-y42wqjr7]{transform:scale(1)}.personalized-modal__close[data-astro-cid-y42wqjr7]{position:absolute;top:.875rem;right:.875rem;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:999px;background:transparent;color:#71717a;cursor:pointer;transition:background .15s ease-out,color .15s ease-out}.personalized-modal__close[data-astro-cid-y42wqjr7]:hover{background:#f4f4f5;color:#18181b}.personalized-modal__close[data-astro-cid-y42wqjr7]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-palatinate-500)}.personalized-modal__lockup[data-astro-cid-y42wqjr7]{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:1.5rem}.personalized-modal__logo-tile[data-astro-cid-y42wqjr7]{display:inline-flex;align-items:center;justify-content:center;width:64px;
150height:64px;border-radius:14px;background:#fff;padding:10px;box-shadow:0 1px 2px #0000000a,0 6px 20px #00000014}.personalized-modal__logo-tile--snitcher[data-astro-cid-y42wqjr7]{background:#f5f5ff}.personalized-modal__logo-tile[data-astro-cid-y42wqjr7] img[data-astro-cid-y42wqjr7]{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.personalized-modal__logo-tile--company[data-astro-cid-y42wqjr7]{display:none}.personalized-modal[data-astro-cid-y42wqjr7][data-has-company-logo=true] .personalized-modal__logo-tile--company[data-astro-cid-y42wqjr7]{display:inline-flex}.personalized-modal[data-astro-cid-y42wqjr7][data-has-company-logo=true] .personalized-modal__lockup-glue[data-astro-cid-y42wqjr7]{display:inline}.personalized-modal__lockup-glue[data-astro-cid-y42wqjr7]{display:none;font-size:1.5rem;font-weight:600;color:#a1a1aa;line-height:1}.personalized-modal__heading[data-astro-cid-y42wqjr7]{font-size:1.5rem;line-height:1.2;font-weight:700;color:#18181b;margin:0 0 .75rem}.personalized-modal__body[data-astro-cid-y42wqjr7]{font-size:.9375rem;line-height:1.55;color:#52525b;margin:0 0 1.75rem}.personalized-modal__actions[data-astro-cid-y42wqjr7]{display:flex;flex-direction:column;align-items:stretch;gap:.5rem}.personalized-modal__cta[data-astro-cid-y42wqjr7]{justify-content:center;width:100%}.personalized-modal__dismiss[data-astro-cid-y42wqjr7]{display:inline-flex;align-items:center;justify-content:center;padding:.5rem .75rem;border:0;background:transparent;color:#71717a;font-size:.875rem;cursor:pointer;border-radius:.375rem;transition:color .15s ease-out}.personalized-modal__dismiss[data-astro-cid-y42wqjr7]:hover{color:#18181b}.personalized-modal__dismiss[data-astro-cid-y42wqjr7]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-palatinate-500)}@media (prefers-reduced-motion: reduce){.personalized-modal[data-astro-cid-y42wqjr7],.personalized-modal__card[data-astro-cid-y42wqjr7]{transition:none}}
151.underline-animated[data-astro-cid-drt2y2q3].ready .underline-path[data-astro-cid-drt2y2q3]{animation:drawStroke .3s ease-out forwards}@keyframes drawStroke{to{stroke-dashoffset:0}}
152.arrow-btn-icon-wrap{position:relative;width:16px;height:16px;overflow:hidden;display:flex;align-items:center;justify-content:center}.arrow-btn-icon{will-change:transform}.arrow-btn-icon.slide-in-right{animation:arrow-btn-slide-in-right .2s ease-in-out forwards}.arrow-btn-icon.slide-out-right{animation:arrow-btn-slide-out-right .2s ease-in-out forwards}.arrow-btn-icon.slide-in-left{animation:arrow-btn-slide-in-left .2s ease-in-out forwards}.arrow-btn-icon.slide-out-left{animation:arrow-btn-slide-out-left .2s ease-in-out forwards}.arrow-btn-icon.slide-in{animation:arrow-btn-slide-in-right .2s ease-in-out forwards}.arrow-btn-icon.slide-out{animation:arrow-btn-slide-out-right .2s ease-in-out forwards}@keyframes arrow-btn-slide-in-right{0%{transform:translate(0);opacity:1}50%{transform:translate(100%);opacity:0}50.01%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes arrow-btn-slide-out-right{0%{transform:translate(0);opacity:1}50%{transform:translate(-100%);opacity:0}50.01%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes arrow-btn-slide-in-left{0%{transform:translate(0);opacity:1}50%{transform:translate(-100%);opacity:0}50.01%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes arrow-btn-slide-out-left{0%{transform:translate(0);opacity:1}50%{transform:translate(100%);opacity:0}50.01%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}
153.feature-card[href]{color:inherit;text-decoration:none}.feature-card[href]:hover{text-decoration:none}
154.scrollbar-hide[data-astro-cid-27qgd3zz]{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide[data-astro-cid-27qgd3zz]::-webkit-scrollbar{display:none}
155.pixel-reveal[data-astro-cid-kt72rz56]{display:inline-block;position:relative;white-space:nowrap}.pixel-reveal-text[data-astro-cid-kt72rz56]{display:inline-block;position:relative}.pixel-reveal-decorative[data-astro-cid-kt72rz56]{position:absolute;top:0;left:0;opacity:0;pointer-events:none;display:inline-block;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;letter-spacing:inherit;text-transform:inherit;white-space:inherit;color:inherit}.pixel-word[data-astro-cid-kt72rz56]{display:inline;white-space:nowrap}.pixel-char[data-astro-cid-kt72rz56]{display:inline-block;position:relative;line-height:1em;vertical-align:baseline}.pixel-reveal-decorative[data-astro-cid-kt72rz56] .pixel-char[data-astro-cid-kt72rz56]{color:var(--pixel-color);overflow:visible}.pixel-dots[data-astro-cid-kt72rz56]{position:absolute;inset:-4px;pointer-events:none;opacity:0;z-index:-1}.pixel-dot[data-astro-cid-kt72rz56]{position:absolute;width:3px;height:3px;background:var(--brand-color, #4C4CFF);opacity:0;will-change:transform,opacity}.pixel-char-current[data-astro-cid-kt72rz56]{display:inline-block;position:relative;transition:transform .06s ease-out}.pixel-char[data-astro-cid-kt72rz56].scrambling .pixel-char-current[data-astro-cid-kt72rz56]{color:var(--brand-color, #4C4CFF);animation:pixel-scramble .06s ease-out}.pixel-char[data-astro-cid-kt72rz56].scrambling .pixel-dots[data-astro-cid-kt72rz56]{opacity:1}@keyframes pixel-scramble{0%{transform:translateY(-20%);opacity:.7}to{transform:translateY(0);opacity:1}}.pixel-char[data-astro-cid-kt72rz56].sparkle .pixel-char-current[data-astro-cid-kt72rz56]{animation:pixel-sparkle .15s ease-out}@keyframes pixel-sparkle{0%{filter:brightness(1)}30%{filter:brightness(1.8)}to{filter:brightness(1)}}.pixel-char[data-astro-cid-kt72rz56].revealed .pixel-char-current[data-astro-cid-kt72rz56]{color:inherit;animation:pixel-settle .25s cubic-bezier(.34,1.56,.64,1)}.pixel-char[data-astro-cid-kt72rz56].revealed .pixel-dots[data-astro-cid-kt72rz56]{animation:dots-scatter .4s ease-out forwards}@keyframes pixel-settle{0%{transform:translateY(-15%) scale(1.05);filter:brightness(1.3)}50%{transform:translateY(3%)}to{transform:translateY(0) scale(1);filter:brightness(1)}}@keyframes dots-scatter{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.5)}}@media (prefers-reduced-motion: reduce){.pixel-reveal-decorative[data-astro-cid-kt72rz56]{display:none}.pixel-char-current[data-astro-cid-kt72rz56],.pixel-dots[data-astro-cid-kt72rz56],.pixel-dot[data-astro-cid-kt72rz56]{animation:none!important;transition:none!important}}.pixel-reveal[data-astro-cid-kt72rz56][data-animated=true] .pixel-reveal-text[data-astro-cid-kt72rz56]{opacity:0}
155.pixel-reveal[data-astro-cid-kt72rz56][data-animated=true] .pixel-reveal-decorative[data-astro-cid-kt72rz56],.pixel-reveal[data-astro-cid-kt72rz56][data-animated=true][data-complete=true] .pixel-reveal-text[data-astro-cid-kt72rz56]{opacity:1}.pixel-reveal[data-astro-cid-kt72rz56][data-animated=true][data-complete=true] .pixel-reveal-decorative[data-astro-cid-kt72rz56]{opacity:0}
156</style>
157<link rel="stylesheet" href="/_astro/FlipCountdown_astro_astro_type_style_index_0_lang.C_FS9Ten.css">
158<link rel="stylesheet" href="/_astro/PageSection_astro_astro_type_style_index_0_lang.BD2u2Sx1.css">
159<style>.divider-band[data-astro-cid-bj7qugvw]{margin-inline:calc(var(--section-px, 0px) * -1)}.divider-dots[data-astro-cid-bj7qugvw],.divider-lines[data-astro-cid-bj7qugvw]{position:relative}.divider-dots[data-astro-cid-bj7qugvw]:after,.divider-lines[data-astro-cid-bj7qugvw]:after{content:"";position:absolute;inset:0}.divider-dots[data-astro-cid-bj7qugvw]:after{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24'><g opacity='0.4'><rect x='10.75' y='10.75' width='1.5' height='1.5' fill='%234c4cff'/></g></svg>");background-size:24px 24px;background-position:50% 50%}.divider-lines[data-astro-cid-bj7qugvw]:after{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='6'><rect width='1' height='3' fill='%23e4e4e7'/></svg>");background-size:24px 6px;background-position:50% 0}[data-astro-cid-bj7qugvw][data-fade=bottom]:after{mask-image:linear-gradient(to bottom,black,transparent);-webkit-mask-image:linear-gradient(to bottom,black,transparent)}[data-astro-cid-bj7qugvw][data-fade=top]:after{mask-image:linear-gradient(to bottom,transparent,black);-webkit-mask-image:linear-gradient(to bottom,transparent,black)}[data-astro-cid-bj7qugvw][data-fade=both]:after{mask-image:linear-gradient(to bottom,transparent,black 35%,black 65%,transparent);-webkit-mask-image:linear-gradient(to bottom,transparent,black 35%,black 65%,transparent)}.divider-lines[data-astro-cid-bj7qugvw][data-fade=top]:after{background-position:50% 100%}
160.carousel-visual[data-astro-cid-bjcxd7r3]{transition:opacity .3s ease-out}
161.carousel-progress-wrapper[data-astro-cid-algf2pu2]{opacity:0;transition:opacity .15s ease-out}.carousel-progress-visible[data-astro-cid-algf2pu2]{opacity:1}.carousel-progress[data-astro-cid-algf2pu2]{width:20px;height:20px;transform:rotate(-90deg)}.carousel-progress-track[data-astro-cid-algf2pu2]{fill:none;stroke:#e4e4e7;stroke-width:2}.carousel-progress-fill[data-astro-cid-algf2pu2]{fill:none;stroke:var(--color-palatinate-500);stroke-width:2;stroke-linecap:round;stroke-dasharray:50.265482;stroke-dashoffset:50.265482}.carousel-progress-active[data-astro-cid-algf2pu2]{animation:carousel-progress-fill var(--animation-duration, 10s) linear forwards}.carousel-progress-paused[data-astro-cid-algf2pu2]{animation-play-state:paused}@keyframes carousel-progress-fill{0%{stroke-dashoffset:50.265482}to{stroke-dashoffset:0}}
162</style>
163<link rel="stylesheet" href="/_astro/index_astro_astro_type_style_index_0_lang.BBVdYB7R.css">
164<style>.footer-nav-link[data-astro-cid-fqw42ge2]{font-size:1rem;line-height:1.6;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.footer-nav-link[data-astro-cid-fqw42ge2]:hover{--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}.footer-bottom-link[data-astro-cid-fqw42ge2]{font-size:.875rem;line-height:1.25;--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.footer-bottom-link[data-astro-cid-fqw42ge2]:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.fingerprint-canvas[data-astro-cid-fqw42ge2]{display:block}.partner-arrow[data-astro-cid-fqw42ge2]{animation:partner-arrow-bob 3.2s ease-in-out infinite;transform-origin:80% 30%}@keyframes partner-arrow-bob{0%,to{transform:translate(0) rotate(0)}50%{transform:translate(-2px,1px) rotate(-5deg)}}@media (prefers-reduced-motion: reduce){.partner-arrow[data-astro-cid-fqw42ge2]{animation:none}}
165.blob-card-blob[data-astro-cid-gijzu423]{position:absolute;border-radius:50%;filter:blur(40px);will-change:transform;pointer-events:none;animation-play-state:paused}.blob-card-blob-1[data-astro-cid-gijzu423]{width:750px;height:650px;background:#00000040;top:-450px;left:-450px;animation:blob-card-drift-1 18s ease-in-out infinite;filter:blur(40px)}.blob-card-blob-2[data-astro-cid-gijzu423]{width:650px;height:650px;background:#0000004d;top:-300px;right:-400px;animation:blob-card-drift-2 22s ease-in-out infinite;filter:blur(40px)}.blob-card-blob-3[data-astro-cid-gijzu423]{width:700px;height:550px;background:#00000038;bottom:-400px;left:-350px;animation:blob-card-drift-3 26s ease-in-out infinite;filter:blur(40px)}.blob-card-blob-4[data-astro-cid-gijzu423]{width:550px;height:480px;background:#ffffff0a;top:-350px;right:-320px;animation:blob-card-drift-4 24s ease-in-out infinite;filter:blur(35px)}.blob-card-blob-5[data-astro-cid-gijzu423]{width:600px;height:550px;background:#0000000d;bottom:-380px;right:-400px;animation:blob-card-drift-5 30s ease-in-out infinite;filter:blur(35px)}.blob-card-noise[data-astro-cid-gijzu423]{position:absolute;inset:0;z-index:2;opacity:.35;mix-blend-mode:overlay;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px}@keyframes blob-card-drift-1{0%,to{transform:translate(0) scale(1)}25%{transform:translate(30px,40px) scale(1.1)}50%{transform:translate(60px,20px) scale(.95)}75%{transform:translate(20px,50px) scale(1.05)}}@keyframes blob-card-drift-2{0%,to{transform:translate(0) scale(1)}33%{transform:translate(-40px,30px) scale(1.15)}66%{transform:translate(-20px,-20px) scale(.9)}}@keyframes blob-card-drift-3{0%,to{transform:translate(0) scale(1)}20%{transform:translate(40px,-30px) scale(1.1)}
16540%{transform:translate(20px,40px) scale(.95)}60%{transform:translate(-30px,20px) scale(1.05)}80%{transform:translate(-20px,-40px) scale(1)}}@keyframes blob-card-drift-4{0%,to{transform:translate(0) scale(1)}30%{transform:translate(-50px,30px) scale(1.08)}60%{transform:translate(30px,-40px) scale(.92)}85%{transform:translate(-20px,15px) scale(1.05)}}@keyframes blob-card-drift-5{0%,to{transform:translate(0) scale(1)}25%{transform:translate(35px,25px) scale(.95)}50%{transform:translate(-25px,-35px) scale(1.12)}75%{transform:translate(15px,-20px) scale(1)}}@media (prefers-reduced-motion: reduce){.blob-card-blob[data-astro-cid-gijzu423]{animation:none}}
166@keyframes pop-in{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.95)}to{opacity:1;transform:scale(1)}}.integration-bento[data-astro-cid-7rb7ltoj][data-animate=true] .integration-logo[data-astro-cid-7rb7ltoj]{opacity:0;transform:scale(.3)}.integration-bento[data-astro-cid-7rb7ltoj][data-animate=true].animate-in .integration-logo[data-astro-cid-7rb7ltoj]{animation:pop-in .5s cubic-bezier(.34,1.56,.64,1) forwards;animation-delay:var(--delay, 0ms)}@media (prefers-reduced-motion: reduce){.integration-bento[data-astro-cid-7rb7ltoj][data-animate=true] .integration-logo[data-astro-cid-7rb7ltoj]{opacity:1;transform:scale(1)}.integration-bento[data-astro-cid-7rb7ltoj][data-animate=true].animate-in .integration-logo[data-astro-cid-7rb7ltoj]{animation:none;opacity:1;transform:scale(1)}}
167.testimonial-section__dot{width:8px;height:8px;border-radius:9999px;background-color:var(--ts-dot-inactive, rgba(63, 63, 70, .25));transition:background-color .2s ease,width .2s ease;cursor:pointer;border:0;padding:0}.testimonial-section__dot:hover{background-color:var(--ts-dot-inactive-hover, rgba(63, 63, 70, .5))}.testimonial-section__dot.is-active{background-color:var(--ts-dot-active, var(--color-palatinate-600, #3e3ee6));width:24px}.testimonial-section__dot:focus-visible{outline:2px solid var(--ts-dot-focus, var(--color-palatinate-500, #4c4cff));outline-offset:2px}@media (prefers-reduced-motion: reduce){.testimonial-section__dot{transition:none}}
168.testimonial-section__slide[data-astro-cid-7ajslof7]{grid-area:1 / 1;width:100%;height:100%;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .7s ease;pointer-events:none}.testimonial-section__slide[data-astro-cid-7ajslof7].is-active{opacity:1;pointer-events:auto}@media (prefers-reduced-motion: reduce){.testimonial-section__slide[data-astro-cid-7ajslof7]{transition:none}}
169.page-section:has([data-testimonial-section])>.section-container{padding:0}.page-section:has([data-testimonial-section][data-variant=light]),.page-section:has([data-testimonial-section][data-variant=particles]){background-color:var(--color-lavender-50, #eef0ff)}[data-testimonial-section][data-variant=light],[data-testimonial-section][data-variant=particles]{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='48' height='48'><g opacity='0.4'><path d='M24 23H23V24H24V23Z' fill='%234c4cff'/></g></svg>");background-size:48px 48px;background-position:50% 0}[data-testimonial-section][data-variant=grid]:before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(ellipse 34% 52% at 50% 50%,#ffffffeb,#ffffff8c 45%,#fff0 75%),linear-gradient(to right,rgba(0,0,0,.06) 1px,transparent 1px),linear-gradient(to bottom,rgba(0,0,0,.06) 1px,transparent 1px);background-size:100% 100%,25px 25px,25px 25px;background-position:center,50% 50%,50% 50%;mask-image:radial-gradient(ellipse 46% 58% at 50% 50%,#000 0%,rgba(0,0,0,.85) 45%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 46% 58% at 50% 50%,#000 0%,rgba(0,0,0,.85) 45%,transparent 100%)}[data-testimonial-section][data-variant=grid]>*{position:relative;z-index:1}.page-section:has([data-testimonial-section][data-variant=dark]){background-color:#09090b}[data-testimonial-section][data-variant=dark]{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='48' height='48'><g opacity='0.3'><path d='M24 23H23V24H24V23Z' fill='%23fafafa'/></g></svg>");background-size:48px 48px;background-position:50% 0}
170.tab-active-shadow[data-astro-cid-twm5uxey]{box-shadow:0 0 0 1px var(--alpha-border),0 1px 3px #0000001a}.badge-dark-inactive[data-astro-cid-twm5uxey]{background-color:#0003}
171</style>
172<link rel="stylesheet" href="/_astro/Navbar_astro_astro_type_style_index_0_lang.CnosfN-w.css">
173<style>.g2-badge-wall__grid[data-astro-cid-ukhf4yhl]{margin-inline:calc(var(--section-px) * -1)}.g2-badge-wall__grid[data-astro-cid-ukhf4yhl]>*{border-radius:0;border-inline:0;box-shadow:none}@media (min-width: 1024px){.g2-badge-wall[data-astro-cid-ukhf4yhl]{margin-top:-4rem}.g2-badge-wall__grid[data-astro-cid-ukhf4yhl]>*{border-top:0}}
174.accordion[data-astro-cid-u4rtwtdm]:not(.accordion-dark) .accordion-trigger[data-astro-cid-u4rtwtdm]:hover{background-color:#f4f4f580}.accordion[data-astro-cid-u4rtwtdm].accordion-dark{transition:border-color .2s ease}.accordion[data-astro-cid-u4rtwtdm].accordion-dark:hover{border-color:#fff3!important}.accordion[data-astro-cid-u4rtwtdm]:not(.accordion-dark) .accordion-trigger[data-astro-cid-u4rtwtdm]{border-radius:1rem}
175.faq-answer a{color:inherit;text-decoration:underline;text-underline-offset:3px}.faq-answer a:hover{text-decoration:none}
176.hero-dot-grid[data-astro-cid-wlyiyr5g]{top:24px;left:50%;transform:translate(-50%);width:1050px;z-index:-30}.hero-dot-grid[data-astro-cid-wlyiyr5g] canvas[data-astro-cid-wlyiyr5g]{width:100%;height:auto;display:block;opacity:.75}@media (max-width: 1100px){.hero-dot-grid[data-astro-cid-wlyiyr5g]{width:900px}}@media (max-width: 768px){.hero-dot-grid[data-astro-cid-wlyiyr5g]{top:0;width:700px}.hero-dot-grid[data-astro-cid-wlyiyr5g] canvas[data-astro-cid-wlyiyr5g]{opacity:.6}}@media (max-width: 480px){.hero-dot-grid[data-astro-cid-wlyiyr5g]{width:600px}}
177.marquee-track[data-astro-cid-kijovlsi]{animation:marquee 60s linear infinite;animation-play-state:paused}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(calc(var(--card-set-width) * -1))}}.marquee-track[data-astro-cid-kijovlsi] p[data-astro-cid-kijovlsi]{margin-bottom:0}@media (prefers-reduced-motion: reduce){.marquee-track[data-astro-cid-kijovlsi]{animation:none}}
178.measure-visual[data-astro-cid-a6yjhbsd] p[data-astro-cid-a6yjhbsd]{margin:0}.measure-source-pill[data-astro-cid-a6yjhbsd]{display:flex;align-items:center;gap:6px;background:#fff;padding:7px 14px;white-space:nowrap;opacity:0;transform:translateY(6px);transition:opacity .4s cubic-bezier(.22,1,.36,1),transform .4s cubic-bezier(.22,1,.36,1),box-shadow .3s ease}.measure-source-pill[data-astro-cid-a6yjhbsd].visible{opacity:1;transform:translateY(0)}.measure-source-pill[data-astro-cid-a6yjhbsd].-rotate-2.visible{transform:translateY(0) rotate(-2deg)}.measure-source-pill[data-astro-cid-a6yjhbsd].rotate-1.visible{transform:translateY(0) rotate(1deg)}.measure-visual[data-astro-cid-a6yjhbsd][data-hovering] .measure-source-pill[data-astro-cid-a6yjhbsd][data-pill-delay="0"].visible{transform:translate(-8px) translateY(-4px) rotate(-3deg)}.measure-visual[data-astro-cid-a6yjhbsd][data-hovering] .measure-source-pill[data-astro-cid-a6yjhbsd][data-pill-delay="1"].visible{transform:translate(8px) translateY(-4px) rotate(2deg)}.measure-visual[data-astro-cid-a6yjhbsd][data-hovering] .measure-source-pill[data-astro-cid-a6yjhbsd][data-pill-delay="2"].visible{transform:translateY(4px) rotate(1deg)}.measure-pill-label[data-astro-cid-a6yjhbsd]{font-size:12px;font-weight:600;color:#3f3f46;flex-shrink:0}.measure-pill-sep[data-astro-cid-a6yjhbsd]{font-size:12px;color:#d4d4d8;flex-shrink:0}.measure-pill-sub[data-astro-cid-a6yjhbsd]{font-size:12px;color:#a1a1aa;overflow:hidden;text-overflow:ellipsis;min-width:0}.measure-source-pill[data-astro-cid-a6yjhbsd] svg{width:16px;height:16px}@media (prefers-reduced-motion: reduce){.measure-source-pill[data-astro-cid-a6yjhbsd]{transition:none!important;opacity:1!important;transform:none!important}}
179.signal-card[data-astro-cid-l3ae6lyb]{transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s cubic-bezier(.22,1,.36,1)}.feature-card:hover .signal-card[data-astro-cid-l3ae6lyb]{transform:scale(1.02) rotate(-2deg);box-shadow:0 0 0 1px var(--alpha-border),0 4px 12px #0000001a,0 2px 4px -1px #0000001a}.signal-visual[data-astro-cid-l3ae6lyb] p[data-astro-cid-l3ae6lyb]{margin:2px 0 0}.signal-timeline-item[data-astro-cid-l3ae6lyb]{opacity:0;transform:translateY(8px);transition:opacity .4s cubic-bezier(.22,1,.36,1),transform .4s cubic-bezier(.22,1,.36,1)}.signal-timeline-item[data-astro-cid-l3ae6lyb].visible{opacity:1;transform:translateY(0)}.signal-hover-event[data-astro-cid-l3ae6lyb]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s cubic-bezier(.22,1,.36,1)}.signal-hover-event[data-astro-cid-l3ae6lyb]>div[data-astro-cid-l3ae6lyb]{overflow:hidden}.signal-hover-event[data-astro-cid-l3ae6lyb].visible{grid-template-rows:1fr}.signal-hover-content[data-astro-cid-l3ae6lyb]{opacity:0;transform:translateY(-8px);transition:opacity .3s cubic-bezier(.22,1,.36,1),transform .3s cubic-bezier(.22,1,.36,1)}.signal-hover-event[data-astro-cid-l3ae6lyb].visible .signal-hover-content[data-astro-cid-l3ae6lyb]{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion: reduce){.signal-timeline-item[data-astro-cid-l3ae6lyb],.signal-hover-event[data-astro-cid-l3ae6lyb],.signal-hover-content[data-astro-cid-l3ae6lyb]{opacity:1!important;transform:none!important;transition:none!important}}
180.engage-visual[data-astro-cid-ybnukg4e] p[data-astro-cid-ybnukg4e]{margin:0}.engage-flip-container[data-astro-cid-ybnukg4e]{perspective:800px}.engage-flip-inner[data-astro-cid-ybnukg4e]{position:relative;transition:transform .5s cubic-bezier(.22,1,.36,1);transform-style:preserve-3d}.engage-face[data-astro-cid-ybnukg4e]{backface-visibility:hidden;-webkit-backface-visibility:hidden}.engage-front[data-astro-cid-ybnukg4e]{position:relative}.engage-back[data-astro-cid-ybnukg4e]{position:absolute;inset:0;transform:rotateY(180deg)}.feature-card:hover .engage-flip-inner[data-astro-cid-ybnukg4e]{transform:rotateY(180deg)}@media (prefers-reduced-motion: reduce){.engage-flip-inner[data-astro-cid-ybnukg4e]{transition:none!important}}
181.snv-card[data-astro-cid-fjxicinn]{position:absolute;
181left:0;right:0;top:50%;opacity:0;transform:translateY(-50%) translate(0) scale(.85);transition:transform .5s cubic-bezier(.22,1,.36,1),opacity .35s ease;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:16px}.snv-body[data-astro-cid-fjxicinn]{background:#ffffffb8;border-radius:16px;padding:10px 14px;box-shadow:0 0 0 .5px #0000000f,0 1px 2px #0000000a,0 4px 12px #0000000f,0 12px 32px #0000000a}.snv-icon-wrap[data-astro-cid-fjxicinn]{width:22px;height:22px;border-radius:5px;background:#fff;box-shadow:0 0 0 .5px #00000014,0 1px 2px #0000000f;display:flex;align-items:center;justify-content:center;flex-shrink:0}.snv-card[data-astro-cid-fjxicinn].s-top{opacity:1;transform:translateY(-50%) translate(0) scale(1)}.snv-card[data-astro-cid-fjxicinn].s-mid{opacity:1;transform:translateY(calc(-50% + 12px)) translate(0) scale(.96)}.snv-card[data-astro-cid-fjxicinn].s-bot{opacity:1;transform:translateY(calc(-50% + 22px)) translate(0) scale(.92)}.snv-card[data-astro-cid-fjxicinn].s-mid .snv-body[data-astro-cid-fjxicinn]{opacity:.92}.snv-card[data-astro-cid-fjxicinn].s-bot .snv-body[data-astro-cid-fjxicinn]{opacity:.82}.snv-group[data-astro-cid-fjxicinn].ready.hovered .snv-card[data-astro-cid-fjxicinn]{transition:transform .4s cubic-bezier(.22,1,.36,1),opacity .3s ease}.snv-group[data-astro-cid-fjxicinn].ready.hovered .snv-card[data-astro-cid-fjxicinn].s-top{transform:translateY(calc(-50% - 93px)) translate(0) scale(1)}.snv-group[data-astro-cid-fjxicinn].ready.hovered .snv-card[data-astro-cid-fjxicinn].s-mid{transform:translateY(-50%) translate(0) scale(1)}.snv-group[data-astro-cid-fjxicinn].ready.hovered .snv-card[data-astro-cid-fjxicinn].s-bot{transform:translateY(calc(-50% + 93px)) translate(0) scale(1)}.snv-group[data-astro-cid-fjxicinn].ready.hovered .snv-card[data-astro-cid-fjxicinn] .snv-body[data-astro-cid-fjxicinn]{opacity:1;transition:opacity .3s ease}@media (prefers-reduced-motion: reduce){.snv-card[data-astro-cid-fjxicinn]{transition:none!important;opacity:1!important}.snv-card[data-astro-cid-fjxicinn]:nth-child(1){transform:translateY(calc(-50% + 93px)) translate(0) scale(1)!important}.snv-card[data-astro-cid-fjxicinn]:nth-child(2){transform:translateY(-50%) translate(0) scale(1)!important}.snv-card[data-astro-cid-fjxicinn]:nth-child(3){transform:translateY(calc(-50% - 93px)) translate(0) scale(1)!important}.snv-body[data-astro-cid-fjxicinn]{opacity:1!important}}
182@media (prefers-reduced-motion: reduce){.feedback-face[data-astro-cid-kububvzn]{transition:none!important}.feedback-face[data-astro-cid-kububvzn]:hover{transform:none!important}}
183.scrollbar-hide[data-astro-cid-iyzr5htm]{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide[data-astro-cid-iyzr5htm]::-webkit-scrollbar{display:none}.carousel-fade[data-astro-cid-iyzr5htm]{position:absolute;top:0;bottom:0;width:var(--fade-width);pointer-events:none;z-index:10;opacity:0;transition:opacity .3s ease-out}.carousel-fade-left[data-astro-cid-iyzr5htm]{left:0;background:linear-gradient(to right,var(--carousel-bg, rgb(250, 250, 250)),transparent)}.carousel-fade-right[data-astro-cid-iyzr5htm]{right:0;background:linear-gradient(to left,var(--carousel-bg, rgb(250, 250, 250)),transparent)}.carousel-fade[data-astro-cid-iyzr5htm][data-visible=true]{opacity:1}
184.tier-medal[data-astro-cid-7evo3er2]{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--medal-size);height:var(--medal-size);border-radius:calc(var(--medal-size) / 7);border:1px solid var(--alpha-border);background-image:var(--medal-field)}.tier-medal__mark[data-astro-cid-7evo3er2]{display:block;width:72%;height:72%}
185.integration-gallery[data-astro-cid-lmzdgq7c]{margin:1.5rem 0 2rem}.gallery-item[data-astro-cid-lmzdgq7c]{padding:.5rem}.gallery-thumbnail[data-astro-cid-lmzdgq7c]{display:block}
186.lightbox-trigger[data-astro-cid-fcyb6yui]{cursor:zoom-in}.lightbox-overlay[data-astro-cid-fcyb6yui]{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;padding:2rem;opacity:0;visibility:hidden;transition:opacity .2s ease-out,visibility .2s ease-out}.lightbox-overlay[data-astro-cid-fcyb6yui][data-open=true]{opacity:1;visibility:visible}.lightbox-backdrop[data-astro-cid-fcyb6yui]{position:absolute;inset:0;background:#000000d9;backdrop-filter:blur(4px)}.lightbox-close[data-astro-cid-fcyb6yui]{position:absolute;top:1.5rem;right:1.5rem;z-index:10;display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:50%;color:#fff;cursor:pointer;transition:background .15s ease-out,transform .15s ease-out}.lightbox-close[data-astro-cid-fcyb6yui]:hover{background:#fff3;transform:scale(1.05)}.lightbox-close[data-astro-cid-fcyb6yui]:focus{outline:none;box-shadow:0 0 0 2px #ffffff80}.lightbox-nav[data-astro-cid-fcyb6yui]{position:absolute;top:50%;transform:translateY(-50%);z-index:10;display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:50%;color:#fff;cursor:pointer;transition:background .15s ease-out,transform .15s ease-out,opacity .15s ease-out;opacity:0;pointer-events:none}.lightbox-overlay[data-astro-cid-fcyb6yui][data-open=true] .lightbox-nav[data-astro-cid-fcyb6yui][data-visible=true]{opacity:1;pointer-events:auto}.lightbox-nav[data-astro-cid-fcyb6yui]:hover{background:#fff3}.lightbox-nav[data-astro-cid-fcyb6yui]:focus{outline:none;box-shadow:0 0 0 2px #ffffff80}.lightbox-nav-prev[data-astro-cid-fcyb6yui]{left:1.5rem}.lightbox-nav-next[data-astro-cid-fcyb6yui]{right:1.5rem}.lightbox-content[data-astro-cid-fcyb6yui]{position:relative;z-index:1;max-width:90vw;display:flex;flex-direction:column;align-items:center;transform:scale(.95);transition:transform .2s ease-out}.lightbox-overlay[data-astro-cid-fcyb6yui][data-open=true] .lightbox-content[data-astro-cid-fcyb6yui]{transform:scale(1)}.lightbox-image[data-astro-cid-fcyb6yui]{display:block;max-width:100%;max-height:80vh;width:auto;height:auto;border-radius:.75rem;box-shadow:0 25px 50px -12px #00000080}.lightbox-caption[data-astro-cid-fcyb6yui]{color:#fffc;font-size:.875rem;line-height:1.5;text-align:center;margin-top:1rem;max-width:36rem;margin-left:auto;margin-right:auto}
187.code-block-content pre{margin:0;padding:1rem;background:transparent!important;font-size:.875rem;line-height:1.7}@media (min-width: 768px){.code-block-content pre{padding:1.5rem}}.code-block-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.code-block-content.show-line-numbers pre{counter-reset:line}.code-block-content.show-line-numbers .line:before{counter-increment:line;content:counter(line);display:inline-block;width:2rem;margin-right:1rem;text-align:right;color:#71717a}
188.bg-warning-banner{background-color:color-mix(in srgb,var(--color-honey-50) 60%,transparent)}.banner-content p,.banner-content strong,.banner-content em,.banner-content a,.banner-content span,.banner-content code{color:inherit!important;font-size:inherit!important}.banner-content p:last-of-type{margin-bottom:0!important}.prose .banner-content p,.prose .banner-content strong,.prose .banner-content em,.prose .banner-content a,.prose .banner-content span,.prose .banner-content code{color:inherit!important;font-size:inherit!important}.prose .banner-content p:last-of-type{margin-bottom:0!important}
189.campaign-offer-banner[data-astro-cid-ukinoyt4].hidden{display:none}.campaign-offer-banner[data-astro-cid-ukinoyt4].is-visible{display:block}
189.campaign-offer-banner[data-astro-cid-ukinoyt4].is-dismissing{transition:opacity .2s ease-out,max-height .2s ease-out,padding .2s ease-out;opacity:0;max-height:0;padding-top:0;padding-bottom:0}
190.btn-arrow-wrap{position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.btn-arrow-icon{will-change:transform}.btn-arrow-icon.slide-in{animation:btn-arrow-slide-in .2s ease-in-out forwards}.btn-arrow-icon.slide-out{animation:btn-arrow-slide-out .2s ease-in-out forwards}@keyframes btn-arrow-slide-in{0%{transform:translate(0);opacity:1}50%{transform:translate(100%);opacity:0}50.01%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes btn-arrow-slide-out{0%{transform:translate(0);opacity:1}50%{transform:translate(-100%);opacity:0}50.01%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}
191</style>
191<script type="module" src="/_astro/hoisted.BaopxmOR.js"></script>
vendor: 1 bytes, line 191
191
192<script type="module" src="/_astro/page.SrI4KvC9.js"></script>
192</head> <body class="bg-white overscroll-y-none font-sans w-full overflow-x-clip"> <!-- Google Tag Manager (noscript) -->
vendor: 67 bytes, line 192
192<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
192GTM-THP98M8
vendor: 83 bytes, line 192
192" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 
192<aside id="referral-offer-banner" class="referral-offer-banner hidden relative z-[60] w-full overflow-hidden border-b border-white/10 bg-[var(--color-lavender-600)] text-white" role="region" aria-label="Referral offer" hidden data-astro-cid-nahiwob6> <div class="pointer-events-none absolute inset-0 opacity-90" aria-hidden="true" style="background-image: linear-gradient(120deg, var(--color-lavender-600) 0%, var(--color-palatinate-500) 50%, var(--color-lavender-500) 100%);" data-astro-cid-nahiwob6></div> <div class="pointer-events-none absolute inset-0 opacity-50 mix-blend-overlay" aria-hidden="true" style="background-image: radial-gradient(circle at 15% 50%, rgba(255,255,255,0.35) 0, transparent 35%), radial-gradient(circle at 85% 50%, rgba(255,255,255,0.25) 0, transparent 40%);" data-astro-cid-nahiwob6></div> <div class="relative px-4 sm:px-6 lg:px-16" data-astro-cid-nahiwob6> <div class="mx-auto flex max-w-7xl items-center gap-3 py-2.5 sm:gap-4 sm:py-3" data-astro-cid-nahiwob6> <span class="hidden h-9 w-9 shrink-0 items-center justify-center rounded-full bg-white/15 ring-1 ring-inset ring-white/25 backdrop-blur-sm sm:inline-flex" aria-hidden="true" data-astro-cid-nahiwob6> <svg width="20" height="20" class="text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M6.25 4.41667C6.25 3.08198 7.33198 2 8.66667 2C10.043 2 11.2603 2.68092 12 3.72427C12.7397 2.68092 13.957 2 15.3333 2C16.668 2 17.75 3.08198 17.75 4.41667C17.75 5.39677 17.4047 6.29622 16.8291 7H18.875C20.0486 7 21 7.9514 21 9.125C21 10.2986 20.0486 11.25 18.875 11.25H12.75V7H13.6667C15.0934 7 16.25 5.8434 16.25 4.41667C16.25 3.91041 15.8396 3.5 15.3333 3.5C13.9066 3.5 12.75 4.6566 12.75 6.08333V7H11.25V6.08333C11.25 4.6566 10.0934 3.5 8.66667 3.5C8.16041 3.5 7.75 3.91041 7.75 4.41667C7.75 5.8434 8.9066 7 10.3333 7H11.25V11.25H5.125C3.95139 11.25 3 10.2986 3 9.125C3 7.9514 3.95139 7 5.125 7H7.1709C6.5953 6.29622 6.25 5.39677 6.25 4.41667Z" fill="currentColor"/><path d="M12.75 12.75H20V18.25C20 19.7688 18.7688 21 17.25 21H12.75V12.75Z" fill="currentColor"/><path d="M11.25 12.75H4V18.25C4 19.7688 5.23122 21 6.75 21H11.25V12.75Z" fill="currentColor"/></svg>
193 </span> <div class="flex flex-1 flex-wrap items-center gap-x-2 gap-y-0.5 text-sm sm:text-base" data-astro-cid-nahiwob6> <span class="inline-flex sm:hidden" aria-hidden="true" data-astro-cid-nahiwob6> <svg width="18" height="18" class="text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M6.25 4.41667C6.25 3.08198 7.33198 2 8.66667 2C10.043 2 11.2603 2.68092 12 3.72427C12.7397 2.68092 13.957 2 15.3333 2C16.668 2 17.75 3.08198 17.75 4.41667C17.75 5.39677 17.4047 6.29622 16.8291 7H18.875C20.0486 7 21 7.9514 21 9.125C21 10.2986 20.0486 11.25 18.875 11.25H12.75V7H13.6667C15.0934 7 16.25 5.8434 16.25 4.41667C16.25 3.91041 15.8396 3.5 15.3333 3.5C13.9066 3.5 12.75 4.6566 12.75 6.08333V7H11.25V6.08333C11.25 4.6566 10.0934 3.5 8.66667 3.5C8.16041 3.5 7.75 3.91041 7.75 4.41667C7.75 5.8434 8.9066 7 10.3333 7H11.25V11.25H5.125C3.95139 11.25 3 10.2986 3 9.125C3 7.9514 3.95139 7 5.125 7H7.1709C6.5953 6.29622 6.25 5.39677 6.25 4.41667Z" fill="currentColor"/><path d="M12.75 12.75H20V18.25C20 19.7688 18.7688 21 17.25 21H12.75V12.75Z" fill="currentColor"/><path d="M11.25 12.75H4V18.25C4 19.7688 5.23122 21 6.75 21H11.25V12.75Z" fill="currentColor"/></svg>
194 </span> <span class="font-semibold tracking-tight" data-astro-cid-nahiwob6>
195You've been referred — enjoy <span class="whitespace-nowrap" data-astro-cid-nahiwob6>15% off</span> your first purchase
196</span> <span class="hidden text-white/80 sm:inline" data-astro-cid-nahiwob6>
197Applied automatically when you subscribe.
198</span> </div> <a href="https://app.snitcher.com/register" class="hidden shrink-0 items-center gap-1.5 rounded-full bg-white px-4 py-1.5 text-sm font-semibold text-lavender-700 shadow-sm transition-colors hover:bg-zinc-100 sm:inline-flex" data-referral-cta data-astro-cid-nahiwob6>
199Start free
200<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" width="14" height="14" aria-hidden="true" data-astro-cid-nahiwob6> <path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-nahiwob6></path> </svg> </a> <button type="button" class="referral-offer-dismiss group shrink-0 rounded-full p-1.5 text-white/80 transition-colors hover:bg-white/15 hover:text-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/60" aria-label="Dismiss referral offer" data-astro-cid-nahiwob6> <svg width="18" height="18" class="text-current" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M17.2197 5.71967C17.5126 5.42678 17.9873 5.42678 18.2802 5.71967C18.5731 6.01256 18.5731 6.48732 18.2802 6.78022L13.0605 11.9999L18.2802 17.2197C18.5731 17.5126 18.5731 17.9873 18.2802 18.2802C17.9873 18.5731 17.5126 18.5731 17.2197 18.2802L11.9999 13.0605L6.78022 18.2802C6.48732 18.5731 6.01256 18.5731 5.71967 18.2802C5.42678 17.9873 5.42678 17.5126 5.71967 17.2197L10.9394 11.9999L5.71967 6.78022C5.42678 6.48732 5.42678 6.01256 5.71967 5.71967C6.01256 5.42678 6.48732 5.42678 6.78022 5.71967L11.9999 10.9394L17.2197 5.71967Z" fill="currentColor"/></svg>
201 </button> </div> </div> </aside>   <aside id="campaign-offer-banner" class="campaign-offer-banner hidden relative z-[60] w-full overflow-hidden border-b border-white/10 bg-[var(--color-lavender-600)] text-white" role="region" aria-label="Campaign offer" hidden data-astro-cid-ukinoyt4> <div class="pointer-events-none absolute inset-0 opacity-90" aria-hidden="true" style="background-image: linear-gradient(120deg, var(--color-lavender-600) 0%, var(--color-palatinate-500) 50%, var(--color-lavender-500) 100%);" data-astro-cid-ukinoyt4></div> <div class="pointer-events-none absolute inset-0 opacity-50 mix-blend-overlay" aria-hidden="true" style="background-image: radial-gradient(circle at 15% 50%, rgba(255,255,255,0.35) 0, transparent 35%), radial-gradient(circle at 85% 50%, rgba(255,255,255,0.25) 0, transparent 40%);" data-astro-cid-ukinoyt4></div> <div class="relative px-4 sm:px-6 lg:px-16" data-astro-cid-ukinoyt4> <div class="mx-auto flex max-w-7xl items-center gap-3 py-2.5 sm:gap-4 sm:py-3" data-astro-cid-ukinoyt4> <span class="hidden h-9 w-9 shrink-0 items-center justify-center rounded-full bg-white/15 ring-1 ring-inset ring-white/25 backdrop-blur-sm sm:inline-flex" aria-hidden="true" data-astro-cid-ukinoyt4> <svg width="20" height="20" class="text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M6.25 4.41667C6.25 3.08198 7.33198 2 8.66667 2C10.043 2 11.2603 2.68092 12 3.72427C12.7397 2.68092 13.957 2 15.3333 2C16.668 2 17.75 3.08198 17.75 4.41667C17.75 5.39677 17.4047 6.29622 16.8291 7H18.875C20.0486 7 21 7.9514 21 9.125C21 10.2986 20.0486 11.25 18.875 11.25H12.75V7H13.6667C1
2015.0934 7 16.25 5.8434 16.25 4.41667C16.25 3.91041 15.8396 3.5 15.3333 3.5C13.9066 3.5 12.75 4.6566 12.75 6.08333V7H11.25V6.08333C11.25 4.6566 10.0934 3.5 8.66667 3.5C8.16041 3.5 7.75 3.91041 7.75 4.41667C7.75 5.8434 8.9066 7 10.3333 7H11.25V11.25H5.125C3.95139 11.25 3 10.2986 3 9.125C3 7.9514 3.95139 7 5.125 7H7.1709C6.5953 6.29622 6.25 5.39677 6.25 4.41667Z" fill="currentColor"/><path d="M12.75 12.75H20V18.25C20 19.7688 18.7688 21 17.25 21H12.75V12.75Z" fill="currentColor"/><path d="M11.25 12.75H4V18.25C4 19.7688 5.23122 21 6.75 21H11.25V12.75Z" fill="currentColor"/></svg>
202 </span> <div class="flex flex-1 flex-wrap items-center gap-x-2 gap-y-0.5 text-sm sm:text-base" data-astro-cid-ukinoyt4> <span class="inline-flex sm:hidden" aria-hidden="true" data-astro-cid-ukinoyt4> <svg width="18" height="18" class="text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M6.25 4.41667C6.25 3.08198 7.33198 2 8.66667 2C10.043 2 11.2603 2.68092 12 3.72427C12.7397 2.68092 13.957 2 15.3333 2C16.668 2 17.75 3.08198 17.75 4.41667C17.75 5.39677 17.4047 6.29622 16.8291 7H18.875C20.0486 7 21 7.9514 21 9.125C21 10.2986 20.0486 11.25 18.875 11.25H12.75V7H13.6667C15.0934 7 16.25 5.8434 16.25 4.41667C16.25 3.91041 15.8396 3.5 15.3333 3.5C13.9066 3.5 12.75 4.6566 12.75 6.08333V7H11.25V6.08333C11.25 4.6566 10.0934 3.5 8.66667 3.5C8.16041 3.5 7.75 3.91041 7.75 4.41667C7.75 5.8434 8.9066 7 10.3333 7H11.25V11.25H5.125C3.95139 11.25 3 10.2986 3 9.125C3 7.9514 3.95139 7 5.125 7H7.1709C6.5953 6.29622 6.25 5.39677 6.25 4.41667Z" fill="currentColor"/><path d="M12.75 12.75H20V18.25C20 19.7688 18.7688 21 17.25 21H12.75V12.75Z" fill="currentColor"/><path d="M11.25 12.75H4V18.25C4 19.7688 5.23122 21 6.75 21H11.25V12.75Z" fill="currentColor"/></svg>
203 </span> <a href="#" class="font-semibold tracking-tight hover:underline" data-campaign-headline data-astro-cid-ukinoyt4></a> <span class="hidden text-white sm:inline" data-campaign-detail data-astro-cid-ukinoyt4></span> <span class="whitespace-nowrap font-semibold text-white" data-campaign-countdown data-astro-cid-ukinoyt4></span> </div> <a href="#" class="hidden shrink-0 items-center gap-1.5 rounded-full bg-white px-4 py-1.5 text-sm font-semibold text-lavender-700 shadow-sm transition-colors hover:bg-zinc-100 sm:inline-flex" data-campaign-cta data-astro-cid-ukinoyt4> <span data-campaign-cta-label data-astro-cid-ukinoyt4>Claim offer</span> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" width="14" height="14" aria-hidden="true" data-astro-cid-ukinoyt4> <path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ukinoyt4></path> </svg> </a> <button type="button" class="campaign-offer-dismiss group shrink-0 rounded-full p-1.5 text-white/80 transition-colors hover:bg-white/15 hover:text-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/60" aria-label="Dismiss campaign offer" data-astro-cid-ukinoyt4> <svg width="18" height="18" class="text-current" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M17.2197 5.71967C17.5126 5.42678 17.9873 5.42678 18.2802 5.71967C18.5731 6.01256 18.5731 6.48732 18.2802 6.78022L13.0605 11.9999L18.2802 17.2197C18.5731 17.5126 18.5731 17.9873 18.2802 18.2802C17.9873 18.5731 17.5126 18.5731 17.2197 18.2802L11.9999 13.0605L6.78022 18.2802C6.48732 18.5731 6.01256 18.5731 5.71967 18.2802C5.42678 17.9873 5.42678 17.5126 5.71967 17.2197L10.9394 11.9999L5.71967 6.78022C5.42678 6.48732 5.42678 6.01256 5.71967 5.71967C6.01256 5.42678 6.48732 5.42678 6.78022 5.71967L11.9999 10.9394L17.2197 5.71967Z" fill="currentColor"/></svg>
204 </button> </div> </div> </aside> 
204<script type="application/json" id="campaign-offer-data">{"close":{"agency":{"path":"/lp/offer/close-crm/agencies","claimEndDate":"2026-09-30T23:59:59+02:00","signupUrl":"https://app.snitcher.com/register?utm_source=close&utm_medium=referral&utm_campaign=close-2026q3-offer-agency","ctaLabel":"Claim 1,200 leads per client","bannerHeadline":"Close agency offer: 1,200 free leads for every client you onboard","bannerDetail":"Plus 50% off Snitcher for life for your agency."},"end-user":{"path":"/lp/offer/close-crm","claimEndDate":"2026-09-30T23:59:59+02:00","signupUrl":"https://app.snitcher.com/register?utm_source=close&utm_medium=referral&utm_campaign=close-2026q3-offer-enduser","ctaLabel":"Claim 1,200 free leads","bannerHeadline":"Close customer offer: 1,200 free leads on any Snitcher plan","bannerDetail":"100 extra leads a month, for a year, on us."}}}</script>
204   <nav class="sticky top-0 z-50 w-full border-b transition-[border-color,box-shadow] duration-200" id="navbar" data-astro-cid-voiollt5> <!-- Background overlay --> <div id="navbar-bg" class="pointer-events-none absolute inset-0 z-0 opacity-0 transition-opacity duration-200 bg-white" data-astro-cid-voiollt5></div> <!-- Main navbar content --> <div class="relative z-10 w-full pt-4 pb-4" data-astro-cid-voiollt5> <div class="px-4 sm:px-6 lg:px-16" data-astro-cid-voiollt5> <div class="max-w-7xl mx-auto" data-astro-cid-voiollt5> <div class="relative flex items-center justify-between" data-astro-cid-voiollt5> <!-- Logo --> <div class="flex flex-1 items-center pointer-events-none" data-astro-cid-voiollt5> <a href="/" class="relative z-10 flex items-center gap-2.5 pointer-events-auto" data-astro-cid-voiollt5> <img src="/logo-symbol.svg" alt="Snitcher symbol" class="h-8 w-8 shrink-0 object-contain" loading="lazy" decoding="auto" data-astro-cid-voiollt5> <img src="/logo-wordmark.svg" alt="Snitcher" class="h-6 w-32 shrink-0 object-contain" loading="lazy" decoding="auto" data-astro-cid-voiollt5> </a> </div> <div class="absolute inset-0 hidden items-center lg:flex" data-astro-cid-voiollt5> <!-- Left nav group --> <div class="flex flex-1 items-center justify-end gap-1 xl:gap-2" data-astro-cid-voiollt5> <!-- Product Dropdown --> <div class="nav-dropdown-wrapper" data-dropdown="product" data-astro-cid-voiollt5> <button type="button" class="nav-link nav-link-dropdown" data-astro-cid-voiollt5>
205Product
206<span class="chevron-icon" data-astro-cid-voiollt5></span> </button> <div class="nav-dropdown-panel nav-dropdown-panel-wide bg-white" data-astro-cid-voiollt5> <div class="grid grid-cols-[320px_320px_192px] gap-x-6 px-6" data-astro-cid-voiollt5> <!-- Products Column --> <div class="flex flex-col gap-5 py-6" data-astro-cid-voiollt5> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>GTM Platform</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/platform" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-primary-500 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M3 5.75C3 4.23122 4.23122 3 5.75 3H8.25C8.66421 3 9 3.33579 9 3.75C9 4.16421 8.66421 4.5 8.25 4.5H5.75C5.05964 4.5 4.5 5.05964 4.5 5.75V8.25C4.5 8.66421 4.16421 9 3.75 9C3.33579 9 3 8.66421 3 8.25V5.75ZM15 3.75C15 3.33579 15.3358 3 15.75 3H18.25C19.7688 3 21 4.23122 21 5.75V8.25C21 8.66421 20.6642 9 20.25 9C19.8358 9 19.5 8.66421 19.5 8.25V5.75C19.5 5.05964 18.9404 4.5 18.25 4.5H15.75C15.3358 4.5 15 4.16421 15 3.75ZM7.75 8C8.16421 8 8.5 8.33579 8.5 8.75V10.25C8.5 10.6642 8.16421 11 7.75 11C7.33579 11 7 10.6642 7 10.25V8.75C7 8.33579 7.33579 8 7.75 8ZM12.25 8C12.6642 8 13 8.33579 13 8.75V11C13 12.4029 11.9501 13.5595 10.5928 13.7288C10.1818 13.78 9.80702 13.4884 9.75576 13.0773C9.70451 12.6663 9.99616 12.2915 10.4072 12.2403C11.023 12.1635 11.5 11.6369 11.5 11V8.75C11.5 8.33579 11.8358 8 12.25 8ZM16.25 8C16.6642 8 17 8.33579 17 8.75V10.25C17 10.6642 16.6642 11 16.25 11C15.8358 11 15.5 10.6642 15.5 10.25V8.75C15.5 8.33579 15.8358 8 16.25 8ZM8.3508 15.3218C8.5582 14.9632 9.017 14.8407 9.37554 15.0481C10.147 15.4944 11.0425 15.75 12 15.75C12.9575 15.75 13.853 15.4944 14.6245 15.0481C14.983 14.8407 15.4418 14.9632 15.6492 15.3218C15.8566 15.6803 15.7341 16.1391 15.3755 16.3465C14.3819 16.9213 13.2282 17.25 12 17.25C10.7718 17.25 9.61805 16.9213 8.62446 16.3465C8.26591 16.1391 8.14339 15.6803 8.3508 15.3218ZM3.75 15C4.16421 15 4.5 15.3358 4.5 15.75V18.25C4.5 18.9404 5.05964 19.5 5.75 19.5H8.25C8.66421 19.5 9 19.8358 9 20.25C9 20.6642 8.66421 21 8.25 21H5.75C4.23122 21 3 19.7688 3 18.25V15.75C3 15.3358 3.33579 15 3.75 15ZM20.25 15C20.6642 15 21 15.3358 21 15.75V18.25C21 19.7688 19.7688 21 18.25 21H15.75C15.3358 21 15 20.6642 15 20.25C15 19.8358 15.3358 19.5 15.75 19.5H18.25C18.9404 19.5 19.5 18.9404 19.5 18.25V15.75C19.5 15.3358 19.8358 15 20.25 15Z" fill="currentColor"/></svg>
207  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Platform </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Turn anonymous traffic into pipeline</span> </div> </a> </div> </div> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Powered by Snitcher</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/radar" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M4.30523 9.50117C3.86611 9.76669 3.33777 10 2.75 10C2.33579 10 2 9.66421 2 9.25C2 8.83579 2.33579 8.5 2.75 8.5C2.94339 8.5 3.19298 8.42081 3.52907 8.21758C3.86431 8.01487 4.20974 7.73714 4.6035 7.41762C4.61402 7.40908 4.62458 7.40051 4.63519 7.3919C5.00222 7.09399 5.41507 6.7589 5.8368 6.50087C6.26916 6.23634 6.79252 6 7.375 6C7.96055 6 8.4868 6.23456 8.9231 6.49968C9.35333 6.76112 9.77246 7.10128 10.1437 7.40254L10.1623 7.41763C10.5569 7.73789 10.9012 8.01573 11.2347 8.21876C11.5694 8.42254 11.814 8.5 12 8.5C12.1825 8.5 12.4248 8.42337 12.7589 8.21931C13.0916 8.01613 13.4353 7.73823 13.8304 7.41763L13.8429 7.40749C14.216 7.10467 14.6381 6.76215 15.0723 6.49914C15.5104 6.23375 16.038 6 16.625 6C17.2062 6 17.7284 6.23708 18.1592 6.50135C18.5775 6.75799 18.9878 7.09104 19.3531 7.38759L19.3901 7.41761C19.7835 7.73684 20.1294 8.01452 20.4654 8.21711C20.8021 8.42013 21.0537 8.5 21.25 8.5C21.6642 8.5 22 8.83579 22 9.25C22 9.66421 21.6642 10 21.25 10C20.661 10 20.1315 9.76737 19.6908 9.50164C19.2509 9.23638 18.8247 8.89051 18.4488 8.58549L18.445 8.58239C18.0493 8.26129 17.7063 7.98331 17.3747 7.7799C17.0415 7.57542 16.8025 7.5 16.625 7.5C16.4335 7.5 16.1852 7.57875 15.8495 7.78211C15.5147 7.98491 15.1695 8.26266 14.7756 8.58237L14.7473 8.60535C14.3791 8.90413 13.9647 9.24053 13.5408 9.49944C13.1074 9.76413 12.5833 10 12 10C11.4153 10 10.8898 9.76496 10.4546 9.49999C10.0267 9.23949 9.60936 8.90074 9.2393 8.6004L9.21708 8.58237C8.82269 8.26232 8.47811 7.9845 8.14415 7.78157C7.80905 7.57794 7.56305 7.5 7.375 7.5C7.19444 7.5 6.95344 7.57616 6.61965 7.78038C6.28742 7.98365 5.94399 8.26158 5.54867 8.58238L5.53954 8.58978C5.16532 8.89346 4.74163 9.23728 4.3
2070523 9.50117ZM4.30523 17.5012C3.86611 17.7667 3.33777 18 2.75 18C2.33579 18 2 17.6642 2 17.25C2 16.8358 2.33579 16.5 2.75 16.5C2.94339 16.5 3.19298 16.4208 3.52907 16.2176C3.86431 16.0149 4.20974 15.7371 4.6035 15.4176L4.6352 15.3919C5.00223 15.094 5.41507 14.7589 5.8368 14.5009C6.26916 14.2363 6.79252 14 7.375 14C7.96055 14 8.4868 14.2346 8.9231 14.4997C9.35334 14.7611 9.77247 15.1013 10.1437 15.4025L10.1623 15.4176C10.5569 15.7379 10.9012 16.0157 11.2347 16.2188C11.5694 16.4225 11.814 16.5 12 16.5C12.1825 16.5 12.4248 16.4234 12.7589 16.2193C13.0916 16.0161 13.4353 15.7382 13.8304 15.4176L13.8429 15.4075C14.216 15.1047 14.6381 14.7622 15.0723 14.4991C15.5104 14.2337 16.038 14 16.625 14C17.2062 14 17.7284 14.2371 18.1592 14.5014C18.5775 14.758 18.9878 15.091 19.3531 15.3876C19.3655 15.3976 19.3778 15.4076 19.3901 15.4176C19.7835 15.7368 20.1294 16.0145 20.4654 16.2171C20.8021 16.4201 21.0537 16.5 21.25 16.5C21.6642 16.5 22 16.8358 22 17.25C22 17.6642 21.6642 18 21.25 18C20.661 18 20.1315 17.7674 19.6908 17.5016C19.2509 17.2364 18.8247 16.8905 18.4488 16.5855L18.445 16.5824C18.0493 16.2613 17.7063 15.9833 17.3747 15.7799C17.0415 15.5754 16.8025 15.5 16.625 15.5C16.4335 15.5 16.1852 15.5788 15.8495 15.7821C15.5147 15.9849 15.1695 16.2627 14.7756 16.5824L14.7472 16.6054C14.3791 16.9041 13.9647 17.2405 13.5408 17.4994C13.1074 17.7641 12.5833 18 12 18C11.4153 18 10.8898 17.765 10.4546 17.5C10.0267 17.2395 9.60936 16.9007 9.2393 16.6004L9.21708 16.5824C8.82269 16.2623 8.47811 15.9845 8.14415 15.7816C7.80905 15.5779 7.56305 15.5 7.375 15.5C7.19444 15.5 6.95344 15.5762 6.61965 15.7804C6.28742 15.9837 5.94399 16.2616 5.54867 16.5824L5.53955 16.5898C5.16533 16.8935 4.74164 17.2373 4.30523 17.5012Z" fill="currentColor"/></svg>
208  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Radar </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Embed visitor intelligence in product</span> </div> </a><a href="/ip-to-company-api" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM14.5565 8.36774C15.2096 8.18959 15.809 8.78895 15.6309 9.44213L14.5114 13.5467C14.3833 14.0164 14.0164 14.3833 13.5467 14.5114L9.44213 15.6309C8.78894 15.809 8.18959 15.2096 8.36774 14.5565L9.48716 10.4519C9.61526 9.98221 9.98221 9.61526 10.4519 9.48715L14.5565 8.36774Z" fill="currentColor"/></svg>
209  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> IP to Company </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Resolve any IP to a company via API</span> </div> </a> </div> </div> </div> <!-- How It Works Column --> <div class="flex flex-col py-6" data-astro-cid-voiollt5> <span class="mb-3 px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>How It Works</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/identify" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.75 3C4.23122 3 3 4.23122 3 5.75V18.25C3 19.7688 4.23122 21 5.75 21H13.5833C13.568 20.9851 13.5528 20.9701 13.5377 20.955C11.4874 18.9047 11.4874 15.5806 13.5377 13.5303C15.5879 11.4801 18.9121 11.4801 20.9623 13.5303C20.975 13.543 20.9875 13.5557 21 13.5684V5.75C21 4.23122 19.7688 3 18.25 3H5.75ZM10.9896 7.15224C11.321 7.40077 11.3881 7.87087 11.1396 8.20224L9.26797 10.6978C9.02914 11.0162 8.58314 11.0926 8.25194 10.8718L7.12694 10.1218C6.7823 9.89203 6.68917 9.42637 6.91893 9.08173C7.1487 8.73708 7.61435 8.64395 7.95899 8.87372L8.49366 9.23016L9.9396 7.30224C10.1881 6.97087 10.6582 6.90371 10.9896 7.15224ZM13.058 9C13.058 8.58579 13.3937 8.25 13.808 8.25H16.308C16.7222 8.25 17.058 8.58579 17.058 9C17.058 9.41421 16.7222 9.75 16.308 9.75H13.808C13.3937 9.75 13.058 9.41421 13.058 9ZM10.9896 13.1534C11.321 13.4019 11.3881 13.872 11.1396 14.2034L9.26797 16.6989C9.02914 17.0173 8.58314 17.0937 8.25194 16.8729L7.12694 16.1229C6.7823 15.8932 6.68917 15.4275 6.91893 15.0829C7.14869 14.7382 7.61435 14.6451 7.95899 14.8748L8.49366 15.2313L9.9396 13.3034C10.1881 12.972 10.6582 12.9048 10.9896 13.1534Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M18.841 15.6517C17.9623 14.773 16.5377 14.773 15.659 15.6517C14.7803 16.5303 14.7803 17.955 15.659 18.8336C16.5377 19.7123 17.9623 19.7123 18.841 18.8336C19.7197 17.955 19.7197 16.5303 18.841 15.6517ZM14.5983 14.591C16.0628 13.1265 18.4372 13.1265 19.9016 14.591C21.1845 15.8738 21.3436 17.8549 20.3789 19.3109L21.7803 20.7123C22.0732 21.0052 22.0732 21.4801 21.7803 21.773C21.4874 22.0659 21.0126 22.0659 20.7197 21.773L19.3183 20.3716C17.8623 21.3362 15.8812 21.1771 14.5983 19.8943C13.1339 18.4298 13.1339 16.0555 14.5983 14.591Z" fill="currentColor"/></svg>
210  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Identify </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>See who visits your site</span> </div> </a><a href="/signal" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M11.5455 15.7345C9.45546 15.1509 7.58124 14.7024 5.5 15.5655V21.2496C5.5 21.6638 5.16421 21.9996 4.75 21.9996C4.33579 21.9996 4 21.6638 4 21.2496V4.39872C4 3.74584 4.37163 3.093 5.04245 2.82695C7.52875 1.84088 9.76493 2.37886 11.7734 2.93538C11.9051 2.97188 12.0357 3.00836 12.1653 3.04455C14.0634 3.57485 15.7401 4.04331 17.5642 3.60129C18.6368 3.34137 20 4.04343 20 5.38675V14.4616C20 15.1144 19.6284 15.7673 
21018.9576 16.0333C16.3236 17.078 13.9537 16.4115 11.8464 15.8189C11.7455 15.7906 11.6452 15.7623 11.5455 15.7345Z" fill="currentColor"/></svg>
211  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Signal </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Spot intent as it happens</span> </div> </a><a href="/automate" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M9.32916 2C8.70285 2 8.12428 2.33472 7.81208 2.87768L3.21208 10.8777C2.54125 12.0443 3.38339 13.5 4.72916 13.5H7.67252C7.83072 13.5 7.94915 13.6451 7.91745 13.8001L6.68268 19.8386C6.33503 21.5388 8.40755 22.6537 9.63464 21.4267L20.5739 10.4874C21.6763 9.385 20.8955 7.5 19.3364 7.5H16.8687C16.6828 7.5 16.562 7.30442 16.6451 7.1382L17.9479 4.53262C18.5296 3.36905 17.6835 2 16.3826 2H9.32916Z" fill="currentColor"/></svg>
212  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Automate </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Trigger workflows instantly</span> </div> </a><a href="/engage" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M1.46783 6.05797C0.265136 4.9889 1.02132 3 2.63047 3H21.2788C22.6218 3 23.4643 4.45027 22.799 5.61691L13.6528 21.6554C12.8643 23.038 10.7893 22.7356 10.4282 21.1855L8.36566 12.3316L14.9744 8.65542C15.3364 8.45407 15.4666 7.9974 15.2653 7.63542C15.0639 7.27344 14.6072 7.14322 14.2453 7.34458L7.27632 11.2211L1.46783 6.05797Z" fill="currentColor"/></svg>
213  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Engage </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Reach accounts at the right time</span> </div> </a><a href="/measure" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.75 3C4.16421 3 4.5 3.33579 4.5 3.75V15.3456L7.60248 12.2431C8.60731 11.2383 10.2364 11.2383 11.2413 12.2431C11.6603 12.6621 12.3397 12.6621 12.7587 12.2431L15.2117 9.79013C16.2856 8.71619 18.0269 8.71619 19.1008 9.79013L19.7491 10.4384C20.042 10.7313 20.042 11.2062 19.7491 11.4991C19.4562 11.792 18.9813 11.792 18.6884 11.4991L18.0401 10.8508C17.552 10.3626 16.7605 10.3626 16.2724 10.8508L13.8194 13.3038C12.8146 14.3086 11.1854 14.3086 10.1806 13.3038C9.76157 12.8847 9.08218 12.8847 8.66314 13.3038L4.5 17.4669V18.25C4.5 18.9404 5.05964 19.5 5.75 19.5H20.25C20.6642 19.5 21 19.8358 21 20.25C21 20.6642 20.6642 21 20.25 21H5.75C4.23122 21 3 19.7688 3 18.25V3.75C3 3.33579 3.33579 3 3.75 3Z" fill="currentColor"/></svg>
214  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Measure </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Prove &amp; scale what works best</span> </div> </a> </div> </div> <!-- Explore Column --> <div class="flex flex-col border-l pl-6 py-6 border-zinc-200" data-astro-cid-voiollt5> <span class="mb-3 px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Explore</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/changelog" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Changelog  </span> </a><a href="/integrations" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Integrations  </span> </a><a href="https://trust.snitcher.com" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" target="_blank" rel="noopener noreferrer" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Trust centre <svg width="14" height="14" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
215 </span> </a><a href="/demo" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Talk to sales  </span> </a> </div> </div> </div> </div> </div> <!-- Solutions Dropdown --> <div class="nav-dropdown-wrapper" data-dropdown="solutions" data-astro-cid-voiollt5> <button type="button" class="nav-link nav-link-dropdown" data-astro-cid-voiollt5>
216Solutions
217<span class="chevron-icon" data-astro-cid-voiollt5></span> </button> <div class="nav-dropdown-panel bg-white" data-astro-cid-voiollt5> <div class="grid grid-cols-[320px_240px] gap-x-6 px-6" data-astro-cid-voiollt5> <!-- Teams Column --> <div class="flex flex-col py-6" data-astro-cid-voiollt5> <span class="mb-3 px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Teams</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/solutions/sales" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M14.5634 13.5799C14.6 13.2593 14.4292 12.9316 14.1078 12.9024C14.102 12.9019 14.0961 12.9014 14.0903 12.9009L9.19669 12.5131C8.65686 12.4704 8.11351 12.5323 7.5996 12.6952L3.69783 13.932C3.28233 14.0637 3 14.4494 3 14.8852V20.0199C3 20.5721 3.44772 21.0199 4 21.0199H4.83831L4.85056 21.0237C4.95989 21.0574 5.11685 21.1047 5.31199 21.1604C5.70161 21.2716 6.24688 21.4174 6.87145 21.5561C8.09069 21.8267 9.72522 22.0966 11.0994 21.9661C12.5697 21.8264 14.3876 21.1358 15.958 20.4236C17.5608 19.6966 19.0337 18.8864 19.8515 18.4189C20.5815 18.0016 21 17.2562 21 16.472C21 14.9261 19.557 14.5558 18 15L15.5 15.75C14.5 17 13.9507 17.3157 12.3751 17.6528L11.1171 17.922C10.7369 18.0033 10.3614 17.7659 10.2718 17.3875C10.1795 16.9975 10.426 16.6078 10.8179 16.5239L12.0458 16.2612C13.4015 15.9711 14.4132 14.8936 14.5634 13.5799Z" fill="currentColor"/><path d="M18 7.5C18 9.433 16.433 11 14.5 11C12.567 11 11 9.433 11 7.5C11 5.567 12.567 4 14.5 4C16.433 4 18 5.567 18 7.5Z" fill="currentColor"/><path d="M12.0731 3.12743C10.5384 3.98106 9.5 5.61927 9.5 7.5C9.5 8.01995 9.57937 8.52136 9.72664 8.99278C9.65171 8.99757 9.57614 9 9.5 9C7.567 9 6 7.433 6 5.5C6 3.567 7.567 2 9.5 2C10.5175 2 11.4336 2.4342 12.0731 3.12743Z" fill="currentColor"/></svg>
218  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Sales </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Find &amp; close warm accounts</span> </div> </a><a href="/solutions/marketing" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.4348 2.83302C17.2037 2.28685 18.9961 3.60929 18.9961 5.46062V7.32497C20.7078 7.67242 21.9961 9.18574 21.9961 11C21.9961 12.8142 20.7078 14.327
2185 18.9961 14.6749V16.5393C18.9961 18.3906 17.2037 19.7131 15.4348 19.1669L13.2817 18.5021C12.7667 19.9564 11.3792 21 9.74609 21C7.67503 21 5.99609 19.321 5.99609 17.25V16.2526L3.93481 15.6162C2.78222 15.2603 1.99609 14.1949 1.99609 12.9886V9.01131C1.99609 7.80504 2.78222 6.73958 3.93481 6.38371L6.51034 5.5885C6.5212 5.58487 6.53218 5.58148 6.54326 5.57833L15.4348 2.83302ZM7.49609 16.7158V17.25C7.49609 18.4926 8.50345 19.5 9.74609 19.5C10.7025 19.5 11.5212 18.9029 11.8465 18.059L7.49609 16.7158ZM20.4961 11C20.4961 11.9796 19.87 12.813 18.9961 13.1219V8.87798C19.87 9.18686 20.4961 10.0203 20.4961 11ZM5.99829 7.31647V14.6834L4.37733 14.183C3.85342 14.0212 3.49609 13.5369 3.49609 12.9886V9.01131C3.49609 8.46301 3.85342 7.97871 4.37733 7.81695L5.99829 7.31647Z" fill="currentColor"/></svg>
219  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Marketing </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Turn traffic into pipeline</span> </div> </a><a href="/solutions/revops" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.64125 9.29847C8.49624 7.44348 11.5038 7.44348 13.3588 9.29847L13.7019 9.64161C14.4775 10.4172 14.9295 11.3963 15.0562 12.4071C15.1076 12.8181 14.8162 13.1931 14.4052 13.2445C13.9942 13.296 13.6193 13.0046 13.5678 12.5936C13.4811 11.9019 13.1729 11.2339 12.6413 10.7023L12.2981 10.3591C11.0289 9.08993 8.97111 9.08992 7.70191 10.3591L4.35876 13.7023C3.08956 14.9715 3.08956 17.0293 4.35876 18.2985L4.70191 18.6416C5.97111 19.9108 8.02888 19.9108 9.29809 18.6416L9.46965 18.4701C9.76253 18.1772 10.2374 18.1771 10.5303 18.47C10.8232 18.7629 10.8232 19.2378 10.5303 19.5307L10.3588 19.7023C8.50379 21.5572 5.49624 21.5573 3.64125 19.7023L3.2981 19.3591C1.44311 17.5041 1.44311 14.4966 3.2981 12.6416L6.64125 9.29847Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.6412 5.29847C15.4962 3.44348 18.5037 3.44348 20.3587 5.29847L20.7019 5.64161C22.5568 7.4966 22.5568 10.5041 20.7019 12.3591L17.3587 15.7023C15.5037 17.5573 12.4962 17.5573 10.6412 15.7023L10.298 15.3591C9.52244 14.5835 9.07043 13.6044 8.9438 12.5936C8.89232 12.1826 9.18376 11.8077 9.59476 11.7562C10.0058 11.7047 10.3807 11.9961 10.4322 12.4071C10.5188 13.0988 10.8271 13.7668 11.3587 14.2985L11.7019 14.6416C12.9711 15.9108 15.0288 15.9108 16.298 14.6416L19.6412 11.2985C20.9104 10.0293 20.9104 7.97148 19.6412 6.70228L19.298 6.35913C18.0288 5.08993 15.9711 5.08993 14.7019 6.35913L14.5304 6.53063C14.2375 6.82356 13.7627 6.82362 13.4697 6.53077C13.1768 6.23791 13.1767 5.76304 13.4696 5.47011L13.6412 5.29847Z" fill="currentColor"/></svg>
220  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> RevOps </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Unify your revenue data</span> </div> </a><a href="/solutions/agency" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M3.75 3C3.33579 3 3 3.33579 3 3.75V5C3 9.28021 6.46979 12.75 10.75 12.75H11.25V20.25C11.25 20.6642 11.5858 21 12 21C12.4142 21 12.75 20.6642 12.75 20.25V16H13.25C17.5302 16 21 12.5302 21 8.25V6.75C21 6.33579 20.6642 6 20.25 6H19C16.3562 6 14.0216 7.32382 12.6229 9.34475C11.9618 5.73541 8.80036 3 5 3H3.75Z" fill="currentColor"/></svg>
221  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Agency </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Prove ROI for every client</span> </div> </a> </div> </div> <!-- Use Cases Column --> <div class="flex flex-col border-l pl-6 py-6 border-zinc-200" data-astro-cid-voiollt5> <span class="mb-3 px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Use Cases</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/use-cases/account-scoring" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Account scoring </a><a href="/use-cases/contact-reveal" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Contact reveal </a><a href="/use-cases/enrich-ga4" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> GA4 enrichment </a><a href="/use-cases/lead-generation" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Lead generation </a><a href="/use-cases/marketing-attribution" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Marketing attribution </a><a href="/use-cases/visitor-identification" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Visitor identification </a> </div> </div> </div> </div> </div> </div> <!-- Center nav item (Resources) --> <div class="flex items-center shrink-0" data-astro-cid-voiollt5> <!-- Resources Dropdown --> <div class="nav-dropdown-wrapper" data-dropdown="resources" data-astro-cid-voiollt5> <button type="button" class="nav-link nav-link-dropdown" data-astro-cid-voiollt5>
222Resources
223<span class="chevron-icon" data-astro-cid-voiollt5></span> </button> <div class="nav-dropdown-panel bg-white" data-astro-cid-voiollt5> <div class="grid grid-cols-[320px_192px] gap-x-6 px-6" data-astro-cid-voiollt5> <!-- Left Column: Learn, Support, Partners --> <div class="flex flex-col gap-5 py-6" data-astro-cid-voiollt5> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Learn</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/blog" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M11.25 5.37706L5.34848 4.06118C3.63055 3.67813 2 4.98515 2 6.74526V17.0845C2 18.3727 2.89421 19.4883 4.15152 19.7686L11.25 21.3514V5.37706Z" fill="currentColor"/><path d="M12.75 5.37706V21.3514L19.8485 19.7686C21.1058 19.4883 22 18.3727 22 17.0845V6.74526C22 4.98515 20.3694 3.67813 18.6515 4.06118L12.75 5.37706Z" fill="currentColor"/></svg>
224  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="flex items-center gap-2" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Blog </span>  </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Read playbooks &amp; updates</span> </div> </a> </div> </div> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Support</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="https://docs.snitcher.com" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" target="_blank" rel="noopener noreferrer" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 7.25C12 8.76878 13.2312 10 14.75 10H20V19.25C20 20.7688 18.7688 22 17.25 22H6.75C5.23122 22 4 20.7688 4 19.25V4.75C4 3.23122 5.23122 2 6.75 2H12V7.25ZM8.75 17.5C8.33579 17.5 8 17.8358 8 18.25C8 18.6642 8.33579 19 8.75 19H15.25C15.6642 19 16 18.6642 16 18.25C16 17.8358 15.6642 17.5 15.25 17.5H8.75ZM8.75 13.5C8.33579 13.5 8 13.8358 8 14.25C8 14.6642 8.33579 15 8.75 15H12.25C12.6642 15 13 14.6642 13 14.25C13 13.8358 12.6642 13.5 12.25 13.5H8.75Z" fill="currentColor"/><path d="M13.5732 2.5127L19.4873 8.42676C19.5111 8.45056 19.5344 8.475 19.5566 8.5H14.75C14.0597 8.5 13.5 7.94032 13.5 7.25V2.44336C13.525 2.46564 13.5494 2.48889 13.5732 2.5127Z" fill="currentColor"/></svg>
225  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="flex items-center gap-2" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Documentation </span> <svg width="14" height="14" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
226 </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Set up &amp; integrate Snitcher</span> </div> </a><a href="https://help.snitcher.com" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" target="_blank" rel="noopener noreferrer" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M14.2324 8.35396C13.966 7.4249 14.5031 6.45579 15.4322 6.18939L16.8741 5.77593C17.8032 5.50953 18.7723 6.04672 19.0387 6.97577L22.2085 18.0303C22.4749 18.9593 21.9377 19.9285 21.0087 20.1949L19.5668 20.6083C18.6377 20.8747 17.6686 20.3375 17.4022 19.4085L14.2324 8.35396Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M8.75 3C7.7835 3 7 3.7835 7 4.75V19.25C7 20.2165 7.7835 21 8.75 21H12.25C13.2165 21 14 20.2165 14 19.25V4.75C14 3.7835 13.2165 3 12.25 3H8.75ZM8.5 7.75C8.5 7.33579 8.83579 7 9.25 7H11.75C12.1642 7 12.5 7.33579 12.5 7.75C12.5 8.16421 12.1642 8.5 11.75 8.5H9.25C8.83579 8.5 8.5 8.16421 8.5 7.75ZM12.5 16.25C12.5 15.8358 12.1642 15.5 11.75 15.5H9.25C8.83579 15.5 8.5 15.8358 8.5 16.25C8.5 16.6642 8.83579 17 9.25 17H11.75C12.1642 17 12.5 16.6642 12.5 16.25Z" fill="currentColor"/><path d="M3.75 5C2.7835 5 2 5.7835 2 6.75V19.25C2 20.2165 2.7835 21 3.75 21H4.25C5.2165 21 6 20.2165 6 19.25V6.75C6 5.7835 5.2165 5 4.25 5H3.75Z" fill="currentColor"/></svg>
227  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="flex items-center gap-2" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Help center </span> <svg width="14" height="14" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
228 </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Read our knowledge base</span> </div> </a> </div> </div> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Partners</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/partners" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-jade
228-500 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M9.5 4V3.5C9.5 2.11929 10.6193 1 12 1C13.3807 1 14.5 2.11929 14.5 3.5V4H18.25C19.7688 4 21 5.23122 21 6.75V9C21 9.27614 20.7761 9.5 20.5 9.5C19.1193 9.5 18 10.6193 18 12C18 13.3807 19.1193 14.5 20.5 14.5C20.7761 14.5 21 14.7239 21 15V17.25C21 18.7688 19.7688 20 18.25 20H5.75C4.23122 20 3 18.7688 3 17.25V6.75C3 5.23122 4.23122 4 5.75 4H9.5Z" fill="currentColor"/></svg>
229  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Partner Program </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Agency, Expert &amp; Creator programs</span> </div> </a> </div> </div> </div> <!-- Right Column: Company, Contact --> <div class="flex flex-col gap-5 border-l pl-6 py-6 border-zinc-200" data-astro-cid-voiollt5> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Company</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/about" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> About us </a><a href="/careers" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Careers </a> </div> </div> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Contact</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <button type="button" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 cursor-pointer text-left text-zinc-800 hover:bg-zinc-50" data-intercom-action="showNewMessage" data-astro-cid-voiollt5>
229 Chat to support </button><a href="/demo" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Talk to sales </a> </div> </div> </div> </div> </div> </div> </div> <!-- Right nav group --> <div class="flex flex-1 items-center gap-1 xl:gap-2" data-astro-cid-voiollt5> <a href="/customers" class="nav-link" data-astro-cid-voiollt5>
230Customers
231</a> <a href="/pricing" class="nav-link" data-astro-cid-voiollt5>
232Pricing
233</a> </div> </div> <!-- Action Buttons --> <div class="relative z-10 flex flex-1 items-center justify-end gap-2 pointer-events-none [&>*]:pointer-events-auto" data-astro-cid-voiollt5>  <button id="mobile-menu-toggle" type="button" class="relative inline-flex h-10 items-center justify-center gap-2 rounded-full border border-[var(--alpha-border)] px-4 text-base font-semibold shadow transition-colors lg:hidden bg-white text-zinc-700 hover:bg-zinc-50" aria-expanded="false" aria-controls="mobile-menu" data-astro-cid-voiollt5> <span class="relative flex h-6 w-6 items-center justify-center" data-astro-cid-voiollt5> <svg id="hamburger-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" class="absolute h-6 w-6 transition-opacity duration-200" data-astro-cid-voiollt5> <path d="M2.75 12H21.25M2.75 5.75H21.25M2.75 18.25H21.25" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-voiollt5></path> </svg> <svg id="close-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" class="absolute h-5 w-5 opacity-0 transition-opacity duration-200" data-astro-cid-voiollt5> <path d="M18 6L6 18M6 6L18 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-voiollt5></path> </svg> </span> <span class="relative" data-astro-cid-voiollt5> <span id="menu-label" data-astro-cid-voiollt5>Menu</span> <span id="close-label" class="absolute left-0 opacity-0 transition-opacity duration-200" data-astro-cid-voiollt5>Close</span> </span> </button> <a href="https://app.snitcher.com/login" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white ring-1 ring-[var(--alpha-border)] !text-zinc-700 hover:bg-zinc-50 hidden lg:inline-flex" data-astro-cid-voiollt5>Log in</a>
233<script>
234  (function() {
235    function initButtonArrows() {
236      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
237        if (button.dataset.btnArrowInit) return;
238        button.dataset.btnArrowInit = 'true';
239        
240        var icon = button.querySelector('.btn-arrow-icon');
241        if (!icon) return;
242        
243        button.addEventListener('mouseenter', function() {
244          icon.classList.remove('slide-out');
245          icon.classList.add('slide-in');
246        });
247        
248        button.addEventListener('mouseleave', function() {
249          icon.classList.remove('slide-in');
250          icon.classList.add('slide-out');
251        });
252      });
253    }
254
255    if (document.readyState === 'loading') {
256      document.addEventListener('DOMContentLoaded', initButtonArrows);
257    } else {
258      initButtonArrows();
259    }
260    
261    document.addEventListener('astro:page-load', initButtonArrows);
262  })();
263</script>
263   <a href="https://app.snitcher.com/register" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-primary-500 !text-white hover:bg-primary-600 !pl-3 hidden lg:inline-flex"> <svg width="20" height="20" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg" class="shrink-0" aria-hidden="true"> <path d="M211.265 148.37C187.598 224.219 123.858 249.286 104.886 255.161C89.5631 259.93 84.2516 243.014 99.6384 238.244C116.524 233.017 173.258 210.709 194.355 143.094C205.691 106.783 186.837 68.5577 152.325 57.79C117.074 46.7923 80.2423 68.8045 69.2412 104.054C67.5848 109.361 63.152 113.363 58.9333 113.363C52.8997 113.363 50.3043 105.281 52.3341 98.7783C66.1181 54.6057 112.724 26.8804 157.601 40.8841C202.129 54.7776 225.257 103.517 211.265 148.37ZM168.681 5.37712C102.536 -15.2639 36.1026 25.9353 16.8302 87.6986C7.05086 119.034 28.0846 150.559 58.9017 150.559C79.3873 150.559 98.2403 135.991 104.747 115.134C109.855 98.7636 126.062 88.5621 141.246 93.2947C156.164 97.95 164.06 115.32 158.854 132.015C145.032 176.301 103.905 207.232 58.8369 207.236H58.8306C53.1805 207.236 47.4893 206.748 41.9193 205.783C26.0231 203.042 23.0907 220.506 38.9072 223.237C45.4654 224.373 52.1665 224.95 58.822 224.95C111.569 224.95 159.656 188.902 175.758 137.291C183.809 111.494 170.991 84.021 146.522 76.39C121.831 68.6852 95.7658 84.4535 87.8419 109.858C83.6147 123.396 71.7306 132.852 58.9427 132.852C40.047 132.852 27.4971 112.952 33.7365 92.9742C51.7151 35.4079 111.149 5.98231 163.405 22.2851C217.821 39.2652 247.198 98.6229 229.863 154.174C220.278 184.887 202.64 212.731 179.141 234.367C167.297 245.262 179.436 258.135 191.286 247.224C217.073 223.484 236.259 193.132 246.77 159.45C267.275 93.7541 231.625 25.0164 168.681 5.37712ZM58.6439 187.8C95.3789 187.8 128.937 162.473 140.255 126.211C142.694 118.381 139.514 113.349 135.392 112.062C131.306 110.787 125.784 113.124 123.348 120.937C114.327 149.843 87.7136 170.032 58.6287 170.032C44.0506 170.032 30.2484 164.946 18.717 155.324C6.35199 145.002 -4.98893 158.544 7.38454 168.884C22.2568 181.257 39.9787 187.797 58.6349 187.8H58.6439Z" fill="currentColor"></path> </svg> <span>Start for free</span> </a>
263<script>
264  (function() {
265    function initButtonArrows() {
266      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
267        if (button.dataset.btnArrowInit) return;
268        button.dataset.btnArrowInit = 'true';
269        
270        var icon = button.querySelector('.btn-arrow-icon');
271        if (!icon) return;
272        
273        button.addEventListener('mouseenter', function() {
274          icon.classList.remove('slide-out');
275          icon.classList.add('slide-in');
276        });
277        
278        button.addEventListener('mouseleave', function() {
279          icon.classList.remove('slide-in');
280          icon.classList.add('slide-out');
281        });
282      });
283    }
284
285    if (document.readyState === 'loading') {
286      document.addEventListener('DOMContentLoaded', initButtonArrows);
287    } else {
288      initButtonArrows();
289    }
290    
291    document.addEventListener('astro:page-load', initButtonArrows);
292  })();
293</script>
293 </div> </div> </div> </div> <div id="mobile-menu" class="absolute left-0 right-0 top-full z-40 max-h-[calc(100dvh-64px)] overflow-hidden rounded-b-2xl shadow-lg transition-[height] duration-300 ease-out lg:hidden bg-white" style="height: 0;" data-astro-cid-voiollt5> <div class="mobile-menu-scroll h-full px-6 pb-6 pt-4" data-astro-cid-voiollt5> <nav class="mb-6 space-y-2" data-astro-cid-voiollt5> <!-- Product dropdown --> <div class="mobile-dropdown" data-astro-cid-voiollt5> <button type="button" class="mobile-nav-link mobile-dropdown-toggle" aria-expanded="false" data-astro-cid-voiollt5>
294Product
295<span class="mobile-chevron" data-astro-cid-voiollt5></span> </button> <div class="mobile-submenu" data-astro-cid-voiollt5> <span class="block px-4 py-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>GTM Platform</span> <a href="/platform" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Platform </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Powered by Snitcher</span> <a href="/radar" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Radar </a><a href="/ip-to-company-api" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> IP to Company </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>How It Works</span> <a href="/identify" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Identify </a><a href="/signal" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Signal </a><a href="/automate" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Automate </a><a href="/engage" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Engage </a><a href="/measure" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Measure </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Explore</span> <a href="/changelog" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Changelog  </span> </a><a href="/integrations" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Integrations  </span> </a><a href="https://trust.snitcher.com" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" target="_blank" rel="noopener noreferrer" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Trust centre <svg width="16" height="16" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
296 </span> </a><a href="/demo" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Talk to sales  </span> </a> </div> </div> <!-- Solutions dropdown --> <div class="mobile-dropdown" data-astro-cid-voiollt5> <button type="button" class="mobile-nav-link mobile-dropdown-toggle" aria-expanded="false" data-astro-cid-voiollt5>
297Solutions
298<span class="mobile-chevron" data-astro-cid-voiollt5></span> </button> <div class="mobile-submenu" data-astro-cid-voiollt5> <span class="block px-4 py-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Teams</span> <a href="/solutions/sales" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Sales </a><a href="/solutions/marketing" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Marketing </a><a href="/solutions/revops" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> RevOps </a><a href="/solutions/agency" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Agency </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Use Cases</span> <a href="/use-cases/account-scoring" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Account scoring </a><a href="/use-cases/contact-reveal" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Contact reveal </a><a href="/use-cases/enrich-ga4" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> GA4 enrichment </a><a href="/use-cases/lead-generation" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Lead generation </a><a href="/use-cases/marketing-attribution" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Marketing attribution </a><a href="/use-cases/visitor-identification" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Visitor identification </a> </div> </div> <!-- Resources dropdown --> <div class="mobile-dropdown" data-astro-cid-voiollt5> <button type="button" class="mobile-nav-link mobile-dropdown-toggle" aria-expanded="false" data-astro-cid-voiollt5>
299Resources
300<span class="mobile-chevron" data-astro-cid-voiollt5></span> </button> <div class="mobile-submenu" data-astro-cid-voiollt5> <span class="block px-4 py-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Learn</span> <a href="/blog" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Blog  </span> </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Support</span> <a href="https://docs.snitcher.com" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" target="_blank" rel="noopener noreferrer" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Documentation <svg width="16" height="16" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
301 </span> </a><a href="https://help.snitcher.com" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" target="_blank" rel="noopener noreferrer" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Help center <svg width="16" height="16" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
302 </span> </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Partners</span> <a href="/partners" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Partner Program  </span> </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Company</span> <a href="/about" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> About us </a><a href="/careers" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Careers </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Contact</span> <button type="button" class="block rounded-lg px-4 py-2.5 text-base min-h-8 w-full text-left cursor-pointer hover:bg-zinc-50" data-intercom-action="showNewMessage" data-astro-cid-voiollt5>
302 Chat to support </button><a href="/demo" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Talk to sales </a> </div> </div> <!-- Direct links --> <a href="/customers" class="mobile-nav-link" data-astro-cid-voiollt5>
303Customers
304</a> <a href="/pricing" class="mobile-nav-link" data-astro-cid-voiollt5>
305Pricing
306</a> </nav> <div class="flex flex-col gap-2" data-astro-cid-voiollt5> <a href="https://app.snitcher.com/login" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white ring-1 ring-[var(--alpha-border)] !text-zinc-700 hover:bg-zinc-50 w-full justify-center" data-astro-cid-voiollt5>Log in</a>
306<script>
307  (function() {
308    function initButtonArrows() {
309      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
310        if (button.dataset.btnArrowInit) return;
311        button.dataset.btnArrowInit = 'true';
312        
313        var icon = button.querySelector('.btn-arrow-icon');
314        if (!icon) return;
315        
316        button.addEventListener('mouseenter', function() {
317          icon.classList.remove('slide-out');
318          icon.classList.add('slide-in');
319        });
320        
321        button.addEventListener('mouseleave', function() {
322          icon.classList.remove('slide-in');
323          icon.classList.add('slide-out');
324        });
325      });
326    }
327
328    if (document.readyState === 'loading') {
329      document.addEventListener('DOMContentLoaded', initButtonArrows);
330    } else {
331      initButtonArrows();
332    }
333    
334    document.addEventListener('astro:page-load', initButtonArrows);
335  })();
336</script>
336 <a href="https://app.snitcher.com/register" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-primary-500 !text-white hover:bg-primary-600 !pl-3 w-full justify-center"> <svg width="20" height="20" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg" class="shrink-0" aria-hidden="true"> <path d="M211.265 148.37C187.598 224.219 123.858 249.286 104.886 255.161C89.5631 259.93 84.2516 243.014 99.6384 238.244C116.524 233.017 173.258 210.709 194.355 143.094C205.691 106.783 186.837 68.5577 152.325 57.79C117.074 46.7923 80.2423 68.8045 69.2412 104.054C67.5848 109.361 63.152 113.363 58.9333 113.363C52.8997 113.363 50.3043 105.281 52.3341 98.7783C66.1181 54.6057 112.724 26.8804 157.601 40.8841C202.129 54.7776 225.257 103.517 211.265 148.37ZM168.681 5.37712C102.536 -15.2639 36.1026 25.9353 16.8302 87.6986C7.05086 119.034 28.0846 150.559 58.9017 150.559C79.3873 150.559 98.2403 135.991 104.747 115.134C109.855 98.7636 126.062 88.5621 141.246 93.2947C156.164 97.95 164.06 115.32 158.854 132.015C145.032 176.301 103.905 207.232 58.8369 207.236H58.8306C53.1805 207.236 47.4893 206.748 41.9193 205.783C26.0231 203.042 23.0907 220.506 38.9072 223.237C45.4654 224.373 52.1665 224.95 58.822 224.95C111.569 224.95 159.656 188.902 175.758 137.291C183.809 111.494 170.991 84.021 146.522 76.39C121.831 68.6852 95.7658 84.4535 87.8419 109.858C83.6147 123.396 71.7306 132.852 58.9427 132.852C40.047 132.852 27.4971 112.952 33.7365 92.9742C51.7151 35.4079 111.149 5.98231 163.405 22.2851C217.821 39.2652 247.198 98.6229 229.863 154.174C220.278 184.887 202.64 212.731 179.141 234.367C167.297 245.262 179.436 258.135 191.286 247.224C217.073 223.484 236.259 193.132 246.77 159.45C267.275 93.7541 231.625 25.0164 168.681 5.37712ZM58.6439 187.8C95.3789 187.8 128.937 162.473 140.255 126.211C142.694 118.381 139.514 113.349 135.392 112.062C131.306 110.787 125.784 113.124 123.348 120.937C114.327 149.843 87.7136 170.032 58.6287 170.032C44.0506 170.032 30.2484 164.946 18.717 155.324C6.35199 145.002 -4.98893 158.544 7.38454 168.884C22.2568 181.257 39.9787 187.797 58.6349 187.8H58.6439Z" fill="currentColor"></path> </svg> <span>Start for free</span> </a>
336<script>
337  (function() {
338    function initButtonArrows() {
339      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
340        if (button.dataset.btnArrowInit) return;
341        button.dataset.btnArrowInit = 'true';
342        
343        var icon = button.querySelector('.btn-arrow-icon');
344        if (!icon) return;
345        
346        button.addEventListener('mouseenter', function() {
347          icon.classList.remove('slide-out');
348          icon.classList.add('slide-in');
349        });
350        
351        button.addEventListener('mouseleave', function() {
352          icon.classList.remove('slide-in');
353          icon.classList.add('slide-out');
354        });
355      });
356    }
357
358    if (document.readyState === 'loading') {
359      document.addEventListener('DOMContentLoaded', initButtonArrows);
360    } else {
361      initButtonArrows();
362    }
363    
364    document.addEventListener('astro:page-load', initButtonArrows);
365  })();
366</script>
366 </div> </div> </div> </div>   </nav> <!-- Backdrop blur overlay (visible when dropdown is open) --> <div id="navbar-backdrop" class="pointer-events-none fixed inset-0 z-40 opacity-0 backdrop-blur-sm transition-opacity duration-200 bg-white/60" data-astro-cid-voiollt5></div>   <main class="w-full">  <section class="page-section" data-variant="light" id="hero" data-astro-cid-dnku4hyr>        <div class="section-container" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <section class="w-full relative isolate overflow-x-clip" data-astro-cid-eaz7zv6b> <!-- Animated Dot Grid Background -->
367    <div class="hero-dot-grid absolute -z-30 pointer-events-none" aria-hidden="true" data-astro-cid-wlyiyr5g> <canvas id="hero-dot-canvas" width="960" height="880" data-astro-cid-wlyiyr5g></canvas> </div> 
367<script>(function(){const fingerprintPath = "M479.105 123.715C508.165 123.715 537.121 127.711 565.171 135.593H565.172C723.388 180.032 810.209 336.775 758.861 484.95C672.839 733.133 441.175 815.165 372.169 834.403H372.168C366.003 836.13 360.107 837 354.642 837C336.377 837 326.758 827.516 324.962 818.309L324.883 817.87C323.209 807.91 329.776 793.276 355.402 786.121C417.687 768.769 627.121 694.667 705.011 469.948C725.42 411.091 720.361 348.893 690.761 294.827C661.139 240.726 610.544 201.314 548.32 183.835C525.75 177.497 502.431 174.283 479.011 174.283C371.227 174.283 272.458 241.933 238.85 338.877C233.287 354.919 218.695 366.846 205.139 366.846C197.37 366.846 192.438 362.809 189.639 359.385C182.575 350.738 180.643 336.461 185.006 323.875C225.841 206.064 346.768 123.715 479.105 123.715ZM478.957 1C521.618 1.00001 564.274 6.90814 605.741 18.5576C716.526 49.6745 807.083 118.96 860.766 213.628C914.723 308.784 924.703 418.105 888.864 521.47C850.909 630.962 781.867 729.724 689.108 807.245L686.913 809.072C674.246 819.571 663.235 821.729 656.295 821.729C645.632 821.729 636.927 816.576 633.413 808.462C628.742 797.678 633.925 784.249 648.096 772.514H648.097C735.016 700.475 799.655 608.478 835.02 506.468C866.145 416.68 857.829 321.486 811.604 238.445C765.548 155.708 687.314 95.0634 591.164 67.4512L588.89 66.8057C553.722 56.9306 517.085 51.9238 479.998 51.9238C310.011 51.9239 160.83 152.525 108.854 302.354C96.7623 337.202 102.92 374.427 125.368 401.906C144.581 425.426 173.675 438.9 205.174 438.9C253.822 438.9 298.979 406.62 315.014 360.395V360.394C338.279 293.254 405.65 246.323 478.859 246.323C494.333 246.323 509.728 248.445 524.608 252.625C566.639 264.424 600.584 291.382 620.213 328.518C639.767 365.513 642.843 408.092 628.859 448.432C570.466 616.91 396.076 734.653 204.729 734.653C180.618 734.653 156.325 732.773 132.521 729.062H132.52C106.527 725.021 96.6245 711.156 97.7158 699.718C98.7049 689.31 109.097 678.338 130.959 678.338C134.503 678.338 138.264 678.642 142.138 679.243C162.762 682.456 183.832 684.085 204.76 684.085H204.761C370.933 684.071 522.658 581.841 574.417 435.154L575.021 433.426C594.797 376.342 564.645 316.848 507.754 300.864H507.753C498.292 298.212 488.494 296.864 478.629 296.864C430.011 296.864 384.88 329.156 368.849 375.396V375.396C345.592 442.527 278.225 489.448 205.022 489.448C155.516 489.448 109.979 468.431 80.0645 431.818C47.034 391.388 37.6623 337.388 55.0059 287.355C113.434 118.797 287.749 1 478.957 1ZM477.126 369.297C479.15 369.297 481.136 369.531 483.041 369.995L483.853 370.208C490.288 372.016 496.057 376.531 499.22 383.507C502.381 390.481 502.979 400.016 498.863 411.912C457.99 529.799 336.787 612.2 204.079 612.2H204.047C137.242 612.195 73.7533 591.267 20.3223 551.662L19.0625 550.723C3.84284 539.273 -2.02901 525.738 2.49023 514.525C5.87123 506.138 14.6726 500.811 25.6582 500.811C35.1161 500.811 45.338 504.677 55.2158 512.099C98.2043 544.388 149.664 561.455 204.021 561.455C312.304 561.455 411.42 493.831 445.02 396.916V396.915C452.117 376.42 466.351 369.297 477.126 369.297Z";
368const dark = false;
369
370  // Base dimensions - expanded to include full fingerprint with padding
371  const BASE_WIDTH = 960;
372  const BASE_HEIGHT = 880;
373  
374  // Offset to center the fingerprint (original was 911x838, path extends to ~925)
375  const OFFSET_X = 20;
376  const OFFSET_Y = 20;
377  
378  // Vertical fade configuration - fade to background at bottom
379  const FADE_START = 0.45;  // Start fading at 45% down
380  const FADE_END = 0.95;    // Fully faded at 95% down
381  
382  // Center fade configuration - reduce opacity in center for text readability
383  const CENTER_X = 0.5;     // Center of the canvas (normalized)
384  const CENTER_Y = 0.35;    // Slightly above center where text sits
385  const CENTER_FADE_RADIUS = 1;  // Radius of the fade area
386  const CENTER_MIN_OPACITY = 0;   // Minimum opacity multiplier at center
387  
388  // Mobile detection
389  const isMobile = window.innerWidth < 768;
390  
391  // Configuration - adjusted for mobile performance
392  const CONFIG = {
393    cellSize: isMobile ? 10 : 7,        // Larger cells = fewer dots on mobile
394    dotSize: 3,
395    fillRate: isMobile ? 0.7 : 1,       // Sparser on mobile
396    animationSpeed: 0.003,
397    minOpacity: 0.01,
398    maxChannel: 220,
399    frameThrottle: isMobile ? 50 : 33,  // ~20fps on mobile, ~30fps on desktop
400  };
401
402  // Gradient anchor points - different for light and dark modes
403  // Light mode: zinc-500 to zinc-300
404  // Dark mode: zinc-600 to zinc-800 (inverted for dark background)
405  const gradientPoints = dark ? [
406    // Dark mode colors (zinc-600 to zinc-800)
407    // zinc-600: #52525b = RGB(82, 82, 91)
408    // zinc-700: #3f3f46 = RGB(63, 63, 70)
409    // zinc-800: #27272a = RGB(39, 39, 42)
410    { x: 0.0, y: 0.0, color: [82, 82, 91] },    // zinc-600 (top)
411    { x: 1.0, y: 0.0, color: [82, 82, 91] },    // zinc-600 (top)
412    { x: 0.5, y: 0.5, color: [63, 63, 70] },    // zinc-700 (mid)
413    { x: 0.0, y: 1.0, color: [39, 39, 42] },    // zinc-800 (bottom)
414    { x: 1.0, y: 1.0, color: [39, 39, 42] },    // zinc-800 (bottom)
415  ] : [
416    // Light mode colors (zinc-500 to zinc-300)
417    // zinc-500: #71717a = RGB(113, 113, 122)
418    // zinc-300: #d4d4d8 = RGB(212, 212, 216)
419    { x: 0.0, y: 0.0, color: [113, 113, 122] },   // zinc-500 (top)
420    { x: 1.0, y: 0.0, color: [113, 113, 122] },   // zinc-500 (top)
421    { x: 0.5, y: 0.5, color: [162, 162, 169] },   // mid blend
422    { x: 0.0, y: 1.0, color: [212, 212, 216] },   // zinc-300 (bottom)
423    { x: 1.0, y: 1.0, color: [212, 212, 216] },   // zinc-300 (bottom)
424  ];
425  
426  // Mouse hover color effect configuration
427  const BRAND_COLOR = { r: 76, g: 76, b: 255 }; // #4C4CFF - Snitcher brand color
428  const COLOR_RADIUS = 120;  // Radius of the color effect in pixels
429  const COLOR_FALLOFF = 2;   // Falloff exponent for smooth blending
430  const MOUSE_LERP = 0.12;   // Smoothing factor for color effect position
431
432  // Seeded random for consistency
433  function seededRandom(seed) {
434    const x = Math.sin(seed * 12.9898 + seed * 78.233) * 43758.5453;
435    return x - Math.floor(x);
436  }
437
438  // Calculate blended color
439  function getBlendedColor(normalizedX, normalizedY) {
440    let totalWeight = 0;
441    let r = 0, g = 0, b = 0;
442    
443    for (const point of gradientPoints) {
444      const dx = normalizedX - point.x;
445      const dy = normalizedY - point.y;
446      const distance = Math.sqrt(dx * dx + dy * dy);
447      const weight = 1 / Math.pow(distance + 0.12, 3);
448      totalWeight += weight;
449      r += point.color[0] * weight;
450      g += point.color[1] * weight;
451      b += point.color[2] * weight;
452    }
453    
454    r = Math.min(Math.round(r / totalWeight), CONFIG.maxChannel);
455    g = Math.min(Math.round(g / totalWeight), CONFIG.maxChannel);
456    b = Math.min(Math.round(b / totalWeight), CONFIG.maxChannel);
457    
458    return { r, g, b };
459  }
460
461  // Store cleanup function for page transitions
462  let cleanupHeroDotGrid = null;
463  
464  function initHeroDotGrid() {
465    // Clean up any existing instance first
466    if (cleanupHeroDotGrid) {
467      cleanupHeroDotGrid();
468      cleanupHeroDotGrid = null;
469    }
470    
471    const canvas = document.getElementById('hero-dot-canvas');
472    if (!canvas) return;
473    const ctx = canvas.getContext('2d', { willReadFrequently: false });
474    
475    // Handle high-DPI/retina displays
476    const dpr = window.devicePixelRatio || 1;
477    
478    // Set canvas size accounting for pixel ratio
479    canvas.width = BASE_WIDTH * dpr;
480    canvas.height = BASE_HEIGHT * dpr;
481    
482    // Scale context to match
483    ctx.scale(dpr, dpr);
484    
485    // Use base dimensions for all calculations
486    const width = BASE_WIDTH;
487    const height = BASE_HEIGHT;
488    
489    // Create fingerprint mask at base resolution
490    const maskCanvas = document.createElement('canvas');
491    maskCanvas.width = width;
492    maskCanvas.height = height;
493    const maskCtx = maskCanvas.getContext('2d');
494    
495    // Draw fingerprint path to mask with offset for padding
496    maskCtx.translate(OFFSET_X, OFFSET_Y);
497    const path = new Path2D(fingerprintPath);
498    maskCtx.fillStyle = 'white';
499    maskCtx.fill(path);
500    maskCtx.lineWidth = 20;
501    maskCtx.strokeStyle = 'white';
502    maskCtx.stroke(path);
503    maskCtx.translate(-OFFSET_X, -OFFSET_Y);
504    
505    // Get mask data
506    const maskData = maskCtx.getImageData(0, 0, width, height).data;
507    
508    // Check if point is inside fingerprint
509    function getMaskValue(x, y) {
510      const px = Math.floor(x);
511      const py = Math.floor(y);
512      if (px < 0 || px >= width || py < 0 || py >= height) return 0;
513      const idx = (py * width + px) * 4;
514      return maskData[idx];
515    }
516    
517    function isInsideFingerprint(x, y) {
518      return getMaskValue(x, y) > 128;
519    }
520    
521    // Check if point is near the edge of the fingerprint
522    function getEdgeDistance(x, y, checkRadius) {
523      const inside = isInsideFingerprint(x, y);
524      let minDist = checkRadius;
525      
526      // Sample points in a circle to find edge
527      for (let angle = 0; angle < Math.PI * 2; angle += Math.PI / 4) {
528        for (let r = 1; r <= checkRadius; r += 2) {
529          const sx = x + Math.cos(angle) * r;
530          const sy = y + Math.sin(angle) * r;
531          const sampleInside = isInsideFingerprint(sx, sy);
532          if (sampleInside !== inside) {
533            minDist = Math.min(minDist, r);
534            break;
535          }
536        }
537      }
538      return { inside, distToEdge: minDist };
539    }
540    
541    // Generate dots
542    const gridCols = Math.ceil(width / CONFIG.cellSize);
543    const gridRows = Math.ceil(height / CONFIG.cellSize);
544    const dots = [];
545    const SCATTER_RADIUS = 25; // How far to scatter dots from edge
546    
547    for (let row = 0; row < gridRows; row++) {
548      for (let col = 0; col < gridCols; col++) {
549        const seed = row * gridCols + col;
550        const random = seededRandom(seed);
551        
552        if (random > CONFIG.fillRate) continue;
553        
554        const x = col * CONFIG.cellSize;
555        const y = row * CONFIG.cellSize;
556        
557        const { inside, distToEdge } = getEdgeDistance(x, y, SCATTER_RADIUS);
558        
559        // Determine if dot should be shown based on edge proximity
560        let showDot = false;
561        if (inside) {
562          // Inside the shape - always show unless near edge with random chance
563          if (distToEdge > SCATTER_RADIUS * 0.4) {
564            showDot = true; // Far from edge, always show
565          } else {
566            // Near edge - small random chance to hide (creates scattered inner edge)
567            const hideChance = (1 - distToEdge / (SCATTER_RADIUS * 0.4)) * 0.25;
568            showDot = seededRandom(seed + 7000) > hideChance;
569          }
570        } else {
571          // Outside the shape - show with decreasing probability near edge (more dense)
572          if (distToEdge < SCATTER_RADIUS) {
573            const showChance = Math.pow(1 - distToEdge / SCATTER_RADIUS, 1.5) * 0.75;
574            showDot = seededRandom(seed + 8000) < showChance;
575          }
576        }
577        
578        if (!showDot) continue;
579        
580        const normalizedX = col / gridCols;
581        const normalizedY = row / gridRows;
582        const color = getBlendedColor(normalizedX, normalizedY);
583        const baseOpacity = 0.5 + seededRandom(seed + 3000) * 0.45;
584        const phase = seededRandom(seed + 4000) * Math.PI * 2;
585        
586        // Calculate edge fade - dots near/outside edges are always lighter
587        let edgeFade = 1;
588        if (!inside) {
589          // Outside dots are always very light (20-40% opacity)
590          edgeFade = 0.2 + (1 - distToEdge / SCATTER_RADIUS) * 0.2;
591        } else if (distToEdge < SCATTER_RADIUS * 0.6) {
592          // Inside but near edge - fade based on distance
593          edgeFade = 0.4 + (distToEdge / (SCATTER_RADIUS * 0.6)) * 0.6;
594        }
595        
596        // Calculate vertical fade factor (1 at top, 0 at bottom)
597        let verticalFade = 1;
598        if (normalizedY > FADE_START) {
599          verticalFade = 1 - Math.min(1, (normalizedY - FADE_START) / (FADE_END - FADE_START));
600          // Apply easing for smoother fade
601          verticalFade = verticalFade * verticalFade;
602        }
603        
604        // Calculate center fade factor (reduce opacity near center for text readability)
605        const dx = normalizedX - CENTER_X;
606        const dy = normalizedY - CENTER_Y;
607        const distFromCenter = Math.sqrt(dx * dx + dy * dy);
608        let centerFade = 1;
609        if (distFromCenter < CENTER_FADE_RADIUS) {
610          // Smooth falloff from edge to center
611          const t = 1 - (distFromCenter / CENTER_FADE_RADIUS);
612          centerFade = CENTER_MIN_OPACITY + (1 - CENTER_MIN_OPACITY) * (1 - t * t);
613        }
614        
615        // Combined fade factor
616        const fadeFactor = verticalFade * centerFade * edgeFade;
617        
618        // Individual animation speed variation (0.7x to 1.3x base speed)
619        const speedMult = 0.7 + seededRandom(seed + 5000) * 0.6;
620        
621        // Secondary wave phase for more complex movement
622        const phase2 = seededRandom(seed + 6000) * Math.PI * 2;
623        
624        dots.push({ 
625          x, y, 
626          // Current offset from original position (for mouse repulsion)
627          offsetX: 0, 
628          offsetY: 0,
629          color, baseOpacity, phase, phase2, speedMult, fadeFactor, seed 
630        });
631      }
632    }
633    
634    // Check for reduced motion preference
635    const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
636    
637    // Mouse interaction configuration
638    const MOUSE_RADIUS = 80;      // Radius of mouse influence
639    const REPULSION_STRENGTH = 50; // How far dots move away
640    const RETURN_SPEED = 0.15;     // How fast dots return (0-1, higher = faster)
641    
642    // Mouse position tracking (in canvas coordinates)
643    let mouseX = -1000;
644    let mouseY = -1000;
645    let mouseActive = false;
646    
647    // Smooth mouse position for color effect (lerped)
648    let smoothMouseX = -1000;
649    let smoothMouseY = -1000;
650    let targetMouseX = -1000;
651    let targetMouseY = -1000;
652    
653    // Get canvas bounding rect for coordinate conversion
654    function getCanvasCoords(clientX, clientY) {
655      const rect = canvas.getBoundingClientRect();
656      const scaleX = width / rect.width;
657      const scaleY = height / rect.height;
658      return {
659        x: (clientX - rect.left) * scaleX,
660        y: (clientY - rect.top) * scaleY
661      };
662    }
663    
664    // Check if coordinates are within canvas bounds (with padding for edge effect)
665    function isNearCanvas(canvasX, canvasY) {
666      const padding = COLOR_RADIUS;
667      return canvasX >= -padding && canvasX <= width + padding &&
668             canvasY >= -padding && canvasY <= height + padding;
669    }
670    
671    // Track mouse at window level for color effect (works even when canvas is behind other elements)
672    const windowMouseMoveHandler = (e) => {
673      const coords = getCanvasCoords(e.clientX, e.clientY);
674      if (isNearCanvas(coords.x, coords.y)) {
675        targetMouseX = coords.x;
676        targetMouseY = coords.y;
677      } else {
678        targetMouseX = -1000;
679        targetMouseY = -1000;
680      }
681    };
682    window.addEventListener('mousemove', windowMouseMoveHandler);
683    
684    const documentMouseLeaveHandler = () => {
685      targetMouseX = -1000;
686      targetMouseY = -1000;
687    };
688    document.addEventListener('mouseleave', documentMouseLeaveHandler);
689    
690    // Canvas-level mouse tracking for repulsion (needs pointer-events)
691    const canvasMouseMoveHandler = (e) => {
692      const coords = getCanvasCoords(e.clientX, e.clientY);
693      mouseX = coords.x;
694      mouseY = coords.y;
695      mouseActive = true;
696    };
697    canvas.addEventListener('mousemove', canvasMouseMoveHandler);
698    
699    const canvasMouseLeaveHandler = () => {
700      mouseActive = false;
701    };
702    canvas.addEventListener('mouseleave', canvasMouseLeaveHandler);
703    
704    // Touch support for mobile
705    const touchStartHandler = (e) => {
706      const touch = e.touches[0];
707      const coords = getCanvasCoords(touch.clientX, touch.clientY);
708      if (isNearCanvas(coords.x, coords.y)) {
709        targetMouseX = coords.x;
710        targetMouseY = coords.y;
711        smoothMouseX = targetMouseX;
712        smoothMouseY = targetMouseY;
713      }
714    };
715    window.addEventListener('touchstart', touchStartHandler, { passive: true });
716    
717    const touchMoveHandler = (e) => {
718      const touch = e.touches[0];
719      const coords = getCanvasCoords(touch.clientX, touch.clientY);
720      if (isNearCanvas(coords.x, coords.y)) {
721        targetMouseX = coords.x;
722        targetMouseY = coords.y;
723      } else {
724        targetMouseX = -1000;
725        targetMouseY = -1000;
726      }
727    };
728    window.addEventListener('touchmove', touchMoveHandler, { passive: true });
729    
730    const touchEndHandler = () => {
731      targetMouseX = -1000;
732      targetMouseY = -1000;
733    };
734    window.addEventListener('touchend', touchEndHandler);
735    
736    // Animation loop
737    let animationId;
738    let lastTime = 0;
739    
740    function animate(time) {
741      // Throttle framerate for performance (lower on mobile)
742      if (time - lastTime < CONFIG.frameThrottle) {
743        animationId = requestAnimationFrame(animate);
744        return;
745      }
746      lastTime = time;
747      
748      // Smoothly interpolate mouse position for color effect
749      smoothMouseX += (targetMouseX - smoothMouseX) * MOUSE_LERP;
750      smoothMouseY += (targetMouseY - smoothMouseY) * MOUSE_LERP;
751      
752      ctx.clearRect(0, 0, width, height);
753      
754      const halfDot = CONFIG.dotSize / 2;
755      
756      for (const dot of dots) {
757        // Calculate mouse repulsion
758        if (!prefersReducedMotion) {
759          const dx = dot.x - mouseX;
760          const dy = dot.y - mouseY;
761          const distance = Math.sqrt(dx * dx + dy * dy);
762          
763          if (mouseActive && distance < MOUSE_RADIUS) {
764            // Calculate repulsion force (stronger when closer)
765            const force = (1 - distance / MOUSE_RADIUS) * REPULSION_STRENGTH;
766            const angle = Math.atan2(dy, dx);
767            
768            // Target offset based on repulsion
769            const targetOffsetX = Math.cos(angle) * force;
770            const targetOffsetY = Math.sin(angle) * force;
771            
772            // Smoothly move toward target offset
773            dot.offsetX += (targetOffsetX - dot.offsetX) * 0.3;
774            dot.offsetY += (targetOffsetY - dot.offsetY) * 0.3;
775          } else {
776            // Return to original position with spring effect
777            dot.offsetX *= (1 - RETURN_SPEED);
778            dot.offsetY *= (1 - RETURN_SPEED);
779          }
780        }
781        
782        let opacity;
783        if (prefersReducedMotion) {
784          opacity = dot.baseOpacity;
785        } else {
786          // Primary wave with individual speed
787          const wave1 = Math.sin(time * CONFIG.animationSpeed * dot.speedMult + dot.phase);
788          
789          // Secondary wave at different frequency for complexity
790          const wave2 = Math.sin(time * CONFIG.animationSpeed * 0.7 + dot.phase2);
791          
792          // Combine waves (primary dominates, secondary adds variation)
793          const combinedWave = wave1 * 0.7 + wave2 * 0.3;
794          
795          // Sharpen the wave for more "pop" (power curve)
796          const normalizedWave = (combinedWave + 1) / 2; // 0 to 1
797          const sharpenedWave = Math.pow(normalizedWave, 1.5);
798          
799          // Occasional sparkle effect - random bright flash
800          const sparkleChance = Math.sin(time * 0.001 + dot.seed) * 0.5 + 0.5;
801          const sparkle = sparkleChance > 0.97 ? 1.5 : 1;
802          
803          const minOp = Math.max(CONFIG.minOpacity, dot.baseOpacity * 0.08);
804          opacity = (minOp + (dot.baseOpacity - minOp) * sharpenedWave) * sparkle;
805          opacity = Math.min(opacity, 1); // Clamp to 1
806        }
807        
808        // Apply vertical fade
809        const finalOpacity = opacity * dot.fadeFactor;
810        
811        // Calculate color based on distance to mouse (brand color glow effect)
812        const colorDx = dot.x - smoothMouseX;
813        const colorDy = dot.y - smoothMouseY;
814        const colorDistance = Math.sqrt(colorDx * colorDx + colorDy * colorDy);
815        
816        let finalR = dot.color.r;
817        let finalG = dot.color.g;
818        let finalB = dot.color.b;
819        let opacityBoost = 1;
820        
821        if (colorDistance < COLOR_RADIUS) {
822          // Calculate blend factor with smooth falloff
823          const normalizedDist = colorDistance / COLOR_RADIUS;
824          const blendFactor = Math.pow(1 - normalizedDist, COLOR_FALLOFF);
825          
826          // Lerp colors toward brand color
827          finalR = Math.round(dot.color.r + (BRAND_COLOR.r - dot.color.r) * blendFactor);
828          finalG = Math.round(dot.color.g + (BRAND_COLOR.g - dot.color.g) * blendFactor);
829          finalB = Math.round(dot.color.b + (BRAND_COLOR.b - dot.color.b) * blendFactor);
830          
831          // Boost opacity slightly for dots near cursor (creates glow effect)
832          opacityBoost = 1 + blendFactor * 0.6;
833        }
834        
835        const effectiveOpacity = Math.min(finalOpacity * opacityBoost, 1);
836        
837        // Render dot with offset
838        const renderX = dot.x + dot.offsetX;
839        const renderY = dot.y + dot.offsetY;
840        
841        ctx.fillStyle = `rgba(${finalR}, ${finalG}, ${finalB}, ${effectiveOpacity})`;
842        ctx.fillRect(
843          renderX - halfDot,
844          renderY - halfDot,
845          CONFIG.dotSize,
846          CONFIG.dotSize
847        );
848      }
849      
850      animationId = requestAnimationFrame(animate);
851    }
852    
853    // Only start animation when visible (IntersectionObserver fires immediately on observe)
854    const observer = new IntersectionObserver((entries) => {
855      entries.forEach(entry => {
856        if (entry.isIntersecting) {
857          if (!animationId) {
858            lastTime = 0; // Reset timing
859            animationId = requestAnimationFrame(animate);
860          }
861        } else {
862          if (animationId) {
863            cancelAnimationFrame(animationId);
864            animationId = null;
865          }
866        }
867      });
868    }, { threshold: 0 });
869    
870    // Start observing - animation will only begin if canvas is visible
871    observer.observe(canvas);
872    
873    // Store cleanup function
874    cleanupHeroDotGrid = () => {
875      if (animationId) {
876        cancelAnimationFrame(animationId);
877        animationId = null;
878      }
879      observer.disconnect();
880      window.removeEventListener('mousemove', windowMouseMoveHandler);
881      document.removeEventListener('mouseleave', documentMouseLeaveHandler);
882      canvas.removeEventListener('mousemove', canvasMouseMoveHandler);
883      canvas.removeEventListener('mouseleave', canvasMouseLeaveHandler);
884      window.removeEventListener('touchstart', touchStartHandler);
885      window.removeEventListener('touchmove', touchMoveHandler);
886      window.removeEventListener('touchend', touchEndHandler);
887    };
888  }
889  
890  // Run on page load
891  if (document.readyState === 'loading') {
892    document.addEventListener('DOMContentLoaded', initHeroDotGrid);
893  } else {
894    initHeroDotGrid();
895  }
896  
897  // Re-run on Astro page transitions
898  document.addEventListener('astro:page-load', initHeroDotGrid);
899  
900  // Cleanup on page navigation
901  document.addEventListener('astro:before-swap', () => {
902    if (cleanupHeroDotGrid) {
903      cleanupHeroDotGrid();
904      cleanupHeroDotGrid = null;
905    }
906  });
907})();</script>
907   <div class="px-6 md:px-16" data-astro-cid-eaz7zv6b> <div class="max-w-3xl mx-auto" data-astro-cid-eaz7zv6b> <div class="flex flex-col gap-8 items-center w-full relative z-10" data-astro-cid-eaz7zv6b> <!-- Badge --> <a href="/blog/introducing-the-new-snitcher-inbox" class="inline-flex items-center gap-1.5 h-8 px-4 py-3 bg-white border border-[var(--alpha-border)] rounded-full shadow text-sm font-medium hover:bg-zinc-50 transition-colors">New on our blog: 📥 Snitcher Inbox 2.0<svg width="16" height="16" class="-mr-1.5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.1161 5.36612C13.6043 4.87796 14.3957 4.87796 14.8839 5.36612L20.6339 11.1161C20.8683 11.3505 21 11.6685 21 12C21 12.3315 20.8683 12.6494 20.6339 12.8839L14.8839 18.6339C14.3957 19.122 13.6043 19.122 13.1161 18.6339C12.628 18.1457 12.628 17.3543 13.1161 16.8661L16.7322 13.25H4.25C3.55964 13.25 3 12.6903 3 12C3 11.3096 3.55964 10.75 4.25 10.75H16.7322L13.1161 7.13388C12.628 6.64573 12.628 5.85427 13.1161 5.36612Z" fill="currentColor"/></svg>
908</a><style is:global>
909    .mask-logo {
910      mask-image: url('/logo-symbol.svg');
911      mask-size: contain;
912      mask-repeat: no-repeat;
913      mask-position: center;
914      -webkit-mask-image: url('/logo-symbol.svg');
915      -webkit-mask-size: contain;
916      -webkit-mask-repeat: no-repeat;
917      -webkit-mask-position: center;
918    }
919  </style> <!-- Heading and Description --> <div class="flex flex-col gap-3 items-center text-center [&#38;_p:not([class*=max-w-])]:max-w-2xl w-full [&#38;_h1]:text-balance" data-astro-cid-eaz7zv6b>  <h1>
920Uncover your <span class="pixel-reveal " id="pixel-reveal-nffox9sg9" data-total-chars="6" data-autoplay="true" data-astro-cid-kt72rz56><span class="pixel-reveal-text" data-astro-cid-kt72rz56><span class="pixel-word" data-astro-cid-kt72rz56><span class="pixel-char" data-char="h" data-index="0" data-astro-cid-kt72rz56>h</span><span class="pixel-char" data-char="i" data-index="1" data-astro-cid-kt72rz56>i</span><span class="pixel-char" data-char="d" data-index="2" data-astro-cid-kt72rz56>d</span><span class="pixel-char" data-char="d" data-index="3" data-astro-cid-kt72rz56>d</span><span class="pixel-char" data-char="e" data-index="4" data-astro-cid-kt72rz56>e</span><span class="pixel-char" data-char="n" data-index="5" data-astro-cid-kt72rz56>n</span></span></span><span class="pixel-reveal-decorative" aria-hidden="true" data-astro-cid-kt72rz56><span class="pixel-word" data-astro-cid-kt72rz56><span class="pixel-char" data-char="h" data-index="0" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>h</span></span><span class="pixel-char" data-char="i" data-index="1" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>i</span></span><span class="pixel-char" data-char="d" data-index="2" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>d</span></span><span class="pixel-char" data-char="d" data-index="3" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>d</span></span><span class="pixel-char" data-char="e" data-index="4" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>e</span></span><span class="pixel-char" data-char="n" data-index="5" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>n</span></span></span></span></span>
920<script>(function(){const componentId = "pixel-reveal-nffox9sg9";
921const decodeCharsStr = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,0,1,2,3,4,5,6,7,8,9";
922const cycles = 11;
923
924  (function() {
925    const container = document.getElementById(componentId);
926    if (!container) return;
927    if (container.hasAttribute('data-initialized')) return;
928    container.setAttribute('data-initialized', 'true');
929
930    const decorativeElement = container.querySelector('.pixel-reveal-decorative');
931    if (!decorativeElement) return;
932
933    const isAutoplay = container.getAttribute('data-autoplay') !== 'false';
934    const decodeChars = decodeCharsStr.split(',');
935    
936    // Brand color for pixel effects
937    const BRAND_COLOR = '#4C4CFF';
938    
939    // Animation configuration
940    const SCRAMBLE_INTERVAL = 45;
941    const SCRAMBLE_DURATION = cycles * SCRAMBLE_INTERVAL;
942    const STAGGER_DELAY = 50;
943    const REVEAL_STAGGER = 70;
944    const SPARKLE_CHANCE = 0.3;
945    
946    // Pixel dot configuration
947    const DOTS_PER_CHAR = 6;
948    const DOT_SIZE = 3;
949
950    // Track active timeouts/intervals for cleanup on hover mode
951    let activeTimers = [];
952    let activeIntervals = [];
953
954    // Seeded random for consistent results
955    function seededRandom(seed) {
956      const x = Math.sin(seed * 12.9898 + seed * 78.233) * 43758.5453;
957      return x - Math.floor(x);
958    }
959
960    // Create pixel dots for a character
961    function createPixelDots(dotsContainer, charIndex) {
962      dotsContainer.innerHTML = '';
963      
964      for (let i = 0; i < DOTS_PER_CHAR; i++) {
965        const dot = document.createElement('span');
966        dot.className = 'pixel-dot';
967        
968        // Random position within character bounds
969        const seed = charIndex * 100 + i;
970        const x = seededRandom(seed) * 100;
971        const y = seededRandom(seed + 1000) * 100;
972        
973        // Random animation phase for pulsing
974        const phase = seededRandom(seed + 2000) * Math.PI * 2;
975        const speed = 0.5 + seededRandom(seed + 3000) * 0.5;
976        
977        dot.style.cssText = `
978          left: ${x}%;
979          top: ${y}%;
980          width: ${DOT_SIZE}px;
981          height: ${DOT_SIZE}px;
982          --phase: ${phase};
983          --speed: ${speed};
984        `;
985        
986        dot.dataset.phase = String(phase);
987        dot.dataset.speed = String(speed);
988        
989        dotsContainer.appendChild(dot);
990      }
991    }
992
993    // Animate pixel dots with pulsing opacity (like hero dot grid)
994    let dotsAnimationId = null;
995    const allDots = [];
996
997    function animateDots(time) {
998      for (const { dot, phase, speed } of allDots) {
999        // Dual sine wave for complex pulsing (matching hero dot grid)
1000        const wave1 = Math.sin(time * 0.003 * speed + phase);
1001        const wave2 = Math.sin(time * 0.003 * 0.7 + phase * 1.3);
1002        const combinedWave = wave1 * 0.7 + wave2 * 0.3;
1003        
1004        // Normalize and sharpen
1005        const normalizedWave = (combinedWave + 1) / 2;
1006        const sharpenedWave = Math.pow(normalizedWave, 1.5);
1007        
1008        // Occasional sparkle
1009        const sparkleChance = Math.sin(time * 0.001 + parseFloat(dot.dataset.phase || '0')) * 0.5 + 0.5;
1010        const sparkle = sparkleChance > 0.95 ? 1.5 : 1;
1011        
1012        const opacity = Math.min((0.2 + sharpenedWave * 0.8) * sparkle, 1);
1013        dot.style.opacity = String(opacity);
1014      }
1015      
1016      dotsAnimationId = requestAnimationFrame(animateDots);
1017    }
1018
1019    function startDotsAnimation() {
1020      if (!dotsAnimationId) {
1021        dotsAnimationId = requestAnimationFrame(animateDots);
1022      }
1023    }
1024
1025    function stopDotsAnimation() {
1026      if (dotsAnimationId) {
1027        cancelAnimationFrame(dotsAnimationId);
1028        dotsAnimationId = null;
1029      }
1030    }
1031
1032    function clearAllTimers() {
1033      activeTimers.forEach(t => clearTimeout(t));
1034      activeIntervals.forEach(i => clearInterval(i));
1035      activeTimers = [];
1036      activeIntervals = [];
1037    }
1038
1039    function resetAnimation() {
1040      clearAllTimers();
1041      stopDotsAnimation();
1042      allDots.length = 0;
1043
1044      // Reset state attributes
1045      container.removeAttribute('data-animated');
1046      container.removeAttribute('data-complete');
1047
1048      // Reset all decorative chars to their original state
1049      const chars = decorativeElement.querySelectorAll('.pixel-char');
1050      chars.forEach((charEl) => {
1051        charEl.classList.remove('scrambling', 'revealed', 'sparkle');
1052        const currentDisplay = charEl.querySelector('.pixel-char-current');
1053        const finalChar = charEl.getAttribute('data-char') || '';
1054        if (currentDisplay) currentDisplay.textContent = finalChar;
1055        const dotsContainer = charEl.querySelector('.pixel-dots');
1056        if (dotsContainer) dotsContainer.innerHTML = '';
1057      });
1058    }
1059
1060    function startPixelAnimation() {
1061      // If already animating in hover mode, reset first
1062      if (!isAutoplay) {
1063        resetAnimation();
1064      }
1065
1066      const chars = decorativeElement.querySelectorAll('.pixel-char');
1067      const totalChars = chars.length;
1068      
1069      // Set brand color CSS variable
1070      container.style.setProperty('--brand-color', BRAND_COLOR);
1071      
1072      // Read computed text color for final state
1073      const rootColor = getComputedStyle(container).color;
1074      container.style.setProperty('--pixel-color', rootColor);
1075
1076      // Mark as animated
1077      container.setAttribute('data-animated', 'true');
1078
1079      // Initialize pixel dots for each character
1080      chars.forEach((charEl, index) => {
1081        const dotsContainer = charEl.querySelector('.pixel-dots');
1082        if (dotsContainer) {
1083          createPixelDots(dotsContainer, index);
1084          
1085          // Register dots for animation
1086          const dots = dotsContainer.querySelectorAll('.pixel-dot');
1087          dots.forEach(dot => {
1088            allDots.push({
1089              dot,
1090              phase: parseFloat(dot.dataset.phase || '0'),
1091              speed: parseFloat(dot.dataset.speed || '1')
1092            });
1093          });
1094        }
1095      });
1096
1097      // Start dots pulsing animation
1098      startDotsAnimation();
1099
1100      // Process each character
1101      chars.forEach((charEl, index) => {
1102        const currentDisplay = charEl.querySelector('.pixel-char-current');
1103        const finalChar = charEl.getAttribute('data-char') || '';
1104        
1105        const startDelay = index * STAGGER_DELAY;
1106        const revealTime = startDelay + SCRAMBLE_DURATION + (index * REVEAL_STAGGER);
1107        
1108        // Start scrambling after stagger delay
1109        const t = setTimeout(() => {
1110          charEl.classList.add('scrambling');
1111          
1112          // Scramble at intervals with occasional sparkle
1113          let scrambleCount = 0;
1114          const scrambleInterval = setInterval(() => {
1115            const randomChar = decodeChars[Math.floor(Math.random() * decodeChars.length)];
1116            currentDisplay.textContent = randomChar;
1117            
1118            // Random sparkle during scramble
1119            if (Math.random() < SPARKLE_CHANCE) {
1120              charEl.classList.add('sparkle');
1121              const st = setTimeout(() => charEl.classList.remove('sparkle'), 150);
1122              activeTimers.push(st);
1123            }
1124            
1125            scrambleCount++;
1126          }, SCRAMBLE_INTERVAL);
1127          activeIntervals.push(scrambleInterval);
1128          
1129          // Stop scrambling and reveal final character
1130          const rt = setTimeout(() => {
1131            clearInterval(scrambleInterval);
1132            charEl.classList.remove('scrambling');
1133            charEl.classList.add('revealed');
1134            currentDisplay.textContent = finalChar;
1135          }, revealTime - startDelay);
1136          activeTimers.push(rt);
1137          
1138        }, startDelay);
1139        activeTimers.push(t);
1140      });
1141
1142      // Calculate total animation duration
1143      const lastCharIndex = totalChars - 1;
1144      const totalDuration = (lastCharIndex * STAGGER_DELAY) + SCRAMBLE_DURATION + (lastCharIndex * REVEAL_STAGGER) + 400;
1145      
1146      // Mark complete and cleanup
1147      const completeTimer = setTimeout(() => {
1148        container.setAttribute('data-complete', 'true');
1149        stopDotsAnimation();
1150      }, totalDuration);
1151      activeTimers.push(completeTimer);
1152    }
1153
1154    if (isAutoplay) {
1155      // Autoplay mode: trigger on scroll into view (original behavior)
1156      if (container.hasAttribute('data-animated')) return;
1157
1158      const observer = new IntersectionObserver(
1159        (entries) => {
1160          entries.forEach((entry) => {
1161            if (entry.isIntersecting) {
1162              startPixelAnimation();
1163              observer.disconnect();
1164            }
1165          });
1166        },
1167        { threshold: 0.1, rootMargin: '0px' }
1168      );
1169      observer.observe(container);
1170    } else {
1171      // Hover mode: trigger on mouseenter, reset on mouseleave
1172      container.addEventListener('mouseenter', () => {
1173        startPixelAnimation();
1174      });
1175
1176      container.addEventListener('mouseleave', () => {
1177        resetAnimation();
1178      });
1179    }
1180  })();
1181})();</script>
1181 website visitors
1182</h1> <p class="text-lg">
1183Snitcher turns <span class="pixel-reveal " id="pixel-reveal-9loegdlsh" data-total-chars="9" data-autoplay="true" data-astro-cid-kt72rz56><span class="pixel-reveal-text" data-astro-cid-kt72rz56><span class="pixel-word" data-astro-cid-kt72rz56><span class="pixel-char" data-char="a" data-index="0" data-astro-cid-kt72rz56>a</span><span class="pixel-char" data-char="n" data-index="1" data-astro-cid-kt72rz56>n</span><span class="pixel-char" data-char="o" data-index="2" data-astro-cid-kt72rz56>o</span><span class="pixel-char" data-char="n" data-index="3" data-astro-cid-kt72rz56>n</span><span class="pixel-char" data-char="y" data-index="4" data-astro-cid-kt72rz56>y</span><span class="pixel-char" data-char="m" data-index="5" data-astro-cid-kt72rz56>m</span><span class="pixel-char" data-char="o" data-index="6" data-astro-cid-kt72rz56>o</span><span class="pixel-char" data-char="u" data-index="7" data-astro-cid-kt72rz56>u</span><span class="pixel-char" data-char="s" data-index="8" data-astro-cid-kt72rz56>s</span></span></span><span class="pixel-reveal-decorative" aria-hidden="true" data-astro-cid-kt72rz56><span class="pixel-word" data-astro-cid-kt72rz56><span class="pixel-char" data-char="a" data-index="0" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>a</span></span><span class="pixel-char" data-char="n" data-index="1" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>n</span></span><span class="pixel-char" data-char="o" data-index="2" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>o</span></span><span class="pixel-char" data-char="n" data-index="3" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>n</span></span><span class="pixel-char" data-char="y" data-index="4" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>y</span></span><span class="pixel-char" data-char="m" data-index="5" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>m</span></span><span class="pixel-char" data-char="o" data-index="6" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>o</span></span><span class="pixel-char" data-char="u" data-index="7" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>u</span></span><span class="pixel-char" data-char="s" data-index="8" data-astro-cid-kt72rz56><span class="pixel-dots" data-astro-cid-kt72rz56></span><span class="pixel-char-current" data-astro-cid-kt72rz56>s</span></span></span></span></span>
1183<script>(function(){const componentId = "pixel-reveal-9loegdlsh";
1184const decodeCharsStr = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,0,1,2,3,4,5,6,7,8,9";
1185const cycles = 11;
1186
1187  (function() {
1188    const container = document.getElementById(componentId);
1189    if (!container) return;
1190    if (container.hasAttribute('data-initialized')) return;
1191    container.setAttribute('data-initialized', 'true');
1192
1193    const decorativeElement = container.querySelector('.pixel-reveal-decorative');
1194    if (!decorativeElement) return;
1195
1196    const isAutoplay = container.getAttribute('data-autoplay') !== 'false';
1197    const decodeChars = decodeCharsStr.split(',');
1198    
1199    // Brand color for pixel effects
1200    const BRAND_COLOR = '#4C4CFF';
1201    
1202    // Animation configuration
1203    const SCRAMBLE_INTERVAL = 45;
1204    const SCRAMBLE_DURATION = cycles * SCRAMBLE_INTERVAL;
1205    const STAGGER_DELAY = 50;
1206    const REVEAL_STAGGER = 70;
1207    const SPARKLE_CHANCE = 0.3;
1208    
1209    // Pixel dot configuration
1210    const DOTS_PER_CHAR = 6;
1211    const DOT_SIZE = 3;
1212
1213    // Track active timeouts/intervals for cleanup on hover mode
1214    let activeTimers = [];
1215    let activeIntervals = [];
1216
1217    // Seeded random for consistent results
1218    function seededRandom(seed) {
1219      const x = Math.sin(seed * 12.9898 + seed * 78.233) * 43758.5453;
1220      return x - Math.floor(x);
1221    }
1222
1223    // Create pixel dots for a character
1224    function createPixelDots(dotsContainer, charIndex) {
1225      dotsContainer.innerHTML = '';
1226      
1227      for (let i = 0; i < DOTS_PER_CHAR; i++) {
1228        const dot = document.createElement('span');
1229        dot.className = 'pixel-dot';
1230        
1231        // Random position within character bounds
1232        const seed = charIndex * 100 + i;
1233        const x = seededRandom(seed) * 100;
1234        const y = seededRandom(seed + 1000) * 100;
1235        
1236        // Random animation phase for pulsing
1237        const phase = seededRandom(seed + 2000) * Math.PI * 2;
1238        const speed = 0.5 + seededRandom(seed + 3000) * 0.5;
1239        
1240        dot.style.cssText = `
1241          left: ${x}%;
1242          top: ${y}%;
1243          width: ${DOT_SIZE}px;
1244          height: ${DOT_SIZE}px;
1245          --phase: ${phase};
1246          --speed: ${speed};
1247        `;
1248        
1249        dot.dataset.phase = String(phase);
1250        dot.dataset.speed = String(speed);
1251        
1252        dotsContainer.appendChild(dot);
1253      }
1254    }
1255
1256    // Animate pixel dots with pulsing opacity (like hero dot grid)
1257    let dotsAnimationId = null;
1258    const allDots = [];
1259
1260    function animateDots(time) {
1261      for (const { dot, phase, speed } of allDots) {
1262        // Dual sine wave for complex pulsing (matching hero dot grid)
1263        const wave1 = Math.sin(time * 0.003 * speed + phase);
1264        const wave2 = Math.sin(time * 0.003 * 0.7 + phase * 1.3);
1265        const combinedWave = wave1 * 0.7 + wave2 * 0.3;
1266        
1267        // Normalize and sharpen
1268        const normalizedWave = (combinedWave + 1) / 2;
1269        const sharpenedWave = Math.pow(normalizedWave, 1.5);
1270        
1271        // Occasional sparkle
1272        const sparkleChance = Math.sin(time * 0.001 + parseFloat(dot.dataset.phase || '0')) * 0.5 + 0.5;
1273        const sparkle = sparkleChance > 0.95 ? 1.5 : 1;
1274        
1275        const opacity = Math.min((0.2 + sharpenedWave * 0.8) * sparkle, 1);
1276        dot.style.opacity = String(opacity);
1277      }
1278      
1279      dotsAnimationId = requestAnimationFrame(animateDots);
1280    }
1281
1282    function startDotsAnimation() {
1283      if (!dotsAnimationId) {
1284        dotsAnimationId = requestAnimationFrame(animateDots);
1285      }
1286    }
1287
1288    function stopDotsAnimation() {
1289      if (dotsAnimationId) {
1290        cancelAnimationFrame(dotsAnimationId);
1291        dotsAnimationId = null;
1292      }
1293    }
1294
1295    function clearAllTimers() {
1296      activeTimers.forEach(t => clearTimeout(t));
1297      activeIntervals.forEach(i => clearInterval(i));
1298      activeTimers = [];
1299      activeIntervals = [];
1300    }
1301
1302    function resetAnimation() {
1303      clearAllTimers();
1304      stopDotsAnimation();
1305      allDots.length = 0;
1306
1307      // Reset state attributes
1308      container.removeAttribute('data-animated');
1309      container.removeAttribute('data-complete');
1310
1311      // Reset all decorative chars to their original state
1312      const chars = decorativeElement.querySelectorAll('.pixel-char');
1313      chars.forEach((charEl) => {
1314        charEl.classList.remove('scrambling', 'revealed', 'sparkle');
1315        const currentDisplay = charEl.querySelector('.pixel-char-current');
1316        const finalChar = charEl.getAttribute('data-char') || '';
1317        if (currentDisplay) currentDisplay.textContent = finalChar;
1318        const dotsContainer = charEl.querySelector('.pixel-dots');
1319        if (dotsContainer) dotsContainer.innerHTML = '';
1320      });
1321    }
1322
1323    function startPixelAnimation() {
1324      // If already animating in hover mode, reset first
1325      if (!isAutoplay) {
1326        resetAnimation();
1327      }
1328
1329      const chars = decorativeElement.querySelectorAll('.pixel-char');
1330      const totalChars = chars.length;
1331      
1332      // Set brand color CSS variable
1333      container.style.setProperty('--brand-color', BRAND_COLOR);
1334      
1335      // Read computed text color for final state
1336      const rootColor = getComputedStyle(container).color;
1337      container.style.setProperty('--pixel-color', rootColor);
1338
1339      // Mark as animated
1340      container.setAttribute('data-animated', 'true');
1341
1342      // Initialize pixel dots for each character
1343      chars.forEach((charEl, index) => {
1344        const dotsContainer = charEl.querySelector('.pixel-dots');
1345        if (dotsContainer) {
1346          createPixelDots(dotsContainer, index);
1347          
1348          // Register dots for animation
1349          const dots = dotsContainer.querySelectorAll('.pixel-dot');
1350          dots.forEach(dot => {
1351            allDots.push({
1352              dot,
1353              phase: parseFloat(dot.dataset.phase || '0'),
1354              speed: parseFloat(dot.dataset.speed || '1')
1355            });
1356          });
1357        }
1358      });
1359
1360      // Start dots pulsing animation
1361      startDotsAnimation();
1362
1363      // Process each character
1364      chars.forEach((charEl, index) => {
1365        const currentDisplay = charEl.querySelector('.pixel-char-current');
1366        const finalChar = charEl.getAttribute('data-char') || '';
1367        
1368        const startDelay = index * STAGGER_DELAY;
1369        const revealTime = startDelay + SCRAMBLE_DURATION + (index * REVEAL_STAGGER);
1370        
1371        // Start scrambling after stagger delay
1372        const t = setTimeout(() => {
1373          charEl.classList.add('scrambling');
1374          
1375          // Scramble at intervals with occasional sparkle
1376          let scrambleCount = 0;
1377          const scrambleInterval = setInterval(() => {
1378            const randomChar = decodeChars[Math.floor(Math.random() * decodeChars.length)];
1379            currentDisplay.textContent = randomChar;
1380            
1381            // Random sparkle during scramble
1382            if (Math.random() < SPARKLE_CHANCE) {
1383              charEl.classList.add('sparkle');
1384              const st = setTimeout(() => charEl.classList.remove('sparkle'), 150);
1385              activeTimers.push(st);
1386            }
1387            
1388            scrambleCount++;
1389          }, SCRAMBLE_INTERVAL);
1390          activeIntervals.push(scrambleInterval);
1391          
1392          // Stop scrambling and reveal final character
1393          const rt = setTimeout(() => {
1394            clearInterval(scrambleInterval);
1395            charEl.classList.remove('scrambling');
1396            charEl.classList.add('revealed');
1397            currentDisplay.textContent = finalChar;
1398          }, revealTime - startDelay);
1399          activeTimers.push(rt);
1400          
1401        }, startDelay);
1402        activeTimers.push(t);
1403      });
1404
1405      // Calculate total animation duration
1406      const lastCharIndex = totalChars - 1;
1407      const totalDuration = (lastCharIndex * STAGGER_DELAY) + SCRAMBLE_DURATION + (lastCharIndex * REVEAL_STAGGER) + 400;
1408      
1409      // Mark complete and cleanup
1410      const completeTimer = setTimeout(() => {
1411        container.setAttribute('data-complete', 'true');
1412        stopDotsAnimation();
1413      }, totalDuration);
1414      activeTimers.push(completeTimer);
1415    }
1416
1417    if (isAutoplay) {
1418      // Autoplay mode: trigger on scroll into view (original behavior)
1419      if (container.hasAttribute('data-animated')) return;
1420
1421      const observer = new IntersectionObserver(
1422        (entries) => {
1423          entries.forEach((entry) => {
1424            if (entry.isIntersecting) {
1425              startPixelAnimation();
1426              observer.disconnect();
1427            }
1428          });
1429        },
1430        { threshold: 0.1, rootMargin: '0px' }
1431      );
1432      observer.observe(container);
1433    } else {
1434      // Hover mode: trigger on mouseenter, reset on mouseleave
1435      container.addEventListener('mouseenter', () => {
1436        startPixelAnimation();
1437      });
1438
1439      container.addEventListener('mouseleave', () => {
1440        resetAnimation();
1441      });
1442    }
1443  })();
1444})();</script>
1444 intent into predictable revenue. Identify in-market companies, see what they want and trigger action across your stack.
1445</p>   </div> <!-- Actions --> <div class="flex flex-col gap-8 items-center" data-astro-cid-eaz7zv6b> <div class="flex flex-col sm:flex-row gap-2 items-stretch sm:items-start w-full sm:w-auto"> <a href="/demo" class="inline-flex items-center justify-center gap-2 pl-1 pr-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white ring-1 ring-[var(--alpha-border)] !text-zinc-700 hover:bg-zinc-50 w-full sm:w-auto justify-center"><span class="flex items-center -space-x-1.5 isolate"> <span class="w-8 h-8 bg-jade-500 rounded-full border-2 border-white flex items-center justify-center z-30"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" class="w-5 h-5"> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.0017 14C9.0017 10.134 12.1357 6.99999 16.0017 6.99999C19.8677 6.99999 23.0017 10.134 23.0017 14C23.0017 17.866 19.8677 21 16.0017 21C12.1357 21 9.0017 17.866 9.0017 14ZM16.0017 11C16.554 11 17.0017 11.4477 17.0017 12V13.5858L18.3755 14.9595C18.766 15.3501 18.766 15.9832 18.3755 16.3738C17.9849 16.7643 17.3518 16.7643 16.9613 16.3738L15.2946 14.7071C15.1071 14.5196 15.0017 14.2652 15.0017 14V12C15.0017 11.4477 15.4494 11 16.0017 11Z" fill="white"></path> <path d="M1.59659 9.34793C1.21298 7.17236 2.66566 5.09772 4.84123 4.71411L11.7349 3.49857C13.2569 3.23019 14.7296 3.86059 15.6083 5.00852C13.1074 5.11659 10.871 6.24533 9.30541 7.98866L1.59659 9.34793Z" fill="white"></path> <path d="M7.80399 10.2843L1.94389 11.3175L2.63848 15.2568C3.0221 17.4324 5.09673 18.885 7.27231 18.5014L8.12348 18.3513C7.40983 17.0617 7.00356 15.5783 7.00356 14C7.00356 12.675 7.28987 11.417 7.80399 10.2843Z" fill="white"></path> </svg> </span> <img src="/_astro/leon.c0wmlxiL_Z2wsuca.webp" alt="" class="w-8 h-8 border-2 border-white rounded-full object-cover z-20" loading="lazy" decoding="auto" width="600" height="600"><img src="/_astro/dean.7I-5NM-k_Z114K5E.webp" alt="" class="w-8 h-8 border-2 border-white rounded-full object-cover z-10" loading="lazy" decoding="auto" width="600" height="600"> </span><span>Talk to sales</span></a>
1445<script>
1446  (function() {
1447    function initButtonArrows() {
1448      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
1449        if (button.dataset.btnArrowInit) return;
1450        button.dataset.btnArrowInit = 'true';
1451        
1452        var icon = button.querySelector('.btn-arrow-icon');
1453        if (!icon) return;
1454        
1455        button.addEventListener('mouseenter', function() {
1456          icon.classList.remove('slide-out');
1457          icon.classList.add('slide-in');
1458        });
1459        
1460        button.addEventListener('mouseleave', function() {
1461          icon.classList.remove('slide-in');
1462          icon.classList.add('slide-out');
1463        });
1464      });
1465    }
1466
1467    if (document.readyState === 'loading') {
1468      document.addEventListener('DOMContentLoaded', initButtonArrows);
1469    } else {
1470      initButtonArrows();
1471    }
1472    
1473    document.addEventListener('astro:page-load', initButtonArrows);
1474  })();
1475</script>
1475 <a href="https://app.snitcher.com/register" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-primary-500 !text-white hover:bg-primary-600 !pl-3 w-full sm:w-auto justify-center"> <svg width="20" height="20" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg" class="shrink-0" aria-hidden="true"> <path d="M211.265 148.37C187.598 224.219 123.858 249.286 104.886 255.161C89.5631 259.93 84.2516 243.014 99.6384 238.244C116.524 233.017 173.258 210.709 194.355 143.094C205.691 106.783 186.837 68.5577 152.325 57.79C117.074 46.7923 80.2423 68.8045 69.2412 104.054C67.5848 109.361 63.152 113.363 58.9333 113.363C52.8997 113.363 50.3043 105.281 52.3341 98.7783C66.1181 54.6057 112.724 26.8804 157.601 40.8841C202.129 54.7776 225.257 103.517 211.265 148.37ZM168.681 5.37712C102.536 -15.2639 36.1026 25.9353 16.8302 87.6986C7.05086 119.034 28.0846 150.559 58.9017 150.559C79.3873 150.559 98.2403 135.991 104.747 115.134C109.855 98.7636 126.062 88.5621 141.246 93.2947C156.164 97.95 164.06 115.32 158.854 132.015C145.032 176.301 103.905 207.232 58.8369 207.236H58.8306C53.1805 207.236 47.4893 206.748 41.9193 205.783C26.0231 203.042 23.0907 220.506 38.9072 223.237C45.4654 224.373 52.1665 224.95 58.822 224.95C111.569 224.95 159.656 188.902 175.758 137.291C183.809 111.494 170.991 84.021 146.522 76.39C121.831 68.6852 95.7658 84.4535 87.8419 109.858C83.6147 123.396 71.7306 132.852 58.9427 132.852C40.047 132.852 27.4971 112.952 33.7365 92.9742C51.7151 35.4079 111.149 5.98231 163.405 22.2851C217.821 39.2652 247.198 98.6229 229.863 154.174C220.278 184.887 202.64 212.731 179.141 234.367C167.297 245.262 179.436 258.135 191.286 247.224C217.073 223.484 236.259 193.132 246.77 159.45C267.275 93.7541 231.625 25.0164 168.681 5.37712ZM58.6439 187.8C95.3789 187.8 128.937 162.473 140.255 126.211C142.694 118.381 139.514 113.349 135.392 112.062C131.306 110.787 125.784 113.124 123.348 120.937C114.327 149.843 87.7136 170.032 58.6287 170.032C44.0506 170.032 30.2484 164.946 18.717 155.324C6.35199 145.002 -4.98893 158.544 7.38454 168.884C22.2568 181.257 39.9787 187.797 58.6349 187.8H58.6439Z" fill="currentColor"></path> </svg> <span>Start for free</span> </a>
1475<script>
1476  (function() {
1477    function initButtonArrows() {
1478      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
1479        if (button.dataset.btnArrowInit) return;
1480        button.dataset.btnArrowInit = 'true';
1481        
1482        var icon = button.querySelector('.btn-arrow-icon');
1483        if (!icon) return;
1484        
1485        button.addEventListener('mouseenter', function() {
1486          icon.classList.remove('slide-out');
1487          icon.classList.add('slide-in');
1488        });
1489        
1490        button.addEventListener('mouseleave', function() {
1491          icon.classList.remove('slide-in');
1492          icon.classList.add('slide-out');
1493        });
1494      });
1495    }
1496
1497    if (document.readyState === 'loading') {
1498      document.addEventListener('DOMContentLoaded', initButtonArrows);
1499    } else {
1500      initButtonArrows();
1501    }
1502    
1503    document.addEventListener('astro:page-load', initButtonArrows);
1504  })();
1505</script>
1505 </div> <!-- Features --> <div class="flex flex-wrap gap-x-4 gap-y-1.5 items-start justify-center" data-astro-cid-eaz7zv6b> <div class="flex gap-1.5 items-center justify-center" data-astro-cid-eaz7zv6b> <svg width="16" height="16" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M2 6.75293C2 5.23415 3.23122 4.00293 4.75 4.00293H19.248C20.7633 4.00293 21.9945 5.22932 21.9957 6.74653C21.9963 7.51306 21.9962 8.27968 21.9961 9.04593L21.9961 17.2461C21.9961 18.7649 20.7649 19.9961 19.2461 19.9961L4.75 19.9961C3.23122 19.9961 2 18.7649 2 17.2461V10.5H21.9961V9H2V6.75293Z" fill="currentColor"/></svg>
1506 <p class="eyebrow text-xs text-zinc-500" data-astro-cid-eaz7zv6b>No credit card required</p> </div>  <div class="flex gap-1.5 items-center justify-center" hidden data-eu-trust="nl" data-astro-cid-eaz7zv6b> <span class="text-sm leading-none" aria-hidden="true" data-astro-cid-eaz7zv6b>🇳🇱</span> <p class="eyebrow text-xs text-zinc-500" data-astro-cid-eaz7zv6b>Built in the Netherlands</p> </div> <div class="flex gap-1.5 items-center justify-center" hidden data-eu-trust="eu" data-astro-cid-eaz7zv6b> <span class="text-sm leading-none" aria-hidden="true" data-astro-cid-eaz7zv6b>🇪🇺</span> <p class="eyebrow text-xs text-zinc-500" data-astro-cid-eaz7zv6b>Built in Europe</p> </div>  <div class="flex gap-1.5 items-center justify-center" data-astro-cid-eaz7zv6b> <svg width="16" height="16" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2ZM15.667 8.12695C15.3228 7.89661 14.8574 7.98889 14.627 8.33301L10.4482 14.5723L8.28125 12.3945C7.98911 12.1009 7.51434 12.0995 7.2207 12.3916C6.92733 12.6838 6.9267 13.1586 7.21875 13.4521L10.0312 16.2793C10.1897 16.4384 10.4112 16.5177 10.6348 16.4961C10.8584 16.4744 11.0605 16.3537 11.1855 16.167L15.873 9.16699C16.1034 8.82283 16.0111 8.35739 15.667 8.12695Z" fill="currentColor"/></svg>
1507 <p class="eyebrow text-xs text-zinc-500" data-eu-text="GDPR-native" data-astro-cid-eaz7zv6b>GDPR compliant</p> </div> </div> </div> </div> </div> </div> </section>     </div> </section>    <section class="page-section" data-variant="light" data-astro-cid-dnku4hyr>        <div class="section-container" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <div class="w-full grid justify-center grid-cols-[repeat(3,minmax(0,160px))] min-[768px]:grid-cols-[repeat(4,minmax(0,160px))] min-[992px]:grid-cols-[repeat(8,minmax(0,160px))] [--lh-scale:0.8] min-[768px]:[--lh-scale:0.95] min-[992px]:[--lh-scale:0.8] min-[1280px]:[--lh-scale:1]" data-regionalize="" data-logo-sizes="{&#34;/logos/main/tacto.svg&#34;:[27,0],&#34;/logos/main/entain.svg&#34;:[22,0],&#34;/logos/main/clay.svg&#34;:[24,0],&#34;/logos/main/unify.svg&#34;:[27,0],&#34;/logos/main/lemlist.svg&#34;:[23,0],&#34;/logos/main/plain.svg&#34;:[20,0],&#34;/logos/main/folk.svg&#34;:[24,0],&#34;/logos/main/hockeystack.svg&#34;:[20,0],&#34;/logos/main/nats.svg&#34;:[20,0],&#34;/logos/main/chatbase.svg&#34;:[22,0],&#34;/logos/main/rudderstack.svg&#34;:[20,0],&#34;/logos/main/alma.svg&#34;:[21,0],&#34;/logos/main/aikido.svg&#34;:[22,0],&#34;/logos/main/peopleai.svg&#34;:[22,0],&#34;/logos/main/bekaert.svg&#34;:[23,0],&#34;/logos/main/factorsai.svg&#34;:[23,0],&#34;/logos/main/syncfusion.svg&#34;:[23,0],&#34;/logos/main/coram.svg&#34;:[22,0],&#34;/logos/main/monaco.svg&#34;:[14,0],&#34;/logos/main/moonpig.svg&#34;:[22,0],&#34;/logos/main/talentdesk.svg&#34;:[21,0],&#34;/logos/main/hicx.svg&#34;:[28,0],&#34;/logos/main/hived.svg&#34;:[20,0],&#34;/logos/main/sokin.svg&#34;:[20,0],&#34;/logos/regional/cambridge.svg&#34;:[22,0],&#34;/logos/main/movingimage.svg&#34;:[22,0],&#34;/logos/main/klar.svg&#34;:[27,0],&#34;/logos/main/usersnap.svg&#34;:[21,0],&#34;/logos/main/dartfish.svg&#34;:[20,0],&#34;/logos/main/soda.svg&#34;:[21,0],&#34;/logos/main/sortlist.svg&#34;:[22,0],&#34;/logos/main/waylay.svg&#34;:[22,0],&#34;/logos/main/bizzy.svg&#34;:[24,0],&#34;/logos/main/mapiq.svg&#34;:[22,0],&#34;/logos/regional/studytube.svg&#34;:[16,0],&#34;/logos/regional/hydraloop.svg&#34;:[16,0],&#34;/logos/regional/contentoo.svg&#34;:[24,2],&#34;/logos/regional/seenons.svg&#34;:[23,0],&#34;/logos/main/rillion.svg&#34;:[22,0],&#34;/logos/regional/atlar.svg&#34;:[21,0],&#34;/logos/main/dixa.svg&#34;:[27,0],&#34;/logos/regional/onomondo.svg&#34;:[16,0],&#34;/logos/main/kindly.svg&#34;:[23,0],&#34;/logos/main/modjo.svg&#34;:[23,0],&#34;/logos/main/hyperline.svg&#34;:[24,0],&#34;/logos/main/landbot.svg&#34;:[21,0],&#34;/logos/main/euvic.svg&#34;:[20,0],&#34;/logos/regional/jshamilton.svg&#34;:[22,0],&#34;/logos/regional/trask.svg&#34;:[22,0],&#34;/logos/main/adacta.svg&#34;:[21,0],&#34;/logos/main/sidlee.svg&#34;:[23,0],&#34;/logos/main/aviso.svg&#34;:[24,0],&#34;/logos/main/csl.svg&#34;:[28,0],&#34;/logos/main/gadget.svg&#34;:[23,0],&#34;/logos/regional/samsaraeco.svg&#34;:[18,0],&#34;/logos/regional/tecala.svg&#34;:[23,0],&#34;/logos/regional/endua.png&#34;:[24,0],&#34;/logos/regional/endace.svg&#34;:[24,0]}"><div data-logo-cell="0" data-logo-name="tacto"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/tacto.svg" alt="Tacto" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:27px"></div></div></div><div data-logo-cell="1" data-logo-name="entain"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/entain.svg" alt="Entain" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:22px"></div></div></div><div data-logo-cell="2" data-logo-name="clay"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/clay.svg" alt="Clay" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:24px"></div></div></div><div data-logo-cell="3" data-logo-name="unify"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/unify.svg" alt="Unify" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:27px"></div></div></div><div data-logo-cell="4" data-logo-name="lemlist"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/lemlist.svg" alt="Lemlist" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:23px"></div></div></div><div data-logo-cell="5" data-logo-name="plain"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/plain.svg" alt="Plain" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:20px"></div></div></div><div data-logo-cell="6" data-logo-name="folk"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/folk.svg" alt="Folk" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:24px"></div></div></div><div data-logo-cell="7" data-logo-name="hockeystack"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/hockeystack.svg" alt="HockeyStack" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:20px"></div></div></div><div data-logo-cell="8" data-logo-name="nats"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/nats.svg" alt="NATS" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:20px"></div></div></div><div data-logo-cell="9" data-logo-name="chatbase"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/chatbase.svg" alt="Chatbase" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:22px"></div></div></div><div data-logo-cell="10" data-logo-name="rudderstack"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/rudderstack.svg" alt="RudderStack" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:20px"></div></div></div><div data-logo-cell="11" data-logo-name="alma"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/alma.svg" alt="Alma" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:21px"></div></div></div><div data-logo-cell="12" data-logo-name="aikido"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/aikido.svg" alt="Aikido" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:22px"></div></div></div><div data-logo-cell="13" data-logo-name="peopleai"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/peopleai.svg" alt="People.ai" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:22px"></div></div></div><div data-logo-cell="14" data-logo-name="bekaert"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/bekaert.svg" alt="Bekaert" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:23px"></div></div></div><div class="hidden min-[768px]:block" data-logo-cell="15" data-logo-name="factorsai"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/factorsai.svg" alt="Factors.ai" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:23px"></div></div></div><div class="hidden" data-logo-cell="16" data-logo-name="syncfusion"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/syncfusion.svg" alt="Syncfusion" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:23px"></div></div></div><div class="hidden" data-logo-cell="17" data-logo-name="coram"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/coram.svg" alt="Coram" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:22px"></div></div></div><div class="hidden" data-logo-cell="18" data-logo-name="monaco"><div class="flex flex-col items-center justify-center gap-1 px-3 py-3 sm:px-5 sm:py-5 min-[992px]:px-2"><div class="flex items-center justify-center min-h-[2.75rem] sm:min-h-[3rem] w-full"><img src="/logos/main/monaco.svg" alt="Monaco" class="h-[calc(var(--lh)*var(--lh-scale,1))] w-auto max-w-full object-contain" loading="lazy" decoding="auto" style="--lh:14px"></div></div></div></div> <div class="px-6 md:px-16"> <div class="max-w-7xl mx-auto ">  <div class="mt-4 flex justify-center"> <a href="https://www.g2.com/products/snitcher/reviews" target="_blank" rel="noopener noreferrer" class="flex gap-3 items-center justify-center hover:opacity-80 transition-opacity"> <!-- G2 Logo and Stars --> <div class="flex gap-1.5 items-center h-5"> <!-- G2 Logo --> <img src="/g2-logo-large.svg" alt="G2" class="w-5 h-5 shrink-0" loading="lazy" decoding="auto"> <!-- Stars --> <img src="/g2-stars.svg" alt="5 stars" class="w-20 h-3.5 shrink-0" loading="lazy" decoding="auto"> </div> <div class="flex gap-2 items-center h-5"> <span class="font-semibold text-sm leading-none">4.8/5</span> <span class="text-sm leading-none text-zinc-400">200+ reviews</span> </div> </a> </div>  </div> </div>  </div> </section>    <section class="page-section bg-zinc-50" data-variant="light" id="carousel" data-astro-cid-dnku4hyr>        <div class="section-container bg-white" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <h2 class="mb-8 md:mb-12">
1508The system that powers
1509<br> <span class="relative inline-block " data-astro-cid-drt2y2q3>  <span class="bg-gradient-to-b from-primary-500 to-primary-600 bg-clip-text text-transparent"> every </span>  <svg class="hidden md:block absolute left-0.5 top-12 w-[100px] h-2.5 underline-animated" viewB
1509ox="0 0 87 11" preserveAspectRatio="none" fill="none" xmlns="http://www.w3.org/2000/svg" data-astro-cid-drt2y2q3> <path class="underline-path" d="M2.00049 8.11929C31.0005 -0.380738 61.0005 1.52391 85.0005 4.61931" stroke="url(#paint0_linear_4906_4005)" stroke-width="4" stroke-linecap="round" data-astro-cid-drt2y2q3></path> <defs data-astro-cid-drt2y2q3> <linearGradient id="paint0_linear_4906_4005" x1="43.5005" y1="2.00006" x2="43.5005" y2="8.11929" gradientUnits="userSpaceOnUse" data-astro-cid-drt2y2q3> <stop stop-color="#4C4CFF" data-astro-cid-drt2y2q3></stop> <stop offset="1" stop-color="#3E3EE6" data-astro-cid-drt2y2q3></stop> </linearGradient> </defs> </svg> </span>   <span> revenue moment</span> </h2> <section class="relative" id="usecase-carousel-section" data-auto-cycle="false" data-astro-cid-bjcxd7r3><div class="flex flex-col lg:flex-row lg:gap-10" data-astro-cid-bjcxd7r3><div class="w-full lg:w-1/3 flex flex-col gap-2" id="carousel-container" data-items="[{&#34;id&#34;:&#34;sellers&#34;,&#34;title&#34;:&#34;Sellers&#34;,&#34;iconName&#34;:&#34;money-hand&#34;,&#34;heading&#34;:&#34;Pipeline that moves itself&#34;,&#34;features&#34;:[{&#34;title&#34;:&#34;Act on real intent&#34;,&#34;description&#34;:&#34;See which companies are visiting, what they care about, and who's behind each account so reps can strike when buyers are ready.&#34;},{&#34;title&#34;:&#34;Work smarter, not colder&#34;,&#34;description&#34;:&#34;Spend time on deals that will close, not ones that might. Snitcher feeds verified contacts and live intent straight into your CRM.&#34;}],&#34;buttonText&#34;:&#34;Explore sales solutions&#34;,&#34;image&#34;:&#34;/_astro/hero-sales.B__UDoft_Z2dssqk.webp&#34;,&#34;link&#34;:&#34;/solutions/sales&#34;},{&#34;id&#34;:&#34;marketers&#34;,&#34;title&#34;:&#34;Marketers&#34;,&#34;iconName&#34;:&#34;megaphone&#34;,&#34;heading&#34;:&#34;Turn visitors into customers&#34;,&#34;features&#34;:[{&#34;title&#34;:&#34;Know your audience&#34;,&#34;description&#34;:&#34;Identify which companies are researching your solutions and understand their buying journey with real-time intent signals and company insights.&#34;},{&#34;title&#34;:&#34;Personalize at scale&#34;,&#34;description&#34;:&#34;Create targeted campaigns based on actual visitor behavior. Deliver the right message to the right account at the perfect moment.&#34;}],&#34;buttonText&#34;:&#34;Explore marketing solutions&#34;,&#34;image&#34;:&#34;/_astro/hero-marketing.CZjVIeuJ_8GKop.webp&#34;,&#34;link&#34;:&#34;/solutions/marketing&#34;},{&#34;id&#34;:&#34;revops&#34;,&#34;title&#34;:&#34;RevOps&#34;,&#34;iconName&#34;:&#34;chain-link-4&#34;,&#34;heading&#34;:&#34;Revenue operations that scale&#34;,&#34;features&#34;:[{&#34;title&#34;:&#34;Unified revenue data&#34;,&#34;description&#34;:&#34;Connect marketing, sales, and customer success with a single source of truth. Track accounts from first visit to closed deal.&#34;},{&#34;title&#34;:&#34;Automate workflows&#34;,&#34;description&#34;:&#34;Streamline operations with automated lead routing, account scoring, and CRM enrichment. Reduce manual work and increase efficiency.&#34;}],&#34;buttonText&#34;:&#34;Explore RevOps solutions&#34;,&#34;image&#34;:&#34;/_astro/hero-revops.BTdwb5GX_Z2dJVus.webp&#34;,&#34;link&#34;:&#34;/solutions/revops&#34;},{&#34;id&#34;:&#34;agencies&#34;,&#34;title&#34;:&#34;Agencies&#34;,&#34;iconName&#34;:&#34;growth&#34;,&#34;heading&#34;:&#34;Deliver results that matter&#34;,&#34;features&#34;:[{&#34;title&#34;:&#34;Prove your impact&#34;,&#34;description&#34;:&#34;Show clients exactly which campaigns drive real business outcomes. Track visitor-to-customer journeys across all touchpoints.&#34;},{&#34;title&#34;:&#34;Scale client success&#34;,&#34;description&#34;:&#34;
1509Manage multiple accounts efficiently with automated reporting and insights. Focus on strategy while Snitcher handles the data.&#34;}],&#34;buttonText&#34;:&#34;Explore agency solutions&#34;,&#34;image&#34;:&#34;/_astro/hero-agency.C2ETV-hX_Z2mQBW2.webp&#34;,&#34;link&#34;:&#34;/solutions/agency&#34;}]" data-astro-cid-bjcxd7r3><div class="bg-zinc-50 overflow-hidden  rounded-2xl flex flex-col gap-4 items-start px-6 py-5 cursor-pointer transition-colors duration-200" data-item-id="sellers" data-item-index="0" data-active> <div class="flex items-center justify-between gap-2 w-full"> <div class="flex gap-2 items-center"> <svg width="24" height="24" class="carousel-icon shrink-0 transition-colors text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M14.5634 13.5799C14.6 13.2593 14.4292 12.9316 14.1078 12.9024C14.102 12.9019 14.0961 12.9014 14.0903 12.9009L9.19669 12.5131C8.65686 12.4704 8.11351 12.5323 7.5996 12.6952L3.69783 13.932C3.28233 14.0637 3 14.4494 3 14.8852V20.0199C3 20.5721 3.44772 21.0199 4 21.0199H4.83831L4.85056 21.0237C4.95989 21.0574 5.11685 21.1047 5.31199 21.1604C5.70161 21.2716 6.24688 21.4174 6.87145 21.5561C8.09069 21.8267 9.72522 22.0966 11.0994 21.9661C12.5697 21.8264 14.3876 21.1358 15.958 20.4236C17.5608 19.6966 19.0337 18.8864 19.8515 18.4189C20.5815 18.0016 21 17.2562 21 16.472C21 14.9261 19.557 14.5558 18 15L15.5 15.75C14.5 17 13.9507 17.3157 12.3751 17.6528L11.1171 17.922C10.7369 18.0033 10.3614 17.7659 10.2718 17.3875C10.1795 16.9975 10.426 16.6078 10.8179 16.5239L12.0458 16.2612C13.4015 15.9711 14.4132 14.8936 14.5634 13.5799Z" fill="currentColor"/><path d="M18 7.5C18 9.433 16.433 11 14.5 11C12.567 11 11 9.433 11 7.5C11 5.567 12.567 4 14.5 4C16.433 4 18 5.567 18 7.5Z" fill="currentColor"/><path d="M12.0731 3.12743C10.5384 3.98106 9.5 5.61927 9.5 7.5C9.5 8.01995 9.57937 8.52136 9.72664 8.99278C9.65171 8.99757 9.57614 9 9.5 9C7.567 9 6 7.433 6 5.5C6 3.567 7.567 2 9.5 2C10.5175 2 11.4336 2.4342 12.0731 3.12743Z" fill="currentColor"/></svg>
1510 <p class="eyebrow text-sm text-primary-500"> Sellers </p> </div>  </div> <div class="carousel-content flex flex-col gap-4 items-start">  <div class="carousel-inline-image lg:hidden"> <img src="/_astro/hero-sales.B__UDoft_Z2dssqk.webp" alt="Sellers" class="w-full rounded-lg" loading="lazy" decoding="auto" width="1928" height="1236"> </div> <div class="flex flex-col gap-1"> <p class="text-base font-semibold text-zinc-900"> Act on real intent </p> <p> See which companies are visiting, what they care about, and who&#39;s behind each account so reps can strike when buyers are ready. </p> </div><div class="flex flex-col gap-1"> <p class="text-base font-semibold text-zinc-900"> Work smarter, not colder </p> <p> Spend time on deals that will close, not ones that might. Snitcher feeds verified contacts and live intent straight into your CRM. </p> </div> <a href="/solutions/sales" class="inline-flex items-center justify-center gap-2    font-semibold text-base transition-colors  group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  !text-primary-500 hover:!text-primary-600 btn-with-arrow">
1511Learn more
1512<span class="btn-arrow-wrap"><svg width="20" height="20" class="btn-arrow-icon !text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.1161 5.36612C13.6043 4.87796 14.3957 4.87796 14.8839 5.36612L20.6339 11.1161C20.8683 11.3505 21 11.6685 21 12C21 12.3315 20.8683 12.6494 20.6339 12.8839L14.8839 18.6339C14.3957 19.122 13.6043 19.122 13.1161 18.6339C12.628 18.1457 12.628 17.3543 13.1161 16.8661L16.7322 13.25H4.25C3.55964 13.25 3 12.6903 3 12C3 11.3096 3.55964 10.75 4.25 10.75H16.7322L13.1161 7.13388C12.628 6.64573 12.628 5.85427 13.1161 5.36612Z" fill="currentColor"/></svg>
1513</span></a>
1513<script>
1514  (function() {
1515    function initButtonArrows() {
1516      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
1517        if (button.dataset.btnArrowInit) return;
1518        button.dataset.btnArrowInit = 'true';
1519        
1520        var icon = button.querySelector('.btn-arrow-icon');
1521        if (!icon) return;
1522        
1523        button.addEventListener('mouseenter', function() {
1524          icon.classList.remove('slide-out');
1525          icon.classList.add('slide-in');
1526        });
1527        
1528        button.addEventListener('mouseleave', function() {
1529          icon.classList.remove('slide-in');
1530          icon.classList.add('slide-out');
1531        });
1532      });
1533    }
1534
1535    if (document.readyState === 'loading') {
1536      document.addEventListener('DOMContentLoaded', initButtonArrows);
1537    } else {
1538      initButtonArrows();
1539    }
1540    
1541    document.addEventListener('astro:page-load', initButtonArrows);
1542  })();
1543</script>
1543 </div> </div> <div class="bg-zinc-50 overflow-hidden  rounded-2xl flex flex-col gap-4 items-start px-6 py-5 cursor-pointer transition-colors duration-200 group hover:bg-zinc-100" data-item-id="marketers" data-item-index="1"> <div class="flex items-center justify-between gap-2 w-full"> <div class="flex gap-2 items-center"> <svg width="24" height="24" class="carousel-icon shrink-0 transition-colors group-hover:text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.4348 2.83302C17.2037 2.28685 18.9961 3.60929 18.9961 5.46062V7.32497C20.7078 7.67242 21.9961 9.18574 21.9961 11C21.9961 12.8142 20.7078 14.3275 18.9961 14.6749V16.5393C18.9961 18.3906 17.2037 19.7131 15.4348 19.1669L13.2817 18.5021C12.7667 19.9564 11.3792 21 9.74609 21C7.67503 21 5.99609 19.321 5.99609 17.25V16.2526L3.93481 15.6162C2.78222 15.2603 1.99609 14.1949 1.99609 12.9886V9.01131C1.99609 7.80504 2.78222 6.73958 3.93481 6.38371L6.51034 5.5885C6.5212 5.58487 6.53218 5.58148 6.54326 5.57833L15.4348 2.83302ZM7.49609 16.7158V17.25C7.49609 18.4926 8.50345 19.5 9.74609 19.5C10.7025 19.5 11.5212 18.9029 11.8465 18.059L7.49609 16.7158ZM20.4961 11C20.4961 11.9796 19.87 12.813 18.9961 13.1219V8.87798C19.87 9.18686 20.4961 10.0203 20.4961 11ZM5.99829 7.31647V14.6834L4.37733 14.183C3.85342 14.0212 3.49609 13.5369 3.49609 12.9886V9.01131C3.49609 8.46301 3.85342 7.97871 4.37733 7.81695L5.99829 7.31647Z" fill="currentColor"/></svg>
1544 <p class="eyebrow text-sm group-hover:text-primary-500"> Marketers </p> </div>  </div>  </div> <div class="bg-zinc-50 overflow-hidden  rounded-2xl flex flex-col gap-4 items-start px-6 py-5 cursor-pointer transition-colors duration-200 group hover:bg-zinc-100" data-item-id="revops" data-item-index="2"> <div class="flex items-center justify-between gap-2 w-full"> <div class="flex gap-2 items-center"> <svg width="24" height="24" class="carousel-icon shrink-0 transition-colors group-hover:text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.64125 9.29847C8.49624 7.44348 11.5038 7.44348 13.3588 9.29847L13.7019 9.64161C14.4775 10.4172 14.9295 11.3963 15.0562 12.4071C15.1076 12.8181 14.8162 13.1931 14.4052 13.2445C13.9942 13.296 13.6193 13.0046 13.5678 12.5936C13.4811 11.9019 13.1729 11.2339 12.6413 10.7023L12.2981 10.3591C11.0289 9.08993 8.97111 9.08992 7.70191 10.3591L4.35876 13.7023C3.08956 14.9715 3.08956 17.0293 4.35876 18.2985L4.70191 18.6416C5.97111 19.9108 8.02888 19.9108 9.29809 18.6416L9.46965 18.4701C9.76253 18.1772 10.2374 18.1771 10.5303 18.47C10.8232 18.7629 10.8232 19.2378 10.5303 19.5307L10.3588 19.7023C8.50379 21.5572 5.49624 21.5573 3.64125 19.7023L3.2981 19.3591C1.44311 17.5041 1.44311 14.4966 3.2981 12.6416L6.64125 9.29847Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.6412 5.29847C15.4962 3.44348 18.5037 3.44348 20.3587 5.29847L20.7019 5.64161C22.5568 7.4966 22.5568 10.5041 20.7019 12.3591L17.3587 15.7023C15.5037 17.5573 12.4962 17.5573 10.6412 15.7023L10.298 15.3591C9.52244 14.5835 9.07043 13.6044 8.9438 12.5936C8.89232 12.1826 9.18376 11.8077 9.59476 11.7562C10.0058 11.7047 10.3807 11.9961 10.4322 12.4071C10.5188 13.0988 10.8271 13.7668 11.3587 14.2985L11.7019 14.6416C12.9711 15.9108 15.0288 15.9108 16.298 14.6416L19.6412 11.2985C20.9104 10.0293 20.9104 7.97148 19.6412 6.70228L19.298 6.35913C18.0288 5.08993 15.9711 5.08993 14.7019 6.35913L14.5304 6.53063C14.2375 6.82356 13.7627 6.82362 13.4697 6.53077C13.1768 6.23791 13.1767 5.76304 13.4696 5.47011L13.6412 5.29847Z" fill="currentColor"/></svg>
1545 <p class="eyebrow text-sm group-hover:text-primary-500"> RevOps </p> </div>  </div>  </div> <div class="bg-zinc-50 overflow-hidden  rounded-2xl flex flex-col gap-4 items-start px-6 py-5 cursor-pointer transition-colors duration-200 group hover:bg-zinc-100" data-item-id="agencies" data-item-index="3"> <div class="flex items-center justify-between gap-2 w-full"> <div class="flex gap-2 items-center"> <svg width="24" height="24" class="carousel-icon shrink-0 transition-colors group-hover:text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M3.75 3C3.33579 3 3 3.33579 3 3.75V5C3 9.28021 6.46979 12.75 10.75 12.75H11.25V20.25C11.25 20.6642 11.5858 21 12 21C12.4142 21 12.75 20.6642 12.75 20.25V16H13.25C17.5302 16 21 12.5302 21 8.25V6.75C21 6.33579 20.6642 6 20.25 6H19C16.3562 6 14.0216 7.32382 12.6229 9.34475C11.9618 5.73541 8.80036 3 5 3H3.75Z" fill="currentColor"/></svg>
1546 <p class="eyebrow text-sm group-hover:text-primary-500"> Agencies </p> </div>  </div>  </div> </div><div class="hidden lg:block lg:w-2/3 relative overflow-hidden rounded-xl" id="carousel-visual-container" data-first-item-id="sellers" data-astro-cid-bjcxd7r3><div class="carousel-visual absolute inset-0" data-visual-id="sellers" style="opacity: 1; visibility: visible;" data-astro-cid-bjcxd7r3><img src="/_astro/hero-sales.B__UDoft_Z2dssqk.webp" alt="Sellers" class="w-full h-auto rounded-xl" loading="lazy" decoding="auto" data-astro-cid-bjcxd7r3 width="1928" height="1236"></div><div class="carousel-visual absolute inset-0" data-visual-id="marketers" style="opacity: 0; visibility: hidden;" data-astro-cid-bjcxd7r3><img src="/_astro/hero-marketing.CZjVIeuJ_8GKop.webp" alt="Marketers" class="w-full h-auto rounded-xl" loading="lazy" decoding="auto" data-astro-cid-bjcxd7r3 width="1928" height="1236"></div><div class="carousel-visual absolute inset-0" data-visual-id="revops" style="opacity: 0; visibility: hidden;" data-astro-cid-bjcxd7r3><img src="/_astro/hero-revops.BTdwb5GX_Z2dJVus.webp" alt="RevOps" class="w-full h-auto rounded-xl" loading="lazy" decoding="auto" data-astro-cid-bjcxd7r3 width="1928" height="1236"></div><div class="carousel-visual absolute inset-0" data-visual-id="agencies" style="opacity: 0; visibility: hidden;" data-astro-cid-bjcxd7r3><img src="/_astro/hero-agency.C2ETV-hX_Z2mQBW2.webp" alt="Agencies" class="w-full h-auto rounded-xl" loading="lazy" decoding="auto" data-astro-cid-bjcxd7r3 width="1928" height="1236"></div></div></div></section>  </div> </section>     <section class="page-section" data-variant="light" id="features" data-astro-cid-dnku4hyr>        <div class="section-container" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <div class="text-center mb-16">  <h2 class="mb-4 max-w-3xl text-balance mx-auto"> 
1547Own every stage from anonymous visit to closed deal
1548 </h2> <p class="text-lg text-pretty max-w-2xl mx-auto"> Snitcher connects the entire journey so your teams identify the right accounts, act at the right time and prove what&#39;s actually driving revenue. </p> </div> <div class="grid grid-cols-1 lg:grid-cols-2 gap-6"> <!-- Card 1: Identify --> <a class="bg-white border border-zinc-200 shadow overflow-hidden  rounded-2xl feature-card p-0 overflow-hidden h-full flex flex-col transition-shadow duration-200 group/card hover:shadow-md cursor-pointer" href="/identify" data-astro-cid-rq7a7mhf>   <div class="relative aspect-[4/3] shrink-0 overflow-hidden bg-gradient-to-b from-zinc-100 to-white" data-astro-cid-rq7a7mhf> <!-- Hover gradient overlay (behind visual content) --> <div class="absolute inset-0 opacity-0 group-hover/card:opacity-100 transition-opacity duration-300 z-0 bg-gradient-to-b from-primary-50 to-white" data-astro-cid-rq7a7mhf></div> <div class="absolute inset-0 z-[1] transition-opacity duration-300 group-hover/card:opacity-90" data-astro-cid-rq7a7mhf> <div class="relative w-full h-full overflow-hidden absolute inset-0" data-astro-cid-kijovlsi> <!-- Company cards container with marquee animation --> <div class="absolute inset-0 flex items-center overflow-hidden" data-astro-cid-kijovlsi> <div class="-rotate-2 -ml-20" data-astro-cid-kijovlsi> <div class="marquee-track flex items-start gap-4" data-animate-on-hover style="--card-set-width: 816px" data-astro-cid-kijovlsi> <div class="w-64 shrink-0 bg-white p-3 relative overflow-hidden" style="border-radius: 12px; box-shadow: 0 0 0 1px var(--alpha-border), 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);" data-astro-cid-kijovlsi>   <div class="flex items-start gap-3" data-astro-cid-kijovlsi> <img src="/_astro/avatar-perplexity.BLxgyAM2_Z17gBhI.webp" alt="" class="w-8 h-8 rounded-md object-cover bg-zinc-100 shrink-0" loading="lazy" decoding="auto" data-astro-cid-kijovlsi width="128" height="128"> <div class="flex-1 min-w-0" data-astro-cid-kijovlsi> <p class="text-[13px] font-semibold text-zinc-900 truncate leading-5 pr-14" data-astro-cid-kijovlsi>Perplexity AI</p> <span class="text-sm text-primary-500 truncate block leading-5" data-astro-cid-kijovlsi>https://perplexity.ai</span> </div> </div> <p class="text-xs text-zinc-900 leading-5" data-astro-cid-kijovlsi>
1548A SF based startup founded in 2022 that&#39;s building an AI-powered &quot;answer engine&quot; which gives you direct, conversational responses to your queries—with linked sources.</p> <div class="flex flex-col gap-2" data-astro-cid-kijovlsi> <span class="inline-flex w-fit items-center px-2 py-0.5 rounded-lg bg-zinc-100 text-xs font-medium text-zinc-600 leading-5" data-astro-cid-kijovlsi> 201-500 employees </span> <span class="inline-flex w-fit items-center px-2 py-0.5 rounded-lg bg-zinc-100 text-xs font-medium text-zinc-600 leading-5" data-astro-cid-kijovlsi> Artificial intelligence </span> </div> </div><div class="w-64 shrink-0 bg-white p-3 relative overflow-hidden" style="border-radius: 12px; box-shadow: 0 0 0 1px var(--alpha-border), 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);" data-astro-cid-kijovlsi>  <div class="absolute top-3 right-3 flex items-center gap-2 px-2 py-0.5 rounded-full border border-lava-500/20" style="background: linear-gradient(112deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.6) 100%), var(--color-lava-50);" data-astro-cid-kijovlsi> <span class="w-2 h-2 rounded-full bg-lava-500 shrink-0" data-astro-cid-kijovlsi></span> <span class="text-xs font-semibold text-lava-500 whitespace-nowrap" data-astro-cid-kijovlsi>Live</span> </div> <div class="flex items-start gap-3" data-astro-cid-kijovlsi> <img src="/_astro/avatar-incident.IBx6Q6pe_Z1euug6.webp" alt="" class="w-8 h-8 rounded-md object-cover bg-zinc-100 shrink-0" loading="lazy" decoding="auto" data-astro-cid-kijovlsi width="128" height="128"> <div class="flex-1 min-w-0" data-astro-cid-kijovlsi> <p class="text-[13px] font-semibold text-zinc-900 truncate leading-5 pr-14" data-astro-cid-kijovlsi>Incident.io</p> <span class="text-sm text-primary-500 truncate block leading-5" data-astro-cid-kijovlsi>https://incident.io</span> </div> </div> <p class="text-xs text-zinc-900 leading-5" data-astro-cid-kijovlsi>incident.io centralizes communication, automates workflows, and turns chaos into clarity — making incident response smoother, faster, and more collaborative across the board.</p> <div class="flex flex-col gap-2" data-astro-cid-kijovlsi> <span class="inline-flex w-fit items-center px-2 py-0.5 rounded-lg bg-zinc-100 text-xs font-medium text-zinc-600 leading-5" data-astro-cid-kijovlsi> 101-250 employees </span> <span class="inline-flex w-fit items-center px-2 py-0.5 rounded-lg bg-zinc-100 text-xs font-medium text-zinc-600 leading-5" data-astro-cid-kijovlsi> Information technology </span> </div> </div><div class="w-64 shrink-0 bg-white p-3 relative overflow-hidden" style="border-radius: 12px; box-shadow: 0 0 0 1px var(--alpha-border), 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);" data-astro-cid-kijovlsi>   <div class="flex items-start gap-3" data-astro-cid-kijovlsi> <img src="/_astro/avatar-loom.C_V0-JKh_1oT88P.webp" alt="" class="w-8 h-8 rounded-md object-cover bg-zinc-100 shrink-0" loading="lazy" decoding="auto" data-astro-cid-kijovlsi width="128" height="128"> <div class="flex-1 min-w-0" data-astro-cid-kijovlsi> <p class="text-[13px] font-semibold text-zinc-900 truncate leading-5 pr-14" data-astro-cid-kijovlsi>Loom</p> <span class="text-sm text-primary-500 truncate block leading-5" data-astro-cid-kijovlsi>https://loom.com</span> </div> </div> <p class="text-xs text-zinc-900 leading-5" data-astro-cid-kijovlsi>Loom, Inc. is a work-communication platform that enables teams to record, share and edit video messages (including screen + camera) for asynchronous collaboration.</p> <div class="flex flex-col gap-2" data-astro-cid-kijovlsi> <span class="inline-flex w-fit items-center px-2 py-0.5 rounded-lg bg-zinc-100 text-xs font-medium text-zinc-600 leading-5" data-astro-cid-kijovlsi> 51-200 employees </span> <span class="inline-flex w-fit items-center px-2 py-0.5 rounded-lg bg-zinc-100 text-xs font-medium text-zinc-600 leading-5" data-astro-cid-kijovlsi> Productivity </span> </div> </div><div class="w-64 shrink-0 bg-white p-3 relative overflow-hidden" style="border-radius: 12px; box-shadow: 0 0 0 1px var(--alpha-border), 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);" data-astro-cid-kijovlsi>   <div class="flex items-start gap-3" data-astro-cid-kijovlsi> <img src="/_astro/avatar-perplexity.BLxgyAM2_Z17gBhI.webp" alt="" class="w-8 h-8 rounded-md object-cover bg-zinc-100 shrink-0" loading="lazy" decoding="auto" data-astro-cid-kijovlsi width="128" height="128"> <div class="flex-1 min-w-0" data-astro-cid-kijovlsi> <p class="text-[13px] font-semibold text-zinc-900 truncate leading-5 pr-14" data-astro-cid-kijovlsi>Perplexity AI</p> <span class="text-sm text-primary-500 truncate block leading-5" data-astro-cid-kijovlsi>https://perplexity.ai</span> </div> </div> <p class="text-xs text-zinc-900 leading-5" data-astro-cid-kijovlsi>
1548A SF based startup founded in 2022 that&#39;s building an AI-powered &quot;answer engine&quot; which gives you direct, conversational responses to your queries—with linked sources.</p> <div class="flex flex-col gap-2" data-astro-cid-kijovlsi> <span class="inline-flex w-fit items-center px-2 py-0.5 rounded-lg bg-zinc-100 text-xs font-medium text-zinc-600 leading-5" data-astro-cid-kijovlsi> 201-500 employees </span> <span class="inline-flex w-fit items-center px-2 py-0.5 rounded-lg bg-zinc-100 text-xs font-medium text-zinc-600 leading-5" data-astro-cid-kijovlsi> Artificial intelligence </span> </div> </div><div class="w-64 shrink-0 bg-white p-3 relative overflow-hidden" style="border-radius: 12px; box-shadow: 0 0 0 1px var(--alpha-border), 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);" data-astro-cid-kijovlsi>  <div class="absolute top-3 right-3 flex items-center gap-2 px-2 py-0.5 rounded-full border border-lava-500/20" style="background: linear-gradient(112deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.6) 100%), var(--color-lava-50);" data-astro-cid-kijovlsi> <span class="w-2 h-2 rounded-full bg-lava-500 shrink-0" data-astro-cid-kijovlsi></span> <span class="text-xs font-semibold text-lava-500 whitespace-nowrap" data-astro-cid-kijovlsi>Live</span> </div> <div class="flex items-start gap-3" data-astro-cid-kijovlsi> <img src="/_astro/avatar-incident.IBx6Q6pe_Z1euug6.webp" alt="" class="w-8 h-8 rounded-md object-cover bg-zinc-100 shrink-0" loading="lazy" decoding="auto" data-astro-cid-kijovlsi width="128" height="128"> <div class="flex-1 min-w-0" data-astro-cid-kijovlsi> <p class="text-[13px] font-semibold text-zinc-900 truncate leading-5 pr-14" data-astro-cid-kijovlsi>Incident.io</p> <span class="text-sm text-primary-500 truncate block leading-5" data-astro-cid-kijovlsi>https://incident.io</span> </div> </div> <p class="text-xs text-zinc-900 leading-5" data-astro-cid-kijovlsi>incident.io centralizes communication, automates workflows, and turns chaos into clarity — making incident response smoother, faster, and more collaborative across the board.</p> <div class="flex flex-col gap-2" data-astro-cid-kijovlsi> <span class="inline-flex w-fit items-center px-2 py-0.5 rounded-lg bg-zinc-100 text-xs font-medium text-zinc-600 leading-5" data-astro-cid-kijovlsi> 101-250 employees </span> <span class="inline-flex w-fit items-center px-2 py-0.5 rounded-lg bg-zinc-100 text-xs font-medium text-zinc-600 leading-5" data-astro-cid-kijovlsi> Information technology </span> </div> </div><div class="w-64 shrink-0 bg-white p-3 relative overflow-hidden" style="border-radius: 12px; box-shadow: 0 0 0 1px var(--alpha-border), 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);" data-astro-cid-kijovlsi>   <div class="flex items-start gap-3" data-astro-cid-kijovlsi> <img src="/_astro/avatar-loom.C_V0-JKh_1oT88P.webp" alt="" class="w-8 h-8 rounded-md object-cover bg-zinc-100 shrink-0" loading="lazy" decoding="auto" data-astro-cid-kijovlsi width="128" height="128"> <div class="flex-1 min-w-0" data-astro-cid-kijovlsi> <p class="text-[13px] font-semibold text-zinc-900 truncate leading-5 pr-14" data-astro-cid-kijovlsi>Loom</p> <span class="text-sm text-primary-500 truncate block leading-5" data-astro-cid-kijovlsi>https://loom.com</span> </div> </div> <p class="text-xs text-zinc-900 leading-5" data-astro-cid-kijovlsi>Loom, Inc. is a work-communication platform that enables teams to record, share and edit video messages (including screen + camera) for asynchronous collaboration.</p> <div class="flex flex-col gap-2" data-astro-cid-kijovlsi> <span class="inline-flex w-fit items-center px-2 py-0.5 rounded-lg bg-zinc-100 text-xs font-medium text-zinc-600 leading-5" data-astro-cid-kijovlsi> 51-200 employees </span> <span class="inline-flex w-fit items-center px-2 py-0.5 rounded-lg bg-zinc-100 text-xs font-medium text-zinc-600 leading-5" data-astro-cid-kijovlsi> Productivity </span> </div> </div> </div> </div> </div> <!-- Bottom fade overlay --> <div class="absolute bottom-0 left-0 right-0 h-32 bg-gradient-to-t from-white to-transparent pointer-events-none z-10" data-astro-cid-kijovlsi></div> </div>  </div> </div>  <div class="flex gap-4 p-4 md:p-6 flex-1" data-astro-cid-rq7a7mhf> <!-- Left: Icon, Title, Description --> <div class="flex flex-col gap-4 flex-1" data-astro-cid-rq7a7mhf> <div class="flex items-center gap-2" data-astro-cid-rq7a7mhf> <svg width="24" height="24" class="shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.75 3C4.23122 3 3 4.23122 3 5.75V18.25C3 19.7688 4.23122 21 5.75 21H13.5833C13.568 20.9851 13.5528 20.9701 13.5377 20.955C11.4874 18.9047 11.4874 15.5806 13.5377 13.5303C15.5879 11.4801 18.9121 11.4801 20.9623 13.5303C20.975 13.543 20.9875 13.5557 21 13.5684V5.75C21 4.23122 19.7688 3 18.25 3H5.75ZM10.9896 7.15224C11.321 7.40077 11.3881 7.87087 11.1396 8.20224L9.26797 10.6978C9.02914 11.0162 8.58314 11.0926 8.25194 10.8718L7.12694 10.1218C6.7823 9.89203 6.68917 9.42637 6.91893 9.08173C7.1487 8.73708 7.61435 8.64395 7.95899 8.87372L8.49366 9.23016L9.9396 7.30224C10.1881 6.97087 10.6582 6.90371 10.9896 7.15224ZM13.058 9C13.058 8.58579 13.3937 8.25 13.808 8.25H16.308C16.7222 8.25 17.058 8.58579 17.058 9C17.058 9.41421 16.7222 9.75 16.308 9.75H13.808C13.3937 9.75 13.058 9.41421 13.058 9ZM10.9896 13.1534C11.321 13.4019 11.3881 13.872 11.1396 14.2034L9.26797 16.6989C9.02914 17.0173 8.58314 17.0937 8.25194 16.8729L7.12694 16.1229C6.7823 15.8932 6.68917 15.4275 6.91893 15.0829C7.14869 14.7382 7.61435 14.6451 7.95899 14.8748L8.49366 15.2313L9.9396 13.3034C10.1881 12.972 10.6582 12.9048 10.9896 13.1534Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M18.841 15.6517C17.9623 14.773 16.5377 14.773 15.659 15.6517C14.7803 16.5303 14.7803 17.955 15.659 18.8336C16.5377 19.7123 17.9623 19.7123 18.841 18.8336C19.7197 17.955 19.7197 16.5303 18.841 15.6517ZM14.5983 14.591C16.0628 13.1265 18.4372 13.1265 19.9016 14.591C21.1845 15.8738 21.3436 17.8549 20.3789 19.3109L21.7803 20.7123C22.0732 21.0052 22.0732 21.4801 21.7803 21.773C21.4874 22.0659 21.0126 22.0659 20.7197 21.773L19.3183 20.3716C17.8623 21.3362 15.8812 21.1771 14.5983 19.8943C13.1339 18.4298 13.1339 16.0555 14.5983 14.591Z" fill="currentColor"/></svg>
1549 <span class="eyebrow text-sm text-primary-500" data-astro-cid-rq7a7mhf>Identify</span>  </div> <h4 data-astro-cid-rq7a7mhf>Find the revenue hiding in your traffic</h4> <p data-astro-cid-rq7a7mhf>Snitcher shows which companies are on your site, what caught their eye and how often they come back.</p> </div> <!-- Right: Arrow button aligned to bottom --> <div class="flex items-end shrink-0" data-astro-cid-rq7a7mhf> <span aria-label="Explore feature" data-arrow-direction="right" class="arrow-btn inline-flex items-center justify-center border border-zinc-200 bg-white text-zinc-700 shadow overflow-hidden font-semibold text-sm transition-colors duration-200 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 hover:bg-primary-500 hover:border-primary-500 hover:text-white w-8 h-8 md:w-10 md:h-10 rounded-full pointer-events-none group-hover/card:bg-primary-500 group-hover/card:border-primary-500 group-hover/card:text-white"><span class="arrow-btn-icon-wrap"> <svg width="16" height="16" class="arrow-btn-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.1161 5.36612C13.6043 4.87796 14.3957 4.87796 14.8839 5.36612L20.6339 11.1161C20.8683 11.3505 21 11.6685 21 12C21 12.3315 20.8683 12.6494 20.6339 12.8839L14.8839 18.6339C14.3957 19.122 13.6043 19.122 13.1161 18.6339C12.628 18.1457 12.628 17.3543 13.1161 16.8661L16.7322 13.25H4.25C3.55964 13.25 3 12.6903 3 12C3 11.3096 3.55964 10.75 4.25 10.75H16.7322L13.1161 7.13388C12.628 6.64573 12.628 5.85427 13.1161 5.36612Z" fill="currentColor"/></svg>
1550 </span> </span>  
1550<script>
1551  (function() {
1552    function initArrowButtons() {
1553      document.querySelectorAll('.arrow-btn').forEach(function(button) {
1554        // Skip if already initialized
1555        if (button.dataset.arrowInit) return;
1556        button.dataset.arrowInit = 'true';
1557        
1558        var icon = button.querySelector('.arrow-btn-icon');
1559        if (!icon) return;
1560        
1561        var dir = button.dataset.arrowDirection || 'right';
1562        var slideIn = 'slide-in-' + dir;
1563        var slideOut = 'slide-out-' + dir;
1564        
1565        button.addEventListener('mouseenter', function() {
1566          icon.classList.remove(slideOut, 'slide-out');
1567          icon.classList.add(slideIn);
1568        });
1569        
1570        button.addEventListener('mouseleave', function() {
1571          icon.classList.remove(slideIn, 'slide-in');
1572          icon.classList.add(slideOut);
1573        });
1574      });
1575    }
1576
1577    // Initialize on DOM ready
1578    if (document.readyState === 'loading') {
1579      document.addEventListener('DOMContentLoaded', initArrowButtons);
1580    } else {
1581      initArrowButtons();
1582    }
1583    
1584    // Re-initialize on Astro page transitions
1585    document.addEventListener('astro:page-load', initArrowButtons);
1586  })();
1587</script>
1587 </div> </div>  </a>   
1587<script>
1588  (function() {
1589    function initFeatureCards() {
1590      document.querySelectorAll('.feature-card[href]').forEach(function(card) {
1591        if (card.dataset.featureCardInit) return;
1592        card.dataset.featureCardInit = 'true';
1593
1594        var arrowBtn = card.querySelector('.arrow-btn');
1595        if (!arrowBtn) return;
1596
1597        var icon = arrowBtn.querySelector('.arrow-btn-icon');
1598        if (!icon) return;
1599
1600        card.addEventListener('mouseenter', function() {
1601          icon.classList.remove('slide-out');
1602          icon.classList.add('slide-in');
1603          // Play any visual animations inside this card
1604          card.querySelectorAll('[data-animate-on-hover]').forEach(function(el) {
1605            el.style.animationPlayState = 'running';
1606          });
1607        });
1608
1609        card.addEventListener('mouseleave', function() {
1610          icon.classList.remove('slide-in');
1611          icon.classList.add('slide-out');
1612          // Pause any visual animations inside this card
1613          card.querySelectorAll('[data-animate-on-hover]').forEach(function(el) {
1614            el.style.animationPlayState = 'paused';
1615          });
1616        });
1617      });
1618    }
1619
1620    if (document.readyState === 'loading') {
1621      document.addEventListener('DOMContentLoaded', initFeatureCards);
1622    } else {
1623      initFeatureCards();
1624    }
1625
1626    document.addEventListener('astro:page-load', initFeatureCards);
1627  })();
1628</script>
1628 <!-- Card 2: Signal --> <a class="bg-white border border-zinc-200 shadow overflow-hidden  rounded-2xl feature-card p-0 overflow-hidden h-full flex flex-col transition-shadow duration-200 group/card hover:shadow-md cursor-pointer" href="/signal" data-astro-cid-rq7a7mhf>   <div class="relative aspect-[4/3] shrink-0 overflow-hidden bg-gradient-to-b from-zinc-100 to-white" data-astro-cid-rq7a7mhf> <!-- Hover gradient overlay (behind visual content) --> <div class="absolute inset-0 opacity-0 group-hover/card:opacity-100 transition-opacity duration-300 z-0 bg-gradient-to-b from-jade-50 to-white" data-astro-cid-rq7a7mhf></div> <div class="absolute inset-0 z-[1] transition-opacity duration-300 group-hover/card:opacity-90" data-astro-cid-rq7a7mhf> <div class="signal-visual relative w-full h-full overflow-hidden absolute inset-0" data-signal-visual data-astro-cid-l3ae6lyb> <div class="absolute inset-0 flex items-start md:items-center justify-center p-3" data-astro-cid-l3ae6lyb> <div class="signal-card w-full max-w-[360px] -rotate-1 bg-white shadow overflow-hidden" style="border-radius: 12px; box-shadow: 0 0 0 1px var(--alpha-border), 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);" data-astro-cid-l3ae6lyb> <!-- Session header --> <div class="flex gap-3 p-3.5" data-astro-cid-l3ae6lyb> <img src="/_astro/avatar-frederique.C2iYolEq_Z1I4Cli.webp" alt="" class="h-8 w-8 shrink-0 rounded-full object-cover border border-zinc-200" loading="lazy" decoding="auto" data-astro-cid-l3ae6lyb width="96" height="96"> <div class="flex-1 min-w-0" data-astro-cid-l3ae6lyb> <div class="flex items-start justify-between gap-2" data-astro-cid-l3ae6lyb> <span class="text-[11px] font-semibold text-zinc-900 truncate" data-astro-cid-l3ae6lyb>Frederique Janssen</span> <span class="text-[10px] text-zinc-400 shrink-0" data-astro-cid-l3ae6lyb>10:44 AM</span> </div> <p class="text-[10px] text-zinc-400 mt-0.5 flex items-center gap-1" data-astro-cid-l3ae6lyb> <span class="shrink-0 text-[10px] leading-none" data-astro-cid-l3ae6lyb>🇳🇱</span>
1629Hilversum, Netherlands
1630</p> </div> </div> <!-- Session stats --> <div class="grid grid-cols-2 gap-2 px-3.5 py-2" data-astro-cid-l3ae6lyb> <div class="bg-zinc-50 rounded-lg px-3 py-2" data-astro-cid-l3ae6lyb> <p class="text-[9px] text-zinc-400 mb-0.5" data-astro-cid-l3ae6lyb>Session length</p> <p class="text-[11px] font-medium text-zinc-900" data-astro-cid-l3ae6lyb>1h 50s</p> </div> <div class="bg-zinc-50 rounded-lg px-3 py-2 min-w-0" data-astro-cid-l3ae6lyb> <p class="text-[9px] text-zinc-400 mb-0.5" data-astro-cid-l3ae6lyb>Source</p> <p class="text-[11px] font-medium text-zinc-900" data-astro-cid-l3ae6lyb>Direct</p> </div> </div> <!-- Activity timeline --> <div class="relative px-3.5 pt-2 pb-1 overflow-hidden" data-signal-timeline data-astro-cid-l3ae6lyb> <ul class="space-y-2.5" data-astro-cid-l3ae6lyb>  <li class="signal-hover-event" data-signal-hover-event data-astro-cid-l3ae6lyb> <div data-astro-cid-l3ae6lyb> <div class="signal-hover-content relative flex gap-3" data-astro-cid-l3ae6lyb> <div class="relative shrink-0 flex items-center justify-center h-6 w-6 rounded-full bg-zinc-100" data-astro-cid-l3ae6lyb> <svg class="shrink-0 h-3 w-3" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M6.66667 10C7.03486 10 7.33333 10.2985 7.33333 10.6667V12.6667C7.33333 13.0349 7.03486 13.3333 6.66667 13.3333C6.29848 13.3333 6 13.0349 6 12.6667V10.6667C6 10.2985 6.29848 10 6.66667 10Z" fill="currentColor"/><path d="M1.95247 1.95247C2.2128 1.69216 2.63483 1.69221 2.89518 1.95247L7.13802 6.19531C7.14031 6.1976 7.14229 6.20017 7.14453 6.20247C7.15502 6.21328 7.16539 6.22418 7.17513 6.23568C7.17984 6.24122 7.1843 6.24694 7.1888 6.2526C7.1973 6.26332 7.20505 6.27457 7.21289 6.28581C7.21791 6.29299 7.22316 6.29996 7.22786 6.30729C7.23307 6.3154 7.23798 6.32368 7.24284 6.33203C7.24813 6.34114 7.25364 6.35008 7.25846 6.35938C7.26562 6.37313 7.27179 6.38739 7.278 6.40169C7.28917 6.4275 7.29888 6.45371 7.30664 6.48047C7.32381 6.5396 7.33333 6.60201 7.33333 6.66667C7.33333 6.71032 7.32897 6.75296 7.32096 6.79427C7.31189 6.84102 7.29714 6.88668 7.278 6.93099C7.2718 6.9453 7.26561 6.95954 7.25846 6.97331C7.25654 6.97701 7.2546 6.9807 7.2526 6.98438C7.22316 7.03859 7.18595 7.08769 7.
163014323 7.13151C7.1413 7.13349 7.13998 7.13606 7.13802 7.13802L2.89518 11.3809C2.63481 11.6409 2.21272 11.6411 1.95247 11.3809C1.69224 11.1206 1.69244 10.6985 1.95247 10.4382L5.05729 7.33333H0.666667C0.298477 7.33333 0 7.03486 0 6.66667C0 6.29848 0.298477 6 0.666667 6H5.05729L1.95247 2.89518C1.69227 2.63488 1.69232 2.21281 1.95247 1.95247Z" fill="currentColor"/><path d="M9.02344 9.02344C9.28379 8.76309 9.70645 8.76309 9.9668 9.02344L11.3809 10.4375C11.6411 10.6978 11.641 11.1199 11.3809 11.3802C11.1205 11.6406 10.6985 11.6405 10.4382 11.3802L9.02344 9.96615C8.7633 9.70584 8.7633 9.28375 9.02344 9.02344Z" fill="currentColor"/><path d="M12.6667 6C13.0349 6 13.3333 6.29848 13.3333 6.66667C13.3333 7.03486 13.0349 7.33333 12.6667 7.33333H10.6667C10.2985 7.33333 10 7.03486 10 6.66667C10 6.29848 10.2985 6 10.6667 6H12.6667Z" fill="currentColor"/><path d="M10.4382 1.95247C10.6985 1.69221 11.1205 1.69215 11.3809 1.95247C11.6411 2.2128 11.6411 2.63485 11.3809 2.89518L9.9668 4.30925C9.70645 4.56959 9.28379 4.56959 9.02344 4.30925C8.76336 4.04891 8.76326 3.62681 9.02344 3.36654L10.4382 1.95247Z" fill="currentColor"/><path d="M6.66667 0C7.03486 0 7.33333 0.298477 7.33333 0.666667V2.66667C7.33333 3.03486 7.03486 3.33333 6.66667 3.33333C6.29848 3.33333 6 3.03486 6 2.66667V0.666667C6 0.298477 6.29848 0 6.66667 0Z" fill="currentColor"/></svg> </div> <div class="flex-1 min-w-0" data-astro-cid-l3ae6lyb> <p class="text-[11px] text-zinc-900 font-semibold truncate" data-astro-cid-l3ae6lyb>Hovered signal card</p> <p class="text-[10px] text-zinc-400 flex items-center gap-1.5" data-astro-cid-l3ae6lyb> <span data-astro-cid-l3ae6lyb>just now</span> </p> </div> </div> </div> </li> <li class="signal-timeline-item relative flex gap-3" data-signal-item data-astro-cid-l3ae6lyb>  <div class="relative shrink-0 flex items-center justify-center h-6 w-6 rounded-full bg-zinc-100" data-astro-cid-l3ae6lyb> <svg class="shrink-0 h-3 w-3" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 4C15.9517 3.99997 19.7906 6.27233 22.3567 10.5831C22.8762 11.4558 22.8762 12.5441 22.3567 13.4168C19.7906 17.7276 15.9517 20 12 20C8.04829 20 4.20943 17.7277 1.64329 13.4169C1.12379 12.5442 1.12379 11.4559 1.64329 10.5832C4.20943 6.27243 8.04828 4.00003 12 4ZM8.5 12C8.5 10.067 10.067 8.5 12 8.5C13.933 8.5 15.5 10.067 15.5 12C15.5 13.933 13.933 15.5 12 15.5C10.067 15.5 8.5 13.933 8.5 12Z" fill="currentColor"/></svg> </div>  <div class="flex-1 min-w-0" data-astro-cid-l3ae6lyb>  <p class="text-[11px] text-zinc-900 font-semibold truncate" data-astro-cid-l3ae6lyb>Pricing</p> <p class="text-[10px] text-zinc-400 flex items-center gap-1.5" data-astro-cid-l3ae6lyb> <span data-astro-cid-l3ae6lyb>7m 23s</span> <span data-astro-cid-l3ae6lyb>10:44 AM</span> </p>  </div> </li><li class="signal-timeline-item relative flex gap-3" data-signal-item data-astro-cid-l3ae6lyb>  <div class="relative shrink-0 flex items-center justify-center h-6 w-6 rounded-full bg-zinc-100" data-astro-cid-l3ae6lyb> <svg class="shrink-0 h-3 w-3" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M11 2C11.5523 2 12 2.44772 12 3V4.5C12 5.05228 11.5523 5.5 11 5.5C10.4477 5.5 10 5.05228 10 4.5V3C10 2.44772 10.4477 2 11 2Z" fill="currentColor"/><path d="M17.3634 4.63582C17.7539 5.02634 17.7539 5.65951 17.3634 6.05003L16.3027 7.11069C15.9122 7.50122 15.279 7.50122 14.8885 7.11069C14.498 6.72017 14.498 6.087 14.8885 5.69648L15.9491 4.63582C16.3397 4.24529 16.9728 4.24529 17.3634 4.63582Z" fill="currentColor"/><path d="M7.1114 16.303C7.50193 15.9124 7.50193 15.2793 7.1114 14.8887C6.72088 14.4982 6.08771 14.4982 5.69719 14.8887L4.63653 15.9494C4.24601 16.3399 4.24601 16.9731 4.63653 17.3636C5.02705 17.7541 5.66022 17.7541 6.05074 17.3636L7.1114 16.303Z" fill="currentColor"/><path d="M5.5 11C5.5 11.5523 5.05228 12 4.5 12H3C2.44772 12 2 11.5523 2 11C2 10.4477 2.44772 10 3 10H4.5C5.05228 10 5.5 10.4477 5.5 11Z" fill="currentColor"/><path d="M5.69704 7.1114C6.08756 7.50193 6.72073 7.50193 7.11125 7.1114C7.50178 6.72088 7.50178 6.08771 7.11125 5.69719L6.05059 4.63653C5.66007 4.24601 5.0269 4.24601 4.63638 4.63653C4.24585 5.02705 4.24585 5.66022 4.63638 6.05074L5.69704 7.1114Z" fill="currentColor"/><path d="M11.4033 9.46701C10.1914 9.00289 9.00191 10.1924 9.46604 11.4043L13.2017 21.1585C13.647 22.3212 15.2332 22.4666 15.8824 21.4042L17.9765 17.9775L21.4032 15.8834C22.4656 15.2341 22.3202 13.648 21.1575 13.2027L11.4033 9.46701Z" fill="currentColor"/></svg> </div>  <div class="flex-1 min-w-0" data-astro-cid-l3ae6lyb>  <p class="text-[11px] text-zinc-900 font-semibold truncate" data-astro-cid-l3ae6lyb>Button click on /pricing</p> <div class="mt-1.5 bg-zinc-50 rounded-lg px-2.5 py-2" data-astro-cid-l3ae6lyb> <p class="text-[9px] text-zinc-400 mb-0.5" data-astro-cid-l3ae6lyb>Button value</p> <p class="text-[11px] font-medium text-zinc-900" data-astro-cid-l3ae6lyb>Request a Demo</p> </div> <p class="text-[10px] text-zinc-400 flex items-center gap-1.5 mt-1.5" data-astro-cid-l3ae6lyb> <span data-astro-cid-l3ae6lyb>2m 15s</span> <span class="text-zinc-300" data-astro-cid-l3ae6lyb>|</span> <span data-astro-cid-l3ae6lyb>10:41 AM</span> </p>  </div> </li><li class="signal-timeline-item relative flex gap-3" data-signal-item data-astro-cid-l3ae6lyb>  <div class="relative shrink-0 flex items-center justify-center h-6 w-6 rounded-full bg-zinc-100" data-astro-cid-l3ae6lyb> <svg class="shrink-0 h-3 w-3" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 4C15.9517 3.99997 19.7906 6.27233 22.3567 10.5831C22.8762 11.4558 22.8762 12.5441 22.3567 13.4168C19.7906 17.7276 15.9517 20 12 20C8.04829 20 4.20943 17.7277 1.64329 13.4169C1.12379 12.5442 1.12379 11.4559 1.64329 10.5832C4.20943 6.27243 8.04828 4.00003 12 4ZM8.5 12C8.5 10.067 10.067 8.5 12 8.5C13.933 8.5 15.5 10.067 15.5 12C15.5 13.933 13.933 15.5 12 15.5C10.067 15.5 8.5 13.933 8.5 12Z" fill="currentColor"/></svg> </div>  <div class="flex-1 min-w-0" data-astro-cid-l3ae6lyb>  <p class="text-[11px] text-zinc-900 font-semibold truncate" data-astro-cid-l3ae6lyb>Case Studies — Acme</p> <p class="text-[10px] text-zinc-400 flex items-center gap-1.5" data-astro-cid-l3ae6lyb> <span data-astro-cid-l3ae6lyb>4m 12s</span> <span data-astro-cid-l3ae6lyb>10:37 AM</span> </p>  </div> </li><li class="signal-timeline-item relative flex gap-3" data-signal-item data-astro-cid-l3ae6lyb>  <div class="relative shrink-0 flex items-center justify-center h-6 w-6 rounded-full bg-zinc-100" data-astro-cid-l3ae6lyb> <svg class="shrink-0 h-3 w-3" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 4C15.9517 3.99997 19.7906 6.27233 22.3567 10.5831C22.8762 11.4558 22.8762 12.5441 22.3567 13.4168C19.7906 17.7276 15.9517 20 12 20C8.04829 20 4.20943 17.7277 1.64329 13.4169C1.12379 12.5442 1.12379 11.4559 1.64329 10.5832C4.20943 6.27243 8.04828 4.00003 12 4ZM8.5 12C8.5 10.067 10.067 8.5 12 8.5C13.933 8.5 15.5 10.067 15.5 12C15.5 13.933 13.933 15.5 12 15.5C10.067 15.5 8.5 13.933 8.5 12Z" fill="currentColor"/></svg> </div>  <div class="flex-1 min-w-0" data-astro-cid-l3ae6lyb>  <p class="text-[11px] text-zinc-900 font-semibold truncate" data-astro-cid-l3ae6lyb>Integrations — Salesforce</p> <p class="text-[10px] text-zinc-400 flex items-center gap-1.5" data-astro-cid-l3ae6lyb> <span data-astro-cid-l3ae6lyb>3m 45s</span> <span data-astro-cid-l3ae6lyb>10:17 AM</span> </p>  </div> </li><li class="signal-timeline-item relative flex gap-3" data-signal-item data-astro-cid-l3ae6lyb>  <div class="relative shrink-0 flex items-center justify-center h-6 w-6 rounded-full bg-zinc-100" data-astro-cid-l3ae6lyb> <svg class="shrink-0 h-3 w-3" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 4C15.9517 3.99997 19.7906 6.27233 22.3567 10.5831C22.8762 11.4558 22.8762 12.5441 22.3567 13.4168C19.7906 17.7276 15.9517 20 12 20C8.04829 20 4.20943 17.7277 1.64329 13.4169C1.12379 12.5442 1.12379 11.4559 1.64329 10.5832C4.20943 6.27243 8.04828 4.00003 12 4ZM8.5 12C8.5 10.067 10.067 8.5 12 8.5C13.933 8.5 15.5 10.067 15.5 12C15.5 13.933 13.933 15.5 12 15.5C10.067 15.5 8.5 13.933 8.5 12Z" fill="currentColor"/></svg> </div>  <div class="flex-1 min-w-0" data-astro-cid-l3ae6lyb>  <p class="text-[11px] text-zinc-900 font-semibold truncate" data-astro-cid-l3ae6lyb>Homepage</p> <p class="text-[10px] text-zinc-400 flex items-center gap-1.5" data-astro-cid-l3ae6lyb> <span data-astro-cid-l3ae6lyb>2m 31s</span> <span data-astro-cid-l3ae6lyb>10:12 AM</span> </p>  </div> </li> </ul> <!-- Bottom fade --> <div class="absolute bottom-0 left-0 right-0 h-10 bg-gradient-to-t from-white to-transparent pointer-events-none z-10" data-astro-cid-l3ae6lyb></div> </div> </div> </div> </div>  
1630<script>
1631  (function() {
1632    var timeouts = [];
1633    var observer = null;
1634
1635    var hoverEnterHandler = null;
1636    var hoverLeaveHandler = null;
1637    var featureCard = null;
1638
1639    function init() {
1640      var visual = document.querySelector('[data-signal-visual]');
1641      if (!visual || visual.dataset.signalInit) return;
1642      visual.dataset.signalInit = 'true';
1643
1644      var items = visual.querySelectorAll('[data-signal-item]');
1645      if (!items.length) return;
1646
1647      observer = new IntersectionObserver(function(entries) {
1648        entries.forEach(function(entry) {
1649          if (!entry.isIntersecting) return;
1650
1651          items.forEach(function(item, i) {
1652            var delay = 300 + i * 400;
1653            timeouts.push(setTimeout(function() {
1654              item.classList.add('visible');
1655            }, delay));
1656          });
1657
1658          observer.unobserve(entry.target);
1659        });
1660      }, { threshold: 0.3 });
1661
1662      observer.observe(visual);
1663
1664      // Hover custom event — show on enter, hide on leave
1665      featureCard = visual.closest('.feature-card');
1666      var hoverEvent = visual.querySelector('[data-signal-hover-event]');
1667      var timeline = visual.querySelector('[data-signal-timeline]');
1668      if (featureCard && hoverEvent && timeline) {
1669        // Lock timeline height so the card doesn't grow
1670        timeline.style.height = timeline.offsetHeight + 'px';
1671
1672        hoverEnterHandler = function() {
1673          hoverEvent.classList.add('visible');
1674        };
1675
1676        hoverLeaveHandler = function() {
1677          hoverEvent.classList.remove('visible');
1678        };
1679
1680        featureCard.addEventListener('mouseenter', hoverEnterHandler);
1681        featureCard.addEventListener('mouseleave', hoverLeaveHandler);
1682      }
1683    }
1684
1685    function cleanup() {
1686      timeouts.forEach(clearTimeout);
1687      timeouts = [];
1688      if (observer) {
1689        observer.disconnect();
1690        observer = null;
1691      }
1692      if (featureCard) {
1693        if (hoverEnterHandler) featureCard.removeEventListener('mouseenter', hoverEnterHandler);
1694        if (hoverLeaveHandler) featureCard.removeEventListener('mouseleave', hoverLeaveHandler);
1695        hoverEnterHandler = null;
1696        hoverLeaveHandler = null;
1697        featureCard = null;
1698      }
1699      var visual = document.querySelector('[data-signal-visual]');
1700      if (visual) delete visual.dataset.signalInit;
1701      var items = document.querySelectorAll('[data-signal-item]');
1702      items.forEach(function(item) {
1703        item.classList.remove('visible');
1704      });
1705      var hoverEvent = document.querySelector('[data-signal-hover-event]');
1706      if (hoverEvent) {
1707        hoverEvent.classList.remove('visible');
1708      }
1709      var timeline = document.querySelector('[data-signal-timeline]');
1710      if (timeline) timeline.style.height = '';
1711    }
1712
1713    if (document.readyState === 'loading') {
1714      document.addEventListener('DOMContentLoaded', init);
1715    } else {
1716      init();
1717    }
1718
1719  })();
1720</script>
1720 </div> </div>  <div class="flex gap-4 p-4 md:p-6 flex-1" data-astro-cid-rq7a7mhf> <!-- Left: Icon, Title, Description --> <div class="flex flex-col gap-4 flex-1" data-astro-cid-rq7a7mhf> <div class="flex items-center gap-2" data-astro-cid-rq7a7mhf> <svg width="24" height="24" class="shrink-0 text-jade-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M11.5455 15.7345C9.45546 15.1509 7.58124 14.7024 5.5 15.5655V21.2496C5.5 21.6638 5.16421 21.9996 4.75 21.9996C4.33579 21.9996 4 21.6638 4 21.2496V4.39872C4 3.74584 4.37163 3.093 5.04245 2.82695C7.52875 1.84088 9.76493 2.37886 11.7734 2.93538C11.9051 2.97188 12.0357 3.00836 12.1653 3.04455C14.0634 3.57485 15.7401 4.04331 17.5642 3.60129C18.6368 3.34137 20 4.04343 20 5.38675V14.4616C20 15.1144 19.6284 15.7673 18.9576 16.0333C16.3236 17.078 13.9537 16.4115 11.8464 15.8189C11.7455 15.7906 11.6452 15.7623 11.5455 15.7345Z" fill="currentColor"/></svg>
1721 <span class="eyebrow text-sm text-jade-500" data-astro-cid-rq7a7mhf>Signal</span>  </div> <h4 data-astro-cid-rq7a7mhf>Know who&#39;s ready before anyone else</h4> <p data-astro-cid-rq7a7mhf>Snitcher tracks live intent across your site and campaigns, revealing which accounts are heating up so your team can act.</p> </div> <!-- Right: Arrow button aligned to bottom --> <div class="flex items-end shrink-0" data-astro-cid-rq7a7mhf> <span aria-label="Explore feature" data-arrow-direction="right" class="arrow-btn inline-flex items-center justify-center border border-zinc-200 bg-white text-zinc-700 shadow overflow-hidden font-semibold text-sm transition-colors duration-200 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 hover:bg-jade-500 hover:border-jade-500 hover:text-white w-8 h-8 md:w-10 md:h-10 rounded-full pointer-events-none group-hover/card:bg-jade-500 group-hover/card:border-jade-500 group-hover/card:text-white"><span class="arrow-btn-icon-wrap"> <svg width="16" height="16" class="arrow-btn-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.1161 5.36612C13.6043 4.87796 14.3957 4.87796 14.8839 5.36612L20.6339 11.1161C20.8683 11.3505 21 11.6685 21 12C21 12.3315 20.8683 12.6494 20.6339 12.8839L14.8839 18.6339C14.3957 19.122 13.6043 19.122 13.1161 18.6339C12.628 18.1457 12.628 17.3543 13.1161 16.8661L16.7322 13.25H4.25C3.55964 13.25 3 12.6903 3 12C3 11.3096 3.55964 10.75 4.25 10.75H16.7322L13.1161 7.13388C12.628 6.64573 12.628 5.85427 13.1161 5.36612Z" fill="currentColor"/></svg>
1722 </span> </span>  
1722<script>
1723  (function() {
1724    function initArrowButtons() {
1725      document.querySelectorAll('.arrow-btn').forEach(function(button) {
1726        // Skip if already initialized
1727        if (button.dataset.arrowInit) return;
1728        button.dataset.arrowInit = 'true';
1729        
1730        var icon = button.querySelector('.arrow-btn-icon');
1731        if (!icon) return;
1732        
1733        var dir = button.dataset.arrowDirection || 'right';
1734        var slideIn = 'slide-in-' + dir;
1735        var slideOut = 'slide-out-' + dir;
1736        
1737        button.addEventListener('mouseenter', function() {
1738          icon.classList.remove(slideOut, 'slide-out');
1739          icon.classList.add(slideIn);
1740        });
1741        
1742        button.addEventListener('mouseleave', function() {
1743          icon.classList.remove(slideIn, 'slide-in');
1744          icon.classList.add(slideOut);
1745        });
1746      });
1747    }
1748
1749    // Initialize on DOM ready
1750    if (document.readyState === 'loading') {
1751      document.addEventListener('DOMContentLoaded', initArrowButtons);
1752    } else {
1753      initArrowButtons();
1754    }
1755    
1756    // Re-initialize on Astro page transitions
1757    document.addEventListener('astro:page-load', initArrowButtons);
1758  })();
1759</script>
1759 </div> </div>  </a>   
1759<script>
1760  (function() {
1761    function initFeatureCards() {
1762      document.querySelectorAll('.feature-card[href]').forEach(function(card) {
1763        if (card.dataset.featureCardInit) return;
1764        card.dataset.featureCardInit = 'true';
1765
1766        var arrowBtn = card.querySelector('.arrow-btn');
1767        if (!arrowBtn) return;
1768
1769        var icon = arrowBtn.querySelector('.arrow-btn-icon');
1770        if (!icon) return;
1771
1772        card.addEventListener('mouseenter', function() {
1773          icon.classList.remove('slide-out');
1774          icon.classList.add('slide-in');
1775          // Play any visual animations inside this card
1776          card.querySelectorAll('[data-animate-on-hover]').forEach(function(el) {
1777            el.style.animationPlayState = 'running';
1778          });
1779        });
1780
1781        card.addEventListener('mouseleave', function() {
1782          icon.classList.remove('slide-in');
1783          icon.classList.add('slide-out');
1784          // Pause any visual animations inside this card
1785          card.querySelectorAll('[data-animate-on-hover]').forEach(function(el) {
1786            el.style.animationPlayState = 'paused';
1787          });
1788        });
1789      });
1790    }
1791
1792    if (document.readyState === 'loading') {
1793      document.addEventListener('DOMContentLoaded', initFeatureCards);
1794    } else {
1795      initFeatureCards();
1796    }
1797
1798    document.addEventListener('astro:page-load', initFeatureCards);
1799  })();
1800</script>
1800 </div>  <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mt-6"> <!-- Card 3: Automate --> <a class="bg-white border border-zinc-200 shadow overflow-hidden  rounded-2xl feature-card p-0 overflow-hidden h-full flex flex-col transition-shadow duration-200 group/card hover:shadow-md cursor-pointer" href="/automate" data-astro-cid-rq7a7mhf>   <div class="relative aspect-[4/3] shrink-0 overflow-hidden bg-gradient-to-b from-zinc-100 to-white" data-astro-cid-rq7a7mhf> <!-- Hover gradient overlay (behind visual content) --> <div class="absolute inset-0 opacity-0 group-hover/card:opacity-100 transition-opacity duration-300 z-0 bg-gradient-to-b from-honey-50 to-white" data-astro-cid-rq7a7mhf></div> <div class="absolute inset-0 z-[1] transition-opacity duration-300 group-hover/card:opacity-90" data-astro-cid-rq7a7mhf> <div class="snv relative w-full h-full overflow-hidden select-none" data-snv data-astro-cid-fjxicinn> <!-- Notification stack --> <div class="absolute inset-0 flex items-center justify-center px-5" data-astro-cid-fjxicinn> <div class="snv-group relative w-full max-w-[280px]" style="height: 260px;" data-snv-group data-astro-cid-fjxicinn> <div class="snv-card" data-astro-cid-fjxicinn> <div class="snv-body" data-astro-cid-fjxicinn> <div class="flex items-center gap-2" data-astro-cid-fjxicinn> <div class="snv-icon-wrap" data-astro-cid-fjxicinn> <svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313z" fill="#E01E5A"/><path d="M8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312z" fill="#36C5F0"/><path d="M18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.27 0a2.528 2.528 0 0 1-2.522 2.521 2.528 2.528 0 0 1-2.52-2.521V2.522A2.528 2.528 0 0 1 15.165 0a2.528 2.528 0 0 1 2.521 2.522v6.312z" fill="#2EB67D"/><path d="M15.165 18.956a2.528 2.528 0 0 1 2.521 2.522A2.528 2.528 0 0 1 15.165 24a2.528 2.528 0 0 1-2.521-2.522v-2.522h2.521zm0-1.27a2.528 2.528 0 0 1-2.521-2.522 2.528 2.528 0 0 1 2.521-2.52h6.313A2.528 2.528 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.521h-6.313z" fill="#ECB22E"/></svg> </div> <span class="font-semibold text-[13px] leading-none text-zinc-900 flex-1" data-astro-cid-fjxicinn>Slack</span> <span class="text-[11px] leading-none text-zinc-400 tabular-nums" data-astro-cid-fjxicinn>5m ago</span> </div> <p class="text-[11px] font-medium text-zinc-500 mt-1.5 mb-0 leading-none" data-astro-cid-fjxicinn>#hot-leads</p> <p class="text-[13px] text-zinc-700 mt-1 mb-0" data-astro-cid-fjxicinn> <span class="inline-block align-text-bottom mr-0.5" data-astro-cid-fjxicinn>&#x1F525;</span> <span class="font-semibold text-zinc-900" data-astro-cid-fjxicinn>Vercel</span> just visited Pricing </p> </div> </div><div class="snv-card" data-astro-cid-fjxicinn> <div class="snv-body" data-astro-cid-fjxicinn> <div class="flex items-center gap-2" data-astro-cid-fjxicinn> <div class="snv-icon-wrap" data-astro-cid-fjxicinn> <svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313z" fill="#E01E5A"/><path d="M8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312z" fill="#36C5F0"/><path d="M18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.27 0a2.528 2.528 0 0 1-2.522 2.521 2.528 2.528 0 0 1-2.52-2.521V2.522A2.528 2.528 0 0 1 15.165 0a2.528 2.528 0 0 1 2.521 2.522v6.312z" fill="#2EB67D"/><path d="M15.165 18.956a2.528 2.528 0 0 1 2.521 2.522A2.528 2.528 0 0 1 15.165 24a2.528 2.528 0 0 1-2.521-2.522v-2.522h2.521zm0-1.27a2.528 2.528 0 0 1-2.521-2.522 2.528 2.528 0 0 1 2.521-2.52h6.313A2.528 2.528 0 0 1 24 15.165
1800a2.528 2.528 0 0 1-2.522 2.521h-6.313z" fill="#ECB22E"/></svg> </div> <span class="font-semibold text-[13px] leading-none text-zinc-900 flex-1" data-astro-cid-fjxicinn>Slack</span> <span class="text-[11px] leading-none text-zinc-400 tabular-nums" data-astro-cid-fjxicinn>2m ago</span> </div> <p class="text-[11px] font-medium text-zinc-500 mt-1.5 mb-0 leading-none" data-astro-cid-fjxicinn>#hot-leads</p> <p class="text-[13px] text-zinc-700 mt-1 mb-0" data-astro-cid-fjxicinn> <span class="inline-block align-text-bottom mr-0.5" data-astro-cid-fjxicinn>&#x1F525;</span> <span class="font-semibold text-zinc-900" data-astro-cid-fjxicinn>Incident.io</span> just visited Integrations </p> </div> </div><div class="snv-card" data-astro-cid-fjxicinn> <div class="snv-body" data-astro-cid-fjxicinn> <div class="flex items-center gap-2" data-astro-cid-fjxicinn> <div class="snv-icon-wrap" data-astro-cid-fjxicinn> <svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313z" fill="#E01E5A"/><path d="M8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312z" fill="#36C5F0"/><path d="M18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.27 0a2.528 2.528 0 0 1-2.522 2.521 2.528 2.528 0 0 1-2.52-2.521V2.522A2.528 2.528 0 0 1 15.165 0a2.528 2.528 0 0 1 2.521 2.522v6.312z" fill="#2EB67D"/><path d="M15.165 18.956a2.528 2.528 0 0 1 2.521 2.522A2.528 2.528 0 0 1 15.165 24a2.528 2.528 0 0 1-2.521-2.522v-2.522h2.521zm0-1.27a2.528 2.528 0 0 1-2.521-2.522 2.528 2.528 0 0 1 2.521-2.52h6.313A2.528 2.528 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.521h-6.313z" fill="#ECB22E"/></svg> </div> <span class="font-semibold text-[13px] leading-none text-zinc-900 flex-1" data-astro-cid-fjxicinn>Slack</span> <span class="text-[11px] leading-none text-zinc-400 tabular-nums" data-astro-cid-fjxicinn>now</span> </div> <p class="text-[11px] font-medium text-zinc-500 mt-1.5 mb-0 leading-none" data-astro-cid-fjxicinn>#hot-leads</p> <p class="text-[13px] text-zinc-700 mt-1 mb-0" data-astro-cid-fjxicinn> <span class="inline-block align-text-bottom mr-0.5" data-astro-cid-fjxicinn>&#x1F525;</span> <span class="font-semibold text-zinc-900" data-astro-cid-fjxicinn>Anthropic</span> just visited API Docs </p> </div> </div> </div> </div> </div>  
1800<script>
1801  (function() {
1802    var timeouts = [];
1803    var observer = null;
1804
1805    function init() {
1806      var visual = document.querySelector('[data-snv]');
1807      if (!visual || visual.dataset.snvInit) return;
1808      visual.dataset.snvInit = 'true';
1809
1810      var cards = visual.querySelectorAll('.snv-card');
1811      var group = visual.querySelector('[data-snv-group]');
1812      if (cards.length < 3 || !group) return;
1813
1814      observer = new IntersectionObserver(function(entries) {
1815        entries.forEach(function(entry) {
1816          if (!entry.isIntersecting) return;
1817
1818          // Card 0 = Vercel (z-10), Card 1 = Incident.io (z-20), Card 2 = Anthropic (z-30)
1819          // Animation: each card enters at stack-top, pushing previous cards down
1820
1821          // t=300ms: Vercel slides in at the top position
1822          timeouts.push(setTimeout(function() {
1823            cards[0].classList.add('s-top');
1824          }, 300));
1825
1826          // t=1000ms: Incident.io slides in at top, Vercel shifts to mid
1827          timeouts.push(setTimeout(function() {
1828            cards[1].classList.add('s-top');
1829            cards[0].classList.remove('s-top');
1830            cards[0].classList.add('s-mid');
1831          }, 1000));
1832
1833          // t=1700ms: Anthropic slides in at top, Incident→mid, Vercel→bot
1834          timeouts.push(setTimeout(function() {
1835            cards[2].classList.add('s-top');
1836            cards[1].classList.remove('s-top');
1837            cards[1].classList.add('s-mid');
1838            cards[0].classList.remove('s-mid');
1839            cards[0].classList.add('s-bot');
1840          }, 1700));
1841
1842          // t=2200ms: Enable hover expansion
1843          timeouts.push(setTimeout(function() {
1844            group.classList.add('ready');
1845
1846            // Listen for hover on the parent feature card
1847            var card = visual.closest('.feature-card');
1848            if (card) {
1849              card.addEventListener('mouseenter', function() {
1850                group.classList.add('hovered');
1851              });
1852              card.addEventListener('mouseleave', function() {
1853                group.classList.remove('hovered');
1854              });
1855            }
1856          }, 2200));
1857
1858          observer.unobserve(entry.target);
1859        });
1860      }, { threshold: 0.3 });
1861
1862      observer.observe(visual);
1863    }
1864
1865    function cleanup() {
1866      timeouts.forEach(clearTimeout);
1867      timeouts = [];
1868      if (observer) {
1869        observer.disconnect();
1870        observer = null;
1871      }
1872      var visual = document.querySelector('[data-snv]');
1873      if (visual) delete visual.dataset.snvInit;
1874    }
1875
1876    if (document.readyState === 'loading') {
1877      document.addEventListener('DOMContentLoaded', init);
1878    } else {
1879      init();
1880    }
1881
1882    document.addEventListener('astro:before-swap', cleanup);
1883    document.addEventListener('astro:page-load', init);
1884  })();
1885</script>
1885 </div> </div>  <div class="flex gap-4 p-4 md:p-6 flex-1" data-astro-cid-rq7a7mhf> <!-- Left: Icon, Title, Description --> <div class="flex flex-col gap-4 flex-1" data-astro-cid-rq7a7mhf> <div class="flex items-center gap-2" data-astro-cid-rq7a7mhf> <svg width="24" height="24" class="shrink-0 text-amber-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M9.32916 2C8.70285 2 8.12428 2.33472 7.81208 2.87768L3.21208 10.8777C2.54125 12.0443 3.38339 13.5 4.72916 13.5H7.67252C7.83072 13.5 7.94915 13.6451 7.91745 13.8001L6.68268 19.8386C6.33503 21.5388 8.40755 22.6537 9.63464 21.4267L20.5739 10.4874C21.6763 9.385 20.8955 7.5 19.3364 7.5H16.8687C16.6828 7.5 16.562 7.30442 16.6451 7.1382L17.9479 4.53262C18.5296 3.36905 17.6835 2 16.3826 2H9.32916Z" fill="currentColor"/></svg>
1886 <span class="eyebrow text-sm text-amber-500" data-astro-cid-rq7a7mhf>Automate</span>  </div> <h4 data-astro-cid-rq7a7mhf>Stay fast while everyone else slows down</h4> <p data-astro-cid-rq7a7mhf>Snitcher routes leads, syncs data and fires workflows automatically so your GTM keeps running while others chase fixes.</p> </div> <!-- Right: Arrow button aligned to bottom --> <div class="flex items-end shrink-0" data-astro-cid-rq7a7mhf> <span aria-label="Explore feature" data-arrow-direction="right" class="arrow-btn inline-flex items-center justify-center border border-zinc-200 bg-white text-zinc-700 shadow overflow-hidden font-semibold text-sm transition-colors duration-200 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 hover:bg-amber-500 hover:border-amber-500 hover:text-white w-8 h-8 md:w-10 md:h-10 rounded-full pointer-events-none group-hover/card:bg-amber-500 group-hover/card:border-amber-500 group-hover/card:text-white"><span class="arrow-btn-icon-wrap"> <svg width="16" height="16" class="arrow-btn-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.1161 5.36612C13.6043 4.87796 14.3957 4.87796 14.8839 5.36612L20.6339 11.1161C20.8683 11.3505 21 11.6685 21 12C21 12.3315 20.8683 12.6494 20.6339 12.8839L14.8839 18.6339C14.3957 19.122 13.6043 19.122 13.1161 18.6339C12.628 18.1457 12.628 17.3543 13.1161 16.8661L16.7322 13.25H4.25C3.55964 13.25 3 12.6903 3 12C3 11.3096 3.55964 10.75 4.25 10.75H16.7322L13.1161 7.13388C12.628 6.64573 12.628 5.85427 13.1161 5.36612Z" fill="currentColor"/></svg>
1887 </span> </span>  
1887<script>
1888  (function() {
1889    function initArrowButtons() {
1890      document.querySelectorAll('.arrow-btn').forEach(function(button) {
1891        // Skip if already initialized
1892        if (button.dataset.arrowInit) return;
1893        button.dataset.arrowInit = 'true';
1894        
1895        var icon = button.querySelector('.arrow-btn-icon');
1896        if (!icon) return;
1897        
1898        var dir = button.dataset.arrowDirection || 'right';
1899        var slideIn = 'slide-in-' + dir;
1900        var slideOut = 'slide-out-' + dir;
1901        
1902        button.addEventListener('mouseenter', function() {
1903          icon.classList.remove(slideOut, 'slide-out');
1904          icon.classList.add(slideIn);
1905        });
1906        
1907        button.addEventListener('mouseleave', function() {
1908          icon.classList.remove(slideIn, 'slide-in');
1909          icon.classList.add(slideOut);
1910        });
1911      });
1912    }
1913
1914    // Initialize on DOM ready
1915    if (document.readyState === 'loading') {
1916      document.addEventListener('DOMContentLoaded', initArrowButtons);
1917    } else {
1918      initArrowButtons();
1919    }
1920    
1921    // Re-initialize on Astro page transitions
1922    document.addEventListener('astro:page-load', initArrowButtons);
1923  })();
1924</script>
1924 </div> </div>  </a>   
1924<script>
1925  (function() {
1926    function initFeatureCards() {
1927      document.querySelectorAll('.feature-card[href]').forEach(function(card) {
1928        if (card.dataset.featureCardInit) return;
1929        card.dataset.featureCardInit = 'true';
1930
1931        var arrowBtn = card.querySelector('.arrow-btn');
1932        if (!arrowBtn) return;
1933
1934        var icon = arrowBtn.querySelector('.arrow-btn-icon');
1935        if (!icon) return;
1936
1937        card.addEventListener('mouseenter', function() {
1938          icon.classList.remove('slide-out');
1939          icon.classList.add('slide-in');
1940          // Play any visual animations inside this card
1941          card.querySelectorAll('[data-animate-on-hover]').forEach(function(el) {
1942            el.style.animationPlayState = 'running';
1943          });
1944        });
1945
1946        card.addEventListener('mouseleave', function() {
1947          icon.classList.remove('slide-in');
1948          icon.classList.add('slide-out');
1949          // Pause any visual animations inside this card
1950          card.querySelectorAll('[data-animate-on-hover]').forEach(function(el) {
1951            el.style.animationPlayState = 'paused';
1952          });
1953        });
1954      });
1955    }
1956
1957    if (document.readyState === 'loading') {
1958      document.addEventListener('DOMContentLoaded', initFeatureCards);
1959    } else {
1960      initFeatureCards();
1961    }
1962
1963    document.addEventListener('astro:page-load', initFeatureCards);
1964  })();
1965</script>
1965 <!-- Card 4: Engage --> <a class="bg-white border border-zinc-200 shadow overflow-hidden  rounded-2xl feature-card p-0 overflow-hidden h-full flex flex-col transition-shadow duration-200 group/card hover:shadow-md cursor-pointer" href="/engage" data-astro-cid-rq7a7mhf>   <div class="relative aspect-[4/3] shrink-0 overflow-hidden bg-gradient-to-b from-zinc-100 to-white" data-astro-cid-rq7a7mhf> <!-- Hover gradient overlay (behind visual content) --> <div class="absolute inset-0 opacity-0 group-hover/card:opacity-100 transition-opacity duration-300 z-0 bg-gradient-to-b from-lavender-50 to-white" data-astro-cid-rq7a7mhf></div> <div class="absolute inset-0 z-[1] transition-opacity duration-300 group-hover/card:opacity-90" data-astro-cid-rq7a7mhf> <div class="engage-visual relative w-full h-full overflow-hidden absolute inset-0" data-engage-visual data-astro-cid-ybnukg4e> <div class="absolute inset-0 flex items-center justify-center px-5" data-astro-cid-ybnukg4e> <div class="engage-flip-container w-full max-w-[280px]" data-astro-cid-ybnukg4e> <div class="engage-flip-inner" data-astro-cid-ybnukg4e>  <div class="engage-face engage-front" data-astro-cid-ybnukg4e> <div class="bg-white rounded-xl overflow-hidden" style="box-shadow: 0 0 0 1px var(--alpha-border, rgba(0,0,0,0.06)), 0 1px 3px 0 rgb(0 0 0 / 0.08), 0 4px 12px -2px rgb(0 0 0 / 0.06);" data-astro-cid-ybnukg4e> <div class="px-5 pt-5 pb-4 flex flex-col items-center text-center" data-astro-cid-ybnukg4e>  <div class="relative mb-3" data-astro-cid-ybnukg4e> <img src="https://images.unsplash.com/photo-1539125530496-3ca408f9c2d9?w=112&h=112&fit=crop&crop=face" alt="" role="presentation" class="w-14 h-14 rounded-full object-cover" data-astro-cid-ybnukg4e> <div class="absolute -bottom-0.5 -right-0.5" data-astro-cid-ybnukg4e> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" width="20" height="20"><path d="M12 3.75C13.1409 3.75 14.1497 4.2487 14.8916 5.01855C15.9602 4.99891 17.0265 5.35953 17.834 6.16699C18.6404 6.97339 19.0009 8.03951 18.9814 9.1084C19.7508 9.85026 20.25 10.8589 20.25 12C20.25 13.1409 19.7505 14.1488 18.9814 14.8906C19.0011 15.9599 18.6411 17.0267 17.835 17.834L17.834 17.835C17.0267 18.6411 15.9599 19.0011 14.8906 18.9814C14.1488 19.7505 13.1409 20.25 12 20.25C10.8589 20.25 9.85026 19.7508 9.1084 18.9814C8.03945 19.0009 6.97303 18.6408 6.16602 17.835L6.16504 17.834C5.35894 17.0267 4.99788 15.9599 5.01758 14.8906C4.24877 14.1489 3.75 13.1406 3.75 12C3.75 10.8591 4.24849 9.85021 5.01758 9.1084C4.99854 8.04027 5.35911 6.97389 6.16602 6.16699C6.97323 5.35978 8.03918 4.99915 9.10742 5.01855C9.84935 4.24842 10.8589 3.75 12 3.75Z" fill="#34A852" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M9.75 12.75L11.25 14.25C12 11.5 14.25 9.75 14.25 9.75" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg> </div> </div>  <p class="text-[15px] font-semibold text-zinc-900" data-astro-cid-ybnukg4e>Marcus Klein</p>  <p class="text-[12px] text-zinc-500 mt-0.5" data-astro-cid-ybnukg4e>VP of Sales</p> </div>  <div class="border-t border-zinc-100 px-5 py-3 flex flex-col gap-2" data-astro-cid-ybnukg4e> <div class="flex items-center gap-2.5" data-astro-cid-ybnukg4e> <svg width="14" height="14" class="text-zinc-400 shrink-0" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M4 10C4 5.58172 7.58172 2 12 2C16.4183 2 20 5.58172 20 10C20 12.4952 18.8883 14.8173 17.5726 16.7017C16.251 18.5946 14.6734 20.1174 13.6287 21.0297C12.6885 21.8509 11.3115 21.8509 10.3713 21.0297C9.32656 20.1174 7.749 18.5946 6.4274 16.7017C5.11171 14.8173 4 12.4952 4 10ZM8.875 10C8.875 8.27411 10.2741 6.875 12 6.875C13.7259 6.875 15.125 8.27411 15.125 10C15.125 11.7259 13.7259 13.125 12 13.125C10.2741 13.125 8.875 11.7259 8.875 10Z" fill="currentColor"/></svg>
1966 <span class="text-[12px] text-zinc-600" data-astro-cid-ybnukg4e>San Francisco, CA</span> </div> <div class="flex items-center gap-2.5" data-astro-cid-ybnukg4e> <svg width="14" height="14" class="text-zinc-400 shrink-0" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22ZM12.75 7.75C12.75 7.33579 12.4142 7 12 7C11.5858 7 11.25 7.33579 11.25 7.75V12C11.25 12.1989 11.329 12.3897 11.4697 12.5303L14.2197 15.2803C14.5126 15.5732 14.9874 15.5732 15.2803 15.2803C15.5732 14.9874 15.5732 14.5126 15.2803 14.2197L12.75 11.6893V7.75Z" fill="currentColor"/></svg>
1967 <span class="text-[12px] text-zinc-600" data-astro-cid-ybnukg4e>Last seen 12 min ago</span> </div> </div> </div> </div>  <div class="engage-face engage-back" data-astro-cid-ybnukg4e> <div class="bg-white rounded-xl overflow-hidden" style="box-shadow: 0 0 0 1px var(--alpha-border, rgba(0,0,0,0.06)), 0 1px 3px 0 rgb(0 0 0 / 0.08), 0 4px 12px -2px rgb(0 0 0 / 0.06);" data-astro-cid-ybnukg4e> <div class="px-5 pt-4 pb-3 flex flex-col gap-0" data-astro-cid-ybnukg4e>  <div class="flex items-center gap-2 py-2 border-b border-zinc-100" data-astro-cid-ybnukg4e> <span class="text-[11px] font-medium text-zinc-400 w-8 shrink-0" data-astro-cid-ybnukg4e>From</span> <span class="text-[12px] text-zinc-700" data-astro-cid-ybnukg4e>[email protected]</span> </div>  <div class="flex items-center gap-2 py-2 border-b border-zinc-100" data-astro-cid-ybnukg4e> <span class="text-[11px] font-medium text-zinc-400 w-8 shrink-0" data-astro-cid-ybnukg4e>To</span> <span class="text-[12px] text-zinc-700" data-astro-cid-ybnukg4e>[email protected]</span> </div>  <div class="flex items-center gap-2 py-2 border-b border-zinc-100" data-astro-cid-ybnukg4e> <span class="text-[11px] font-medium text-zinc-400 w-8 shrink-0" data-astro-cid-ybnukg4e>Subj</span> <span class="text-[12px] text-zinc-900 font-medium" data-astro-cid-ybnukg4e>Quick question about your eval</span> </div>  <div class="flex flex-col gap-0 pt-3 pb-1" data-astro-cid-ybnukg4e> <p class="text-[12px] text-zinc-600 pb-4" data-astro-cid-ybnukg4e>Hi Marcus,</p> <p class="text-[12px] text-zinc-600" data-astro-cid-ybnukg4e>Noticed you've been exploring our pricing page. Happy to walk you through how teams like yours typically get started.</p> <p class="text-[12px] text-zinc-600 pt-2" data-astro-cid-ybnukg4e>Worth a quick chat?</p> <p class="text-[12px] text-zinc-600 pt-5" data-astro-cid-ybnukg4e>Thanks,<br data-astro-cid-ybnukg4e>Davey</p> </div> </div> </div> </div> </div> </div> </div> </div>  </div> </div>  <div class="flex gap-4 p-4 md:p-6 flex-1" data-astro-cid-rq7a7mhf> <!-- Left: Icon, Title, Description --> <div class="flex flex-col gap-4 flex-1" data-astro-cid-rq7a7mhf> <div class="flex items-center gap-2" data-astro-cid-rq7a7mhf> <svg width="24" height="24" class="shrink-0 text-violet-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M1.46783 6.05797C0.265136 4.9889 1.02132 3 2.63047 3H21.2788C22.6218 3 23.4643 4.45027 22.799 5.61691L13.6528 21.6554C12.8643 23.038 10.7893 22.7356 10.4282 21.1855L8.36566 12.3316L14.9744 8.65542C15.3364 8.45407 15.4666 7.9974 15.2653 7.63542C15.0639 7.27344 14.6072 7.14322 14.2453 7.34458
1967L7.27632 11.2211L1.46783 6.05797Z" fill="currentColor"/></svg>
1968 <span class="eyebrow text-sm text-violet-500" data-astro-cid-rq7a7mhf>Engage</span>  </div> <h4 data-astro-cid-rq7a7mhf>Catch buyers while they&#39;re still deciding</h4> <p data-astro-cid-rq7a7mhf>Snitcher finds verified contacts behind every visit and feeds them straight into your sequences for perfectly timed outreach.</p> </div> <!-- Right: Arrow button aligned to bottom --> <div class="flex items-end shrink-0" data-astro-cid-rq7a7mhf> <span aria-label="Explore feature" data-arrow-direction="right" class="arrow-btn inline-flex items-center justify-center border border-zinc-200 bg-white text-zinc-700 shadow overflow-hidden font-semibold text-sm transition-colors duration-200 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 hover:bg-violet-500 hover:border-violet-500 hover:text-white w-8 h-8 md:w-10 md:h-10 rounded-full pointer-events-none group-hover/card:bg-violet-500 group-hover/card:border-violet-500 group-hover/card:text-white"><span class="arrow-btn-icon-wrap"> <svg width="16" height="16" class="arrow-btn-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.1161 5.36612C13.6043 4.87796 14.3957 4.87796 14.8839 5.36612L20.6339 11.1161C20.8683 11.3505 21 11.6685 21 12C21 12.3315 20.8683 12.6494 20.6339 12.8839L14.8839 18.6339C14.3957 19.122 13.6043 19.122 13.1161 18.6339C12.628 18.1457 12.628 17.3543 13.1161 16.8661L16.7322 13.25H4.25C3.55964 13.25 3 12.6903 3 12C3 11.3096 3.55964 10.75 4.25 10.75H16.7322L13.1161 7.13388C12.628 6.64573 12.628 5.85427 13.1161 5.36612Z" fill="currentColor"/></svg>
1969 </span> </span>  
1969<script>
1970  (function() {
1971    function initArrowButtons() {
1972      document.querySelectorAll('.arrow-btn').forEach(function(button) {
1973        // Skip if already initialized
1974        if (button.dataset.arrowInit) return;
1975        button.dataset.arrowInit = 'true';
1976        
1977        var icon = button.querySelector('.arrow-btn-icon');
1978        if (!icon) return;
1979        
1980        var dir = button.dataset.arrowDirection || 'right';
1981        var slideIn = 'slide-in-' + dir;
1982        var slideOut = 'slide-out-' + dir;
1983        
1984        button.addEventListener('mouseenter', function() {
1985          icon.classList.remove(slideOut, 'slide-out');
1986          icon.classList.add(slideIn);
1987        });
1988        
1989        button.addEventListener('mouseleave', function() {
1990          icon.classList.remove(slideIn, 'slide-in');
1991          icon.classList.add(slideOut);
1992        });
1993      });
1994    }
1995
1996    // Initialize on DOM ready
1997    if (document.readyState === 'loading') {
1998      document.addEventListener('DOMContentLoaded', initArrowButtons);
1999    } else {
2000      initArrowButtons();
2001    }
2002    
2003    // Re-initialize on Astro page transitions
2004    document.addEventListener('astro:page-load', initArrowButtons);
2005  })();
2006</script>
2006 </div> </div>  </a>   
2006<script>
2007  (function() {
2008    function initFeatureCards() {
2009      document.querySelectorAll('.feature-card[href]').forEach(function(card) {
2010        if (card.dataset.featureCardInit) return;
2011        card.dataset.featureCardInit = 'true';
2012
2013        var arrowBtn = card.querySelector('.arrow-btn');
2014        if (!arrowBtn) return;
2015
2016        var icon = arrowBtn.querySelector('.arrow-btn-icon');
2017        if (!icon) return;
2018
2019        card.addEventListener('mouseenter', function() {
2020          icon.classList.remove('slide-out');
2021          icon.classList.add('slide-in');
2022          // Play any visual animations inside this card
2023          card.querySelectorAll('[data-animate-on-hover]').forEach(function(el) {
2024            el.style.animationPlayState = 'running';
2025          });
2026        });
2027
2028        card.addEventListener('mouseleave', function() {
2029          icon.classList.remove('slide-in');
2030          icon.classList.add('slide-out');
2031          // Pause any visual animations inside this card
2032          card.querySelectorAll('[data-animate-on-hover]').forEach(function(el) {
2033            el.style.animationPlayState = 'paused';
2034          });
2035        });
2036      });
2037    }
2038
2039    if (document.readyState === 'loading') {
2040      document.addEventListener('DOMContentLoaded', initFeatureCards);
2041    } else {
2042      initFeatureCards();
2043    }
2044
2045    document.addEventListener('astro:page-load', initFeatureCards);
2046  })();
2047</script>
2047 <!-- Card 5: Measure --> <a class="bg-white border border-zinc-200 shadow overflow-hidden  rounded-2xl feature-card p-0 overflow-hidden h-full flex flex-col transition-shadow duration-200 group/card hover:shadow-md cursor-pointer" href="/measure" data-astro-cid-rq7a7mhf>   <div class="relative aspect-[4/3] shrink-0 overflow-hidden bg-gradient-to-b from-zinc-100 to-white" data-astro-cid-rq7a7mhf> <!-- Hover gradient overlay (behind visual content) --> <div class="absolute inset-0 opacity-0 group-hover/card:opacity-100 transition-opacity duration-300 z-0 bg-gradient-to-b from-coral-50 to-white" data-astro-cid-rq7a7mhf></div> <div class="absolute inset-0 z-[1] transition-opacity duration-300 group-hover/card:opacity-90" data-astro-cid-rq7a7mhf> <div class="measure-visual relative w-full h-full overflow-hidden absolute inset-0" data-measure-visual data-astro-cid-a6yjhbsd> <!-- Source pills in flex layout (prevents overlap) --> <div class="absolute inset-x-0 top-0 h-[42%] z-10 flex flex-col items-center justify-center gap-1.5 px-4" data-pills-zone data-astro-cid-a6yjhbsd> <!-- Row 1: Two pills side by side --> <div class="flex w-full justify-between gap-3" data-astro-cid-a6yjhbsd>  <div class="measure-source-pill -rotate-2 min-w-0" data-measure-pill data-pill-delay="0" style="border-radius: 10px; box-shadow: 0 0 0 1px var(--alpha-border), 0 1px 3px 0 rgb(0 0 0 / 0.1);" data-astro-cid-a6yjhbsd> <svg class="shrink-0" width="12" height="12" viewBox="0 -13 256 256" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M5.888,166.405 L90.88,20.9 C101.676,27.256 156.116,57.384 164.908,63.114 L79.916,208.627 C70.621,220.907 -5.888,185.04 5.888,166.396 L5.888,166.405 Z" fill="#FBBC04"/><path d="M250.084,166.402 L165.092,20.906 C153.21,1.132 127.619,-6.054 106.601,5.625 C85.582,17.304 79.182,42.462 91.064,63.119 L176.056,208.633 C187.938,228.398 213.529,235.584 234.548,223.905 C254.648,212.226 261.966,186.176 250.084,166.419 L250.084,166.402 Z" fill="#4285F4"/><ellipse fill="#34A853" cx="42.664" cy="187.924" rx="42.664" ry="41.604"/></svg> <span class="measure-pill-label" data-astro-cid-a6yjhbsd>Brand Campaign</span> </div>  <div class="measure-source-pill rotate-1 min-w-0" data-measure-pill data-pill-delay="1" style="border-radius: 10px; box-shadow: 0 0 0 1px var(--alpha-border), 0 1px 3px 0 rgb(0 0 0 / 0.1);" data-astro-cid-a6yjhbsd> <svg class="shrink-0" width="12" height="12" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" fill="#0A66C2"/></svg> <span class="measure-pill-label" data-astro-cid-a6yjhbsd>ABM Audience</span> </div> </div>  <div class="measure-source-pill rotate-1" data-measure-pill data-pill-delay="2" style="border-radius: 10px; box-shadow: 0 0 0 1px var(--alpha-border), 0 1px 3px 0 rgb(0 0 0 / 0.1);" data-astro-cid-a6yjhbsd> <svg class="shrink-0" width="12" height="12" viewBox="0 -13 256 256" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M5.888,166.405 L90.88,20.9 C101.676,27.256 156.116,57.384 164.908,63.114 L79.916,208.627 C70.621,220.907 -5.888,185.04 5.888,166.396 L5.888,166.405 Z" fill="#FBBC04"/><path d="M250.084,166.402 L165.092,20.906 C153.21,1.132 127.619,-6.054 106.601,5.625 C85.582,17.304 79.182,42.462 91.064,63.119 L176.056,208.633 C187.938,228.398 213.529,235.584 234.548,223.905 C254.648,212.226 261.966,186.176 250.084,166.419 L250.084,166.402 Z" fill="#4285F4"/><ellipse fill="#34A853" cx="42.664" cy="187.924" rx="42.664" ry="41.604"/></svg> <span class="measure-pill-label" data-astro-cid-a6yjhbsd>Competitor ads</span> </div> </div> <!-- SVG connector lines (drawn dynamically by JS) --> <svg class="absolute inset-0 w-full h-full z-[5] pointer-events-none" data-connector-svg aria-hidden="true" data-astro-cid-a6yjhbsd></svg> <!-- Engagement card (bottom 58%) --> <div class="absolute inset-x-0 bottom-0 h-[58%] flex items-start justify-center px-3 pt-1" data-astro-cid-a6yjhbsd>
2047 <div class="measure-card w-full max-w-[320px] rotate-1 bg-white overflow-hidden" style="border-radius: 12px; box-shadow: 0 0 0 1px var(--alpha-border), 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);" data-astro-cid-a6yjhbsd> <!-- Identified companies label + count --> <div class="px-4 pt-3 pb-0.5" data-astro-cid-a6yjhbsd> <p class="text-[10px] font-medium text-zinc-400 mb-0" data-astro-cid-a6yjhbsd>Identified companies visited</p> <p class="text-[13px] font-semibold text-zinc-900" data-counter data-astro-cid-a6yjhbsd>2,433 companies</p> </div> <!-- SVG Area chart --> <div class="relative px-4 pt-0.5 pb-0" data-chart-area data-astro-cid-a6yjhbsd> <svg viewBox="0 0 260 72" class="w-full" preserveAspectRatio="none" style="height: 72px;" data-astro-cid-a6yjhbsd> <defs data-astro-cid-a6yjhbsd> <linearGradient id="measure-fill" x1="0" x2="0" y1="0" y2="1" data-astro-cid-a6yjhbsd> <stop offset="0%" stop-color="rgb(99, 102, 241)" stop-opacity="0.18" data-astro-cid-a6yjhbsd></stop> <stop offset="100%" stop-color="rgb(99, 102, 241)" stop-opacity="0.01" data-astro-cid-a6yjhbsd></stop> </linearGradient> </defs> <path d="M0,30.365758754863815 C7.222222222222221,32.878728923476004 28.888888888888886,42.04604409857328 43.33333333333333,45.44357976653696 C57.77777777777777,48.841115434500644 72.22222222222221,55.45525291828794 86.66666666666666,50.750972762645915 C101.1111111111111,46.04669260700389 115.55555555555556,22.163424124513618 130,17.217898832684824 C144.44444444444446,12.27237354085603 158.88888888888886,22.00259403372244 173.33333333333331,21.07782101167315 C187.77777777777777,20.153047989623865 202.22222222222223,14.182230869001298 216.66666666666669,11.669260700389106 C231.11111111111114,9.156290531776914 252.77777777777777,6.944876783398184 260,6 L260,72 L0,72 Z" fill="url(#measure-fill)" data-astro-cid-a6yjhbsd></path> <path d="M0,30.365758754863815 C7.222222222222221,32.878728923476004 28.888888888888886,42.04604409857328 43.33333333333333,45.44357976653696 C57.77777777777777,48.841115434500644 72.22222222222221,55.45525291828794 86.66666666666666,50.750972762645915 C101.1111111111111,46.04669260700389 115.55555555555556,22.163424124513618 130,17.217898832684824 C144.44444444444446,12.27237354085603 158.88888888888886,22.00259403372244 173.33333333333331,21.07782101167315 C187.77777777777777,20.153047989623865 202.22222222222223,14.182230869001298 216.66666666666669,11.669260700389106 C231.11111111111114,9.156290531776914 252.77777777777777,6.944876783398184 260,6" fill="none" stroke="rgb(99, 102, 241)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-a6yjhbsd></path> </svg> <!-- X-axis labels --> <div class="flex justify-between mt-0.5 pb-2" data-astro-cid-a6yjhbsd> <span class="text-[8px] text-zinc-400 font-medium" data-astro-cid-a6yjhbsd>Fri</span><span class="text-[8px] text-zinc-400 font-medium" data-astro-cid-a6yjhbsd>Sat</span><span class="text-[8px] text-zinc-400 font-medium" data-astro-cid-a6yjhbsd>Sun</span><span class="text-[8px] text-zinc-400 font-medium" data-astro-cid-a6yjhbsd>Mon</span><span class="text-[8px] text-zinc-400 font-medium" data-astro-cid-a6yjhbsd>Tue</span><span class="text-[8px] text-zinc-400 font-medium" data-astro-cid-a6yjhbsd>Wed</span><span class="text-[8px] text-zinc-400 font-medium" data-astro-cid-a6yjhbsd>Yesterday</span> </div> </div> </div> </div> </div>  
2047<script>
2048  (function() {
2049    var PALATINATE = '#4c4cff';
2050    var ZINC = '#d4d4d8';
2051
2052    function init() {
2053      var visual = document.querySelector('[data-measure-visual]');
2054      if (!visual || visual.dataset.measureInit) return;
2055      visual.dataset.measureInit = 'true';
2056
2057      var pills = visual.querySelectorAll('[data-measure-pill]');
2058      var svg = visual.querySelector('[data-connector-svg]');
2059      var card = visual.querySelector('.measure-card');
2060      var counterEl = visual.querySelector('[data-counter]');
2061      var featureCard = visual.closest('.feature-card');
2062      var timeouts = [];
2063      var connectorData = [];
2064      var state = 'idle'; // 'idle' | 'hovering' | 'returning'
2065      var returnStart = 0;
2066      var baseCount = 0;
2067      var additionalCount = 0;
2068
2069      // Parse base count from DOM
2070      if (counterEl) {
2071        baseCount = parseInt(counterEl.textContent.replace(/[^\d]/g, ''), 10) || 0;
2072      }
2073
2074      // Compute a cubic Bézier path d from a pill to the card top-center
2075      function buildPathD(pill) {
2076        var vRect = visual.getBoundingClientRect();
2077        var cRect = card.getBoundingClientRect();
2078        var tx = cRect.left + cRect.width / 2 - vRect.left;
2079        var ty = cRect.top - vRect.top;
2080        var pRect = pill.getBoundingClientRect();
2081        var px = pRect.left + pRect.width / 2 - vRect.left;
2082        var py = pRect.bottom - vRect.top + 2;
2083        var midY = (py + ty) / 2;
2084        return 'M' + px.toFixed(1) + ',' + py.toFixed(1) +
2085          ' C' + px.toFixed(1) + ',' + midY.toFixed(1) +
2086          ' ' + tx.toFixed(1) + ',' + midY.toFixed(1) +
2087          ' ' + tx.toFixed(1) + ',' + ty.toFixed(1);
2088      }
2089
2090      function drawConnectors() {
2091        if (!svg || !card || !pills.length) return;
2092        var vRect = visual.getBoundingClientRect();
2093        svg.setAttribute('viewBox', '0 0 ' + vRect.width + ' ' + vRect.height);
2094
2095        while (svg.firstChild) svg.removeChild(svg.firstChild);
2096        connectorData = [];
2097
2098        pills.forEach(function(pill) {
2099          var d = buildPathD(pill);
2100
2101          // Connector line — dashed zinc by default
2102          var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
2103          path.setAttribute('d', d);
2104          path.setAttribute('fill', 'none');
2105          path.setAttribute('stroke-width', '1.5');
2106          path.setAttribute('stroke-linecap', 'round');
2107          path.style.stroke = ZINC;
2108          path.style.strokeDasharray = '4 4';
2109          path.style.opacity = '0';
2110          path.style.transition = 'opacity 0.5s ease, stroke 0.3s ease';
2111          svg.appendChild(path);
2112
2113          // Traveling dot (hidden until hover)
2114          var dot = document.createElementNS('http://www.w3.org/2000/svg', 'circle');
2115          dot.setAttribute('r', '3.5');
2116          dot.setAttribute('fill', PALATINATE);
2117          dot.style.opacity = '0';
2118          svg.appendChild(dot);
2119
2120          connectorData.push({ path: path, dot: dot, pill: pill, startTime: null, prevCycle: 0 });
2121        });
2122
2123        // Fade in
2124        requestAnimationFrame(function() {
2125          requestAnimationFrame(function() {
2126            connectorData.forEach(function(c) { c.path.style.opacity = '1'; });
2127          });
2128        });
2129      }
2130
2131      function updateCounter() {
2132        if (!counterEl) return;
2133        var total = baseCount + additionalCount;
2134        counterEl.textContent = total.toLocaleString('en-US') + ' companies';
2135      }
2136
2137      // Unified animation loop for hover + return
2138      function loop(timestamp) {
2139        if (state === 'idle') return;
2140
2141        var vRect = visual.getBoundingClientRect();
2142        svg.setAttribute('viewBox', '0 0 ' + vRect.width + ' ' + vRect.height);
2143
2144        // Always recalculate paths to follow pill movement
2145        connectorData.forEach(function(c, i) {
2146          c.path.setAttribute('d', buildPathD(c.pill));
2147
2148          if (state === 'hovering') {
2149            // Animate dot along path
2150            if (!c.startTime) c.startTime = timestamp;
2151            var elapsed = timestamp - c.startTime;
2152            var duration = 1400 + i * 200;
2153            var currentCycle = Math.floor(elapsed / duration);
2154            var progress = (elapsed % duration) / duration;
2155
2156            var length = c.path.getTotalLength();
2157            var point = c.path.getPointAtLength(progress * length);
2158            c.dot.setAttribute('cx', point.x.toFixed(1));
2159            c.dot.setAttribute('cy', point.y.toFixed(1));
2160
2161            // Fade in at start, fade out at end
2162            var fade = 0.12;
2163            var dotOpacity = progress < fade ? progress / fade
2164              : progress > 1 - fade ? (1 - progress) / fade
2165              : 1;
2166            c.dot.style.opacity = dotOpacity.toFixed(2);
2167
2168            // Counter increment on each dot arrival
2169            if (currentCycle > c.prevCycle) {
2170              c.prevCycle = currentCycle;
2171              additionalCount++;
2172              updateCounter();
2173            }
2174          }
2175        });
2176
2177        // Stop returning after pill transition completes (~400ms)
2178        if (state === 'returning' && timestamp - returnStart > 450) {
2179          state = 'idle';
2180          return;
2181        }
2182
2183        requestAnimationFrame(loop);
2184      }
2185
2186      function startHover() {
2187        visual.setAttribute('data-hovering', '');
2188
2189        // Switch lines: dashed zinc → solid palatinate
2190        connectorData.forEach(function(c) {
2191          c.path.style.stroke = PALATINATE;
2192          c.path.style.strokeDasharray = 'none';
2193          c.startTime = null;
2194          c.prevCycle = 0;
2195        });
2196
2197        additionalCount = 0;
2198        updateCounter();
2199        state = 'hovering';
2200        requestAnimationFrame(loop);
2201      }
2202
2203      function stopHover() {
2204        visual.removeAttribute('data-hovering');
2205
2206        // Switch lines back: solid palatinate → dashed zinc
2207        connectorData.forEach(function(c) {
2208          c.dot.style.opacity = '0';
2209          c.path.style.stroke = ZINC;
2210          c.path.style.strokeDasharray = '4 4';
2211          c.startTime = null;
2212          c.prevCycle = 0;
2213        });
2214
2215        additionalCount = 0;
2216        updateCounter();
2217
2218        // Keep updating paths while pills transition back
2219        state = 'returning';
2220        returnStart = performance.now();
2221        requestAnimationFrame(loop);
2222      }
2223
2224      if (featureCard) {
2225        featureCard.addEventListener('mouseenter', startHover);
2226        featureCard.addEventListener('mouseleave', stopHover);
2227      }
2228
2229      var observer = new IntersectionObserver(function(entries) {
2230        entries.forEach(function(entry) {
2231          if (!entry.isIntersecting) return;
2232
2233          pills.forEach(function(pill) {
2234            var delay = parseInt(pill.dataset.pillDelay || '0', 10);
2235            timeouts.push(setTimeout(function() {
2236              pill.classList.add('visible');
2237            }, 200 + delay * 200));
2238          });
2239
2240          timeouts.push(setTimeout(drawConnectors, 1100));
2241          observer.unobserve(entry.target);
2242        });
2243      }, { threshold: 0.3 });
2244
2245      observer.observe(visual);
2246    }
2247
2248    function cleanup() {
2249      var visual = document.querySelector('[data-measure-visual]');
2250      if (visual) delete visual.dataset.measureInit;
2251    }
2252
2253    if (document.readyState === 'loading') {
2254      document.addEventListener('DOMContentLoaded', init);
2255    } else {
2256      init();
2257    }
2258
2259    document.addEventListener('astro:before-swap', cleanup);
2260    document.addEventListener('astro:page-load', init);
2261  })();
2262</script>
2262 </div> </div>  <div class="flex gap-4 p-4 md:p-6 flex-1" data-astro-cid-rq7a7mhf> <!-- Left: Icon, Title, Description --> <div class="flex flex-col gap-4 flex-1" data-astro-cid-rq7a7mhf> <div class="flex items-center gap-2" data-astro-cid-rq7a7mhf> <svg width="24" height="24" class="shrink-0 text-coral-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.75 3C4.16421 3 4.5 3.33579 4.5 3.75V15.3456L7.60248 12.2431C8.60731 11.2383 10.2364 11.2383 11.2413 12.2431C11.6603 12.6621 12.3397 12.6621 12.7587 12.2431L15.2117 9.79013C16.2856 8.71619 18.0269 8.71619 19.1008 9.79013L19.7491 10.4384C20.042 10.7313 20.042 11.2062 19.7491 11.4991C19.4562 11.792 18.9813 11.792 18.6884 11.4991L18.0401 10.8508C17.552 10.3626 16.7605 10.3626 16.2724 10.8508L13.8194 13.3038C12.8146 14.3086 11.1854 14.3086 10.1806 13.3038C9.76157 12.8847 9.08218 12.8847 8.66314 13.3038L4.5 17.4669V18.25C4.5 18.9404 5.05964 19.5 5.75 19.5H20.25C20.6642 19.5 21 19.8358 21 20.25C21 20.6642 20.6642 21 20.25 21H5.75C4.23122 21 3 19.7688 3 18.25V3.75C3 3.33579 3.33579 3 3.75 3Z" fill="currentColor"/></svg>
2263 <span class="eyebrow text-sm text-coral-500" data-astro-cid-rq7a7mhf>Measure</span>  </div> <h4 data-astro-cid-rq7a7mhf>See what&#39;s working before it&#39;s too late</h4> <p data-astro-cid-rq7a7mhf>Snitcher ties every visit, signal and play to outcomes so you can prove what&#39;s working and double down with data, not hunches.</p> </div> <!-- Right: Arrow button aligned to bottom --> <div class="flex items-end shrink-0" data-astro-cid-rq7a7mhf> <span aria-label="Explore feature" data-arrow-direction="right" class="arrow-btn inline-flex items-center justify-center border border-zinc-200 bg-white text-zinc-700 shadow overflow-hidden font-semibold text-sm transition-colors duration-200 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 hover:bg-coral-500 hover:border-coral-500 hover:text-white w-8 h-8 md:w-10 md:h-10 rounded-full pointer-events-none group-hover/card:bg-coral-500 group-hover/card:border-coral-500 group-hover/card:text-white"><span class="arrow-btn-icon-wrap"> <svg width="16" height="16" class="arrow-btn-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.1161 5.36612C13.6043 4.87796 14.3957 4.87796 14.8839 5.36612L20.6339 11.1161C20.8683 11.3505 21 11.6685 21 12C21 12.3315 20.8683 12.6494 20.6339 12.8839L14.8839 18.6339C14.3957 19.122 13.6043 19.122 13.1161 18.6339C12.628 18.1457 12.628 17.3543 13.1161 16.8661L16.7322 13.25H4.25C3.55964 13.25 3 12.6903 3 12C3 11.3096 3.55964 10.75 4.25 10.75H16.7322L13.1161 7.13388C12.628 6.64573 12.628 5.85427 13.1161 5.36612Z" fill="currentColor"/></svg>
2264 </span> </span>  
2264<script>
2265  (function() {
2266    function initArrowButtons() {
2267      document.querySelectorAll('.arrow-btn').forEach(function(button) {
2268        // Skip if already initialized
2269        if (button.dataset.arrowInit) return;
2270        button.dataset.arrowInit = 'true';
2271        
2272        var icon = button.querySelector('.arrow-btn-icon');
2273        if (!icon) return;
2274        
2275        var dir = button.dataset.arrowDirection || 'right';
2276        var slideIn = 'slide-in-' + dir;
2277        var slideOut = 'slide-out-' + dir;
2278        
2279        button.addEventListener('mouseenter', function() {
2280          icon.classList.remove(slideOut, 'slide-out');
2281          icon.classList.add(slideIn);
2282        });
2283        
2284        button.addEventListener('mouseleave', function() {
2285          icon.classList.remove(slideIn, 'slide-in');
2286          icon.classList.add(slideOut);
2287        });
2288      });
2289    }
2290
2291    // Initialize on DOM ready
2292    if (document.readyState === 'loading') {
2293      document.addEventListener('DOMContentLoaded', initArrowButtons);
2294    } else {
2295      initArrowButtons();
2296    }
2297    
2298    // Re-initialize on Astro page transitions
2299    document.addEventListener('astro:page-load', initArrowButtons);
2300  })();
2301</script>
2301 </div> </div>  </a>   
2301<script>
2302  (function() {
2303    function initFeatureCards() {
2304      document.querySelectorAll('.feature-card[href]').forEach(function(card) {
2305        if (card.dataset.featureCardInit) return;
2306        card.dataset.featureCardInit = 'true';
2307
2308        var arrowBtn = card.querySelector('.arrow-btn');
2309        if (!arrowBtn) return;
2310
2311        var icon = arrowBtn.querySelector('.arrow-btn-icon');
2312        if (!icon) return;
2313
2314        card.addEventListener('mouseenter', function() {
2315          icon.classList.remove('slide-out');
2316          icon.classList.add('slide-in');
2317          // Play any visual animations inside this card
2318          card.querySelectorAll('[data-animate-on-hover]').forEach(function(el) {
2319            el.style.animationPlayState = 'running';
2320          });
2321        });
2322
2323        card.addEventListener('mouseleave', function() {
2324          icon.classList.remove('slide-in');
2325          icon.classList.add('slide-out');
2326          // Pause any visual animations inside this card
2327          card.querySelectorAll('[data-animate-on-hover]').forEach(function(el) {
2328            el.style.animationPlayState = 'paused';
2329          });
2330        });
2331      });
2332    }
2333
2334    if (document.readyState === 'loading') {
2335      document.addEventListener('DOMContentLoaded', initFeatureCards);
2336    } else {
2337      initFeatureCards();
2338    }
2339
2340    document.addEventListener('astro:page-load', initFeatureCards);
2341  })();
2342</script>
2342 </div>  </div> </section>     <section class="page-section bg-zinc-50" data-variant="light" id="testimonial" data-astro-cid-dnku4hyr>        <div class="section-container bg-white !p-0" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <section class="testimonial-section relative overflow-hidden flex items-center justify-center px-6 sm:px-10 py-8 md:py-10 bg-palatinate-100" data-testimonial-section data-variant="light" data-carousel="true" data-interval="6000" id="testimonial-section-7bg0ibq" style="--ts-dot-inactive:rgba(63,63,70,0.25);--ts-dot-inactive-hover:rgba(63,63,70,0.5);--ts-dot-active:var(--color-palatinate-600, #3e3ee6);--ts-dot-focus:var(--color-palatinate-500, #4c4cff);" data-astro-cid-7ajslof7> <!-- Wavy lines decorative background -->  <!-- Bordered card (border applied via variant; particles is borderless) --> <div class="relative w-full max-w-[1340px] bg-transparent md:min-h-[496px]" data-astro-cid-7ajslof7> <div class="relative overflow-hidden flex flex-col items-center justify-center h-full px-6 sm:px-10 md:px-20 py-12 md:py-16 md:min-h-[496px]" data-astro-cid-7ajslof7> <!-- Soft radial glow behind quote --> <div class="pointer-events-none absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 w-[120%] max-w-[1400px] aspect-[1200/449]" aria-hidden="true" style="background: radial-gradient(ellipse at center, rgba(255,255,255,0.85) 0%, rgba(255,255,255,0.5) 35%, rgba(255,255,255,0) 70%);" data-astro-cid-7ajslof7></div> <!-- Slides (grid stack so the container sizes to the tallest) --> <div class="testimonial-section__slides relative grid w-full place-items-center" role="region" aria-roledescription="carousel" aria-label="Customer testimonials" data-astro-cid-7ajslof7> <article class="testimonial-section__slide is-active" data-slide-index="0" role="group" aria-roledescription="slide" aria-label="1 of 4" data-astro-cid-7ajslof7> <div class="flex flex-col items-center justify-center gap-4 text-center h-full" data-astro-cid-7ajslof7> <div class="size-12 rounded-xl overflow-hidden bg-palatinate-100" data-astro-cid-7ajslof7> <img src="/_astro/hs-charles-tenot.DRPQ8ha-_6c6i2.webp" alt="Charles Tenot" class="size-12 rounded-xl object-cover" loading="lazy" decoding="auto" data-astro-cid-7ajslof7 width="200" height="200"> </div> <div class="flex flex-col items-center gap-8 max-w-[1080px]" data-astro-cid-7ajslof7> <h2 class="font-display font-semibold text-3xl md:text-5xl leading-[1.15] tracking-tight text-balance text-zinc-800" data-astro-cid-7ajslof7>
2343&ldquo;Snitcher is simply the best company-level website visitor identification provider on the market.&rdquo;
2344</h2> <div class="flex flex-wrap items-center justify-center gap-4" data-astro-cid-7ajslof7> <div class="flex h-6 items-center pr-4 border-r border-zinc-200" data-astro-cid-7ajslof7> <img src="/logos/main/lemlist.svg" alt="lemlist logo" class="h-full w-auto object-contain" loading="lazy" decoding="auto" data-astro-cid-7ajslof7> </div> <div class="flex items-center gap-1" data-astro-cid-7ajslof7> <span class="text-sm font-semibold leading-none text-zinc-800" data-astro-cid-7ajslof7>Charles Tenot</span>  <span class="text-xs leading-4 text-zinc-500/50" aria-hidden="true" data-astro-cid-7ajslof7>∙</span> <span class="text-sm leading-4 text-zinc-500" data-astro-cid-7ajslof7>Chief Operating Officer</span>  </div> </div> </div> </div> </article><article class="testimonial-section__slide" data-slide-index="1" role="group" aria-roledescription="slide" aria-label="2 of 4" aria-hidden="true" data-astro-cid-7ajslof7> <div class="flex flex-col items-center justify-center gap-4 text-center h-full" data-astro-cid-7ajslof7> <div class="size-12 rounded-xl overflow-hidden bg-lavender-100" data-astro-cid-7ajslof7> <img src="/_astro/hs-praveen-das.DecM-5nI_ZFFo9l.webp" alt="Praveen Das" class="size-12 rounded-xl object-cover" loading="lazy" decoding="auto" data-astro-cid-7ajslof7 width="200" height="200"> </div> <div class="flex flex-col items-center gap-8 max-w-[1080px]" data-astro-cid-7ajslof7> <h2 class="font-display font-semibold text-3xl md:text-5xl leading-[1.15] tracking-tight text-balance text-zinc-800" data-astro-cid-7ajslof7>
2345&ldquo;We tested multiple providers and none of them came close to Snitcher&#39;s identification rates.&rdquo;
2346</h2> <div class="flex flex-wrap items-center justify-center gap-4" data-astro-cid-7ajslof7> <div class="flex h-6 items-center pr-4 border-r border-zinc-200" data-astro-cid-7ajslof7> <img src="/logos/main/factorsai.svg" alt="Factors.ai logo" class="h-full w-auto object-contain" loading="lazy" decoding="auto" data-astro-cid-7ajslof7> </div> <div class="flex items-center gap-1" data-astro-cid-7ajslof7> <span class="text-sm font-semibold leading-none text-zinc-800" data-astro-cid-7ajslof7>Praveen Das</span>  <span class="text-xs leading-4 text-zinc-500/50" aria-hidden="true" data-astro-cid-7ajslof7>∙</span> <span class="text-sm leading-4 text-zinc-500" data-astro-cid-7ajslof7>Co-founder</span>  </div> </div> </div> </div> </article>
2346<article class="testimonial-section__slide" data-slide-index="2" role="group" aria-roledescription="slide" aria-label="3 of 4" aria-hidden="true" data-astro-cid-7ajslof7> <div class="flex flex-col items-center justify-center gap-4 text-center h-full" data-astro-cid-7ajslof7> <div class="size-12 rounded-xl overflow-hidden bg-jade-100" data-astro-cid-7ajslof7> <img src="/_astro/hs-wouter-van-hofwegen.BzJoLhj1_ZblwQI.webp" alt="Wouter van Hofwegen" class="size-12 rounded-xl object-cover" loading="lazy" decoding="auto" data-astro-cid-7ajslof7 width="200" height="200"> </div> <div class="flex flex-col items-center gap-8 max-w-[1080px]" data-astro-cid-7ajslof7> <h2 class="font-display font-semibold text-3xl md:text-5xl leading-[1.15] tracking-tight text-balance text-zinc-800" data-astro-cid-7ajslof7>
2347&ldquo;We chose Snitcher because better data up front means better results downstream.&rdquo;
2348</h2> <div class="flex flex-wrap items-center justify-center gap-4" data-astro-cid-7ajslof7> <div class="flex h-6 items-center pr-4 border-r border-zinc-200" data-astro-cid-7ajslof7> <img src="/logos/main/mapiq.svg" alt="Mapiq logo" class="h-full w-auto object-contain" loading="lazy" decoding="auto" data-astro-cid-7ajslof7> </div> <div class="flex items-center gap-1" data-astro-cid-7ajslof7> <span class="text-sm font-semibold leading-none text-zinc-800" data-astro-cid-7ajslof7>Wouter van Hofwegen</span>  <span class="text-xs leading-4 text-zinc-500/50" aria-hidden="true" data-astro-cid-7ajslof7>∙</span> <span class="text-sm leading-4 text-zinc-500" data-astro-cid-7ajslof7>Head of Global Sales</span>  </div> </div> </div> </div> </article><article class="testimonial-section__slide" data-slide-index="3" role="group" aria-roledescription="slide" aria-label="4 of 4" aria-hidden="true" data-astro-cid-7ajslof7> <div class="flex flex-col items-center justify-center gap-4 text-center h-full" data-astro-cid-7ajslof7> <div class="size-12 rounded-xl overflow-hidden bg-palatinate-100" data-astro-cid-7ajslof7> <img src="/_astro/hs-rhea-sanger.D95Msm8E_pJmOn.webp" alt="Rhea Sanger" class="size-12 rounded-xl object-cover" loading="lazy" decoding="auto" data-astro-cid-7ajslof7 width="200" height="200"> </div> <div class="flex flex-col items-center gap-8 max-w-[1080px]" data-astro-cid-7ajslof7> <h2 class="font-display font-semibold text-3xl md:text-5xl leading-[1.15] tracking-tight text-balance text-zinc-800" data-astro-cid-7ajslof7>
2349&ldquo;Snitcher improved our website visitor match rate, enabling us to be a market leader in website intent.&rdquo;
2350</h2> <div class="flex flex-wrap items-center justify-center gap-4" data-astro-cid-7ajslof7> <div class="flex h-6 items-center pr-4 border-r border-zinc-200" data-astro-cid-7ajslof7> <img src="/logos/main/unify.svg" alt="Unify logo" class="h-full w-auto object-contain" loading="lazy" decoding="auto" data-astro-cid-7ajslof7> </div> <div class="flex items-center gap-1" data-astro-cid-7ajslof7> <span class="text-sm font-semibold leading-none text-zinc-800" data-astro-cid-7ajslof7>Rhea Sanger</span>  <span class="text-xs leading-4 text-zinc-500/50" aria-hidden="true" data-astro-cid-7ajslof7>∙</span> <span class="text-sm leading-4 text-zinc-500" data-astro-cid-7ajslof7>Growth Lead</span>  </div> </div> </div> </div> </article> </div> <!-- Dots --> <div class="testimonial-section__dots relative z-10 mt-8 flex items-center justify-center gap-2" role="tablist" aria-label="Select testimonial" data-astro-cid-7ajslof7> <button type="button" class="testimonial-section__dot is-active" data-dot-index="0" role="tab" tabindex="0" aria-selected="true" aria-label="Show testimonial 1: Charles Tenot" data-astro-cid-7ajslof7></button><button type="button" class="testimonial-section__dot" data-dot-index="1" role="tab" tabindex="-1" aria-selected="false" aria-label="Show testimonial 2: Praveen Das" data-astro-cid-7ajslof7></button><button type="button" class="testimonial-section__dot" data-dot-index="2" role="tab" tabindex="-1" aria-selected="false" aria-label="Show testimonial 3: Wouter van Hofwegen" data-astro-cid-7ajslof7></button><button type="button" class="testimonial-section__dot" data-dot-index="3" role="tab" tabindex="-1" aria-selected="false" aria-label="Show testimonial 4: Rhea Sanger" data-astro-cid-7ajslof7></button> </div> <!-- Optional slot for extra content below the testimonial (e.g. CTA) -->  </div> </div> </section> <!-- Global rules: the TestimonialSection sits CONTAINED inside the standard
2351     PageSection box (side borders + corner pseudos stay visible — same
2352     visual language as every other section on the page). We:
2353       - zero the section-container's vertical padding so the testimonial's
2354         own padding governs spacing (no double-padding); horizontal padding
2355         is preserved so the side borders + corner pseudos keep their gutter
2356       - paint the page-section bg (the bleed) with the variant's colour so
2357         purple content isn't surrounded by grey -->   <!-- Dot styles are GLOBAL so other components (e.g. the careers photo carousel)
2358     can reuse the exact same selectors + active state without redefining. The
2359     --ts-dot-* variables are inherited from any ancestor [data-testimonial-section]
2360     so colour palette follows the variant automatically. -->    </div> </section>     <section class="page-section" data-variant="light" id="trusted" data-astro-cid-dnku4hyr>        <div class="section-container" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <div class="w-full"> <div class="mb-12 text-center"> <h2 class="mb-4 max-w-3xl mx-auto text-balance">Trusted by GTM teams everywhere</h2> <p class="text-lg max-w-2xl mx-auto">
2361From early-stage to enterprise, Snitcher powers the infrastructure behind teams that
2362              act on intent in real time.
2363</p> </div> <div class="bg-white border border-zinc-200 shadow overflow-hidden  rounded-2xl p-0 shadow-md overflow-hidden border-zinc-200"> <div class="flex flex-col gap-px bg-zinc-200">  <div class="grid gap-px grid-cols-2 md:grid-cols-4 bg-zinc-200">  <div class="bg-white flex items-center justify-center aspect-video md:aspect-auto"> <div class="flex flex-col items-center justify-center gap-1 px-5 py-5"><img src="/logos/main/clay.svg" alt="Clay" class="block h-6 w-20" loading="lazy" decoding="auto"></div> </div> <div class="bg-white flex items-center justify-center aspect-video md:aspect-auto"> <div class="flex flex-col items-center justify-center gap-1 px-5 py-5"><img src="/logos/main/unify.svg" alt="Unify" class="block h-[var(--lh)] w-auto" loading="lazy" decoding="auto" style="--lh:27px"></div> </div> <div class="bg-white col-span-2"> <figure class="not-prose h-full rounded-2xl p-6 flex flex-col bg-white border-0 shadow-none rounded-none"> <!-- Testimonial Text --> <div class="text-lg"> We tested multiple providers and none of them came close to Snitcher&#39;s identification rates. </div> <!-- Bottom Section: Logo and Author Info --> <div class="flex items-center justify-between gap-4 mt-auto pt-6"> <!-- Company Logo (left) --> <div class="flex items-center"> <img src="/logos/main/factorsai.svg" alt="" class="h-6 w-auto object-contain" loading="lazy" decoding="auto"> </div> <!-- Author Info (right) --> <div class="flex items-center gap-3 ml-auto">   <div class="flex flex-col items-end"> <span class="font-semibold text-base text-zinc-900"> Praveen Das </span> <span class="text-sm"> Co-founder </span> </div> <img src="/_astro/praveen-das.DvAJcfXj_Z1RvHSY.webp" alt="Praveen Das" class="w-12 h-12 rounded-full object-cover flex-shrink-0" loading="lazy" decoding="auto" width="96" height="96"> </div> </div> </figure> </div>  </div>  <div class="grid gap-px grid-cols-2 md:grid-cols-4 bg-zinc-200">  <div class="bg-white h-full"> <div class="bg-zinc-50 p-6 stat-block h-full"> <!-- Stat --> <div class="font-display font-semibold text-h3 text-zinc-900 mb-2 stat-value" data-stat="9x"> 9x </div> <!-- Metric --> <div class="font-medium text-base"> ROI on signals </div> <!-- Logo section (optional) --> <div class="flex items-center gap-2 mt-6"> <img src="/logos/main/gadget.svg" alt="" class="h-5 w-auto object-contain" loading="lazy" decoding="auto"> </div> </div>  </div> <div class="bg-white h-full"> <div class="bg-zinc-50 p-6 stat-block h-full"> <!-- Stat --> <div class="font-display font-semibold text-h3 text-zinc-900 mb-2 stat-value" data-stat="12h"> 12h </div> <!-- Metric --> <div class="font-medium text-base"> saved per week </div> <!-- Logo section (optional) --> <div class="flex items-center gap-2 mt-6"> <img src="/logos/main/seam.svg" alt="" class="h-5 w-auto object-contain" loading="lazy" decoding="auto"> </div> </div>  </div> <div class="bg-white h-full"> <div class="bg-zinc-50 p-6 stat-block h-full"> <!-- Stat --> <div class="font-display font-semibold text-h3 text-zinc-900 mb-2 stat-value" data-stat="+35%"> +35% </div> <!-- Metric --> <div class="font-medium text-base"> marketing ROI </div> <!-- Logo section (optional) --> <div class="flex items-center gap-2 mt-6"> <img src="/logos/main/hyperline.svg" alt="" class="h-5 w-auto object-contain" loading="lazy" decoding="auto"> </div> </div>  </div> <div class="bg-white h-full"> <div class="bg-zinc-50 p-6 stat-block h-full"> <!-- Stat --> <div class="font-display font-semibold text-h3 text-zinc-900 mb-2 stat-value" data-stat="+78%"> +78% </div> <!-- Metric --> <div class="font-medium text-base"> coverage </div> <!-- Logo section (optional) --> <div class="flex items-center gap-2 mt-6"> <img src="/logos/main/allium.png" alt="" class="h-5 w-auto object-contain" loading="lazy" decoding="auto"> </div> </div>  </div>  </div>  <div class="grid gap-px grid-cols-2 md:grid-cols-4 bg-zinc-200">  <div class="bg-white col-span-2"> <figure class="not-prose h-full rounded-2xl p-6 flex flex-col bg-white border-0 shadow-none rounded-none"> <!-- Testimonial Text --> <div class="text-lg"> We chose Snitcher because better data up front means better results downstream. </div> <!-- Bottom Section: Logo and Author Info --> <div class="flex items-center justify-between gap-4 mt-auto pt-6"> <!-- Company Logo (left) --> <div class="flex items-center"> <img src="/logos/main/mapiq.svg" alt="" class="h-6 w-auto object-contain" loading="lazy" decoding="auto"> </div> <!-- Author Info (right) --> <div class="flex items-center gap-3 ml-auto">   <div class="flex flex-col items-end"> <span class="font-semibold text-base text-zinc-900"> Wouter van Hofwegen </span> <span class="text-sm"> Head of Global Sales </span> </div> <img src="/_astro/[email protected]_5A6HF.webp" alt="Wouter van Hofwegen" class="w-12 h-12 rounded-full object-cover flex-shrink-0" loading="lazy" decoding="auto" width="96" height="96"> </div> </div> </figure> </div> <div class="bg-white flex items-center justify-center aspect-video md:aspect-auto"> <div class="flex flex-col items-center justify-center gap-1 px-5 py-5"><img src="/logos/main/lemlist.svg" alt="Lemlist" class="block h-[var(--lh)] w-auto" loading="lazy" decoding="auto" style="--lh:23px"></div> </div> <div class="bg-white flex items-center justify-center aspect-video md:aspect-auto"> <div class="flex flex-col items-center justify-center gap-1 px-5 py-5"><img src="/logos/main/customeros.png" alt="CustomerOS" class="block h-[var(--lh)] w-auto" loading="lazy" decoding="auto" style="--lh:24px"></div> </div>  </div> </div> </div>  </div>  </div> </section>     <section class="page-section bg-zinc-50" data-variant="light" data-astro-cid-dnku4hyr>        <div class="section-container bg-white" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <div class="-mx-4 -my-8 sm:-mx-6 sm:-my-12 lg:-mx-16 lg:-my-16"> <div class="grid lg:grid-cols-2 lg:grid-rows-3 gap-px bg-zinc-200/50"> <!-- Left: Title + Description spanning all 3 rows --> <div class="bg-white p-8 lg:px-12 lg:py-24 lg:row-span-3 flex flex-col justify-center"> <h2 class="mb-6 text-balance">
2364Grow your business with Snitcher
2365</h2> <p class="text-lg text-zinc-900">
2366Manage client accounts, deliver implementations or make introductions while earning commission on every client you refer.
2367</p> <div class="flex flex-col sm:flex-row gap-3 mt-8"> <a href="/partners" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white ring-1 ring-[var(--alpha-border)] !text-zinc-700 hover:bg-zinc-50">Explore program</a>
2367<script>
2368  (function() {
2369    function initButtonArrows() {
2370      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
2371        if (button.dataset.btnArrowInit) return;
2372        button.dataset.btnArrowInit = 'true';
2373        
2374        var icon = button.querySelector('.btn-arrow-icon');
2375        if (!icon) return;
2376        
2377        button.addEventListener('mouseenter', function() {
2378          icon.classList.remove('slide-out');
2379          icon.classList.add('slide-in');
2380        });
2381        
2382        button.addEventListener('mouseleave', function() {
2383          icon.classList.remove('slide-in');
2384          icon.classList.add('slide-out');
2385        });
2386      });
2387    }
2388
2389    if (document.readyState === 'loading') {
2390      document.addEventListener('DOMContentLoaded', initButtonArrows);
2391    } else {
2392      initButtonArrows();
2393    }
2394    
2395    document.addEventListener('astro:page-load', initButtonArrows);
2396  })();
2397</script>
2397 <a href="/partners" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-zinc-900 !text-white hover:bg-zinc-700 btn-with-arrow">Become a partner<span class="btn-arrow-wrap"><svg width="20" height="20" class="btn-arrow-icon !text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.1161 5.36612C13.6043 4.87796 14.3957 4.87796 14.8839 5.36612L20.6339 11.1161C20.8683 11.3505 21 11.6685 21 12C21 12.3315 20.8683 12.6494 20.6339 12.8839L14.8839 18.6339C14.3957 19.122 13.6043 19.122 13.1161 18.6339C12.628 18.1457 12.628 17.3543 13.1161 16.8661L16.7322 13.25H4.25C3.55964 13.25 3 12.6903 3 12C3 11.3096 3.55964 10.75 4.25 10.75H16.7322L13.1161 7.13388C12.628 6.64573 12.628 5.85427 13.1161 5.36612Z" fill="currentColor"/></svg>
2398</span></a>
2398<script>
2399  (function() {
2400    function initButtonArrows() {
2401      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
2402        if (button.dataset.btnArrowInit) return;
2403        button.dataset.btnArrowInit = 'true';
2404        
2405        var icon = button.querySelector('.btn-arrow-icon');
2406        if (!icon) return;
2407        
2408        button.addEventListener('mouseenter', function() {
2409          icon.classList.remove('slide-out');
2410          icon.classList.add('slide-in');
2411        });
2412        
2413        button.addEventListener('mouseleave', function() {
2414          icon.classList.remove('slide-in');
2415          icon.classList.add('slide-out');
2416        });
2417      });
2418    }
2419
2420    if (document.readyState === 'loading') {
2421      document.addEventListener('DOMContentLoaded', initButtonArrows);
2422    } else {
2423      initButtonArrows();
2424    }
2425    
2426    document.addEventListener('astro:page-load', initButtonArrows);
2427  })();
2428</script>
2428 </div> </div> <!-- Right: Block 1 --> <div class="bg-white p-6 lg:p-8 flex flex-col justify-center"> <div class="flex items-start gap-4"> <div class="w-10 h-10 rounded-lg bg-zinc-100 flex items-center justify-center shrink-0"> <svg class="w-5 h-5 text-zinc-500" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10.868 2.884c-.321-.772-1.415-.772-1.736 0l-1.83 4.401-4.753.381c-.833.067-1.171 1.107-.536 1.651l3.62 3.102-1.106 4.637c-.194.813.691 1.456 1.405 1.02L10 15.591l4.069 2.485c.713.436 1.598-.207 1.404-1.02l-1.106-4.637 3.62-3.102c.635-.544.297-1.584-.536-1.65l-4.752-.382-1.831-4.401z" clip-rule="evenodd"></path></svg> </div> <div> <h4 class="mb-1">Give clients an edge</h4> <p>Show up to every call with the insights they actually need. You become the partner they recommend, not the one they review.</p> </div> </div> </div> <!-- Right: Block 2 --> <div class="bg-white p-6 lg:p-8 flex flex-col justify-center"> <div class="flex items-start gap-4"> <div class="w-10 h-10 rounded-lg bg-zinc-100 flex items-center justify-center shrink-0"> <svg class="w-5 h-5 text-zinc-500" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm.75-13a.75.75 0 00-1.5 0v5c0 .414.336.75.75.75h4a.75.75 0 000-1.5h-3.25V5z" clip-rule="evenodd"></path></svg> </div> <div> <h4 class="mb-1">Onboard clients in seconds</h4> <p>Everything you need to sell, set up, and deliver is already built. Your clients see an expert — not someone figuring it out.</p> </div> </div> </div> <!-- Right: Block 3 --> <div class="bg-white p-6 lg:p-8 flex flex-col justify-center"> <div class="flex items-start gap-4"> <div class="w-10 h-10 rounded-lg bg-zinc-100 flex items-center justify-center shrink-0"> <svg class="w-5 h-5 text-zinc-500" viewBox="0 0 20 20" fill="currentColor"><path d="M10 9a3 3 0 100-6 3 3 0 000 6zM6 8a2 2 0 11-4 0 2 2 0 014 0zM1.49 15.326a.78.78 0 01-.358-.442 3 3 0 014.308-3.516 6.484 6.484 0 00-1.905 3.959c-.023.222-.014.442.025.654a4.97 4.97 0 01-2.07-.655zM16.44 15.98a4.97 4.97 0 002.07-.654.78.78 0 00.357-.442 3 3 0 00-4.308-3.517 6.484 6.484 0 011.907 3.96 2.32 2.32 0 01-.026.654zM18 8a2 2 0 11-4 0 2 2 0 014 0zM5.304 16.19a.844.844 0 01-.277-.71 5 5 0 019.947 0 .843.843 0 01-.277.71A6.975 6.975 0 0110 18a6.974 6.974 0 01-4.696-1.81z"></path></svg> </div> <div> <h4 class="mb-1">Work with GTM experts</h4> <p>Access partner support and ready-made resources that keep delivery tight as your roster grows. More clients, same standard.</p> </div> </div> </div> </div> </div>  </div> </section>     <section class="page-section" data-variant="light" id="integrations" data-astro-cid-dnku4hyr>        <div class="section-container" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content --> <div class="mx-auto max-w-6xl" data-astro-cid-dnku4hyr>  <div class="flex flex-col md:flex-row items-center gap-8 md:gap-12"> <!-- Bento Grid (4×4 small variant with diagonal pop-in animation) --> <div class="w-full md:flex-1"> <div class="integration-bento grid grid-cols-4 overflow-hidden rounded-2xl border border-zinc-200" data-animate="true" data-astro-cid-7rb7ltoj><a href="/integrations/google-analytics" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-r border-b" style="--delay: 0ms" data-astro-cid-7rb7ltoj><img src="/integrations/google-analytics.svg" alt="Google Analytics" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/hubspot" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-r border-b" style="--delay: 80ms" data-astro-cid-7rb7ltoj><img src="/integrations/hubspot.svg" alt="HubSpot" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/salesforce" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-r border-b" style="--delay: 160ms" data-astro-cid-7rb7ltoj><img src="/integrations/salesforce.svg" alt="Salesforce" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/slack" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-b" style="--delay: 240ms" data-astro-cid-7rb7ltoj><img src="/integrations/slack.svg" alt="Slack" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/zapier" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-r border-b" style="--delay: 80ms" data-astro-cid-7rb7ltoj><img src="/integrations/zapier.svg" alt="Zapier" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/apollo" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-r border-b" style="--delay: 160ms" data-astro-cid-7rb7ltoj><img src="/integrations/apollo.jpg" alt="Apollo" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/pipedrive" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-r border-b" style="--delay: 240ms" data-astro-cid-7rb7ltoj><img src="/integrations/pipedrive.svg" alt="Pipedrive" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/attio" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-b" style="--delay: 320ms" data-astro-cid-7rb7ltoj><img src="/integrations/attio.svg" alt="Attio" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/mcp" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-r border-b" style="--delay: 160ms" data-astro-cid-7rb7ltoj><img src="/integrations/mcp.png" alt="MCP" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/close" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-r border-b" style="--delay: 240ms" data-astro-cid-7rb7ltoj><img src="/integrations/close.svg" alt="Close" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/google-ads" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-r border-b" style="--delay: 320ms" data-astro-cid-7rb7ltoj><img src="/integrations/google-ads.svg" alt="Google Ads" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/lemlist" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-b" style="--delay: 400ms" data-astro-cid-7rb7ltoj><img src="/integrations/lemlist.svg" alt="Lemlist" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/dynamics" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-r" style="--delay: 240ms" data-astro-cid-7rb7ltoj><img src="/integrations/ms-dynamics.png" alt="Microsoft Dynamics" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/microsoft-teams" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-r" style="--delay: 320ms" data-astro-cid-7rb7ltoj><img src="/integrations/microsoft-teams.svg" alt="Microsoft Teams" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations/smartlead" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 border-r" style="--delay: 400ms" data-astro-cid-7rb7ltoj><img src="/integrations/smartlead.png" alt="Smartlead" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a><a href="/integrations" class="flex aspect-square items-center justify-center border-zinc-200 bg-white transition-colors hover:bg-zinc-50 !bg-transparent" style="--delay: 480ms" data-astro-cid-7rb7ltoj><img src="/integrations/plus.svg" alt="More integrations" class="integration-logo h-8 w-8 object-contain opacity-0" loading="lazy" decoding="auto" data-astro-cid-7rb7ltoj></a></div> </div> <!-- Content --> <div class="w-full md:flex-1 text-left"> <h2 class="text-balance">
2429Seamlessly integrate with your entire stack
2430</h2> <p class="mt-4 max-w-xl text-lg">
2431Snitcher plugs into your tools so data, signals and workflows move seamlessly between every system you use.
2432</p> <div class="mt-6"> <a href="/integrations" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white ring-1 ring-[var(--alpha-border)] !text-zinc-700 hover:bg-zinc-50">
2433Explore integrations
2434</a>
2434<script>
2435  (function() {
2436    function initButtonArrows() {
2437      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
2438        if (button.dataset.btnArrowInit) return;
2439        button.dataset.btnArrowInit = 'true';
2440        
2441        var icon = button.querySelector('.btn-arrow-icon');
2442        if (!icon) return;
2443        
2444        button.addEventListener('mouseenter', function() {
2445          icon.classList.remove('slide-out');
2446          icon.classList.add('slide-in');
2447        });
2448        
2449        button.addEventListener('mouseleave', function() {
2450          icon.classList.remove('slide-in');
2451          icon.classList.add('slide-out');
2452        });
2453      });
2454    }
2455
2456    if (document.readyState === 'loading') {
2457      document.addEventListener('DOMContentLoaded', initButtonArrows);
2458    } else {
2459      initButtonArrows();
2460    }
2461    
2462    document.addEventListener('astro:page-load', initButtonArrows);
2463  })();
2464</script>
2464 </div> </div> </div>  </div> </div> </section>    <section class="page-section" data-variant="light" data-astro-cid-dnku4hyr>        <div class="section-container" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <div class="blob-card rounded-2xl overflow-hidden relative p-8 md:p-10" data-astro-cid-gijzu423> <!-- Gradient background with animated blobs --> <div class="absolute inset-0 rounded-2xl overflow-hidden bg-primary-500" data-astro-cid-gijzu423> <!-- Animated blobs --> <div class="blob-card-blob blob-card-blob-1" data-astro-cid-gijzu423></div> <div class="blob-card-blob blob-card-blob-2" data-astro-cid-gijzu423></div> <div class="blob-card-blob blob-card-blob-3" data-astro-cid-gijzu423></div> <div class="blob-card-blob blob-card-blob-4" data-astro-cid-gijzu423></div> <div class="blob-card-blob blob-card-blob-5" data-astro-cid-gijzu423></div> <!-- Noise overlay to reduce gradient banding --> <div class="blob-card-noise" data-astro-cid-gijzu423></div> </div> <!-- Content slot --> <div class="relative z-10 h-full" data-astro-cid-gijzu423> <div class="flex flex-col gap-6 lg:flex-row lg:justify-between lg:items-end"><div class="flex flex-col gap-4 lg:max-w-[50%]"><h2 class="tracking-tight text-white text-balance">Install in minutes</h2><p class="text-white text-balance">The last thing your team needs is another tool that requires training, so we made one that doesn&#39;t.</p></div><div class="flex flex-col sm:flex-row gap-2 items-stretch sm:items-start w-full sm:w-auto lg:shrink-0"><a href="https://app.snitcher.com/register" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white !text-zinc-950 hover:bg-zinc-100 !pl-3 w-full sm:w-auto justify-center"> <svg width="20" height="20" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg" class="shrink-0" aria-hidden="true"> <path d="M211.265 148.37C187.598 224.219 123.858 249.286 104.886 255.161C89.5631 259.93 84.2516 243.014 99.6384 238.244C116.524 233.017 173.258 210.709 194.355 143.094C205.691 106.783 186.837 68.5577 152.325 57.79C117.074 46.7923 80.2423 68.8045 69.2412 104.054C67.5848 109.361 63.152 113.363 58.9333 113.363C52.8997 113.363 50.3043 105.281 52.3341 98.7783C66.1181 54.6057 112.724 26.8804 157.601 40.8841C202.129 54.7776 225.257 103.517 211.265 148.37ZM168.681 5.37712C102.536 -15.2639 36.1026 25.9353 16.8302 87.6986C7.05086 119.034 28.0846 150.559 58.9017 150.559C79.3873 150.559 98.2403 135.991 104.747 115.134C109.855 98.7636 126.062 88.5621 141.246 93.2947C156.164 97.95 164.06 115.32 158.854 132.015C145.032 176.301 103.905 207.232 58.8369 207.236H58.8306C53.1805 207.236 47.4893 206.748 41.9193 205.783C26.0231 203.042 23.0907 220.506 38.9072 223.237C45.4654 224.373 52.1665 224.95 58.822 224.95C111.569 224.95 159.656 188.902 175.758 137.291C183.809 111.494 170.991 84.021 146.522 76.39C121.831 68.6852 95.7658 84.4535 87.8419 109.858C83.6147 123.396 71.7306 132.852 58.9427 132.852C40.047 132.852 27.4971 112.952 33.7365 92.9742C51.7151 35.4079 111.149 5.98231 163.405 22.2851C217.821 39.2652 247.198 98.6229 229.863 154.174C220.278 184.887 202.64 212.731 179.141 234.367C167.297 245.262 179.436 258.135 191.286 247.224C217.073 223.484 236.259 193.132 246.77 159.45C267.275 93.7541 231.625 25.0164 168.681 5.37712ZM58.6439 187.8C95.3789 187.8 128.937 162.473 140.255 126.211C142.694 118.381 139.514 113.349 135.392 112.062C131.306 110.787 125.784 113.124 123.348 120.937C114.327 149.843 87.7136 170.032 58.6287 170.032C44.0506 170.032 30.2484 164.946 18.717 155.324C6.35199 145.002 -4.98893 158.544 7.38454 168.884C22.2568 181.257 39.9787 187.797 58.6349 187.8H58.6439Z" fill="currentColor"></path> </svg> <span>Start for free</span> </a>
2464<script>
2465  (function() {
2466    function initButtonArrows() {
2467      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
2468        if (button.dataset.btnArrowInit) return;
2469        button.dataset.btnArrowInit = 'true';
2470        
2471        var icon = button.querySelector('.btn-arrow-icon');
2472        if (!icon) return;
2473        
2474        button.addEventListener('mouseenter', function() {
2475          icon.classList.remove('slide-out');
2476          icon.classList.add('slide-in');
2477        });
2478        
2479        button.addEventListener('mouseleave', function() {
2480          icon.classList.remove('slide-in');
2481          icon.classList.add('slide-out');
2482        });
2483      });
2484    }
2485
2486    if (document.readyState === 'loading') {
2487      document.addEventListener('DOMContentLoaded', initButtonArrows);
2488    } else {
2489      initButtonArrows();
2490    }
2491    
2492    document.addEventListener('astro:page-load', initButtonArrows);
2493  })();
2494</script>
2494</div></div> </div> </div>  
2494<script>
2495  (function() {
2496    var tabVisible = true;
2497    var cardObservers = new Map();
2498
2499    function setCardAnimationState(card, isVisible) {
2500      var shouldPlay = isVisible && tabVisible;
2501      var state = shouldPlay ? 'running' : 'paused';
2502      var blobs = card.querySelectorAll('.blob-card-blob');
2503      blobs.forEach(function(blob) {
2504        blob.style.animationPlayState = state;
2505        blob.style.willChange = shouldPlay ? 'transform' : 'auto';
2506      });
2507    }
2508
2509    // Randomize blob animation delays for more organic movement
2510    function initBlobCardAnimations() {
2511      var cards = document.querySelectorAll('.blob-card');
2512      
2513      cards.forEach(function(card) {
2514        var blobs = card.querySelectorAll('.blob-card-blob');
2515        blobs.forEach(function(blob) {
2516          // Random delay between 0 and the animation duration
2517          var randomDelay = -(Math.random() * 15); // negative delay to start mid-animation
2518          blob.style.animationDelay = randomDelay + 's';
2519        });
2520
2521        // Set up IntersectionObserver to pause animations when off-screen
2522        if ('IntersectionObserver' in window) {
2523          var observer = new IntersectionObserver(function(entries) {
2524            entries.forEach(function(entry) {
2525              setCardAnimationState(entry.target, entry.isIntersecting);
2526            });
2527          }, { threshold: 0 });
2528          observer.observe(card);
2529          cardObservers.set(card, observer);
2530        } else {
2531          // Fallback: assume visible
2532          setCardAnimationState(card, true);
2533        }
2534      });
2535    }
2536
2537    // Page Visibility API - pause animations when tab is hidden
2538    function initVisibilityHandler() {
2539      document.addEventListener('visibilitychange', function() {
2540        tabVisible = !document.hidden;
2541        var cards = document.querySelectorAll('.blob-card');
2542        cards.forEach(function(card) {
2543          // Check if this card's observer has detected visibility
2544          var observer = cardObservers.get(card);
2545          // We need to re-evaluate visibility, but for simplicity just update all
2546          var blobs = card.querySelectorAll('.blob-card-blob');
2547          blobs.forEach(function(blob) {
2548            if (!tabVisible) {
2549              blob.style.animationPlayState = 'paused';
2550            }
2551            // When tab becomes visible, IntersectionObserver will handle it
2552          });
2553        });
2554      });
2555    }
2556
2557    function cleanup() {
2558      cardObservers.forEach(function(observer) {
2559        observer.disconnect();
2560      });
2561      cardObservers.clear();
2562    }
2563
2564    function init() {
2565      cleanup();
2566      initBlobCardAnimations();
2567    }
2568
2569    // Initialize visibility handler once
2570    initVisibilityHandler();
2571
2572    if (document.readyState === 'loading') {
2573      document.addEventListener('DOMContentLoaded', init);
2574    } else {
2575      init();
2576    }
2577
2578    // Re-init on Astro page transitions
2579    document.addEventListener('astro:page-load', init);
2580    document.addEventListener('astro:before-swap', cleanup);
2581  })();
2582</script>
2582  </div> </section>     </main> <footer class="w-full relative z-0" data-astro-cid-fqw42ge2> <!-- Footer CTA Section -->
2583  <section class="w-full bg-zinc-950 relative overflow-hidden" data-astro-cid-fqw42ge2> <!-- Fingerprint SVG Background with Solar Flare Animation --> <div class="absolute" style="top: -55.24%; left: 50%; transform: translateX(-50%); bottom: -58.45%; width: 1280px; height: 725px;" data-astro-cid-fqw42ge2> <svg xmlns="http://www.w3.org/2000/svg" width="1280" height="725" viewBox="0 0 911 516" fill="none" style="width: 100%; height: 100%; display: block;" class="fingerprint-svg" data-astro-cid-fqw42ge2> <defs data-astro-cid-fqw42ge2> <!-- Fade mask for bottom of fingerprint --> <mask id="footer-fingerprint-fade" data-astro-cid-fqw42ge2> <rect width="911" height="516" fill="white" data-astro-cid-fqw42ge2></rect> <rect x="0" y="376" width="911" height="140" fill="url(#footer-fade-gradient)" data-astro-cid-fqw42ge2></rect> </mask> <linearGradient id="footer-fade-gradient" x1="0" y1="0" x2="0" y2="1" gradientUnits="objectBoundingBox" data-astro-cid-fqw42ge2> <stop offset="0" stop-color="white" data-astro-cid-fqw42ge2></stop> <stop offset="1" stop-color="black" data-astro-cid-fqw42ge2></stop> </linearGradient> </defs> <!-- Base fingerprint path --> <path d="M479.105 123.715C508.165 123.715 537.121 127.711 565.171 135.593H565.172C723.388 180.032 810.209 336.775 758.861 484.95C672.839 733.133 441.175 815.165 372.169 834.403H372.168C366.003 836.13 360.107 837 354.642 837C336.377 837 326.758 827.516 324.962 818.309L324.883 817.87C323.209 807.91 329.776 793.276 355.402 786.121C417.687 768.769 627.121 694.667 705.011 469.948C725.42 411.091 720.361 348.893 690.761 294.827C661.139 240.726 610.544 201.314 548.32 183.835C525.75 177.497 502.431 174.283 479.011 174.283C371.227 174.283 272.458 241.933 238.85 338.877C233.287 354.919 218.695 366.846 205.139 366.846C197.37 366.846 192.438 362.809 189.639 359.385C182.575 350.738 180.643 336.461 185.006 323.875C225.841 206.064 346.768 123.715 479.105 123.715ZM478.957 1C521.618 1.00001 564.274 6.90814 605.741 18.5576C716.526 49.6745 807.083 118.96 860.766 213.628C914.723 308.784 924.703 418.105 888.864 521.47C850.909 630.962 781.867 729.724 689.108 807.245L686.913 809.072C674.246 819.571 663.235 821.729 656.295 821.729C645.632 821.729 636.927 816.576 633.413 808.462C628.742 797.678 633.925 784.249 648.096 772.514H648.097C735.016 700.475 799.655 608.478 835.02 506.468C866.145 416.68 857.829 321.486 811.604 238.445C765.548 155.708 687.314 95.0634 591.164 67.4512L588.89 66.8057C553.722 56.9306 517.085 51.9238 479.998 51.9238C310.011 51.9239 160.83 152.525 108.854 302.354C96.7623 337.202 102.92 374.427 125.368 401.906C144.581 425.426 173.675 438.9 205.174 438.9C253.822 438.9 298.979 406.62 315.014 360.395V360.394C338.279 293.254 405.65 246.323 478.859 246.323C494.333 246.323 509.728 248.445 524.608 252.625C566.639 264.424 600.584 291.382 620.213 328.518C639.767 365.513 642.843 408.092 628.859 448.432C570.466 616.91 396.076 734.653 204.729 734.653C180.618 734.653 156.325 732.773 132.521 729.062H132.52C106.527 725.021 96.6245 711.156 97.7158 699.718C98.7049 689.31 109.097 678.338 130.959 678.338C134.503 678.338 138.264 678.642 142.138 679.243C162.762 682.456 183.832 684.085 204.76 684.085H204.761C370.933 684.071 522.658 581.841 574.417 435.154L575.021 433.426C594.797 376.342 564.645 316.848 507.754 300.864H507.753C498.292 298.212 488.494 296.864 478.629 296.864C430.011 296.864 384.88 329.156 368.849 375.396V375.396C345.592 442.527 278.225 489.448 205.022 489.448C155.516 489.448 109.979 468.431 80.0645 431.818C47.034 391.388 37.6623 337.388 55.0059 287.355C113.434 118.797 287.749 1 478.957 1ZM477.126 369.297C479.15 369.297 481.136 369.531 483.041 369.995L483.853 370.208C490.288 372.016 496.057 376.531 499.22 383.507C502.381 390.481 502.979 400.016 498.863 411.912C457.99 529.799 336.787 612.2 204.079 612.2H204.047C137.242 612.195 73.7533 591.267 20.3223 551.662L19.0625 550.723C3.84284 539.273 -2.02901 525.738 2.49023 514.525C5.87123 506.138 14.6726 500.811 25.6582 500.811C35.1161 500.811 45.338 504.677 55.2158 512.099C98.2043 544.388 149.664 561.455 204.021 561.455C312.304 561.455 411.42 493.831 445.02 396.916V396.915C452.117 376.42 466.351 369.297 477.126 369.297Z" stroke="white" stroke-opacity="0.1" stroke-width="2" mask="url(#footer-fingerprint-fade)" data-astro-cid-fqw42ge2></path> </svg> <!-- Canvas overlay for GPU-accelerated flare animation --> <canvas class="fingerprint-canvas" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none;" aria-hidden="true" data-astro-cid-fqw42ge2></canvas> </div> <!-- Gradient fade at bottom --> <div class="absolute bottom-0 left-1/2 -translate-x-1/2 w-full max-w-screen-2xl h-60 bg-gradient-to-b from-transparent via-zinc-950/50 to-zinc-950 pointer-events-none" data-astro-cid-fqw42ge2></div> <!-- Content Container --> <div class="relative z-10 py-20 md:py-40 px-6 md:px-16" data-astro-cid-fqw42ge2> <div class="max-w-7xl mx-auto" data-astro-cid-fqw42ge2> <div class="flex flex-col gap-8 items-center justify-center px-0 rounded-t-3xl" data-astro-cid-fqw42ge2> <div class="flex flex-col gap-2 items-center max-w-xl w-full" data-astro-cid-fqw42ge2> <!-- Heading --> <h2 class="text-center text-white" data-astro-cid-fqw42ge2>
2584Own every revenue moment
2585</h2> <!-- Subheading --> <p class="text-lg text-center text-white" data-astro-cid-fqw42ge2>
2586Spot real buyers, take action and win more deals with Snitcher.
2587</p> </div> <!-- Action Buttons --> <div class="flex flex-col md:flex-row gap-2 items-stretch md:items-start w-full md:w-auto" data-astro-cid-fqw42ge2> <a href="/demo" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white/10 border border-white/10 !text-zinc-100 hover:bg-white/20 backdrop-blur-sm w-full md:w-auto justify-center">Talk to sales</a>
2587<script>
2588  (function() {
2589    function initButtonArrows() {
2590      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
2591        if (button.dataset.btnArrowInit) return;
2592        button.dataset.btnArrowInit = 'true';
2593        
2594        var icon = button.querySelector('.btn-arrow-icon');
2595        if (!icon) return;
2596        
2597        button.addEventListener('mouseenter', function() {
2598          icon.classList.remove('slide-out');
2599          icon.classList.add('slide-in');
2600        });
2601        
2602        button.addEventListener('mouseleave', function() {
2603          icon.classList.remove('slide-in');
2604          icon.classList.add('slide-out');
2605        });
2606      });
2607    }
2608
2609    if (document.readyState === 'loading') {
2610      document.addEventListener('DOMContentLoaded', initButtonArrows);
2611    } else {
2612      initButtonArrows();
2613    }
2614    
2615    document.addEventListener('astro:page-load', initButtonArrows);
2616  })();
2617</script>
2617 <a href="https://app.snitcher.com/register" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white !text-zinc-950 hover:bg-zinc-100 !pl-3 w-full md:w-auto justify-center"> <svg width="20" height="20" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg" class="shrink-0" aria-hidden="true"> <path d="M211.265 148.37C187.598 224.219 123.858 249.286 104.886 255.161C89.5631 259.93 84.2516 243.014 99.6384 238.244C116.524 233.017 173.258 210.709 194.355 143.094C205.691 106.783 186.837 68.5577 152.325 57.79C117.074 46.7923 80.2423 68.8045 69.2412 104.054C67.5848 109.361 63.152 113.363 58.9333 113.363C52.8997 113.363 50.3043 105.281 52.3341 98.7783C66.1181 54.6057 112.724 26.8804 157.601 40.8841C202.129 54.7776 225.257 103.517 211.265 148.37ZM168.681 5.37712C102.536 -15.2639 36.1026 25.9353 16.8302 87.6986C7.05086 119.034 28.0846 150.559 58.9017 150.559C79.3873 150.559 98.2403 135.991 104.747 115.134C109.855 98.7636 126.062 88.5621 141.246 93.2947C156.164 97.95 164.06 115.32 158.854 132.015C145.032 176.301 103.905 207.232 58.8369 207.236H58.8306C53.1805 207.236 47.4893 206.748 41.9193 205.783C26.0231 203.042 23.0907 220.506 38.9072 223.237C45.4654 224.373 52.1665 224.95 58.822 224.95C111.569 224.95 159.656 188.902 175.758 137.291C183.809 111.494 170.991 84.021 146.522 76.39C121.831 68.6852 95.7658 84.4535 87.8419 109.858C83.6147 123.396 71.7306 132.852 58.9427 132.852C40.047 132.852 27.4971 112.952 33.7365 92.9742C51.7151 35.4079 111.149 5.98231 163.405 22.2851C217.821 39.2652 247.198 98.6229 229.863 154.174C220.278 184.887 202.64 212.731 179.141 234.367C167.297 245.262 179.436 258.135 191.286 247.224C217.073 223.484 236.259 193.132 246.77 159.45C267.275 93.7541 231.625 25.0164 168.681 5.37712ZM58.6439 187.8C95.3789 187.8 128.937 162.473 140.255 126.211C142.694 118.381 139.514 113.349 135.392 112.062C131.306 110.787 125.784 113.124 123.348 120.937C114.327 149.843 87.7136 170.032 58.6287 170.032C44.0506 170.032 30.2484 164.946 18.717 155.324C6.35199 145.002 -4.98893 158.544 7.38454 168.884C22.2568 181.257 39.9787 187.797 58.6349 187.8H58.6439Z" fill="currentColor"></path> </svg> <span>Start for free</span> </a>
2617<script>
2618  (function() {
2619    function initButtonArrows() {
2620      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
2621        if (button.dataset.btnArrowInit) return;
2622        button.dataset.btnArrowInit = 'true';
2623        
2624        var icon = button.querySelector('.btn-arrow-icon');
2625        if (!icon) return;
2626        
2627        button.addEventListener('mouseenter', function() {
2628          icon.classList.remove('slide-out');
2629          icon.classList.add('slide-in');
2630        });
2631        
2632        button.addEventListener('mouseleave', function() {
2633          icon.classList.remove('slide-in');
2634          icon.classList.add('slide-out');
2635        });
2636      });
2637    }
2638
2639    if (document.readyState === 'loading') {
2640      document.addEventListener('DOMContentLoaded', initButtonArrows);
2641    } else {
2642      initButtonArrows();
2643    }
2644    
2645    document.addEventListener('astro:page-load', initButtonArrows);
2646  })();
2647</script>
2647 </div> </div> </div> </div> </section> <!-- Main Footer Content. Normally `pt-0` — the callout above supplies the top
2648       space. Without it the link columns would jam against the page. --> <div class="w-full bg-zinc-950 px-6 md:px-16 pb-8 pt-0" data-astro-cid-fqw42ge2> <div class="max-w-7xl mx-auto" data-astro-cid-fqw42ge2> <!-- Main Content: Logo and Navigation --> <div class="flex flex-col md:flex-row gap-24 items-start mb-16 md:mb-24 pt-0" data-astro-cid-fqw42ge2> <!-- Left Column: Logo, Tagline, Badges --> <div class="flex flex-col gap-8 w-full md:w-1/2" data-astro-cid-fqw42ge2> <!-- Logo --> <a href="/" class="flex items-center gap-2.5 w-64 h-14" data-astro-cid-fqw42ge2> <img src="/logo-symbol.svg" alt="Snitcher symbol" class="w-12 h-12 object-contain brightness-0 invert" loading="lazy" decoding="auto" data-astro-cid-fqw42ge2> <img src="/logo-wordmark.svg" alt="Snitcher" class="w-48 h-9 object-contain brightness-0 invert" loading="lazy" decoding="auto" data-astro-cid-fqw42ge2> </a> <!-- Tagline --> <p class="text-lg text-white" data-astro-cid-fqw42ge2>
2649Uncover your hidden website visitors.
2650</p> <!-- G2 Badges — the current release, straight off src/data/g2-badges.ts --> <a href="https://www.g2.com/products/snitcher/reviews" target="_blank" rel="noopener noreferrer" class="flex gap-2 items-center flex-wrap hover:opacity-80 transition-opacity"> <img src="/_astro/g2-summer-2026-leader.DXAU52y-.svg" alt="G2 Summer 2026 Leader" class="w-20 object-contain" loading="lazy" decoding="auto"><img src="/_astro/g2-summer-2026-best-results.DpsubBts.svg" alt="G2 Summer 2026 Best Results" class="w-20 object-contain" loading="lazy" decoding="auto"><img src="/_astro/g2-summer-2026-best-usability-smb.DbiWjGVi.svg" alt="G2 Summer 2026 Best Usability Small Business" class="w-20 object-contain" loading="lazy" decoding="auto"><img src="/_astro/g2-summer-2026-most-implementable.XtG3_GLc.svg" alt="G2 Summer 2026 Most Implementable" class="w-20 object-contain" loading="lazy" decoding="auto"><img src="/_astro/g2-summer-2026-best-estimated-roi-mid-market.CYMbXl6r.svg" alt="G2 Summer 2026 Best Estimated ROI Mid-Market" class="w-20 object-contain" loading="lazy" decoding="auto"><img src="/_astro/g2-summer-2026-best-relationship-smb.D5l7xB20.svg" alt="G2 Summer 2026 Best Relationship Small Business" class="w-20 object-contain" loading="lazy" decoding="auto"> </a> <!-- Compliance Badges --> <a href="https://trust.snitcher.com" target="_blank" rel="noopener noreferrer" class="flex gap-4 items-center hover:opacity-80 transition-opacity" data-astro-cid-fqw42ge2> <!-- GDPR Badge --> <img src="/footer-badges/gdpr-compliant.svg" alt="GDPR Compliant" class="w-16 object-contain" loading="lazy" decoding="auto" data-astro-cid-fqw42ge2> <!-- ISO 27001 Badge --> <img src="/footer-badges/iso-27001.svg" alt="ISO 27001 In Progress" class="w-16 object-contain" loading="lazy" decoding="auto" data-astro-cid-fqw42ge2> </a> <!-- Partner Program Callout --> <div class="partner-callout flex items-center gap-2.5 pt-2" data-astro-cid-fqw42ge2> <!-- Partner badge → links to the agency partner program explainer --> <a href="/partners/agency-program" class="partner-badge-link inline-flex shrink-0 rounded-xl transition-transform duration-200 hover:-translate-y-0.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-lavender-400 focus-visible:ring-offset-2 focus-visible:ring-offset-zinc-950" aria-label="Join the Snitcher agency partner program" data-astro-cid-fqw42ge2> <img src="/footer-badges/snitcher-partner.svg" alt="Snitcher Certified Partner" class="w-32 object-contain" loading="lazy" decoding="auto" data-astro-cid-fqw42ge2> </a> <!-- Doodle arrow pointing left at the badge --> <svg class="fill-current w-8 h-8 shrink-0 rotate-180 text-lavender-300" viewBox="0 -66.5 220 220" fill="none" xmlns="http://www.w3.org/2000/svg" data-astro-cid-fqw42ge2> <path d="M3.17247 25.8421C5.28745 28.1788 7.82542 30.0907 9.7289 32.6399C26.0142 55.3699 49.279 66.6287 75.0817 72.7892C83.9646 74.9135 94.1165 74.7011 103.211 72.7892C129.225 67.6909 152.913 56.8569 173.428 39.8625C179.35 34.9766 184.426 28.8161 188.656 21.8059C186.33 22.6556 183.792 23.5054 181.465 24.5675C174.697 27.5415 167.929 30.728 160.95 33.2772C157.989 34.3393 154.393 34.3393 151.009 34.1269C149.74 34.1269 147.837 32.215 147.625 30.9404C147.414 29.6658 148.683 27.3291 149.74 27.1167C167.718 21.5935 183.369 10.972 199.654 1.83746C205.364 -1.34899 208.96 -0.49927 211.498 5.23635C217.631 19.4692 220.381 34.5517 219.958 50.0592C219.958 50.484 219.112 51.1213 217.843 52.3959C205.364 47.7224 209.171 34.1269 203.038 23.2929C201.557 25.8421 200.5 27.9664 199.231 29.6658C172.582 62.5926 137.262 80.0118 96.2315 86.3848C90.0981 87.4469 83.3301 87.022 76.9852 85.9599C53.7205 81.9237 32.9937 72.1519 15.8623 55.7948C10.3634 50.484 6.34493 43.4738 2.32647 36.8885C0.634492 34.3393 0.634494 30.728 0 27.754C1.05749 27.1167 2.11498 26.4794 3.17247 25.8421Z" data-astro-cid-fqw42ge2></path> </svg> <!-- Hand-written note --> <span class="font-hand text-2xl leading-[1.05] text-lavender-300 -rotate-2" data-astro-cid-fqw42ge2>
2651Run an agency?<br data-astro-cid-fqw42ge2>Join our partner programme
2652</span> </div> </div> <!-- Right Column: Navigation Links --> <div class="w-full md:w-1/2" data-astro-cid-fqw42ge2> <div class="grid grid-cols-2 md:grid-cols-3 gap-x-4 gap-y-8" data-astro-cid-fqw42ge2> <div class="flex flex-col gap-4" data-astro-cid-fqw42ge2> <h5 class="text-white" data-astro-cid-fqw42ge2>Product</h5> <a href="/platform" class="footer-nav-link" data-astro-cid-fqw42ge2> Platform </a><a href="/radar" class="footer-nav-link" data-astro-cid-fqw42ge2> Radar </a><a href="/ip-to-company-api" class="footer-nav-link" data-astro-cid-fqw42ge2> IP to Company </a><a href="/integrations" class="footer-nav-link" data-astro-cid-fqw42ge2> Integrations </a><a href="/changelog" class="footer-nav-link" data-astro-cid-fqw42ge2> Changelog </a> </div><div class="flex flex-col gap-4" data-astro-cid-fqw42ge2> <h5 class="text-white" data-astro-cid-fqw42ge2>Journey</h5> <a href="/identify" class="footer-nav-link" data-astro-cid-fqw42ge2> Identify </a><a href="/signal" class="footer-nav-link" data-astro-cid-fqw42ge2> Signal </a><a href="/automate" class="footer-nav-link" data-astro-cid-fqw42ge2> Automate </a><a href="/engage" class="footer-nav-link" data-astro-cid-fqw42ge2> Engage </a><a href="/measure" class="footer-nav-link" data-astro-cid-fqw42ge2> Measure </a> </div><div class="flex flex-col gap-4" data-astro-cid-fqw42ge2> <h5 class="text-white" data-astro-cid-fqw42ge2>Teams</h5> <a href="/solutions/sales" class="footer-nav-link" data-astro-cid-fqw42ge2> Sales </a><a href="/solutions/marketing" class="footer-nav-link" data-astro-cid-fqw42ge2> Marketing </a><a href="/solutions/revops" class="footer-nav-link" data-astro-cid-fqw42ge2> RevOps </a><a href="/solutions/agency" class="footer-nav-link" data-astro-cid-fqw42ge2> Agency </a> </div><div class="flex flex-col gap-4" data-astro-cid-fqw42ge2> <h5 class="text-white" data-astro-cid-fqw42ge2>Use Cases</h5> <a href="/use-cases/account-scoring" class="footer-nav-link" data-astro-cid-fqw42ge2> Account scoring </a><a href="/use-cases/contact-reveal" class="footer-nav-link" data-astro-cid-fqw42ge2> Contact reveal </a><a href="/use-cases/enrich-ga4" class="footer-nav-link" data-astro-cid-fqw42ge2> GA4 enrichment </a><a href="/use-cases/lead-generation" class="footer-nav-link" data-astro-cid-fqw42ge2> Lead generation </a><a href="/use-cases/marketing-attribution" class="footer-nav-link" data-astro-cid-fqw42ge2> Marketing attribution </a><a href="/use-cases/visitor-identification" class="footer-nav-link" data-astro-cid-fqw42ge2> Visitor identification </a> </div><div class="flex flex-col gap-4" data-astro-cid-fqw42ge2> <h5 class="text-white" data-astro-cid-fqw42ge2>Resources</h5> <a href="/blog" class="footer-nav-link" data-astro-cid-fqw42ge2> Blog </a><a href="https://docs.snitcher.com" class="footer-nav-link" target="_blank" rel="noopener noreferrer" data-astro-cid-fqw42ge2> Documentation </a><a href="https://help.snitcher.com" class="footer-nav-link" target="_blank" rel="noopener noreferrer" data-astro-cid-fqw42ge2> Help center </a><a href="/partners" class="footer-nav-link" data-astro-cid-fqw42ge2> Partner Program </a><a href="/refer" class="footer-nav-link" data-astro-cid-fqw42ge2> Refer a friend </a> </div><div class="flex flex-col gap-4" data-astro-cid-fqw42ge2> <h5 class="text-white" data-astro-cid-fqw42ge2>Company</h5> <a href="/about" class="footer-nav-link" data-astro-cid-fqw42ge2> About us </a><a href="/careers" class="footer-nav-link" data-astro-cid-fqw42ge2> Careers </a><a href="#" class="footer-nav-link" data-astro-cid-fqw42ge2> Contact </a><a href="/customers" class="footer-nav-link" data-astro-cid-fqw42ge2> Customers </a><a href="https://trust.snitcher.com" class="footer-nav-link" target="_blank" rel="noopener noreferrer" data-astro-cid-fqw42ge2> Trust centre </a> </div> </div> </div> </div> <!-- Bottom Row: Copyright and Links --> <div class="flex items-center justify-between pt-0" data-astro-cid-fqw42ge2> <p class="text-sm text-zinc-400" data-astro-cid-fqw42ge2>
2653&copy; 2026 Snitcher. All rights reserved.
2654</p> <div class="flex gap-4 items-center" data-astro-cid-fqw42ge2> <a href="/privacy-policy" class="footer-bottom-link" data-astro-cid-fqw42ge2>Privacy Policy</a><a href="/terms-conditions" class="footer-bottom-link" data-astro-cid-fqw42ge2>Terms &amp; Conditions</a><a href="/cookie-policy" class="footer-bottom-link" data-astro-cid-fqw42ge2>Cookie Policy</a> </div> </div> </div> </div> </footer>   <!-- Footer Scripts --> <!-- Showdown (Markdown converter - may be needed for dynamic content) -->
2654<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/2.1.0/showdown.min.js" async></script>
2654 <!-- 
2655  UTM Parameter Persistence is now handled by the AttributionProvider component.
2656  See: src/components/components/AttributionProvider.astro
2657  See: src/lib/attribution.ts
2658  
2659  The AttributionProvider captures UTM params, stores them, and updates
2660  all app.snitcher.com links automatically.
2661--><!-- Intercom Chat Triggers (event delegation — survives View Transitions) -->
2661<script>
2662if (!window.__intercomChatTriggersAdded) {
2663  window.__intercomChatTriggersAdded = true;
2664  document.addEventListener('click', function(e) {
2665    var target = e.target.closest('#start-chat, #start-whitelabel-chat');
2666    if (!target) return;
2667    if (typeof Intercom === 'undefined') return;
2668
2669    if (target.id === 'start-chat') {
2670      Intercom('showNewMessage');
2671    } else if (target.id === 'start-whitelabel-chat') {
2672      Intercom('showNewMessage', 'Can you tell me more about your whitelabel programme?');
2673    }
2674  });
2675}
2676</script>
2676 <!-- 
2677  Currency Localization is now handled by the CurrencyProvider component.
2678  See: src/components/components/CurrencyProvider.astro
2679  
2680  The CurrencyProvider also maintains backward compatibility with 
2681  .swap-currency and .swap-currency-2 classes for legacy elements.
2682--> <!-- Attribution & Currency -->   <!-- Event Tracking --> 
2682<script>
2683(function() {
2684  window.dataLayer = window.dataLayer || [];
2685
2686  // --- Page metadata ---
2687  function pushPageMetadata() {
2688    var path = window.location.pathname;
2689    var pageType = 'page';
2690    if (path === '/') pageType = 'homepage';
2691    else if (path.startsWith('/blog')) pageType = 'blog';
2692    else if (path.startsWith('/customers')) pageType = 'case-study';
2693    else if (path.startsWith('/partners')) pageType = 'partner';
2694    else if (path.startsWith('/solutions')) pageType = 'solution';
2695    else if (path.startsWith('/features')) pageType = 'feature';
2696    else if (path.startsWith('/use-cases')) pageType = 'use-case';
2697    else if (path.startsWith('/pricing')) pageType = 'pricing';
2698    else if (path.startsWith('/demo')) pageType = 'demo';
2699    else if (path.startsWith('/integrations')) pageType = 'integration';
2700    else if (path.startsWith('/privacy') || path.startsWith('/terms') || path.startsWith('/legal')) pageType = 'legal';
2701
2702    // dataLayer-only: Radar's native pageview already covers page context.
2703    window.dataLayer.push({
2704      event: 'page_context',
2705      page_type: pageType,
2706      page_path: path,
2707      page_title: document.title
2708    });
2709  }
2710
2711  // --- CTA click tracking ---
2712  function trackCTAClicks() {
2713    document.addEventListener('click', function(e) {
2714      var link = e.target.closest('a[href]');
2715      if (!link) return;
2716
2717      var href = link.getAttribute('href') || '';
2718      var text = (link.textContent || '').trim().substring(0, 100);
2719      var classes = link.className || '';
2720
2721      // Track clicks to app.snitcher.com (signup/login CTAs)
2722      if (href.indexOf('app.snitcher.com') !== -1) {
2723        window.snitcherTrack('cta_clicked', {
2724          cta_text: text,
2725          cta_url: href,
2726          cta_location: getLinkLocation(link),
2727          cta_type: 'app_link'
2728        });
2729        return;
2730      }
2731
2732      // Track clicks on button-styled elements (primary CTAs)
2733      if (classes.indexOf('btn') !== -1 || classes.indexOf('button') !== -1 ||
2734          link.querySelector('button') || link.getAttribute('role') === 'button') {
2735        window.snitcherTrack('cta_clicked', {
2736          cta_text: text,
2737          cta_url: href,
2738          cta_location: getLinkLocation(link),
2739          cta_type: 'button'
2740        });
2741        return;
2742      }
2743
2744      // Track demo page links
2745      if (href.indexOf('/demo') !== -1) {
2746        window.snitcherTrack('cta_clicked', {
2747          cta_text: text,
2748          cta_url: href,
2749          cta_location: getLinkLocation(link),
2750          cta_type: 'demo_request'
2751        });
2752      }
2753    });
2754  }
2755
2756  // --- Intercom chat tracking ---
2757  function trackIntercomOpens() {
2758    var chatButtons = document.querySelectorAll('#start-chat, #start-whitelabel-chat');
2759    chatButtons.forEach(function(btn) {
2760      if (btn.hasAttribute('data-track-bound')) return;
2761      btn.setAttribute('data-track-bound', 'true');
2762      btn.addEventListener('click', function() {
2763        window.snitcherTrack('intercom_chat_opened', {
2764          chat_trigger: btn.id
2765        });
2766      });
2767    });
2768  }
2769
2770  // --- HubSpot form submission tracking (iframe embeds) ---
2771  // Radar's native formTracking can't see inside HubSpot iframes; this
2772  // postMessage hook is the only signal for those, and the submitted email
2773  // de-anonymizes the visitor's whole session via identify().
2774  function trackHubSpotForms() {
2775    window.addEventListener('message', function(event) {
2776      if (event.data && event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmitted') {
2777        window.snitcherTrack('hubspot_form_submitted', {
2778          form_id: event.data.id || 'unknown'
2779        });
2780
2781        try {
2782          var values = event.data.data && event.data.data.submissionValues;
2783          var email = values && values.email;
2784          if (email && email.indexOf('@') !== -1 &&
2785              window.Snitcher && typeof window.Snitcher.identify === 'function') {
2786            window.Snitcher.identify(email);
2787          }
2788        } catch (err) { /* ignore */ }
2789      }
2790    });
2791  }
2792
2793  // --- Identify visitors we already know by email (personalized links) ---
2794  // PersonalizationCapture stores the email from outbound-campaign URLs;
2795  // pass it to Radar once per session so the whole visit is de-anonymized.
2796  function identifyFromPersonalization() {
2797    try {
2798      var api = window.SnitcherPersonalization;
2799      var data = api && api.get && api.get();
2800      var email = data && data.email;
2801      if (!email || email.indexOf('@') === -1) return;
2802
2803      var key = 'snitcher_identified_' + email.toLowerCase();
2804      if (sessionStorage.getItem(key)) return;
2805      if (window.Snitcher && typeof window.Snitcher.identify === 'function') {
2806        window.Snitcher.identify(email);
2807        sessionStorage.setItem(key, '1');
2808      }
2809    } catch (err) { /* ignore */ }
2810  }
2811
2812  // --- Persist attribution + geo as Radar visitor traits ---
2813  // Radar has no client-side UTM breakout; register() stores traits on the
2814  // visitor without emitting an event, so every later event carries them.
2815  function registerVisitorTraits() {
2816    function pushAttributionTraits(attribution) {
2817      try {
2818        if (attribution && Object.keys(attribution).length > 0 &&
2819            window.Snitcher && typeof window.Snitcher.register === 'function') {
2820          window.Snitcher.register(attribution);
2821        }
2822      } catch (err) { /* ignore */ }
2823    }
2824
2825    // AttributionProvider may have dispatched attributionReady before this
2826    // inline script's init ran — read the current state directly, then keep
2827    // listening for later captures (view-transition navigations).
2828    try {
2829      var api = window.SnitcherAttribution;
2830      if (api && typeof api.get === 'function') {
2831        pushAttributionTraits(api.get());
2832      }
2833    } catch (err) { /* ignore */ }
2834
2835    window.addEventListener('attributionReady', function(e) {
2836      pushAttributionTraits(e.detail || {});
2837    });
2838
2839    try {
2840      var currency = window.SnitcherCurrency;
2841      if (currency && typeof currency.onCountryReady === 'function') {
2842        currency.onCountryReady(function(geo) {
2843          try {
2844            if (geo && window.Snitcher && typeof window.Snitcher.register === 'function') {
2845              window.Snitcher.register({
2846                country_code: geo.countryCode || null,
2847                region: geo.region || null,
2848                is_eu: Boolean(geo.isEu)
2849              });
2850            }
2851          } catch (err) { /* ignore */ }
2852        });
2853      }
2854    } catch (err) { /* ignore */ }
2855  }
2856
2857  // --- Tab / filter interactions (Tabs.astro dispatches bubbling 'tabchange') ---
2858  function trackTabChanges() {
2859    document.addEventListener('tabchange', function(e) {
2860      var el = e.target;
2861      var elId = (el && el.id) || '';
2862      // PricingSection emits its own richer pricing_billing_toggled event.
2863      if (elId === 'billing-tabs') return;
2864      window.snitcherTrack('tab_filter_changed', {
2865        tab_id: (e.detail && e.detail.tabId) || '',
2866        tabs_element: elId,
2867        page_path: window.location.pathname
2868      });
2869    });
2870  }
2871
2872  // --- Integration detail views ---
2873  // The detail page stamps [data-track-integration] with name/category/status
2874  // so coming-soon and beta interest is measurable per integration.
2875  function trackIntegrationView() {
2876    var el = document.querySelector('[data-track-integration]');
2877    if (!el) return;
2878    window.snitcherTrack('integration_viewed', {
2879      integration: el.getAttribute('data-integration-name') || '',
2880      category: el.getAttribute('data-integration-category') || '',
2881      status: el.getAttribute('data-integration-status') || 'stable',
2882      page_path: window.location.pathname
2883    });
2884  }
2885
2886  // --- Journey story pages: which sections actually get seen ---
2887  // Active time on page is native to Radar, but where the scroll story
2888  // loses people isn't. Fires once per section per pageview when the
2889  // section crosses the middle band of the viewport.
2890  var JOURNEY_PATHS = ['/identify', '/measure', '/engage', '/signal', '/automate'];
2891
2892  function trackJourneySections() {
2893    var path = window.location.pathname.replace(/\/$/, '');
2894    if (JOURNEY_PATHS.indexOf(path) === -1) return;
2895    if (!('IntersectionObserver' in window)) return;
2896
2897    var sections = document.querySelectorAll('section.page-section');
2898    if (!sections.length) return;
2899
2900    var observer = new IntersectionObserver(function(entries) {
2901      entries.forEach(function(entry) {
2902        if (!entry.isIntersecting) return;
2903        var el = entry.target;
2904        observer.unobserve(el);
2905        var heading = el.querySelector('h1, h2, h3');
2906        window.snitcherTrack('journey_section_viewed', {
2907          page_path: path,
2908          section_index: parseInt(el.getAttribute('data-journey-index') || '0', 10),
2909          section_title: heading ? (heading.textContent || '').trim().substring(0, 80) : ''
2910        });
2911      });
2912    }, { rootMargin: '-30% 0px -30% 0px', threshold: 0 });
2913
2914    sections.forEach(function(el, i) {
2915      el.setAttribute('data-journey-index', String(i));
2916      observer.observe(el);
2917    });
2918  }
2919
2920  // --- Article read depth (blog posts + customer stories) ---
2921  // Radar has no scroll-depth signal; active time alone can't tell
2922  // "finished the article" from "left the tab open".
2923  var articleRead = { path: null, article: null, fired: {} };
2924  var ARTICLE_MILESTONES = [50, 90];
2925
2926  function resetArticleRead() {
2927    articleRead.path = window.location.pathname;
2928    articleRead.fired = {};
2929    articleRead.article = null;
2930    var path = articleRead.path;
2931    if (/^\/(blog|customers)\/.+/.test(path)) {
2932      articleRead.article = document.querySelector('article.editorial-prose');
2933    }
2934  }
2935
2936  function trackArticleReadDepth() {
2937    var rafPending = false;
2938    window.addEventListener('scroll', function() {
2939      if (!articleRead.article || rafPending) return;
2940      rafPending = true;
2941      requestAnimationFrame(function() {
2942        rafPending = false;
2943        var article = articleRead.article;
2944        if (!article || !document.contains(article)) return;
2945        var rect = article.getBoundingClientRect();
2946        var articleTop = rect.top + window.scrollY;
2947        var readPx = window.scrollY + window.innerHeight - articleTop;
2948        var progress = Math.min(100, Math.round((readPx / article.offsetHeight) * 100));
2949
2950        ARTICLE_MILESTONES.forEach(function(milestone) {
2951          if (progress >= milestone && !articleRead.fired[milestone]) {
2952            articleRead.fired[milestone] = true;
2953            window.snitcherTrack('article_read', {
2954              milestone: milestone,
2955              page_path: articleRead.path
2956            });
2957          }
2958        });
2959      });
2960    }, { passive: true });
2961  }
2962
2963  // --- Helper: determine link location on page ---
2964  function getLinkLocation(el) {
2965    var nav = el.closest('nav, [role="navigation"]');
2966    if (nav) return 'navbar';
2967    var footer = el.closest('footer');
2968    if (footer) return 'footer';
2969    var hero = el.closest('[class*="hero"], section:first-of-type');
2970    if (hero) return 'hero';
2971    return 'body';
2972  }
2973
2974  // Initialize on DOMContentLoaded
2975  if (document.readyState === 'loading') {
2976    document.addEventListener('DOMContentLoaded', init);
2977  } else {
2978    init();
2979  }
2980
2981  function init() {
2982    pushPageMetadata();
2983    trackCTAClicks();
2984    trackIntercomOpens();
2985    trackHubSpotForms();
2986    trackTabChanges();
2987    trackArticleReadDepth();
2988    registerVisitorTraits();
2989    // Per-page trackers (re-run on view transitions below)
2990    identifyFromPersonalization();
2991    trackIntegrationView();
2992    trackJourneySections();
2993    resetArticleRead();
2994  }
2995
2996  // --- Re-init on Astro View Transitions (client-side navigation) ---
2997  // `astro:page-load` fires on both initial load AND subsequent navigations.
2998  // We skip the first fire to avoid double-tracking (inline scripts already ran).
2999  var isInitialLoad = true;
3000
3001  document.addEventListener('astro:page-load', function() {
3002    if (isInitialLoad) {
3003      isInitialLoad = false;
3004      return;
3005    }
3006
3007    // Re-push page metadata to dataLayer
3008    pushPageMetadata();
3009    trackIntercomOpens();
3010
3011    // Per-page trackers for the newly swapped-in page
3012    identifyFromPersonalization();
3013    trackIntegrationView();
3014    trackJourneySections();
3015    resetArticleRead();
3016
3017    // Push virtual pageview for GTM (triggers GTM tags including Intercom)
3018    window.dataLayer.push({
3019      event: 'virtualPageview',
3020      page_path: window.location.pathname,
3021      page_title: document.title
3022    });
3023
3024    // Re-trigger Segment page tracking
3025    if (window.analytics && typeof window.analytics.page === 'function') {
3026      window.analytics.page();
3027    }
3028
3029    // Re-trigger Meta Pixel pageview
3030    if (typeof window.fbq === 'function') {
3031      window.fbq('track', 'PageView');
3032    }
3033
3034    // Re-trigger Snitcher Radar page tracking
3035    if (window.Snitcher && typeof window.Snitcher.page === 'function') {
3036      window.Snitcher.page();
3037    }
3038
3039    // Re-render Intercom widget (its DOM is destroyed by the body swap,
3040    // but the JS singleton on window survives — 'update' triggers a fresh render)
3041    if (typeof window.Intercom === 'function') {
3042      window.Intercom('update');
3043    }
3044  });
3045})();
3046</script>
3046 </body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.