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'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'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'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'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 <!-- -->&<!-- --> 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 <!-- -->&<!-- --> 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 <!-- -->&<!-- --> Inventory</a></li><li data-menu-fade=""><a href="/our-solutions/digital-shelf#ratings-reviews" class="mega-nav__panel-link">Ratings <!-- -->&<!-- --> 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 <!-- -->&<!-- --> Data</span><ul role="list" class="mega-nav__panel-list"><li data-menu-fade=""><a href="/resources" class="mega-nav__panel-link">Reports, eBooks & 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'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 & CPG</a></li><li data-menu-fade=""><a href="/industries/beauty-personal-care" class="mega-nav__panel-link">Beauty & Personal Care</a></li><li data-menu-fade=""><a href="/industries/electronics-appliances" class="mega-nav__panel-link">Electronics & Appliances</a></li><li data-menu-fade=""><a href="/industries/food-beverage" class="mega-nav__panel-link">Food & Beverage</a></li><li data-menu-fade=""><a href="/industries/health-pharma" class="mega-nav__panel-link">Health & Pharma</a></li><li data-menu-fade=""><a href="/industries/home-diy" class="mega-nav__panel-link">Home & DIY</a></li><li data-menu-fade=""><a href="/industries/toys-family" class="mega-nav__panel-link">Toys & Family</a></li><li data-menu-fade=""><a href="/industries/tools-industrial" class="mega-nav__panel-link">Tools & 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">"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. "</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 & CPG</a><a href="/industries/beauty-personal-care" class="cs-footer2_link">Beauty & Personal Care</a><a href="/industries/electronics-appliances" class="cs-footer2_link">Electronics & Appliances</a><a href="/industries/food-beverage" class="cs-footer2_link">Food & Beverage</a><a href="/industries/health-pharma" class="cs-footer2_link">Health & Pharma</a><a href="/industries/home-diy" class="cs-footer2_link">Home & DIY</a><a href="/industries/toys-family" class="cs-footer2_link">Toys & Family</a><a href="/industries/tools-industrial" class="cs-footer2_link">Tools & 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.