PageSourceSearch

https://desquared.webflow.io/products

html desquared.webflow.io collected 2026-10-03 12:58:54 UTC 29,086 bytes, 330 lines download raw bytes

1<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Mon Sep 28 2026 12:02:43 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="desquared.webflow.io" data-wf-page="656dc9533dd62bedbe4f5f9b" data-wf-site="64621897363076eb1720080a" lang="en"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>Products | Desquared</title><meta content="Discover Desquared&#x27;s impressive work. Explore the digital products we&#x27;ve created for our esteemed partners. Learn more now!" name="description"/><meta content="Products | Desquared" property="og:title"/><meta content="Discover Desquared&#x27;s impressive work. Explore the digital products we&#x27;ve created for our esteemed partners. Learn more now!" property="og:description"/><meta content="Products | Desquared" name="twitter:title"/><meta content="Discover Desquared&#x27;s impressive work. Explore the digital products we&#x27;ve created for our esteemed partners. Learn more now!" 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="Webflow" name="generator"/><link href="https://cdn.prod.website-files.com/64621897363076eb1720080a/css/desquared.webflow.shared.b85365d38.min.css" rel="stylesheet" type="text/css" integrity="sha384-uFNl04zhoKD8wPTwdstDqJdbh3gmTqSGzBs/497HUL4Ez35fsWG5Rbw4T0lwqVVG" crossorigin="anonymous"/>
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/64621897363076eb1720080a/64affa23aa3f1a2b032f1627_favicon-32x32.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/64621897363076eb1720080a/64affaf30d20e58cfb88a8ec_Webclip.png" rel="apple-touch-icon"/><link href="https://www.thinkdesquared.com/products" rel="canonical"/><!--International Phone Input Library-->
2<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/build/css/intlTelInput.css">
3
4<style>
5  .iti {
6   display: block; 
7  }
8  
9  .iti-dropdown-bg {
10    background-color: #292929;
11  }
12  
13  .iti--inline-dropdown .iti__dropdown-content {
14    border-radius: 0.5rem;
15    background-color: #292929;
16    color: #E4EDF4;
17    margin-top: 0.5rem;
18    border: 1px solid #292929;
19    box-shadow: none;
20    padding: 0rem 0.5rem;
21
22  }
23  
24  .iti__dropdown-content {
25    margin: 0.5rem 0rem;
26    border-radius: 0.5rem;
27  }
28  
29  .iti__search-input {
30    padding: 1rem;
31    background-color: #212121;
32    margin: 0.5rem 0rem;
33    border-radius: 0.5rem;
34    width: 100%;
35  }
36  .iti__search-input :focus {
37    border: 1px solid #292929;
38  }
39  
40  .iti__country {
41    padding: 1rem 0.5rem;
42    margin: 0.5rem;
43    border-radius: 0.5rem;
44  }
45  
46  li {
47    margin-bottom: 0rem;
48  }
49  
50  .iti__country:hover {
51    background-color: rgba(0, 0, 0, 0.05);
52  }
53  
54  .iti__selected-country {
55    padding-left: 1rem;
56  }
57  
58</style>
59
60<!-- [Attributes by Finsweet] Query Param | Needed for utm fields -->
61<script defer src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-queryparam@1/queryparam.js"></script>
61
62
63<!-- Google tag (gtag.js) -->
vendor: 106 bytes, lines 63-64
63
64<script type="fs-cc" fs-cc-categories="analytics" async src="https://www.googletagmanager.com/gtag/js?id=
64G-7YNB7Y27E1
vendor: 12 bytes, line 64
64"></script>
65<script type="fs-cc" fs-cc-categories="analytics">
66	
vendor: 130 bytes, lines 66-69
66window.dataLayer = window.dataLayer || [];
67	function gtag(){dataLayer.push(arguments);}
68	gtag('js', new Date());
69	gtag('config', '
69G-7YNB7Y27E1
vendor: 4 bytes, line 69
69');
70</script>
70
71<!-- Finsweet Cookie Consent - must be placed after the last third-party script that issues cookies -->
72<script async src="https://cdn.jsdelivr.net/npm/@finsweet/cookie-consent@1/fs-cc.js" fs-cc-mode="opt-in" fs-cc-expires="180"></script>
72
73
74<style type="text/css">
75  html {
76
77    -webkit-tap-highlight-color: rgba(0,0,0,0);
78  }
79</style>
80
81<script defer data-domain="thinkdesquared.com" src="https://plausible.io/js/script.js"></script>
81
82
83<!-- [Attributes by Finsweet] Disable scrolling -->
84<script defer src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-scrolldisable@1/scrolldisable.js"></script>
84
85
86<style>
87	/* Disable horizontal scrolling */
88  body {
89  	overflow-x: hidden;
90  }
91</style></head><body class="body"><div style="display:block;opacity:1" class="loading-state"></div><div data-animation="default" class="navbar w-nav" data-easing2="ease" fs-scrolldisable-element="smart-nav" data-easing="ease" data-collapse="medium" data-w-id="948d25b8-b895-589c-b5d0-edb816b6999a" role="banner" data-duration="400" id="NavBar" data-doc-height="1"><div class="navbartopspace"></div><div class="container-navbar w-container"><div class="logo-block-navbar"><a href="/" class="link-logo-navbar w-nav-brand"><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/6551cfdf99137cd616e28be2_desquared-light-on-dark.svg" loading="lazy" alt="Desquared logo" class="logo-size-navbar"/></a></div><figure role="navigation" class="nav-menu w-nav-menu"><div class="separator-navbar"></div><a href="/products" aria-current="page" class="link-navbar w-inline-block w--current"><div class="text-style-navbar">Products</div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/649996f7863dbe31ff3ebe54_SliderRight.svg" loading="lazy" alt="" class="navbar_icon"/><div class="dot"></div></a><div class="separator-navbar"></div><a href="/agency" class="link-navbar w-inline-block"><div class="text-style-navbar">Agency</div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/649996f7863dbe31ff3ebe54_SliderRight.svg" loading="lazy" alt="" class="navbar_icon"/><div class="dot"></div></a><div class="separator-navbar"></div><a href="/expertise" class="link-navbar w-inline-block"><div class="text-style-navbar">Expertise</div><div class="dot"></div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/649996f7863dbe31ff3ebe54_SliderRight.svg" loading="lazy" alt="" class="navbar_icon"/></a><div class="separator-navbar"></div><a href="/about" class="link-navbar w-inline-block"><div class="text-style-navbar">About</div><div class="dot"></div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/649996f7863dbe31ff3ebe54_SliderRight.svg" loading="lazy" alt="" class="navbar_icon"/></a><div class="separator-navbar"></div><a href="/careers" class="link-navbar w-inline-block"><div class="text-style-navbar">Careers</div><div class="dot"></div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/649996f7863dbe31ff3ebe54_SliderRight.svg" loading="lazy" alt="" class="navbar_icon"/></a><div class="separator-navbar"></div><a href="/lets-collaborate" class="link-navbar in-burger-menu w-inline-block"><div class="text-style-navbar">Talk With Us</div><div class="dot"></div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/649996f7863dbe31ff3ebe54_SliderRight.svg" loading="lazy" alt="" class="navbar_icon"/></a><div class="separator-navbar"></div><a href="/lets-collaborate" class="button-navbar w-inline-block"><div class="text-style-button is-navbar">Talk With Us</div></a></figure><div fs-scrolldisable-element="toggle" class="menu-button w-nav-button"><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/64ef4ef49c2576e713eb4569_burger%20menu.svg" loading="lazy" alt="" class="icon_burger"/><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/64f0b059213cb2f108c2bb27_close.svg" loading="lazy" alt="" class="icon_close"/></div></div><div class="navbar-bg"></div></div><div data-w-id="42e2b574-68d0-8dc7-986b-aff1281ba616" class="cursor-wrapper"><div class="cursor-circle"><div class="cursor-text">VIEW</div></div><div class="w-embed"><style>
92.cursor-wrapper{pointer-events: none;}
93</style></div></div><div class="page-wrapper"><main class="main-wrapper"><div class="space-140px"></div><section class="section_products-hero"><div class="padding-global"><div class="container-hug"><h1 class="text-style-circular-140px">Operated, designed, and expertly engineered by <span class="heading-focus">Desquared.</span></h1></div></div></section><div class="space-160px"></div><section class="section_products-product"><div class="padding-global"><div class="container-hug"><a href="/box" class="product-link w-inline-block"><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250.webp" loading="eager" sizes="(max-width: 2900
93px) 100vw, 2900px" srcset="https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250-p-500.webp 500w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250-p-800.webp 800w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250-p-1080.webp 1080w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250-p-1600.webp 1600w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250-p-2000.webp 2000w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250-p-2600.webp 2600w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250.webp 2900w" alt="" class="image-product-new"/><div class="align_product-title"><div class="text-style-atlante-40px">Box</div><div class="text-style-circular-18px opacity-60">The food delivery app that rewards your appetite.</div></div></a></div></div></section><div class="space-100px"></div><section class="section_products-product"><div class="interaction_showonscroll"><div class="padding-global"><div class="container-hug"><a href="/wave-grocery" class="product-link w-inline-block"><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250.jpg" loading="lazy" sizes="(max-width: 2900px) 100vw, 2900px" srcset="https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250-p-500.jpg 500w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250-p-800.jpg 800w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250-p-1080.jpg 1080w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250-p-1600.jpg 1600w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250-p-2000.jpg 2000w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250-p-2600.jpg 2600w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250.jpg 2900w" alt="Open laptop on a white desk showing the home page of a website build with the Wave Grocery  product" class="image-product-new"/><div class="align_product-title"><div class="text-style-atlante-40px">Wave Grocery</div><div class="text-style-circular-18px opacity-60">The complete online grocery platform.</div></div></a></div></div></div></section><div class="space-100px"></div><section class="section_products-product"><div class="interaction_showonscroll"><div class="padding-global"><div class="container-hug"><a href="/wave-cxm" class="product-link w-inline-block"><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250.jpg" loading="lazy" sizes="(max-width: 2900px) 100vw, 2900px" srcset="https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250-p-500.jpg 500w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250-p-800.jpg 800w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250-p-1080.jpg 1080w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250-p-1600.jpg 1600w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250-p-2000.jpg 2000w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%2029
9300%20x%201250-p-2600.jpg 2600w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250.jpg 2900w" alt="" class="image-product-new"/><div class="align_product-title"><div class="text-style-atlante-40px">Wave CXM</div><div class="text-style-circular-18px opacity-60">The all-in-one loyalty platform.</div></div></a></div></div></div></section><div class="space-220px"></div></main></div><footer class="section_footer w-container"><section class="section-collaborate"><div class="interaction_showonscroll"><div class="padding-global"><div class="container-hug"><div class="separator-coral"></div><div class="space-footer"></div><div class="text-style-circular-56px">Let’s create something amazing.‍<span class="change-line">‍</span><span class="heading-focus">Together.</span></div><div class="space-40px"></div><a href="#" color="coral" email="hello" class="text-style-link">[email protected]</a></div></div></div></section><div class="space-120px"></div><div class="padding-global"><div class="container-hug"><div class="separator transparent-onyx"></div><div class="space-80px"></div><div class="align_footer"><div class="align_footer_content"><div class="alignvertical"><div class="footercategories">Company</div><a href="/expertise" class="link-footer">Expertise</a><a href="/about" class="link-footer">About</a><a href="/careers" class="link-footer">Careers</a><a href="/lets-collaborate" class="link-footer">Contact</a></div><div class="alignvertical gap-2px"><div class="footercategories">PRODUCTS</div><a href="/box" class="link-footer">Box</a><a href="/wave-cxm" class="link-footer">Wave CXM</a><a href="/wave-grocery" class="link-footer">Wave Grocery</a><a href="/agency" class="link-footer">Agency</a></div><div class="alignvertical gap-2px"><div class="footercategories">follow us</div><a href="https://www.linkedin.com/company/desquared/" target="_blank" class="link-footer">LinkedIn</a><a href="https://www.facebook.com/thinkdesquared/" target="_blank" class="link-footer">Facebook</a></div><div class="alignvertical gap-2px"><div class="footercategories">SAY HELLO</div><a href="#" email="hello" class="link-footer">[email protected]</a><a href="tel:+302107472700" class="link-footer">+30 2107472700</a><div class="text-style-address">Athens Tower A<br/>2-4 Mesogeion Avenue<br/>Athens, 11527 Greece</div></div><a id="w-node-_50ece748-f66c-d125-5f8c-673b3e5ffe27-5cd17986" href="/" class="linklogo w-inline-block"><div id="w-node-d991572e-761b-319b-7944-a0a7660a540b-5cd17986" class="alignvertical_center gap-15px"><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/64624f597733d5536bdf6d82_logo_big.svg" loading="lazy" alt="desquared logo" class="logo_footer"/><div class="text-style-estd">estd. 2012</div></div></a></div><div class="align_footer_legal"><div class="alignhorizontal_center gap-8px"><div class="text-style-handcrafted">Handcrafted with</div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/6467886581b75a64e45086d1_Heart.svg" loading="lazy" alt="Desquared heart" class="heart_small"/></div><div class="footer-additional-info"><div class="align_footer_legal_links"><div fs-cc="manager" class="fs-cc-manager_component"><div id="cookies_bottom_icon" fs-cc="open-preferences" class="fs-cc-manager_button"><a href="#" class="text-style-circular-14px">Cookies Consent</a></div></div><a href="/privacy-policy-terms-of-use" class="text-style-circular-14px">Privacy Policy &amp; Terms of Use</a></div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/68542678d9c4750550898cf9_Banner_Psifiakos%20Metasx_1.png" loading="lazy" sizes="(max-width: 599px) 100vw, 599px" srcset="https://cdn.prod.website-files.com/64621897363076eb1720080a/68542678d9c4750550898cf9_Banner_Psifiakos%20Metasx_1-p-500.png 500w, https://cdn.prod.website-files.com/64621897363076eb1720080a/68542678d9c4750550898cf9_Banner_Psifiakos%20Metasx_1.png 599w" alt="" class="metasximatismos"/></div></div></div><div class="space-80px"></div></div></div></footer><div class="fs-cc-components"><div fs-cc="banner" class="fs-cc-banner_component"><div class="fs-cc-banner_container"><div class="fs-cc-banner_text">Hey there! We’d like to utilize cookies to enhance your experience and analyze site usage to help us build better products together. Please tap ‘Accept’ or customize your preferences. View our <a href="/privacy-policy-terms-of-use" class="link_onyx">Privacy Policy</a> for more information.</div><div class="fs-cc-banner_buttons-wrapper"><a fs-cc="allow" href="#" class="fs-cc-banner_button w-button">Accept</a><a fs-cc="deny" href="#" class="fs-cc-banner_button fs-cc-button-alt w-button">Decline</a><a fs-cc="open-preferences" href="#" class="fs-cc-banner_text-link">Preferences</a></div></div><div fs-cc="interaction" class="fs-cc-banner_trigger"></div></div><div fs-cc-scroll="disable" fs-cc="preferences" class="fs-cc-prefs_component w-form"><form id="cookie-preferences" name="wf-form-Cookie-Preferences" data-name="Cookie Preferences" method="get" class="fs-cc-prefs_form" data-wf-page-id="656dc9533dd62bedbe4f5f9b" data-wf-element-id="371644cb-c2fb-c3f0-ad93-1d0dd792952b"><div fs-cc="close" class="fs-cc-prefs_close"><div class="fs-cc-prefs_close-icon w-embed"><svg fill="currentColor" aria-hidden="true" focusable="false" viewBox="0 0 16 24">
94	<path d="M9.414 8l4.293-4.293-1.414-1.414L8 6.586 3.707 2.293 2.293 3.707 6.586 8l-4.293 4.293 1.414 1.414L8 9.414l4.293 4.293 1.414-1.414L9.414 8z"></path>
95</svg></div></div><div class="fs-cc-prefs_content"><div class="fs-cc-prefs_space-small"><div class="fs-cc-prefs_title">Privacy Preference Center</div></div><div class="fs-cc-prefs_space-small"><div class="fs-cc-prefs_text">
95When you visit websites, they may store or retrieve data in your browser. This storage is often necessary for the basic functionality of the website. The storage may be used for marketing, analytics, and personalization of the site, such as storing your preferences. Privacy is important to us, so you have the option of disabling certain types of storage that may not be necessary for the basic functioning of the website. Blocking categories may impact your experience on the website. View our <a href="/privacy-policy-terms-of-use" class="link_onyx">Privacy Policy</a> for more information.</div></div><div class="space_1rem"></div><div class="fs-cc-prefs_space-small"><div class="fs-cc-prefs_title">Manage Consent Preferences by Category</div></div><div class="fs-cc-prefs_option"><div class="fs-cc-prefs_toggle-wrapper"><div class="fs-cc-prefs_label">Essential</div><div class="fs-cc-prefs_text"><strong class="bold-text-2">Always Active</strong></div></div><div class="fs-cc-prefs_text">These items are required to enable basic website functionality.</div></div><div class="fs-cc-prefs_option"><div class="fs-cc-prefs_toggle-wrapper"><div class="fs-cc-prefs_label">Analytics</div><label class="w-checkbox fs-cc-prefs_checkbox-field"><input id="Analytics" type="checkbox" name="Analytics" data-name="Analytics" fs-cc-checkbox="analytics" class="w-checkbox-input fs-cc-prefs_checkbox"/><span for="Analytics" class="fs-cc-prefs_checkbox-label w-form-label">Analytics</span><div class="fs-cc-prefs_toggle"></div></label></div><div class="fs-cc-prefs_text">These items help the website operator understand how its website performs, how visitors interact with the site, and whether there may be technical issues. This storage type usually doesn’t collect information that identifies a visitor.</div></div><div class="fs-cc-prefs_option marketing"><div class="fs-cc-prefs_toggle-wrapper"><div class="fs-cc-prefs_label">Marketing</div><label class="w-checkbox fs-cc-prefs_checkbox-field"><input id="Marketing" type="checkbox" name="Marketing" data-name="Marketing" fs-cc-checkbox="marketing" class="w-checkbox-input fs-cc-prefs_checkbox"/><span for="Marketing" class="fs-cc-prefs_checkbox-label w-form-label">Marketing</span><div class="fs-cc-prefs_toggle"></div></label></div><div class="fs-cc-prefs_text">These items are used to deliver advertising that is more relevant to you and your interests. They may also be used to limit the number of times you see an advertisement and measure the effectiveness of advertising campaigns. Advertising networks usually place them with the website operator’s permission.</div></div><div class="fs-cc-prefs_buttons-wrapper"><a fs-cc="submit" href="#" class="fs-cc-prefs_button accept w-button">Confirm my preferences and close</a></div><input type="submit" data-wait="Please wait..." class="fs-cc-prefs_submit-hide w-button" value="Submit"/><div class="w-embed"><style>
96/* smooth scrolling on iOS devices */
97.fs-cc-prefs_content{-webkit-overflow-scrolling: touch}
98</style></div></div></form><div class="w-form-done"></div><div class="w-form-fail"></div><div fs-cc="close" class="fs-cc-prefs_overlay"></div><div fs-cc="interaction" class="fs-cc-prefs_trigger"></div></div></div>
98<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=64621897363076eb1720080a" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
98<script src="https://cdn.prod.website-files.com/64621897363076eb1720080a/js/webflow.schunk.3659fd028a6de7f9.js" type="text/javascript" integrity="sha384-DPCVTt8v0lzk8V7KxbQY/YVrrHqiLr1nyQ0DFLhmZSBZvbwMGo/YwCRr6xGuE01E" crossorigin="anonymous"></script>
98<script src="https://cdn.prod.website-files.com/64621897363076eb1720080a/js/webflow.schunk.74e7e4d97427e3c8.js" type="text/javascript" integrity="sha384-fJtc0THJRHYGp1K8A94rwxalLw6EJ9KaI6+obGeY86Ud8JtAYHjsKgVsBKF+1II4" crossorigin="anonymous"></script>
98<script src="https://cdn.prod.website-files.com/64621897363076eb1720080a/js/webflow.a3da7703.224a2cbeff43fedc.js" type="text/javascript" integrity="sha384-Cmm3uWMMJprpwv5/i2yHZynWETUTKXrErvCL/sJsRB6ZmoVHshdvtyvFPz8Ch9mE" crossorigin="anonymous"></script>
98<script type="text/javascript">
99	$(document).ready(function () {
100	  function trackAnalyticsClickEvent(clickedElement) {
101		const _target = $(clickedElement);
102
103	    try {
104	      if (typeof gtag === "undefined") {
105	        return;
106	      }
107	      var _eventName = _target.data("ga-event");
108	
109	      if (
110	        !_eventName ||
111	        (typeof _eventName !== "string" && _eventName.trim().length === 0)
112	      ) {
113	        return;
114	      }
115	
116	      const prefix = "data-ga-";
117	      const _gaAttributes = clickedElement.getAttributeNames().filter(
118	        (_attr) => _attr.indexOf(prefix) > -1 && _attr !== "data-ga-event"
119	      );
120	
121	      const _params = _gaAttributes.reduce(
122	        (previous, current) => {
123	          const _paramName = current.replace(prefix, "");
124	          const _paramValue = clickedElement.getAttribute(current);
125	
126	          previous[_paramName] = _paramValue;
127	          return previous;
128	        },
129	        { page: window.location.pathname }
130	      );
131	
132	      gtag("event", _eventName, _params);
133	    } catch (e) {
134	      console.log("Error while adding ga event");
135	    }
136	  }
137	
138	  $(document).on("click", "[data-ga-event]", function (e) {	
139	    trackAnalyticsClickEvent(this);
140	  });
141	});
142</script>
142
143
144<script>
145  $(document).ready(function () {
146  try {
147    const linksToReplace = $("a[email]");
148
149    const addressDictionary = {
150      hello: {
151        parts: ["hello", "@", "thinkdesquared", ".", "com"],
152        subject: "Say Hello",
153      },
154      DPO: {
155        parts: ["dpo", "@", "thinkdesquared", ".", "com"],
156        subject: "Contact DPO - Desquared",
157      },
158    };
159
160    linksToReplace.each(function () {
161      const value = $(this).attr("email");
162
163      if (
164        value in addressDictionary &&
165        addressDictionary[value].parts &&
166        addressDictionary[value].parts.length > 0
167      ) {
168        const addressParts =
169          addressDictionary[value] && addressDictionary[value].parts
170            ? addressDictionary[value].parts
171            : [];
172
173        if (addressParts && addressParts.length > 0) {
174          const address = addressParts.join("");
175          const hrefValue =
176            "mailto:" +
177            address +
178            "?subject=" +
179            encodeURIComponent(addressDictionary[value].subject);
180          $(this).attr("href", hrefValue);
181          $(this).text(address);
182        }
183      }
184    });
185  } catch (error) {
186    console.error(error);
187  }
188});
189
190</script>
190
191
192
193<style>
194	/*width*/
195	::-webkit-scrollbar {
196		width:8px;
197	}
198	/*track*/
199	::-webkit-scrollbar-track {
200		background:transparent;
201	}
202	
203	/*thumb*/
204	::-webkit-scrollbar-thumb {
205		background: rgb(228, 237, 244, 0.2);
206		border-radius:8px;
207	}
208	
209	/*thumb - cookies*/
210	.fs-cc-prefs_component::-webkit-scrollbar-thumb {
211		background:rgb(33, 33, 33, 0.2);
212	}
213</style>
214
215<!-- UTM parameters -->
216<script>
217  // UTM parameters to track
218  const UTM_PARAMS = [
219    'utm_source',
220    'utm_medium',
221    'utm_campaign',
222    'utm_id',
223    'utm_term',
224    'utm_content',
225    'gclid',
226    'fbclid'
227  ];
228
229  // Get UTM parameters from URL
230  function getUTMParameters() {
231    const urlParams = new URLSearchParams(window.location.search);
232    const params = {};
233    UTM_PARAMS.forEach(key => {
234      const value = urlParams.get(key);
235      if (value) params[key] = value;
236    });
237    return params;
238  }
239
240  // Build updated URL with UTM parameters
241  function buildUrlWithParams(baseUrl, utmParams) {
242    try {
243      const urlObj = new URL(baseUrl, window.location.origin);
244      Object.entries(utmParams).forEach(([key, value]) => {
245        urlObj.searchParams.set(key, value);
246      });
247      return urlObj.pathname + urlObj.search + urlObj.hash;
248    } catch (e) {
249      console.error('Error building URL:', e);
250      return baseUrl;
251    }
252  }
253
254  // Add UTM parameters to all internal links
255  function appendUTMParametersToLinks() {
256    const utmParams = getUTMParameters();
257    if (Object.keys(utmParams).length === 0) return;
258
259    const internalLinks = document.querySelectorAll(
260      'a[href^="/"], a[href^="' + window.location.origin + '"]'
261    );
262
263    internalLinks.forEach(link => {
264      const originalUrl = link.getAttribute('href');
265      if (!originalUrl) return;
266      const updatedUrl = buildUrlWithParams(originalUrl, utmParams);
267      link.setAttribute('href', updatedUrl);
268    });
269  }
270
271  // Run when DOM is ready
272  if (document.readyState === 'loading') {
273    document.addEventListener('DOMContentLoaded', appendUTMParametersToLinks);
274  } else {
275    appendUTMParametersToLinks();
276  }
277</script>
277
278
279<!-- Track user journey, initial referrer, and entry time -->
280<script>
281  // Store the first referrer (if not from own site) in sessionStorage
282    function grabReferrer() {
283      if (sessionStorage.getItem("initialReferrer")) return;
284
285      const referrer = document.referrer;
286      if (referrer && !referrer.includes('desquared')) {
287        sessionStorage.setItem("initialReferrer", referrer);
288      } else {
289        sessionStorage.setItem("initialReferrer", "direct");
290      }
291    }
292  
293    // Track all pages visited today in localStorage
294    function trackUserJourney() {
295      const currentPath = window.location.pathname;
296      const visitedPaths = JSON.parse(localStorage.getItem('visitedPaths') || '{}');
297
298      const today = new Date().toLocaleDateString('en-GB');
299
300      if (!visitedPaths[today]) visitedPaths[today] = [];
301
302      const pathsToday = visitedPaths[today];
303      if (pathsToday.length === 0 || pathsToday[pathsToday.length - 1] !== currentPath){
304        pathsToday.push(currentPath);
305      }
306
307      localStorage.setItem('visitedPaths', JSON.stringify(visitedPaths));
308    }
309  
310  // Store the time user first entered the site in sessionStorage
311    function trackUserEntryTime() {
312      if (!sessionStorage.getItem('enteredAt')) {
313        sessionStorage.setItem('enteredAt', new Date().toLocaleString('en-GB'));
314      }
315    }
316  
317    // Run tracking functions once DOM is ready
318    if (document.readyState === 'loading') {
319      document.addEventListener('DOMContentLoaded', () => {
320        grabReferrer();
321        trackUserJourney();
322        trackUserEntryTime();
323      });
324    } else {
325      grabReferrer();
326      trackUserJourney();
327      trackUserEntryTime();
328    }
329</script>
329
330</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.