PageSourceSearch

https://z2-homepage.pages.dev/about

html z2-homepage.pages.dev collected 2026-10-03 06:01:42 UTC 108,987 bytes, 685 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="theme-color" content="#8CC04F"><title>About Z2 | Z2Data</title><meta name="description" content="Z2 offers intelligent business data, integrated software solutions, analytics tools and professional services, all leading to proactive decisions that avoid disruptions to the enterprise."><link rel="canonical" href="https://www.z2data.com/about/"><link rel="alternate" hreflang="en" href="https://www.z2data.com/about/"><link rel="alternate" hreflang="ja" href="https://www.z2data.com/ja/about/"><link rel="alternate" hreflang="de" href="https://www.z2data.com/de/about/"><link rel="alternate" hreflang="it" href="https://www.z2data.com/it/about/"><link rel="alternate" hreflang="pl" href="https://www.z2data.com/pl/about/"><link rel="alternate" hreflang="fr" href="https://www.z2data.com/fr/about/"><link rel="alternate" hreflang="ko" href="https://www.z2data.com/ko/about/"><link rel="alternate" hreflang="es" href="https://www.z2data.com/es/about/"><link rel="alternate" hreflang="pt" href="https://www.z2data.com/pt/about/"><link rel="alternate" hreflang="pt-BR" href="https://www.z2data.com/pt-br/about/"><link rel="alternate" hreflang="tr" href="https://www.z2data.com/tr/about/"><link rel="alternate" hreflang="th" href="https://www.z2data.com/th/about/"><link rel="alternate" hreflang="nl" href="https://www.z2data.com/nl/about/"><link rel="alternate" hreflang="vi" href="https://www.z2data.com/vi/about/"><link rel="alternate" hreflang="x-default" href="https://www.z2data.com/about/"><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><meta property="og:type" content="website"><meta property="og:url" content="https://www.z2data.com/about/"><meta property="og:title" content="About Z2 | Z2Data"><meta property="og:description" content="Z2 offers intelligent business data, integrated software solutions, analytics tools and professional services, all leading to proactive decisions that avoid disruptions to the enterprise."><meta property="og:image" content="https://z2-homepage.pages.dev/og/card.png?title=Supply+chain+intelligence%0Afor+complex+manufacturers&logo=hero&motif=pixels&textw=560&v=2"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:site_name" content="Z2Data"><meta property="og:locale" content="en_US"><meta property="og:locale:alternate" content="ja_JP"><meta property="og:locale:alternate" content="de_DE"><meta property="og:locale:alternate" content="it_IT"><meta property="og:locale:alternate" content="pl_PL"><meta property="og:locale:alternate" content="fr_FR"><meta property="og:locale:alternate" content="ko_KR"><meta property="og:locale:alternate" content="es_ES"><meta property="og:locale:alternate" content="pt_PT"><meta property="og:locale:alternate" content="pt_BR"><meta property="og:locale:alternate" content="tr_TR"><meta property="og:locale:alternate" content="th_TH"><meta property="og:locale:alternate" content="nl_NL"><meta property="og:locale:alternate" content="vi_VN"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@z2data"><meta name="twitter:title" content="About Z2 | Z2Data"><meta name="twitter:description" content="Z2 offers intelligent business data, integrated software solutions, analytics tools and professional services, all leading to proactive decisions that avoid disruptions to the enterprise."><meta name="twitter:image" content="https://z2-homepage.pages.dev/og/card.png?title=Supply+chain+intelligence%0Afor+complex+manufacturers&logo=hero&motif=pixels&textw=560&v=2">
1<script type="application/ld+json">[{"@context":"https://schema.org","@type":"Organization","@id":"https://www.z2data.com/#organization","name":"Z2Data","legalName":"Z2Data, Inc.","alternateName":"Z2","url":"https://www.z2data.com","logo":{"@type":"ImageObject","url":"https://www.z2data.com/brand/01-Logos/02-Digital/Positive/Z2_Logo_POS_RGB.svg"},"description":"Supply chain risk management and component intelligence platform for electronics manufacturers.","foundingDate":"2016","numberOfEmployees":{"@type":"QuantitativeValue","value":50},"knowsAbout":["Supply chain risk management","Electronic component intelligence","Component obsolescence and lifecycle management","Regulatory compliance (RoHS, REACH, PFAS, conflict minerals)","Geopolitical supply chain risk","Sub-tier supplier intelligence"],"sameAs":["https://www.linkedin.com/company/z2data","https://twitter.com/z2data","https://www.youtube.com/@z2data","https://www.crunchbase.com/organization/z2data","https://www.g2.com/products/z2data/reviews"],"contactPoint":[{"@type":"ContactPoint","contactType":"sales","email":"[email protected]","telephone":"+1-866-923-2821","url":"https://www.z2data.com/contact","areaServed":"Worldwide","availableLanguage":"English"},{"@type":"ContactPoint","contactType":"customer support","email":"[email protected]","url":"https://www.z2data.com/contact"}],"address":{"@type":"PostalAddress","streetAddress":"3080 Olcott Street, Suite A115","addressLocality":"Santa Clara","addressRegion":"CA","postalCode":"95054","addressCountry":"US"}},{"@context":"https://schema.org","@type":"WebSite","@id":"https://www.z2data.com/#website","url":"https://www.z2data.com","name":"Z2Data","inLanguage":"en","publisher":{"@id":"https://www.z2data.com/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.z2data.com/search?q={search_term_string}"},"query-input":"required name=search_term_string"}},{"@context":"https://schema.org","@type":"AboutPage","@id":"https://www.z2data.com/about/#webpage","url":"https://www.z2data.com/about/","name":"About Z2","description":"Z2 offers intelligent business data, integrated software solutions, analytics tools and professional services, all leading to proactive decisions that avoid disruptions to the enterprise.","isPartOf":{"@id":"https://www.z2data.com/#website"},"mainEntity":{"@id":"https://www.z2data.com/#organization"},"breadcrumb":{"@id":"https://www.z2data.com/about/#breadcrumb"}},{"@context":"https://schema.org","@type":"BreadcrumbList","@id":"https://www.z2data.com/about/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.z2data.com/"},{"@type":"ListItem","position":2,"name":"About","item":"https://www.z2data.com/about/"}]}]</script>
1<link rel="preload" href="/fonts/geist-latin.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/fonts/GT-Alpina-Standard-Regular.woff2" as="font" type="font/woff2" crossorigin><link rel="stylesheet" href="/fonts/z2icons.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="/fonts/z2icons.css"></noscript><link rel="preconnect" href="https://a.storyblok.com"><link rel="icon" type="image/png" sizes="32x32" href="/brand/05-Favicon/32x32/Z2_Favicon_32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/brand/05-Favicon/16x16/Z2_Favicon_16x16.png"><link rel="apple-touch-icon" sizes="180x180" href="/brand/05-Favicon/180x180/Z2_Favicon_180x180.png"><link rel="manifest" href="/site.webmanifest">
1<script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.C8ApF7f2.js"></script>
1<link rel="stylesheet" href="/_astro/_slug_.XaEZdCIz.css">
2<style>.demo-cta-form[data-astro-cid-4f3t23wn]{width:100%;max-width:36rem;margin-inline:auto;flex:1 1 auto}.form-pill[data-astro-cid-4f3t23wn]{display:flex;align-items:center;background:#fff;border:2px solid;border-radius:9999px;padding:.375rem;overflow:hidden}.demo-email-input[data-astro-cid-4f3t23wn]{flex:1;min-width:0;padding:.75rem 1.25rem;font-family:Inter,DM Sans,sans-serif;font-size:.9375rem;background:transparent;border:none;outline:none}.demo-email-input[data-astro-cid-4f3t23wn]::-moz-placeholder{color:#231c13a6}.demo-email-input[data-astro-cid-4f3t23wn]::placeholder{color:#231c13a6}.demo-email-input[data-astro-cid-4f3t23wn]:focus{outline:none;box-shadow:none}.form-pill[data-astro-cid-4f3t23wn]:focus-within{outline:none}.demo-cta-btn[data-astro-cid-4f3t23wn]{flex-shrink:0;padding:.75rem 1.625rem;font-family:Inter,DM Sans,sans-serif;font-size:.9375rem;font-weight:600;border:none;border-radius:9999px;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}.demo-cta-btn[data-astro-cid-4f3t23wn]:hover{background:var(--color-sand-800)}.demo-cta-btn--lime[data-astro-cid-4f3t23wn]{border:2px solid var(--color-primary-deep)}.demo-cta-btn--lime[data-astro-cid-4f3t23wn]:hover{background:var(--color-primary-deep);color:var(--color-sand-100)}.demo-cta-err[data-astro-cid-4f3t23wn]{margin:.4rem 0 0 1.25rem}@media(max-width:560px){.form-pill[data-astro-cid-4f3t23wn]{flex-direction:column;border-radius:1.25rem;padding:.5rem;gap:.5rem}.demo-email-input[data-astro-cid-4f3t23wn]{width:100%;padding:.75rem 1rem}.demo-cta-btn[data-astro-cid-4f3t23wn]{width:100%;text-align:center}}
3.demo-cta-section[data-astro-cid-sxk4qlxd]{position:relative;padding-top:5rem;padding-bottom:7rem;overflow:hidden}.corner[data-astro-cid-sxk4qlxd]{position:absolute;width:10px;height:10px}.corner-tl[data-astro-cid-sxk4qlxd]{top:1.5rem;left:1.5rem}.corner-tr[data-astro-cid-sxk4qlxd]{top:1.5rem;right:1.5rem}.corner-bl[data-astro-cid-sxk4qlxd]{bottom:1.5rem;left:1.5rem}.corner-br[data-astro-cid-sxk4qlxd]{bottom:1.5rem;right:1.5rem}.demo-cta-inner[data-astro-cid-sxk4qlxd]{max-width:var(--max-width-container);margin:0 auto;padding-inline:2rem;text-align:center}.eyebrow[data-astro-cid-sxk4qlxd]{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:2.5rem}.eyebrow-rule[data-astro-cid-sxk4qlxd]{display:block;width:2.5rem;height:1px}.eyebrow-label[data-astro-cid-sxk4qlxd]{font-family:Inter,DM Sans,sans-serif;font-size:.6875rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase}.demo-cta-headline[data-astro-cid-sxk4qlxd]{font-family:var(--font-heading);font-size:clamp(2.75rem,6vw,5.5rem);font-weight:400;line-height:1.05;letter-spacing:-.02em;margin:0 auto 3rem;max-width:18ch}.demo-cta-headline[data-astro-cid-sxk4qlxd] em[data-astro-cid-sxk4qlxd]{font-style:italic}@media(max-width:900px){.demo-cta-section[data-astro-cid-sxk4qlxd]{padding-top:4rem;padding-bottom:3.5rem}.demo-cta-inner[data-astro-cid-sxk4qlxd]{padding-inline:1.5rem}}.demo-cta-section[data-astro-cid-sxk4qlxd] [data-astro-cid-sxk4qlxd]::-moz-selection{background-color:var(--color-sand-900);color:var(--color-signal-400)}.demo-cta-section[data-astro-cid-sxk4qlxd] [data-astro-cid-sxk4qlxd]::selection{background-color:var(--color-sand-900);color:var(--color-signal-400)}@media(max-width:560px){.demo-cta-section[data-astro-cid-sxk4qlxd]{padding-top:3.5rem;padding-bottom:3rem}.demo-cta-inner[data-astro-cid-sxk4qlxd]{padding-inline:1rem}}
4</style>
5<link rel="stylesheet" href="/_astro/about.DgPuCZAo.css">
6<link rel="stylesheet" href="/_astro/_slug_.CaTaghe6.css">
6<script type="module" src="/_astro/page.DZZVrAzF.js"></script>
6</head> <body>  
6<script>(function(){const LOCALES = ["en","ja","de","it","pl","fr","ko","es","pt","pt-br","tr","th","nl","vi"];
7const NON_DEFAULT = ["ja","de","it","pl","fr","ko","es","pt","pt-br","tr","th","nl","vi"];
8const DEFAULT_LOCALE = "en";
9const AVAILABLE = ["ja","de","it","pl","fr","ko","es","pt","pt-br","tr","th","nl","vi"];
10const COPY = {"ja":{"prompt":"このページを次の言語で表示","view":"表示","dismiss":"閉じる","label":"日本語"},"de":{"prompt":"Diese Seite anzeigen auf","view":"Anzeigen","dismiss":"Schließen","label":"Deutsch"},"it":{"prompt":"Visualizza questa pagina in","view":"Visualizza","dismiss":"Chiudi","label":"Italiano"},"pl":{"prompt":"Wyświetl tę stronę w","view":"Wyświetl","dismiss":"Zamknij","label":"Polski"},"fr":{"prompt":"Afficher cette page en","view":"Afficher","dismiss":"Fermer","label":"Français"},"ko":{"prompt":"이 페이지를 다음 언어로 보기","view":"보기","dismiss":"닫기","label":"한국어"},"es":{"prompt":"Ver esta página en","view":"Ver","dismiss":"Descartar","label":"Español"},"pt":{"prompt":"Ver esta página em","view":"Ver","dismiss":"Dispensar","label":"Português (Portugal)"},"pt-br":{"prompt":"Veja esta página em","view":"Ver","dismiss":"Fechar","label":"Português (Brasil)"},"tr":{"prompt":"Bu sayfayı görüntüleyin","view":"Görüntüle","dismiss":"Kapat","label":"Türkçe"},"th":{"prompt":"ดูหน้านี้ใน","view":"ดู","dismiss":"ปิด","label":"ไทย"},"nl":{"prompt":"Bekijk deze pagina in","view":"Bekijken","dismiss":"Sluiten","label":"Nederlands"},"vi":{"prompt":"Xem trang này bằng","view":"Xem","dismiss":"Đóng","label":"Tiếng Việt"}};
11
12  (function () {
13    try {
14      // Never act for automation/crawlers we can detect.
15      if (navigator.webdriver) return;
16      var langs = navigator.languages && navigator.languages.length ? navigator.languages : [navigator.language];
17      if (!langs || !langs.length) return;
18
19      function readCookie(n) {
20        var m = document.cookie.match('(^|;)\\s*' + n + '\\s*=\\s*([^;]+)');
21        return m ? m[2] : null;
22      }
23      function setCookie(n, v) {
24        document.cookie = n + '=' + v + ';path=/;max-age=31536000;samesite=lax';
25      }
26
27      // Match the full tag first, then fall back to the base language — a bare
28      // slice(0,2) breaks region-qualified locales in both directions.
29      var current = (document.documentElement.lang || 'en').toLowerCase();
30      if (LOCALES.indexOf(current) < 0) current = current.split('-')[0];
31      var path = location.pathname;
32      var hasPrefix = NON_DEFAULT.some(function (l) {
33        return path === '/' + l || path.indexOf('/' + l + '/') === 0;
34      });
35
36      // First supported locale among the browser's ordered preferences. Prefer an
37      // exact region match (pt-BR → pt-br) over the base language (pt-BR → pt).
38      var preferred = null;
39      for (var i = 0; i < langs.length; i++) {
40        var full = (langs[i] || '').toLowerCase();
41        if (LOCALES.indexOf(full) >= 0) { preferred = full; break; }
42        var base = full.split('-')[0];
43        if (LOCALES.indexOf(base) >= 0) { preferred = base; break; }
44      }
45
46      var cookie = readCookie('pref_lang');
47      var chosen = cookie && LOCALES.indexOf(cookie) >= 0 ? cookie : null;
48      var desired = chosen || preferred;
49      if (!desired) return;
50
51      if (!hasPrefix) {
52        // On an English URL: redirect to the desired locale only if THIS page is
53        // actually translated into it (else the /ja/ URL is just English anyway).
54        if (desired !== DEFAULT_LOCALE && AVAILABLE.indexOf(desired) >= 0) {
55          if (!chosen) setCookie('pref_lang', desired);
56          location.replace('/' + desired + path + location.search + location.hash);
57          return;
58        }
59        return;
60      }
61
62      // On a localized URL: if the browser prefers a DIFFERENT language that this
63      // page is genuinely translated into, and the user hasn't settled on the
64      // current one, offer a banner.
65      if (preferred && preferred !== current && chosen !== current && AVAILABLE.indexOf(preferred) >= 0) {
66        showBanner(preferred);
67      }
68
69      function showBanner(loc) {
70        if (document.getElementById('z2-lang-banner')) return;
71        var c = COPY[loc];
72        if (!c) return;
73        var rest = path.replace(new RegExp('^/' + current + '(?=/|$)'), '') || '/';
74        var href = '/' + loc + (rest === '/' ? '' : rest) + location.search + location.hash;
75
76        var bar = document.createElement('div');
77        bar.id = 'z2-lang-banner';
78        bar.setAttribute('role', 'region');
79        bar.setAttribute('aria-label', c.label);
80        bar.style.cssText =
81          'position:fixed;left:50%;transform:translateX(-50%);bottom:16px;z-index:9998;' +
82          'background:#231C13;color:#fff;border-radius:9999px;padding:10px 16px;display:flex;' +
83          'align-items:center;gap:14px;font:14px/1.2 system-ui,-apple-system,sans-serif;' +
84          'box-shadow:0 8px 24px rgba(0,0,0,.25);max-width:92vw';
85
86        var span = document.createElement('span');
87        span.textContent = c.prompt + ' ' + c.label + '?';
88
89        var view = document.createElement('a');
90        view.href = href;
91        view.textContent = c.view;
92        view.style.cssText =
93          'color:#231C13;background:#8CC04F;border-radius:9999px;padding:6px 14px;' +
94          'text-decoration:none;font-weight:600;white-space:nowrap';
95        view.addEventListener('click', function () { setCookie('pref_lang', loc); });
96
97        var x = document.createElement('button');
98        x.type = 'button';
99        x.setAttribute('aria-label', c.dismiss);
100        x.textContent = '✕';
101        x.style.cssText = 'background:none;border:0;color:rgba(255,255,255,.6);cursor:pointer;font-size:14px;line-height:1';
102        x.addEventListener('click', function () { setCookie('pref_lang', current); bar.remove(); });
103
104        bar.appendChild(span);
105        bar.appendChild(view);
106        bar.appendChild(x);
107        document.body.appendChild(bar);
108      }
109    } catch (e) {}
110  })();
111})();</script>
111  
111<script>(function(){const NDL = ["ja","de","it","pl","fr","ko","es","pt","pt-br","tr","th","nl","vi"];
112
113    (function () {
114      var seg = location.pathname.split('/')[1];
115      if (NDL.indexOf(seg) === -1) return;
116      var p = '/' + seg;
117      function hasLocalePrefix(h) {
118        for (var k = 0; k < NDL.length; k++) {
119          var q = '/' + NDL[k];
120          if (h === q || h.indexOf(q + '/') === 0) return true;
121        }
122        return false;
123      }
124      function fix(root) {
125        var links = (root || document).querySelectorAll('a[href^="/"]');
126        for (var i = 0; i < links.length; i++) {
127          var a = links[i], h = a.getAttribute('href');
128          if (!h || h.charAt(0) !== '/' || h.indexOf('//') === 0) continue;
129          if (hasLocalePrefix(h)) continue;                              // already localized
130          if (h.indexOf('/api/') === 0 || h.indexOf('/og/') === 0) continue;
131          if (a.hasAttribute('hreflang') || a.hasAttribute('data-no-localize')) continue;
132          a.setAttribute('href', p + h);
133        }
134      }
135      function run() { fix(document); }
136      if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', run);
137      else run();
138      // Re-run if components inject links after load (mega-menus, carousels).
139      try { new MutationObserver(function (m) { for (var i = 0; i < m.length; i++) for (var j = 0; j < m[i].addedNodes.length; j++) { var n = m[i].addedNodes[j]; if (n.nodeType === 1) fix(n.querySelectorAll ? n : document); } }).observe(document.body, { childList: true, subtree: true }); } catch (e) {}
140    })();
141  })();</script>
vendor: 70 bytes, line 141
141  <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=
141GTM-TFT483R
vendor: 85 bytes, line 141
141" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript>  
141<style>iframe[src*="hs-web-interactive"],iframe[src*="hs-sites.com"]{display:none!important}</style> 
141<script>
142    (function () {
143      function overlayOf(ifr) {
144        // Walk up to the outermost positioned container HubSpot injects (its
145        // backdrop), staying inside HubSpot's own appended subtree, and drop it
146        // so no ghost overlay blocks clicks. Falls back to the iframe itself.
147        var el = ifr, top = ifr;
148        for (var i = 0; i < 6 && el && el !== document.body; i++) {
149          var pos = getComputedStyle(el).position;
150          if (pos === 'fixed' || pos === 'absolute') top = el;
151          el = el.parentElement;
152        }
153        return top || ifr;
154      }
155      function sweep(node) {
156        if (!(node instanceof HTMLElement)) return;
157        var sel = 'iframe[src*="hs-web-interactive"],iframe[src*="hs-sites.com"]';
158        var ifr = node.matches && node.matches(sel) ? node : (node.querySelector && node.querySelector(sel));
159        if (ifr) overlayOf(ifr).remove();
160      }
161      // Belt-and-suspenders: also close via HubSpot's supported CTA SDK.
162      window.hsCallsToActionReady = window.hsCallsToActionReady || [];
163      window.hsCallsToActionReady.push(function () {
164        try { window.HubSpotCallsToActions.closeAll(); } catch (e) {}
165      });
166      new MutationObserver(function (muts) {
167        for (var m = 0; m < muts.length; m++) {
168          for (var n = 0; n < muts[m].addedNodes.length; n++) sweep(muts[m].addedNodes[n]);
169        }
170      }).observe(document.documentElement, { childList: true, subtree: true });
171    })();
172  </script>
172   <header id="site-header" class="z-50 bg-sand-100 transition-colors duration-200 relative" data-astro-cid-hnhh3bfe> <div class="container relative" data-astro-cid-hnhh3bfe> <div id="header-inner" class="flex items-center justify-between h-20 relative z-[2]" data-astro-cid-hnhh3bfe>  <div class="flex items-center gap-8" data-astro-cid-hnhh3bfe>  <a href="/" id="header-logo" class="flex items-center flex-shrink-0" aria-label="Z2 home" data-astro-cid-hnhh3bfe> <img src="/brand/01-Logos/02-Digital/Positive/Z2_Logo_POS_RGB_trimmed.svg" alt="Z2" width="80" height="32" class="h-8 w-auto" data-astro-cid-hnhh3bfe> </a>      <nav id="main-nav" class="hidden lg:flex items-center gap-1" aria-label="Main navigation" data-astro-cid-hnhh3bfe>  <button id="btn-products" aria-expanded="false" aria-controls="mega-products" class="mega-trigger flex items-center gap-1.5 whitespace-nowrap px-4 py-2 text-base font-medium text-sand-800 hover:text-sand-900 transition-colors duration-150" data-menu="products" data-astro-cid-hnhh3bfe> Products <svg id="chevron-products" class="w-3.5 h-3.5 opacity-50 transition-transform duration-200" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" data-astro-cid-hnhh3bfe> <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" data-astro-cid-hnhh3bfe></path> </svg> </button>  <button id="btn-solutions" aria-expanded="false" aria-controls="mega-solutions" class="mega-trigger flex items-center gap-1.5 whitespace-nowrap px-4 py-2 text-base font-medium text-sand-800 hover:text-sand-900 transition-colors duration-150" data-menu="solutions" data-astro-cid-hnhh3bfe> Solutions for <svg id="chevron-solutions" class="w-3.5 h-3.5 opacity-50 transition-transform duration-200" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" data-astro-cid-hnhh3bfe> <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" data-astro-cid-hnhh3bfe></path> </svg> </button>  <a href="/our-data" class="nav-flat-link px-4 py-2 text-base font-medium transition-colors duration-150 text-sand-800 hover:text-sand-900" data-astro-cid-hnhh3bfe> Our Data </a><a href="/our-ai" class="nav-flat-link px-4 py-2 text-base font-medium transition-colors duration-150 text-sand-800 hover:text-sand-900" data-astro-cid-hnhh3bfe> Our AI </a> </nav>   </div>  <div class="hidden lg:flex items-center gap-5" data-astro-cid-hnhh3bfe>  <div class="z2-langsw z2-langsw--header" data-langsw data-astro-cid-fhi4yxem> <button type="button" class="z2-langsw__btn" aria-haspopup="true" aria-expanded="false" aria-label="Choose your language" data-langsw-btn data-astro-cid-fhi4yxem> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="20" height="20" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-fhi4yxem="true" class="lucide lucide-globe z2-langsw__globe">  <circle cx="12" cy="12" r="10"></circle> <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path> <path d="M2 12h20"></path>  </svg>  <span class="sr-only" data-astro-cid-fhi4yxem>English</span>  </button> <ul class="z2-langsw__panel" role="menu" data-langsw-panel data-astro-cid-fhi4yxem> <li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="en" data-locale="en" href="/about/" class="z2-langsw__opt is-active" aria-current="true" data-astro-cid-fhi4yxem> English </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="ja" data-locale="ja" href="/ja/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> 日本語 </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="de" data-locale="de" href="/de/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Deutsch </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="it" data-locale="it" href="/it/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Italiano </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="pl" data-locale="pl" href="/pl/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Polski </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="fr" data-locale="fr" href="/fr/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Français </a> </li><li role="none" data-astro-cid-fhi4yxem>
172 <a role="menuitem" hreflang="ko" data-locale="ko" href="/ko/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> 한국어 </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="es" data-locale="es" href="/es/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Español </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="pt" data-locale="pt" href="/pt/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Português (Portugal) </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="pt-BR" data-locale="pt-br" href="/pt-br/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Português (Brasil) </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="tr" data-locale="tr" href="/tr/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Türkçe </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="th" data-locale="th" href="/th/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> ไทย </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="nl" data-locale="nl" href="/nl/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Nederlands </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="vi" data-locale="vi" href="/vi/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Tiếng Việt </a> </li> </ul> </div>  
172<script type="module">(()=>{if(window.__z2LangSwInit)return;window.__z2LangSwInit=!0;const i=a=>{document.querySelectorAll("[data-langsw].is-open").forEach(n=>{n!==a&&(n.classList.remove("is-open"),n.querySelector("[data-langsw-btn]")?.setAttribute("aria-expanded","false"))})},l=a=>{if(!a.classList.contains("z2-langsw--footer"))return;const n=a.querySelector("[data-langsw-btn]"),t=a.querySelector("[data-langsw-panel]");if(!n||!t)return;const o=n.getBoundingClientRect();if(t.style.top="auto",t.style.bottom=`${Math.round(window.innerHeight-o.top+8)}px`,t.style.maxHeight="",window.innerWidth<640){t.style.left="0px",t.style.right="0px";const g=Math.round(o.top-8-12);t.style.maxHeight=`${Math.max(160,g)}px`;return}const e=8,s=t.offsetWidth||256,c=Math.max(e,window.innerWidth-s-e),d=Math.min(Math.max(Math.round(o.left),e),c);t.style.left=`${d}px`,t.style.right="auto"},r=()=>{document.querySelectorAll("[data-langsw].z2-langsw--footer.is-open").forEach(l)};window.addEventListener("resize",r),window.addEventListener("scroll",r,{passive:!0}),document.addEventListener("click",a=>{const n=a.target,t=n.closest("[data-langsw] .z2-langsw__opt");if(t){const e=t.getAttribute("data-locale");e&&(document.cookie=`pref_lang=${e};path=/;max-age=31536000;samesite=lax`);return}const o=n.closest("[data-langsw-btn]");if(o){const e=o.closest("[data-langsw]"),s=!e.classList.contains("is-open");i(s?e:null),s&&l(e),e.classList.toggle("is-open",s),o.setAttribute("aria-expanded",String(s));return}n.closest("[data-langsw]")||i()}),document.addEventListener("keydown",a=>{a.key==="Escape"&&i()})})();</script>
172 <a href="/demo" class="inline-flex items-center gap-1.5 rounded-full bg-signal-400 hover:bg-primary-deep border-2 border-primary-deep text-sand-900 hover:text-sand-100 text-sm font-medium px-5 py-2 transition-colors" data-astro-cid-hnhh3bfe> See a Demo </a> </div>  <div class="flex items-center gap-0.5 lg:hidden" data-astro-cid-hnhh3bfe>  <button id="mobile-lang-btn" class="p-2 rounded-md text-sand-800 hover:text-sand-900 hover:bg-sand-200 transition-colors" aria-label="Choose your language" aria-expanded="false" aria-controls="mobile-lang-menu" data-astro-cid-hnhh3bfe> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-hnhh3bfe="true" class="lucide lucide-globe w-6 h-6">  <circle cx="12" cy="12" r="10"></circle> <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path> <path d="M2 12h20"></path>  </svg> </button>  <button id="mobile-menu-btn" class="p-2 rounded-md text-sand-800 hover:text-sand-900 hover:bg-sand-200 transition-colors" aria-label="Open menu" aria-expanded="false" aria-controls="mobile-menu" data-astro-cid-hnhh3bfe> <svg id="menu-icon-open" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-astro-cid-hnhh3bfe> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" data-astro-cid-hnhh3bfe></path> </svg> <svg id="menu-icon-close" class="w-6 h-6 hidden" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-astro-cid-hnhh3bfe> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-astro-cid-hnhh3bfe></path> </svg> </button> </div> </div>  <div id="mega-stack" class="mega-stack hidden lg:block absolute left-0 top-full" style="width: 100%;" data-astro-cid-hnhh3bfe> <div id="mega-clip" class="mega-clip" data-astro-cid-hnhh3bfe>  <div id="mega-products" role="region" aria-label="Products menu" class="mega-panel bg-white" data-astro-cid-hnhh3bfe> <div class="flex items-stretch" data-astro-cid-hnhh3bfe>  <div class="nav-product-frame flex-shrink-0 flex flex-col" data-astro-cid-hnhh3bfe>  <span class="nav-corner nav-corner--tl" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span class="nav-corner nav-corner--tr" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span class="nav-corner nav-corner--bl" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span class="nav-corner nav-corner--br" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <ul class="divide-y divide-sand-600 border-t border-sand-600 flex-1 flex flex-col" data-astro-cid-hnhh3bfe> <li class="flex-1 flex" data-astro-cid-hnhh3bfe> <a href="/products/part-risk-manager" class="group flex flex-1 items-start gap-5 py-4 px-5 transition-colors duration-150 hover:bg-sand-100" data-astro-cid-hnhh3bfe>  <img src="/brand/06-Product-Icons/Part-Risk-Manager/Z2_Product_Icons_Part-Risk-Manager.svg" alt="Part Risk Manager" class="flex-shrink-0 w-8 h-8 object-contain mt-0.5" aria-hidden="true" data-astro-cid-hnhh3bfe>  <div class="flex-1 min-w-0" data-astro-cid-hnhh3bfe> <p class="text-xl font-semibold text-sand-900 mb-1" data-astro-cid-hnhh3bfe>Part Risk Manager</p> <p class="text-sm text-sand-500 leading-snug" data-astro-cid-hnhh3bfe>Component intelligence across 1B+ electronic parts.</p> </div> </a> </li><li class="flex-1 flex" data-astro-cid-hnhh3bfe> <a href="/products/compliance-manager" class="group flex flex-1 items-start gap-5 py-4 px-5 transition-colors duration-150 hover:bg-sand-100" data-astro-cid-hnhh3bfe>  <img src="/brand/06-Product-Icons/Compliance-Manager/Z2_Product_Icons_Compliance-Manager.svg" alt="Compliance Manager" class="flex-shrink-0 w-8 h-8 object-contain mt-0.5" aria-hidden="true" data-astro-cid-hnhh3bfe>  <div class="flex-1 min-w-0" data-astro-cid-hnhh3bfe> <p class="text-xl font-semibold text-sand-900 mb-1" data-astro-cid-hnhh3bfe>Compliance Manager</p> <p class="text-sm text-sand-500 leading-snug" data-astro-cid-hnhh3bfe>Assess parts against 270+ global regulations.</p> </div> </a> </li><li class="flex-1 flex" data-astro-cid-hnhh3bfe> <a href="/products/supply-chain-watch" class="group flex flex-1 items-start gap-5 py-4 px-5 transition-colors duration-150 hover:bg-sand-100" data-astro-cid-hnhh3bfe>  <img src="/brand/06-Product-Icons/Supply-Chain-Watch/Z2_Product_Icons_Supply-Chain-Watch.svg" alt="Supply Chain Watch" class="flex-shrink-0 w-8 h-8 object-contain mt-0.5" aria-hidden="true" data-astro-cid-hnhh3bfe>  <div class="flex-1 min-w-0" data-astro-cid-hnhh3bfe> <p class="text-xl font-semibold text-sand-900 mb-1" data-astro-cid-hnhh3bfe>Supply Chain Watch</p> <p class="text-sm text-sand-500 leading-snug" data-astro-cid-hnhh3bfe>Map and monitor your manufacturing supply chain.</p> </div> </a> </li><li class="flex-1 flex" data-astro-cid-hnhh3bfe> <a href="/products/supplier-insights" class="group flex flex-1 items-start gap-5 py-4 px-5 transition-colors duration-150 hover:bg-sand-100" data-astro-cid-hnhh3bfe>  <img src="/brand/06-Product-Icons/Supplier-Insights/Z2_Product_Icons_Supplier-Insights.svg" alt="Supplier Insights" class="flex-shrink-0 w-8 h-8 object-contain mt-0.5" aria-hidden="true" data-astro-cid-hnhh3bfe>  <div class="flex-1 min-w-0" data-astro-cid-hnhh3bfe> <p class="text-xl font-semibold text-sand-900 mb-1" data-astro-cid-hnhh3bfe>Supplier Insights</p> <p class="text-sm text-sand-500 leading-snug" data-astro-cid-hnhh3bfe>Risk profiles for 1M+ suppliers worldwide.</p> </div> </a> </li> </ul> </div>  <div class="nav-mega-sidebar flex-1 flex flex-col" data-astro-cid-hnhh3bfe>  <a href="/products/enterprise-hub" class="nav-sidebar-hub group relative flex flex-col p-7 overflow-hidden" aria-label="Z2 Enterprise Hub" data-astro-cid-hnhh3bfe>  <img src="/images/z2-logo-pixels.svg" alt="" aria-hidden="true" class="nav-sidebar-deco" loading="lazy" decoding="async" width="800" height="800" data-astro-cid-hnhh3bfe>  <div class="relative z-10" data-astro-cid-hnhh3bfe> <h3 class="nav-sidebar-hub-title" data-astro-cid-hnhh3bfe>Z2 Enterprise Hub</h3> <p class="nav-sidebar-hub-desc" data-astro-cid-hnhh3bfe> Unified risk visibility across parts, suppliers, compliance, and minerals: one integration, one workflow. </p> </div> </a>  <a href="/our-ai" class="nav-sidebar-ai group relative flex flex-col p-6 overflow-hidden" aria-label="AI for Supply Chain" data-astro-cid-hnhh3bfe>  <span class="nav-ai-grid" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <div class="relative z-10" data-astro-cid-hnhh3bfe> <h3 class="nav-sidebar-ai-title" data-astro-cid-hnhh3bfe>AI for Supply Chain</h3> <p class="nav-sidebar-ai-desc" data-astro-cid-hnhh3bfe>Autonomous agents surface risks before they become disruptions.</p> </div> </a>  <a href="/professional-services" class="nav-sidebar-svc group relative flex flex-col p-6 overflow-hidden" aria-label="Professional Services" data-astro-cid-hnhh3bfe> <div data-astro-cid-hnhh3bfe> <h3 class="nav-sidebar-svc-title" data-astro-cid-hnhh3bfe>Professional Services</h3> <p class="nav-sidebar-svc-desc" data-astro-cid-hnhh3bfe>We fill your data gaps so your program runs clean.</p> </div> </a> </div> </div> </div>  <div id="mega-solutions" role="region" aria-label="Solutions menu" class="mega-panel bg-white" data-astro-cid-hnhh3bfe> <div class="nav-sol-grid" data-astro-cid-hnhh3bfe>  <div class="nav-sol-col" data-astro-cid-hnhh3bfe> <p class="nav-sol-col-header" data-astro-cid-hnhh3bfe>Topics</p> <ul data-astro-cid-hnhh3bfe> <li data-astro-cid-hnhh3bfe> <a href="/solutions/supply-chain-risk-management" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-Risk-Score" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Supply Chain Risk Management</span> </a> </li><li data-astro-cid-hnhh3bfe> <a href="/solutions/compliance-and-sustainability" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-growth-grow-leafs" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Compliance &amp; Sustainability</span> </a> </li><li data-astro-cid-hnhh3bfe> <a href="/solutions/electronic-supply-chain" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-processor-chip" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Electronics Supply Chain</span> </a> </li> </ul> </div>  <div class="nav-sol-col" data-astro-cid-hnhh3bfe> <p class="nav-sol-col-header" data-astro-cid-hnhh3bfe>Teams</p> <ul data-astro-cid-hnhh3bfe> <li data-astro-cid-hnhh3bfe> <a href="/solutions/engineering" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-Gear-Icon" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Engineering</span> </a> </li><li data-astro-cid-hnhh3bfe>
172 <a href="/solutions/procurement" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-shoppingcart" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Procurement</span> </a> </li><li data-astro-cid-hnhh3bfe> <a href="/solutions/supply-chain" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-Supply-Chain" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Supply Chain</span> </a> </li><li data-astro-cid-hnhh3bfe> <a href="/solutions/compliance" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-Supplier-Compliance" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Compliance</span> </a> </li><li data-astro-cid-hnhh3bfe> <a href="/solutions/leadership" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-Dashboard" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Leadership</span> </a> </li> </ul> </div>  <div class="nav-sol-col" data-astro-cid-hnhh3bfe> <p class="nav-sol-col-header" data-astro-cid-hnhh3bfe>Industries</p> <ul data-astro-cid-hnhh3bfe> <li data-astro-cid-hnhh3bfe> <a href="/industries/aerospace-defense" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-Aviation" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Aerospace &amp; Defense</span> </a> </li><li data-astro-cid-hnhh3bfe> <a href="/industries/automotive" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-Automotive2" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Automotive</span> </a> </li><li data-astro-cid-hnhh3bfe> <a href="/industries/consumer-electronics" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-Computer-and-Office-Products" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Consumer Electronics</span> </a> </li><li data-astro-cid-hnhh3bfe> <a href="/industries/medical-devices" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-Health-Disease" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Medical Devices</span> </a> </li><li data-astro-cid-hnhh3bfe> <a href="/industries/telecommunications" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-RF" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Telecommunications</span> </a> </li><li data-astro-cid-hnhh3bfe> <a href="/industries/industrial" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-factory-industrial" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Industrial</span> </a> </li><li data-astro-cid-hnhh3bfe> <a href="/industries/robotics" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-Sensors" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Robotics</span> </a> </li> </ul> </div> </div> </div> </div> </div> </div>  <div id="mobile-menu" class="hidden lg:hidden border-t border-sand-600 bg-sand-100" data-astro-cid-hnhh3bfe> <div class="container py-2" data-astro-cid-hnhh3bfe>  <details class="group border-b border-sand-600" data-astro-cid-hnhh3bfe> <summary class="flex items-center justify-between px-3 py-3.5 text-sm font-semibold text-sand-800 cursor-pointer select-none list-none" data-astro-cid-hnhh3bfe> Products <svg class="w-4 h-4 text-sand-500 flex-shrink-0 transition-transform duration-200 group-open:rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-hnhh3bfe> <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" data-astro-cid-hnhh3bfe></path> </svg> </summary> <div class="pb-3 space-y-1" data-astro-cid-hnhh3bfe> <a href="/products/part-risk-manager" class="block px-3 py-2 rounded-md hover:bg-sand-200 transition-colors" data-astro-cid-hnhh3bfe> <span class="block text-sm font-semibold text-sand-800 hover:text-sand-900" data-astro-cid-hnhh3bfe>Part Risk Manager</span> <span class="block text-xs text-sand-500 mt-0.5" data-astro-cid-hnhh3bfe>
172Component intelligence across 1B+ electronic parts.</span> </a><a href="/products/compliance-manager" class="block px-3 py-2 rounded-md hover:bg-sand-200 transition-colors" data-astro-cid-hnhh3bfe> <span class="block text-sm font-semibold text-sand-800 hover:text-sand-900" data-astro-cid-hnhh3bfe>Compliance Manager</span> <span class="block text-xs text-sand-500 mt-0.5" data-astro-cid-hnhh3bfe>Assess parts against 270+ global regulations.</span> </a><a href="/products/supply-chain-watch" class="block px-3 py-2 rounded-md hover:bg-sand-200 transition-colors" data-astro-cid-hnhh3bfe> <span class="block text-sm font-semibold text-sand-800 hover:text-sand-900" data-astro-cid-hnhh3bfe>Supply Chain Watch</span> <span class="block text-xs text-sand-500 mt-0.5" data-astro-cid-hnhh3bfe>Map and monitor your manufacturing supply chain.</span> </a><a href="/products/supplier-insights" class="block px-3 py-2 rounded-md hover:bg-sand-200 transition-colors" data-astro-cid-hnhh3bfe> <span class="block text-sm font-semibold text-sand-800 hover:text-sand-900" data-astro-cid-hnhh3bfe>Supplier Insights</span> <span class="block text-xs text-sand-500 mt-0.5" data-astro-cid-hnhh3bfe>Risk profiles for 1M+ suppliers worldwide.</span> </a>  <div class="mt-2 pt-2 border-t border-sand-600 space-y-1" data-astro-cid-hnhh3bfe> <a href="/products/enterprise-hub" class="block px-3 py-2 rounded-md hover:bg-sand-200 transition-colors" data-astro-cid-hnhh3bfe> <span class="block text-sm font-semibold text-sand-800 hover:text-sand-900" data-astro-cid-hnhh3bfe>Z2 Enterprise Hub</span> <span class="block text-xs text-sand-500 mt-0.5" data-astro-cid-hnhh3bfe>Unified risk visibility across parts, suppliers, compliance, and minerals: one integration, one workflow.</span> </a> <a href="/professional-services" class="block px-3 py-2 rounded-md hover:bg-sand-200 transition-colors" data-astro-cid-hnhh3bfe> <span class="block text-sm font-semibold text-sand-800 hover:text-sand-900" data-astro-cid-hnhh3bfe>Professional Services</span> <span class="block text-xs text-sand-500 mt-0.5" data-astro-cid-hnhh3bfe>We fill your data gaps so your program runs clean.</span> </a> </div> </div> </details>  <details class="group border-b border-sand-600" data-astro-cid-hnhh3bfe> <summary class="flex items-center justify-between px-3 py-3.5 text-sm font-semibold text-sand-800 cursor-pointer select-none list-none" data-astro-cid-hnhh3bfe> Solutions <svg class="w-4 h-4 text-sand-500 flex-shrink-0 transition-transform duration-200 group-open:rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-hnhh3bfe> <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" data-astro-cid-hnhh3bfe></path> </svg> </summary> <div class="pb-3" data-astro-cid-hnhh3bfe> <p class="px-3 pt-2 pb-1.5 text-[10px] font-semibold uppercase tracking-widest text-sand-500" data-astro-cid-hnhh3bfe>Teams</p> <div class="space-y-0.5" data-astro-cid-hnhh3bfe> <a href="/solutions/engineering" class="block px-3 py-2.5 text-sm text-sand-700 hover:text-sand-900 hover:bg-sand-200 rounded-md transition-colors" data-astro-cid-hnhh3bfe> Engineering </a><a href="/solutions/procurement" class="block px-3 py-2.5 text-sm text-sand-700 hover:text-sand-900 hover:bg-sand-200 rounded-md transition-colors" data-astro-cid-hnhh3bfe> Procurement </a><a href="/solutions/supply-chain" class="block px-3 py-2.5 text-sm text-sand-700 hover:text-sand-900 hover:bg-sand-200 rounded-md transition-colors" data-astro-cid-hnhh3bfe> Supply Chain </a><a href="/solutions/compliance" class="block px-3 py-2.5 text-sm text-sand-700 hover:text-sand-900 hover:bg-sand-200 rounded-md transition-colors" data-astro-cid-hnhh3bfe> Compliance </a><a href="/solutions/leadership" class="block px-3 py-2.5 text-sm text-sand-700 hover:text-sand-900 hover:bg-sand-200 rounded-md transition-colors" data-astro-cid-hnhh3bfe> Leadership </a> </div> <p class="px-3 pt-3 pb-1.5 text-[10px] font-semibold uppercase tracking-widest text-sand-500" data-astro-cid-hnhh3bfe>Industries</p> <div class="space-y-0.5" data-astro-cid-hnhh3bfe> <a href="/industries/aerospace-defense" class="block px-3 py-2.5 text-sm text-sand-700 hover:text-sand-900 hover:bg-sand-200 rounded-md transition-colors" data-astro-cid-hnhh3bfe> Aerospace &amp; Defense </a><a href="/industries/automotive" class="block px-3 py-2.5 text-sm text-sand-700 hover:text-sand-900 hover:bg-sand-200 rounded-md transition-colors" data-astro-cid-hnhh3bfe> Automotive </a><a href="/industries/consumer-electronics" class="block px-3 py-2.5 text-sm text-sand-700 hover:text-sand-900 hover:bg-sand-200 rounded-md transition-colors" data-astro-cid-hnhh3bfe> Consumer Electronics </a><a href="/industries/medical-devices" class="block px-3 py-2.5 text-sm text-sand-700 hover:text-sand-900 hover:bg-sand-200 rounded-md transition-colors" data-astro-cid-hnhh3bfe> Medical Devices </a><a href="/industries/telecommunications" class="block px-3 py-2.5 text-sm text-sand-700 hover:text-sand-900 hover:bg-sand-200 rounded-md transition-colors" data-astro-cid-hnhh3bfe> Telecommunications </a><a href="/industries/industrial" class="block px-3 py-2.5 text-sm text-sand-700 hover:text-sand-900 hover:bg-sand-200 rounded-md transition-colors" data-astro-cid-hnhh3bfe> Industrial </a><a href="/industries/robotics" class="block px-3 py-2.5 text-sm text-sand-700 hover:text-sand-900 hover:bg-sand-200 rounded-md transition-colors" data-astro-cid-hnhh3bfe> Robotics </a> </div> </div> </details>  <div class="border-b border-sand-600" data-astro-cid-hnhh3bfe> <a href="/our-data" class="block px-3 py-3.5 text-sm font-medium text-sand-800 hover:text-sand-900 hover:bg-sand-200 transition-colors" data-astro-cid-hnhh3bfe>Our Data</a> <a href="/our-ai" class="block px-3 py-3.5 text-sm font-medium text-sand-800 hover:text-sand-900 hover:bg-sand-200 transition-colors" data-astro-cid-hnhh3bfe>Our AI</a> </div>  <div class="pt-4 pb-5 flex flex-col gap-3" data-astro-cid-hnhh3bfe> <a href="/demo" class="inline-flex items-center justify-center gap-1.5 rounded-full bg-signal-400 hover:bg-primary-deep border-2 border-primary-deep text-sand-900 hover:text-sand-100 text-sm font-medium px-5 py-2.5 transition-colors" data-astro-cid-hnhh3bfe> See a Demo </a> </div> </div> </div>  <div id="mobile-lang-menu" class="hidden lg:hidden border-t border-sand-600 bg-sand-100" data-astro-cid-hnhh3bfe> <div class="container py-4" data-astro-cid-hnhh3bfe> <div class="flex items-center gap-2 mb-3 text-[10px] font-semibold uppercase tracking-widest text-sand-500" data-astro-cid-hnhh3bfe> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-hnhh3bfe="true" class="lucide lucide-globe text-sand-700">  <circle cx="12" cy="12" r="10"></circle> <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path> <path d="M2 12h20"></path>  </svg> <span data-astro-cid-hnhh3bfe>Language</span> </div> <ul class="grid grid-cols-2 min-[420px]:grid-cols-3 gap-x-2 gap-y-1" data-astro-cid-hnhh3bfe> <li data-astro-cid-hnhh3bfe> <a href="/about/" hreflang="en" data-locale="en" aria-current="true" class="block px-3 py-2.5 rounded-md text-sm transition-colors bg-sand-900 text-white font-medium" data-astro-cid-hnhh3bfe> English </a> </li><li data-astro-cid-hnhh3bfe> <a href="/ja/about/" hreflang="ja" data-locale="ja" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> 日本語 </a> </li><li data-astro-cid-hnhh3bfe> <a href="/de/about/" hreflang="de" data-locale="de" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> Deutsch </a> </li><li data-astro-cid-hnhh3bfe> <a href="/it/about/" hreflang="it" data-locale="it" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> Italiano </a> </li><li data-astro-cid-hnhh3bfe> <a href="/pl/about/" hreflang="pl" data-locale="pl" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> Polski </a> </li><li data-astro-cid-hnhh3bfe> <a href="/fr/about/" hreflang="fr" data-locale="fr" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> Français </a> </li><li data-astro-cid-hnhh3bfe>
172 <a href="/ko/about/" hreflang="ko" data-locale="ko" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> 한국어 </a> </li><li data-astro-cid-hnhh3bfe> <a href="/es/about/" hreflang="es" data-locale="es" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> Español </a> </li><li data-astro-cid-hnhh3bfe> <a href="/pt/about/" hreflang="pt" data-locale="pt" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> Português (Portugal) </a> </li><li data-astro-cid-hnhh3bfe> <a href="/pt-br/about/" hreflang="pt-BR" data-locale="pt-br" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> Português (Brasil) </a> </li><li data-astro-cid-hnhh3bfe> <a href="/tr/about/" hreflang="tr" data-locale="tr" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> Türkçe </a> </li><li data-astro-cid-hnhh3bfe> <a href="/th/about/" hreflang="th" data-locale="th" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> ไทย </a> </li><li data-astro-cid-hnhh3bfe> <a href="/nl/about/" hreflang="nl" data-locale="nl" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> Nederlands </a> </li><li data-astro-cid-hnhh3bfe> <a href="/vi/about/" hreflang="vi" data-locale="vi" class="block px-3 py-2.5 rounded-md text-sm transition-colors text-sand-800 hover:bg-sand-200" data-astro-cid-hnhh3bfe> Tiếng Việt </a> </li> </ul> </div> </div> </header>  <div id="header-logo-ctx" role="menu" aria-label="Logo options" class="fixed z-[9999] hidden" data-astro-cid-hnhh3bfe> <div class="bg-white border border-sand-600 rounded shadow-md overflow-hidden min-w-[190px] font-sans" data-astro-cid-hnhh3bfe>  <button data-logo-action="newtab" role="menuitem" class="flex items-center gap-2.5 w-full px-3.5 py-2.5 text-sm font-medium text-sand-800 hover:bg-sand-100 transition-colors text-left" data-astro-cid-hnhh3bfe> <svg class="w-4 h-4 text-sand-500 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.75" aria-hidden="true" data-astro-cid-hnhh3bfe> <path stroke-linecap="round" stroke-linejoin="round" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" data-astro-cid-hnhh3bfe></path> </svg> Open in new tab </button> <div class="h-px bg-sand-300" data-astro-cid-hnhh3bfe></div>  <a href="/brand/" role="menuitem" class="flex items-center gap-2.5 w-full px-3.5 py-2.5 text-sm font-medium text-sand-800 hover:bg-sand-100 transition-colors text-left no-underline" data-astro-cid-hnhh3bfe> <svg class="w-4 h-4 text-sand-500 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.75" aria-hidden="true" data-astro-cid-hnhh3bfe> <path stroke-linecap="round" stroke-linejoin="round" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" data-astro-cid-hnhh3bfe></path> </svg> Download Z2 Logo </a> </div> </div>   <div id="nav-backdrop" class="fixed inset-0 pointer-events-none" style="z-index: 40; opacity: 0; transition: opacity 200ms ease-out; background: #F9F8F0;" aria-hidden="true" data-astro-cid-hnhh3bfe></div> 
172<script>
173  // ── Mega menu: hover + click-sticky ───────────────────────────
174  let closeTimer  = null;
175  let stickyMenu  = null; // id of the menu that was clicked open
176
177  const backdrop = document.getElementById('nav-backdrop');
178
179  function showBackdrop() {
180    if (!backdrop) return;
181    backdrop.style.opacity = '1';
182    backdrop.classList.remove('pointer-events-none');
183    backdrop.classList.add('pointer-events-auto');
184  }
185
186  function hideBackdrop() {
187    if (!backdrop) return;
188    backdrop.style.opacity = '0';
189    backdrop.classList.add('pointer-events-none');
190    backdrop.classList.remove('pointer-events-auto');
191  }
192
193  const megaStack = document.getElementById('mega-stack');
194  const megaClip  = document.getElementById('mega-clip');
195
196  // Sets the shared frame height. `animate` is false on the first open,
197  // so the panel appears at full size instead of unrolling.
198  function setClipHeight(panel, animate) {
199    if (!megaClip || !panel) return;
200    if (!animate) megaClip.classList.add('no-anim');
201    megaClip.style.height = panel.offsetHeight + 'px';
202    if (!animate) {
203      void megaClip.offsetHeight; // flush the un-animated height
204      megaClip.classList.remove('no-anim');
205    }
206  }
207
208  function openMega(id) {
209    clearTimeout(closeTimer);
210
211    const panel   = document.getElementById('mega-' + id);
212    const btn     = document.getElementById('btn-' + id);
213    const chevron = document.getElementById('chevron-' + id);
214    if (!panel || !btn) return;
215
216    // Frame already up? Then this is a switch: keep the frame in place and
217    // just ease its height while the panels crossfade.
218    const wasOpen = !!megaStack?.classList.contains('is-open');
219
220    ['products', 'solutions'].filter(x => x !== id).forEach(id2 => {
221      // don't force-close a sticky sibling via hover; close it visually only if not sticky
222      if (stickyMenu !== id2) closeMega(id2);
223    });
224
225    setClipHeight(panel, wasOpen);
226    megaStack?.classList.add('is-open');
227    panel.classList.add('is-open');
228    btn.setAttribute('aria-expanded', 'true');
229    btn.classList.add('is-nav-active');
230    if (chevron) chevron.style.transform = 'rotate(180deg)';
231    showBackdrop();
232  }
233
234  function closeMega(id) {
235    const panel   = document.getElementById('mega-' + id);
236    const btn     = document.getElementById('btn-' + id);
237    const chevron = document.getElementById('chevron-' + id);
238    if (!panel) return;
239
240    panel.classList.remove('is-open');
241    if (btn) { btn.setAttribute('aria-expanded', 'false'); btn.classList.remove('is-nav-active'); }
242    if (chevron) chevron.style.transform = '';
243
244    const anyOpen = ['products', 'solutions'].some(
245      x => x !== id && document.getElementById('btn-' + x)?.getAttribute('aria-expanded') === 'true'
246    );
247    if (!anyOpen) {
248      megaStack?.classList.remove('is-open');
249      hideBackdrop();
250    }
251  }
252
253  function scheduleClose() {
254    // Never auto-close if a menu is sticky
255    if (stickyMenu) return;
256    closeTimer = setTimeout(() => {
257      ['products', 'solutions'].forEach(closeMega);
258    }, 120);
259  }
260
261  function cancelClose() {
262    clearTimeout(closeTimer);
263  }
264
265  function clearSticky() {
266    stickyMenu = null;
267    ['products', 'solutions'].forEach(closeMega);
268  }
269
270  // Hover on trigger buttons (only when no sticky menu active)
271  document.querySelectorAll('.mega-trigger').forEach((btn) => {
272    const id = btn.getAttribute('data-menu');
273
274    btn.addEventListener('mouseenter', () => {
275      if (stickyMenu && stickyMenu !== id) {
276        // hovering a different trigger while one is sticky: close old, open new
277        const prev = stickyMenu;
278        stickyMenu = null;
279        closeMega(prev);
280      }
281      openMega(id);
282    });
283
284    btn.addEventListener('mouseleave', scheduleClose);
285
286    // Click toggles sticky
287    btn.addEventListener('click', (e) => {
288      e.stopPropagation();
289      if (stickyMenu === id) {
290        // already sticky: unstick and close
291        stickyMenu = null;
292        closeMega(id);
293      } else {
294        // make this one sticky (close any previous sticky first)
295        if (stickyMenu) closeMega(stickyMenu);
296        stickyMenu = id;
297        openMega(id);
298      }
299    });
300  });
301
302  // Keep open while hovering the frame (unless sticky, in which case it's always open).
303  // Bound to the shared stack, so the pointer never falls into a dead gap mid-morph.
304  if (megaStack) {
305    megaStack.addEventListener('mouseenter', cancelClose);
306    megaStack.addEventListener('mouseleave', scheduleClose);
307  }
308
309  // Close on Escape
310  document.addEventListener('keydown', (e) => {
311    if (e.key === 'Escape') clearSticky();
312  });
313
314  // Backdrop click closes sticky
315  backdrop?.addEventListener('click', clearSticky);
316
317  // Click anywhere outside the header clears sticky
318  document.addEventListener('click', (e) => {
319    const header = document.getElementById('site-header');
320    if (header && !header.contains(e.target)) clearSticky();
321  });
322
323  // ── Header logo right-click context menu ─────────────────────
324  (function () {
325    const logoLink  = document.getElementById('header-logo');
326    const ctxMenu   = document.getElementById('header-logo-ctx');
327    if (!logoLink || !ctxMenu) return;
328
329    function hideCtx() { ctxMenu.classList.add('hidden'); }
330
331    function showCtx(x, y) {
332      ctxMenu.classList.remove('hidden');
333      const margin = 8;
334      const rect = ctxMenu.getBoundingClientRect();
335      const w = ctxMenu.offsetWidth || 200;
336      const h = ctxMenu.offsetHeight || 160;
337      const left = Math.min(x, window.innerWidth  - w - margin);
338      const top  = Math.min(y, window.innerHeight - h - margin);
339      ctxMenu.style.left = left + 'px';
340      ctxMenu.style.top  = top  + 'px';
341    }
342
343    logoLink.addEventListener('contextmenu', function (e) {
344      e.preventDefault();
345      showCtx(e.clientX, e.clientY);
346    });
347
348    ctxMenu.querySelector('[data-logo-action="newtab"]')?.addEventListener('click', function () {
349      window.open('/', '_blank', 'noopener,noreferrer');
350      hideCtx();
351    });
352
353    document.addEventListener('click', hideCtx);
354    document.addEventListener('keydown', function (e) { if (e.key === 'Escape') hideCtx(); });
355    document.addEventListener('contextmenu', function (e) {
356      if (!logoLink.contains(e.target)) hideCtx();
357    });
358  })();
359
360  // ── Mobile menu + language panel ──────────────────────────────
361  // Two full-width panels drop below the header on mobile: the hamburger nav
362  // and the globe language switcher. Only one is open at a time — opening one
363  // closes the other; Escape closes both.
364  const mobileBtn  = document.getElementById('mobile-menu-btn');
365  const mobileMenu = document.getElementById('mobile-menu');
366  const iconOpen   = document.getElementById('menu-icon-open');
367  const iconClose  = document.getElementById('menu-icon-close');
368  const langBtn    = document.getElementById('mobile-lang-btn');
369  const langMenu   = document.getElementById('mobile-lang-menu');
370
371  function closeMobileNav() {
372    mobileMenu?.classList.add('hidden');
373    iconOpen?.classList.remove('hidden');
374    iconClose?.classList.add('hidden');
375    mobileBtn?.setAttribute('aria-expanded', 'false');
376  }
377
378  function closeMobileLang() {
379    langMenu?.classList.add('hidden');
380    langBtn?.setAttribute('aria-expanded', 'false');
381  }
382
383  mobileBtn?.addEventListener('click', () => {
384    const willOpen = mobileMenu?.classList.contains('hidden');
385    closeMobileLang();
386    mobileMenu?.classList.toggle('hidden', !willOpen);
387    iconOpen?.classList.toggle('hidden', !!willOpen);
388    iconClose?.classList.toggle('hidden', !willOpen);
389    mobileBtn.setAttribute('aria-expanded', String(!!willOpen));
390  });
391
392  langBtn?.addEventListener('click', () => {
393    const willOpen = langMenu?.classList.contains('hidden');
394    closeMobileNav();
395    langMenu?.classList.toggle('hidden', !willOpen);
396    langBtn.setAttribute('aria-expanded', String(!!willOpen));
397  });
398
399  // Persist the explicit language choice so the auto-detect redirect honors it
400  // (mirrors the desktop LangSwitcher behavior). Read data-locale, NOT hreflang:
401  // hreflang carries BCP-47 casing (pt-BR) but LocaleAutoDetect matches the
402  // cookie against LOCALES, which holds the lowercase code (pt-br).
403  langMenu?.querySelectorAll('a[data-locale]').forEach((a) => {
404    a.addEventListener('click', () => {
405      const code = a.getAttribute('data-locale');
406      if (code) document.cookie = `pref_lang=${code};path=/;max-age=31536000;samesite=lax`;
407    });
408  });
409
410  document.addEventListener('keydown', (e) => {
411    if (e.key === 'Escape') { closeMobileNav(); closeMobileLang(); }
412  });
413
414  // ── Product page sticky header ────────────────────────────────
415  (function () {
416    const header        = document.getElementById('site-header');
417    const defaultLogo   = document.getElementById('header-logo');
418    const productLogo   = document.getElementById('header-product-logo');
419    const solutionLabel = document.getElementById('header-solution-label');
420    const mainNav       = document.querySelector('#site-header #main-nav');
421    const productNav    = document.getElementById('header-product-nav');
422    const ctaBtn        = document.getElementById('header-product-cta-btn');
423    const ctaForm       = document.getElementById('header-demo-capture');
424
425    // Activate on product pages (product logo present) and solution pages (solution label present)
426    if (!header || (!productLogo && !solutionLabel)) return;
427
428    let active = false;
429
430    function apply(sticky) {
431      if (sticky === active) return;
432      active = sticky;
433
434      if (sticky) {
435        header.classList.add('is-product-sticky');
436        // Product pages: swap Z2 logo → product icon + name
437        if (productLogo) {
438          defaultLogo?.classList.add('hidden');
439          productLogo.classList.remove('hidden');
440          productLogo.classList.add('flex');
441        }
442        // Solution pages: keep Z2 logo, reveal solution name beside it
443        if (solutionLabel) {
444          solutionLabel.classList.remove('hidden');
445          solutionLabel.classList.add('flex');
446        }
447        // Always hide main nav: sticky bar shows only the brand/name + CTA
448        mainNav?.classList.add('!hidden');
449        // Swap CTA button → email-capture pill
450        ctaBtn?.classList.add('!hidden');
451        ctaForm?.classList.remove('hidden');
452        ctaForm?.classList.add('flex');
453      } else {
454        header.classList.remove('is-product-sticky');
455        // Restore product logo state
456        if (productLogo) {
457          defaultLogo?.classList.remove('hidden');
458          productLogo.classList.add('hidden');
459          productLogo.classList.remove('flex');
460        }
461        // Hide solution name
462        if (solutionLabel) {
463          solutionLabel.classList.add('hidden');
464          solutionLabel.classList.remove('flex');
465        }
466        // Restore main nav
467        mainNav?.classList.remove('!hidden');
468        // Restore CTA button
469        ctaBtn?.classList.remove('!hidden');
470        ctaForm?.classList.add('hidden');
471        ctaForm?.classList.remove('flex');
472      }
473    }
474
475    window.addEventListener('scroll', function () { apply(window.scrollY > 20); }, { passive: true });
476    apply(window.scrollY > 20);
477  })();
478</script>
478  <main class="ab-main" data-astro-cid-kh7btl4r>  <section class="ab-hero bg-sand-100" id="ab-hero" data-astro-cid-kh7btl4r> <canvas id="ab-terrain" class="ab-terrain" aria-hidden="true" data-astro-cid-kh7btl4r></canvas> <div class="ab-container ab-hero-inner" data-astro-cid-kh7btl4r> <div class="ab-hero-top" data-astro-cid-kh7btl4r> <p class="ab-eyebrow text-sand-900" data-astro-cid-kh7btl4r>About Z2</p> <p class="ab-coords text-sand-600" data-astro-cid-kh7btl4r>37.39° N — 121.97° W · Santa Clara, CA</p> </div> <div class="ab-hero-main" data-astro-cid-kh7btl4r> <h1 class="ab-hero-h1 text-sand-900" data-astro-cid-kh7btl4r> <span class="ab-line" data-astro-cid-kh7btl4r><span class="ab-line-in" data-astro-cid-kh7btl4r>Z2 maps the</span></span> <span class="ab-line" data-astro-cid-kh7btl4r><span class="ab-line-in" data-astro-cid-kh7btl4r>terrain of every</span></span> <span class="ab-line" data-astro-cid-kh7btl4r><span class="ab-line-in" data-astro-cid-kh7btl4r>supply chain.</span></span> </h1> <p class="ab-hero-sub text-sand-800" data-astro-cid-kh7btl4r> Z2 helps OEMs close the gaps in their supply chain visibility, pairing the industry&#39;s deepest databases with AI, domain experts, automated workflows, and professional services. One map of every part, supplier, site, and regulation. </p> </div> </div> </section>  <section class="ab-stats bg-white border-y border-sand-600" data-astro-cid-kh7btl4r> <div class="ab-container" data-astro-cid-kh7btl4r> <div class="ab-stats-grid" data-astro-cid-kh7btl4r> <div class="ab-stat" data-astro-cid-kh7btl4r> <span class="ab-stat-val text-sand-900" data-value="1B+" data-astro-cid-kh7btl4r>1B+</span> <span class="ab-stat-label text-sand-800" data-astro-cid-kh7btl4r>Components surveyed</span> </div><div class="ab-stat" data-astro-cid-kh7btl4r> <span class="ab-stat-val text-sand-900" data-value="1M+" data-astro-cid-kh7btl4r>1M+</span> <span class="ab-stat-label text-sand-800" data-astro-cid-kh7btl4r>Suppliers mapped</span> </div><div class="ab-stat" data-astro-cid-kh7btl4r> <span class="ab-stat-val text-sand-900" data-value="200K" data-astro-cid-kh7btl4r>200K</span> <span class="ab-stat-label text-sand-800" data-astro-cid-kh7btl4r>Manufacturing sites charted</span> </div><div class="ab-stat" data-astro-cid-kh7btl4r> <span class="ab-stat-val text-sand-900" data-value="270+" data-astro-cid-kh7btl4r>270+</span> <span class="ab-stat-label text-sand-800" data-astro-cid-kh7btl4r>Regulatory regimes tracked</span> </div> </div> </div> </section>  <section class="ab-manifesto bg-sand-100" id="ab-manifesto" data-astro-cid-kh7btl4r> <div class="ab-container" data-astro-cid-kh7btl4r> <p class="ab-mf-text" data-astro-cid-kh7btl4r> <span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>Supply</span><span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>chains</span><span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>don&#39;t</span><span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>fail</span><span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>where</span><span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>you&#39;re</span><span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>looking.</span><span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>They</span><span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>fail</span><span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>in</span><span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>the</span><span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>unmapped</span><span class="ab-mf-w text-sand-900" data-astro-cid-kh7btl4r>nodes.</span> </p> </div>  <svg class="ab-mf-glyph text-sand-800" viewBox="811.09 200 534.07 800" aria-hidden="true" data-astro-cid-kh7btl4r> <path fill="currentColor" d="M1217.62,744.8v127.56l-.04.08h-217.1s.43-.39,118.77-102.05c152.45-131,225.89-203.24,225.89-327.24,0-116.82-85.5-243.15-267.35-243.15-83.35,0-115.25,31.12-115.25,31.12v127.33s27.87-33.87,101.42-33.87c81.22,0,135.15,59.53,135.15,129.87,0,83.35-94.69,160.2-191.86,245.57l-196.16,172.38v127.56h534.07v-255.15h-127.55ZM962.48,358.48h-127.56v127.56h127.56v-127.56Z" data-astro-cid-kh7btl4r></path> </svg> </section>  <section class="ab-approach bg-sand-200 border-t border-sand-600" id="ab-approach" data-astro-cid-kh7btl4r> <div class="ab-container" data-astro-cid-kh7btl4r> <div class="ab-approach-head" data-astro-cid-kh7btl4r> <h2 class="ab-h2 text-sand-900" data-astro-cid-kh7btl4r>How we craft supply chain data.</h2> </div> <div class="ab-app-rows border-t border-sand-600" data-astro-cid-kh7btl4r> <div class="ab-app-row border-b border-sand-600" data-astro-cid-kh7btl4r> <div class="ab-app-left" data-astro-cid-kh7btl4r> <p class="ab-eyebrow ab-app-eyebrow text-primary-dark" data-astro-cid-kh7btl4r>Databases</p> <h3 class="ab-app-title text-sand-900" data-astro-cid-kh7btl4r>Databases built from the ground up</h3> </div> <p class="ab-app-body text-sand-800" data-astro-cid-kh7btl4r>The terrain itself: 1B+ components, 1M+ suppliers, 200K manufacturing sites, and 270+ regulatory regimes, built and maintained in-house for over a decade. Every part links to its suppliers, sites, raw materials, and regulations in one graph.</p> </div><div class="ab-app-row border-b border-sand-600" data-astro-cid-kh7btl4r> <div class="ab-app-left" data-astro-cid-kh7btl4r> <p class="ab-eyebrow ab-app-eyebrow text-primary-dark" data-astro-cid-kh7btl4r>Artificial Intelligence</p> <h3 class="ab-app-title text-sand-900" data-astro-cid-kh7btl4r>AI that monitors the supply chain</h3> </div> <p class="ab-app-body text-sand-800" data-astro-cid-kh7btl4r>Our models monitor 120+ disruption event types in real time, from factory fires to export controls to financial distress, and trace each one to every BOM it touches. Teams hear about it roughly two weeks before manual monitoring catches up.</p> </div><div class="ab-app-row border-b border-sand-600" data-astro-cid-kh7btl4r> <div class="ab-app-left" data-astro-cid-kh7btl4r> <p class="ab-eyebrow ab-app-eyebrow text-primary-dark" data-astro-cid-kh7btl4r>People</p> <h3 class="ab-app-title text-sand-900" data-astro-cid-kh7btl4r>Domain experts who verify it</h3> </div> <p class="ab-app-body text-sand-800" data-astro-cid-kh7btl4r>500+ data scientists, materials researchers, and compliance specialists work alongside the models. AI surfaces the signal; our people confirm it&#39;s real. Nothing ships on a guess.</p> </div><div class="ab-app-row border-b border-sand-600" data-astro-cid-kh7btl4r> <div class="ab-app-left" data-astro-cid-kh7btl4r> <p class="ab-eyebrow ab-app-eyebrow text-primary-dark" data-astro-cid-kh7btl4r>Automated Workflows</p> <h3 class="ab-app-title text-sand-900" data-astro-cid-kh7btl4r>Workflows that run themselves</h3> </div> <p class="ab-app-body text-sand-800" data-astro-cid-kh7btl4r>BOM analysis, PCN and EOL alerts, supplier outreach, and compliance evidence collection run automatically inside the platform, so your team spends its time acting on risk instead of compiling it.</p> </div><div class="ab-app-row border-b border-sand-600" data-astro-cid-kh7btl4r> <div class="ab-app-left" data-astro-cid-kh7btl4r> <p class="ab-eyebrow ab-app-eyebrow text-primary-dark" data-astro-cid-kh7btl4r>Services</p> <h3 class="ab-app-title text-sand-900" data-astro-cid-kh7btl4r>Professional services for the hard miles</h3> </div> <p class="ab-app-body text-sand-800" data-astro-cid-kh7btl4r>When a gap needs more than software, our services team works alongside yours: data cleanup, compliance campaigns, supplier engagement, and custom intelligence projects.</p> </div> </div> </div> </section>   <section class="ab-mosaic bg-sand-100" id="ab-mosaic" data-astro-cid-kh7btl4r> <div class="ab-container" data-astro-cid-kh7btl4r>
478 <div class="ab-mosaic-head" data-astro-cid-kh7btl4r> <div data-astro-cid-kh7btl4r> <p class="ab-eyebrow text-primary-dark" data-astro-cid-kh7btl4r>The team</p> <h2 class="ab-h2 text-sand-900" data-astro-cid-kh7btl4r>Supply chain veterans.<br data-astro-cid-kh7btl4r>Zero shortcuts.</h2> </div> <div class="ab-mosaic-story" data-astro-cid-kh7btl4r> <p class="ab-lede text-sand-800" data-astro-cid-kh7btl4r> Z2&#39;s founders spent 20+ years inside complex manufacturing supply chains. They watched procurement scramble for data that didn&#39;t exist, compliance drown in spreadsheets, and engineers learn about obsolescence from a last-time-buy email. So they built the platform they always wanted. </p> <p class="ab-lede text-sand-800" data-astro-cid-kh7btl4r> Today, 500+ specialists work alongside our AI: domain experts, data scientists, materials and compliance researchers. The models surface the signal; our people confirm it&#39;s real. </p> </div> </div> <div class="ab-mosaic-grid" id="ab-mosaic-grid" data-astro-cid-kh7btl4r> <div class="ab-mosaic-col" data-shift="14" style="padding-top:0" data-astro-cid-kh7btl4r> <div class="ab-tile ab-tile--photo ab-tile--tall" data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-03.png" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div><div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-17.webp" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div><div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-10.png" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div><div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-06.png" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div> </div><div class="ab-mosaic-col" data-shift="36" style="padding-top:2rem" data-astro-cid-kh7btl4r> <div class="ab-tile ab-tile--photo ab-tile--tall" data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-01.png" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div><div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-15.webp" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div><div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-09.png" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div> </div><div class="ab-mosaic-col" data-shift="22" style="padding-top:0" data-astro-cid-kh7btl4r> <div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-07.png" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div><div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-16.webp" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div><div class="ab-tile ab-tile--photo ab-tile--tall" data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-02.png" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div><div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-08.png" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div> </div><div class="ab-mosaic-col" data-shift="30" style="padding-top:2rem" data-astro-cid-kh7btl4r> <div class="ab-tile ab-tile--photo ab-tile--tall" data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-11.png" alt width="320" height="320" loading="lazy" decoding="async" style="object-position:center 10%" data-astro-cid-kh7btl4r="true"> </div><div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-18.webp" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div><div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-12.png" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div> </div><div class="ab-mosaic-col" data-shift="18" style="padding-top:0" data-astro-cid-kh7btl4r> <div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-omeed.webp" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div><div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-05.png" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div><div class="ab-tile ab-tile--photo " data-astro-cid-kh7btl4r> <img src="/brand/team/bw/team-13.png" alt width="320" height="320" loading="lazy" decoding="async" data-astro-cid-kh7btl4r="true"> </div> </div> </div> </div> </section> <section aria-label="Companies that use Z2" class="bg-white border-y border-sand-300 py-10" data-astro-cid-midc3u7a> <div class="container" data-astro-cid-midc3u7a> <ul class="grid grid-cols-2 gap-x-4 gap-y-7 items-center w-full sm:grid-cols-4 lg:flex lg:flex-nowrap lg:justify-evenly lg:gap-x-4 lg:gap-y-0" role="list" data-astro-cid-midc3u7a> <li role="listitem" class="flex items-center justify-center" data-astro-cid-midc3u7a> <img src="/images/logo-qualcomm.png" alt="Qualcomm" title="Qualcomm" loading="eager" decoding="async" class="cust-bar-logo" data-astro-cid-midc3u7a> </li><li role="listitem" class="flex items-center justify-center" data-astro-cid-midc3u7a> <img src="/images/logo-teradyne.png" alt="Teradyne" title="Teradyne" loading="eager" decoding="async" class="cust-bar-logo" data-astro-cid-midc3u7a> </li><li role="listitem" class="flex items-center justify-center" data-astro-cid-midc3u7a>
478 <img src="/images/logo-netapp.png" alt="NetApp" title="NetApp" loading="eager" decoding="async" class="cust-bar-logo" data-astro-cid-midc3u7a> </li><li role="listitem" class="flex items-center justify-center" data-astro-cid-midc3u7a> <img src="/images/logo-paloalto.png" alt="Palo Alto Networks" title="Palo Alto Networks" loading="eager" decoding="async" class="cust-bar-logo" data-astro-cid-midc3u7a> </li><li role="listitem" class="flex items-center justify-center" data-astro-cid-midc3u7a> <img src="/images/logo-dell.png" alt="Dell" title="Dell" loading="eager" decoding="async" class="cust-bar-logo" data-astro-cid-midc3u7a> </li><li role="listitem" class="flex items-center justify-center" data-astro-cid-midc3u7a> <img src="/images/logos-clients/airbus.png" alt="Airbus" title="Airbus" loading="eager" decoding="async" class="cust-bar-logo" data-astro-cid-midc3u7a> </li><li role="listitem" class="flex items-center justify-center" data-astro-cid-midc3u7a> <img src="/images/logo-enphase-grey.svg" alt="Enphase" title="Enphase" loading="eager" decoding="async" class="cust-bar-logo" data-astro-cid-midc3u7a> </li> </ul> </div> </section>  <section class="demo-cta-section bg-signal-400 text-sand-900" data-astro-cid-sxk4qlxd>  <span class="corner corner-tl bg-sand-900" data-astro-cid-sxk4qlxd></span> <span class="corner corner-tr bg-sand-900" data-astro-cid-sxk4qlxd></span> <span class="corner corner-bl bg-sand-900" data-astro-cid-sxk4qlxd></span> <span class="corner corner-br bg-sand-900" data-astro-cid-sxk4qlxd></span> <div class="demo-cta-inner" data-astro-cid-sxk4qlxd>  <h2 class="demo-cta-headline" data-astro-cid-sxk4qlxd> Find the supply chain risk before it&nbsp;<em data-astro-cid-sxk4qlxd>finds you.</em> </h2>  <form class="demo-cta-form" id="demo-footer-capture" action="/demo" method="GET" novalidate data-astro-cid-4f3t23wn> <div class="form-pill border-sand-900" data-astro-cid-4f3t23wn> <input type="email" placeholder="Your work email address" class="demo-email-input text-sand-900" aria-label="Work email address" required data-astro-cid-4f3t23wn> <button type="submit" class="demo-cta-btn bg-sand-900 text-sand-100" data-astro-cid-4f3t23wn> Book My Demo&nbsp;→
479</button> </div> <p class="z2-form-err demo-cta-err" role="alert" aria-live="polite" data-astro-cid-4f3t23wn></p> </form>  </div> </section>  </main>  <footer class="bg-sand-900 relative overflow-hidden">  <div class="absolute inset-0 pointer-events-none" style="mask-image:linear-gradient(to bottom,transparent 0%,transparent 45%,rgba(0,0,0,0.35) 65%,black 82%);-webkit-mask-image:linear-gradient(to bottom,transparent 0%,transparent 45%,rgba(0,0,0,0.35) 65%,black 82%);">
479 <canvas id="footer-terrain" class="w-full h-full" aria-hidden="true"></canvas> </div>  <div class="container pt-10 pb-10 lg:pt-14 lg:pb-12 relative z-10"> <div class="flex items-start gap-8 xl:gap-12">  <div class="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-x-6 gap-y-10 flex-1 sm:gap-x-8 xl:gap-x-10">  <div> <div class="min-h-8 flex items-end mb-6"> <h3 class="type-eyebrow text-white text-[10px]">Products</h3> </div> <ul class="space-y-1"> <li> <a href="/products/supply-chain-watch" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Supply Chain Watch </a> </li><li> <a href="/products/compliance-manager" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Compliance Manager </a> </li><li> <a href="/products/part-risk-manager" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Part Risk Manager </a> </li><li> <a href="/products/supplier-insights" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Supplier Insights </a> </li> <li class="!mt-3 !mb-2"> <hr class="border-white/15 w-8"> </li> <li> <a href="/our-ai" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> AI for Supply Chain </a> </li><li> <a href="/products/enterprise-hub" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Z2 Enterprise Hub </a> </li><li> <a href="/professional-services" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Professional Services </a> </li> </ul> </div>  <div> <div class="min-h-8 flex items-end mb-6"> <h3 class="type-eyebrow text-white text-[10px]">Solutions</h3> </div> <ul class="space-y-1"> <li> <a href="/solutions/supply-chain-risk-management" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Supply Chain Risk Management </a> </li><li> <a href="/solutions/compliance-and-sustainability" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Compliance &amp; Sustainability </a> </li><li> <a href="/solutions/electronic-supply-chain" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Electronics Supply Chain </a> </li> </ul> </div>  <div> <div class="min-h-8 flex items-end mb-6"> <h3 class="type-eyebrow text-white text-[10px]">For Industry</h3> </div> <ul class="space-y-1"> <li> <a href="/industries/consumer-electronics" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Consumer Electronics </a> </li><li> <a href="/industries/aerospace-defense" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Aerospace &amp; Defense </a> </li><li> <a href="/industries/medical-devices" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Medical Devices </a> </li><li> <a href="/industries/automotive" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Automotive </a> </li><li> <a href="/industries/telecommunications" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Telecommunications </a> </li><li> <a href="/industries/industrial" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Industrial </a> </li><li> <a href="/industries/robotics" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Robotics </a> </li> </ul> </div>  <div> <div class="min-h-8 flex items-end mb-6"> <h3 class="type-eyebrow text-white text-[10px]">Resources</h3> </div> <ul class="space-y-1"> <li> <a href="/insights" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Blog </a> </li><li> <a href="/newsletter" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Newsletter </a> </li><li> <a href="/case-studies" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Case Studies </a> </li><li> <a href="/guides" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Guides </a> </li> </ul> </div>  <div> <div class="min-h-8 flex items-end mb-6"> <h3 class="type-eyebrow text-white text-[10px]">Company</h3> </div> <ul class="space-y-1"> <li> <a href="/about" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> About Us </a> </li><li> <a href="/contact" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Contact Us </a> </li><li> <a href="/our-data" class="text-sm text-white/70 hover:text-white transition-colors duration-150 leading-normal"> Our Data </a> </li> </ul>  <a href="https://www.linkedin.com/company/z2data" target="_blank" rel="noopener noreferrer" aria-label="Z2 on LinkedIn" class="inline-flex items-center opacity-70 hover:opacity-100 transition-opacity duration-150 mt-6"> <svg class="h-6 w-6 text-white" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"> <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 0 1-2.063-2.065 2.064 2.064 0 1 1 2.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.225 0z"></path> </svg> </a> </div> </div> </div> </div>  <div id="footer-bottom" class="relative overflow-hidden z-10" style="height:140px">  <div class="container relative h-full pointer-events-none">  <div class="absolute bottom-4 left-0 z-10 flex flex-wrap items-center gap-x-3 gap-y-1.5 pl-4 sm:pl-6 lg:pl-8 pointer-events-auto"> <p class="type-footer-legal text-white/45 leading-snug m-0">
480&copy;2026 Z2Data. All rights reserved.&ensp;
481<a href="/privacy-policy" class="underline underline-offset-2 hover:text-white/50 transition-colors">Privacy Policy</a> </p>  <span class="hidden sm:inline text-white/20" aria-hidden="true">·</span>  <div class="z2-langsw z2-langsw--footer" data-langsw data-astro-cid-fhi4yxem> <button type="button" class="z2-langsw__btn" aria-haspopup="true" aria-expanded="false" aria-label="Cho
481ose your language" data-langsw-btn data-astro-cid-fhi4yxem>  <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-fhi4yxem="true" class="lucide lucide-globe z2-langsw__globe z2-langsw__globe--footer">  <circle cx="12" cy="12" r="10"></circle> <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path> <path d="M2 12h20"></path>  </svg> <span class="z2-langsw__current" data-astro-cid-fhi4yxem>English</span> <svg class="z2-langsw__caret" width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true" data-astro-cid-fhi4yxem> <path stroke-linecap="round" stroke-linejoin="round" d="M6 15l6-6 6 6" data-astro-cid-fhi4yxem></path> </svg> </button> <ul class="z2-langsw__panel" role="menu" data-langsw-panel data-astro-cid-fhi4yxem> <li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="en" data-locale="en" href="/about/" class="z2-langsw__opt is-active" aria-current="true" data-astro-cid-fhi4yxem> English </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="ja" data-locale="ja" href="/ja/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> 日本語 </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="de" data-locale="de" href="/de/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Deutsch </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="it" data-locale="it" href="/it/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Italiano </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="pl" data-locale="pl" href="/pl/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Polski </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="fr" data-locale="fr" href="/fr/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Français </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="ko" data-locale="ko" href="/ko/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> 한국어 </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="es" data-locale="es" href="/es/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Español </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="pt" data-locale="pt" href="/pt/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Português (Portugal) </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="pt-BR" data-locale="pt-br" href="/pt-br/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Português (Brasil) </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="tr" data-locale="tr" href="/tr/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Türkçe </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="th" data-locale="th" href="/th/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> ไทย </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="nl" data-locale="nl" href="/nl/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Nederlands </a> </li><li role="none" data-astro-cid-fhi4yxem> <a role="menuitem" hreflang="vi" data-locale="vi" href="/vi/about/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Tiếng Việt </a> </li> </ul> </div>   </div>  <a href="/" id="footer-logo" aria-label="Z2 home" class="absolute top-0 right-0 pointer-events-auto"> <div aria-hidden="true" style="height:260px;width:372px;background-color:#231C13;-webkit-mask:url('/brand/01-Logos/02-Digital/Negative/Z2_Logo_NEG_RGB_trimmed.svg') no-repeat center/contain;mask:url('/brand/01-Logos/02-Digital/Negative/Z2_Logo_NEG_RGB_trimmed.svg') no-repeat center/contain;"></div> </a> </div> </div> </footer>  <div id="footer-logo-ctx" role="menu" aria-label="Logo options" class="fixed z-[9999] hidden"> <div class="bg-white border border-sand-600 rounded shadow-md overflow-hidden min-w-[190px] font-sans">  <button data-logo-action="newtab" role="menuitem" class="flex items-center gap-2.5 w-full px-3.5 py-2.5 text-sm font-medium text-sand-800 hover:bg-sand-100 transition-colors text-left"> <svg class="w-4 h-4 text-sand-500 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.75" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"></path> </svg> Open in new tab </button> <div class="h-px bg-sand-300"></div>  <div class="flex items-center gap-2.5 px-3.5 py-2.5 cursor-default select-none"> <svg class="w-4 h-4 text-sand-500 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.75" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"></path> </svg> <span class="text-sm font-medium text-sand-800">Download Z2 Logo</span> </div>  <button data-logo-dl="svg" role="menuitem" class="flex items-center gap-2.5 w-full px-3.5 py-2 text-xs font-medium text-sand-700 hover:bg-sand-100 transition-colors text-left"> <svg class="w-4 h-4 text-sand-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.75" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M7 8l-4 4 4 4M17 8l4 4-4 4M14 4l-4 16"></path> </svg>
482SVG
483</button>  <button data-logo-dl="png" role="menuitem" class="flex items-center gap-2.5 w-full px-3.5 py-2 text-xs font-medium text-sand-700 hover:bg-sand-100 transition-colors text-left"> <svg class="w-4 h-4 text-sand-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.75" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"></path> </svg>
484PNG
485</button>  <button data-logo-dl="jpg" role="menuitem" class="flex items-center gap-2.5 w-full px-3.5 py-2 mb-1 text-xs font-medium text-sand-700 hover:bg-sand-100 transition-colors text-left"> <svg class="w-4 h-4 text-sand-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.75" aria-hidden="true"> <rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect> <circle cx="8.5" cy="8.5" r="1.5"></circle> <path stroke-linecap="round" stroke-linejoin="round" d="M21 15l-5-5L5 21"></path> </svg>
486JPG
487</button> </div> </div> 
487<script>
488  /* ── Logo context menu ──────────────────────────────────────── */
489  (function () {
490    const logoLink = document.getElementById('footer-logo');
491    const ctxMenu  = document.getElementById('footer-logo-ctx');
492    if (!logoLink || !ctxMenu) return;
493
494    const logoFiles = {
495      svg: { url: '/brand/01-Logos/02-Digital/Negative/Z2_Logo_NEG_RGB.svg', name: 'Z2_Logo_White.svg' },
496      png: { url: '/brand/01-Logos/02-Digital/Negative/Z2_Logo_NEG_RGB.png', name: 'Z2_Logo_White.png' },
497      jpg: { url: '/brand/01-Logos/02-Digital/Negative/Z2_Logo_NEG_RGB.jpg', name: 'Z2_Logo_White.jpg' },
498    };
499
500    function hideCtx() { ctxMenu.classList.add('hidden'); }
501
502    function showCtx(x, y) {
503      ctxMenu.classList.remove('hidden');
504      var margin = 8;
505      var w = ctxMenu.offsetWidth || 200;
506      var h = ctxMenu.offsetHeight || 160;
507      var left = Math.min(x, window.innerWidth  - w - margin);
508      var top  = Math.min(y, window.innerHeight - h - margin);
509      ctxMenu.style.left = left + 'px';
510      ctxMenu.style.top  = top  + 'px';
511    }
512
513    logoLink.addEventListener('contextmenu', function (e) {
514      e.preventDefault();
515      showCtx(e.clientX, e.clientY);
516    });
517
518    ctxMenu.querySelector('[data-logo-action="newtab"]') && ctxMenu.querySelector('[data-logo-action="newtab"]').addEventListener('click', function () {
519      window.open('/', '_blank', 'noopener,noreferrer');
520      hideCtx();
521    });
522
523    ctxMenu.querySelectorAll('[data-logo-dl]').forEach(function (btn) {
524      btn.addEventListener('click', function () {
525        var fmt  = btn.getAttribute('data-logo-dl');
526        var file = logoFiles[fmt];
527        if (!file) return;
528        var a = document.createElement('a');
529        a.href = file.url;
530        a.download = file.name;
531        document.body.appendChild(a);
532        a.click();
533        document.body.removeChild(a);
534        hideCtx();
535      });
536    });
537
538    document.addEventListener('click', hideCtx);
539    document.addEventListener('keydown', function (e) { if (e.key === 'Escape') hideCtx(); });
540    document.addEventListener('contextmenu', function (e) {
541      if (!logoLink.contains(e.target)) hideCtx();
542    });
543  })();
544
545  /* ── Mosaic terrain animation ───────────────────────────────── */
546  (function () {
547    var canvas = document.getElementById('footer-terrain');
548    var wrap   = canvas && canvas.closest('footer');
549    if (!canvas || !canvas.getContext || !wrap) return;
550
551    var ctx = canvas.getContext('2d');
552    var CELL = 5;
553    var MOUSE_R = 320;   /* px — wide diffuse glow */
554    var W, H, cols, rows, t = 0, raf = null;
555    var mxRaw = -9999, myRaw = -9999; /* mouse in page coords */
556
557    function resize() {
558      W = canvas.width  = canvas.offsetWidth;
559      H = canvas.height = canvas.offsetHeight;
560      cols = Math.ceil(W / CELL) + 1;
561      rows = Math.ceil(H / CELL) + 1;
562    }
563
564    /* 4 sine waves — slow rolling hills */
565    function fieldVal(c, r) {
566      var x = c / Math.max(cols - 1, 1);
567      var y = r / Math.max(rows - 1, 1);
568      return (
569        Math.sin(x * 3.1  + t * 0.22)              * 0.38 +
570        Math.sin(x * 6.8  + y * 1.4 + t * 0.30)    * 0.26 +
571        Math.sin((x - y)  * 4.5 + t * 0.18)         * 0.20 +
572        Math.sin(y * 5.2  - t * 0.14)               * 0.16
573      );
574    }
575
576    function draw() {
577      ctx.clearRect(0, 0, W, H);
578
579      /* mouse position relative to canvas */
580      var rect = canvas.getBoundingClientRect();
581      var mx = mxRaw - rect.left;
582      var my = myRaw - rect.top;
583      var hasMouse = mxRaw > -9000;
584
585      for (var r = 0; r < rows; r++) {
586        for (var c = 0; c < cols; c++) {
587          var v = (fieldVal(c, r) + 1) * 0.5; /* → [0,1] */
588
589          /* edge vignette — fade left/right/bottom edges */
590          var ex = c / Math.max(cols - 1, 1);
591          var ey = r / Math.max(rows - 1, 1);
592          var edgeX = Math.min(ex / 0.18, (1 - ex) / 0.18, 1);
593          var edgeY = Math.min(ey / 0.12, 1);
594          var edge  = edgeX * edgeY;
595
596          /* constant dim base so grid never disappears */
597          var a = 0.028 * edge;
598
599          /* height contribution — ramps up on peaks */
600          if (v > 0.44) {
601            a += Math.pow((v - 0.44) / 0.56, 1.5) * 0.24 * edge;
602          }
603
604          /* subtle mouse proximity glow */
605          if (hasMouse) {
606            var cx = c * CELL + CELL * 0.5;
607            var cy = r * CELL + CELL * 0.5;
608            var dx = cx - mx, dy = cy - my;
609            var d2 = dx * dx + dy * dy;
610            if (d2 < MOUSE_R * MOUSE_R) {
611              var falloff = 1 - Math.sqrt(d2) / MOUSE_R;
612              a += falloff * 0.06;
613            }
614          }
615
616          ctx.fillStyle = 'rgba(255,255,255,' + Math.min(a, 0.46).toFixed(3) + ')';
617          ctx.fillRect(c * CELL, r * CELL, CELL - 1, CELL - 1);
618        }
619      }
620
621      t += 0.006;
622      raf = requestAnimationFrame(draw);
623    }
624
625    /* Track mouse on the wrap div (canvas has pointer-events:none) */
626    wrap.addEventListener('mousemove', function (e) {
627      mxRaw = e.clientX;
628      myRaw = e.clientY;
629    });
630    wrap.addEventListener('mouseleave', function () {
631      mxRaw = -9999;
632      myRaw = -9999;
633    });
634
635    /* Pause when footer scrolls off-screen */
636    if (typeof IntersectionObserver !== 'undefined') {
637      var io = new IntersectionObserver(function (entries) {
638        entries.forEach(function (e) {
639          if (e.isIntersecting) {
640            resize();
641            if (!raf) draw();
642          } else {
643            if (raf) { cancelAnimationFrame(raf); raf = null; }
644          }
645        });
646      }, { threshold: 0 });
647      io.observe(canvas);
648    } else {
649      resize();
650      draw();
651    }
652
653    var resizeTimer;
654    window.addEventListener('resize', function () {
655      clearTimeout(resizeTimer);
656      resizeTimer = setTimeout(resize, 120);
657    });
658  })();
659</script>
659 <div id="z2-exit-popup" class="z2ep-overlay fixed inset-0 z-[9998] flex items-center justify-center p-4 backdrop-blur-sm sm:p-6" data-cooldown-days="7" data-popup-id="default" hidden data-astro-cid-iottuixs> <div role="dialog" aria-modal="true" aria-labelledby="z2ep-headline" aria-describedby="z2ep-desc z2ep-bullets" tabindex="-1" class="z2ep-card relative max-h-[92vh] w-full border border-sand-300 bg-sand-100 shadow-2xl outline-none focus:outline-none focus-visible:outline-none max-w-4xl sm:grid sm:grid-cols-[1.15fr_0.85fr]" data-astro-cid-iottuixs> <button type="button" class="z2ep-close absolute right-4 top-4 z-10 inline-flex h-9 w-9 items-center justify-center rounded-full bg-white/90 text-sand-700 shadow-sm transition-colors hover:bg-white hover:text-sand-900" aria-label="Close" data-astro-cid-iottuixs> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" data-astro-cid-iottuixs="true" class="lucide lucide-x h-5 w-5">  <path d="M18 6 6 18"></path> <path d="m6 6 12 12"></path>  </svg> </button>  <div class="z2ep-media overflow-hidden bg-sand-200 h-48 sm:order-2 sm:h-auto" data-astro-cid-iottuixs> <img src="/images/exit-popups/supply-chain-watch.webp" alt class="h-full w-full object-cover" loading="lazy" data-astro-cid-iottuixs> </div>  <div class="relative p-6 sm:order-1 sm:p-10" data-astro-cid-iottuixs> <h2 id="z2ep-headline" class="type-header text-3xl leading-[1.08] text-sand-900 sm:text-4xl" data-astro-cid-iottuixs> <span class="block" data-astro-cid-iottuixs>Start your free trial.</span> <span class="block" data-astro-cid-iottuixs>Surface hidden supply-chain risk.</span> </h2>  <ul id="z2ep-bullets" class="mt-5 space-y-3" data-astro-cid-iottuixs> <li class="flex items-start gap-3 text-left" data-astro-cid-iottuixs> <span aria-hidden="true" class="mt-[10px] h-1.5 w-1.5 shrink-0 bg-sand-900" data-astro-cid-iottuixs></span> <span class="type-body text-sand-800" data-astro-cid-iottuixs>Part &amp; sub-tier risk</span> </li><li class="flex items-start gap-3 text-left" data-astro-cid-iottuixs> <span aria-hidden="true" class="mt-[10px] h-1.5 w-1.5 shrink-0 bg-sand-900" data-astro-cid-iottuixs></span> <span class="type-body text-sand-800" data-astro-cid-iottuixs>Compliance, PCN &amp; shortage</span> </li><li class="flex items-start gap-3 text-left" data-astro-cid-iottuixs> <span aria-hidden="true" class="mt-[10px] h-1.5 w-1.5 shrink-0 bg-sand-900" data-astro-cid-iottuixs></span> <span class="type-body text-sand-800" data-astro-cid-iottuixs>Alerts routed to your team</span> </li> </ul>  <form id="exit-popup-capture" action="/free-trial" method="GET" novalidate class="z2ep-form mt-7" data-astro-cid-iottuixs> <div class="flex flex-col gap-2 rounded-[28px] border-2 border-primary-deep bg-white p-2 sm:flex-row sm:items-center sm:gap-0 sm:rounded-full" data-astro-cid-iottuixs> <input type="email" placeholder="Your work email" aria-label="Work email address" class="z2ep-email w-full min-w-0 bg-transparent px-5 py-3 text-base text-sand-900 placeholder-sand-800 outline-none focus:outline-none focus-visible:outline-none focus:ring-0 sm:w-auto sm:flex-1" data-astro-cid-iottuixs> <button type="submit" class="z2ep-cta inline-flex w-full flex-shrink-0 items-center justify-center gap-1.5 rounded-full border-2 border-primary-deep bg-signal-400 px-6 py-3 text-sm font-medium text-sand-900 transition-colors hover:bg-primary-deep hover:text-sand-100 sm:w-auto sm:text-base" data-astro-cid-iottuixs> Start free trial <svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" aria-hidden="true" data-astro-cid-iottuixs> <path stroke-linecap="round" stroke-linejoin="round" d="M17 8l4 4m0 0l-4 4m4-4H3" data-astro-cid-iottuixs></path> </svg> </button> </div> <p class="z2-form-err z2ep-err" role="alert" aria-live="polite" data-astro-cid-iottuixs></p> </form> </div> </div> </div>  
659<script type="module">const t=document.getElementById("z2-exit-popup");if(t){let d=function(){try{const e=JSON.parse(localStorage.getItem(m)||"{}");return e&&e.day===y()&&Number(e.count)||0}catch{return 0}},h=function(){return f?!1:d()>=k},E=function(){try{localStorage.setItem(m,JSON.stringify({day:y(),count:d()+1}))}catch{}},S=function(e){if(e.key!=="Tab")return;const n=p.querySelectorAll('a[href],button:not([disabled]),input,[tabindex]:not([tabindex="-1"])');if(!n.length)return;const _=n[0],g=n[n.length-1];e.shiftKey&&document.activeElement===_?(e.preventDefault(),g.focus()):!e.shiftKey&&document.activeElement===g&&(e.preventDefault(),_.focus())},l=function(e){e.key==="Escape"?s("dismiss"):S(e)},u=function(){w||h()||(w=!0,E(),i=document.activeElement,t.hidden=!1,requestAnimationFrame(()=>t.classList.add("is-open")),document.body.style.overflow="hidden",p.focus(),document.addEventListener("keydown",l),o("z2_exit_popup_view"))},s=function(e){t.classList.remove("is-open"),document.body.style.overflow="",document.removeEventListener("keydown",l),window.setTimeout(()=>{t.hidden=!0},200),i&&i.focus(),e==="dismiss"&&o("z2_exit_popup_dismiss")};const p=t.querySelector('[role="dialog"]'),L=t.querySelector(".z2ep-close"),b=t.querySelector(".z2ep-form"),z=t.getAttribute("data-popup-id")||"exit-popup",m="z2_exit_popup_seen",k=2,f=/^(localhost|127\.0\.0\.1|0\.0\.0\.0)$/.test(location.hostname),o=e=>(window.dataLayer=window.dataLayer||[]).push({event:e,popup_id:z}),y=()=>new Date().toDateString();let i=null,w=!1;L.addEventListener("click",()=>s("dismiss")),t.addEventListener("click",e=>{e.target===t&&s("dismiss")}),b?.addEventListener("submit",()=>o("z2_exit_popup_click")),t.querySelector("a.z2ep-cta")?.addEventListener("click",()=>o("z2_exit_popup_click"));let c=f;const r=()=>{c=!0};let a=1;try{a=(parseInt(sessionStorage.getItem("z2_pageviews")||"0",10)||0)+1,sessionStorage.setItem("z2_pageviews",String(a))}catch{}a>=2&&r(),window.setTimeout(r,3e4),document.documentElement.addEventListener("mouseleave",e=>{c&&e.clientY<=0&&u()});let v=window.scrollY;window.addEventListener("scroll",()=>{const e=window.scrollY;(e+window.innerHeight)/document.documentElement.scrollHeight>=.5&&r(),c&&e<150&&v-e>60&&u(),v=e},{passive:!0})}</script>
659     
659<script type="application/json" id="z2-form-err-strings">{"empty":"Please enter your work email.","invalid":"Please enter a valid email address.","free":"Please use your work email address, not a personal one.","disposable":"Please use a valid work email address.","generic":"Please use your work email address.","phoneRequired":"Enter your phone number.","phoneInvalid":"Enter a valid phone number.","firstNameRequired":"Enter your first name.","lastNameRequired":"Enter your last name.","companyRequired":"Enter your company name.","fieldRequired":"This field is required.","nameRequired":"Please enter your first and last name.","companyEnter":"Please enter your company.","contactReason":"Please choose at least one contact reason.","submitError":"Something went wrong. Please try again or email [email protected].","contactSubmitError":"Something went wrong. Please email [email protected] and we'll get right back to you.","webinarSubmitError":"Something went wrong. Email [email protected] and we'll register you.","gatedSubmitError":"Something went wrong. Email [email protected] and we'll help.","newsletterNotLive":"Signup isn't live here yet. Email [email protected] and we'll add you to the brief.","newsletterError":"Something went wrong. Email [email protected] and we'll add you to the brief.","sending":"Sending…","preparing":"Preparing…"}</script>
659 
659<script type="module">window.dataLayer=window.dataLayer||[];(function(e,n,r,t,m){e[t]=e[t]||[],e[t].push({"gtm.start":new Date().getTime(),event:"gtm.js"});var g=n.getElementsByTagName(r)[0],a=n.createElement(r),o="";a.async=!0,a.src="https://www.googletagmanager.com/gtm.js?id="+m+o,g.parentNode.insertBefore(a,g)})(window,document,"script","dataLayer","GTM-TFT483R");</script>
659  
659<script>
660    (function () {
661      function payload() {
662        return JSON.stringify({
663          landing: location.href,
664          referrer: document.referrer || '',
665          path: location.pathname,
666        });
667      }
668      function send() {
669        try {
670          fetch('/api/track', {
671            method: 'POST',
672            keepalive: true,
673            headers: { 'Content-Type': 'application/json' },
674            body: payload(),
675          });
676        } catch (e) {}
677      }
678      send();
679      // EU: if they accept analytics after load, fire again so the server can
680      // mint + record first-touch immediately (server is idempotent on vid).
681      try {
682        document.addEventListener('cookieyes_consent_update', function () { send(); }, { once: true });
683      } catch (e) {}
684    })();
685  </script>
685 </body> </html>  
685<script type="module" src="/_astro/about.astro_astro_type_script_index_0_lang.CXyCFw6E.js"></script>

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.