gsap.registerPlugin(ScrollTrigger, SplitText); const lenis = new Lenis; lenis.on("scroll", ScrollTrigger.update), gsap.ticker.add(e => { lenis.raf(1e3 * e) } ), gsap.ticker.lagSmoothing(0); const targetElement = document.querySelector(".popup-wrapper") , callback = function(e, t) { e.forEach(function(e) { if ("attributes" === e.type && "style" === e.attributeName) { let t = window.getComputedStyle(targetElement); "none" === t.display ? document.querySelector(".mail-open").classList.remove("cp_open") : document.querySelector(".mail-open").classList.add("cp_open") } }) } , observer = new MutationObserver(callback); if(targetElement) { observer.observe(targetElement, { attributes: !0, attributeFilter: ["style"] }); } const swiper3 = document.querySelector(".swiper3"); if (swiper3) { let e = new Swiper(".swiper3",{ effect: "fade", pagination: { el: ".ts_swiper_fraction", type: "fraction" }, slidesPerView: 1, spaceBetween: 16, loop: !0, grabCursor: !0 }); gsap.set(".ts_swiper--progress--inner", { width: "0%" }); let t = gsap.timeline({ repeat: -1, onRepeat() { e.slideNext() } }).to(".ts_swiper--progress--inner", { width: "100%", duration: 5, ease: "linear" }) , r = document.querySelector(".ts_swiper--nav_button.next") , i = document.querySelector(".ts_swiper--nav_button.prev"); (r || i) && (r.addEventListener("click", () => { e.slideNext() } ), i.addEventListener("click", () => { e.slidePrev() } )), e.on("slideChange", () => { t.progress(.01) } ), gsap.to(".swiper3", { scrollTrigger: { trigger: ".swiper3", start: "top bottom" }, onStart() { t.progress(.01), e.slideToLoop(0) } }) } const tstQuotes = document.querySelectorAll(".ts_quote"); tstQuotes.length > 0 && tstQuotes.forEach(e => { let t = new SplitText(e,{ type: "words", wordsClass: "ts_quote-split" }) , r = new SplitText(t.words,{ type: "words" }); gsap.set(r.words, { y: "100%" }), r.words.forEach( (e, t) => { e.style.transitionDelay = `${.0175 * t}s` } ) } ); const swiper4 = document.querySelector(".swiper4"); if (swiper4) { let o = new Swiper(".swiper4",{ breakpoints: { 992: { slidesPerView: 2.5, spaceBetween: 16 } }, pagination: { el: ".cs_swiper_fraction", type: "fraction" }, slidesPerView: 1.3, spaceBetween: 10, loop: !0, grabCursor: !0 }); gsap.set(".cs_swiper--progress--inner", { width: "0%" }); let n = gsap.timeline({ repeat: -1, onRepeat() { o.slideNext() } }).to(".cs_swiper--progress--inner", { width: "100%", duration: 5, ease: "linear" }) , a = document.querySelector(".cs_swiper--nav_button.next") , s = document.querySelector(".cs_swiper--nav_button.prev"); (a || s) && (a.addEventListener("click", () => { o.slideNext() } ), s.addEventListener("click", () => { o.slidePrev() } )), o.on("slideChange", () => { n.progress(.01) } ), gsap.to(".swiper4", { scrollTrigger: { trigger: ".swiper4", start: "top bottom" }, onStart() { n.progress(.01), o.slideToLoop(0) } }) } function checkInputState(e) { let t = "" !== e.value.trim(); return t } const cpWrappers = document.querySelectorAll(".contact-popup-form-wrapper"); cpWrappers.length > 0 && cpWrappers.forEach(e => { let t = e.querySelector(".new_c-input") , r = e.querySelector(".new_c-label"); t.addEventListener("input", () => { checkInputState(t) ? r.classList.add("active") : r.classList.remove("active") } ) } ); const ddLinksWraps = document.querySelectorAll(".nav_dropdown--links .footer-link-block"); ddLinksWraps.length > 0 && ddLinksWraps.forEach(e => { let t = e.querySelectorAll(".footer-link"); t.forEach( (e, t) => { e.style.transitionDelay = `${.075 * t}s` } ) } ); var mobileQuery = window.matchMedia("(max-width: 991px)"); gsap.from(".g_co-acomplishment .g_co-a_value", { textContent: 0, duration: 2, stagger: .05, snap: { textContent: 1 }, scrollTrigger: { trigger: ".g-co_glance--grid", start: "top bottom" } }), gsap.set(".g_co-a_value--wrap *", { y: "100%" }), gsap.to(".g_co-a_value--wrap *", { y: "0%", duration: .75, ease: "power3.inOut", stagger: .05, scrollTrigger: { trigger: ".g-co_glance--grid", start: "top bottom" } }), mobileQuery.matches ? (gsap.set(".g_co-a_line", { width: "0%" }), gsap.to(".g_co-a_line", { width: "100%", duration: .75, ease: "power3.inOut", stagger: .05, scrollTrigger: { trigger: ".g-co_glance--grid", start: "bottom bottom" } })) : (gsap.set(".g_co-a_line", { height: "0%" }), gsap.to(".g_co-a_line", { height: "100%", duration: 1.5, ease: "power3.inOut", stagger: .1, scrollTrigger: { trigger: ".g-co_glance--grid", start: "bottom bottom" } })); let groups = gsap.utils.toArray(".g-co_capability"); if (groups.length > 0) { let l = gsap.utils.toArray(".g-co_c-heading") , c = groups.map(g); function p(e) { c.forEach(t => t(e)) } function g(e) { let t = e.querySelector(".g-co_c-heading") , r = e.querySelector(".g-co_c-content") , i = e.querySelector(".g-co_c-arrow:not(.mobile)") , o = e.querySelector(".g-co_c-arrow.mobile"); var n = !1; gsap.set(r, { y: ".5em", height: 0 }), gsap.set(t, { color: "#fff6" }), gsap.set(i, { x: "50%", clipPath: "inset(0% 100% 0% 0%)" }), gsap.set(o, { rotate: 0 }); let a = gsap.timeline({ onComplete() { n = !0, ScrollTrigger.refresh() }, paused: !0, reversed: !0 }).to(i, { clipPath: "inset(0% 0.01% 0% 0%)", x: "0%", duration: .75, ease: "power3.inOut" }, "<").to(o, { rotate: 180, duration: .75, ease: "power3.inOut" }, "<").to(r, { height: "auto", y: "0em", duration: 1, ease: "power3.inOut" }, "<"); return function(e) { mobileQuery.matches ? e === t && (a.reversed() ? (a.play(), t.classList.add("open")) : (a.reverse(), t.classList.remove("open"))) : e === t ? a.reversed() && (a.play(), t.classList.add("open")) : (a.reverse(), t.classList.remove("open")) } } l.forEach(e => { e.addEventListener("click", () => p(e)) } ); let u = document.querySelectorAll(".g-co_c-accimages") , d = document.querySelectorAll(".g-co_capability"); if (u.forEach(e => { let t = e.querySelectorAll("img"); t.forEach( (e, t) => { e.style.transitionDelay = `${.05 * t}s` } ) } ), d.forEach(e => { let t = e.querySelector(".g-co_c-heading") , r = e.querySelector(".g-co_c-content"); if (mobileQuery.matches) { var i = e.getAttribute("data-class"); u.forEach(e => { var t; i === e.getAttribute("data-class") && r.appendChild(e) } ) } else t.addEventListener("click", () => { var t = e.getAttribute("data-class"); u.forEach(e => { let r = e.querySelectorAll("img"); var i = e.getAttribute("data-class"); r.forEach(e => { gsap.to(e, { opacity: 0, duration: .25, ease: "power4.inOut", onComplete() { e.style.clipPath = "inset(100% 0% 0% 0%)" } }) } ), t === i && r.forEach(e => { gsap.to(e, { opacity: 1, duration: .25, ease: "power4.inOut", onComplete() { e.style.clipPath = "inset(0% 0% 0% 0%)" } }) } ) } ) } ) } ), imagesLoaded(u, () => { mobileQuery.matches && l.length > 0 && l[0].click() } ), !mobileQuery.matches && l.length > 0) { l[0].click(), gsap.set(".cp_progress--inner", { width: "0%" }); let $ = gsap.timeline({ repeat: -1 }).to(".cp_progress--inner", { width: "100%", duration: 5, ease: "linear" }), w = document.querySelectorAll(".g-co_c-heading"), m = document.querySelector(".cp_fraction--num"), y = 0, f; function h(e) { w[e] && w[e].click(), v() } function v() { m && (m.textContent = y + 1) } function b() { f = setInterval( () => { h(y = (y + 1) % w.length) } , 5e3), $.progress(.001), $.play() } function _() { clearInterval(f), $.progress(.001), $.pause() } w.forEach( (e, t) => { e.addEventListener("click", () => { y = t, v(), _(), b() } ) } ), document.querySelector(".cp_nav--button.next").addEventListener("click", () => { h(y = (y + 1) % w.length), _(), b() } ), document.querySelector(".cp_nav--button.prev").addEventListener("click", () => { h(y = (y - 1 + w.length) % w.length), _(), b() } ), gsap.to(".g-co_capabilities--wrap", { scrollTrigger: { trigger: ".g-co_capabilities--wrap", start: "top bottom", end: "bottom top", onEnter() { b(), v() }, onLeave() { _() }, onEnterBack() { b() }, onLeaveBack() { _() } } }) } } function cleanText(e) { if (e.length > 0) { if ("string" == typeof e) return cleanText(document.querySelectorAll(e)); if (e[0] && e[0].innerHTML) { for (var t = 0; t < e.length; t++) cleanText(e[t]); return } e.innerHTML = e.innerHTML.replace(/\-/g, "\xe2€‘").replace(/V/g, "\xe2€ŒV\xe2€Œ").replace(/\./g, "\xe2€Œ.\xe2€Œ").replace(/,/g, "\xe2€Œ,\xe2€Œ").replace(/A/g, "\xe2€ŒA\xe2€Œ").replace(/fi/g, "f\xe2€Œi").replace(/&/g, "&") } } cleanText(".animate_p"); var listArray = ["slide1", "slide2", "slide3", "slide4"] , mySwiper = new Swiper(".swiper",{ loop: !0, autoplayDisableOnInteraction: !1, spaceBetween: 64, allowTouchMove: !0, slidesPerView: 1, autoHeight: !1, autoplay: { delay: 5e3, waitForTransition: !1, disableOnInteraction: !1 }, pagination: { el: ".swiper-pagination1", clickable: !0, type: "bullets", renderBullet: function(e, t) { return '' + listArray[e] + "" } }, navigation: { nextEl: ".swiper-nav.next", prevEl: ".swiper-nav.prev" } }) , pagination1 = document.querySelector(".swiper-pagination1") , pagination2 = document.querySelector(".swiper-pagination2") , slideTabs = document.querySelectorAll(".slide-tab") , totalSlides = mySwiper.slides.length; function updatePaginationText() { var e = mySwiper.realIndex , t = "0" + (e + 1) + " / 0" + totalSlides; slideTabs.length > 0 && (slideTabs.forEach(function(e) { e.classList.remove("active") }), slideTabs[e].classList.add("active")), pagination1 && (pagination1.children[e].classList.add("swiper-pagination-bullet-active"), pagination1.children[e].setAttribute("aria-current", "true")), pagination2 && (pagination2.textContent = t, pagination2.setAttribute("aria-label", t)) } mySwiper.on("init", function() { updatePaginationText() }), mySwiper.on("slideChange", function() { updatePaginationText() }), mySwiper.emit("slideChange"), slideTabs.length > 0 && slideTabs.forEach(function(e, t) { e.addEventListener("click", function() { mySwiper.slideTo(t) }) }); var mySwiper2 = new Swiper(".swiper2",{ loop: !0, autoplayDisableOnInteraction: !1, spaceBetween: 64, allowTouchMove: !0, slidesPerView: 1, autoHeight: !1, autoplay: { delay: 5e3, waitForTransition: !1, disableOnInteraction: !1 }, pagination: { el: ".swiper-pagination3", clickable: !0, type: "bullets", renderBullet: function(e, t) { return '' + listArray[e] + "" } }, navigation: { nextEl: ".swiper-nav-2.next", prevEl: ".swiper-nav-2.prev" } }); if (mySwiper2) { var S = document.querySelector(".swiper-pagination3") , k = document.querySelector(".swiper-pagination4") , E = document.querySelectorAll(".slide-tab2") , T = mySwiper2.slides.length; function L() { var e = mySwiper2.realIndex , t = "0" + (e + 1) + " / 0" + T; E.length > 0 && (E.forEach(function(e) { e.classList.remove("active") }), E[e].classList.add("active")), S && (S.children[e].classList.add("swiper-pagination-bullet-active"), S.children[e].setAttribute("aria-current", "true")), k && (k.textContent = t, k.setAttribute("aria-label", t)) } mySwiper2.on("init", function() { L() }), mySwiper2.on("slideChange", function() { L() }), mySwiper2.emit("slideChange"), E.length > 0 && E.forEach(function(e, t) { e.addEventListener("click", function() { mySwiper2.slideTo(t) }) }) } const industriesDropdownLinks = document.querySelectorAll(".industries_dropdown-link_wrapper .footer-link"); industriesDropdownLinks && industriesDropdownLinks.forEach( (e, t) => { e.style.transitionDelay = `${.025 * t}s` } ), document.body.style.opacity = 1; const animateHeadlines = document.querySelectorAll(".animate_headline"); animateHeadlines && animateHeadlines.forEach(e => { let t = new SplitText(e,{ type: "lines, words", linesClass: "line_wrap" }); gsap.set(t.words, { y: "100%" }), gsap.to(t.words, { y: "0%", duration: 1, ease: "power4.inOut", stagger: .025, onComplete() { t.revert() }, scrollTrigger: { trigger: e, start: "top bottom" } }) } ); const paragraphs = document.querySelectorAll(".animate_p"); paragraphs.forEach(e => { var t = new SplitText(e,{ type: "lines" }) , r = new SplitText(e,{ type: "lines", linesClass: "line_wrap" }); gsap.set(t.lines, { yPercent: 100, transformOrigin: "left", skewY: 2 }), gsap.to(t.lines, { yPercent: 0, skewY: 0, duration: 1, ease: "power4.inOut", stagger: .1, scrollTrigger: { trigger: e, start: "top bottom" }, onComplete() { r.revert(), t.revert() } }) } ), gsap.from(".cs_swiper .swiper-slide img", { clipPath: "inset(100% 0% 0% 0%)", duration: 1.5, stagger: .05, ease: "power4.inOut", scrollTrigger: { trigger: ".cs_swiper", start: "50 bottom" } }); const insightsImages = document.querySelectorAll(".insight-img , .featured-img"); insightsImages.forEach(e => { gsap.set(e, { clipPath: "inset(100% 0% 0% 0%)" }), gsap.to(e, { clipPath: "inset(0% 0% 0% 0%)", duration: 1.5, ease: "power4.inOut", scrollTrigger: { trigger: e, start: "top bottom" } }) } ), gsap.from(".insight-item .insight-line", { height: "0%", duration: .75, stagger: .05, ease: "power4.inOut", scrollTrigger: { trigger: ".insight-list, .leadership-list", start: "top bottom" } }); var footerTitleSplit = new SplitText(".footer_title",{ type: "lines" }) , footerTitleMask = new SplitText(".footer_title",{ type: "lines", linesClass: "line_wrap" }); gsap.set(footerTitleSplit.lines, { yPercent: 100, transformOrigin: "left", skewY: 2 }), gsap.to(footerTitleSplit.lines, { yPercent: 0, skewY: 0, duration: 1.25, ease: "power4.inOut", stagger: .1, scrollTrigger: { trigger: ".footer_title", start: "top bottom" }, onComplete() { footerTitleMask.revert(), footerTitleSplit.revert() } }), gsap.from("footer form>*", { opacity: 0, y: "1em", duration: 1.25, ease: "power4.inOut", stagger: .1, scrollTrigger: { trigger: "footer form", start: "top bottom" } }), gsap.from(".footer_middle-separator", { width: "0%", duration: 2, ease: "power3.inOut", scrollTrigger: { trigger: ".footer_middle", start: "50 bottom" } }), gsap.from(".footer_middle-links>*", { opacity: 0, y: "1em", duration: .75, stagger: { amount: .25 }, ease: "power4.inOut", scrollTrigger: { trigger: ".footer_middle-links", start: "50 bottom" } }), gsap.from("footer .footer-link>*", { y: "1em", duration: 1.25, stagger: { amount: .25 }, ease: "power4.inOut", scrollTrigger: { trigger: ".footer_middle-links", start: "50 bottom" } }), gsap.fromTo(".footer_bottom--logo", { opacity: 0, y: "100%" }, { opacity: 1, y: "35%", duration: 1, ease: "power4.inOut", scrollTrigger: { trigger: ".footer-bottom", start: "center bottom" } }); const CookieService = { setCookie(e, t, r) { let i = ""; if (r) { let o = new Date; o.setTime(o.getTime() + 864e5 * r), i = "; expires=" + o.toUTCString() } document.cookie = e + "=" + (t || "") + i + ";" }, getCookie(e) { let t = document.cookie.split(";"); for (let r of t) if (r.indexOf(e + "=") > -1) return r.split("=")[1]; return null } } , exit = e => { let t = [...e.target.classList].includes("exit-intent-popup") || "close" === e.target.className || 27 === e.keyCode; t && document.querySelector(".exit-intent-popup").classList.remove("visible") } , mouseEvent = e => { let t = !e.toElement && !e.relatedTarget && e.clientY < 10; t && (document.removeEventListener("mouseout", mouseEvent), document.querySelector(".exit-intent-popup").classList.add("visible"), CookieService.setCookie("exitIntentShown", !0, 30)) } ; CookieService.getCookie("exitIntentShown") || setTimeout( () => { document.addEventListener("mouseout", mouseEvent), document.addEventListener("keydown", exit); const exitIntentClose = document.querySelector(".exit-intent-popup") if(exitIntentClose) { exitIntentClose.addEventListener("click", exit); } } , 0), document.addEventListener("keydown", function(e) { if ("Tab" === e.key) { var t = e.target , r = Array.from(document.getElementById("contact-popup").getElementsByTagName("input")) , i = r.indexOf(t) + 1; i >= r.length && (i = 0), r[i].focus(), e.preventDefault() } });