1<!doctype html> 2<html class="no-js" lang="en"><head> 3<!-- Start of Booster Apps Seo-0.1--><title>Search - Halouw Makeup Academy</title><meta name="description" content="Find products at Halouw Makeup Academy." />
3<script type="application/ld+json"> 4 { 5 "@context": "https://schema.org", 6 "@type": "WebSite", 7 "name": "Halouw Makeup Academy", 8 "url": "https://www.halouw.co.za", 9 "potentialAction": { 10 "@type": "SearchAction", 11 "query-input": "required name=query", 12 "target": "https://www.halouw.co.za/search?q={query}" 13 } 14 } 15</script>
15<!-- end of Booster Apps SEO --> 16 17 <!-- Google Tag Manager -->
18<script> 19window.dataLayer = window.dataLayer || []; 20</script>
vendor: 1 bytes, line 20
20
21<script>
vendor: 327 bytes, lines 21-25
21(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 22new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 23j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 24'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 25})(window,document,'script','dataLayer','
25GTM-W2M2MZ6
vendor: 3 bytes, line 25
25');
25</script>
25 26<!-- End Google Tag Manager --> 27 <meta charset="utf-8"> 28 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 29 <meta name="viewport" content="width=device-width,initial-scale=1"> 30 <meta name="theme-color" content="#fd74a1"><link rel="canonical" href="https://www.halouw.co.za/search"><!-- ======================= Pipeline Theme V6.1.3 ========================= --> 31 32 <link rel="preconnect" href="https://cdn.shopify.com" crossorigin> 33 <link rel="preconnect" href="https://fonts.shopify.com" crossorigin> 34 <link rel="preconnect" href="https://monorail-edge.shopifysvc.com" crossorigin> 35 36 37 <link rel="preload" href="//www.halouw.co.za/cdn/shop/t/7/assets/lazysizes.js?v=111431644619468174291695974606" as="script"> 38 <link rel="preload" href="//www.halouw.co.za/cdn/shop/t/7/assets/vendor.js?v=159073106423563084681695974606" as="script"> 39 <link rel="preload" href="//www.halouw.co.za/cdn/shop/t/7/assets/theme.js?v=136040619869227593341695974606" as="script"> 40 <link rel="preload" href="//www.halouw.co.za/cdn/shop/t/7/assets/theme.css?v=151842951827324329991773896006" as="style"> 41 42 43<link rel="shortcut icon" href="//www.halouw.co.za/cdn/shop/files/HALOUW_LOGO_32x32.png?v=1669045552" type="image/png"><!-- Title and description ================================================ --> 44 45 46<!-- /snippets/social-meta-tags.liquid --><meta property="og:site_name" content="Halouw Makeup Academy"> 47<meta property="og:url" content="https://www.halouw.co.za/search"> 48<meta property="og:title" content="Search"> 49<meta property="og:type" content="website"> 50<meta property="og:description" content="Halouw Makeup Academy"> 51 52 53<meta name="twitter:site" content="@"> 54<meta name="twitter:card" content="summary_large_image"> 55<meta name="twitter:title" content="Search"> 56<meta name="twitter:description" content="Halouw Makeup Academy"> 57<!-- CSS ================================================================== --> 58 59 <link href="//www.halouw.co.za/cdn/shop/t/7/assets/font-settings.css?v=138023225225891350791767591237" rel="stylesheet" type="text/css" media="all" /> 60 61 62<style data-shopify> 63 64:root { 65/* ================ Product video ================ */ 66 67---color_video_bg: #f2f2f2; 68 69 70/* ================ Color Variables ================ */ 71 72/* === Backgrounds ===*/ 73---color-bg: #ffffff; 74---color-bg-accent: #ffffff; 75 76/* === Text colors ===*/ 77---color-text-dark: #000000; 78---color-text: #000000; 79---color-text-light: #4d4d4d; 80 81/* === Bright color ===*/ 82---color-primary: #fd74a1; 83---color-primary-hover: #ff256c; 84---color-primary-fade: rgba(253, 116, 161, 0.05); 85---color-primary-fade-hover: rgba(253, 116, 161, 0.1);---color-primary-opposite: #ffffff; 86 87/* === Secondary/link Color ===*/ 88---color-secondary: #fd74a1; 89---color-secondary-hover: #ff256c; 90---color-secondary-fade: rgba(253, 116, 161, 0.05); 91---color-secondary-fade-hover: rgba(253, 116, 161, 0.1);---color-secondary-opposite: #000000; 92 93/* === Shades of grey ===*/ 94---color-a5: rgba(0, 0, 0, 0.05); 95---color-a10: rgba(0, 0, 0, 0.1); 96---color-a20: rgba(0, 0, 0, 0.2); 97---color-a35: rgba(0, 0, 0, 0.35); 98---color-a50: rgba(0, 0, 0, 0.5); 99---color-a80: rgba(0, 0, 0, 0.8); 100---color-a90: rgba(0, 0, 0, 0.9); 101---color-a95: rgba(0, 0, 0, 0.95); 102 103 104/* ================ Inverted Color Variables ================ */ 105 106---inverse-bg: #fd74a1; 107---inverse-bg-accent: #ffffff; 108 109/* === Text colors ===*/ 110---inverse-text-dark: #ffffff; 111---inverse-text: #ffffff; 112---inverse-text-light: #fed5e3; 113 114/* === Bright color ===*/ 115---inverse-primary: #fd74a1; 116---inverse-primary-hover: #ff256c; 117---inverse-primary-fade: rgba(253, 116, 161, 0.05); 118---inverse-primary-fade-hover: rgba(253, 116, 161, 0.1);---inverse-primary-opposite: #000000; 119 120 121/* === Second Color ===*/ 122---inverse-secondary: #fd74a1; 123---inverse-secondary-hover: #ff256c; 124---inverse-secondary-fade: rgba(253, 116, 161, 0.05); 125---inverse-secondary-fade-hover: rgba(253, 116, 161, 0.1);---inverse-secondary-opposite: #000000; 126 127 128/* === Shades of grey ===*/ 129---inverse-a5: rgba(255, 255, 255, 0.05); 130---inverse-a10: rgba(255, 255, 255, 0.1); 131---inverse-a20: rgba(255, 255, 255, 0.2); 132---inverse-a35: rgba(255, 255, 255, 0.3); 133---inverse-a80: rgba(255, 255, 255, 0.8); 134---inverse-a90: rgba(255, 255, 255, 0.9); 135---inverse-a95: rgba(255, 255, 255, 0.95); 136 137 138/* === Account Bar ===*/ 139---color-announcement-bg: #fd74a1; 140---color-announcement-text: #ffffff; 141 142/* === Nav and dropdown link background ===*/ 143---color-nav: #ffffff; 144---color-nav-text: #000000; 145---color-nav-border: #fd74a1; 146---color-nav-a10: rgba(0, 0, 0, 0.1); 147---color-nav-a50: rgba(0, 0, 0, 0.5); 148 149/* === Site Footer ===*/ 150---color-footer-bg: #f7c1d3; 151---color-footer-text: #000000; 152---color-footer-a5: rgba(0, 0, 0, 0.05); 153---color-footer-a15: rgba(0, 0, 0, 0.15); 154---color-footer-a90: rgba(0, 0, 0, 0.9); 155 156/* === Products ===*/ 157---product-grid-aspect-ratio: 100%; 158 159/* === Product badges ===*/ 160---color-badge: #ffffff; 161---color-badge-text: #000000; 162 163/* === disabled form colors ===*/ 164---color-disabled-bg: #e6e6e6; 165---color-disabled-text: #a6a6a6; 166 167---inverse-disabled-bg: #fd82aa; 168---inverse-disabled-text: #fea5c2; 169 170/* === Button Radius === */ 171---button-radius: 0px; 172 173 174/* ================ Typography ================ */ 175 176---font-stack-body: Montserrat, sans-serif; 177---font-style-body: normal; 178---font-weight-body: 400; 179---font-weight-body-bold: 500; 180---font-adjust-body: 1.1; 181 182---font-stack-heading: Montserrat, sans-serif; 183---font-style-heading: normal; 184---font-weight-heading: 600; 185---font-weight-heading-bold: 700; 186---font-adjust-heading: 1.25; 187 188 ---font-heading-space: 1px; 189 ---font-heading-caps: uppercase; 190 191---font-stack-accent: Montserrat, sans-serif; 192---font-style-accent: normal; 193---font-weight-accent: 400; 194---font-weight-accent-bold: 500; 195---font-adjust-accent: 1.25; 196 197---ico-select: url('//www.halouw.co.za/cdn/shop/t/7/assets/ico-select.svg?v=85245982174409626761695974606'); 198 199---url-zoom: url('//www.halouw.co.za/cdn/shop/t/7/assets/cursor-zoom.svg?v=62094751757162256821695974606'); 200---url-zoom-2x: url('//www.halouw.co.za/cdn/shop/t/7/assets/cursor-zoom-2x.svg?v=75342415213450007151695974606'); 201 202 203 204}
204 205 206</style> 207 208 <link href="//www.halouw.co.za/cdn/shop/t/7/assets/theme.css?v=151842951827324329991773896006" rel="stylesheet" type="text/css" media="all" /> 209 210
210<script> 211 document.documentElement.className = document.documentElement.className.replace('no-js', 'js'); 212 let root = '/'; 213 if (root[root.length - 1] !== '/') { 214 root = `${root}/`; 215 } 216 var theme = { 217 routes: { 218 root_url: root, 219 cart: '/cart', 220 cart_add_url: '/cart/add', 221 product_recommendations_url: '/recommendations/products' 222 }, 223 assets: { 224 photoswipe: '//www.halouw.co.za/cdn/shop/t/7/assets/photoswipe.js?v=92904272307011895101695974606', 225 smoothscroll: '//www.halouw.co.za/cdn/shop/t/7/assets/smoothscroll.js?v=37906625415260927261695974606', 226 swatches: '//www.halouw.co.za/cdn/shop/t/7/assets/swatches.json?v=87416409530110360411755502652', 227 noImage: '//www.halouw.co.za/cdn/shopifycloud/storefront/assets/no-image-2048-a2addb12.gif', 228 base: '//www.halouw.co.za/cdn/shop/t/7/assets/' 229 }, 230 strings: { 231 swatchesKey: "Color, Colour", 232 addToCart: "Add to Cart", 233 estimateShipping: "Estimate shipping", 234 noShippingAvailable: "We do not ship to this destination.", 235 free: "Free", 236 from: "From", 237 preOrder: "Pre-order", 238 soldOut: "Sold Out", 239 sale: "Sale", 240 subscription: "Subscription", 241 unavailable: "Unavailable", 242 unitPrice: "Unit price", 243 unitPriceSeparator: "per", 244 stockout: "All available stock is in cart", 245 products: "Products", 246 pages: "Pages", 247 collections: "Collections", 248 resultsFor: "Results for", 249 noResultsFor: "No results for", 250 articles: "Articles" 251 }, 252 settings: { 253 badge_sale_type: "percentage", 254 search_products: true, 255 search_collections: true, 256 search_pages: true, 257 search_articles: true, 258 animate_hover: true, 259 animate_scroll: true 260 }, 261 info: { 262 name: 'pipeline' 263 }, 264 moneyFormat: "R {{amount}}", 265 version: '6.1.3' 266 } 267 let windowInnerHeight = window.innerHeight; 268 document.documentElement.style.setProperty('--full-screen', `${windowInnerHeight}px`); 269 document.documentElement.style.setProperty('--three-quarters', `${windowInnerHeight * 0.75}px`); 270 document.documentElement.style.setProperty('--two-thirds', `${windowInnerHeight * 0.66}px`); 271 document.documentElement.style.setProperty('--one-half', `${windowInnerHeight * 0.5}px`); 272 document.documentElement.style.setProperty('--one-third', `${windowInnerHeight * 0.33}px`); 273 document.documentElement.style.setProperty('--one-fifth', `${windowInnerHeight * 0.2}px`); 274 275 window.lazySizesConfig = window.lazySizesConfig || {}; 276 window.lazySizesConfig.loadHidden = false; 277 </script>
277<!-- Theme Javascript ============================================================== --> 278
278<script src="//www.halouw.co.za/cdn/shop/t/7/assets/lazysizes.js?v=111431644619468174291695974606" async="async"></script>
278 279
279<script src="//www.halouw.co.za/cdn/shop/t/7/assets/vendor.js?v=159073106423563084681695974606" defer="defer"></script>
279 280
280<script src="//www.halouw.co.za/cdn/shop/t/7/assets/theme.dev.js?v=38777241853957454101773896055" defer="defer"></script>
280 281 282
282<script> 283 (function () { 284 function onPageShowEvents() { 285 if ('requestIdleCallback' in window) { 286 requestIdleCallback(initCartEvent) 287 } else { 288 initCartEvent() 289 } 290 function initCartEvent(){ 291 document.documentElement.dispatchEvent(new CustomEvent('theme:cart:init', { 292 bubbles: true 293 })); 294 } 295 }; 296 window.onpageshow = onPageShowEvents; 297 })(); 298 </script>
298 299 300
300<script type="text/javascript"> 301 if (window.MSInputMethodContext && document.documentMode) { 302 var scripts = document.getElementsByTagName('script')[0]; 303 var polyfill = document.createElement("script"); 304 polyfill.defer = true; 305 polyfill.src = "//www.halouw.co.za/cdn/shop/t/7/assets/ie11.js?v=144489047535103983231695974606"; 306 307 scripts.parentNode.insertBefore(polyfill, scripts); 308 } 309 </script>
309 310 311 <!-- Shopify app scripts =========================================================== --> 312
312<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
312<meta name="facebook-domain-verification" content="23xw64dmvao1fi1mhq5baawz36n11i"> 313<meta name="google-site-verification" content="qVWBHAddx4xc2AXIN5QLn-GQ-Xv5JS4agoN7M-9wxrY"> 314<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/67597861168/digital_wallets/dialog"> 315<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
315<script async="async" src="/checkouts/internal/preloads.js?locale=en-ZA"></script>
vendor: 1 bytes, line 315
315
316<script id="shopify-features" type="application/json">{"accessToken":"a35b1d3e9d122e8285d3fa6ba1feac29","betas":["rich-media-storefront-analytics"],"domain":"www.halouw.co.za","predictiveSearch":true,"shopId":67597861168,"locale":"en"}</script>
vendor: 1 bytes, line 316
316
317<script>var Shopify = Shopify || {}; 318Shopify.shop = "halouw-makeup-academy.myshopify.com"; 319Shopify.locale = "en"; 320Shopify.currency = {"active":"ZAR","rate":"1.0"}; 321Shopify.country = "ZA"; 322Shopify.theme = {"name":"Copy of Halouw Theme","id":161412284720,"schema_name":"Pipeline","schema_version":"6.1.3","theme_store_id":null,"role":"main"}; 323Shopify.theme.handle = "null"; 324Shopify.theme.style = {"id":null,"handle":null}; 325Shopify.cdnHost = "www.halouw.co.za/cdn"; 326Shopify.routes = Shopify.routes || {}; 327Shopify.routes.root = "/"; 328Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 329Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 330Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 331Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 331
331
332<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 332
332
333<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 333
333
334<script> 335 window.Shopify = window.Shopify || {}; 336 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 337 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 338 window.Shopify.SignInWithShop.eligible = true; 339</script>
vendor: 1 bytes, line 339
339
340<script id="shop-js-analytics" type="application/json">{"pageType":"search"}</script>
vendor: 1 bytes, line 340
340
341<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 341
341
342<script type="module"> 343 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 344 345 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 346 347</script>
vendor: 1 bytes, line 347
347
348<script> 349 window.Shopify = window.Shopify || {}; 350 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 351 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"]}; 352</script>
vendor: 1 bytes, line 352
352
353<script>(function() { 354 var isLoaded = false; 355 function asyncLoad() { 356 if (isLoaded) return; 357 isLoaded = true; 358 var urls = ["https:\/\/static2.rapidsearch.dev\/resultpage.js?shop=halouw-makeup-academy.myshopify.com","https:\/\/cstt-app.herokuapp.com\/get_script\/f58289ac0ade11ee9b514637a55e8e6c.js?v=767245\u0026shop=halouw-makeup-academy.myshopify.com","https:\/\/scct-app.herokuapp.com\/get_script\/0d1626c20af411eeb1017e5adcd05770.js?shop=halouw-makeup-academy.myshopify.com","https:\/\/cdn.autoketing.org\/sdk-cdn\/recommended\/dist\/top-pin-embed.js?t=1688378661324024233\u0026shop=halouw-makeup-academy.myshopify.com","\/\/cdn.shopify.com\/proxy\/3f2835f2eadf129963698a1ee37af6f7cf692732fbd21e997f4ba65b94483481\/bucket.useifsapp.com\/theme-files-min\/js\/ifs-script-tag-min.js?v=2\u0026shop=halouw-makeup-academy.myshopify.com\u0026sp-cache-control=cHVibGljLCBtYXgtYWdlPTkwMA"]; 359 for (var i = 0; i < urls.length; i++) { 360 var s = document.createElement('script'); 361 s.type = 'text/javascript'; 362 s.async = true; 363 s.src = urls[i]; 364 var x = document.getElementsByTagName('script')[0]; 365 x.parentNode.insertBefore(s, x); 366 } 367 }; 368 if(window.attachEvent) { 369 window.attachEvent('onload', asyncLoad); 370 } else { 371 window.addEventListener('load', asyncLoad, false); 372 } 373})();</script>
vendor: 1 bytes, line 373
373
374<script id="__st">var __st={"a":67597861168,"offset":7200,"reqid":"fd01e02b-bd70-4827-9f27-ba0982228056-1791260326","pageurl":"www.halouw.co.za\/search","u":"c4a053d32613","p":"searchresults"};</script>
vendor: 1 bytes, line 374
374
375<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 375
375
376<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 376
376
377<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//www.halouw.co.za/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 377
377
378<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 = "//www.halouw.co.za/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>
378<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 378
378
379<script> 380 window.Shopify = window.Shopify || {}; 381 window.Shopify.MCP = window.Shopify.MCP || {}; 382 window.Shopify.MCP.enabled = true; 383 window.Shopify.MCP.shop = "halouw-makeup-academy.myshopify.com"; 384 window.Shopify.MCP.mcpEndpoint = "https:\/\/www.halouw.co.za\/api\/mcp"; 385 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"]}}]; 386</script>
vendor: 1 bytes, line 386
386
387<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("\/\/www.halouw.co.za\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 388</script>
vendor: 1 bytes, line 388
388
389<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://www.halouw.co.za/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 390</script>
vendor: 1 bytes, line 390
390
391<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 392 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); 393</script>
vendor: 1 bytes, line 393
393
394<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})}})); 395</script>
395 396
397<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
397 398 399 400 401
401<script type="text/javascript"> 402 window.RapidSearchAdmin = false; 403 window.rpsMarketInfo = { id: 38831161648 }; 404 </script>
404 405 406<!-- BEGIN app block: shopify://apps/monster-cart-upsell-free-gifts/blocks/app-embed/a1b8e58a-bf1d-4e0f-8768-a387c3f643c0 -->
406<script> 407 window.mu_version = 1.8 408 409 window.mu_currencies = [{"name": "South African Rand", "iso_code": "ZAR", "symbol": "R"},]; 410 window.mu_origin = 'www.halouw.co.za'; 411 window.mu_myshopify_domain = 'halouw-makeup-academy.myshopify.com'; 412 // Shopify App Proxy base for this APP (prod and hosted-dev register 413 // different subpaths so both can coexist on one store). Rewritten per 414 // app by ext-switch-ns at deploy time; the cart bundle reads it at 415 // call time (old_code/components/cart/ApiAdapter.js). 416 window.mu_proxy_base = 'https://monsterupsells.com/api'; 417 window.mu_cart_currency= 'ZAR'; 418 window.mu_cart_items = []; 419 window.mu_money_format = 'R {{amount}}'; 420 421 window.mu_stop_cart_page = true 422 423 424 425 426 427 428 429 430 431 window.mu_bag_selector = []; 432 433 434 window.mu_hide_when_opened = ""; 435 436 // Stub: defined synchronously so callers can detect `typeof window.monster_refresh === 'function'` 437 // before the cart bundle loads. The real implementation overwrites this once the app renders. 438 window.monster_refresh = function () { 439 console.log("MU: monster_refresh called before the app finished rendering â the function won't work until the cart is fully loaded."); 440 }; 441</script>
441<script> 442 // custom code here 443</script>
443� 444
444<script>console.log("%cMU: Version 1 in use", "color: white; background: #dc3545; padding: 2px 6px; border-radius: 3px;");</script>
444 445
445<script async src="https://cdn.shopify.com/extensions/01a107a0-27af-7b7d-ac0f-b4e33b62c927/monster-upsells-1016/assets/webfont.js"></script>
445 446 447 <link href="https://cdn.shopify.com/extensions/01a107a0-27af-7b7d-ac0f-b4e33b62c927/monster-upsells-1016/assets/cart.css" rel="stylesheet"> 448
448<script type="text/javascript"> 449 window.assetsPath = "https://cdn.shopify.com/extensions/01a107a0-27af-7b7d-ac0f-b4e33b62c927/monster-upsells-1016/assets/cart_renderer.js".split("cart_renderer.js")[0] 450 </script>
450 451
451<script async src="https://cdn.shopify.com/extensions/01a107a0-27af-7b7d-ac0f-b4e33b62c927/monster-upsells-1016/assets/cart_renderer.js"></script>
451 452 453 454 455 456<!-- END app block --><!-- BEGIN app block: shopify://apps/rapid-search-bar-filter/blocks/script/bd827795-feaa-41a8-9219-2b83f238aa7d --> 457 458
459<script type="text/javascript"> 460 document.documentElement.classList.add('rps-app-active'); 461</script>
461 462
463<script type="text/javascript"> 464 try { 465 window.RapidSearchSettings = {"last_import":"2026-09-26T20:40:38.219Z","expiration_date":null,"autocomplete_price_layout":"vertical","autocomplete_image_size":60,"badge_settings_auto":{"discount_badge":{"enabled":true},"new_badge":{"enabled":true,"threshold":30},"results_page_discount_badge":{"enabled":true},"results_page_new_badge":{"enabled":true,"threshold":30},"stock_status":"instock"},"colors":{"discount_badge_background":"#ff5189","new_badge_background":"#fd74a1","price":"#fd74a1","search_results_price":"#fd74a1","search_results_price_hover":"#ff5189","sticky_widget_icon":"#fd74a1"},"currency_format":{"ZAR":"R {{amount}}","default":"R {{amount}}"},"current_plan":"shopify_basic_1","data_index":"es_sy4_client_5","default_currency":"ZAR","default_customer_group_id":0,"default_domain":"https:\/\/www.halouw.co.za","default_language":"en","enabled":true,"enabled_languages":["en"],"enabled_resultpage":true,"fuzzy_search":true,"replace_hyphens_with_spaces":true,"hide_prices_loggedout":false,"install_date":"2023-06-14T17:11:15.354Z","language":"","limit_exceeded":true,"mobile_optimized":true,"multiple_languages":false,"out_of_stock_show_addtocart":true,"out_of_stock_show_notify":false,"out_of_stock_visibility":"mixed","plan_name":"professional","resultpage_filters":[{"id":"category","title":"","enabled":true,"type":"default","appearance":"text"},{"id":"product_type","title":"","enabled":false,"type":"default","appearance":"text"},{"id":"price","title":"","enabled":true,"type":"default","appearance":"text"},{"id":"brand","title":"","enabled":true,"type":"default","appearance":"text"},{"id":"tags","title":"Tag","enabled":false,"type":"tag","appearance":"text","settings":{"mode":"show_all","values":[]}},{"id":"availability","title":"","enabled":true,"type":"default","appearance":"text"},{"appearance":"text","id":"Select your option","title":"","enabled":true,"type":"attribute"},{"appearance":"swatch","id":"Color","title":"","enabled":true,"type":"attribute"},{"appearance":"text","id":"Size","title":"","enabled":true,"type":"attribute"},{"appearance":"text","id":"Duration","title":"","enabled":true,"type":"attribute"},{"appearance":"text","id":"Halouw Pro kit","title":"","enabled":true,"type":"attribute"},{"appearance":"text","id":"Pro Kit","title":"","enabled":true,"type":"attribute"},{"enabled":true,"id":"False Eyelashes Styles","title":"","type":"attribute","appearance":"text"},{"enabled":true,"id":"Ultimate Pro Package","title":"","type":"attribute","appearance":"text"},{"enabled":true,"id":"Halouw Primer","title":"","type":"attribute","appearance":"text"}],"resultpage_hide_parent_products":false,"resultpage_id":120540266800,"resultpage_mobile_optimized":false,"resultpage_pagination_type":"infinite_loading","resultpage_price_display_mode":"only_gross","resultpage_product_image_height":"","resultpage_product_image_width":"","resultpage_snapshot_alignment":"left","resultpage_snapshot_order":["image","name","price"],"resultpage_url":"pages\/rapid-search-results","show_child_data":true,"search_subcategory":false,"shopify_public_settings":{"csb_migrated":true,"csb_selectors_metafield_id":30341502599472,"theme_settings":{"137626943792":{"collection_liquid_file":"sections\/main-collection-product-grid.liquid","collection_page_enabled":false,"created_at":"2022-11-08T06:51:08.000Z","name":"Dawn","pagination_type":"infinite_loading","product_card_content_alignment":"left","product_card_design":"","product_card_order":["image","name","price"],"products_per_row":3,"rows_per_page":4,"search_liquid_file":"sections\/main-search.liquid","search_results_page_enabled":true,"search_results_page_search_bar_visibility":"show_always","theme_id":137626943792,"theme_store_id":887,"theme_version":2,"colors":{"results_page":{"product_original_price":"#8F8F8F","product_original_price_hover":"#8F8F8F","product_price":"#fd74a1","product_price_hover":"#ff5189","product_title":"#555555","product_title_hover":"#555555"}},"assets_updated":"2026-07-20T17:36:08.468Z"},"137627107632":{"collection_liquid_file":"sections\/collection.liquid","collection_page_enabled":false,"created_at":"2022-11-08T06:56:57.000Z","name":"Halouw Theme","pagination_type":"infinite_loading","product_card_content_alignment":"left","product_card_design":"","product_card_order":["image","name","price"],"products_per_row":3,"rows_per_page":4,"search_liquid_file":"","search_results_page_enabled":true,"search_results_page_search_bar_visibility":"show_always","theme_id":137627107632,"theme_store_id":739,"theme_version":2,"colors":{"results_page":{"product_original_price":"#8F8F8F","product_original_price_hover":"#8F8F8F","product_price":"#fd74a1","product_price_hover":"#ff5189","product_title":"#5
46555555","product_title_hover":"#555555"}},"assets_updated":"2026-07-20T17:36:10.871Z"},"154582221104":{"collection_liquid_file":"sections\/collection.liquid","collection_page_enabled":false,"created_at":"2023-07-12T00:12:23.000Z","name":"Halouw Theme - Backup","pagination_type":"infinite_loading","product_card_content_alignment":"left","product_card_design":"","product_card_order":["image","name","price"],"products_per_row":3,"rows_per_page":4,"search_liquid_file":"","search_results_page_enabled":true,"search_results_page_search_bar_visibility":"show_always","theme_id":154582221104,"theme_store_id":739,"theme_version":2,"colors":{"results_page":{"product_original_price":"#8F8F8F","product_original_price_hover":"#8F8F8F","product_price":"#fd74a1","product_price_hover":"#ff5189","product_title":"#555555","product_title_hover":"#555555"}},"assets_updated":"2026-07-20T17:36:13.293Z"},"154697826608":{"collection_liquid_file":"sections\/main-collection-product-grid.liquid","collection_page_enabled":false,"created_at":"2023-07-13T06:22:26.000Z","name":"Dawn","pagination_type":"infinite_loading","product_card_content_alignment":"left","product_card_design":"","product_card_order":["image","name","price"],"products_per_row":3,"rows_per_page":4,"search_liquid_file":"sections\/main-search.liquid","search_results_page_enabled":true,"search_results_page_search_bar_visibility":"show_always","theme_id":154697826608,"theme_store_id":887,"theme_version":2,"colors":{"results_page":{"product_original_price":"#8F8F8F","product_original_price_hover":"#8F8F8F","product_price":"#fd74a1","product_price_hover":"#ff5189","product_title":"#555555","product_title_hover":"#555555"}},"assets_updated":"2026-07-20T17:36:15.958Z"},"154698744112":{"collection_liquid_file":"sections\/main-collection-product-grid.liquid","collection_page_enabled":false,"created_at":"2023-07-13T06:36:24.000Z","name":"Dawn","pagination_type":"infinite_loading","product_card_content_alignment":"left","product_card_design":"","product_card_order":["image","name","price"],"products_per_row":3,"rows_per_page":4,"search_liquid_file":"sections\/main-search.liquid","search_results_page_enabled":true,"search_results_page_search_bar_visibility":"show_always","theme_id":154698744112,"theme_store_id":887,"theme_version":2,"colors":{"results_page":{"product_original_price":"#8F8F8F","product_original_price_hover":"#8F8F8F","product_price":"#fd74a1","product_price_hover":"#ff5189","product_title":"#555555","product_title_hover":"#555555"}},"assets_updated":"2026-07-20T17:36:19.394Z"},"154699399472":{"collection_liquid_file":"sections\/collection.liquid","collection_page_enabled":false,"created_at":"2023-07-13T06:50:05.000Z","name":"Pipeline","pagination_type":"infinite_loading","product_card_content_alignment":"left","product_card_design":"","product_card_order":["image","name","price"],"products_per_row":3,"rows_per_page":4,"search_liquid_file":"","search_results_page_enabled":true,"search_results_page_search_bar_visibility":"show_always","theme_id":154699399472,"theme_store_id":739,"theme_version":2,"colors":{"results_page":{"product_original_price":"#8F8F8F","product_original_price_hover":"#8F8F8F","product_price":"#fd74a1","product_price_hover":"#ff5189","product_title":"#555555","product_title_hover":"#555555"}},"assets_updated":"2026-07-20T17:36:23.001Z"},"161412284720":{"collection_liquid_file":"sections\/collection.liquid","collection_page_enabled":false,"created_at":"2023-09-29T08:03:21.000Z","name":"Copy of Halouw Theme","pagination_type":"infinite_loading","product_card_content_alignment":"left","product_card_design":"","product_card_order":["image","name","price"],"products_per_row":3,"rows_per_page":4,"search_liquid_file":"","search_results_page_enabled":true,"search_results_page_search_bar_visibility":"show_always","theme_id":161412284720,"theme_store_id":739,"theme_version":2,"colors":{"results_page":{"product_original_price":"#8F8F8F","product_original_price_hover":"#8F8F8F","product_price":"#fd74a1","product_price_hover":"#ff5189","product_title":"#555555","product_title_hover":"#555555"}},"assets_updated":"2026-09-22T08:46:05.264Z"},"171386306864":{"collection_liquid_file":"sections\/collection.liquid","collection_page_enabled":false,"created_at":"2024-10-18T07:38:59.000Z","name":"Copy of Halouw Theme [18 Oct]","pagination_type":"infinite_loading","product_card_content_alignment":"left","product_card_design":"","product_card_order":["image","name","price"],"products_per_row":3,"rows_per_page":4,"search_liquid_file":"","search_results_page_enabled":true,"search_results_page_search_bar_visibility":"show_always","theme_id":171386306864,"theme_store_id":739,"theme_version":2,"colors":{"results_page":{"product_original_price":"#8F8F8F","product_original_price_hover":"#8F8F8F","product_price":"#fd74a1","product_price_hover":"#ff5189","product_title":"#5
46555555","product_title_hover":"#555555"}},"assets_updated":"2026-07-20T17:36:26.779Z"},"171860427056":{"collection_liquid_file":"sections\/collection.liquid","collection_page_enabled":false,"created_at":"2024-11-08T09:43:14.000Z","name":"Copy of Copy of Halouw Theme","pagination_type":"infinite_loading","product_card_content_alignment":"left","product_card_design":"","product_card_order":["image","name","price"],"products_per_row":3,"rows_per_page":4,"search_liquid_file":"","search_results_page_enabled":true,"search_results_page_search_bar_visibility":"show_always","theme_id":171860427056,"theme_store_id":739,"theme_version":2,"colors":{"results_page":{"product_original_price":"#8F8F8F","product_original_price_hover":"#8F8F8F","product_price":"#fd74a1","product_price_hover":"#ff5189","product_title":"#555555","product_title_hover":"#555555"}},"assets_updated":"2026-07-20T17:36:30.374Z"},"171863015728":{"collection_liquid_file":"sections\/collection.liquid","collection_page_enabled":false,"created_at":"2024-11-08T12:32:18.000Z","name":"Copy of Copy of Halouw Theme","pagination_type":"infinite_loading","product_card_content_alignment":"left","product_card_design":"","product_card_order":["image","name","price"],"products_per_row":3,"rows_per_page":4,"search_liquid_file":"","search_results_page_enabled":true,"search_results_page_search_bar_visibility":"show_always","theme_id":171863015728,"theme_store_id":739,"theme_version":2,"colors":{"results_page":{"product_original_price":"#8F8F8F","product_original_price_hover":"#8F8F8F","product_price":"#fd74a1","product_price_hover":"#ff5189","product_title":"#555555","product_title_hover":"#555555"}},"assets_updated":"2026-07-20T17:36:33.353Z"},"175750709552":{"collection_liquid_file":"sections\/collection.liquid","collection_page_enabled":false,"created_at":"2025-04-22T06:38:00.000Z","name":"Copy of Halouw Theme [22 April 2025]","pagination_type":"infinite_loading","product_card_content_alignment":"left","product_card_design":"","product_card_order":["image","name","price"],"products_per_row":3,"rows_per_page":4,"search_liquid_file":"","search_results_page_enabled":true,"search_results_page_search_bar_visibility":"show_always","theme_id":175750709552,"theme_store_id":739,"theme_version":2,"colors":{"results_page":{"product_original_price":"#8F8F8F","product_original_price_hover":"#8F8F8F","product_price":"#fd74a1","product_price_hover":"#ff5189","product_title":"#555555","product_title_hover":"#555555"}},"assets_updated":"2026-07-20T17:36:36.292Z"}}},"shop_owner":"Louise Volschenk","show_autocomplete_manufacturer":"hidden","show_autocomplete_sku":false,"show_child_products":false,"show_horizontal_category_menu":true,"show_horizontal_category_menu_images":true,"show_layerbox":false,"show_original_price":true,"show_parent_categories":false,"show_results_heading":{"desktop":true,"mobile":false},"sorting_function":"","texts":{},"theme":{"id":161412284720,"name":"Copy of Halouw Theme","theme_store_id":null,"shopifyThemeVersion":2},"two_column_layout":true,"webshop_engine":"shopify","weights":{"attributes":1,"description":1,"manufacturer":1,"metafields":0,"model":5,"parameters":1,"product_name":5,"product_type":5,"short_description":1,"sku":5,"tags":5},"whitelabel":false,"color_family":{"Beige":{"colors":["beige","antique white","cornsilk","floral white","seashell","old lace","ivory","linen","lavender blush","misty rose"],"familyColor":"#F5F5DC","familyName":"Beige"},"Black":{"colors":["black"],"familyColor":"#000000","familyName":"Black"},"Blue":{"colors":["blue","light blue","medium blue","dark blue","midnight blue","steel blue","light steel blue","sky blue","light sky blue","deep sky blue","cadet blue","cornflower blue","powder blue","dodger blue","royal blue","navy blue"],"familyColor":"#0000FF","familyName":"Blue"},"Brown":{"colors":["brown","sandy brown","saddle brown","rosy brown","burlywood","blanched almond","bisque","chocolate","maroon","navajo white","peru","sienna","tan","wheat"],"familyColor":"#A52A2A","familyName":"Brown"},"Cyan":{"colors":["cyan","light cyan","dark cyan","turquoise","medium turquoise","dar
465k turquoise","pale turquoise","aqua","azure","alice blue","mint cream","teal"],"familyColor":"#00FFFF","familyName":"Cyan"},"Gold":{"colors":["gold","goldenrod","darkgoldenrod","lightgoldenrodyellow","palegoldenrod"],"familyColor":"#FFD700","familyName":"Gold"},"Gray":{"colors":["gray","grey","light gray","dim gray","dark gray","slate gray","light slate gray","dark slate gray","silver","gainsboro"],"familyColor":"#808080","familyName":"Gray"},"Green":{"colors":["green","light green","dark green","lime","lime green","green yellow","yellow green","spring green","medium spring green","sea green","medium sea green","dark sea green","aquamarine","medium aquamarine","olive","olive drab","dark olive green","forest green","lawn green","pale green","chartreuse","honeydew"],"familyColor":"#008000","familyName":"Green"},"Orange":{"colors":["orange","dark orange","coral","tomato","orangered"],"familyColor":"#FFA500","familyName":"Orange"},"Pink":{"colors":["pink","light pink","hot pink","deep pink"],"familyColor":"#FFC0CB","familyName":"Pink"},"Purple":{"colors":["purple","medium purple","rebecca purple","magenta","dark magenta","violet","dark violet","blue violet","pale violet red","medium violet red","slate blue","medium slate blue","dark slate blue","orchid","medium orchid","dark orchid","lavender","thistle","plum","fuchsia","indigo"],"familyColor":"#800080","familyName":"Purple"},"Red":{"colors":["red","dark red","indian red","salmon","light salmon","dark salmon","light coral","crimson","red brick","
465scarlet"],"familyColor":"#FF0000","familyName":"Red"},"White":{"colors":["white","snow","whitesmoke","ghostwhite"],"familyColor":"#FFFFFF","familyName":"White"},"Yellow":{"colors":["yellow","light yellow","lemon chiffon","moccasin"],"familyColor":"#FFFF00","familyName":"Yellow"},"others":{"colors":["light brown","dark brown","cotton candy","xoxo","bubbles","elle","hollywood","jelly","kiki","lola","lulu","petune","pinky","riana","tequila","lisa","shiraz","uptown girl","bare bliss","light beige","skin beige","warm beige","matte nude","almond beige","natural","perfect honey","perfect spice","perfect bronze","espresso","coco butter","translucent","nude","sand","caramel","tanned","hello dolly","cheeky","coral dream","fancy face","love struck","peaches","trendsetter","inge","rojean","jasmin","angelique","anja","odette","hannie","brigitte","natasha","lolla","catherine","endria","melda","rula","elizabeth","pikkie","ammi","anneke","ella","chantelle","magic","bosslady","berry nice","cupid","diva","sassy","two-two","ginger snap","nudes","reds","plums","mocha"],"familyColor":"#ffffff","familyName":"Other"}}}; 466 } catch (error) { 467 console.error('Error setting Rapid Search settings:', error); 468 } 469</script>
469 470
471<script type="text/javascript"> 472 window.rpsMarketInfo = { id: 38831161648 }; 473</script>
473 474 475 476
477<script id="rps-shopify-extensions-cdn-setup"> 478 (function () { 479 try { 480 const url = "https://cdn.shopify.com/extensions/01a0f221-d33c-7f04-a210-d57fd63e6029/rapid-search-421/assets/resultpage.js?shop=halouw-makeup-academy.myshopify.com"; 481 const match = url.match(/^(.*\/assets\/)/); 482 483 if (match) { 484 window.RapidSearchShopifyExtensionsCdnBaseUrl = match[1]; 485 } 486 } catch (error) { 487 console.error('Error setting Shopify CDN base URL:', error); 488 } 489 })(); 490</script>
490 491
492<script type="text/javascript" defer src="https://cdn.shopify.com/extensions/01a0f221-d33c-7f04-a210-d57fd63e6029/rapid-search-421/assets/resultpage.js?shop=halouw-makeup-academy.myshopify.com"></script>
492 493 494 495<!-- END app block --><!-- BEGIN app block: shopify://apps/fbp-fast-bundle/blocks/fast_bundle/9e87fbe2-9041-4c23-acf5-322413994cef --> 496 497 498 499<!-- BEGIN app snippet: fast_bundle --> 500 501 502 503 504 505
506<script> 507 if (Math.random() < 0.05) { 508 window.FastBundleRenderTimestamp = Date.now(); 509 } 510 511 // Main initialization 512 const apiURL = 'https://api.fastbundle.co'; 513 const sdkBaseUrl = 'https://sdk.fastbundle.co'; 514 const rbrCartUrl = `${apiURL}/scripts/cart.js`; 515 const mainAppUrl = 'https://cdn.shopify.com/extensions/01a107a2-94a5-713f-8aee-cfaeb8a20d0c/fast-bundle-product-bundles-167/assets/main.min.js' 516 const vendorUrl = 'https://cdn.shopify.com/extensions/01a107a2-94a5-713f-8aee-cfaeb8a20d0c/fast-bundle-product-bundles-167/assets/vendor.js'; 517 const styleUrl = 'https://cdn.shopify.com/extensions/01a107a2-94a5-713f-8aee-cfaeb8a20d0c/fast-bundle-product-bundles-167/assets/main.min.css'; 518 const legacyAppUrl = `${apiURL}/react-src/static/js/main.min.js`; 519 const previousScriptLoaded = Boolean(document.querySelectorAll(`script[src*="${sdkBaseUrl}"]`).length) 520 const previousLegacyScriptLoaded = Boolean(document.querySelectorAll(`script[src*="${legacyAppUrl}"]`).length) 521 522 if (!(previousScriptLoaded || previousLegacyScriptLoaded)) { 523 const FastBundleConf = {"enable_bap_modal":false,"frontend_version":"1.29.06","storefront_record_submitted":true,"use_shopify_prices":false,"currencies":[{"id":2591799931,"code":"ZAR","conversion_fee":1.
5230,"roundup_number":0.0,"rounding_enabled":true}],"is_active":true,"override_product_page_forms":false,"allow_funnel":false,"do_not_track_bundle_visibility":false,"translations":[],"pid":"","bap_ids":[],"active_bundles_count":0,"use_color_swatch":false,"use_shop_price":false,"dropdown_color_swatch":true,"option_config":null,"enable_subscriptions":false,"has_fbt_bundle":false,"use_shopify_function_discount":true,"use_bundle_builder_modal":true,"use_cart_hidden_attributes":true,"bap_override_fetch":false,"invalid_bap_override_fetch":true,"volume_discount_add_on_override_fetch":true,"pmm_new_design":true,"merged_mix_and_match":false,"change_vd_product_picture":true,"buy_it_now":true,"rgn":696056,"baps":{},"has_multilingual_permission":false,"use_vd_templating":true,"use_payload_variant_id_in_fetch_override":false,"use_compare_at_price":false,"storefront_access_token":"3cce5287cd5ac57b3099177bec15f969","serverless_vd_display":false,"serverless_vd_discount":false,"serverless_vd_auto_detection":false,"serverless_fixed_display":false,"serverless_add_on_display":false,"serverless_mix_and_match_display":false,"serverless_fixed_discount":false,"products_with_add_on":{},"collections_with_add_on":{},"ssr_add_on":false,"has_required_plan":false,"bundleBox":{"id":115577,"bundle_page_enabled":true,"bundle_page_style":null,"currency":"ZAR","currency_format":"R %s","percentage_format":"%s%","show_sold_out":true,"track_inventory":true,"shop_page_external_script":"","page_external_script":"","shop_page_style":null,"shop_page_title":null,"shop_page_description":null,"app_version":"v2","show_logo":true,"show_info":false,"money_format":"amount","tax_factor":1.0,"primary_locale":"en","discount_code_prefix":"BUNDLE","is_active":true,"created":"2025-04-22T07:11:03.899339Z","updated":"2025-04-22T08:19:52.907696Z","title":"Don't miss this offer","style":".rbr-bap-new-footer {\n al
523ign-items: center !important;\n}","inject_selector":null,"mix_inject_selector":null,"fbt_inject_selector":null,"volume_inject_selector":null,"volume_variant_selector":null,"button_title":"Buy this bundle","bogo_button_title":"Buy {quantity} items","price_description":"Add bundle to cart | Save {discount}","version":"v2.3","bogo_version":"v1","nth_child":1,"redirect_to_cart":true,"column_numbers":3,"color":null,"btn_font_color":"white","add_to_cart_selector":null,"cart_info_version":"v2","button_position":"bottom","bundle_page_shape":"row","add_bundle_action":"cart-page","requested_bundle_action":null,"request_action_text":null,"cart_drawer_function":"","cart_drawer_function_svelte":"","theme_template":"light","external_script":"","pre_add_script":"","shop_external_script":"","shop_style":"","bap_inject_selector":"","bap_none_selector":"","bap_form_script":"","bap_button_selector":"","bap_style_object":{"standard":{"custom_code":{"main":{"custom_js":"","custom_css":""}},"product_detail":{"price_style":{"color":"#5e5e5e","fontSize":16,"fontFamily":""},"title_style":{"color":"#303030","fontSize":16,"fontFamily":""},"image_border":{"borderColor":"#e5e5e5"},"pluses_style":{"fill":"","width":""},"separator_line_style":{"backgroundColor":"#e5e5e5"},"variant_selector_style":{"color":"#000000","height":46,"backgroundColor":"#fafafa"}}},"mix_and_match":{"custom_code":{"main":{"custom_js":"","custom_css":""}},"product_detail":{"price_style":{"color":"#5e5e5e","fontSize":16,"fontFamily":""},"title_style":{"color":"#303030","fontSize":16,"fontFamily":""},"image_border":{"borderColor":"#e5e5e5"},"pluses_style":{"fill":"","width":""},"checkbox_style":{"checked":"","unchecked":"","checked_color":"#2c6ecb"},"quantities_style":{"color":"","backgroundColor":""},"product_card_style":{"checked_border":"","unchecked_border":"","checked_background":""},"separator_line_style":{"backgroundColor":"#e5e5e5"},"variant_selector_style":{"color":"#000000","height":46,"backgroundColor":"#fafafa"},"quantities_selector_style":{"color":"#000000","backgroundColor":"#fafafa"}}}},"bundles_page_style_object":null,"style_object":{"fbt":{"box":{"error":{"fill":"#D72C0D","color":"#D72C0D","fontSize":14,"fontFamily":"inherit","borderColor":"#E0B5B2","borderRadius":8,"backgroundColor":"#FFF4FA"},"title":{"color":"#191919","fontSize":22,"fontFamily":"inherit","fontWeight":600},"border":{"borderColor":"#CBCBCB","borderWidth":1,"borderRadius":12},"selected":{"borderColor":"#262626","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(38, 38, 38, 0.2)"}},"poweredBy":{"color":"#191919","fontSize":14,"fontFamily":"inherit","fontWeight":400},"background":{"backgroundColor":"#FFFFFF"},"fastBundle":{"color":"#262626","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"notSelected":{"borderColor":"rgba(203, 203, 203, 0.4)","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"}},"sellingPlan":{"color":"#262626","fontSize":18,"fontFamily":"inherit","fontWeight":400,"borderColor":"#262626","borderRadius":8,"backgroundColor":"transparent"}},"plus":{"style":{"fill":"#FFFFFF","backgroundColor":"#262626"}},"title":{"style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"alignment":{"textAlign":"left"}},"button":{"border":{"borderColor":"transparent","borderRadius":8},"background":{"backgroundColor":"#262626"},"button_label":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500},"button_position":{"position":"bottom"},"backgroundSecondary":{"backgroundColor":"rgba(38, 38, 38, 0.7)"},"button_labelSecondary":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500}},"design":{"main":{"design":"modern"}},"option":{"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit","fontWeight":500},"option_text_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":14,"fontFamily":"inherit"}},"innerBox":{"border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":8},"background":{"backgroundColor":"rgba(255, 255, 255, 0.4)"}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"soldOutBadge":{"background":{"backgroundColor":"#E8144B","borderTopRightRadius":8}},"total_section":{"text":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"border":{"borderRadius":8},"background":{"backgroundColor":"rgba(38, 38, 38, 0.05)"},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"}},"discount_badge":{"background":{"backgroundColor":"#E8144B","borderTopLeftRadius":8},"text_style":{"color":"#FFFFFF","fontSize":14,"fontFamily":"inherit"}},"product_detail":{"price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"image_border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":6},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"checkbox_style":{"checked_color":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"variant_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"},"quantities_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"}},"discount_options":{"applied":{"color":"#13A165","backgroundColor":"#E0FAEF"},"unApplied":{"color":"#5E5E5E","backgroundColor":"#F1F1F1"}},"collection_details":{"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"collection_image_border":{"borderColor":"rgba(203, 203, 203, 0.4)"}},"title_and_description":{"alignment":{"textAlign":"left"},"title_style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500}
523,"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400}}},"bogo":{"box":{"error":{"fill":"#D72C0D","color":"#D72C0D","fontSize":14,"fontFamily":"inherit","borderColor":"#E0B5B2","borderRadius":8,"backgroundColor":"#FFF4FA"},"title":{"color":"#191919","fontSize":22,"fontFamily":"inherit","fontWeight":600},"border":{"borderColor":"#CBCBCB","borderWidth":1,"borderRadius":12},"selected":{"borderColor":"#262626","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(38, 38, 38, 0.2)"}},"poweredBy":{"color":"#191919","fontSize":14,"fontFamily":"inherit","fontWeight":400},"background":{"backgroundColor":"#FFFFFF"},"fastBundle":{"color":"#262626","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"notSelected":{"borderColor":"rgba(203, 203, 203, 0.4)","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"}},"sellingPlan":{"color":"#262626","fontSize":18,"fontFamily":"inherit","fontWeight":400,"borderColor":"#262626","borderRadius":8,"backgroundColor":"transparent"}},"plus":{"style":{"fill":"#FFFFFF","backgroundColor":"#262626"}},"title":{"style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"alignment":{"textAlign":"left"}},"button":{"border":{"borderColor":"transparent","borderRadius":8},"background":{"backgroundColor":"#262626"},"button_label":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500},"button_position":{"position":"bottom"},"backgroundSecondary":{"backgroundColor":"rgba(38, 38, 38, 0.7)"},"button_labelSecondary":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500}},"design":{"main":{"design":"modern"}},"option":{"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit","fontWeight":500},"option_text_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":14,"fontFamily":"inherit"}},"innerBox":{"border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":8},"background":{"backgroundColor":"rgba(255, 255, 255, 0.4)"}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"soldOutBadge":{"background":{"backgroundColor":"#E8144B","borderTopRightRadius":8}},"total_section":{"text":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"border":{"borderRadius":8},"background":{"backgroundColor":"rgba(38, 38, 38, 0.05)"},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"}},"discount_badge":{"background":{"backgroundColor":"#E8144B","borderTopLeftRadius":8},"text_style":{"color":"#FFFFFF","fontSize":14,"fontFamily":"inherit"}},"discount_label":{"background":{"backgroundColor":"#262626"},"text_style":{"color":"#FFFFFF"}},"product_detail":{"price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"image_border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":6},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"checkbox_style":{"checked_color":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"variant_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"},"quantities_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"}},"discount_options":{"applied":{"color":"#13A165","backgroundColor":"#E0FAEF"},"unApplied":{"color":"#5E5E5E","backgroundColor":"#F1F1F1"}},"collection_details":{"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"collection_image_border":{"borderColor":"rgba(203, 203, 203, 0.4)"}},"title_and_description":{"alignment":{"textAlign":"left"},"title_style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500}
523,"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400}}},"bxgyf":{"box":{"error":{"fill":"#D72C0D","color":"#D72C0D","fontSize":14,"fontFamily":"inherit","borderColor":"#E0B5B2","borderRadius":8,"backgroundColor":"#FFF4FA"},"title":{"color":"#191919","fontSize":22,"fontFamily":"inherit","fontWeight":600},"border":{"borderColor":"#CBCBCB","borderWidth":1,"borderRadius":12},"selected":{"borderColor":"#262626","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(38, 38, 38, 0.2)"}},"poweredBy":{"color":"#191919","fontSize":14,"fontFamily":"inherit","fontWeight":400},"background":{"backgroundColor":"#FFFFFF"},"fastBundle":{"color":"#262626","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"notSelected":{"borderColor":"rgba(203, 203, 203, 0.4)","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"}},"sellingPlan":{"color":"#262626","fontSize":18,"fontFamily":"inherit","fontWeight":400,"borderColor":"#262626","borderRadius":8,"backgroundColor":"transparent"}},"plus":{"style":{"fill":"#FFFFFF","backgroundColor":"#262626"}},"title":{"style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"alignment":{"textAlign":"left"}},"button":{"border":{"borderColor":"transparent","borderRadius":8},"background":{"backgroundColor":"#262626"},"button_label":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500},"button_position":{"position":"bottom"},"backgroundSecondary":{"backgroundColor":"rgba(38, 38, 38, 0.7)"},"button_labelSecondary":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500}},"design":{"main":{"design":"modern"}},"option":{"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit","fontWeight":500},"option_text_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":14,"fontFamily":"inherit"}},"innerBox":{"border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":8},"background":{"backgroundColor":"rgba(255, 255, 255, 0.4)"}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"soldOutBadge":{"background":{"backgroundColor":"#E8144B","borderTopRightRadius":8}},"total_section":{"text":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"border":{"borderRadius":8},"background":{"backgroundColor":"rgba(38, 38, 38, 0.05)"},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"}},"discount_badge":{"background":{"backgroundColor":"#E8144B","borderTopLeftRadius":8},"text_style":{"color":"#FFFFFF","fontSize":14,"fontFamily":"inherit"}},"product_detail":{"price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"image_border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":6},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"checkbox_style":{"checked_color":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"variant_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"},"quantities_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"}},"discount_options":{"applied":{"color":"#13A165","backgroundColor":"#E0FAEF"},"unApplied":{"color":"#5E5E5E","backgroundColor":"#F1F1F1"}},"collection_details":{"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"collection_image_border":{"borderColor":"rgba(203, 203, 203, 0.4)"}},"title_and_description":{"alignment":{"textAlign":"left"},"title_style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500}
523,"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400}}},"standard":{"box":{"error":{"fill":"#D72C0D","color":"#D72C0D","fontSize":14,"fontFamily":"inherit","borderColor":"#E0B5B2","borderRadius":8,"backgroundColor":"#FFF4FA"},"title":{"color":"#191919","fontSize":22,"fontFamily":"inherit","fontWeight":600},"border":{"borderColor":"#CBCBCB","borderWidth":1,"borderRadius":12},"selected":{"borderColor":"#262626","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(38, 38, 38, 0.2)"}},"poweredBy":{"color":"#191919","fontSize":14,"fontFamily":"inherit","fontWeight":400},"background":{"backgroundColor":"#FFFFFF"},"fastBundle":{"color":"#262626","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"notSelected":{"borderColor":"rgba(203, 203, 203, 0.4)","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"}},"sellingPlan":{"color":"#262626","fontSize":18,"fontFamily":"inherit","fontWeight":400,"borderColor":"#262626","borderRadius":8,"backgroundColor":"transparent"}},"plus":{"style":{"fill":"#FFFFFF","backgroundColor":"#262626"}},"title":{"style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"alignment":{"textAlign":"left"}},"button":{"border":{"borderColor":"transparent","borderRadius":8},"background":{"backgroundColor":"#262626"},"button_label":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500},"button_position":{"position":"bottom"},"backgroundSecondary":{"backgroundColor":"rgba(38, 38, 38, 0.7)"},"button_labelSecondary":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500}},"design":{"main":{"design":"minimal"}},"option":{"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit","fontWeight":500},"option_text_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":14,"fontFamily":"inherit"}},"innerBox":{"border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":8},"background":{"backgroundColor":"rgba(255, 255, 255, 0.4)"}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"soldOutBadge":{"background":{"backgroundColor":"#E8144B","borderTopRightRadius":8}},"total_section":{"text":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"border":{"borderRadius":8},"background":{"backgroundColor":"rgba(38, 38, 38, 0.05)"},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"}},"discount_badge":{"background":{"backgroundColor":"#E8144B","borderTopLeftRadius":8},"text_style":{"color":"#FFFFFF","fontSize":14,"fontFamily":"inherit"}},"product_detail":{"price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"image_border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":6},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"checkbox_style":{"checked_color":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"variant_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"},"quantities_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"}},"discount_options":{"applied":{"color":"#13A165","backgroundColor":"#E0FAEF"},"unApplied":{"color":"#5E5E5E","backgroundColor":"#F1F1F1"}},"collection_details":{"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"collection_image_border":{"borderColor":"rgba(203, 203, 203, 0.4)"}},"title_and_description":{"alignment":{"textAlign":"left"},"title_style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500}
523,"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400}}},"mix_and_match":{"box":{"error":{"fill":"#D72C0D","color":"#D72C0D","fontSize":14,"fontFamily":"inherit","borderColor":"#E0B5B2","borderRadius":8,"backgroundColor":"#FFF4FA"},"title":{"color":"#191919","fontSize":22,"fontFamily":"inherit","fontWeight":600},"border":{"borderColor":"#CBCBCB","borderWidth":1,"borderRadius":12},"selected":{"borderColor":"#262626","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(38, 38, 38, 0.2)"}},"poweredBy":{"color":"#191919","fontSize":14,"fontFamily":"inherit","fontWeight":400},"background":{"backgroundColor":"#FFFFFF"},"fastBundle":{"color":"#262626","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"notSelected":{"borderColor":"rgba(203, 203, 203, 0.4)","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"}},"sellingPlan":{"color":"#262626","fontSize":18,"fontFamily":"inherit","fontWeight":400,"borderColor":"#262626","borderRadius":8,"backgroundColor":"transparent"}},"plus":{"style":{"fill":"#FFFFFF","backgroundColor":"#262626"}},"title":{"style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"alignment":{"textAlign":"left"}},"button":{"border":{"borderColor":"transparent","borderRadius":8},"background":{"backgroundColor":"#262626"},"button_label":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500},"button_position":{"position":"bottom"},"backgroundSecondary":{"backgroundColor":"rgba(38, 38, 38, 0.7)"},"button_labelSecondary":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500}},"design":{"main":{"design":"modern"}},"option":{"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit","fontWeight":500},"option_text_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":14,"fontFamily":"inherit"}},"innerBox":{"border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":8},"background":{"backgroundColor":"rgba(255, 255, 255, 0.4)"}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"soldOutBadge":{"background":{"backgroundColor":"#E8144B","borderTopRightRadius":8}},"total_section":{"text":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"border":{"borderRadius":8},"background":{"backgroundColor":"rgba(38, 38, 38, 0.05)"},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"}},"discount_badge":{"background":{"backgroundColor":"#E8144B","borderTopLeftRadius":8},"text_style":{"color":"#FFFFFF","fontSize":14,"fontFamily":"inherit"}},"product_detail":{"price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"image_border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":6},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"checkbox_style":{"checked_color":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"variant_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"},"quantities_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"}},"discount_options":{"applied":{"color":"#13A165","backgroundColor":"#E0FAEF"},"unApplied":{"color":"#5E5E5E","backgroundColor":"#F1F1F1"}},"collection_details":{"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"collection_image_border":{"borderColor":"rgba(203, 203, 203, 0.4)"}},"title_and_description":{"alignment":{"textAlign":"left"},"title_style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500}
523,"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400}}},"col_mix_and_match":{"box":{"error":{"fill":"#D72C0D","color":"#D72C0D","fontSize":14,"fontFamily":"inherit","borderColor":"#E0B5B2","borderRadius":8,"backgroundColor":"#FFF4FA"},"title":{"color":"#191919","fontSize":22,"fontFamily":"inherit","fontWeight":600},"border":{"borderColor":"#CBCBCB","borderWidth":1,"borderRadius":12},"selected":{"borderColor":"#262626","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(38, 38, 38, 0.2)"}},"poweredBy":{"color":"#191919","fontSize":14,"fontFamily":"inherit","fontWeight":400},"background":{"backgroundColor":"#FFFFFF"},"fastBundle":{"color":"#262626","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"notSelected":{"borderColor":"rgba(203, 203, 203, 0.4)","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"}},"sellingPlan":{"color":"#262626","fontSize":18,"fontFamily":"inherit","fontWeight":400,"borderColor":"#262626","borderRadius":8,"backgroundColor":"transparent"}},"plus":{"style":{"fill":"#FFFFFF","backgroundColor":"#262626"}},"title":{"style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"alignment":{"textAlign":"left"}},"button":{"border":{"borderColor":"transparent","borderRadius":8},"background":{"backgroundColor":"#262626"},"button_label":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500},"button_position":{"position":"bottom"},"backgroundSecondary":{"backgroundColor":"rgba(38, 38, 38, 0.7)"},"button_labelSecondary":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500}},"design":{"main":{"design":"modern"}},"option":{"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit","fontWeight":500},"option_text_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":14,"fontFamily":"inherit"}},"innerBox":{"border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":8},"background":{"backgroundColor":"rgba(255, 255, 255, 0.4)"}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"soldOutBadge":{"background":{"backgroundColor":"#E8144B","borderTopRightRadius":8}},"total_section":{"text":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"border":{"borderRadius":8},"background":{"backgroundColor":"rgba(38, 38, 38, 0.05)"},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"}},"discount_badge":{"background":{"backgroundColor":"#E8144B","borderTopLeftRadius":8},"text_style":{"color":"#FFFFFF","fontSize":14,"fontFamily":"inherit"}},"product_detail":{"price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"image_border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":6},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"checkbox_style":{"checked_color":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"variant_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"},"quantities_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"}},"discount_options":{"applied":{"color":"#13A165","backgroundColor":"#E0FAEF"},"unApplied":{"color":"#5E5E5E","backgroundColor":"#F1F1F1"}},"collection_details":{"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"collection_image_border":{"borderColor":"rgba(203, 203, 203, 0.4)"}},"title_and_description":{"alignment":{"textAlign":"left"},"title_style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500}
523,"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400}}}},"old_style_object":null,"zero_discount_btn_title":"Add to cart","mix_btn_title":"Add selected to cart","collection_btn_title":"Add selected to cart","cart_page_issue":null,"cart_drawer_issue":null,"volume_btn_title":"Add {quantity} | save {discount}","badge_color":"#C30000","badge_price_description":"Save {discount}!","use_discount_on_cookie":true,"show_bap_buy_button":false,"bap_version":"v1","bap_price_selector":null,"bap_compare_price_selector":null,"bundles_display":"vertical","use_first_variant":true,"shop":102792},"bundlePageInfo":{"title":null,"description":null,"enabled":true,"handle":"bundles","shop_style":null,"shop_external_script":"","style":null,"external_script":"","bundles_alignment":"bottom","bundles_display":"horizontal"},"cartInfo":{"id":115590,"currency":"ZAR","currency_format":"R %s","box_discount_description":"Add bundle to cart | Save {discount}","box_button_title":"Buy this bundle","free_shipping_translation":null,"shipping_cost_translation":null,"is_reference":false,"subtotal_selector":null,"subtotal_price_selector":null,"subtotal_title_selector":null,"line_items_selector":null,"discount_tag_html":null,"free_shipping_tag":null,"form_subtotal_selector":null,"form_subtotal_price_selector":null,"form_line_items_selector":null,"form_discount_html_tag":null,"form_free_shipping_tag":null,"external_script":"","funnel_show_method":"three_seconds","funnel_popup_title":"Complete your cart with this bundle and save","funnel_alert":"This item is already in your cart.","funnel_discount_description":"save {discount}","style":"","shop_style":null,"shop_external_script":"","funnel_color":"","funnel_badge_color":"","style_object":{"standard":{"box":{"background":{"backgroundColor":"#ffffff"}},"badge":{"main":{"switchBtn":""},"background":{"backgroundColor":""},"text_style":{"color":"","total":"","fontSize":"","fontFamily":""}},"button":{"background":{"backgroundColor":"#000000"},"button_label":{"color":"#ffffff","fontSize":16,"fontFamily":"","price_description":"","zero_discount_btn_title":""}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"bundle_title":{"style":{"color":"#303030","fontSize":22,"fontFamily":""},"alignment":{"textAlign":"left"}},"pop_up_title":{"style":{"color":"","fontSize":"","fontFamily":"","price_description":""},"alignment":{"textAlign":"left"}},"total_section":{"text":{"color":"#303030","fontSize":16,"fontFamily":""},"background":{"backgroundColor":"#e5e5e5"},"final_price_style":{"color":"#008060","fontSize":16,"fontFamily":""},"original_price_style":{"color":"#D72C0D","fontSize":16,"fontFamily":""}},"product_detail":{"price_style":{"color":"#5e5e5e","fontSize":16,"fontFamily":""},"title_style":{"color":"#303030","fontSize":16,"fontFamily":""},"image_border":{"borderColor":"#e5e5e5"},"pluses_style":{"fill":"#000000","width":16},"variant_selector_style":{"color":"#5e5e5e","height":"","backgroundColor":"#FAFAFA"}},"pre_selected_products":{"final_price_style":{"color":"","total":"","fontSize":"","fontFamily":""}}}},"old_style_object":null,"funnel_button_description":"Buy this bundle | Save {discount}","funnel_injection_constraint":"","show_discount_section":false,"discount_section_style":null,"discount_section_selector":null,"reload_after_change_detection":false,"app_version":"v2","show_info":false,"box_zero_discount_title":"Add to cart"}}; 524 FastBundleConf.pid = ''; 525 FastBundleConf.domain = 'halouw-makeup-academy.myshopify.com'; 526 FastBundleConf.variantIds = []; 527 window.FastBundleConf = FastBundleConf; 528 529 // add random generated number query parameter to clear the cache 530 const urlQueryParameter = `?rgn=${FastBundleConf?.rgn}`; 531 loadFastBundleAssets(mainAppUrl, vendorUrl, styleUrl, rbrCartUrl + urlQueryParameter); 532 } 533 534 // if the product id is set and the bap_override_fetch is not set, we add the style to the theme to hide the add to cart buttons 535 if (window.FastBundleConf?.pid && !window.FastBundleConf?.bap_override_fetch) { 536 if (window.FastBundleConf.bap_ids.includes(+window.FastBundleConf.pid)) { 537 const styleElement = document.createElement('style') 538 let bundleBox = window.FastBundleConf?.bundleBox 539 styleElement.id = 'fb-bap-style' 540 let externalSelector = bundleBox?.bap_button_selector ? `, ${bundleBox?.bap_button_selector}` : '' 541 styleElement.innerHTML = ` 542 button[name="add"], form[action="/cart/add"] button[type="submit"], input[name="add"] ${externalSelector}{ 543 display: none !important; 544 }` 545 document.head.appendChild(styleElement) 546 } 547 } 548 549 // Helper function to load FastBundle assets 550 function loadFastBundleAssets(mainAppUrl, vendorUrl, styleUrl, cartUrl) { 551 552 // Preconnect to the asset origin. Two hints are emitted because browsers 553 // maintain separate HTTP/2 connection pools per CORS-mode: the anonymous 554 // one is reused by the module scripts (vendor + main); the non-anonymous
555 // one is reused by the non-CORS stylesheet. DNS resolution is shared. 556 // Origin is parsed from mainAppUrl so this works whether assets are served 557 // from the SDK CDN or from the Shopify CDN (browser dedupes either way). 558 const assetOrigin = new URL(mainAppUrl, location.href).origin; 559 560 const preconnectAnon = document.createElement('link'); 561 preconnectAnon.rel = 'preconnect'; 562 preconnectAnon.href = assetOrigin; 563 preconnectAnon.crossOrigin = 'anonymous'; 564 document.head.appendChild(preconnectAnon); 565 566 const preconnect = document.createElement('link'); 567 preconnect.rel = 'preconnect'; 568 preconnect.href = assetOrigin; 569 document.head.appendChild(preconnect); 570 571 // Load vendor script with modulepreload 572 const vendorScript = document.createElement('link'); 573 vendorScript.rel = 'modulepreload'; 574 vendorScript.href = vendorUrl; 575 document.head.appendChild(vendorScript); 576 577 // Load main app script 578 const mainScript = document.createElement('script'); 579 mainScript.defer = true; 580 mainScript.type = 'module'; 581 mainScript.src = mainAppUrl; 582 document.head.appendChild(mainScript); 583 584 // Load cart script 585 const cartScript = document.createElement('script'); 586 cartScript.src = cartUrl; 587 cartScript.defer = true; 588 cartScript.type = 'text/javascript'; 589 document.head.appendChild(cartScript); 590 591 // Load stylesheet 592 const styleLink = document.createElement('link'); 593 styleLink.rel = 'stylesheet'; 594 styleLink.href = styleUrl; 595 document.head.appendChild(styleLink); 596 } 597 598 </script>
598 599 600<!-- END app snippet --> 601 <!-- BEGIN app snippet: fast_bundle_shared -->
601<script> 602 (function(){ 603 const FastBundleConf = window?.FastBundleConf || {}; 604 605 const shopDomain = FastBundleConf?.shop_domain || "halouw-makeup-academy.myshopify.com"; 606 const countryByMarket = "ZA"; 607 const countryByLocale = null; 608 const countryCode = countryByMarket || countryByLocale || FastBundleConf?.country_code || 'US'; 609 const language = {"shop_locale":{"locale":"en","enabled":true,"primary":true,"published":true}}; 610 const shopLocale = language.shop_locale.locale || null; 611 const firstRawLanguage = "en"; 612 const SecondRawLanguage = "en"; 613 const langCandidates = [ 614 firstRawLanguage, 615 SecondRawLanguage, 616 navigator.language, 617 navigator.userLanguage, 618 null, 619 ]; 620 let shopLanguage = null; 621 for (const candidate of langCandidates) { 622 shopLanguage = fastBundleExtractValidLanguage(candidate); 623 if (shopLanguage) break; 624 } 625 if (!shopLanguage) shopLanguage = "EN"; 626 const storefrontAccessToken = "3cce5287cd5ac57b3099177bec15f969" || ''; 627 const mainProduct = null; 628 window.FastBundleShared = window.FastBundleShared || {}; 629 window.FastBundleShared.functions = window.FastBundleShared.functions || {}; 630 631 function fastBundleExtractValidLanguage(raw) { 632 if (!raw || typeof raw !== "string") return null; 633 const clean = raw.trim().toLowerCase(); 634 if (/^[a-z]{2}$/.test(clean)) { 635 return clean.toUpperCase(); 636 } 637 if (/^[a-z]{2}-[a-z0-9]+$/.test(clean)) { 638 return clean.split('-')[0].toUpperCase(); 639 } 640 if (/^[a-z]{2}_[a-z0-9]+$/.test(clean)) { 641 return clean.split('_')[0].toUpperCase(); 642 } 643 return null; 644 } 645 646 window.FastBundleShared.defineFunction = function (name, fn) { 647 if (!window.FastBundleShared.functions[name]) { 648 window.FastBundleShared.functions[name] = fn; 649 } else { 650 console.warn(`Function "${name}" is already defined.`); 651 } 652 }; 653 654 655 window.FastBundleShared.config = { 656 shopDomain: shopDomain, 657 countryCode: countryCode, 658 shopLanguage: shopLanguage, 659 storefrontAccessToken: storefrontAccessToken, 660 }; 661 window.FastBundleShared.__ready = window.FastBundleShared.__ready || new Promise(function (resolve) { 662 const script = document.createElement('script'); 663 script.src = "https://cdn.shopify.com/extensions/01a107a2-94a5-713f-8aee-cfaeb8a20d0c/fast-bundle-product-bundles-167/assets/fast_bundle_shared.js"; 664 script.onload = resolve; 665 script.onerror = function () { 666 console.error('FastBundle: failed to load fast_bundle_shared.js'); 667 resolve(); 668 }; 669 (document.head || document.documentElement).appendChild(script); 670 }); 671 672 // A stale CDN copy of the asset may predate a fetcher, so fall back to the 673 // shape each caller expects rather than throwing. 674 function fastBundleDeferToAsset(name, emptyValue) { 675 return async function () { 676 await window.FastBundleShared.__ready; 677 const fn = window.FastBundleShared.__impl?.[name]; 678 if (typeof fn !== 'function') { 679 console.error(`FastBundle: ${name} unavailable (fast_bundle_shared.js did not load)`); 680 return emptyValue; 681 } 682 return fn.apply(null, arguments); 683 }; 684 } 685 686 window.FastBundleShared.defineFunction('fetchProductByID', fastBundleDeferToAsset('fetchProductByID', null)); 687 window.FastBundleShared.defineFunction('fetchProductsByIDs', fastBundleDeferToAsset('fetchProductsByIDs', {})); 688 window.FastBundleShared.defineFunction('fetchAllProductVariants', fastBundleDeferToAsset('fetchAllProductVariants', null)); 689 window.FastBundleShared.defineFunction('ensureAllVariants', fastBundleDeferToAsset('ensureAllVariants', null)); 690 691 // fast_bundle_volume.liquid reads this synchronously at parse time, so it 692 // cannot defer to the asset like the fetchers above. 693 window.FastBundleShared.defineFunction('formatMoney', function (amount, currency = 'USD') { 694 return new Intl.NumberFormat('en-US', { 695 style: 'currency', 696 currency, 697 }).format(amount); 698 }); 699 700 window.FastBundleShared.defineFunction('getMainProduct', function () { 701 if (!mainProduct) return null; 702 703 mainProduct.collections = []; 704 mainProduct.body_html = mainProduct.description; 705 mainProduct.image = mainProduct.images.length ? mainProduct.images[0] : null; 706 mainProduct.raw_price = mainProduct.price / 100; 707 708 mainProduct.price = ""; 709 710 mainProduct.options_with_values = [ 711 712 ]; 713 mainProduct.options = mainProduct.options_with_values; 714 delete mainProduct.options_with_values 715 return mainProduct; 716 }) 717 718 window.FastBundleShared.defineFunction('excludeVariants', function (product, excludedVariants) { 719 let preprocessedProduct = { ...product }; 720 if (excludedVariants.length) { 721 const excludedIds = new Set(excludedVariants.map((id) => Number(id))); 722 preprocessedProduct.variants = product.variants.filter((variant) => !excludedIds.has(variant.id)); 723 } 724 return preprocessedProduct; 725 }); 726 727 window.FastBundleShared.defineFunction('handleTranslations', async function(offer, bundleTranslationKeys, discountTranslationKeys, itemTranslationKeys = []) { 728 const translations = offer.translations || {}; 729 const t = translations[shopLocale] || {}; 730 bundleTranslationKeys.forEach((key) => { 731 if (t[key]) { 732 offer[key] = t[key]; 733 } 734 }); 735 delete offer.translations; 736 if (offer.discounts && Array.isArray(offer.discounts)) {
737 offer.discounts.forEach((discount, j) => { 738 const discountTranslations = discount.translations || {}; 739 const dt = discountTranslations[shopLocale] || {}; 740 discountTranslationKeys.forEach((key) => { 741 if (dt[key]) { 742 offer.discounts[j][key] = dt[key]; 743 } 744 }); 745 delete discount.translations; 746 }); 747 } 748 // Item-level translations (offer.items[].translations), keyed by locale like 749 // the offer/discount ones. Only mix & match passes item keys today; callers 750 // that omit them keep the exact previous behaviour, translations included. 751 if (itemTranslationKeys.length && Array.isArray(offer.items)) { 752 offer.items.forEach((item, k) => { 753 const itemTranslations = item.translations || {}; 754 const it = itemTranslations[shopLocale] || {}; 755 itemTranslationKeys.forEach((key) => { 756 if (it[key]) { 757 offer.items[k][key] = it[key]; 758 } 759 }); 760 delete item.translations; 761 }); 762 } 763 }); 764 765 window.FastBundleShared.defineFunction('isPreview', function(){ 766 const params = new URLSearchParams(window.location.search.toLowerCase()); 767 const isPreview = params.get('ispreview') === 'true'; 768 return isPreview 769 }) 770 771 window.FastBundleShared.defineFunction('conditionalLog', function (...args) { 772 try { 773 if (localStorage.getItem('allowRBRLogs') === 'true') { 774 console.log('From Extension:***', ...args); 775 } 776 } catch (error) { 777 console.error(error); 778 } 779 }); 780 })(); 781</script>
781 782<!-- END app snippet --> 783 <!-- BEGIN app snippet: fast_bundle_volume --> 784
785<script> 786 (async function() { 787 const FastBundleConf = window?.FastBundleConf || {}; 788 const fetchProductByID = window.FastBundleShared.functions.fetchProductByID; 789 const getMainProduct = window.FastBundleShared.functions.getMainProduct; 790 const conditionalLog = window.FastBundleShared?.functions?.conditionalLog || (() => {}); 791 const mainProduct = getMainProduct(); 792 conditionalLog('mainProduct',mainProduct); 793 const excludeVariants = window.FastBundleShared.functions.excludeVariants; 794 const handleTranslations = window.FastBundleShared.functions.handleTranslations; 795 if (FastBundleConf?.serverless_vd || FastBundleConf?.serverless_vd_display) { 796 if (!mainProduct) return; 797 window.FastBundleConf.change_vd_product_picture = true; 798 let FastBundleVolumeOffers = []; 799 conditionalLog('FastBundleVolumeOffers', FastBundleVolumeOffers); 800 window.FastBundleVolumeOffers = FastBundleVolumeOffers; 801 802 function finishWithNoVolumeOffer() { 803 window.FastBundleVolumeOffer = []; 804 document.dispatchEvent(new CustomEvent('FastBundleVolumeOffersReady', { detail: [] })); 805 } 806 807 808 const totalVariantsCount = null || 0; 809 const shopCurrency = "ZAR"; 810 const shopMoneyFormat = "R {{amount}}"; 811 const fetchAllProductVariants = window.FastBundleShared.functions.fetchAllProductVariants; 812 const formatMoney = window.FastBundleShared.functions.formatMoney; 813 814 function formatWithDelimiters(cents, precision, thousands, decimal) { 815 const fixed = (cents / 100).toFixed(precision); 816 const parts = fixed.split('.'); 817 const units = parts[0].replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + thousands); 818 return parts[1] ? units + decimal + parts[1] : units; 819 } 820 821 function formatMoneyLikeLiquid(cents, currencyCode) { 822 // Reproduce the Liquid money filter so appended variants display like the first 250. 823 // Fall back to Intl formatting when the price is not in the shop currency. 824 if (currencyCode !== shopCurrency || !shopMoneyFormat) { 825 return formatMoney(cents / 100, currencyCode); 826 } 827 const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/; 828 const placeholder = (shopMoneyFormat.match(placeholderRegex) || [])[1]; 829 let value; 830 switch (placeholder) { 831 case 'amount_no_decimals': value = formatWithDelimiters(cents, 0, ',', '.'); break; 832 case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break; 833 case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break; 834 case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", '.'); break; 835 default: value = formatWithDelimiters(cents, 2, ',', '.'); 836 } 837 return shopMoneyFormat.replace(placeholderRegex, value); 838 } 839 840 function convertStorefrontVariant(node) { 841 const variantId = Number(String(node?.id || '').split('/').pop()); 842 const currencyCode = node?.price?.currencyCode; 843 const rawPrice = parseFloat(node?.price?.amount || 0); 844 const rawCompareAtPrice = node?.compareAtPrice ? parseFloat(node.compareAtPrice.amount) : rawPrice; 845 const rawQuantity = node?.quantityAvailable; 846 const isTracked = typeof rawQuantity === 'number' && rawQuantity !== -1; 847 const sellsWhenOutOfStock = !!node?.currentlyNotInStock && node?.availableForSale === true; 848 const inventoryManagement = isTracked ? 'shopify' : null; 849 const inventoryPolicy = isTracked ? (sellsWhenOutOfStock ? 'continue' : 'deny') : 'continue'; 850 const inventoryQuantity = isTracked ? rawQuantity : (node?.availableForSale ? 1 : 0); 851 const image = node?.image?.url ? { src: node.image.url, alt: null } : null; 852 const selectedOptions = node?.selectedOptions || []; 853 return { 854 id: variantId, 855 title: node?.title, 856 name: mainProduct.title + ' - ' + node?.title, 857 public_title: node?.title, 858 available: node?.availableForSale === true, 859 availableForSale: node?.availableForSale === true, 860 currentlyNotInStock: !!node?.currentlyNotInStock, 861 is_inventory_tracked: isTracked, 862 option1: selectedOptions[0]?.value ?? null, 863 option2: selectedOptions[1]?.value ?? null, 864 option3: selectedOptions[2]?.value ?? null, 865 selectedOptions: selectedOptions, 866 sku: node?.sku || null, 867 requires_shipping: node?.requiresShipping !== false, 868 taxable: node?.taxable !== false, 869 barcode: null, 870 weight: 0, 871 featured_image: image, 872 featured_media: null,
873 requires_selling_plan: false, 874 selling_plan_allocations: [], 875 quantity_price_breaks: [], 876 quantity_rule: { min: 1, max: null, increment: 1 }, 877 // raw_price is in currency units to match getMainProduct() (variant.price | divided_by: 100.0) 878 raw_price: rawPrice, 879 price: formatMoneyLikeLiquid(Math.round(rawPrice * 100), currencyCode), 880 raw_compare_at_price: rawCompareAtPrice, 881 compare_at_price: formatMoneyLikeLiquid(Math.round(rawCompareAtPrice * 100), currencyCode), 882 image: image, 883 inventory_policy: inventoryPolicy, 884 inventory_quantity: inventoryQuantity, 885 inventory_management: inventoryManagement, 886 quantity: (inventoryManagement && inventoryPolicy === 'deny') ? inventoryQuantity : 1, 887 }; 888 } 889 890 async function ensureAllVariants(product) { 891 if (!totalVariantsCount || totalVariantsCount <= product.variants.length) return product; 892 if (typeof fetchAllProductVariants !== 'function') return product; 893 try { 894 const nodes = await fetchAllProductVariants(product.id); 895 if (!nodes || !nodes.length) return product; 896 const knownIds = new Set(product.variants.map((variant) => variant.id)); 897 const missingVariants = nodes 898 .map(convertStorefrontVariant) 899 .filter((variant) => variant.id && !knownIds.has(variant.id)); 900 if (!missingVariants.length) return product; 901 conditionalLog('Volume: appended variants beyond the Liquid 250 cap', { 902 rendered: product.variants.length, 903 fetched: nodes.length, 904 appended: missingVariants.length, 905 }); 906 // Return a copy: mainProduct is shared with the other bundle types and must stay capped for them. 907 return { ...product, variants: product.variants.concat(missingVariants) }; 908 } catch (error) { 909 conditionalLog('Volume: full variant fetch failed, falling back to the first 250 variants', error); 910 return product; 911 } 912 } 913 914 if (!FastBundleVolumeOffers.length) { 915 conditionalLog('No Volume Offers Found'); 916 finishWithNoVolumeOffer(); 917 return; 918 } 919 920 for (const offer of FastBundleVolumeOffers) { 921 offer.use_compare_at_price = FastBundleConf?.use_compare_at_price; 922 offer.discount = offer.discounts[0] || {}; 923 await handleTranslations( 924 offer, 925 ['title', 926 'description', 927 'volume_show_price_per_item_suffix'], 928 ['badge', 929 'description', 930 'label', 931 'subtitle'] 932 ); 933 } 934 async function attachFastBundleFreeGifts() { 935 const offersWithDiscounts = window.FastBundleVolumeOffer || []; 936 const promises = []; 937 offersWithDiscounts.forEach((offer) => { 938 if (offer.discounts && Array.isArray(offer.discounts)) { 939 offer.discounts.forEach((discount) => { 940 if (discount.free_gift && discount.free_gift.product_id) { 941 const numericId = discount.free_gift.product_id; 942 const gid = `gid://shopify/Product/${numericId}`; 943 const p = fetchProductByID(gid).then(product => { 944 if (product) { 945 discount.free_gift.product = product; 946 } 947 }); 948 promises.push(p); 949 } 950 }); 951 } 952 }); 953 954 await Promise.all(promises); 955 document.dispatchEvent(new CustomEvent('FastBundleVolumeFreeGiftsReady', { detail: offersWithDiscounts })); 956 window.FastBundleVolumeOffer = offersWithDiscounts; 957 } 958 function isFastBundleOfferActive(offer) { 959 const isPreview = window.FastBundleShared.functions.isPreview; 960 if (!isPreview() && !offer?.enabled) return false; 961 const now = new Date(); 962 if (offer.start_datetime && new Date(offer.start_datetime) > now) return false; 963 if (offer.end_datetime && new Date(offer.end_datetime) < now) return false; 964 return true; 965 } 966 async function determineFastBundlVolumeeOffer() { 967 for (const offer of FastBundleVolumeOffers) { 968 if (isFastBundleOfferActive(offer)) return offer; 969 } 970 return {}; 971 } 972 determineFastBundlVolumeeOffer().then(async offer => { 973 if (!offer?.id) { 974 conditionalLog('No Active Volume Offer Found'); 975 finishWithNoVolumeOffer(); 976 return; 977 } 978 979 const volumeProduct = await ensureAllVariants(mainProduct); 980 const excludedVariants = [ 981 ...(offer?.item?.excluded_variants || []), 982 ...(offer?.item?.collect_excluded_variants?.[mainProduct.id] || []), 983 ]; 984 conditionalLog('excludedVariants', excludedVariants); 985 const preprocessedProduct = excludeVariants(volumeProduct, excludedVariants); 986 preprocessedProduct.item_id = offer?.item?.id || 0; 987 offer.items = [preprocessedProduct]; 988 window.FastBundleVolumeOffer = [offer]; 989 await attachFastBundleFreeGifts(); 990 document.dispatchEvent(new CustomEvent('FastBundleVolumeOffersReady', { detail: window.FastBundleVolumeOffer })); 991 }).catch(error => { 992 conditionalLog('Error determining FastBundleVolumeOffer', error); 993 }); 994 } 995 })(); 996</script>
996 997<!-- END app snippet --> 998 <!-- BEGIN app snippet: fast_bundle_cross_sell -->
998<script> 999 (async function(){ 1000 let FastBundleCrossSellOffers = []; 1001 const conditionalLog = window.FastBundleShared?.functions?.conditionalLog || (() => {}); 1002 conditionalLog('FastBundleCrossSellOffers', FastBundleCrossSellOffers); 1003 const FastBundleConf = window?.FastBundleConf || {}; 1004 const handleTranslations = window.FastBundleShared.functions.handleTranslations; 1005 const isPreview = window.FastBundleShared.functions.isPreview; 1006 1007 function isCrossSellOfferActive(offer) { 1008 if (offer?.enabled === false) return false; 1009 const now = Date.now(); 1010 if (offer.start_datetime && Date.parse(offer.start_datetime) > now) return false; 1011 if (offer.end_datetime && Date.parse(offer.end_datetime) < now) return false; 1012 return true; 1013 } 1014 1015 if (!isPreview()) { 1016 FastBundleCrossSellOffers = (FastBundleCrossSellOffers || []).filter(isCrossSellOfferActive); 1017 } 1018 1019 async function attachFastBundleItems(offer) { 1020 if (!offer) return; 1021 const getMainProduct = window.FastBundleShared.functions.getMainProduct; 1022 const fetchProductByID = window.FastBundleShared.functions.fetchProductByID; 1023 const mainProduct = getMainProduct(); 1024 const pid = ''; 1025 const excludeVariants = window.FastBundleShared.functions.excludeVariants; 1026 const uniqueChildIds = offer.children?.flatMap(child => 1027 (child.items || []).map(item => item.item_id) 1028 ) || []; 1029 const uniqueProductIds = [ 1030 ...new Set([ 1031 ...(uniqueChildIds || []), 1032 offer.main_item_id ? String(offer.main_item_id) : null, 1033 ].filter(Boolean)) 1034 ] 1035 const productMap = {}; 1036 try { 1037 const results = await Promise.all( 1038 uniqueProductIds.map(async (id) => { 1039 const gid = id.startsWith('gid://') ? id : `gid://shopify/Product/${id}`; 1040 const product = await fetchProductByID(gid, false); 1041 if (product) productMap[id] = product; 1042 }) 1043 ); 1044 } catch (err) { 1045 console.error('Error fetching products:', err); 1046 } 1047 offer.main_item = productMap[String(offer.main_item_id)] || null; 1048 const filteredChildren = (offer.children || []).filter(child => 1049 (child.items || []).every(item => productMap[item.item_id]) 1050 ); 1051 offer.children = filteredChildren.map(child => ({ 1052 ...child, 1053 items: child.items.map(item => ({ 1054 ...item, 1055 ...excludeVariants(productMap[item.item_id], item.excluded_variants) || {}, 1056 })), 1057 volume_single_variant_selector: offer?.volume_single_variant_selector, 1058 })); 1059 window.FastBundleCrossSellOffer = offer; 1060 } 1061 if (FastBundleCrossSellOffers?.length) { 1062 document.dispatchEvent(new CustomEvent('FastBundleCrossSellOfferExists', { 1063 detail: true 1064 })); 1065 await attachFastBundleItems(FastBundleCrossSellOffers[0]); 1066 await handleTranslations( 1067 FastBundleCrossSellOffers[0], 1068 ['title', 'description'], 1069 ['description'] 1070 ); 1071 FastBundleCrossSellOffers[0].use_compare_at_price = FastBundleConf?.use_compare_at_price; 1072 for (const child of FastBundleCrossSellOffers[0].children) { 1073 await handleTranslations( 1074 child, 1075 ['title', 'description'], 1076 ['description'] 1077 ); 1078 child.use_compare_at_price = FastBundleConf?.use_compare_at_price; 1079 child.is_child = true; 1080 child.discount = child.discounts[0] || {}; 1081 } 1082 window.FastBundleCrossSellOffer = [FastBundleCrossSellOffers?.[0]].filter(Boolean); 1083 } else { 1084 document.dispatchEvent(new CustomEvent('FastBundleCrossSellOfferExists', { 1085 detail: false 1086 })); 1087 window.FastBundleCrossSellOffer = null; 1088 } 1089 1090 document.dispatchEvent(new CustomEvent('FastBundleCrossSellOfferReady', { 1091 detail: window.FastBundleCrossSellOffer || {} 1092 })); 1093 })(); 1094</script>
1094 1095<!-- END app snippet --> 1096 <!-- BEGIN app snippet: fast_bundle_add_on --> 1097<!-- BEGIN app snippet: fast_bundle_add_on_match -->
1098<script> 1099(async function () { 1100const conditionalLog = window.FastBundleShared?.functions?.conditionalLog || (() => {}); 1101 1102let FastBundleAddOnOffers = []; 1103conditionalLog('FastBundleAddOnOffers', FastBundleAddOnOffers); 1104const FastBundleConf = window?.FastBundleConf || {}; 1105const handleTranslations = window.FastBundleShared.functions.handleTranslations; 1106const isPreview = window.FastBundleShared.functions.isPreview; 1107 1108function isAddOnOfferActive(offer) { 1109if (offer?.enabled === false) return false; 1110const now = Date.now(); 1111if (offer.start_datetime && Date.parse(offer.start_datetime) > now) return false; 1112if (offer.end_datetime && Date.parse(offer.end_datetime) < now) return false; 1113return true; 1114} 1115 1116if (!isPreview()) { 1117FastBundleAddOnOffers = (FastBundleAddOnOffers || []).filter(isAddOnOfferActive); 1118conditionalLog('FastBundleAddOnOffers after active filter', FastBundleAddOnOffers); 1119} 1120 1121const ADD_ON_ITEM_TYPE_PRIORITY = { 1122product: 0, 1123collection: 1, 1124general: 2, 1125}; 1126 1127function pickBestAddOnOfferFB(offers) { 1128const list = [...(offers || [])]; 1129if (!list.length) return null; 1130 1131list.sort((a, b) => { 1132const priorityDiff = 1133(ADD_ON_ITEM_TYPE_PRIORITY[a.item_type] ?? 99) - 1134(ADD_ON_ITEM_TYPE_PRIORITY[b.item_type] ?? 99); 1135if (priorityDiff !== 0) return priorityDiff; 1136return (a.products_page_priority ?? 0) - (b.products_page_priority ?? 0); 1137}); 1138 1139return list[0]; 1140} 1141 1142async function attachFastBundleItemsFB(offer) { 1143if (!offer) { 1144conditionalLog('No offer found'); 1145return false 1146}; 1147const getMainProduct = window.FastBundleShared.functions.getMainProduct; 1148const fetchProductsByIDs = window.FastBundleShared.functions.fetchProductsByIDs; 1149const excludeVariants = window.FastBundleShared.functions.excludeVariants; 1150 1151const items = offer.items || []; 1152if (!items.length) { 1153conditionalLog('No items found'); 1154return false; 1155}; 1156 1157const mainProduct = getMainProduct(); 1158if (!mainProduct) { 1159conditionalLog('No main product found'); 1160return false; 1161}; 1162 1163const addOnProductIds = [ 1164...new Set( 1165items 1166.filter((item) =>
1166 item.is_add_on === true) 1167.map((item) => String(item.item_id)) 1168.filter(Boolean) 1169), 1170]; 1171 1172const productMap = {}; 1173try { 1174if (!fetchProductsByIDs && addOnProductIds.length) { 1175conditionalLog('fetchProductsByIDs function is missing, add-on products cannot be fetched'); 1176} 1177if (fetchProductsByIDs && addOnProductIds.length) { 1178const fetchedProducts = await fetchProductsByIDs(addOnProductIds, false); 1179conditionalLog('fetchedProducts', fetchedProducts); 1180Object.keys(fetchedProducts || {}).forEach((id) => { 1181if (fetchedProducts[id]) productMap[id] = fetchedProducts[id]; 1182}); 1183} 1184} catch (err) { 1185conditionalLog('Error fetching products:', err); 1186return false; 1187} 1188 1189const hydratedItems = []; 1190for (const item of items) { 1191if (item.is_add_on === false || item.type === 'collection' || item.type === 'general') { 1192const excludedVariants = [ 1193...(item.excluded_variants || []), 1194...(item.collect_excluded_variants?.[mainProduct.id] || []), 1195]; 1196const preprocessedProduct = excludeVariants(mainProduct, excludedVariants) || {}; 1197if (!Array.isArray(preprocessedProduct.variants) || preprocessedProduct.variants.length === 0) { 1198conditionalLog('No variants left after exclusions on main product', mainProduct.id); 1199return false; 1200} 1201hydratedItems.push({ 1202...item, 1203...preprocessedProduct, 1204id: item.id, 1205item_id: String(mainProduct.id), 1206}); 1207continue; 1208} 1209
1210if (item.is_add_on === true) { 1211const product = productMap[String(item.item_id)]; 1212if (!product) { 1213conditionalLog('Add-on product not found in fetched products', item.item_id); 1214return false; 1215}; 1216const preprocessedProduct = excludeVariants(product, item.excluded_variants || []) || {}; 1217if (!Array.isArray(preprocessedProduct.variants) || preprocessedProduct.variants.length === 0) { 1218conditionalLog('No variants left after exclusions on add-on product', item.item_id); 1219return false; 1220} 1221hydratedItems.push({ ...item, ...preprocessedProduct }); 1222} 1223} 1224conditionalLog('hydratedItems', hydratedItems); 1225offer.items = hydratedItems; 1226return true; 1227} 1228 1229const pageMatchingOffers = FastBundleAddOnOffers || []; 1230const bestOffer = pickBestAddOnOfferFB(pageMatchingOffers); 1231conditionalLog('bestOffer', bestOffer); 1232if (bestOffer) { 1233document.dispatchEvent(new CustomEvent('FastBundleAddOnOfferExists', { detail: true })); 1234window.FastBundleAddOnOffers = pageMatchingOffers; 1235 1236const ok = await attachFastBundleItemsFB(bestOffer); 1237conditionalLog('attachFastBundleItemsFB result', ok); 1238if (!ok) { 1239document.dispatchEvent(new CustomEvent('FastBundleAddOnOfferExists', { detail: false })); 1240// Empty array = "serverless checked, no offer" -> SDK falls back to serverfull. 1241window.FastBundleAddOnOffer = []; 1242conditionalLog('Set window.FastBundleAddOnOffer = [] -> offer item hydration failed (see previous log for the reason), falling back to serverfull'); 1243window.FastBundleAddOnOffers = null; 1244document.dispatchEvent(new CustomEvent('FastBundleAddOnOfferReady', { detail: [] })); 1245return; 1246} 1247 1248bestOffer.use_compare_at_price = FastBundleConf?.use_compare_at_price; 1249bestOffer.discount = bestOffer.discounts?.[0] || {}; 1250await handleTranslations( 1251bestOffer, 1252['title', 'description'], 1253['description', 'label', 'badge', 'subtitle'] 1254); 1255window.FastBundleAddOnOffer = [bestOffer]; 1256} else { 1257document.dispatchEvent(new CustomEvent('FastBundleAddOnOfferExists', { detail: false })); 1258// Empty array = "serverless checked, no offer" -> SDK falls back to serverfull. 1259window.FastBundleAddOnOffer = []; 1260conditionalLog('Set window.FastBundleAddOnOffer = [] -> no active add-on offer matches this page, falling back to serverfull'); 1261window.FastBundleAddOnOffers = null; 1262} 1263 1264document.dispatchEvent(new CustomEvent('FastBundleAddOnOfferReady', { 1265detail: window.FastBundleAddOnOffer || [] 1266})); 1267})(); 1268</script>
1268<!-- END app snippet --><!-- END app snippet --> 1269 <!-- BEGIN app snippet: fast_bundle_fixed -->
1269<script> 1270 (async function(){ 1271 let FastBundleFixedOffers = []; 1272 const FastBundleConf = window?.FastBundleConf || {}; 1273 const handleTranslations = window.FastBundleShared.functions.handleTranslations; 1274 const isPreview = window.FastBundleShared.functions.isPreview; 1275 1276 function isFixedOfferActive(offer) { 1277 if (offer?.enabled === false) return false; 1278 const now = Date.now(); 1279 if (offer.start_datetime && new Date(offer.start_datetime).getTime() > now) return false; 1280 if (offer.end_datetime && new Date(offer.end_datetime).getTime() < now) return false; 1281 return true; 1282 } 1283 1284 if (!isPreview()) { 1285 FastBundleFixedOffers = (FastBundleFixedOffers || []).filter(isFixedOfferActive); 1286 } 1287 1288 // Returns true only if every bundle item resolves to a fetched product with 1289 // at least one selectable variant. Deleted/hidden products (or products that 1290 // collapse to zero variants after `excluded_variants`) cause the whole bundle 1291 // to be dropped â partial bundles must never reach the storefront. 1292 async function attachFastBundleItems(offer) { 1293 if (!offer) return false; 1294 const fetchProductsByIDs = window.FastBundleShared.functions.fetchProductsByIDs; 1295 const excludeVariants = window.FastBundleShared.functions.excludeVariants; 1296 1297 const items = offer.items || []; 1298 if (!items.length) return false; 1299 1300 const uniqueProductIds = [ 1301 ...new Set(items.map(item => String(item.item_id))) 1302 ]; 1303 1304 const productMap = {}; 1305 try { 1306 if (fetchProductsByIDs && uniqueProductIds.length) { 1307 const fetchedProducts = await fetchProductsByIDs(uniqueProductIds, false); 1308 Object.keys(fetchedProducts || {}).forEach((id) => { 1309 if (fetchedProducts[id]) productMap[id] = fetchedProducts[id]; 1310 }); 1311 } 1312 } catch (err) { 1313 console.error('Error fetching products:', err); 1314 return false; 1315 } 1316 1317 const hydratedItems = []; 1318 for (const item of items) { 1319 const product = productMap[item.item_id]; 1320 if (!product) return false; 1321 const preprocessedProduct = excludeVariants(product, item.excluded_variants) || {}; 1322 if (!Array.isArray(preprocessedProduct.variants) || preprocessedProduct.variants.length === 0) { 1323 return false; 1324 } 1325 hydratedItems.push({ ...item, ...preprocessedProduct }); 1326 } 1327 1328 offer.items = hydratedItems; 1329 return true; 1330 } 1331 1332 if (FastBundleFixedOffers?.length) { 1333 document.dispatchEvent(new CustomEvent('FastBundleFixedOfferExists', { detail: true })); 1334 const hydratedOffers = []; 1335 for (const offer of FastBundleFixedOffers) { 1336 const ok = await attachFastBundleItems(offer); 1337 if (!ok) continue; 1338 offer.use_compare_at_price = FastBundleConf?.use_compare_at_price; 1339 offer.discount = offer.discounts[0] || {}; 1340 await handleTranslations( 1341 offer, 1342 ['title', 'description'], 1343 ['description', 'label', 'badge', 'subtitle'] 1344 ); 1345 hydratedOffers.push(offer); 1346 } 1347 if (hydratedOffers.length === 0) { 1348 document.dispatchEvent(new CustomEvent('FastBundleFixedOfferExists', { detail: false })); 1349 window.FastBundleFixedOffer = []; 1350 document.dispatchEvent(new CustomEvent('FastBundleFixedOfferReady', { detail: [] })); 1351 return; 1352 } 1353 window.FastBundleFixedOffer = hydratedOffers; 1354 } else { 1355 document.dispatchEvent(new CustomEvent('FastBundleFixedOfferExists', { detail: false })); 1356 // Empty array = "serverless checked, no offer" -> SDK falls back to serverfull. 1357 window.FastBundleFixedOffer = []; 1358 } 1359 1360 document.dispatchEvent(new CustomEvent('FastBundleFixedOfferReady', { 1361 detail: window.FastBundleFixedOffer || [] 1362 })); 1363 })(); 1364</script>
1364 1365<!-- END app snippet --> 1366 <!-- BEGIN app snippet: fast_bundle_mix_and_match -->
1367<script> 1368 (async function () { 1369 let FastBundleMixAndMatchOffers = []; 1370 1371 const FastBundleConf = window?.FastBundleConf || {}; 1372 const conditionalLog = window.FastBundleShared?.functions?.conditionalLog || (() => {}); 1373 const handleTranslations = window.FastBundleShared.functions.handleTranslations; 1374 const isPreview = window.FastBundleShared.functions.isPreview; 1375 conditionalLog('FastBundleMixAndMatchOffers', FastBundleMixAndMatchOffers); 1376 function isMixAndMatchOfferActive(offer) { 1377 if (offer?.enabled === false) return false; 1378 const now = Date.now(); 1379 if (offer.start_datetime && new Date(offer.start_datetime).getTime() > now) return false; 1380 if (offer.end_datetime && new Date(offer.end_datetime).getTime() < now) return false; 1381 return true; 1382 } 1383 1384 if (!isPreview()) { 1385 FastBundleMixAndMatchOffers = (FastBundleMixAndMatchOffers || []).filter(isMixAndMatchOfferActive); 1386 } 1387 1388 // No product/collection hydration and no price/id transform here â the front 1389 // project fetches collection products via the Shopify Storefront GraphQL API.
1390 // We only localize the offer-level strings so the storefront gets the same 1391 // localized copy the serverfull backend would have returned. 1392 for (const offer of FastBundleMixAndMatchOffers) { 1393 offer.use_compare_at_price = FastBundleConf?.use_compare_at_price; 1394 offer.discount = offer.discounts?.[0] || {}; 1395 await handleTranslations( 1396 offer, 1397 ['title', 'description'], 1398 ['description', 'label', 'badge', 'subtitle'], 1399 // Item-level: the metafield carries a translations entry for EVERY shop 1400 // locale (primary included, rebuilt from the flat section_* values) on every 1401 // item, manual and smart alike, covering all three of the backend's 1402 // CollectionBundleItem.TRANSLATABLE_FIELDS. A locale the merchant never 1403 // filled in ships nulls for description/badge, which handleTranslations 1404 // skips, so the primary-locale wording stays. 1405 ['section_title', 'section_description', 'section_badge'] 1406 ); 1407 } 1408 1409 // Contract: array of product-related offers ([] when none), serves both widget 1410 // and BAP. Empty array => the front falls back to the serverfull path. 1411 window.FastBundleMixAndMatchOffer = FastBundleMixAndMatchOffers || []; 1412 conditionalLog('FastBundleMixAndMatchOffer', window.FastBundleMixAndMatchOffer); 1413 document.dispatchEvent(new CustomEvent('FastBundleMixAndMatchOfferReady', { 1414 detail: window.FastBundleMixAndMatchOffer, 1415 })); 1416 })(); 1417</script>
1417 1418<!-- END app snippet --> 1419 <!-- BEGIN app snippet: recording_consent -->
1420<script src="https://cdn.shopify.com/extensions/01a107a2-94a5-713f-8aee-cfaeb8a20d0c/fast-bundle-product-bundles-167/assets/fast_bundle_recording_consent.js" defer 1421 data-fb-record-submitted="true" 1422 data-fb-shop-id="102792"></script>
1422 1423<!-- END app snippet --> 1424 1425 1426 1427<!-- END app block -->
1427<script src="https://cdn.shopify.com/extensions/01a0aa7a-f99f-7ab6-a36e-9673fd70d8d4/omnisend-57/assets/omnisend-in-shop.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1427
1427
1428<script src="https://cdn.shopify.com/extensions/01a0d722-0867-7a28-bc93-1d8af6336bdd/dondy-whatsapp-chat-widget-99/assets/ChatBubble.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1428
1428
1429<script src="https://cdn.shopify.com/extensions/01a0fb84-01a2-76e1-ae16-ebb5ffe420cd/mag-product-reviews-565/assets/productReview.js" type="text/javascript" defer="defer"></script>
1429 1430<link href="https://cdn.shopify.com/extensions/01a0fb84-01a2-76e1-ae16-ebb5ffe420cd/mag-product-reviews-565/assets/frontend.css" rel="stylesheet" type="text/css" media="all">
1431<script src="https://cdn.shopify.com/extensions/01a0f221-d33c-7f04-a210-d57fd63e6029/rapid-search-421/assets/csb.iife.js" type="text/javascript" defer="defer"></script>
1431 1432<meta property="og:image" content="https://cdn.shopify.com/s/files/1/0675/9786/1168/files/HALOUW_LOGO_cf976377-a0c7-4861-b823-83d11ac41edc.png?v=1669557601" /> 1433<meta property="og:image:secure_url" content="https://cdn.shopify.com/s/files/1/0675/9786/1168/files/HALOUW_LOGO_cf976377-a0c7-4861-b823-83d11ac41edc.png?v=1669557601" /> 1434<meta property="og:image:width" content="2500" /> 1435<meta property="og:image:height" content="2214" /> 1436<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1437<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: 67597861168,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "search"};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 1437
1437
1438<script> 1439 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 1440</script>
vendor: 1 bytes, line 1440
1440
1441<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}
1441).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: 67597861168,storefrontBaseUrl: "https://www.halouw.co.za",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://www.halouw.co.za/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"1324941616","configuration":"{\"storeId\":\"halouw-makeup-academy.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0da674a4d28eb16838d73f6a82224de2","type":"APP","apiClientId":3440817,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
1441,"dataSharingState":"unrestricted"},{"id":"950632752","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"AW-16807876880\\\",\\\"GT-55XFZ68M\\\"],\\\"target_country\\\":\\\"ZA\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":\\\"AW-16807876880\\\/4jHhCNWS5fIZEJCyz84-\\\"},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":\\\"AW-16807876880\\\/yL9VCM-S5fIZEJCyz84-\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"AW-16807876880\\\/RoPnCMyS5fIZEJCyz84-\\\",\\\"MC-2SSV83X938\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"AW-16807876880\\\/dG8rCMaS5fIZEJCyz84-\\\",\\\"MC-2SSV83X938\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"AW-16807876880\\\/DaZHCMmS5fIZEJCyz84-\\\",\\\"MC-2SSV83X938\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":\\\"AW-16807876880\\\/F9c8CNiS5fIZEJCyz84-\\\"},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":\\\"AW-16807876880\\\/88lcCNKS5fIZEJCyz84-\\\"}],\\\"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":"304841008","configuration":"{\"pixel_id\":\"1105196280144043\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","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":"239141168","configuration":"{\"apiURL\":\"https:\/\/api.omnisend.com\",\"appURL\":\"https:\/\/app.omnisend.com\",\"brandID\":\"646ca691bc57b9e241621ae5\",\"trackingURL\":\"https:\/\/wt.omnisendlink.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"1e2b45bbee5b360dff908f60423b89f8","type":"APP","apiClientId":186001,"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":"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":"Halouw Makeup Academy","paymentSettings":{"currencyCode":"ZAR"},"myshopifyDomain":"halouw-makeup-academy.myshopify.com","countryCode":"ZA","storefrontUrl":"https:\/\/www.halouw.co.za"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://www.halouw.co.za/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"161412284720","themePublished":"true","eventMetadataId":"b25df3bd-e824-44b4-9c31-d50011dad36e","pageType":"searchresults","shopId":"67597861168","storefrontBaseUrl":"https:\/\/www.halouw.co.za","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}],[\"search_submitted\",{\"searchResult\":{\"query\":\"\",\"productVariants\":[]}}]]"});})();</script>
1441<script> 1442 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 1443 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 1444 window.ShopifyAnalytics.meta.currency = 'ZAR'; 1445 var meta = {"products":[],"page":{"pageType":"searchresults","requestId":"fd01e02b-bd70-4827-9f27-ba0982228056-1791260326"}}; 1446 for (var attr in meta) { 1447 window.ShopifyAnalytics.meta[attr] = meta[attr]; 1448 } 1449</script>
vendor: 1 bytes, line 1449
1449
1450<script class="analytics"> 1451 (function () { 1452 var customDocumentWrite = function(content) { 1453 var jquery = null; 1454 1455 if (window.jQuery) { 1456 jquery = window.jQuery; 1457 } else if (window.Checkout && window.Checkout.$) { 1458 jquery = window.Checkout.$; 1459 } 1460 1461 if (jquery) { 1462 jquery('body').append(content); 1463 } 1464 }; 1465 1466 var hasLoggedConversion = function(token) { 1467 if (token) { 1468 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 1469 } 1470 return false; 1471 } 1472 1473 var setCookieIfConversion = function(token) { 1474 if (token) { 1475 var twoMonthsFromNow = new Date(Date.now()); 1476 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 1477 1478 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 1479 } 1480 } 1481 1482 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 1483 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 1484 if (trekkie.integrations) { 1485 return; 1486 } 1487 trekkie.methods = [ 1488 'identify', 1489 'page', 1490 'ready', 1491 'track', 1492 'trackForm', 1493 'trackLink' 1494 ]; 1495 trekkie.factory = function(method) { 1496 return function() { 1497 var args = Array.prototype.slice.call(arguments); 1498 args.unshift(method); 1499 trekkie.push(args); 1500 if (method == 'track' || method == 'page') { 1501 var pageUrl; 1502 try { 1503 pageUrl = window.location.href; 1504 } catch (e) {} 1505 var pageReferrer; 1506 try { 1507 pageReferrer = document.referrer; 1508 } catch (e) {} 1509 try { 1510 if (window.__TREKKIE_SHIM_QUEUE == null) { 1511 window.__TREKKIE_SHIM_QUEUE = []; 1512 } 1513 window.__TREKKIE_SHIM_QUEUE.push({ 1514 from: 'trekkie-stub', 1515 method: method, 1516 args: args.slice(1), 1517 pageContext: { 1518 url: pageUrl, 1519 referrer: pageReferrer 1520 } 1521 }); 1522 } catch (e) { 1523 // no-op 1524 } 1525 } 1526 return trekkie; 1527 }; 1528 }; 1529 for (var i = 0; i < trekkie.methods.length; i++) { 1530 var key = trekkie.methods[i]; 1531 trekkie[key] = trekkie.factory(key); 1532 } 1533 trekkie.load = function(config) { 1534 trekkie.config = config || {}; 1535 trekkie.config.initialDocumentCookie = document.cookie; 1536 var first = document.getElementsByTagName('script')[0]; 1537var script = document.createElement('script'); 1538script.type = 'text/javascript'; 1539script.onerror = function(e) { 1540 var scriptFallback = document.createElement('script'); 1541 scriptFallback.type = 'text/javascript'; 1542 scriptFallback.onerror = function(error) { 1543 var Monorail = { 1544 produce: function produce(monorailDomain, schemaId, payload) { 1545 var currentMs = new Date().getTime(); 1546 var event = { 1547 schema_id: schemaId, 1548 payload: payload, 1549 metadata: { 1550 event_created_at_ms: currentMs, 1551 event_sent_at_ms: currentMs 1552 } 1553 }; 1554 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 1555 }, 1556 sendRequest: function sendRequest(endpointUrl, payload) { 1557 // Try the sendBeacon API 1558 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 1559 var blobData = new window.Blob([payload], { 1560 type: 'text/plain' 1561 }); 1562 1563 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 1564 return true; 1565 } // sendBeacon was not successful 1566 1567 } // XHR beacon 1568 1569 var xhr = new XMLHttpRequest(); 1570 1571 try { 1572 xhr.open('POST', endpointUrl); 1573 xhr.setRequestHeader('Content-Type', 'text/plain'); 1574 xhr.send(payload); 1575 } catch (e) { 1576 console.log(e); 1577 } 1578 1579 return false; 1580 }, 1581 isIos12: function isIos12() { 1582 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 1583 } 1584 }; 1585 Monorail.produce('monorail-edge.shopifysvc.com', 1586 'trekkie_storefront_load_errors/1.1', 1587 {shop_id: 67597861168, 1588 theme_id: 161412284720, 1589 app_name: "storefront", 1590 context_url: window.location.href, 1591 source_url: "//www.halouw.co.za/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 1592 1593 }; 1594 scriptFallback.async = true; 1595 scriptFallback.src = '//www.halouw.co.za/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 1596 first.parentNode.insertBefore(scriptFallback, first); 1597}; 1598script.async = true; 1599script.src = '//www.halouw.co.za/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 1600first.parentNode.insertBefore(script, first); 1601 1602 }; 1603 trekkie.load( 1604 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":67597861168,"isMerchantRequest":null,"themeId":161412284720,"themeCityHash":"13695689527704985512","contentLanguage":"en","currency":"ZAR","eventMetadataId":"b25df3bd-e824-44b4-9c31-d50011dad36e"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 1605 ); 1606 1607 var loaded = false;
1608 trekkie.ready(function() { 1609 if (loaded) return; 1610 loaded = true; 1611 1612 window.ShopifyAnalytics.lib = window.trekkie; 1613 1614 var originalDocumentWrite = document.write; 1615 document.write = customDocumentWrite; 1616 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 1617 document.write = originalDocumentWrite; 1618 1619 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 1620 var token = match? match[1]: undefined; 1621 if (!hasLoggedConversion(token)) { 1622 setCookieIfConversion(token); 1623 window.ShopifyAnalytics.lib.track("Performed Search",{"query":null},undefined,undefined,{"shopifyEmitted":true}); 1624 } 1625 }); 1626 1627 window.ShopifyAnalytics.lib.page(null,{"pageType":"searchresults","requestId":"fd01e02b-bd70-4827-9f27-ba0982228056-1791260326","shopifyEmitted":true}); 1628 1629 var eventsListenerScript = document.createElement('script'); 1630 eventsListenerScript.async = true; 1631 eventsListenerScript.src = "//www.halouw.co.za/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 1632 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 1633})();</script>
vendor: 1 bytes, line 1633
1633
1634<script 1635 defer 1636 src="https://www.halouw.co.za/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.5.min.js" 1637 data-application="storefront-renderer" 1638 data-shop-id="67597861168" 1639 data-render-region="gcp-us-central1" 1640 data-page-type="search" 1641 data-theme-instance-id="161412284720" 1642 data-theme-name="Pipeline" 1643 data-theme-version="6.1.3" 1644 data-monorail-region="shop_domain" 1645 data-resource-timing-sampling-rate="10" 1646 data-shs="true" 1647 data-shs-beacon="true" 1648 data-shs-export-with-fetch="true" 1649 data-shs-logs-sample-rate="1" 1650 data-shs-beacon-endpoint="https://www.halouw.co.za/api/collect" 1651></script>
1651 1652<meta name="shopify-y" content="ec0a1bf3-f6a5-443a-80e6-722a6791a33b" data-expiration="1822817926000"><meta name="shopify-s" content="40e68437-1e4c-4890-a159-73428cac1e8f" data-expiration="1791262126000"><meta name="new-cookie-storage-activated" content="t"> 1653</head> 1654 1655<body id="search" class="template-search "> 1656 1657 <a class="in-page-link visually-hidden skip-link" href="#MainContent">Skip to content</a> 1658 1659 <div id="shopify-section-announcement" class="shopify-section"><div class="announcement__wrapper" 1660 data-announcement-wrapper 1661 data-section-id="announcement" 1662 data-section-type="announcement"> 1663 1664 <div class="announcement__font font--3"> 1665 <div class="announcement__bar-outer" data-bar style="--bg: var(---color-announcement-bg); --text: var(---color-announcement-text);"><div class="announcement__bar-holder" data-announcement-slider data-slider-speed="5000"> 1666 <div data-slide="7babe824-9c09-4e87-a449-3c41f95a4699" 1667 data-slide-index="0" 1668 1669class="announcement__bar" 1670 > 1671 <div data-ticker-frame class="announcement__message"> 1672 <div data-ticker-scale class="ticker--unloaded announcement__scale"> 1673 <div data-ticker-text class="announcement__text"> 1674 <p>FREE DELIVERY FOR ORDERS OVER R1500</p> 1675 </div> 1676 </div> 1677 </div> 1678 </div> 1679 </div></div> 1680 </div> 1681 </div> 1682</div> 1683 <div id="shopify-section-header" class="shopify-section"><style> 1684 :root { 1685 ---color-nav-text-transparent: #ffffff; 1686 --menu-height: calc(87px); 1687 } 1688</style> 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702<div class="header__wrapper" 1703 data-header-wrapper 1704 style="--bar-opacity: 0; --bar-width: 0; --bar-left: 0;" 1705 data-header-transparent="false" 1706 data-underline-current="false" 1707 data-header-sticky="static" 1708 data-header-style="menu_center" 1709 data-section-id="header" 1710 data-section-type="header"> 1711 1712 <header class="theme__header" role="banner" data-header-height> 1713 <div class="wrapper"> 1714 <div class="header__mobile"> 1715 1716 <div class="header__mobile__left"> 1717 <button class="header__mobile__button" 1718 data-drawer-toggle="hamburger" 1719 aria-label="Open menu" 1720 aria-haspopup="true" 1721 aria-expanded="false" 1722 aria-controls="header-menu"> 1723 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-nav" viewBox="0 0 25 25"><path d="M0 4.062h25v2H0zm0 7h25v2H0zm0 7h25v2H0z"/></svg> 1724 </button> 1725 </div> 1726 1727<div class="header__logo header__logo--image"> 1728 <a class="header__logo__link" 1729 href="/" 1730 style="width: 65px;"> 1731 1732<img data-src="//www.halouw.co.za/cdn/shop/files/Solid-Dark-Grey-Logo_{width}x.png?v=1668081732" 1733 class="lazyload logo__img logo__img--color" 1734 width="2500" 1735 height="2214" 1736 data-widths="[110, 160, 220, 320, 480, 540, 720, 900]" 1737 data-sizes="auto" 1738 data-aspectratio="1.1291779584462511" 1739 alt="Halouw Makeup Academy"> 1740 1741 1742 1743 1744 <noscript> 1745 <img class="logo__img" style="opacity: 1;" src="//www.halouw.co.za/cdn/shop/files/Solid-Dark-Grey-Logo_360x.png?v=1668081732" alt=""/> 1746 </noscript> 1747 1748 </a> 1749 </div> 1750 1751 <div class="header__mobile__right"> 1752 <a class="header__mobile__button" 1753 data-drawer-toggle="drawer-cart" 1754 href="/cart"> 1755 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-cart" viewBox="0 0 25 25"><path d="M5.058 23a2 2 0 104.001-.001A2 2 0 005.058 23zm12.079 0c0 1.104.896 2 2 2s1.942-.896 1.942-2-.838-2-1.942-2-2 .896-2 2zM0 1a1 1 0 001 1h1.078l.894 3.341L5.058 13c0 .072.034.134.042.204l-1.018 4.58A.997.997 0 005.058 19h16.71a1 1 0 000-2H6.306l.458-2.061c.1.017.19.061.294.061h12.31c1.104 0 1.712-.218 2.244-1.5l3.248-6.964C25.423 4.75 24.186 4 23.079 4H5.058c-.157 0-.292.054-.438.088L3.844.772A1 1 0 002.87 0H1a1 1 0 00-1 1zm5.098 5H22.93l-3.192 6.798c-.038.086-.07.147-.094.19-.067.006-.113.012-.277.012H7.058v-.198l-.038-.195L5.098 6z"/></svg>
1756 <span class="visually-hidden">Cart</span> 1757 1758 <span class="header__cart__status"> 1759 <span data-header-cart-price="0"> 1760 R 0.00 1761 </span> 1762 <span data-header-cart-count="0"> 1763 (0) 1764 </span> 1765 1766<span data-header-cart-full="false"></span> 1767 </span> 1768 1769 </a> 1770 </div> 1771 1772 </div> 1773 <div data-header-desktop class="header__desktop header__desktop--menu_center"><div data-takes-space class="header__desktop__bar__l"> 1774<div class="header__logo header__logo--image"> 1775 <a class="header__logo__link" 1776 href="/" 1777 style="width: 65px;"> 1778 1779<img data-src="//www.halouw.co.za/cdn/shop/files/Solid-Dark-Grey-Logo_{width}x.png?v=1668081732" 1780 class="lazyload logo__img logo__img--color" 1781 width="2500" 1782 height="2214" 1783 data-widths="[110, 160, 220, 320, 480, 540, 720, 900]" 1784 data-sizes="auto" 1785 data-aspectratio="1.1291779584462511" 1786 alt="Halouw Makeup Academy"> 1787 1788 1789 1790 1791 <noscript> 1792 <img class="logo__img" style="opacity: 1;" src="//www.halouw.co.za/cdn/shop/files/Solid-Dark-Grey-Logo_360x.png?v=1668081732" alt=""/> 1793 </noscript> 1794 1795 </a> 1796 </div> 1797</div> 1798 <div data-takes-space class="header__desktop__bar__c"> 1799 <nav class="header__menu"> 1800 <div class="header__menu__inner" data-text-items-wrapper> 1801 1802 1803 1804<div class="menu__item child" 1805 data-main-menu-text-item 1806 > 1807 <a href="/" data-top-link class="navlink navlink--toplevel"> 1808 <span class="navtext">HOME</span> 1809 </a> 1810 1811</div> 1812 1813 1814 1815 1816<div class="menu__item child" 1817 data-main-menu-text-item 1818 > 1819 <a href="/pages/about" data-top-link class="navlink navlink--toplevel"> 1820 <span class="navtext">ABOUT</span> 1821 </a> 1822 1823</div> 1824 1825 1826 1827 1828<div class="menu__item child" 1829 data-main-menu-text-item 1830 > 1831 <a href="https://www.halouw.co.za/collections/make-up-courses" data-top-link class="navlink navlink--toplevel"> 1832 <span class="navtext">MAKE-UP COURSES</span> 1833 </a> 1834 1835</div> 1836 1837 1838 1839 1840<div class="menu__item child" 1841 data-main-menu-text-item 1842 > 1843 <a href="https://academy.halouw.co.za/" data-top-link class="navlink navlink--toplevel"> 1844 <span class="navtext">ONLINE TRAINING</span> 1845 </a> 1846 1847</div> 1848 1849 1850 1851 1852<div class="menu__item parent" 1853 data-main-menu-text-item 1854 1855 aria-haspopup="true" 1856 aria-expanded="false" 1857 data-hover-disclosure-toggle="dropdown-b99ab2931327805ffec5c5873026390c" 1858 aria-controls="dropdown-b99ab2931327805ffec5c5873026390c" 1859 > 1860 <a href="/collections/all-shop-products" data-top-link class="navlink navlink--toplevel"> 1861 <span class="navtext">ONLINE SHOP</span> 1862 </a> 1863 1864 <div class="header__dropdown" 1865 data-hover-disclosure 1866 id="dropdown-b99ab2931327805ffec5c5873026390c"> 1867 <div class="header__dropdown__wrapper"> 1868 <div class="header__dropdown__inner"> 1869 1870 <a href="/collections/all-shop-products" data-stagger class="navlink navlink--child"> 1871 <span class="navtext">ALL PRODUCTS</span> 1872 </a> 1873 1874 <a href="/collections/for-the-eyes" data-stagger class="navlink navlink--child"> 1875 <span class="navtext">FOR THE EYES</span> 1876 </a> 1877 1878 <a href="/collections/for-the-face" data-stagger class="navlink navlink--child"> 1879 <span class="navtext">FOR THE FACE</span> 1880 </a> 1881 1882 <a href="/collections/for-the-lips" data-stagger class="navlink navlink--child"> 1883 <span class="navtext">FOR THE LIPS</span> 1884 </a> 1885 1886 <a href="/collections/bundle" data-stagger class="navlink navlink--child"> 1887 <span class="navtext">BUNDLES</span> 1888 </a> 1889 1890 <a href="/collections/make-up-courses" data-stagger class="navlink navlink--child"> 1891 <span class="navtext">Make-Up Courses</span> 1892 </a> 1893 1894 <a href="/collections/other-make-up-accessories" data-stagger class="navlink navlink--child">
1895 <span class="navtext">OTHER MAKE UP ACCESSORIES</span> 1896 </a> 1897 </div> 1898 </div> 1899 </div> 1900 1901</div> 1902 1903 1904 1905 1906<div class="menu__item child" 1907 data-main-menu-text-item 1908 > 1909 <a href="/pages/bridal-make-up" data-top-link class="navlink navlink--toplevel"> 1910 <span class="navtext">BRIDAL MAKE-UP</span> 1911 </a> 1912 1913</div> 1914 1915 1916 1917 1918<div class="menu__item child" 1919 data-main-menu-text-item 1920 > 1921 <a href="/pages/become-a-stockist" data-top-link class="navlink navlink--toplevel"> 1922 <span class="navtext">STOCKISTS</span> 1923 </a> 1924 1925</div> 1926 1927 1928 1929 1930<div class="menu__item child" 1931 data-main-menu-text-item 1932 > 1933 <a href="/pages/workshops" data-top-link class="navlink navlink--toplevel"> 1934 <span class="navtext">WORKSHOPS</span> 1935 </a> 1936 1937</div> 1938 1939 1940 <div class="hover__bar"></div> 1941 <div class="hover__bg"></div> 1942 </div> 1943 </nav> 1944</div> 1945 <div data-takes-space class="header__desktop__bar__r"> 1946<div class="header__desktop__buttons header__desktop__buttons--icons" > 1947 1948 1949 <div class="header__desktop__button main-menu--active" > 1950 <a href="/search" class="navlink" data-popdown-toggle="search-popdown"> 1951 1952 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-search" viewBox="0 0 16 16"><path d="M16 14.864L14.863 16l-4.24-4.241a6.406 6.406 0 01-4.048 1.392 6.61 6.61 0 01-4.65-1.925A6.493 6.493 0 01.5 9.098 6.51 6.51 0 010 6.575a6.536 6.536 0 011.922-4.652A6.62 6.62 0 014.062.5 6.52 6.52 0 016.575 0 6.5 6.5 0 019.1.5c.8.332 1.51.806 2.129 1.423a6.454 6.454 0 011.436 2.13 6.54 6.54 0 01.498 2.522c0 1.503-.468 2.853-1.4 4.048L16 14.864zM3.053 10.091c.973.972 2.147 1.461 3.522 1.461 1.378 0 2.551-.489 3.525-1.461.968-.967 1.45-2.138 1.45-3.514 0-1.37-.482-2.545-1.45-3.524-.981-.968-2.154-1.45-3.525-1.45-1.376 0-2.547.483-3.513 1.45-.973.973-1.46 2.146-1.46 3.523 0 1.375.483 2.548 1.45 3.515z"/></svg> 1953 <span class="visually-hidden">Search</span> 1954 1955 </a> 1956 </div> 1957 1958 1959 <div class="header__desktop__button " > 1960 <a href="/cart" 1961 class="navlink navlink--cart" 1962 data-drawer-toggle="drawer-cart"> 1963 1964 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-cart" viewBox="0 0 25 25"><path d="M5.058 23a2 2 0 104.001-.001A2 2 0 005.058 23zm12.079 0c0 1.104.896 2 2 2s1.942-.896 1.942-2-.838-2-1.942-2-2 .896-2 2zM0 1a1 1 0 001 1h1.078l.894 3.341L5.058 13c0 .072.034.134.042.204l-1.018 4.58A.997.997 0 005.058 19h16.71a1 1 0 000-2H6.306l.458-2.061c.1.017.19.061.294.061h12.31c1.104 0 1.712-.218 2.244-1.5l3.248-6.964C25.423 4.75 24.186 4 23.079 4H5.058c-.157 0-.292.054-.438.088L3.844.772A1 1 0 002.87 0H1a1 1 0 00-1 1zm5.098 5H22.93l-3.192 6.798c-.038.086-.07.147-.094.19-.067.006-.113.012-.277.012H7.058v-.198l-.038-.195L5.098 6z"/></svg> 1965 <span class="visually-hidden">Cart</span> 1966 1967 <span class="header__cart__status"> 1968 <span data-header-cart-price="0"> 1969 R 0.00 1970 </span> 1971 <span data-header-cart-count="0"> 1972 (0) 1973 </span> 1974 1975<span data-header-cart-full="false"></span> 1976 </span> 1977 1978 1979 </a> 1980 </div> 1981 1982 </div> 1983</div></div> 1984 </div> 1985 </header> 1986 1987 <nav class="drawer header__drawer display-none" 1988 data-drawer="hamburger" 1989 aria-label="Main menu" 1990 id="header-menu"> 1991 <div class="drawer__content"> 1992 <div class="drawer__top"> 1993 1994 1995 <div class="drawer__top__left"><form method="post" action="/localization" id="localization-form-drawer" accept-charset="UTF-8" class="header__drawer__selects" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/search" /></form></div> 1996 1997 <button class="drawer__button drawer__close" 1998 data-drawer-toggle="hamburger" 1999 aria-label="Close"> 2000 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 15 15"><g fill-rule="evenodd"><path d="M2.06 1l12.02 12.021-1.06 1.061L1 2.062z"/><path d="M1 13.02L13.022 1l1.061 1.06-12.02 12.02z"/></g></svg> 2001 </button> 2002 </div> 2003 <div class="drawer__inner" data-drawer-scrolls> 2004 2005 <div class="drawer__search" data-drawer-search> 2006 2007 2008<div data-search-popdown-wrap> 2009 <div id="search-drawer" class="search-drawer search__predictive" data-popdown-outer> 2010 <div class="item--loadbar" data-loading-indicator style="display: none;"></div> 2011 <div class="search__predictive__outer"> 2012 <div class="wrapper"> 2013 <div class="search__predictive__main"> 2014 <form class="search__predictive__form" 2015 action="/search" 2016 method="get" 2017 role="search"> 2018 <button class="search__predictive__form__button" type="submit">
2019 <span class="visually-hidden">Search</span> 2020 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-search" viewBox="0 0 16 16"><path d="M16 14.864L14.863 16l-4.24-4.241a6.406 6.406 0 01-4.048 1.392 6.61 6.61 0 01-4.65-1.925A6.493 6.493 0 01.5 9.098 6.51 6.51 0 010 6.575a6.536 6.536 0 011.922-4.652A6.62 6.62 0 014.062.5 6.52 6.52 0 016.575 0 6.5 6.5 0 019.1.5c.8.332 1.51.806 2.129 1.423a6.454 6.454 0 011.436 2.13 6.54 6.54 0 01.498 2.522c0 1.503-.468 2.853-1.4 4.048L16 14.864zM3.053 10.091c.973.972 2.147 1.461 3.522 1.461 1.378 0 2.551-.489 3.525-1.461.968-.967 1.45-2.138 1.45-3.514 0-1.37-.482-2.545-1.45-3.524-.981-.968-2.154-1.45-3.525-1.45-1.376 0-2.547.483-3.513 1.45-.973.973-1.46 2.146-1.46 3.523 0 1.375.483 2.548 1.45 3.515z"/></svg> 2021 </button> 2022 <input type="search" 2023 data-predictive-search-input 2024 name="q" 2025 value="" 2026 placeholder="Search..." 2027 aria-label="Search our store"> 2028 </form> 2029 <div class="search__predictive__close"> 2030 <button class="search__predictive__close__inner" data-close-popdown aria-label="Close"> 2031 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close-small" viewBox="0 0 15 15"><g fill-rule="evenodd"><path d="M2.237 1.073l12.021 12.021-1.414 1.414L.824 2.488z"/><path d="M.823 13.094l12.021-12.02 1.414 1.413-12.02 12.021z"/></g></svg> 2032 </button> 2033 </div> 2034 2035 <div class="search__predictive__clear"> 2036 <button class="search__predictive__close__inner" data-clear-input aria-label="Close"> 2037 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 15 15"><g fill-rule="evenodd"><path d="M2.06 1l12.02 12.021-1.06 1.061L1 2.062z"/><path d="M1 13.02L13.022 1l1.061 1.06-12.02 12.02z"/></g></svg> 2038 </button> 2039 </div> 2040 </div> 2041 </div> 2042 </div> 2043 <div class="header__search__results" data-predictive-search-results> 2044 <div class="wrapper"> 2045 <div class="search__results__empty" data-predictive-search-aria></div> 2046 <div class="search__results__outer"> 2047 2048 <div class="search__results__products"> 2049 <div class="search__results__products__title" data-product-title-wrap></div> 2050 <div class="search__results__products__list" data-product-wrap> 2051 2052 </div> 2053 </div> 2054 <div class="search__results__other"> 2055 <div class="search__results__other__list" data-collection-wrap></div> 2056 <div class="search__results__other__list" data-article-wrap></div> 2057 <div class="search__results__other__list" data-page-wrap></div> 2058 </div> 2059 </div> 2060 </div> 2061 </div> 2062 </div> 2063 2064 2065 2066
2066<script data-predictive-search-aria-template type="text/x-template"> 2067 <div aria-live="polite"> 2068 <p> 2069 2070 {{@if(it.count)}} 2071 <span class="badge">{{ it.count }}</span> 2072 {{/if}} 2073 {{ it.title }} <em>{{ it.query }}</em> 2074 2075 </p> 2076 </div> 2077 </script>
2077 2078 2079
2079<script data-predictive-search-title-template type="text/x-template"> 2080 <div class="search__results__heading"> 2081 2082 <p> 2083 <span class="search__results__title">{{ it.title }}</span> 2084 <span class="badge">{{ it.count }}</span> 2085 </p> 2086 2087 </div> 2088 </script>
2088 2089 2090
2090<script data-search-other-template type="text/x-template"> 2091 2092 {{@each(it) => object, index}} 2093 <div class="other__inline animates" style="animation-delay: {{ index | animationDelay }}ms;"> 2094 <p class="other__inline__title"> 2095 <a href="{{ object.url }}">{{ object.title | safe }}</a> 2096 </p> 2097 </div> 2098 {{/each}} 2099 2100 </script>
2100 2101 2102
2102<script data-search-product-template type="text/x-template"> 2103 2104 {{@each(it) => object, index}} 2105 <a href="{{ object.url }}" class="product__inline animates" style="animation-delay: {{ index | animationDelay }}ms;"> 2106 <div class="product__inline__image"> 2107 <img class="img-aspect-ratio" width="{{object.featured_image.width}}" height="{{ object.featured_image.height }}" alt="{{ object.featured_image.alt }}" src="{{ object.thumb }}"> 2108 </div> 2109 <div> 2110 <p class="product__inline__title"> 2111 {{ object.title | safe }} 2112 </p> 2113 <p class="product__inline__price"> 2114 <span class="price {{ object.classes }}"> 2115 {{ object.price | safe }} 2116 </span> 2117 {{@if(object.sold_out)}} 2118 <br /><em>{{ object.sold_out_translation }}</em> 2119 {{/if}} 2120 {{@if(object.on_sale)}} 2121 <span class="compare-at"> 2122 {{ object.compare_at_price | safe }} 2123 </span> 2124 {{/if}} 2125 </p> 2126 </div> 2127 </a> 2128 {{/each}} 2129 2130 </script>
2130 2131 2132</div> 2133 </div> 2134 2135 <div class="drawer__menu" data-stagger-animation data-sliderule-pane="0"> 2136 2137 2138 2139<div class="sliderule__wrapper"> 2140 <div class="sliderow" data-animates> 2141 2142<a class="sliderow__title" href="/">HOME</a> 2143 </div></div> 2144 2145 2146 2147<div class="sliderule__wrapper"> 2148 <div class="sliderow" data-animates> 2149 2150<a class="sliderow__title" href="/pages/about">ABOUT</a> 2151 </div></div> 2152 2153 2154 2155<div class="sliderule__wrapper"> 2156 <div class="sliderow" data-animates> 2157 2158<a class="sliderow__title" href="https://www.halouw.co.za/collections/make-up-courses">MAKE-UP COURSES</a> 2159 </div></div> 2160 2161 2162 2163<div class="sliderule__wrapper"> 2164 <div class="sliderow" data-animates> 2165 2166<a class="sliderow__title" href="https://academy.halouw.co.za/">ONLINE TRAINING</a> 2167 </div></div> 2168 2169 2170 2171<div class="sliderule__wrapper"><button class="sliderow" 2172 data-animates 2173 data-sliderule-open="sliderule-8176eef614f0be27ec99bf769f177e8c"> 2174 <span class="sliderow__title">ONLINE SHOP</span> 2175 <span class="sliderule__chevron--right"> 2176 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow-medium-right" viewBox="0 0 9 15"><path fill-rule="evenodd" d="M6.875 7.066L.87 1.06 1.93 0l6.006 6.005L7.94 6 9 7.06l-.004.006.005.005-1.06 1.06-.006-.004-6.005 6.005-1.061-1.06 6.005-6.006z"/></svg> 2177 <span class="visually-hidden">Expand menu</span> 2178 </span> 2179 </button> 2180 2181 <div class="mobile__menu__dropdown sliderule__panel" 2182 data-sliderule 2183 id="sliderule-8176eef614f0be27ec99bf769f177e8c"> 2184 2185 <div class="sliderow" data-animates> 2186 <button class="drawer__button" 2187 data-sliderule-close="sliderule-8176eef614f0be27ec99bf769f177e8c"> 2188 <span class="sliderule__chevron--left"> 2189 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow-medium-left" viewBox="0 0 9 15"><path fill-rule="evenodd" d="M2.127 7.066L8.132 1.06 7.072 0 1.065 6.005 1.061 6 0 7.06l.004.006L0 7.07l1.06 1.06.006-.004 6.005 6.005 1.061-1.06-6.005-6.006z"/></svg> 2190 <span class="visually-hidden">Hide menu</span> 2191 </span> 2192 </button> 2193 2194<a class="sliderow__title" href="/collections/all-shop-products">ONLINE SHOP</a> 2195 </div> 2196 2197 2198 2199 2200 2201 2202<div class="sliderule__wrapper"> 2203 <div class="sliderow" data-animates> 2204 2205<a class="sliderow__title" href="/collections/all-shop-products">ALL PRODUCTS</a> 2206 </div></div> 2207 2208 2209 2210 2211 2212<div class="sliderule__wrapper"> 2213 <div class="sliderow" data-animates> 2214 2215<a class="sliderow__title" href="/collections/for-the-eyes">FOR THE EYES</a> 2216 </div></div> 2217 2218 2219 2220 2221 2222<div class="sliderule__wrapper"> 2223 <div class="sliderow" data-animates> 2224 2225<a class="sliderow__title" href="/collections/for-the-face">FOR THE FACE</a> 2226 </div></div> 2227 2228 2229 2230 2231 2232<div class="sliderule__wrapper"> 2233 <div class="sliderow" data-animates> 2234 2235<a class="sliderow__title" href="/collections/for-the-lips">FOR THE LIPS</a> 2236 </div></div> 2237 2238 2239 2240 2241 2242<div class="sliderule__wrapper"> 2243 <div class="sliderow" data-animates> 2244 2245<a class="sliderow__title" href="/collections/bundle">BUNDLES</a> 2246 </div></div> 2247 2248 2249 2250 2251 2252<div class="sliderule__wrapper"> 2253 <div class="sliderow" data-animates> 2254 2255<a class="sliderow__title" href="/collections/make-up-courses">Make-Up Courses</a> 2256 </div></div> 2257 2258 2259 2260 2261 2262<div class="sliderule__wrapper"> 2263 <div class="sliderow" data-animates> 2264 2265<a class="sliderow__title" href="/collections/other-make-up-accessories">OTHER MAKE UP ACCESSORIES</a> 2266 </div></div> 2267 2268<div class="sliderule-grid blocks-0"> 2269 2270 </div></div></div> 2271 2272 2273 2274<div class="sliderule__wrapper"> 2275 <div class="sliderow" data-animates> 2276 2277<a class="sliderow__title" href="/pages/bridal-make-up">BRIDAL MAKE-UP</a> 2278 </div></div> 2279 2280 2281 2282<div class="sliderule__wrapper"> 2283 <div class="sliderow" data-animates> 2284 2285<a class="sliderow__title" href="/pages/become-a-stockist">STOCKISTS</a> 2286 </div></div> 2287 2288 2289 2290<div class="sliderule__wrapper"> 2291 <div class="sliderow" data-animates> 2292 2293<a class="sliderow__title" href="/pages/workshops">WORKSHOPS</a> 2294 </div></div> 2295 2296 </div> 2297 </div> 2298 </div> 2299 <span class="drawer__underlay" data-drawer-underlay>
2300 <span class="drawer__underlay__fill"></span> 2301 <span class="drawer__underlay__blur"></span> 2302 </span> 2303 </nav> 2304 2305<div data-product-add-popdown-wrapper class="product-add-popdown"></div> 2306</div> 2307 2308<div class="header__backfill" 2309 data-header-backfill 2310 style="height: var(--menu-height);"></div> 2311 2312
2313<script type="application/ld+json"> 2314{ 2315 "@context": "http://schema.org", 2316 "@type": "Organization", 2317 "name": "Halouw Makeup Academy", 2318 2319 2320 "logo": "https:\/\/www.halouw.co.za\/cdn\/shop\/files\/Solid-Dark-Grey-Logo_2500x.png?v=1668081732", 2321 2322 "sameAs": [ 2323 "", 2324 "https:\/\/www.facebook.com\/halouwmakeup", 2325 "https:\/\/www.instagram.com\/halouwmakeup\/", 2326 "", 2327 "https:\/\/youtube.com\/channel\/UCART2AOrqc0y-k77k4M_U_Q", 2328 "", 2329 "", 2330 "", 2331 "" 2332 ], 2333 "url": "https:\/\/www.halouw.co.za" 2334} 2335</script>
2335 2336 2337 2338 2339 2340</div> 2341 2342 <main class="main-content" id="MainContent"> 2343 <div id="shopify-section-template--21369038471472__main" class="shopify-section"><!-- /sections/search.liquid --><section class="wrapper--narrow pt2 pb4" data-section-type="search-page" data-section-id="template--21369038471472__main"> 2344 <div class="search__page__heading"> 2345 <!-- /snippets/search-bar.liquid --><form action="/search" method="get" class="search-bar" role="search"> 2346 <input type="hidden" name="type" value="product,page,article"> 2347 <div class="input-group input-group--inner-button"> 2348 <input class="input-group-field" 2349 type="search" 2350 name="q" 2351 value="" 2352 placeholder="Search our store" 2353 aria-label="Search our store"> 2354 <span class="input-group-button"> 2355 <button type="submit" class="btn btn--soft uppercase"> 2356 Search 2357 </button> 2358 </span> 2359 </div> 2360</form> 2361 2362</div> 2363 2364 2365</section> 2366 2367 2368</div> 2369 </main> 2370 2371 <div id="shopify-section-footer" class="shopify-section"><footer class="site-footer-wrapper" 2372 role="contentinfo" 2373 data-section-id="footer" 2374 data-section-type="footer"> 2375 2376 <div class="wrapper site-footer"> 2377 <div class="grid grid--uniform" data-accordion-group> 2378 2379 2380 2381 2382 2383 2384 <div class="grid__item medium-up--one-third footer__block" > 2385 <p class="uppercase footer__title accordion-is-open" 2386 data-accordion-trigger="accordion-linklist-1" 2387 aria-controls="accordion-linklist-1" 2388 aria-haspopup="true" 2389 aria-expanded="true"> 2390 Footer menu 2391 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow-medium-right" viewBox="0 0 9 15"><path fill-rule="evenodd" d="M6.875 7.066L.87 1.06 1.93 0l6.006 6.005L7.94 6 9 7.06l-.004.006.005.005-1.06 1.06-.006-.004-6.005 6.005-1.061-1.06 6.005-6.006z"/></svg> 2392 </p> 2393 <ul class="footer-quicklinks" data-accordion-body data-accordion-body-mobile id="accordion-linklist-1"> 2394 2395 <li><a href="/search">Search</a></li> 2396 2397 <li><a href="/pages/about">About</a></li> 2398 2399 <li><a href="/pages/become-a-stockist">Find a Stockist</a></li> 2400 2401 <li><a href="/pages/become-a-stockist">Become a Stockist</a></li> 2402 2403 </ul> 2404 </div> 2405 2406 2407 2408 2409 2410 <div class="grid__item medium-up--one-third footer__block" > 2411 <p class="uppercase footer__title " 2412 data-accordion-trigger="accordion-c8132065-9bcd-47e8-91fb-4c33deefab07-2" 2413 aria-controls="accordion-c8132065-9bcd-47e8-91fb-4c33deefab07-2" 2414 aria-haspopup="true" 2415 aria-expanded="true"> 2416 Terms 2417 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow-medium-right" viewBox="0 0 9 15"><path fill-rule="evenodd" d="M6.875 7.066L.87 1.06 1.93 0l6.006 6.005L7.94 6 9 7.06l-.004.006.005.005-1.06 1.06-.006-.004-6.005 6.005-1.061-1.06 6.005-6.006z"/></svg> 2418 </p> 2419 <ul class="footer-quicklinks" data-accordion-body data-accordion-body-mobile id="accordion-c8132065-9bcd-47e8-91fb-4c33deefab07-2"> 2420 2421 <li><a href="/pages/contact">Contact Us</a></li> 2422 2423 <li><a href="/pages/shipping-returns">Shipping | Returns | Terms of Service</a></li> 2424 2425 </ul> 2426 </div> 2427 2428 2429 2430 2431 <div class="grid__item medium-up--one-third footer__block" > 2432 <p class="uppercase footer__title accordion-is-open" 2433 data-accordion-trigger="accordion-969bf067-e160-4b00-b465-f986dfefe22e-3" 2434 aria-controls="accordion-969bf067-e160-4b00-b465-f986dfefe22e-3" 2435 aria-haspopup="true" 2436 aria-expanded="true"> 2437 Contact Us 2438 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow-medium-right" viewBox="0 0 9 15"><path fill-rule="evenodd" d="M6.875 7.066L.87 1.06 1.93 0l6.006 6.005L7.94 6 9 7.06l-.004.006.005.005-1.06 1.06-.006-.004-6.005 6.005-1.061-1.06 6.005-6.006z"/></svg> 2439 </p> 2440 <div class="rte rte--column" data-accordion-body data-accordion-body-mobile id="accordion-969bf067-e160-4b00-b465-f986dfefe22e-3"><p>âï¸ <a href="mailto:[email protected]">[email protected]</a></p><p>ð 066 235 9560 <br/><br/>ð¢ 486 Rossouw str, Die Wilgers, Pretoria, 0184</p></div> 2441 </div> 2442 2443 2444 2445 </div> 2446 2447 <div class="grid footer-secondary-wrapper"> 2448 <div class="footer-selects"><form method="post" action="/localization" id="localization-form-footer" accept-charset="UTF-8" class="popout--footer" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/search" /></form></div> 2449 2450 2451 <ul class="footer-secondary inline-list"> 2452 <li>© <a href="/" title="">Halouw Makeup Academy</a> 2026</li> 2453 2454 <li><a href="/collections/all-shop-products">SHOP</a></li> 2455 2456 <li><a href="/pages/wishlist">MY WISHLIST</a></li> 2457 2458 <li><a href="/pages/online-training">ONLINE TRAINING</a></li> 2459 2460 <li><a href="/pages/makeup-courses">COURSES</a></li> 2461 2462 2463 2464 <!-- Remove the following line to delete 'Powered by Shopify' from your footer --> 2465 <li data-powered-link><a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=p
2465oweredby&utm_medium=shopify&utm_source=onlinestore"> </a></li> 2466 <!-- Do not delete below this line --> 2467 2468 2469 </ul> 2470 2471 2472 <ul class="footer-social social-icons grid__item inline-list"> 2473<li> 2474 <a href="https://www.facebook.com/halouwmakeup" title="Facebook"> 2475 2476<svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-facebook" viewBox="0 0 20 20"><path fill="#444" d="M18.05.811q.439 0 .744.305t.305.744v16.637q0 .439-.305.744t-.744.305h-4.732v-7.221h2.415l.342-2.854h-2.757v-1.83q0-.659.293-1t1.073-.342h1.488V3.762q-.976-.098-2.171-.098-1.634 0-2.635.964t-1 2.72V9.47H7.951v2.854h2.415v7.221H1.413q-.439 0-.744-.305t-.305-.744V1.859q0-.439.305-.744T1.413.81H18.05z"/></svg> 2477 <span class="visually-hidden">Facebook</span> 2478 </a> 2479 </li> 2480 2481<li> 2482 <a href="https://www.tiktok.com/@halouwmakeupacademy?_t=8XBskeixRHK&_r=1" title="Tiktok"> 2483 2484<svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-tiktok" viewBox="0 0 19 19"><path d="M12.917 1c.289 2.412 1.674 3.85 4.083 4.004v2.713c-1.396.133-2.619-.311-4.04-1.148v5.075c0 6.447-7.232 8.461-10.14 3.84-1.867-2.973-.723-8.19 5.27-8.4v2.862a8.879 8.879 0 00-1.391.331c-1.333.439-2.089 1.26-1.879 2.708.404 2.775 5.641 3.596 5.206-1.825V1.005h2.891V1z" fill="#000" fill-rule="evenodd"/></svg> 2485 <span class="visually-hidden">Tiktok</span> 2486 </a> 2487 </li> 2488 2489<li> 2490 <a href="https://www.instagram.com/halouwmakeup/" title="Instagram"> 2491 2492<svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-instagram" viewBox="0 0 20 20"><path d="M10.034 1.763h2.644c.407 0 .881 0 1.424.068.474 0 .881.067 1.152.135.271.068.543.136.678.203.271.068.475.204.61.34.136.135.34.27.543.406.203.204.339.34.407.543.067.203.203.406.339.61.067.203.135.407.203.678.068.27.135.678.135 1.152 0 .543.068 1.017.068 1.424v5.288c0 .407 0 .882-.068 1.424 0 .474-.067.881-.135 1.152-.068.272-.136.543-.203.678a1.31 1.31 0 01-.34.61c-.135.204-.27.34-.406.543-.204.203-.34.339-.543.407a2.38 2.38 0 01-.61.27 7.737 7.737 0 01-.678.204 4.868 4.868 0 01-1.152.136c-.543 0-1.017.068-1.424.068H7.39c-.407 0-.882 0-1.424-.068-.474 0-.881-.068-1.152-.136-.272-.067-.543-.135-.678-.203-.272-.068-.475-.203-.61-.271-.204-.136-.34-.271-.543-.407-.203-.203-.339-.339-.407-.542-.135-.204-.203-.407-.339-.61a8.558 8.558 0 01-.203-.679 4.868 4.868 0 01-.136-1.152c0-.542-.067-1.017-.067-1.424V7.322c0-.407 0-.881.067-1.424
24920-.474.068-.881.136-1.152.068-.271.135-.543.203-.678.068-.204.204-.407.34-.61.135-.204.27-.34.406-.543.203-.203.339-.339.542-.407.204-.135.407-.203.61-.339.204-.067.407-.135.679-.203a4.868 4.868 0 011.152-.135c.542 0 1.017-.068 1.424-.068h2.644zm0-1.763H7.322c-.407 0-.881 0-1.424.068-.542 0-1.017.068-1.356.135-.406.068-.745.204-1.084.34-.34.135-.61.27-.95.474-.27.203-.542.407-.813.678-.271.271-.542.542-.678.881-.136.34-.339.543-.475.882-.135.339-.27.678-.339 1.084a6.993 6.993 0 00-.135 1.356C0 6.441 0 6.915 0 7.322v5.356c0 .407 0 .881.068 1.424 0 .542.068 1.017.135 1.356.068.406.204.745.34 1.084.135.34.27.61.474.95.203.27.407.542.678.813.271.271.542.475.813.678.272.203.61.339.95.475.339.135.678.203 1.084.339.407.067.814.135 1.356.135.543 0 1.017.068 1.424.068h5.424c.407 0 .881 0 1.423-.068.543 0 1.017-.068 1.356-.135.407-.068.746-.204 1.085-.34.34-.135.61-.27.95-.474.27-.203.542-.407.88-.678.272-.271.475-.542.679-.881.203-.271.339-.61.474-.882.136-.339.204-.678.271-1.084.068-.407.136-.814.136-1.424 0-.542.068-1.017.068-1.424V7.254c0-.407 0-.881-.068-1.423 0-.543-.068-1.017-.136-1.424-.067-.407-.203-.746-.27-1.085a6.199 6.199 0 00-.475-.95c-.204-.338-.407-.541-.678-.813a4.353 4.353 0 00-.882-.678c-.27-.203-.61-.339-.949-.474-.339-.136-.678-.271-1.085-.34-.406-.067-.813-.135-1.356-.135h-1.423C12.27 0 11.39 0 10.034 0zm0 4.881c-.746 0-1.356.136-2.034.407-.61.271-1.153.61-1.627 1.085C5.898 6.847 5.559 7.39 5.288 8a4.863 4.863 0 00-.407 1.966c0 .746.136 1.356.407 2.034.271.61.61 1.153 1.085 1.627.474.475 1.017.814 1.627 1.085.61.271 1.288.407 2.034.407.746 0 1.356-.136 2.034-.407a4.57 4.57 0 001.627-1.085c.474-.474.813-1.017 1.085-1.627.27-.61.406-1.288.406-2.034 0-.678-.135-1.356-.406-1.966-.272-.61-.61-1.153-1.085-1.627-.475-.475-1.017-.814-1.627-1.085-.61-.271-1.356-.407-2.034-.407zm0 8.475c-.95 0-1.695-.34-2.373-.95-.678-.677-.95-1.423-.95-2.372 0-.881.34-1.695.95-2.373.61-.678 1.424-1.017 2.373-1.017.949 0 1.695.339 2.373 1.017.678.678.949 1.424.949 2.373 0 .949-.34 1.695-.95 2.373-.677.61-1.49.949-2.372.949zm6.508-8.678c0-.339-.135-.61-.339-.814a1.25 1.25 0 00-.813-.339c-.34 0-.61.136-.814.34a1.25 1.25 0 00-.339.813c0 .271.136.61.34.881.203.272.542.34.813.34.339 0 .61-.136.813-.34.204-.27.34-.61.34-.881z"/></svg> 2493 <span class="visually-hidden">Instagram</span> 2494 </a> 2495 </li> 2496 2497 2498 2499<li> 2500 <a href="https://youtube.com/channel/UCART2AOrqc0y-k77k4M_U_Q" title="YouTube"> 2501 2502<svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-youtube" viewBox="0 0 21 20"><path fill="#444" d="M-.196 15.803q0 1.23.812 2.092t1.977.861h14.946q1.165 0 1.977-.861t.812-2.092V3.909q0-1.23-.82-2.116T17.539.907H2.593q-1.148 0-1.969.886t-.82 2.116v11.894zm7.465-2.149V6.058q0-.115.066-.18.049-.016.082-.016l.082.016 7.153 3.806q.066.066.066.164 0 .066-.066.131l-7.153 3.806q-.033.033-.066.033-.066 0-.098-.033-.066-.066-.066-.131z"/></svg> 2503 <span class="visually-hidden">YouTube</span> 2504 </a> 2505 </li> 2506 2507</ul> 2508 2509 2510 2511 2512 </div> 2513 </div> 2514</footer> 2515 2516 2517</div> 2518 2519 <div id="shopify-section-popups" class="shopify-section"><!-- /sections/popups.liquid --></div> 2520 2521 <div class="search--popdown"> 2522 2523 2524<div data-search-popdown-wrap> 2525 <div id="search-popdown" class="search-popdown search__predictive" data-popdown-outer> 2526 <div class="item--loadbar" data-loading-indicator style="display: none;"></div> 2527 <div class="search__predictive__outer"> 2528 <div class="wrapper"> 2529 <div class="search__predictive__main"> 2530 <form class="search__predictive__form" 2531 action="/search" 2532 method="get" 2533 role="search"> 2534 <button class="search__predictive__form__button" type="submit"> 2535 <span class="visually-hidden">Search</span> 2536 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-search" viewBox="0 0 16 16"><path d="M16 14.864L14.863 16l-4.24-4.241a6.406 6.406 0 01-4.048 1.392 6.61 6.61 0 01-4.65-1.925A6.493 6.493 0 01.5 9.098 6.51 6.51 0 010 6.575a6.536 6.536 0 011.922-4.652A6.62 6.62 0 014.062.5 6.52 6.52 0 016.575 0 6.5 6.5 0 019.1.5c.8.332 1.51.806 2.129 1.423a6.454 6.454 0 011.436 2.13 6.54 6.54 0 01.498 2.522c0 1.503-.468 2.853-1.4 4.048L16 14.864zM3.053 10.091c.973.972 2.147 1.461 3.522 1.461 1.378 0 2.551-.489 3.525-1.461.968-.967 1.45-2.138 1.45-3.514 0-1.37-.482-2.545-1.45-3.524-.981-.968-2.154-1.45-3.525-1.45-1.376 0-2.547.483-3.513 1.45-.973.973-1.46 2.146-1.46 3.523 0 1.375.483 2.548 1.45 3.515z"/></svg> 2537 </button> 2538 <input type="search" 2539 data-predictive-search-input 2540 name="q" 2541 value="" 2542 placeholder="Search..." 2543 aria-label="Search our store"> 2544 </form> 2545 <div class="search__predictive__close"> 2546 <button class="search__predictive__close__inner" data-close-popdown aria-label="Close"> 2547 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close-small" viewBox="0 0 15 15"><g fill-rule="evenodd"><path d="M2.237 1.073l12.021 12.021-1.414 1.414L.824 2.488z"/><path d="M.823 13.094l12.021-12.02 1.414 1.413-12.02 12.021z"/></g></svg> 2548 </button> 2549 </div> 2550 2551 <div class="search__predictive__clear"> 2552 <button class="search__predictive__close__inner" data-clear-input aria-label="Close"> 2553 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 15 15"><g fill-rule="evenodd"><path d="M2.06 1l12.02 12.021-1.06 1.061L1 2.062z"/><path d="M1 13.02L13.022 1l1.061 1.06-12.02 12.02z"/></g></svg> 2554 </button> 2555 </div> 2556 </div> 2557 </div> 2558 </div> 2559 <div class="header__search__results" data-predictive-search-results> 2560 <div class="wrapper"> 2561 <div class="search__results__empty" data-predictive-search-aria></div> 2562 <div class="search__results__outer"> 2563 2564 <div class="search__results__products"> 2565 <div class="search__results__products__title" data-product-title-wrap></div> 2566 <div class="search__results__products__list" data-product-wrap> 2567 2568 </div> 2569 </div> 2570 <div class="search__results__other"> 2571 <div class="search__results__other__list" data-collection-wrap></div> 2572 <div class="search__results__other__list" data-article-wrap></div> 2573 <div class="search__results__other__list" data-page-wrap></div> 2574 </div> 2575 </div> 2576 </div> 2577 </div> 2578 </div> 2579 2580 2581 <span class="drawer__underlay" data-search-underlay></span> 2582 2583 2584
2584<script data-predictive-search-aria-template type="text/x-template"> 2585 <div aria-live="polite"> 2586 <p> 2587 2588 {{@if(it.count)}} 2589 <span class="badge">{{ it.count }}</span> 2590 {{/if}} 2591 {{ it.title }} <em>{{ it.query }}</em> 2592 2593 </p> 2594 </div> 2595 </script>
2595 2596 2597
2597<script data-predictive-search-title-template type="text/x-template"> 2598 <div class="search__results__heading"> 2599 2600 <p> 2601 <span class="search__results__title">{{ it.title }}</span> 2602 <span class="badge">{{ it.count }}</span> 2603 </p> 2604 2605 </div> 2606 </script>
2606 2607 2608
2608<script data-search-other-template type="text/x-template"> 2609 2610 {{@each(it) => object, index}} 2611 <div class="other__inline animates" style="animation-delay: {{ index | animationDelay }}ms;"> 2612 <p class="other__inline__title"> 2613 <a href="{{ object.url }}">{{ object.title | safe }}</a> 2614 </p> 2615 </div> 2616 {{/each}} 2617 2618 </script>
2618 2619 2620
2620<script data-search-product-template type="text/x-template"> 2621 2622 {{@each(it) => object, index}} 2623 <a href="{{ object.url }}" class="product__inline animates" style="animation-delay: {{ index | animationDelay }}ms;"> 2624 <div class="product__inline__image"> 2625 <img class="img-aspect-ratio" width="{{object.featured_image.width}}" height="{{ object.featured_image.height }}" alt="{{ object.featured_image.alt }}" src="{{ object.thumb }}"> 2626 </div> 2627 <div> 2628 <p class="product__inline__title"> 2629 {{ object.title | safe }} 2630 </p> 2631 <p class="product__inline__price"> 2632 <span class="price {{ object.classes }}"> 2633 {{ object.price | safe }} 2634 </span> 2635 {{@if(object.sold_out)}} 2636 <br /><em>{{ object.sold_out_translation }}</em> 2637 {{/if}} 2638 {{@if(object.on_sale)}} 2639 <span class="compare-at"> 2640 {{ object.compare_at_price | safe }} 2641 </span> 2642 {{/if}} 2643 </p> 2644 </div> 2645 </a> 2646 {{/each}} 2647 2648 </script>
2648 2649 2650</div> 2651 </div> 2652 2653 2654
2654<script data-swatch-template type="text/x-template"> 2655 2656 <span class="swatch__button" data-swatch-button> 2657 <input type="radio" 2658 name="grouped" 2659 value="{{ it.color }}" 2660 id="{{ it.uniq }}"> 2661 <label for="{{ it.uniq }}" 2662 data-swatch="{{ it.color }}" 2663 data-swatch-variant="{{ it.variant }}" 2664 data-swatch-image="{{ it.image }}"> 2665 <span class="visually-hidden">{{ it.color }}</span> 2666 </label> 2667 </span> 2668 2669 </script>
2669 2670 2671 <div data-modal-container></div><!-- Paste popup code or third party scripts below this comment line ============== --> 2672 2673 2674 <!-- And above this comment line ================================================== --> 2675 2676 <!-- Cart count badge --> 2677 <style> 2678 .cart-icon-wrap { 2679 position: relative; 2680 display: inline-flex; 2681 } 2682 .cart-count-badge { 2683 position: absolute; 2684 top: -8px; 2685 right: -10px; 2686 background-color: red; 2687 color: #fff; 2688 font-size: 10px; 2689 font-weight: 700; 2690 line-height: 1; 2691 min-width: 18px; 2692 height: 18px; 2693 padding: 0 4px; 2694 border-radius: 50%; 2695 display: flex; 2696 align-items: center; 2697 justify-content: center; 2698 z-index: 2; 2699 pointer-events: none; 2700 } 2701 </style> 2702
2702<script> 2703 (function() { 2704 function updateBadges(count) { 2705 // Find all cart icon SVGs in both desktop and mobile 2706 var svgs = document.querySelectorAll('.navlink--cart .icon-cart, .header__mobile__button[data-drawer-toggle="drawer-cart"] .icon-cart'); 2707 svgs.forEach(function(svg) { 2708 var wrap = svg.parentElement; 2709 // Wrap SVG in a relative container if not already 2710 if (!wrap.classList.contains('cart-icon-wrap')) { 2711 var wrapper = document.createElement('span'); 2712 wrapper.className = 'cart-icon-wrap'; 2713 svg.parentNode.insertBefore(wrapper, svg); 2714 wrapper.appendChild(svg); 2715 wrap = wrapper; 2716 } 2717 var badge = wrap.querySelector('.cart-count-badge'); 2718 if (!badge) { 2719 badge = document.createElement('span'); 2720 badge.className = 'cart-count-badge'; 2721 wrap.appendChild(badge); 2722 } 2723 if (count > 0) { 2724 badge.textContent = count; 2725 badge.style.display = 'flex'; 2726 } else { 2727 badge.style.display = 'none'; 2728 } 2729 }); 2730 } 2731 2732 function getInitialCount() { 2733 var el = document.querySelector('[data-header-cart-count]'); 2734 if (el) return parseInt(el.getAttribute('data-header-cart-count'), 10) || 0; 2735 return 0; 2736 } 2737 2738 function init() { 2739 updateBadges(getInitialCount()); 2740 } 2741 2742 if (document.readyState === 'loading') { 2743 document.addEventListener('DOMContentLoaded', init); 2744 } else { 2745 init(); 2746 } 2747 2748 document.addEventListener('theme:cart:change', function(e) { 2749 if (e.detail && e.detail.cart) { 2750 updateBadges(e.detail.cart.item_count); 2751 } 2752 }); 2753 })(); 2754 </script>
2754 2755 2756 2757
2757<script> 2758console.log("[MU Debug] Cart update listener registered"); 2759 2760document.addEventListener("cart:updated", function(e) { 2761 console.log("[MU Debug] cart:updated fired", e); 2762 console.log("[MU Debug] detail:", e.detail); 2763 console.log("[MU Debug] items:", e.detail?.items); 2764 2765 var items = e.detail.items; 2766 var totalQty = items.reduce(function(sum, item) { return sum + item.quantity; }, 0); 2767 var totalPrice = items.reduce(function(sum, item) { return sum + (item.final_line_price || item.line_price || 0); }, 0); 2768 2769 console.log("[MU Debug] totalQty:", totalQty, "totalPrice:", totalPrice); 2770 2771 var badge = document.querySelector('.cart-count-badge'); 2772 console.log("[MU Debug] badge element:", badge); 2773 if (badge) { 2774 badge.textContent = totalQty; 2775 badge.style.display = totalQty > 0 ? 'flex' : 'none'; 2776 } 2777 2778 var countEl = document.querySelector('[data-header-cart-count]'); 2779 console.log("[MU Debug] countEl:", countEl); 2780 if (countEl) { 2781 countEl.setAttribute('data-header-cart-count', totalQty); 2782 countEl.textContent = '(' + totalQty + ')'; 2783 } 2784 2785 var priceEl = document.querySelector('[data-header-cart-price]'); 2786 console.log("[MU Debug] priceEl:", priceEl); 2787 if (priceEl) { 2788 priceEl.setAttribute('data-header-cart-price', totalPrice); 2789 var formatted = (totalPrice / 100).toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ','); 2790 priceEl.textContent = 'R ' + formatted; 2791 } 2792 2793 var fullEl = document.querySelector('[data-header-cart-full]'); 2794 if (fullEl) { 2795 fullEl.setAttribute('data-header-cart-full', totalQty > 0 ? 'true' : 'false'); 2796 } 2797}); 2798 2799// Also try the addToCartCallBack as a fallback 2800window.addToCartCallBack = function(item, items) { 2801 console.log("[MU Debug] addToCartCallBack fired"); 2802 console.log("[MU Debug] item:", item); 2803 console.log("[MU Debug] items:", items); 2804}; 2805</script>
2805 2806<style> .pjn-infolink {display: table;} .pjn-container .pjn-text {display: block;} .btn--outline {background-color: #fd74a1; border: #fd74a1; color: #ffffff;} .btn--outline:hover {background-color: #f7c1d3; border: #fd74a1; color: #ffffff;} </style> 2807<div id="shopify-block-AYkpjcWFINkF3RWlJV__1513253815146976218" class="shopify-block shopify-app-block"> 2808</div><div id="shopify-block-AOVZnQW5mK0NnVTBwM__256236489e14bcb488" class="shopify-block shopify-app-block"><!-- Growave Theme extension Embed section --> 2809 2810 <!-- BEGIN app snippet: socialshopwave-helper-v2 -->
2810<script> 2811 if (!window.gw) { 2812 window.gw = {}; 2813 } 2814 2815 if(!window.gw.customizations) { 2816 window.gw.customizations = []; 2817 2818 window.gw.registerWidgetCustomization = (selectWidget, customizeWidget) => { 2819 window.gw.customizations.push([ 2820 selectWidget, 2821 customizeWidget 2822 ]) 2823 } 2824 } 2825 2826 if (window.gw.browserTimeDiffMs === undefined) { 2827 window.gw.browserTimeDiffMs = 0; 2828 } 2829 2830 if (window.gw.useLegacyAdapter === undefined) { 2831 window.gw.useLegacyAdapter = false; 2832 } 2833</script>
2833 2834 2835 2836 2837<div class="gw-widget-placeholder-LC-wrapper" style="display: block"> 2838 <div class="gw-widget-placeholder-LC"></div> 2839</div> 2840<div class="gw-widget-placeholder-RC-wrapper" style="display: block"> 2841 <div class="gw-widget-placeholder-RC"></div> 2842</div> 2843<div class="gw-widget-placeholder-BR-wrapper" style="display: block"> 2844 <div class="gw-widget-placeholder-BR"></div> 2845</div> 2846<div class="gw-widget-placeholder-BL-wrapper" style="display: block"> 2847 <div class="gw-widget-placeholder-BL"></div> 2848</div> 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864
2864<script type="text/json" id="common.critical.Points.en"> 2865 {"points_name_singular":"Point","points_name_plural":"Points"} 2866 </script>
2866 2867 2868 2869 2870 2871 2872
2872<script type="text/json" id="reviews.critical.AverageReviewsWidget.en"> 2873 {"write_a_review":"Write a review","ask_a_question":"Ask a question"} 2874 </script>
2874 2875 2876 2877 2878 2879 2880
2880<script type="text/json" id="reviews.critical.ReviewsStarRatingWidget.en"> 2881 {"write_a_review":"Write a review","ask_a_question":"Ask a question","no_reviews":"No reviews","review":"review"} 2882 </script>
2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892
2892<script type="text/json" id="reviews.critical.ReviewsDrawerWidget.en"> 2893 {"drawer_title":"Our Reviews","drawer_button_title":"Reviews","write_a_review":"Write a review","sort_by":"Sort by:","shop_reviews":"Shop reviews","product_reviews":"Reviews"} 2894 </script>
2894 2895 2896 2897 2898 2899 2900
2900<script type="text/json" id="reviews.critical.ReviewsPageWidget.en"> 2901 {"shop_reviews":"Shop Reviews","product_reviews":"Product Reviews","search":"Search...","customer_reviews_title":"Customer Reviews","reviews":"Reviews","sort_by":"Sort by:","write_a_review":"Write a review"} 2902 </script>
2902 2903 2904 2905 2906 2907 2908
2908<script type="text/json" id="reviews.critical.ReviewsProductPageWidget.en"> 2909 {"ask_a_question":"Ask a question","sort_by":"Sort by:","write_a_review":"Write a review","filter_by":"Filter","questions_main_title":"Questions","reviews":"Reviews","customer_reviews_title":"Customer Reviews","questions":"Questions"} 2910 </script>
2910 2911 2912 2913 2914 2915 2916
2916<script type="text/json" id="reviews.critical.ReviewsSliderWidget.en"> 2917 {"slider_title":"Our customers love us","from_reviews":"from {{count}} reviews"} 2918 </script>
2918 2919 2920 2921 2922 2923 2924
2924<script type="text/json" id="rewards.critical.RewardsPopUpWidget.en"> 2925 {"sign_in":"Sign in","join_now_label":"Join now","launcher_label":"Rewards","join_program":"Join the Loyalty Program to enjoy exclusive rewards!","have_an_account":"Already have an account?","customer_balance":"Your balance:","points_expiration":"Expiration: {{date}}","welcome_to_program":"Welcome to"} 2926 </script>
2926 2927 2928 2929 2930 2931 2932
2932<script type="text/json" id="rewards.critical.RewardsJoinNowModalWidget.en"> 2933 {"description":"Sign up for exciting bonuses!","join_now_label":"Join now","title":"You are welcome to join our loyalty program!"} 2934 </script>
2934 2935 2936 2937 2938 2939 2940
2940<script type="text/json" id="rewards.critical.RewardsVerifyAccountModalWidget.en"> 2941 {"description":"Thanks for joining us! We just sent a verification link to <br /> your email. Click on it and get reward!ð","title":"Verify your account!"} 2942 </script>
2942 2943 2944 2945 2946 2947 2948
2948<script type="text/json" id="rewards.critical.RewardsEarnPointsProductPageWidget.en"> 2949 {"earn_points_on_purchase":"Earn {{points}} {{points_name}} on this purchase.","learn_more":"Learn more","earn_store_credits_on_purchase":"Earn {{store_credits}} store credit on this purchase.","reward_applied":"applied","reward_redeem":"Redeem","reward_undo":"Undo","reward_unlocked":"You have unlocked","sign_in":"Sign in","sign_in_available_reward":"Sign in to discover available reward","spending_rules_fixed_amount_reward":"{{amount}} reward","spending_rules_fixed_percentage_reward":"{{discount}}% discount","spending_rules_fixed_store_credit_reward":"{{amount}} store credit","spending_rules_flexible_amount_reward":"{{amount}} reward","spending_rules_flexible_percentage_reward":"{{discount}}% discount","spending_rules_free_shipping_reward":"Free shipping discount","spending_rules_gift_card_reward":"{{amount}} gift card","spending_rules_product_discount_max_reward":"Free product discount","spending_rules_product_discount_variable_reward":"{{discount}}% on this product","away_from_reward":"You're <strong>{{points_needed}}</strong> away from your reward"} 2950 </script>
2950 2951 2952 2953 2954 2955 2956
2956<script type="text/json" id="wishlist.critical.WishlistPageWidget.en"> 2957 {"header_title":"My Wishlists","link_copied_label":"Link copied","sort_low_to_high_price":"Price Low-High","sort_z_to_a_product_title":"Name Z-A","delete_wishlist_button_accessibility_label":"Delete wishlist","sort_hight_to_low_price":"Price High-Low","sort_recently_added":"Recently added","sort_a_to_z_product_title":"Name A-Z","save_wishlist_button_text":"Save my wishlist","social_share_label":"Share:","add_wishlist_button_text":"Add a new list","edit_wishlist_button_accessibility_label":"Edit wishlist","save_wishlist_button_accessibility_label":"Save wishlist","empty_state_title":"Nothing added to wishlist.","add_to_cart_button_label":"Add to cart","show_in_cart_button_label":"Show in cart","sold_out_label":"Out of stock","browse_products":"Browse products","sort_by":"Sort by:","filter_by":"Filter by:","filter_all":"All","filter_available":"Available"} 2958 </script>
2958 2959 2960 2961 2962 2963 2964
2964<script type="text/json" id="wishlist.critical.SharedWishlistPageWidget.en"> 2965 {"show_in_cart_button_label":"Show in cart","sold_out_label":"Out of stock","edit_wishlist_button_accessibility_label":"Edit wishlist","title":"Shared wishlists","save_wishlist_button_accessibility_label":"Save wishlist","delete_wishlist_button_accessibility_label":"Delete wishlist","empty_state_title":"Nothing added to wishlist.","browse_products":"Browse products","add_to_cart_button_label":"Add to cart"} 2966 </script>
2966 2967 2968 2969 2970 2971 2972
2972<script type="text/json" id="wishlist.critical.WishlistDrawerWidget.en"> 2973 {"drawer_button_label":"Wishlist","drawer_button_label_gift_registry":"Gift registry"} 2974 </script>
2974 2975 2976 2977 2978 2979 2980
2980<script type="text/json" id="wishlist.critical.SaveWishlistModalWidget.en"> 2981 {"save_wishlist_button_text":"Save my wishlist","subscribe_for_newsletter":"Receive price drop and restock updates"} 2982 </script>
2982 2983 2984 2985 2986 2987 2988
2988<script type="text/json" id="wishlist.critical.AddToWishlistProductCardWidget.en"> 2989 {"remove_from_wishlist_button_accessibility_label":"Remove from wishlist","add_to_wishlist_button_accessibility_label":"Add to wishlist"} 2990 </script>
2990 2991 2992 2993 2994 2995 2996
2996<script type="text/json" id="wishlist.critical.AddToWishlistButtonWidget.en"> 2997 {"add_to_wishlist_button_accessibility_label":"Add to wishlist","remove_from_wishlist_button_accessibility_label":"Remove from wishlist"} 2998 </script>
2998 2999 3000 3001 3002 3003 3004
3004<script type="text/json" id="wishlist.critical.AddToWishlistProductPageWidget.en"> 3005 {"add_to_wishlist_button_text":"Add to wishlist","remove_from_wishlist_button_text":"Remove from wishlist","added_to_wishlist_button_text":"Added to wishlist"} 3006 </script>
3006 3007 3008 3009 3010 3011 3012
3012<script type="text/json" id="wishlist.critical.GoToWishlistPageHeaderWidget.en"> 3013 {"open_wishlist_page_button_accessibility_label":"Go to wishlist page"} 3014 </script>
3014 3015 3016 3017 3018 3019 3020
3020<script type="text/json" id="wishlist.critical.WishlistsWidget.en"> 3021 {"add_list_button":"Add a new list","main_title":"Wishlist","main_title_gift_registry":"Gift registry"} 3022 </script>
3022 3023 3024 3025 3026 3027 3028
3028<script type="text/json" id="instagram.critical.InstagramGalleryWidget.en"> 3029 {"view_on_instagram":"View on Instagram","shop_it":"SHOP IT","prev":"Prev","next":"Next","description":"Description","load_more":"Load more"} 3030 </script>
3030 3031 3032 3033 3034 3035 3036
3036<script type="text/json" id="tiktok.critical.TikTokGalleryWidget.en"> 3037 {"view_on_tiktok":"View on TikTok","shop_it":"SHOP IT","description":"Description","load_more":"Load more"} 3038 </script>
3038 3039 3040 3041 3042 3043 3044
3044<script type="text/json" id="giftRegistry.critical.AddToRegistryProductPageWidget.en"> 3045 {"add_to_registry":"Add to registry","added_to_registry":"Added to registry"} 3046 </script>
3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063
3063<script id="gift_registry_critical:gift_registry_settings" type="text/json"> 3064 {"isRegistrantAddressRequired":true,"shareChannelTypes":[{"channelName":"copyShareLink","isEnabled":true},{"channelName":"email","isEnabled":true},{"channelName":"pinterest","isEnabled":true},{"channelName":"facebook","isEnabled":true},{"channelName":"twitter","isEnabled":true},{"channelName":"whatsapp","isEnabled":true}]} 3065 </script>
3065 3066 3067
3067<script id="growave_critical:account_UI" type="text/json"> 3068 {"canUseAccountUI":false} 3069 </script>
3069 3070 3071
3071<script id="growave_critical:b2b" type="text/json"> 3072 {"canUseB2B":false} 3073 </script>
3073 3074 3075
3075<script id="growave_critical:checkout_UI" type="text/json"> 3076 {"canUseCheckoutUI":false} 3077 </script>
3077 3078 3079
3079<script id="growave_critical:customer_account_version" type="text/json"> 3080 {"customerAccountVersion":"CLASSIC"} 3081 </script>
3081 3082 3083
3083<script id="growave_critical:nudges_status" type="text/json"> 3084 {"isEnabled":false} 3085 </script>
3085 3086 3087
3087<script id="growave_critical:watermark" type="text/json"> 3088 {"canShowWatermark":false} 3089 </script>
3089 3090 3091
3091<script id="reviews_critical:questions_settings" type="text/json"> 3092 {"isQuestionCaptchaEnabled":false,"isSomeoneAskQuestionTriggerEnabled":true,"isNotificationsAboutQuestionEnabled":true,"customerDisplayNamePolicy":"fullName"} 3093 </script>
3093 3094 3095
3095<script id="reviews_critical:reviews_branding" type="text/json"> 3096 {"reviewsThemeSettings":{"primaryColor":"#1D2939","secondaryColor":"#ffffff"},"reviewsIconSettings":{"starColor":"#FCCA3C","iconType":"default"},"reviewsDrawerSettings":{"drawerPosition":"LC","launcherBackgroundColor":"secondaryColor","launcherFontColor":"#1a1a1a","launcherIconBackgroundColor":"#1a1a1a","device":"allDevices"},"reviewsWidgetsSettings":{"buttonsColor":"primaryColor","reviewsWidgetLayout":"LL","fontColor":"#ffffff"},"productAvgRatingWidgetSettings":{"widgetVisibility":"show","widgetDisplayStyle":"showTextStarsAndQuestion","showStarsDistributionOnHover":false}} 3097 </script>
3097 3098 3099
3099<script id="reviews_critical:reviews_settings" type="text/json"> 3100 {"canUseTranslation":true,"isReviewTitleEnabled":false,"isReviewTitleRequired":true,"isReviewsVotingEnabled":true,"isReviewsPinningEnabled":true,"isReviewsTranslationEnabled":false,"defaultSortingOption":"mostRelevant","isReviewsMediaEnabled":true,"isUniteReviewsOriginProductEnabled":false,"isReviewEditingEnabled":false,"customerDisplayNamePolicy":"fullName","isVideoReviewsEnabled":false,"isVerifiedBuyerLabelEnabled":true,"isVerifiedBuyerByMerchantLabelEnabled":true,"isImportedLabelEnabled":true,"isIncentivizedLabelEnabled":false,"isProductReviewsSummaryEnabled":false,"isConsentRequired":false,"consentPolicyUrl":null} 3101 </script>
3101 3102 3103
3103<script id="rewards_critical:rewards_branding" type="text/json"> 3104 {"general":{"theme":{"primaryColor":"#1d2939","secondaryColor":"#00baea"},"buttons":{"themeColor":"primaryColor","fontColor":"#ffffff"},"content":{"iconsThemeColor":"primaryColor","linksThemeColor":"primaryColor"},"widget":{"type":"popUpWidget"}},"popUpWidget":{"launcher":{"appearance":{"themeColor":"primaryColor","fontColor":"#ffffff","style":"iconWithText"},"icon":{"type":"default","color":"#ffffff","customUrl":null},"visibility":{"device":"allDevices"},"position":{"placement":"BR","desktop":{"side":45,"bottom":10},"mobile":{"side":20,"bottom":10}}},"popUpContent":{"view":"home","banner":{"programName":"Halouw Makeup Academy","themeColor":"primaryColor","fontColor":"#ffffff","image":null}}}} 3105 </script>
3105 3106 3107
3107<script id="rewards_critical:rewards_customers_eligibility" type="text/json"> 3108 {"type":"include","tags":[],"isEnabled":false,"showWidgetsToGuests":false} 3109 </script>
3109 3110 3111
3111<script id="rewards_critical:rewards_pos_settings" type="text/json"> 3112 {"isEnabled":false,"codeType":"barcode_2d","isWalletPassEnabled":false} 3113 </script>
3113 3114 3115
3115<script id="rewards_critical:rewards_programs_status" type="text/json"> 3116 {"pointsProgramEnabled":false,"referralProgramEnabled":false,"tiersProgramEnabled":false,"b2bProgramEnabled":false} 3117 </script>
3117 3118 3119
3119<script id="rewards_critical:rewards_settings" type="text/json"> 3120 {"generalSettings":{"isPointsExpirationEnabled":false,"isApplyDiscountViaButton":true,"isCustomersCanSelfRefund":false,"isRewardsConsentRequired":false,"pointsDecimalPlaces":2,"rewardPageHandle":null,"isStoreCreditEnabled":false},"referralShareChannels":[{"channelType":"facebookShare","isEnabled":true},{"channelType":"twitterShare","isEnabled":true},{"channelType":"whatsAppShare","isEnabled":true},{"channelType":"facebookMessengerShare","isEnabled":true},{"channelType":"pinterestShare","isEnabled":true},{"channelType":"emailShare","isEnabled":true,"title":"Your friend sent you a reward from {{shop_name}}","message":"Join me in discovering the best of {{shop_name}}. Enjoy your {{reward_type}} by following this link: {{link}} "}]} 3121 </script>
3121 3122 3123
3123<script id="rewards_critical:rewards_storefront_state" type="text/json"> 3124 {"hasFaqs":true} 3125 </script>
3125 3126 3127
3127<script id="rewards_critical:reward_page_availability" type="text/json"> 3128 {"canUseRewardPage":false} 3129 </script>
3129 3130 3131
3131<script id="wishlist_critical:wishlist_branding" type="text/json"> 3132 {"wishlistThemeSettings":{"primaryColor":"#1d2939","secondaryColor":"#00baee"},"wishlistIconSettings":{"heartColor":"#ef3251","backgroundColor":"#ffffff","iconType":"default","customIcons":{"isEnabled":false,"filledImage":null,"outlinedImage":null}},"wishlistButtonSettings":{"borderRadius":2,"color":"primaryColor","fontColor":"#1a1a1a","style":"outlined","isCounterEnabled":true},"wishlistDrawerAndPageSettings":{"device":"allDevices","drawerPosition":"R","launcherBackgroundColor":"#ffffff","launcherFontColor":"#1a1a1a","launcherIconBackgroundColor":"primaryColor","buttonsColor":"primaryColor","buttonsStyle":"outlined","buttonsFontColor":"#1a1a1a","buttonsBorderRadius":2,"linkColor":"secondaryColor"}} 3133 </script>
3133 3134 3135
3135<script id="wishlist_critical:wishlist_settings" type="text/json"> 3136 {"isWishlistEnabled":true,"isDuplicateWishlistEnabled":false,"isWishlistDrawerEnabled":false,"isDisabledForGuests":false,"isSaveWishlistEnabled":true,"isWishlistSocialShareEnabled":true,"wishlistSocialShareChannels":[{"channelName":"copyShareLink","isEnabled":true},{"channelName":"email","isEnabled":true},{"channelName":"facebook","isEnabled":true},{"channelName":"pinterest","isEnabled":true},{"channelName":"twitter","isEnabled":true},{"channelName":"whatsapp","isEnabled":true}],"isCreateDraftOrderFromListEnabled":false,"isListsApprovalByCompanyMembersEnabled":false,"isEditListsByCompanyMembersEnabled":true,"isEditProductQuantityEnabled":false,"isWishlistApprovalRequestNotificationEnabled":false,"isWishlistApprovalCompletedNotificationEnabled":false} 3137 </script>
3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154<!-- TODO use theme settings from the variables --> 3155 3156
3157<script id="gw-additional-info" type="application/json"> 3158 { 3159 "FEATURES": { 3160 "moneyFormat": "R {{amount}}", 3161 "moneyWithCurrencyFormat": "R {{amount}} ZAR", 3162 "shopCurrency": "ZAR", 3163 "currencySymbol": "R", 3164 "availableApps": ["social-login","reviews","instagram","wishlist"], 3165 "storefrontApiAccessToken": "df93adc76d70d82cecea2fc2c24539ad" , 3166 "countryIsoCode": "ZA", 3167 "languageIsoCode": "EN", 3168 "currencyIsoCode": "ZAR", 3169 "gwI18nLocale": "en", 3170 "shopName": "Halouw Makeup Academy", 3171 "isShadowRootDisabledGlobally": false, 3172 "storefrontLoginUrl": "\/customer_authentication\/login?return_to=%2Fsearch\u0026locale=en\u0026ui_hint=full\u0026region_country=ZA" 3173 }, 3174 "GW_CUSTOMER_INFO": null , 3175 "GW_PRODUCT_INFO": { 3176 "productId": null , 3177 "variantId": null , 3178 "defaultVariantId": null 3179 }, 3180 "GW_SHOP_BRAND_INFO": { 3181 "logoUrl": null 3182 } 3183 } 3184</script>
3184 3185
3186<script> 3187 if (window.GW_GROWAVE_LOADED) { 3188 throw new Error("Growave embeds conflict") 3189 } 3190 if (document && document.cookie && document.cookie.includes("GW_DISABLED=true")) { 3191 console.warn("Growave is disabled by cookie") 3192 } else { 3193 window.GW_GROWAVE_LOADED = true; 3194 3195 3196 let GW_BUNDLE_URL="https://static.growave.io/growave-build/main.11f6de6c.js"; 3197 const GW_DEV_GROWAVE_BUNDLE_URL = localStorage.getItem("GW_DEV_GROWAVE_BUNDLE_URL"); 3198 if (GW_DEV_GROWAVE_BUNDLE_URL) { 3199 GW_BUNDLE_URL = GW_DEV_GROWAVE_BUNDLE_URL; 3200 } 3201 if (!GW_BUNDLE_URL) { 3202 throw new Error("Url for bundle not found!") 3203 } 3204 window.gwWebpackGlobal = window.gwWebpackGlobal || {}; 3205 const mainScript = document.createElement("script"); 3206 mainScript.defer = true; 3207 mainScript.type="module"; 3208 mainScript.src=GW_BUNDLE_URL; 3209 document.body.appendChild(mainScript); 3210 } 3211</script>
3211 3212<!-- END app snippet --> 3213 3214 3215 3216</div><div id="shopify-block-ARjVicGFWZlR2eEcxc__8208493610395315515" class="shopify-block shopify-app-block"><div></div> 3217 3218 3219</div><div id="shopify-block-ANklrbk8rTzNJS0MyN__4095653568973655092" class="shopify-block shopify-app-block"><link rel="preconnect" href="https://productreview.myappgurus.com" crossorigin> 3220<link rel="dns-prefetch" href="https://productreview.myappgurus.com">
3221<script> 3222 window.toptenmyappgurusreview = null; 3223 window.myappgurusreviewsettings = "{\"removeWaterMark\":\"0\",\"noReviewStarcolor\":\"#ffc800\",\"reviewRestrictions\":[\"no_restrictions\"],\"reviewStarcolor\":\"#030303\",\"noStarPatter\":[\"empty_stars\"],\"fillStarPatter\":[\"star_with_rating\"],\"reviewListingPattern\":[\"grid\"],\"reviewListSorting\":[\"newest_to_oldest\"],\"allowVideoUploads\":false,\"restrictPersonalInfo\":true,\"customCss\":null,\"approveReviews\":[\"0\"],\"deliveryBasedRequests\":[\"0\"],\"showAllreViewPageWidget\":true,\"discountTypeEligibleFor\":[\"only_buyers\"],\"discountEmailEligibleFor\":[\"anyone\"],\"discountValidityEligible\":[\"never\"],\"allowSliderAllPages\":false,\"enableCustomerReviewConfirmaionNotifications\":false,\"userId\":23992}"; 3224</script>
3224 3225 3226 3227 3228
3228<script class="mag-product-review-summary"> 3229 3230 [{"productId":"7989183217968","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"10074964427056","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"7988705427760","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8005504041264","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8839524942128","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8005543526704","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8839590773040","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9717643477296","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8005371396400","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"7989176500528","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8005533958448","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8470800007472","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9081119801648","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8470759440688","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8470769500464","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9934581793072","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8470789685552","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"7989125644592","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9717639250224","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9717641838896","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"7989115453744","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9543642841392","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9717650293040","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"7989164802352","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8832683999536","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8832736002352","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8983721410864","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"7989187379504","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"7989162672432","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9495598629168","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8565462991152","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8596294369584","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8005386797360","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8005522784560","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"7988625637680","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8596262486320","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9267833405744","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""}
3230,{"productId":"8596283785520","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9829887672624","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"7988624097584","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8571256144176","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8005532287280","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9859182297392","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"7988704215344","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"7988700905776","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9816741544240","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9829881282864","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"9533829742896","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8005544149296","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8919238345008","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"15267713745200","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""},{"productId":"8565489434928","average":"0","totalCount":0,"oneStar":0,"twoStar":0,"threeStar":0,"fourStar":0,"fiveStar":0,"updated_at":""} 3231 3232 3233 3234 ] 3235 </script>
3235 3236 3237 3238
3239<script type="text/javascript"> 3240 window.myappgurus = window.myappgurus || {}; 3241 if(typeof(window.myappgurus) != undefined) { 3242 window.myappgurus.prm = { 3243 "product_review" : "", 3244 "hide_star": "false", 3245 "slider_duration": "4", 3246 "form": { 3247 "block_heading": "Customer Review", 3248 "no_rating": "Be The First Person To Review", 3249 "subtitle2": "Reviews", 3250 "review_btn": "Write A Review", 3251 "see_all_reviews": "See All Reviews", 3252 "form_heading": "Write Your Experience", 3253 "validation_message": { 3254 "file_type": "Select only jpeg, jpg, png or gif file", 3255 "file_size": "File size must be less then 2MB for upload", 3256 "blank_review": "Please Give Rating." 3257 }, 3258 "form_fields": { 3259 "name": "Name", 3260 "email": "Email", 3261 "review_title": "Review Title", 3262 "review_description": "Review Description", 3263 "ratings": "Ratings", 3264 "delivery_ratings": "Delivery review", 3265 "payment_ratings": "Payment review", 3266 "price_ratings": "Price review", 3267 "review_image": "Review Image", 3268 "review_image_video": "Select Image or Video For Review", 3269 "submit_btn": "Submit Review", 3270 "cancel_btn": "Cancel", 3271 "submit_button_clicked": "Submitting review...", 3272 "success_message": "Your review has been submitted successfully. It will appear once approved by the store owner.", 3273 "sortbtn": "Sort", 3274 "sort1": "Verified first", 3275 "sort2": "Newest to Oldest", 3276 "sort3": "Oldest to Newest", 3277 "showing": "showing", 3278 "to": "to", 3279 "of": "of", 3280 "results": "results", 3281 } 3282 }, 3283 "star": { 3284 "no_ratings" : "No Ratings" 3285 }, 3286 "review_slider": { 3287 "label": "Reviews From Customers" 3288 }, 3289 "powered_by": { 3290 "label": "Powered By:" 3291 }, 3292 "form_elements": { 3293 "name": "false", 3294 "title": "false", 3295 "image": "false", 3296 } 3297 } 3298 } 3299</script>
3299 3300 3301 3302</div><div id="shopify-block-ATlhkY0g2TTMrQ090O__3770645089152979137" class="shopify-block shopify-app-block">
3302<script> 3303 window.rpsCSBShopifySettings = { 3304 pickerEnabled: false, 3305 iconColor: "#ff5189", 3306 buttonBackgroundColor: "#fd74a1", 3307 position: "above", 3308 placeholder: "Search", 3309 width: 195, 3310 height: 25, 3311 showOnDesktop: true, 3312 zIndexMobile: null, 3313 zIndexDesktop: null, 3314 showOnMobile: true, 3315 hideDefaultSearch: true, 3316 selectors: {"161412284720":".theme__header .wrapper"}, 3317 defaultInputValue: '' 3318 }; 3319</script>
3319 3320 3321<div id="rps-csb-root"></div> 3322 3323<link rel="stylesheet" href="https://cdn.shopify.com/extensions/01a0f221-d33c-7f04-a210-d57fd63e6029/rapid-search-421/assets/csb.css"> 3324 3325<style> 3326 .rps-csb-margin-right { 3327 margin-right: var(--rps-csb-search-bar-width) !important; 3328 } 3329 3330 .rps-csb-margin-left { 3331 margin-left: var(--rps-csb-search-bar-width) !important; 3332 } 3333 3334 .rps-csb-margin-bottom { 3335 margin-bottom: var(--rps-csb-search-bar-height) !important; 3336 } 3337 3338 .rps-csb-margin-top { 3339 margin-top: var(--rps-csb-search-bar-height) !important; 3340 } 3341</style> 3342 3343<style> 3344 3345</style> 3346 3347 3348</div>
3348<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
3348 3349</body> 3350</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.