PageSourceSearch

https://channelsight.webflow.io/contact

html channelsight.webflow.io collected 2026-10-03 12:53:56 UTC 139,045 bytes, 1,865 lines download raw bytes

1<!DOCTYPE html><!-- Last Published: Fri Oct 02 2026 15:49:21 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="channelsight.webflow.io" data-wf-page="649afe6191f574759c2f675d" data-wf-site="64248e7ed5f30d6effe57d5d" lang="en"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>Contact ChannelSight | eCommerce Intelligence Platform</title><meta content="Have a question? Connect with the ChannelSight team. Fill out the contact us form and our team will be happy to assist you." name="description"/><meta content="Contact ChannelSight | eCommerce Intelligence Platform" property="og:title"/><meta content="Have a question? Connect with the ChannelSight team. Fill out the contact us form and our team will be happy to assist you." property="og:description"/><meta content="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/6a96d027bacbcd3d3c275716_channelsight-og-share-1200x630.png" property="og:image"/><meta content="Contact ChannelSight | eCommerce Intelligence Platform" name="twitter:title"/><meta content="Have a question? Connect with the ChannelSight team. Fill out the contact us form and our team will be happy to assist you." name="twitter:description"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="x3DDl3MUeXJSRp5sdGyJ9vWlYELUjISIcmp8I7gCZWc" name="google-site-verification"/><link href="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/css/channelsight.webflow.shared.5c0fbdbdb.min.css" rel="stylesheet" type="text/css" integrity="sha384-XA+9vbGVVSqgsm/iFMpvs+qlXuIy25oeg6uBCkuVRtkeFnF57Efuh8L47fsgl1np" crossorigin="anonymous"/><link href="https://fonts.googleapis.com" rel="preconnect"/><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin="anonymous"/>
1<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script>
1<script type="text/javascript">WebFont.load({  google: {    families: ["Montserrat:100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic","Merriweather:300,300italic,400,400italic,700,700italic,900,900italic","Inter:300,400,500,600,700","Roboto:300,400,500,600,700"]  }});</script>
1<script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script>
1<link href="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/647614fef48ff5a731fc74bf_Favicon_Favicon.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/64761593a2274699f5db31c0_Webclip-20.png" rel="apple-touch-icon"/><link href="https://www.channelsight.com/contact" rel="canonical"/>
1<script type="application/ld+json">
2{
3  "@context": "https://schema.org",
4  "@type": "ContactPage",
5  "name": "Contact ChannelSight",
6  "url": "https://www.channelsight.com/contact",
7  "description": "Sales and support contact points for ChannelSight.",
8  "publisher": {
9    "@type": "Organization",
10    "name": "ChannelSight",
11    "url": "https://www.channelsight.com/"
12  }
13}
14</script>
14<script>!function(w,d,s,u){if(w.oaiq)return;var q=function(){q.q.push(arguments)};q.q=[];w.oaiq=q;var j=d.createElement(s);j.async=1;j.src=u;var f=d.getElementsByTagName(s)[0];f.parentNode.insertBefore(j,f)}(window,document,"script","https://bzrcdn.openai.com/sdk/oaiq.min.js");oaiq("init",{pixelId:"14r9KVX92hRkkwGHphHaPf",debug:true});</script>
14
15
16<!-- Zoho Sales IQ -->
17<script>window.$zoho=window.$zoho || {};$zoho.salesiq=$zoho.salesiq||{ready:function(){}}</script>
17<script id="zsiqscript" src="https://salesiq.zohopublic.eu/widget?wc=siqea01469d82fc7f3d13c3f359bcb7ed7070b636b89f8a87b08d931d7c2b8bf6e3e6c6342383073f6587dcba98b3afc92e" defer></script>
17
18<!-- End Zoho Sales IQ -->
19
20<script>!function(key) {if (window.reb2b) return;window.reb2b = {loaded: true};var s = document.createElement("script");s.async = true;s.src = "https://ddwl4m2hdecbv.cloudfront.net/b/" + key + "/" + key + ".js.gz";document.getElementsByTagName("script")[0].parentNode.insertBefore(s, document.getElementsByTagName("script")[0]);}("VN080H35096J");</script>
20
21
22<!-- Google Tag Manager --> 
22<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s);j.async=true;j.src="https://sgtm.channelsight.com/ejoptbdft.js?"+i;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','9l0=HQJZJSA9Qj4kNFcmR0VJHElUSlNSFAFXFw4FDBoVAxkdAQwWWhMABw%3D%3D');</script>
22 <!-- End Google Tag Manager -->
23
24<!-- CSS -->
25<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/lenis.css" integrity="sha384-gNKFsxEO/HxWOwNuzDJ+LC49+5LQTHKAZjdsSKgbraM36zXn2VDakftLnW9c7W3t" crossorigin="anonymous">
26
27<!-- JS -->
28<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/lenis.min.js" integrity="sha384-FKTX0CNJ8ngN1oGMBReVu7mvjTJyjFiD5etb1NKnYxc+8eFI2O0KWnksTN+oTFcu" crossorigin="anonymous"></script>
28 
29
30<script id="jetboost-script" type="text/javascript"> window.JETBOOST_SITE_ID = "clnrysef400280qya01pa9rrq"; (function(d) { var s = d.createElement("script"); s.src = "https://cdn.jetboost.io/jetboost.js"; s.async = 1; d.getElementsByTagName("head")[0].appendChild(s); })(document); </script>
30
31
32 
32<script>
33    !function(key) {
34    if (window.reb2b) return;
35    window.reb2b = {loaded: true};
36    var s = document.createElement("script");
37    s.async = true;
38    s.src = "https://ddwl4m2hdecbv.cloudfront.net/b/" + key + "/" + key + ".js.gz";
39    document.getElementsByTagName("script")[0].parentNode.insertBefore(s, document.getElementsByTagName("script")[0]);
40}("VN080H35096J");
41  </script>
41
42
43<style>
44
45.button, .button-main, .button-nav {
46  background: linear-gradient(135deg, #F5AF55, #FF5D8A, #9E77ED);
47  background-size: 300% 300%; /* Increase size to allow movement */
48  background-position: 0% 50%;
49  cursor: pointer;
50  transition: all 0.3s ease-in-out;
51  animation: gradientAnimation 4s linear infinite;
52}
53
54@keyframes gradientAnimation {
55  0% {
56    background-position: 0% 50%;
57  }
58  50% {
59    background-position: 100% 50%;
60  }
61  100% {
62    background-position: 0% 50%;
63  }
64}
65
66.gradient-button:hover {
67  opacity: 0.8;
68}
69
70.text-span-grad-purp {
71  font-size: inherit; /* Ensures the text matches surrounding content */
72  vertical-align: baseline; /* Removes the subscript positioning */
73}
74
75</style>
76<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.js" integrity="sha384-XmJ9SoHtVOHoQUcKvFAzVXwdkKo1Ie3bhmSoIAkcdsHGaIrVJIkmozyq0FJeb/Ly" crossorigin="anonymous"></script>
76<script src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d%2F652d31f3dc22d7b4ee708e44%2F6a4e73d9c4e7aac02b02be58%2Fclarity_script-8.8.3.js" type="text/javascript"></script>
76<script src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d%2F6920e91076f71b3b0ca97a18%2F6a7dba27f48bedef671f67fc%2Fgoogle_tag-0.0.3.js" type="text/javascript" data-gtag-id="AW-859088441"></script>
76</head><body><div class="w-embed w-iframe"><!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 76-77
76
77<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
77GTM-TPR3D35
vendor: 83 bytes, lines 77-78
77"
78height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
79<!-- End Google Tag Manager (noscript) --></div><div class="nav-components top-spacing"><a href="#main" class="skip-link">Skip to content</a><div><div class="custom-css w-embed"><style>
80  [data-menu-wrap] {
81  --nav-height: 6em;
82}
83
84.mega-nav__panel-col:last-of-type {
85  border: none;
86}
87
88/* Allow easier content editing when panel state is 'active' inside of the designer*/
89.wf-design-mode [data-nav-content][data-panel-state="1"] {
90  opacity: 1;
91  visibility: visible;
92  pointer-events: auto;
93  position: relative;
94}
95
96.wf-design-mode [data-menu-open]:has( [data-nav-content][data-panel-state="active"]) [data-dropdown-bg] {
97  opacity: 1;
98  inset: 0;
99}
100
101.wf-design-mode [data-mobile-nav="active"] {
102  opacity: 1;
103  visibility: visible;
104}
105
106    .u-heading h1,
107  .u-heading h2,
108  .u-heading h3,
109  .u-heading h4 {
110    font-size: inherit !important;
111  }
112
113  .font-weight-light{
114		font-weight: 300 !important;
115    }
116
117/* Case studies / blogs list - horizontal slider on mobile */
118@media (max-width: 767px) {
119  .blogs-list-wrap {
120    flex-wrap: nowrap;
121    overflow-x: auto;
122    -webkit-overflow-scrolling: touch;
123    scroll-snap-type: x mandatory;
124    scroll-padding-left: 0.25rem;
125    scrollbar-width: none;
126  }
127  .blogs-list-wrap::-webkit-scrollbar {
128    display: none;
129  }
130  .blogs-list-wrap > .w-dyn-item {
131    flex: 0 0 80%;
132    max-width: 80%;
133    scroll-snap-align: start;
134  }
135}
136
137/* Comparison table info tooltips */
138.cmp-info:hover .cmp-info-tip,
139.cmp-info:focus-within .cmp-info-tip {
140  display: block;
141}
142.cmp-info-tip p {
143  margin: 0;
144  font-size: 0.8125rem;
145  line-height: 1.5;
146}
147
148/* Comparison page FAQ accordion */
149.cfaq-item[data-open="true"] .cfaq-a {
150  display: block;
151}
152.cfaq-item[data-open="true"] .cfaq-icon {
153  transform: rotate(45deg);
154}
155.cfaq-q:focus-visible {
156  outline: 2px solid #5c55a6;
157  outline-offset: 2px;
158}
159.cfaq-a p,
160.cfaq-qtext p {
161  margin: 0;
162}
163
164/* Comparison table meaning line (the 'What does it mean' text under capability names) */
165.cmp-meaning p {
166  margin: 0;
167  font-size: 0.8125rem;
168  line-height: 1.5;
169  color: #667085;
170}
171
172/* Comparison summary reason cards */
173.cmp-why-title h1,
174.cmp-why-title h2,
175.cmp-why-title h3,
176.cmp-why-title h4 {
177  margin: 0;
178  font-size: 1.125rem;
179  line-height: 1.4;
180}
181.cmp-why-card p {
182  margin: 0;
183  font-size: 0.9375rem;
184  line-height: 1.6;
185}
186
187/* Industry stats band: per-position metric icons (stats mode only; feature cards keep their own icon) */
188.layout254_item.is-stats-card .cs-icon-1x1-xsmall-3 {
189  display: none;
190}
191.layout254_item.is-stats-card:nth-child(1) .fcard-stat-icon-1,
192.layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
193.layout254_item.is-stats-card:nth-child(3) .fcard-stat-icon-3,
194.layout254_item.is-stats-card:nth-child(4) .fcard-stat-icon-4 {
195  display: flex;
196}
197.layout254_item.is-stats-card .cs-icon-featured-outline-large-4 {
198  margin-left: auto;
199  margin-right: auto;
200}
201
202/* Industry pages: stat tile 2 swaps the storefront for the industry glyph (keyed by page id) */
203html[data-wf-page="6a6b415bed2bfff2ac196c80"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
204html[data-wf-page="6a6b41f61c1b18a7410c5a0d"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
205html[data-wf-page="6a6b4237d2b29a42560750ad"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
206html[data-wf-page="6a6b42a0d93559a1ca740815"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
207html[data-wf-page="6a6b42b129e6d7ffcd5cee57"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
208html[data-wf-page="6a6b426c77f1ae51bdad9644"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
209html[data-wf-page="6a6b427c29e6d7ffcd5cc554"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
210html[data-wf-page="6a6b425a14fa4a9bd641a221"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2 {
211  display: none;
212}
213html[data-wf-page="6a6b415bed2bfff2ac196c80"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-basket,
214html[data-wf-page="6a6b41f61c1b18a7410c5a0d"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-pill,
215html[data-wf-page="6a6b4237d2b29a42560750ad"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-plug,
216html[data-wf-page="6a6b42a0d93559a1ca740815"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-utensils,
217html[data-wf-page="6a6b42b129e6d7ffcd5cee57"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-sparkles,
218html[data-wf-page="6a6b426c77f1ae51bdad9644"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-hammer,
219html[data-wf-page="6a6b427c29e6d7ffcd5cc554"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-toybrick,
220html[data-wf-page="6a6b425a14fa4a9bd641a221"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-wrench {
221  display: flex;
222}
223</style>
224<style>
225/* MG-42 purchase-path icons and page media, 15 Sep 2026 */
226html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_head::after{content:"";display:block;width:6rem;height:3px;margin:var(--_spacing---space--5) auto 0;background:var(--colors--cs-purblue);border-radius:3px}
227html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_row::after{content:"";position:absolute;bottom:0;left:0;right:0;height:.5rem;background:var(--colors--cs-light-purple);border-radius:0 0 1rem 1rem}
228html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item::before,html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_chip::before{content:"";display:block;flex-shrink:0;background:var(--colors--cs-dark-purblue);mask:var(--cs-icon) center/contain no-repeat;-webkit-mask:var(--cs-icon) center/contain no-repeat}
229html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item::before{width:2rem;height:2rem;margin-bottom:var(--_spacing---space--5)}
230html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_chip::before{width:1.5rem;height:1.5rem}
231html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item:not(:last-child)::after{content:"";position:absolute;right:calc(-1 * var(--_spacing---space--4));top:50%;width:var(--_spacing---space--4);height:1.25rem;background:var(--colors--cs-purblue);mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12h15m-6-6 6 6-6 6' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E") center/contain no-repeat}
232html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_chip:not(:last-child){border-right:1px solid var(--colors--cs-light-purple)}
233html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-content="video"]{border-radius:1rem;overflow:hidden}
234html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-content="video"] .w-youtube{aspect-ratio:16/9;height:auto!important;padding-top:0!important}
235html[data-wf-page="6a992fe4586a2d690ffacbc0"] #conversational-commerce-form{scroll-margin-top:7rem;background:var(--colors--cs-light-purple)}
236html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-content="form"]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);column-gap:var(--_spacing---space--8);align-items:start}
237html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-content="form"]>.u-heading{min-width:0;max-width:none;grid-column:1;grid-row:1;margin-top:0}
238html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-content="form"]>.u-text{min-width:0;max-width:none;grid-column:1;grid-row:2}
239html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-hubspot]{grid-column:2;grid-row:1/span 3;min-width:0;background:white;border-radius:1rem;padding:var(--_spacing---space--6)}
240html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-form-fallback]{grid-column:2;color:var(--colors--cs-dark-purblue)}
241html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-hubspot] iframe{max-width:100%;width:100%}
242@media(max-width:991px){html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item:nth-child(3n)::after{display:none}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_chip{border-right:0!important}html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-content="form"]{display:block}html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-hubspot]{margin-top:var(--_spacing---space--6)}}
243@media(max-width:479px){html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item::before{margin:0;width:1.75rem;height:1.75rem}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item:not(:last-child)::after{display:block;top:auto;bottom:calc(-1 * var(--_spacing---space--5));right:50%;height:var(--_spacing---space--5);transform:translateX(50%) rotate(90deg)}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_row::after{display:none}html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-hubspot]{padding:var(--_spacing---space--4)}}
244
245html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item:nth-child(1){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cpath%20d%3D%22M16%2010a2%202%200%200%201-2%202H6.828a2%2
24502%200%200%200-1.414.586l-2.202%202.202A.71.71%200%200%201%202%2014.286V4a2%202%200%200%201%202-2h10a2%202%200%200%201%202%202z%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M20%209a2%202%200%200%201%202%202v10.286a.71.71%200%200%201-1.212.502l-2.202-2.202A2%202%200%200%200%2017.172%2019H10a2%202%200%200%201-2-2v-1%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
246html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item:nth-child(2){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cpath%20d%3D%22M12%2018V5%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M15%2013a4.17%204.17%200%200%201-3-4%204.17%204.17%200%200%201-3%204%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M17.598%206.5A3%203%200%201%200%2012%205a3%203%200%201%200-5.598%201.5%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M17.997%205.125a4%204%200%200%201%202.526%205.77%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M18%2018a4%204%200%200%200%202-7.464%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M19.967%2017.483A4%204%200%201%201%2012%2018a4%204%200%201%201-7.967-.517%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M6%2018a4%204%200%200%201-2-7.464%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M6.003%205.125a4%204%200%200%200-2.526%205.77%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
247html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item:nth-child(3){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Crect%20width%3D%228%22%20height%3D%224%22%20x%3D%228%22%20y%3D%222%22%20rx%3D%221%22%20ry%3D%221%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M16%204h2a2%202%200%200%201%202%202v14a2%202%200%200%201-2%202H6a2%202%200%200%201-2-2V6a2%202%200%200%201%202-2h2%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22m9%2014%202%202%204-4%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
248html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item:nth-child(4){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cellipse%20cx%3D%2212%22%20cy%3D%225%22%20rx%3D%229%22%20ry%3D%223%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M3%205V19A9%203%200%200%200%2021%2019V5%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M3%2012A9%203%200%200%200%2021%2012%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
249html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item:nth-child(5){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cpath%20d%3D%22M20%2013c0%205-3.5%207.5-7.66%208.95a1%201%200%200%201-.67-.01C7.5%2020.5%204%2018%204%2013V6a1%201%200%200%201%201-1c2%200%204.5-1.2%206.24-2.72a1.17%201.17%200%200%201%201.52%200C14.51%203.81%2017%205%2019%205a1%201%200%200%201%201%201z%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22m9%2012%202%202%204-4%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
250html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item:nth-child(6){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cpath%20d%3D%22M10%2014.66V17a1%201%200%200%201-1%201%202%202%200%200%200-2%202v2%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M14%2014.66V17a1%201%200%200%200%201%201%202%202%200%200%201%202%202v2%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M17.916%2010H19.5A2.5%202.5%200%200%200%2022%207.5V5a1%201%200%200%200-1-1h-3%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M4%2022h16%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M6%209a6%206%200%200%200%2012%200V3a1%201%200%200%200-1-1H7a1%201%200%200%200-1%201z%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M6.084%2010H4.5A2.5%202.5%200%200%201%202%207.5V5a1%201%200%200%201%201-1h3%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
251html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item:nth-child(7){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cpath%20d%3D%22M15%2021v-5a1%201%200%200%200-1-1h-4a1%201%200%200%200-1%201v5%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M17.774%2010.31a1.12%201.12%200%200%200-1.549%200%202.5%202.5%200%200%201-3.451%200%201.12%201.12%200%200%200-1.548%200%202.5%202.5%200%200%201-3.452%200%201.12%201.12%200%200%200-1.549%200%202.5%202.5%200%200%201-3.77-3.248l2.889-4.184A2%202%200%200%201%207%202h10a2%202%200%200%201%201.653.873l2.895%204.192a2.5%202.5%200%200%201-3.774%203.244%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M4%2010.95V19a2%202%200%200%200%202%202h12a2%202%200%200%200%202-2v-8.05%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
252html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item:nth-child(8){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cpath%20d%3D%22M22%2017a2%202%200%200%201-2%202H6.828a2%202%200%200%200-1.414.586l-2.202%202.202A.71.71%200%200%201%202%2021.286V5a2%202%200%200%201%202-2h16a2%202%200%200%201%202%202z%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M7%2011h10%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M7%2015h6%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M7%207h8%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
253html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item:nth-child(9){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cpath%20d%3D%22m2.05%202.05%201.099-.028a1%201%200%200%201%201.008.815l2.69%2014.347A1%201%200%200%200%207.83%2018H18%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M4.563%205h16.435a1%201%200%200%201%20.981%201.204l-1.026%206.226A2%202%200%200%201%2018.962%2014H6.25%22%20%2F%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%2220%22%20r%3D%222%22%20%2F%3E%0A%20%20%3Ccircle%20cx%3D%228%22%20cy%3D%2220%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
254html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_chip:nth-child(1){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cpath%20d%3D%22M16%2010a2%202%200%200%201-2%202H6.828a2%202%200%200%200-1.414.586l-2.202%202.202A.71.71%200%200%201%202%2014.286V4a2%202%200%200%201%202-2h10a2%202%200%200%201%202%202z%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M20%209a2%202%200%200%201%202%202v10.286a.71.71%200%200%201-1.212.502l-2.202-2.202A2%202%200%200%200%2017.172%2019H10a2%202%200%200%201-2-2v-1%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
255html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_chip:nth-child(2){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cpath%20d%3D%22M11%2021.73a2%202%200%200%200%202%200l7-4A2%202%200%200%200%2021%2016V8a2%202%200%200%200-1-1.73l-7-4a2%202%200%200%200-2%200l-7%204A2%202%200%200%200%203%208v8a2%202%200%200%200%201%201.73z%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M12%2022V12%22%20%2F%3E%0A%20%20%3Cpolyline%20points%3D%223.29%207%2012%2012%2020.71%207%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22m7.5%204.27%209%205.15%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
256html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_chip:nth-child(3){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cpath%20d%3D%22M20%2013c0%205-3.5%207.5-7.66%208.95a1%201%200%200%201-.67-.01C7.5%2020.5%204%2018%204%2013V6a1%201%200%200%201%201-1c2%200%204.5-1.2%206.24-2.72a1.17%201.17%200%200%201%201.52%200C14.51%203.81%2017%205%2019%205a1%201%200%200%201%201%201z%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
257html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_chip:nth-child(4){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cpath%20d%3D%22M12%203v18%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22m19%208%203%208a5%205%200%200%201-6%200zV7%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M3%207h1a17%2017%200%200%200%208-2%2017%2017%200%200%200%208%202h1%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22m5%208%203%208a5%205%200%200%201-6%200zV7%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M7%2021h10%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
258html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_chip:nth-child(5){--cs-icon:url("data:image/svg+xml,%3Csvg%0A%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0A%20%20width%3D%2224%22%0A%20%20height%3D%2224%22%0A%20%20viewBox%3D%220%200%2024%2024%22%0A%20%20fill%3D%22none%22%0A%20%20stroke%3D%22currentColor%22%0A%20%20stroke-width%3D%222%22%0A%20%20stroke-linecap%3D%22round%22%0A%20%20stroke-linejoin%3D%22round%22%0A%3E%0A%20%20%3Cpath%20d%3D%22M5%2021v-6%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M12%2021V9%22%20%2F%3E%0A%20%20%3Cpath%20d%3D%22M19%2021V3%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}
259
260</style>
261<!-- CS announcement banner, 22 Sep 2026 -->
262<style>
263/* ChannelSight announcement banner. Native classes provide its layout and palette. */
264.cs-announcement {
265  background-image: linear-gradient(110deg,
266    var(--colors--untitled-ui-orange700, #b93815) 0%,
267    var(--colors--cs-dark-purblue, #3a43c3) 100%);
268  animation: cs-announcement-enter 320ms ease-out both;
269}
270.cs-announcement[hidden] { display: none !important; }
271.cs-announcement_row {
272  position: relative;
273  min-height: 2.75rem;
274  padding-inline: 3rem;
275}
276.cs-announcement_close {
277  position: absolute;
278  top: 0;
279  right: 0;
280  display: none;
281  align-items: center;
282  justify-content: center;
283  width: 2.75rem;
284  height: 2.75rem;
285  padding: 0;
286  border: 0;
287  border-radius: .25rem;
288  background: transparent;
289  color: inherit;
290  cursor: pointer;
291  appearance: none;
292}
293.cs-announcement[data-cs-dismissible] .cs-announcement_close,
294.wf-design-mode .cs-announcement_close { display: inline-flex; }
295.cs-announcement_close::before,
296.cs-announcement_close::after {
297  content: "";
298  position: absolute;
299  width: 1rem;
300  height: 2px;
301  background: currentColor;
302  transform: rotate(45deg);
303}
304.cs-announcement_close::after { transform: rotate(-45deg); }
305.cs-announcement_close:hover { background: rgb(255 255 255 / 12%); }
306.cs-announcement_close:focus-visible {
307  outline: 2px solid currentColor;
308  outline-offset: -4px;
309}
310.cs-announcement_copy .u-text {
311  min-width: 0;
312  max-width: none;
313  color: inherit;
314}
315.cs-announcement_action .button-main {
316  display: inline-flex;
317  align-items: center;
318  justify-content: center;
319  min-height: 2.75rem;
320  padding: 0 var(--_spacing---space--1);
321  border: 0;
322  border-radius: 0;
323  background: transparent;
324  color: inherit;
325  box-shadow: none;
326  font-size: var(--_typography---font-size--text-main);
327  text-decoration: underline;
328  text-underline-offset: .2em;
329  white-space: nowrap;
330  transform: none;
331}
332.cs-announcement_action .button-main:hover {
333  background: transparent;
334  color: inherit;
335  text-decoration-thickness: .12em;
336  transform: none;
337}
338.cs-announcement_action .button-main:focus-visible {
339  outline: 2px solid currentColor;
340  outline-offset: 2px;
341}
342.mega-nav:has(> .cs-announcement):not(.is-relative) {
343  top: 0;
344}
345.nav-components:has(> .mega-nav > .cs-announcement) {
346  padding-top: var(--cs-announcement-offset, 0px);
347}
348@media screen and (max-width: 991px) {
349  .mega-nav:has(> .cs-announcement) .mega-nav__bar-inner,
350  .mega-nav:has(> .cs-announcement) .mega-nav__dropdown-wrapper {
351    top: calc(var(--nav-height) + var(--cs-announcement-height, 0px));
352  }
353}
354@media screen and (max-width: 767px) {
355  .cs-announcement_row {
356    flex-direction: column;
357    row-gap: 0;
358    padding-top: var(--_spacing---space--1);
359  }
360}
361@keyframes cs-announcement-enter {
362  from { transform: translateY(-100%); }
363  to { transform: translateY(0); }
364}
365@media (prefers-reduced-motion: reduce) {
366  .cs-announcement { animation: none; }
367}
368
369</style>
370<style>
371/* BEGIN ChannelSight case-study index 2026-10-02 */
372/* ChannelSight case-study index. Scoped additions to native Webflow/Lumos styles. */
373.cs-index-hero .u-container,.cs-index-library .u-container{max-width:80rem;width:calc(100% - clamp(2.5rem,8vw,7rem))}
374.cs-index-hero .section-spacer{padding-top:clamp(2.25rem,4.4vw,4rem)}
375.cs-index-library>.section-spacer:first-child{padding-top:var(--_spacing---space--7)}
376.cs-index-heading .eyebrow{font-size:.875rem;text-transform:uppercase;letter-spacing:.075em;color:#5837df;margin-bottom:var(--_spacing---space--4)}
377.cs-index-heading .u-heading{font-weight:600;line-height:1.07;letter-spacing:-.05em}
378.cs-index-heading h1{white-space:pre-line;color:#5837df}
379.cs-index-heading h1::first-line{color:#101039}
380.cs-index-heading .u-heading p:empty,.cs-index-library-title .u-heading p:empty{display:none}
381.cs-index-intro p{line-height:1.55}
382.cs-index-library-title .u-heading{min-width:0;width:auto;font-weight:600;letter-spacing:-.025em;white-space:nowrap}
383.cs-index-library .cs-index-filter{margin:0}
384.cs-index-library [data-cs-filter]{display:flex;align-items:center;gap:var(--_spacing---space--3)}
385.cs-index-library .cs-index-select{margin:0;max-width:100%;font-family:inherit}
386.cs-index-library .cs-index-label{margin:0;font-weight:400;white-space:nowrap}
387.cs-index-library [hidden]{display:none!important}
388.cs-index-count:empty{display:none}
389.cs-index-library .cs-index-industry>div{display:inline}
390.cs-index-card{transition:border-color .18s,box-shadow .18s,transform .18s}
391.cs-index-card:hover{border-color:#b8aaef;box-shadow:0 10px 30px #29215a0c;transform:translateY(-3px)}
392.cs-index-image{transition:transform .3s}
393.cs-index-card:hover .cs-index-image{transform:scale(1.025)}
394.cs-index-media:has(a[href*="regalo"]){object-position:70% 42%}
395.cs-index-card[href*="regalo"] .cs-index-image{object-position:70% 42%}
396.cs-index-page-numbers .cs-index-page-button{min-width:2.5rem;border-radius:6px}
397.cs-index-page-button[aria-current=page]{background:#eee9ff;color:#5837df;font-weight:600}
398.cs-index-page-button:disabled{color:#b5b2c2;cursor:default}
399.cs-index-hero a:focus-visible,.cs-index-library :is(a,button,select):focus-visible{outline:3px solid #5837df;outline-offset:4px}
400.cs-index-library{scroll-margin-top:2rem}
401@media(min-width:1600px){.cs-index-hero .u-container,.cs-index-library .u-container{max-width:90rem}}
402@media(max-width:767px){.cs-index-heading h1{font-size:clamp(2.3rem,10.9vw,3rem)}.cs-index-intro{max-width:36rem}.cs-index-library [data-cs-filter]{width:100%;justify-content:space-between}.cs-index-select{width:min(15rem,70vw)}.cs-index-library .u-container,.cs-index-hero .u-container{width:calc(100% - 2.5rem)}}
403@media(prefers-reduced-motion:reduce){.cs-index-card,.cs-index-image{transition:none}.cs-index-card:hover{transform:none}}
404.cs-index-library [data-cs-primary]:is(:empty,.w-dyn-bind-empty){display:none!important}
405.cs-index-content:has([data-cs-primary="title"]:not(:empty):not(.w-dyn-bind-empty)) [data-cs-fallback="title"],
406.cs-index-media:has([data-cs-primary="company"]:not(:empty):not(.w-dyn-bind-empty)) [data-cs-fallback="company"],
407.cs-index-industry:has([data-cs-primary="industry"]:not(:empty):not(.w-dyn-bind-empty)) [data-cs-fallback="industry"]{display:none}
408
409.cs-index-heading h1::before,.cs-index-heading h1::after{display:none}
410.cs-index-image{margin:0}
411.cs-index-heading .u-heading h1::before,.cs-index-heading .u-heading h1::after{content:none!important;display:none!important}
412html[data-wf-page="649afe6191f574759c2f675a"] .nav-components.top-spacing{padding-top:var(--cs-index-nav-height,8.125rem);margin-bottom:0}
413@media(max-width:767px){html[data-wf-page="649afe6191f574759c2f675a"] .nav-components.top-spacing{padding-top:var(--cs-index-nav-height,11rem)}}
414
415/* END ChannelSight case-study index */
416</style>
417<style>
418/* Case study optional photo logos 2026-10-02 */
419/* Optional brand marks over case-study photos. Empty fields retain the company name. */
420.cs-index-logo:is(.w-dyn-bind-empty,[src=""],[data-cs-logo-failed]),.cs-index-logo:not([src]){display:none!important}
421.cs-index-media:has(.cs-index-logo[src]:not([src=""]):not(.w-dyn-bind-empty):not([data-cs-logo-failed])) .cs-index-company{display:none!important}
422.cs-index-logo{pointer-events:none}
423.cs-index-media .cs-index-company{text-shadow:0 1px 10px rgba(0,0,0,.3)}
424
425</style></div><div class="w-embed"><style>
426::before, ::after {
427  box-sizing: border-box;
428}
429.w-embed:before, .w-embed:after,
430.w-richtext:before, .w-richtext:after {
431  content: unset;
432}
433html {
434  background-color: var(--_theme---background);
435}
436button {
437  background-color: unset;
438  padding: unset;
439  text-align: inherit;
440}
441button:not(:disabled) {
442  cursor: pointer;
443}
444video {
445  width: 100%;
446  object-fit: cover;
447}
448svg {
449  max-width: 100%;
450}
451@media (prefers-color-scheme: light) {
452  option { color: black; }
453}
454/* Typography */
455body {
456  -webkit-font-smoothing: antialiased;
457  -moz-osx-font-smoothing: grayscale;
458}
459/* Clear Defaults */
460a:not([class]) {
461  text-decoration: underline;
462}
463label {
464  font-weight: inherit;
465  margin-bottom: 0;
466}
467select:has(option[value=""]:checked) {
468  color: color-mix(in lab, currentcolor 60%, transparent)
469}
470/* Selection Color */
471::selection {
472  background-color: var(--_theme---selection--background);
473  color: var(--_theme---selection--text);
474}
475/* Margin Trim */
476:is(.u-margin-trim,.w-richtext,.u-content-wrapper,[class*="u-container"],[class*="u-layout-column"]) > :not(:not(.w-condition-invisible,.u-cover-absolute,.u-ignore-trim) ~ :not(.w-condition-invisible,.u-cover-absolute,.u-ignore-trim)),
477:is(.u-margin-trim,.w-richtext,.u-content-wrapper,[class*="u-container"],[class*="u-layout-column"]) > .u-display-contents > :not(:not(.w-condition-invisible,.u-cover-absolute,.u-ignore-trim) ~ :not(.w-condition-invisible,.u-cover-absolute,.u-ignore-trim)) {
478  margin-top: 0;
479}
480:is(.u-margin-trim,.w-richtext,.u-content-wrapper,[class*="u-container"],[class*="u-layout-column"]) > :not(:has(~ :not(.w-condition-invisible,.u-cover-absolute,.u-ignore-trim))),
481:is(.u-margin-trim,.w-richtext,.u-content-wrapper,[class*="u-container"],[class*="u-layout-column"]) > .u-display-contents > :not(:has(~ :not(.w-condition-invisible,.u-cover-absolute,.u-ignore-trim))) {
482  margin-bottom: 0;
483}
484/* Line Height Trim */
485:not(.u-text-trim-off) > :is(h1,h2,h3,h4,h5,h6,p):not(.u-text-trim-off,:has([class*="u-text-style-"]))::before,
486[class*="u-text-style-"]:not(.u-text-trim-off,:has(h1,h2,h3,h4,h5,h6,p))::before {
487  content: "";
488  display: table;
489  margin-bottom: calc(-0.5lh + var(--_text-style---trim-top));
490}
491:not(.u-text-trim-off) > :is(h1,h2,h3,h4,h5,h6,p):not(.u-text-trim-off,:has([class*="u-text-style-"]))::after,
492[class*="u-text-style-"]:not(.u-text-trim-off,:has(h1,h2,h3,h4,h5,h6,p))::after {
493  content: "";
494  display: table;
495  margin-bottom: calc(-0.5lh + var(--_text-style---trim-bottom));
496}
497/* Rich Text Links */
498.w-richtext a {
499  position: relative;
500  z-index: 4;
501}
502/* Line Clamp */
503[class*="u-line-clamp"]:not(.w-richtext),
504[class*="u-line-clamp"].w-richtext > * {
505  display: -webkit-box !important;
506  -webkit-line-clamp: 1;
507  -webkit-box-orient: vertical;
508  overflow: hidden;
509}
510[class*="u-line-clamp"].w-richtext > :not(:first-child) { display: none; }
511.u-line-clamp-2:not(.w-richtext), .u-line-clamp-2.w-richtext > * { -webkit-line-clamp: 2; }
512.u-line-clamp-3:not(.w-richtext), .u-line-clamp-3.w-richtext > * { -webkit-line-clamp: 3; }
513.u-line-clamp-4:not(.w-richtext), .u-line-clamp-4.w-richtext > * { -webkit-line-clamp: 4; }
514/* Text Max Width */
515.u-heading > *,
516.u-text > * {
517  width: 100%;
518  max-width: inherit !important;
519  margin-inline: 0 !important;
520  margin-top: 0 !important;
521}
522/* Background Slot Children */
523.u-background-slot > * {
524  position: absolute;
525  top: 0;
526  left: 0;
527  width: 100%;
528  height: 100%;
529  aspect-ratio: unset;
530}
531/* Hide If Empty CMS */
532.u-hide-if-empty-cms:not(:has(.w-dyn-item)) {
533  display: none !important;
534}
535/* Focus State */
536a, button, :where([tabindex]), input, select, textarea {
537  outline-offset: var(--focus--offset-outer);
538}
539a:focus-visible,
540button:focus-visible,
541[tabindex]:focus-visible,
542input:focus-visible,
543select:focus-visible,
544textarea:focus-visible {
545  outline-color: var(--_theme---text);
546  outline-width: var(--focus--width);
547  outline-style: solid;
548}
549/* Disabled */
550[data-button]:has(button:disabled) {
551  opacity: 0.5;
552  pointer-events: none;
553}
554/* Icon */
555.u-icon svg {
556  display: block !important;
557  width: 100% !important;
558  height: auto !important;
559}
560.u-icon path[stroke] {
561  stroke: currentColor !important;
562  stroke-width: var(--border-width--main);
563  vector-effect: non-scaling-stroke;
564}
565.u-icon :is(path:not([stroke]), rect, circle, ellipse, polygon, polyline) {
566  fill: currentColor !important;
567}
568/* Global / Clickable Component */
569.wf-design-mode .clickable_wrap { z-index: 0; }
570/* Number Attributes */
571[data-number="-1"]{--number: initial;}[data-number="0"]{--number: 0;}[data-number="1"]{--number:1}[data-number="2"]{--number:2}[data-number="3"]{--number:3}[data-number="4"]{--number:4}[data-number="5"]{--number:5}[data-number="6"]{--number:6}[data-number="7"]{--number:7}[data-number="8"]{--number:8}[data-number="9"]{--number:9}
572[data-number="10"]{--number:10}[data-number="11"]{--number:11}[data-number="12"]{--number:12}[data-number="13"]{--number:13}[data-number="14"]{--number:14}[data-number="15"]{--number:15}[data-number="16"]{--number:16}[data-number="17"]{--number:17}[data-number="18"]{--number:18}[data-number="19"]{--number:19}
573[data-number="20"]{--number:20}[data-number="21"]{--number:21}[data-number="22"]{--number:22}[data-number="23"]{--number:23}[data-number="24"]{--number:24}[data-number="25"]{--number:25}[data-number="26"]{--number:26}[data-number="27"]{--number:27}[data-number="28"]{--number:28}[data-number="29"]{--number:29}
574[data-number="30"]{--number:30}[data-number="31"]{--number:31}[data-number="32"]{--number:32}[data-number="33"]{--number:33}[data-number="34"]{--number:34}[data-number="35"]{--number:35}[data-number="36"]{--number:36}[data-number="37"]{--number:37}[data-number="38"]{--number:38}[data-number="39"]{--number:39}
575[data-number="40"]{--number:40}[data-number="41"]{--number:41}[data-number="42"]{--number:42}[data-number="43"]{--number:43}[data-number="44"]{--number:44}[data-number="45"]{--number:45}[data-number="46"]{--number:46}[data-number="47"]{--number:47}[data-number="48"]{--number:48}[data-number="49"]{--number:49}
576[data-number="50"]{--number:50}[data-number="51"]{--number:51}[data-number="52"]{--number:52}[data-number="53"]{--number:53}[data-number="54"]{--number:54}[data-number="55"]{--number:55}[data-number="56"]{--number:56}[data-number="57"]{--number:57}[data-number="58"]{--number:58}[data-number="59"]{--number:59}
577[data-number="60"]{--number:60}[data-number="61"]{--number:61}[data-number="62"]{--number:62}[data-number="63"]{--number:63}[data-number="64"]{--number:64}[data-number="65"]{--number:65}[data-number="66"]{--number:66}[data-number="67"]{--number:67}[data-number="68"]{--number:68}[data-number="69"]{--number:69}
578[data-number="70"]{--number:70}[data-number="71"]{--number:71}[data-number="72"]{--number:72}[data-number="73"]{--number:73}[data-number="74"]{--number:74}[data-number="75"]{--number:75}[data-number="76"]{--number:76}[data-number="77"]{--number:77}[data-number="78"]{--number:78}[data-number="79"]{--number:79}
579[data-number="80"]{--number:80}[data-number="81"]{--number:81}[data-number="82"]{--number:82}[data-number="83"]{--number:83}[data-number="84"]{--number:84}[data-number="85"]{--number:85}[data-number="86"]{--number:86}[data-number="87"]{--number:87}[data-number="88"]{--number:88}[data-number="89"]{--number:89}
580[data-number="90"]{--number:90}[data-number="91"]{--number:91}[data-number="92"]{--number:92}[data-number="93"]{--number:93}[data-number="94"]{--number:94}[data-number="95"]{--number:95}[data-number="96"]{--number:96}[data-number="97"]{--number:97}[data-number="98"]{--number:98}[data-number="99"]{--number:99}[data-number="100"]{--number:100}
581/* State Manager */
582[data-state] { --_state---true: 1; --_state---false: 0; }
583.is-active,
584.wf-design-mode [data-preview="true"],
585.wf-design-mode [data-preview]:not(:has(> [data-w-instance-of])),
586[data-state~="checked"]:is(:checked, :has(:checked)),
587[data-state~="current"]:is(.w--current, :has(.w--current)),
588[data-state~="open"]:is(.w--open, :has(.w--open)),
589[data-state~="pressed"]:is([aria-pressed="true"], :has([aria-pressed="true"])),
590[data-state~="expanded"]:is([aria-expanded="true"], :has([aria-expanded="true"])),
591[data-state~="external"]:is([target="_blank"], :has([target="_blank"])) { 
592  --_state---true: 0; --_state---false: 1;
593}
594.wf-design-mode [data-trigger~="preview"],
595[data-trigger~="focus"]:is(:focus-visible, :has(:focus-visible)),
596[data-trigger~="group"]:has([data-trigger~="focus-other"]:focus-visible, [data-trigger~="focus-other"] :focus-visible)
597[data-trigger~="focus-other"]:not(:focus-visible, :has(:focus-visible)) {
598  --_trigger---on: 0; --_trigger---off: 1;
599}
600@media (hover: hover) {
601  [data-trigger~="hover"]:hover,
602  [data-trigger~="hover-if-clickable"]:has(.clickable_wrap:not(.w-condition-invisible)):hover,
603  [data-trigger~="group"]:has([data-trigger~="hover-other"]:hover) [data-trigger~="hover-other"]:not(:hover) { 
604    --_trigger---on: 0; --_trigger---off: 1;
605  }
606  [data-trigger~="hover-other"]:hover { --_trigger---on: 1 !important; --_trigger---off: 0 !important; }
607}
608@media (hover: none) {
609  [data-trigger~="mobile"] { --_trigger---on: 0; --_trigger---off: 1; }
610}
611/* Slot Styler */
612[data-slot] > .w-dyn-list,
613[data-slot] > .w-dyn-list > *,
614[data-slot] > .w-dyn-list > * > *,
615[data-slot] > .u-display-contents > .w-dyn-list,
616[data-slot] > .u-display-contents > .w-dyn-list > *,
617[data-slot] > .u-display-contents > .w-dyn-list > * > *,
618[data-slot] > .u-display-contents > .u-display-contents > .w-dyn-list,
619[data-slot] > .u-display-contents > .u-display-contents > .w-dyn-list > *,
620[data-slot] > .u-display-contents > .u-display-contents > .w-dyn-list > * > * {
621  display: contents;
622}
623/* Layout Slot */
624.u-layout-column-2:has(> :not(.u-image-wrapper,.u-video,.u-overlay)) {
625  aspect-ratio: auto;
626  border-radius: 0;
627  overflow: visible;
628}
629.u-layout-column-2:not(:has(> :not(.u-image-wrapper,.u-video,.u-overlay))) :is(.u-image-wrapper,.u-video,.u-overlay) {
630  position: absolute;
631  height: 100%;
632}
633/* Responsive Styles */
634[data-large-columns="1"] { display: flex; }
635[data-large-columns="2"] { display: grid; --_column-count---value: 2; }
636[data-large-columns="3"] { display: grid; --_column-count---value: 3; }
637[data-large-columns="4"] { display: grid; --_column-count---value: 4; }
638[data-large-columns="5"] { display: grid; --_column-count---value: 5; }
639[data-large-columns="6"] { display: grid; --_column-count---value: 6; }
640[data-large-columns="7"] { display: grid; --_column-count---value: 7; }
641[data-large-columns="8"] { display: grid; --_column-count---value: 8; }
642[data-large-columns="9"] { display: grid; --_column-count---value: 9; }
643[data-large-columns="10"] { display: grid; --_column-count---value: 10; }
644[data-large-columns="11"] { display: grid; --_column-count---value: 11; }
645[data-large-columns="12"] { display: grid; --_column-count---value: 12; }
646.slider_offset { --slide-count: var(--lg); --lg: 3; --md: var(--lg); --sm: var(--md); --xs: var(--sm); }
647@container (width < 53em) {
648  * {
649    --_responsive---large: 0;
650    --_responsive---medium: 1;
651    --flex-medium: flex;
652    --none-medium: none;
653    --column-medium: column;
654    --row-medium: row;
655    --start-medium: start;
656    --center-medium: center;
657    --end-medium: end;
658    --first-medium: -1;
659    --last-medium: 1;
660    --unset-medium: unset;
661    --relative-medium: relative;
662  }
663  [data-medium-columns="1"] { display: flex; }
664  [data-medium-columns="2"] { display: grid; --_column-count---value: 2; }
665  [data-medium-columns="3"] { display: grid; --_column-count---value: 3; }
666  [data-medium-columns="4"] { display: grid; --_column-count---value: 4; }
667  [data-medium-columns="5"] { display: grid; --_column-count---value: 5; }
668  [data-medium-columns="6"] { display: grid; --_column-count---value: 6; }
669  [data-medium-columns="7"] { display: grid; --_column-count---value: 7; }
670  [data-medium-columns="8"] { display: grid; --_column-count---value: 8; }
671  [data-medium-columns="9"] { display: grid; --_column-count---value: 9; }
672  [data-medium-columns="10"] { display: grid; --_column-count---value: 10; }
673  [data-medium-columns="11"] { display: grid; --_column-count---value: 11; }
674  [data-medium-columns="12"] { display: grid; --_column-count---value: 12; }
675  .slider_offset { --slide-count: var(--md); }
676}
677@container (width < 42em) {
678  * {
679    --_responsive---medium: 0;
680    --_responsive---small: 1;
681    --flex-small: flex;
682    --none-small: none;
683    --column-small: column;
684    --row-small: row;
685    --start-small: start;
686    --center-small: center;
687    --end-small: end;
688    --first-small: -1;
689    --last-small: 1;
690    --unset-small: unset;
691    --relative-small: relative;
692  }
693  [data-small-columns="1"] { display: flex; }
694  [data-small-columns="2"] { display: grid; --_column-count---value: 2; }
695  [data-small-columns="3"] { display: grid; --_column-count---value: 3; }
696  [data-small-columns="4"] { display: grid; --_column-count---value: 4; }
697  [data-small-columns="5"] { display: grid; --_column-count---value: 5; }
698  [data-small-columns="6"] { display: grid; --_column-count---value: 6; }
699  [data-small-columns="7"] { display: grid; --_column-count---value: 7; }
700  [data-small-columns="8"] { display: grid; --_column-count---value: 8; }
701  [data-small-columns="9"] { display: grid; --_column-count---value: 9; }
702  [data-small-columns="10"] { display: grid; --_column-count---value: 10; }
703  [data-small-columns="11"] { display: grid; --_column-count---value: 11; }
704  [data-small-columns="12"] { display: grid; --_column-count---value: 12; }
705  .slider_offset { --slide-count: var(--sm); }
706}
707@container (width < 27em) {
708  * {
709    --_responsive---small: 0;
710    --_responsive---xsmall: 1;
711    --flex-xsmall: flex;
712    --none-xsmall: none;
713    --column-xsmall: column;
714    --row-xsmall: row;
715    --start-xsmall: start;
716    --center-xsmall: center;
717    --end-xsmall: end;
718    --first-xsmall: -1;
719    --last-xsmall: 1;
720    --unset-xsmall: unset;
721    --relative-xsmall: relative;
722  }
723  [data-xsmall-columns="1"] { display: flex; }
724  [data-xsmall-columns="2"] { display: grid; --_column-count---value: 2; }
725  [data-xsmall-columns="3"] { display: grid; --_column-count---value: 3; }
726  [data-xsmall-columns="4"] { display: grid; --_column-count---value: 4; }
727  [data-xsmall-columns="5"] { display: grid; --_column-count---value: 5; }
728  [data-xsmall-columns="6"] { display: grid; --_column-count---value: 6; }
729  [data-xsmall-columns="7"] { display: grid; --_column-count---value: 7; }
730  [data-xsmall-columns="8"] { display: grid; --_column-count---value: 8; }
731  [data-xsmall-columns="9"] { display: grid; --_column-count---value: 9; }
732  [data-xsmall-columns="10"] { display: grid; --_column-count---value: 10; }
733  [data-xsmall-columns="11"] { display: grid; --_column-count---value: 11; }
734  [data-xsmall-columns="12"] { display: grid; --_column-count---value: 12; }
735  .slider_offset { --slide-count: var(--xs); }
736}
737</style></div><div class="w-embed"><style>
738/* [ASA] AI Shopping Assistant page, 16 Sep 2026 */
739html[data-wf-page="6a992fe4586a2d690ffacbc0"] .section-cell.max-h-30:has(.cs-asa-hero){max-height:none}
740/* Steps row: no lilac bar underneath (overrides the MG-42 ::after rule above) */
741html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_row::after{display:none}
742/* Dark variant of Section / Hero Assistant Card */
743.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .u-heading,.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .u-heading *{color:#fff}
744.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .u-text,.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .u-text *{color:rgba(255,255,255,.82)}
745.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .eyebrow,.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .eyebrow *{color:#c3c7fc}
746.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .cs-asa-hero{background:transparent;padding:0;border-radius:0}
747.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .bg-grad{display:none}
748html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_anchor:first-child{border-left:0}
749html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_anchor:hover{background:rgba(255,255,255,.05)}
750html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_anchor_icon img{width:18px;height:18px;display:block}
751html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_cmp_icon{mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18 6 6 18M6 6l12 12' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18 6 6 18M6 6l12 12' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat}
752html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_cmp_icon.is-tick{mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 6 9 17l-5-5' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 6 9 17l-5-5' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
753html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_cmp_row:first-child{border-top:0}
754html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_tab.w--current{background:#fff;border-color:#e7e7f2 #e7e7f2 transparent}
755html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_tab.w--current .asa_tab_eyebrow{color:#f36a4d}
756html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_connector::before,html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_connector::after{content:"";position:absolute;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--colors--cs-purblue)}
757html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_connector::before{left:0}
758html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_connector::after{right:0}
759html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_dark .u-heading,html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_dark .u-heading *{color:#fff}
760html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_dark .u-text,html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_dark .u-text *{color:rgba(255,255,255,.78)}
761html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_head .u-text{margin-left:auto;margin-right:auto}
762html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_head .u-heading{margin-left:auto;margin-right:auto}
763html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-section]{scroll-margin-top:7rem}
764html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_a_avatar svg,html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_a_send svg,html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_agent_nav svg,html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_agent_app svg,html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_toolcall_label svg{width:15px;height:15px;
764display:block;flex:0 0 auto}
765html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_pane{display:none}
766html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_pane.w--tab-active{display:block}
767/* Two-routes reveal: hidden once JS runs, animated when in view, replayed whenever a pane becomes active */
768@keyframes csAsaUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
769@keyframes csAsaPop{0%{opacity:0;transform:scale(.72)}62%{opacity:1;transform:scale(1.04)}100%{opacity:1;transform:scale(1)}}
770[data-cs-section="asa-routes"].asa-js .asa_pdp>*,[data-cs-section="asa-routes"].asa-js .asa_a_body>*,[data-cs-section="asa-routes"].asa-js .asa_agent_main>:not(:first-child){opacity:0}
771[data-cs-section="asa-routes"].is-inview .asa_pane.w--tab-active .asa_pdp>*,[data-cs-section="asa-routes"].is-inview .asa_pane.w--tab-active .asa_a_body>*,[data-cs-section="asa-routes"].is-inview .asa_pane.w--tab-active .asa_agent_main>:not(:first-child){animation:csAsaUp .5s cubic-bezier(.22,1,.36,1) both}
772[data-cs-section="asa-routes"].is-inview .asa_pane.w--tab-active .asa_prod,[data-cs-section="asa-routes"].is-inview .asa_pane.w--tab-active .asa_result{animation-name:csAsaPop;animation-duration:.52s}
773[data-cs-section="asa-routes"] .asa_pdp>
773:nth-child(1){animation-delay:.05s}
774[data-cs-section="asa-routes"] .asa_pdp>:nth-child(2){animation-delay:.18s}
775[data-cs-section="asa-routes"] .asa_a_body>:nth-child(1){animation-delay:.3s}
776[data-cs-section="asa-routes"] .asa_a_body>:nth-child(2){animation-delay:.45s}
777[data-cs-section="asa-routes"] .asa_a_body>:nth-child(3){animation-delay:.6s}
778[data-cs-section="asa-routes"] .asa_a_body>:nth-child(4){animation-delay:.75s}
779[data-cs-section="asa-routes"] .asa_a_body>:nth-child(5){animation-delay:.9s}
780[data-cs-section="asa-routes"] .asa_agent_main>:nth-child(2){animation-delay:.05s}
781[data-cs-section="asa-routes"] .asa_agent_main>:nth-child(3){animation-delay:.25s}
782[data-cs-section="asa-routes"] .asa_agent_main>:nth-child(4){animation-delay:.45s}
783[data-cs-section="asa-routes"] .asa_agent_main>:nth-child(5){animation-delay:.65s}
784@media(prefers-reduced-motion:reduce){[data-cs-section="asa-routes"].asa-js .asa_pdp>*,[data-cs-section="asa-routes"].asa-js .asa_a_body>*,[data-cs-section="asa-routes"].asa-js .asa_agent_main>:not(:first-child){opacity:1;animation:none!important}}
785@media(max-width:991px){html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_anchors_grid{grid-template-columns:repeat(2,minmax(0,1fr))}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_anchor:nth-child(3){border-left:0}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_infra{grid-template-columns:minmax(0,1fr);row-gap:1rem}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_connector{display:none}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .cs-asa-hero{margin-top:1rem}}
786@media(max-width:767px){html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_compare,html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_routes,html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_pdp{grid-template-columns:minmax(0,1fr)}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_agent{grid-template-columns:minmax(0,1fr)}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_agent_side{display:flex;flex-wrap:wrap;gap:.875rem;align-items:center}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_agent_tool{margin-top:0}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_pane{padding:1rem}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_assistant{margin:0 1rem 1.25rem;max-width:none}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_wedge{font-size:1.2rem}}
787@media(max-width:479px){html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_anchors_grid{grid-template-columns:minmax(0,1fr)}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_anchor{border-left:0;border-top:1px solid rgba(255,255,255,.08)}html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_anchor:first-child{border-top:0}}
788</style></div></div><div class="w-embed w-iframe"><!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 788-789
788
789<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
789GTM-TPR3D35
vendor: 83 bytes, lines 789-790
789"
790height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
791<!-- End Google Tag Manager (noscript) --></div><nav data-menu-wrap="" data-menu-open="false" class="mega-nav"><div role="region" aria-label="Announcement" class="cs-announcement"><div class="u-container"><div class="cs-announcement_row"><div class="cs-announcement_copy"><div data-number="-1" data-wf--typography-paragraph--variant="text-main" class="u-text u-rich-text w-richtext u-mb-0  ">ChannelSight launches the world&#x27;s first multi-retail AI Shopping Assistant</div></div><div class="cs-announcement_action"><a data-wf--button-main--variant="secondary" href="/blog/channelsight-launches-worlds-first-multi-retailer-ai-shopping-assistant-for-brands" class="button-main w-variant-12703881-1b33-cb8a-0510-6792e2c52b4f w-inline-block"><div>Know More</div></a></div><button type="button" aria-label="Dismiss announcement" class="cs-announcement_close"></button></div></div></div><div class="mega-nav__bar"><div class="mega-nav__container"><div class="mega-nav__bar-start"><a data-menu-logo="" href="/" class="mega-nav__bar-logo w-inline-block"><img aria-label="ChannelSight Homepage" loading="lazy" alt="ChannelSIght Logo" src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/69ea7c296b048233da3f301c_logo-CS-ai-star.avif" class="nav-logo"/></a><div data-nav-list="" data-mobile-nav="" class="mega-nav__bar-inner"><ul class="mega-nav__bar-list"><li data-nav-list-item=""><button data-dropdown-toggle="products" aria-expanded="false" aria-haspopup="true" class="mega-nav__bar-link is--dropdown"><span class="mega-nav__bar-link-label">Products</span><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" class="mega-nav__bar-link-icon is--dropdown"><path d="M6.6665 8.3335L9.99984 11.6668L13.3332 8.3335" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></li><li data-nav-list-item=""><button data-dropdown-toggle="industries" aria-expanded="false" aria-haspopup="true" class="mega-nav__bar-link is--dropdown"><span class="mega-nav__bar-link-label">Industries</span><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" class="mega-nav__bar-link-icon is--dropdown"><path d="M6.6665 8.3335L9.99984 11.6668L13.3332 8.3335" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></li><div data-nav-list-item=""><button data-dropdown-toggle="partners" aria-expanded="false" aria-haspopup="true" class="mega-nav__bar-link is--dropdown"><span class="mega-nav__bar-link-label">Partners</span><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" class="mega-nav__bar-link-icon is--dropdown"><path d="M6.6665 8.3335L9.99984 11.6668L13.3332 8.3335" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div><li data-nav-list-item=""><button data-dropdown-toggle="resources" aria-expanded="false" aria-haspopup="true" class="mega-nav__bar-link is--dropdown"><span class="mega-nav__bar-link-label">Resources</span><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" class="mega-nav__bar-link-icon is--dropdown"><path d="M6.6665 8.3335L9.99984 11.6668L13.3332 8.3335" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></li><li data-nav-list-item=""><button data-dropdown-toggle="company" aria-expanded="false" aria-haspopup="true" class="mega-nav__bar-link is--dropdown"><span class="mega-nav__bar-link-label">Company</span><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" class="mega-nav__bar-link-icon is--dropdown"><path d="M6.6665 8.3335L9.99984 11.6668L13.3332 8.3335" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></li></ul><ul data-nav-list-item="" class="mega-nav__bar-list is--actions"><li class="mega-nav__bar-action"><a href="https://portal.channelsight.com/" class="cs-button-secondary-gray-19 w-inline-block">Log in</a></li><li class="mega-nav__bar-action"><a href="/book-a-demo" class="view-more button gradient-button is-nav w-inline-block">Book a Demo</a></li></ul></div><div class="mega-nav__bar-end"><button data-burger-toggle="" aria-label="toggle menu" aria-expanded="false" class="mega-nav__burger"><span data-burger-line="top" class="mega-nav__burger-line"></span><span data-burger-line="mid" class="mega-nav__burger-line"></span><span data-burger-line="bot" class="mega-nav__burger-line"></span></button></div><div data-mobile-back="" class="mega-nav__back"><button aria-label="back to menu" class="mega-nav__bar-link is--back">
791<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" class="mega-nav__bar-link-icon"><path d="M11.6665 6.6665L8.33317 9.99984L11.6665 13.3332" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="mega-nav__bar-link-label">Back</span></button></div></div></div></div><div data-dropdown-wrapper="" class="mega-nav__dropdown-wrapper"><div data-dropdown-container="" class="mega-nav__dropdown-container"><div data-dropdown-bg="" class="mega-nav__dropdown-bg"></div><div data-panel-state="" data-nav-content="products" role="region" aria-label="products menu" class="mega-nav__dropdown-panel"><div class="mega-nav__dropdown-inner"><div data-menu-fade="" class="mega-nav__panel-col"><span data-menu-fade="" class="mega-nav__panel-label">Where to Buy</span><ul role="list" class="mega-nav__panel-list"><li data-menu-fade=""><a href="/our-solutions/where-to-buy" class="mega-nav__panel-link">Where to Buy</a></li><li data-menu-fade=""><a href="/our-solutions/shoppable-media" class="mega-nav__panel-link">Shoppable Media</a></li><li data-menu-fade=""><a href="/our-solutions/add-to-cart" class="mega-nav__panel-link">Add to Cart</a></li><li data-menu-fade=""><a href="/our-solutions/offline-locator" class="mega-nav__panel-link">Offline Locator</a></li></ul></div><div data-menu-fade="" class="mega-nav__panel-col"><span data-menu-fade="" class="mega-nav__panel-label">AI <!-- -->&amp;<!-- --> Agentic Commerce</span><ul role="list" class="mega-nav__panel-list"><li data-menu-fade=""><a href="/our-solutions/ai-shopping-assistant" class="mega-nav__panel-link">AI Shopping Assistant</a></li><li data-menu-fade=""><a href="/ai#radar-signals" class="mega-nav__panel-link">Radar <!-- -->&amp;<!-- --> Signals</a></li><li data-menu-fade=""><a href="/ai#retail-360" class="mega-nav__panel-link">Retail 360</a></li><li data-menu-fade=""><a href="/ai#agentready" class="mega-nav__panel-link">AgentReady</a></li><li data-menu-fade=""><a href="/ai#mcp-server" class="mega-nav__panel-link">MCP Server</a></li><li data-menu-fade=""></li></ul></div><div data-menu-fade="" class="mega-nav__panel-col"><span data-menu-fade="" class="mega-nav__panel-label">Digital Shelf</span><ul role="list" class="mega-nav__panel-list"><li data-menu-fade=""><a href="/our-solutions/digital-shelf" class="mega-nav__panel-link">Digital Shelf</a></li><li data-menu-fade=""><a href="/our-solutions/digital-shelf#pricing-inventory" class="mega-nav__panel-link">Price <!-- -->&amp;<!-- --> Inventory</a></li><li data-menu-fade=""><a href="/our-solutions/digital-shelf#ratings-reviews" class="mega-nav__panel-link">Ratings <!-- -->&amp;<!-- --> Reviews</a></li><li data-menu-fade=""><a href="/our-solutions/digital-shelf#content-compliance" class="mega-nav__panel-link">Content Compliance</a></li><li data-menu-fade=""><a href="/our-solutions/digital-shelf#search-placement" class="mega-nav__panel-link">Search Placement</a></li></ul></div></div></div><div data-panel-state="" data-nav-content="resources" role="region" aria-label="resources menu" class="mega-nav__dropdown-panel"><div class="mega-nav__dropdown-inner"><div data-menu-fade="" class="mega-nav__panel-col"><span data-menu-fade="" class="mega-nav__panel-label">Learn</span><ul role="list" class="mega-nav__panel-list"><li data-menu-fade=""><a href="/blog" class="mega-nav__panel-link">Blog</a></li><li data-menu-fade=""><a href="/case-studies" class="mega-nav__panel-link">Case Studies</a></li><li data-menu-fade=""><a href="/faq" class="mega-nav__panel-link">eCommerce FAQs</a></li></ul></div><div data-menu-fade="" class="mega-nav__panel-col"><span data-menu-fade="" class="mega-nav__panel-label">Insights <!-- -->&amp;<!-- --> Data</span><ul role="list" class="mega-nav__panel-list"><li data-menu-fade=""><a href="/resources" class="mega-nav__panel-link">Reports, eBooks &amp; Webinars</a></li><li data-menu-fade=""></li></ul></div><div data-menu-fade="" class="mega-nav__panel-col is--colored has--card"><div class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="w-dyn-item"><a href="/blog/market-guide" class="mega-nav__card w-inline-block"><div class="mega-nav__card-visual"><img loading="lazy" src="https://cdn.prod.website-files.com/64248e7fd5f30d79c9e57d64/6abe50cd82b5ccc1859e16f8_Blog%20Thumbnail-selection.avif" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/64248e7fd5f30d79c9e57d64/6abe50cd82b5ccc1859e16f8_Blog%20Thumbnail-selection-
791p-500.avif 500w, https://cdn.prod.website-files.com/64248e7fd5f30d79c9e57d64/6abe50cd82b5ccc1859e16f8_Blog%20Thumbnail-selection-p-800.avif 800w, https://cdn.prod.website-files.com/64248e7fd5f30d79c9e57d64/6abe50cd82b5ccc1859e16f8_Blog%20Thumbnail-selection-p-1080.avif 1080w, https://cdn.prod.website-files.com/64248e7fd5f30d79c9e57d64/6abe50cd82b5ccc1859e16f8_Blog%20Thumbnail-selection-p-1600.avif 1600w, https://cdn.prod.website-files.com/64248e7fd5f30d79c9e57d64/6abe50cd82b5ccc1859e16f8_Blog%20Thumbnail-selection-p-2000.avif 2000w, https://cdn.prod.website-files.com/64248e7fd5f30d79c9e57d64/6abe50cd82b5ccc1859e16f8_Blog%20Thumbnail-selection.avif 2400w" class="mega-nav__card-img"/></div><div class="mega-nav__card-content"><div class="mega-nav__card-text"><span class="mega-nav__panel-link-desc">Where To Buy</span><span class="mega-nav__panel-link-text">Where to Buy and Shoppable Media Software in 2026: A Buyer&#x27;s Overview of the Market</span></div><div class="mega-nav__card-cta"><span class="mega-nav__card-cta-label">Read article</span><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" class="mega-nav__card-cta-icon"><path d="M8.3335 13.3335L11.6668 10.0002L8.3335 6.66683" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></div></a></div></div></div></div></div></div><div data-panel-state="" data-nav-content="company" role="region" aria-label="company menu" class="mega-nav__dropdown-panel"><div class="mega-nav__dropdown-inner"><div data-menu-fade="" class="mega-nav__panel-col"><span data-menu-fade="" class="mega-nav__panel-label">Company</span><ul role="list" class="mega-nav__panel-list"><li data-menu-fade=""><a href="/about-us" class="mega-nav__panel-link">About Us</a></li><li data-menu-fade=""><a href="/why-channelsight" class="mega-nav__panel-link">Why ChannelSight</a></li><li data-menu-fade=""><a href="/careers" class="mega-nav__panel-link">Careers</a></li><li data-menu-fade=""><a href="/contact" aria-current="page" class="mega-nav__panel-link w--current">Contact</a></li><li data-menu-fade=""><a href="https://portal.channelsight.com/" class="mega-nav__panel-link">Log In</a></li></ul></div></div></div><div aria-label="industries menu" data-nav-content="industries" role="region" class="mega-nav__dropdown-panel"><div class="mega-nav__dropdown-inner"><div data-menu-fade="" class="mega-nav__panel-col"><span data-menu-fade="" class="mega-nav__panel-label">Industries</span><ul role="list" class="mega-nav__panel-list"><li data-menu-fade=""><a href="/industries/fmcg-cpg" class="mega-nav__panel-link">FMCG &amp; CPG</a></li><li data-menu-fade=""><a href="/industries/beauty-personal-care" class="mega-nav__panel-link">Beauty &amp; Personal Care</a></li><li data-menu-fade=""><a href="/industries/electronics-appliances" class="mega-nav__panel-link">Electronics &amp; Appliances</a></li><li data-menu-fade=""><a href="/industries/food-beverage" class="mega-nav__panel-link">Food &amp; Beverage</a></li><li data-menu-fade=""><a href="/industries/health-pharma" class="mega-nav__panel-link">Health &amp; Pharma</a></li><li data-menu-fade=""><a href="/industries/home-diy" class="mega-nav__panel-link">Home &amp; DIY</a></li><li data-menu-fade=""><a href="/industries/toys-family" class="mega-nav__panel-link">Toys &amp; Family</a></li><li data-menu-fade=""><a href="/industries/tools-industrial" class="mega-nav__panel-link">Tools &amp; Industrial</a></li></ul></div></div></div><div data-panel-state="" aria-label="partners menu" role="region" data-nav-content="partners" class="mega-nav__dropdown-panel"><div class="mega-nav__dropdown-inner"><div data-menu-fade="" class="mega-nav__panel-col"><span data-menu-fade="" class="mega-nav__panel-label">Partners</span><ul role="list" class="mega-nav__panel-list"><li data-menu-fade=""><a href="/partners" class="mega-nav__panel-link">Become a Partner</a></li><li data-menu-fade=""><a href="/retailer-network" class="mega-nav__panel-link">Retailer Network</a></li><li data-menu-fade=""><a href="/retailer-request" class="mega-nav__panel-link">Request a Retailer</a></li></ul></div></div></div></div></div><div data-menu-backdrop="" class="mega-nav__backdrop"></div></nav><div class="cs-section_banner1"><div class="cs-padding-global"><div class="cs-banner-container-large"><aside class="cs-banner1_component"><div class="cs-banner-badge"><div class="text-block-68">NEW REPORT</div></div><div class="cs-banner1_text">Direct-to-Consumer eCommerce in 2024 <a href="https://www.channelsight.com/reports/direct-to-consumer-ecommerce-in-2024" class="link">Read More</a></div></aside></div></div></div></div><div id="Retailer-Form" class="form-1 _2 _3 contact"><main id="main" class="cs---container-default-14 small contact w-container"><div class="w-layout-grid cs---grid-contact-v1 _2"><div data-w-id="98c92bb0-0b2f-7249-d99b-0d277af910e2" style="-webkit-transform:translate3d(0, 10%, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 10%, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 10%, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 10%, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0"><div class="div-block-39"><h1 class="cs---heading-h1-size-2">Contact ChannelSight</h1><div class="html-embed w-embed w-script">
791<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/embed/v2.js"></script>
vendor: 1 bytes, line 791
791
792<script>
793  hbspt.forms.create({
794    region: "na1",
795    portalId: "7066574",
796    formId: "705b2944-92c3-400f-893c-15173ad04a05"
797  });
798</script>
798</div></div></div></div></main></div><div class="tabs-3 white _1"><div class="cs-container-regular"><div class="cs-space-medium"><div data-w-id="bdada83c-207c-5045-e33f-ad5479ffcb6d" style="-webkit-transform:translate3d(0, 10%, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 10%, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 10%, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 10%, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0" data-current="Dublin" data-easing="ease" data-duration-in="300" data-duration-out="100" class="brix---tabs-wrapper-tabs-left w-tabs"><div class="brix---tabs-menu-vertical w-tab-menu"><a data-w-tab="Dublin" class="brix---tab-left-icon w-inline-block w-tab-link w--current"><div class="brix---mg-left-16px"><div class="text-block-22"><strong class="cs-tab">Dublin, Ireland</strong></div></div></a><a data-w-tab="London" class="brix---tab-left-icon w-inline-block w-tab-link"><div class="brix---mg-left-16px"><div class="cs-tab"><strong class="cs-tab">London, United Kingdom</strong><br/></div></div></a><a data-w-tab="Amsterdam" class="brix---tab-left-icon w-inline-block w-tab-link"><div class="brix---mg-left-16px"><div><strong class="cs-tab">Amsterdam, Netherlands</strong></div></div></a><a data-w-tab="New York" class="brix---tab-left-icon w-inline-block w-tab-link"><div class="brix---mg-left-16px"><div class="text-block-24"><strong class="cs-tab">New York, USA<br/></strong></div></div></a><a data-w-tab="Brasov" class="brix---tab-left-icon w-inline-block w-tab-link"><div class="text-block-58"><strong class="cs-tab-2">Brașov, Romania<br/></strong></div></a></div><div class="brix---tabs-content-card w-tab-content"><div data-w-tab="Dublin" class="w-tab-pane w--tab-active"><div><div class="brix---color-neutral-800"><h3 class="cs-tab-t1">Dublin HQ</h3></div><div class="brix---mg-bottom-48px"><div class="brix---color-neutral-801"><div class="uui-space-small"></div><div class="w-layout-grid brix---grid-1-column"><a href="https://goo.gl/maps/ge8Vn5Es9tZPTFqF6" target="_blank" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Location:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">Newcourt House, Strandville Avenue East, Clontarf, <br/>Dublin 3, Ireland, D03 F2K5</div></div></div></a><a href="mailto:[email protected]" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Email:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">[email protected]</div></div></div></a><a href="tel:(01)9022822" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Phone:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">(01) 902 2822</div></div></div></a></div></div></div></div></div><div data-w-tab="London" class="w-tab-pane"><div><div class="brix---color-neutral-800"><h3 class="cs-tab-t1">London</h3></div><div class="brix---mg-bottom-48px"><div class="brix---color-neutral-801"><div class="uui-space-small"></div><div class="w-layout-grid brix---grid-1-column"><a href="https://goo.gl/maps/ge8Vn5Es9tZPTFqF6" target="_blank" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Location:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">The Hoxton Mix, 3rd Floor,86 – 90 Paul Street London,<br/>EC2A 4NE, UK</div></div></div></a><a href="mailto:[email protected]" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Email:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">[email protected]</div></div></div></a><a href="tel:(01)9022822" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Phone:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">(01) 902 2822</div></div></div></a></div></div></div></div></div><div data-w-tab="Amsterdam" class="w-tab-pane"><div><div class="brix---color-neutral-800"><h3 class="cs-tab-t1">Amsterdam</h3></div><div class="brix---mg-bottom-48px"><div class="brix---color-neutral-801"><div class="uui-space-small"></div><div class="w-layout-grid brix---grid-1-column"><a href="https://goo.gl/maps/ge8Vn5Es9tZPTFqF6" target="_blank" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Location:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">World Trade Centre, Strawinskylaan 1351 1077 XX Amsterdam, <br/>The Netherlands</div></div></div></a><a href="mailto:[email protected]" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">
798Email:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">[email protected]</div></div></div></a><a href="tel:(01)9022822" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Phone:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">(01) 902 2822</div></div></div></a></div></div></div></div></div><div data-w-tab="New York" class="w-tab-pane"><div><div class="brix---color-neutral-800"><h3 class="cs-tab-t1">New York</h3></div><div class="brix---mg-bottom-48px"><div class="brix---color-neutral-801"><div class="uui-space-small"></div><div class="w-layout-grid brix---grid-1-column"><a href="https://goo.gl/maps/ge8Vn5Es9tZPTFqF6" target="_blank" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Location:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">56 Ludlow Street, Ground Floor, New York, NY 10002</div></div></div></a><a href="mailto:[email protected]" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Email:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">[email protected]</div></div></div></a><a href="tel:(01)9022822" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Phone:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">(01) 902 2822</div></div></div></a></div></div></div></div></div><div data-w-tab="Brasov" class="w-tab-pane"><div><div class="brix---color-neutral-800"><h3 class="cs-tab-t1"><strong class="cs-tab-2">Brașov</strong></h3></div><div class="brix---mg-bottom-48px"><div class="brix---color-neutral-801"><div class="uui-space-small"></div><div class="w-layout-grid brix---grid-1-column"><a href="https://goo.gl/maps/ge8Vn5Es9tZPTFqF6" target="_blank" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Location:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">Turnului Street no 5, building H1 , office 10, Brasov</div></div></div></a><a href="mailto:[email protected]" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Email:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">[email protected]</div></div></div></a><a href="tel:(01)9022822" class="brix---card-link-icon-wrapper w-inline-block"><div><div class="brix---mg-bottom-8px-6"><div class="brix---text-203">Phone:</div></div><div class="cs---color-accent-12"><div class="brix---text-200-bold-14">(01) 902 2822</div></div></div></a></div></div></div></div></div></div></div></div></div></div><footer class="cs-footer"><div class="u-embed-js w-embed w-script"><!-- Mega Nav - Directional Hover, with WIDTH morph + POSITION-under-toggle added.
799     Replaces your existing initMegaNavDirectionalHover() block.
800     Changes vs original marked with // ++ WIDTH and // ++ POS -->
801<script>
802function initMegaNavDirectionalHover() {
803  const DUR = {
804    bgMorph: 0.4, contentIn: 0.3, contentOut: 0.2, stagger: 0.25,
805    backdropIn: 0.3, backdropOut: 0.2, openScale: 0.35, closeScale: 0.25,
806  };
807  const HOVER_ENTER = 120;
808  const HOVER_LEAVE = 150;
809
810  const menuWrap = document.querySelector("[data-menu-wrap]");
811  const navList = document.querySelector("[data-nav-list]");
812  const dropWrapper = document.querySelector("[data-dropdown-wrapper]");
813  const dropContainer = document.querySelector("[data-dropdown-container]");
814  const dropBg = document.querySelector("[data-dropdown-bg]");
815  const backdrop = document.querySelector("[data-menu-backdrop]");
816  const toggles = [...document.querySelectorAll("[data-dropdown-toggle]")];
817  const panels = [...document.querySelectorAll("[data-nav-content]")];
818  const burger = document.querySelector("[data-burger-toggle]");
819  const backBtn = document.querySelector("[data-mobile-back]");
820  const logo = document.querySelector("[data-menu-logo]");
821  const [lineTop, lineMid, lineBot] = ["top", "mid", "bot"].map(
822    (id) => document.querySelector(`[data-burger-line='${id}']`)
823  );
824
825  const state = {
826    isOpen: false, activePanel: null, activePanelIndex: -1,
827    isMobile: window.innerWidth <= 991, mobileMenuOpen: false, mobilePanelActive: null,
828    hoverTimer: null, leaveTimer: null, tl: null, mobileTl: null, mobilePanelTl: null,
829  };
830
831  const getPanel = (name) => document.querySelector(`[data-nav-content="${name}"]`);
832  const getToggle = (name) => document.querySelector(`[data-dropdown-toggle="${name}"]`);
833  const getFade = (el) => el.querySelectorAll("[data-menu-fade]");
834  const getInner = (el) => el && el.querySelector(".mega-nav__dropdown-inner"); // ++ WIDTH
835  // ++ POS: horizontal offset to slide the dropdown's left edge under its toggle (clamped inside the wrapper)
836  const panelOffset = (name, w) => {
837    const toggle = getToggle(name);
838    if (!toggle) return 0;
839    const raw = toggle.getBoundingClientRect().left - dropWrapper.getBoundingClientRect().left;
840    const maxOffset = Math.max(0, dropWrapper.getBoundingClientRect().width - w);
841    return Math.max(0, Math.min(raw, maxOffset));
842  };
843  const getNavItems = () => navList.querySelectorAll("[data-nav-list-item]");
844  const getIndex = (name) => toggles.indexOf(getToggle(name));
845  const stagger = (n) => (n <= 1 ? 0 : { amount: DUR.stagger });
846
847  function clearTimers() {
848    clearTimeout(state.hoverTimer); clearTimeout(state.leaveTimer);
849    state.hoverTimer = state.leaveTimer = null;
850  }
851  function killTl(key) { if (state[key]) { state[key].kill(); state[key] = null; } }
852  function killDropdown() {
853    killTl("tl"); gsap.killTweensOf(dropContainer); gsap.killTweensOf(backdrop);
854    panels.forEach((p) => { gsap.killTweensOf(p); gsap.killTweensOf(getFade(p)); });
855  }
856  function killMobile() { killTl("mobileTl"); gsap.killTweensOf([navList, lineTop, lineMid, lineBot]); }
857  function killMobilePanel() {
858    killTl("mobilePanelTl"); gsap.killTweensOf(getNavItems()); gsap.killTweensOf([backBtn, logo]);
859    panels.forEach((p) => { gsap.killTweensOf(p); gsap.killTweensOf(getFade(p)); });
860  }
861  function resetToggles() { toggles.forEach((t) => t.setAttribute("aria-expanded", "false")); }
862
863  function resetDesktop() {
864    panels.forEach((p) => {
865      gsap.set(p, { visibility:"hidden", opacity:0, pointerEvents:"none", x:0, y:0, xPercent:0 });
866      gsap.set(getFade(p), { autoAlpha:0, x:0, y:0, xPercent:0 });
867      const inner = getInner(p); if (inner) gsap.set(inner, { clearProps: "width" }); // ++ WIDTH
868    });
869    gsap.set(dropContainer, { height:0, clearProps:"transform,width" });               // ++ WIDTH (was "transform")
870    gsap.set(backdrop, { autoAlpha:0 });
871    menuWrap.setAttribute("data-menu-open", "false");
872    resetToggles();
873  }
874
875  function setupMobile() {
876    panels.forEach((p) => {
877      gsap.set(p, { autoAlpha: 0, xPercent: 0, visibility: "visible", pointerEvents: "none" });
878      gsap.set(getFade(p), { xPercent: 20, autoAlpha: 0 });
879      const inner = getInner(p); if (inner) gsap.set(inner, { clearProps: "width" }); // ++ WIDTH
880    });
881    gsap.set(getNavItems(), { xPercent: 0, y: 0, autoAlpha: 1 });
882    gsap.set(navList, { autoAlpha: 0, x: 0 });
883    gsap.set(backBtn, { autoAlpha: 0 });
884    gsap.set(logo, { autoAlpha: 1 });
885    gsap.set(dropContainer, { clearProps: "height,width" });                          // ++ WIDTH
886    gsap.set(backdrop, { autoAlpha: 0 });
887  }
888
889  // ++ WIDTH: now returns BOTH height and natural content width.
890  function measurePanel(name) {
891    const el = getPanel(name);
892    if (!el) return { h: 0, w: 0 };
893    const inner = getInner(el) || el;
894    const s = el.style, is = inner.style;
895    const pv = s.visibility, po = s.opacity, pp = s.pointerEvents, pw = is.width;
896    s.visibility = "visible"; s.opacity = "0"; s.pointerEvents = "none";
897    is.width = "max-content";                          // let the inner size to its content
898    const h = el.getBoundingClientRect().height;
899    const w = inner.getBoundingClientRect().width;     // natural content width
900    is.width = pw;
901    s.visibility = pv; s.opacity = po; s.pointerEvents = pp;
902    return { h, w };
903  }
904
905  function openDropdown(panelName) {
906    if (state.isOpen && state.activePanel === panelName) return;
907    if (state.isOpen) return switchPanel(state.activePanel, panelName);
908
909    const size = measurePanel(panelName);              // ++ WIDTH
910    if (!size.h) return;
911
912    killDropdown();
913    resetDesktop();
914
915    const el = getPanel(panelName);
916    const fade = getFade(el);
917    const toggle = getToggle(panelName);
918    const inner = getInner(el);                        // ++ WIDTH
919
920    state.isOpen = true;
921    state.activePanel = panelName;
922    state.activePanelIndex = getIndex(panelName);
923    menuWrap.setAttribute("data-menu-open", "true");
924    if (toggle) toggle.setAttribute("aria-expanded", "true");
925
926    if (inner) gsap.set(inner, { width: size.w });     // ++ WIDTH: pin inner so columns don't squish
927    const offset = panelOffset(panelName, size.w);     // ++ POS
928    gsap.set(dropContainer, { height: 0, width: size.w, x: offset }); // ++ WIDTH + POS: open at correct width, under the toggle
929
930    const tl = gsap.timeline();
931    state.tl = tl;
932    tl.to(backdrop, { autoAlpha: 1, duration: DUR.backdropIn, ease: "power2.out" }, 0);
933    tl.to(dropContainer, { height: size.h, duration: DUR.openScale, ease: "power3.out" }, 0);
934    tl.set(el, { visibility: "visible", opacity: 1, pointerEvents: "auto" }, 0.05);
935    if (fade.length) {
936      tl.fromTo(fade, { autoAlpha: 0, y: 8 },
937        { autoAlpha: 1, y: 0, duration: DUR.contentIn, stagger: stagger(fade.length), ease: "power3.out" }, 0.1);
938    }
939  }
940
941  function closeDropdown() {
942    if (!state.isOpen) return;
943    const el = getPanel(state.activePanel);
944    const fade = el ? getFade(el) : [];
945    killDropdown();
946    const tl = gsap.timeline({
947      onComplete() {
948        state.isOpen = false; state.activePanel = null; state.activePanelIndex = -1;
949        state.tl = null; resetDesktop();
950      },
951    });
952    state.tl = tl;
953    if (fade.length) tl.to(fade, { autoAlpha: 0, y: -4, duration: DUR.contentOut * 0.7, ease: "power2.in" }, 0);
954    tl.to(dropContainer, { height: 0, duration: DUR.closeScale, ease: "power2.in" }, 0.05);
955    tl.to(backdrop, { autoAlpha: 0, duration: DUR.backdropOut, ease: "power2.out" }, 0);
956    if (el) tl.set(el, { visibility: "hidden", opacity: 0, pointerEvents: "none" });
957  }
958
959  function switchPanel(fromName, toName) {
960    const dir = getIndex(toName) > getIndex(fromName) ? 1 : -1;
961    const fromEl = getPanel(fromName), toEl = getPanel(toName);
962    if (!fromEl || !toEl) return;
963
964    const fromFade = getFade(fromEl), toFade = getFade(toEl);
965    const toSize = measurePanel(toName);               // ++ WIDTH
966    if (!toSize.h) return;
967
968    killDropdown();
969
970    panels.forEach((p) => {
971      gsap.set(p, { visibility: "hidden", opacity: 0, pointerEvents: "none", xPercent: 0 });
972      gsap.set(getFade(p), { autoAlpha: 0, x: 0, y: 0 });
973    });
974    gsap.set(fromEl, { visibility: "visible", opacity: 1, pointerEvents: "auto", x: 0 });
975    if (fromFade.length) gsap.set(fromFade, { autoAlpha: 1, x: 0, y: 0 });
976    gsap.set(backdrop, { autoAlpha: 1 });
977
978    const toInner = getInner(toEl);                    // ++ WIDTH
979    if (toInner) gsap.set(toInner, { width: toSize.w });
980    const toOffset = panelOffset(toName, toSize.w);    // ++ POS
981
982    const toToggle = getToggle(toName);
983    state.activePanel = toName;
984    state.activePanelIndex = getIndex(toName);
985    resetToggles();
986    if (toToggle) toToggle.setAttribute("aria-expanded", "true");
987
988    const xOut = dir * -30, xIn = dir * 30;
989    const tl = gsap.timeline();
990    state.tl = tl;
991
992    if (fromFade.length) tl.to(fromFade, { autoAlpha: 0, x: xOut, duration: DUR.contentOut, ease: "power2.in" }, 0);
993    tl.set(fromEl, { visibility: "hidden", opacity: 0, pointerEvents: "none", xPercent: 0 }, DUR.contentOut);
994    if (fromFade.length) tl.set(fromFade, { x: 0 }, DUR.contentOut);
995    tl.to(dropContainer, { height: toSize.h, duration: DUR.bgMorph, ease: "power3.out" }, 0.05);
996    tl.to(dropContainer, { width: toSize.w, duration: DUR.bgMorph, ease: "power3.out" }, 0.05); // ++ WIDTH: morph width with the same easing
997    tl.to(dropContainer, { x: toOffset, duration: DUR.bgMorph, ease: "power3.out" }, 0.05);     // ++ POS: slide under the new toggle
998    tl.set(toEl, { visibility: "visible", opacity: 1, pointerEvents: "auto", xPercent: 0 }, DUR.contentOut * 0.5);
999    if (toFade.length) {
1000      tl.fromTo(toFade, { autoAlpha: 0, x: xIn },
1001        { autoAlpha: 1, x: 0, duration: DUR.contentIn, stagger: stagger(toFade.length), ease: "power3.out" }, DUR.contentOut * 0.6);
1002    }
1003  }
1004
1005  function handleToggleEnter(e) {
1006    if (state.isMobile) return;
1007    const name = e.currentTarget.getAttribute("data-dropdown-toggle");
1008    if (!name) return;
1009    clearTimeout(state.leaveTimer); state.leaveTimer = null;
1010    clearTimeout(state.hoverTimer);
1011    state.hoverTimer = setTimeout(() => openDropdown(name), state.isOpen ? 0 : HOVER_ENTER);
1012  }
1013  function handleToggleLeave() {
1014    if (state.isMobile) return;
1015    clearTimeout(state.hoverTimer); state.hoverTimer = null;
1016    state.leaveTimer = setTimeout(closeDropdown, HOVER_LEAVE);
1017  }
1018  function handleWrapperEnter() { if (state.isMobile) return; clearTimeout(state.leaveTimer); state.leaveTimer = null; }
1019  function handleWrapperLeave() { if (state.isMobile) return; state.leaveTimer = setTimeout(closeDropdown, HOVER_LEAVE); }
1020
1021  function handleEscape(e) {
1022    if (e.key !== "Escape") return;
1023    if (state.isMobile) { state.mobilePanelActive ? closeMobilePanel() : state.mobileMenuOpen && closeMobileMenu(); return; }
1024    if (state.isOpen) { const t = getToggle(state.activePanel); closeDropdown(); if (t) t.focus(); }
1025  }
1026  function handleDocClick(e) {
1027    if (state.isMobile || !state.isOpen) return;
1028    if (!e.target.closest("[data-menu-wrap]")) closeDropdown();
1029  }
1030  function focusFirstLink(panelName) {
1031    setTimeout(() => {
1032      const el = getPanel(panelName); if (!el) return;
1033      const link = el.querySelector("a"); if (!link) return;
1034      gsap.set(link, { visibility: "visible" }); link.focus();
1035    }, 80);
1036  }
1037  function handleKeydownOnToggle(e) {
1038    if (state.isMobile) return;
1039    const name = e.currentTarget.getAttribute("data-dropdown-toggle");
1040    if (e.key === "Enter" || e.key === " ") {
1041      e.preventDefault();
1042      if (state.isOpen && state.activePanel === name) closeDropdown();
1043      else { openDropdown(name); focusFirstLink(name); } return;
1044    }
1045    if (e.key === "ArrowDown") { e.preventDefault(); if (!state.isOpen || state.activePanel !== name) openDropdown(name); focusFirstLink(name); }
1046    if (e.key === "Tab" && !e.shiftKey && state.isOpen && state.activePanel === name) {
1047      e.preventDefault(); const link = getPanel(name)?.querySelector("a"); if (link) link.focus();
1048    }
1049  }
1050  function handleKeydownInPanel(e) {
1051    if (state.isMobile || !state.isOpen) return;
1052    const el = getPanel(state.activePanel); if (!el) return;
1053    const links = [...el.querySelectorAll("a")];
1054    const idx = links.indexOf(document.activeElement);
1055    if (e.key === "ArrowDown") { e.preventDefault(); links[(idx + 1) % links.length].focus(); }
1056    if (e.key === "ArrowUp") { e.preventDefault(); if (idx <= 0) { const t = getToggle(state.activePanel); if (t) t.focus(); } else links[idx - 1].focus(); }
1057    if (e.key === "Tab" && !e.shiftKey && idx === links.length - 1) {
1058      e.preventDefault(); const curIdx = toggles.indexOf(getToggle(state.activePanel));
1059      const next = curIdx < toggles.length - 1 ? toggles[curIdx + 1] : null; closeDropdown(); if (next) next.focus();
1060    }
1061    if (e.key === "Tab" && e.shiftKey && idx === 0) { e.preventDefault(); const t = getToggle(state.activePanel); if (t) t.focus(); }
1062  }
1063
1064  function animateBurger(toX) {
1065    const tl = gsap.timeline({ defaults: { ease: "power2.inOut" } });
1066    if (toX) {
1067      tl.to(lineTop, { y: "0.3125em", duration: 0.15 }, 0); tl.to(lineBot, { y: "-0.3125em", duration: 0.15 }, 0);
1068      tl.to(lineMid, { autoAlpha: 0, duration: 0.1 }, 0.1);
1069      tl.to(lineTop, { rotation: 45, duration: 0.2 }, 0.15); tl.to(lineBot, { rotation: -45, duration: 0.2 }, 0.15);
1070    } else {
1071      tl.to(lineTop, { rotation: 0, duration: 0.2 }, 0); tl.to(lineBot, { rotation: 0, duration: 0.2 }, 0);
1072      tl.to(lineTop, { y: 0, duration: 0.15 }, 0.15); tl.to(lineBot, { y: 0, duration: 0.15 }, 0.15);
1073      tl.to(lineMid, { autoAlpha: 1, duration: 0.1 }, 0.15);
1074    }
1075    return tl;
1076  }
1077  function openMobileMenu() {
1078    killMobile(); state.mobileMenuOpen = true; menuWrap.setAttribute("data-menu-open", "true");
1079    burger.setAttribute("aria-expanded", "true"); document.body.style.overflow = "hidden";
1080    const items = getNavItems(); const tl = gsap.timeline(); state.mobileTl = tl;
1081    tl.add(animateBurger(true), 0); tl.to(navList, { autoAlpha: 1, duration: 0.3, ease: "power2.out" }, 0);
1082    if (items.length) tl.fromTo(items, { autoAlpha: 0, y: 12 }, { autoAlpha: 1, y: 0, duration: 0.3, stagger: 0.04, ease: "power3.out" }, 0.15);
1083  }
1084  function closeMobileMenu() {
1085    const hadPanel = state.mobilePanelActive; const panelEl = hadPanel ? getPanel(hadPanel) : null;
1086    killMobile(); killMobilePanel();
1087    menuWrap.setAttribute("data-menu-open", "false"); state.mobileMenuOpen = false; state.mobilePanelActive = null;
1088    burger.setAttribute("aria-expanded", "false");
1089    const tl = gsap.timeline({ onComplete() { document.body.style.overflow = ""; state.mobileTl = null; setupMobile(); } });
1090    state.mobileTl = tl; tl.add(animateBurger(false), 0);
1091    if (hadPanel && panelEl) { tl.to(panelEl, { autoAlpha: 0, duration: 0.3, ease: "power2.inOut" }, 0.05); tl.to(backBtn, { autoAlpha: 0, duration: 0.2, ease: "power2.in" }, 0.05); }
1092    tl.to(navList, { autoAlpha: 0, duration: 0.3, ease: "power2.inOut" }, 0.05);
1093  }
1094  function openMobilePanel(panelName) {
1095    const el = getPanel(panelName); if (!el) return; killMobilePanel(); state.mobilePanelActive = panelName;
1096    const navItems = getNavItems(); const panelFade = getFade(el); const tl = gsap.timeline(); state.mobilePanelTl = tl;
1097    if (navItems.length) tl.to(navItems, { xPercent: -10, autoAlpha: 0, duration: 0.35, stagger: 0.03, ease: "power2.in" }, 0);
1098    tl.to(logo, { autoAlpha: 0, duration: 0.2, ease: "power2.in" }, 0); tl.to(backBtn, { autoAlpha: 1, duration: 0.25, ease: "power2.inOut" }, 0.15);
1099    tl.set(el, { autoAlpha: 1, xPercent: 0, pointerEvents: "auto" }, 0.2);
1100    if (panelFade.length) tl.fromTo(panelFade, { xPercent: 8, autoAlpha: 0 }, { xPercent: 0, autoAlpha: 1, duration: 0.3, stagger: stagger(panelFade.length), ease: "power3.out" }, 0.25);
1101  }
1102  function closeMobilePanel() {
1103    if (!state.mobilePanelActive) return; const el = getPanel(state.mobilePanelActive); if (!el) return; killMobilePanel();
1104    const navItems = getNavItems(); const panelFade = getFade(el);
1105    const tl = gsap.timeline({ onComplete() { state.mobilePanelActive = null; state.mobilePanelTl = null; } }); state.mobilePanelTl = tl;
1106    if (panelFade.length) tl.to(el, { xPercent: 20, autoAlpha: 0, duration: 0.3, stagger: 0.02, ease: "power2.in" }, 0);
1107    tl.set(el, { autoAlpha: 0, pointerEvents: "none" }, 0.25);
1108    tl.to(backBtn, { autoAlpha: 0, duration: 0.2, ease: "power2.in" }, 0); tl.to(logo, { autoAlpha: 1, duration: 0.25, ease: "power2.out" }, 0.15);
1109    if (navItems.length) tl.fromTo(navItems, { xPercent: -20, autoAlpha: 0 }, { xPercent: 0, autoAlpha: 1, duration: 0.35, stagger: 0.03, ease: "power3.out" }, 0.25);
1110  }
1111  function handleToggleClick(e) {
1112    if (!state.isMobile || !state.mobileMenuOpen) return;
1113    const name = e.currentTarget.getAttribute("data-dropdown-toggle");
1114    if (name) { e.preventDefault(); openMobilePanel(name); }
1115  }
1116
1117  let resizeTimer = null, lastWidth = window.innerWidth;
1118  function handleResize() {
1119    const w = window.innerWidth; if (w === lastWidth) return; lastWidth = w;
1120    clearTimeout(resizeTimer);
1121    resizeTimer = setTimeout(() => {
1122      const was = state.isMobile; state.isMobile = window.innerWidth <= 991;
1123      if (was && !state.isMobile) {
1124        killMobile(); killMobilePanel();
1125        gsap.set(navList, { clearProps: "all" }); gsap.set(getNavItems(), { clearProps: "all" });
1126        gsap.set(backBtn, { autoAlpha: 0 }); gsap.set(logo, { clearProps: "all" });
1127        gsap.set([lineTop, lineMid, lineBot], { rotation: 0, y: 0, autoAlpha: 1 });
1128        panels.forEach((p) => { gsap.set(p, { clearProps: "all" }); gsap.set(getFade(p), { clearProps: "all" }); });
1129        burger.setAttribute("aria-expanded", "false"); state.mobileMenuOpen = false; state.mobilePanelActive = null;
1130        document.body.style.overflow = ""; resetDesktop();
1131      }
1132      if (!was && state.isMobile) {
1133        killDropdown(); state.isOpen = false; state.activePanel = null; state.activePanelIndex = -1;
1134        clearTimers(); menuWrap.setAttribute("data-menu-open", "false"); resetToggles(); setupMobile();
1135      }
1136    }, 150);
1137  }
1138
1139  toggles.forEach((btn) => {
1140    btn.addEventListener("mouseenter", handleToggleEnter);
1141    btn.addEventListener("mouseleave", handleToggleLeave);
1142    btn.addEventListener("keydown", handleKeydownOnToggle);
1143    btn.addEventListener("click", handleToggleClick);
1144  });
1145  dropWrapper.addEventListener("mouseenter", handleWrapperEnter);
1146  dropWrapper.addEventListener("mouseleave", handleWrapperLeave);
1147  panels.forEach((p) => p.addEventListener("keydown", handleKeydownInPanel));
1148  backdrop.addEventListener("click", closeDropdown);
1149  document.addEventListener("keydown", handleEscape);
1150  document.addEventListener("click", handleDocClick);
1151  burger.addEventListener("click", () => state.mobileMenuOpen ? closeMobileMenu() : openMobileMenu());
1152  backBtn.addEventListener("click", closeMobilePanel);
1153  window.addEventListener("resize", handleResize);
1154
1155  state.isMobile ? setupMobile() : resetDesktop();
1156}
1157
1158document.addEventListener('DOMContentLoaded', function () { initMegaNavDirectionalHover(); });
1159</script>
1159
1160</div><div class="hide"><div class="u-p-0"></div><div class="u-p-1"></div><div class="u-p-2"></div><div class="u-p-3"></div><div class="u-p-4"></div><div class="u-p-5"></div><div class="u-p-6"></div></div><div class="cs-footer2_wrap"><div data-wf--section-spacer--variant="small" class="section-spacer w-variant-b31f49ef-b5f7-e9d6-d1cd-331557c4e573"></div><div class="u-container"><div class="cs-footer2_top"><div class="cs-footer2_brand"><img src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/6a8dd46edeba7615c0164031_Logo-CS-AI-new-white.avif" loading="lazy" sizes="100vw" srcset="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/6a8dd46edeba7615c0164031_Logo-CS-AI-new-white-p-500.avif 500w, https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/6a8dd46edeba7615c0164031_Logo-CS-AI-new-white-p-800.avif 800w, https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/6a8dd46edeba7615c0164031_Logo-CS-AI-new-white-p-1080.avif 1080w, https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/6a8dd46edeba7615c0164031_Logo-CS-AI-new-white-p-1600.avif 1600w, https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/6a8dd46edeba7615c0164031_Logo-CS-AI-new-white.avif 2301w" alt="ChannelSight" class="cs-footer2_logo"/><p class="cs-footer2_blurb">Where to Buy, Shoppable Media and Digital Shelf analytics in one platform. 5,450+ retailers connected across 100+ markets.</p><p class="cs-footer2_address">Newcourt House, Strandville Ave E, Clontarf, Dublin 3, D03 F2K5, Ireland</p><p class="cs-footer2_address">+353 1 902 2822</p><div class="cs-footer2_socials"><a href="https://www.linkedin.com/company/channelsight" class="cs-footer2_social-link w-inline-block"><div class="social-embed w-embed"><svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M4.98 3.5C4.98 4.88 3.87 6 2.5 6S0 4.88 0 3.5 1.12 1 2.5 1s2.48 1.12 2.48 2.5zM.24 8.31h4.52V23H.24V8.31zM8.34 8.31h4.33v2h.06c.6-1.14 2.08-2.34 4.28-2.34 4.58 0 5.42 3.01 5.42 6.93V23h-4.52v-7.19c0-1.72-.03-3.93-2.39-3.93-2.4 0-2.76 1.87-2.76 3.8V23H8.34V8.31z"/></svg></div></a><a href="https://www.youtube.com/@channelsight" class="cs-footer2_social-link w-inline-block"><div class="social-embed w-embed"><svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M23.5 6.19a3.02 3.02 0 0 0-2.12-2.14C19.5 3.55 12 3.55 12 3.55s-7.5 0-9.38.5A3.02 3.02 0 0 0 .5 6.19C0 8.07 0 12 0 12s0 3.93.5 5.81a3.02 3.02 0 0 0 2.12 2.14c1.88.5 9.38.5 9.38.5s7.5 0 9.38-.5a3.02 3.02 0 0 0 2.12-2.14C24 15.93 24 12 24 12s0-3.93-.5-5.81zM9.6 15.6V8.4L15.83 12 9.6 15.6z"/></svg></div></a></div></div><div class="cs-footer2_col"><p class="cs-footer2_col-title">Solutions</p><a href="/our-solutions/where-to-buy" class="cs-footer2_link">Where To Buy</a><a href="/our-solutions/shoppable-media" class="cs-footer2_link">Shoppable Media</a><a href="/our-solutions/digital-shelf" class="cs-footer2_link">Digital Shelf</a><a href="/our-solutions/add-to-cart" class="cs-footer2_link">Add to Cart</a><a href="/our-solutions/offline-locator" class="cs-footer2_link">Offline Locator</a><a href="/pim" class="cs-footer2_link">PIM</a><a href="/ai" class="cs-footer2_link">AI Solutions</a></div><div class="cs-footer2_col"><p class="cs-footer2_col-title">Company</p><a href="/about-us" class="cs-footer2_link">About Us</a><a href="/why-channelsight" class="cs-footer2_link">Why ChannelSight</a><a href="/careers" class="cs-footer2_link">Careers</a><a href="/partners" class="cs-footer2_link">Partners</a><a href="/retailer-network" class="cs-footer2_link">Retailer Network</a><a href="/contact" aria-current="page" class="cs-footer2_link w--current">Contact</a><a href="/book-a-demo" class="cs-footer2_link">Book a Demo</a></div><div class="cs-footer2_col"><p class="cs-footer2_col-title">Resources</p><a href="/blog" class="cs-footer2_link">Blog</a><a href="/resources" class="cs-footer2_link">Resource Library</a><a href="/case-studies" class="cs-footer2_link">Case Studies</a><a href="/faq" class="cs-footer2_link">E-Commerce FAQs</a><a href="https://portal.channelsight.com/" class="cs-footer2_link">Customer Portal</a></div><div class="cs-footer2_col"><p class="cs-footer2_col-title">How It Works</p><a href="/how-it-works/where-to-buy" class="cs-footer2_link">How Where to Buy Works</a><a href="/how-it-works/shoppable-media" class="cs-footer2_link">How Shoppable Media Works</a><a href="/how-it-works/digital-shelf" class="cs-footer2_link">How Digital Shelf Works</a><a href="/channelsight-market-tiering" class="cs-footer2_link">Market Tiering</a></div><div class="cs-footer2_col"><p class="cs-footer2_col-title">Industries</p><a href="/industries/fmcg-cpg" class="cs-footer2_link">FMCG &amp; CPG</a><a href="/industries/beauty-personal-care" class="cs-footer2_link">Beauty &amp; Personal Care</a><a href="/industries/electronics-appliances" class="cs-footer2_link">Electronics &amp; Appliances</a><a href="/industries/food-beverage" class="cs-footer2_link">Food &amp; Beverage</a><a href="/industries/health-pharma" class="cs-footer2_link">Health &amp; Pharma</a><a href="/industries/home-diy" class="cs-footer2_link">Home &amp; DIY</a><a href="/industries/toys-family" class="cs-footer2_link">Toys &amp; Family</a><a href="/industries/tools-industrial" class="cs-footer2_link">Tools &amp; Industrial</a></div></div><div class="cs-footer2_hairline"></div><div class="cs-footer2_band2"><div class="cs-footer2_col"><p class="cs-footer2_col-title">Comparisons</p><a href="/compare-solutions" class="cs-footer2_link">Compare Solutions</a><a href="/channelsight-vs-mikmak" class="cs-footer2_link">ChannelSight vs MikMak</a><a href="/channelsight-vs-pricespider" class="cs-footer2_link">ChannelSight vs PriceSpider -Wayvia</a></div><div class="cs-footer2_col"><p class="cs-footer2_col-title">Customer Journey</p><a href="/customer-journey" class="cs-footer2_link">
1160Customer Journey Guide</a><a href="/customer-journey/how-create-customer-journey-map" class="cs-footer2_link">Creating a Journey Map</a><a href="/customer-journey/stages-of-a-customer-journey-map" class="cs-footer2_link">Stages of a Journey Map</a><a href="/customer-journey/benefits-of-a-customer-journey-map" class="cs-footer2_link">Benefits of a Journey Map</a><a href="/customer-journey/customer-journey-analytics" class="cs-footer2_link">Customer Journey Analytics</a></div><div class="cs-footer2_col"><p class="cs-footer2_col-title">Omnichannel</p><a href="/omnichannel/omnichannel-strategy" class="cs-footer2_link">Omnichannel Strategy</a><a href="/omnichannel/omnichannel-experience" class="cs-footer2_link">Omnichannel Experience</a><a href="/omnichannel/omnichannel-examples" class="cs-footer2_link">Omnichannel Examples</a><a href="/omnichannel/omnichannel-campaign-measurement" class="cs-footer2_link">Campaign Measurement</a><a href="/omnichannel/multichannel-marketing" class="cs-footer2_link">Multichannel vs Omnichannel</a></div><div class="cs-footer2_col"><p class="cs-footer2_col-title">Retail Media</p><a href="/retail-media/retail-media-platform" class="cs-footer2_link">Retail Media Platform</a><a href="/retail-media/retail-advertising" class="cs-footer2_link">Retail Advertising</a><a href="/retail-media/retail-digital-marketing" class="cs-footer2_link">Retail Digital Marketing</a><a href="/retail-media/retail-branding" class="cs-footer2_link">Retail Branding</a><a href="/retail-media/retail-marketing-platform" class="cs-footer2_link">Retail Marketing Platform</a></div><div class="cs-footer2_col"><p class="cs-footer2_col-title">Ecommerce</p><a href="/ecommerce/ecommerce-analytics" class="cs-footer2_link">Ecommerce Analytics</a><a href="/ecommerce/ecommerce-software" class="cs-footer2_link">Analytics Software</a><a href="/ecommerce/ecommerce-dashboards" class="cs-footer2_link">Analytics Dashboards</a><a href="/ecommerce/ecommerce-growth-strategy" class="cs-footer2_link">Ecommerce Growth Strategy</a><a href="/ecommerce/b2b-ecommerce-solutions" class="cs-footer2_link">B2B Ecommerce Solutions</a><a href="/digital-shelf/digital-shelf-analytics" class="cs-footer2_link">Digital Shelf Analytics</a></div></div><div class="cs-footer2_hairline"></div><div class="cs-footer2_bottom"><p class="cs-footer2_copyright">© 2026 ChannelSight. All rights reserved.</p><div class="cs-footer2_legal"><a href="/terms" class="cs-footer2_legal-link">Terms</a><a href="/privacy-policy" class="cs-footer2_legal-link">Privacy Policy</a><a href="/cookie-policy" class="cs-footer2_legal-link">Cookie Policy</a><a href="/data-processing-agreement" class="cs-footer2_legal-link">Data Processing Agreement</a></div></div></div><div data-wf--section-spacer--variant="small" class="section-spacer w-variant-b31f49ef-b5f7-e9d6-d1cd-331557c4e573"></div></div></footer>
1160<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=64248e7ed5f30d6effe57d5d" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
1160<script src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/js/webflow.schunk.3eae1ede90d44b90.js" type="text/javascript" integrity="sha384-govLbXEOMSmK1QpUjRhIilFBWDodj7NdEQoTpVVioX4V24lVEoHQFM37e3gM82Nc" crossorigin="anonymous"></script>
1160<script src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/js/webflow.schunk.8f9d4cf43f276f84.js" type="text/javascript" integrity="sha384-RqGrHDdontl16Gdrhb29ITd29U3AguWHujIZX7w4FfHnc178DebZZ3RP3eXn1pO4" crossorigin="anonymous"></script>
1160<script src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/js/webflow.c0dbac2d.9661a9008d7132d0.js" type="text/javascript" integrity="sha384-UdDPPWLgqw5pyA+5//XMB5ftgaFt6KGeRcxn58YtscOdrSt5VjbTwJkNydqjknNd" crossorigin="anonymous"></script>
1160<script src="https://cdn.prod.website-files.com/gsap/3.15.0/gsap.min.js" type="text/javascript"></script>
1160<script src="https://cdn.prod.website-files.com/gsap/3.15.0/ScrollTrigger.min.js" type="text/javascript"></script>
1160<script src="https://cdn.prod.website-files.com/gsap/3.15.0/InertiaPlugin.min.js" type="text/javascript"></script>
1160<script src="https://cdn.prod.website-files.com/gsap/3.15.0/Draggable.min.js" type="text/javascript"></script>
1160<script type="text/javascript">gsap.registerPlugin(ScrollTrigger,InertiaPlugin,Draggable);</script>
1160<!-- LinkedIn Tag Manager -->
1161<script type="text/javascript">
1162_linkedin_partner_id = "41470";
1163window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
1164window._linkedin_data_partner_ids.push(_linkedin_partner_id);
1165</script>
1165<script type="text/javascript">
1166(function(l) {
1167if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])};
1168window.lintrk.q=[]}
1169var s = document.getElementsByTagName("script")[0];
1170var b = document.createElement("script");
1171b.type = "text/javascript";b.async = true;
1172b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
1173s.parentNode.insertBefore(b, s);})(window.lintrk);
1174</script>
1174
1175<noscript>
1176<img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=41470&fmt=gif" />
1177</noscript>
1178<!-- End LinkedIn Tag Manager -->
1179
1180<script>
1181document.addEventListener("DOMContentLoaded", function () {
1182  if (window.location.hash) {
1183    let target = document.querySelector(window.location.hash);
1184    if (target) {
1185      setTimeout(() => {
1186        target.scrollIntoView({ behavior: "smooth", block: "start" });
1187      }, 100); // Small delay to allow page to load first
1188    }
1189  }
1190});
1191</script>
1191
1192
1193<script>
1194  document.addEventListener("DOMContentLoaded", function() {
1195    document.querySelectorAll(".text-rich-text sub").forEach(subElement => {
1196      // Create a span with a custom class and insert the text inside it
1197      const spanElement = document.createElement("span");
1198      spanElement.classList.add("text-span-grad-purp");
1199      spanElement.textContent = subElement.textContent;
1200
1201      // Replace the <sub> element with the <span>
1202      subElement.replaceWith(spanElement);
1203    });
1204  });
1205</script>
vendor: 1 bytes, line 1205
1205
1206<script>
1207  document.addEventListener("DOMContentLoaded", function() {
1208    document.querySelectorAll(".text-rich-text sup").forEach(supElement => {
1209      const spanElement = document.createElement("span");
1210      spanElement.classList.add("text-span-grad-light-purp");
1211      spanElement.textContent = supElement.textContent;
1212
1213      supElement.replaceWith(spanElement);
1214    });
1215  });
1216</script>
1216
1217
1218<!-- jQuery: Webflow already loads jQuery 3.5.1 before this footer block; the duplicate 3.6.0 load was removed (Legency, 1 Sep 2026) -->
1219
1220<script>
1221  $(document).ready(function () {
1222    gsap.registerPlugin(ScrollTrigger);
1223
1224    $('.stagger-children').each(function () {
1225      const $parent = $(this);
1226      const children = $parent.children().toArray();
1227
1228      gsap.from(children, {
1229        opacity: 0,
1230        y: '1rem',
1231        scale: 0.8,
1232        duration: 0.6,
1233        stagger: 0.08,
1234        ease: 'power2.out',
1235        scrollTrigger: {
1236          trigger: this,
1237          start: 'top 80%',
1238          toggleActions: 'play none none none'
1239        }
1240      });
1241    });
1242  });
1243</script>
1243
1244
1245<script>
1246  document.addEventListener("DOMContentLoaded", function () {
1247    gsap.registerPlugin(ScrollTrigger);
1248
1249    // Target all elements with the class 'scale-up'
1250    gsap.utils.toArray(".scale-up").forEach(el => {
1251      gsap.fromTo(el,
1252        { scale: 0.8 },
1253        {
1254          scale: 1,
1255          ease: "power2.out",
1256          scrollTrigger: {
1257            trigger: el,
1258            start: "top 100%",
1259            end: "top 50%",
1260            scrub: 1
1261          }
1262        });
1263    });
1264  });
1265</script>
1265
1266
1267
1268<!-- Lenis: loaded once in the head (1.3.4, SRI-pinned); the duplicate unpkg load was removed (Legency, 1 Sep 2026) -->
1269
1270<script>
1271// Lenis
1272const lenis = new Lenis({
1273  autoRaf: true,
1274});
1275
1276  // FinSweet List Load Integration
1277  document.addEventListener('DOMContentLoaded', () => {
1278    // Select all buttons with the 'blog-load-more' attribute
1279    const loadMoreButtons = document.querySelectorAll('[blog-load-more]');
1280
1281    loadMoreButtons.forEach(button => {
1282      button.addEventListener('click', () => {
1283        // --- THIS IS THE CRITICAL LINE BASED ON YOUR SCREENSHOTS ---
1284        // Find the FinSweet list wrapper using its specific attribute: fs-list-element="list"
1285        // This should target your 'blog22_list' element.
1286        const finSweetList = document.querySelector('[fs-list-element="list"]');
1287
1288        if (finSweetList) {
1289          console.log("FinSweet load more button clicked. Observing list:", finSweetList);
1290
1291          const observer = new MutationObserver((mutationsList, observer) => {
1292            for (const mutation of mutationsList) {
1293              // We are looking for childList changes (new elements added)
1294              // and specifically checking if any nodes were added.
1295              if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
1296                console.log("New content detected by MutationObserver.");
1297                // Immediately disconnect the observer to avoid multiple triggers for one load
1298                observer.disconnect();
1299
1300                // Wait a short moment to allow the browser to render the new elements
1301                // before re-initializing Lenis. This delay is crucial for layout calculation.
1302                setTimeout(() => {
1303                  lenis.resize(); // recalculate Lenis after the list grows (initLenis was never defined)
1304                }, 150); // Increased slightly to 150ms for robustness
1305                break; // Exit the loop after finding the relevant mutation
1306              }
1307            }
1308          });
1309
1310          // Start observing the target FinSweet list for changes to its direct children
1311          observer.observe(finSweetList, { childList: true });
1312        } else {
1313          // This warning should no longer appear if the selector '[fs-list-element="list"]' is correct.
1314          console.warn("FinSweet list wrapper not found for the clicked load more button. Please check the selector '[fs-list-element=\"list\"]'.");
1315        }
1316      });
1317    });
1318  });
1319</script>
1319
1320
1321<script>
1322function initLoopingGSAPSlider() {
1323  document.querySelectorAll('[data-gsap-slider-init]').forEach(root => {
1324    if (root._sliderCleanup) root._sliderCleanup();
1325
1326    const collection = root.querySelector('[data-gsap-slider-collection]');
1327    const track = root.querySelector('[data-gsap-slider-list]');
1328    const originals = Array.from(root.querySelectorAll('[data-gsap-slider-item]'));
1329    const controls = Array.from(root.querySelectorAll('[data-gsap-slider-control]'));
1330    if (!originals.length) return;
1331
1332    const AUTO_INTERVAL = 4000; // ms between auto-advances
1333    const STEP_DURATION = 0.6;  // s, slide animation for auto/buttons
1334    const RESUME_DELAY  = 1500; // ms after a drag before auto resumes
1335
1336    root.setAttribute('role','region');
1337    root.setAttribute('aria-roledescription','carousel');
1338    root.setAttribute('aria-label','Slider');
1339    originals.forEach((slide,i) => {
1340      slide.setAttribute('role','group');
1341      slide.setAttribute('aria-roledescription','Slide');
1342      slide.setAttribute('aria-label',`Slide ${i+1} of ${originals.length}`);
1343    });
1344
1345    const statusVar = getComputedStyle(root).getPropertyValue('--slider-status').trim();
1346    const r0 = originals[0].getBoundingClientRect();
1347    // first-to-second item distance covers flex gap AND margins
1348    const slideW = originals.length > 1
1349      ? originals[1].getBoundingClientRect().left - r0.left
1350      : r0.width + parseFloat(getComputedStyle(originals[0]).marginRight);
1351    const loopWidth = slideW * originals.length;
1352    const enabled = statusVar === 'on' && loopWidth > collection.clientWidth;
1353    root.setAttribute('data-gsap-slider-status', enabled ? 'active' : 'not-active');
1354    if (!enabled) return;
1355
1356    // one extra set beyond viewport coverage - the loop runs one set shifted left
1357    // so the lead-in space before the first card is always filled
1358    const sets = Math.max(3, Math.ceil((collection.clientWidth + loopWidth) / loopWidth) + 1);
1359    const clones = [];
1360    for (let s = 1; s < sets; s++) {
1361      originals.forEach(item => {
1362        const c = item.cloneNode(true);
1363        c.setAttribute('data-gsap-slider-clone','');
1364        track.appendChild(c);
1365        clones.push(c);
1366      });
1367    }
1368    const allItems = originals.concat(clones);
1369
1370    // real loop distance measured from the DOM - immune to gap/margin quirks
1371    const realLoop = clones[0].getBoundingClientRect().left - r0.left;
1372    // wrap window is (-2L, -L]: always at least one full set off to the left
1373    const wrapX = v => -(((-v % realLoop) + realLoop) % realLoop) - realLoop;
1374
1375    let x = 0;
1376    let hovered = false, dragging = false, tweening = false;
1377    let currentTween = null, resumeTimer = null;
1378
1379    // statuses are shared per CONTENT (original + its clones always match),
1380    // so the loop-wrap element swap never triggers a CSS transition
1381    const n = originals.length;
1382    const rank = {'active': 2, 'inview': 1, 'not-active': 0};
1383    function updateStatus() {
1384      const cRect = collection.getBoundingClientRect();
1385      const best = new Array(n).fill('not-active');
1386      allItems.forEach((slide, idx) => {
1387        const r = slide.getBoundingClientRect();
1388        const leftEdge = r.left - cRect.left;
1389        const inView = r.right > cRect.left && r.left < cRect.right;
1390        const status = Math.abs(leftEdge) < slideW / 2 ? 'active'
1391          : inView ? 'inview' : 'not-active';
1392        const j = idx % n;
1393        if (rank[status] > rank[best[j]]) best[j] = status;
1394      });
1395      allItems.forEach((slide, idx) => {
1396        const status = best[idx % n];
1397        slide.setAttribute('data-gsap-slider-item-status', status);
1398        slide.setAttribute('aria-selected', status === 'active' ? 'true' : 'false');
1399        slide.setAttribute('aria-hidden', status === 'not-active' ? 'true' : 'false');
1400      });
1401    }
1402
1403    function render(v) {
1404      x = wrapX(v);
1405      gsap.set(track, {x: x});
1406      updateStatus();
1407    }
1408
1409    function killTween() {
1410      if (currentTween) { currentTween.kill(); currentTween = null; }
1411      tweening = false;
1412    }
1413
1414    // dir 1 = next, -1 = prev; always lands on a card-aligned position
1415    function step(dir) {
1416      killTween();
1417      tweening = true;
1418      const state = {v: x};
1419      currentTween = gsap.to(state, {
1420        v: (Math.round(x / slideW) - dir) * slideW,
1421        duration: STEP_DURATION,
1422        ease: 'power2.inOut',
1423        onUpdate: () => render(state.v),
1424        onComplete: () => { tweening = false; currentTween = null; }
1425      });
1426    }
1427
1428    const autoTimer = setInterval(() => {
1429      if (!hovered && !dragging && !tweening) step(1);
1430    }, AUTO_INTERVAL);
1431
1432    root.addEventListener('mouseenter', () => {
1433      hovered = true;
1434      track.setAttribute('data-gsap-slider-list-status','grab');
1435    });
1436    root.addEventListener('mouseleave', () => {
1437      hovered = false;
1438      track.removeAttribute('data-gsap-slider-list-status');
1439    });
1440
1441    function scheduleResume() {
1442      clearTimeout(resumeTimer);
1443      resumeTimer = setTimeout(() => { dragging = false; }, RESUME_DELAY);
1444    }
1445
1446    // prev/next always enabled - no ends anymore
1447    controls.forEach(btn => {
1448      const dir = btn.getAttribute('data-gsap-slider-control') === 'next' ? 1 : -1;
1449      btn.disabled = false;
1450      btn.setAttribute('aria-label', dir === 1 ? 'Next Slide' : 'Previous Slide');
1451      btn.setAttribute('aria-disabled','false');
1452      btn.setAttribute('data-gsap-slider-control-status','active');
1453      btn.onclick = () => step(dir);
1454    });
1455
1456    // drag on a proxy so inertia can cross the wrap point; snap to card positions
1457    const proxy = document.createElement('div');
1458    let snapOffset = 0;
1459    const drag = Draggable.create(proxy, {
1460      type: 'x',
1461      trigger: track,
1462      inertia: true,
1463      throwResistance: 2000,
1464      maxDuration: 0.8,
1465      snap: {
1466        x: v => Math.round((snapOffset + v) / slideW) * slideW - snapOffset,
1467        duration: 0.4
1468      },
1469      onPressInit() {
1470        killTween();
1471        dragging = true;
1472        clearTimeout(resumeTimer);
1473        snapOffset = x - this.x; // maps proxy coords to slider coords
1474        track.setAttribute('data-gsap-slider-list-status','grabbing');
1475      },
1476      onDrag() { render(snapOffset + this.x); },
1477      onThrowUpdate() { render(snapOffset + this.x); },
1478      onRelease() {
1479        track.setAttribute('data-gsap-slider-list-status','grab');
1480        if (!this.isThrowing) scheduleResume();
1481      },
1482      onThrowComplete() { scheduleResume(); }
1483    })[0];
1484
1485    root._sliderCleanup = () => {
1486      clearInterval(autoTimer);
1487      clearTimeout(resumeTimer);
1488      killTween();
1489      drag.kill();
1490      clones.forEach(c => c.remove());
1491      gsap.set(track, {clearProps: 'x'});
1492      root._sliderCleanup = null;
1493    };
1494
1495    render(0);
1496  });
1497}
1498
1499function debounceOnWidthChange(fn, ms) {
1500  let last = innerWidth, timer;
1501  return function(...args) {
1502    clearTimeout(timer);
1503    timer = setTimeout(() => {
1504      if (innerWidth !== last) {
1505        last = innerWidth;
1506        fn.apply(this, args);
1507      }
1508    }, ms);
1509  };
1510}
1511
1512window.addEventListener('resize', debounceOnWidthChange(initLoopingGSAPSlider, 200));
1513
1514window.addEventListener('load', () => {
1515  gsap.registerPlugin(Draggable, InertiaPlugin);
1516  initLoopingGSAPSlider();
1517});
1518</script>
1518
1519
1520<script>
1521(function () {
1522  var els = document.querySelectorAll('[data-num-anim]');
1523  if (!els.length) return;
1524
1525  var reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
1526
1527  function animate(el) {
1528    var text = el.textContent;
1529    var m = text.match(/([\d,]*\.?\d+)/);
1530    if (!m) return;
1531    var raw = m[1];
1532    var target = parseFloat(raw.replace(/,/g, ''));
1533    var decimals = (raw.split('.')[1] || '').length;
1534    var useCommas = raw.indexOf(',') > -1;
1535    var prefix = text.slice(0, m.index);
1536    var suffix = text.slice(m.index + raw.length);
1537    var duration = parseInt(el.getAttribute('data-num-anim'), 10) || 1800;
1538    var start = null;
1539
1540    function fmt(v) {
1541      var s = v.toFixed(decimals);
1542      if (useCommas) {
1543        var p = s.split('.');
1544        p[0] = p[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
1545        s = p.join('.');
1546      }
1547      return s;
1548    }
1549    function frame(ts) {
1550      if (start === null) start = ts;
1551      var t = Math.min((ts - start) / duration, 1);
1552      var eased = 1 - Math.pow(1 - t, 3);
1553      el.textContent = prefix + fmt(target * eased) + suffix;
1554      if (t < 1) requestAnimationFrame(frame);
1555      else el.textContent = text;
1556    }
1557    requestAnimationFrame(frame);
1558  }
1559
1560  var io = new IntersectionObserver(function (entries) {
1561    entries.forEach(function (entry) {
1562      if (entry.isIntersecting) {
1563        io.unobserve(entry.target);
1564        if (reduced) return;
1565        animate(entry.target);
1566      }
1567    });
1568  }, { threshold: 0.4 });
1569
1570  els.forEach(function (el) { io.observe(el); });
1571})();
1572</script>
1572
1573
1574<!-- cs-hero-sharpen : Legency, 13 Aug 2026 -------------------------------
1575     The industry hero embeds size themselves with transform: scale(). Their
1576     panels use perspective()/rotateY(), so they sit on composited layers, and
1577     a transform scale resamples those layers as bitmaps - which is why they
1578     render soft. The site's own .hero-embed.is-smaller{transform:scale(.75)}
1579     resampled them a second time.
1580
1581     This converts that scaling to `zoom`, which re-lays-out so text and edges
1582     rasterise at final size, and folds the .is-smaller scale in so nothing is
1583     resampled twice. Touches nothing but .cs-hero-canvas, and no-ops on any
1584     hero already built with zoom.
1585------------------------------------------------------------------------- -->
1586<script>
1587(function () {
1588  if (!(window.CSS && CSS.supports && CSS.supports('zoom', '1'))) return;
1589
1590  function hostScale(host) {
1591    var t = host && getComputedStyle(host).transform;
1592    if (!t || t === 'none') return 1;
1593    var m = t.match(/matrix\(([^,]+),/);
1594    return m ? (parseFloat(m[1]) || 1) : 1;
1595  }
1596
1597  function patch(canvas) {
1598    var wrap = canvas.closest ? canvas.closest('.cs-hero-wrap') : null;
1599    if (!wrap) return;
1600
1601    var host = wrap.parentElement;
1602    if (host && !host.getAttribute('data-cs-sharpened')) {
1603      var hs = hostScale(host);
1604      if (hs && hs !== 1) { host.style.transform = 'none'; host.setAttribute('data-cs-scale', hs); }
1605      host.setAttribute('data-cs-sharpened', '1');
1606    }
1607    var absorbed = parseFloat((host && host.getAttribute('data-cs-scale')) || '1') || 1;
1608
1609    // Only fires when the embed's own script has just written a scale().
1610    var m = (canvas.style.transform || '').match(/scale\(([\d.]+)\)/);
1611    if (!m) return;
1612
1613    var s = parseFloat(m[1]) * absorbed;
1614    if (!s || !isFinite(s)) return;
1615    canvas.style.transform = '';
1616    canvas.style.zoom = s;
1617    wrap.style.width = (1920 * s) + 'px';
1618    wrap.style.height = (1080 * s) + 'px';
1619  }
1620
1621  function scan() {
1622    var list = document.querySelectorAll('.cs-hero-canvas');
1623    for (var i = 0; i < list.length; i++) {
1624      var c = list[i];
1625      if (!c.getAttribute('data-cs-watched')) {
1626        c.setAttribute('data-cs-watched', '1');
1627        (function (el) {
1628          new MutationObserver(function () { patch(el); })
1629            .observe(el, { attributes: true, attributeFilter: ['style'] });
1630        })(c);
1631      }
1632      patch(c);
1633    }
1634  }
1635
1636  scan();
1637  document.addEventListener('DOMContentLoaded', scan);
1638  window.addEventListener('load', scan);
1639  window.addEventListener('resize', scan);
1640  setTimeout(scan, 300); setTimeout(scan, 1000); setTimeout(scan, 2500);
1641})();
1642</script>
1642
1643
1644<!-- cs-hero-mobile : Legency, 14 Aug 2026 --------------------------------
1645     The site hides the hero graphic below 991px via .hero-embed{display:none}.
1646     That rule predates the animations, and with Graphic Type set to Animation
1647     the image alternative is off too - so the hero cell rendered completely
1648     empty on tablet and phone. Show it; the embed's own fit script scales it
1649     down to the viewport.
1650------------------------------------------------------------------------- -->
1651<style>
1652@media screen and (max-width: 991px) { .hero-embed { display: block !important; } }
1653</style>
1654
1655<!-- cs-hero-width : Legency, 14 Aug 2026 ---------------------------------
1656     The hero row is .section-content{grid-template-columns:1.25fr 1fr}, so the
1657     animation gets the SMALLER cell - 562px of a 1280px container. The artwork
1658     is ~1610px wide, so it renders at 0.29 and its 17px labels land at 5px,
1659     against the home page hero's 8.7px. That is why Adi reads them as small.
1660
1661     Flipping the ratio on industry pages only takes the animation cell to
1662     702px, so labels render ~6.2px (+24%) and the headline still sits on three
1663     lines. Scoped by URL so no other page using Section / Hero is affected.
1664     Revert = delete this block.
1665------------------------------------------------------------------------- -->
1666<script>if(/^\/industries\//.test(location.pathname))document.documentElement.classList.add('cs-industry');</script>
1666
1667<style>
1668html.cs-industry .section-content { grid-template-columns: 1fr 1.25fr !important; }
1669@media screen and (max-width: 991px) { html.cs-industry .section-content { grid-template-columns: 1fr !important; } }
1670</style>
1671
1672<!-- Start of HubSpot Embed Code -->
1673<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/7066574.js"></script>
1673
1674<!-- End of HubSpot Embed Code -->
1675
1676<!-- cs-a11y : Legency, 1 Sep 2026 -------------------------------------------
1677     (1) The skip link in the nav targets #main. Pages built before the
1678         landmark pass have a <main> with no id - give it one so the link works
1679         everywhere. (2) The product mockups are HTML embeds whose "Buy Now",
1680         "Add to Cart" and retailer buttons are decorative animation props, not
1681         controls; take them out of the tab order and the accessibility tree so
1682         they stop counting as sub-minimum tap targets.
1683------------------------------------------------------------------------- -->
1684<script>
1685(function(){
1686  function run(){
1687    if(!document.getElementById('main')){var m=document.querySelector('main');if(m&&!m.id)m.id='main';}
1688    document.querySelectorAll('.w-embed button').forEach(function(b){
1689      if(/(__buy|__btn|__al-btn|__retailer|__locate)(\s|$)/.test(b.className)){b.setAttribute('tabindex','-1');b.setAttribute('aria-hidden','true');}
1690    });
1691  }
1692  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',run);}else{run();}
1693})();
1694</script>
1694
1695
1696<!-- cs-faq-schema : Legency, 1 Sep 2026 -------------------------------------
1697     FAQ collection pages (/faq/*) carry one question and one answer each.
1698     The template marks them with data-faqpage-q / data-faqpage-a; this builds
1699     the FAQPage JSON-LD from what is actually rendered, so the markup can never
1700     drift from the visible content. No-op on every other page.
1701------------------------------------------------------------------------- -->
1702<script>
1703(function(){
1704  function run(){
1705    var q=document.querySelector('[data-faqpage-q]');
1706    var a=document.querySelector('[data-faqpage-a]');
1707    if(!q||!a)return;
1708    var qt=q.innerText.replace(/\s+/g,' ').trim();
1709    var at=a.innerText.replace(/\s+/g,' ').trim();
1710    if(!qt||!at)return;
1711    var s=document.createElement('script');
1712    s.type='application/ld+json';
1713    s.text=JSON.stringify({"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":qt,"acceptedAnswer":{"@type":"Answer","text":at}}]});
1714    document.head.appendChild(s);
1715  }
1716  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',run);}else{run();}
1717})();
1718</script>
1718
1719
1720
1721<!-- cs-hero-host : Legency, 3 Sep 2026 ----------------------------------
1722     The hero graphic cell is .section-cell{display:flex;flex-flow:column;
1723     align-items:flex-start}, which shrink-wraps the embed to its content
1724     width. The deck-style embeds (.cs-conv, .cs-wtb and any future one)
1725     declare container-type:inline-size, so their content width is zero -
1726     the animation collapsed to nothing on /our-solutions/conversational-
1727     commerce. The industry heroes only survive because their own fit
1728     script writes the same two values inline. This makes every embed
1729     pasted into a hero cell take the cell's full width. Revert = delete.
1730------------------------------------------------------------------------- -->
1731<style>
1732.section-cell > .hero-embed { align-self: stretch; width: 100%; min-width: 0; }
1733</style>
1734
1735
1736<script>
1737/* ChannelSight native video: optional per-instance accessible title. */
1738(() => {
1739  const selector = '[data-cs-video-title]';
1740  const start = () => {
1741    if (!document.querySelector(selector)) return;
1742    const state = new WeakMap();
1743    const apply = root => {
1744      const override = (root.getAttribute('data-cs-video-title') || '').trim();
1745      root.querySelectorAll('iframe').forEach(frame => {
1746        const current = frame.getAttribute('title') || '';
1747        const record = state.get(frame) || { nativeTitle: current || 'YouTube video', applied: null };
1748        if (current && current !== record.applied) record.nativeTitle = current;
1749        const next = override || record.nativeTitle;
1750        record.applied = next;
1751        state.set(frame, record);
1752        if (current !== next) frame.setAttribute('title', next);
1753      });
1754    };
1755    document.querySelectorAll(selector).forEach(apply);
1756    new MutationObserver(records => {
1757      const roots = new Set();
1758      records.forEach(record => {
1759        if (record.target instanceof Element) {
1760          const root = record.target.closest(selector);
1761          if (root) roots.add(root);
1762        }
1763        record.addedNodes.forEach(node => {
1764          if (!(node instanceof Element)) return;
1765          if (node.matches(selector)) roots.add(node);
1766          node.querySelectorAll(selector).forEach(root => roots.add(root));
1767        });
1768      });
1769      roots.forEach(apply);
1770    }).observe(document.body, {
1771      childList: true, subtree: true, attributes: true,
1772      attributeFilter: ['data-cs-video-title', 'title']
1773    });
1774  };
1775  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start, { once: true });
1776  else start();
1777})();
1778</script>
1778
1779
1780<!-- CS announcement banner, 22 Sep 2026 -->
1781<script>
1782/* ChannelSight: keep the fixed navigation and mobile panels clear of the announcement. */
1783(() => {
1784  const initialise = () => {
1785    document.querySelectorAll('.mega-nav').forEach(nav => {
1786      const banner = nav.querySelector(':scope > .cs-announcement');
1787      if (!banner || nav.__csAnnouncementCleanup) return;
1788      const wrapper = nav.closest('.nav-components');
1789      const storageKey = 'cs-announcement-dismissed';
1790      const campaign = JSON.stringify([
1791        banner.querySelector('.cs-announcement_copy')?.textContent.trim(),
1792        banner.querySelector('.cs-announcement_action a')?.getAttribute('href')
1793      ]);
1794      // Remember only this announcement for the current tab's browsing session.
1795      // A different message or destination automatically shows a new campaign.
1796      try {
1797        if (sessionStorage.getItem(storageKey) === campaign) banner.hidden = true;
1798      } catch (_) { /* Dismissal still works when browser storage is unavailable. */ }
1799      let frame = 0;
1800      const assign = (element, name, value) => {
1801        if (element && element.style.getPropertyValue(name) !== value) {
1802          element.style.setProperty(name, value);
1803        }
1804      };
1805      const measure = () => {
1806        frame = 0;
1807        if (!nav.isConnected) {
1808          nav.__csAnnouncementCleanup();
1809          return;
1810        }
1811        const height = Math.ceil(banner.getBoundingClientRect().height);
1812        assign(nav, '--cs-announcement-height', `${height}px`);
1813        assign(wrapper, '--cs-announcement-offset',
1814          getComputedStyle(nav).position === 'fixed' ? `${height}px` : '0px');
1815      };
1816      const schedule = () => { if (!frame) frame = requestAnimationFrame(measure); };
1817      const dismiss = event => {
1818        const close = event.target.closest('.cs-announcement_close');
1819        const cta = event.target.closest('.cs-announcement_action a[href]');
1820        if (!close && !cta) return;
1821        if (event.type === 'auxclick' && event.button !== 1) return;
1822        const restoreFocus = !!close && banner.contains(document.activeElement);
1823        banner.hidden = true;
1824        try { sessionStorage.setItem(storageKey, campaign); } catch (_) {}
1825        schedule();
1826        if (restoreFocus) {
1827          const next = [...nav.querySelectorAll('.mega-nav__bar a[href], .mega-nav__bar button, .mega-nav__bar [tabindex="0"]')]
1828            .find(element => !element.disabled && element.getClientRects().length &&
1829              getComputedStyle(element).visibility !== 'hidden');
1830          next?.focus({ preventScroll: true });
1831        }
1832      };
1833      banner.addEventListener('click', dismiss);
1834      banner.addEventListener('auxclick', dismiss);
1835      banner.setAttribute('data-cs-dismissible', '');
1836      const resize = typeof ResizeObserver === 'function' ? new ResizeObserver(schedule) : null;
1837      resize?.observe(banner);
1838      const changes = new MutationObserver(schedule);
1839      changes.observe(nav, {
1840        attributes: true, attributeFilter: ['class', 'style', 'hidden'],
1841        childList: true, characterData: true, subtree: true
1842      });
1843      window.addEventListener('resize', schedule, { passive: true });
1844      nav.__csAnnouncementCleanup = () => {
1845        resize?.disconnect();
1846        changes.disconnect();
1847        window.removeEventListener('resize', schedule);
1848        banner.removeEventListener('click', dismiss);
1849        banner.removeEventListener('auxclick', dismiss);
1850        banner.removeAttribute('data-cs-dismissible');
1851        cancelAnimationFrame(frame);
1852        assign(nav, '--cs-announcement-height', '0px');
1853        assign(wrapper, '--cs-announcement-offset', '0px');
1854        delete nav.__csAnnouncementCleanup;
1855      };
1856      measure();
1857      document.fonts?.ready.then(schedule);
1858    });
1859  };
1860  if (document.readyState === 'loading') {
1861    document.addEventListener('DOMContentLoaded', initialise, { once: true });
1862  } else initialise();
1863})();
1864
1865</script>
1865</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.