1<!doctype html> 2<html class="no-js" lang="en"> 3 <head>
4<script src="https://sapi.negate.io/script/ScJ0tm5NfRKwHjkdASqYFA==?shop=887239-2.myshopify.com"></script>
4 5 <meta charset="utf-8"><style> 6 .star-rating-container { 7 display: flex; 8 align-items: center; 9 gap: 10px; 10 justify-content: center; 11 } 12 .star-rating { 13 display: flex; 14 gap: 4px; 15 } 16 .rating-info { 17 display: flex; 18 align-items: center; 19 gap: 5px; 20 } 21 div:has(.star-rating-container) { width: 100%; } 22 .star-rating-item { position: relative; } 23 .star-rating-item-displayed { 24 position: absolute; 25 top: 0; 26 right: 0; 27 bottom: 0; 28 left: 0; 29 overflow: hidden; 30 color: #e1ae01; 31 } 32 .rating-icon-svg { 33 width: 1rem; 34 height: 1rem; 35 max-width: inherit; 36 } 37</style><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 38 <meta name="viewport" content="width=device-width,initial-scale=1"> 39 <meta name="theme-color" content="#557b97"> 40 <meta name="p:domain_verify" content="cb8391adb1d0bc452a36789abdfdc76d" /> 41 <meta name="facebook-domain-verification" content="jsagkbx10jyl3bzfxj82aeynlyuuez" /> 42 <link rel="canonical" href="https://imanisoko.com/cart"> 43 44 <link 45 rel="shortcut icon" 46 href="//cdn.shopify.com/s/files/1/2534/9108/files/imani-favicon-min.png" 47 type="image/png"><title>Your Shopping Cart 48– Imani Soko</title><!-- /snippets/social-meta-tags.liquid --> 49 50 51 52 53<meta property="og:site_name" content="Imani Soko"> 54<meta property="og:url" content="https://imanisoko.com/cart"> 55<meta property="og:title" content="Your Shopping Cart"> 56<meta property="og:type" content="website"> 57<meta property="og:description" content="Discover ethically crafted home decor, connecting you to Kenya's cultural tapestry. Shop with purpose at Imani Soko, by Imani Collective."> 58 59<meta property="og:image" content="http://imanisoko.com/cdn/shop/files/1_30738891-4602-4019-8ec0-76422e3e9121_1200x1200.jpg?v=1686586342"> 60<meta property="og:image:secure_url" content="https://imanisoko.com/cdn/shop/files/1_30738891-4602-4019-8ec0-76422e3e9121_1200x1200.jpg?v=1686586342"> 61 62 63<meta name="twitter:card" content="summary_large_image"> 64<meta name="twitter:title" content="Your Shopping Cart"> 65<meta name="twitter:description" content="Discover ethically crafted home decor, connecting you to Kenya's cultural tapestry. Shop with purpose at Imani Soko, by Imani Collective."> 66 67 68 <link href="//imanisoko.com/cdn/shop/t/14/assets/theme.scss.css?v=125152593886394273841762951410" rel="stylesheet" type="text/css" media="all" /> 69 70 71 72 <link href="//imanisoko.com/cdn/shop/t/14/assets/normalize.css?v=48445716682461949491686586909" rel="stylesheet" type="text/css" media="all" /> 73 74 <link href="//imanisoko.com/cdn/shop/t/14/assets/components.css?v=179557793791202662441686586908" rel="stylesheet" type="text/css" media="all" /> 75 76 <link rel="stylesheet" href="https://use.typekit.net/hvw5mba.css"> 77 <link href="//imanisoko.com/cdn/shop/t/14/assets/fonts.css?v=68416784116076771331712651096" rel="stylesheet" type="text/css" media="all" /> 78 79 <link href="//imanisoko.com/cdn/shop/t/14/assets/imani-collective-v1.css?v=125138611141710854331717107775" rel="stylesheet" type="text/css" media="all" /> 80 <link href="//imanisoko.com/cdn/shop/t/14/assets/imani-collective-custom.css?v=63088399745428303551717099838" rel="stylesheet" type="text/css" media="all" /> 81 <link href="//imanisoko.com/cdn/shop/t/14/assets/jc-custom-header.css?v=173792114129885660061717099411" rel="stylesheet" type="text/css" media="all" /> 82 <link href="//imanisoko.com/cdn/shop/t/14/assets/jc-custom-footer.css?v=163758629952872617121717098749" rel="stylesheet" type="text/css" media="all" /> 83
83<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>
83 84 85
85<script> 86 var theme = { 87 breakpoints: { 88 medium: 750, 89 large: 990, 90 widescreen: 1400 91 }, 92 strings: { 93 addToCart: "Add to cart", 94 soldOut: "Sold out", 95 unavailable: "Unavailable", 96 regularPrice: "Regular price", 97 salePrice: "Sale price", 98 sale: "Sale", 99 showMore: "Show More", 100 showLess: "Show Less", 101 addressError: "Error looking up that address", 102 addressNoResults: "No results for that address", 103 addressQueryLimit: "You have exceeded the Google API usage limit. Consider upgrading to a \u003ca href=\"https:\/\/developers.google.com\/maps\/premium\/usage-limits\"\u003ePremium Plan\u003c\/a\u003e.", 104 authError: "There was a problem authenticating your Google Maps account.", 105 newWindow: "Opens in a new window.", 106 external: "Opens external website.", 107 newWindowExternal: "Opens external website in a new window.", 108 removeLabel: "Remove [product]", 109 update: "Update", 110 quantity: "Quantity", 111 discountedTotal: "Discounted total", 112 regularTotal: "Regular total", 113 priceColumn: "See Price column for discount details.", 114 quantityMinimumMessage: "Quantity must be 1 or more", 115 cartError: "There was an error while updating your cart. Please try again.", 116 removedItemMessage: "Removed \u003cspan class=\"cart__removed-product-details\"\u003e([quantity]) [link]\u003c\/span\u003e from your cart.", 117 unitPrice: "Unit price", 118 unitPriceSeparator: "per", 119 oneCartCount: "1 item", 120 otherCartCount: "[count] items", 121 quantityLabel: "Quantity: [count]" 122 }, 123 moneyFormat: "KSh{{amount}}", 124 moneyFormatWithCurrency: "KSh{{amount}}" 125 } 126 127 document.documentElement.className = document.documentElement.className.replace('no-js', 'js'); 128 </script>
128<script src="//imanisoko.com/cdn/shop/t/14/assets/lazysizes.js?v=94224023136283657951686586909" async="async"></script>
128 129 130
130<script src="//imanisoko.com/cdn/shop/t/14/assets/theme.js?v=173615943244638367721686586911" defer="defer"></script>
130 131 132
132<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js" type="text/javascript"></script>
132 133 134
134<script 135 src="//imanisoko.com/cdn/shop/t/14/assets/imani-collective-custom.js?v=69694839066688887481686586908" 136 type="text/javascript" 137 defer="defer"></script>
137 138 139
139<script 140 src="//imanisoko.com/cdn/shop/t/14/assets/custom.js?v=125248696786508177981686586908" 141 type="text/javascript" 142 defer="defer"></script>
142 143 <!-- [if lte IE 9]>
143<script src="https://cdnjs.cloudflare.com/ajax/libs/placeholders/3.0.2/placeholders.min.js"></script>
143<![endif] --> 144 145
145<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
145<meta name="google-site-verification" content="OhYBNr5qu_9lCOl374hMgzmSU_JLnPapGToUS9J-noc"> 146<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/77325009205/digital_wallets/dialog"> 147<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
147<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
vendor: 1 bytes, line 147
147
148<script id="shopify-features" type="application/json">{"accessToken":"e9f48098d08e0a4729f5dbcf67c6fd24","betas":["rich-media-storefront-analytics"],"domain":"imanisoko.com","predictiveSearch":true,"shopId":77325009205,"locale":"en"}</script>
vendor: 1 bytes, line 148
148
149<script>var Shopify = Shopify || {}; 150Shopify.shop = "887239-2.myshopify.com"; 151Shopify.locale = "en"; 152Shopify.currency = {"active":"KES","rate":"1.0"}; 153Shopify.country = "US"; 154Shopify.theme = {"name":"Imani Website Redesign - Sidekick Custom - 2023","id":152339808565,"schema_name":"Debut","schema_version":"13.4.1","theme_store_id":null,"role":"main"}; 155Shopify.theme.handle = "null"; 156Shopify.theme.style = {"id":null,"handle":null}; 157Shopify.cdnHost = "imanisoko.com/cdn"; 158Shopify.routes = Shopify.routes || {}; 159Shopify.routes.root = "/"; 160Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 161Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 162Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 163Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 163
163
164<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 164
164
165<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 165
165
166<script> 167 window.Shopify = window.Shopify || {}; 168 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 169 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 170 window.Shopify.SignInWithShop.eligible = true; 171</script>
vendor: 1 bytes, line 171
171
172<script id="shop-js-analytics" type="application/json">{"pageType":"cart"}</script>
vendor: 1 bytes, line 172
172
173<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 173
173
174<script type="module"> 175 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 176 177 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 178 179</script>
vendor: 1 bytes, line 179
179
180<script> 181 window.Shopify = window.Shopify || {}; 182 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 183 window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]}; 184</script>
vendor: 1 bytes, line 184
184
185<script>(function() { 186 var isLoaded = false; 187 function asyncLoad() { 188 if (isLoaded) return; 189 isLoaded = true; 190 var urls = ["https:\/\/cdn.nfcube.com\/instafeed-6730f7a92e0131e6dd4c98353ee71b1a.js?shop=887239-2.myshopify.com","https:\/\/api-eu1.hubapi.com\/scriptloader\/v1\/148356240.js?shop=887239-2.myshopify.com","\/\/cdn.shopify.com\/proxy\/f0b5ed572612904795897ce7b4f1ff038a1d19871537f8c9199350c02450707d\/d1639lhkj5l89m.cloudfront.net\/js\/storefront\/uppromote.js?shop=887239-2.myshopify.com\u0026sp-cache-control=cHVibGljLCBtYXgtYWdlPTkwMA"]; 191 for (var i = 0; i < urls.length; i++) { 192 var s = document.createElement('script'); 193 s.type = 'text/javascript'; 194 s.async = true; 195 s.src = urls[i]; 196 var x = document.getElementsByTagName('script')[0]; 197 x.parentNode.insertBefore(s, x); 198 } 199 }; 200 if(window.attachEvent) { 201 window.attachEvent('onload', asyncLoad); 202 } else { 203 window.addEventListener('load', asyncLoad, false); 204 } 205})();</script>
vendor: 1 bytes, line 205
205
206<script id="__st">var __st={"a":77325009205,"offset":10800,"reqid":"67f827e2-67cb-456d-805c-ab54e89a3107-1791496648","pageurl":"imanisoko.com\/cart","u":"27815f80b83e","p":"cart"};</script>
vendor: 1 bytes, line 206
206
207<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 207
207
208<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 208
208
209<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//imanisoko.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 209
209
210<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//imanisoko.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
210<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 210
210
211<script> 212 window.Shopify = window.Shopify || {}; 213 window.Shopify.MCP = window.Shopify.MCP || {}; 214 window.Shopify.MCP.enabled = true; 215 window.Shopify.MCP.shop = "887239-2.myshopify.com"; 216 window.Shopify.MCP.mcpEndpoint = "https:\/\/imanisoko.com\/api\/mcp"; 217 window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\nSet policy_types to also get the store's written policies (full text and URL).\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."},"policy_types":{"type":"array","items":{"type":"string","enum":["refund","shipping","privacy","terms_of_service","terms_of_sale","subscription","legal_notice","contact"]},"description":"Policy kinds to fetch, chosen from the user's question â e.g. [\"refund\"] for returns\/exchanges\/damaged items, [\"contact\"] for phone\/hours\/address. Include every kind the question touches. Omit it to get only FAQ answers."}},"required":["query"]}}]; 218</script>
vendor: 1 bytes, line 218
218
219<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/imanisoko.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 220</script>
vendor: 1 bytes, line 220
220
221<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://imanisoko.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 222</script>
vendor: 1 bytes, line 222
222
223<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 224 function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent); 225</script>
vendor: 1 bytes, line 225
225
226<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}})); 227</script>
227 228
229<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
229 230 <!-- Global site tag (gtag.js) - Google Ads: 10788259966 -->
vendor: 68 bytes, lines 230-231
230 231 <script async src="https://www.googletagmanager.com/gtag/js?id=
231AW-10788259966
vendor: 16 bytes, lines 231-232
231"></script> 232
232<script> 233
vendor: 163 bytes, lines 233-239
233window.dataLayer = window.dataLayer || []; 234 function gtag() { 235 dataLayer.push(arguments); 236 } 237 gtag('js', new Date()); 238 239 gtag('config', '
239AW-10788259966
vendor: 8 bytes, lines 239-240
239'); 240
240</script>
240 241
242<script> 243 var __productWizRio = {}; 244 (function() { 245 // START-1 246 247 __productWizRio.enabled = false; 248 249 // END-1 250 if (__productWizRio.enabled) { 251 252function callback(mutations) { 253 mutations.forEach(function (mutation) { 254 Array.prototype.forEach.call(mutation.addedNodes, function (addedNode) { 255 if (typeof addedNode.className === 'string') { 256 if (!__productWizRio.config) { 257__productWizRio.config = { 258 "breakpoint": "768px", 259 "mobile": { 260 "navigation": false, 261 "pagination": false, 262 "swipe": true, 263 "dark": true, 264 "magnify": false, 265 "thumbnails": { 266 "orientation": "bottom", 267 "multiRow": true, 268 "thumbnailWidth": 58, 269 "navigation": false 270 }, 271 "lightBox": true, 272 "lightBoxZoom": 2, 273 "maxHeight": "720px" 274 }, 275 "desktop": { 276 "navigation": false, 277 "pagination": false, 278 "swipe": true, 279 "dark": true, 280 "magnify": { 281 "width": "full", 282 "height": "full", 283 "zoom": 3 284 }, 285 "thumbnails": { 286 "orientation": "bottom", 287 "multiRow": true, 288 "thumbnailWidth": 88, 289 "navigation": false 290 }, 291 "lightBox": false, 292 "lightBoxZoom": 2, 293 "maxHeight": "720px" 294 } 295}; 296} 297 298if (!__productWizRio.useFormListener) { 299 __productWizRio.useFormListener = true; 300} 301 302try { 303 var isEntry = addedNode.className.indexOf('tabs-wrapper-product') > -1; 304 305 if (isEntry && !__productWizRio.finishedInjection) { 306 var newNode = addedNode.cloneNode(false); 307 newNode.className += ' rio-media-gallery'; 308 newNode.style.paddingBottom = '1px'; 309 addedNode.parentElement.insertBefore(newNode, addedNode.nextSibling); 310 addedNode.style.display = 'none'; 311 312 var currentVariantElem = document.createElement('input'); 313 currentVariantElem.className = 'rio-current-variant'; 314 currentVariantElem.style.display = 'none'; 315 document.head.appendChild(currentVariantElem); 316 317 document.addEventListener('DOMContentLoaded', () => { 318 const select = document.querySelector('#product-select'); 319 let currentVariant = typeof select.value === 'string' ? select.value.concat() : ''; 320 setInterval(() => { 321 if (typeof select.value === 'string' && currentVariant !== select.value && Number.parseInt(select.value, 10) > 0) { 322 currentVariant = select.value; 323 currentVariantElem.value = currentVariant; 324 currentVariantElem.dispatchEvent(new Event('change')); 325 } 326 }, 100); 327 }); 328 329 __productWizRio.finishedInjection = true; 330 } 331} catch (err) {} 332 } 333 }); 334 }); 335} 336var observer = new MutationObserver(callback); 337var config = { childList: true, subtree: true }; 338window.addEventListener('load', function () { 339 observer.disconnect(); 340}); 341observer.observe(document, config); 342 343 } 344 })(); 345</script>
345 346<link rel="stylesheet" href="//imanisoko.com/cdn/shop/t/14/assets/productwiz-rio.css?v=58858461016986618361686586909"> 347<link rel="preload" href="//imanisoko.com/cdn/shop/t/14/assets/productwiz-rio.js?v=51253550578956526281686586910" as="script">
348<script async src="//imanisoko.com/cdn/shop/t/14/assets/productwiz-rio.js?v=51253550578956526281686586910"></script>
348 349 350 351 <!-- BEGIN app block: shopify://apps/nabu-for-fb-pixel/blocks/script-block/692d25a0-75b7-4cff-b3eb-8f1d8e1670bf -->
351<script async src="https://storage.googleapis.com/adnabu-shopify/app-embed-block/facebook-pixel/887239-2.myshopify.com.min.js"></script>
351 352 353<!-- END app block --><!-- BEGIN app block: shopify://apps/smart-discounts/blocks/embed/019d1c1c-2c4b-704e-be88-ea7fd20c9afb -->
354<script src="https://cdn.shopify.com/extensions/01a11b72-8df4-7c1f-8287-a94938d3d87f/smart-automatic-discounts-67/assets/bundle-deals.js" defer></script>
354 355
356<script type="application/json" id="bundle-deals-global-config"> 357 { 358 "shopDomain": "887239-2.myshopify.com", 359 "shopCurrency": "KES", 360 "moneyFormat": "KSh{{amount}}", 361 "currency": "KES", 362 "locale": "en", 363 "country": "US", 364 "marketId": 88527929653, 365 "marketHandle": "united-states", 366 "routes": { 367 "root": "\/", 368 "cartAdd": "\/cart\/add", 369 "cart": "\/cart" 370 }, 371 "isB2B": false 372 } 373</script>
373 374
375<script type="application/json" id="bundle-deals-catalog"> 376[{"type":"bundle_deal","id":"1871046803765","name":"Kikoi Bundle (3 pieces of choice)","appliesTo":"specific_products","productIds":["9790458986805"],"collectionIds":[],"excludeProductIds":[],"locations":[],"excludeB2B":false,"combinesWith":{"productDiscounts":true,"orderDiscounts":true,"shippingDiscounts":true},"startsAt":"2026-07-21T08:15:29.920Z","endsAt":null,"blocks":[{"id":"46BmH","blockType":"quantity_break","quantity":1,"discount":{"type":"none","value":0},"title":"Buy 1","subtitle":"","label":"","badge":"","badgeStyle":"none","selectedByDefault":false,"soldOut":false,"discountLabel":""},{"id":"jZSTI","blockType":"quantity_break","quantity":2,"discount":{"type":"percentage","value":10},"title":"Buy 2","subtitle":"Buy 2, get 10% off","label":"SAVE 10%","badge":"","badgeStyle":"none","selectedByDefault":true,"soldOut":false,"discountLabel":""},{"id":"pGU1t","blockType":"quantity_break","quantity":3,"discount":{"type":"percentage","value":15},"title":"Buy 3","subtitle":"Buy 3, get 15% off","label":"SAVE 15%","badge":"","badgeStyle":"none","selectedByDefault":false,"soldOut":false,"discountLabel":""}],"settings":{"allowMixedVariants":true,"showVariantPickers":true,"showComparePrices":true,"showPerItemPrice":false,"showVariantImages":true,"hideNativeQuantity":true,"hideNativeVariantPicker":true,"skipCart":false,"layout":"vertical","widgetTitle":"Bundle \u0026 Save","widgetTitleAlignment":"center","soldOutText":"Sold Out","perItemSuffix":"\/ each","tierBorderColor":"#00000026","tierBorderHoverColor":"#00000059","tierActiveBorderColor":"#333333","tierBgColor":"#ffffff","tierActiveBgColor":"#fafafa","dotColor":"#00000040","dotActiveColor":"#333333","titleColor":"#000000","titleDividerColor":"#00000026","tierNameColor":"#000000","subtitleColor":"#666666","priceColor":"#000000","comparePriceColor":"#888888","labelBgColor":"#00000012","labelTextColor":"#000000","badgeBgColor":"#333333","badgeTextColor":"#ffffff","soldOutBgColor":"#000000bf","soldOutTextColor":"#ffffff","titleFontSize":"14px","tierNameFontSize":"16px","tierNameFontWeight":"600","subtitleFontSize":"13px","priceFontSize":"16px","priceFontWeight":"600","tierBorderRadius":"8px","tierBorderWidth":"2px","tierPadding":"12px 16px","tierGap":"8px","badgeBorderRadius":"6px","custom_css":"","freeGiftBgColor":"#333333","freeGiftTextColor":"#ffffff","freeGiftBorderColor":"#333333","freeGiftImageBorderRadius":"8px","freeGiftImageBorderWidth":"1px","freeGiftImageBorderColor":"#555555","freeGiftTitleFontSize":"14px","freeGiftTitleFontWeight":"600","freeGiftPriceColor":"#cccccc","freeGiftSelectBorderColor":"#666666","freeGiftSelectBgColor":"#444444","freeGiftSelectTextColor":"#ffffff","freeGiftSelectBorderRadius":"4px","freeGiftSelectFontSize":"12px","freeGiftImageSize":"36px","freeGiftPaddingVertical":"10px","freeGiftPaddingHorizontal":"10px","freeGiftInactiveBgColor":"#f5f5f5","freeGiftInactiveTextColor":"#666666","freeGiftInactiveBorderColor":"#f5f5f5","freeGiftInactivePriceColor":"#aaaaaa"},"translations":{}},{"type":"bundle_deal","id":"1871047262517","name":"Pillow Bundle","appliesTo":"specific_products","productIds":["8351949914421","9199648047413","10249002189109","9164498731317","10248641642805","9518595801397","8351933530421","8351933923637","8351933497653","8351933825333","8351934841141","10249018376501","8351940149557","8351940051253","10249024766261","10249022931253"],"collectionIds":[],"excludeProductIds":[],"locations":[],"excludeB2B":false,"combinesWith":{"productDiscounts":true,"orderDiscounts":true,"shippingDiscounts":true},"startsAt":"2026-07-21T08:22:13.277Z","endsAt":null,"blocks":[{"id":"dod9s","blockType":"quantity_break","quantity":1,"discount":{"type":"none","value":0},"title":"Buy 1","subtitle":"","label":"","badge":"","badgeStyle":"none","selectedByDefault":false,"soldOut":false,"discountLabel":""},{"id":"ukRWG","blockType":"quantity_break","quantity":2,"discount":{"type":"percentage","value":10},"title":"Buy 2","subtitle":"Buy 2, get 10% off","label":"SAVE 10%","badge":"","badgeStyle":"none","selectedByDefault":true,"soldOut":false,"discountLabel":""},{"id":"XDao_","blockType":"quantity_break","quantity":3,"discount":{"type":"percentage","value":15},"title":"Buy 3","subtitle":"Buy 3, get 15% off","label":"SAVE 15 %","badge":"","badgeStyle":"none","selectedByDefault":false,"soldOut":false,"discountLabel":""}],"settings":{"allowMixedVariants":true,"showVariantPickers":true,"showComparePrices":true,"showPerItemPrice":false,"showVariantImages":true,"hideNativeQuantity":true,"hideNativeVariantPicker":true,"skipCart":false,"layout":"vertical","widgetTitle":"Bundle \u0026 Save","widgetTitleAlignment":"center","soldOutText":"Sold Out","perItemSuffix":"\/ each","tierBorderColor":"#00000026","tierBorderHoverColor":"#00000059","tierActiveBorderColor":"#333333","t
376ierBgColor":"#ffffff","tierActiveBgColor":"#fafafa","dotColor":"#00000040","dotActiveColor":"#333333","titleColor":"#000000","titleDividerColor":"#00000026","tierNameColor":"#000000","subtitleColor":"#666666","priceColor":"#000000","comparePriceColor":"#888888","labelBgColor":"#00000012","labelTextColor":"#000000","badgeBgColor":"#333333","badgeTextColor":"#ffffff","soldOutBgColor":"#000000bf","soldOutTextColor":"#ffffff","titleFontSize":"14px","tierNameFontSize":"16px","tierNameFontWeight":"600","subtitleFontSize":"13px","priceFontSize":"16px","priceFontWeight":"600","tierBorderRadius":"8px","tierBorderWidth":"2px","tierPadding":"12px 16px","tierGap":"8px","badgeBorderRadius":"6px","custom_css":"","freeGiftBgColor":"#333333","freeGiftTextColor":"#ffffff","freeGiftBorderColor":"#333333","freeGiftImageBorderRadius":"8px","freeGiftImageBorderWidth":"1px","freeGiftImageBorderColor":"#555555","freeGiftTitleFontSize":"14px","freeGiftTitleFontWeight":"600","freeGiftPriceColor":"#cccccc","freeGiftSelectBorderColor":"#666666","freeGiftSelectBgColor":"#444444","freeGiftSelectTextColor":"#ffffff","freeGiftSelectBorderRadius":"4px","freeGiftSelectFontSize":"12px","freeGiftImageSize":"36px","freeGiftPaddingVertical":"10px","freeGiftPaddingHorizontal":"10px","freeGiftInactiveBgColor":"#f5f5f5","freeGiftInactiveTextColor":"#666666","freeGiftInactiveBorderColor":"#f5f5f5","freeGiftInactivePriceColor":"#aaaaaa"},"translations":{}},{"type":"bundle_deal","id":"1871047491893","name":"Jewellery Bundle","appliesTo":"specific_collections","productIds":[],"collectionIds":["648092778805"],"excludeProductIds":[],"locations":[],"excludeB2B":false,"combinesWith":{"productDiscounts":true,"orderDiscounts":true,"shippingDiscounts":true},"startsAt":"2026-07-21T08:25:07.819Z","endsAt":null,"blocks":[{"id":"Tdxgd","blockType":"quantity_break","quantity":1,"discount":{"type":"none","value":0},"title":"Buy 1","subtitle":"","label":"","badge":"","badgeStyle":"none","selectedByDefault":false,"soldOut":false,"discountLabel":""},{"id":"xwA0W","blockType":"quantity_break","quantity":2,"discount":{"type":"percentage","value":10},"title":"Buy 2","subtitle":"Buy 2, get 10% off","label":"SAVE 10%","badge":"","badgeStyle":"none","selectedByDefault":true,"soldOut":false,"discountLabel":""},{"id":"EbeYn","blockType":"quantity_break","quantity":3,"discount":{"type":"percentage","value":15},"title":"Buy 3","subtitle":"Buy 3, get 15 % off","label":"SAVE 15 %","badge":"","badgeStyle":"none","selectedByDefault":false,"soldOut":false,"discountLabel":""}],"settings":{"allowMixedVariants":true,"showVariantPickers":true,"showComparePrices":true,"showPerItemPrice":false,"showVariantImages":true,"hideNativeQuantity":true,"hideNativeVariantPicker":true,"skipCart":false,"layout":"vertical","widgetTitle":"Bundle \u0026 Save","widgetTitleAlignment":"center","soldOutText":"Sold Out","perItemSuffix":"\/ each","tierBorderColor":"#00000026","tierBorderHoverColor":"#00000059","tierActiveBorderColor":"#333333","tierBgColor":"#ffffff","tierActiveBgColor":"#fafafa","dotColor":"#00000040","dotActiveColor":"#333333","titleColor":"#000000","titleDividerColor":"#00000026","tierNameColor":"#000000","subtitleColor":"#666666","priceColor":"#000000","comparePriceColor":"#888888","labelBgColor":"#00000012","labelTextColor":"#000000","badgeBgColor":"#333333","badgeTextColor":"#ffffff","soldOutBgColor":"#000000bf","soldOutTextColor":"#ffffff","titleFontSize":"14px","tierNameFontSize":"16px","tierNameFontWeight":"600","subtitleFontSize":"13px","priceFontSize":"16px","priceFontWeight":"600","tierBorderRadius":"8px","tierBorderWidth":"2px","tierPadding":"12px 16px","tierGap":"8px","badgeBorderRadius":"6px","custom_css":"","freeGiftBgColor":"#333333","freeGiftTextColor":"#ffffff","freeGiftBorderColor":"#333333","freeGiftImageBorderRadius":"8px","freeGiftImageBorderWidth":"1px","freeGiftImageBorderColor":"#555555","freeGiftTitleFontSize":"14px","freeGiftTitleFontWeight":"600","freeGiftPriceColor":"#cccccc","freeGiftSelectBorderColor":"#666666","freeGiftSelectBgColor":"#444444","freeGiftSelectTextColor":"#ffffff","freeGiftSelectBorderRadius":"4px","freeGiftSelectFontSize":"12px","freeGiftImageSize":"36px","freeGiftPaddingVertical":"10px","freeGiftPaddingHorizontal":"10px","freeGiftInactiveBgColor":"#f5f5f5","freeGiftInactiveTextColor":"#666666","freeGiftInactiveBorderColor":"#f5f5f5","freeGiftInactivePriceColor":"#aaaaaa"},"translations":{}}] 377</script>
377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410
411<script type="application/json" id="smart-widget-config"> 412 { 413 "shopDomain": "887239-2.myshopify.com", 414 "currency": "KES", 415 "shopCurrency": "KES", 416 "moneyFormat": "KSh{{amount}}", 417 "locale": "en", 418 "country": "US", 419 "marketId": 88527929653, 420 "marketHandle": "united-states", 421 "routes": { 422 "root": "\/", 423 "cartAdd": "\/cart\/add", 424 "cart": "\/cart", 425 "cartChange": "\/cart\/change", 426 "cartUpdate": "\/cart\/update" 427 }, 428 "isB2B": false, 429 "customerTags": [] 430 } 431</script>
vendor: 2 bytes, line 431
431
432<script type="application/json" id="smart-widget-settings"> 433null 434</script>
434 435
436<script type="application/json" id="smart-widget-bundles"> 437[] 438</script>
438 439 440 441 442 443 444 445 446 447<!-- END app block --><!-- BEGIN app block: shopify://apps/judge-me-reviews/blocks/judgeme_core/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8 --><!-- Start of Judge.me Core --> 448 449 450 451 452 453 454 455<link rel="dns-prefetch" href="https://cdn.judge.me"> 456<link rel="dns-prefetch" href="https://cdn1.judge.me"> 457<link rel="dns-prefetch" href="https://api.judge.me"> 458
459<script data-cfasync='false' class='jdgm-settings-script'>window.jdgmSettings={"pagination":5,"disable_web_reviews":false,"coupon_receiving_condition":"any_review","coupon_value_type":"percentage","coupon_value_percentage":10,"coupon_value_fixed_amount":0,"coupon_discount_type":"single","coupon_tier_text_enabled":false,"coupon_tier_text_percentage":10,"coupon_tier_text_fixed_amount":0,"coupon_tier_photo_enabled":false,"coupon_tier_photo_percentage":10,"coupon_tier_photo_fixed_amount":0,"coupon_tier_video_enabled":false,"coupon_tier_video_percentage":10,"coupon_tier_video_fixed_amount":0,"enable_coupons":false,"badge_no_review_text":"No reviews","badge_n_reviews_text":"{{ n }} review/reviews","hide_badge_preview_if_no_reviews":true,"badge_hide_text":false,"enforce_center_preview_badge":false,"widget_title":"Customer Reviews","widget_open_form_text":"Write a review","widget_close_form_text":"Cancel review","widget_refresh_page_text":"Refresh page","widget_summary_text":"Based on {{ number_of_reviews }} review/reviews","widget_no_review_text":"Be the first to write a review","widget_name_field_text":"Display name","widget_verified_name_field_text":"Verified Name (public)","widget_name_placeholder_text":"Display name","widget_required_field_error_text":"This field is required.","widget_email_field_text":"Email address","widget_verified_email_field_text":"Verified Email (private, can not be edited)","widget_email_placeholder_text":"Your email address","widget_email_field_error_text":"Please enter a valid email address.","widget_rating_field_text":"Rating","widget_review_title_field_text":"Review Title","widget_review_title_placeholder_text":"Give your review a title","widget_review_body_field_text":"Review content","widget_review_body_placeholder_text":"Start writing here...","widget_pictures_field_text":"Picture/Video (optional)","widget_submit_review_text":"Submit Review","widget_submit_verified_review_text":"Submit Verified Review","widget_submit_success_msg_with_auto_publish":"Thank y
459ou! Please refresh the page in a few moments to see your review. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_submit_success_msg_no_auto_publish":"Thank you! Your review will be published as soon as it is approved by the shop admin. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_show_default_reviews_out_of_total_text":"Showing {{ n_reviews_shown }} out of {{ n_reviews }} reviews.","widget_show_all_link_text":"Show all","widget_show_less_link_text":"Show less","widget_author_said_text":"{{ reviewer_name }} said:","widget_days_text":"{{ n }} days ago","widget_weeks_text":"{{ n }} week/weeks ago","widget_months_text":"{{ n }} month/months ago","widget_years_text":"{{ n }} year/years ago","widget_yesterday_text":"Yesterday","widget_today_text":"Today","widget_replied_text":"\u003e\u003e {{ shop_name }} replied:","widget_read_more_text":"Read more","widget_reviewer_name_as_initial":"","widget_rating_filter_color":"#fbcd0a","widget_rating_filter_see_all_text":"See all reviews","widget_sorting_most_recent_text":"Most Recent","widget_sorting_highest_rating_text":"Highest Rating","widget_sorting_lowest_rating_text":"Lowest Rating","widget_sorting_with_pictures_text":"Only Pictures","widget_sorting_most_helpful_text":"Most Helpful","widget_open_question_form_text":"Ask a question","widget_reviews_subtab_text":"Reviews","widget_questions_subtab_text":"Questions","widget_question_label_text":"Question","widget_answer_label_text":"Answer","widget_question_placeholder_text":"Write your question here","widget_submit_question_text":"Submit Question","widget_question_submit_success_text":"Thank you for your question! We will notify you once it gets answered.","verified_badge_text":"Verified","verified_badge_bg_color":"","verified_badge_text_color":"","verified_badge_placement":"left-of-reviewer-name","widget_review_max_height":"","widget_hide_border":false,"widget_social_share":false,"widget_thumb":false,"widget_review_location_show":false,"widget_location_format":"","all_reviews_include_out_of_store_products":true,"all_reviews_out_of_store_text":"(out of store)","all_reviews_pagination":100,"all_reviews_product_name_prefix_text":"about","enable_review_pictures":true,"enable_question_anwser":false,"widget_theme":"default","review_date_format":"mm/dd/yyyy","default_sort_method":"most-recent","enable_ai_review_visibility":true,"widget_product_reviews_subtab_text":"Product Reviews","widget_shop_reviews_subtab_text":"Shop Reviews","widget_other_products_reviews_text":"Reviews for other products","widget_store_reviews_subtab_text":"Store reviews","widget_product_variant_reference_text":"Review for","widget_no_store_reviews_text":"This store hasn't received any reviews yet","widget_web_restriction_product_reviews_text":"This product hasn't received any reviews yet","widget_no_items_text":"No items found","widget_show_more_text":"Show more","widget_write_a_store_review_text":"Write a Store Review","widget_product_and_store_reviews_text":"Product and store reviews","widget_reviews_in_collection_text":"Reviews in this collection","widget_other_languages_heading":"Reviews in Other Languages","widget_translate_review_text":"Translate review to {{ language }}","widget_translating_review_text":"Translating...","widget_show_original_translation_text":"Show original ({{ language }})","widget_translate_review_failed_text":"Review couldn't be translated.","widget_translate_review_retry_text":"Retry","widget_translate_review_try_again_later_text":"Try again later","show_product_url_for_grouped_product":false,"widget_sorting_pictures_first_text":"Pictures First","show_pictures_on_all_rev_page_mobile":false,"show_pictures_on_all_rev_page_desktop":false,"floating_tab_hide_mobile_install_preference":false,"floating_tab_button_name":"â
Reviews","floating_tab_title":"Let customers speak for us","floating_tab_button_color":"","floating_tab_button_background_color":"","floating_tab_url":"","floating_tab_url_enabled":false,"floating_tab_tab_style":"text","all_reviews_text_badge_text":"Customers rate us {{ shop.metafields.judgeme.all_reviews_rating | round: 1 }}/5 based on {{ shop.metafields.judgeme.all_reviews_count }} reviews.","all_reviews_text_badge_text_branded_style":"{{ shop.metafields.judgeme.all_reviews_rating | round: 1 }} out of 5 stars based on {{ shop.metafields.judgeme.all_reviews_count }} reviews","is_all_reviews_text_badge_a_link":false,"show_stars_for_all_reviews_text_badge":false,"all_reviews_text_badge_url":"","all_reviews_text_style":"branded","all_reviews_text_color_style":"judgeme_brand_color","all_reviews_text_color":"#108474","all_reviews_text_show_jm_brand":false,"featured_carousel_show_header":true,"featured_carousel_title":"Let customers speak for us","testimonials_carousel_title":"Customers are saying","videos_carousel_title":"Real customer stories","cards_carousel_title":"Customers are saying","featured_carousel_count_text":"from {{ n }} reviews","featured_carousel_add_link_to_all_reviews_page":false,"featured_carousel_url":"","featured_carousel_show_images":true,"featured_carousel_autoslide_interval":5,"featured_carousel_arrows_on_the_sides":false,"featured_carousel_height":250,"featured_carousel_width":80,"featured_carousel_image_size":0,"featured_carousel_image_height":250,"featured_carousel_arrow_color":"#eeeeee","verified_count_badge_style":"branded","verified_count_badge_orientation":"horizontal","verified_count_badge_color_style":"judgeme_brand_color","verified_count_badge_color":"#108474","is_verified_count_badge_a_link":false,"verified_count_badge_url":"","verified_count_badge_show_jm_brand":true,"widget_rating_preset_default":5,"widget_first_sub_tab":"product-reviews","widget_show_histogram":true,"widget_histogram_use_custom_color":false,"widget_pagination_use_custom_color":false,"widget_star_use_custom_color":false,"widget_verified_badge_use_custom_color":false,"widget_write_review_use_custom_color":false,"picture_reminder_submit_button":"Upload Pictures","enable_review_videos":true,"mute_video_by_default":false,"widget_sorting_videos_first_text":"Videos First","widget_review_pending_text":"Pending","featured_carousel_items_for_large_screen":3,"social_share_options_order":"Facebook,Twitter","remove_microdata_snippet":false,"disable_json_ld":false,"enable_json_ld_products":false,"preview_badge_show_question_text":false,"preview_badge_no_question_text":"No questions","preview_badge_n_question_text":"{{ number_of_questions }} question/questions","qa_badge_show_icon":false,"qa_badge_position":"same-row","remove_judgeme_branding":false,"widget_add_search_bar":false,"widget_search_bar_placeholder":"Search","widget_sorting_verified_only_text":"Verified only","featured_carousel_theme":"default","featured_carousel_show_rating":true,"featured_carousel_show_title":true,"featured_carousel_show_body":true,"featured_carousel_show_date":false,"featured_carousel_show_reviewer":true,"featured_carousel_show_product":false,"featured_carousel_header_background_color":"#108474","featured_carousel_header_text_color":"#ffffff","featured_carousel_name_product_separator":"reviewed","featured_carousel_full_star_background":"#108474","featured_carousel_empty_star_background":"#dadada","featured_carousel_vertical_theme_background":"#f9fafb","featured_carousel_verified_badge_enable":true,"featured_carousel_verified_badge_color":"#108474","featured_carousel_border_style":"round","featured_carousel_review_line_length_limit":3,"featured_carousel_more_reviews_button_text":"Read more reviews","featured_carousel_view_product_button_text":"View product","all_reviews_page_load_reviews_on":"scroll","all_reviews_page_load_more_text":"Load More Reviews","disable_fb_tab_reviews":false,"enable_ajax_cdn_cache":false,"widget_advanced_speed_features":5,"widget_public_name_text":"displayed publicly like","default_reviewer_name":"John Smith","default_reviewer_name_has_non_latin":true,"widget_reviewer_anonymous":"Anonymous","medals_widget_title":"Judge.me Review Medals","medals_widget_background_color":"#f9fafb","medals_widget_position":"footer_all_pages","medals_widget_border_color":"#f9fafb","medals_widget_verified_text_position":"left","medals_widget_use_monochromatic_version":false,"medals_widget_elements_color":"#108474","show_reviewer_avatar":true,"widget_invalid_yt_video_url_error_text":"Not a YouTube video URL","widget_max_length_field_error_text":"Please enter no more than {0} characters.","widget_show_country_flag":false,"widget_show_collected_via_shop_app":true,"widget_verified_by_shop_badge_style":"light","widget_verified_by_shop_text":"Verified by Shop","widget_show_photo_gallery":true,"widget_load_with_code_splitting":true,"widget_ugc_install_preference":false,"widget_ugc_title":"Made by us, Shared by you","widget_ugc_subt
459itle":"Tag us to see your picture featured in our page","widget_ugc_arrows_color":"#ffffff","widget_ugc_primary_button_text":"Buy Now","widget_ugc_primary_button_background_color":"#108474","widget_ugc_primary_button_text_color":"#ffffff","widget_ugc_primary_button_border_width":"0","widget_ugc_primary_button_border_style":"none","widget_ugc_primary_button_border_color":"#108474","widget_ugc_primary_button_border_radius":"25","widget_ugc_secondary_button_text":"Load More","widget_ugc_secondary_button_background_color":"#ffffff","widget_ugc_secondary_button_text_color":"#108474","widget_ugc_secondary_button_border_width":"2","widget_ugc_secondary_button_border_style":"solid","widget_ugc_secondary_button_border_color":"#108474","widget_ugc_secondary_button_border_radius":"25","widget_ugc_reviews_button_text":"View Reviews","widget_ugc_reviews_button_background_color":"#ffffff","widget_ugc_reviews_button_text_color":"#108474","widget_ugc_reviews_button_border_width":"2","widget_ugc_reviews_button_border_style":"solid","widget_ugc_reviews_button_border_color":"#108474","widget_ugc_reviews_button_border_radius":"25","widget_ugc_reviews_button_link_to":"judgeme-reviews-page","widget_ugc_show_post_date":true,"widget_ugc_max_width":"800","widget_rating_metafield_value_type":true,"widget_primary_color":"#108474","widget_enable_secondary_color":false,"widget_secondary_color":"#edf5f5","widget_summary_average_rating_text":"{{ average_rating }} out of 5","widget_media_grid_title":"Customer photos \u0026 videos","widget_media_grid_see_more_text":"See more","widget_round_style":false,"widget_show_product_medals":true,"widget_verified_by_judgeme_text":"Verified by Judge.me","widget_show_store_medals":true,"widget_verified_by_judgeme_text_in_store_medals":"Verified by Judge.me","widget_media_field_exceed_quantity_message":"Sorry, we can only accept {{ max_media }} for one review.","widget_media_field_exceed_limit_message":"{{ file_name }} is too large, please select a {{ media_type }} less than {{ size_limit }}MB.","widget_review_submitted_text":"Review Submitted!","widget_question_submitted_text":"Question Submitted!","widget_close_form_text_question":"Cancel","widget_write_your_answer_here_text":"Write your answer here","widget_enabled_branded_link":true,"widget_show_collected_by_judgeme":false,"widget_reviewer_name_color":"","widget_write_review_text_color":"","widget_write_review_bg_color":"","widget_collected_by_judgeme_text":"collected by Judge.me","widget_pagination_type":"standard","widget_load_more_text":"Load More","widget_load_more_color":"#108474","widget_full_review_text":"Full Review","widget_read_more_reviews_text":"Read More Reviews","widget_read_questions_text":"Read Questions","widget_questions_and_answers_text":"Questions \u0026 Answers","widget_verified_by_text":"Verified by","widget_verified_text":"Verified","widget_number_of_reviews_text":"{{ number_of_reviews }} reviews","widget_back_button_text":"Back","widget_next_button_text":"Next","widget_custom_forms_filter_button":"Filters","custom_forms_style":"horizontal","widget_show_review_information":false,"how_reviews_are_collected":"How reviews are collected?","widget_show_review_keywords":false,"widget_gdpr_statement":"How we use your data: We'll only contact you about the review you left, and only if necessary. By submitting your review, you agree to Judge.me's \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms\u003c/a\u003e, \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy\u003c/a\u003e and \u003ca href='https://judge.me/content-policy' target='_blank' rel='nofollow noopener'\u003econtent\u003c/a\u003e policies.","widget_multilingual_sorting_enabled":false,"widget_translate_review_content_enabled":false,"widget_translate_review_content_method":"manual","popup_widget_review_selection":"automatically_with_pictures","popup_widget_round_border_style":true,"popup_widget_show_title":true,"popup_widget_show_body":true,"popup_widget_show_reviewer":false,"popup_widget_show_product":true,"popup_widget_show_pictures":true,"popup_widget_use_review_picture":true,"popup_widget_show_on_home_page":true,"popup_widget_show_on_product_page":true,"popup_widget_show_on_collection_page":true,"popup_widget_show_on_cart_page":true,"popup_widget_position":"bottom_left","popup_widget_first_review_delay":5,"popup_widget_duration":5,"popup_widget_interval":5,"popup_widget_review_count":5,"popup_widget_hide_on_mobile":true,"review_snippet_widget_round_border_style":true,"review_snippet_widget_card_color":"#FFFFFF","review_snippet_widget_text_color":"#000000","review_snippet_widget_lighter_text_color":"#7B7B7B","review_snippet_widget_slider_arrows_background_color":"#FFFFFF","review_snippet_widget_slider_arrows_color":"#000000","review_snippet_widget_star_color":"#108474","show_product_variant":false,"all_reviews_product_variant_label_text":"Variant: ","widget_show_verified_branding":true,"widget_ai_summary_title":"Customers say","widget_ai_summary_disclaimer":"AI-powered review summary based on recent customer reviews","widget_show_ai_summary":false,"widget_show_ai_summary_bg":false,"write_review_button_visibility":"everyone","store_summary_widget_heading":"Customers rate this store","store_summary_widget_button_text":"View customer reviews","store_summary_widget_button_theme_text":"See AI reviews summary","widget_show_review_title_input":false,"widget_autofill_review_title":true,"redirect_reviewers_invited_via_email":"external_form","request_store_review_after_product_review":true,"request_review_other_products_in_order":true,"review_form_color_scheme":"default","review_form_corner_style":"square","review_form_star_color":"#108474","review_form_text_color":"#333333","review_form_background_color":"#ffffff","review_form_field_background_color":"#fafafa","review_form_button_color":"#108474","review_form_button_text_color":"#ffffff","review_form_modal_overlay_color":"#000000","review_form_theme":"multi_step","review_form_location":"in_store_popup","review_form_external_page_background_color":"#C5F7F0","review_content_screen_title_text":"How would you rate this product?","review_content_introduction_text":"We would love it if you would share a bit about your experience.","store_review_form_title_text":"How would you rate this store?","store_review_form_introduction_text":"We would love it if you would share a bit about your experience.","show_review_guidance_text":true,"one_star_review_guidance_text":"Poor","five_star_review_guidance_text":"Great","customer_information_screen_title_text":"About you","customer_information_introduction_text":"Please tell us more about you.","custom_questions_screen_title_text":"Your experience in more detail","custom_questions_introduction_text":"Here are a few questions to help us understand more about your experience.","review_submitted_screen_title_text":"Thanks for your review!","review_submitted_screen_thank_you_text":"We are processing it and it will appear on the store soon.","review_submitted_screen_email_verification_text":"Please confirm your email by clicking the link we just sent you. This helps us keep reviews authentic.","confirm_email_screen_title_text":"Confirm your email","confirm_email_screen_message_text":"To help keep reviews authentic, we'll send you a secure link to continue writing your review. It only takes a moment.","check_email_screen_title_text":"Check your email","check_email_screen_message_text":"We sent you an email to {{ email }}. Click the button on the email to continue.","check_email_screen_resend_message_text":"Email resent!","check_email_resend_hint_text":"Didn't get the email? Check your spam folder or [resend the email].","verification_email_rate_limit_error_text":"You've reached the limit for review attempts on this product. Please check your inbox or try again later.","review_submitted_request_store_review_text":"Would you like to share your experience of shopping with us?","review_submitted_review_other_products_text":"Would you like to review these products?","store_review_screen_title_text":"Would you like to share your experience of shopping with us?","store_review_introduction_text":"We value your feedback and use it to improve. Please share any thoughts or suggestions you have.","reviewer_media_screen_title_picture_text":"Share a picture","reviewer_media_introduction_picture_text":"Upload a photo to support your review.","reviewer_media_screen_title_video_text":"Share a video","reviewer_media_introduction_video_text":"Upload a video to support your review.","reviewer_media_screen_title_picture_or_video_text":"Share a picture or video","reviewer_media_introduction_picture_or_video_text":"Upload a photo or video to support your review.","reviewer_media_
459youtube_url_text":"Paste your Youtube URL here","advanced_settings_next_step_button_text":"Next","advanced_settings_close_review_button_text":"Close","modal_write_review_flow":true,"write_review_flow_required_text":"Required","write_review_flow_privacy_message_text":"We respect your privacy.","write_review_flow_anonymous_text":"Post review as anonymous","write_review_flow_visibility_text":"This won't be visible to other customers.","write_review_flow_multiple_selection_help_text":"Select as many as you like","write_review_flow_single_selection_help_text":"Select one option","write_review_flow_required_field_error_text":"This field is required","write_review_flow_invalid_email_error_text":"Please enter a valid email address","write_review_flow_max_length_error_text":"Max. {{ max_length }} characters.","write_review_flow_media_upload_text":"\u003cb\u003eClick to upload\u003c/b\u003e or drag and drop","write_review_flow_gdpr_statement":"We'll only contact you about your review if necessary. By submitting your review, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","rating_only_reviews_enabled":false,"show_negative_reviews_help_screen":false,"new_review_flow_help_screen_rating_threshold":3,"negative_review_resolution_screen_title_text":"Tell us more","negative_review_resolution_text":"Your experience matters to us. If there were issues with your purchase, we're here to help. Feel free to reach out to us, we'd love the opportunity to make things right.","negative_review_resolution_button_text":"Contact us","negative_review_resolution_proceed_with_review_text":"Leave a review","negative_review_resolution_subject":"Issue with purchase from {{ shop_name }}.{{ order_name }}","coupon_promo_intro_any_review_text":"Write a review and get a coupon for {{ amount }} off your next purchase","coupon_promo_intro_with_photo_text":"Write a review and add a photo or video to get a coupon for {{ amount }} off your next purchase","coupon_promo_intro_with_video_text":"Write a review and add a video to get a coupon for {{ amount }} off your next purchase","coupon_promo_intro_up_to_any_review_text":"Write a review and get a coupon for up to {{ amount }} off your next purchase","coupon_promo_intro_up_to_with_photo_text":"Write a review and add a photo or video to get a coupon for up to {{ amount }} off your next purchase","coupon_promo_intro_external_text":"Write a review and get a reward for your next purchase","coupon_promo_intro_external_with_photo_text":"Write a review and add a photo or video to get a reward for your next purchase","coupon_promo_intro_external_with_video_text":"Write a review and add a video to get a reward for your next purchase","coupon_promo_media_photo_text":"Add a photo or video and get a coupon for {{ amount }} off your next purchase","coupon_promo_media_photo_only_text":"Add a photo and get a coupon for {{ amount }} off your next purchase","coupon_promo_media_video_text":"Add a video and get a coupon for {{ amount }} off your next purchase","coupon_promo_media_external_photo_text":"Add a photo or video and get a reward for your next purchase","coupon_promo_media_external_photo_only_text":"Add a photo and get a reward for your next purchase","coupon_promo_media_external_video_text":"Add a video and get a reward for your next purchase","coupon_promo_success_text":"You've got a coupon for your next purchase at {{ shop_name }}!","coupon_promo_success_subtext":"You'll receive your coupon email within the hour.","preview_badge_collection_page_install_status":false,"widget_review_custom_css":"","preview_badge_custom_css":"","preview_badge_stars_count":"5-stars","featured_carousel_custom_css":"","floating_tab_custom_css":"","all_reviews_widget_custom_css":"","medals_widget_custom_css":"","verified_badge_custom_css":"","all_reviews_text_custom_css":"","transparency_badges_collected_via_store_invite":false,"transparency_badges_from_another_provider":false,"transparency_badges_collected_from_store_visitor":false,"transparency_badges_collected_by_verified_review_provider":false,"transparency_badges_earned_reward":false,"transparency_badges_collected_via_store_invite_text":"Review collected via store invitation","transparency_badges_from_another_provider_text":"Review collected from another provider","transparency_badges_collected_from_store_visitor_text":"Review collected from a store visitor","transparency_badges_written_in_google_text":"Review written in Google","transparency_badges_written_in_etsy_text":"Review written in Etsy","transparency_badges_written_in_shop_app_text":"Review written in Shop App","transparency_badges_earned_reward_text":"Review earned a reward for future purchase","product_review_widget_per_page":10,"widget_other_languages_reviews_per_page":3,"widget_store_review_label_text":"Review about the store","widget_cart_mode_aggregate_heading_text":"Customers rate this store","checkout_comment_extension_title_on_product_page":"Customer Comments","checkout_comment_extension_num_latest_comment_show":5,"checkout_comment_extension_format":"name_and_timestamp","checkout_comment_customer_name":"last_initial","checkout_comment_comment_notification":true,"preview_badge_collection_page_install_preference":false,"preview_badge_home_page_install_preference":false,"preview_badge_product_page_install_preference":false,"review_widget_install_preference":"","review_carousel_install_preference":false,"floating_reviews_tab_install_preference":"none","verified_reviews_count_badge_install_preference":false,"all_reviews_text_install_preference":false,"review_widget_best_location":false,"judgeme_medals_install_preference":false,"review_widget_revamp_enabled":true,"review_widget_qna_enabled":false,"review_widget_revamp_dual_publish_end_date":"2026-07-30T08:35:05.000+00:00","review_widget_header_theme":"minimal","review_widget_widget_title_enabled":true,"review_widget_header_text_size":"medium","review_widget_header_text_weight":"regular","review_widget_average_rating_style":"compact","review_widget_bar_chart_enabled":true,"review_widget_bar_chart_type":"numbers","review_widget_bar_chart_style":"standard","review_widget_expanded_media_gallery_enabled":false,"review_widget_show_review_highlights":false,"review_widget_show_review_keywords_in_gray":false,"review_widget_reviews_section_theme":"standard","review_widget_image_style":"thumbnails","review_widget_review_image_ratio":"square","review_widget_stars_size":"medium","review_widget_verified_badge":"standard_text","review_widget_review_title_text_size":"medium","review_widget_review_text_size":"medium","review_widget_review_text_length":"medium","review_widget_number_of_columns_desktop":3,"review_widget_carousel_transition_speed":5,"review_widget_custom_questions_answers_display":"always","review_widget_card_section_size":"small","review_widget_button_text_color":"#FFFFFF","review_widget_text_color":"#000000","review_widget_lighter_text_color":"#7B7B7B","review_widget_corner_styling":"soft","review_widget_review_word_singular":"review","review_widget_review_word_plural"
459:"reviews","review_widget_voting_label":"Helpful?","review_widget_shop_reply_label":"Reply from {{ shop_name }}:","review_widget_filters_title":"Filters","review_widget_filter_rating_title":"Rating","review_widget_filter_keyword_title":"Keyword","review_widget_clear_filters_text":"Clear filters","review_widget_expand_more_text":"More","review_widget_review_highlights_title":"Review highlights","qna_widget_question_word_singular":"Question","qna_widget_question_word_plural":"Questions","qna_widget_answer_reply_label":"Answer from {{ answerer_name }}:","qna_content_screen_title_text":"Ask a question about this product","qna_widget_question_required_field_error_text":"Please enter your question.","qna_widget_flow_gdpr_statement":"We'll only contact you about your question if necessary. By submitting your question, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","qna_widget_question_submitted_text":"Thanks for your question!","qna_widget_close_form_text_question":"Close","qna_widget_question_submit_success_text":"Weâll notify you by email when your question is answered.","all_reviews_widget_v2025_enabled":false,"all_reviews_widget_v2025_header_theme":"default","all_reviews_widget_v2025_widget_title_enabled":true,"all_reviews_widget_v2025_header_text_size":"medium","all_reviews_widget_v2025_header_text_weight":"regular","all_reviews_widget_v2025_average_rating_style":"compact","all_reviews_widget_v2025_bar_chart_enabled":true,"all_reviews_widget_v2025_bar_chart_type":"numbers","all_reviews_widget_v2025_bar_chart_style":"standard","all_reviews_widget_v2025_expanded_media_gallery_enabled":false,"all_reviews_widget_v2025_show_store_medals":true,"all_reviews_widget_v2025_show_photo_gallery":true,"all_reviews_widget_v2025_show_review_keywords":false,"all_reviews_widget_v2025_show_ai_summary":false,"all_reviews_widget_v2025_show_ai_summary_bg":false,"all_reviews_widget_v2025_show_review_highlights":false,"all_reviews_widget_v2025_show_review_keywords_in_gray":false,"all_reviews_widget_v2025_add_search_bar":false,"all_reviews_widget_v2025_default_sort_method":"most-recent","all_reviews_widget_v2025_reviews_per_page":10,"all_reviews_widget_v2025_reviews_section_theme":"default","all_reviews_widget_v2025_image_style":"thumbnails","all_reviews_widget_v2025_review_image_ratio":"square","all_reviews_widget_v2025_stars_size":"medium","all_reviews_widget_v2025_verified_badge":"standard_text","all_reviews_widget_v2025_review_title_text_size":"medium","all_reviews_widget_v2025_review_text_size":"medium","all_reviews_widget_v2025_review_text_length":"medium","all_reviews_widget_v2025_number_of_columns_desktop":3,"all_reviews_widget_v2025_carousel_transition_speed":5,"all_reviews_widget_v2025_custom_questions_answers_display":"always","all_reviews_widget_v2025_review_dates":false,"all_reviews_widget_v2025_card_section_size":"small","all_reviews_widget_v2025_show_product_variant":false,"all_reviews_widget_v2025_show_reviewer_avatar":true,"all_reviews_widget_v2025_reviewer_name_as_initial":"","all_reviews_widget_v2025_review_location_show":false,"all_reviews_widget_v2025_location_format":"","all_reviews_widget_v2025_show_country_flag":false,"all_reviews_widget_v2025_widget_thumb":false,"all_reviews_widget_v2025_verified_by_shop_badge_style":"light","all_reviews_widget_v2025_social_share":false,"all_reviews_widget_v2025_social_share_options_order":"Facebook,Twitter,LinkedIn,Pinterest","all_reviews_widget_v2025_pagination_type":"standard","all_reviews_widget_v2025_button_text_color":"#FFFFFF","all_reviews_widget_v2025_text_color":"#000000","all_reviews_widget_v2025_lighter_text_color":"#7B7B7B","all_reviews_widget_v2025_corner_styling":"soft","all_reviews_widget_v2025_title":"Customer reviews","all_reviews_widget_v2025_ai_summary_title":"Customers say about this store","all_reviews_widget_v2025_no_review_text":"Be the first to write a review","all_reviews_widget_v2025_review_highlights_title":"Review highlights","reviews_grid_widget_show_sample_reviews":false,"reviews_grid_widget_review_selection":"all","reviews_grid_widget_select_products":[],"reviews_grid_widget_show_media_only":false,"reviews_grid_widget_display_order":"media_first","reviews_grid_widget_card_grouping":"per_media","reviews_grid_widget_columns_desktop":3,"reviews_grid_widget_rows_desktop":3,"reviews_grid_widget_columns_mobile":2,"reviews_grid_widget_rows_mobile":6,"reviews_grid_widget_show_stars":true,"reviews_grid_widget_show_reviewer_name":true,"reviews_grid_widget_show_review_title_on_hover_desktop":true,"reviews_grid_widget_corner_styling":"soft","reviews_grid_widget_card_spacing":"medium","reviews_grid_widget_header_text_color":"#000000","reviews_grid_widget_star_and_reviewer_name_color":"#F9F9F9","reviews_grid_widget_overlay_and_background_color":"#000000","reviews_grid_widget_content_color":"#F9F9F9","reviews_grid_widget_header_text":"From our customers","reviews_grid_widget_show_average_rating":true,"trust_badge_enabled":false,"trust_badge_structure":"outline","trust_badge_color":"black","trust_badge_star":"black","trust_badge_rating_display_default":"show_avg_text","platform":"shopify","branding_url":"https://app.judge.me/reviews","branding_text":"Powered by Judge.me","locale":"en","reply_name":"Imani Soko","shop_currency":"KES","widget_version":"3.0","footer":true,"autopublish":true,"review_dates":true,"enable_custom_form":false,"shop_locale":"en","enable_multi_locales_translations":false,"show_review_title_input":false,"autofill_review_title":true,"review_verification_email_status":"always","require_verification_before_submit":false,"sign_in_with_
459shop_enabled":false,"customer_account_validation_enabled":true,"coupon_promo_invited_eligible":true,"coupon_promo_web_eligible":false,"uses_coupon_integration":false,"uses_external_coupon":false,"can_be_branded":false,"rtl_stars_enabled_ar":true,"rtl_stars_enabled_he":true,"reply_name_text":"Imani Soko"};</script>
459 <style class='jdgm-settings-style'>.jdgm-xx{left:0}:root{--jdgm-primary-color: #108474;--jdgm-secondary-color: rgba(16,132,116,0.1);--jdgm-star-color: #108474;--jdgm-write-review-text-color: white;--jdgm-write-review-bg-color: #108474;--jdgm-paginate-color: #108474;--jdgm-border-radius: 0;--jdgm-reviewer-name-color: #108474}.jdgm-histogram__bar-content{background-color:#108474}.jdgm-rev[data-verified-buyer=true] .jdgm-rev__icon.jdgm-rev__icon:after,.jdgm-rev__buyer-badge.jdgm-rev__buyer-badge{color:white;background-color:#108474}.jdgm-review-widget--small .jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}@media only screen and (min-width: 768px){.jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}}.jdgm-prev-badge[data-average-rating='0.00']{display:none !important}.jdgm-author-all-initials{display:none !important}.jdgm-author-last-initial{display:none !important}.jdgm-rev-widg__title{visibility:hidden}.jdgm-rev-widg__summary-text{visibility:hidden}.jdgm-prev-badge__text{visibility:hidden}.jdgm-rev__prod-link-prefix:before{content:'about'}.jdgm-rev__variant-label:before{content:'Variant: '}.jdgm-rev__out-of-store-text:before{content:'(out of store)'}@media only screen and (min-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}@media only screen and (max-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}.jdgm-preview-badge[data-template="product"]{display:none !important}.jdgm-preview-badge[data-template="collection"]{display:none !important}.jdgm-preview-badge[data-template="index"]{display:none !important}.jdgm-review-widget[data-from-snippet="true"]{display:none !important}.jdgm-verified-count-badget[data-from-snippet="true"]{display:none !important}.jdgm-carousel-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-all-reviews-text[data-from-snippet="true"]{display:none !important}.jdgm-medals-section[data-from-snippet="true"]{display:none !important}.jdgm-ugc-media-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_via_store_invitation"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_another_provider"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_store_visitor"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_written_in_etsy"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_written_in_google_business"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_written_in_shop_app"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_earned_for_future_purchase"]{display:none !important}.jdgm-review-snippet-widget{--jdgm-snippet-card-color: #fff;--jdgm-snippet-text-color: #000;--jdgm-snippet-lighter-text-color: #7B7B7B;--jdgm-snippet-star-color: #108474;--jdgm-snippet-border-radius: 8px;--jdgm-snippet-arrows-bg-color: #fff;--jdgm-snippet-arrows-color: #000}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card{border-radius:8px;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card__rev-rating .jdgm-star{color:#108474}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn{border-radius:50%;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn>svg,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn>svg{fill:#000}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jm-mfp-content,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__icon,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__pic-img,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__reply{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev[data-verified-buyer="true"] .jdgm-full-rev__icon::after{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-rev__buyer-badge{border-radius:calc( 8px / 2 )}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__replier::before{content:'Imani Soko'}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__product-button{border-radius:calc( 8px * 6 )} 460</style> <style class='jdgm-settings-style'></style> 461 462 463 464 465 <style class='jdgm-miracle-styles'> 466 @-webkit-keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK
466/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/IazfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal}.jdgm-star{font-family:'JudgemeStar';display:inline !important;text-decoration:none !important;padding:0 4px 0 0 !important;margin:0 !important;font-weight:bold;opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jdgm-star:hover{opacity:1}.jdgm-star:last-of-type{padding:0 !important}.jdgm-star.jdgm--on:before{content:"\e000"}.jdgm-star.jdgm--off:before{content:"\e001"}.jdgm-star.jdgm--half:before{content:"\e002"}.jdgm-widget *{margin:0;line-height:1.4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.jdgm-hidden{display:none !important;visibility:hidden !important}.jdgm-temp-hidden{display:none}.jdgm-spinner{width:40px;height:40px;margin:auto;border-radius:50%;border-top:2px solid #eee;border-right:2px solid #eee;border-bottom:2px solid #eee;border-left:2px solid #ccc;-webkit-animation:jdgm-spin 0.8s infinite linear;animation:jdgm-spin 0.8s infinite linear}.jdgm-spinner:empty{display:block}.jdgm-prev-badge{display:block !important} 467 468</style> 469 470 471 472 473 474 475 476 477
478<script data-cfasync='false' class='jdgm-script'> 479!function(e){window.jdgm=window.jdgm||{}; 480/* INF-1976 */ 481var _jdgmBlocked=function(){var raw=(window.jdgmSettings||{}).hostname_allowlist;var list=(raw==null?"":""+raw).split(/[\s,]+/).map(function(h){return h.trim().toLowerCase().replace(/\.$/,"");}).filter(function(h){return h;});if(!list.length)return false;var host=(e.location.hostname||"").toLowerCase().replace(/\.$/,"");if(/(^|\.)shopifypreview\.com$/.test(host))return false;var bare=host.replace(/^www\./,"");for(var i=0;i<list.length;i++){var en=list[i];if(en.indexOf("*.")===0){var b=en.slice(2);if(host===b||host.slice(-(b.length+1))==="."+b)return false;}else if(bare===en.replace(/^www\./,""))return false;}return true;}(); 482if(_jdgmBlocked){jdgm._loaderExecuted=true;jdgm._blocked=true;var _jdgmS=e.createElement("style");_jdgmS.textContent='[class^="jdgm-"],[class*=" jdgm-"]{display:none !important}';(e.head||e.documentElement).appendChild(_jdgmS);return;} 483jdgm.CDN_HOST="https://cdnwidget.judge.me/",jdgm.CDN_HOST_ALT="https://cdn2.judge.me/cdn/widget_frontend/",jdgm.API_HOST="https://api.judge.me/",jdgm.CDN_BASE_URL="https://cdn.shopify.com/extensions/01a11b30-98d5-7ae3-b2f4-f79b3c6f32c4/judgeme-775/assets/",jdgm.CDN_API_HOST="https://cdn.judge.me/", 484jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)? 485setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){ 486!o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d), 487(a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!", 488a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))}, 489jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest; 490t.onreadystatechange=function(){4===t.readyState&&t.status>=200&&t.status<300&&(Function(t.response)(),d&&d(t.response))}, 491t.open("GET",e),t.onerror=function(){if(e.indexOf(jdgm.CDN_HOST)===0&&jdgm.CDN_HOST_ALT!==jdgm.CDN_HOST){var f=e.replace(jdgm.CDN_HOST,jdgm.CDN_HOST_ALT);jdgm.loadJS(f,d)}},t.send()},jdgm.docReady((function(){(window.jdgmLoadCSS||e.querySelectorAll( 492".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting? 493parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_v3_base.css"): 494jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_base.css"):jdgm.loadCSS(jdgm.CDN_BASE_URL+"shopify_v2.css") 495)}))}(document); 496</script>
496 497<noscript><link rel="stylesheet" type="text/css" media="all" href="https://cdn.shopify.com/extensions/01a11b30-98d5-7ae3-b2f4-f79b3c6f32c4/judgeme-775/assets/shopify_v2.css"></noscript> 498 499<!-- BEGIN app snippet: theme_fix_tags -->
499<script> 500 (function() { 501 var jdgmThemeFixes = null; 502 if (!jdgmThemeFixes) return; 503 504 // "All themes" fix: CSS and JS applied on every theme. CSS is injected 505 // before the per-theme fix so the theme-specific CSS wins the cascade. 506 // HTML is never applied globally (too risky). 507 var allThemesFix = jdgmThemeFixes['all']; 508 if (allThemesFix && allThemesFix.css) { 509 var allStyleTag = document.createElement('style'); 510 allStyleTag.classList.add('jdgm-theme-fix-style-all'); 511 allStyleTag.innerHTML = allThemesFix.css; 512 document.head.append(allStyleTag); 513 }; 514 515 if (allThemesFix && allThemesFix.js) { 516 var allScriptTag = document.createElement('script'); 517 allScriptTag.classList.add('jdgm-theme-fix-script-all'); 518 allScriptTag.innerHTML = allThemesFix.js; 519 document.head.append(allScriptTag); 520 }; 521 522 var thisThemeFix = jdgmThemeFixes[Shopify.theme.id]; 523 if (!thisThemeFix) return; 524 525 if (thisThemeFix.html) { 526 document.addEventListener("DOMContentLoaded", function() { 527 var htmlDiv = document.createElement('div'); 528 htmlDiv.classList.add('jdgm-theme-fix-html'); 529 htmlDiv.innerHTML = thisThemeFix.html; 530 document.body.append(htmlDiv); 531 }); 532 }; 533 534 if (thisThemeFix.css) { 535 var styleTag = document.createElement('style'); 536 styleTag.classList.add('jdgm-theme-fix-style'); 537 styleTag.innerHTML = thisThemeFix.css; 538 document.head.append(styleTag); 539 }; 540 541 if (thisThemeFix.js) { 542 var scriptTag = document.createElement('script'); 543 scriptTag.classList.add('jdgm-theme-fix-script'); 544 scriptTag.innerHTML = thisThemeFix.js; 545 document.head.append(scriptTag); 546 }; 547 })(); 548</script>
548 549<!-- END app snippet --> 550<!-- End of Judge.me Core --> 551 552 553 554<!-- END app block --><!-- BEGIN app block: shopify://apps/parkour-facebook-pixel/blocks/threasury_pixel/f23b2ffe-4c53-446e-ad3a-7976ffbee5c2 --> 555
556<script> 557 (function () { 558 const params = new URLSearchParams(window.location.search); 559 const hasBuilderMode = params.get('eventBuilderMode') === 'true'; 560 const encodedSelector = params.get('selector'); 561 562 if (hasBuilderMode) { 563 sessionStorage.setItem('eventBuilderMode', '1'); 564 } 565 566 const fromSession = sessionStorage.getItem('eventBuilderMode'); 567 568 // â Store the decoded selector globally 569 if (encodedSelector) { 570 try { 571 const decoded = decodeURIComponent(encodedSelector); 572 sessionStorage.setItem('eventBuilderSelector', decoded); 573 window.extractedSelector = decoded; 574 console.log('[Parkour] Builder selector loaded:', decoded); 575 } catch (err) { 576 console.warn('[Parkour] Failed to decode selector:', err); 577 } 578 } 579 580 // â Load eventBuilder.js if in builder mode 581 if (hasBuilderMode || fromSession) { 582 const s = document.createElement('script'); 583 s.src = "https://cdn.shopify.com/extensions/01a08191-1bc5-79e2-bd0a-2c7e134c9184/parkour-pixel-111/assets/eventBuilder.js"; 584 s.async = true; 585 document.head.appendChild(s); 586 } 587 })(); 588</script>
588 589
590<script> 591 document.addEventListener('DOMContentLoaded', function () { 592 // Metafield emitted via | json (with </ escaped): raw template-literal 593 // interpolation broke this whole block when the value contained a backtick or 594 // quote, and a closing script tag inside a value was stored XSS. 595 // base64_encode instead of | json: Shopify's json filter REFUSES multiline 596 // metafields (emits {"error":"json not allowed for this object"}), and base64 597 // output can never contain quotes/backslashes/closing tags â injection-proof 598 // for every metafield type. base64_encode encodes the UTF-8 BYTES, and atob() 599 // alone reads them back as Latin-1 â silent mojibake for any non-ASCII event 600 // name/trigger (JSON.parse still succeeds!). TextDecoder restores real UTF-8; 601 // for pure-ASCII values it is an exact identity. 602 const metaData = (() => { try { return new TextDecoder().decode(Uint8Array.from(atob(''), (c) => c.charCodeAt(0))); } catch (e) { return ''; } })(); 603 try { 604 // custom_events is a json-TYPE metafield, so `| json` can emit a real array â 605 // handle array, plain-JSON string, and the legacy base64 shape (mirrors 606 // safeParseMetaData) so the tracker loads on a fresh visitor's FIRST page view. 607 let customEvents = Array.isArray(metaData) ? metaData : null; 608 if (!customEvents && metaData) { 609 try { customEvents = JSON.parse(metaData); } 610 catch (e1) { 611 try { customEvents = JSON.parse(decodeURIComponent(atob(metaData))); } 612 catch (e2) { customEvents = null; } 613 } 614 } 615 const fromLocal = localStorage.getItem('Parkour_custom_events_fb'); 616 // Only load the tracker when there are actually events (an empty [] used to 617 // still boot the MutationObserver machinery on every page). 618 const hasCustomEvents = (Array.isArray(customEvents) && customEvents.length > 0) || (fromLocal && fromLocal !== '[]'); 619 if (hasCustomEvents) { 620 const script = document.createElement('script'); 621 script.src = "https://cdn.shopify.com/extensions/01a08191-1bc5-79e2-bd0a-2c7e134c9184/parkour-pixel-111/assets/customTracker.js"; 622 script.async = true; 623 document.head.appendChild(script); 624 } 625 } catch (e) { 626 console.warn('[Parkour] customTracker.js load failed', e); 627 } 628 }); 629</script>
629 630
631<script> 632const FacebookTracker = { 633 config: { 634 debug: localStorage.getItem('tdb') || null, 635 storageKeys: { 636 PREFERRED_ID: 'Parkour_preferred_id_fb', 637 AD_INFO: 'Parkour_ad_info_fb', 638 AD_LOGS: 'Parkour_ad_logs_fb', 639 PIXEL_STATUS: 'Parkour_pixel_app_status_fb', 640 PIXEL_CONFIG: 'Parkour_pixel_config_fb', 641 CUSTOMER_HASHED: 'Parkour_Customer_params_fb', 642 CUSTOM_EVENTS: 'Parkour_custom_events_fb', 643 WEB_PIXEL: 'Parkour_web_pixel_fb', 644 EXTERNAL_ID: 'Parkour_external_id', 645 PAGE_DATA: 'Parkour_page_data', 646 FBC: 'Parkour_fbc', 647 FBP: 'Parkour_fbp', 648 }, 649 fbParams: { 650 standard: ['fbclid', 'utm_campaign', 'ad_name', 'utm_source', 'adset_name', 'campaign_id', 'adset_id', 'ad_id', 'utm_id'] 651 } 652 }, 653 654 utils: { 655 log(message, data = null) { 656 if (FacebookTracker.config.debug === null) return; 657 console.log(`[Facebook Tracker] ${message}`, data); 658 }, 659 stripDiacritics(str) { 660 return str.normalize('NFD').replace(/[\u0300-\u036f]/g, ''); 661 }, 662 normalizeField(value, field) { 663 if (!value) return ''; 664 let v = String(value).trim().toLowerCase(); 665 switch (field) { 666 case 'email': 667 return v; 668 case 'phone': 669 return v.replace(/[^0-9]/g, ''); 670 case 'city': 671 return FacebookTracker.utils.stripDiacritics(v).replace(/[^a-z]/g, ''); 672 case 'state': 673 v = FacebookTracker.utils.stripDiacritics(v); 674 v = v.replace(/\b(county|province|region|state|district)\b/g, ''); 675 return v.replace(/[^a-z]/g, ''); 676 case 'country': 677 v = FacebookTracker.utils.stripDiacritics(v).replace(/[^a-z]/g, ''); 678 return v.length === 2 ? v : ''; 679 case 'zipCode': 680 return v.replace(/[\s\-]/g, ''); 681 default: 682 return FacebookTracker.utils.stripDiacritics(v).replace(/[^a-z]/g, ''); 683 } 684 }, 685 async HashString(str) { 686 if (!str) return ''; 687 const encoder = new TextEncoder(); 688 const data = encoder.encode(str); 689 const hash = await crypto.subtle.digest('SHA-256', data); 690 return Array.from(new Uint8Array(hash)).map(b => b.toString(16).padStart(2, '0')).join(''); 691 }, 692 retry: async (fn, attempts = 3) => { 693 for (let i = 0; i < attempts; i++) { 694 try { return await fn(); } catch (e) { 695 if (i === attempts - 1) throw e; 696 await new Promise(r => setTimeout(r, (i + 1) * 1000)); 697 } 698 } 699 }, 700 generateId(prefix = 'CID') { 701 return `${prefix}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`; 702 }, 703 getCookie(name) { 704 const match = document.cookie.match(new RegExp(`(^| )${name}=([^;]+)`)); 705 return match ? match[2] : null; 706 }, 707 setCookie(name, value, days = 90) { 708 const expires = new Date(Date.now() + days * 864e5).toUTCString(); 709 document.cookie = `${name}=${value}; expires=${expires}; path=/; SameSite=Lax`; 710 }, 711 getUrlParam(name) { 712 return new URLSearchParams(window.location.search).get(name); 713 }, 714 getRawUrlParam(name) { 715 // Returns the param EXACTLY as it appears in the URL, without percent-decoding. 716 // URLSearchParams.get() decodes %XX escapes and converts "+" to a space, which 717 // mangles fbclid values and makes Meta flag a "modified fbclid value in fbc". 718 const match = window.location.search.match(new RegExp('[?&]' + name + '=([^&#]*)')); 719 return match ? match[1] : null; 720 }, 721 getFormattedTimestamp() { 722 const now = new Date(); 723 return { timestamp: now.toISOString(), formattedDate: now.toLocaleString() }; 724 }, 725 safeParseMetaData(data) { 726 // Two writer generations exist in the wild: the service app stores RAW JSON 727 // (json-type metafields), older installs stored btoa(encodeURIComponent(JSON)) 728 // in multiline string metafields. Try both â and NEVER throw: any third/corrupt 729 // shape must degrade to null, because a throw here aborted the rest of init() 730 // (fbc/fbp capture, cart attribution) for the whole shop. 731 try { 732 return JSON.parse(data); 733 } catch (e) { 734 try { 735 return JSON.parse(decodeURIComponent(atob(data))); 736 } catch (e2) { 737 FacebookTracker.utils.log('Unparseable metafield shape â skipping', e2); 738 return null; 739 } 740 } 741 } 742 }, 743 744 storage: { 745 set(key, value) { 746 localStorage.setItem(key, typeof value === 'string' ? value : JSON.stringify(value)); 747 }, 748 get(key, type = 'json') { 749 const val = localStorage.getItem(key); 750 if (!val) return null; 751 return type === 'string' ? val : JSON.parse(val); 752 }, 753 remove(key) { 754 localStorage.removeItem(key); 755 }, 756 appendToArray(key, item) { 757 const arr = FacebookTracker.storage.get(key) || []; 758 FacebookTracker.storage.set(key, [...arr, item]); 759 } 760 }, 761 762 tracking: {
763 async initializeExternalId() { 764 let id = FacebookTracker.storage.get(FacebookTracker.config.storageKeys.EXTERNAL_ID, 'string'); 765 if (!id) { 766 id = FacebookTracker.utils.generateId(); 767 FacebookTracker.storage.set(FacebookTracker.config.storageKeys.EXTERNAL_ID, id); 768 } 769 return id; 770 }, 771 772 isFbcExpired(fbc) { 773 if (!fbc) return true; 774 const parts = fbc.split('.'); 775 if (parts.length < 4) return true; 776 const timestamp = parseInt(parts[2], 10); 777 if (isNaN(timestamp)) return true; 778 const sevenDaysMs = 7 * 24 * 60 * 60 * 1000; 779 return (Date.now() - timestamp) > sevenDaysMs; 780 }, 781 782 handleFbc() { 783 // Read the fbclid EXACTLY as it appears in the URL (no decoding â that is what 784 // produced the "modified fbclid value in fbc" warning) and the current _fbc cookie. 785 let fbclid = FacebookTracker.utils.getRawUrlParam('fbclid'); 786 // Recovery for %XX-RE-ENCODED fbclids (email gateways / redirectors): decode 787 // exactly once, and only when the result is a clean base64url click id â this 788 // restores the original value and cannot reintroduce the +âspace corruption 789 // (decodeURIComponent leaves '+' untouched). 790 if (fbclid && fbclid.indexOf('%') !== -1) { 791 try { 792 const decoded = decodeURIComponent(fbclid); 793 if (/^[A-Za-z0-9_-]+$/.test(decoded)) fbclid = decoded; 794 } catch (e) { /* malformed escape â keep raw */ } 795 } 796 const existing = FacebookTracker.utils.getCookie('_fbc'); 797 798 if (fbclid && fbclid != 'fbclid') { 799 // A fbclid in the URL is a fresh click. If a _fbc cookie already exists for THIS 800 // same fbclid (e.g. set by Meta's own pixel), keep it as-is â it carries the 801 // authoritative timestamp/subdomain index. Only (re)build for a NEW click, which 802 // also refreshes the timestamp and prevents sending an expired fbclid later. 803 // Compare the click-id SEGMENT, not the string tail: Meta's fbevents.js writes a 804 // fifth "appendix" segment (fb.1.<ts>.<fbclid>.AQYCAQIB), so endsWith() saw a 805 // "different" click and overwrote Meta's cookie on every ad landing. 806 if (existing && existing.split('.')[3] === fbclid) { 807 FacebookTracker.storage.set(FacebookTracker.config.storageKeys.FBC, existing); 808 return existing; 809 } 810 const fbc = `fb.1.${Date.now()}.${fbclid}`; 811 FacebookTracker.utils.setCookie('_fbc', fbc); 812 FacebookTracker.storage.set(FacebookTracker.config.storageKeys.FBC, fbc); 813 return fbc; 814 } 815 // No fresh fbclid: reuse a stored/cookie fbc only if it is not expired; otherwise 816 // clear it from both stores so we never send an expired fbclid (its localStorage 817 // copy has no natural expiry). 818 const stored = FacebookTracker.storage.get(FacebookTracker.config.storageKeys.FBC, 'string'); 819 const cookie = FacebookTracker.utils.getCookie('_fbc'); 820 const fbc = stored || cookie; 821 if (fbc && !FacebookTracker.tracking.isFbcExpired(fbc)) { 822 FacebookTracker.storage.set(FacebookTracker.config.storageKeys.FBC, fbc); 823 return fbc; 824 } 825 // Clear expired fbc 826 FacebookTracker.storage.remove(FacebookTracker.config.storageKeys.FBC); 827 FacebookTracker.utils.setCookie('_fbc', '', -1); 828 return null; 829 }, 830 831 handleFbp() { 832 let fbp = FacebookTracker.utils.getCookie('_fbp'); 833 if (!fbp) { 834 fbp = `fb.1.${Date.now()}.${Math.floor(Math.random() * 1e9)}`; 835 FacebookTracker.utils.setCookie('_fbp', fbp); 836 } 837 FacebookTracker.storage.set(FacebookTracker.config.storageKeys.FBP, fbp); 838 return fbp; 839 }, 840 841 collectAdParameters() { 842 const adData = FacebookTracker.storage.get(FacebookTracker.config.storageKeys.AD_INFO) || {}; 843 let hasNew = false; 844 adData.facebook = adData.facebook || {}; 845 846 FacebookTracker.config.fbParams.standard.forEach(param => { 847 const value = FacebookTracker.utils.getUrlParam(param); 848 if (value && adData.facebook[param] !== value) { 849 adData.facebook[param] = value; 850 hasNew = true; 851 } 852 }); 853 854 adData.referrer = document.referrer; 855 if (hasNew) FacebookTracker.storage.set(FacebookTracker.config.storageKeys.AD_INFO, adData); 856 return adData; 857 }, 858 859 collectPageData() { 860 return { 861 product_name: null, 862 selected_variant: null, 863 product_id: null, 864 variant_id: null, 865 collection_ids: [], 866 tags: null, 867 page_type: "cart", 868 currency: "KES", 869 price: null 870 } 871 }, 872 873 logAdData(adParams) { 874 if (!adParams?.facebook || Object.keys(adParams.facebook).length === 0) return; 875 const entry = { 876 ...adParams, 877 url: window.location.href, 878 referrer: document.referrer, 879 ...FacebookTracker.utils.getFormattedTimestamp() 880 }; 881 FacebookTracker.storage.appendToArray(FacebookTracker.config.storageKeys.AD_LOGS, entry); 882 FacebookTracker.utils.log('Ad data logged', entry); 883 }, 884 885 async hashCustomer() {
886 try { 887 const customerData = { 888 email: null, 889 first_name: null, 890 last_name: null, 891 phone: null, 892 default_address: null 893 }; 894 895 // Geo context: only fetched when Shopify's own customer data is missing 896 // fields, only when marketing consent is not denied, and cached for 24h. 897 // Previously BOTH endpoints were hit on EVERY page view for EVERY visitor â 898 // ipinfo's unauthenticated tier rate-limits, and shipping visitor IPs to a 899 // third party regardless of consent state is a compliance exposure. 900 let browsingGeo = {}, ipinfoGeo = {}; 901 const addrPeek = customerData.default_address; 902 const needsGeo = !(addrPeek?.province_code || addrPeek?.province) || !addrPeek?.city || !addrPeek?.country_code || !addrPeek?.zip; 903 const consentAllows = (() => { 904 const cp = window.Shopify && window.Shopify.customerPrivacy; 905 if (cp && typeof cp.marketingAllowed === 'function') { 906 try { return cp.marketingAllowed() !== false; } catch (e) { return true; } 907 } 908 return true; 909 })(); 910 if (needsGeo && consentAllows) { 911 const cachedGeo = FacebookTracker.storage.get('Parkour_geo_fb'); 912 if (cachedGeo && cachedGeo.exp > Date.now()) { 913 browsingGeo = cachedGeo.browsingGeo || {}; 914 ipinfoGeo = cachedGeo.ipinfoGeo || {}; 915 } else { 916 try { 917 const [browsingResp, ipinfoResp] = await Promise.all([ 918 fetch('/browsing_context_suggestions.json'), 919 fetch('https://ipinfo.io/json') 920 ]); 921 browsingGeo = await browsingResp.json(); 922 ipinfoGeo = await ipinfoResp.json(); 923 FacebookTracker.storage.set('Parkour_geo_fb', { browsingGeo, ipinfoGeo, exp: Date.now() + 864e5 }); 924 } catch (geoErr) { 925 FacebookTracker.utils.log('Geo fetch failed, using Shopify data only', geoErr); 926 } 927 } 928 } 929 const countryCode = browsingGeo?.detected_values?.country?.handle || ipinfoGeo.country || ''; 930 931 const addr = customerData.default_address; 932 const raw = { 933 firstName: customerData.first_name || addr?.first_name || '', 934 lastName: customerData.last_name || addr?.last_name || '', 935 email: customerData.email || '', 936 phone: customerData.phone || addr?.phone || '', 937 state: addr?.province_code || addr?.province || ipinfoGeo.region || '', 938 city: addr?.city || ipinfoGeo.city || '', 939 country: addr?.country_code || countryCode, 940 zipCode: addr?.zip || ipinfoGeo.postal || '' 941 }; 942 943 const formatted = {}; 944 for (const key in raw) { 945 const normalized = FacebookTracker.utils.normalizeField(raw[key], key); 946 if (normalized) formatted[key] = normalized; 947 } 948 949 const hashed = {}; 950 for (const key in formatted) { 951 hashed[key] = await FacebookTracker.utils.HashString(formatted[key]); 952 } 953 954 const existing = FacebookTracker.storage.get(FacebookTracker.config.storageKeys.CUSTOMER_HASHED); 955 const newHashed = { ...existing, ...hashed }; 956 FacebookTracker.storage.set(FacebookTracker.config.storageKeys.CUSTOMER_HASHED, newHashed); 957 } catch (err) { 958 FacebookTracker.utils.log('Customer hash error', err, 'error'); 959 } 960 }, 961 962 captureFirstTouch() { 963 const PREFIX = '__parkour_'; 964 const urlParams = new URLSearchParams(window.location.search); 965 966 const setOnce = (key, value) => { 967 const existing = document.cookie.includes(`${key}=`); 968 if (!existing) { 969 localStorage.setItem(key, value); 970 const expires = new Date(Date.now() + 90 * 864e5).toUTCString(); 971 document.cookie = `${key}=${encodeURIComponent(value)}; expires=${expires}; path=/; SameSite=Lax`; 972 } 973 }; 974 975 const clickIds = ['fbclid', 'ttclid', 'gclid', 'ScCid', 'scCid', 'srsltid']; 976 const utms = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content','ad_id','campaign_id','adset_id' ]; 977
978 [...clickIds, ...utms].forEach(param => { 979 const val = urlParams.get(param); 980 if (val) setOnce(`${PREFIX}${param}`, val); 981 }); 982 983 setOnce(`${PREFIX}landing`, window.location.href); 984 setOnce(`${PREFIX}referrer`, document.referrer || 'direct'); 985 } 986 }, 987 988 cart: { 989 async updateAttributes(attributes) { 990 // POST only OUR keys: /cart/update.js merges the provided attributes and leaves 991 // every other attribute untouched. The old read-modify-write (GET /cart.js + 992 // full-snapshot POST) doubled the request count on every page view and raced 993 // the customer's own updates and the sibling TikTok/Snapchat trackers â a stale 994 // snapshot could re-apply an OLD fbc over a freshly captured one. 995 return FacebookTracker.utils.retry(async () => { 996 return fetch('/cart/update.js', { 997 method: 'POST', 998 headers: { 'Content-Type': 'application/json' }, 999 body: JSON.stringify({ attributes }) 1000 }).then(res => res.json()); 1001 }); 1002 } 1003 }, 1004 1005 async init() { 1006 try { 1007 // Metafields emitted via | json (with </ escaped): raw template-literal 1008 // interpolation meant a single quote/backtick in any metafield killed init() 1009 // for the whole shop (no fbc/fbp capture, no cart attribution) and a closing 1010 // script tag in a value was stored XSS. normalizeMetafield keeps downstream string 1011 // handling identical whether the metafield renders as a string or an object. 1012 const normalizeMetafield = (v) => (v == null ? '' : (typeof v === 'string' ? v : JSON.stringify(v))); 1013 // b64: Shopify's json filter refuses multiline metafields (renders 1014 // {"error":"json not allowed for this object"} â this broke pixel_config), 1015 // while base64 output is injection-proof for EVERY metafield type: its 1016 // alphabet cannot contain quotes, backslashes, or closing script tags. 1017 // TextDecoder is required: base64_encode emits UTF-8 BYTES and bare atob() 1018 // reads them as Latin-1 â silently mojibaking non-ASCII metafield content. 1019 // Identity for ASCII, so the legacy btoa(encodeURIComponent(...)) shape that 1020 // safeParseMetaData handles is unaffected. 1021 const b64 = (s) => { try { return new TextDecoder().decode(Uint8Array.from(atob(s), (c) => c.charCodeAt(0))); } catch (e) { return ''; } }; 1022 const pixelConfig = normalizeMetafield(b64('SlRWQ0pUVkU=')); 1023 const appStatus = normalizeMetafield(b64('ZEhKMVpRPT0=')); 1024 const preferredId = normalizeMetafield(b64('')); 1025 const customEvents = normalizeMetafield(b64('')); 1026 const webPixelEnabled = normalizeMetafield(b64('')); 1027 const supportExternalCheckout = normalizeMetafield(b64('')); 1028 1029 // null-guarded: an unparseable metafield must NOT clobber the last-known-good 1030 // value already in localStorage (the pixel keeps running on the previous config). 1031 if (pixelConfig) { 1032 const configDecoded = FacebookTracker.utils.safeParseMetaData(pixelConfig); 1033 if (configDecoded != null) FacebookTracker.storage.set(FacebookTracker.config.storageKeys.PIXEL_CONFIG, configDecoded); 1034 } 1035 1036 if (appStatus) { 1037 const statusDecoded = FacebookTracker.utils.safeParseMetaData((appStatus)); 1038 if (statusDecoded != null) FacebookTracker.storage.set(FacebookTracker.config.storageKeys.PIXEL_STATUS, statusDecoded); 1039 } 1040 if (webPixelEnabled) { 1041 const webPixelEnabledDecoded = FacebookTracker.utils.safeParseMetaData((webPixelEnabled)); 1042 if (webPixelEnabledDecoded != null) FacebookTracker.storage.set(FacebookTracker.config.storageKeys.WEB_PIXEL, webPixelEnabledDecoded); 1043 } 1044 if(preferredId) { 1045 FacebookTracker.storage.set(FacebookTracker.config.storageKeys.PREFERRED_ID, preferredId); 1046 } 1047 1048 if (customEvents) { 1049 const eventsDecoded = FacebookTracker.utils.safeParseMetaData(customEvents); 1050 if (eventsDecoded != null) FacebookTracker.storage.set(FacebookTracker.config.storageKeys.CUSTOM_EVENTS, eventsDecoded); 1051 } 1052 1053 // Check if external checkout support is enabled (defaults to true if metafield doesn't exist) 1054 let isExternalCheckoutEnabled = true; 1055 if (supportExternalCheckout) { 1056 try { 1057 const supportDecoded = FacebookTracker.utils.safeParseMetaData(supportExternalCheckout); 1058 isExternalCheckoutEnabled = supportDecoded?.enabled !== false; 1059 } catch (e) { 1060 FacebookTracker.utils.log('Failed to parse support_external_checkout metafield', e); 1061 // Default to true if parsing fails 1062 isExternalCheckoutEnabled = true; 1063 } 1064 } 1065 1066 // LOCAL capture first â a network failure below (cart 430 under load, geo 1067 // outage) must never cost first-touch attribution or fbc/fbp persistence. 1068 const externalId = await FacebookTracker.tracking.initializeExter
1068nalId(); 1069 FacebookTracker.tracking.handleFbc(); 1070 FacebookTracker.tracking.handleFbp(); 1071 FacebookTracker.tracking.captureFirstTouch(); 1072 1073 const pageData = FacebookTracker.tracking.collectPageData(); 1074 if (pageData) FacebookTracker.storage.set(FacebookTracker.config.storageKeys.PAGE_DATA, pageData); 1075 1076 const adParams = FacebookTracker.tracking.collectAdParameters(); 1077 if (adParams) FacebookTracker.tracking.logAdData(adParams); 1078 1079 const fbc = FacebookTracker.storage.get(FacebookTracker.config.storageKeys.FBC, 'string'); 1080 const fbp = FacebookTracker.storage.get(FacebookTracker.config.storageKeys.FBP, 'string'); 1081 1082 // Network side-effects LAST, individually guarded so one failing never 1083 // aborts the other. 1084 if (isExternalCheckoutEnabled) { 1085 try { 1086 await FacebookTracker.cart.updateAttributes({ 1087 [FacebookTracker.config.storageKeys.EXTERNAL_ID]: externalId, 1088 ...(fbc ? { [FacebookTracker.config.storageKeys.FBC]: fbc } : {}), 1089 ...(fbp ? { [FacebookTracker.config.storageKeys.FBP]: fbp } : {}) 1090 }); 1091 } catch (cartErr) { 1092 FacebookTracker.utils.log('Cart attribute update failed', cartErr); 1093 } 1094 } 1095 1096 try { 1097 await FacebookTracker.tracking.hashCustomer(); 1098 } catch (hashErr) { 1099 FacebookTracker.utils.log('hashCustomer failed', hashErr); 1100 } 1101 1102 FacebookTracker.utils.log('FacebookTracker initialized', { externalId, pageData, adParams }); 1103 } catch (e) { 1104 FacebookTracker.utils.log('Init failed', e, 'error'); 1105 } 1106 } 1107}; 1108 1109document.addEventListener('DOMContentLoaded', () => { 1110 FacebookTracker.init().catch(e => FacebookTracker.utils.log('Init error', e, 'error')); 1111}); 1112</script>
1112 1113<!-- END app block --><!-- BEGIN app block: shopify://apps/seowill-ai-seo/blocks/seoant-core/8e57283b-dcb0-4f7b-a947-fb5c57a0d59d --><!--SEOAnt Core By SEOAnt Teams, v0.1.6 START --> 1114<!-- JsSON-LD generated By SEOAnt END --> 1115<!-- Start : SEOAnt BrokenLink Redirect -->
1115<script src="https://cdn.shopify.com/extensions/01a0d261-ec07-7224-8562-58005aa6a0f8/seowill-ai-seo-121/assets/seoant-receive-id.js" data-shop="887239-2.myshopify.com" defer></script>
1115<!-- END : SEOAnt BrokenLink Redirect --> 1116<!-- Added By SEOAnt AMP. v0.0.1, START --><!-- Added By SEOAnt AMP END --> 1117<!-- Instant Page START -->
1117<script src="https://cdn.shopify.com/extensions/01a0d261-ec07-7224-8562-58005aa6a0f8/seowill-ai-seo-121/assets/pagespeed-preloading.js" defer="defer"></script>
1117<!-- Instant Page END --> 1118<!-- Google search console START v1.0 --><!-- Google search console END v1.0 --> 1119<!-- Lazy Loading START --><!-- Lazy Loading END --> 1120<!-- Video Lazy START --><!-- Video Lazy END --> 1121<!-- SEOAnt Core End --> 1122<!-- END app block --><!-- BEGIN app block: shopify://apps/flowcart-whatsapp-chat-ai-crm/blocks/sukhiba_checkout/df572ade-ec45-41ca-9091-0f45d9246243 --><!-- Expose settings to JS -->
1123<script id="sukhiba-app-settings" type="application/json"> 1124 { 1125 "verticalAlignment": "bottom", 1126 "verticalOffset": 20, 1127 "horizontalAlignment": "right", 1128 "horizontalOffset": 20, 1129 "moneyFormat": "KSh{{amount}}" 1130 } 1131</script>
1131 1132 1133<!-- Load as ES Module (SAFE) -->
1134<script 1135 type="module" 1136 src="https://cdn.shopify.com/extensions/01a119f8-e543-7de6-83d7-2b60a0b69bf4/flowcart-whatsapp-chat-checkout-68/assets/lite-checkout-button.js"> 1137</script>
1137 1138 1139 1140 1141<!-- END app block --><!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/clarity_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea -->
1142<script type="text/javascript"> 1143 (function (c, l, a, r, i, t, y) { 1144 c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); }; 1145 t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i + "?ref=shopify"; 1146 y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y); 1147 1148 c.Shopify.loadFeatures([{ name: "consent-tracking-api", version: "0.1" }], error => { 1149 if (error) { 1150 console.error("Error loading Shopify features:", error); 1151 return; 1152 } 1153 1154 c[a]('consentv2', { 1155 ad_Storage: c.Shopify.customerPrivacy.marketingAllowed() ? "granted" : "denied", 1156 analytics_Storage: c.Shopify.customerPrivacy.analyticsProcessingAllowed() ? "granted" : "denied", 1157 source: 101, 1158 }); 1159 }); 1160 1161 l.addEventListener("visitorConsentCollected", function (e) { 1162 c[a]('consentv2', { 1163 ad_Storage: e.detail.marketingAllowed ? "granted" : "denied", 1164 analytics_Storage: e.detail.analyticsAllowed ? "granted" : "denied", 1165 source: 101, 1166 }); 1167 }); 1168 })(window, document, "clarity", "script", "wg64mreg52"); 1169</script>
1169 1170 1171 1172 1173<!-- END app block --><!-- BEGIN app block: shopify://apps/uppromote-affiliate/blocks/core-script/64c32457-930d-4cb9-9641-e24c0d9cf1f4 --><!-- BEGIN app snippet: core-metafields-setting --><!--suppress ES6ConvertVarToLetConst -->
1174<script type="application/json" id="core-uppromote-settings">{"app_env":{"env":"production"}}</script>
vendor: 1 bytes, line 1174
1174
1175<script type="application/json" id="core-uppromote-cart">{"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"KES","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}</script>
1175 1176
1177<script id="core-uppromote-quick-store-tracking-vars"> 1178 function getDocumentContext(){const{href:a,hash:b,host:c,hostname:d,origin:e,pathname:f,port:g,protocol:h,search:i}=window.location,j=document.referrer,k=document.characterSet,l=document.title;return{location:{href:a,hash:b,host:c,hostname:d,origin:e,pathname:f,port:g,protocol:h,search:i},referrer:j||document.location.href,characterSet:k,title:l}}function getNavigatorContext(){const{language:a,cookieEnabled:b,languages:c,userAgent:d}=navigator;return{language:a,cookieEnabled:b,languages:c,userAgent:d}}function getWindowContext(){const{innerHeight:a,innerWidth:b,outerHeight:c,outerWidth:d,origin:e,screen:{height:j,width:k},screenX:f,screenY:g,scrollX:h,scrollY:i}=window;return{innerHeight:a,innerWidth:b,outerHeight:c,outerWidth:d,origin:e,screen:{screenHeight:j,screenWidth:k},screenX:f,screenY:g,scrollX:h,scrollY:i,location:getDocumentContext().location}}function getContext(){return{document:getDocumentContext(),navigator:getNavigatorContext(),window:getWindowContext()}} 1179 if (window.location.href.includes('?sca_ref=')) { 1180 localStorage.setItem('__up_lastViewedPageContext', JSON.stringify({ 1181 context: getContext(), 1182 timestamp: new Date().toISOString(), 1183 })) 1184 } 1185</script>
1185 1186 1187
1188<script id="core-uppromote-setting-booster"> 1189 var UpPromoteCoreSettings = JSON.parse(document.getElementById('core-uppromote-settings').textContent) 1190 UpPromoteCoreSettings.currentCart = JSON.parse(document.getElementById('core-uppromote-cart')?.textContent || '{}') 1191 const idToClean = ['core-uppromote-settings', 'core-uppromote-cart', 'core-uppromote-setting-booster', 'core-uppromote-quick-store-tracking-vars'] 1192 idToClean.forEach(id => { 1193 document.getElementById(id)?.remove() 1194 }) 1195</script>
1195 1196<!-- END app snippet --> 1197 1198 1199<!-- END app block -->
1199<script src="https://cdn.shopify.com/extensions/01a11b30-98d5-7ae3-b2f4-f79b3c6f32c4/judgeme-775/assets/loader.js" type="text/javascript" defer="defer"></script>
1199 1200<link href="https://cdn.shopify.com/extensions/01a119f8-e543-7de6-83d7-2b60a0b69bf4/flowcart-whatsapp-chat-checkout-68/assets/sukhiba-checkout-button.css" rel="stylesheet" type="text/css" media="all">
1201<script src="https://cdn.shopify.com/extensions/956c5dc4-e554-47b9-ac3a-02162874337c/gopixel-google-ads-tracking-6/assets/app-block.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1201
1201
1202<script src="https://cdn.shopify.com/extensions/01a0b35b-fe77-73f6-98ae-1f3438574cf5/bookeasy-184/assets/bookeasy-widget.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1202
1202
1203<script src="https://cdn.shopify.com/extensions/01a11be7-d007-7c81-82fe-1546b01b9593/doran-product-reviews-1791469523/assets/pr-sdk.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1203
1203
1204<script src="https://cdn.shopify.com/extensions/01a11cec-b601-7f9f-9e39-297d35af6c5b/2026-10-08-19-09-22-UTC--55daa00/assets/smile-loader.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1204
1204
1205<script src="https://cdn.shopify.com/extensions/01a10ad0-9f32-7eb2-a83e-3427bdf52ded/affliate-by-secomapp-129/assets/core.min.js" type="text/javascript" defer="defer"></script>
1205 1206<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1207<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 77325009205,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "cart"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 1207
1207
1208<script> 1209 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 1210</script>
vendor: 1 bytes, line 1210
1210
1211<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
1211).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 77325009205,storefrontBaseUrl: "https://imanisoko.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://imanisoko.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b"],webPixelsConfigList: [{"id":"3054534965","configuration":"{\"pixel_id\":\"3074698806032385\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"bd2f978c17a94bbb8a74d43de2165dc5","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"3030679861","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-HCJYS92WEF\\\",\\\"GT-5DGGB5FV\\\",\\\"GT-HCJYS92WEF\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":\\\"G-HCJYS92WEF\\\"},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":\\\"G-HCJYS92WEF\\\"},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-HCJYS92WEF\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-HCJYS92WEF\\\",\\\"MC-PNJR0HGMF6\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-HCJYS92WEF\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-HCJYS92WEF\\\",\\\"MC-PNJR0HGMF6\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-HCJYS92WEF\\\",\\\"MC-PNJR0HGMF6\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-HCJYS92WEF\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":\\\"G-HCJYS92WEF\\\"},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":\\\"G-HCJYS92WEF\\\"},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-HCJYS92WEF\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"3024257333","configuration":"{\"configuration\":\"{\\\"should_include_tax_charges\\\": false, \\\"should_track_page_view_enabled\\\": true, \\\"should_include_shipping_charges\\\": false, \\\"supported_content_id_pattern\\\": \\\"VARIANT_ID\\\", \\\"is_visitor_consent_tracking_enabled\\\": true, \\\"is_utm_parameters_enabled\\\": false, \\\"utm_parameters\\\": {\\\"source\\\": \\\"\\\", \\\"medium\\\": \\\"\\\", \\\"campaign\\\": \\\"\\\"}}\",\"pixelEvents\":\"{}\"}","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"78fb0d57f47667786f23934eae6204b3","type":"APP","apiClientId":43967250433,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
1211,"dataSharingState":"unrestricted"},{"id":"2857664821","configuration":"{\"webPixelName\":\"Judge.me\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8acc938b1a30dc7624e304493ca567d7","type":"APP","apiClientId":683015,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"2756706613","configuration":"{\"shopId\": \"77325009205\", \"domain\": \"https:\/\/api.trustoo.io\/\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"ba09fa9fe3be54bc43d59b10cafc99bb","type":"APP","apiClientId":6212459,"privacyPurposes":["ANALYTICS","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2634744117","configuration":"{\"shopId\":\"266858\",\"env\":\"production\",\"metaData\":\"[]\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8323bee30e1ec3ae135ae5e0cef4ab6d","type":"APP","apiClientId":2773553,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"2631827765","configuration":"{\"accountID\":\"887239-2\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"1d4c781273105676f6b02a329648437f","type":"APP","apiClientId":32196493313,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"2619998517","configuration":"{\"projectId\":\"wg64mreg52\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d8a2bb2ccbb513dc8e8b6937f4b8033e","type":"APP","apiClientId":240074326017,"privacyPurposes":[],"capabilities":["advanced_dom_events"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"2459369781","configuration":"{\"accountID\":\"887239-2\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"4f82d0323b06a4642fbff9b42c9979eb","type":"APP","apiClientId":12388204545,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2128347445","configuration":"{\"accountID\":\"459161\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"6beb2e80c5918031073c477e306feacf","type":"APP","apiClientId":219313,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1524531509","configuration":"{\"accountID\":\"684bdc094673c806529098ea\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"36e3d4a51ce4f54c09fc3ba4b868fb3d","type":"APP","apiClientId":161884340225,"privacyPurposes":["SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Imani Soko","paymentSettings":{"currencyCode":"KES"}
1211,"myshopifyDomain":"887239-2.myshopify.com","countryCode":"KE","storefrontUrl":"https:\/\/imanisoko.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://imanisoko.com/cdn","7ec887c8w14f9f074p854094e1m1370c602",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"152339808565","themePublished":"true","eventMetadataId":"0965b01e-16f1-49d6-b0c9-6fda6a1e8752","pageType":"cart","shopId":"77325009205","storefrontBaseUrl":"https:\/\/imanisoko.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\"]","isMerchantRequest":"false","hashVersion":"7ec887c8w14f9f074p854094e1m1370c602","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
1211<script> 1212 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 1213 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 1214 window.ShopifyAnalytics.meta.currency = 'KES'; 1215 var meta = {"page":{"pageType":"cart","requestId":"67f827e2-67cb-456d-805c-ab54e89a3107-1791496648"}}; 1216 for (var attr in meta) { 1217 window.ShopifyAnalytics.meta[attr] = meta[attr]; 1218 } 1219</script>
vendor: 1 bytes, line 1219
1219
1220<script class="analytics"> 1221 (function () { 1222 var customDocumentWrite = function(content) { 1223 var jquery = null; 1224 1225 if (window.jQuery) { 1226 jquery = window.jQuery; 1227 } else if (window.Checkout && window.Checkout.$) { 1228 jquery = window.Checkout.$; 1229 } 1230 1231 if (jquery) { 1232 jquery('body').append(content); 1233 } 1234 }; 1235 1236 var hasLoggedConversion = function(token) { 1237 if (token) { 1238 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 1239 } 1240 return false; 1241 } 1242 1243 var setCookieIfConversion = function(token) { 1244 if (token) { 1245 var twoMonthsFromNow = new Date(Date.now()); 1246 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 1247 1248 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 1249 } 1250 } 1251 1252 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 1253 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 1254 if (trekkie.integrations) { 1255 return; 1256 } 1257 trekkie.methods = [ 1258 'identify', 1259 'page', 1260 'ready', 1261 'track', 1262 'trackForm', 1263 'trackLink' 1264 ]; 1265 trekkie.factory = function(method) { 1266 return function() { 1267 var args = Array.prototype.slice.call(arguments); 1268 args.unshift(method); 1269 trekkie.push(args); 1270 if (method == 'track' || method == 'page') { 1271 var pageUrl; 1272 try { 1273 pageUrl = window.location.href; 1274 } catch (e) {} 1275 var pageReferrer; 1276 try { 1277 pageReferrer = document.referrer; 1278 } catch (e) {} 1279 try { 1280 if (window.__TREKKIE_SHIM_QUEUE == null) { 1281 window.__TREKKIE_SHIM_QUEUE = []; 1282 } 1283 window.__TREKKIE_SHIM_QUEUE.push({ 1284 from: 'trekkie-stub', 1285 method: method, 1286 args: args.slice(1), 1287 pageContext: { 1288 url: pageUrl, 1289 referrer: pageReferrer 1290 } 1291 }); 1292 } catch (e) { 1293 // no-op 1294 } 1295 } 1296 return trekkie; 1297 }; 1298 }; 1299 for (var i = 0; i < trekkie.methods.length; i++) { 1300 var key = trekkie.methods[i]; 1301 trekkie[key] = trekkie.factory(key); 1302 } 1303 trekkie.load = function(config) { 1304 trekkie.config = config || {}; 1305 trekkie.config.initialDocumentCookie = document.cookie; 1306 var first = document.getElementsByTagName('script')[0]; 1307var script = document.createElement('script'); 1308script.type = 'text/javascript'; 1309script.onerror = function(e) { 1310 var scriptFallback = document.createElement('script'); 1311 scriptFallback.type = 'text/javascript'; 1312 scriptFallback.onerror = function(error) { 1313 var Monorail = { 1314 produce: function produce(monorailDomain, schemaId, payload) { 1315 var currentMs = new Date().getTime(); 1316 var event = { 1317 schema_id: schemaId, 1318 payload: payload, 1319 metadata: { 1320 event_created_at_ms: currentMs, 1321 event_sent_at_ms: currentMs 1322 } 1323 }; 1324 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 1325 }, 1326 sendRequest: function sendRequest(endpointUrl, payload) { 1327 // Try the sendBeacon API 1328 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 1329 var blobData = new window.Blob([payload], { 1330 type: 'text/plain' 1331 }); 1332 1333 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 1334 return true; 1335 } // sendBeacon was not successful 1336 1337 } // XHR beacon 1338 1339 var xhr = new XMLHttpRequest(); 1340 1341 try { 1342 xhr.open('POST', endpointUrl); 1343 xhr.setRequestHeader('Content-Type', 'text/plain'); 1344 xhr.send(payload); 1345 } catch (e) { 1346 console.log(e); 1347 } 1348 1349 return false; 1350 }, 1351 isIos12: function isIos12() { 1352 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 1353 } 1354 }; 1355 Monorail.produce('monorail-edge.shopifysvc.com', 1356 'trekkie_storefront_load_errors/1.1', 1357 {shop_id: 77325009205, 1358 theme_id: 152339808565, 1359 app_name: "storefront", 1360 context_url: window.location.href, 1361 source_url: "//imanisoko.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js"}); 1362 1363 }; 1364 scriptFallback.async = true; 1365 scriptFallback.src = '//imanisoko.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 1366 first.parentNode.insertBefore(scriptFallback, first); 1367}; 1368script.async = true; 1369script.src = '//imanisoko.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 1370first.parentNode.insertBefore(script, first); 1371 1372 }; 1373 trekkie.load( 1374 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":77325009205,"isMerchantRequest":null,"themeId":152339808565,"themeCityHash":"10477907049307216206","contentLanguage":"en","currency":"KES","eventMetadataId":"0965b01e-16f1-49d6-b0c9-6fda6a1e8752"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 1375 ); 1376 1377 var loaded = false;
1378 trekkie.ready(function() { 1379 if (loaded) return; 1380 loaded = true; 1381 1382 window.ShopifyAnalytics.lib = window.trekkie; 1383 1384 var originalDocumentWrite = document.write; 1385 document.write = customDocumentWrite; 1386 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 1387 document.write = originalDocumentWrite; 1388 1389 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 1390 var token = match? match[1]: undefined; 1391 if (!hasLoggedConversion(token)) { 1392 setCookieIfConversion(token); 1393 1394 } 1395 }); 1396 1397 window.ShopifyAnalytics.lib.page(null,{"pageType":"cart","requestId":"67f827e2-67cb-456d-805c-ab54e89a3107-1791496648","shopifyEmitted":true}); 1398 1399 var eventsListenerScript = document.createElement('script'); 1400 eventsListenerScript.async = true; 1401 eventsListenerScript.src = "//imanisoko.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 1402 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 1403})();</script>
vendor: 1 bytes, line 1403
1403
1404<script 1405 defer 1406 src="https://imanisoko.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.10.1.min.js" 1407 data-application="storefront-renderer" 1408 data-shop-id="77325009205" 1409 data-render-region="gcp-us-central1" 1410 data-page-type="cart" 1411 data-theme-instance-id="152339808565" 1412 data-theme-name="Debut" 1413 data-theme-version="13.4.1" 1414 data-monorail-region="shop_domain" 1415 data-resource-timing-sampling-rate="10" 1416 data-shs="true" 1417 data-shs-beacon="true" 1418 data-shs-export-with-fetch="true" 1419 data-shs-logs-sample-rate="1" 1420 data-shs-beacon-endpoint="https://imanisoko.com/api/collect" 1421></script>
1421 1422<meta name="shopify-y" content="7664ea06-3bc4-4e0a-8258-7be8a10c0e69" data-expiration="1823054248000"><meta name="shopify-s" content="f0b6063f-ed89-4186-a9e7-2ddf471520ad" data-expiration="1791498448000"><meta name="new-cookie-storage-activated" content="t"> 1423</head> 1424 1425 <body class="template--cart "> 1426 1427 <div id="shopify-section-color-swatch" class="shopify-section"><style> 1428 [data-option="color"] .product-page-select, 1429 [name="option-color"], 1430 [data-option="color"] .select-style:before { 1431 display: none; 1432 } 1433 1434 [data-option="color"] .select-style { 1435 display: flex; 1436 align-items: center; 1437 flex-wrap: wrap; 1438 border: none; 1439 } 1440 1441 .option-color-label { 1442 width: 30px; 1443 height: 30px; 1444 color: transparent; 1445 border-radius: 50px; 1446 margin-left: 10px; 1447 background-repeat: no-repeat; 1448 background-size: cover; 1449 border: 2px solid transparent; 1450 cursor: pointer; 1451 } 1452 1453 .option-color-label:first-of-type { 1454 margin-left: 0; 1455 } 1456 1457 input:checked + .option-color-label { 1458 border-color: #af7552; 1459 } 1460 1461 1462 1463 1464 1465 [for="onyx"] { 1466 background-color: #000000 1467 ; 1468 1469 } 1470 1471 1472 1473 1474 [for="cognac"] { 1475 background-color: #b8522a 1476 ; 1477 1478 } 1479 1480 1481 1482 1483 [for="black"] { 1484 background-color: #000000 1485 ; 1486 1487 } 1488 1489 1490 1491 1492 [for="rust"] { 1493 background-color: #7e3d23 1494 ; 1495 1496 } 1497 1498 1499 1500 1501 [for="natural"] { 1502 background-color: #f1e3d5 1503 ; 1504 1505 } 1506 1507 1508 1509 1510 [for="lavender"] { 1511 background-color: #efddf2 1512 ; 1513 1514 } 1515 1516 1517 1518 1519 [for="tan"] { 1520 background-color: #d7b489 1521 ; 1522 1523 } 1524 1525 1526 1527 1528 [for="taupe"] { 1529 background-color: #d9bfa9 1530 ; 1531 1532 } 1533 1534 1535 1536 1537 [for="peach"] { 1538 background-color: #daaa83 1539 ; 1540 1541 } 1542 1543 1544 1545 1546 [for="white"] { 1547 background-color: #f7eee5 1548 ; 1549 1550 } 1551 1552 1553 1554 1555 [for="brown"] { 1556 background-color: #937a5d 1557 ; 1558 1559 } 1560 1561 1562 1563 1564 [for="checkered-taupe"] { 1565 background-color: #d9bfa9 1566 ; 1567 1568 background-image: url('//imanisoko.com/cdn/shop/files/Screenshot_2023-07-18_at_7.07.30_PM_50x.png?v=1689785071'); 1569 1570 } 1571 1572 1573 1574 1575 [for="checkered-rust"] { 1576 background-color: #9e6726 1577 ; 1578 1579 background-image: url('//imanisoko.com/cdn/shop/files/Screenshot_2023-07-18_at_7.07.31_PM_50x.png?v=1689785088'); 1580 1581 } 1582 1583 1584 1585 1586 [for="checkered-black"] { 1587 background-color: #000000 1588 ; 1589 1590 background-image: url('//imanisoko.com/cdn/shop/files/Screenshot_2023-07-18_at_7.07.27_PM_50x.png?v=1689785091'); 1591 1592 } 1593 1594</style> 1595</div> 1596 <div id="shopify-section-jc-custom-header" class="shopify-section"><style> 1597 .jc-custom-announcement-bar { 1598 1599 background-image: url('//imanisoko.com/cdn/shop/files/announcement-bar-back_e2097cd0-5349-429a-b3c1-a768ddfe2d2f_1990x.png?v=1712836625'); 1600 1601 color: #fffaf5 1602 ; 1603 position: relative; 1604 } 1605 .country-flag-image{ 1606 width: 18px; 1607 height: 18px; 1608 1609 } 1610 .country-flags-wrapper{ 1611 position: absolute; 1612 display: flex; 1613 column-gap: 8px; 1614 margin-top: -3px; 1615 align-items: center; 1616 } 1617 .country-flags-wrapper.mobile{ 1618 display: none; 1619 } 1620 @media (max-width: 479px) { 1621 .country-flags-wrapper{ 1622 display: none; 1623 } 1624 .country-flags-wrapper.mobile{ 1625 display: flex; 1626 padding: 10px 20px; 1627 } 1628} 1629</style> 1630 1631 <div class="jc-custom-announcement-bar"> 1632 <div class="country-flags-wrapper"> 1633 <a href="https://imani-kids.com/"> 1634 <img src="https://cdn.shopify.com/s/files/1/2534/9108/files/usa.svg?v=1710265106" alt="" class="country-flag-image"> 1635 </a> 1636 <a href="https://imani-kids.co.ke"> 1637 <img src="https://cdn.shopify.com/s/files/1/2534/9108/files/kenya.svg?v=1710265106" alt="" class="country-flag-image"> 1638 </a> 1639 <a href="https://imani-kids.com/"> 1640 <img src="https://cdn.shopify.com/s/files/1/2534/9108/files/world.svg?v=1710265106" alt="" class="country-flag-image"> 1641 </a> 1642 </div> 1643 <p>Free shipping on orders over KES 9,000. Flat rate of KES 400 for Nairobi deliveries.</p> 1644 </div> 1645 1646<div class="jc-custom-header"> 1647 <div class="jc-custom-header__top"> 1648 <div class="jc-custom-header__header-icon large-up-hide"> 1649 <a href="/cart" class="fixed-nav-icon-flex-link fixed-nav-icon-flex-link-right w-inline-block hamburger-icon"> 1650 <div class="w-icon-nav-menu"></div> 1651 </a> 1652 </div> 1653 <div class="jc-custom-header__social-icons"> 1654 1655 1656 <a 1657 href="https://web.facebook.com/profile.php?id=61551484134670" 1658 class="fixed-nav-social-link w-inline-block mobile-hide" 1659 target="_blank" 1660 style="display: inline-block;"> 1661 <img 1662 src="//imanisoko.com/cdn/shop/files/Facebook_100x.png?v=1717099141" 1663 alt="Facebook Logo" 1664 class="fixed-nav-social-img"> 1665 </a> 1666 1667 1668 1669 <a 1670 href="https://www.instagram.com/imani_soko/" 1671 class="fixed-nav-social-link w-inline-block mobile-hide" 1672 target="_blank" 1673 style="display: inline-block;"> 1674 <img 1675 src="//imanisoko.com/cdn/shop/files/Intagram_100x.png?v=1717099141" 1676 alt="Facebook Logo" 1677 class="fixed-nav-social-img"> 1678 </a> 1679 1680 1681 1682 1683 1684 1685 1686 1687 </div> 1688 <div class="jc-custom-header__heading-logo"> 1689 <a href="/" class="header__heading-link"><img src="//imanisoko.com/cdn/shop/files/imani_soko_Long_-_black.jpg?v=1712651015&width=600" alt="Imani Soko" srcset="//imanisoko.com/cdn/shop/files/imani_soko_Long_-_black.jpg?v=1712651015&width=50 50w, //imanisoko.com/cdn/shop/files/imani_soko_Long_-_black.jpg?v=1712651015&width=100 100w, //imanisoko.com/cdn/shop/files/imani_soko_Long_-_black.jpg?v=1712651015&width=150 150w, //imanisoko.com/cdn/shop/files/imani_soko_Long_-_black.jpg?v=1712651015&width=200 200w, //imanisoko.com/cdn/shop/files/imani_soko_Long_-_black.jpg?v=1712651015&width=250 250w, //imanisoko.com/cdn/shop/files/imani_soko_Long_-_black.jpg?v=1712651015&width=300 300w, //imanisoko.com/cdn/shop/files/imani_soko_Long_-_black.jpg?v=1712651015&width=400 400w, //imanisoko.com/cdn/shop/files/imani_soko_Long_-_black.jpg?v=1712651015&width=500 500w, //imanisoko.com/cdn/shop/files/imani_soko_Long_-_black.jpg?v=1712651015&width=600 600w" width="600x" height="172.4705882352941" class="header__heading-logo motion-reduce"> 1690 </a> 1691 </div> 1692 <div class="jc-custom-header__header-icons"> 1693 <div class="jc-custom-header__header-icon"> 1694 <a href="#" class="fixed-nav-icon-flex-link search-modal-open w-inline-block mobile-hide"> 1695 <img 1696 src="https://cdn.shopify.com/s/files/1/2534/9108/files/shop_-_all_products_search_icon_a03b9dc5-
169650ac-4edc-a218-f78eb761bf86.png?v=1678745452" 1697 alt="Magnifying Glass" 1698 class="fixed-nav-icon-img"> 1699 </a> 1700 </div> 1701 <div class="jc-custom-header__header-ico"> 1702 <a href="/cart" class="fixed-nav-icon-flex-link fixed-nav-icon-flex-link-right w-inline-block"> 1703 <img 1704 src="https://cdn.shopify.com/s/files/1/2534/9108/files/shop_-_all_products_cart_icon_9269a4df-c37c-4f10-a079-77375a623ffa.png?v=1678745452" 1705 alt="Shopping Cart" 1706 class="fixed-nav-icon-img"> 1707 </a> 1708 1709 </div> 1710 </div> 1711 </div> 1712 <div class="jc-custom-header__nav"> 1713 <ul class="list-menu"> 1714 1715 <li> 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 <a class="list-menu__item has-megamenu " href="/collections/all"> 1728 Shop 1729 </a> 1730 <div class="mega-menu"> 1731 1732 1733 <ul class="mega-menu__list small"> 1734 1735 <li> 1736 <a class="mega-menu__link " href="/collections/all"> 1737 Shop 1738 </a> 1739 1740 <ul class="mega-menu__submenu"> 1741 1742 <li> 1743 <a class="mega-menu__submenu-link " href="/collections/all"> 1744 Shop All 1745 </a> 1746 </li> 1747 1748 <li> 1749 <a class="mega-menu__submenu-link " href="/collections/50-off-select-banners"> 1750 50% OFF Select Banners 1751 </a> 1752 </li> 1753 1754 <li> 1755 <a class="mega-menu__submenu-link " href="/collections/best-sellers"> 1756 Best Sellers 1757 </a> 1758 </li> 1759 1760 <li> 1761 <a class="mega-menu__submenu-link " href="/collections/just-launched"> 1762 New Arrivals 1763 </a> 1764 </li> 1765 1766 </ul> 1767 1768 </li> 1769 1770 <li> 1771 <a class="mega-menu__link " href="/collections"> 1772 Categories 1773 </a> 1774 1775 <ul class="mega-menu__submenu"> 1776 1777 <li> 1778 <a class="mega-menu__submenu-link " href="/collections/mini-hang-signs"> 1779 Hangsigns 1780 </a> 1781 </li> 1782 1783 <li> 1784 <a class="mega-menu__submenu-link " href="/collections/imani-wall-hangings-collection"> 1785 Banners 1786 </a> 1787 </li> 1788 1789 <li> 1790 <a class="mega-menu__submenu-link " href="/collections/imani-pillow-collection"> 1791 Pillows 1792 </a> 1793 </li> 1794 1795 <li> 1796 <a class="mega-menu__submenu-link " href="/collections/totes-collection"> 1797 Totes 1798 </a> 1799 </li> 1800 1801 <li> 1802 <a class="mega-menu__submenu-link " href="/collections/leather-products"> 1803 Leather Products 1804 </a> 1805 </li> 1806 1807 <li> 1808 <a class="mega-menu__submenu-link " href="/collections/rugs"> 1809 Rugs 1810 </a> 1811 </li> 1812 1813 <li> 1814 <a class="mega-menu__submenu-link " href="/collections/kikoys"> 1815 Kikoys 1816 </a> 1817 </li> 1818 1819 <li> 1820 <a class="mega-menu__submenu-link " href="/collections/wristlets"> 1821 Wristlets 1822 </a> 1823 </li> 1824 1825 <li> 1826 <a class="mega-menu__submenu-link " href="https://imanisoko.com/collections/baskets"> 1827 Woven Baskets 1828 </a> 1829 </li> 1830 1831 </ul> 1832 1833 </li> 1834 1835 <li> 1836 <a class="mega-menu__link " href="/collections/jewelry"> 1837 JEWELRY 1838 </a> 1839 1840 </li> 1841 1842 </ul> 1843 1844 <div class="mega-menu__image-links small"> 1845 <div class="mega-menu__image-item image-size--small"> 1846 <a class="mega-menu__image-link" href="/collections/all"> 1847 <div class="mega-menu__image"> 1848 <img src="//imanisoko.com/cdn/shop/files/Untitleddesign_73_1100x_a49f9f54-0198-41e6-863e-4e9a2cd093b3_450x.jpg?v=1715685239" alt="" /> 1849 </div>
1850 <span class="mega-menu__image-label"> 1851 Shop all 1852 <img class="mega-menu__image-arrow" src="https://cdn.shopify.com/s/files/1/2534/9108/files/arrow_our_story.png?v=1678808395"> 1853 </span> 1854 </a> 1855 </div> 1856 <div class="mega-menu__image-item image-size--small"> 1857 <a class="mega-menu__image-link" href="/collections/just-launched"> 1858 <div class="mega-menu__image"> 1859 <img src="//imanisoko.com/cdn/shop/files/001_5c4152c4-69fb-496c-832b-499d3f0f331b_450x.jpg?v=1715685431" alt="" /> 1860 </div> 1861 <span class="mega-menu__image-label"> 1862 New arrivals 1863 <img class="mega-menu__image-arrow" src="https://cdn.shopify.com/s/files/1/2534/9108/files/arrow_our_story.png?v=1678808395"> 1864 </span> 1865 </a> 1866 </div> 1867 </div> 1868 </div> 1869 1870 1871 </li> 1872 1873 <li> 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 <a class="list-menu__item has-megamenu " href="/"> 1892 EXPERIENCES 1893 </a> 1894 <div class="mega-menu"> 1895 1896 1897 <ul class="mega-menu__list small"> 1898 1899 <li> 1900 <a class="mega-menu__link " href="https://imanisoko.com?bookeasy-type=without-product&bookeasy-id=mXbWvibgcuFrShwxf9V3WK"> 1901 Elevated Weaving Experience - Mombasa 1902 </a> 1903 1904 </li> 1905 1906 <li> 1907 <a class="mega-menu__link " href="https://imanisoko.com?bookeasy-type=without-product&bookeasy-id=3ki71B5XeN3pD27quh1bYq"> 1908 Old Town Workshop Weaving Experience - Mombasa 1909 </a> 1910 1911 </li> 1912 1913 <li> 1914 <a class="mega-menu__link " href="https://imanisoko.com?bookeasy-type=without-product&bookeasy-id=6ZJgxEFjtEjHeaoEmUAdzD"> 1915 Old Town Standard Weaving Experience - Mombasa 1916 </a> 1917 1918 </li> 1919 1920 <li> 1921 <a class="mega-menu__link " href="https://imanisoko.com?bookeasy-type=without-product&bookeasy-id=sY3ScVqmJNueeDKH6HN8tV"> 1922 Full Pottery Experience - Mombasa 1923 </a> 1924 1925 </li> 1926 1927 <li> 1928 <a class="mega-menu__link " href="https://imanisoko.com?bookeasy-type=without-product&bookeasy-id=6S6k7xokWHQs32Sv92kwJt"> 1929 Old Town Pottery experience option 2 (one session only) - Mombasa 1930 </a> 1931 1932 </li> 1933 1934 </ul> 1935 1936 <div class="mega-menu__image-links small"> 1937 <div class="mega-menu__image-item image-size--small"> 1938 <a class="mega-menu__image-link" href="https://imanisoko.com?bookeasy-type=without-product&bookeasy-id=mXbWvibgcuFrShwxf9V3WK"> 1939 <div class="mega-menu__image"> 1940 <img src="//imanisoko.com/cdn/shop/files/Screenshot_2026-04-20_at_12.53.45_PM_450x.png?v=1776682746" alt="" /> 1941 </div> 1942 <span class="mega-menu__image-label"> 1943 Elevated Weaving Experience 1944 <img class="mega-menu__image-arrow" src="https://cdn.shopify.com/s/files/1/2534/9108/files/arrow_our_story.png?v=1678808395"> 1945 </span> 1946 </a> 1947 </div> 1948 <div class="mega-menu__image-item image-size--small"> 1949 <a class="mega-menu__image-link" href="https://imanisoko.com?bookeasy-type=without-product&bookeasy-id=sY3ScVqmJNueeDKH6HN8tV"> 1950 <div class="mega-menu__image"> 1951 <img src="//imanisoko.com/cdn/shop/files/Screenshot_2026-04-20_at_2.03.18_PM_450x.png?v=1776683019" alt="" /> 1952 </div>
1953 <span class="mega-menu__image-label"> 1954 Full Pottery Experience 1955 <img class="mega-menu__image-arrow" src="https://cdn.shopify.com/s/files/1/2534/9108/files/arrow_our_story.png?v=1678808395"> 1956 </span> 1957 </a> 1958 </div> 1959 </div> 1960 </div> 1961 1962 1963 </li> 1964 1965 <li> 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 <a class="list-menu__item has-megamenu " href="/pages/our-impact"> 1990 Our Model 1991 </a> 1992 <div class="mega-menu"> 1993 1994 1995 <ul class="mega-menu__list large"> 1996 1997 <li> 1998 <a class="mega-menu__link " href="/pages/our-story"> 1999 Our story 2000 </a> 2001 2002 </li> 2003 2004 <li> 2005 <a class="mega-menu__link " href="/pages/our-impact"> 2006 Impact 2007 </a> 2008 2009 </li> 2010 2011 <li> 2012 <a class="mega-menu__link " href="/pages/our-leadership"> 2013 Leadership 2014 </a> 2015 2016 </li> 2017 2018 <li> 2019 <a class="mega-menu__link " href="/pages/artisans"> 2020 Artisans 2021 </a> 2022 2023 </li> 2024 2025 <li> 2026 <a class="mega-menu__link " href="/pages/sustainability"> 2027 Sustainability 2028 </a> 2029 2030 </li> 2031 2032 <li> 2033 <a class="mega-menu__link " href="/pages/collaboration"> 2034 Collaboration 2035 </a> 2036 2037 </li> 2038 2039 </ul> 2040 2041 <div class="mega-menu__image-links large"> 2042 <div class="mega-menu__image-item image-size--large"> 2043 <a class="mega-menu__image-link" href="/pages/our-story"> 2044 <div class="mega-menu__image"> 2045 <img src="//imanisoko.com/cdn/shop/files/Jenny_Oldtown_6_of_22_-min_450x.jpg?v=1686586463" alt="" /> 2046 </div> 2047 <span class="mega-menu__image-label"> 2048 Our story 2049 <img class="mega-menu__image-arrow" src="https://cdn.shopify.com/s/files/1/2534/9108/files/arrow_our_story.png?v=1678808395"> 2050 </span> 2051 </a> 2052 </div> 2053 <div class="mega-menu__image-item image-size--small"> 2054 <a class="mega-menu__image-link" href="/pages/our-impact"> 2055 <div class="mega-menu__image"> 2056 <img src="//imanisoko.com/cdn/shop/files/Old_town_19_of_24_-min_450x.jpg?v=1686586463" alt="" /> 2057 </div> 2058 <span class="mega-menu__image-label"> 2059 Impact 2060 <img class="mega-menu__image-arrow" src="https://cdn.shopify.com/s/files/1/2534/9108/files/arrow_our_story.png?v=1678808395"> 2061 </span> 2062 </a> 2063 </div> 2064 </div> 2065 </div> 2066 2067 2068 </li> 2069 2070 <li> 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 <a class="list-menu__item " href="https://www.imanicustom.com/"> 2097 Custom 2098 </a> 2099 2100 </li> 2101 2102 <li> 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 <a class="list-menu__item " href="/pages/get-involved"> 2129 Get Involved 2130 </a> 2131 2132 </li> 2133 2134 <li> 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 <a class="list-menu__item " href="https://imanicollective-ourimpact.org/"> 2161 Donate 2162 </a> 2163 2164 </li> 2165 2166 </ul> 2167 <!-- social icons --> 2168 <div class="large-up-hide mobile-nav-icons"> 2169 <!-- search icon on mobile --> 2170 <a href="#" class="fixed-nav-icon-imgav-icon-flex-link search-modal-open w-inline-block"> 2171 <img 2172 src="https://cdn.shopify.com/s/files/1/2534/9108/files/shop_-_all_products_search_icon_a03b9dc5-
217250ac-4edc-a218-f78eb761bf86.png?v=1678745452" 2173 alt="Magnifying Glass" 2174 class="fixed-nav-icon-img"> 2175</a> 2176 2177 <!-- End of search icon --> 2178 2179 2180 2181 <a 2182 href="https://web.facebook.com/profile.php?id=61551484134670" 2183 class="fixed-nav-social-link w-inline-block" 2184 target="_blank" 2185 style="display: inline-block;"> 2186 <img 2187 src="//imanisoko.com/cdn/shop/files/Facebook_100x.png?v=1717099141" 2188 alt="Facebook Logo" 2189 class="fixed-nav-social-img"> 2190 </a> 2191 2192 2193 2194 2195 2196 <a 2197 href="https://www.instagram.com/imani_soko/" 2198 class="fixed-nav-social-link w-inline-block" 2199 target="_blank" 2200 style="display: inline-block;"> 2201 <img 2202 src="//imanisoko.com/cdn/shop/files/Intagram_100x.png?v=1717099141" 2203 alt="Facebook Logo" 2204 class="fixed-nav-social-img"> 2205 </a> 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 </div> 2217<!-- end of the icons --> 2218 2219 <div class="country-flags-wrapper mobile"> 2220 <a href="https://imani-kids.com/"> 2221 <img src="https://cdn.shopify.com/s/files/1/2534/9108/files/usa.svg?v=1710265106" alt="" class="country-flag-image"> 2222 </a> 2223 <a href="https://imani-kids.co.ke"> 2224 <img src="https://cdn.shopify.com/s/files/1/2534/9108/files/kenya.svg?v=1710265106" alt="" class="country-flag-image"> 2225 </a> 2226 <a href="https://imani-kids.com/"> 2227 <img src="https://cdn.shopify.com/s/files/1/2534/9108/files/world.svg?v=1710265106" alt="" class="country-flag-image"> 2228 </a> 2229 </div> 2230 2231 2232 </div> 2233</div> 2234</div> 2235 2236 <div class="page-container" id="PageContainer"> 2237 2238 <main 2239 class="main-content js-focus-hidden" 2240 id="MainContent" 2241 role="main" 2242 tabindex="-1"> 2243 2244 2245<div id="shopify-section-cart-template" class="shopify-section"><div 2246 class="page-width jc-page-width" 2247 data-section-id="cart-template" 2248 data-section-type="cart-template" 2249 data-ajax-enabled="true"> 2250 2251 <div class="hide"data-cart-wrapper> 2252 <div class="cart-header"> 2253 <h1 class="cart-header__title jc-cart-header__title">Your cart</h1> 2254 <a href="/collections/all" class="jc-btn-cart w-button"> 2255 Continue shopping 2256 </a> 2257 </div> 2258 2259 <form 2260 action="/cart" 2261 method="post" 2262 novalidate 2263 class="cart"> 2264 <table> 2265 <thead class="cart__row cart__row--heading"> 2266 <th scope="col">Item</th> 2267 <th class="text-right" scope="col">Price</th> 2268 <th class="text-right small--hide" scope="col">Quantity</th> 2269 <th class="text-right small--hide" scope="col">Total</th> 2270 </thead> 2271 <tbody data-cart-line-items></tbody> 2272 </table> 2273 2274 <div class="cart__footer"> 2275 <div class="grid"><div class="grid__item medium-up--one-half cart-note"> 2276 <label for="CartSpecialInstructions" class="cart-note__label jc-cart-note__label small--text-center">Add a note to your order</label> 2277 <textarea 2278 name="note" 2279 id="CartSpecialInstructions" 2280 class="cart-note__input" 2281 data-cart-notes></textarea> 2282 </div><div class="grid__item text-right small--text-center medium-up--one-half"><div class="hide" data-cart-discount-wrapper> 2283 <div class="order-discount-card-wrapper" data-cart-discount><span class="order-discount order-discount--title order-discount--cart"><svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-saletag"><path d="M10 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-3H7a1 1 0 0 0-.71.29l-6 6a1 1 0 0 0 0 1.42l4 4a1 1 0 0 0 1.42 0c.19-.2 5.8-5.81 6-6A1 1 0 0 0 12 5V2a2 2 0 0 0-2-2z" fill="#333"/></svg><span class="visually-hidden">Discount:</span> 2284 <span data-cart-discount-title></span> 2285 </span> 2286 <span class="order-discount order-discount--cart order-discount--cart-total"> 2287 -<span data-cart-discount-amount></span> 2288 </span></div> 2289 </div> 2290 2291 <div class="cart-subtotal">
2292 <span class="cart-subtotal__title jc-cart-subtotal__title">Subtotal</span> 2293 <span class="cart-subtotal__price jc-cart-subtotal__price" data-cart-subtotal>KSh0.00</span> 2294 </div><div class="cart__shipping jc-cart__shipping rte">shipping calculated at checkout 2295</div> 2296 2297 <!-- Route Code Edited 01/12/2022 --> 2298 <div class="route-div"></div> 2299 <div style="font-size: 12px; margin-top: -10px; margin-bottom: 10px; line-height: 15px;">*By deselecting package protection, Imani Collective <br> is not liable for lost, damaged, or stolen items.</div> 2300 <!-- Route Code End --> 2301 <div class="cart__buttons-container"> 2302 <div class="cart__submit-controls"><input 2303 type="submit" 2304 name="checkout" 2305 class="jc-button jc-secondary-button" 2306 value="Check out"> 2307 </div> 2308 2309 <div 2310 class="cart__error-message-wrapper hide" 2311 role="alert" 2312 data-cart-error-message-wrapper> 2313 <span class="visually-hidden">Error 2314 </span> 2315 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-error" viewBox="0 0 14 14"><g fill="none" fill-rule="evenodd"><path d="M7 0a7 7 0 0 1 7 7 7 7 0 1 1-7-7z"/><path class="icon-error__symbol" d="M6.328 8.396l-.252-5.4h1.836l-.24 5.4H6.328zM6.04 10.16c0-.528.432-.972.96-.972s.972.444.972.972c0 .516-.444.96-.972.96a.97.97 0 0 1-.96-.96z" fill-rule="nonzero"/></g></svg> 2316 <span class="cart__error-message" data-cart-error-message></span> 2317 </div></div> 2318 </div> 2319 </div> 2320 </div> 2321 </form> 2322 2323 <p 2324 class="visually-hidden" 2325 data-cart-status 2326 aria-live="polite" 2327 role="status"></p> 2328 </div> 2329 2330 <div class="empty-page-content text-center" data-empty-page-content> 2331 <h1 class="cart-header__title jc-cart-header__title">Your cart</h1> 2332 <p class="cart--empty-message jc-cart--empty-message">Your cart is currently empty.</p> 2333 <div class="cookie-message"> 2334 <p>Enable cookies to use the shopping cart</p> 2335 </div> 2336 <a href="/" class="jc-button jc-secondary-button">Continue shopping</a> 2337 </div> 2338</div> 2339 2340 2341 2342</div> 2343 2344 2345 </main> 2346 2347 <div id="shopify-section-jc-custom-footer" class="shopify-section"><style> 2348 .jc-custom-footer { 2349 background-color: #b58c41 2350 } 2351</style> 2352<div class="jc-custom-footer"> 2353 <div class="jc-custom-footer--wrapper"> 2354 2355 2356 <div class="jc-custom-footer--block block--store_info"> 2357 2358 <div class="jc-custom-footer--block-detail"> 2359 2360 2361 <h2 class="jc-custom-footer__heading"> 2362 Get in touch 2363 </h2> 2364 <a class="jc-custom-footer__link" href="mailto: [email protected]"> 2365 [email protected] 2366 </a> 2367 2368 2369 2370 <h2 class="jc-custom-footer__store-heading"> 2371 artisan workshop/gift shop 2372 </h2> 2373 <div class="jc-custom-footer__store-text"> 2374 <p></p><p>Ndia Kuu Rd.<br/>Mombasa, Kenya<br/>(Old Town | By Fort Jesus)</p> 2375 </div> 2376 2377 2378 </div> 2379 2380 </div> 2381 2382 <div class="jc-custom-footer--block block--newsletter"> 2383 2384 <div class="jc-custom-footer--block-newsletter"> 2385 2386 <div class="jc-custom-footer__newsletter-header"> 2387 <h2 class="jc-custom-footer__heading"> 2388 Subscribe to our newsletter 2389 </h2> 2390 2391 <img src="//imanisoko.com/cdn/shop/files/newsletter_100x.png?v=1686586466" alt="" /> 2392 2393 </div> 2394 2395<form method="post" action="/contact#ContactFooter" id="ContactFooter" accept-charset="UTF-8" class="footer__newsletter newsletter-form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="â" /><input 2396 type="hidden" 2397 name="contact[tags]" 2398 value="newsletter"> 2399 <div class="newsletter-form__field-wrapper"> 2400 <div class="field"> 2401 <input 2402 id="NewsletterForm--jc-custom-footer" 2403 type="email" 2404 name="contact[email]" 2405 class="field__input" 2406 value="" 2407 aria-required="true" 2408 autocorrect="off" 2409 autocapitalize="off" 2410 autocomplete="email" 2411 placeholder="email address"required> 2412 <button 2413 type="submit" 2414 class="newsletter-form__button field__button" 2415 name="commit" 2416 id="Subscribe" 2417 aria-label="submit"> 2418 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon--wide icon-arrow-left" viewBox="0 0 20 8"><path d="M4.814 7.555C3.95 6.61 3.2 5.893 2.568 5.4 1.937 4.91 1.341 4.544.781 4.303v-.44a9.933 9.933 0 0 0 1.875-1.196c.606-.485 1.328-1.196 2.168-2.134h.752c-.612 1.309-1.253 2.315-1.924 3.018H19.23v.986H3.652c.495.632.84 1.1 1.036 1.406.195.306.485.843.869 1.612h-.743z" fill="#000" fill-rule="evenodd"/></svg> 2419 </button> 2420 </div></div></form> 2421 <div class="jc-custom-footer__text"> 2422 <p>sign up and get 10% off your first order</p> 2423 </div> 2424 2425 2426 2427 <div style="margin-top: 10px; margin-bottom: 10px; position: static" class="country-flags-wrapper"> 2428 <a href="https://imani-kids.com/"> 2429 <img src="https://cdn.shopify.com/s/files/1/2534/9108/files/usa.svg?v=1710265106" alt="" class="country-flag-image"> 2430 </a> 2431 <a href="https://imani-kids.co.ke"> 2432 <img src="https://cdn.shopify.com/s/files/1/2534/9108/files/kenya.svg?v=1710265106" alt="" class="country-flag-image"> 2433 </a> 2434 <a href="https://imani-kids.com/"> 2435 <img src="https://cdn.shopify.com/s/files/1/2534/9108/files/world.svg?v=1710265106" alt="" class="country-flag-image"> 2436 </a> 2437 </div> 2438 2439 2440 </div> 2441 2442 </div> 2443 2444 <div class="jc-custom-footer--block block--menu"> 2445 2446 <div class="jc-custom-footer--block-menu"> 2447 2448 <h2 class="jc-custom-footer__heading"> 2449 Customer care 2450 </h2> 2451 2452 <ul class="jc-custom-footer__menu-list"> 2453 2454 <li> 2455 <a class="jc-custom-footer__link " href="/pages/shipping-returns"> 2456 shipping + returns 2457 </a> 2458 </li> 2459 2460 <li> 2461 <a class="jc-custom-footer__link " href="/pages/faqs"> 2462 F.A.Q.s 2463 </a> 2464 </li> 2465 2466 <li> 2467 <a class="jc-custom-footer__link " href="/pages/product-care"> 2468 product care 2469 </a> 2470 </li> 2471 2472 <li> 2473 <a class="jc-custom-footer__link " href="/pages/privacy-policy"> 2474 privacy policy 2475 </a> 2476 </li> 2477 2478 <li> 2479 <a class="jc-custom-footer__link " href="/pages/contact"> 2480 contact 2481 </a> 2482 </li> 2483 2484 <li> 2485 <a class="jc-custom-footer__link " href="/pages/wholesale"> 2486 Wholesale 2487 </a> 2488 </li> 2489 2490 </ul> 2491 2492 2493 <ul class="social-list"> 2494 2495 <li> 2496 <a 2497 target="_blank" 2498 href="https://web.facebook.com/profile.php?id=61551484134670" 2499 class="social-link"> 2500 <img class="" src="https://cdn.shopify.com/s/files/1/0773/2500/9205/files/Facebook_1.png?v=1717099517"> 2501 </a> 2502 </li> 2503 2504 2505 <li> 2506 <a 2507 target="_blank" 2508 href="https://www.instagram.com/imani_soko/" 2509 class="social-link"> 2510 <img class="" src="https://cdn.shopify.com/s/files/1/0773/2500/9205/files/Instagram.png?v=1717099516"> 2511 </a> 2512 </li> 2513 2514 2515 <li> 2516 <a 2517 target="_blank" 2518 href="https://www.pinterest.com/imani_soko/" 2519 class="social-link"> 2520 <img class="" src="https://cdn.shopify.com/s/files/1/0773/2500/9205/files/pinterest_1.png?v=1717099516"> 2521 </a> 2522 </li> 2523 2524</ul> 2525 2526 </div> 2527 2528 </div> 2529 2530 <div class="jc-custom-footer--block block--menu"> 2531 2532 <div class="jc-custom-footer--block-menu"> 2533 2534 <h2 class="jc-custom-footer__heading"> 2535 Navigation 2536 </h2> 2537 2538 <ul class="jc-custom-footer__menu-list"> 2539 2540 <li> 2541 <a class="jc-custom-footer__link " href="/collections/all"> 2542 shop 2543 </a> 2544 </li> 2545 2546 <li> 2547 <a class="jc-custom-footer__link " href="/"> 2548 EXPERIENCES 2549 </a> 2550 </li> 2551 2552 <li> 2553 <a class="jc-custom-footer__link " href="/pages/our-story"> 2554 our story 2555 </a> 2556 </li> 2557 2558 <li> 2559 <a class="jc-custom-footer__link " href="/pages/get-involved"> 2560 get involved 2561 </a> 2562 </li> 2563 2564 <li> 2565 <a class="jc-custom-footer__link " href="/pages/get-involved#custom-pieces-button"> 2566 we're hiring 2567 </a> 2568 </li> 2569 2570 <li> 2571 <a class="jc-custom-footer__link " href="/blogs/thoughts"> 2572 blog 2573 </a> 2574 </li> 2575 2576 <li> 2577 <a class="jc-custom-footer__link " href="/pages/press-and-events"> 2578 press 2579 </a> 2580 </li> 2581 2582 </ul> 2583 2584 </div> 2585 2586 </div> 2587 2588 </div> 2589</div> 2590</div> 2591 </div> 2592 2593 2594
2594<script> 2595 if ($(window).width() > 977) { 2596 var nav_scroll_height = 137; 2597 } else { 2598 nav_scroll_height = 50; 2599 } 2600 2601 $(document).ready(function() { 2602 $(".nav-flex-link-mega").hover(function() { 2603 $(this).find('.nav-flex-link-mega-text').addClass('nav-flex-link-mega-text-hover'); 2604 }, function() { 2605 $(this).find('.nav-flex-link-mega-text').removeClass('nav-flex-link-mega-text-hover'); 2606 }); 2607 }); 2608 2609 2610 $(document).ready(function() { 2611 var fixed_height = $('.fixed-wrapper').height(); 2612 var new_height = fixed_height + 'px'; 2613 $('body').css('padding-top', new_height); 2614 2615 if ($('.w-nav-button').is(":visible")) { 2616 var announce_height = $('.announce-bar-wrapper').outerHeight(); 2617 var new_nav_height = announce_height + 'px'; 2618 $('.hero-nav-section').css('top', new_nav_height); 2619 } 2620 2621 var announce_height_desktop = $('.announce-bar-wrapper').outerHeight(); 2622 var announce_hegit_new_value = announce_height_desktop + 13; 2623 var announce_hegit_new_value_formatted = announce_hegit_new_value + 'px'; 2624 $('#shopify-section-jc-hero-nav').css('top', announce_hegit_new_value_formatted); 2625 2626 }); 2627 </script>
2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 <div id="shopify-section-jc-search-modal" class="shopify-section"><div class="search-modal"> 2647 2648 <div class="search-modal-content-wrapper"> 2649 <div class="search-modal-close-btn"><img src="//cdn.shopify.com/s/files/1/2534/9108/files/close.png" loading="lazy" alt="Close" class="search-modal-close-img" /></div> 2650 <div class="search-modal-form-block"> 2651 <form action="/search" > 2652 <div class="flex-row-search-modal"> 2653 <input type="text" class="form-input-modal-search w-input" maxlength="256" name="q" placeholder="Search..." id="search" /> 2654 <input type="submit" value="Search" data-wait="Please wait..." class="search-modal-btn w-button" /> 2655 </div> 2656 </form> 2657 </div> 2658 2659 </div> 2660 2661</div> 2662
2663<script type="text/javascript"> 2664 2665 $(document).ready(function(){ 2666 2667 2668 2669 $('.search-modal-open').click(function(e) { 2670 e.preventDefault(); 2671 $('body').css('overflow', 'hidden'); 2672 var current_modal = $('.search-modal'); 2673 current_modal.css('display','block'); 2674 current_modal.fadeTo(500,1); 2675 2676 }); 2677 2678 $('.search-modal-close-btn').click(function(e) { 2679 e.preventDefault(); 2680 $('body').css('overflow', 'auto'); 2681 var current_modal = $('.search-modal'); 2682 current_modal.fadeTo(500,0,function(){ 2683 $(this).hide(); 2684 }); 2685 2686 }); 2687 2688 2689 }); 2690 2691</script>
2691 2692 2693 2694</div> 2695 2696 2697 2698 <div id="shopify-block-ANGtrVkhGc2dNU1FHT__1143683040400472741" class="shopify-block shopify-app-block"> 2699 2700
2700<script id='tt_product_rating' type='application/json'> 2701 2702 </script>
2702<!-- BEGIN app snippet: carousel -->
2702<script> 2703(function(){ 2704if(!window.TrustooCarouselEmbedded){ 2705window.TrustooCarouselEmbedded = true 2706 const script = document.createElement("script"); 2707 script.dataset.name="trustooCarousel" 2708 script.dataset.shop_id = "77325009205" 2709 script.dataset.page = "cart" 2710 script.dataset.productId = "null" 2711 script.setAttribute('defer',true) 2712 script.setAttribute('id',"trustoo-carousel-script") 2713 2714let src = "https://cdn.shopify.com/extensions/01a0c380-6389-7017-91ff-8b932c2b1946/cwilltrustoo-reviews-286/assets/swiper-reviews.min.js";script.src = src 2715 2716 document.head.appendChild(script); 2717 const link = document.createElement("link"); 2718 link.rel = "stylesheet"; 2719 link.href = `https://cdn.shopify.com/extensions/01a0c380-6389-7017-91ff-8b932c2b1946/cwilltrustoo-reviews-286/assets/swiper-reviews.min.css`; 2720 document.head.appendChild(link); 2721} 2722})() 2723</script>
2723<!-- END app snippet -->
2723<script src="https://cdn.shopify.com/extensions/01a0c380-6389-7017-91ff-8b932c2b1946/cwilltrustoo-reviews-286/assets/seal-review.min.js" defer></script>
2723<style> 2724.shopify-block.shopify-app-block:has(>[data-app="trustoo"]){ 2725 width:100% 2726} 2727</style> 2728 2729
2730<script id="vstar_product_review"> 2731var shopifyObj = { 2732 shop_id : 77325009205, 2733 productName : null, 2734 productId : null, 2735 productImage : null, 2736 themeName : null, 2737}; 2738var trustoo_shopify_block_status = 2; 2739window.isTrustooReviewsExecuted = false; 2740window.TrustooReviews = {reviews:{},carousel:{},curPage:"cart"} 2741var trustoo_ins_inserted_status = 2; 2742window.TrustooReviews.pageType = 'cart'; 2743</script>
vendor: 2 bytes, line 2743
2743
2744<script> 2745 (function(){ 2746 let trustooCSSLink = "https://cdn.shopify.com/extensions/01a0c380-6389-7017-91ff-8b932c2b1946/cwilltrustoo-reviews-286/assets/trustoo-reviews.min.css"; 2747 let trustooSignLink = "https://cdn.shopify.com/extensions/01a0c380-6389-7017-91ff-8b932c2b1946/cwilltrustoo-reviews-286/assets/trustoo-sign.min.js"; 2748 let trustooSignTestLink = "https://cdn.shopify.com/extensions/01a0c380-6389-7017-91ff-8b932c2b1946/cwilltrustoo-reviews-286/assets/trustoo-sign-test.min.js";window.TrustooReviews.reviews.trustooCSSLink = trustooCSSLink 2749 window.TrustooReviews.reviews.trustooSignLink = trustooSignLink 2750 window.TrustooReviews.reviews.trustooSignTestLink = trustooSignTestLink 2751 })() 2752</script>
2752 2753
2754<script> 2755 null 2756</script>
vendor: 2 bytes, line 2756
2756
2757<script> 2758 2759</script>
2759 2760
2761<script> 2762var vstar_review_settings= {"is_activate_reviews":1,"is_qa_active":2,"is_active_store_review":2,"store_reviews_count":0,"layout":3,"is_transparent":2,"is_hide_ratings":2,"is_show_review_number":1,"is_show_review_title":1,"is_activate_product_rating":1,"is_activate_collection_rating":1,"is_activate_home_rating":2,"is_activate_home_reviews":2,"collection_pages_display_content":0,"is_show_stars_without_review":1,"is_show_list_stars_without_review":2,"rating_icon_type":1,"font_color":"#303030","star_color":"#FFA800","nostar_color":"#E6E6E6","card_bg_color":"#FFFFFF","box_bg_color":"#FFFFFF","verified_badge_color":"#303030","badge_text_color":"#303030","button_bg_color":"#FFFFFF","button_color":"#303030","button_border_color":"#303030","dividing_line_color":"#D9D9D9","card_shadow":"Dark","reply_bg_color":"#F2F2F2","qa_colors":"#303030,#E6E6E6,#E6E6E6,#303030,#303030,#F2F2F2","avatar_bg_color":"#EEEEEE","avatar_text_color":"#303030","attributes_bg_color":"#f2f2f2","font":"","font_size":14,"border_radius":2,"album_radius":4,"photo_radius":4,"attributes_style":1,"language":"en","lang_reviews":"reviews","is_translate_review":2,"auto_switch_language":2,"is_show_country_flag":2,"reviews_per_page_number":15,"review_sort_by":"comprehensive-descending","review_pagination_type":1,"review_date_format_type":5,"rating_filter":1,"review_empty_status_display":1,"is_show_album":1,"is_show_review_button":1,"is_show_helpful":2,"is_show_verified_badge":1,"verified_icon_type":1,"customer_avatar":1,"store_avatar_src":"","store_name":"Imani Soko","item_type":1,"sidetab_setting":{"sidetab_is_enabled":0,"sidetab_background_color":"#303030","sidetab_font_color":"#FFFFFF","sidetab_button_text":"â Reviews","show_corresponding_product":1},"reviews_css_code":"","rating_css_code":"","is_show_empty_review":1,"detail_rating_top":10,"detail_rating_bottom":15,"list_rating_top":5,"list_rating_bottom":5,"detail_rating_color":"","list_rating_color":"","attributes_color":"#303030","show_attribute":1,"all_reviews_display_type":"both","product_reviews_display_type":"product","is_activate_search_rating":2,"show_review_date":true,"show_verified_badge":true,"show_country_flag":true,"show_verification_methodology":false,"shop_verified_badge_color":"Purple","metafield_version":1789985764} 2763var vstar_custom_info = {"get_move_review_info":{"list":[]},"custom_style_info":{"list":[]},"star_insert_adaptation_info":{"list":[]},"custom_carousel_info":{"list":[]}} 2764var vstar_lang_json = {"customer_reviews":"Customer Reviews","no_reviews":"There are no reviews yet.","no_questions":"There are no questions yet.","write_reviews":"Write a review","name":"Your name","email":"Your email","feedback":"Share your feedback with us now","required":"Please fill in this field","email_error":"This is not a valid email format","add_photo":"Add photo","submit":"Submit review","success_message":"Thanks!","submitted_successfully":"Your review has been published","continue_shopping":"Continue","star":"Star","stars":"Stars","reviews":"reviews","error_tip":"Sorry, something went wrong, please try again later","more":"More","submitting":"Submitting","show_full_review":"Show full review","helpful":"Helpful?","sort_by":"Sort by","sort_by_options":["Photo priority","Newest","Highest Ratings","Lowest Ratings","Most Relevant"],"verified_purchase":"Verified purchase","order_verified":"The reviewer has a confirmed order at this store.","platforms_verified":"This review is synced from the other platforms.","transaction_verified":"This review was added from the store's transaction records.","you_rating":"Rating","phone":"Phone number","reply":"Reply","shop_name":"{{shop_name}}","item_type":"Item type:","product_pages_reviews":"{{star}} {{review_number}} Reviews","list_rating_content":"{{star}} ({{review_number}})","buyers_shows":"Review snippets","copy_succ":"Copy successfully","search_not_prod":"We couldn't find any matching products.","total_review":"{{review_number}} â â â â â verified customer ratings","review_with_content":"{{content_review_number}} with detailed reviews","no_content_review":"Be the first to leave a detailed review!","side_tab":"â Reviews","separate_review_form":{"slide_1_title":"How would you rate this item?","slide_2_title":"Show it off","slide_2_subtitle":"We'd love to see it in action!","slide_3_title":"Tell us more!","slide_4_title":"About you","slide_5_title":"Thanks!","slide_5_subtitle":"Your review has been published","discount":"Get {{Discount}} off your next purchase!","add_photo":"Add photo","or":"Or","add_video":"Add video","back":"Back","skip":"Skip","uploading":"Uploading","uploading_video_tip":"Uploading video,please wait...","next":"Next","content_from_placeholder":"Share your experience","your_name":"Your name","email":"Email","done":"Done","continue":"Continue","rating_options":["Love it","Like it!","It's okay","Didn't like it","Hate it"],"discount_setting":{"title":"You've got a {{currency}}{{Discount_amount}} off coupon!","subtitle":"Your review has been published! Here is a {{currency}}{{Discount_amount}} off coupon code to use on your next purchase.","tip_1":"Add photos get {{currency}}{{Discount_amount}} off your next purchase!","tip_2":"Post real feelings get {{currency}}{{Discount_amount}} off your next purchase!","tip_3":"Sharing your experience to get {{currency}}{{Discount_amount}} off for your next purchase!","copy":"Copy","no_discount":"Add your photo or video to the review and help our community of shoppers!","photo_discount":"Add a photo to get {{currency}}{{Discount_amount}} off for your next purchase!","video_discount":"Add a video to get {{currency}}{{Discount_amount}} off for your next purchase!"},"select_product_title":"Select product","search_product_input_prompt":"Search products by name...","add_media_to_review":"Add media to your review for {{product_title}}, Get {{currency}}{{Discount_amount}} off for your next purchase!","add_photo_or_video":"Add a photo or video","no_thanks":"No thanks","thanks_for_feedback":"Thanks for your feedback","see_other_products":"See other products","use_discounts":"Use discounts","close"
2764:"Close","attr_next":"Next","attr_skip":"Skip","add_media_review":"Add media to your review for {{product_title}}. Get {{currency}}{{discount_amount}} off for your next purchase!","done_text":"Done","copy":"Copy","feedback_message":"Your review has been submitted! You'll get {{discountVal}} off your next purchase.","privacy_policy":"Privacy Policy","terms":"Terms","consent_text":"By submitting this review, you agree to CWILL's {{privacy_policy}} and {{terms}} regarding the processing of your personal data.","select_all":"Select all that apply","choose_one":"Choose one","purchase_required":"Please purchase the product first.","request_review_title":"Tell us more!","request_one_star_label":"Hate it","request_five_star_label":"Love it","request_review_input_prompt":"Share your experience","request_next_button":"Next","request_about_you_title":"About you","request_your_name":"Your name","request_email":"Email","request_consent_text":"By submitting this review, you agree to CWILL's {{privacy_policy}} and {{terms}} regarding the processing of your personal data.","request_privacy_policy":"Privacy Policy","request_terms":"Terms","request_done":"Done"},"summary":{"product_summary_title":"What customers are saying","product_summary_generated":"AI generated from customer reviews","home_summary_title":"What customers are saying","home_summary_generated":"AI generated from customer reviews"},"card_carousel":{"header_title":"Excellent","header_review_rating_text":"average","header_review_count_text":"reviews","text":{"title":"Our customers love us","desc":"{{total_rating}} star Based on {{total_reviews}} reviews"},"photo":{"title":"Our customers love us","desc":"{{total_rating}} star Based on {{total_reviews}} reviews"},"barrage":{"title":"Our customers love us","desc":"{{total_rating}} star Based on {{total_reviews}} reviews"}},"all_in_one_from":{"write_reviews":"Write a review","or":"Or","add_video":"Add video","discount_setting":{"title":"You've got a {{currency}}{{Discount_amount}} off coupon!","subtitle":"Your review has been published! Here is a {{currency}}{{Discount_amount}} off coupon code to use on your next purchase.","tip_1":"Add photos get {{currency}}{{Discount_amount}} off your next purchase!","tip_2":"Post real feelings get {{currency}}{{Discount_amount}} off your next purchase!","tip_3":"Sharing your experience to get {{currency}}{{Discount_amount}} off for your next purchase!","copy":"Copy","no_discount":"Add your photo or video to the review and help our community of shoppers!","photo_discount":"Add a photo to get {{currency}}{{Discount_amount}} off for your next purchase!","video_discount":"Add a video to get {{currency}}{{Discount_amount}} off for your next purchase!"},"review":"Review","title":"Title","select_product_title":"Select product","search_product_input_prompt":"Search products by name...","add_media_to_review":"Add media to your review for {{product_title}}, Get {{currency}}{{Discount_amount}} off for your next purchase!","add_photo_or_video":"Add a photo or video","no_thanks":"No thanks","thanks_for_feedback":"Thanks for your feedback","see_other_products":"See other products","use_discounts":"Use discounts","close":"Close","attr_next":"Next","attr_skip":"Skip","add_media_review":"Add media to your review for {{product_title}}, Get {{currency}}{{discount_amount}} off for your next purchase!","done_text":"Done","copy":"Copy","feedback_message":"Your review has been submitted! You'll get {{discountVal}} off your next purchase.","privacy_policy":"Privacy Policy","terms":"Terms","consent_text":"By submitting this review, you agree to CWILL's {{privacy_policy}} and {{terms}} regarding the processing of your personal data.","select_all":"Select all that apply","choose_one":"Choose one","error_file_tip":"Upload stopped, unsupported file detected.","upload_tip":"Uploading. Please submit after it finishes.","purchase_required":"Please purchase the product first.","request_review_title":"Tell us more!","request_one_star_label":"Hate it","request_five_star_label":"Love it","request_review_input_prompt":"Share your experience","request_next_button":"Next","request_about_you_title":"About you","request_your_name":"Your name","request_email":"Email","request_consent_text":"By submitting this review, you agree to CWILL's {{privacy_policy}} and {{terms}} regarding the processing of your personal data.","request_privacy_policy":"Privacy Policy","request_terms":"Terms","request_done":"Done"},"question_and_answer":{"title":"Questions","ask_a_question":"Ask a question","helpful":"Was this helpful?","desc_placeholder":"Please describe your question in detail...","submit_question":"Submit question","submitted":"Your question has been submitted. You will be notified via email when the answer is given.","question":"Question","thanks":"Thanks!","publish_title":"Is it public?","public_options_yes":"Yes","public_options_no":"No"},"referral":{"discount":"Give {{currency}}{{friend_discount}}","reward":"Get {{currency}}{{advocate_reward}}","gift":"Give your friends a gift!","reward_desc":"For every friend that uses their {{currency}}{{friend_discount}} discount, youâll get a {{currency}}{{advocate_reward}} discount as well!","newOnly":"Discount limited to new customers only","code":"Get Discount Code","got_discount_title":"You got {{currency}}{{friend_discount}} off!","got_discount_desc":"Thanks to your friend, you have a {{currency}}{{friend_discount}} discount to shop at {{shop_name}}","copy":"Copy","continue":"Continue","applied":"Code will be applied at checkout","amount_tip":"Minimum purchase amount: {{currency}}{{minimum_amount}}","oops":"Oops","self_refer":"You cannot refer yourself, sorry. But donât worry, referring friends and family works great.","copied":"Copied"},"checkout":{"title":"The system will automatically give a positive review if no evaluation is made within the specified time.","desc":"You can modify the reviews at any time through the link provided in the email.","content":"{{review_number}}+ 5-star reviews","badge1":"Shopify keeps your information and payment safe","badge2":"Please modify the text in \"Custom language text\"","badge3":"Please modify the text in \"Custom language text\""},"thankyou":{"title":"About automatic positive reviews","desc":"By agreeing, you authorize {{Store Name}} to automatically submit positive reviews on your behalf if no reviews are made within a certain period after you place an order, and you can update these reviews at any time","agree":"I Agree","notAgree":"I Do Not Agree"},"time_ago":{"just":"Just","minute":"{{time_number}} minute ago","hour":"{{time_number}} hour ago","day":"{{time_number}} day ago","month":"{{time_number}} month ago","year":"{{time_number}} year ago","minutes":"{{time_number}} minutes ago","hours":"{{time_number}} hours ago","days":"{{time_number}} days ago","months":"{{time_number}} months ago","years":"{{time_number}} years ago"},"store_review":{"write_btn_text":"Write a store review","tab_name":"Store reviews"},"customer_extensions":{"store_review_title":"Store reviews","store_no_review_prompt":"Share your experience with this store.","product_review_title":"Product reviews","product_no_review_prompt":"No products purchased yet","order_button":"Go to Order","edit_review_button":"Edit Reviews","select_product":"Select the product you want to feedback","next_button":"Next","product_information":"What do you think about {{product_title}}?","media_reminder":"Add Photos","submit_button":"Submit Reviews","thank_you_message":"Thank y
2764ou for your review!","done_button":"Done","write_review_title":"Write a review","submit_review_button":"Submit Review","no_reviews_found":"No reviews found for your orders.","write_review_button":"Write a review","store_review_button":"Write a store review","review_title":"Review Title","review_comment":"Review Comment"},"preview":{"sandbox_preview":"You are in a sandbox preview area. This is not your actual store page. All comments and data here are example data and \u003cb\u003ewill not appear in your live store\u003c/b\u003e. You can also check your real store here.","no_review":"You don't have any reviews yet. Add or collect your own to see them live in your store!","activate_widget":"You can also activate this widget directly from your admin to match your store's style and preferences. Click \u003c0\u003ehere\u003c/0\u003e to start.","check_store":"Check live store","import_reviews":"Import reviews","collect_reviews":"Collect reviews","photo_carousel":"Recommended Widgets: Photo carousel ","ai_summary":"Recommended Widgets: AI summary "},"review_tab_name":"Reviews","unsubscribe":{"desc":"This kind of message will not be received after unsubscribing. Do you want to unsubscribe?","cancel":"Cancel","subscribe":"Unsubscribe","successfully":"Unsubscribe successfully","goto":"Go to the store"}} 2765var vstar_write_review_settings = {"write_review_form":1,"show_email":1,"require_email":1,"show_phone":2,"require_phone":2,"show_title":2,"require_title":2,"show_feedback":1,"require_feedback":1,"review_button_background_color":"#303030","review_button_text_color":"#FFFFFF","thanks_button_background_color":"#303030","thanks_button_text_color":"#FFFFFF","enabled_add_video":0,"login_to_left_review":2,"leave_review_method":1,"rating_icon_type":1,"discount_setting":{"discount_for_photo_reviews":1,"currency":"Ksh","discount_type":1,"discount_value":"","discount_incentive_conditions":1,"discount_for_reviews_form":1,"reward_strategy":2,"discount_value_star":"","discount_value_text":"10%","discount_value_photo":"15%","discount_value_video":""},"popup_radius":4,"button_radius":4,"discount_card_radius":30,"star_color":"#FF9900","text_color":"#303030","discount_bg_color":"#FFFFFF","discount_text_color":"#303030","discount_copy_color":"#3376C5","popup_bg_color":"#FFFFFF","write_review_type":"shop","show_review_btn":1,"is_del_powered":2,"show_privacy_policy":1,"show_checkbox":0,"logo_src":"","logo_size":150,"logo_alignment":"center"} 2766var vstar_buyers_show_settings = {"title_text":"","title_text_color":"#303030","title_font_size":16,"columns_count":4,"rows_count":2,"item_padding":2,"border_radius":2,"is_activated":0,"reviews_type":1,"title_align":"left","style":1,"card_radius":12,"text_color":"#303030","button_bg":"#FFFFFF","card_bg":"#FFFFFF","star_color":"#FF9900","arrow_color":"#303030","shop_verified_badge_color":"Purple","enable_instafeed":false} 2767var vstar_qa_settings = {"is_active":2} 2768var vstar_ai_summary_settings = {"home":{"is_active":0,"title_color":"#303030","summary_text_color":"#303030","summary_bg_color":"#FFFFFF","badge_bg_color":"#CDFEE1","badge_text_color":"#0C5132"},"product":{"is_active":0,"title_color":"#303030","summary_text_color":"#303030","summary_bg_color":"#FFFFFF","badge_bg_color":"#CDFEE1","badge_text_color":"#0C5132"}} 2769</script>
2769 2770 2771
2772<script id="seal_shop_id" type="application/json"> 2773 77325009205 2774</script>
vendor: 2 bytes, line 2774
2774
2775<script> 2776 (function(){ 2777 const oldScript = document.querySelector('[src*="/assets/vstar-review"]') 2778 if(oldScript){ 2779 trustoo_shopify_block_status = 1 2780 } 2781 }()) 2782</script>
2782� 2783 2784 2785 2786<div id="seal-review-collection"></div> 2787 2788</div><div id="shopify-block-AaUY3TDlOK3J2UVAyQ__4015264832934714879" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: ecomsend-app -->
2788<script type="text/javascript"> 2789 //SendWILL APPS COMMON JS CODE 2790 window.EcomSendApps = window.EcomSendApps || {} 2791 2792 window.EcomSendApps.design_mode = false 2793 2794 2795 window.EcomSendApps.common = window.EcomSendApps.common || {} 2796 window.EcomSendApps.common.shop = { 2797 permanent_domain: '887239-2.myshopify.com', 2798 currency: "KES", 2799 money_format: "KSh{{amount}}", 2800 id: 77325009205, 2801 } 2802 2803 2804 2805 window.EcomSendApps.common.customer = { 2806 id: null, 2807 tags: null, 2808 email: null, 2809 accepts_marketing: null, 2810 first_name: null, 2811 } 2812 2813 2814 2815 window.EcomSendApps.common.template = 'cart' 2816</script>
2816 2817<!-- END app snippet --> 2818
2819<script> 2820 window.EcomSendApps = window.EcomSendApps || {} 2821 /** @description shared localStorage key used by web-pixel sandbox to read storefront GDPR mode */ 2822 const ECOMSEND_GDPR_ENABLED_STORAGE_KEY = "ECOMSEND:GDPR_ENABLED" 2823 /** @description storefront main bundle asset url */ 2824 const ECOMSEND_MAIN_SCRIPT_URL = 'https://cdn.shopify.com/extensions/01a0f197-ce1f-7a19-8adb-6b78fec4702f/ecomsend-209/assets/ecomsend.js' 2825 /** @description storefront style asset url */ 2826 const ECOMSEND_MAIN_STYLE_URL = 'https://cdn.shopify.com/extensions/01a0f197-ce1f-7a19-8adb-6b78fec4702f/ecomsend-209/assets/style.css' 2827 /** @description storefront wasm asset url for runtime signature module */ 2828 const ECOMSEND_WASM_ASSET_URL = 'https://cdn.shopify.com/extensions/01a0f197-ce1f-7a19-8adb-6b78fec4702f/ecomsend-209/assets/client_safe.wasm' 2829 /** @description fallback delay when requestIdleCallback is unavailable */ 2830 const ECOMSEND_IDLE_TIMEOUT_MS = 800 2831 /** @description user interaction events used to trigger lazy init earlier */ 2832 const ECOMSEND_INTERACTION_EVENTS = ["pointerdown", "keydown", "touchstart"] 2833 /** @description global flag key for emergency immediate loading */ 2834 const ECOMSEND_FORCE_IMMEDIATE_FLAG = window.EcomSendApps?.forceImmediateLoad === true 2835 /** @description default GDPR mode comes from block setting and can be overridden on window.EcomSendApps.GDPR */ 2836 const ECOMSEND_DEFAULT_GDPR_FLAG = false 2837 /** @description default CWTracks mode comes from block setting and can be overridden on window.EcomSendApps.CWTracksEnabled */ 2838 const ECOMSEND_DEFAULT_CWTRACKS_ENABLED = false 2839 2840 /** @description normalize merchant-provided GDPR switch into a strict boolean value */ 2841 function normalizeEcomsendBooleanFlag(rawValue) { 2842 if (typeof rawValue === "boolean") { 2843 return rawValue 2844 } 2845 if (typeof rawValue === "number") { 2846 return rawValue === 1 2847 } 2848 if (typeof rawValue === "string") { 2849 const normalizedValue = rawValue.trim().toLowerCase() 2850 return normalizedValue === "true" || normalizedValue === "1" || normalizedValue === "yes" 2851 } 2852 return false 2853 } 2854 2855 /** @description lock runtime switch value on EcomSendApps to reduce accidental console overwrite. */ 2856 function lockEcomsendReadonlyFlag(flagName, flagValue) { 2857 try { 2858 Object.defineProperty(window.EcomSendApps, flagName, { 2859 value: flagValue, 2860 writable: false, 2861 configurable: false, 2862 enumerable: true, 2863 }) 2864 return 2865 } catch (error) {} 2866 window.EcomSendApps[flagName] = flagValue 2867 } 2868 2869 /** @description resolve storefront GDPR mode from merchant theme override */ 2870 function resolveEcomsendGdprMode() { 2871 if (typeof window.EcomSendApps.GDPR === "undefined") { 2872 window.EcomSendApps.GDPR = ECOMSEND_DEFAULT_GDPR_FLAG 2873 } 2874 const gdprEnabled = normalizeEcomsendBooleanFlag(window.EcomSendApps.GDPR) 2875 window.EcomSendApps.GDPR = gdprEnabled 2876 return gdprEnabled 2877 } 2878 2879 /** @description resolve storefront CWTracks mode from merchant theme block setting and runtime override */ 2880 function resolveEcomsendCwTracksMode() { 2881 if (typeof window.EcomSendApps.CWTracksEnabled === "undefined") { 2882 window.EcomSendApps.CWTracksEnabled = ECOMSEND_DEFAULT_CWTRACKS_ENABLED 2883 } 2884 const cwTracksEnabled = normalizeEcomsendBooleanFlag(window.EcomSendApps.CWTracksEnabled) 2885 window.EcomSendApps.CWTracksEnabled = cwTracksEnabled 2886 return cwTracksEnabled 2887 } 2888 2889 /** @description persist storefront GDPR mode so web-pixel sandbox can consume the same switch */ 2890 function syncEcomsendGdprModeToStorage(gdprEnabled) { 2891 if (!window.localStorage) { 2892 return 2893 } 2894 if (gdprEnabled) { 2895 window.localStorage.setItem(ECOMSEND_GDPR_ENABLED_STORAGE_KEY, "true") 2896 return 2897 } 2898 window.localStorage.removeItem(ECOMSEND_GDPR_ENABLED_STORAGE_KEY) 2899 } 2900 2901 /** @description enable GDPR gating only when merchant explicitly turns on storefront GDPR mode */ 2902 const ECOMSEND_GDPR_ENABLED = resolveEcomsendGdprMode() 2903 /** @description enable CWTracks callback/event emit only when merchant turns on CWTracks mode. */ 2904 const ECOMSEND_CWTRACKS_ENABLED = resolveEcomsendCwTracksMode() 2905 lockEcomsendReadonlyFlag("GDPR", ECOMSEND_GDPR_ENABLED) 2906 lockEcomsendReadonlyFlag("CWTracksEnabled", ECOMSEND_CWTRACKS_ENABLED) 2907 2908 try { 2909 syncEcomsendGdprModeToStorage(ECOMSEND_GDPR_ENABLED) 2910 } catch (error) {} 2911 2912 /** @description create main stylesheet node for storefront runtime */ 2913 function createEcomSendMainStyleEle() { 2914 const ecomsendMainStyleEle = document.createElement("link") 2915 ecomsendMainStyleEle.rel = "stylesheet" 2916 ecomsendMainStyleEle.href = ECOMSEND_MAIN_STYLE_URL 2917 ecomsendMainStyleEle.dataset.ecomsendTag = "main-style" 2918 return ecomsendMainStyleEle 2919 } 2920 2921 /** @description append runtime stylesheet exactly once */ 2922 function ensureEcomSendMainStyleLoaded() { 2923 if (document.querySelector('link[data-ecomsend-tag="main-style"]')) { 2924 return 2925 } 2926 const ecomsendMainStyleEle = createEcomSendMainStyleEle() 2927 document.head.appendChild(ecomsendMainStyleEle) 2928 } 2929 2930 /** @description remove interaction listeners after first lazy-init trigger */ 2931 function clearInteractionListeners() {
2932 ECOMSEND_INTERACTION_EVENTS.forEach((eventName) => { 2933 window.removeEventListener(eventName, scheduleMainBundleLoad) 2934 }) 2935 } 2936 2937 /** @description run low-priority task via idle callback with timeout fallback */ 2938 function scheduleLowPriorityTask(taskRunner, timeoutMs) { 2939 if (window.requestIdleCallback) { 2940 window.requestIdleCallback(() => { 2941 taskRunner() 2942 }, { timeout: timeoutMs }) 2943 return 2944 } 2945 window.setTimeout(() => { 2946 taskRunner() 2947 }, timeoutMs) 2948 } 2949 2950 /** @description load main storefront bundle once and keep rollback override */ 2951 function loadEcomsendMainBundle() { 2952 if (window.__ecomsendMainBundleLoaded) { 2953 return 2954 } 2955 window.__ecomsendMainBundleLoaded = true 2956 clearInteractionListeners() 2957 /** @description ensure storefront runtime css is loaded together with main bundle */ 2958 ensureEcomSendMainStyleLoaded() 2959 const ecomsendMainScriptEle = document.createElement("script") 2960 ecomsendMainScriptEle.src = ECOMSEND_MAIN_SCRIPT_URL 2961 ecomsendMainScriptEle.async = true 2962 ecomsendMainScriptEle.dataset.ecomsendTag = "main-script" 2963 document.body.appendChild(ecomsendMainScriptEle) 2964 } 2965 2966 /** @description schedule heavy bundle with idle-first strategy to reduce main-thread contention */ 2967 function scheduleMainBundleLoad() { 2968 if (window.__ecomsendMainBundleLoadScheduled) { 2969 return 2970 } 2971 /** @description dedupe idle scheduling from DOMContentLoaded and first interactions */ 2972 window.__ecomsendMainBundleLoadScheduled = true 2973 if (ECOMSEND_FORCE_IMMEDIATE_FLAG) { 2974 loadEcomsendMainBundle() 2975 return 2976 } 2977 scheduleLowPriorityTask(loadEcomsendMainBundle, ECOMSEND_IDLE_TIMEOUT_MS) 2978 } 2979 2980 /** @description cache marketing params for pixel/report flows before heavy bundle starts */ 2981 function cacheMarketingParams() { 2982 const urlParams = new URLSearchParams(window.location.search) 2983 const marketingId = urlParams.get("ec_marketing_id") 2984 const ecEmailId = urlParams.get("ec_email_id") 2985 const ecMarketingSign = urlParams.get("ec_marketing_sign") 2986 2987 if (marketingId && window.localStorage) { 2988 window.localStorage.setItem("ec_marketing_id", marketingId) 2989 } 2990 if (ecEmailId && window.localStorage) { 2991 window.localStorage.setItem("ec_email_id", ecEmailId) 2992 } 2993 if (ecMarketingSign && window.localStorage) { 2994 window.localStorage.setItem("ec_marketing_sign", ecMarketingSign) 2995 } 2996 } 2997 2998 /** @description check whether marketing storage is allowed under Shopify customer privacy state */ 2999 function isMarketingStorageAllowedByCustomerPrivacy() { 3000 const customerPrivacy = window?.Shopify?.customerPrivacy 3001 if (!customerPrivacy) { 3002 return false 3003 } 3004 const marketingAllowed = typeof customerPrivacy.marketingAllowed === "function" && customerPrivacy.marketingAllowed() 3005 if (marketingAllowed) { 3006 return true 3007 } 3008 if (typeof customerPrivacy.currentVisitorConsent === "function") { 3009 const consent = customerPrivacy.currentVisitorConsent() 3010 return consent?.marketing === "yes" 3011 } 3012 return false 3013 } 3014 3015 /** @description check whether analytics storage is allowed under Shopify customer privacy state */ 3016 function isAnalyticsStorageAllowedByCustomerPrivacy() { 3017 const customerPrivacy = window?.Shopify?.customerPrivacy 3018 if (!customerPrivacy) { 3019 return false 3020 } 3021 const analyticsAllowed = typeof customerPrivacy.analyticsProcessingAllowed === "function" && customerPrivacy.analyticsProcessingAllowed() 3022 if (analyticsAllowed) { 3023 return true 3024 } 3025 if (typeof customerPrivacy.currentVisitorConsent === "function") { 3026 const consent = customerPrivacy.currentVisitorConsent() 3027 return consent?.analytics === "yes" 3028 } 3029 return false 3030 } 3031 3032 /** @description execute marketing param caching with GDPR guard: functional off when GDPR disabled */ 3033 function cacheMarketingParamsWithGdprGuard() { 3034 if (!ECOMSEND_GDPR_ENABLED) { 3035 cacheMarketingParams() 3036 return 3037 } 3038 if (isMarketingStorageAllowedByCustomerPrivacy()) { 3039 cacheMarketingParams() 3040 } 3041 } 3042 3043 /** @description cache shop id used by pixel report branches */ 3044 function cacheShopIdForPixel() { 3045 if (!window.EcomSendApps?.common?.shop?.id || !window.localStorage) { 3046 return 3047 } 3048 window.localStorage.setItem("ECOMSEND:ES_SHOP_ID", window.EcomSendApps.common.shop.id) 3049 } 3050 3051 /** 3052 * Flow client config (e.g. browserStaySeconds) is fetched by the main ecomsend.js bundle: 3053 * bootstrapFlowClientConfig â POST /api/automation/v2/clientFlowConfig (API Sign) 3054 * â localStorage ECOMSEND:FLOW_CLIENT_CONFIG.byEventId â read by web-pixel. 3055 * Keep new C-end Flow config on this path; do not scatter fetches in liquid. 3056 */ 3057 3058 /** @description execute shop id caching with GDPR guard and shared consent policy */ 3059 function cacheShopIdWithGdprGuard() { 3060 if (!ECOMSEND_GDPR_ENABLED) { 3061 cacheShopIdForPixel() 3062 return 3063 } 3064 if (isAnalyticsStorageAllowedByCustomerPrivacy()) { 3065 cacheShopIdForPixel() 3066 } 3067 } 3068 3069 /** @description load Shopify consent-tracking API before GDPR-gated cache writes */ 3070 function withCustomerPrivacyApiReady(onReady) { 3071 if (!ECOMSEND_GDPR_ENABLED) { 3072 onReady() 3073 return 3074 } 3075 if (window?.Shopify?.customerPrivacy) { 3076 onReady() 3077 return 3078 } 3079 if (typeof window?.Shopify?.loadFeatures !== "function") { 3080 return 3081 } 3082 window.Shopify.loadFeatures( 3083 [{ name: "consent-tracking-api", version: "0.1" }], 3084 (error) => { 3085 if (error) { 3086 return 3087 } 3088 onReady() 3089 } 3090 ) 3091 } 3092 3093 try { 3094 withCustomerPrivacyApiReady(() => { 3095 cacheMarketingParamsWithGdprGuard() 3096 cacheShopIdWithGdprGuard() 3097 }) 3098 if (ECOMSEND_GDPR_ENABLED) { 3099 document.addEventListener("visitorConsentCollected", () => { 3100 cacheMarketingParamsWithGdprGuard() 3101 cacheShopIdWithGdprGuard() 3102 }) 3103 } 3104 } catch (e) {} 3105 3106 /** @description inject wasm asset url into shared namespace before main bundle executes */ 3107 window.EcomSendApps.wasmURL = ECOMSEND_WASM_ASSET_URL 3108
3109 ECOMSEND_INTERACTION_EVENTS.forEach((eventName) => { 3110 window.addEventListener(eventName, scheduleMainBundleLoad, { once: true, passive: true }) 3111 }) 3112 3113 if (document.readyState === "loading") { 3114 document.addEventListener("DOMContentLoaded", scheduleMainBundleLoad, { once: true }) 3115 } else { 3116 scheduleMainBundleLoad() 3117 } 3118</script>
3118 3119 3120<style id="ecomsend-custom-style"></style> 3121
3122<script>window.shopLocale = 'en'</script>
3122 3123
3124<script> 3125 /** @description timeout used for deferred discount request scheduling */ 3126 const ECOMSEND_DISCOUNT_IDLE_TIMEOUT_MS = 1500 3127 3128 /** @description apply discount code from url query only when parameter exists */ 3129 function applyWillDiscountCode() { 3130 const urlParams = new URLSearchParams(window.location.search) 3131 const willDiscountCode = urlParams.get("willDiscountCode") 3132 if (!willDiscountCode || /[\u0000-\u001F\u007F]/.test(willDiscountCode)) { 3133 return 3134 } 3135 fetch("/cart/update.js", { 3136 method: "POST", 3137 headers: { 3138 "Content-Type": "application/json", 3139 }, 3140 body: JSON.stringify({ 3141 discount: willDiscountCode, 3142 }), 3143 }) 3144 } 3145 3146 try { 3147 if (!window.__ecomsendDeferredTasksScheduled) { 3148 /** @description global guard to avoid duplicate deferred task scheduling */ 3149 window.__ecomsendDeferredTasksScheduled = true 3150 if (window.requestIdleCallback) { 3151 window.requestIdleCallback(() => { 3152 applyWillDiscountCode() 3153 }, { timeout: ECOMSEND_DISCOUNT_IDLE_TIMEOUT_MS }) 3154 } else { 3155 window.setTimeout(() => { 3156 applyWillDiscountCode() 3157 }, ECOMSEND_DISCOUNT_IDLE_TIMEOUT_MS) 3158 } 3159 } 3160 } catch (error) {} 3161</script>
3161 3162 3163 3164 3165</div><div id="shopify-block-ARDB6Wnh0SGtXa1Vac__10164839151858296315" class="shopify-block shopify-app-block">
3165<script> 3166 var page = "" 3167 var addtocart = false; 3168 var initiateCheckoutFlag = false; 3169 var pData = false; 3170 var ptiktokData=false; 3171 var pTags = []; 3172 var pCollection = []; 3173 var shopMarket= Shopify.country 3174 var shopCurrency = Shopify.currency.active 3175 3176 </script>
3176 3177 3178 3179 3180 3181
3181<script> 3182 var page = "cart" 3183 var pTags = [] 3184 var pCollection = [] 3185 3186 3187 3188 3189 pTags = pTags.filter(onlyUnique); 3190 pCollection = pCollection.filter(onlyUnique); 3191 function onlyUnique(value, index, self) { 3192 return self.indexOf(value) === index; 3193 } 3194 </script>
3194 3195 3196 3197
3197<script> 3198 var lineitem = [] 3199 3200 3201 var cData = { 3202 content_type:"product_group", 3203 num_items:"0", 3204 value:"0.00", 3205 currency:shopCurrency, 3206 content_ids:lineitem 3207 } 3208 var ctiktokData = { 3209 content_type:"product_group", 3210 num_items:"0", 3211 value:"0.00", 3212 currency:shopCurrency, 3213 content_ids:lineitem 3214 } 3215 </script>
3215 3216 3217 3218</div><div id="shopify-block-AbmROL3RiV1F2dEZEY__15659862187755629035" class="shopify-block shopify-app-block"> 3219 <!-- BEGIN app snippet: cart_validation -->
3219<script> 3220 let productWithServiceFound = false; 3221 var isAppEmbedCartValidationEnabled = true; 3222 let processCart = true; 3223 let SCRIPT_HOST_NAME = `/apps/bookeasy`; 3224 function getCartDetails(details) { 3225 return new Promise((resolve, reject) => { 3226 try { 3227 if (Object.keys(details).length > 0) { 3228 resolve(details); 3229 } else { 3230 fetch(`https://${window.location.hostname}/cart.js`, { 3231 headers: { 3232 'Content-Type': 'application/json; charset=UTF-8', 3233 }, 3234 }) 3235 .then((response) => { 3236 if (response.status === 200) { 3237 return response.json(); 3238 } 3239 reject(undefined); 3240 }) 3241 .then((data) => resolve(data)) 3242 .catch(() => resolve(undefined)); 3243 } 3244 } catch (error) { 3245 console.log('Error while getting cart details: ', error); 3246 reject(undefined); 3247 } 3248 }); 3249 } 3250 3251 function cartUpdate(items) { 3252 return new Promise((resolve, reject) => { 3253 try { 3254 fetch('/cart/change.js', { 3255 method: 'POST', 3256 headers: { 3257 'Content-Type': 'application/json', 3258 }, 3259 body: JSON.stringify(items), 3260 }) 3261 .then((response) => { 3262 if (response.status === 200) { 3263 return response.json(); 3264 } 3265 return undefined; 3266 }) 3267 .then((data) => resolve(data)) 3268 .catch(() => reject(undefined)); 3269 } catch (error) { 3270 console.log('Error while updating cart: ', error); 3271 reject(error); 3272 } 3273 }); 3274 } 3275 3276 function getAvailableServices(myShopifyDomain) { 3277 return new Promise((resolve, reject) => { 3278 if (localStorage.getItem('bookeasy-setup')) { 3279 let bookeasySetup = JSON.parse(localStorage.getItem('bookeasy-setup')); 3280 resolve(bookeasySetup?.availableServices); 3281 fetch(`${SCRIPT_HOST_NAME}/api/bookeasy/validate/localSetup`, { 3282 method: 'POST', 3283 headers: { 3284 'Content-Type': 'application/json; charset=UTF-8', 3285 }, 3286 body: JSON.stringify({ 3287 myShopifyDomain: myShopifyDomain, 3288 servicesUpdatedAt: bookeasySetup.servicesUpdatedAt, 3289 setupUpdatedAt: bookeasySetup.setupUpdatedAt, 3290 subscriptionUpdatedAt: bookeasySetup.subscriptionUpdatedAt 3291 }), 3292 }) 3293 .then((response) => { 3294 if (response.status === 200) { 3295 return response.json(); 3296 } 3297 }) 3298 .then((data) => { 3299 if (data?.clearLocalSetup) { 3300 localStorage.removeItem('bookeasy-setup'); 3301 } 3302 }) 3303 .catch(() => { 3304 localStorage.removeItem('bookeasy-setup'); 3305 }); 3306 } else { 3307 fetch(`${SCRIPT_HOST_NAME}/api/availableServices?myShopifyDomain=${myShopifyDomain}`, { 3308 method: 'GET', 3309 headers: { 3310 'Content-Type': 'application/json; charset=UTF-8', 3311 }, 3312 }) 3313 .then((response) => response.json()) 3314 .then((response) => { 3315 if (!response.clearLocalSetup) { 3316 localStorage.setItem('bookeasy-setup', JSON.stringify(response)); 3317 } 3318 resolve(response?.availableServices); 3319 }) 3320 .catch(() => reject(undefined)); 3321 } 3322 }); 3323 } 3324 3325 function processCartItems(details = {}, services = [], productWithServiceFound = false) { 3326 if (Shopify.shop) { 3327 let myShopifyDomain = Shopify.shop; 3328 getCartDetails(details).then((cartDetails) => { 3329 if (cartDetails?.items) { 3330 let items = cartDetails.items; 3331 //Services is passed as param so that local setup call is initiated only once not for every cart update 3332 if (services.length > 0) { 3333 findMatchProductWithService(items, services, productWithServiceFound); 3334 } else { 3335 getAvailableServices(myShopifyDomain).then((availableServices) => { 3336 findMatchProductWithService(items, availableServices, productWithServiceFound); 3337 }); 3338 } 3339 } 3340 }); 3341 } 3342 } 3343 3344 function findMatchProductWithService(items = [], availableServices = [], productWithServiceFound) { 3345 let activeServices = availableServices.filter((service) => service.serviceBy === 'withProducts'); 3346 if (activeServices.length > 0) { 3347 let flag = true; 3348 for (let index = 0; index < items.length; index++) { 3349 let item = items[index]; 3350 let isProductMappedToActiveService = activeServices.find( 3351 (service) => 3352 service.productId === item.product_id.toString() && 3353 service?.variants.includes(item.variant_id.toString()) && 3354 (!service.serviceBy || service.serviceBy === "withProducts") && 3355 !service?.makeBookeasyBtnOptional && 3356 !item.properties?.['_bookeasy-booking-id'] 3357 ); 3358 if (isProductMappedToActiveService) { 3359 flag = false; 3360 productWithServiceFound = true; 3361 //Cart update will resolve by giving updated cart details 3362 cartUpdate({ line: index + 1, quantity: 0 }).then((updatedCartDetails) => { 3363 document.dispatchEvent(new Event('bookeasy-cart-updated', { cartDetails: updatedCartDetails })); 3364 processCartItems(updatedCartDetails, availableServices, productWithServiceFound); 3365 }).catch((error) => { 3366 console.log("Error", error); 3367 }); 3368 break; 3369 } 3370 } 3371 //If the product is mapped to a service and the cart is updated, then reload the page. If no product is mapped to a service, then it will not reload 3372 if (flag && productWithServiceFound) { 3373 document.dispatchEvent(new Event('bookeasy-cart-reload', { productWithServiceFound: productWithServiceFound })); 3374 window.location.reload(); 3375 } 3376 } 3377 } 3378 3379 function registerNetworkListeners() {
3380 let cartUpdateUrls = ["/cart/add.js", "/cart/add"]; 3381 let isScriptCall = false; 3382 // XMLHttpRequest interceptor 3383 var bookeasyCartValidationXMLRequestListeners = window.XMLHttpRequest.prototype.open; 3384 function openReplacement(method, url, async, user, password) { 3385 // Check if the call is from our own scripts 3386 const stackTrace = new Error().stack; 3387 if (stackTrace.includes('processCartItems') || stackTrace.includes('cartUpdate')) { 3388 isScriptCall = true; 3389 } else { 3390 isScriptCall = false; 3391 } 3392 this.addEventListener("load", async function () { 3393 if (!isScriptCall && typeof url === "string") { 3394 let splitURL = url.split("?"); 3395 if (splitURL && splitURL.length) { 3396 if (cartUpdateUrls.includes(splitURL[0])) { 3397 processCartItems(undefined, undefined, productWithServiceFound); 3398 } 3399 } 3400 } 3401 }); 3402 return bookeasyCartValidationXMLRequestListeners.apply(this, arguments); 3403 } 3404 window.XMLHttpRequest.prototype.open = openReplacement; 3405 // Fetch interceptor 3406 var bookeasyCartValidationFetchRequestListeners = fetch; 3407 fetch = async function (url, options) { 3408 // Check if the call is from our own scripts 3409 const stackTrace = new Error().stack; 3410 if (stackTrace.includes('processCartItems') || stackTrace.includes('cartUpdate')) { 3411 isScriptCall = true; 3412 } else { 3413 isScriptCall = false; 3414 } 3415 var promise = bookeasyCartValidationFetchRequestListeners(url, options); 3416 await promise; 3417 if (!isScriptCall && typeof url === "string") { 3418 let splitURL = url.split("?"); 3419 if (splitURL && splitURL.length) { 3420 if (cartUpdateUrls.includes(splitURL[0])) { 3421 processCartItems(undefined, undefined, productWithServiceFound); 3422 } 3423 } 3424 } 3425 return promise; 3426 } 3427 } 3428 3429 function DOMcontentLoadListener() { 3430 if (document.readyState === 'complete' || document.readyState === 'interactive') { 3431 if (processCart) { 3432 processCart = false 3433 processCartItems(undefined, undefined, productWithServiceFound); 3434 } 3435 } 3436 else { 3437 document.addEventListener("readystatechange", () => { 3438 if (processCart && (document.readyState === 'complete' || document.readyState === 'interactive')) { 3439 processCart = false; 3440 processCartItems(undefined, undefined, productWithServiceFound); 3441 } 3442 }); 3443 document.addEventListener('DOMContentLoaded', function () { 3444 if (processCart) { 3445 processCart = false; 3446 processCartItems(undefined, undefined, productWithServiceFound); 3447 } 3448 }); 3449 } 3450 } 3451 function isPrivateTab() { 3452 try { 3453 let storage = typeof localStorage; 3454 return false; 3455 } catch (error) { 3456 return true; 3457 } 3458 } 3459 if (!isPrivateTab() && localStorage.getItem('bookeasy-setup')) { 3460 let bookeasySetup = JSON.parse(localStorage.getItem('bookeasy-setup')); 3461 if (!bookeasySetup?.stopAppEmbedCartValidation) { 3462 registerNetworkListeners(); 3463 DOMcontentLoadListener(); 3464 } 3465 } else { 3466 registerNetworkListeners(); 3467 DOMcontentLoadListener(); 3468 } 3469</script>
3469 3470<!-- END app snippet --> 3471
3472<script type="module" src="https://cdn.shopify.com/extensions/01a0b35b-fe77-73f6-98ae-1f3438574cf5/bookeasy-184/assets/bookeasy-widget.esm.js" defer></script>
3472 3473 3474 3475</div><div id="shopify-block-AK00yV0RCaWYxUGltU__13766566558402285670" class="shopify-block shopify-app-block"> 3476 3477 3478 3479
3480<script type="text/javascript" data-cookieconsent="ignore"> 3481 window.$prDoranInit = window.$prDoranInit || {}; 3482 window.$prDoranInit.sdkRequested = true; 3483 window.$prDoranInit.shop = 'imanisoko.com'; 3484 window.$prDoranInit.language = window.$prDoranInit.language || 'en'; 3485 window.$prDoranInit.supportedLanguages = window.$prDoranInit.supportedLanguages || []; 3486 3487 3488 3489 window.$prDoranInit.sdkURL = window.$prDoranInit.sdkURL || "https://cdn.shopify.com/extensions/01a11be7-d007-7c81-82fe-1546b01b9593/doran-product-reviews-1791469523/assets/pr-sdk.js"; 3490 3491</script>
3491 3492 3493 3494
3495<script type="text/javascript" data-cookieconsent="ignore"> 3496 window.$prDoranInit = window.$prDoranInit || {}; 3497 window.$prDoranInit.ratingBadgeWidget = window.$prDoranInit.ratingBadgeWidget || { 3498 ratingIcon: 'Star', 3499 iconSpacing: 4, 3500 ratingIconColor: '#008068', 3501 translations: [], 3502 fontFamily: 'Default', 3503 customCSS: '' 3504 }; 3505 3506 window.$prDoranInit.ratingBadgeWidget = Object.assign( 3507 window.$prDoranInit.ratingBadgeWidget, 3508 {"customCSS":"@import url(\"https://p.typekit.net/p.css?s=1&k=hvw5mba&ht=tk&f=10294.10295.10296.10297.10298.10300.10301.10302&a=8711491&app=typekit&e=css\"); @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/1da05b/0000000000000000000132df/27/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n4&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/1da05b/0000000000000000000132df/27/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n4&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/1da05b/0000000000000000000132df/27/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n4&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 400; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/32d3ee/0000000000000000000132e0/27/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i4&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/32d3ee/0000000000000000000132e0/27/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i4&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/32d3ee/0000000000000000000132e0/27/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i4&v=3\") format(\"opentype\"); font-display: auto; font-style: italic; font-weight: 400; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/8f4e31/0000000000000000000132e3/27/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n7&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/8f4e31/0000000000000000000132e3/27/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n7&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/8f4e31/0000000000000000000132e3/27/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n7&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 700; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/383ab4/0000000000000000000132e4/27/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i7&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/383ab4/0000000000000000000132e4/27/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i7&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/383ab4/0000000000000000000132e4/27/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i7&v=3\") format(\"opentype\"); font-display: auto; font-style: italic; font-weight: 700; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/a96fa9/000000000000000077359de4/30/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n1&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/a96fa9/000000000000000077359de4/30/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n1&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/a96fa9/000000000000000077359de4/30/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n1&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 100; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/1281a1/000000000000000077359ded/30/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n3&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/1281a1/000000000000000077359ded/30/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n3&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/1281a1/000000000000000077359ded/30/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n3&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 300; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/08312f/000000000000000077359dee/30/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i3&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/08312f/000000000000000077359dee/30/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i3&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/08312f/000000000000000077359dee/30/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i3&v=3\") format(\"opentype\"); font-display: auto; font-style: italic; font-weight: 300; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/d03e48/000000000000000077359df2/30/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n5&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/d03e48/000000000000000077359df2/30/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n5&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/d03e48/000000000000000077359df2/30/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n5&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 500; font-stretch: normal; } body { font-family: brandon-grotesque,sans-serif; } .text-sm { font-size: 18px; color: #333 }","ratingIcon":"Star","ratingIconColor":"#b48c41","translations":[{"language":"en","item":{"simpleText_zero":"We're rated <strong>{{averageRating}}</strong> out of 5 based on <strong>0</strong> reviews","simpleText_one":"We're rated <strong>{{averageRating}}</strong> out of 5 based on <strong>{{reviewsCount}}</strong> review","simpleText_other":"We're rated <strong>{{averageRating}}</strong> out of 5 based on <strong>{{reviewsCount}}</strong> reviews","baseOnReviewsCount_zero":"0 reviews","baseOnReviewsCount_one":"{{reviewsCount}} review","baseOnReviewsCount_other":"{{reviewsCount}} reviews"}}],"fontFamily":"Default","iconSpacing":4,"isDarkMode":false} 3509 ); 3510 3511</script>
3511 3512 3513 3514
3515<script type="text/javascript" data-cookieconsent="ignore"> 3516 window.$prDoranInit = window.$prDoranInit || {}; 3517 window.$prDoranInit.ratingWidget = window.$prDoranInit.ratingWidget || { 3518 ratingIcon: 'Star', 3519 questionIcon: 'Question', 3520 iconSpacing: 4, 3521 ratingIconColor: '#008068', 3522 translations: [], 3523 fontFamily: 'Default', 3524 customCSS: '' 3525 }; 3526 3527 window.$prDoranInit.ratingWidget = Object.assign( 3528 window.$prDoranInit.ratingWidget, 3529 {"customCSS":"@import url(\"https://p.typekit.net/p.css?s=1&k=hvw5mba&ht=tk&f=10294.10295.10296.10297.10298.10300.10301.10302&a=8711491&app=typekit&e=css\"); @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/1da05b/0000000000000000000132df/27/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n4&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/1da05b/0000000000000000000132df/27/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n4&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/1da05b/0000000000000000000132df/27/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n4&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 400; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/32d3ee/0000000000000000000132e0/27/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i4&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/32d3ee/0000000000000000000132e0/27/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i4&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/32d3ee/0000000000000000000132e0/27/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i4&v=3\") format(\"opentype\"); font-display: auto; font-style: italic; font-weight: 400; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/8f4e31/0000000000000000000132e3/27/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n7&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/8f4e31/0000000000000000000132e3/27/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n7&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/8f4e31/0000000000000000000132e3/27/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n7&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 700; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/383ab4/0000000000000000000132e4/27/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i7&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/383ab4/0000000000000000000132e4/27/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i7&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/383ab4/0000000000000000000132e4/27/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i7&v=3\") format(\"opentype\"); font-display: auto; font-style: italic; font-weight: 700; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/a96fa9/000000000000000077359de4/30/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n1&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/a96fa9/000000000000000077359de4/30/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n1&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/a96fa9/000000000000000077359de4/30/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n1&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 100; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/1281a1/000000000000000077359ded/30/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n3&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/1281a1/000000000000000077359ded/30/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n3&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/1281a1/000000000000000077359ded/30/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n3&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 300; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/08312f/000000000000000077359dee/30/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i3&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/08312f/000000000000000077359dee/30/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i3&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/08312f/000000000000000077359dee/30/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i3&v=3\") format(\"opentype\"); font-display: auto; font-style: italic; font-weight: 300; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/d03e48/000000000000000077359df2/30/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n5&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/d03e48/000000000000000077359df2/30/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n5&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/d03e48/000000000000000077359df2/30/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n5&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 500; font-stretch: normal; } body { font-family: brandon-grotesque,sans-serif; } .text-sm { font-size: 18px; color: #333 }","ratingIcon":"Star","ratingIconColor":"#b48c41","questionIcon":"Question","translations":[{"language":"en","item":{"reviewsCount_zero":"No reviews","reviewsCount_one":"{{reviewsCount}} review","reviewsCount_other":"{{reviewsCount}} reviews","baseOnReviewsCount_zero":"No reviews","baseOnReviewsCount_one":"Base on {{reviewsCount}} review","baseOnReviewsCount_other":"Base on {{reviewsCount}} reviews","questionsCount_zero":"No questions","questionsCount_one":"{{questionsCount}} question","questionsCount_other":"{{questionsCount}} questions"}}],"fontFamily":"Default","iconSpacing":4,"isDarkMode":false} 3530 ); 3531 3532</script>
3532 3533 3534 3535
3536<script type="text/javascript" data-cookieconsent="ignore"> 3537 window.$prDoranInit = window.$prDoranInit || {}; 3538 window.$prDoranInit.shopAverageRating = window.$prDoranInit.shopAverageRating || {}; 3539 window.$prDoranInit.shopAverageRating.averageRating = 0.0; 3540 window.$prDoranInit.shopAverageRating.reviewsCount = 0; 3541 window.$prDoranInit.shopAverageRating.stars1 = 0; 3542 window.$prDoranInit.shopAverageRating.stars2 = 0; 3543 window.$prDoranInit.shopAverageRating.stars3 = 0; 3544 window.$prDoranInit.shopAverageRating.stars4 = 0; 3545 window.$prDoranInit.shopAverageRating.stars5 = 0; 3546 window.$prDoranInit.shopAverageRating.shopReviewsCount = 0; 3547 window.$prDoranInit.shopAverageRating.productReviewsCount = 0; 3548 window.$prDoranInit.shopReview = window.$prDoranInit.shopReview || { 3549 hasNextPage: false, 3550 startAfter: null, 3551 nodes: [] 3552 }; 3553 3554</script>
3554 3555 3556 3557 3558 3559 3560 3561
3562<script type="text/javascript" data-cookieconsent="ignore"> 3563 window.$prDoranInit = window.$prDoranInit || {}; 3564 window.$prDoranInit.showcasePage = window.$prDoranInit.showcasePage || { 3565 ratingIcon: 'Star', 3566 isDisplayAuthor: true, 3567 fontFamily: 'Default', 3568 ratingIconColor: '#008068', 3569 translations: [], 3570 borderRadius: 4, 3571 iconSpacing: 4, 3572 isViewProduct: true, 3573 isSecureAuthorName: false, 3574 isDisplayFilters: false, 3575 isAverageRating: false, 3576 isDisplayCountry: false, 3577 source: 'Latest', 3578 customCSS: '' 3579 }; 3580 3581 window.$prDoranInit.showcasePage = Object.assign( 3582 window.$prDoranInit.showcasePage, 3583 {"ratingIcon":"Star","isDisplayAuthor":true,"fontFamily":"Default","customCSS":"@import url(\"https://p.typekit.net/p.css?s=1&k=hvw5mba&ht=tk&f=10294.10295.10296.10297.10298.10300.10301.10302&a=8711491&app=typekit&e=css\"); @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/1da05b/0000000000000000000132df/27/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n4&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/1da05b/0000000000000000000132df/27/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n4&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/1da05b/0000000000000000000132df/27/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n4&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 400; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/32d3ee/0000000000000000000132e0/27/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i4&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/32d3ee/0000000000000000000132e0/27/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i4&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/32d3ee/0000000000000000000132e0/27/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i4&v=3\") format(\"opentype\"); font-display: auto; font-style: italic; font-weight: 400; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/8f4e31/0000000000000000000132e3/27/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n7&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/8f4e31/0000000000000000000132e3/27/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n7&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/8f4e31/0000000000000000000132e3/27/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n7&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 700; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/383ab4/0000000000000000000132e4/27/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i7&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/383ab4/0000000000000000000132e4/27/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i7&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/383ab4/0000000000000000000132e4/27/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i7&v=3\") format(\"opentype\"); font-display: auto; font-style: italic; font-weight: 700; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/a96fa9/000000000000000077359de4/30/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n1&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/a96fa9/000000000000000077359de4/30/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n1&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/a96fa9/000000000000000077359de4/30/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n1&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 100; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/1281a1/000000000000000077359ded/30/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n3&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/1281a1/000000000000000077359ded/30/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n3&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/1281a1/000000000000000077359ded/30/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n3&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 300; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/08312f/000000000000000077359dee/30/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i3&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/08312f/000000000000000077359dee/30/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i3&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/08312f/000000000000000077359dee/30/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=i3&v=3\") format(\"opentype\"); font-display: auto; font-style: italic; font-weight: 300; font-stretch: normal; } @font-face { font-family: \"brandon-grotesque\"; src: url(\"https://use.typekit.net/af/d03e48/000000000000000077359df2/30/l?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n5&v=3\") format(\"woff2\"),url(\"https://use.typekit.net/af/d03e48/000000000000000077359df2/30/d?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n5&v=3\") format(\"woff\"),url(\"https://use.typekit.net/af/d03e48/000000000000000077359df2/30/a?primer=7fa3915bdafdf03041871920a205bef951d72bf64dd4c4460fb992e3ecc3a862&fvd=n5&v=3\") format(\"opentype\"); font-display: auto; font-style: normal; font-weight: 500; font-stretch: normal; } body { font-family: brandon-grotesque,sans-serif; } .text-sm { font-size: 18px; color: #333 }","ratingIconColor":"#b48c41","translations":[{"language":"en","item":{"loadMoreButton":"Load more","viewProductButton":"View product","readMoreButton":"Read more","recentlyFilterOptionName":"Recently","hasMediasFilterOptionName":"Has medias","isVerifiedPurchaseFilterOptionName":"Verified purchase","star5FilterOptionName":"5
3583stars","star4FilterOptionName":"4 stars","star3FilterOptionName":"3 stars","star2FilterOptionName":"2 stars","star1FilterOptionName":"1 star","filterTitle":"Filter by","emptyReviewHeading":"Currently no feedback or reviews available","emptyReviewMessage":"It looks like there are no reviews available for this item at the moment. Be the first to share your thoughts and experiences!","mostHelpfulFilterOptionName":"Most helpful","reviewsCount_zero":"No reviews","reviewsCount_one":"{{reviewsCount}} review","reviewsCount_other":"{{reviewsCount}} reviews","productReviewsTabName_zero":"Product Reviews","productReviewsTabName_one":"Product Reviews","productReviewsTabName_other":"Product Reviews ({{ reviewsCount }})","shopReviewsTabName_zero":"Shop Reviews","shopReviewsTabName_one":"Shop Reviews","shopReviewsTabName_other":"Shop Reviews ({{ reviewsCount }})","leaveAReviewButton":"Review our shop"}}],"borderRadius":4,"isViewProduct":true,"iconSpacing":4,"isSecureAuthorName":false,"isDisplayFilters":true,"isAverageRating":false,"source":"Latest","isDisplayCountry":true,"isDisplayDate":false,"dateTimeFormat":"[MMM] [DD], [YYYY]","isSubmissionAllowed":false,"tabColor":"#008068","buttonBackgroundColor":"#b48c41","buttonTextColor":"#ffffff","isDisplayShopReviews":false,"isDarkMode":false} 3584 ); 3585 3586</script>
3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 <style type="text/css"> 3596 3597 </style> 3598 3599 3600 3601</div><div id="shopify-block-AR2FMSW9nNERWcU9kV__6174324309569838175" class="shopify-block shopify-app-block"> 3602 3603 3604<div class="smile-shopify-init" 3605 data-channel-key="channel_X5fmHEm1Os8j2qX819NW7mFj" 3606 3607></div> 3608 3609 3610</div>
3610<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
3610 3611</body> 3612</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.