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&utm_medium=website&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 & 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 & 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 & 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'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'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 & 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 & 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'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 & 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've incorporated Z2 into our regular supply chain risk rituals. It'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&A Alerts" data-astro-cid-izkoibwn> <span class="plat-label" data-astro-cid-izkoibwn>M&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><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'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'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 <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 â 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 & 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 & 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©2026 Z2Data. All rights reserved.  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.