PageSourceSearch

https://www.halouw.co.za/search

html halouw.co.za collected 2026-10-06 04:18:47 UTC 224,376 bytes, 3,350 lines download raw bytes

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>&copy; <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&amp;utm_medium=shopify&amp;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.