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>Contact Us | Z2Data</title><meta name="description" content="Get in touch with the Z2 team. Call 1-866-923-2821 or send us a message about sales, support, or general questions on supply chain risk management."><link rel="canonical" href="https://www.z2data.com/contact/"><link rel="alternate" hreflang="en" href="https://www.z2data.com/contact/"><link rel="alternate" hreflang="ja" href="https://www.z2data.com/ja/contact/"><link rel="alternate" hreflang="de" href="https://www.z2data.com/de/contact/"><link rel="alternate" hreflang="it" href="https://www.z2data.com/it/contact/"><link rel="alternate" hreflang="pl" href="https://www.z2data.com/pl/contact/"><link rel="alternate" hreflang="fr" href="https://www.z2data.com/fr/contact/"><link rel="alternate" hreflang="ko" href="https://www.z2data.com/ko/contact/"><link rel="alternate" hreflang="es" href="https://www.z2data.com/es/contact/"><link rel="alternate" hreflang="pt" href="https://www.z2data.com/pt/contact/"><link rel="alternate" hreflang="pt-BR" href="https://www.z2data.com/pt-br/contact/"><link rel="alternate" hreflang="tr" href="https://www.z2data.com/tr/contact/"><link rel="alternate" hreflang="th" href="https://www.z2data.com/th/contact/"><link rel="alternate" hreflang="nl" href="https://www.z2data.com/nl/contact/"><link rel="alternate" hreflang="vi" href="https://www.z2data.com/vi/contact/"><link rel="alternate" hreflang="x-default" href="https://www.z2data.com/contact/"><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/contact/"><meta property="og:title" content="Contact Us | Z2Data"><meta property="og:description" content="Get in touch with the Z2 team. Call 1-866-923-2821 or send us a message about sales, support, or general questions on supply chain risk management."><meta property="og:image" content="https://z2-homepage.pages.dev/og/card.png?title=Talk+to+our+supply%0Achain+experts&art=%2Fog%2Fassets%2Fpeople-mosaic.png&artw=507&arth=380&artright=56&frame=bracket&textw=470&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="Contact Us | Z2Data"><meta name="twitter:description" content="Get in touch with the Z2 team. Call 1-866-923-2821 or send us a message about sales, support, or general questions on supply chain risk management."><meta name="twitter:image" content="https://z2-homepage.pages.dev/og/card.png?title=Talk+to+our+supply%0Achain+experts&art=%2Fog%2Fassets%2Fpeople-mosaic.png&artw=507&arth=380&artright=56&frame=bracket&textw=470&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":"ContactPage","@id":"https://www.z2data.com/contact/#webpage","url":"https://www.z2data.com/contact/","name":"Contact Us","description":"Get in touch with the Z2 team. Call 1-866-923-2821 or send us a message about sales, support, or general questions on supply chain risk management.","isPartOf":{"@id":"https://www.z2data.com/#website"},"about":{"@id":"https://www.z2data.com/#organization"},"mainEntity":{"@id":"https://www.z2data.com/#organization"},"breadcrumb":{"@id":"https://www.z2data.com/contact/#breadcrumb"}},{"@context":"https://schema.org","@type":"BreadcrumbList","@id":"https://www.z2data.com/contact/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.z2data.com/"},{"@type":"ListItem","position":2,"name":"Contact","item":"https://www.z2data.com/contact/"}]}]</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>.iph-wrap{position:relative}.iph-wrap--own{display:block}.iph-btn{position:absolute;left:2px;top:2px;bottom:2px;display:flex;align-items:center;gap:.45rem;padding:0 .7rem 0 .85rem;background:transparent;border:0;border-right:1px solid var(--color-sand-300);border-radius:.6rem 0 0 .6rem;cursor:pointer;font:inherit;color:var(--color-sand-900)}.iph-btn:hover{background:var(--color-sand-100)}.iph-btn:focus-visible{outline:2px solid var(--color-primary-deep);outline-offset:-2px}.iph-flag{flex:none;width:20px;height:15px;background-image:url(/images/flags/sprite.webp);background-size:320px auto;background-repeat:no-repeat;border-radius:2px;box-shadow:inset 0 0 0 1px #231c131f}.iph-dial{font-size:1.05rem;color:var(--color-sand-800);font-variant-numeric:tabular-nums;white-space:nowrap}.iph-caret{flex:none;width:.42rem;height:.42rem;border-right:1.5px solid var(--color-sand-600);border-bottom:1.5px solid var(--color-sand-600);transform:rotate(45deg) translateY(-20%)}.iph-panel{position:absolute;z-index:60;top:calc(100% + .4rem);left:0;width:-moz-max-content;width:max-content;min-width:100%;max-width:min(21rem,calc(100vw - 2rem));background:#fff;border:1.5px solid var(--color-sand-900);border-radius:.75rem;box-shadow:0 10px 30px #0d201b2e;overflow:hidden}.iph-search{width:100%;border:0;border-bottom:1px solid var(--color-sand-300);padding:.65rem .9rem;font:inherit;font-size:.95rem;color:var(--color-sand-900);background:#fff;border-radius:0}.iph-search:focus{outline:none}.iph-list{list-style:none;margin:0;padding:.3rem 0;max-height:15rem;overflow-y:auto;overscroll-behavior:contain}.iph-item{display:flex;align-items:center;gap:.55rem;width:100%;padding:.42rem .9rem;background:none;border:0;font:inherit;font-size:.95rem;color:var(--color-sand-900);cursor:pointer;text-align:left}.iph-item:hover,.iph-item.is-hi{background:var(--color-sand-200)}.iph-item[aria-selected=true] .iph-name{font-weight:600}.iph-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.iph-item .iph-dial{font-size:.85rem;color:var(--color-sand-600)}.iph-empty{margin:0;padding:.6rem .9rem;font-size:.9rem;color:var(--color-sand-600)} 3</style> 4<link rel="stylesheet" href="/_astro/contact.C-4J0TZO.css"> 5<link rel="stylesheet" href="/_astro/_slug_.CaTaghe6.css">
5<script type="module" src="/_astro/page.DZZVrAzF.js"></script>
5</head> <body>
5<script>(function(){const LOCALES = ["en","ja","de","it","pl","fr","ko","es","pt","pt-br","tr","th","nl","vi"]; 6const NON_DEFAULT = ["ja","de","it","pl","fr","ko","es","pt","pt-br","tr","th","nl","vi"]; 7const DEFAULT_LOCALE = "en"; 8const AVAILABLE = ["ja","de","it","pl","fr","ko","es","pt","pt-br","tr","th","nl","vi"]; 9const 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"}}; 10 11 (function () { 12 try { 13 // Never act for automation/crawlers we can detect. 14 if (navigator.webdriver) return; 15 var langs = navigator.languages && navigator.languages.length ? navigator.languages : [navigator.language]; 16 if (!langs || !langs.length) return; 17 18 function readCookie(n) { 19 var m = document.cookie.match('(^|;)\\s*' + n + '\\s*=\\s*([^;]+)'); 20 return m ? m[2] : null; 21 } 22 function setCookie(n, v) { 23 document.cookie = n + '=' + v + ';path=/;max-age=31536000;samesite=lax'; 24 } 25 26 // Match the full tag first, then fall back to the base language â a bare 27 // slice(0,2) breaks region-qualified locales in both directions. 28 var current = (document.documentElement.lang || 'en').toLowerCase(); 29 if (LOCALES.indexOf(current) < 0) current = current.split('-')[0]; 30 var path = location.pathname; 31 var hasPrefix = NON_DEFAULT.some(function (l) { 32 return path === '/' + l || path.indexOf('/' + l + '/') === 0; 33 }); 34 35 // First supported locale among the browser's ordered preferences. Prefer an 36 // exact region match (pt-BR â pt-br) over the base language (pt-BR â pt). 37 var preferred = null; 38 for (var i = 0; i < langs.length; i++) { 39 var full = (langs[i] || '').toLowerCase(); 40 if (LOCALES.indexOf(full) >= 0) { preferred = full; break; } 41 var base = full.split('-')[0]; 42 if (LOCALES.indexOf(base) >= 0) { preferred = base; break; } 43 } 44 45 var cookie = readCookie('pref_lang'); 46 var chosen = cookie && LOCALES.indexOf(cookie) >= 0 ? cookie : null; 47 var desired = chosen || preferred; 48 if (!desired) return; 49 50 if (!hasPrefix) { 51 // On an English URL: redirect to the desired locale only if THIS page is 52 // actually translated into it (else the /ja/ URL is just English anyway). 53 if (desired !== DEFAULT_LOCALE && AVAILABLE.indexOf(desired) >= 0) { 54 if (!chosen) setCookie('pref_lang', desired); 55 location.replace('/' + desired + path + location.search + location.hash); 56 return; 57 } 58 return; 59 } 60 61 // On a localized URL: if the browser prefers a DIFFERENT language that this 62 // page is genuinely translated into, and the user hasn't settled on the 63 // current one, offer a banner. 64 if (preferred && preferred !== current && chosen !== current && AVAILABLE.indexOf(preferred) >= 0) { 65 showBanner(preferred); 66 } 67 68 function showBanner(loc) { 69 if (document.getElementById('z2-lang-banner')) return; 70 var c = COPY[loc]; 71 if (!c) return; 72 var rest = path.replace(new RegExp('^/' + current + '(?=/|$)'), '') || '/'; 73 var href = '/' + loc + (rest === '/' ? '' : rest) + location.search + location.hash; 74 75 var bar = document.createElement('div'); 76 bar.id = 'z2-lang-banner'; 77 bar.setAttribute('role', 'region'); 78 bar.setAttribute('aria-label', c.label); 79 bar.style.cssText = 80 'position:fixed;left:50%;transform:translateX(-50%);bottom:16px;z-index:9998;' + 81 'background:#231C13;color:#fff;border-radius:9999px;padding:10px 16px;display:flex;' + 82 'align-items:center;gap:14px;font:14px/1.2 system-ui,-apple-system,sans-serif;' + 83 'box-shadow:0 8px 24px rgba(0,0,0,.25);max-width:92vw'; 84 85 var span = document.createElement('span'); 86 span.textContent = c.prompt + ' ' + c.label + '?'; 87 88 var view = document.createElement('a'); 89 view.href = href; 90 view.textContent = c.view; 91 view.style.cssText = 92 'color:#231C13;background:#8CC04F;border-radius:9999px;padding:6px 14px;' + 93 'text-decoration:none;font-weight:600;white-space:nowrap';
94 view.addEventListener('click', function () { setCookie('pref_lang', loc); }); 95 96 var x = document.createElement('button'); 97 x.type = 'button'; 98 x.setAttribute('aria-label', c.dismiss); 99 x.textContent = 'â'; 100 x.style.cssText = 'background:none;border:0;color:rgba(255,255,255,.6);cursor:pointer;font-size:14px;line-height:1'; 101 x.addEventListener('click', function () { setCookie('pref_lang', current); bar.remove(); }); 102 103 bar.appendChild(span); 104 bar.appendChild(view); 105 bar.appendChild(x); 106 document.body.appendChild(bar); 107 } 108 } catch (e) {} 109 })(); 110})();</script>
110
110<script>(function(){const NDL = ["ja","de","it","pl","fr","ko","es","pt","pt-br","tr","th","nl","vi"]; 111 112 (function () { 113 var seg = location.pathname.split('/')[1]; 114 if (NDL.indexOf(seg) === -1) return; 115 var p = '/' + seg; 116 function hasLocalePrefix(h) { 117 for (var k = 0; k < NDL.length; k++) { 118 var q = '/' + NDL[k]; 119 if (h === q || h.indexOf(q + '/') === 0) return true; 120 } 121 return false; 122 } 123 function fix(root) { 124 var links = (root || document).querySelectorAll('a[href^="/"]'); 125 for (var i = 0; i < links.length; i++) { 126 var a = links[i], h = a.getAttribute('href'); 127 if (!h || h.charAt(0) !== '/' || h.indexOf('//') === 0) continue; 128 if (hasLocalePrefix(h)) continue; // already localized 129 if (h.indexOf('/api/') === 0 || h.indexOf('/og/') === 0) continue; 130 if (a.hasAttribute('hreflang') || a.hasAttribute('data-no-localize')) continue; 131 a.setAttribute('href', p + h); 132 } 133 } 134 function run() { fix(document); } 135 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', run); 136 else run(); 137 // Re-run if components inject links after load (mega-menus, carousels). 138 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) {} 139 })(); 140 })();</script>
vendor: 70 bytes, line 140
140 <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=
140GTM-TFT483R
vendor: 85 bytes, line 140
140" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript>
140<style>iframe[src*="hs-web-interactive"],iframe[src*="hs-sites.com"]{display:none!important}</style>
140<script> 141 (function () { 142 function overlayOf(ifr) { 143 // Walk up to the outermost positioned container HubSpot injects (its 144 // backdrop), staying inside HubSpot's own appended subtree, and drop it 145 // so no ghost overlay blocks clicks. Falls back to the iframe itself. 146 var el = ifr, top = ifr; 147 for (var i = 0; i < 6 && el && el !== document.body; i++) { 148 var pos = getComputedStyle(el).position; 149 if (pos === 'fixed' || pos === 'absolute') top = el; 150 el = el.parentElement; 151 } 152 return top || ifr; 153 } 154 function sweep(node) { 155 if (!(node instanceof HTMLElement)) return; 156 var sel = 'iframe[src*="hs-web-interactive"],iframe[src*="hs-sites.com"]'; 157 var ifr = node.matches && node.matches(sel) ? node : (node.querySelector && node.querySelector(sel)); 158 if (ifr) overlayOf(ifr).remove(); 159 } 160 // Belt-and-suspenders: also close via HubSpot's supported CTA SDK. 161 window.hsCallsToActionReady = window.hsCallsToActionReady || []; 162 window.hsCallsToActionReady.push(function () { 163 try { window.HubSpotCallsToActions.closeAll(); } catch (e) {} 164 }); 165 new MutationObserver(function (muts) { 166 for (var m = 0; m < muts.length; m++) { 167 for (var n = 0; n < muts[m].addedNodes.length; n++) sweep(muts[m].addedNodes[n]); 168 } 169 }).observe(document.documentElement, { childList: true, subtree: true }); 170 })(); 171 </script>
171 <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="/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Français </a> </li><li role="none" data-astro-cid-fhi4yxem>
171 <a role="menuitem" hreflang="ko" data-locale="ko" href="/ko/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" class="z2-langsw__opt" data-astro-cid-fhi4yxem> Tiếng Viá»t </a> </li> </ul> </div>
171<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>
171 <a href="/demo" class="inline-flex items-center gap-1.5 rounded-full bg-signal-400 hover:bg-primary-deep border-2 border-primary-deep text-sand-900 hover:text-sand-100 text-sm font-medium px-5 py-2 transition-colors" data-astro-cid-hnhh3bfe> See a Demo </a> </div> <div class="flex items-center gap-0.5 lg:hidden" data-astro-cid-hnhh3bfe> <button id="mobile-lang-btn" class="p-2 rounded-md text-sand-800 hover:text-sand-900 hover:bg-sand-200 transition-colors" aria-label="Choose your language" aria-expanded="false" aria-controls="mobile-lang-menu" data-astro-cid-hnhh3bfe> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-hnhh3bfe="true" class="lucide lucide-globe w-6 h-6"> <circle cx="12" cy="12" r="10"></circle> <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path> <path d="M2 12h20"></path> </svg> </button> <button id="mobile-menu-btn" class="p-2 rounded-md text-sand-800 hover:text-sand-900 hover:bg-sand-200 transition-colors" aria-label="Open menu" aria-expanded="false" aria-controls="mobile-menu" data-astro-cid-hnhh3bfe> <svg id="menu-icon-open" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-astro-cid-hnhh3bfe> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" data-astro-cid-hnhh3bfe></path> </svg> <svg id="menu-icon-close" class="w-6 h-6 hidden" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-astro-cid-hnhh3bfe> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-astro-cid-hnhh3bfe></path> </svg> </button> </div> </div> <div id="mega-stack" class="mega-stack hidden lg:block absolute left-0 top-full" style="width: 100%;" data-astro-cid-hnhh3bfe> <div id="mega-clip" class="mega-clip" data-astro-cid-hnhh3bfe> <div id="mega-products" role="region" aria-label="Products menu" class="mega-panel bg-white" data-astro-cid-hnhh3bfe> <div class="flex items-stretch" data-astro-cid-hnhh3bfe> <div class="nav-product-frame flex-shrink-0 flex flex-col" data-astro-cid-hnhh3bfe> <span class="nav-corner nav-corner--tl" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span class="nav-corner nav-corner--tr" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span class="nav-corner nav-corner--bl" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span class="nav-corner nav-corner--br" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <ul class="divide-y divide-sand-600 border-t border-sand-600 flex-1 flex flex-col" data-astro-cid-hnhh3bfe> <li class="flex-1 flex" data-astro-cid-hnhh3bfe> <a href="/products/part-risk-manager" class="group flex flex-1 items-start gap-5 py-4 px-5 transition-colors duration-150 hover:bg-sand-100" data-astro-cid-hnhh3bfe> <img src="/brand/06-Product-Icons/Part-Risk-Manager/Z2_Product_Icons_Part-Risk-Manager.svg" alt="Part Risk Manager" class="flex-shrink-0 w-8 h-8 object-contain mt-0.5" aria-hidden="true" data-astro-cid-hnhh3bfe> <div class="flex-1 min-w-0" data-astro-cid-hnhh3bfe> <p class="text-xl font-semibold text-sand-900 mb-1" data-astro-cid-hnhh3bfe>Part Risk Manager</p> <p class="text-sm text-sand-500 leading-snug" data-astro-cid-hnhh3bfe>Component intelligence across 1B+ electronic parts.</p> </div> </a> </li><li class="flex-1 flex" data-astro-cid-hnhh3bfe> <a href="/products/compliance-manager" class="group flex flex-1 items-start gap-5 py-4 px-5 transition-colors duration-150 hover:bg-sand-100" data-astro-cid-hnhh3bfe> <img src="/brand/06-Product-Icons/Compliance-Manager/Z2_Product_Icons_Compliance-Manager.svg" alt="Compliance Manager" class="flex-shrink-0 w-8 h-8 object-contain mt-0.5" aria-hidden="true" data-astro-cid-hnhh3bfe> <div class="flex-1 min-w-0" data-astro-cid-hnhh3bfe> <p class="text-xl font-semibold text-sand-900 mb-1" data-astro-cid-hnhh3bfe>Compliance Manager</p> <p class="text-sm text-sand-500 leading-snug" data-astro-cid-hnhh3bfe>Assess parts against 270+ global regulations.</p> </div> </a> </li><li class="flex-1 flex" data-astro-cid-hnhh3bfe> <a href="/products/supply-chain-watch" class="group flex flex-1 items-start gap-5 py-4 px-5 transition-colors duration-150 hover:bg-sand-100" data-astro-cid-hnhh3bfe> <img src="/brand/06-Product-Icons/Supply-Chain-Watch/Z2_Product_Icons_Supply-Chain-Watch.svg" alt="Supply Chain Watch" class="flex-shrink-0 w-8 h-8 object-contain mt-0.5" aria-hidden="true" data-astro-cid-hnhh3bfe> <div class="flex-1 min-w-0" data-astro-cid-hnhh3bfe> <p class="text-xl font-semibold text-sand-900 mb-1" data-astro-cid-hnhh3bfe>Supply Chain Watch</p> <p class="text-sm text-sand-500 leading-snug" data-astro-cid-hnhh3bfe>Map and monitor your manufacturing supply chain.</p> </div> </a> </li><li class="flex-1 flex" data-astro-cid-hnhh3bfe> <a href="/products/supplier-insights" class="group flex flex-1 items-start gap-5 py-4 px-5 transition-colors duration-150 hover:bg-sand-100" data-astro-cid-hnhh3bfe> <img src="/brand/06-Product-Icons/Supplier-Insights/Z2_Product_Icons_Supplier-Insights.svg" alt="Supplier Insights" class="flex-shrink-0 w-8 h-8 object-contain mt-0.5" aria-hidden="true" data-astro-cid-hnhh3bfe> <div class="flex-1 min-w-0" data-astro-cid-hnhh3bfe> <p class="text-xl font-semibold text-sand-900 mb-1" data-astro-cid-hnhh3bfe>Supplier Insights</p> <p class="text-sm text-sand-500 leading-snug" data-astro-cid-hnhh3bfe>Risk profiles for 1M+ suppliers worldwide.</p> </div> </a> </li> </ul> </div> <div class="nav-mega-sidebar flex-1 flex flex-col" data-astro-cid-hnhh3bfe> <a href="/products/enterprise-hub" class="nav-sidebar-hub group relative flex flex-col p-7 overflow-hidden" aria-label="Z2 Enterprise Hub" data-astro-cid-hnhh3bfe> <img src="/images/z2-logo-pixels.svg" alt="" aria-hidden="true" class="nav-sidebar-deco" loading="lazy" decoding="async" width="800" height="800" data-astro-cid-hnhh3bfe> <div class="relative z-10" data-astro-cid-hnhh3bfe> <h3 class="nav-sidebar-hub-title" data-astro-cid-hnhh3bfe>Z2 Enterprise Hub</h3> <p class="nav-sidebar-hub-desc" data-astro-cid-hnhh3bfe> Unified risk visibility across parts, suppliers, compliance, and minerals: one integration, one workflow. </p> </div> </a> <a href="/our-ai" class="nav-sidebar-ai group relative flex flex-col p-6 overflow-hidden" aria-label="AI for Supply Chain" data-astro-cid-hnhh3bfe> <span class="nav-ai-grid" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <div class="relative z-10" data-astro-cid-hnhh3bfe> <h3 class="nav-sidebar-ai-title" data-astro-cid-hnhh3bfe>AI for Supply Chain</h3> <p class="nav-sidebar-ai-desc" data-astro-cid-hnhh3bfe>Autonomous agents surface risks before they become disruptions.</p> </div> </a> <a href="/professional-services" class="nav-sidebar-svc group relative flex flex-col p-6 overflow-hidden" aria-label="Professional Services" data-astro-cid-hnhh3bfe> <div data-astro-cid-hnhh3bfe> <h3 class="nav-sidebar-svc-title" data-astro-cid-hnhh3bfe>Professional Services</h3> <p class="nav-sidebar-svc-desc" data-astro-cid-hnhh3bfe>We fill your data gaps so your program runs clean.</p> </div> </a> </div> </div> </div> <div id="mega-solutions" role="region" aria-label="Solutions menu" class="mega-panel bg-white" data-astro-cid-hnhh3bfe> <div class="nav-sol-grid" data-astro-cid-hnhh3bfe> <div class="nav-sol-col" data-astro-cid-hnhh3bfe> <p class="nav-sol-col-header" data-astro-cid-hnhh3bfe>Topics</p> <ul data-astro-cid-hnhh3bfe> <li data-astro-cid-hnhh3bfe> <a href="/solutions/supply-chain-risk-management" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-Risk-Score" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Supply Chain Risk Management</span> </a> </li><li data-astro-cid-hnhh3bfe> <a href="/solutions/compliance-and-sustainability" class="nav-sol-link" data-astro-cid-hnhh3bfe> <span class="nav-sol-ico icon-growth-grow-leafs" aria-hidden="true" data-astro-cid-hnhh3bfe></span> <span data-astro-cid-hnhh3bfe>Compliance & 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>
171 <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>
171Component 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="/demo" class="inline-flex items-center justify-center gap-1.5 rounded-full bg-signal-400 hover:bg-primary-deep border-2 border-primary-deep text-sand-900 hover:text-sand-100 text-sm font-medium px-5 py-2.5 transition-colors" data-astro-cid-hnhh3bfe> See a Demo </a> </div> </div> </div> <div id="mobile-lang-menu" class="hidden lg:hidden border-t border-sand-600 bg-sand-100" data-astro-cid-hnhh3bfe> <div class="container py-4" data-astro-cid-hnhh3bfe> <div class="flex items-center gap-2 mb-3 text-[10px] font-semibold uppercase tracking-widest text-sand-500" data-astro-cid-hnhh3bfe> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-hnhh3bfe="true" class="lucide lucide-globe text-sand-700"> <circle cx="12" cy="12" r="10"></circle> <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path> <path d="M2 12h20"></path> </svg> <span data-astro-cid-hnhh3bfe>Language</span> </div> <ul class="grid grid-cols-2 min-[420px]:grid-cols-3 gap-x-2 gap-y-1" data-astro-cid-hnhh3bfe> <li data-astro-cid-hnhh3bfe> <a href="/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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>
171 <a href="/ko/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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>
171<script> 172 // ââ Mega menu: hover + click-sticky âââââââââââââââââââââââââââ 173 let closeTimer = null; 174 let stickyMenu = null; // id of the menu that was clicked open 175 176 const backdrop = document.getElementById('nav-backdrop'); 177 178 function showBackdrop() { 179 if (!backdrop) return; 180 backdrop.style.opacity = '1'; 181 backdrop.classList.remove('pointer-events-none'); 182 backdrop.classList.add('pointer-events-auto'); 183 } 184 185 function hideBackdrop() { 186 if (!backdrop) return; 187 backdrop.style.opacity = '0'; 188 backdrop.classList.add('pointer-events-none'); 189 backdrop.classList.remove('pointer-events-auto'); 190 } 191 192 const megaStack = document.getElementById('mega-stack'); 193 const megaClip = document.getElementById('mega-clip'); 194 195 // Sets the shared frame height. `animate` is false on the first open, 196 // so the panel appears at full size instead of unrolling. 197 function setClipHeight(panel, animate) { 198 if (!megaClip || !panel) return; 199 if (!animate) megaClip.classList.add('no-anim'); 200 megaClip.style.height = panel.offsetHeight + 'px'; 201 if (!animate) { 202 void megaClip.offsetHeight; // flush the un-animated height 203 megaClip.classList.remove('no-anim'); 204 } 205 } 206 207 function openMega(id) { 208 clearTimeout(closeTimer); 209 210 const panel = document.getElementById('mega-' + id); 211 const btn = document.getElementById('btn-' + id); 212 const chevron = document.getElementById('chevron-' + id); 213 if (!panel || !btn) return; 214 215 // Frame already up? Then this is a switch: keep the frame in place and 216 // just ease its height while the panels crossfade. 217 const wasOpen = !!megaStack?.classList.contains('is-open'); 218 219 ['products', 'solutions'].filter(x => x !== id).forEach(id2 => { 220 // don't force-close a sticky sibling via hover; close it visually only if not sticky 221 if (stickyMenu !== id2) closeMega(id2); 222 }); 223 224 setClipHeight(panel, wasOpen); 225 megaStack?.classList.add('is-open'); 226 panel.classList.add('is-open'); 227 btn.setAttribute('aria-expanded', 'true'); 228 btn.classList.add('is-nav-active'); 229 if (chevron) chevron.style.transform = 'rotate(180deg)'; 230 showBackdrop(); 231 } 232 233 function closeMega(id) { 234 const panel = document.getElementById('mega-' + id); 235 const btn = document.getElementById('btn-' + id); 236 const chevron = document.getElementById('chevron-' + id); 237 if (!panel) return; 238 239 panel.classList.remove('is-open'); 240 if (btn) { btn.setAttribute('aria-expanded', 'false'); btn.classList.remove('is-nav-active'); } 241 if (chevron) chevron.style.transform = ''; 242 243 const anyOpen = ['products', 'solutions'].some( 244 x => x !== id && document.getElementById('btn-' + x)?.getAttribute('aria-expanded') === 'true' 245 ); 246 if (!anyOpen) { 247 megaStack?.classList.remove('is-open'); 248 hideBackdrop(); 249 } 250 } 251 252 function scheduleClose() { 253 // Never auto-close if a menu is sticky 254 if (stickyMenu) return; 255 closeTimer = setTimeout(() => { 256 ['products', 'solutions'].forEach(closeMega); 257 }, 120); 258 } 259 260 function cancelClose() { 261 clearTimeout(closeTimer); 262 } 263 264 function clearSticky() { 265 stickyMenu = null; 266 ['products', 'solutions'].forEach(closeMega); 267 } 268 269 // Hover on trigger buttons (only when no sticky menu active) 270 document.querySelectorAll('.mega-trigger').forEach((btn) => { 271 const id = btn.getAttribute('data-menu'); 272 273 btn.addEventListener('mouseenter', () => { 274 if (stickyMenu && stickyMenu !== id) { 275 // hovering a different trigger while one is sticky: close old, open new 276 const prev = stickyMenu; 277 stickyMenu = null; 278 closeMega(prev); 279 } 280 openMega(id); 281 }); 282 283 btn.addEventListener('mouseleave', scheduleClose); 284 285 // Click toggles sticky 286 btn.addEventListener('click', (e) => { 287 e.stopPropagation(); 288 if (stickyMenu === id) { 289 // already sticky: unstick and close 290 stickyMenu = null; 291 closeMega(id); 292 } else { 293 // make this one sticky (close any previous sticky first) 294 if (stickyMenu) closeMega(stickyMenu); 295 stickyMenu = id; 296 openMega(id); 297 } 298 }); 299 }); 300 301 // Keep open while hovering the frame (unless sticky, in which case it's always open). 302 // Bound to the shared stack, so the pointer never falls into a dead gap mid-morph. 303 if (megaStack) { 304 megaStack.addEventListener('mouseenter', cancelClose); 305 megaStack.addEventListener('mouseleave', scheduleClose); 306 } 307 308 // Close on Escape 309 document.addEventListener('keydown', (e) => { 310 if (e.key === 'Escape') clearSticky(); 311 }); 312 313 // Backdrop click closes sticky 314 backdrop?.addEventListener('click', clearSticky); 315
316 // Click anywhere outside the header clears sticky 317 document.addEventListener('click', (e) => { 318 const header = document.getElementById('site-header'); 319 if (header && !header.contains(e.target)) clearSticky(); 320 }); 321 322 // ââ Header logo right-click context menu âââââââââââââââââââââ 323 (function () { 324 const logoLink = document.getElementById('header-logo'); 325 const ctxMenu = document.getElementById('header-logo-ctx'); 326 if (!logoLink || !ctxMenu) return; 327 328 function hideCtx() { ctxMenu.classList.add('hidden'); } 329 330 function showCtx(x, y) { 331 ctxMenu.classList.remove('hidden'); 332 const margin = 8; 333 const rect = ctxMenu.getBoundingClientRect(); 334 const w = ctxMenu.offsetWidth || 200; 335 const h = ctxMenu.offsetHeight || 160; 336 const left = Math.min(x, window.innerWidth - w - margin); 337 const top = Math.min(y, window.innerHeight - h - margin); 338 ctxMenu.style.left = left + 'px'; 339 ctxMenu.style.top = top + 'px'; 340 } 341 342 logoLink.addEventListener('contextmenu', function (e) { 343 e.preventDefault(); 344 showCtx(e.clientX, e.clientY); 345 }); 346 347 ctxMenu.querySelector('[data-logo-action="newtab"]')?.addEventListener('click', function () { 348 window.open('/', '_blank', 'noopener,noreferrer'); 349 hideCtx(); 350 }); 351 352 document.addEventListener('click', hideCtx); 353 document.addEventListener('keydown', function (e) { if (e.key === 'Escape') hideCtx(); }); 354 document.addEventListener('contextmenu', function (e) { 355 if (!logoLink.contains(e.target)) hideCtx(); 356 }); 357 })(); 358 359 // ââ Mobile menu + language panel ââââââââââââââââââââââââââââââ 360 // Two full-width panels drop below the header on mobile: the hamburger nav 361 // and the globe language switcher. Only one is open at a time â opening one 362 // closes the other; Escape closes both. 363 const mobileBtn = document.getElementById('mobile-menu-btn'); 364 const mobileMenu = document.getElementById('mobile-menu'); 365 const iconOpen = document.getElementById('menu-icon-open'); 366 const iconClose = document.getElementById('menu-icon-close'); 367 const langBtn = document.getElementById('mobile-lang-btn'); 368 const langMenu = document.getElementById('mobile-lang-menu'); 369 370 function closeMobileNav() { 371 mobileMenu?.classList.add('hidden'); 372 iconOpen?.classList.remove('hidden'); 373 iconClose?.classList.add('hidden'); 374 mobileBtn?.setAttribute('aria-expanded', 'false'); 375 } 376 377 function closeMobileLang() { 378 langMenu?.classList.add('hidden'); 379 langBtn?.setAttribute('aria-expanded', 'false'); 380 } 381 382 mobileBtn?.addEventListener('click', () => { 383 const willOpen = mobileMenu?.classList.contains('hidden'); 384 closeMobileLang(); 385 mobileMenu?.classList.toggle('hidden', !willOpen); 386 iconOpen?.classList.toggle('hidden', !!willOpen); 387 iconClose?.classList.toggle('hidden', !willOpen); 388 mobileBtn.setAttribute('aria-expanded', String(!!willOpen)); 389 }); 390 391 langBtn?.addEventListener('click', () => { 392 const willOpen = langMenu?.classList.contains('hidden'); 393 closeMobileNav(); 394 langMenu?.classList.toggle('hidden', !willOpen); 395 langBtn.setAttribute('aria-expanded', String(!!willOpen)); 396 }); 397 398 // Persist the explicit language choice so the auto-detect redirect honors it 399 // (mirrors the desktop LangSwitcher behavior). Read data-locale, NOT hreflang: 400 // hreflang carries BCP-47 casing (pt-BR) but LocaleAutoDetect matches the 401 // cookie against LOCALES, which holds the lowercase code (pt-br). 402 langMenu?.querySelectorAll('a[data-locale]').forEach((a) => { 403 a.addEventListener('click', () => { 404 const code = a.getAttribute('data-locale'); 405 if (code) document.cookie = `pref_lang=${code};path=/;max-age=31536000;samesite=lax`; 406 }); 407 }); 408 409 document.addEventListener('keydown', (e) => { 410 if (e.key === 'Escape') { closeMobileNav(); closeMobileLang(); } 411 }); 412 413 // ââ Product page sticky header ââââââââââââââââââââââââââââââââ 414 (function () { 415 const header = document.getElementById('site-header'); 416 const defaultLogo = document.getElementById('header-logo'); 417 const productLogo = document.getElementById('header-product-logo'); 418 const solutionLabel = document.getElementById('header-solution-label'); 419 const mainNav = document.querySelector('#site-header #main-nav'); 420 const productNav = document.getElementById('header-product-nav'); 421 const ctaBtn = document.getElementById('header-product-cta-btn'); 422 const ctaForm = document.getElementById('header-demo-capture'); 423 424 // Activate on product pages (product logo present) and solution pages (solution label present) 425 if (!header || (!productLogo && !solutionLabel)) return; 426 427 let active = false;
428 429 function apply(sticky) { 430 if (sticky === active) return; 431 active = sticky; 432 433 if (sticky) { 434 header.classList.add('is-product-sticky'); 435 // Product pages: swap Z2 logo â product icon + name 436 if (productLogo) { 437 defaultLogo?.classList.add('hidden'); 438 productLogo.classList.remove('hidden'); 439 productLogo.classList.add('flex'); 440 } 441 // Solution pages: keep Z2 logo, reveal solution name beside it 442 if (solutionLabel) { 443 solutionLabel.classList.remove('hidden'); 444 solutionLabel.classList.add('flex'); 445 } 446 // Always hide main nav: sticky bar shows only the brand/name + CTA 447 mainNav?.classList.add('!hidden'); 448 // Swap CTA button â email-capture pill 449 ctaBtn?.classList.add('!hidden'); 450 ctaForm?.classList.remove('hidden'); 451 ctaForm?.classList.add('flex'); 452 } else { 453 header.classList.remove('is-product-sticky'); 454 // Restore product logo state 455 if (productLogo) { 456 defaultLogo?.classList.remove('hidden'); 457 productLogo.classList.add('hidden'); 458 productLogo.classList.remove('flex'); 459 } 460 // Hide solution name 461 if (solutionLabel) { 462 solutionLabel.classList.add('hidden'); 463 solutionLabel.classList.remove('flex'); 464 } 465 // Restore main nav 466 mainNav?.classList.remove('!hidden'); 467 // Restore CTA button 468 ctaBtn?.classList.remove('!hidden'); 469 ctaForm?.classList.add('hidden'); 470 ctaForm?.classList.remove('flex'); 471 } 472 } 473 474 window.addEventListener('scroll', function () { apply(window.scrollY > 20); }, { passive: true }); 475 apply(window.scrollY > 20); 476 })(); 477</script>
477 <main class="contact-page bg-sand-100" data-astro-cid-uw5kdbxl> <section class="contact-split" data-astro-cid-uw5kdbxl> <div class="contact-split-inner" data-astro-cid-uw5kdbxl> <div class="corner-frame" data-astro-cid-uw5kdbxl> <span class="corner-sq corner-sq--tl bg-sand-900" aria-hidden="true" data-astro-cid-uw5kdbxl></span> <span class="corner-sq corner-sq--tr bg-sand-900" aria-hidden="true" data-astro-cid-uw5kdbxl></span> <span class="corner-sq corner-sq--bl bg-sand-900" aria-hidden="true" data-astro-cid-uw5kdbxl></span> <span class="corner-sq corner-sq--br bg-sand-900" aria-hidden="true" data-astro-cid-uw5kdbxl></span> <div class="contact-box" data-astro-cid-uw5kdbxl> <div class="card-inner-grid" data-astro-cid-uw5kdbxl> <div class="form-col" data-astro-cid-uw5kdbxl> <h1 class="contact-page-h1 text-sand-900" data-astro-cid-uw5kdbxl>Contact Z2</h1> <form id="z2-contact-form" class="z2-form" novalidate data-astro-cid-uw5kdbxl> <div class="field-row" data-astro-cid-uw5kdbxl> <div class="field" data-astro-cid-uw5kdbxl> <label for="cf-first" class="field-label text-sand-900" data-astro-cid-uw5kdbxl>First Name<span class="req" data-astro-cid-uw5kdbxl>*</span></label> <input id="cf-first" name="firstname" type="text" autocomplete="given-name" required class="field-input" data-astro-cid-uw5kdbxl> </div> <div class="field" data-astro-cid-uw5kdbxl> <label for="cf-last" class="field-label text-sand-900" data-astro-cid-uw5kdbxl>Last Name<span class="req" data-astro-cid-uw5kdbxl>*</span></label> <input id="cf-last" name="lastname" type="text" autocomplete="family-name" required class="field-input" data-astro-cid-uw5kdbxl> </div> </div> <div class="field" data-astro-cid-uw5kdbxl> <label for="cf-phone" class="field-label text-sand-900" data-astro-cid-uw5kdbxl>Phone Number<span class="req" data-astro-cid-uw5kdbxl>*</span></label> <input id="cf-phone" name="mobilephone" type="tel" autocomplete="tel" required class="field-input" data-astro-cid-uw5kdbxl> </div> <div class="field" data-astro-cid-uw5kdbxl> <label for="cf-email" class="field-label text-sand-900" data-astro-cid-uw5kdbxl>Company Email<span class="req" data-astro-cid-uw5kdbxl>*</span></label> <input id="cf-email" name="email" type="email" autocomplete="email" required class="field-input" data-astro-cid-uw5kdbxl> </div> <fieldset class="field reason-set" data-astro-cid-uw5kdbxl> <legend class="field-label text-sand-900" data-astro-cid-uw5kdbxl>Contact Reason<span class="req" data-astro-cid-uw5kdbxl>*</span></legend> <div class="reason-grid" data-astro-cid-uw5kdbxl> <label class="reason-chip border-sand-600" data-astro-cid-uw5kdbxl> <input type="checkbox" name="contact_reason" value="Schedule Demo" class="reason-box" data-astro-cid-uw5kdbxl> <span class="text-sand-800" data-astro-cid-uw5kdbxl>Schedule a Demo</span> </label> <label class="reason-chip border-sand-600" data-astro-cid-uw5kdbxl> <input type="checkbox" name="contact_reason" value="Pricing" class="reason-box" data-astro-cid-uw5kdbxl> <span class="text-sand-800" data-astro-cid-uw5kdbxl>Get Pricing</span> </label> <label class="reason-chip border-sand-600" data-astro-cid-uw5kdbxl> <input type="checkbox" name="contact_reason" value="Support" class="reason-box" data-astro-cid-uw5kdbxl> <span class="text-sand-800" data-astro-cid-uw5kdbxl>Contact Support</span> </label> <label class="reason-chip border-sand-600" data-astro-cid-uw5kdbxl> <input type="checkbox" name="contact_reason" value="Other" class="reason-box" data-astro-cid-uw5kdbxl> <span class="text-sand-800" data-astro-cid-uw5kdbxl>Other</span> </label> </div> </fieldset> <div class="field" data-astro-cid-uw5kdbxl> <label for="cf-help" class="field-label text-sand-900" data-astro-cid-uw5kdbxl>How can we help?</label> <textarea id="cf-help" name="how_can_we_help" rows="3" class="field-input field-textarea" data-astro-cid-uw5kdbxl></textarea> </div> <p id="cf-error" class="form-error" role="alert" hidden data-astro-cid-uw5kdbxl></p> <button type="submit" id="cf-submit" class="form-submit bg-signal-400 text-sand-900" data-astro-cid-uw5kdbxl> Submit </button> </form> <span id="iph-i18n" hidden data-country="Phone country code" data-search="Search countries" data-noresults="No matches"></span>
477<script type="module" src="/_astro/IntlPhone.astro_astro_type_script_index_0_lang.CZB8O0ci.js"></script>
477 <div id="z2-contact-success" class="form-success bg-signal-100" hidden data-astro-cid-uw5kdbxl> <h3 class="success-title text-sand-900" data-astro-cid-uw5kdbxl>Thanks, we've got your message.</h3> <p class="success-body text-sand-800" data-astro-cid-uw5kdbxl> A member of the Z2 team will be in touch within one business day. Feel free to also email <a href="#" data-eu="sales" data-ed="z2data.com" class="email-obf text-primary-dark" data-astro-cid-uw5kdbxl>sales <span data-astro-cid-uw5kdbxl>at</span> z2data <span data-astro-cid-uw5kdbxl>dot</span> com</a>. </p> </div> </div> <div class="image-col" aria-hidden="true" data-astro-cid-uw5kdbxl> <img src="/images/contact/wafer-chip-thin-02.png" alt="" class="image-col-img" width="512" height="512" loading="eager" data-astro-cid-uw5kdbxl> </div> </div> <div class="info-cards-grid" data-astro-cid-uw5kdbxl> <div class="info-card" data-astro-cid-uw5kdbxl> <p class="info-label" data-astro-cid-uw5kdbxl>Headquarters</p> <p class="info-value text-sand-700" data-astro-cid-uw5kdbxl> 4783080 Olcott Street, Suite A115<br data-astro-cid-uw5kdbxl> 479Santa Clara, CA 95054, USA 480</p> </div> <div class="info-card" data-astro-cid-uw5kdbxl> <p class="info-label" data-astro-cid-uw5kdbxl>Phone</p> <a href="tel:+18669232821" class="info-value info-link text-primary-dark" data-astro-cid-uw5kdbxl>+1 (866) 923-2821</a> </div> <div class="info-card" data-astro-cid-uw5kdbxl> <p class="info-label" data-astro-cid-uw5kdbxl>Sales</p> <a href="#" data-eu="sales" data-ed="z2data.com" class="email-obf info-value info-link text-primary-dark" data-astro-cid-uw5kdbxl>sales <span data-astro-cid-uw5kdbxl>at</span> z2data <span data-astro-cid-uw5kdbxl>dot</span> com</a> </div> <div class="info-card" data-astro-cid-uw5kdbxl> <p class="info-label" data-astro-cid-uw5kdbxl>General Inquiries</p> <a href="#" data-eu="info" data-ed="z2data.com" class="email-obf info-value info-link text-primary-dark" data-astro-cid-uw5kdbxl>info <span data-astro-cid-uw5kdbxl>at</span> z2data <span data-astro-cid-uw5kdbxl>dot</span> com</a> </div> <div class="info-card" data-astro-cid-uw5kdbxl> <p class="info-label" data-astro-cid-uw5kdbxl>Careers</p> <a href="#" data-eu="careers" data-ed="z2data.com" class="email-obf info-value info-link text-primary-dark" data-astro-cid-uw5kdbxl>careers <span data-astro-cid-uw5kdbxl>at</span> z2data <span data-astro-cid-uw5kdbxl>dot</span> com</a> </div> <div class="info-card" data-astro-cid-uw5kdbxl> <p class="info-label" data-astro-cid-uw5kdbxl>Support</p> <a href="https://login.z2data.com/Account/Login" class="info-value info-link text-primary-dark" data-astro-cid-uw5kdbxl>Sign in to open a ticket</a> </div> </div> </div> </div> </div> </section> </main>
480<script type="module">document.querySelectorAll("a.email-obf").forEach(n=>{const t=n,e=t.dataset.eu,a=t.dataset.ed;if(!e||!a)return;const o=e+"@"+a;t.textContent=o,t.setAttribute("href","mailto:"+o)});</script>
480
480<script type="module" src="/_astro/contact.astro_astro_type_script_index_1_lang.BEcobWop.js"></script>
480 <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%);"> <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"> 481©2026 Z2Data. All rights reserved.  482<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
482ose 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="/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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/contact/" 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> 483SVG 484</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> 485PNG 486</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> 487JPG 488</button> </div> </div>
488<script> 489 /* ââ Logo context menu ââââââââââââââââââââââââââââââââââââââââ */ 490 (function () { 491 const logoLink = document.getElementById('footer-logo'); 492 const ctxMenu = document.getElementById('footer-logo-ctx'); 493 if (!logoLink || !ctxMenu) return; 494 495 const logoFiles = { 496 svg: { url: '/brand/01-Logos/02-Digital/Negative/Z2_Logo_NEG_RGB.svg', name: 'Z2_Logo_White.svg' }, 497 png: { url: '/brand/01-Logos/02-Digital/Negative/Z2_Logo_NEG_RGB.png', name: 'Z2_Logo_White.png' }, 498 jpg: { url: '/brand/01-Logos/02-Digital/Negative/Z2_Logo_NEG_RGB.jpg', name: 'Z2_Logo_White.jpg' }, 499 }; 500 501 function hideCtx() { ctxMenu.classList.add('hidden'); } 502 503 function showCtx(x, y) { 504 ctxMenu.classList.remove('hidden'); 505 var margin = 8; 506 var w = ctxMenu.offsetWidth || 200; 507 var h = ctxMenu.offsetHeight || 160; 508 var left = Math.min(x, window.innerWidth - w - margin); 509 var top = Math.min(y, window.innerHeight - h - margin); 510 ctxMenu.style.left = left + 'px'; 511 ctxMenu.style.top = top + 'px'; 512 } 513 514 logoLink.addEventListener('contextmenu', function (e) { 515 e.preventDefault(); 516 showCtx(e.clientX, e.clientY); 517 }); 518 519 ctxMenu.querySelector('[data-logo-action="newtab"]') && ctxMenu.querySelector('[data-logo-action="newtab"]').addEventListener('click', function () { 520 window.open('/', '_blank', 'noopener,noreferrer'); 521 hideCtx(); 522 }); 523 524 ctxMenu.querySelectorAll('[data-logo-dl]').forEach(function (btn) { 525 btn.addEventListener('click', function () { 526 var fmt = btn.getAttribute('data-logo-dl'); 527 var file = logoFiles[fmt]; 528 if (!file) return; 529 var a = document.createElement('a'); 530 a.href = file.url; 531 a.download = file.name; 532 document.body.appendChild(a); 533 a.click(); 534 document.body.removeChild(a); 535 hideCtx(); 536 }); 537 }); 538 539 document.addEventListener('click', hideCtx); 540 document.addEventListener('keydown', function (e) { if (e.key === 'Escape') hideCtx(); }); 541 document.addEventListener('contextmenu', function (e) { 542 if (!logoLink.contains(e.target)) hideCtx(); 543 }); 544 })(); 545 546 /* ââ Mosaic terrain animation âââââââââââââââââââââââââââââââââ */ 547 (function () { 548 var canvas = document.getElementById('footer-terrain'); 549 var wrap = canvas && canvas.closest('footer'); 550 if (!canvas || !canvas.getContext || !wrap) return; 551 552 var ctx = canvas.getContext('2d'); 553 var CELL = 5; 554 var MOUSE_R = 320; /* px â wide diffuse glow */ 555 var W, H, cols, rows, t = 0, raf = null; 556 var mxRaw = -9999, myRaw = -9999; /* mouse in page coords */ 557 558 function resize() { 559 W = canvas.width = canvas.offsetWidth; 560 H = canvas.height = canvas.offsetHeight; 561 cols = Math.ceil(W / CELL) + 1; 562 rows = Math.ceil(H / CELL) + 1; 563 } 564 565 /* 4 sine waves â slow rolling hills */ 566 function fieldVal(c, r) { 567 var x = c / Math.max(cols - 1, 1); 568 var y = r / Math.max(rows - 1, 1); 569 return ( 570 Math.sin(x * 3.1 + t * 0.22) * 0.38 + 571 Math.sin(x * 6.8 + y * 1.4 + t * 0.30) * 0.26 + 572 Math.sin((x - y) * 4.5 + t * 0.18) * 0.20 + 573 Math.sin(y * 5.2 - t * 0.14) * 0.16 574 ); 575 } 576 577 function draw() { 578 ctx.clearRect(0, 0, W, H); 579 580 /* mouse position relative to canvas */ 581 var rect = canvas.getBoundingClientRect(); 582 var mx = mxRaw - rect.left; 583 var my = myRaw - rect.top; 584 var hasMouse = mxRaw > -9000; 585 586 for (var r = 0; r < rows; r++) { 587 for (var c = 0; c < cols; c++) { 588 var v = (fieldVal(c, r) + 1) * 0.5; /* â [0,1] */ 589 590 /* edge vignette â fade left/right/bottom edges */ 591 var ex = c / Math.max(cols - 1, 1); 592 var ey = r / Math.max(rows - 1, 1); 593 var edgeX = Math.min(ex / 0.18, (1 - ex) / 0.18, 1); 594 var edgeY = Math.min(ey / 0.12, 1); 595 var edge = edgeX * edgeY; 596 597 /* constant dim base so grid never disappears */ 598 var a = 0.028 * edge; 599 600 /* height contribution â ramps up on peaks */ 601 if (v > 0.44) { 602 a += Math.pow((v - 0.44) / 0.56, 1.5) * 0.24 * edge; 603 } 604 605 /* subtle mouse proximity glow */ 606 if (hasMouse) { 607 var cx = c * CELL + CELL * 0.5; 608 var cy = r * CELL + CELL * 0.5; 609 var dx = cx - mx, dy = cy - my; 610 var d2 = dx * dx + dy * dy; 611 if (d2 < MOUSE_R * MOUSE_R) { 612 var falloff = 1 - Math.sqrt(d2) / MOUSE_R; 613 a += falloff * 0.06; 614 } 615 } 616 617 ctx.fillStyle = 'rgba(255,255,255,' + Math.min(a, 0.46).toFixed(3) + ')'; 618 ctx.fillRect(c * CELL, r * CELL, CELL - 1, CELL - 1); 619 } 620 } 621 622 t += 0.006; 623 raf = requestAnimationFrame(draw); 624 } 625 626 /* Track mouse on the wrap div (canvas has pointer-events:none) */ 627 wrap.addEventListener('mousemove', function (e) { 628 mxRaw = e.clientX; 629 myRaw = e.clientY; 630 }); 631 wrap.addEventListener('mouseleave', function () { 632 mxRaw = -9999; 633 myRaw = -9999; 634 }); 635 636 /* Pause when footer scrolls off-screen */ 637 if (typeof IntersectionObserver !== 'undefined') { 638 var io = new IntersectionObserver(function (entries) {
639 entries.forEach(function (e) { 640 if (e.isIntersecting) { 641 resize(); 642 if (!raf) draw(); 643 } else { 644 if (raf) { cancelAnimationFrame(raf); raf = null; } 645 } 646 }); 647 }, { threshold: 0 }); 648 io.observe(canvas); 649 } else { 650 resize(); 651 draw(); 652 } 653 654 var resizeTimer; 655 window.addEventListener('resize', function () { 656 clearTimeout(resizeTimer); 657 resizeTimer = setTimeout(resize, 120); 658 }); 659 })(); 660</script>
660 <div id="z2-exit-popup" class="z2ep-overlay fixed inset-0 z-[9998] flex items-center justify-center p-4 backdrop-blur-sm sm:p-6" data-cooldown-days="7" data-popup-id="default" hidden data-astro-cid-iottuixs> <div role="dialog" aria-modal="true" aria-labelledby="z2ep-headline" aria-describedby="z2ep-desc z2ep-bullets" tabindex="-1" class="z2ep-card relative max-h-[92vh] w-full border border-sand-300 bg-sand-100 shadow-2xl outline-none focus:outline-none focus-visible:outline-none max-w-4xl sm:grid sm:grid-cols-[1.15fr_0.85fr]" data-astro-cid-iottuixs> <button type="button" class="z2ep-close absolute right-4 top-4 z-10 inline-flex h-9 w-9 items-center justify-center rounded-full bg-white/90 text-sand-700 shadow-sm transition-colors hover:bg-white hover:text-sand-900" aria-label="Close" data-astro-cid-iottuixs> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" data-astro-cid-iottuixs="true" class="lucide lucide-x h-5 w-5"> <path d="M18 6 6 18"></path> <path d="m6 6 12 12"></path> </svg> </button> <div class="z2ep-media overflow-hidden bg-sand-200 h-48 sm:order-2 sm:h-auto" data-astro-cid-iottuixs> <img src="/images/exit-popups/supply-chain-watch.webp" alt class="h-full w-full object-cover" loading="lazy" data-astro-cid-iottuixs> </div> <div class="relative p-6 sm:order-1 sm:p-10" data-astro-cid-iottuixs> <h2 id="z2ep-headline" class="type-header text-3xl leading-[1.08] text-sand-900 sm:text-4xl" data-astro-cid-iottuixs> <span class="block" data-astro-cid-iottuixs>Start your free trial.</span> <span class="block" data-astro-cid-iottuixs>Surface hidden supply-chain risk.</span> </h2> <ul id="z2ep-bullets" class="mt-5 space-y-3" data-astro-cid-iottuixs> <li class="flex items-start gap-3 text-left" data-astro-cid-iottuixs> <span aria-hidden="true" class="mt-[10px] h-1.5 w-1.5 shrink-0 bg-sand-900" data-astro-cid-iottuixs></span> <span class="type-body text-sand-800" data-astro-cid-iottuixs>Part & sub-tier risk</span> </li><li class="flex items-start gap-3 text-left" data-astro-cid-iottuixs> <span aria-hidden="true" class="mt-[10px] h-1.5 w-1.5 shrink-0 bg-sand-900" data-astro-cid-iottuixs></span> <span class="type-body text-sand-800" data-astro-cid-iottuixs>Compliance, PCN & shortage</span> </li><li class="flex items-start gap-3 text-left" data-astro-cid-iottuixs> <span aria-hidden="true" class="mt-[10px] h-1.5 w-1.5 shrink-0 bg-sand-900" data-astro-cid-iottuixs></span> <span class="type-body text-sand-800" data-astro-cid-iottuixs>Alerts routed to your team</span> </li> </ul> <form id="exit-popup-capture" action="/free-trial" method="GET" novalidate class="z2ep-form mt-7" data-astro-cid-iottuixs> <div class="flex flex-col gap-2 rounded-[28px] border-2 border-primary-deep bg-white p-2 sm:flex-row sm:items-center sm:gap-0 sm:rounded-full" data-astro-cid-iottuixs> <input type="email" placeholder="Your work email" aria-label="Work email address" class="z2ep-email w-full min-w-0 bg-transparent px-5 py-3 text-base text-sand-900 placeholder-sand-800 outline-none focus:outline-none focus-visible:outline-none focus:ring-0 sm:w-auto sm:flex-1" data-astro-cid-iottuixs> <button type="submit" class="z2ep-cta inline-flex w-full flex-shrink-0 items-center justify-center gap-1.5 rounded-full border-2 border-primary-deep bg-signal-400 px-6 py-3 text-sm font-medium text-sand-900 transition-colors hover:bg-primary-deep hover:text-sand-100 sm:w-auto sm:text-base" data-astro-cid-iottuixs> Start free trial <svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" aria-hidden="true" data-astro-cid-iottuixs> <path stroke-linecap="round" stroke-linejoin="round" d="M17 8l4 4m0 0l-4 4m4-4H3" data-astro-cid-iottuixs></path> </svg> </button> </div> <p class="z2-form-err z2ep-err" role="alert" aria-live="polite" data-astro-cid-iottuixs></p> </form> </div> </div> </div>
660<script type="module">const t=document.getElementById("z2-exit-popup");if(t){let d=function(){try{const e=JSON.parse(localStorage.getItem(m)||"{}");return e&&e.day===y()&&Number(e.count)||0}catch{return 0}},h=function(){return f?!1:d()>=k},E=function(){try{localStorage.setItem(m,JSON.stringify({day:y(),count:d()+1}))}catch{}},S=function(e){if(e.key!=="Tab")return;const n=p.querySelectorAll('a[href],button:not([disabled]),input,[tabindex]:not([tabindex="-1"])');if(!n.length)return;const _=n[0],g=n[n.length-1];e.shiftKey&&document.activeElement===_?(e.preventDefault(),g.focus()):!e.shiftKey&&document.activeElement===g&&(e.preventDefault(),_.focus())},l=function(e){e.key==="Escape"?s("dismiss"):S(e)},u=function(){w||h()||(w=!0,E(),i=document.activeElement,t.hidden=!1,requestAnimationFrame(()=>t.classList.add("is-open")),document.body.style.overflow="hidden",p.focus(),document.addEventListener("keydown",l),o("z2_exit_popup_view"))},s=function(e){t.classList.remove("is-open"),document.body.style.overflow="",document.removeEventListener("keydown",l),window.setTimeout(()=>{t.hidden=!0},200),i&&i.focus(),e==="dismiss"&&o("z2_exit_popup_dismiss")};const p=t.querySelector('[role="dialog"]'),L=t.querySelector(".z2ep-close"),b=t.querySelector(".z2ep-form"),z=t.getAttribute("data-popup-id")||"exit-popup",m="z2_exit_popup_seen",k=2,f=/^(localhost|127\.0\.0\.1|0\.0\.0\.0)$/.test(location.hostname),o=e=>(window.dataLayer=window.dataLayer||[]).push({event:e,popup_id:z}),y=()=>new Date().toDateString();let i=null,w=!1;L.addEventListener("click",()=>s("dismiss")),t.addEventListener("click",e=>{e.target===t&&s("dismiss")}),b?.addEventListener("submit",()=>o("z2_exit_popup_click")),t.querySelector("a.z2ep-cta")?.addEventListener("click",()=>o("z2_exit_popup_click"));let c=f;const r=()=>{c=!0};let a=1;try{a=(parseInt(sessionStorage.getItem("z2_pageviews")||"0",10)||0)+1,sessionStorage.setItem("z2_pageviews",String(a))}catch{}a>=2&&r(),window.setTimeout(r,3e4),document.documentElement.addEventListener("mouseleave",e=>{c&&e.clientY<=0&&u()});let v=window.scrollY;window.addEventListener("scroll",()=>{const e=window.scrollY;(e+window.innerHeight)/document.documentElement.scrollHeight>=.5&&r(),c&&e<150&&v-e>60&&u(),v=e},{passive:!0})}</script>
660
660<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>
660
660<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>
660
660<script> 661 (function () { 662 function payload() { 663 return JSON.stringify({ 664 landing: location.href, 665 referrer: document.referrer || '', 666 path: location.pathname, 667 }); 668 } 669 function send() { 670 try { 671 fetch('/api/track', { 672 method: 'POST', 673 keepalive: true, 674 headers: { 'Content-Type': 'application/json' }, 675 body: payload(), 676 }); 677 } catch (e) {} 678 } 679 send(); 680 // EU: if they accept analytics after load, fire again so the server can 681 // mint + record first-touch immediately (server is idempotent on vid). 682 try { 683 document.addEventListener('cookieyes_consent_update', function () { send(); }, { once: true }); 684 } catch (e) {} 685 })(); 686 </script>
686 </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.