PageSourceSearch

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

html z2-homepage.pages.dev collected 2026-10-03 06:01:40 UTC 208,663 bytes, 1,211 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>Supply Chain Risk Management Platform | Z2Data</title><meta name="description" content="Z2 is a leading platform for managing supply chain risk. Build resilience in engineering, compliance, and procurement in one fully integrated platform."><link rel="canonical" href="https://www.z2data.com/"><link rel="alternate" hreflang="en" href="https://www.z2data.com/"><link rel="alternate" hreflang="ja" href="https://www.z2data.com/ja/"><link rel="alternate" hreflang="de" href="https://www.z2data.com/de/"><link rel="alternate" hreflang="it" href="https://www.z2data.com/it/"><link rel="alternate" hreflang="pl" href="https://www.z2data.com/pl/"><link rel="alternate" hreflang="fr" href="https://www.z2data.com/fr/"><link rel="alternate" hreflang="ko" href="https://www.z2data.com/ko/"><link rel="alternate" hreflang="es" href="https://www.z2data.com/es/"><link rel="alternate" hreflang="pt" href="https://www.z2data.com/pt/"><link rel="alternate" hreflang="pt-BR" href="https://www.z2data.com/pt-br/"><link rel="alternate" hreflang="tr" href="https://www.z2data.com/tr/"><link rel="alternate" hreflang="th" href="https://www.z2data.com/th/"><link rel="alternate" hreflang="nl" href="https://www.z2data.com/nl/"><link rel="alternate" hreflang="vi" href="https://www.z2data.com/vi/"><link rel="alternate" hreflang="x-default" href="https://www.z2data.com/"><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/"><meta property="og:title" content="Supply Chain Risk Management Platform | Z2Data"><meta property="og:description" content="Z2 is a leading platform for managing supply chain risk. Build resilience in engineering, compliance, and procurement in one fully integrated platform."><meta property="og:image" content="https://z2-homepage.pages.dev/og/card.png?title=Supply+Chain+Risk+Management+Platform&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="Supply Chain Risk Management Platform | Z2Data"><meta name="twitter:description" content="Z2 is a leading platform for managing supply chain risk. Build resilience in engineering, compliance, and procurement in one fully integrated platform."><meta name="twitter:image" content="https://z2-homepage.pages.dev/og/card.png?title=Supply+Chain+Risk+Management+Platform&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":"WebPage","@id":"https://www.z2data.com/#webpage","url":"https://www.z2data.com/","name":"Supply Chain Risk Management Platform | Z2Data","description":"Z2 is a leading platform for managing supply chain risk. Build resilience in engineering, compliance, and procurement in one fully integrated platform.","isPartOf":{"@id":"https://www.z2data.com/#website"},"publisher":{"@id":"https://www.z2data.com/#organization"},"speakable":{"@type":"SpeakableSpecification","cssSelector":["h1",".speakable","article p:first-of-type"]}}]</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>.prm-cvs-wrap[data-astro-cid-nh3vzs7k]{position:relative;width:100%;height:100%;overflow:hidden}#prm-cvs[data-astro-cid-nh3vzs7k]{display:block;width:100%;height:100%}.prm-cvs-mask[data-astro-cid-nh3vzs7k]{position:absolute;pointer-events:none;z-index:2}.prm-cvs-mask--t[data-astro-cid-nh3vzs7k]{top:0;left:0;right:0;height:200px;background:linear-gradient(to bottom,#f9f8f0,#f9f8f000)}.prm-cvs-mask--b[data-astro-cid-nh3vzs7k]{bottom:0;left:0;right:0;height:200px;background:linear-gradient(to top,#f9f8f0,#f9f8f000)}.prm-cvs-mask--l[data-astro-cid-nh3vzs7k]{top:0;bottom:0;left:0;width:120px;background:linear-gradient(to right,#f9f8f0,#f9f8f000)}.prm-cvs-wrap--compact[data-astro-cid-nh3vzs7k] .prm-cvs-mask--t[data-astro-cid-nh3vzs7k]{height:46px;background:linear-gradient(to bottom,#fff,#fff0)}.prm-cvs-wrap--compact[data-astro-cid-nh3vzs7k] .prm-cvs-mask--b[data-astro-cid-nh3vzs7k]{height:38px;background:linear-gradient(to top,#fff,#fff0)}.prm-cvs-wrap--compact[data-astro-cid-nh3vzs7k] .prm-cvs-mask--l[data-astro-cid-nh3vzs7k]{display:none}
3</style>
4<link rel="stylesheet" href="/_astro/index.5qA8cLUR.css">
5<link rel="stylesheet" href="/_astro/index.C1NMvafm.css">
6<link rel="stylesheet" href="/_astro/_slug_.CaTaghe6.css">
7<style>.cs-page[data-astro-cid-3so5ctkp]{min-height:100vh}.cs-hero[data-astro-cid-3so5ctkp]{max-width:1100px;margin:0 auto;padding:3.5rem 1.5rem 0}.cs-hero-inner[data-astro-cid-3so5ctkp]{max-width:800px}.cs-back[data-astro-cid-3so5ctkp]{display:inline-block;font-family:Inter,DM Sans,sans-serif;font-size:.875rem;font-weight:500;text-decoration:none;margin-bottom:2rem;transition:color .18s ease}.cs-back[data-astro-cid-3so5ctkp]:hover{color:#548042}.cs-eyebrow[data-astro-cid-3so5ctkp]{font-family:Inter,DM Sans,sans-serif;font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;margin:0 0 1rem}.cs-title[data-astro-cid-3so5ctkp]{font-family:var(--font-heading);font-size:clamp(2rem,4.5vw,3.25rem);font-weight:400;line-height:1.08;letter-spacing:-.02em;margin:0}.cs-subtitle[data-astro-cid-3so5ctkp]{font-family:Inter,DM Sans,sans-serif;font-size:1.125rem;line-height:1.55;margin:1.25rem 0 0}.cs-customer[data-astro-cid-3so5ctkp]{margin-top:2rem;display:flex;align-items:center}.cs-logo[data-astro-cid-3so5ctkp]{max-height:44px;max-width:200px;width:auto;-o-object-fit:contain;object-fit:contain}.cs-customer-name[data-astro-cid-3so5ctkp]{font-family:var(--font-heading);font-size:1.5rem;font-weight:400}.cs-hero-media[data-astro-cid-3so5ctkp]{max-width:1100px;margin:3rem auto 0;border:1px solid;overflow:hidden;aspect-ratio:16 / 9}.cs-hero-media[data-astro-cid-3so5ctkp] img[data-astro-cid-3so5ctkp]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.cs-stats-wrap[data-astro-cid-3so5ctkp]{max-width:1100px;margin:3.5rem auto 0;padding:0 1.5rem}.cs-stats-grid[data-astro-cid-3so5ctkp]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));border:1px solid;gap:1px;background-color:var(--color-sand-600)}.cs-body-wrap[data-astro-cid-3so5ctkp]{max-width:720px;margin:0 auto;padding:3.5rem 1.5rem 5rem}.cs-quote[data-astro-cid-3so5ctkp]{margin:0 0 3rem;padding:.25rem 0 .25rem 1.75rem;border-left:3px solid}.cs-quote-text[data-astro-cid-3so5ctkp]{font-family:var(--font-body);font-size:clamp(1.375rem,2.5vw,1.75rem);font-weight:400;line-height:1.3;letter-spacing:-.01em;margin:0}.cs-quote-cite[data-astro-cid-3so5ctkp]{display:block;margin-top:1rem;font-family:Inter,DM Sans,sans-serif;font-size:.875rem;font-style:normal;font-weight:500}.cs-cta[data-astro-cid-3so5ctkp]{margin-top:3.5rem}.cs-cta-btn[data-astro-cid-3so5ctkp]{display:inline-block;font-family:Inter,DM Sans,sans-serif;font-size:.9375rem;font-weight:600;padding:.875rem 2rem;border-radius:2px;text-decoration:none;transition:background-color .18s ease}.cs-cta-btn[data-astro-cid-3so5ctkp]:hover{background-color:#0d201b}@media(max-width:768px){.cs-hero[data-astro-cid-3so5ctkp]{padding-top:2.5rem}.cs-body-wrap[data-astro-cid-3so5ctkp]{padding-block:2.5rem 3.5rem}}.cstat[data-astro-cid-gxntwll3]{display:flex;flex-direction:column;gap:.625rem;padding:2rem 1.75rem}.cstat-value[data-astro-cid-gxntwll3]{font-family:var(--font-heading);font-size:clamp(1.75rem,3.5vw,2.75rem);font-weight:400;line-height:1;letter-spacing:-.02em}.cstat-label[data-astro-cid-gxntwll3]{font-family:Inter,DM Sans,sans-serif;font-size:.875rem;line-height:1.45}section[data-astro-cid-ceiixr7p]{display:flex;justify-content:center;padding:60px 0}div[data-astro-cid-ceiixr7p]{display:inline-flex;background-color:#eff1f3;text-align:center;padding:15px 30px;border-radius:5px}span[data-astro-cid-ceiixr7p].component{color:#00b3b0;font-weight:700}
8.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}}
9.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}
9@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}}
10</style>
10<script type="module" src="/_astro/page.DZZVrAzF.js"></script>
10</head> <body>  
10<script>(function(){const LOCALES = ["en","ja","de","it","pl","fr","ko","es","pt","pt-br","tr","th","nl","vi"];
11const NON_DEFAULT = ["ja","de","it","pl","fr","ko","es","pt","pt-br","tr","th","nl","vi"];
12const DEFAULT_LOCALE = "en";
13const AVAILABLE = ["ja","de","it","pl","fr","ko","es","pt","pt-br","tr","th","nl","vi"];
14const 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"}};
15
16  (function () {
17    try {
18      // Never act for automation/crawlers we can detect.
19      if (navigator.webdriver) return;
20      var langs = navigator.languages && navigator.languages.length ? navigator.languages : [navigator.language];
21      if (!langs || !langs.length) return;
22
23      function readCookie(n) {
24        var m = document.cookie.match('(^|;)\\s*' + n + '\\s*=\\s*([^;]+)');
25        return m ? m[2] : null;
26      }
27      function setCookie(n, v) {
28        document.cookie = n + '=' + v + ';path=/;max-age=31536000;samesite=lax';
29      }
30
31      // Match the full tag first, then fall back to the base language — a bare
32      // slice(0,2) breaks region-qualified locales in both directions.
33      var current = (document.documentElement.lang || 'en').toLowerCase();
34      if (LOCALES.indexOf(current) < 0) current = current.split('-')[0];
35      var path = location.pathname;
36      var hasPrefix = NON_DEFAULT.some(function (l) {
37        return path === '/' + l || path.indexOf('/' + l + '/') === 0;
38      });
39
40      // First supported locale among the browser's ordered preferences. Prefer an
41      // exact region match (pt-BR → pt-br) over the base language (pt-BR → pt).
42      var preferred = null;
43      for (var i = 0; i < langs.length; i++) {
44        var full = (langs[i] || '').toLowerCase();
45        if (LOCALES.indexOf(full) >= 0) { preferred = full; break; }
46        var base = full.split('-')[0];
47        if (LOCALES.indexOf(base) >= 0) { preferred = base; break; }
48      }
49
50      var cookie = readCookie('pref_lang');
51      var chosen = cookie && LOCALES.indexOf(cookie) >= 0 ? cookie : null;
52      var desired = chosen || preferred;
53      if (!desired) return;
54
55      if (!hasPrefix) {
56        // On an English URL: redirect to the desired locale only if THIS page is
57        // actually translated into it (else the /ja/ URL is just English anyway).
58        if (desired !== DEFAULT_LOCALE && AVAILABLE.indexOf(desired) >= 0) {
59          if (!chosen) setCookie('pref_lang', desired);
60          location.replace('/' + desired + path + location.search + location.hash);
61          return;
62        }
63        return;
64      }
65
66      // On a localized URL: if the browser prefers a DIFFERENT language that this
67      // page is genuinely translated into, and the user hasn't settled on the
68      // current one, offer a banner.
69      if (preferred && preferred !== current && chosen !== current && AVAILABLE.indexOf(preferred) >= 0) {
70        showBanner(preferred);
71      }
72
73      function showBanner(loc) {
74        if (document.getElementById('z2-lang-banner')) return;
75        var c = COPY[loc];
76        if (!c) return;
77        var rest = path.replace(new RegExp('^/' + current + '(?=/|$)'), '') || '/';
78        var href = '/' + loc + (rest === '/' ? '' : rest) + location.search + location.hash;
79
80        var bar = document.createElement('div');
81        bar.id = 'z2-lang-banner';
82        bar.setAttribute('role', 'region');
83        bar.setAttribute('aria-label', c.label);
84        bar.style.cssText =
85          'position:fixed;left:50%;transform:translateX(-50%);bottom:16px;z-index:9998;' +
86          'background:#231C13;color:#fff;border-radius:9999px;padding:10px 16px;display:flex;' +
87          'align-items:center;gap:14px;font:14px/1.2 system-ui,-apple-system,sans-serif;' +
88          'box-shadow:0 8px 24px rgba(0,0,0,.25);max-width:92vw';
89
90        var span = document.createElement('span');
91        span.textContent = c.prompt + ' ' + c.label + '?';
92
93        var view = document.createElement('a');
94        view.href = href;
95        view.textContent = c.view;
96        view.style.cssText =
97          'color:#231C13;background:#8CC04F;border-radius:9999px;padding:6px 14px;' +
98          'text-decoration:none;font-weight:600;white-space:nowrap';
99        view.addEventListener('click', function () { setCookie('pref_lang', loc); });
100
101        var x = document.createElement('button');
102        x.type = 'button';
103        x.setAttribute('aria-label', c.dismiss);
104        x.textContent = '✕';
105        x.style.cssText = 'background:none;border:0;color:rgba(255,255,255,.6);cursor:pointer;font-size:14px;line-height:1';
106        x.addEventListener('click', function () { setCookie('pref_lang', current); bar.remove(); });
107
108        bar.appendChild(span);
109        bar.appendChild(view);
110        bar.appendChild(x);
111        document.body.appendChild(bar);
112      }
113    } catch (e) {}
114  })();
115})();</script>
115  
115<script>(function(){const NDL = ["ja","de","it","pl","fr","ko","es","pt","pt-br","tr","th","nl","vi"];
116
117    (function () {
118      var seg = location.pathname.split('/')[1];
119      if (NDL.indexOf(seg) === -1) return;
120      var p = '/' + seg;
121      function hasLocalePrefix(h) {
122        for (var k = 0; k < NDL.length; k++) {
123          var q = '/' + NDL[k];
124          if (h === q || h.indexOf(q + '/') === 0) return true;
125        }
126        return false;
127      }
128      function fix(root) {
129        var links = (root || document).querySelectorAll('a[href^="/"]');
130        for (var i = 0; i < links.length; i++) {
131          var a = links[i], h = a.getAttribute('href');
132          if (!h || h.charAt(0) !== '/' || h.indexOf('//') === 0) continue;
133          if (hasLocalePrefix(h)) continue;                              // already localized
134          if (h.indexOf('/api/') === 0 || h.indexOf('/og/') === 0) continue;
135          if (a.hasAttribute('hreflang') || a.hasAttribute('data-no-localize')) continue;
136          a.setAttribute('href', p + h);
137        }
138      }
139      function run() { fix(document); }
140      if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', run);
141      else run();
142      // Re-run if components inject links after load (mega-menus, carousels).
143      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) {}
144    })();
145  })();</script>
vendor: 70 bytes, line 145
145  <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=
145GTM-TFT483R
vendor: 85 bytes, line 145
145" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript>  
145<style>iframe[src*="hs-web-interactive"],iframe[src*="hs-sites.com"]{display:none!important}</style> 
145<script>
146    (function () {
147      function overlayOf(ifr) {
148        // Walk up to the outermost positioned container HubSpot injects (its
149        // backdrop), staying inside HubSpot's own appended subtree, and drop it
150        // so no ghost overlay blocks clicks. Falls back to the iframe itself.
151        var el = ifr, top = ifr;
152        for (var i = 0; i < 6 && el && el !== document.body; i++) {
153          var pos = getComputedStyle(el).position;
154          if (pos === 'fixed' || pos === 'absolute') top = el;
155          el = el.parentElement;
156        }
157        return top || ifr;
158      }
159      function sweep(node) {
160        if (!(node instanceof HTMLElement)) return;
161        var sel = 'iframe[src*="hs-web-interactive"],iframe[src*="hs-sites.com"]';
162        var ifr = node.matches && node.matches(sel) ? node : (node.querySelector && node.querySelector(sel));
163        if (ifr) overlayOf(ifr).remove();
164      }
165      // Belt-and-suspenders: also close via HubSpot's supported CTA SDK.
166      window.hsCallsToActionReady = window.hsCallsToActionReady || [];
167      window.hsCallsToActionReady.push(function () {
168        try { window.HubSpotCallsToActions.closeAll(); } catch (e) {}
169      });
170      new MutationObserver(function (muts) {
171        for (var m = 0; m < muts.length; m++) {
172          for (var n = 0; n < muts[m].addedNodes.length; n++) sweep(muts[m].addedNodes[n]);
173        }
174      }).observe(document.documentElement, { childList: true, subtree: true });
175    })();
176  </script>
176 <div id="webinar-incomplete-compliance-documentation" data-announcement-bar data-expires="2026-10-28T08:00:00-07:00" class="relative hidden lg:flex items-center justify-center bg-primary-deep text-sand-100 font-body text-sm leading-tight py-[10px] px-12"><p class="m-0 text-center"><span class="text-signal-400">Webinar · October 28:</span> Your Compliance Documentation Is Incomplete. Now What? <a href="/webinars/incomplete-compliance-documentation-now-what/?utm_source=homepage-announcement-bar&#38;utm_medium=website&#38;utm_campaign=incomplete-compliance-documentation-webinar" class="font-medium text-sand-100 underline underline-offset-2 hover:text-white">Book your spot</a></p><button type="button" data-announcement-close aria-label="Dismiss announcement" class="absolute right-4 top-1/2 inline-flex -translate-y-1/2 items-center justify-center text-sand-100/70 transition-colors hover:text-white"><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" class="lucide lucide-x h-4 w-4">  <path d="M18 6 6 18"></path> <path d="m6 6 12 12"></path>  </svg></button>
176<script>
177      (function () {
178        var bar = document.querySelector('[data-announcement-bar]');
179        if (!bar) return;
180        var expiresISO = bar.getAttribute('data-expires') || '';
181        var key = 'z2-annb-dismissed:' + bar.id;
182
183        // Stay dismissed for THIS promo (keyed by its expiry so a later promo
184        // reusing the same id re-appears).
185        try { if (localStorage.getItem(key) === expiresISO) return bar.remove(); } catch (e) {}
186
187        // Auto-remove once the promo window has closed.
188        var exp = Date.parse(expiresISO);
189        if (!isNaN(exp) && Date.now() >= exp) return bar.remove();
190
191        var btn = bar.querySelector('[data-announcement-close]');
192        if (btn) {
193          btn.addEventListener('click', function () {
194            try { localStorage.setItem(key, expiresISO); } catch (e) {}
195            bar.remove();
196          });
197        }
198      })();
199    </script>
199</div>  <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="/" 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/" 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/" 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/" 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/" 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/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Français </a> </li><li role="none" data-astro-cid-fhi4yxem>
199 <a role="menuitem" hreflang="ko" data-locale="ko" href="/ko/" 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/" 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/" 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/" 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/" 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/" 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/" 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/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Tiếng Việt </a> </li> </ul> </div>  
199<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>
199  <a href="https://app.z2data.com/login" class="whitespace-nowrap text-base font-medium text-sand-800 hover:text-sand-900 transition-colors duration-150" target="_blank" rel="noopener noreferrer" data-astro-cid-hnhh3bfe> Login </a> <a href="/demo" class="inline-flex items-center rounded-full border-2 border-primary-deep text-sand-900 text-sm font-medium px-5 py-2 transition-colors hover:bg-primary-deep hover:text-sand-100" data-astro-cid-hnhh3bfe> See a Demo </a> <a href="/free-trial" class="inline-flex items-center gap-1.5 rounded-full bg-sand-900 hover:bg-sand-800 text-white text-sm font-medium px-5 py-2 transition-colors" data-astro-cid-hnhh3bfe> Get started free <svg class="w-3.5 h-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-hnhh3bfe> <path stroke-linecap="round" stroke-linejoin="round" d="M17 8l4 4m0 0l-4 4m4-4H3" data-astro-cid-hnhh3bfe></path> </svg> </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>
199 <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>
199Component 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="https://app.z2data.com/login" target="_blank" rel="noopener noreferrer" class="block px-3 py-2.5 text-center text-sm font-medium text-sand-800 hover:bg-sand-200 rounded-full transition-colors" data-astro-cid-hnhh3bfe>Login</a> <a href="/demo" class="inline-flex items-center justify-center rounded-full border-2 border-primary-deep text-sand-900 text-sm font-medium px-5 py-2.5 transition-colors hover:bg-primary-deep hover:text-sand-100" data-astro-cid-hnhh3bfe> See a Demo </a> <a href="/free-trial" class="inline-flex items-center justify-center gap-1.5 rounded-full bg-sand-900 hover:bg-sand-800 text-white text-sm font-medium px-5 py-2.5 transition-colors" data-astro-cid-hnhh3bfe> Get started free <svg class="w-3.5 h-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-hnhh3bfe> <path stroke-linecap="round" stroke-linejoin="round" d="M17 8l4 4m0 0l-4 4m4-4H3" data-astro-cid-hnhh3bfe></path> </svg> </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="/" 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/" 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/" 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/" 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/" 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/" 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>
199 <a href="/ko/" 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/" 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/" 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/" 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/" 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/" 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/" 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/" 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> 
199<script>
200  // ── Mega menu: hover + click-sticky ───────────────────────────
201  let closeTimer  = null;
202  let stickyMenu  = null; // id of the menu that was clicked open
203
204  const backdrop = document.getElementById('nav-backdrop');
205
206  function showBackdrop() {
207    if (!backdrop) return;
208    backdrop.style.opacity = '1';
209    backdrop.classList.remove('pointer-events-none');
210    backdrop.classList.add('pointer-events-auto');
211  }
212
213  function hideBackdrop() {
214    if (!backdrop) return;
215    backdrop.style.opacity = '0';
216    backdrop.classList.add('pointer-events-none');
217    backdrop.classList.remove('pointer-events-auto');
218  }
219
220  const megaStack = document.getElementById('mega-stack');
221  const megaClip  = document.getElementById('mega-clip');
222
223  // Sets the shared frame height. `animate` is false on the first open,
224  // so the panel appears at full size instead of unrolling.
225  function setClipHeight(panel, animate) {
226    if (!megaClip || !panel) return;
227    if (!animate) megaClip.classList.add('no-anim');
228    megaClip.style.height = panel.offsetHeight + 'px';
229    if (!animate) {
230      void megaClip.offsetHeight; // flush the un-animated height
231      megaClip.classList.remove('no-anim');
232    }
233  }
234
235  function openMega(id) {
236    clearTimeout(closeTimer);
237
238    const panel   = document.getElementById('mega-' + id);
239    const btn     = document.getElementById('btn-' + id);
240    const chevron = document.getElementById('chevron-' + id);
241    if (!panel || !btn) return;
242
243    // Frame already up? Then this is a switch: keep the frame in place and
244    // just ease its height while the panels crossfade.
245    const wasOpen = !!megaStack?.classList.contains('is-open');
246
247    ['products', 'solutions'].filter(x => x !== id).forEach(id2 => {
248      // don't force-close a sticky sibling via hover; close it visually only if not sticky
249      if (stickyMenu !== id2) closeMega(id2);
250    });
251
252    setClipHeight(panel, wasOpen);
253    megaStack?.classList.add('is-open');
254    panel.classList.add('is-open');
255    btn.setAttribute('aria-expanded', 'true');
256    btn.classList.add('is-nav-active');
257    if (chevron) chevron.style.transform = 'rotate(180deg)';
258    showBackdrop();
259  }
260
261  function closeMega(id) {
262    const panel   = document.getElementById('mega-' + id);
263    const btn     = document.getElementById('btn-' + id);
264    const chevron = document.getElementById('chevron-' + id);
265    if (!panel) return;
266
267    panel.classList.remove('is-open');
268    if (btn) { btn.setAttribute('aria-expanded', 'false'); btn.classList.remove('is-nav-active'); }
269    if (chevron) chevron.style.transform = '';
270
271    const anyOpen = ['products', 'solutions'].some(
272      x => x !== id && document.getElementById('btn-' + x)?.getAttribute('aria-expanded') === 'true'
273    );
274    if (!anyOpen) {
275      megaStack?.classList.remove('is-open');
276      hideBackdrop();
277    }
278  }
279
280  function scheduleClose() {
281    // Never auto-close if a menu is sticky
282    if (stickyMenu) return;
283    closeTimer = setTimeout(() => {
284      ['products', 'solutions'].forEach(closeMega);
285    }, 120);
286  }
287
288  function cancelClose() {
289    clearTimeout(closeTimer);
290  }
291
292  function clearSticky() {
293    stickyMenu = null;
294    ['products', 'solutions'].forEach(closeMega);
295  }
296
297  // Hover on trigger buttons (only when no sticky menu active)
298  document.querySelectorAll('.mega-trigger').forEach((btn) => {
299    const id = btn.getAttribute('data-menu');
300
301    btn.addEventListener('mouseenter', () => {
302      if (stickyMenu && stickyMenu !== id) {
303        // hovering a different trigger while one is sticky: close old, open new
304        const prev = stickyMenu;
305        stickyMenu = null;
306        closeMega(prev);
307      }
308      openMega(id);
309    });
310
311    btn.addEventListener('mouseleave', scheduleClose);
312
313    // Click toggles sticky
314    btn.addEventListener('click', (e) => {
315      e.stopPropagation();
316      if (stickyMenu === id) {
317        // already sticky: unstick and close
318        stickyMenu = null;
319        closeMega(id);
320      } else {
321        // make this one sticky (close any previous sticky first)
322        if (stickyMenu) closeMega(stickyMenu);
323        stickyMenu = id;
324        openMega(id);
325      }
326    });
327  });
328
329  // Keep open while hovering the frame (unless sticky, in which case it's always open).
330  // Bound to the shared stack, so the pointer never falls into a dead gap mid-morph.
331  if (megaStack) {
332    megaStack.addEventListener('mouseenter', cancelClose);
333    megaStack.addEventListener('mouseleave', scheduleClose);
334  }
335
336  // Close on Escape
337  document.addEventListener('keydown', (e) => {
338    if (e.key === 'Escape') clearSticky();
339  });
340
341  // Backdrop click closes sticky
342  backdrop?.addEventListener('click', clearSticky);
343
344  // Click anywhere outside the header clears sticky
345  document.addEventListener('click', (e) => {
346    const header = document.getElementById('site-header');
347    if (header && !header.contains(e.target)) clearSticky();
348  });
349
350  // ── Header logo right-click context menu ─────────────────────
351  (function () {
352    const logoLink  = document.getElementById('header-logo');
353    const ctxMenu   = document.getElementById('header-logo-ctx');
354    if (!logoLink || !ctxMenu) return;
355
356    function hideCtx() { ctxMenu.classList.add('hidden'); }
357
358    function showCtx(x, y) {
359      ctxMenu.classList.remove('hidden');
360      const margin = 8;
361      const rect = ctxMenu.getBoundingClientRect();
362      const w = ctxMenu.offsetWidth || 200;
363      const h = ctxMenu.offsetHeight || 160;
364      const left = Math.min(x, window.innerWidth  - w - margin);
365      const top  = Math.min(y, window.innerHeight - h - margin);
366      ctxMenu.style.left = left + 'px';
367      ctxMenu.style.top  = top  + 'px';
368    }
369
370    logoLink.addEventListener('contextmenu', function (e) {
371      e.preventDefault();
372      showCtx(e.clientX, e.clientY);
373    });
374
375    ctxMenu.querySelector('[data-logo-action="newtab"]')?.addEventListener('click', function () {
376      window.open('/', '_blank', 'noopener,noreferrer');
377      hideCtx();
378    });
379
380    document.addEventListener('click', hideCtx);
381    document.addEventListener('keydown', function (e) { if (e.key === 'Escape') hideCtx(); });
382    document.addEventListener('contextmenu', function (e) {
383      if (!logoLink.contains(e.target)) hideCtx();
384    });
385  })();
386
387  // ── Mobile menu + language panel ──────────────────────────────
388  // Two full-width panels drop below the header on mobile: the hamburger nav
389  // and the globe language switcher. Only one is open at a time — opening one
390  // closes the other; Escape closes both.
391  const mobileBtn  = document.getElementById('mobile-menu-btn');
392  const mobileMenu = document.getElementById('mobile-menu');
393  const iconOpen   = document.getElementById('menu-icon-open');
394  const iconClose  = document.getElementById('menu-icon-close');
395  const langBtn    = document.getElementById('mobile-lang-btn');
396  const langMenu   = document.getElementById('mobile-lang-menu');
397
398  function closeMobileNav() {
399    mobileMenu?.classList.add('hidden');
400    iconOpen?.classList.remove('hidden');
401    iconClose?.classList.add('hidden');
402    mobileBtn?.setAttribute('aria-expanded', 'false');
403  }
404
405  function closeMobileLang() {
406    langMenu?.classList.add('hidden');
407    langBtn?.setAttribute('aria-expanded', 'false');
408  }
409
410  mobileBtn?.addEventListener('click', () => {
411    const willOpen = mobileMenu?.classList.contains('hidden');
412    closeMobileLang();
413    mobileMenu?.classList.toggle('hidden', !willOpen);
414    iconOpen?.classList.toggle('hidden', !!willOpen);
415    iconClose?.classList.toggle('hidden', !willOpen);
416    mobileBtn.setAttribute('aria-expanded', String(!!willOpen));
417  });
418
419  langBtn?.addEventListener('click', () => {
420    const willOpen = langMenu?.classList.contains('hidden');
421    closeMobileNav();
422    langMenu?.classList.toggle('hidden', !willOpen);
423    langBtn.setAttribute('aria-expanded', String(!!willOpen));
424  });
425
426  // Persist the explicit language choice so the auto-detect redirect honors it
427  // (mirrors the desktop LangSwitcher behavior). Read data-locale, NOT hreflang:
428  // hreflang carries BCP-47 casing (pt-BR) but LocaleAutoDetect matches the
429  // cookie against LOCALES, which holds the lowercase code (pt-br).
430  langMenu?.querySelectorAll('a[data-locale]').forEach((a) => {
431    a.addEventListener('click', () => {
432      const code = a.getAttribute('data-locale');
433      if (code) document.cookie = `pref_lang=${code};path=/;max-age=31536000;samesite=lax`;
434    });
435  });
436
437  document.addEventListener('keydown', (e) => {
438    if (e.key === 'Escape') { closeMobileNav(); closeMobileLang(); }
439  });
440
441  // ── Product page sticky header ────────────────────────────────
442  (function () {
443    const header        = document.getElementById('site-header');
444    const defaultLogo   = document.getElementById('header-logo');
445    const productLogo   = document.getElementById('header-product-logo');
446    const solutionLabel = document.getElementById('header-solution-label');
447    const mainNav       = document.querySelector('#site-header #main-nav');
448    const productNav    = document.getElementById('header-product-nav');
449    const ctaBtn        = document.getElementById('header-product-cta-btn');
450    const ctaForm       = document.getElementById('header-demo-capture');
451
452    // Activate on product pages (product logo present) and solution pages (solution label present)
453    if (!header || (!productLogo && !solutionLabel)) return;
454
455    let active = false;
456
457    function apply(sticky) {
458      if (sticky === active) return;
459      active = sticky;
460
461      if (sticky) {
462        header.classList.add('is-product-sticky');
463        // Product pages: swap Z2 logo → product icon + name
464        if (productLogo) {
465          defaultLogo?.classList.add('hidden');
466          productLogo.classList.remove('hidden');
467          productLogo.classList.add('flex');
468        }
469        // Solution pages: keep Z2 logo, reveal solution name beside it
470        if (solutionLabel) {
471          solutionLabel.classList.remove('hidden');
472          solutionLabel.classList.add('flex');
473        }
474        // Always hide main nav: sticky bar shows only the brand/name + CTA
475        mainNav?.classList.add('!hidden');
476        // Swap CTA button → email-capture pill
477        ctaBtn?.classList.add('!hidden');
478        ctaForm?.classList.remove('hidden');
479        ctaForm?.classList.add('flex');
480      } else {
481        header.classList.remove('is-product-sticky');
482        // Restore product logo state
483        if (productLogo) {
484          defaultLogo?.classList.remove('hidden');
485          productLogo.classList.add('hidden');
486          productLogo.classList.remove('flex');
487        }
488        // Hide solution name
489        if (solutionLabel) {
490          solutionLabel.classList.add('hidden');
491          solutionLabel.classList.remove('flex');
492        }
493        // Restore main nav
494        mainNav?.classList.remove('!hidden');
495        // Restore CTA button
496        ctaBtn?.classList.remove('!hidden');
497        ctaForm?.classList.add('hidden');
498        ctaForm?.classList.remove('flex');
499      }
500    }
501
502    window.addEventListener('scroll', function () { apply(window.scrollY > 20); }, { passive: true });
503    apply(window.scrollY > 20);
504  })();
505</script>
505 <main> <section class="hero-centered bg-sand-100 overflow-hidden relative" data-astro-cid-2wdnbucd> <div class="container relative z-10 pt-12 lg:pt-14 pb-14 lg:pb-14" data-astro-cid-2wdnbucd>  <div class="text-center max-w-3xl mx-auto" data-astro-cid-2wdnbucd> <h1 class="type-headline text-[2.125rem] sm:text-[2.75rem] lg:text-[4rem] text-sand-900 leading-[1.1] mb-6" data-astro-cid-2wdnbucd> Know <em class="italic" data-astro-cid-2wdnbucd>before</em> your supply chain breaks. </h1> <p class="type-body-lg text-sand-800 text-[1.1875rem] sm:text-[1.375rem] leading-[1.55] mb-8 max-w-xl mx-auto" data-astro-cid-2wdnbucd> Build resilience for engineering, sourcing, compliance, and supply chain teams on one platform. </p>  <form id="homepage-hero-capture" action="/demo" method="GET" novalidate class="flex items-center rounded-full border-2 border-primary-deep p-2 max-w-lg mx-auto bg-white focus-within:outline-none focus-within:ring-0 mt-8 mb-2 sm:mt-10" data-astro-cid-2wdnbucd> <input type="email" placeholder="Your work email address" class="flex-1 min-w-0 bg-transparent text-sm sm:text-base text-sand-900 placeholder-sand-800 px-4 sm:px-6 py-3 sm:py-3.5 outline-none focus:outline-none focus:ring-0" aria-label="Email address" data-astro-cid-2wdnbucd> <button type="submit" class="inline-flex items-center gap-1.5 sm:gap-2 flex-shrink-0 rounded-full bg-signal-400 hover:bg-primary-deep border-2 border-primary-deep text-sand-900 hover:text-sand-100 text-sm sm:text-base font-medium px-4 sm:px-6 py-3 sm:py-3.5 transition-colors" data-astro-cid-2wdnbucd> See a Demo <svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-2wdnbucd> <path stroke-linecap="round" stroke-linejoin="round" d="M17 8l4 4m0 0l-4 4m4-4H3" data-astro-cid-2wdnbucd></path> </svg> </button> </form> <p class="z2-form-err mt-2 text-center" role="alert" aria-live="polite" data-astro-cid-2wdnbucd></p> </div>  <div class="dashboard-wrapper relative mx-auto" data-dash data-astro-cid-2wdnbucd>  <div class="bento-grid" data-astro-cid-2wdnbucd>  <article class="dash-card" style="--card-d:0s;" data-astro-cid-2wdnbucd> <div class="dash-anim-layer" data-astro-cid-2wdnbucd><div class="prm-cvs-wrap prm-cvs-wrap--compact" id="prm-cvs-wrap" data-compact="1" data-astro-cid-nh3vzs7k> <canvas id="prm-cvs" data-astro-cid-nh3vzs7k></canvas> <div class="prm-cvs-mask prm-cvs-mask--t" data-astro-cid-nh3vzs7k></div> <div class="prm-cvs-mask prm-cvs-mask--b" data-astro-cid-nh3vzs7k></div> <div class="prm-cvs-mask prm-cvs-mask--l" data-astro-cid-nh3vzs7k></div> </div>  
505<script type="module" src="/_astro/PRMHeroCanvas.astro_astro_type_script_index_0_lang.B2EJi6C5.js"></script>
505</div> <div class="dash-card-header" data-astro-cid-2wdnbucd> <h3 class="dash-card-title" data-astro-cid-2wdnbucd>Surface part risk across your BOMs</h3> </div> <a href="/products/part-risk-manager" class="card-product-link" aria-label="Explore Part Risk Manager" data-astro-cid-2wdnbucd> <div class="card-product-pip" data-astro-cid-2wdnbucd> <img src="/brand/06-Product-Icons/Part-Risk-Manager/Z2_Product_Icons_Part-Risk-Manager.svg" alt="Part Risk Manager" class="card-product-icon" width="20" height="20" data-astro-cid-2wdnbucd> <span class="card-product-name" data-astro-cid-2wdnbucd>Part Risk Manager</span> <svg class="card-product-arrow" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-astro-cid-2wdnbucd><path d="M3 8h10M9 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-2wdnbucd></path></svg> </div> </a> </article>  <article class="dash-card" style="--card-d:0.08s;" data-astro-cid-2wdnbucd> <div class="dash-anim-layer" data-astro-cid-2wdnbucd><div class="cmm-root" aria-hidden="true"> 
505<script type="application/json" id="cmmini-i18n">[{"type":"IPC-1752A","lines":["MURATA MFG.","12,847 substances"],"reg":"RoHS 3.0"},{"type":"EPA PFAS","lines":["PFAS INVENTORY","12,000+ compounds"],"reg":"PFAS"},{"type":"REACH SVHC","lines":["ECHA CANDIDATE","240 SVHCs"],"reg":"REACH SVHC"},{"type":"CMRT v6.0","lines":["3TG: Ta Sn W Au","RMAP smelters"],"reg":"Conflict Min."},{"type":"SDS / MSDS","lines":["TSCA §6 subst.","60+ regulated"],"reg":"TSCA §6"},{"type":"BATTERY DECL","lines":["BATTERY CELL","recycled content"],"reg":"EU Battery"},{"type":"ORIGIN DOC","lines":["XINJIANG check","CBP entity list"],"reg":"UFLPA"},{"type":"JAMP AIS","lines":["4,221 layers","JAMP v3.0 schema"],"reg":"Halogen-Free"}]</script>
505 <div class="cmm-scene" id="cmmScene"> <canvas id="cmmBeamCanvas" class="cmm-beam-canvas"></canvas> <div class="cmm-stream-outer"> <div id="cmmLine0" class="cmm-line"></div> <div id="cmmLine1" class="cmm-line"></div> <div id="cmmLine2" class="cmm-line"></div> <div id="cmmLine3" class="cmm-line"></div> </div> </div> </div>  
505<script type="module" src="/_astro/CMScanMini.astro_astro_type_script_index_0_lang.CB6rjKdY.js"></script>
505</div> <div class="dash-card-header" data-astro-cid-2wdnbucd> <h3 class="dash-card-title" data-astro-cid-2wdnbucd>Get compliant across 270+ regulations</h3> </div> <a href="/products/compliance-manager" class="card-product-link" aria-label="Explore Compliance Manager" data-astro-cid-2wdnbucd> <div class="card-product-pip" data-astro-cid-2wdnbucd> <img src="/brand/06-Product-Icons/Compliance-Manager/Z2_Product_Icons_Compliance-Manager.svg" alt="Compliance Manager" class="card-product-icon" width="20" height="20" data-astro-cid-2wdnbucd> <span class="card-product-name" data-astro-cid-2wdnbucd>Compliance Manager</span> <svg class="card-product-arrow" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-astro-cid-2wdnbucd><path d="M3 8h10M9 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-2wdnbucd></path></svg> </div> </a> </article>  <article class="dash-card" style="--card-d:0.16s;" data-astro-cid-2wdnbucd> <div class="dash-anim-layer" data-astro-cid-2wdnbucd><div class="scwmini-root" aria-hidden="true" data-astro-cid-musymda3>
505 <canvas id="cobe-globe" data-astro-cid-musymda3></canvas> 
505<script type="application/json" id="scwmini-i18n">{"tw":{"title":"Taiwan Fab Alert","rev":"$18M impact"},"sa":{"title":"Red Sea Disruption","rev":"$22M impact"},"nl":{"title":"Rotterdam Port Delay","rev":"$14M impact"},"us3":{"title":"NY/NJ Port Strike","rev":"$16M impact"},"pa":{"title":"Panama Canal Backlog","rev":"$12M impact"}}</script>
505 </div>    
505<script>
506/* ═══════════════════════════════════════════════════════════════════════
507   Supply Chain Watch: Custom Canvas 2D Globe Renderer (MINI)
508   • Square-pixel continents (no rounded dots)
509   • Light sand theme matching Z2 brand palette
510   • Red glowing alert markers
511   Rendering copied unchanged from the SCW product hero; only sizing/clutter
512   were adjusted for the small homepage card.
513   ═══════════════════════════════════════════════════════════════════════ */
514(function () {
515  'use strict';
516
517  /* ── World map: COBE's embedded 256×128 land-mask PNG ─────────────── */
518  var WORLD_PNG = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAACAAQAAAADMzoqnAAAECklEQVR42u3VsW4jRRzH8d94gzfF4Q0VQaC4vBLTRTp0mze4ggfAPAE5XQEFsGNAVIjwBrmW7h7gJE+giKjyABTZE4g06LKJETdRJvtD65kdz6yduKABiW+TVfzRf2bXYxtcE/59YJCz6YdbgQF6ACSRrwYKYImmh5PbwOewlV3wlQNbAN6SEExjUOO+BU0aCSnxReHABUlK4YFQeJeUT3da8IIkZ6NGoSnFY5KsMoVzMKfECUnqxgPYRArarmUCndHwzIEaQEpg5xVdBXROl8mpAQx5dUgPiHoYAAkg5w3JABR06byGAVgcRGAz5bznj6phBQNRFwyqgdxebH6gshJAesWoFhgYpApAFoG8BIZ/fEhSox5jDjQXmV0Ar5XJfAIrALi3URVs09gHIL4XJCkLC5LH9JWiArABFCSrQjdgkBzRJ0WJeUOSNyQAfJJwUSWUBRlJQ8oGHATACGlBynnzy2kEYLNjrxouigD8BZcgOeVPqh12RtufaCN5wCPVDpvQ9lsIrqndsJtDcWqBCpf4hWN7OdWHBw58FwIaNOU/n1TpMW2DFaD48cmr4185T8NHkpUFX749pQPVdgRKC/DGoQPVeAEKv+WHvY8OOWNTPRp5kHuwSf8wzXtVBKR7YwEH9H3lQUaypUfSATOALyVNu5vZJW31Bnx98nkLfDUWJaz6ixvm+RIQRdl3kmRxxiaDoGnZW4CpPfkaQadlcPim1xOSvETQo7Lv75enVAXJ3xGUlony4KQBBWUM1NiDc6qhyS8RgQs18OCMMtPDaAUIyg0PZkRWDqs+wnKJBTDI1Js6BolegOsKmUxNDBAAKqQyMQmidhegBlLZ+wwKYdv5M/8x1khkb1cgKqP2H+MKyV5vS+whrE8DQDgAlUAoRBX056EElJCjJVACeJBZgNfVp+iCCm4RBWCgKsRxASSA9KgDhDtCiTuMyfHsKXzhC6wNAIjjWb8LKAOA2ctk3FmCOlgKFy8f1N0JJtgsxinYnVAHt4t3gPzZXSCTyCWCQmBT91QE3B5yarSN40dNHYPka4TlDhTUI8zLvl0JSL3vZn6DsCFZOeB2yROEpR68sECQQA++xIGCR2X7DwlEoLRgUrZrqlUg50S1uy43YqDcN6UFBVkhAjWiCV2Q0jgQPdplMKxvBXodcOfAwJYvgdL+1etA1YJJfBcZlQV7sO1i2gHoNiyxtQ5sBsCgWyoxCHiFFd2L5nUTCqMAqGUgsQ9f5kCcCiZgRYkMgMTd5WsB1rTzj0Em14BE4r+QxN1lCEsVur2PoF5Wbg8RJXR4djgvBgauhLywoEZQrt1KKRdVS4CdlJ8qafyP+9KIj/nE/d7kKwH9jgS72e9DV+kvfTWgct4ZyP8Byb8BPG7MaaIIkAQAAAAASUVORK5CYII=';
519
520  /* ── Supply chain alert markers ──────────────────────────────────────
521     All entries render as pulsing red dots.
522     Entries with tip:true also get a persistent floating label card,
523     shown/hidden by the globe's z-value as it rotates.
524     Seven curated alerts, one per major world region, each with revenue impact. */
525  var ALERTS = [
526    // ── Tooltip alerts (tip: true) — 5 distinct regions, no nearby pairs ──
527    { id: 'tw',  lat: 23.97, lng: 120.97, tip: true, title: 'Taiwan Fab Alert',     sub: '47 components at risk', rev: '$18M impact' },
528    { id: 'sa',  lat: 24.63, lng:  46.72, tip: true, title: 'Red Sea Disruption',   sub: '14 routes affected',    rev: '$22M impact' },
529    { id: 'nl',  lat: 52.37, lng:   4.90, tip: true, title: 'Rotterdam Port Delay', sub: 'Berth congestion +8d',  rev: '$14M impact' },
530    { id: 'us3', lat: 40.71, lng: -74.01, tip: true, title: 'NY/NJ Port Strike',    sub: 'Labor action pending',  rev: '$16M impact' },
531    { id: 'pa',  lat:  8.98, lng: -79.52, tip: true, title: 'Panama Canal Backlog', sub: 'Low water levels',      rev: '$12M impact' },
532    // ── Dot-only alerts ───────────────────────────────────────────────
533    { id: 'jp',  lat: 35.68, lng: 139.69 },
534    { id: 'kr',  lat: 37.57, lng: 126.98 },
535    { id: 'cn1', lat: 31.23, lng: 121.47 },
536    { id: 'cn2', lat: 22.54, lng: 114.06 },
537    { id: 'in',  lat: 19.08, lng:  72.88 },
538    { id: 'ae',  lat: 25.20, lng:  55.27 },
539    { id: 'tr',  lat: 41.01, lng:  28.98 },
540    { id: 'eg',  lat: 30.04, lng:  31.24 },
541    { id: 'ng',  lat:  6.52, lng:   3.38 },
542    { id: 'ma',  lat: 33.57, lng:  -7.59 },
543    { id: 'de',  lat: 50.11, lng:   8.68 },
544    { id: 'uk',  lat: 51.51, lng:  -0.13 },
545    { id: 'us1', lat: 37.39, lng:-122.08 },
546    { id: 'us2', lat: 32.78, lng: -96.80 },
547  ];
548
549  /* Localize tooltip text (title/rev) from the SSR-injected island; geometry stays. */
550  var SCWM_I18N = (function () {
551    var el = document.getElementById('scwmini-i18n');
552    try { return el ? JSON.parse(el.textContent) : null; } catch (e) { return null; }
553  })();
554  if (SCWM_I18N) {
555    for (var ai2 = 0; ai2 < ALERTS.length; ai2++) {
556      var tx = SCWM_I18N[ALERTS[ai2].id];
557      if (!tx) continue;
558      if (tx.title) ALERTS[ai2].title = tx.title;
559      if (tx.rev)   ALERTS[ai2].rev   = tx.rev;
560    }
561  }
562
563  /* ── Z2 Easter Egg - Pacific Ocean logo ──────────────────────────── */
564  var Z2_EGG = (function() {
565    var STEP = 0.85, LAT0 = 10.2, LNG0 = -175.8;
566    // Z letter pixels (row, col)
567    var pixels = [
568      0,0, 0,1, 0,2, 0,3, 0,4,       // top bar
569      1,4, 2,3, 3,2, 4,1, 5,0,        // diagonal
570      6,0, 6,1, 6,2, 6,3, 6,4,        // bottom bar
571      // 2 letter pixels (col offset +6)
572      0,6, 0,7, 0,8, 0,9, 0,10,       // top bar
573      1,6,                              // pixel-shift notch: mirrors the detached square in the Z2 logo mark
574      1,10, 2,10,                       // right vertical down
575      3,6, 3,7, 3,8, 3,9, 3,10,        // middle bar
576      4,6, 5,6,                         // left vertical down
577      6,6, 6,7, 6,8, 6,9, 6,10         // bottom bar
578    ];
579    var arr = [];
580    for (var i = 0; i < pixels.length; i += 2) {
581      arr.push(LAT0 - pixels[i] * STEP);
582      arr.push(LNG0 + pixels[i + 1] * STEP);
583    }
584    return new Float32Array(arr);
585  })();
586
587  /* ── State ────────────────────────────────────────────────────────── */
588  var landPts  = null;   // Float32Array: [lat0,lng0, lat1,lng1, ...]
589  var phi      = 4.19;   // Y-axis rotation: starts with E-Asia facing viewer
590  var theta    = -0.10;  // X-axis tilt: midpoint between 0.16 (pole visible) and -0.30 (pole hidden)
591  var velPhi   = 0;      // horizontal angular momentum (rad/frame)
592  var velTheta = 0;      // vertical angular momentum (rad/frame)
593  var SPEED    = 0.0038; // base auto-rotation speed (rad/frame)
594  var DAMPING  = 0.965;  // momentum decay per frame
595  var THETA_MIN = -0.72;
595 // max downward tilt (southern hemisphere view)
596  var THETA_MAX =  0.48; // max upward tilt (allows slight north-pole peek)
597
598  var globeR   = 200;   // cached globe radius: updated each frame
599  var globeDPR = 1;
600
601
602  /* ── Project lat/lng → canvas position (UNCHANGED) ───────────────── */
603  function proj(lat, lng, cx, cy, R) {
604    var lr = lat * Math.PI / 180;
605    var gr = lng * Math.PI / 180;
606    // 3-D point on unit sphere
607    var x = Math.cos(lr) * Math.sin(gr);
608    var y = Math.sin(lr);
609    var z = Math.cos(lr) * Math.cos(gr);
610    // Rotate around Y axis by phi
611    var cp = Math.cos(phi), sp = Math.sin(phi);
612    var xr = x * cp + z * sp;
613    var zr = -x * sp + z * cp;
614    // Tilt around X axis
615    var ct = Math.cos(theta), st = Math.sin(theta);
616    var yf = y * ct - zr * st;
617    var zf = y * st + zr * ct;
618    return {
619      sx:  cx + R * xr,
620      sy:  cy - R * yf,
621      z:   zf,           // -1 (back) → 1 (front)
622      vis: zf > -0.06    // visible when roughly facing viewer
623    };
624  }
625
626  /* ── Sample land points from world-map PNG (UNCHANGED) ───────────── */
627  function buildLandPts(img) {
628    var W = img.width, H = img.height;
629    var oc  = document.createElement('canvas');
630    oc.width = W; oc.height = H;
631    var oc2 = oc.getContext('2d');
632    oc2.drawImage(img, 0, 0);
633    var px  = oc2.getImageData(0, 0, W, H).data;
634    var arr = [];
635    for (var py = 0; py < H; py++) {
636      for (var ppx = 0; ppx < W; ppx++) {
637        /* red channel > 60 = land (1-bit greyscale PNG) */
638        if (px[(py * W + ppx) * 4] > 60) {
639          /* COBE's map: left edge = lng 180°, wraps around */
640          var lngRaw = (ppx / W) * 360 + 180;
641          arr.push(90 - (py / H) * 180);                        // lat
642          arr.push(lngRaw <= 180 ? lngRaw : lngRaw - 360);      // lng
643        }
644      }
645    }
646    landPts = new Float32Array(arr);
647  }
648
649  /* ── PRM-style red sonar ripple ───────────────────────────────────────
650     3 expanding, staggered, fading rings around a marker: mirrors the
651     PRMHeroCanvas high-risk ripple (period 2.2s, scale 1→6, peak ~0.7). */
652  var RIPPLE_PERIOD  = 2.2;
653  var RIPPLE_RINGS   = 3;
654  var RIPPLE_STAGGER = RIPPLE_PERIOD / RIPPLE_RINGS;
655
656  function drawSonarRipple(ctx, cx, cy, baseR, time, seed, alphaMul) {
657    for (var r = 0; r < RIPPLE_RINGS; r++) {
658      var ph = (((time + seed + r * RIPPLE_STAGGER) % RIPPLE_PERIOD) / RIPPLE_PERIOD);
659      if (ph < 0) ph += 1;
660      var scale = 1 + ph * 5;
661      var fade  = ph < 0.1 ? ph / 0.1 : Math.pow(1 - (ph - 0.1) / 0.9, 1.8);
662      var op = fade * 0.7 * alphaMul;
663      if (op <= 0.003) continue;
664      ctx.beginPath();
665      ctx.arc(cx, cy, baseR * scale, 0, Math.PI * 2);
666      ctx.strokeStyle = 'rgba(220,38,38,' + op.toFixed(3) + ')';
667      ctx.lineWidth = Math.max(0.75, baseR * 0.5 * Math.sqrt(scale));
668      ctx.stroke();
669    }
670  }
671
672  /* ── Render one frame ─────────────────────────────────────────────── */
673  function drawFrame(canvas, ctx) {
674    var pw = canvas.width, ph = canvas.height;
675    var dpr = globeDPR;
676    var cw  = pw / dpr, ch = ph / dpr;
677    var cx  = cw / 2;
678    /* MINI sizing: radius from container WIDTH (so the northern hemisphere
679       fills the box width and isn't a sliver), with the sphere centre at the
680       bottom edge → only the top hemisphere is visible, same as the product
681       page. R ≈ 0.58 × width gives a dome a touch wider than half the box,
682       a faithful crop that fills the width without over-zooming. */
683    var R   = Math.max(cw * 0.88, ch * 0.64);
684    var cy  = ch;
685    globeR  = R;  // cache for any sensitivity calculations
686
687    ctx.clearRect(0, 0, pw, ph);
688    ctx.save();
689    ctx.scale(dpr, dpr);
690
691    /* ── Ocean sphere (warm sand radial gradient) ─────────────── */
692    var gOcean = ctx.createRadialGradient(
693      cx - R * 0.14, cy - R * 0.72, R * 0.04,
694      cx, cy, R * 1.01
695    );
696    gOcean.addColorStop(0,    '#F5F0E2');
697    gOcean.addColorStop(0.52, '#EDE5CE');
698    gOcean.addColorStop(0.86, '#E0D8C0');
699    gOcean.addColorStop(1,    '#CCC3A8');
700
701    ctx.beginPath();
702    ctx.arc(cx, cy, R, 0, Math.PI * 2);
703    ctx.fillStyle = gOcean;
704    ctx.fill();
705
706    /* Subtle rim highlight */
707    var gRim = ctx.createRadialGradient(cx, cy, R * 0.62, cx, cy, R);
708    gRim.addColorStop(0,   'rgba(255,255,255,0)');
709    gRim.addColorStop(0.8, 'rgba(255,255,255,0)');
710    gRim.addColorStop(1,   'rgba(255,255,255,0.13)');
711    ctx.beginPath();
712    ctx.arc(cx, cy, R, 0, Math.PI * 2);
713    ctx.fillStyle = gRim;
714    ctx.fill();
715
716    /* ── Land dots as square pixels ───────────────────────────── */
717    if (landPts) {
718      var n   = landPts.length >> 1;
719      var DOT = Math.max(1.5, R * 0.0075); // square size, scales with globe
720
721      /* back hemisphere: slightly darker / more transparent */
722      ctx.fillStyle = 'rgba(162,150,128,0.52)';
723      for (var i = 0; i < n; i++) {
724        var p = proj(landPts[i * 2], landPts[i * 2 + 1], cx, cy, R);
725        if (!p.vis || p.z > 0.08) continue;
726        ctx.fillRect(p.sx - DOT * 0.5, p.sy - DOT * 0.5, DOT, DOT);
727      }
728
729      /* front hemisphere: brighter */
730      ctx.fillStyle = 'rgba(172,160,136,0.82)';
731      for (var i = 0; i < n; i++) {
732        var p = proj(landPts[i * 2], landPts[i * 2 + 1], cx, cy, R);
733        if (!p.vis || p.z <= 0.08) continue;
734        ctx.fillRect(p.sx - DOT * 0.5, p.sy - DOT * 0.5, DOT, DOT);
735      }
736    }
737
738    /* ── Z2 Easter Egg ───────────────────────────────────────── */
739    ctx.fillStyle = 'rgba(157,144,116,0.72)';
740    var DOT_EGG = Math.max(1.5, R * 0.006);
741    var nEgg = Z2_EGG.length >> 1;
742    for (var ei = 0; ei < nEgg; ei++) {
743      var ep = proj(Z2_EGG[ei * 2], Z2_EGG[ei * 2 + 1], cx, cy, R);
744      if (!ep.vis) continue;
745      ctx.globalAlpha = 0.38 + ep.z * 0.52;
746      ctx.fillRect(ep.sx - DOT_EGG * 0.5, ep.sy - DOT_EGG * 0.5, DOT_EGG, DOT_EGG);
747    }
748    ctx.globalAlpha = 1;
749
750    /* ── Alert markers (PRM-style red sonar ripple + breathing core) ── */
751    var nowSec = Date.now() / 1000;
752    var ms = Math.max(5, R * 0.018); // square marker side (same for all)
753    for (var ai = 0; ai < ALERTS.length; ai++) {
754      var a  = ALERTS[ai];
755      var mp = proj(a.lat, a.lng, cx, cy, R);
756      if (!mp.vis || mp.z < 0.06) continue;
757
758      /* fade in as marker comes around to front */
759      var alpha = Math.min(1, (mp.z - 0.06) / 0.28);
760
761      /* expanding sonar rings (behind the marker) */
762      drawSonarRipple(ctx, mp.sx, mp.sy, ms * 0.62, nowSec, ai * 0.73, alpha);
763
764      /* breathing red core square (matches PRM core breathe) */
765      var breathe = 0.88 + 0.12 * Math.sin(nowSec * 3.5 + ai);
766      var bs = ms * breathe;
767      ctx.globalAlpha = alpha;
768      ctx.fillStyle   = '#DC2626';
769      ctx.fillRect(mp.sx - bs * 0.5, mp.sy - bs * 0.5, bs, bs);
770      ctx.globalAlpha = 1;
771    }
772
773    ctx.restore();
774
775    /* ── Persistent tooltip cards: reposition + fade each frame ─────── */
776    var gap = ms * 0.5 + 8;
777    for (var ti = 0; ti < ALERTS.length; ti++) {
778      var ta = ALERTS[ti];
779      if (!ta.tip) continue;
780      var tt = document.getElementById('scwmini-tt-' + ta.id);
781      if (!tt) continue;
782      var tp = proj(ta.lat, ta.lng, cx, cy, R);
783      if (!tp.vis || tp.z < 0.06) {
784        tt.style.opacity    = '0';
785        tt.style.visibility = 'hidden';
786        continue;
787      }
788      var talpha = Math.min(1, (tp.z - 0.06) / 0.28);
789      /* Place right of marker; flip left when near the canvas right edge */
790      var ttW = 155;
791      var ttX = tp.sx + gap;
792      if (ttX + ttW > cw - 4) ttX = tp.sx - gap - ttW;
793      /* CSS translateY(-50%) centers the card vertically on the dot */
794      var ttY = tp.sy;
795      tt.style.left       = ttX.toFixed(1) + 'px';
796      tt.style.top        = ttY.toFixed(1) + 'px';
797      tt.style.opacity    = talpha.toFixed(3);
798      tt.style.visibility = talpha > 0.04 ? 'visible' : 'hidden';
799    }
800  }
801
802  /* ── Animation loop with momentum physics ──────────────────────────
803     Controllable: pauses when the card scrolls offscreen and stays stopped
804     entirely under prefers-reduced-motion, so the globe never burns CPU
805     forever (the original looped unconditionally for the life of the page). */
806  var REDUCE_MOTION = !!(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches);
807  var rafId   = 0;
808  var running = false;
809
810  function loop(canvas, ctx) {
811    if (!running) return;
812    /* Decay momentum + auto-spin (no drag interaction on the mini card) */
813    velPhi   *= DAMPING;
814    velTheta *= DAMPING;
815    phi   += velPhi + SPEED;
816    theta += velTheta;
817    theta  = Math.max(THETA_MIN, Math.min(THETA_MAX, theta));
818
819    drawFrame(canvas, ctx);
820    rafId = requestAnimationFrame(function () { loop(canvas, ctx); });
821  }
822
823  function startLoop(canvas, ctx) {
824    if (running || REDUCE_MOTION) return;
825    running = true;
826    loop(canvas, ctx);
827  }
828
829  function stopLoop() {
830    running = false;
831    if (rafId) cancelAnimationFrame(rafId);
832    rafId = 0;
833  }
834
835  /* ── Inject persistent HTML tooltip cards into the card container ── */
836  function buildTooltips(cardEl) {
837    for (var bi = 0; bi < ALERTS.length; bi++) {
838      var ba = ALERTS[bi];
839      if (!ba.tip) continue;
840      if (document.getElementById('scwmini-tt-' + ba.id)) continue;
841      var div = document.createElement('div');
842      div.id        = 'scwmini-tt-' + ba.id;
843      div.className = 'scwmini-tt';
844      div.innerHTML =
845        '<div class="scwmini-tt-sq"></div>' +
846        '<div class="scwmini-tt-body">' +
847          '<span class="scwmini-tt-title">' + ba.title + '</span>' +
848          '<span class="scwmini-tt-rev">'   + ba.rev   + '</span>' +
849        '</div>';
850      cardEl.appendChild(div);
851    }
852  }
853
854  /* ── Init ─────────────────────────────────────────────────────────── */
855  function init() {
856    var canvas = document.getElementById('cobe-globe');
857    if (!canvas) return;
858
859    var ctx = canvas.getContext('2d');
860    if (!ctx) return;
861
862    var dpr  = Math.min(window.devicePixelRatio || 1, 2);
863    globeDPR = dpr;
864
865    var area = canvas.parentElement;
866
867    /* Size the backing store to the container (NOT the viewport). */
868    function resize() {
869      var w = area.clientWidth  || 285;
870      var h = area.clientHeight || 320;
871      canvas.width  = Math.max(1, Math.round(w * dpr));
872      canvas.height = Math.max(1, Math.round(h * dpr));
873      canvas.style.width  = '100%';
874      canvas.style.height = '100%';
875    }
876    resize();
877
878    /* ── Persistent tooltip cards: inject into .dash-anim-layer.
879       That element has overflow:hidden, so tooltips are naturally clipped
880       to the card bounds. Canvas and anim-layer share the same origin
881       (scwmini-root is inset:0 inside it), so canvas coords = tooltip coords. */
882    var animLayer = area.parentElement;
883    if (animLayer) { buildTooltips(animLayer); }
884
885    if (typeof ResizeObserver !== 'undefined') {
886      var ro = new ResizeObserver(resize);
887      ro.observe(area);
888    } else {
889      window.addEventListener('resize', resize);
890    }
891
892    canvas.style.opacity    = '0';
893    canvas.style.transition = 'opacity 1s ease';
894
895    /* Load world-map PNG, sample land pixels, start animation */
896    var img  = new Image();
897    function begin() {
898      requestAnimationFrame(function () {
899        canvas.style.opacity = '1';
900        /* Always paint one frame so a static globe is visible even when the
901           loop never runs (reduced motion) or the card starts offscreen. */
902        drawFrame(canvas, ctx);
903        if (REDUCE_MOTION) return;
904        /* Run only while the card is near/at the viewport; pause once it has
905           scrolled away (mirrors the IntersectionObserver gating its siblings
906           use), so an offscreen globe stops spending main-thread time. */
907        if (typeof IntersectionObserver !== 'undefined') {
908          var io = new IntersectionObserver(function (entries) {
909            for (var k = 0; k < entries.length; k++) {
910              if (entries[k].isIntersecting) startLoop(canvas, ctx);
911              else stopLoop();
912            }
913          }, { rootMargin: '200px', threshold: 0.01 });
914          io.observe(area);
915        } else {
916          startLoop(canvas, ctx);
917        }
918      });
919    }
920    img.onload = function () {
921      buildLandPts(img);
922      begin();
923    };
924    img.onerror = function () {
925      console.warn('[SCW Globe Mini] world-map load failed: globe will show ocean only');
926      begin();
927    };
928    img.src = WORLD_PNG;
929  }
930
931  // Defer init until the page is interactive so the globe's canvas work + PNG
932  // decode never competes with first paint / LCP (the globe only animates once
933  // visible, via the IntersectionObserver in begin()).
934  function deferInit() {
935    if ('requestIdleCallback' in window) requestIdleCallback(init, { timeout: 2000 });
936    else setTimeout(init, 200);
937  }
938  if (document.readyState === 'complete') {
939    deferInit();
940  } else {
941    window.addEventListener('load', deferInit, { once: true });
942  }
943})();
944</script>
944</div> <div class="dash-card-header" data-astro-cid-2wdnbucd> <h3 class="dash-card-title" data-astro-cid-2wdnbucd>Monitor global sites and disruptions</h3> </div> <a href="/products/supply-chain-watch" class="card-product-link" aria-label="Explore Supply Chain Watch" data-astro-cid-2wdnbucd> <div class="card-product-pip" data-astro-cid-2wdnbucd> <img src="/brand/06-Product-Icons/Supply-Chain-Watch/Z2_Product_Icons_Supply-Chain-Watch.svg" alt="Supply Chain Watch" class="card-product-icon" width="20" height="20" data-astro-cid-2wdnbucd> <span class="card-product-name" data-astro-cid-2wdnbucd>Supply Chain Watch</span> <svg class="card-product-arrow" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-astro-cid-2wdnbucd><path d="M3 8h10M9 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-2wdnbucd></path></svg> </div> </a> </article>  <article class="dash-card" style="--card-d:0.24s;" data-astro-cid-2wdnbucd> <div class="dash-anim-layer" data-astro-cid-2wdnbucd><div class="si-mini" data-si-mini>  <canvas class="si-mini-tunnel" data-si-mini-tunnel aria-hidden="true"></canvas>  <canvas class="si-mini-icons" data-si-mini-icons aria-hidden="true"></canvas>  <div class="si-mini-focal-box" data-si-mini-focal aria-hidden="true"> <img src="/brand/06-Product-Icons/Supplier-Insights/Z2_Product_Icons_Supplier-Insights.svg" alt="Supplier Insights" class="si-mini-focal-logo" width="44" height="44"> </div> </div> 
944<script type="module" src="/_astro/SITunnelMini.astro_astro_type_script_index_0_lang.BKnoKtKH.js"></script>
944 </div> <div class="dash-card-header" data-astro-cid-2wdnbucd> <h3 class="dash-card-title" data-astro-cid-2wdnbucd>Score every supplier&#39;s hidden risk</h3> </div> <a href="/products/supplier-insights" class="card-product-link" aria-label="Explore Supplier Insights" data-astro-cid-2wdnbucd> <div class="card-product-pip" data-astro-cid-2wdnbucd> <img src="/brand/06-Product-Icons/Supplier-Insights/Z2_Product_Icons_Supplier-Insights.svg" alt="Supplier Insights" class="card-product-icon" width="20" height="20" data-astro-cid-2wdnbucd> <span class="card-product-name" data-astro-cid-2wdnbucd>Supplier Insights</span> <svg class="card-product-arrow" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-astro-cid-2wdnbucd><path d="M3 8h10M9 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-2wdnbucd></path></svg> </div> </a> </article> </div> </div>  <div class="proof-strip" data-astro-cid-2wdnbucd>  <p class="proof-eyebrow" data-astro-cid-2wdnbucd>Trusted by leading manufacturers like</p> <div class="proof-logos" data-astro-cid-2wdnbucd> <img src="/images/logo-qualcomm.png" alt="Qualcomm" class="cust-logo-img" width="126" height="24" loading="lazy" decoding="async" data-astro-cid-2wdnbucd><img src="/images/logo-teradyne.png" alt="Teradyne" class="cust-logo-img" width="160" height="24" loading="lazy" decoding="async" data-astro-cid-2wdnbucd><img src="/images/logo-netapp.png" alt="NetApp" class="cust-logo-img" width="132" height="24" loading="lazy" decoding="async" data-astro-cid-2wdnbucd><img src="/images/logo-paloalto.png" alt="Palo Alto Networks" class="cust-logo-img" width="127" height="24" loading="lazy" decoding="async" data-astro-cid-2wdnbucd><img src="/images/logo-dell.png" alt="Dell" class="cust-logo-img" width="77" height="24" loading="lazy" decoding="async" data-astro-cid-2wdnbucd><img src="/images/logos-clients/airbus.png" alt="Airbus" class="cust-logo-img" width="129" height="24" loading="lazy" decoding="async" data-astro-cid-2wdnbucd><img src="/images/logo-enphase.svg" alt="Enphase" class="cust-logo-img" width="133" height="24" loading="lazy" decoding="async" data-astro-cid-2wdnbucd> </div> </div> </div> </section>   
944<script type="module">(function(){const s=window.matchMedia("(prefers-reduced-motion: reduce)").matches,e=document.querySelector("[data-dash]");if(!e||s)return;e.classList.add("dash-anim");const n=()=>{requestAnimationFrame(()=>requestAnimationFrame(()=>{e.classList.add("is-animated"),setTimeout(()=>e.classList.add("reveal-done"),900)}))},t=new IntersectionObserver(a=>{for(const r of a)if(r.isIntersecting){t.disconnect(),n();break}},{threshold:.2});t.observe(e)})();</script>
944 <section class="relative w-full bg-sand-900 overflow-hidden py-16 lg:py-0 lg:h-[480px]" data-agentic data-astro-cid-5jsine6u>  <div class="cubes-bg" aria-hidden="true" data-astro-cid-5jsine6u></div>  <div class="grid-texture" aria-hidden="true" data-astro-cid-5jsine6u></div>  <span class="absolute top-0 left-0 block w-16 h-[2px] bg-signal-400/25" aria-hidden="true" data-astro-cid-5jsine6u></span> <span class="absolute top-0 left-0 block w-[2px] h-16 bg-signal-400/25" aria-hidden="true" data-astro-cid-5jsine6u></span> <span class="absolute bottom-0 right-0 block w-16 h-[2px] bg-signal-400/25" aria-hidden="true" data-astro-cid-5jsine6u></span> <span class="absolute bottom-0 right-0 block w-[2px] h-16 bg-signal-400/25" aria-hidden="true" data-astro-cid-5jsine6u></span>  <span class="absolute top-0 left-0 block w-[3px] h-[3px] bg-signal-400" aria-hidden="true" data-astro-cid-5jsine6u></span> <span class="absolute top-0 right-0 block w-[3px] h-[3px] bg-signal-400/50" aria-hidden="true" data-astro-cid-5jsine6u></span> <span class="absolute bottom-0 left-0 block w-[3px] h-[3px] bg-signal-400/50" aria-hidden="true" data-astro-cid-5jsine6u></span> <span class="absolute bottom-0 right-0 block w-[3px] h-[3px] bg-signal-400" aria-hidden="true" data-astro-cid-5jsine6u></span> <div class="relative z-10 container w-full grid lg:grid-cols-[minmax(0,1fr)_640px] lg:items-stretch lg:h-full gap-10 lg:gap-8" data-astro-cid-5jsine6u>  <div class="flex flex-col gap-5 max-w-xl lg:self-start lg:pt-16" data-astro-cid-5jsine6u> <span class="type-eyebrow text-signal-400 uppercase" data-astro-cid-5jsine6u>Z2 Agentic AI</span> <h2 class="type-header !font-body font-medium text-[1.75rem] lg:text-[2.4rem] text-sand-100 leading-[1.05]" data-astro-cid-5jsine6u> AI agents for your supply chain </h2> <p class="type-body text-sand-100 leading-relaxed" data-astro-cid-5jsine6u> Z2 puts AI Agents to track your supply chain risk, monitor compliance campaigns and boost productivity for engineering teams. Ask anything in plain language, connect Z2 to your own AI stack, gain unique insights, and have AI agents take care of the tedious parts of the process. </p> <a href="/our-ai" class="mt-1 inline-flex w-fit items-center gap-2 rounded-full bg-signal-400 hover:bg-primary-deep border-2 border-primary-deep text-sand-900 hover:text-white text-base font-medium px-7 py-3.5 transition-colors" data-astro-cid-5jsine6u> See Z2 AI in Action <svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-5jsine6u> <path stroke-linecap="round" stroke-linejoin="round" d="M17 8l4 4m0 0l-4 4m4-4H3" data-astro-cid-5jsine6u></path> </svg> </a> </div>  <a href="/our-ai" class="stage-wrap" aria-hidden="true" tabindex="-1" data-astro-cid-5jsine6u> <div class="stage" data-astro-cid-5jsine6u>  <div class="mock" data-astro-cid-5jsine6u> <div class="mock__bar" data-astro-cid-5jsine6u> <span class="px" data-astro-cid-5jsine6u></span><span class="px" data-astro-cid-5jsine6u></span><span class="px" data-astro-cid-5jsine6u></span> </div> <div class="mock__body" data-astro-cid-5jsine6u>  <div class="evt" data-astro-cid-5jsine6u> <div class="evt__main" data-astro-cid-5jsine6u> <h3 class="evt__title" data-astro-cid-5jsine6u>Strait of Hormuz Blocked</h3> <div class="evt__meta" data-astro-cid-5jsine6u> <span data-astro-cid-5jsine6u>12 Products affected</span> <span class="sep" data-astro-cid-5jsine6u></span> <span data-astro-cid-5jsine6u>21 BOMs impacted</span> </div> </div> <button type="button" class="act act--head" data-act="revenue" data-astro-cid-5jsine6u> <span class="icon-Revenue act__ico" data-astro-cid-5jsine6u></span> <span class="act__label" data-astro-cid-5jsine6u>Calculate Revenue Impact</span> </button> </div>  <div class="acts" data-astro-cid-5jsine6u> <button type="button" class="act" data-act="supplier" data-astro-cid-5jsine6u> <span class="icon-E-mail act__ico" data-astro-cid-5jsine6u></span> <span class="act__label" data-astro-cid-5jsine6u>Start Supplier Outreach</span> </button> <button type="button" class="act" data-act="cross" data-astro-cid-5jsine6u> <span class="icon-Cross-Reference act__ico" data-astro-cid-5jsine6u></span> <span class="act__label" data-astro-cid-5jsine6u>Find Cross References</span> </button> </div>  <div class="tbl" data-astro-cid-5jsine6u> <div class="tbl__row tbl__row--head" data-astro-cid-5jsine6u> <span data-astro-cid-5jsine6u>Part</span> <span data-astro-cid-5jsine6u>Lifecycle</span> <span data-astro-cid-5jsine6u>Availability</span> <span data-astro-cid-5jsine6u>Where Used</span> <span class="ta-r" data-astro-cid-5jsine6u>Crosses</span> </div> <div class="tbl__row" data-astro-cid-5jsine6u> <span class="cell-part" data-astro-cid-5jsine6u> <span class="icon-Integrated-Circuits-ICs cell-part__ico" data-astro-cid-5jsine6u></span> <span class="cell-part__mpn" data-astro-cid-5jsine6u>STM32F</span> </span> <span class="cell-mut" data-astro-cid-5jsine6u>Active</span> <span class="cell-mut" data-astro-cid-5jsine6u>0 in stock</span> <span class="cell-mut" data-astro-cid-5jsine6u>6 BOMs</span> <span class="cell-mut ta-r" data-astro-cid-5jsine6u>12</span> </div><div class="tbl__row" data-astro-cid-5jsine6u> <span class="cell-part" data-astro-cid-5jsine6u> <span class="icon-Capacitors cell-part__ico" data-astro-cid-5jsine6u></span> <span class="cell-part__mpn" data-astro-cid-5jsine6u>GRM188</span> </span> <span class="cell-mut" data-astro-cid-5jsine6u>Active</span> <span class="cell-mut" data-astro-cid-5jsine6u>8,400</span> <span class="cell-mut" data-astro-cid-5jsine6u>3 BOMs</span> <span class="cell-mut ta-r" data-astro-cid-5jsine6u>31</span> </div><div class="tbl__row" data-astro-cid-5jsine6u> <span class="cell-part" data-astro-cid-5jsine6u> <span class="icon-Memory cell-part__ico" data-astro-cid-5jsine6u></span> <span class="cell-part__mpn" data-astro-cid-5jsine6u>MT41K</span> </span> <span class="cell-mut" data-astro-cid-5jsine6u>NRND</span> <span class="cell-mut" data-astro-cid-5jsine6u>1,200</span> <span class="cell-mut" data-astro-cid-5jsine6u>5 BOMs</span> <span class="cell-mut ta-r" data-astro-cid-5jsine6u>4</span> </div><div class="tbl__row" data-astro-cid-5jsine6u> <span class="cell-part" data-astro-cid-5jsine6u> <span class="icon-Connectors cell-part__ico" data-astro-cid-5jsine6u></span> <span class="cell-part__mpn" data-astro-cid-5jsine6u>DF13</span> </span> <span class="cell-mut" data-astro-cid-5jsine6u>Active</span> <span class="cell-mut" data-astro-cid-5jsine6u>0 in stock</span> <span class="cell-mut" data-astro-cid-5jsine6u>4 BOMs</span> <span class="cell-mut ta-r" data-astro-cid-5jsine6u>9</span> </div><div class="tbl__row" data-astro-cid-5jsine6u> <span class="cell-part" data-astro-cid-5jsine6u> <span class="icon-Optoelectronics cell-part__ico" data-astro-cid-5jsine6u></span> <span class="cell-part__mpn" data-astro-cid-5jsine6u>LTST</span> </span> <span class="cell-mut" data-astro-cid-5jsine6u>Obsolete</span> <span class="cell-mut" data-astro-cid-5jsine6u>0 in stock</span> <span class="cell-mut" data-astro-cid-5jsine6u>3 BOMs</span> <span class="cell-mut ta-r" data-astro-cid-5jsine6u>0</span> </div> </div> </div> </div>  <div class="agents" data-astro-cid-5jsine6u>  <div class="agent agent--disruption" data-astro-cid-5jsine6u> <svg class="agent__cur" width="26" height="26" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" data-astro-cid-5jsine6u> <path d="M5.5 3.2 18.6 10.1c.9.5.7 1.8-.3 2L12 13.4l-2.6 5.7c-.4.9-1.7.8-2-.2L5.5 3.2Z" fill="currentColor" stroke="#231C13" stroke-width="1" stroke-linejoin="round" data-astro-cid-5jsine6u></path> </svg> <span class="agent__ring" data-astro-cid-5jsine6u></span> <span class="agent__label" data-astro-cid-5jsine6u> <span class="agent__cube" aria-hidden="true" data-astro-cid-5jsine6u> <span class="agent__eye" data-astro-cid-5jsine6u></span> <span class="agent__eye" data-astro-cid-5jsine6u></span> </span> <span class="agent__name" data-astro-cid-5jsine6u>Disruption Response Agent</span> </span> </div>  </div> </div> </a> </div> </section>  
944<script type="module">const s=document.querySelectorAll("[data-agentic]");if(s.length){const c=new IntersectionObserver(e=>{for(const t of e)t.isIntersecting?t.target.classList.add("agentic-play"):t.target.classList.remove("agentic-play")},{threshold:.4});s.forEach(e=>c.observe(e))}</script>
944 <section class="aat-section bg-sand-100 pt-16 pb-14 lg:pt-24 lg:pb-20" data-aat data-astro-cid-snponccg> <div class="container px-4 sm:px-6 lg:px-8" data-astro-cid-snponccg> <div class="aat-head" data-astro-cid-snponccg> <div data-astro-cid-snponccg> <p class="type-eyebrow text-sand-600 uppercase" data-astro-cid-snponccg>Meet the AI agents</p> <h2 class="aat-h2 type-headline text-sand-900" data-astro-cid-snponccg>An AI agent for each risk team</h2> </div> <div class="aat-head-side" data-astro-cid-snponccg> <p class="type-body text-sand-600" data-astro-cid-snponccg>Each one takes on recurring work for its team, from disruption exposure to conflict minerals reporting.</p> <div class="aat-head-row" data-astro-cid-snponccg> <a class="aat-head-cta" href="/our-ai/" data-astro-cid-snponccg> See all Z2 AI agents <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" data-astro-cid-snponccg><path d="M3 8h10M9 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-snponccg></path></svg> </a> <div class="aat-nav" data-astro-cid-snponccg> <button type="button" class="aat-nav-btn" data-aat-prev aria-label="Previous AI agent" data-astro-cid-snponccg> <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" data-astro-cid-snponccg><path d="M10 3L5 8l5 5" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-snponccg></path></svg> </button> <button type="button" class="aat-nav-btn" data-aat-next aria-label="Next AI agent" data-astro-cid-snponccg> <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" data-astro-cid-snponccg><path d="M6 3l5 5-5 5" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-snponccg></path></svg> </button> </div> </div> </div> </div> </div> <div class="aat-track" data-aat-track data-astro-cid-snponccg> <article class="aat-card" style="--tint:#EDF1E3;--accent:#7FA35A" data-astro-cid-snponccg> <header class="aat-card-head" data-astro-cid-snponccg> <span class="aat-face" aria-hidden="true" data-astro-cid-snponccg><i data-astro-cid-snponccg></i><i data-astro-cid-snponccg></i></span> <h3 data-astro-cid-snponccg>Supply Chain AI Agent</h3> </header> <p class="aat-job" data-astro-cid-snponccg>Maps your sub-tier supplier network, and traces climate events and geographic concentration back to your parts.</p> <img src="/images/ai-agents/agent-supply-chain.webp" alt="Supply Chain AI Agent: Z2 cube character" width="800" height="800" loading="lazy" decoding="async" data-astro-cid-snponccg> </article><article class="aat-card" style="--tint:#F7EEDC;--accent:#D9962B" data-astro-cid-snponccg> <header class="aat-card-head" data-astro-cid-snponccg> <span class="aat-face" aria-hidden="true" data-astro-cid-snponccg><i data-astro-cid-snponccg></i><i data-astro-cid-snponccg></i></span> <h3 data-astro-cid-snponccg>Product Compliance AI Agent</h3> </header> <p class="aat-job" data-astro-cid-snponccg>Screens your BOMs for RoHS and REACH SVHC, and re-screens them when a new regulation enters scope.</p> <img src="/images/ai-agents/agent-compliance.webp" alt="Product Compliance AI Agent: Z2 cube character" width="800" height="800" loading="lazy" decoding="async" data-astro-cid-snponccg> </article><article class="aat-card" style="--tint:#F6E7DE;--accent:#C06C48" data-astro-cid-snponccg> <header class="aat-card-head" data-astro-cid-snponccg> <span class="aat-face" aria-hidden="true" data-astro-cid-snponccg><i data-astro-cid-snponccg></i><i data-astro-cid-snponccg></i></span> <h3 data-astro-cid-snponccg>Trade Compliance AI Agent</h3> </header> <p class="aat-job" data-astro-cid-snponccg>Screens parts for export controls and programs for watchlist hits, and calculates tariff cost impact.</p> <img src="/images/ai-agents/agent-trade-compliance.webp" alt="Trade Compliance AI Agent: Z2 cube character" width="800" height="800" loading="lazy" decoding="async" data-astro-cid-snponccg> </article><article class="aat-card" style="--tint:#E7EEDC;--accent:#5E8A3F" data-astro-cid-snponccg> <header class="aat-card-head" data-astro-cid-snponccg> <span class="aat-face" aria-hidden="true" data-astro-cid-snponccg><i data-astro-cid-snponccg></i><i data-astro-cid-snponccg></i></span> <h3 data-astro-cid-snponccg>Sustainability AI Agent</h3> </header> <p class="aat-job" data-astro-cid-snponccg>Drafts your 3TG conflict minerals report from the supplier data already on file.</p> <img src="/images/ai-agents/agent-sustainability.webp" alt="Sustainability AI Agent: Z2 cube character" width="800" height="800" loading="lazy" decoding="async" data-astro-cid-snponccg> </article><article class="aat-card" style="--tint:#E4EFEC;--accent:#3E9C92" data-astro-cid-snponccg> <header class="aat-card-head" data-astro-cid-snponccg> <span class="aat-face" aria-hidden="true" data-astro-cid-snponccg><i data-astro-cid-snponccg></i><i data-astro-cid-snponccg></i></span> <h3 data-astro-cid-snponccg>Procurement AI Agent</h3> </header> <p class="aat-job" data-astro-cid-snponccg>Finds alternates and distributor inventory when parts go short, and reports on sole-sourced parts.</p> <img src="/images/ai-agents/agent-procurement.webp" alt="Procurement AI Agent: Z2 cube character" width="800" height="800" loading="lazy" decoding="async" data-astro-cid-snponccg> </article><article class="aat-card" style="--tint:#E7E9EE;--accent:#6B7C95" data-astro-cid-snponccg> <header class="aat-card-head" data-astro-cid-snponccg> <span class="aat-face" aria-hidden="true" data-astro-cid-snponccg><i data-astro-cid-snponccg></i><i data-astro-cid-snponccg></i></span> <h3 data-astro-cid-snponccg>Supplier Risk AI Agent</h3> </header> <p class="aat-job" data-astro-cid-snponccg>Traces supplier bankruptcies, and screens distributors after an ownership change or for counterfeit risk.</p> <img src="/images/ai-agents/agent-supplier-risk.webp" alt="Supplier Risk AI Agent: Z2 cube character" width="800" height="800" loading="lazy" decoding="async" data-astro-cid-snponccg> </article><article class="aat-card" style="--tint:#F0F5DF;--accent:#8FB33A" data-astro-cid-snponccg> <header class="aat-card-head" data-astro-cid-snponccg> <span class="aat-face" aria-hidden="true" data-astro-cid-snponccg><i data-astro-cid-snponccg></i><i data-astro-cid-snponccg></i></span> <h3 data-astro-cid-snponccg>Engineering AI Agent</h3> </header> <p class="aat-job" data-astro-cid-snponccg>Cross-references NRND parts, forecasts obsolescence risk, and confirms datasheet specs.</p> <img src="/images/ai-agents/agent-engineering.webp" alt="Engineering AI Agent: Z2 cube character" width="800" height="800" loading="lazy" decoding="async" data-astro-cid-snponccg> </article> </div> </section>  
944<script type="module">const c=document.querySelector("[data-aat]"),t=c?.querySelector("[data-aat-track]"),a=c?.querySelector("[data-aat-prev]"),l=c?.querySelector("[data-aat-next]");if(t&&a&&l){const e=window.matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth",o=()=>(t.querySelector(".aat-card")?.offsetWidth??320)+20,r=()=>t.scrollWidth-t.clientWidth,s=()=>t.scrollLeft<=2,n=()=>t.scrollLeft>=r()-2;l.addEventListener("click",()=>{n()?t.scrollTo({left:0,behavior:e}):t.scrollBy({left:o(),behavior:e})}),a.addEventListener("click",()=>{s()?t.scrollTo({left:r(),behavior:e}):t.scrollBy({left:-o(),behavior:e})})}</script>
944 <section id="team-tabs-section" class="bg-sand-100 pt-20 pb-20 lg:pt-32 lg:pb-28" data-astro-cid-ekbydg7k> <div class="container" data-astro-cid-ekbydg7k>  <h2 class="type-header text-[1.75rem] sm:text-[2.25rem] lg:text-[2.875rem] text-sand-900 text-center mb-10 leading-[1.08] tracking-[-0.02em]" data-astro-cid-ekbydg7k> Every Team Gets the Intelligence They Need </h2>  <div class="tab-bar-scroll flex justify-start md:justify-center relative z-10 -mb-7 overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0" data-astro-cid-ekbydg7k> <div class="inline-flex items-center gap-1 border-2 border-sand-900 bg-white p-1.5 flex-shrink-0" data-astro-cid-ekbydg7k> <button data-tab="engineering" class="tab-btn font-body font-semibold text-[0.8125rem] sm:text-[1rem] uppercase px-3.5 sm:px-5 py-2 sm:py-2.5 border transition-colors duration-200 whitespace-nowrap bg-sand-200 text-sand-900 border-sand-600" data-astro-cid-ekbydg7k> Engineering </button><button data-tab="supply-chain" class="tab-btn font-body font-semibold text-[0.8125rem] sm:text-[1rem] uppercase px-3.5 sm:px-5 py-2 sm:py-2.5 border transition-colors duration-200 whitespace-nowrap text-sand-800 border-transparent hover:text-sand-900 hover:bg-sand-100" data-astro-cid-ekbydg7k> Supply Chain </button><button data-tab="procurement" class="tab-btn font-body font-semibold text-[0.8125rem] sm:text-[1rem] uppercase px-3.5 sm:px-5 py-2 sm:py-2.5 border transition-colors duration-200 whitespace-nowrap text-sand-800 border-transparent hover:text-sand-900 hover:bg-sand-100" data-astro-cid-ekbydg7k> Procurement </button><button data-tab="compliance" class="tab-btn font-body font-semibold text-[0.8125rem] sm:text-[1rem] uppercase px-3.5 sm:px-5 py-2 sm:py-2.5 border transition-colors duration-200 whitespace-nowrap text-sand-800 border-transparent hover:text-sand-900 hover:bg-sand-100" data-astro-cid-ekbydg7k> Compliance </button><button data-tab="leadership" class="tab-btn font-body font-semibold text-[0.8125rem] sm:text-[1rem] uppercase px-3.5 sm:px-5 py-2 sm:py-2.5 border transition-colors duration-200 whitespace-nowrap text-sand-800 border-transparent hover:text-sand-900 hover:bg-sand-100" data-astro-cid-ekbydg7k> Leadership </button> </div> </div>  <div id="panel-engineering" class="tab-panel border border-sand-600" style="background-color: var(--color-sand-200);" role="tabpanel" aria-labelledby="tab-engineering" data-astro-cid-ekbydg7k> <div class="grid grid-cols-1 lg:grid-cols-2 pt-9" style="min-height: 460px;" data-astro-cid-ekbydg7k>  <div class="p-6 pb-9 sm:p-10 sm:pb-10 lg:p-14 lg:pb-12 relative" data-astro-cid-ekbydg7k> <div data-astro-cid-ekbydg7k>  <a href="/products/part-risk-manager" class="tp-product-badge group" data-astro-cid-ekbydg7k> <img src="/brand/06-Product-Icons/Part-Risk-Manager/Z2_Product_Icons_Part-Risk-Manager.svg" alt="Part Risk Manager" class="tp-product-icon" aria-hidden="true" data-astro-cid-ekbydg7k> <span class="tp-product-name group-hover:text-primary-deep" data-astro-cid-ekbydg7k>Part Risk Manager</span> </a> <h3 class="font-heading font-normal text-[1.625rem] sm:text-[2rem] lg:text-[2.25rem] leading-[1.15] tracking-[-0.015em] mb-5 text-sand-900" data-astro-cid-ekbydg7k> Choose the right part, every time </h3> <p class="font-body font-normal text-[1rem] leading-[1.45] max-w-[460px]" style="color: rgba(35,28,19,0.68);" data-astro-cid-ekbydg7k> Z2 surfaces lifecycle risk, compliance flags, COO dependencies, and cross-reference options at the moment of part selection, so you catch the problem before it delays a product launch or forces a redesign. </p> <a href="/products/part-risk-manager" class="tp-cta-link group mt-6 inline-flex items-center gap-2" data-astro-cid-ekbydg7k> <span data-astro-cid-ekbydg7k>Learn more</span> <svg class="tp-cta-arrow" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-astro-cid-ekbydg7k> <path d="M1 7h12M7 1l6 6-6 6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ekbydg7k></path> </svg> </a> </div> </div>  <div class="relative tab-card-panel" data-astro-cid-ekbydg7k> <a href="/demo" class="tab-card" aria-label="Learn more" data-astro-cid-ekbydg7k>  <div class="tc-badge" data-astro-cid-ekbydg7k> <span class="tc-dot tc-dot--red" data-astro-cid-ekbydg7k></span> <span class="tc-badge-label tc-badge-label--red" data-astro-cid-ekbydg7k>Lifecycle risk flagged</span> </div>  <div class="tc-title" data-astro-cid-ekbydg7k>ATXMEGA128A4U</div>  <div class="tc-meta" data-astro-cid-ekbydg7k>Microchip · Mature · 8-week lead time</div>  <div class="tc-metric" data-astro-cid-ekbydg7k> <div class="tc-metric-head" data-astro-cid-ekbydg7k> <span class="tc-metric-label" data-astro-cid-ekbydg7k>Risk score</span> <span class="tc-metric-val tc-metric-val--red" data-astro-cid-ekbydg7k>6.4 / 10</span> </div> <div class="tc-track" data-astro-cid-ekbydg7k> <div class="tc-fill tc-fill--red" style="width: 64%;" data-astro-cid-ekbydg7k></div> </div> </div>  <div class="tc-action" data-astro-cid-ekbydg7k> <span class="tc-btn" data-astro-cid-ekbydg7k>View 12 qualified alternates</span> </div> </a> </div> </div>  <div class="tt-quote-card" data-astro-cid-ekbydg7k> <div class="tt-quote-body" data-astro-cid-ekbydg7k> <p class="tt-quote-text" data-astro-cid-ekbydg7k>Z2 touches all aspects of the component, from design to manufacturing. Each department saves so much time using Z2&#39;s platform.</p> <div class="tt-quote-attr" data-astro-cid-ekbydg7k> <div class="tt-quote-attr-text" data-astro-cid-ekbydg7k> <p class="tt-quote-name" data-astro-cid-ekbydg7k>Adam Doolittle</p> <p class="tt-quote-role" data-astro-cid-ekbydg7k>Component Engineer</p> </div>  <span class="tt-quote-sep" aria-hidden="true" data-astro-cid-ekbydg7k></span> <img src="/brand/logos/clients/qsc-logo.svg" alt="QSC" class="tt-quote-logo" style="height: 26p
944x;" loading="lazy" data-astro-cid-ekbydg7k>  </div> </div> <div class="tt-quote-photo-wrap" data-astro-cid-ekbydg7k> <img src="/images/team/adam-doolittle.jpg" alt="" class="tt-quote-photo" style loading="lazy" data-astro-cid-ekbydg7k> </div> </div> </div><div id="panel-supply-chain" class="tab-panel border border-sand-600 hidden" style="background-color: var(--color-sand-200);" role="tabpanel" aria-labelledby="tab-supply-chain" data-astro-cid-ekbydg7k> <div class="grid grid-cols-1 lg:grid-cols-2 pt-9" style="min-height: 460px;" data-astro-cid-ekbydg7k>  <div class="p-6 pb-9 sm:p-10 sm:pb-10 lg:p-14 lg:pb-12 relative" data-astro-cid-ekbydg7k> <div data-astro-cid-ekbydg7k>  <a href="/products/supply-chain-watch" class="tp-product-badge group" data-astro-cid-ekbydg7k> <img src="/brand/06-Product-Icons/Supply-Chain-Watch/Z2_Product_Icons_Supply-Chain-Watch.svg" alt="Supply Chain Watch" class="tp-product-icon" aria-hidden="true" data-astro-cid-ekbydg7k> <span class="tp-product-name group-hover:text-primary-deep" data-astro-cid-ekbydg7k>Supply Chain Watch</span> </a> <h3 class="font-heading font-normal text-[1.625rem] sm:text-[2rem] lg:text-[2.25rem] leading-[1.15] tracking-[-0.015em] mb-5 text-sand-900" data-astro-cid-ekbydg7k> Map your full supply chain before the next disruption </h3> <p class="font-body font-normal text-[1rem] leading-[1.45] max-w-[460px]" style="color: rgba(35,28,19,0.68);" data-astro-cid-ekbydg7k> Z2 traces your BOM to manufacturing sites across 4 supplier tiers using proprietary data. When a geopolitical event, natural disaster, or supplier failure occurs, you already know which of your parts are exposed and what the revenue impact is. </p> <a href="/products/supply-chain-watch" class="tp-cta-link group mt-6 inline-flex items-center gap-2" data-astro-cid-ekbydg7k> <span data-astro-cid-ekbydg7k>Learn more</span> <svg class="tp-cta-arrow" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-astro-cid-ekbydg7k> <path d="M1 7h12M7 1l6 6-6 6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ekbydg7k></path> </svg> </a> </div> </div>  <div class="relative tab-card-panel" data-astro-cid-ekbydg7k> <a href="/demo" class="tab-card" aria-label="Learn more" data-astro-cid-ekbydg7k>  <div class="tc-badge" data-astro-cid-ekbydg7k> <span class="tc-dot tc-dot--red" data-astro-cid-ekbydg7k></span> <span class="tc-badge-label tc-badge-label--red" data-astro-cid-ekbydg7k>Disruption detected</span> </div>  <div class="tc-title" data-astro-cid-ekbydg7k>Taiwan Seismic Alert</div>  <div class="tc-meta" data-astro-cid-ekbydg7k>6 tier-1 suppliers · 14 parts exposed</div>  <div class="tc-metric" data-astro-cid-ekbydg7k> <div class="tc-metric-head" data-astro-cid-ekbydg7k> <span class="tc-metric-label" data-astro-cid-ekbydg7k>Revenue at risk</span> <span class="tc-metric-val tc-metric-val--red" data-astro-cid-ekbydg7k>$22M</span> </div> <div class="tc-track" data-astro-cid-ekbydg7k> <div class="tc-fill tc-fill--red" style="width: 82%;" data-astro-cid-ekbydg7k></div> </div> </div>  <div class="tc-action" data-astro-cid-ekbydg7k> <span class="tc-btn" data-astro-cid-ekbydg7k>Start mitigation plan</span> </div> </a> </div> </div>  <div class="tt-quote-card" data-astro-cid-ekbydg7k> <div class="tt-quote-body" data-astro-cid-ekbydg7k> <p class="tt-quote-text" data-astro-cid-ekbydg7k>We went from getting a picture in days, to doing part of our mitigation after a few hours. Z2 is outstanding when it comes to managing risk.</p> <div class="tt-quote-attr" data-astro-cid-ekbydg7k> <div class="tt-quote-attr-text" data-astro-cid-ekbydg7k> <p class="tt-quote-name" data-astro-cid-ekbydg7k>Martin Linow</p> <p class="tt-quote-role" data-astro-cid-ekbydg7k>Resilience Part Manager</p> </div>  <span class="tt-quote-sep" aria-hidden="true" data-astro-cid-ekbydg7k></span> <img src="/images/logos-clients/sick.svg" alt="SICK AG" class="tt-quote-logo" style="height: 36px;" loading="lazy" data-astro-cid-ekbydg7k>  </div> </div> <div class="tt-quote-photo-wrap" data-astro-cid-ekbydg7k> <img src="/images/testimonials/martin-linow.jpg" alt="" class="tt-quote-photo" style loading="lazy" data-astro-cid-ekbydg7k> </div> </div> </div>
944<div id="panel-procurement" class="tab-panel border border-sand-600 hidden" style="background-color: var(--color-sand-200);" role="tabpanel" aria-labelledby="tab-procurement" data-astro-cid-ekbydg7k> <div class="grid grid-cols-1 lg:grid-cols-2 pt-9" style="min-height: 460px;" data-astro-cid-ekbydg7k>  <div class="p-6 pb-9 sm:p-10 sm:pb-10 lg:p-14 lg:pb-12 relative" data-astro-cid-ekbydg7k> <div data-astro-cid-ekbydg7k>  <a href="/products/supplier-insights" class="tp-product-badge group" data-astro-cid-ekbydg7k> <img src="/brand/06-Product-Icons/Supplier-Insights/Z2_Product_Icons_Supplier-Insights.svg" alt="Supplier Risk &#38; Compliance" class="tp-product-icon" aria-hidden="true" data-astro-cid-ekbydg7k> <span class="tp-product-name group-hover:text-primary-deep" data-astro-cid-ekbydg7k>Supplier Risk &amp; Compliance</span> </a> <h3 class="font-heading font-normal text-[1.625rem] sm:text-[2rem] lg:text-[2.25rem] leading-[1.15] tracking-[-0.015em] mb-5 text-sand-900" data-astro-cid-ekbydg7k> Know your tariff exposure before the invoice surprises you </h3> <p class="font-body font-normal text-[1rem] leading-[1.45] max-w-[460px]" style="color: rgba(35,28,19,0.68);" data-astro-cid-ekbydg7k> Z2 gives commodity managers HTS codes, country-of-origin data, and real-time pricing across your entire BOM. Know which parts are sole-sourced, which carry tariff exposure, and which alternates are qualified, before a disruption forces your hand. </p> <a href="/products/supplier-insights" class="tp-cta-link group mt-6 inline-flex items-center gap-2" data-astro-cid-ekbydg7k> <span data-astro-cid-ekbydg7k>Learn more</span> <svg class="tp-cta-arrow" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-astro-cid-ekbydg7k> <path d="M1 7h12M7 1l6 6-6 6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ekbydg7k></path> </svg> </a> </div> </div>  <div class="relative tab-card-panel" data-astro-cid-ekbydg7k> <a href="/demo" class="tab-card" aria-label="Learn more" data-astro-cid-ekbydg7k>  <div class="tc-badge" data-astro-cid-ekbydg7k> <span class="tc-dot tc-dot--green" data-astro-cid-ekbydg7k></span> <span class="tc-badge-label tc-badge-label--green" data-astro-cid-ekbydg7k>Savings identified</span> </div>  <div class="tc-title" data-astro-cid-ekbydg7k>SN74LVC1G08</div>  <div class="tc-meta" data-astro-cid-ekbydg7k>Market avg $0.42 · your price $0.48</div>  <div class="tc-metric" data-astro-cid-ekbydg7k> <div class="tc-metric-head" data-astro-cid-ekbydg7k> <span class="tc-metric-label" data-astro-cid-ekbydg7k>Potential savings</span> <span class="tc-metric-val tc-metric-val--green" data-astro-cid-ekbydg7k>Up to 11%</span> </div> <div class="tc-track" data-astro-cid-ekbydg7k> <div class="tc-fill tc-fill--green" style="width: 58%;" data-astro-cid-ekbydg7k></div> </div> </div>  <div class="tc-action" data-astro-cid-ekbydg7k> <span class="tc-btn" data-astro-cid-ekbydg7k>Compare 6 approved alternates</span> </div> </a> </div> </div>  <div class="tt-quote-card" data-astro-cid-ekbydg7k> <div class="tt-quote-body" data-astro-cid-ekbydg7k> <p class="tt-quote-text" data-astro-cid-ekbydg7k>Z2&#39;s MPN risk scores, part-to-site mapping, and supplier risk scores are acting as major metrics in my preferred-supplier scorecard.</p> <div class="tt-quote-attr" data-astro-cid-ekbydg7k> <div class="tt-quote-attr-text" data-astro-cid-ekbydg7k> <p class="tt-quote-name" data-astro-cid-ekbydg7k>Kamalesh Sampathkumar</p> <p class="tt-quote-role" data-astro-cid-ekbydg7k>Senior Manager, Global Procurement &amp; Analytics</p> </div>  <span class="tt-quote-sep" aria-hidden="true" data-astro-cid-ekbydg7k></span> <img src="/images/logo-enphase-white.svg" alt="Enphase" class="tt-quote-logo" style="height: 26px;" loading="lazy" data-astro-cid-ekbydg7k>  </div> </div> <div class="tt-quote-photo-wrap" data-astro-cid-ekbydg7k> <img src="/images/testimonials/kamalesh-sampathkumar.jpg" alt="" class="tt-quote-photo" style="transform: scaleX(-1);" loading="lazy" data-astro-cid-ekbydg7k> </div> </div> </div><div id="panel-compliance" class="tab-panel border border-sand-600 hidden" style="background-color: var(--color-sand-200);" role="tabpanel" aria-labelledby="tab-compliance" data-astro-cid-ekbydg7k> <div class="grid grid-cols-1 lg:grid-cols-2 pt-9" style="min-height: 460px;" data-astro-cid-ekbydg7k>  <div class="p-6 pb-9 sm:p-10 sm:pb-10 lg:p-14 lg:pb-12 relative" data-astro-cid-ekbydg7k> <div data-astro-cid-ekbydg7k>  <a href="/products/compliance-manager" class="tp-product-badge group" data-astro-cid-ekbydg7k> <img src="/brand/06-Product-Icons/Compliance-Manager/Z2_Product_Icons_Compliance-Manager.svg" alt="Compliance Manager" class="tp-product-icon" aria-hidden="true" data-astro-cid-ekbydg7k> <span class="tp-product-name group-hover:text-primary-deep" data-astro-cid-ekbydg7k>Compliance Manager</span> </a> <h3 class="font-heading font-normal text-[1.625rem] sm:text-[2rem] lg:text-[2.25rem] leading-[1.15] tracking-[-0.015em] mb-5 text-sand-900" data-astro-cid-ekbydg7k> Reach 80% compliance coverage on day one </h3> <p class="font-body font-normal text-[1rem] leading-[1.45] max-w-[460px]" style="color: rgba(35,28,19,0.68);" data-astro-cid-ekbydg7k> Z2 starts from components with existing compliance data, so you campaign for the gaps, not everything. Track RoHS, REACH, PFAS, and 270+ regulations with an audit-ready evidence trail. </p> <a href="/products/compliance-manager" class="tp-cta-link group mt-6 inline-flex items-center gap-2" data-astro-cid-ekbydg7k> <span data-astro-cid-ekbydg7k>Learn more</span> <svg class="tp-cta-arrow" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-astro-cid-ekbydg7k> <path d="M1 7h12M7 1l6 6-6 6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ekbydg7k></path> </svg> </a> </div> </div>  <div class="relative tab-card-panel" data-astro-cid-ekbydg7k> <a href="/demo" class="tab-card" aria-label="Learn more" data-astro-cid-ekbydg7k>  <div class="tc-badge" data-astro-cid-ekbydg7k> <span class="tc-dot tc-dot--red" data-astro-cid-ekbydg7k></span> <span class="tc-badge-label tc-badge-label--red" data-astro-cid-ekbydg7k>PFAS detected</span> </div>  <div class="tc-title" data-astro-cid-ekbydg7k>2 substances above threshold</div>  <div class="tc-meta" data-astro-cid-ekbydg7k>
944REACH SVHC clear · CMRT filed</div>  <div class="tc-metric" data-astro-cid-ekbydg7k> <div class="tc-metric-head" data-astro-cid-ekbydg7k> <span class="tc-metric-label" data-astro-cid-ekbydg7k>BOM compliance coverage</span> <span class="tc-metric-val tc-metric-val--neutral" data-astro-cid-ekbydg7k>98%</span> </div> <div class="tc-track" data-astro-cid-ekbydg7k> <div class="tc-fill tc-fill--neutral" style="width: 98%;" data-astro-cid-ekbydg7k></div> </div> </div>  <div class="tc-action" data-astro-cid-ekbydg7k> <span class="tc-btn" data-astro-cid-ekbydg7k>Generate audit report</span> </div> </a> </div> </div>  <div class="tt-quote-card" data-astro-cid-ekbydg7k> <div class="tt-quote-body" data-astro-cid-ekbydg7k> <p class="tt-quote-text" data-astro-cid-ekbydg7k>It was a game changer for us. Z2 freed our team from manual checking and data gathering, and gave us a scalable foundation to future-proof our compliance processes.</p> <div class="tt-quote-attr" data-astro-cid-ekbydg7k> <div class="tt-quote-attr-text" data-astro-cid-ekbydg7k> <p class="tt-quote-name" data-astro-cid-ekbydg7k>Egle Siusiene</p> <p class="tt-quote-role" data-astro-cid-ekbydg7k>Compliance Specialist</p> </div>  <span class="tt-quote-sep" aria-hidden="true" data-astro-cid-ekbydg7k></span> <img src="/images/logo-apollo-fire.png" alt="Apollo Fire Detectors" class="tt-quote-logo" style="height: 42px;" loading="lazy" data-astro-cid-ekbydg7k>  </div> </div> <div class="tt-quote-photo-wrap" data-astro-cid-ekbydg7k> <img src="/images/testimonials/egle-siusiene-crop.jpg" alt="" class="tt-quote-photo" style loading="lazy" data-astro-cid-ekbydg7k> </div> </div> </div><div id="panel-leadership" class="tab-panel border border-sand-600 hidden" style="background-color: var(--color-sand-200);" role="tabpanel" aria-labelledby="tab-leadership" data-astro-cid-ekbydg7k> <div class="grid grid-cols-1 lg:grid-cols-2 pt-9" style="min-height: 460px;" data-astro-cid-ekbydg7k>  <div class="p-6 pb-9 sm:p-10 sm:pb-10 lg:p-14 lg:pb-12 relative" data-astro-cid-ekbydg7k> <div data-astro-cid-ekbydg7k>  <a href="/products/enterprise-hub" class="tp-product-badge group" data-astro-cid-ekbydg7k> <img src="/brand/06-Product-Icons/Enterprise-Hub/Z2_Product_Icons_Enterprise-Hub.svg" alt="Z2 Enterprise Hub" class="tp-product-icon" aria-hidden="true" data-astro-cid-ekbydg7k> <span class="tp-product-name group-hover:text-primary-deep" data-astro-cid-ekbydg7k>Z2 Enterprise Hub</span> </a> <h3 class="font-heading font-normal text-[1.625rem] sm:text-[2rem] lg:text-[2.25rem] leading-[1.15] tracking-[-0.015em] mb-5 text-sand-900" data-astro-cid-ekbydg7k> Quantify supply chain risk before the board asks you to </h3> <p class="font-body font-normal text-[1rem] leading-[1.45] max-w-[460px]" style="color: rgba(35,28,19,0.68);" data-astro-cid-ekbydg7k> Z2 rolls up component risk, supplier health, compliance status, and tariff exposure into executive dashboards, translating supply chain intelligence into revenue-at-risk language. For the first time, leadership can act on supply chain risk before it becomes a financial event. </p> <a href="/products/enterprise-hub" class="tp-cta-link group mt-6 inline-flex items-center gap-2" data-astro-cid-ekbydg7k> <span data-astro-cid-ekbydg7k>Learn more</span> <svg class="tp-cta-arrow" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-astro-cid-ekbydg7k> <path d="M1 7h12M7 1l6 6-6 6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ekbydg7k></path> </svg> </a> </div> </div>  <div class="relative tab-card-panel" data-astro-cid-ekbydg7k> <a href="/demo" class="tab-card" aria-label="Learn more" data-astro-cid-ekbydg7k>  <div class="tc-badge" data-astro-cid-ekbydg7k> <span class="tc-dot tc-dot--red" data-astro-cid-ekbydg7k></span> <span class="tc-badge-label tc-badge-label--red" data-astro-cid-ekbydg7k>Revenue exposure</span> </div>  <div class="tc-title" data-astro-cid-ekbydg7k>Supply chain risk rollup</div>  <div class="tc-meta" data-astro-cid-ekbydg7k>847 suppliers monitored · 94% healthy</div>  <div class="tc-metric" data-astro-cid-ekbydg7k> <div class="tc-metric-head" data-astro-cid-ekbydg7k> <span class="tc-metric-label" data-astro-cid-ekbydg7k>Revenue at risk</span> <span class="tc-metric-val tc-metric-val--red" data-astro-cid-ekbydg7k>$2.4M</span> </div> <div class="tc-track" data-astro-cid-ekbydg7k> <div class="tc-fill tc-fill--red" style="width: 68%;" data-astro-cid-ekbydg7k></div> </div> </div>  <div class="tc-action" data-astro-cid-ekbydg7k> <span class="tc-btn" data-astro-cid-ekbydg7k>Open executive summary</span> </div> </a> </div> </div>  <div class="tt-quote-card" data-astro-cid-ekbydg7k> <div class="tt-quote-body" data-astro-cid-ekbydg7k> <p class="tt-quote-text" data-astro-cid-ekbydg7k>We&#39;ve incorporated Z2 into our regular supply chain risk rituals. It&#39;s a critical part of our standard risk analysis cadence around lead times, availability, and responding effectively to the market.</p> <div class="tt-quote-attr" data-astro-cid-ekbydg7k> <div class="tt-quote-attr-text" data-astro-cid-ekbydg7k> <p class="tt-quote-name" data-astro-cid-ekbydg7k>James Slider</p> <p class="tt-quote-role" data-astro-cid-ekbydg7k>Chief Executive Officer</p> </div>  <span class="tt-quote-sep" aria-hidden="true" data-astro-cid-ekbydg7k></span> <img src="/images/logo-pdw.svg" alt="PDW" class="tt-quote-logo" style="height: 26p
944x;" loading="lazy" data-astro-cid-ekbydg7k>  </div> </div> <div class="tt-quote-photo-wrap" data-astro-cid-ekbydg7k> <img src="/images/testimonials/james-slider-color.jpg" alt="" class="tt-quote-photo" style loading="lazy" data-astro-cid-ekbydg7k> </div> </div> </div> </div> </section>  
944<script>
945  (function () {
946    const btns   = document.querySelectorAll('.tab-btn');
947    const panels = document.querySelectorAll('.tab-panel');
948
949    function triggerWidgets(panel) {
950      if (!panel) return;
951      panel.querySelectorAll('.tab-card').forEach(function (c) {
952        c.classList.remove('card-enter');
953        void c.offsetWidth; // force reflow
954        c.classList.add('card-enter');
955      });
956    }
957
958    btns.forEach(function (btn) {
959      btn.addEventListener('click', function () {
960        var target = btn.dataset.tab;
961
962        btns.forEach(function (b) {
963          var active = b.dataset.tab === target;
964          b.classList.toggle('bg-sand-200',   active);
965          b.classList.toggle('text-sand-900', active);
966          b.classList.toggle('border-sand-600', active);
967          b.classList.toggle('border-transparent', !active);
968          b.classList.toggle('text-sand-800',   !active);
969          b.classList.toggle('hover:text-sand-900', !active);
970          b.classList.toggle('hover:bg-sand-100',   !active);
971        });
972
973        panels.forEach(function (p) {
974          p.classList.toggle('hidden', p.id !== ('panel-' + target));
975        });
976
977        var newPanel = document.getElementById('panel-' + target);
978        if (newPanel) {
979          requestAnimationFrame(function () { triggerWidgets(newPanel); });
980        }
981      });
982    });
983
984    // Trigger widget animations when section scrolls into view
985    var section = document.getElementById('team-tabs-section');
986    if (section && 'IntersectionObserver' in window) {
987      var io = new IntersectionObserver(function (entries) {
988        entries.forEach(function (e) {
989          if (e.isIntersecting) {
990            var activePanel = document.querySelector('.tab-panel:not(.hidden)');
991            if (activePanel) triggerWidgets(activePanel);
992            io.disconnect();
993          }
994        });
995      }, { threshold: 0.15 });
996      io.observe(section);
997    } else if (section) {
998      var activePanel = document.querySelector('.tab-panel:not(.hidden)');
999      if (activePanel) triggerWidgets(activePanel);
1000    }
1001  })();
1002</script>
1002 <section class="plat-section" data-astro-cid-izkoibwn> <div class="plat-header" data-astro-cid-izkoibwn> <h2 class="type-headline text-[2rem] sm:text-[2.75rem] lg:text-[3.5rem] leading-[1.05] tracking-[-0.02em] mb-5" style="color: #231C13;" data-astro-cid-izkoibwn> Everything your teams are on the hook for. One platform. </h2> <p class="font-body text-[1.0625rem] leading-[1.65] max-w-2xl mx-auto" style="color: rgba(35,28,19,0.62);" data-astro-cid-izkoibwn> Most supply chain teams pay for three separate tools, then manually reconcile data between them. Z2 connects component intelligence, supply chain risk, and compliance on a single data layer, so your teams work from the same source of truth. </p> </div> <div class="plat-grid" data-astro-cid-izkoibwn> <a href="/products/supply-chain-watch" class="plat-cell plat-cell--active" style="grid-column: 10; grid-row: 1;" data-label="Supply Chain Risk" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Supply Chain Risk</span> <span class="plat-icon icon-Supply-Chain" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--active" style="grid-column: 11; grid-row: 1;" data-label="Obsolescence" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Obsolescence</span> <span class="plat-icon icon-Obsolete" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--active" style="grid-column: 9; grid-row: 2;" data-label="Lifecycle" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Lifecycle</span> <span class="plat-icon icon-Lifecycle-Forecast" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--active" style="grid-column: 12; grid-row: 2;" data-label="Compliance" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Compliance</span> <span class="plat-icon icon-Environmental-Regulation" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--active" style="grid-column: 10; grid-row: 3;" data-label="Supply Chain Impact" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Supply Chain Impact</span> <span class="plat-icon icon-Your-Impact" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--active" style="grid-column: 11; grid-row: 3;" data-label="Sub-Tier Intel" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Sub-Tier Intel</span> <span class="plat-icon icon-Dependency" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 9; grid-row: 1;" data-label="PCN Alerts" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>PCN Alerts</span> <span class="plat-icon icon-Product-Change-Notices" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supplier-insights" class="plat-cell plat-cell--dim" style="grid-column: 12; grid-row: 1;" data-label="Supplier Insights" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Supplier Insights</span> <span class="plat-icon icon-Supplier" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 8; grid-row: 2;" data-label="Component Risk" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Component Risk</span> <span class="plat-icon icon-Part-Score" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 13; grid-row: 2;" data-label="RoHS Compliance" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>RoHS Compliance</span> <span class="plat-icon icon-Lead-Free" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 9; grid-row: 3;" data-label="REACH Compliance" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>REACH Compliance</span> <span class="plat-icon icon-REACH1" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 12; grid-row: 3;" data-label="UFLPA Compliance" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>UFLPA Compliance</span> <span class="plat-icon icon-Document-Due-Diligence" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 8; grid-row: 1;" data-label="Parts Database" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Parts Database</span> <span class="plat-icon icon-Part-Detail" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 13; grid-row: 1;" data-label="Conflict Minerals" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Conflict Minerals</span> <span class="plat-icon icon-Conflict-Minerals" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 7; grid-row: 2;" data-label="PFAS Compliance" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>PFAS Compliance</span> <span class="plat-icon icon-Substance-Analysis" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 14; grid-row: 2;" data-label="Forced Labor" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Forced Labor</span> <span class="plat-icon icon-Combat-Human-Trafficking" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 8; grid-row: 3;" data-label="ESG" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>ESG</span> <span class="plat-icon icon-Your-Impact" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 13; grid-row: 3;" data-label="Sustainability" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Sustainability</span> <span class="plat-icon icon-growth-grow-leafs" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 7; grid-row: 1;" data-label="Prop 65" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Prop 65</span> <span class="plat-icon icon-CA-Prop-65" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 14; grid-row: 1;" data-label="Trade Compliance" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Trade Compliance</span> <span class="plat-icon icon-Supplier-Compliance" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 6; grid-row: 2;" data-label="Product Compliance" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Product Compliance</span> <span class="plat-icon icon-Certificates-Of-Compliance" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 15; grid-row: 2;" data-label="BOM Risk" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>BOM Risk</span> <span class="plat-icon icon-Bill-of-Material" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 7; grid-row: 3;" data-label="Cross-Reference" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Cross-Reference</span> <span class="plat-icon icon-Cross-Reference" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 14; grid-row: 3;" data-label="Multi-Sourcing" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Multi-Sourcing</span> <span class="plat-icon icon-Multi-Sourced" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 6; grid-row: 1;" data-label="Dual Sourcing" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Dual Sourcing</span>
1002 <span class="plat-icon icon-arrowssplit" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 15; grid-row: 1;" data-label="Lifecycle Status" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Lifecycle Status</span> <span class="plat-icon icon-Lifecycle-Status" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 5; grid-row: 2;" data-label="EOL Forecasting" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>EOL Forecasting</span> <span class="plat-icon icon-Years-to-End-of-Life" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 16; grid-row: 2;" data-label="Lead Times" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Lead Times</span> <span class="plat-icon icon-Lead-Time" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 6; grid-row: 3;" data-label="Pricing Intel" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Pricing Intel</span> <span class="plat-icon icon-Price" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 15; grid-row: 3;" data-label="BOM Analysis" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>BOM Analysis</span> <span class="plat-icon icon-Analysis" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--dim" style="grid-column: 5; grid-row: 1;" data-label="Event Monitoring" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Event Monitoring</span> <span class="plat-icon icon-Events" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--dim" style="grid-column: 16; grid-row: 1;" data-label="Disruption Alerts" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Disruption Alerts</span> <span class="plat-icon icon-Flagged-Events" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--dim" style="grid-column: 4; grid-row: 2;" data-label="Supply Visibility" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Supply Visibility</span> <span class="plat-icon icon-Transparency" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--dim" style="grid-column: 17; grid-row: 2;" data-label="Site Intelligence" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Site Intelligence</span> <span class="plat-icon icon-Sites" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--dim" style="grid-column: 5; grid-row: 3;" data-label="Country Risk" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Country Risk</span> <span class="plat-icon icon-Country-of-Origin" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supplier-insights" class="plat-cell plat-cell--dim" style="grid-column: 16; grid-row: 3;" data-label="Risk Scoring" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Risk Scoring</span> <span class="plat-icon icon-Risk-Score" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--dim" style="grid-column: 4; grid-row: 1;" data-label="Risk Hub" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Risk Hub</span> <span class="plat-icon icon-Dashboard" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supplier-insights" class="plat-cell plat-cell--dim" style="grid-column: 17; grid-row: 1;" data-label="Party Screening" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Party Screening</span> <span class="plat-icon icon-Scan" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 3; grid-row: 2;" data-label="Full Disclosure" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Full Disclosure</span> <span class="plat-icon icon-Full-Material-Declarations" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 18; grid-row: 2;" data-label="Conformance Cert" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Conformance Cert</span> <span class="plat-icon icon-stamp" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 4; grid-row: 3;" data-label="Material Analysis" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Material Analysis</span> <span class="plat-icon icon-Raw-Material" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--dim" style="grid-column: 17; grid-row: 3;" data-label="Geopolitical Risk" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Geopolitical Risk</span> <span class="plat-icon icon-Political" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--dim" style="grid-column: 3; grid-row: 1;" data-label="Tariffs" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Tariffs</span> <span class="plat-icon icon-Logistics" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--dim" style="grid-column: 18; grid-row: 1;" data-label="Trade Risk" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Trade Risk</span> <span class="plat-icon icon-Routes" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--dim" style="grid-column: 2; grid-row: 2;" data-label="AI Supply Chain" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>AI Supply Chain</span> <span class="plat-icon icon-workflow" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 19; grid-row: 2;" data-label="CSR Reporting" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>CSR Reporting</span> <span class="plat-icon icon-Reports" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 3; grid-row: 3;" data-label="Counterfeit Risk" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Counterfeit Risk</span> <span class="plat-icon icon-Red-Flag" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 18; grid-row: 3;" data-label="TAA Compliance" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>TAA Compliance</span> <span class="plat-icon icon-Company-Regulations" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 2; grid-row: 1;" data-label="WEEE Compliance" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>WEEE Compliance</span> <span class="plat-icon icon-Hazmat" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 19; grid-row: 1;" data-label="Modern Slavery" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Modern Slavery</span> <span class="plat-icon icon-legal-scale" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supply-chain-watch" class="plat-cell plat-cell--dim" style="grid-column: 1; grid-row: 2;" data-label="Sole-Source Risk" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Sole-Source Risk</span> <span class="plat-icon icon-Single-Sourced" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 20; grid-row: 2;" data-label="Distributor Intel" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Distributor Intel</span> <span class="plat-icon icon-Distributors" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supplier-insights" class="plat-cell plat-cell--dim" style="grid-column: 2; grid-row: 3;" data-label="Supplier Financials" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>Supplier Financials</span> <span class="plat-icon icon-Financial-Data" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/supplier-insights" class="plat-cell plat-cell--dim" style="grid-column: 19; grid-row: 3;" data-label="M&#38;A Alerts" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>M&amp;A Alerts</span> <span class="plat-icon icon-Mergers--Acquisitions" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/part-risk-manager" class="plat-cell plat-cell--dim" style="grid-column: 1; grid-row: 1;" data-label="PDN Alerts" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>PDN Alerts</span> <span class="plat-icon icon-Alert" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a href="/products/compliance-manager" class="plat-cell plat-cell--dim" style="grid-column: 20; grid-row: 1;" data-label="SCIP Database" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>SCIP Database</span> <span class="plat-icon icon-Data-Source" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a class="plat-cell plat-cell--dim plat-cell--empty" style="grid-column: 1; grid-row: 3;" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn></span> <span class="plat-icon icon-Z2" aria-hidden="true" data-astro-cid-izkoibwn></span> </a><a class="plat-cell plat-cell--dim plat-cell--empty" style="grid-column: 20; grid-row: 3;" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn></span> <span class="plat-icon icon-Z2" aria-hidden="true" data-astro-cid-izkoibwn></span> </a> <div class="plat-logo" style="grid-column: 10 / 12; grid-row: 2 / 3;" data-astro-cid-izkoibwn> <div class="plat-logo-anim" data-plat-logo data-src="/lottie/z2-logo.json" role="img" aria-label="Z2" data-astro-cid-izkoibwn>  <img src="/brand/01-Logos/02-Digital/Positive/Z2_Logo_POS_RGB.svg" alt="Z2" class="plat-logo-img" loading="eager" decoding="async" width="220" height="100" data-astro-cid-izkoibwn> </div> </div> </div> <div class="plat-grid-spacer" aria-hidden="true" data-astro-cid-izkoibwn></div> </section>  <div id="plat-tooltip" class="plat-tip" role="tooltip" aria-hidden="true" data-astro-cid-izkoibwn> <div class="plat-tip-card" data-astro-cid-izkoibwn> <div class="plat-tip-main" data-astro-cid-izkoibwn> <div class="plat-tip-content" data-astro-cid-izkoibwn> <h3 class="plat-tip-headline" data-astro-cid-izkoibwn></h3> <p class="plat-tip-body" data-astro-cid-izkoibwn></p> </div> <div class="plat-tip-footer" data-astro-cid-izkoibwn> <a class="plat-tip-footer-link" href="#" data-astro-cid-izkoibwn> <img class="plat-tip-footer-icon" src="" alt="" aria-hidden="true" data-astro-cid-izkoibwn> <p class="plat-tip-eyebrow" data-astro-cid-izkoibwn></p> </a> </div> </div> <div class="plat-tip-img-wrap" data-astro-cid-izkoibwn> <img class="plat-tip-img" src="" alt="" loading="lazy" decoding="async" data-astro-cid-izkoibwn> </div> </div> </div>  
1002<script type="module" src="/_astro/PlatformGrid.astro_astro_type_script_index_0_lang.CsZre16-.js"></script>
1002  
1002<script type="module" src="/_astro/PlatformGrid.astro_astro_type_script_index_1_lang.DTkOflMD.js"></script>
1002 <section class="cs-section bg-sand-100" data-astro-cid-ixtayits> <div class="cs-grid border-sand-600" data-astro-cid-ixtayits>  <span class="cs-corner cs-corner--tl bg-sand-900" aria-hidden="true" data-astro-cid-ixtayits></span> <span class="cs-corner cs-corner--tr bg-sand-900" aria-hidden="true" data-astro-cid-ixtayits></span> <span class="cs-corner cs-corner--bl bg-sand-900" aria-hidden="true" data-astro-cid-ixtayits></span> <span class="cs-corner cs-corner--br bg-sand-900" aria-hidden="true" data-astro-cid-ixtayits></span>  <div class="cs-panel cs-panel--dark bg-primary-deep text-sand-100" data-astro-cid-ixtayits> <h2 class="cs-headline" data-astro-cid-ixtayits>Support that shows up</h2> <p class="cs-subtext" data-astro-cid-ixtayits>Real supply chain expertise, not just a support ticket queue.</p> </div>  <div class="cs-stats bg-signal-300" data-astro-cid-ixtayits> <div class="cs-stat" data-astro-cid-ixtayits> <span class="cs-stat-value text-sand-900" data-astro-cid-ixtayits>9/10</span> <span class="cs-stat-label text-sand-800" data-astro-cid-ixtayits>Customers would recommend Z2 to a peer</span> </div> <div class="cs-stat" data-astro-cid-ixtayits> <span class="cs-stat-value text-sand-900" data-astro-cid-ixtayits>&lt;4h</span> <span class="cs-stat-label text-sand-800" data-astro-cid-ixtayits>Average first response time for enterprise accounts</span> </div> </div>  <div class="cs-person bg-sand-200" data-astro-cid-ixtayits> <div class="cs-person-photo-wrap" data-astro-cid-ixtayits> <img class="cs-person-photo" src="/brand/team/oliver-dethier.png" alt="" loading="lazy" decoding="async" data-astro-cid-ixtayits> </div> <div class="cs-person-info" data-astro-cid-ixtayits> <p class="cs-person-name text-sand-900" data-astro-cid-ixtayits>Oliver DeThier</p> <p class="cs-person-title text-sand-800" data-astro-cid-ixtayits>Director of Customer Success</p> </div> </div>  <div class="cs-proof bg-sand-200" data-astro-cid-ixtayits> <p class="cs-proof-stat text-sand-900" data-astro-cid-ixtayits>Trusted by leading<br class="cs-proof-br" data-astro-cid-ixtayits> OEMs worldwide.</p> </div> </div> </section>  <section class="ps-section bg-sand-100 pt-16 pb-12 lg:pt-24 lg:pb-16" data-astro-cid-im72z2ce>  <div class="container px-4 sm:px-6 lg:px-8" data-astro-cid-im72z2ce> <div class="grid grid-cols-1 gap-8 lg:gap-16 items-end mb-10 lg:mb-12" data-astro-cid-im72z2ce> <h2 class="type-headline text-[2rem] sm:text-[2.75rem] lg:text-[3.5rem] leading-[1.05] tracking-[-0.02em] text-sand-900 lg:whitespace-nowrap" data-astro-cid-im72z2ce>Five products. One core foundation.</h2>  </div> </div>  <div class="ps-grid-zone" data-astro-cid-im72z2ce>  <div class="ps-rule bg-sand-900" aria-hidden="true" data-astro-cid-im72z2ce></div>  <div class="container px-4 sm:px-6 lg:px-8" data-astro-cid-im72z2ce> <div class="ps-suite-wrapper" data-astro-cid-im72z2ce> <span class="ps-outer-corner ps-outer-corner--tl bg-sand-900" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-outer-corner ps-outer-corner--tr bg-sand-900" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-outer-corner ps-outer-corner--bl bg-sand-900" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-outer-corner ps-outer-corner--br bg-sand-900" aria-hidden="true" data-astro-cid-im72z2ce></span>  <div class="ps-grid" data-astro-cid-im72z2ce> <a href="/products/supply-chain-watch" class="ps-card bg-sand-100" aria-label="Supply Chain Watch" data-astro-cid-im72z2ce>  <span class="ps-corner ps-corner--tl" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--tr" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--bl" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--br" aria-hidden="true" data-astro-cid-im72z2ce></span>  <img src="/brand/06-Product-Icons/Supply-Chain-Watch/Z2_Product_Icons_Supply-Chain-Watch.svg" alt="Supply Chain Watch" class="ps-icon-img" loading="lazy" decoding="async" width="32" height="32" data-astro-cid-im72z2ce> <h3 class="ps-name text-sand-900" data-astro-cid-im72z2ce> <span class="ps-name-text" data-astro-cid-im72z2ce>Supply Chain Watch</span>
1002 <svg class="ps-arrow" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-astro-cid-im72z2ce> <path d="M3 8h10M9 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-im72z2ce></path> </svg> </h3> <p class="ps-desc text-sand-900" data-astro-cid-im72z2ce>Map your BOM to manufacturing sites across 4 tiers. Get 2-week earlier disruption alerts than competitors, filtered to events that actually affect your parts.</p> </a><a href="/products/compliance-manager" class="ps-card bg-sand-100" aria-label="Compliance Manager" data-astro-cid-im72z2ce>  <span class="ps-corner ps-corner--tl" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--tr" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--bl" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--br" aria-hidden="true" data-astro-cid-im72z2ce></span>  <img src="/brand/06-Product-Icons/Compliance-Manager/Z2_Product_Icons_Compliance-Manager.svg" alt="Compliance Manager" class="ps-icon-img" loading="lazy" decoding="async" width="32" height="32" data-astro-cid-im72z2ce> <h3 class="ps-name text-sand-900" data-astro-cid-im72z2ce> <span class="ps-name-text" data-astro-cid-im72z2ce>Compliance Manager</span>
1002 <svg class="ps-arrow" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-astro-cid-im72z2ce> <path d="M3 8h10M9 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-im72z2ce></path> </svg> </h3> <p class="ps-desc text-sand-900" data-astro-cid-im72z2ce>Achieve 80%+ compliance coverage from day one. Assess every BOM against 270+ global regulations (RoHS, REACH, PFAS, TSCA, and more), with audit-ready reports on demand.</p> </a><a href="/products/part-risk-manager" class="ps-card bg-sand-100" aria-label="Part Risk Manager" data-astro-cid-im72z2ce>  <span class="ps-corner ps-corner--tl" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--tr" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--bl" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--br" aria-hidden="true" data-astro-cid-im72z2ce></span>  <img src="/brand/06-Product-Icons/Part-Risk-Manager/Z2_Product_Icons_Part-Risk-Manager.svg" alt="Part Risk Manager" class="ps-icon-img" loading="lazy" decoding="async" width="32" height="32" data-astro-cid-im72z2ce> <h3 class="ps-name text-sand-900" data-astro-cid-im72z2ce> <span class="ps-name-text" data-astro-cid-im72z2ce>Part Risk Manager</span>
1002 <svg class="ps-arrow" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-astro-cid-im72z2ce> <path d="M3 8h10M9 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-im72z2ce></path> </svg> </h3> <p class="ps-desc text-sand-900" data-astro-cid-im72z2ce>Score every component on 6 risk factors. Forecast EOL up to 36 months out. Find compliant alternates in hours, not days.</p> </a><a href="/products/supplier-insights" class="ps-card bg-sand-100" aria-label="Supplier Insights" data-astro-cid-im72z2ce>  <span class="ps-corner ps-corner--tl" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--tr" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--bl" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--br" aria-hidden="true" data-astro-cid-im72z2ce></span>  <img src="/brand/06-Product-Icons/Supplier-Insights/Z2_Product_Icons_Supplier-Insights.svg" alt="Supplier Insights" class="ps-icon-img" loading="lazy" decoding="async" width="32" height="32" data-astro-cid-im72z2ce> <h3 class="ps-name text-sand-900" data-astro-cid-im72z2ce> <span class="ps-name-text" data-astro-cid-im72z2ce>Supplier Insights</span>
1002 <svg class="ps-arrow" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-astro-cid-im72z2ce> <path d="M3 8h10M9 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-im72z2ce></path> </svg> </h3> <p class="ps-desc text-sand-900" data-astro-cid-im72z2ce>1M+ suppliers pre-scored across 12 risk categories: financial health, geopolitical exposure, sanctions screening, ESG, and more. Know your exposure before a supplier fails.</p> </a> </div>  <a href="/products/enterprise-hub" class="ps-hub bg-sand-100" aria-label="Z2 Enterprise Hub" data-astro-cid-im72z2ce> <span class="ps-corner ps-corner--tl" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--tr" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--bl" aria-hidden="true" data-astro-cid-im72z2ce></span> <span class="ps-corner ps-corner--br" aria-hidden="true" data-astro-cid-im72z2ce></span> <div class="ps-hub-left" data-astro-cid-im72z2ce> <img src="/brand/06-Product-Icons/Enterprise-Hub/Z2_Product_Icons_Enterprise-Hub.svg" alt="Enterprise Hub" class="ps-icon-img" loading="lazy" decoding="async" width="32" height="32" data-astro-cid-im72z2ce> <h3 class="ps-hub-name text-sand-900" data-astro-cid-im72z2ce>
1003Z2 Enterprise Hub
1004<svg class="ps-arrow" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-astro-cid-im72z2ce> <path d="M3 8h10M9 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-im72z2ce></path> </svg> </h3> <p class="ps-hub-desc text-sand-900" data-astro-cid-im72z2ce>Replace three separate tool contracts with one platform. Z2&#39;s Enterprise Hub connects part risk, supplier risk, and compliance into a single data layer: one BOM upload, one supplier network, one source of truth across every team.</p> </div>  <div class="ps-hub-deco-clip" aria-hidden="true" data-astro-cid-im72z2ce> <img src="/images/z2-logo-pixels.svg" alt="" class="ps-hub-deco" loading="lazy" decoding="async" width="1080" height="1080" data-astro-cid-im72z2ce> </div> </a> </div> </div>  <div class="ps-rule bg-sand-900" aria-hidden="true" data-astro-cid-im72z2ce></div> </div> </section>  <section class="blog-section" data-astro-cid-dml2rumt> <div class="blog-inner" data-astro-cid-dml2rumt> <div class="blog-header" data-astro-cid-dml2rumt> <h2 class="blog-headline" data-astro-cid-dml2rumt>What&#39;s new at Z2</h2> <div class="blog-controls" data-astro-cid-dml2rumt> <a href="/insights" class="blog-cta" data-astro-cid-dml2rumt>Get more insights</a> <div class="blog-arrows" data-astro-cid-dml2rumt> <button class="arrow-btn" id="blog-prev" aria-label="Previous articles" disabled data-astro-cid-dml2rumt> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-dml2rumt> <path d="M12.5 15L7.5 10L12.5 5" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-dml2rumt></path> </svg> </button> <button class="arrow-btn arrow-btn--next" id="blog-next" aria-label="Next articles" data-astro-cid-dml2rumt> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-dml2rumt> <path d="M7.5 5L12.5 10L7.5 15" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-dml2rumt></path> </svg> </button> </div> </div> </div> </div> <div class="blog-grid-zone" data-astro-cid-dml2rumt> <div class="blog-carousel-outer" id="blog-carousel" data-astro-cid-dml2rumt> <div class="blog-track" id="blog-track" data-astro-cid-dml2rumt> <a href="/insights/the-5-essential-features-for-reach-compliance-software" class="blog-card bg-sand-200 border-sand-900" data-astro-cid-dml2rumt> <div class="blog-thumb overlay-1" data-astro-cid-dml2rumt> <img src="//a.storyblok.com/f/291847697916515/1200x627/3c1a1c7475/reach-compliance-software.webp" alt="The 5 Essential Features for REACH Compliance Software" loading="lazy" decoding="async" data-astro-cid-dml2rumt> </div> <div class="blog-body" data-astro-cid-dml2rumt> <p class="blog-title" data-astro-cid-dml2rumt>The 5 Essential Features for REACH Compliance Software</p>  </div> </a><a href="/insights/how-engineers-can-solve-their-rohs-coc-problem-once-and-for-all" class="blog-card bg-sand-200 border-sand-900" data-astro-cid-dml2rumt> <div class="blog-thumb overlay-2" data-astro-cid-dml2rumt> <img src="//a.storyblok.com/f/291847697916515/1200x627/27e3797fde/rohs-compliance-certificate-coc.webp" alt="How Engineers Can Solve Their RoHS CoC Problem Once and for All" loading="lazy" decoding="async" data-astro-cid-dml2rumt> </div> <div class="blog-body" data-astro-cid-dml2rumt> <p class="blog-title" data-astro-cid-dml2rumt>How Engineers Can Solve Their RoHS CoC Problem Once and for All</p>  </div> </a><a href="/insights/why-the-next-critical-mineral-deadline-could-trigger-major-component-shortages" class="blog-card bg-sand-200 border-sand-900" data-astro-cid-dml2rumt> <div class="blog-thumb overlay-3" data-astro-cid-dml2rumt> <img src="//a.storyblok.com/f/291847697916515/1200x627/89d027b715/critical-mineral-deadline.webp" alt="Why the Next Critical Mineral Deadline Could Trigger Major Component Shortages" loading="lazy" decoding="async" data-astro-cid-dml2rumt> </div> <div class="blog-body" data-astro-cid-dml2rumt> <p class="blog-title" data-astro-cid-dml2rumt>Why the Next Critical Mineral Deadline Could Trigger Major Component Shortages</p>  </div> </a><a href="/insights/why-the-4-new-substances-headed-for-reach-authorization-will-force-product-redesigns" class="blog-card bg-sand-200 border-sand-900" data-astro-cid-dml2rumt> <div class="blog-thumb overlay-4" data-astro-cid-dml2rumt> <img src="//a.storyblok.com/f/291847697916515/1200x627/c108426d87/reach-authorization-list.webp" alt="Why the 4 New Substances Headed for REACH Authorization Will Force Product Redesigns" loading="lazy" decoding="async" data-astro-cid-dml2rumt> </div> <div class="blog-body" data-astro-cid-dml2rumt> <p class="blog-title" data-astro-cid-dml2rumt>Why the 4 New Substances Headed for REACH Authorization Will Force Product Redesigns</p>  </div> </a><a href="/insights/the-top-8-electronic-supply-chain-solutions-for-sourcing-components" class="blog-card bg-sand-200 border-sand-900" data-astro-cid-dml2rumt> <div class="blog-thumb overlay-1" data-astro-cid-dml2rumt> <img src="//a.storyblok.com/f/291847697916515/1200x627/6915057e09/top-electronic-supply-chain-solutions.webp" alt="The Top 8 Electronic Supply Chain Solutions for Sourcing Components" loading="lazy" decoding="async" data-astro-cid-dml2rumt> </div> <div class="blog-body" data-astro-cid-dml2rumt> <p class="blog-title" data-astro-cid-dml2rumt>The Top 8 Electronic Supply Chain Solutions for Sourcing Components</p>  </div> </a><a href="/insights/why-the-eu-toy-safety-directive-points-to-a-new-era-for-chemical-compliance" class="blog-card bg-sand-200 border-sand-900" data-astro-cid-dml2rumt> <div class="blog-thumb overlay-2" data-astro-cid-dml2rumt> <img src="//a.storyblok.com/f/291847697916515/1200x627/60d7f9fa7a/eu-toy-safety-directive.webp" alt="Why the EU Toy Safety Directive Points to a New Era for Chemical Compliance " loading="lazy" decoding="async" data-astro-cid-dml2rumt> </div> <div class="blog-body" data-astro-cid-dml2rumt> <p class="blog-title" data-astro-cid-dml2rumt>Why the EU Toy Safety Directive Points to a New Era for Chemical Compliance </p>  </div> </a><a href="/insights/why-price-is-no-longer-the-top-priority-for-electronic-component-sourcing" class="blog-card bg-sand-200 border-sand-900" data-astro-cid-dml2rumt> <div class="blog-thumb overlay-3" data-astro-cid-dml2rumt> <img src="//a.storyblok.com/f/291847697916515/1200x627/c5a988cdef/pricing-electronic-component-sourcing.webp" alt="Why Price Is No Longer the Top Priority for Electronic Component Sourcing" loading="lazy" decoding="async" data-astro-cid-dml2rumt> </div> <div class="blog-body" data-astro-cid-dml2rumt> <p class="blog-title" data-astro-cid-dml2rumt>Why Price Is No Longer the Top Priority for Electronic Component Sourcing</p>  </div> </a><a href="/insights/how-manufacturers-in-a-hurry-can-move-fast-to-comply-with-ppwr" class="blog-card bg-sand-200 border-sand-900" data-astro-cid-dml2rumt> <div class="blog-thumb overlay-4" data-astro-cid-dml2rumt> <img src="//a.storyblok.com/f/291847697916515/1200x627/0b247111d7/ppwr-compliance.webp" alt="How Manufacturers in a Hurry Can Move Fast to Comply With PPWR" loading="lazy" decoding="async" data-astro-cid-dml2rumt> </div> <div class="blog-body" data-astro-cid-dml2rumt> <p class="blog-title" data-astro-cid-dml2rumt>How Manufacturers in a Hurry Can Move Fast to Comply With PPWR</p>  </div> </a><a href="/insights/7-effective-strategies-for-strengthening-your-supply-chain-diversity" class="blog-card bg-sand-200 border-sand-900" data-astro-cid-dml2rumt> <div class="blog-thumb overlay-1" data-astro-cid-dml2rumt> <img src="//a.storyblok.com/f/291847697916515/1200x627/19316dca5c/supply-chain-diversity.webp" alt="7 Effective Strategies for Strengthening Your Supply Chain Diversity" loading="lazy" decoding="async" data-astro-cid-dml2rumt> </div> <div class="blog-body" data-astro-cid-dml2rumt> <p class="blog-title" data-astro-cid-dml2rumt>7 Effective Strategies for Strengthening Your Supply Chain Diversity</p>  </div> </a>
1004<a href="/insights/everything-you-need-to-know-to-simplify-your-imds-submissions" class="blog-card bg-sand-200 border-sand-900" data-astro-cid-dml2rumt> <div class="blog-thumb overlay-2" data-astro-cid-dml2rumt> <img src="//a.storyblok.com/f/291847697916515/1200x627/7b56170631/imds-submissions.webp" alt="Everything You Need to Know to Simplify Your IMDS Submissions" loading="lazy" decoding="async" data-astro-cid-dml2rumt> </div> <div class="blog-body" data-astro-cid-dml2rumt> <p class="blog-title" data-astro-cid-dml2rumt>Everything You Need to Know to Simplify Your IMDS Submissions</p>  </div> </a> </div> </div> </div> </section>  
1004<script type="module">const t=document.getElementById("blog-carousel"),l=document.getElementById("blog-prev"),e=document.getElementById("blog-next");if(t&&l&&e){let o=function(){const s=t.scrollLeft<8,n=t.scrollLeft>=t.scrollWidth-t.clientWidth-8;l.disabled=s,e.disabled=n,e.classList.toggle("arrow-btn--next",!n)};l.addEventListener("click",()=>{t.scrollBy({left:-344,behavior:"smooth"})}),e.addEventListener("click",()=>{t.scrollBy({left:344,behavior:"smooth"})}),t.addEventListener("scroll",o,{passive:!0}),o()}</script>
1004 <section aria-label="As featured in" class="bg-sand-100 py-10" data-astro-cid-4gdljyok> <div class="container" data-astro-cid-4gdljyok> <ul class="grid grid-cols-2 md:grid-cols-3 items-center gap-x-6 gap-y-7 lg:flex lg:flex-nowrap lg:justify-evenly lg:gap-x-4 w-full" role="list" data-astro-cid-4gdljyok> <li role="listitem" class="flex min-w-0 items-center justify-center lg:flex-1" data-astro-cid-4gdljyok> <img src="/images/press/press-nyt.png" alt="The New York Times" title="The New York Times" width="200" height="26" loading="lazy" decoding="async" class="press-logo h-5 sm:h-6 lg:h-7 w-auto max-w-full object-contain" style="max-width:155px" data-astro-cid-4gdljyok> </li><li role="listitem" class="flex min-w-0 items-center justify-center lg:flex-1" data-astro-cid-4gdljyok> <img src="/images/press/press-ft.png" alt="Financial Times" title="Financial Times" width="140" height="36" loading="lazy" decoding="async" class="press-logo h-5 sm:h-6 lg:h-7 w-auto max-w-full object-contain" style="max-width:132px" data-astro-cid-4gdljyok> </li><li role="listitem" class="flex min-w-0 items-center justify-center lg:flex-1" data-astro-cid-4gdljyok> <img src="/images/press/press-guardian.png" alt="The Guardian" title="The Guardian" width="160" height="48" loading="lazy" decoding="async" class="press-logo h-5 sm:h-6 lg:h-7 w-auto max-w-full object-contain" style="max-width:108px" data-astro-cid-4gdljyok> </li><li role="listitem" class="flex min-w-0 items-center justify-center lg:flex-1" data-astro-cid-4gdljyok> <img src="/images/press/press-lat.png" alt="Los Angeles Times" title="Los Angeles Times" width="180" height="30" loading="lazy" decoding="async" class="press-logo h-5 sm:h-6 lg:h-7 w-auto max-w-full object-contain" style="max-width:120px" data-astro-cid-4gdljyok> </li><li role="listitem" class="flex min-w-0 items-center justify-center lg:flex-1" data-astro-cid-4gdljyok> <img src="/images/press/press-scb.webp" alt="Supply Chain Brain" title="Supply Chain Brain" width="160" height="40" loading="lazy" decoding="async" class="press-logo h-5 sm:h-6 lg:h-7 w-auto max-w-full object-contain" style="max-width:120px" data-astro-cid-4gdljyok> </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;→
1005</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%);">
1005 <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">
1006&copy;2026 Z2Data. All rights reserved.&ensp;
1007<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
1007ose 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="/" 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/" 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/" 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/" 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/" 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/" 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/" 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/" 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/" 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/" 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/" 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/" 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/" 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/" 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>
1008SVG
1009</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>
1010PNG
1011</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>
1012JPG
1013</button> </div> </div> 
1013<script>
1014  /* ── Logo context menu ──────────────────────────────────────── */
1015  (function () {
1016    const logoLink = document.getElementById('footer-logo');
1017    const ctxMenu  = document.getElementById('footer-logo-ctx');
1018    if (!logoLink || !ctxMenu) return;
1019
1020    const logoFiles = {
1021      svg: { url: '/brand/01-Logos/02-Digital/Negative/Z2_Logo_NEG_RGB.svg', name: 'Z2_Logo_White.svg' },
1022      png: { url: '/brand/01-Logos/02-Digital/Negative/Z2_Logo_NEG_RGB.png', name: 'Z2_Logo_White.png' },
1023      jpg: { url: '/brand/01-Logos/02-Digital/Negative/Z2_Logo_NEG_RGB.jpg', name: 'Z2_Logo_White.jpg' },
1024    };
1025
1026    function hideCtx() { ctxMenu.classList.add('hidden'); }
1027
1028    function showCtx(x, y) {
1029      ctxMenu.classList.remove('hidden');
1030      var margin = 8;
1031      var w = ctxMenu.offsetWidth || 200;
1032      var h = ctxMenu.offsetHeight || 160;
1033      var left = Math.min(x, window.innerWidth  - w - margin);
1034      var top  = Math.min(y, window.innerHeight - h - margin);
1035      ctxMenu.style.left = left + 'px';
1036      ctxMenu.style.top  = top  + 'px';
1037    }
1038
1039    logoLink.addEventListener('contextmenu', function (e) {
1040      e.preventDefault();
1041      showCtx(e.clientX, e.clientY);
1042    });
1043
1044    ctxMenu.querySelector('[data-logo-action="newtab"]') && ctxMenu.querySelector('[data-logo-action="newtab"]').addEventListener('click', function () {
1045      window.open('/', '_blank', 'noopener,noreferrer');
1046      hideCtx();
1047    });
1048
1049    ctxMenu.querySelectorAll('[data-logo-dl]').forEach(function (btn) {
1050      btn.addEventListener('click', function () {
1051        var fmt  = btn.getAttribute('data-logo-dl');
1052        var file = logoFiles[fmt];
1053        if (!file) return;
1054        var a = document.createElement('a');
1055        a.href = file.url;
1056        a.download = file.name;
1057        document.body.appendChild(a);
1058        a.click();
1059        document.body.removeChild(a);
1060        hideCtx();
1061      });
1062    });
1063
1064    document.addEventListener('click', hideCtx);
1065    document.addEventListener('keydown', function (e) { if (e.key === 'Escape') hideCtx(); });
1066    document.addEventListener('contextmenu', function (e) {
1067      if (!logoLink.contains(e.target)) hideCtx();
1068    });
1069  })();
1070
1071  /* ── Mosaic terrain animation ───────────────────────────────── */
1072  (function () {
1073    var canvas = document.getElementById('footer-terrain');
1074    var wrap   = canvas && canvas.closest('footer');
1075    if (!canvas || !canvas.getContext || !wrap) return;
1076
1077    var ctx = canvas.getContext('2d');
1078    var CELL = 5;
1079    var MOUSE_R = 320;   /* px — wide diffuse glow */
1080    var W, H, cols, rows, t = 0, raf = null;
1081    var mxRaw = -9999, myRaw = -9999; /* mouse in page coords */
1082
1083    function resize() {
1084      W = canvas.width  = canvas.offsetWidth;
1085      H = canvas.height = canvas.offsetHeight;
1086      cols = Math.ceil(W / CELL) + 1;
1087      rows = Math.ceil(H / CELL) + 1;
1088    }
1089
1090    /* 4 sine waves — slow rolling hills */
1091    function fieldVal(c, r) {
1092      var x = c / Math.max(cols - 1, 1);
1093      var y = r / Math.max(rows - 1, 1);
1094      return (
1095        Math.sin(x * 3.1  + t * 0.22)              * 0.38 +
1096        Math.sin(x * 6.8  + y * 1.4 + t * 0.30)    * 0.26 +
1097        Math.sin((x - y)  * 4.5 + t * 0.18)         * 0.20 +
1098        Math.sin(y * 5.2  - t * 0.14)               * 0.16
1099      );
1100    }
1101
1102    function draw() {
1103      ctx.clearRect(0, 0, W, H);
1104
1105      /* mouse position relative to canvas */
1106      var rect = canvas.getBoundingClientRect();
1107      var mx = mxRaw - rect.left;
1108      var my = myRaw - rect.top;
1109      var hasMouse = mxRaw > -9000;
1110
1111      for (var r = 0; r < rows; r++) {
1112        for (var c = 0; c < cols; c++) {
1113          var v = (fieldVal(c, r) + 1) * 0.5; /* → [0,1] */
1114
1115          /* edge vignette — fade left/right/bottom edges */
1116          var ex = c / Math.max(cols - 1, 1);
1117          var ey = r / Math.max(rows - 1, 1);
1118          var edgeX = Math.min(ex / 0.18, (1 - ex) / 0.18, 1);
1119          var edgeY = Math.min(ey / 0.12, 1);
1120          var edge  = edgeX * edgeY;
1121
1122          /* constant dim base so grid never disappears */
1123          var a = 0.028 * edge;
1124
1125          /* height contribution — ramps up on peaks */
1126          if (v > 0.44) {
1127            a += Math.pow((v - 0.44) / 0.56, 1.5) * 0.24 * edge;
1128          }
1129
1130          /* subtle mouse proximity glow */
1131          if (hasMouse) {
1132            var cx = c * CELL + CELL * 0.5;
1133            var cy = r * CELL + CELL * 0.5;
1134            var dx = cx - mx, dy = cy - my;
1135            var d2 = dx * dx + dy * dy;
1136            if (d2 < MOUSE_R * MOUSE_R) {
1137              var falloff = 1 - Math.sqrt(d2) / MOUSE_R;
1138              a += falloff * 0.06;
1139            }
1140          }
1141
1142          ctx.fillStyle = 'rgba(255,255,255,' + Math.min(a, 0.46).toFixed(3) + ')';
1143          ctx.fillRect(c * CELL, r * CELL, CELL - 1, CELL - 1);
1144        }
1145      }
1146
1147      t += 0.006;
1148      raf = requestAnimationFrame(draw);
1149    }
1150
1151    /* Track mouse on the wrap div (canvas has pointer-events:none) */
1152    wrap.addEventListener('mousemove', function (e) {
1153      mxRaw = e.clientX;
1154      myRaw = e.clientY;
1155    });
1156    wrap.addEventListener('mouseleave', function () {
1157      mxRaw = -9999;
1158      myRaw = -9999;
1159    });
1160
1161    /* Pause when footer scrolls off-screen */
1162    if (typeof IntersectionObserver !== 'undefined') {
1163      var io = new IntersectionObserver(function (entries) {
1164        entries.forEach(function (e) {
1165          if (e.isIntersecting) {
1166            resize();
1167            if (!raf) draw();
1168          } else {
1169            if (raf) { cancelAnimationFrame(raf); raf = null; }
1170          }
1171        });
1172      }, { threshold: 0 });
1173      io.observe(canvas);
1174    } else {
1175      resize();
1176      draw();
1177    }
1178
1179    var resizeTimer;
1180    window.addEventListener('resize', function () {
1181      clearTimeout(resizeTimer);
1182      resizeTimer = setTimeout(resize, 120);
1183    });
1184  })();
1185</script>
1185      
1185<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>
1185 
1185<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>
1185  
1185<script>
1186    (function () {
1187      function payload() {
1188        return JSON.stringify({
1189          landing: location.href,
1190          referrer: document.referrer || '',
1191          path: location.pathname,
1192        });
1193      }
1194      function send() {
1195        try {
1196          fetch('/api/track', {
1197            method: 'POST',
1198            keepalive: true,
1199            headers: { 'Content-Type': 'application/json' },
1200            body: payload(),
1201          });
1202        } catch (e) {}
1203      }
1204      send();
1205      // EU: if they accept analytics after load, fire again so the server can
1206      // mint + record first-touch immediately (server is idempotent on vid).
1207      try {
1208        document.addEventListener('cookieyes_consent_update', function () { send(); }, { once: true });
1209      } catch (e) {}
1210    })();
1211  </script>
1211 </body> </html>

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