PageSourceSearch

https://channelsight.webflow.io/about-us

html channelsight.webflow.io collected 2026-10-03 12:53:55 UTC 143,438 bytes, 1,855 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="649afe6191f574759c2f67f5" data-wf-site="64248e7ed5f30d6effe57d5d" lang="en"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>About ChannelSight</title><meta content="Leading brands use ChannelSight&#x27;s Where to Buy, Shoppable Media and Digital Shelf solutions to lift conversions and monitor their products online." name="description"/><meta content="About ChannelSight" property="og:title"/><meta content="Leading brands use ChannelSight&#x27;s Where to Buy, Shoppable Media and Digital Shelf solutions to lift conversions and monitor their products online." property="og:description"/><meta content="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/6a96d027bacbcd3d3c275716_channelsight-og-share-1200x630.png" property="og:image"/><meta content="About ChannelSight" name="twitter:title"/><meta content="Leading brands use ChannelSight&#x27;s Where to Buy, Shoppable Media and Digital Shelf solutions to lift conversions and monitor their products online." 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/about-us" rel="canonical"/>
1<script type="application/ld+json">
2{
3  "@context": "https://schema.org",
4  "@type": "AboutPage",
5  "name": "About ChannelSight",
6  "url": "https://www.channelsight.com/about-us",
7  "description": "ChannelSight is a where-to-buy and digital shelf platform for consumer brands: it connects buy-now intent on brand websites, media and campaigns to live retailer product pages and measures the path from content to checkout.",
8  "mainEntity": {
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="nav-components top-spacing"><a href="#main" class="skip-link">Skip to content</a><div><div class="custom-css w-embed"><style>
77  [data-menu-wrap] {
78  --nav-height: 6em;
79}
80
81.mega-nav__panel-col:last-of-type {
82  border: none;
83}
84
85/* Allow easier content editing when panel state is 'active' inside of the designer*/
86.wf-design-mode [data-nav-content][data-panel-state="1"] {
87  opacity: 1;
88  visibility: visible;
89  pointer-events: auto;
90  position: relative;
91}
92
93.wf-design-mode [data-menu-open]:has( [data-nav-content][data-panel-state="active"]) [data-dropdown-bg] {
94  opacity: 1;
95  inset: 0;
96}
97
98.wf-design-mode [data-mobile-nav="active"] {
99  opacity: 1;
100  visibility: visible;
101}
102
103    .u-heading h1,
104  .u-heading h2,
105  .u-heading h3,
106  .u-heading h4 {
107    font-size: inherit !important;
108  }
109
110  .font-weight-light{
111		font-weight: 300 !important;
112    }
113
114/* Case studies / blogs list - horizontal slider on mobile */
115@media (max-width: 767px) {
116  .blogs-list-wrap {
117    flex-wrap: nowrap;
118    overflow-x: auto;
119    -webkit-overflow-scrolling: touch;
120    scroll-snap-type: x mandatory;
121    scroll-padding-left: 0.25rem;
122    scrollbar-width: none;
123  }
124  .blogs-list-wrap::-webkit-scrollbar {
125    display: none;
126  }
127  .blogs-list-wrap > .w-dyn-item {
128    flex: 0 0 80%;
129    max-width: 80%;
130    scroll-snap-align: start;
131  }
132}
133
134/* Comparison table info tooltips */
135.cmp-info:hover .cmp-info-tip,
136.cmp-info:focus-within .cmp-info-tip {
137  display: block;
138}
139.cmp-info-tip p {
140  margin: 0;
141  font-size: 0.8125rem;
142  line-height: 1.5;
143}
144
145/* Comparison page FAQ accordion */
146.cfaq-item[data-open="true"] .cfaq-a {
147  display: block;
148}
149.cfaq-item[data-open="true"] .cfaq-icon {
150  transform: rotate(45deg);
151}
152.cfaq-q:focus-visible {
153  outline: 2px solid #5c55a6;
154  outline-offset: 2px;
155}
156.cfaq-a p,
157.cfaq-qtext p {
158  margin: 0;
159}
160
161/* Comparison table meaning line (the 'What does it mean' text under capability names) */
162.cmp-meaning p {
163  margin: 0;
164  font-size: 0.8125rem;
165  line-height: 1.5;
166  color: #667085;
167}
168
169/* Comparison summary reason cards */
170.cmp-why-title h1,
171.cmp-why-title h2,
172.cmp-why-title h3,
173.cmp-why-title h4 {
174  margin: 0;
175  font-size: 1.125rem;
176  line-height: 1.4;
177}
178.cmp-why-card p {
179  margin: 0;
180  font-size: 0.9375rem;
181  line-height: 1.6;
182}
183
184/* Industry stats band: per-position metric icons (stats mode only; feature cards keep their own icon) */
185.layout254_item.is-stats-card .cs-icon-1x1-xsmall-3 {
186  display: none;
187}
188.layout254_item.is-stats-card:nth-child(1) .fcard-stat-icon-1,
189.layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
190.layout254_item.is-stats-card:nth-child(3) .fcard-stat-icon-3,
191.layout254_item.is-stats-card:nth-child(4) .fcard-stat-icon-4 {
192  display: flex;
193}
194.layout254_item.is-stats-card .cs-icon-featured-outline-large-4 {
195  margin-left: auto;
196  margin-right: auto;
197}
198
199/* Industry pages: stat tile 2 swaps the storefront for the industry glyph (keyed by page id) */
200html[data-wf-page="6a6b415bed2bfff2ac196c80"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
201html[data-wf-page="6a6b41f61c1b18a7410c5a0d"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
202html[data-wf-page="6a6b4237d2b29a42560750ad"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
203html[data-wf-page="6a6b42a0d93559a1ca740815"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
204html[data-wf-page="6a6b42b129e6d7ffcd5cee57"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
205html[data-wf-page="6a6b426c77f1ae51bdad9644"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
206html[data-wf-page="6a6b427c29e6d7ffcd5cc554"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2,
207html[data-wf-page="6a6b425a14fa4a9bd641a221"] .layout254_item.is-stats-card:nth-child(2) .fcard-stat-icon-2 {
208  display: none;
209}
210html[data-wf-page="6a6b415bed2bfff2ac196c80"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-basket,
211html[data-wf-page="6a6b41f61c1b18a7410c5a0d"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-pill,
212html[data-wf-page="6a6b4237d2b29a42560750ad"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-plug,
213html[data-wf-page="6a6b42a0d93559a1ca740815"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-utensils,
214html[data-wf-page="6a6b42b129e6d7ffcd5cee57"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-sparkles,
215html[data-wf-page="6a6b426c77f1ae51bdad9644"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-hammer,
216html[data-wf-page="6a6b427c29e6d7ffcd5cc554"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-toybrick,
217html[data-wf-page="6a6b425a14fa4a9bd641a221"] .layout254_item.is-stats-card:nth-child(2) .fcard-ind-wrench {
218  display: flex;
219}
220</style>
221<style>
222/* MG-42 purchase-path icons and page media, 15 Sep 2026 */
223html[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}
224html[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}
225html[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}
226html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_item::before{width:2rem;height:2rem;margin-bottom:var(--_spacing---space--5)}
227html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_chip::before{width:1.5rem;height:1.5rem}
228html[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}
229html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_chip:not(:last-child){border-right:1px solid var(--colors--cs-light-purple)}
230html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-content="video"]{border-radius:1rem;overflow:hidden}
231html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-content="video"] .w-youtube{aspect-ratio:16/9;height:auto!important;padding-top:0!important}
232html[data-wf-page="6a992fe4586a2d690ffacbc0"] #conversational-commerce-form{scroll-margin-top:7rem;background:var(--colors--cs-light-purple)}
233html[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}
234html[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}
235html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-content="form"]>.u-text{min-width:0;max-width:none;grid-column:1;grid-row:2}
236html[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)}
237html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-form-fallback]{grid-column:2;color:var(--colors--cs-dark-purblue)}
238html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-hubspot] iframe{max-width:100%;width:100%}
239@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)}}
240@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)}}
241
242html[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
24202%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")}
243html[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")}
244html[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")}
245html[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")}
246html[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")}
247html[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")}
248html[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")}
249html[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")}
250html[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")}
251html[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")}
252html[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")}
253html[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")}
254html[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")}
255html[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")}
256
257</style>
258<!-- CS announcement banner, 22 Sep 2026 -->
259<style>
260/* ChannelSight announcement banner. Native classes provide its layout and palette. */
261.cs-announcement {
262  background-image: linear-gradient(110deg,
263    var(--colors--untitled-ui-orange700, #b93815) 0%,
264    var(--colors--cs-dark-purblue, #3a43c3) 100%);
265  animation: cs-announcement-enter 320ms ease-out both;
266}
267.cs-announcement[hidden] { display: none !important; }
268.cs-announcement_row {
269  position: relative;
270  min-height: 2.75rem;
271  padding-inline: 3rem;
272}
273.cs-announcement_close {
274  position: absolute;
275  top: 0;
276  right: 0;
277  display: none;
278  align-items: center;
279  justify-content: center;
280  width: 2.75rem;
281  height: 2.75rem;
282  padding: 0;
283  border: 0;
284  border-radius: .25rem;
285  background: transparent;
286  color: inherit;
287  cursor: pointer;
288  appearance: none;
289}
290.cs-announcement[data-cs-dismissible] .cs-announcement_close,
291.wf-design-mode .cs-announcement_close { display: inline-flex; }
292.cs-announcement_close::before,
293.cs-announcement_close::after {
294  content: "";
295  position: absolute;
296  width: 1rem;
297  height: 2px;
298  background: currentColor;
299  transform: rotate(45deg);
300}
301.cs-announcement_close::after { transform: rotate(-45deg); }
302.cs-announcement_close:hover { background: rgb(255 255 255 / 12%); }
303.cs-announcement_close:focus-visible {
304  outline: 2px solid currentColor;
305  outline-offset: -4px;
306}
307.cs-announcement_copy .u-text {
308  min-width: 0;
309  max-width: none;
310  color: inherit;
311}
312.cs-announcement_action .button-main {
313  display: inline-flex;
314  align-items: center;
315  justify-content: center;
316  min-height: 2.75rem;
317  padding: 0 var(--_spacing---space--1);
318  border: 0;
319  border-radius: 0;
320  background: transparent;
321  color: inherit;
322  box-shadow: none;
323  font-size: var(--_typography---font-size--text-main);
324  text-decoration: underline;
325  text-underline-offset: .2em;
326  white-space: nowrap;
327  transform: none;
328}
329.cs-announcement_action .button-main:hover {
330  background: transparent;
331  color: inherit;
332  text-decoration-thickness: .12em;
333  transform: none;
334}
335.cs-announcement_action .button-main:focus-visible {
336  outline: 2px solid currentColor;
337  outline-offset: 2px;
338}
339.mega-nav:has(> .cs-announcement):not(.is-relative) {
340  top: 0;
341}
342.nav-components:has(> .mega-nav > .cs-announcement) {
343  padding-top: var(--cs-announcement-offset, 0px);
344}
345@media screen and (max-width: 991px) {
346  .mega-nav:has(> .cs-announcement) .mega-nav__bar-inner,
347  .mega-nav:has(> .cs-announcement) .mega-nav__dropdown-wrapper {
348    top: calc(var(--nav-height) + var(--cs-announcement-height, 0px));
349  }
350}
351@media screen and (max-width: 767px) {
352  .cs-announcement_row {
353    flex-direction: column;
354    row-gap: 0;
355    padding-top: var(--_spacing---space--1);
356  }
357}
358@keyframes cs-announcement-enter {
359  from { transform: translateY(-100%); }
360  to { transform: translateY(0); }
361}
362@media (prefers-reduced-motion: reduce) {
363  .cs-announcement { animation: none; }
364}
365
366</style>
367<style>
368/* BEGIN ChannelSight case-study index 2026-10-02 */
369/* ChannelSight case-study index. Scoped additions to native Webflow/Lumos styles. */
370.cs-index-hero .u-container,.cs-index-library .u-container{max-width:80rem;width:calc(100% - clamp(2.5rem,8vw,7rem))}
371.cs-index-hero .section-spacer{padding-top:clamp(2.25rem,4.4vw,4rem)}
372.cs-index-library>.section-spacer:first-child{padding-top:var(--_spacing---space--7)}
373.cs-index-heading .eyebrow{font-size:.875rem;text-transform:uppercase;letter-spacing:.075em;color:#5837df;margin-bottom:var(--_spacing---space--4)}
374.cs-index-heading .u-heading{font-weight:600;line-height:1.07;letter-spacing:-.05em}
375.cs-index-heading h1{white-space:pre-line;color:#5837df}
376.cs-index-heading h1::first-line{color:#101039}
377.cs-index-heading .u-heading p:empty,.cs-index-library-title .u-heading p:empty{display:none}
378.cs-index-intro p{line-height:1.55}
379.cs-index-library-title .u-heading{min-width:0;width:auto;font-weight:600;letter-spacing:-.025em;white-space:nowrap}
380.cs-index-library .cs-index-filter{margin:0}
381.cs-index-library [data-cs-filter]{display:flex;align-items:center;gap:var(--_spacing---space--3)}
382.cs-index-library .cs-index-select{margin:0;max-width:100%;font-family:inherit}
383.cs-index-library .cs-index-label{margin:0;font-weight:400;white-space:nowrap}
384.cs-index-library [hidden]{display:none!important}
385.cs-index-count:empty{display:none}
386.cs-index-library .cs-index-industry>div{display:inline}
387.cs-index-card{transition:border-color .18s,box-shadow .18s,transform .18s}
388.cs-index-card:hover{border-color:#b8aaef;box-shadow:0 10px 30px #29215a0c;transform:translateY(-3px)}
389.cs-index-image{transition:transform .3s}
390.cs-index-card:hover .cs-index-image{transform:scale(1.025)}
391.cs-index-media:has(a[href*="regalo"]){object-position:70% 42%}
392.cs-index-card[href*="regalo"] .cs-index-image{object-position:70% 42%}
393.cs-index-page-numbers .cs-index-page-button{min-width:2.5rem;border-radius:6px}
394.cs-index-page-button[aria-current=page]{background:#eee9ff;color:#5837df;font-weight:600}
395.cs-index-page-button:disabled{color:#b5b2c2;cursor:default}
396.cs-index-hero a:focus-visible,.cs-index-library :is(a,button,select):focus-visible{outline:3px solid #5837df;outline-offset:4px}
397.cs-index-library{scroll-margin-top:2rem}
398@media(min-width:1600px){.cs-index-hero .u-container,.cs-index-library .u-container{max-width:90rem}}
399@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)}}
400@media(prefers-reduced-motion:reduce){.cs-index-card,.cs-index-image{transition:none}.cs-index-card:hover{transform:none}}
401.cs-index-library [data-cs-primary]:is(:empty,.w-dyn-bind-empty){display:none!important}
402.cs-index-content:has([data-cs-primary="title"]:not(:empty):not(.w-dyn-bind-empty)) [data-cs-fallback="title"],
403.cs-index-media:has([data-cs-primary="company"]:not(:empty):not(.w-dyn-bind-empty)) [data-cs-fallback="company"],
404.cs-index-industry:has([data-cs-primary="industry"]:not(:empty):not(.w-dyn-bind-empty)) [data-cs-fallback="industry"]{display:none}
405
406.cs-index-heading h1::before,.cs-index-heading h1::after{display:none}
407.cs-index-image{margin:0}
408.cs-index-heading .u-heading h1::before,.cs-index-heading .u-heading h1::after{content:none!important;display:none!important}
409html[data-wf-page="649afe6191f574759c2f675a"] .nav-components.top-spacing{padding-top:var(--cs-index-nav-height,8.125rem);margin-bottom:0}
410@media(max-width:767px){html[data-wf-page="649afe6191f574759c2f675a"] .nav-components.top-spacing{padding-top:var(--cs-index-nav-height,11rem)}}
411
412/* END ChannelSight case-study index */
413</style>
414<style>
415/* Case study optional photo logos 2026-10-02 */
416/* Optional brand marks over case-study photos. Empty fields retain the company name. */
417.cs-index-logo:is(.w-dyn-bind-empty,[src=""],[data-cs-logo-failed]),.cs-index-logo:not([src]){display:none!important}
418.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}
419.cs-index-logo{pointer-events:none}
420.cs-index-media .cs-index-company{text-shadow:0 1px 10px rgba(0,0,0,.3)}
421
422</style></div><div class="w-embed"><style>
423::before, ::after {
424  box-sizing: border-box;
425}
426.w-embed:before, .w-embed:after,
427.w-richtext:before, .w-richtext:after {
428  content: unset;
429}
430html {
431  background-color: var(--_theme---background);
432}
433button {
434  background-color: unset;
435  padding: unset;
436  text-align: inherit;
437}
438button:not(:disabled) {
439  cursor: pointer;
440}
441video {
442  width: 100%;
443  object-fit: cover;
444}
445svg {
446  max-width: 100%;
447}
448@media (prefers-color-scheme: light) {
449  option { color: black; }
450}
451/* Typography */
452body {
453  -webkit-font-smoothing: antialiased;
454  -moz-osx-font-smoothing: grayscale;
455}
456/* Clear Defaults */
457a:not([class]) {
458  text-decoration: underline;
459}
460label {
461  font-weight: inherit;
462  margin-bottom: 0;
463}
464select:has(option[value=""]:checked) {
465  color: color-mix(in lab, currentcolor 60%, transparent)
466}
467/* Selection Color */
468::selection {
469  background-color: var(--_theme---selection--background);
470  color: var(--_theme---selection--text);
471}
472/* Margin Trim */
473: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)),
474: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)) {
475  margin-top: 0;
476}
477: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))),
478: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))) {
479  margin-bottom: 0;
480}
481/* Line Height Trim */
482:not(.u-text-trim-off) > :is(h1,h2,h3,h4,h5,h6,p):not(.u-text-trim-off,:has([class*="u-text-style-"]))::before,
483[class*="u-text-style-"]:not(.u-text-trim-off,:has(h1,h2,h3,h4,h5,h6,p))::before {
484  content: "";
485  display: table;
486  margin-bottom: calc(-0.5lh + var(--_text-style---trim-top));
487}
488:not(.u-text-trim-off) > :is(h1,h2,h3,h4,h5,h6,p):not(.u-text-trim-off,:has([class*="u-text-style-"]))::after,
489[class*="u-text-style-"]:not(.u-text-trim-off,:has(h1,h2,h3,h4,h5,h6,p))::after {
490  content: "";
491  display: table;
492  margin-bottom: calc(-0.5lh + var(--_text-style---trim-bottom));
493}
494/* Rich Text Links */
495.w-richtext a {
496  position: relative;
497  z-index: 4;
498}
499/* Line Clamp */
500[class*="u-line-clamp"]:not(.w-richtext),
501[class*="u-line-clamp"].w-richtext > * {
502  display: -webkit-box !important;
503  -webkit-line-clamp: 1;
504  -webkit-box-orient: vertical;
505  overflow: hidden;
506}
507[class*="u-line-clamp"].w-richtext > :not(:first-child) { display: none; }
508.u-line-clamp-2:not(.w-richtext), .u-line-clamp-2.w-richtext > * { -webkit-line-clamp: 2; }
509.u-line-clamp-3:not(.w-richtext), .u-line-clamp-3.w-richtext > * { -webkit-line-clamp: 3; }
510.u-line-clamp-4:not(.w-richtext), .u-line-clamp-4.w-richtext > * { -webkit-line-clamp: 4; }
511/* Text Max Width */
512.u-heading > *,
513.u-text > * {
514  width: 100%;
515  max-width: inherit !important;
516  margin-inline: 0 !important;
517  margin-top: 0 !important;
518}
519/* Background Slot Children */
520.u-background-slot > * {
521  position: absolute;
522  top: 0;
523  left: 0;
524  width: 100%;
525  height: 100%;
526  aspect-ratio: unset;
527}
528/* Hide If Empty CMS */
529.u-hide-if-empty-cms:not(:has(.w-dyn-item)) {
530  display: none !important;
531}
532/* Focus State */
533a, button, :where([tabindex]), input, select, textarea {
534  outline-offset: var(--focus--offset-outer);
535}
536a:focus-visible,
537button:focus-visible,
538[tabindex]:focus-visible,
539input:focus-visible,
540select:focus-visible,
541textarea:focus-visible {
542  outline-color: var(--_theme---text);
543  outline-width: var(--focus--width);
544  outline-style: solid;
545}
546/* Disabled */
547[data-button]:has(button:disabled) {
548  opacity: 0.5;
549  pointer-events: none;
550}
551/* Icon */
552.u-icon svg {
553  display: block !important;
554  width: 100% !important;
555  height: auto !important;
556}
557.u-icon path[stroke] {
558  stroke: currentColor !important;
559  stroke-width: var(--border-width--main);
560  vector-effect: non-scaling-stroke;
561}
562.u-icon :is(path:not([stroke]), rect, circle, ellipse, polygon, polyline) {
563  fill: currentColor !important;
564}
565/* Global / Clickable Component */
566.wf-design-mode .clickable_wrap { z-index: 0; }
567/* Number Attributes */
568[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}
569[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}
570[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}
571[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}
572[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}
573[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}
574[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}
575[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}
576[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}
577[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}
578/* State Manager */
579[data-state] { --_state---true: 1; --_state---false: 0; }
580.is-active,
581.wf-design-mode [data-preview="true"],
582.wf-design-mode [data-preview]:not(:has(> [data-w-instance-of])),
583[data-state~="checked"]:is(:checked, :has(:checked)),
584[data-state~="current"]:is(.w--current, :has(.w--current)),
585[data-state~="open"]:is(.w--open, :has(.w--open)),
586[data-state~="pressed"]:is([aria-pressed="true"], :has([aria-pressed="true"])),
587[data-state~="expanded"]:is([aria-expanded="true"], :has([aria-expanded="true"])),
588[data-state~="external"]:is([target="_blank"], :has([target="_blank"])) { 
589  --_state---true: 0; --_state---false: 1;
590}
591.wf-design-mode [data-trigger~="preview"],
592[data-trigger~="focus"]:is(:focus-visible, :has(:focus-visible)),
593[data-trigger~="group"]:has([data-trigger~="focus-other"]:focus-visible, [data-trigger~="focus-other"] :focus-visible)
594[data-trigger~="focus-other"]:not(:focus-visible, :has(:focus-visible)) {
595  --_trigger---on: 0; --_trigger---off: 1;
596}
597@media (hover: hover) {
598  [data-trigger~="hover"]:hover,
599  [data-trigger~="hover-if-clickable"]:has(.clickable_wrap:not(.w-condition-invisible)):hover,
600  [data-trigger~="group"]:has([data-trigger~="hover-other"]:hover) [data-trigger~="hover-other"]:not(:hover) { 
601    --_trigger---on: 0; --_trigger---off: 1;
602  }
603  [data-trigger~="hover-other"]:hover { --_trigger---on: 1 !important; --_trigger---off: 0 !important; }
604}
605@media (hover: none) {
606  [data-trigger~="mobile"] { --_trigger---on: 0; --_trigger---off: 1; }
607}
608/* Slot Styler */
609[data-slot] > .w-dyn-list,
610[data-slot] > .w-dyn-list > *,
611[data-slot] > .w-dyn-list > * > *,
612[data-slot] > .u-display-contents > .w-dyn-list,
613[data-slot] > .u-display-contents > .w-dyn-list > *,
614[data-slot] > .u-display-contents > .w-dyn-list > * > *,
615[data-slot] > .u-display-contents > .u-display-contents > .w-dyn-list,
616[data-slot] > .u-display-contents > .u-display-contents > .w-dyn-list > *,
617[data-slot] > .u-display-contents > .u-display-contents > .w-dyn-list > * > * {
618  display: contents;
619}
620/* Layout Slot */
621.u-layout-column-2:has(> :not(.u-image-wrapper,.u-video,.u-overlay)) {
622  aspect-ratio: auto;
623  border-radius: 0;
624  overflow: visible;
625}
626.u-layout-column-2:not(:has(> :not(.u-image-wrapper,.u-video,.u-overlay))) :is(.u-image-wrapper,.u-video,.u-overlay) {
627  position: absolute;
628  height: 100%;
629}
630/* Responsive Styles */
631[data-large-columns="1"] { display: flex; }
632[data-large-columns="2"] { display: grid; --_column-count---value: 2; }
633[data-large-columns="3"] { display: grid; --_column-count---value: 3; }
634[data-large-columns="4"] { display: grid; --_column-count---value: 4; }
635[data-large-columns="5"] { display: grid; --_column-count---value: 5; }
636[data-large-columns="6"] { display: grid; --_column-count---value: 6; }
637[data-large-columns="7"] { display: grid; --_column-count---value: 7; }
638[data-large-columns="8"] { display: grid; --_column-count---value: 8; }
639[data-large-columns="9"] { display: grid; --_column-count---value: 9; }
640[data-large-columns="10"] { display: grid; --_column-count---value: 10; }
641[data-large-columns="11"] { display: grid; --_column-count---value: 11; }
642[data-large-columns="12"] { display: grid; --_column-count---value: 12; }
643.slider_offset { --slide-count: var(--lg); --lg: 3; --md: var(--lg); --sm: var(--md); --xs: var(--sm); }
644@container (width < 53em) {
645  * {
646    --_responsive---large: 0;
647    --_responsive---medium: 1;
648    --flex-medium: flex;
649    --none-medium: none;
650    --column-medium: column;
651    --row-medium: row;
652    --start-medium: start;
653    --center-medium: center;
654    --end-medium: end;
655    --first-medium: -1;
656    --last-medium: 1;
657    --unset-medium: unset;
658    --relative-medium: relative;
659  }
660  [data-medium-columns="1"] { display: flex; }
661  [data-medium-columns="2"] { display: grid; --_column-count---value: 2; }
662  [data-medium-columns="3"] { display: grid; --_column-count---value: 3; }
663  [data-medium-columns="4"] { display: grid; --_column-count---value: 4; }
664  [data-medium-columns="5"] { display: grid; --_column-count---value: 5; }
665  [data-medium-columns="6"] { display: grid; --_column-count---value: 6; }
666  [data-medium-columns="7"] { display: grid; --_column-count---value: 7; }
667  [data-medium-columns="8"] { display: grid; --_column-count---value: 8; }
668  [data-medium-columns="9"] { display: grid; --_column-count---value: 9; }
669  [data-medium-columns="10"] { display: grid; --_column-count---value: 10; }
670  [data-medium-columns="11"] { display: grid; --_column-count---value: 11; }
671  [data-medium-columns="12"] { display: grid; --_column-count---value: 12; }
672  .slider_offset { --slide-count: var(--md); }
673}
674@container (width < 42em) {
675  * {
676    --_responsive---medium: 0;
677    --_responsive---small: 1;
678    --flex-small: flex;
679    --none-small: none;
680    --column-small: column;
681    --row-small: row;
682    --start-small: start;
683    --center-small: center;
684    --end-small: end;
685    --first-small: -1;
686    --last-small: 1;
687    --unset-small: unset;
688    --relative-small: relative;
689  }
690  [data-small-columns="1"] { display: flex; }
691  [data-small-columns="2"] { display: grid; --_column-count---value: 2; }
692  [data-small-columns="3"] { display: grid; --_column-count---value: 3; }
693  [data-small-columns="4"] { display: grid; --_column-count---value: 4; }
694  [data-small-columns="5"] { display: grid; --_column-count---value: 5; }
695  [data-small-columns="6"] { display: grid; --_column-count---value: 6; }
696  [data-small-columns="7"] { display: grid; --_column-count---value: 7; }
697  [data-small-columns="8"] { display: grid; --_column-count---value: 8; }
698  [data-small-columns="9"] { display: grid; --_column-count---value: 9; }
699  [data-small-columns="10"] { display: grid; --_column-count---value: 10; }
700  [data-small-columns="11"] { display: grid; --_column-count---value: 11; }
701  [data-small-columns="12"] { display: grid; --_column-count---value: 12; }
702  .slider_offset { --slide-count: var(--sm); }
703}
704@container (width < 27em) {
705  * {
706    --_responsive---small: 0;
707    --_responsive---xsmall: 1;
708    --flex-xsmall: flex;
709    --none-xsmall: none;
710    --column-xsmall: column;
711    --row-xsmall: row;
712    --start-xsmall: start;
713    --center-xsmall: center;
714    --end-xsmall: end;
715    --first-xsmall: -1;
716    --last-xsmall: 1;
717    --unset-xsmall: unset;
718    --relative-xsmall: relative;
719  }
720  [data-xsmall-columns="1"] { display: flex; }
721  [data-xsmall-columns="2"] { display: grid; --_column-count---value: 2; }
722  [data-xsmall-columns="3"] { display: grid; --_column-count---value: 3; }
723  [data-xsmall-columns="4"] { display: grid; --_column-count---value: 4; }
724  [data-xsmall-columns="5"] { display: grid; --_column-count---value: 5; }
725  [data-xsmall-columns="6"] { display: grid; --_column-count---value: 6; }
726  [data-xsmall-columns="7"] { display: grid; --_column-count---value: 7; }
727  [data-xsmall-columns="8"] { display: grid; --_column-count---value: 8; }
728  [data-xsmall-columns="9"] { display: grid; --_column-count---value: 9; }
729  [data-xsmall-columns="10"] { display: grid; --_column-count---value: 10; }
730  [data-xsmall-columns="11"] { display: grid; --_column-count---value: 11; }
731  [data-xsmall-columns="12"] { display: grid; --_column-count---value: 12; }
732  .slider_offset { --slide-count: var(--xs); }
733}
734</style></div><div class="w-embed"><style>
735/* [ASA] AI Shopping Assistant page, 16 Sep 2026 */
736html[data-wf-page="6a992fe4586a2d690ffacbc0"] .section-cell.max-h-30:has(.cs-asa-hero){max-height:none}
737/* Steps row: no lilac bar underneath (overrides the MG-42 ::after rule above) */
738html[data-wf-page="6a992fe4586a2d690ffacbc0"] .steps_row::after{display:none}
739/* Dark variant of Section / Hero Assistant Card */
740.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .u-heading,.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .u-heading *{color:#fff}
741.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .u-text,.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .u-text *{color:rgba(255,255,255,.82)}
742.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .eyebrow,.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .eyebrow *{color:#c3c7fc}
743.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .cs-asa-hero{background:transparent;padding:0;border-radius:0}
744.w-variant-56d9bf4b-58b7-4670-27da-a61685cddbc8 .bg-grad{display:none}
745html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_anchor:first-child{border-left:0}
746html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_anchor:hover{background:rgba(255,255,255,.05)}
747html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_anchor_icon img{width:18px;height:18px;display:block}
748html[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}
749html[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}
750html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_cmp_row:first-child{border-top:0}
751html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_tab.w--current{background:#fff;border-color:#e7e7f2 #e7e7f2 transparent}
752html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_tab.w--current .asa_tab_eyebrow{color:#f36a4d}
753html[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)}
754html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_connector::before{left:0}
755html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_connector::after{right:0}
756html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_dark .u-heading,html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_dark .u-heading *{color:#fff}
757html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_dark .u-text,html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_dark .u-text *{color:rgba(255,255,255,.78)}
758html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_head .u-text{margin-left:auto;margin-right:auto}
759html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_head .u-heading{margin-left:auto;margin-right:auto}
760html[data-wf-page="6a992fe4586a2d690ffacbc0"] [data-cs-section]{scroll-margin-top:7rem}
761html[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;
761display:block;flex:0 0 auto}
762html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_pane{display:none}
763html[data-wf-page="6a992fe4586a2d690ffacbc0"] .asa_pane.w--tab-active{display:block}
764/* Two-routes reveal: hidden once JS runs, animated when in view, replayed whenever a pane becomes active */
765@keyframes csAsaUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
766@keyframes csAsaPop{0%{opacity:0;transform:scale(.72)}62%{opacity:1;transform:scale(1.04)}100%{opacity:1;transform:scale(1)}}
767[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}
768[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}
769[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}
770[data-cs-section="asa-routes"] .asa_pdp>
770:nth-child(1){animation-delay:.05s}
771[data-cs-section="asa-routes"] .asa_pdp>:nth-child(2){animation-delay:.18s}
772[data-cs-section="asa-routes"] .asa_a_body>:nth-child(1){animation-delay:.3s}
773[data-cs-section="asa-routes"] .asa_a_body>:nth-child(2){animation-delay:.45s}
774[data-cs-section="asa-routes"] .asa_a_body>:nth-child(3){animation-delay:.6s}
775[data-cs-section="asa-routes"] .asa_a_body>:nth-child(4){animation-delay:.75s}
776[data-cs-section="asa-routes"] .asa_a_body>:nth-child(5){animation-delay:.9s}
777[data-cs-section="asa-routes"] .asa_agent_main>:nth-child(2){animation-delay:.05s}
778[data-cs-section="asa-routes"] .asa_agent_main>:nth-child(3){animation-delay:.25s}
779[data-cs-section="asa-routes"] .asa_agent_main>:nth-child(4){animation-delay:.45s}
780[data-cs-section="asa-routes"] .asa_agent_main>:nth-child(5){animation-delay:.65s}
781@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}}
782@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}}
783@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}}
784@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}}
785</style></div></div><div class="w-embed w-iframe"><!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 785-786
785
786<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
786GTM-TPR3D35
vendor: 83 bytes, lines 786-787
786"
787height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
788<!-- 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">
788<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-
788p-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" aria-current="page" class="mega-nav__panel-link w--current">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" class="mega-nav__panel-link">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><header class="cs-hero-product-pages no-title"><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-text-align-center-5"><div data-number="30" data-wf--typography-heading--variant="h2" class="u-heading w-richtext  "><h1>About<span class="cf-gradient-span-2"> ChannelSight</span></h1></div><div class="cs-max-width-large-12 align-center"><div class="cs-text-size-xlarge-2"><strong class="bold-text-15">Our employees connect Brands, Retailers and Consumers, delivering insights on user engagement with digital content and tools to maximise conversions</strong></div></div></div></div><div data-wf--section-spacer--variant="small" class="section-spacer w-variant-b31f49ef-b5f7-e9d6-d1cd-331557c4e573"></div></header><div id="mission" class="explainer-section"><div data-wf--section-spacer--variant="small" class="section-spacer w-variant-b31f49ef-b5f7-e9d6-d1cd-331557c4e573"></div><div class="u-container"><div class="w-layout-grid cs---grid-2-columns-text-left"><div data-w-id="1dab581d-e748-bdb5-4fb0-6f13725fb195" 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="cs---mg-bottom-16px-6"><div class="cs---color-neutral-813"><div class="cs-layout-content"><h2 class="cs-heading-medium">Our<span class="cf-gradient-span-2"><strong class="bold-text-8 bold small"> Mission</strong></span></h2></div></div></div><div class="cs---mg-bottom-48px-6"><div class="cs---color-neutral-812"><p class="cs---paragraph-default-7">To help Brands use data to strengthen their products online performance and maximise conversions at every stage of the consumer journey.<br/><br/>The ChannelSight team is committed to improving the world of eCommerce through our culture of innovation and learning. We are passionate about our customers’ successes.</p></div></div></div><img src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/646f225a37da85cbc0fbecaa_ChannelSight%20mission.avif" id="w-node-_1dab581d-e748-bdb5-4fb0-6f13725fb1a4-9c2f67f5" 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-w-id="1dab581d-e748-bdb5-4fb0-6f13725fb1a4" alt="Our Mission" class="image-2"/></div></div><div data-wf--section-spacer--variant="small" class="section-spacer w-variant-b31f49ef-b5f7-e9d6-d1cd-331557c4e573"></div></div><div id="values" class="use-cases"><div class="u-container"><div class="cs---text-center-19"><div data-number="30" data-wf--typography-heading--variant="h3" class="u-heading w-variant-f34fd750-6482-8ecd-90c5-85d8505fd6f2 w-richtext  "><h2>Our <span class="cf-gradient-span-2">Values</span></h2></div></div><div class="cs---container-default-4 w-container"><div data-current="Tab 6" data-easing="ease" data-duration-in="300" data-duration-out="100" class="cs-tabs-parent-1 w-tabs"><div class="cs-flat-tabs-menu-1 values w-tab-menu"><a data-w-tab="Tab 1" class="cs-flat-tab-1 w-inline-block w-tab-link"><div class="h3">Resilience</div></a><a data-w-tab="Tab 3" class="cs-flat-tab-1 w-inline-block w-tab-link"><div>Ambition</div></a><a data-w-tab="Tab 5" class="cs-flat-tab-1 w-inline-block w-tab-link"><div>Innovation</div></a><a data-w-tab="Tab 6" class="cs-flat-tab-1 w-inline-block w-tab-link w--current"><div>Integrity</div></a></div><div class="cs-tabs-content-2 w-tab-content"><div data-w-tab="Tab 1" class="w-tab-pane"><div class="cs-three-column-grid-2"><div class="w-layout-grid cs---grid-2-columns-gap-56px-2"><div class="div-block-11"><div class="cs-wc---mg-bottom-16px-5"><div class="cs-wc--color-neutral-809"><h3 class="cs-tab-t1">Resilience</h3></div></div><div class="cs-wc---mg-bottom-32px-3"><div class="cs-wc--color-neutral-808"><p class="p2">We don’t let setbacks beat us – we try harder; we always get up and try again, and again, and again. <br/>‍<br/><em>“Our team is agile, process-driven and, most importantly, adapts constantly to changes. Our company ethos encompasses strong business resilience and perseverance. In a team like ChannelSight’s, you are bound to meet all who encompass this value. Whether it is digital transformation or overcoming the challenging issues, we turn and thrive.”  </em><br/><br/>Shreya Prabhu, <br/>Revenue Operations Manager </p></div></div></div><div><img sizes="100vw" srcset="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/646f2703982c86282233442d_ChannelSight%20Resilience-p-500.avif 500w, https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/646f2703982c86282233442d_ChannelSight%20Resilience.avif 709w" alt="Resilience" src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/646f2703982c86282233442d_ChannelSight%20Resilience.avif" class="cs---border-radius-24px-3"/></div></div></div></div><div data-w-tab="Tab 3" class="w-tab-pane"><div class="cs-three-column-grid-2"><div id="w-node-b7b27c74-8746-045b-b4e2-63a9fda73c8f-9c2f67f5" class="cs-wrapped-card-2 spark-stacked"><div class="w-layout-grid cs---grid-2-columns-gap-56px-2"><div class="div-block-11"><div class="cs-wc---mg-bottom-16px-5"><div class="cs-wc--color-neutral-809"><h3 class="cs-tab-t1">Ambition</h3></div></div><div class="cs-wc---mg-bottom-32px-3"><div class="cs-wc--color-neutral-808"><p class="p2">We are competitive, self-driven and passionate about being the best. <br/><br/><em>“We have seen many valuable people working hard to progress in ChannelSight and have a palpable impact in the company, not only for their own personal growth. ChannelSight has been creating a working climate that allows people to grow and give them this recognition on their ambition to thrive and succeed, individually and as a team. I have countless examples of colleagues that have been stepping up and proved their ambition and worth.”  </em><br/><br/>Oana Brescan,<br/>Client Support Manager</p></div></div></div><div class="div-block-44"><img sizes="100vw" srcset="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/646f2694428dd7ce97fa15fa_ChannelSight%20ambition-p-500.avif 500w, https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/646f2694428dd7ce97fa15fa_ChannelSight%20ambition.avif 709w" alt="Ambition" src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/646f2694428dd7ce97fa15fa_ChannelSight%20ambition.avif" loading="lazy" class="cs---border-radius-24px-3"/></div></div></div></div></div><div data-w-tab="Tab 5" class="w-tab-pane"><div class="cs-three-column-grid-2"><div id="w-node-b7b27c74-8746-045b-b4e2-63a9fda73ca4-9c2f67f5" class="cs-wrapped-card-2 spark-stacked"><div class="w-layout-grid cs---grid-2-columns-gap-56px-2"><div class="div-block-11"><div class="cs-wc---mg-bottom-16px-5"><div class="cs-wc--color-neutral-809"><h3 class="cs-tab-t1">Innovation</h3></div></div><div class="cs-wc---mg-bottom-32px-3"><div class="cs-wc--color-neutral-808"><p class="p2">We value design thinking, encourage problem solving and strive to challenge the status quo.<strong><br/>‍</strong><br/><em>“A team full of entrepreneurial spirit. Rebels who challenge the status quo. We are innovators and inventors. Join us and you’ll be tasked with thinking on your feet, solving problems and making your mark!”  </em><br/><br/>Alan O’Sullivan, <br/>Technical Data Acquisition Lead<strong> <br/></strong></p></div></div></div><div><img alt="Innovation" src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/646f268872fb7ac0d2445ce1_ChannelSight%20Innovation.avif" class="cs---border-radius-24px-3"/></div></div></div></div></div><div data-w-tab="Tab 6" class="w-tab-pane w--tab-active"><div class="cs-three-column-grid-2"><div id="w-node-_168265a3-635f-2f86-3594-8da6ae06f288-9c2f67f5" class="cs-wrapped-card-2 spark-stacked"><div class="w-layout-grid cs---grid-2-columns-gap-56px-2"><div class="div-block-11"><div class="cs-wc---mg-bottom-16px-5"><div class="cs-wc--color-neutral-809"><h3 class="cs-tab-t1">Integrity</h3></div></div><div class="cs-wc---mg-bottom-32px-3"><div class="cs-wc--color-neutral-808"><p class="p2">We are straightforward, honest, and we keep our promises in the pursuit of excellence.<strong> <br/>‍</strong><br/><em>“It’s important to respect deadline, but there are cases when problems arise in a late-minute fashion. It’s times like those when integrity of the team shows best and team-mates step in to share the burden and make sure we deliver as promised.” </em> <br/><br/>Daniel Pirvulescu, <br/>
788Lead Infrastructure and DevOps Engineer <strong><br/></strong></p></div></div></div><div><img sizes="(max-width: 479px) 48vw, (max-width: 767px) 49vw, (max-width: 991px) 356px, 462px" srcset="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/646f267b428dd7ce97fa03a7_ChannelSight%20Integrity-p-500.avif 500w, https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/646f267b428dd7ce97fa03a7_ChannelSight%20Integrity.avif 709w" src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/646f267b428dd7ce97fa03a7_ChannelSight%20Integrity.avif" alt="Integrity" class="cs---border-radius-24px-3"/></div></div></div></div></div></div></div></div></div></div><div class="explainer-section"><div data-wf--section-spacer--variant="small" class="section-spacer w-variant-b31f49ef-b5f7-e9d6-d1cd-331557c4e573"></div><div class="u-container"><div class="w-layout-grid cs---grid-2-columns-text-left"><div data-w-id="5c5c6d32-e8b0-b076-e210-58cdaa0b9369" 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" class="div-block-58"><div class="cs---mg-bottom-16px-6"><div class="cs---color-neutral-813"><div class="cs-layout-content"><h2 class="cs-heading-medium"><strong class="blue">People of ChannelSight</strong></h2></div></div></div><div class="cs---mg-bottom-48px-6"><div class="cs---color-neutral-812"><p class="cs---paragraph-default-7">Our mission is to build and promote a vibrant and inclusive culture that empowers our team to thrive. We achieve this by actively identifying opportunities, providing valuable resources, and fostering a strong support network at every stage of their career growth journey.</p></div></div></div><div data-w-id="c859c7e2-2a45-698c-5e18-23295bc39048" 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="cs---mg-bottom-16px-6"><div class="cs---color-neutral-813"><div class="cs-layout-content"><h2 class="cs-heading-medium"><strong class="blue">Sustainability and Community</strong></h2></div></div></div><div class="cs---mg-bottom-48px-6"><div class="cs---color-neutral-812"><p class="cs---paragraph-default-7">We are committed to making a positive impact. We recognise the significance of supporting charities and non-profit organizations that hold both personal and community significance. To support this commitment, we have established the ChannelSight Volunteer Committee as a dedicated organization within ChannelSight.<br/>‍</p></div></div></div></div><div class="yt-vid-wrap no-lightbox-10"><div style="padding-top:56.17021276595745%" class="youtube-wrapper no-lightbox-11 w-video w-embed"><iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fxmbt3xROmUA%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dxmbt3xROmUA&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fxmbt3xROmUA%2Fhqdefault.jpg&type=text%2Fhtml&schema=youtube" width="940" height="528" scrolling="no" allowfullscreen title="ChannelSight Climate Action Committee"></iframe></div></div></div><div data-wf--section-spacer--variant="small" class="section-spacer w-variant-b31f49ef-b5f7-e9d6-d1cd-331557c4e573"></div></div><section data-wf--section-testimonial--variant="base" class="testimonial"><div class="cs-page-padding-25"><div class="cs-container-large-23"><div class="cs-padding-vertical-xhuge-22"><div class="cs-max-width-xlarge-4 align-center"><div class="cs-testimonial01_component-2"><h3 class="cs-heading-medium-10-copy">&quot;There is a sense of community within the ChannelSight team. Everyone is approachable and supportive. The team takes on challenges together and helps each other along the way 
788with lots of support from management. &quot;</h3><div class="cs-heading-tiny-2-copy">Nicole Campion</div><div class="cs-text-size-medium-26-copy">Sr. Manager, Customer Success Team</div></div></div></div></div></div></section><footer class="cs-footer"><div class="u-embed-js w-embed w-script"><!-- Mega Nav - Directional Hover, with WIDTH morph + POSITION-under-toggle added.
789     Replaces your existing initMegaNavDirectionalHover() block.
790     Changes vs original marked with // ++ WIDTH and // ++ POS -->
791<script>
792function initMegaNavDirectionalHover() {
793  const DUR = {
794    bgMorph: 0.4, contentIn: 0.3, contentOut: 0.2, stagger: 0.25,
795    backdropIn: 0.3, backdropOut: 0.2, openScale: 0.35, closeScale: 0.25,
796  };
797  const HOVER_ENTER = 120;
798  const HOVER_LEAVE = 150;
799
800  const menuWrap = document.querySelector("[data-menu-wrap]");
801  const navList = document.querySelector("[data-nav-list]");
802  const dropWrapper = document.querySelector("[data-dropdown-wrapper]");
803  const dropContainer = document.querySelector("[data-dropdown-container]");
804  const dropBg = document.querySelector("[data-dropdown-bg]");
805  const backdrop = document.querySelector("[data-menu-backdrop]");
806  const toggles = [...document.querySelectorAll("[data-dropdown-toggle]")];
807  const panels = [...document.querySelectorAll("[data-nav-content]")];
808  const burger = document.querySelector("[data-burger-toggle]");
809  const backBtn = document.querySelector("[data-mobile-back]");
810  const logo = document.querySelector("[data-menu-logo]");
811  const [lineTop, lineMid, lineBot] = ["top", "mid", "bot"].map(
812    (id) => document.querySelector(`[data-burger-line='${id}']`)
813  );
814
815  const state = {
816    isOpen: false, activePanel: null, activePanelIndex: -1,
817    isMobile: window.innerWidth <= 991, mobileMenuOpen: false, mobilePanelActive: null,
818    hoverTimer: null, leaveTimer: null, tl: null, mobileTl: null, mobilePanelTl: null,
819  };
820
821  const getPanel = (name) => document.querySelector(`[data-nav-content="${name}"]`);
822  const getToggle = (name) => document.querySelector(`[data-dropdown-toggle="${name}"]`);
823  const getFade = (el) => el.querySelectorAll("[data-menu-fade]");
824  const getInner = (el) => el && el.querySelector(".mega-nav__dropdown-inner"); // ++ WIDTH
825  // ++ POS: horizontal offset to slide the dropdown's left edge under its toggle (clamped inside the wrapper)
826  const panelOffset = (name, w) => {
827    const toggle = getToggle(name);
828    if (!toggle) return 0;
829    const raw = toggle.getBoundingClientRect().left - dropWrapper.getBoundingClientRect().left;
830    const maxOffset = Math.max(0, dropWrapper.getBoundingClientRect().width - w);
831    return Math.max(0, Math.min(raw, maxOffset));
832  };
833  const getNavItems = () => navList.querySelectorAll("[data-nav-list-item]");
834  const getIndex = (name) => toggles.indexOf(getToggle(name));
835  const stagger = (n) => (n <= 1 ? 0 : { amount: DUR.stagger });
836
837  function clearTimers() {
838    clearTimeout(state.hoverTimer); clearTimeout(state.leaveTimer);
839    state.hoverTimer = state.leaveTimer = null;
840  }
841  function killTl(key) { if (state[key]) { state[key].kill(); state[key] = null; } }
842  function killDropdown() {
843    killTl("tl"); gsap.killTweensOf(dropContainer); gsap.killTweensOf(backdrop);
844    panels.forEach((p) => { gsap.killTweensOf(p); gsap.killTweensOf(getFade(p)); });
845  }
846  function killMobile() { killTl("mobileTl"); gsap.killTweensOf([navList, lineTop, lineMid, lineBot]); }
847  function killMobilePanel() {
848    killTl("mobilePanelTl"); gsap.killTweensOf(getNavItems()); gsap.killTweensOf([backBtn, logo]);
849    panels.forEach((p) => { gsap.killTweensOf(p); gsap.killTweensOf(getFade(p)); });
850  }
851  function resetToggles() { toggles.forEach((t) => t.setAttribute("aria-expanded", "false")); }
852
853  function resetDesktop() {
854    panels.forEach((p) => {
855      gsap.set(p, { visibility:"hidden", opacity:0, pointerEvents:"none", x:0, y:0, xPercent:0 });
856      gsap.set(getFade(p), { autoAlpha:0, x:0, y:0, xPercent:0 });
857      const inner = getInner(p); if (inner) gsap.set(inner, { clearProps: "width" }); // ++ WIDTH
858    });
859    gsap.set(dropContainer, { height:0, clearProps:"transform,width" });               // ++ WIDTH (was "transform")
860    gsap.set(backdrop, { autoAlpha:0 });
861    menuWrap.setAttribute("data-menu-open", "false");
862    resetToggles();
863  }
864
865  function setupMobile() {
866    panels.forEach((p) => {
867      gsap.set(p, { autoAlpha: 0, xPercent: 0, visibility: "visible", pointerEvents: "none" });
868      gsap.set(getFade(p), { xPercent: 20, autoAlpha: 0 });
869      const inner = getInner(p); if (inner) gsap.set(inner, { clearProps: "width" }); // ++ WIDTH
870    });
871    gsap.set(getNavItems(), { xPercent: 0, y: 0, autoAlpha: 1 });
872    gsap.set(navList, { autoAlpha: 0, x: 0 });
873    gsap.set(backBtn, { autoAlpha: 0 });
874    gsap.set(logo, { autoAlpha: 1 });
875    gsap.set(dropContainer, { clearProps: "height,width" });                          // ++ WIDTH
876    gsap.set(backdrop, { autoAlpha: 0 });
877  }
878
879  // ++ WIDTH: now returns BOTH height and natural content width.
880  function measurePanel(name) {
881    const el = getPanel(name);
882    if (!el) return { h: 0, w: 0 };
883    const inner = getInner(el) || el;
884    const s = el.style, is = inner.style;
885    const pv = s.visibility, po = s.opacity, pp = s.pointerEvents, pw = is.width;
886    s.visibility = "visible"; s.opacity = "0"; s.pointerEvents = "none";
887    is.width = "max-content";                          // let the inner size to its content
888    const h = el.getBoundingClientRect().height;
889    const w = inner.getBoundingClientRect().width;     // natural content width
890    is.width = pw;
891    s.visibility = pv; s.opacity = po; s.pointerEvents = pp;
892    return { h, w };
893  }
894
895  function openDropdown(panelName) {
896    if (state.isOpen && state.activePanel === panelName) return;
897    if (state.isOpen) return switchPanel(state.activePanel, panelName);
898
899    const size = measurePanel(panelName);              // ++ WIDTH
900    if (!size.h) return;
901
902    killDropdown();
903    resetDesktop();
904
905    const el = getPanel(panelName);
906    const fade = getFade(el);
907    const toggle = getToggle(panelName);
908    const inner = getInner(el);                        // ++ WIDTH
909
910    state.isOpen = true;
911    state.activePanel = panelName;
912    state.activePanelIndex = getIndex(panelName);
913    menuWrap.setAttribute("data-menu-open", "true");
914    if (toggle) toggle.setAttribute("aria-expanded", "true");
915
916    if (inner) gsap.set(inner, { width: size.w });     // ++ WIDTH: pin inner so columns don't squish
917    const offset = panelOffset(panelName, size.w);     // ++ POS
918    gsap.set(dropContainer, { height: 0, width: size.w, x: offset }); // ++ WIDTH + POS: open at correct width, under the toggle
919
920    const tl = gsap.timeline();
921    state.tl = tl;
922    tl.to(backdrop, { autoAlpha: 1, duration: DUR.backdropIn, ease: "power2.out" }, 0);
923    tl.to(dropContainer, { height: size.h, duration: DUR.openScale, ease: "power3.out" }, 0);
924    tl.set(el, { visibility: "visible", opacity: 1, pointerEvents: "auto" }, 0.05);
925    if (fade.length) {
926      tl.fromTo(fade, { autoAlpha: 0, y: 8 },
927        { autoAlpha: 1, y: 0, duration: DUR.contentIn, stagger: stagger(fade.length), ease: "power3.out" }, 0.1);
928    }
929  }
930
931  function closeDropdown() {
932    if (!state.isOpen) return;
933    const el = getPanel(state.activePanel);
934    const fade = el ? getFade(el) : [];
935    killDropdown();
936    const tl = gsap.timeline({
937      onComplete() {
938        state.isOpen = false; state.activePanel = null; state.activePanelIndex = -1;
939        state.tl = null; resetDesktop();
940      },
941    });
942    state.tl = tl;
943    if (fade.length) tl.to(fade, { autoAlpha: 0, y: -4, duration: DUR.contentOut * 0.7, ease: "power2.in" }, 0);
944    tl.to(dropContainer, { height: 0, duration: DUR.closeScale, ease: "power2.in" }, 0.05);
945    tl.to(backdrop, { autoAlpha: 0, duration: DUR.backdropOut, ease: "power2.out" }, 0);
946    if (el) tl.set(el, { visibility: "hidden", opacity: 0, pointerEvents: "none" });
947  }
948
949  function switchPanel(fromName, toName) {
950    const dir = getIndex(toName) > getIndex(fromName) ? 1 : -1;
951    const fromEl = getPanel(fromName), toEl = getPanel(toName);
952    if (!fromEl || !toEl) return;
953
954    const fromFade = getFade(fromEl), toFade = getFade(toEl);
955    const toSize = measurePanel(toName);               // ++ WIDTH
956    if (!toSize.h) return;
957
958    killDropdown();
959
960    panels.forEach((p) => {
961      gsap.set(p, { visibility: "hidden", opacity: 0, pointerEvents: "none", xPercent: 0 });
962      gsap.set(getFade(p), { autoAlpha: 0, x: 0, y: 0 });
963    });
964    gsap.set(fromEl, { visibility: "visible", opacity: 1, pointerEvents: "auto", x: 0 });
965    if (fromFade.length) gsap.set(fromFade, { autoAlpha: 1, x: 0, y: 0 });
966    gsap.set(backdrop, { autoAlpha: 1 });
967
968    const toInner = getInner(toEl);                    // ++ WIDTH
969    if (toInner) gsap.set(toInner, { width: toSize.w });
970    const toOffset = panelOffset(toName, toSize.w);    // ++ POS
971
972    const toToggle = getToggle(toName);
973    state.activePanel = toName;
974    state.activePanelIndex = getIndex(toName);
975    resetToggles();
976    if (toToggle) toToggle.setAttribute("aria-expanded", "true");
977
978    const xOut = dir * -30, xIn = dir * 30;
979    const tl = gsap.timeline();
980    state.tl = tl;
981
982    if (fromFade.length) tl.to(fromFade, { autoAlpha: 0, x: xOut, duration: DUR.contentOut, ease: "power2.in" }, 0);
983    tl.set(fromEl, { visibility: "hidden", opacity: 0, pointerEvents: "none", xPercent: 0 }, DUR.contentOut);
984    if (fromFade.length) tl.set(fromFade, { x: 0 }, DUR.contentOut);
985    tl.to(dropContainer, { height: toSize.h, duration: DUR.bgMorph, ease: "power3.out" }, 0.05);
986    tl.to(dropContainer, { width: toSize.w, duration: DUR.bgMorph, ease: "power3.out" }, 0.05); // ++ WIDTH: morph width with the same easing
987    tl.to(dropContainer, { x: toOffset, duration: DUR.bgMorph, ease: "power3.out" }, 0.05);     // ++ POS: slide under the new toggle
988    tl.set(toEl, { visibility: "visible", opacity: 1, pointerEvents: "auto", xPercent: 0 }, DUR.contentOut * 0.5);
989    if (toFade.length) {
990      tl.fromTo(toFade, { autoAlpha: 0, x: xIn },
991        { autoAlpha: 1, x: 0, duration: DUR.contentIn, stagger: stagger(toFade.length), ease: "power3.out" }, DUR.contentOut * 0.6);
992    }
993  }
994
995  function handleToggleEnter(e) {
996    if (state.isMobile) return;
997    const name = e.currentTarget.getAttribute("data-dropdown-toggle");
998    if (!name) return;
999    clearTimeout(state.leaveTimer); state.leaveTimer = null;
1000    clearTimeout(state.hoverTimer);
1001    state.hoverTimer = setTimeout(() => openDropdown(name), state.isOpen ? 0 : HOVER_ENTER);
1002  }
1003  function handleToggleLeave() {
1004    if (state.isMobile) return;
1005    clearTimeout(state.hoverTimer); state.hoverTimer = null;
1006    state.leaveTimer = setTimeout(closeDropdown, HOVER_LEAVE);
1007  }
1008  function handleWrapperEnter() { if (state.isMobile) return; clearTimeout(state.leaveTimer); state.leaveTimer = null; }
1009  function handleWrapperLeave() { if (state.isMobile) return; state.leaveTimer = setTimeout(closeDropdown, HOVER_LEAVE); }
1010
1011  function handleEscape(e) {
1012    if (e.key !== "Escape") return;
1013    if (state.isMobile) { state.mobilePanelActive ? closeMobilePanel() : state.mobileMenuOpen && closeMobileMenu(); return; }
1014    if (state.isOpen) { const t = getToggle(state.activePanel); closeDropdown(); if (t) t.focus(); }
1015  }
1016  function handleDocClick(e) {
1017    if (state.isMobile || !state.isOpen) return;
1018    if (!e.target.closest("[data-menu-wrap]")) closeDropdown();
1019  }
1020  function focusFirstLink(panelName) {
1021    setTimeout(() => {
1022      const el = getPanel(panelName); if (!el) return;
1023      const link = el.querySelector("a"); if (!link) return;
1024      gsap.set(link, { visibility: "visible" }); link.focus();
1025    }, 80);
1026  }
1027  function handleKeydownOnToggle(e) {
1028    if (state.isMobile) return;
1029    const name = e.currentTarget.getAttribute("data-dropdown-toggle");
1030    if (e.key === "Enter" || e.key === " ") {
1031      e.preventDefault();
1032      if (state.isOpen && state.activePanel === name) closeDropdown();
1033      else { openDropdown(name); focusFirstLink(name); } return;
1034    }
1035    if (e.key === "ArrowDown") { e.preventDefault(); if (!state.isOpen || state.activePanel !== name) openDropdown(name); focusFirstLink(name); }
1036    if (e.key === "Tab" && !e.shiftKey && state.isOpen && state.activePanel === name) {
1037      e.preventDefault(); const link = getPanel(name)?.querySelector("a"); if (link) link.focus();
1038    }
1039  }
1040  function handleKeydownInPanel(e) {
1041    if (state.isMobile || !state.isOpen) return;
1042    const el = getPanel(state.activePanel); if (!el) return;
1043    const links = [...el.querySelectorAll("a")];
1044    const idx = links.indexOf(document.activeElement);
1045    if (e.key === "ArrowDown") { e.preventDefault(); links[(idx + 1) % links.length].focus(); }
1046    if (e.key === "ArrowUp") { e.preventDefault(); if (idx <= 0) { const t = getToggle(state.activePanel); if (t) t.focus(); } else links[idx - 1].focus(); }
1047    if (e.key === "Tab" && !e.shiftKey && idx === links.length - 1) {
1048      e.preventDefault(); const curIdx = toggles.indexOf(getToggle(state.activePanel));
1049      const next = curIdx < toggles.length - 1 ? toggles[curIdx + 1] : null; closeDropdown(); if (next) next.focus();
1050    }
1051    if (e.key === "Tab" && e.shiftKey && idx === 0) { e.preventDefault(); const t = getToggle(state.activePanel); if (t) t.focus(); }
1052  }
1053
1054  function animateBurger(toX) {
1055    const tl = gsap.timeline({ defaults: { ease: "power2.inOut" } });
1056    if (toX) {
1057      tl.to(lineTop, { y: "0.3125em", duration: 0.15 }, 0); tl.to(lineBot, { y: "-0.3125em", duration: 0.15 }, 0);
1058      tl.to(lineMid, { autoAlpha: 0, duration: 0.1 }, 0.1);
1059      tl.to(lineTop, { rotation: 45, duration: 0.2 }, 0.15); tl.to(lineBot, { rotation: -45, duration: 0.2 }, 0.15);
1060    } else {
1061      tl.to(lineTop, { rotation: 0, duration: 0.2 }, 0); tl.to(lineBot, { rotation: 0, duration: 0.2 }, 0);
1062      tl.to(lineTop, { y: 0, duration: 0.15 }, 0.15); tl.to(lineBot, { y: 0, duration: 0.15 }, 0.15);
1063      tl.to(lineMid, { autoAlpha: 1, duration: 0.1 }, 0.15);
1064    }
1065    return tl;
1066  }
1067  function openMobileMenu() {
1068    killMobile(); state.mobileMenuOpen = true; menuWrap.setAttribute("data-menu-open", "true");
1069    burger.setAttribute("aria-expanded", "true"); document.body.style.overflow = "hidden";
1070    const items = getNavItems(); const tl = gsap.timeline(); state.mobileTl = tl;
1071    tl.add(animateBurger(true), 0); tl.to(navList, { autoAlpha: 1, duration: 0.3, ease: "power2.out" }, 0);
1072    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);
1073  }
1074  function closeMobileMenu() {
1075    const hadPanel = state.mobilePanelActive; const panelEl = hadPanel ? getPanel(hadPanel) : null;
1076    killMobile(); killMobilePanel();
1077    menuWrap.setAttribute("data-menu-open", "false"); state.mobileMenuOpen = false; state.mobilePanelActive = null;
1078    burger.setAttribute("aria-expanded", "false");
1079    const tl = gsap.timeline({ onComplete() { document.body.style.overflow = ""; state.mobileTl = null; setupMobile(); } });
1080    state.mobileTl = tl; tl.add(animateBurger(false), 0);
1081    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); }
1082    tl.to(navList, { autoAlpha: 0, duration: 0.3, ease: "power2.inOut" }, 0.05);
1083  }
1084  function openMobilePanel(panelName) {
1085    const el = getPanel(panelName); if (!el) return; killMobilePanel(); state.mobilePanelActive = panelName;
1086    const navItems = getNavItems(); const panelFade = getFade(el); const tl = gsap.timeline(); state.mobilePanelTl = tl;
1087    if (navItems.length) tl.to(navItems, { xPercent: -10, autoAlpha: 0, duration: 0.35, stagger: 0.03, ease: "power2.in" }, 0);
1088    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);
1089    tl.set(el, { autoAlpha: 1, xPercent: 0, pointerEvents: "auto" }, 0.2);
1090    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);
1091  }
1092  function closeMobilePanel() {
1093    if (!state.mobilePanelActive) return; const el = getPanel(state.mobilePanelActive); if (!el) return; killMobilePanel();
1094    const navItems = getNavItems(); const panelFade = getFade(el);
1095    const tl = gsap.timeline({ onComplete() { state.mobilePanelActive = null; state.mobilePanelTl = null; } }); state.mobilePanelTl = tl;
1096    if (panelFade.length) tl.to(el, { xPercent: 20, autoAlpha: 0, duration: 0.3, stagger: 0.02, ease: "power2.in" }, 0);
1097    tl.set(el, { autoAlpha: 0, pointerEvents: "none" }, 0.25);
1098    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);
1099    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);
1100  }
1101  function handleToggleClick(e) {
1102    if (!state.isMobile || !state.mobileMenuOpen) return;
1103    const name = e.currentTarget.getAttribute("data-dropdown-toggle");
1104    if (name) { e.preventDefault(); openMobilePanel(name); }
1105  }
1106
1107  let resizeTimer = null, lastWidth = window.innerWidth;
1108  function handleResize() {
1109    const w = window.innerWidth; if (w === lastWidth) return; lastWidth = w;
1110    clearTimeout(resizeTimer);
1111    resizeTimer = setTimeout(() => {
1112      const was = state.isMobile; state.isMobile = window.innerWidth <= 991;
1113      if (was && !state.isMobile) {
1114        killMobile(); killMobilePanel();
1115        gsap.set(navList, { clearProps: "all" }); gsap.set(getNavItems(), { clearProps: "all" });
1116        gsap.set(backBtn, { autoAlpha: 0 }); gsap.set(logo, { clearProps: "all" });
1117        gsap.set([lineTop, lineMid, lineBot], { rotation: 0, y: 0, autoAlpha: 1 });
1118        panels.forEach((p) => { gsap.set(p, { clearProps: "all" }); gsap.set(getFade(p), { clearProps: "all" }); });
1119        burger.setAttribute("aria-expanded", "false"); state.mobileMenuOpen = false; state.mobilePanelActive = null;
1120        document.body.style.overflow = ""; resetDesktop();
1121      }
1122      if (!was && state.isMobile) {
1123        killDropdown(); state.isOpen = false; state.activePanel = null; state.activePanelIndex = -1;
1124        clearTimers(); menuWrap.setAttribute("data-menu-open", "false"); resetToggles(); setupMobile();
1125      }
1126    }, 150);
1127  }
1128
1129  toggles.forEach((btn) => {
1130    btn.addEventListener("mouseenter", handleToggleEnter);
1131    btn.addEventListener("mouseleave", handleToggleLeave);
1132    btn.addEventListener("keydown", handleKeydownOnToggle);
1133    btn.addEventListener("click", handleToggleClick);
1134  });
1135  dropWrapper.addEventListener("mouseenter", handleWrapperEnter);
1136  dropWrapper.addEventListener("mouseleave", handleWrapperLeave);
1137  panels.forEach((p) => p.addEventListener("keydown", handleKeydownInPanel));
1138  backdrop.addEventListener("click", closeDropdown);
1139  document.addEventListener("keydown", handleEscape);
1140  document.addEventListener("click", handleDocClick);
1141  burger.addEventListener("click", () => state.mobileMenuOpen ? closeMobileMenu() : openMobileMenu());
1142  backBtn.addEventListener("click", closeMobilePanel);
1143  window.addEventListener("resize", handleResize);
1144
1145  state.isMobile ? setupMobile() : resetDesktop();
1146}
1147
1148document.addEventListener('DOMContentLoaded', function () { initMegaNavDirectionalHover(); });
1149</script>
1149
1150</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" aria-current="page" class="cs-footer2_link w--current">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" class="cs-footer2_link">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">
1150Customer 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>
1150<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>
1150<script src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/js/webflow.schunk.3eae1ede90d44b90.js" type="text/javascript" integrity="sha384-govLbXEOMSmK1QpUjRhIilFBWDodj7NdEQoTpVVioX4V24lVEoHQFM37e3gM82Nc" crossorigin="anonymous"></script>
1150<script src="https://cdn.prod.website-files.com/64248e7ed5f30d6effe57d5d/js/webflow.schunk.8f9d4cf43f276f84.js" type="text/javascript" integrity="sha384-RqGrHDdontl16Gdrhb29ITd29U3AguWHujIZX7w4FfHnc178DebZZ3RP3eXn1pO4" crossorigin="anonymous"></script>
1150<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>
1150<script src="https://cdn.prod.website-files.com/gsap/3.15.0/gsap.min.js" type="text/javascript"></script>
1150<script src="https://cdn.prod.website-files.com/gsap/3.15.0/ScrollTrigger.min.js" type="text/javascript"></script>
1150<script src="https://cdn.prod.website-files.com/gsap/3.15.0/InertiaPlugin.min.js" type="text/javascript"></script>
1150<script src="https://cdn.prod.website-files.com/gsap/3.15.0/Draggable.min.js" type="text/javascript"></script>
1150<script type="text/javascript">gsap.registerPlugin(ScrollTrigger,InertiaPlugin,Draggable);</script>
1150<!-- LinkedIn Tag Manager -->
1151<script type="text/javascript">
1152_linkedin_partner_id = "41470";
1153window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
1154window._linkedin_data_partner_ids.push(_linkedin_partner_id);
1155</script>
1155<script type="text/javascript">
1156(function(l) {
1157if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])};
1158window.lintrk.q=[]}
1159var s = document.getElementsByTagName("script")[0];
1160var b = document.createElement("script");
1161b.type = "text/javascript";b.async = true;
1162b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
1163s.parentNode.insertBefore(b, s);})(window.lintrk);
1164</script>
1164
1165<noscript>
1166<img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=41470&fmt=gif" />
1167</noscript>
1168<!-- End LinkedIn Tag Manager -->
1169
1170<script>
1171document.addEventListener("DOMContentLoaded", function () {
1172  if (window.location.hash) {
1173    let target = document.querySelector(window.location.hash);
1174    if (target) {
1175      setTimeout(() => {
1176        target.scrollIntoView({ behavior: "smooth", block: "start" });
1177      }, 100); // Small delay to allow page to load first
1178    }
1179  }
1180});
1181</script>
1181
1182
1183<script>
1184  document.addEventListener("DOMContentLoaded", function() {
1185    document.querySelectorAll(".text-rich-text sub").forEach(subElement => {
1186      // Create a span with a custom class and insert the text inside it
1187      const spanElement = document.createElement("span");
1188      spanElement.classList.add("text-span-grad-purp");
1189      spanElement.textContent = subElement.textContent;
1190
1191      // Replace the <sub> element with the <span>
1192      subElement.replaceWith(spanElement);
1193    });
1194  });
1195</script>
vendor: 1 bytes, line 1195
1195
1196<script>
1197  document.addEventListener("DOMContentLoaded", function() {
1198    document.querySelectorAll(".text-rich-text sup").forEach(supElement => {
1199      const spanElement = document.createElement("span");
1200      spanElement.classList.add("text-span-grad-light-purp");
1201      spanElement.textContent = supElement.textContent;
1202
1203      supElement.replaceWith(spanElement);
1204    });
1205  });
1206</script>
1206
1207
1208<!-- jQuery: Webflow already loads jQuery 3.5.1 before this footer block; the duplicate 3.6.0 load was removed (Legency, 1 Sep 2026) -->
1209
1210<script>
1211  $(document).ready(function () {
1212    gsap.registerPlugin(ScrollTrigger);
1213
1214    $('.stagger-children').each(function () {
1215      const $parent = $(this);
1216      const children = $parent.children().toArray();
1217
1218      gsap.from(children, {
1219        opacity: 0,
1220        y: '1rem',
1221        scale: 0.8,
1222        duration: 0.6,
1223        stagger: 0.08,
1224        ease: 'power2.out',
1225        scrollTrigger: {
1226          trigger: this,
1227          start: 'top 80%',
1228          toggleActions: 'play none none none'
1229        }
1230      });
1231    });
1232  });
1233</script>
1233
1234
1235<script>
1236  document.addEventListener("DOMContentLoaded", function () {
1237    gsap.registerPlugin(ScrollTrigger);
1238
1239    // Target all elements with the class 'scale-up'
1240    gsap.utils.toArray(".scale-up").forEach(el => {
1241      gsap.fromTo(el,
1242        { scale: 0.8 },
1243        {
1244          scale: 1,
1245          ease: "power2.out",
1246          scrollTrigger: {
1247            trigger: el,
1248            start: "top 100%",
1249            end: "top 50%",
1250            scrub: 1
1251          }
1252        });
1253    });
1254  });
1255</script>
1255
1256
1257
1258<!-- Lenis: loaded once in the head (1.3.4, SRI-pinned); the duplicate unpkg load was removed (Legency, 1 Sep 2026) -->
1259
1260<script>
1261// Lenis
1262const lenis = new Lenis({
1263  autoRaf: true,
1264});
1265
1266  // FinSweet List Load Integration
1267  document.addEventListener('DOMContentLoaded', () => {
1268    // Select all buttons with the 'blog-load-more' attribute
1269    const loadMoreButtons = document.querySelectorAll('[blog-load-more]');
1270
1271    loadMoreButtons.forEach(button => {
1272      button.addEventListener('click', () => {
1273        // --- THIS IS THE CRITICAL LINE BASED ON YOUR SCREENSHOTS ---
1274        // Find the FinSweet list wrapper using its specific attribute: fs-list-element="list"
1275        // This should target your 'blog22_list' element.
1276        const finSweetList = document.querySelector('[fs-list-element="list"]');
1277
1278        if (finSweetList) {
1279          console.log("FinSweet load more button clicked. Observing list:", finSweetList);
1280
1281          const observer = new MutationObserver((mutationsList, observer) => {
1282            for (const mutation of mutationsList) {
1283              // We are looking for childList changes (new elements added)
1284              // and specifically checking if any nodes were added.
1285              if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
1286                console.log("New content detected by MutationObserver.");
1287                // Immediately disconnect the observer to avoid multiple triggers for one load
1288                observer.disconnect();
1289
1290                // Wait a short moment to allow the browser to render the new elements
1291                // before re-initializing Lenis. This delay is crucial for layout calculation.
1292                setTimeout(() => {
1293                  lenis.resize(); // recalculate Lenis after the list grows (initLenis was never defined)
1294                }, 150); // Increased slightly to 150ms for robustness
1295                break; // Exit the loop after finding the relevant mutation
1296              }
1297            }
1298          });
1299
1300          // Start observing the target FinSweet list for changes to its direct children
1301          observer.observe(finSweetList, { childList: true });
1302        } else {
1303          // This warning should no longer appear if the selector '[fs-list-element="list"]' is correct.
1304          console.warn("FinSweet list wrapper not found for the clicked load more button. Please check the selector '[fs-list-element=\"list\"]'.");
1305        }
1306      });
1307    });
1308  });
1309</script>
1309
1310
1311<script>
1312function initLoopingGSAPSlider() {
1313  document.querySelectorAll('[data-gsap-slider-init]').forEach(root => {
1314    if (root._sliderCleanup) root._sliderCleanup();
1315
1316    const collection = root.querySelector('[data-gsap-slider-collection]');
1317    const track = root.querySelector('[data-gsap-slider-list]');
1318    const originals = Array.from(root.querySelectorAll('[data-gsap-slider-item]'));
1319    const controls = Array.from(root.querySelectorAll('[data-gsap-slider-control]'));
1320    if (!originals.length) return;
1321
1322    const AUTO_INTERVAL = 4000; // ms between auto-advances
1323    const STEP_DURATION = 0.6;  // s, slide animation for auto/buttons
1324    const RESUME_DELAY  = 1500; // ms after a drag before auto resumes
1325
1326    root.setAttribute('role','region');
1327    root.setAttribute('aria-roledescription','carousel');
1328    root.setAttribute('aria-label','Slider');
1329    originals.forEach((slide,i) => {
1330      slide.setAttribute('role','group');
1331      slide.setAttribute('aria-roledescription','Slide');
1332      slide.setAttribute('aria-label',`Slide ${i+1} of ${originals.length}`);
1333    });
1334
1335    const statusVar = getComputedStyle(root).getPropertyValue('--slider-status').trim();
1336    const r0 = originals[0].getBoundingClientRect();
1337    // first-to-second item distance covers flex gap AND margins
1338    const slideW = originals.length > 1
1339      ? originals[1].getBoundingClientRect().left - r0.left
1340      : r0.width + parseFloat(getComputedStyle(originals[0]).marginRight);
1341    const loopWidth = slideW * originals.length;
1342    const enabled = statusVar === 'on' && loopWidth > collection.clientWidth;
1343    root.setAttribute('data-gsap-slider-status', enabled ? 'active' : 'not-active');
1344    if (!enabled) return;
1345
1346    // one extra set beyond viewport coverage - the loop runs one set shifted left
1347    // so the lead-in space before the first card is always filled
1348    const sets = Math.max(3, Math.ceil((collection.clientWidth + loopWidth) / loopWidth) + 1);
1349    const clones = [];
1350    for (let s = 1; s < sets; s++) {
1351      originals.forEach(item => {
1352        const c = item.cloneNode(true);
1353        c.setAttribute('data-gsap-slider-clone','');
1354        track.appendChild(c);
1355        clones.push(c);
1356      });
1357    }
1358    const allItems = originals.concat(clones);
1359
1360    // real loop distance measured from the DOM - immune to gap/margin quirks
1361    const realLoop = clones[0].getBoundingClientRect().left - r0.left;
1362    // wrap window is (-2L, -L]: always at least one full set off to the left
1363    const wrapX = v => -(((-v % realLoop) + realLoop) % realLoop) - realLoop;
1364
1365    let x = 0;
1366    let hovered = false, dragging = false, tweening = false;
1367    let currentTween = null, resumeTimer = null;
1368
1369    // statuses are shared per CONTENT (original + its clones always match),
1370    // so the loop-wrap element swap never triggers a CSS transition
1371    const n = originals.length;
1372    const rank = {'active': 2, 'inview': 1, 'not-active': 0};
1373    function updateStatus() {
1374      const cRect = collection.getBoundingClientRect();
1375      const best = new Array(n).fill('not-active');
1376      allItems.forEach((slide, idx) => {
1377        const r = slide.getBoundingClientRect();
1378        const leftEdge = r.left - cRect.left;
1379        const inView = r.right > cRect.left && r.left < cRect.right;
1380        const status = Math.abs(leftEdge) < slideW / 2 ? 'active'
1381          : inView ? 'inview' : 'not-active';
1382        const j = idx % n;
1383        if (rank[status] > rank[best[j]]) best[j] = status;
1384      });
1385      allItems.forEach((slide, idx) => {
1386        const status = best[idx % n];
1387        slide.setAttribute('data-gsap-slider-item-status', status);
1388        slide.setAttribute('aria-selected', status === 'active' ? 'true' : 'false');
1389        slide.setAttribute('aria-hidden', status === 'not-active' ? 'true' : 'false');
1390      });
1391    }
1392
1393    function render(v) {
1394      x = wrapX(v);
1395      gsap.set(track, {x: x});
1396      updateStatus();
1397    }
1398
1399    function killTween() {
1400      if (currentTween) { currentTween.kill(); currentTween = null; }
1401      tweening = false;
1402    }
1403
1404    // dir 1 = next, -1 = prev; always lands on a card-aligned position
1405    function step(dir) {
1406      killTween();
1407      tweening = true;
1408      const state = {v: x};
1409      currentTween = gsap.to(state, {
1410        v: (Math.round(x / slideW) - dir) * slideW,
1411        duration: STEP_DURATION,
1412        ease: 'power2.inOut',
1413        onUpdate: () => render(state.v),
1414        onComplete: () => { tweening = false; currentTween = null; }
1415      });
1416    }
1417
1418    const autoTimer = setInterval(() => {
1419      if (!hovered && !dragging && !tweening) step(1);
1420    }, AUTO_INTERVAL);
1421
1422    root.addEventListener('mouseenter', () => {
1423      hovered = true;
1424      track.setAttribute('data-gsap-slider-list-status','grab');
1425    });
1426    root.addEventListener('mouseleave', () => {
1427      hovered = false;
1428      track.removeAttribute('data-gsap-slider-list-status');
1429    });
1430
1431    function scheduleResume() {
1432      clearTimeout(resumeTimer);
1433      resumeTimer = setTimeout(() => { dragging = false; }, RESUME_DELAY);
1434    }
1435
1436    // prev/next always enabled - no ends anymore
1437    controls.forEach(btn => {
1438      const dir = btn.getAttribute('data-gsap-slider-control') === 'next' ? 1 : -1;
1439      btn.disabled = false;
1440      btn.setAttribute('aria-label', dir === 1 ? 'Next Slide' : 'Previous Slide');
1441      btn.setAttribute('aria-disabled','false');
1442      btn.setAttribute('data-gsap-slider-control-status','active');
1443      btn.onclick = () => step(dir);
1444    });
1445
1446    // drag on a proxy so inertia can cross the wrap point; snap to card positions
1447    const proxy = document.createElement('div');
1448    let snapOffset = 0;
1449    const drag = Draggable.create(proxy, {
1450      type: 'x',
1451      trigger: track,
1452      inertia: true,
1453      throwResistance: 2000,
1454      maxDuration: 0.8,
1455      snap: {
1456        x: v => Math.round((snapOffset + v) / slideW) * slideW - snapOffset,
1457        duration: 0.4
1458      },
1459      onPressInit() {
1460        killTween();
1461        dragging = true;
1462        clearTimeout(resumeTimer);
1463        snapOffset = x - this.x; // maps proxy coords to slider coords
1464        track.setAttribute('data-gsap-slider-list-status','grabbing');
1465      },
1466      onDrag() { render(snapOffset + this.x); },
1467      onThrowUpdate() { render(snapOffset + this.x); },
1468      onRelease() {
1469        track.setAttribute('data-gsap-slider-list-status','grab');
1470        if (!this.isThrowing) scheduleResume();
1471      },
1472      onThrowComplete() { scheduleResume(); }
1473    })[0];
1474
1475    root._sliderCleanup = () => {
1476      clearInterval(autoTimer);
1477      clearTimeout(resumeTimer);
1478      killTween();
1479      drag.kill();
1480      clones.forEach(c => c.remove());
1481      gsap.set(track, {clearProps: 'x'});
1482      root._sliderCleanup = null;
1483    };
1484
1485    render(0);
1486  });
1487}
1488
1489function debounceOnWidthChange(fn, ms) {
1490  let last = innerWidth, timer;
1491  return function(...args) {
1492    clearTimeout(timer);
1493    timer = setTimeout(() => {
1494      if (innerWidth !== last) {
1495        last = innerWidth;
1496        fn.apply(this, args);
1497      }
1498    }, ms);
1499  };
1500}
1501
1502window.addEventListener('resize', debounceOnWidthChange(initLoopingGSAPSlider, 200));
1503
1504window.addEventListener('load', () => {
1505  gsap.registerPlugin(Draggable, InertiaPlugin);
1506  initLoopingGSAPSlider();
1507});
1508</script>
1508
1509
1510<script>
1511(function () {
1512  var els = document.querySelectorAll('[data-num-anim]');
1513  if (!els.length) return;
1514
1515  var reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
1516
1517  function animate(el) {
1518    var text = el.textContent;
1519    var m = text.match(/([\d,]*\.?\d+)/);
1520    if (!m) return;
1521    var raw = m[1];
1522    var target = parseFloat(raw.replace(/,/g, ''));
1523    var decimals = (raw.split('.')[1] || '').length;
1524    var useCommas = raw.indexOf(',') > -1;
1525    var prefix = text.slice(0, m.index);
1526    var suffix = text.slice(m.index + raw.length);
1527    var duration = parseInt(el.getAttribute('data-num-anim'), 10) || 1800;
1528    var start = null;
1529
1530    function fmt(v) {
1531      var s = v.toFixed(decimals);
1532      if (useCommas) {
1533        var p = s.split('.');
1534        p[0] = p[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
1535        s = p.join('.');
1536      }
1537      return s;
1538    }
1539    function frame(ts) {
1540      if (start === null) start = ts;
1541      var t = Math.min((ts - start) / duration, 1);
1542      var eased = 1 - Math.pow(1 - t, 3);
1543      el.textContent = prefix + fmt(target * eased) + suffix;
1544      if (t < 1) requestAnimationFrame(frame);
1545      else el.textContent = text;
1546    }
1547    requestAnimationFrame(frame);
1548  }
1549
1550  var io = new IntersectionObserver(function (entries) {
1551    entries.forEach(function (entry) {
1552      if (entry.isIntersecting) {
1553        io.unobserve(entry.target);
1554        if (reduced) return;
1555        animate(entry.target);
1556      }
1557    });
1558  }, { threshold: 0.4 });
1559
1560  els.forEach(function (el) { io.observe(el); });
1561})();
1562</script>
1562
1563
1564<!-- cs-hero-sharpen : Legency, 13 Aug 2026 -------------------------------
1565     The industry hero embeds size themselves with transform: scale(). Their
1566     panels use perspective()/rotateY(), so they sit on composited layers, and
1567     a transform scale resamples those layers as bitmaps - which is why they
1568     render soft. The site's own .hero-embed.is-smaller{transform:scale(.75)}
1569     resampled them a second time.
1570
1571     This converts that scaling to `zoom`, which re-lays-out so text and edges
1572     rasterise at final size, and folds the .is-smaller scale in so nothing is
1573     resampled twice. Touches nothing but .cs-hero-canvas, and no-ops on any
1574     hero already built with zoom.
1575------------------------------------------------------------------------- -->
1576<script>
1577(function () {
1578  if (!(window.CSS && CSS.supports && CSS.supports('zoom', '1'))) return;
1579
1580  function hostScale(host) {
1581    var t = host && getComputedStyle(host).transform;
1582    if (!t || t === 'none') return 1;
1583    var m = t.match(/matrix\(([^,]+),/);
1584    return m ? (parseFloat(m[1]) || 1) : 1;
1585  }
1586
1587  function patch(canvas) {
1588    var wrap = canvas.closest ? canvas.closest('.cs-hero-wrap') : null;
1589    if (!wrap) return;
1590
1591    var host = wrap.parentElement;
1592    if (host && !host.getAttribute('data-cs-sharpened')) {
1593      var hs = hostScale(host);
1594      if (hs && hs !== 1) { host.style.transform = 'none'; host.setAttribute('data-cs-scale', hs); }
1595      host.setAttribute('data-cs-sharpened', '1');
1596    }
1597    var absorbed = parseFloat((host && host.getAttribute('data-cs-scale')) || '1') || 1;
1598
1599    // Only fires when the embed's own script has just written a scale().
1600    var m = (canvas.style.transform || '').match(/scale\(([\d.]+)\)/);
1601    if (!m) return;
1602
1603    var s = parseFloat(m[1]) * absorbed;
1604    if (!s || !isFinite(s)) return;
1605    canvas.style.transform = '';
1606    canvas.style.zoom = s;
1607    wrap.style.width = (1920 * s) + 'px';
1608    wrap.style.height = (1080 * s) + 'px';
1609  }
1610
1611  function scan() {
1612    var list = document.querySelectorAll('.cs-hero-canvas');
1613    for (var i = 0; i < list.length; i++) {
1614      var c = list[i];
1615      if (!c.getAttribute('data-cs-watched')) {
1616        c.setAttribute('data-cs-watched', '1');
1617        (function (el) {
1618          new MutationObserver(function () { patch(el); })
1619            .observe(el, { attributes: true, attributeFilter: ['style'] });
1620        })(c);
1621      }
1622      patch(c);
1623    }
1624  }
1625
1626  scan();
1627  document.addEventListener('DOMContentLoaded', scan);
1628  window.addEventListener('load', scan);
1629  window.addEventListener('resize', scan);
1630  setTimeout(scan, 300); setTimeout(scan, 1000); setTimeout(scan, 2500);
1631})();
1632</script>
1632
1633
1634<!-- cs-hero-mobile : Legency, 14 Aug 2026 --------------------------------
1635     The site hides the hero graphic below 991px via .hero-embed{display:none}.
1636     That rule predates the animations, and with Graphic Type set to Animation
1637     the image alternative is off too - so the hero cell rendered completely
1638     empty on tablet and phone. Show it; the embed's own fit script scales it
1639     down to the viewport.
1640------------------------------------------------------------------------- -->
1641<style>
1642@media screen and (max-width: 991px) { .hero-embed { display: block !important; } }
1643</style>
1644
1645<!-- cs-hero-width : Legency, 14 Aug 2026 ---------------------------------
1646     The hero row is .section-content{grid-template-columns:1.25fr 1fr}, so the
1647     animation gets the SMALLER cell - 562px of a 1280px container. The artwork
1648     is ~1610px wide, so it renders at 0.29 and its 17px labels land at 5px,
1649     against the home page hero's 8.7px. That is why Adi reads them as small.
1650
1651     Flipping the ratio on industry pages only takes the animation cell to
1652     702px, so labels render ~6.2px (+24%) and the headline still sits on three
1653     lines. Scoped by URL so no other page using Section / Hero is affected.
1654     Revert = delete this block.
1655------------------------------------------------------------------------- -->
1656<script>if(/^\/industries\//.test(location.pathname))document.documentElement.classList.add('cs-industry');</script>
1656
1657<style>
1658html.cs-industry .section-content { grid-template-columns: 1fr 1.25fr !important; }
1659@media screen and (max-width: 991px) { html.cs-industry .section-content { grid-template-columns: 1fr !important; } }
1660</style>
1661
1662<!-- Start of HubSpot Embed Code -->
1663<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/7066574.js"></script>
1663
1664<!-- End of HubSpot Embed Code -->
1665
1666<!-- cs-a11y : Legency, 1 Sep 2026 -------------------------------------------
1667     (1) The skip link in the nav targets #main. Pages built before the
1668         landmark pass have a <main> with no id - give it one so the link works
1669         everywhere. (2) The product mockups are HTML embeds whose "Buy Now",
1670         "Add to Cart" and retailer buttons are decorative animation props, not
1671         controls; take them out of the tab order and the accessibility tree so
1672         they stop counting as sub-minimum tap targets.
1673------------------------------------------------------------------------- -->
1674<script>
1675(function(){
1676  function run(){
1677    if(!document.getElementById('main')){var m=document.querySelector('main');if(m&&!m.id)m.id='main';}
1678    document.querySelectorAll('.w-embed button').forEach(function(b){
1679      if(/(__buy|__btn|__al-btn|__retailer|__locate)(\s|$)/.test(b.className)){b.setAttribute('tabindex','-1');b.setAttribute('aria-hidden','true');}
1680    });
1681  }
1682  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',run);}else{run();}
1683})();
1684</script>
1684
1685
1686<!-- cs-faq-schema : Legency, 1 Sep 2026 -------------------------------------
1687     FAQ collection pages (/faq/*) carry one question and one answer each.
1688     The template marks them with data-faqpage-q / data-faqpage-a; this builds
1689     the FAQPage JSON-LD from what is actually rendered, so the markup can never
1690     drift from the visible content. No-op on every other page.
1691------------------------------------------------------------------------- -->
1692<script>
1693(function(){
1694  function run(){
1695    var q=document.querySelector('[data-faqpage-q]');
1696    var a=document.querySelector('[data-faqpage-a]');
1697    if(!q||!a)return;
1698    var qt=q.innerText.replace(/\s+/g,' ').trim();
1699    var at=a.innerText.replace(/\s+/g,' ').trim();
1700    if(!qt||!at)return;
1701    var s=document.createElement('script');
1702    s.type='application/ld+json';
1703    s.text=JSON.stringify({"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":qt,"acceptedAnswer":{"@type":"Answer","text":at}}]});
1704    document.head.appendChild(s);
1705  }
1706  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',run);}else{run();}
1707})();
1708</script>
1708
1709
1710
1711<!-- cs-hero-host : Legency, 3 Sep 2026 ----------------------------------
1712     The hero graphic cell is .section-cell{display:flex;flex-flow:column;
1713     align-items:flex-start}, which shrink-wraps the embed to its content
1714     width. The deck-style embeds (.cs-conv, .cs-wtb and any future one)
1715     declare container-type:inline-size, so their content width is zero -
1716     the animation collapsed to nothing on /our-solutions/conversational-
1717     commerce. The industry heroes only survive because their own fit
1718     script writes the same two values inline. This makes every embed
1719     pasted into a hero cell take the cell's full width. Revert = delete.
1720------------------------------------------------------------------------- -->
1721<style>
1722.section-cell > .hero-embed { align-self: stretch; width: 100%; min-width: 0; }
1723</style>
1724
1725
1726<script>
1727/* ChannelSight native video: optional per-instance accessible title. */
1728(() => {
1729  const selector = '[data-cs-video-title]';
1730  const start = () => {
1731    if (!document.querySelector(selector)) return;
1732    const state = new WeakMap();
1733    const apply = root => {
1734      const override = (root.getAttribute('data-cs-video-title') || '').trim();
1735      root.querySelectorAll('iframe').forEach(frame => {
1736        const current = frame.getAttribute('title') || '';
1737        const record = state.get(frame) || { nativeTitle: current || 'YouTube video', applied: null };
1738        if (current && current !== record.applied) record.nativeTitle = current;
1739        const next = override || record.nativeTitle;
1740        record.applied = next;
1741        state.set(frame, record);
1742        if (current !== next) frame.setAttribute('title', next);
1743      });
1744    };
1745    document.querySelectorAll(selector).forEach(apply);
1746    new MutationObserver(records => {
1747      const roots = new Set();
1748      records.forEach(record => {
1749        if (record.target instanceof Element) {
1750          const root = record.target.closest(selector);
1751          if (root) roots.add(root);
1752        }
1753        record.addedNodes.forEach(node => {
1754          if (!(node instanceof Element)) return;
1755          if (node.matches(selector)) roots.add(node);
1756          node.querySelectorAll(selector).forEach(root => roots.add(root));
1757        });
1758      });
1759      roots.forEach(apply);
1760    }).observe(document.body, {
1761      childList: true, subtree: true, attributes: true,
1762      attributeFilter: ['data-cs-video-title', 'title']
1763    });
1764  };
1765  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start, { once: true });
1766  else start();
1767})();
1768</script>
1768
1769
1770<!-- CS announcement banner, 22 Sep 2026 -->
1771<script>
1772/* ChannelSight: keep the fixed navigation and mobile panels clear of the announcement. */
1773(() => {
1774  const initialise = () => {
1775    document.querySelectorAll('.mega-nav').forEach(nav => {
1776      const banner = nav.querySelector(':scope > .cs-announcement');
1777      if (!banner || nav.__csAnnouncementCleanup) return;
1778      const wrapper = nav.closest('.nav-components');
1779      const storageKey = 'cs-announcement-dismissed';
1780      const campaign = JSON.stringify([
1781        banner.querySelector('.cs-announcement_copy')?.textContent.trim(),
1782        banner.querySelector('.cs-announcement_action a')?.getAttribute('href')
1783      ]);
1784      // Remember only this announcement for the current tab's browsing session.
1785      // A different message or destination automatically shows a new campaign.
1786      try {
1787        if (sessionStorage.getItem(storageKey) === campaign) banner.hidden = true;
1788      } catch (_) { /* Dismissal still works when browser storage is unavailable. */ }
1789      let frame = 0;
1790      const assign = (element, name, value) => {
1791        if (element && element.style.getPropertyValue(name) !== value) {
1792          element.style.setProperty(name, value);
1793        }
1794      };
1795      const measure = () => {
1796        frame = 0;
1797        if (!nav.isConnected) {
1798          nav.__csAnnouncementCleanup();
1799          return;
1800        }
1801        const height = Math.ceil(banner.getBoundingClientRect().height);
1802        assign(nav, '--cs-announcement-height', `${height}px`);
1803        assign(wrapper, '--cs-announcement-offset',
1804          getComputedStyle(nav).position === 'fixed' ? `${height}px` : '0px');
1805      };
1806      const schedule = () => { if (!frame) frame = requestAnimationFrame(measure); };
1807      const dismiss = event => {
1808        const close = event.target.closest('.cs-announcement_close');
1809        const cta = event.target.closest('.cs-announcement_action a[href]');
1810        if (!close && !cta) return;
1811        if (event.type === 'auxclick' && event.button !== 1) return;
1812        const restoreFocus = !!close && banner.contains(document.activeElement);
1813        banner.hidden = true;
1814        try { sessionStorage.setItem(storageKey, campaign); } catch (_) {}
1815        schedule();
1816        if (restoreFocus) {
1817          const next = [...nav.querySelectorAll('.mega-nav__bar a[href], .mega-nav__bar button, .mega-nav__bar [tabindex="0"]')]
1818            .find(element => !element.disabled && element.getClientRects().length &&
1819              getComputedStyle(element).visibility !== 'hidden');
1820          next?.focus({ preventScroll: true });
1821        }
1822      };
1823      banner.addEventListener('click', dismiss);
1824      banner.addEventListener('auxclick', dismiss);
1825      banner.setAttribute('data-cs-dismissible', '');
1826      const resize = typeof ResizeObserver === 'function' ? new ResizeObserver(schedule) : null;
1827      resize?.observe(banner);
1828      const changes = new MutationObserver(schedule);
1829      changes.observe(nav, {
1830        attributes: true, attributeFilter: ['class', 'style', 'hidden'],
1831        childList: true, characterData: true, subtree: true
1832      });
1833      window.addEventListener('resize', schedule, { passive: true });
1834      nav.__csAnnouncementCleanup = () => {
1835        resize?.disconnect();
1836        changes.disconnect();
1837        window.removeEventListener('resize', schedule);
1838        banner.removeEventListener('click', dismiss);
1839        banner.removeEventListener('auxclick', dismiss);
1840        banner.removeAttribute('data-cs-dismissible');
1841        cancelAnimationFrame(frame);
1842        assign(nav, '--cs-announcement-height', '0px');
1843        assign(wrapper, '--cs-announcement-offset', '0px');
1844        delete nav.__csAnnouncementCleanup;
1845      };
1846      measure();
1847      document.fonts?.ready.then(schedule);
1848    });
1849  };
1850  if (document.readyState === 'loading') {
1851    document.addEventListener('DOMContentLoaded', initialise, { once: true });
1852  } else initialise();
1853})();
1854
1855</script>
1855</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.