PageSourceSearch

https://pinkzebrahome.com/login.php

html pinkzebrahome.com collected 2026-09-26 03:20:46 UTC 523,738 bytes, 8,136 lines download raw bytes

1<!DOCTYPE html>
2<html class="no-js" lang="en">
3    <head>
4        <title>Pink Zebra Home - Sign in</title>
5        <link rel="dns-prefetch preconnect" href="https://cdn11.bigcommerce.com/s-9khen3dncu" crossorigin><link rel="dns-prefetch preconnect" href="https://fonts.googleapis.com/" crossorigin><link rel="dns-prefetch preconnect" href="https://fonts.gstatic.com/" crossorigin>
6        <meta name="description" content="Ready to change your life? Join Pink Zebra and become a Consultant today!"><meta name='platform' content='bigcommerce.stencil' />
7        
8
9
10        <style type="text/css" media="screen, print">
11            @font-face {
12                font-family: "Northwell";
13                src: url("https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/fonts/Northwell.ttf");
14            }
15            @font-face {
16                font-family: "Poppins-Regular";
17                src: url("https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/fonts/Poppins-Regular.ttf");
18            }
19            @font-face {
20                font-family: "Fresh Mango";
21                src: url("https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/fonts/FreshMango-regular.ttf");
22            }
23            @font-face {
24                font-family: "Fresh Mango Italic";
25                src: url("https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/fonts/FreshMango-italic.ttf");
26            }
27        </style>
28         
29        
29<script>
30	window.PZ_API_EP = {
31		'consultant': {
32			'personalInfo': 'consultants/personal_info',
33			'isCancelledConsultant': 'consultants/is_cancelled_consultant',
34			'getConsultantInfo': 'consultants/get_consultant_info',
35			'removeSFProduct': 'consultants/remove_scent_flirt_products_from_cart',
36			'checkSFSubscription': 'consultants/check_scentflirt_subscription',
37			'findByFields': 'consultants/find_by_fields',
38			'downLineReport': 'consultants/downline_report',
39			'downLineReportExport': 'consultants/downline_report/export',
40			'profile': 'consultants/profile',
41			'bankDetails': 'consultants/banking_details',
42			'dashboard': 'consultants/dashboard',
43			'notifications': 'consultants/notifications',
44			'promotion': 'consultants/promotion',
45			'orders': 'consultants/orders',
46			'ordersReportExport': 'consultants/orders_report/export',
47			'customerReport': 'consultants/customer_report',
48			'customerReportExport': 'consultants/customers_report/export',
49			'addUserHandles': 'consultants/add_user_handles',
50			'validateWebsite': 'consultants/business-info/validate',
51			'sampleProgramStatus': 'sample_program/join/status',
52			'sampleProgramSubscribe': 'sample_program/join/subscribe',
53			'sampleProgramMetrics': 'sample_program/consultants/sample-metrics',
54			'sampleProgramOrders': 'sample_program/consultants/sample-orders',
55			'shipComValidate': 'consultants/shipcom/validate',
56			'checkWebsiteFeePaid': 'consultants/consultant/fee_paid',
57			'checkConsultantChangeEligibility': 'consultants/check_consultant_change_eligibility',
58			'changeConsultant': 'consultants/change_consultant',
59			'checkSubscriptionConsultantChangeEligibility': 'consultants/check_subscription_consultant_change_eligibility',
60			'changeSubscriptionConsultant': 'consultants/change_subscription_consultant',
61		},
62		'sampleProgram': {
63			'checkCustomerEligibility': 'sample_program/check_eligibility',
64		},
65		'contact': {
66			'setLegalAddress': '/contacts/legal-address',
67			'getLegalAddress': '/contacts/get-legal-address',
68			'getConsultant': 'contacts/get-consultant',
69			'validateContact': 'contacts/validate_contact',
70			'createCustomer': 'contacts/create_customer',
71			'customerDetails': 'contacts/customer_details',
72			'contactRewards': 'contacts/rewards',
73			'registerConsent': 'contacts/register_consent',
74			'getConsentStatus': 'contacts/check_consent'
75		},
76		'cart': {
77			'addMeta': 'carts/meta',
78			'getCartMetaFields': 'carts/:cartId/meta',
79		},
80		'join': {
81			'proccessJoinCart': 'joins/proccess_join_cart',
82			'verifyConsultant': 'joins/consultants/verify',
83			'applyDiscount': 'joins/checkout/apply-discount',
84			'businessInfoValidate': 'consultants/business-info/validate',
85			'rules': 'joins/rules',
86			'cart': 'joins/cart',
87			'cartDetails': 'joins/cart/details',
88			'cartCategories': 'joins/cart/categories',
89			'cartCategoriesProducts': 'joins/cart/categories/products',
90			'cartProducts': 'joins/cart/:joinCartId/products',
91			'recommendedProducts': 'joins/cart/recommended-products',
92		},
93		'checkout': {
94			'activeRewards': 'checkout/active_rewards',
95			'validateAddress': 'checkout/validate_address',
96			'applyRewards': 'checkout/apply_rewards',
97			'binCheck': 'checkout/bin_check',
98			'binCheckStored': 'checkout/bin_check_stored',
99		},
100		'segment': {
101			'setCustomerSegment': 'segments/add_customer_segment',
102			'setCustomerSegmentForce': 'segments/add_customer_segment_force',
103			'getCustomerSegment': 'segments/get_customer_segments',
104			'isCustomerInSegment': 'segments/is_customer_in_segment'
105		},
106		'sitevibe': {
107			'customerReferral': 'sitevibes/customer_referrals',
108			'getCustomerReferral': 'sitevibes/customer_referrals?email=:email',
109		},
110		'subscription': {
111			'newPromo': 'subscriptions/new_promotion',
112			'cancel': 'subscriptions/cancel',
113			'pause': 'subscriptions/pause',
114			'list': 'subscriptions/list',
115			'info': 'subscriptions/info',
116			'check_instrument': 'subscriptions/check_instrument',
117			'subscription_by_order': 'subscriptions/subscription_by_order',
118			'update_instrument_token': 'subscriptions/update_instrument_token',
119			'update_shipping_address': 'subscriptions/update_shipping_address',
120			'appendBundleProduct': 'subscriptions/append_bundle_product',
121			'removeBundleProduct': 'subscriptions/remove_bundle_product',
122			'updateBundleProduct': 'subscriptions/update_bundle_product',
123			'invoices': 'subscriptions/list_invoices',
124			'payments': 'subscriptions/list_payments',
125			'customerFailedInvoices': 'subscriptions/all_failed_invoices',
126			'invoicePaymentStatus': 'subscriptions/invoice_payment_status',
127			'bill_new_invoice': 'subscriptions/bill_new_invoice',
128			'retry_invoice': 'subscriptions/retry_fail_payment',
129			'subscriptions_without_instrument': 'subscriptions/subscriptions_without_instrument',
130			'bcd_availability': 'subscriptions/bcd_availability',
131			'change_bcd': 'subscriptions/change_bcd',
132		},
133		'ticket': {
134			'topics': 'tickets/topics',
135			'create': 'tickets/create',
136			'list': 'tickets/list',
137		},
138		'order': {
139			'validateChangeRep': 'orders/validate_change_rep',
140			'changeRep': 'orders/change_rep',
141			'orderDetails': 'orders/:orderId',
142			'checkOverride': 'orders/check_order_override_status',
143		},
144		'parties': {
145			'getPartyId': 'parties/get_party_id',
146			'list': 'parties/list',
147			'close': 'parties/close',
148		},
149		'report': {
150			'getCycleInfo': 'consultants/reports/cycles_info',
151			'getReportGenerationStatus': 'consultants/reports/generation_status',
152			'getReportFile': 'consultants/reports/get_report_file',
153			'generateFinancialReport': 'consultants/reports/financial_report'
154		},
155		'shipments': {
156			'checkOrderShippingDate': 'shipments/check_order_shipping_days',
157		},
158		'featureAccess': {
159			'evaluate': 'settings/features-access',
160			'list': 'settings/features-access-list'
161		}
162	};
163
164	function fillUrl(url, params) {
165		return url.replace(/:([a-zA-Z]+)/g, (_, key) => params[key]);
166	}
167
168	// window.PZ_API_EP.order.orderDetails
169</script>
169        <link href="https://cdn11.bigcommerce.com/s-9khen3dncu/product_images/favicon.png?t&#x3D;1738339656" rel="shortcut icon">
170        <meta name="viewport" content="width=device-width, initial-scale=1">
171        
171<script type="application/json" id="bc-store-data">
172            {
173                "fbAppId": "270454785773283",
174                "checkoutId": "",
175                "gqlApiHeaders": {
176                    "Content-Type": "application/json",
177                    "Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjaWQiOlsxXSwiY29ycyI6WyJodHRwczovL3Bpbmt6ZWJyYWhvbWUuY29tIl0sImVhdCI6MTc5MDUwNjc1NiwiaWF0IjoxNzkwMzMzOTU2LCJpc3MiOiJCQyIsInNpZCI6MTAwMjU0ODA5MCwic3ViIjoiQkMiLCJzdWJfdHlwZSI6MCwidG9rZW5fdHlwZSI6MX0.Dbbz5Ky_KmgYOqRNc1mNuklCGA8U9ANSp2dp5XrHfP_fERT3ZwmFrRT_ZM97Q6g0oEvbpO9Q1zJRl-0DJN1jjA"
178                },
179                "webPackPublicPath": "https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/dist/"
180            }
181        </script>
181
182        
182<script>
183            fetch('/api/storefront/carts', {credentials: 'include'})
184            .then(function(response) {return response.json();})
185            .then(async myJson => {
186                window.CART__ID =  myJson.length > 0 ? myJson[0].id : null;
187            })
188            .catch(error => console.error('Request failed', error));
189        </script>
189
190        
190<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/data-loader.js"></script>
vendor: 72 bytes, lines 190-191
190
191        <script async src="https://www.googletagmanager.com/gtag/js?id=
191G-9YLBCB8HM1
vendor: 20 bytes, lines 191-192
191"></script>
192        
192<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/marketing/marketing.js"></script>
192
193        
193<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
193
194        
194<script defer src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/gsap.min.js"></script>
194
195        
195<script defer src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/ScrollTrigger.min.js"></script>
195
196        
196<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
196
197        
197<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/audit/journey-config.js"></script>
197
198        
198<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/audit/journey-recorder.js"></script>
198
199        
199<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/modules/base-setup.js"></script>
199
200        
200<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/modules/fetch-customer-consultant.js"></script>
200
201        
201<script>
202            // Global fallback from Theme Settings
203            window.THEME_CATEGORY_SORT = "BEST_SELLING";
204            
205            // Map of labels for sorting values
206            window.SORT_LABELS = {
207                "FEATURED": "Featured Items",
208                "NEWEST": "New Arrivals",
209                "BEST_SELLING": "Best Sellers",
210                "A_TO_Z": "A to Z",
211                "Z_TO_A": "Z to A",
212                "BEST_REVIEWED": "Top Rated",
213                "LOWEST_PRICE": "Price Low to High",
214                "HIGHEST_PRICE": "Price High to Low"
215            };
216        </script>
216
217        
217<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/settings.js"></script>
217
218        
218<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/cache/cache-config.js"></script>
218
219        
219<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/cache/pz-idb.js"></script>
219
220        
220<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/cache/tab-lock.js"></script>
220
221        
221<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/cache/segments-cache.js"></script>
221
222        
222<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/cache/consent-cache.js"></script>
222
223        
223<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/cache/feature-access-cache.js"></script>
223
224        
224<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/cache/parties-cache.js"></script>
224
225        
225<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/cache/subscriptions-cache.js"></script>
225
226        
226<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/cache/rewards-cache.js"></script>
226
227        
227<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/cache/referrals-cache.js"></script>
227
228        
228<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/cache/tickets-cache.js"></script>
228
229        
229<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/global/classes/cart-handler.js"></script>
229
230        
230<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/global/classes/login-handler.js"></script>
230
231        
231<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/global/classes/consultant-handler.js"></script>
231
232        
232<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/global/classes/shogun-products-handler.js"></script>
232
233        
233<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/global/classes/subscription-handler.js"></script>
233
234
235        
235<script async src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/dist/theme-bundle.head_async.js"></script>
235
236        
237        <link href="https://fonts.googleapis.com/css?family=Lato:700,500,400&display=block" rel="stylesheet">
238        
239        
239<script async src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/dist/theme-bundle.font.js"></script>
239
240        
240<script defer src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/library/slick.min.js"></script>
240
241        
241<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/modules/axios-request-handler.js"></script>
241
242        
243        <link data-stencil-stylesheet href="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/css/theme-e3eb3260-99a2-013f-8035-366d5547be73.css" rel="stylesheet">
244        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.css">
245        
245<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/modules/global-functions.js"></script>
245
246        <!-- Start Tracking Code for analytics_siteverification -->
247
248<meta name="google-site-verification" content="xr1-ov0_OylCXT8RiDgGSL5zu3rxXVo90eZ-yk2R0Ok" />
249
250<!-- End Tracking Code for analytics_siteverification -->
251
252
253<script type="text/javascript" src="https://checkout-sdk.bigcommerce.com/v1/loader.js" defer ></script>
vendor: 77 bytes, lines 253-254
253
254<script src="https://www.google.com/recaptcha/api.js" async defer></script>
255<script type="text/javascript">
256var BCData = {};
257</script>
257
258
259<script data-cfasync="false" data-dd-sm-ignore="true" data-cookieconsent="ignore" id="wsa-tag-manager-tags" nonce="">
260</script >
261
262</script>
vendor: 2 bytes, line 262
262
263<script data-cfasync="false" data-dd-sm-ignore="true" data-cookieconsent="ignore" id="wsa-tag-manager-javascript-h-test" nonce="">!function(w,d){if(d.location.href.indexOf('showHidden=true')<0&&d.location.href.indexOf('shogun.page/previews')<0){w.TagRocket=w.TagRocket||{};var T=w.TagRocket;T.teh=[];w.onerror=function(m,s,l,c,e){T.teh.push((l?(l+' '):'')+(c?(c+' '):'')+m+(m.colno?(':'+m.colno):'')+(s?(' '+s):''));};function a(s){var e=d.createElement('script'),h=d.getElementsByTagName('head')[0];e.appendChild(d.createTextNode(s));h.insertBefore(e,h.firstChild)}a('()=>{};window.arrowFunctions=1');a('async function a(){};window.asyncFunctions=1');var m=new Date().toISOString(),q='wsa-tag-manager-javascript-',z;T.tah=function(s){w.dataLayer=w.dataLayer||[];if(!w.gtag){w.gtag=function(){dataLayer.push(arguments)};gtag('js',new Date);t=d.createElement('script');t.async=!0;t.setAttribute('src','https://www.googletagmanager.com/gtag/js?id=G-7XTJM93TLW');d.head.appendChild(t)};if(!w.wsa_tre){var n='denied';gtag('consent',{functionality_storage:n,ad_storage:n,analytics_storage:n,ad_user_data:n,ad_personalization:n,personalization_storage:n,security_storage:n});gtag('config',"G-7XTJM93TLW",{groups:'TagRocketErrorTracking',send_page_view:false});gtag('config',"G-0XNHDCESR7",{groups:'TagRocketErrorTracking',send_page_view:false});gtag('event','tag_rocket_error',{send_to:["G-0XNHDCESR7"],description:'Script Failure',app_version:'3.48.21',tag_rocket_version:'1.95',ua:navigator.userAgent});};w.wsa_tre=1;if(w.console)console.error('Tag Rocket (h): '+s,T.teh);T.teh.forEach(function(e){gtag('event','app_error',{send_to:'G-7XTJM93TLW',scope:s,description:s+' 3.48.21 h '+e,message:'h '+e,app_version:'3.48.21',automatic:1,tag_rocket_version:'1.95',pagedatetime:m,datetime:m,ua:navigator.userAgent,tags:"|unknown",environment:'Production'})})};p=function(){if(!T.ts&&!d.getElementById(q+'second'))T.tah('Header Script Missing');else if(!T.tss)T.tah('Header Script Failure1');else if(!T.ts)T.tah('Header Script Failure2');if(!T.tm&&!d.getElementById(q+'main'))T.tah('Footer Script Missing');else if(!T.tm)T.tah('Footer Script Failure')};if(w.addEventListener)w.addEventListener('DOMContentLoaded',p);else w.attachEvent('onDOMContentLoaded',p)}}(window,document)</script>
263               
264<script data-cfasync="false" data-dd-sm-ignore="true" data-cookieconsent="ignore" id="wsa-tag-manager-javascript-second" nonce="">
265/*
266    Web Site Advantage: Tag Rocket App 1 of 2 Head [1.95.88286] Proprietary Runtime
267    https://bigcommerce.websiteadvantage.com.au/tag-rocket/
268    Licensed for use only by authorised Web Site Advantage customers.
269    Copyright (C) 2020 - 2026 Web Site Advantage Pty Ltd.
270*/
271
272!function(w,d){if(d.location.href.indexOf('showHidden=true')<0&&d.location.href.indexOf('shogun.page/previews')<0){w.TagRocket=w.TagRocket||{};var T=w.TagRocket;T.tss=1;T.tags='gads|ga4|tiktok';T.l='';var eet=new Date,eei=0,eer=0,eea='G-7XTJM93TLW';T.ecq=[];T.ec=function(){if(T.consent.analytics)gtag.apply(null,arguments);else T.ecq.push(arguments)};T.a=function(s,e,c,o){if(T.bae)return;try{if(!eei){eei=1;if(!w.gtag){w.gtag=function(){dataLayer.push(arguments)}}T.ec('config',eea,{groups:'TagRocketErrorTracking',send_page_view:false})}if(!eer){eer=1;T.ct=c;if(w.console)console.error('Tag Rocket: '+s+': '+e,o||'');T.ct=1;var z=e?e.substring(0,255):'-missing-';T.ec('event','app_error',{send_to:eea,scope:s,description:s+' 3.48.21 '+z,message:z,app_version:'3.48.21',automatic:1,tag_rocket_version:'1.95',pagedatetime:eet.toISOString(),datetime:new Date().toISOString(),ua:navigator.userAgent,tags:T.countryCode+'|'+T.tags,timesinceload:new Date-eet,environment:'Production'});eer=0}}catch(x){try{T.ec('event','app_error',{send_to:eea,scope:'AppErrorError',description:'3.48.21 '+x,message:''+x,app_version:'3.48.21',tag_rocket_version:'1.95',pagedatetime:eet.toISOString(),datetime:new Date().toISOString(),ua:navigator.userAgent,tags:T.countryCode+'|'+T.tags,timesinceload:new Date-eet,environment:'Production'})}catch(y){}}};T.eq=T.eq||[];if(w.addEventListener){w.addEventListener('error',function(){T.ef.apply(T,arguments)},{passive:!0,capture:!1})}else if(w.attachEvent){w.attachEvent('onerror',function(){T.ef.apply(T,arguments)})}if(!T.ef){T.ef=function(){T.eq.push(arguments)}};if(!T.cf){T.cq=T.cq||[];T.cf=function(){T.cq.push(arguments)};if(w.console){T.ce=console.error;console.error=function(){T.ce.apply(console,arguments);T.cf.apply(T,arguments)}}};try{T.et=function(a){return typeof a!=='undefined'};T.dQ='NewPromotionsAdded';T.el=[];T.em=0;T.cA=function(){T.ek(function(a){a.forEach(function(b){T.e(b.addedNodes,function(c){if(T.bw(c,T.bo)=='promotion'&&T.bv(c,'found')){T.el.push(c)}T.e(T.ei(c,"["+T.bo+"='promotion']"),function(e){if(T.bv(e,'found')){T.el.push(e)}})})});if(T.be(T.el)&&!T.em){T.N(function(){T.em=T.aU(function(){T.em=0;T.f(T.dQ,{elements:T.el});T.el=[]},100,'New Promotions Added')})}})};T.ed=[];T.ee=0;T.eg=function(a){T.e(a,function(b){T.ed=T.ed.concat(T.bl(b));if(T.bw(b,T.bo)=='list'&&T.eh(b)&&T.bv(b,'found')){T.ed.push(b)}T.e(T.ei(b,"["+T.bo+"='list']"),function(c){if(T.eh(c)&&T.bv(c,'found')){T.ed.push(c)}})})};T.ej=function(){T.N(function(){if(T.be(T.ed)){if(T.ee)T.dY(T.ee);T.ee=T.aU(function(){T.f(T.df,{elements:T.ed});T.ed=[];T.ee=0},500,'New Products Added')}})};T.cz=function(e){T.ek(function(f){f.forEach(function(g){T.eg(g.addedNodes)});T.ej()},e||d.body)};T.df='NewProductsAdded';T.aS='UserDataUpdated';T.bB=function(a){return d.querySelector(a)};T.bC=function(a){return d.getElementById(a)};T.ep=function(a){return d.createElement(a)};T.ei=function(a,b){if(!a.querySelectorAll)return[];var c=a.querySelectorAll(b);if(Array.from)return Array.from(c);else return c};T.bn=function(a){return T.ei(d,a)};T.eh=function(a){var b=T.bw(a,T.bp);return b&&!isNaN(parseInt(b,10))};T.E=function(a){return T.et(a)&&a!==null};T.w=function(a){return a===0||(T.E(a)&&a!==''&&!isNaN(a))};T.ev=function(a){var b=String.fromCodePoint;if(b){return b(a)}return ''};T.eu=function(a,b,c){var e=[].slice.call(a).map(function(f){if(c||typeof(f)==='function')return f;try{return T.D(f)}catch(g){if(Array.isArray(f)){return[].concat(f)}else return f}});if(T.be(e)){e[0]=T.ev(b)+' %cTag Rocket: %c'+e[0];e.splice(1,0,'color:none;');e.splice(1,0,'color:#28a300;')}return e};T.ck=function(){if(w.console)console.warn.apply(console,T.eu(arguments,0x1F6A8,1))};T.cL=function(){if(w.console)console.error.apply(console,T.eu(arguments,0x26A0,1))};T.an=function(a,b){return a.sort(function(c,e){return e.price*e.quantity-c.price*c.quantity}).slice(0,b)};T.cT=function(a,b,c,e){var f,g=function(h){if(h>=T.be(a))c&&c();else T.aU(function(){T.t('SB95',function(){f=b(a[h],h);if(T.et(f))c&&c(f);else g(h+1)},1)},0,'Yield '+h+' '+e)};g(0)};T.e=function(a,b){var c,e,f=T.be(a);if(a&&f)for(c=0;c<f;c++){e=b(a[c],c);if(T.et(e))return e}};T.V=function(a,b){if(a)return a.indexOf(b)>-1};T.dq=function(a,b){if(a&&T.be(a))for(var c=0;c<T.be(a);c++){if(a[c]===b)return true}};T.en=function(a,b,c){a.setAttribute(b,c)};T.p=function(a,b,c){if(T.E(c)&&c!=='')a[b]=c};T.cv=function(a,b){if(!b||!a)return a;var c=b.split('.'),e=a[c.shift()];return T.cv(e,c.join('.'))};T.t=function(a,b,c,e){if(!T.block){try{c&&b.apply(this,e)}catch(f){T.a(a,''+f,1,f)}}};T.by=function(a,b,c,e){var f,g=function(){if(f){clearInterval(f);f=0};T.t.call(this,'SB24',c,1,arguments)};if(b==T.aa&&d.readyState!="loading"){T.aU(g,0,T.aa+' has passed')}else{e=e||{};if(!T.E(e.passive)){e.passive=!0}if(b==T.aa){f=T.bF('SB98',1,function(){if(d.readyState!="loading"){clearInterval(f);f=0;T.aU(g,0,T.aa+' detected by interval')}},50)}a.addEventListener&&a.addEventListener(b,g,e)||a.attachEvent&&a.attachEvent('on'+b,g)}};T.Z=function(a,b){T.by(w,a,function(){if(!b.done){b.done=1;b()}},{once:!0})};T.cb=function(a,b){try{return JSON.stringify(a,b)}catch(c){throw ''+T.cb.caller+' '+c}};T.ch=function(a){return a&&JSON.parse(a)};T.D=function(a){return T.ch(T.cb(a))};T.du=function(a){return T.cb(a)=='{}'};T.ac=function(a){var b=Object(a),c,e,f,g=arguments;for(c=1;c<g.length;c++){e=g[c];if(e!=null){for(f in e){if(Object.prototype.hasOwnProperty.call(e,f))b[f]=e[f]}}}return b};T.be=function(a){return a.length};T.bR=function(a){try{if(!localStorage||T.es)return!1;return localStorage.removeItem(a)}catch(b){T.a('SB63','Incognito Safari has blocked localStorage. This stops us tracking things like add to cart events',1,b);T.es=!0}};T.bz=function(a){try{if(!localStorage||T.es)return!1;return localStorage.getItem(a)}catch(b){T.a('SB61','Incognito Safari has blocked localStorage. This stops us tracking things like add to cart events',1,b);T.es=!0}};T.bA=function(a,b){try{if(!localStorage||T.es)return!1;localStorage.setItem(a,b)}catch(c){T.a('SB60','Incognito Safari has blocked localStorage. This stops us tracking things like add to cart events',1,c);T.es=!0}};T.dT=function(a){d.cookie=a+'=;expires='+new Date(99,1).toUTCString()+';path=/'};T.ay=function(a){var b=d.cookie.match(new RegExp('(^| )'+a+'=([^;]+)')),c=b&&unescape(b[2])||'';return c=='deleted'?'':c};T.S=function(a){var b=w.performance;return b&&b.getEntriesByType&&b.getEntriesByType(a)};T.R=function(){var a=navigator;return a.connection||a.mozConnection||a.webkitConnection};T.P=function(a,b,c){return(a||'').replace(b,c||'')};T.aB=function(a){a=(a||'').trim().toLowerCase();return a.replace(/^([^@]*)(@(?:gmail|googlemail)\.com)$/,function(b,c,e){return c.replace(/\./g,'')+e})};T.bh=function(a){return T.P(T.P(T.aB(a),/([^a-z0-9 _])/g),/ +/g,'_')};T.T=function(a,b){b=b||255;if(!a)return '(missing)';a=T.P((''+a).trim(),/ *(\r\n|\n|\r) */gm,' ');if(T.be(a)<=b)return a;return a.substring(0,b-3)+'...'};
272T.cM=function(a,b){var c='',e='';switch(b){case 'AU':c='0011';e='61';break;case 'US':case 'CA':c='011';e='1';break;case 'GB':c='011';e='44';break;case 'IT':c='00';e='39';break}a=T.P(a,/[^\d+]+/g);if(c)a=T.P(a,new RegExp('^'+c),'+');if(a[0]!='+'&&e){a='+'+T.P(e+a,/^0/)}return a};T.bx=function(a,b){return a.hasAttribute(b)};T.bv=function(a,b){var c='data-tagrocket-'+b;if(T.bx(a,c))return 0;T.en(a,c,'1');return 1};T.bF=function(a,b,c,e){var f=setInterval(function(){T.t(a,function(){try{c()}catch(g){if(b)clearInterval(f);throw g}},1)},e);return f};T.cx=function(a,b,c,e){if(a)T.dY(a);return T.aU(b,c,e)};T.dY=function(a){clearTimeout(a)};T.aU=function(a,b,c){return setTimeout(a,b,'Tag Rocket '+(c||''))};T.bG=function(a,b,c){T.dz('query getCartMetafields{site{cart{metafields(namespace:"bc_storefront" keys:["'+b+'"]){edges{node{entityId}}}}}}',function(e,f){T.t('SB82',function(){if(e>0){var g='createCartMetafield',h='',i=T.cv(f,'data.site.cart.metafields.edges');if(i&&i.length){g='updateCartMetafield';h=' metafieldEntityId:'+i[0].node.entityId}T.dz('mutation '+g+'{cart{'+g+'(input:{cartEntityId:"'+a+'" data:{key:"'+b+'" value:"'+T.cb(c).replace(/"/g,'\\"')+'"}'+h+'}){metafield{id entityId key value}errors{...on Error{message}}}}}',function(e,j){T.t('SB83',function(){if(e>0){}},1)})}},1)})};T.er=function(a){T.cE.appendChild(a)};T.eo=function(a,b,c){b=b||{};if(b.onvisible&&d.hidden){T.Z('visibilitychange',function(){T.eo(a,b,c)});return};var e=T.ep(a),f;if(b.id&&T.bC(b.id))return;for(var g in b){T.en(e,g,b[g])}e.onload=e.onreadystatechange=function(){f=e.readyState;if(!f||f=='loaded'||f=='complete'){if(c)c();c=null}};T.er(e);return e};T.aT=function(a,b,c){b=b||{};b.src=a;if(!T.E(b.async))b.async=!0;if(T.cI)b.nonce=T.cI;if(!T.E(b.onvisible)&&T.pageType!='orderconfirmation')b.onvisible=!0;if(T.pageType!='orderconfirmation'||T.d.updated){T.eo('script',b,c)}else{T.o(T.aS,function(){T.eo('script',b,c)})}};T.dI=function(a){if(T.bx(a,'data-list-name'))return T.bw(a,'data-list-name');if(a.parentElement)return T.dI(a.parentElement)};T.U=function(){var a=T.bB('head meta[name="description"]');if(a)return T.bw(a,'content');};T.cK=function(a){var b=w.location.href.match(new RegExp('[?&]'+a+'=([^&]*)'));return decodeURIComponent(b&&b[1]||'')};T.ek=function(a,b,c){if(w.MutationObserver)T.Z(T.aa,function(){c=c||{childList:!0,subtree:!0};b=b||d.body;if(!b)throw 'no target';new MutationObserver(a).observe(b,c)})};T.aL=function(a,b){if(a&&a.event_log)a.event_log+=b};T.dQ='NewPromotionsAdded';T.el=[];T.em=0;T.cA=function(){T.ek(function(a){a.forEach(function(b){T.e(b.addedNodes,function(c){if(T.bw(c,T.bo)=='promotion'&&T.bv(c,'found')){T.el.push(c)}T.e(T.ei(c,"["+T.bo+"='promotion']"),function(e){if(T.bv(e,'found')){T.el.push(e)}})})});if(T.be(T.el)&&!T.em){T.N(function(){T.em=T.aU(function(){T.em=0;T.f(T.dQ,{elements:T.el});T.el=[];},100,'New Promotions Added')})}});};T.ed=[];T.ee=0;T.eg=function(a){T.e(a,function(b){T.ed=T.ed.concat(T.bl(b));if(T.bw(b,T.bo)=='list'&&T.eh(b)&&T.bv(b,'found')){T.ed.push(b)}T.e(T.ei(b,"["+T.bo+"='list']"),function(c){if(T.eh(c)&&T.bv(c,'found')){T.ed.push(c)}})})};T.ej=function(){T.N(function(){if(T.be(T.ed)){if(T.ee)T.dY(T.ee);T.ee=T.aU(function(){T.f(T.df,{elements:T.ed});T.ed=[];T.ee=0},500,'New Products Added')}})};T.cz=function(e){T.ek(function(f){f.forEach(function(g){T.eg(g.addedNodes);});T.ej();},e||d.body)};T.df='NewProductsAdded';T.aC='PromotionsVisible';T.dP=function(a){T.bk(T.aC,a)};T.bi=function(a,b){if(T.dq(['orderconfirmation','checkout','cart'],T.pageType))return;var c,e=[];T.e(a.infos||a.items||a,function(f){c=f.product||f;if(!c.completed){e.push(c);}});if (T.be(e)&&T.cK('showHidden')!='true'&&!T.V(e[0].name,'Package Protection')&&!T.cF){T.a('SB55e',''+T.be(e)+' incomplete products on '+b+' '+e[0].productId+' '+e[0].name,1,e);}};T.dL=function(a,b){var c="["+T.bo+"='list']["+T.bp+"='"+a+"']";if(b)c="[data-list-name='"+T.P(b,/['"\\]/g,'\\$&')+"'] "+c;return T.bB(c)};T.n='ProductsVisible';T.dN=function(a,b){if(T.bj||T.cu)a.search=T.bj||T.cu;T.bi(a,T.n);T.cX(T.n,a,b)};T.dZ=function(a){T.t('SB19b',function(){var b,c={},e;T.e(a,function(f){if(!f.seen){f.seen=1;b=f.callback.name+f.id;if(!c[b])c[b]=[];c[b].push(f)}});for(var g in c){e=c[g][0];e.callback({infos:c[g],list:e.list})}},1)};T.eb=0;T.ea=[];T.dU=function(a){a.visibleTime=0;
272if(!T.E(a.minVisibleTime))a.minVisibleTime=2e3;var b,c=new IntersectionObserver(function(e){T.e(e,function(f){if(f.isIntersecting){a.lastVisible=new Date;a.trigger='visible';b=T.aU(function(){c.disconnect();T.ea.push(a);if(T.eb)return;T.eb=T.aU(function(){T.eb=0;if(T.be(T.ea)){T.dZ(T.ea);T.ea=[];}},1e3,'Visible Ticking')},a.minVisibleTime-a.visibleTime,'On First Visible')}else{if(b)T.dY(b);if(a.lastVisible){a.visibleTime+=new Date-a.lastVisible;a.lastVisible=0}}})},{threshold:[0.5]});c.observe(a.e)};T.dW=[];T.dX=0;T.dV=function(a){T.dW.push(a)};T.cB=function(){T.t('SB18c',function(){var b,c,e=0,f=1,g=function(a){if(a.seen)return false;if(a.e&&a.e.getBoundingClientRect){try{b=a.e.getBoundingClientRect()}catch(h){}if(b){return b.top>-b.height/2&&b.left>-b.width/2&&b.bottom-b.height/2<=(w.innerHeight||T.Y.clientHeight)&&b.right-b.width/2<=(w.innerWidth||T.Y.clientWidth)}}return a.percent<T.dX},i=function(j,k){if(!k&&c)return;T.dY(c);c=T.aU(function(){c=0;T.t('SB18a',function(){l()},1)},j,'Scroll Tick '+k)} ,l=function(){var m=[],n=1,o,p,q,r=d.body;q=w.pageYOffset,p=w.innerHeight;if(r&&r.scrollHeight){if(f==1)f=r.scrollHeight;if(T.Y.clientHeight)n=T.Y.clientHeight;if(q&&p)n=q+p;}o=n/f;if(o>T.dX){T.dX=o;e=n;T.t('SB18b',function(){T.e(T.dW,function(a){a.trigger='scroll '+o;if(g(a)&&T.be(m)<=5)m.push(a)});if(T.be(m)){T.dZ(m);i(6e3,1)}},1);}};T.by(d,'scroll',function(){i(1e3,0);});T.Z('load',function(){l()})},1);};T.dO=function(a){if(a.e&&('IntersectionObserver' in window)){T.dU(a)}else{T.dV(a)}};T.dS=function(a,b,c,e){if(!w._bcCsrfProtectionPatched&&e<10){T.aU(function(){T.dS(a,b,c,e+1)},100,'XMLHttpRequest Wait '+e)}else{var f=new XMLHttpRequest();e=e||1;f.onreadystatechange=function(){if(this.readyState==4){if(this.status!=200){if(e<12){T.aU(function(){T.dS(a,b,c,e+1)},1e3,'XMLHttpRequest Retry '+e)}else{T.a('SB36','Request Failed after '+e+' attempts : '+a+' '+this.status,1,f);b(0,this.status)}}else{b(1,f.responseText?T.ch(f.responseText):'-missing-')}}};f.open(c?'POST':'GET',a,true);f.withCredentials=true;f.setRequestHeader('Content-type','application/json');if(c){f.setRequestHeader('Authorization','Bearer '+T.cJ);f.send(T.cb({query:c}))}else{f.send()}}};T.dR=function(a,b,c,e,f,g){if(T.V(w.location.href,'googleusercontent.com')){c(0,'googleusercontent.com')}else{e=e||0;f=f||0;g=g||[];b=b||{};e++;if(a!='/graphql'&&!w._bcCsrfProtectionPatched&&e<10){T.aU(function(){T.dR(a,b,c,e,f,g)},100,'Fetch Wait '+e)}else{f++;if(f==2&&a!='/graphql'){T.dT('XSRF-TOKEN');T.dT('SF-CSRF-TOKEN');g.push('TokenReset')}w.fetch(a,b).then(function(h){var i,j=h.headers.get('cf-ray');g.push(h.status);h.text().then(function(k){if(h.ok){if(T.be(f)>1)T.a('SB30c','Fetch '+g.join('/')+' Success after fail '+a+' '+e,1,h);try{i=T.ch(k)}catch(l){c(0,'status='+h.status+'; JSON parse error '+l+'; body='+k);throw 'JSON parse error '+l+' '+a}try{c(i?1:0,i||'-empty-')}catch(l){throw 'onComplete error '+l+' '+a}}else{if(f<3&&![400,404,410,429].includes(h.status)){T.aU(function(){T.dR(a,b,c,e,f,g)},1e3*f,'Fetch '+f)}else{try{T.a('SB30','Fetch '+g.join('/')+' Last Fail '+a+' '+e+' ['+j+']',1,h);if(!0)T.a('SB30',k,1,h);if(!1&&j)T.a('SB30d','cf-ray: '+j,1,h);c(0,'status='+h.status+'; body='+k)}catch(l){T.a('SB30b','Fetch '+a+' onComplete '+(l.message||l),1,l)}}}})}).catch(function(m){if(!m.message||!m.message.match(/^(cancel|annul|brochen|NetworkError when|Failed to fetch|취소됨)/)){g.push(m.message||m);if(f<3){T.aU(function(){T.dR(a,b,c,e,f,g)},1e3,'Fetch Error '+f)}else{if(!T.cF)T.a('SB29','Fetch '+g.join('/')+' Last Error '+a,1,m);c(0,m.message||m)}}else c(-1,m.message||m)})}}};T.dz=function(a,b){var c='/graphql';if(w.fetch){T.dR(c,{method:'POST',credentials:'same-origin',headers:{'Content-Type':'application/json',Authorization:'Bearer '+T.cJ},body:T.cb({query:a})},b)}else{T.dS(c,b,a)}};T.bJ=function(a,b){if(w.fetch){T.dR(a,{credentials:'include'},b)}else{T.dS(a,b)}};T.bu=function(){T.o(T.dQ,function(a){T.br(T.bt(a.elements))})};T.br=function(a){T.e(a,function(b){if(!b.e)b.e=T.bB("["+T.bo+"='promotion']["+T.bp+"='"+b.id+"']");var c=b.location=='top'?0.1:0.9;if(b.e){if(T.bv(b.e,'registered')){T.dO({se: T.dM,id:'',e:b.e,promotion:b,percent:c,callback:T.dP});T.by(b.e,'click',function(){T.bk(T.aE,b)})}}else{T.dO({se: T.dM,id:'',e:b.e,promotion:b,percent:c,callback:T.dP})}})};T.aE='PromotionClicked';T.dK=0;T.bg=function(a,b){T.dK++;T.e(a.items,function(c,e){if(!b||T.dq(b,c)){c.e=c.e||T.dL(c.productId,a.listName);var f={se:T.dM,id:T.dK,e:c.e,product:c,list:a};if(c.e){if(T.bv(c.e,'registered')){f.callback=T.dN;f.percent=e/T.be(a.items);T.dO(f);T.by(c.e,'click',function(){if(!f.seen)T.dN({infos:[f],list:a});T.bk(T.ai,f);})}}else{f.callback=T.dN;f.percent=e/T.be(a.items);T.dO(f);}}})};T.ai='ProductClicked';T.bt=function(a){var b,c,e,f,g=[];if(!a)a=T.bn("["+T.bo+"='promotion']["+T.bp+"]");T.e(a,function(h){b=T.bw(h,T.bp);c=T.bw(h,'data-name');e=T.bw(h,'data-position');f={e:h};if(b)f.id=parseInt(b,10);if(c)f.name=c;if(e)f.location=e;g.push(f)});return g};T.bm=function(a){var b,c,e=[],f=T.dH(e,a);if(T.be(e)){T.bf({reason:'List',items:e},function(g){for(b in f){c=f[b];
272if(T.cC)c.category=T.cC;T.bg(c,g.items)}})}};T.dG=[];T.dH=function(a,b){var c,e,f,g,h,i={},j,k,l,m,n,o,p=['{','blogid','pageid','categoryid','ssib'],q='data-tagrocket-searchprovider';T.e(b,function(r){j=T.dI(r)||'Page:'+T.cD;c=j.split(':')[0].trim();m=j;if(T.V(m,':'))m=m.split(':')[1].trim();i[j]=i[j]||{id:T.bh(j),type:c,listName:j,name:m,items:[]};n=T.dG[j]||0;f=T.bw(r,T.bp);e=T.bw(r,'data-product-price');l=T.bw(r,'data-product-category');g=T.bw(r,'data-name');h=T.bw(r,'data-product-brand');o=T.bw(r,'data-position');k={e:r,index:n};if(f)k.productId=parseInt(f,10);if(isNaN(k.productId)){if(!T.dJ&&f&&p.some&&p.some(function(m){f.indexOf(m)!=0})){T.dJ=1;T.a('SB43','Page contains invalid '+T.bp+' value:'+f,1,r)}}else{T.bv(r,'found');if(T.bv(r,'got')){if(T.w(e))k.price=parseFloat(e);if(l)k.category={path:l,breadcrumbs:[l]};if(T.bx(r,q))k.searchprovider=T.bw(r,q);if(T.j)k.currency=T.j;if(!isNaN(o))k.index=parseInt(o,10)-1;T.dG[j]=n+1;a.push(k);i[j].items.push(k)}}});return i};T.ca=function(a){var b='(unknown)';if(a&&a.nodeName){b=T.aB(a.nodeName);if(b=='body')return 'html>body';if(b=='head')return 'html>head';if(a.id)return b+'#'+a.id;if(a.className&&T.be(a.className))b+='.'+a.className.split(/[ ,]+/).join('.');if(a.parentElement)b=T.ca(a.parentElement)+'>'+b;return b}};T.r=function(a,b){if(isNaN(a))return a;if(!b)b=0;var c=Math.pow(10,b),e=Number.EPSILON||2.220446049250313e-16;return Math.round((a+e)*c)/c};T.dF='GetValue';T.getProductId=function(a,b,c,e,f){if(c.type=='giftCertificate')return c.type;var g=(c.isVariant&&f?f:e);if(g.length<1)return;return T.P(T.P(T.P(T.P(T.P(T.P(T.P(T.P(T.P(T.P(T.P((T.e(g.split('||'),function(h){if((!T.V(h,'[[psku]]')||c.productSku)&&(!T.V(h,'[[pmpn]]')||c.productMpn)&&(!T.V(h,'[[pupc]]')||c.productUpc)&&(!T.V(h,'[[pgtin]]')||c.productGtin)&&(!T.V(h,'[[vname]]')||c.variantName)&&(!T.V(h,'[[vid]]')||c.variantId)&&(!T.V(h,'[[vsku]]')||c.variantSku)&&(!T.V(h,'[[vmpn]]')||c.variantMpn)&&(!T.V(h,'[[vupc]]')||c.variantUpc)&&(!T.V(h,'[[vgtin]]')||c.variantGtin))return h})||'[[pid]]'),/\[\[pid\]\]/ig,c.productId),/\[\[pmpn\]\]/ig,c.productMpn),/\[\[pupc\]\]/ig,c.productUpc),/\[\[pgtin\]\]/ig,c.productGtin),/\[\[psku\]\]/ig,c.productSku),/\[\[vname\]\]/ig,c.variantName),/\[\[vid\]\]/ig,c.variantId),/\[\[vsku\]\]/ig,c.variantSku),/\[\[vmpn\]\]/ig,c.variantMpn),/\[\[vupc\]\]/ig,c.variantUpc),/\[\[vgtin\]\]/ig,c.variantGtin)};T.bP=function(a){T.d.updated=!0;try{var b=a.billingAddress;T.p(b,'phone',T.cM(b.phone,b.countryCode));T.p(T.d,'email',T.aB(b.email));T.p(T.d,'phone',b.phone);T.p(T.d,'first_name',b.firstName);T.p(T.d,'last_name',b.lastName);T.p(T.d,'street',b.address1);T.p(T.d,'city',b.city);T.p(T.d,'state',b.stateOrProvince);T.p(T.d,'postal_code',b.postalCode);T.p(T.d,'country_code',b.countryCode);if(b.address2)T.d.street=(T.d.street?T.d.street+',':'')+b.address2;}catch(c){T.a('SB56','Failed to update user data',1,c);}T.bk(T.aS,T.d);};T.aS='UserDataUpdated';T.dA=function(a,b){if(a.variants.edges){return T.e(a.variants.edges,function(c){if(c.node.entityId==b)return c.node})}};T.dB=function(a){var b='',c;T.e(a.options.edges,function(e,f){c=e.node;if(f)b+=',';b+=c.displayName+':';T.e(c.values.edges,function(g){b+=' '+g.node.label})});return b};T.dx='ProductDataGathered';T.dy='CartDataGathered';T.bf=function(a,b){T.t('SB26c',function(){var c=a.cart,e,f,g,h,i=[],j=[],k=T.cK('showHidden')=='true',l=function(i){a.requests++;var m=i.slice(0,25),n=j.filter(function(o){return T.dq(m,o.p)&&!T.dq(n,o.v)}).map(function(o){return o.v});f='query Products{site{';if(h){f+='id:product(entityId:'+e[0].productId+'){entityId sku mpn upc gtin variants(skus:['+T.cb(h)+']){edges{node{entityId}}}} product(sku:'+T.cb(h)+'){'}else{f+='products(first:25 entityIds:'+T.cb(m)+'){edges{node{'}f+='entityId sku name path defaultImage{url(width:1000)}mpn upc gtin brand{name} categories{edges{node{name entityId breadcrumbs(depth:10 first:50){edges{node{name}}}}}}';if(c&&T.be(n)){if(T.be(n)>250)T.a('SB26','Can only get 250 variants. There are '+T.be(n),1,n);f+='variants(first:250 entityIds:'+T.cb(n.slice(0,250))+'){edges{node{entityId mpn upc gtin options(first:50){edges{node{displayName values(first:50){edges{node{label}}}}}}}}}';}f+='twoVariants:variants(first:2){edges{node{entityId sku}}}';if(!h)f+='}}';f+='}}}';T.dz(f,function(p,q){T.t('SB32',function(){if(p>0){if(q.errors&&T.be(q.errors))throw 'graphql '+q.errors[0].message;T.e(e,function(o){var r,s,t,u,v,x,y,z,aa,ab,ac,ad,ae;if(h){y=T.cv(q,'data.site.product');z=T.cv(q,'data.site.id.sku');aa=T.cv(q,'data.site.id.mpn');ab=T.cv(q,'data.site.id.upc');ac=T.cv(q,'data.site.id.gtin');x=T.cv(q,'data.site.id.variants.edges');if(x)o.variantId=T.cv(x[0],'node.entityId');delete o.productSku}else{ad=T.cv(q,'data.site.products.edges');if(!ad)T.a('SB32x',T.cb(q),1,q);y=T.e(ad,function(af){if(!af||!af.node)T.a('SB32z',T.cb(q),1,q);if(af&&af.node&&af.node.entityId==o.productId)return af.node});if(y)z=y.sku}if(y){o.completed=!0;var ag,ah=[],ai=o.sku,aj=y.name,ak=y.path,al=y.defaultImage,am=y.mpn,an=y.upc,ao=y.gtin,ap=y.brand,aq=o.variantId;ai=ai||h;if(z)o.productSku=z;if(ai&&z!=ai)o.variantSku=ai;if(aj)o.name=aj;if(al){o.defaultImage=al;if(al.url)al.data=T.P(al.url,'/1000w/','/{:size}/')};
272if(ak)o.url=T.cG+ak;if(h){if(aa)o.productMpn=aa;else delete o.productMpn;if(ab)o.productUpc=ab;else delete o.productUpc;if(ac)o.productGtin=ac;else delete o.productGtin;if(am&&aa!=am)o.variantMpn=am;if(an&&ab!=an)o.variantUpc=an;if(ao&&ac!=ao)o.variantGtin=ao;}else{if(am)o.productMpn=am;if(an)o.productUpc=an;if(ao)o.productGtin=ao;}if(ap&&ap.name)o.brand=ap.name;o.isVariant=(ai&&(!z||z!=ai))==!0;if(o.isVariant&&aq&&c){ae=T.dA(y,aq);if(ae){if(ae.options)o.variantName=T.dB(ae);if(ae.mpn)o.variantMpn=ae.mpn;if(ae.upc)o.variantUpc=ae.upc;if(ae.gtin)o.variantGtin=ae.gtin}else{T.a('SB27','Failed to get extra variant information for variant: '+aq,1,y);o.variantName='(id='+aq+')'}};v=T.cv(y,'twoVariants.edges');if(T.be(v)>0){ag=v[0].node;if(!o.isVariant)o.hasVariants=T.be(v)>1||!(o.productSku==ag.sku||ag.sku=='');if(T.be(v)<2&&!o.variantId)o.variantId=ag.entityId;if(o.hasVariants)o.firstVariantSku=ag.sku};o.categories=ah;t=T.cv(y,'categories.edges');T.e(t,function(ar){if(!ar||!ar.node){T.a('SB32c',T.cb(t),1,t)}else{s={id:ar.node.entityId,name:ar.node.name,breadcrumbs:[]};ah.push(s);u=T.cv(ar,'node.breadcrumbs.edges');if(!u){T.a('SB32b',T.cb(t),1,t)}else{T.e(u,function(as){s.breadcrumbs.push(as.node.name);});s.path=s.breadcrumbs.join("/");if(!r||r.id>s.id)r=s}}});o.category=r}})}else{if(T.pageType!='orderconfirmation'&&p==0&&!T.cF)T.a(a.reason,'Failed to get extra information for '+T.be(m)+',ok='+p+',status='+q,1,m)}if(T.be(i)>25){l(i.slice(25))}else{if(p>0&&!c&&!T.cF){var at=[];T.e(e,function(o){if(!o.completed)at.push(o)});if(T.be(at)&&!k){if(g)T.a('SB55d','Could not get extra product data for URL sku '+g,1,{issues:at,items:e});else if(h)T.a('SB55a','Could not get extra product data for sku '+h,1,{issues:at,items:e});else T.a('SB55b',a.reason+' '+a.requests+' Could not get extra product data for '+T.be(at)+' out of '+T.be(e)+' items. '+at[0].productId,1,{issues:at,items:e});T.a('SB55c',T.cb(q),1,q)}}if(a.reason==T.v&&T.be(e)&&!e[0].variantId&&T.dC)e[0].variantId=T.dC;b(a)}},1)})};if(a.reason==T.v){g=T.cK('sku');h=a.items[0].sku||g;}if(c){c.items=[];var au=c.lineItems;if(au)T.e([].concat(au.physicalItems,au.digitalItems,au.giftCertificates),function(av){if(c.currency&&c.currency.code)av.currency=c.currency.code;if(!T.w(av.price))av.price=av.salePrice;if(!T.w(av.price))av.price=av.list_price;if(av.type=='giftCertificate'){av.price=av.amount;av.productId='giftCertificate';av.quantity=1;av.isTaxable=av.taxable;av.completed=!0}if(av&&!av.parentId)c.items.push(av)});else{T.a('SB26b','Missing lineItems '+a.reason+' '+T.cb(a.response||c),1,c);return}}e=a.items||c.items;a.items=e;if(c)c.items=e;T.products=T.products||[];T.products.push(e);var aw=0;if(c){if(T.j&&!c.currency)c.currency={code:T.j};var ax,ay=c.baseAmount,az=c.cartAmount,ba=c.coupons;if(ay&&az)c.totalDiscount=ay-az;if(ba)c.couponCodes=ba.map(function(bb){return bb.code}).join(', ')}T.e(e,function(o){var bc=o.discountAmount,bd=o.couponAmount;if(!o.productId&&o.product_id)o.productId=o.product_id;if(!o.variantId&&o.variant_id)o.variantId=o.variant_id;ax=0;if(bc)ax+=bc;if(bd){ax+=bd;if(c&&c.couponCodes)o.couponCodes=c.couponCodes}if(ax){o.totalDiscount=ax;aw+=ax}if(o.type!='giftCertificate'&&o.productId&&!T.dq(i,o.productId))i.push(o.productId);if(o.variantId)j.push({p:o.productId,v:o.variantId});});if(c&&c.orderAmount)c.totalDiscount=(c.discountAmount||0)+aw;if(!T.be(i)){T.N(function(){b(a)})}else{a.requests=0;l(i);}},1)};T.t('SB33',function(){var a=T.cv(w,'prototype'),b=T.cv(a,'send'),c=T.cv(a,'open'),e=w.fetch;if(!T.xe){if(c){a.open=function(f,g){this.rurl=g;return c.apply(this,arguments)}}if(b&&b.apply){a.send=function(){var h=this;T.by(h,'readystatechange',function(){if(h.readyState==4&&(h.status>399||h.status==0)){T.xe(h)}});return b.apply(this,arguments)}}}T.xq=T.xq||[];T.xe=function(i){T.xq.push(i)};if(!T.fe){if(e&&e.apply){w.fetch=function(g){/*This detects fetch errors.Please look up the stack for the real cause of the error*/return e.apply(this,arguments).then(function(j){if(j.status>399)T.fe({type:'status',url:j.url,message:j.status});return j}).catch(function(k){T.fe({type:T.aP,url:g.url||g,message:k.stack||k.message||k});throw k})}}}T.fq=T.fq||[];T.fe=function(l){T.fq.push(l)};},1);T.cy=function(){var a=0,b=0;T.dD='XMLHttpRequestResponseError';T.xe=function(c){a++;
272if(T.cE){T.cE.dataset.xhrErrors=a;T.cE.dataset.xhrErrorsInfo=(T.cE.dataset.xhrErrorsInfo||'')+' '+(c.responseURL||c.rurl)+' '+c.status+' '+c.statusText+' '+c.readyState;};if(d.visibilityState!='hidden'&&a<6)T.bk(T.dD,c)};if(T.xq){T.e(T.xq,function(c){T.xe(c)})}T.dE='FetchResponseError';T.fe=function(e){b++;if(T.cE){T.cE.dataset.fetchErrors=b;T.cE.dataset.fetchErrorsInfo=(T.cE.dataset.fetchErrorsInfo||'')+' '+e.url+' '+T.T(e.message,30);};if(!(e.type==T.aP&&d.visibilityState=='hidden')){if(b<6)T.bk(T.dE,e)}};if(T.fq){T.e(T.fq,function(e){T.fe(e)})}};T.cards=[];T.bl=function(a){var b=[],c,e;T.e(['dfd-data-product-id','data-compare-id'],function(f){T.e(T.ei(a,'['+f+']'),function(g){e=g.closest('.dfd-results-grid');if(e){c=g.closest('.dfd-card')||g;if(T.bv(c,'found')){T.en(c,T.bp,T.bw(g,f));T.en(c,T.bo,'list');T.en(c,'data-tagrocket-searchprovider','DooFinder');b.push(c)}}});});if(T.be(b))T.cards.push({node:a,cards:b});return b};T.bd=function(){return T.bn("["+T.bo+"]["+T.bp+"]").length>0};T.bK=function(a){if(!localStorage)return;T.N(function(){var b,c,e,f=T.ch(T.bz('wsa-c')),g=f||{version:'n/a'},h,i,j={};T.bU=0;T.e(a.items,function(k){var l=k.productSku,m=k.variantName,n=k.brand,o=k.sku,p=k.quantity;if(T.bU<3){b='id.'+k.id+'.p'+k.productId;if(k.variantId)b+='.v'+k.variantId;c={productId:k.productId,quantity:p,price:k.price,name:k.name,category:k.category};if(l)c.productSku=l;if(m)c.variantName=m;if(n)c.brand=n;if(o)c.sku=o;e=p;i=g[b];if(i)e-=i.quantity;e&&T.bT(e,k,a);j[b]=c}g[b]=null});j.version='1.0';T.bA('wsa-c',T.cb(j));for(h in g){i=g[h];i&&i.quantity&&T.bT(-i.quantity,i,a)}});};T.bw=function(a,b,c){if(a.getAttribute)return T.T(a.getAttribute(b),c)};T.by(w,'visibilitychange',function(){if(T.be(T.ea)){T.dZ(T.ea);T.ea=[]}});T.cC='';T.app={a:'3.48.21',v:'1.95.88286',d:'2026/09/04 04:27'};T.j='USD';T.aq='USD';T.cD="Pink Zebra Home - Sign in";T.cE=d.getElementsByTagName('head')[0];T.Y=d.documentElement;T.bo='data-event-type';T.bp='data-entity-id';T.aa='DOMContentLoaded';T.aP='exception';T.instantLoad='';T.dataTagEnabled='false';T.m='page_view';T.h='config';T.O='event';T.cF=T.V(w.location.href,'translate.goog');T.pageType='login';T.cG='https://pinkzebrahome.com';if(T.bx(T.Y,'data-country'))T.countryCode=T.bw(T.Y,'data-country');else if('')T.countryCode='';if(T.bx(T.Y,'data-region'))T.regionCode=T.bw(T.Y,'data-region');else if('')T.regionCode='';T.cH=false;T.cI="";T.b='allow_enhanced_conversions';T.cJ="eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjaWQiOlsxXSwiY29ycyI6WyJodHRwczovL3Bpbmt6ZWJyYWhvbWUuY29tIl0sImVhdCI6MTc5MDUwNjc1NiwiaWF0IjoxNzkwMzMzOTU2LCJpc3MiOiJCQyIsInNpZCI6MTAwMjU0ODA5MCwic3ViIjoiQkMiLCJzdWJfdHlwZSI6MCwidG9rZW5fdHlwZSI6MX0.Dbbz5Ky_KmgYOqRNc1mNuklCGA8U9ANSp2dp5XrHfP_fERT3ZwmFrRT_ZM97Q6g0oEvbpO9Q1zJRl-0DJN1jjA";T.bj=T.cK('search_query');if(!T.bj)T.bj=T.cK('search_query_adv');if(T.bj)T.pageType=T.pageType+'_search';var a=T.S('navigation');T.cr=a&&a[0];T.X=T.E(d.hidden)?''+d.hidden:'unknown';T.W='unknown';if(T.cr){var b=T.cr.type,c=d.prerendering||b=='prerender',e=T.cr.activationStart,f=T.cr.deliveryType,g=f||'network';if(b=='reload')g='reload';if(f=='navigational-prefetch')g='prefetch';if(f=='cache')g='disk-cache';if(b=='back_forward'&&f=='cache')g='bfcache-miss-disk-cache';T.W=T.E(c)?(c?'prerender':(e>99?'prerender-until-script':g)):g;T.by(w,'pageshow',function(h){if(h.persisted)T.W='bfcache'});}T.d={};T.userData=T.d;T.userDataUpdated=function(){T.bk(T.aS,T.d)};if(T.countryCode)T.d.country_code=T.countryCode;if(T.regionCode)T.d.region_code=T.regionCode;T.bR('wsa-ce');T.bR('wsa-se');T.cN=[];T.cO=function(a){if(typeof a!='string')return a;
272if(a[0]!='^')a='^'+a;if(a[T.be(a)-1]!='$'||a[T.be(a)-2]=='\\')a=a+'$';return new RegExp(a)};T.o=function(a,b,c,e){if(!a){T.a('On event missing event text:'+c,'');return};if(!c)c=a;if(T.be(arguments)<4)e=!0;if(!a||(!e&&e!=false)||!c||!b){T.a('OnEvent bad data',a,b,c,e)}T.cN.push({r:T.cO(a),c:b,s:c,p:e})};T.cP=[];T.on=function(a,b){if(!a)T.a('On event missing eventRegexText');if(!b)T.a('On event missing callback');T.cP.push({r:T.cO(a),c:b,s:'C'+T.be(T.cP),p:!0})};T.cQ=function(f,g,h){T.e(f,function(i){if(i.r.test(g))T.t(i.s,i.c,i.p,[h,g])})};T.cR=function(f,g,h){T.e(f,function(i){if(i.r.test(g))T.t(i.s,i.c,i.p,[h,g])})};T.cS=function(f,g,h,b){T.cT(f.filter(function(i){return i.r.test(g)}),function(i){T.t(i.s,i.c,i.p,[h,g])},b,g)};T.cU=function(g,h){h.cancelDataLayerEvents=h.cancelDataLayerEvents||!1;T.cQ(T.cP,g,h);if(!h.cancelBuiltInEvents)T.cQ(T.cN,g,h);if(!h.cancelDataLayerEvents){w.dataLayer.push({event:'tagRocket'+g,tagRocketData:h})}return h};T.cV=function(g,h,b){h.cancelDataLayerEvents=h.cancelDataLayerEvents||!1;T.cS(T.cP,g,h,function(){if(!h.cancelBuiltInEvents)T.cS(T.cN,g,h,function(){if(!h.cancelDataLayerEvents){w.dataLayer.push({event:'tagRocket'+g,tagRocketData:h})}b&&b(h)});else{if(!h.cancelDataLayerEvents){w.dataLayer.push({event:'tagRocket'+g,tagRocketData:h})}b&&b(h)}});};T.cW=function(g,h){h.cancelDataLayerEvents=h.cancelDataLayerEvents||!1;T.cR(T.cP,g,h);if(!h.cancelBuiltInEvents)T.cR(T.cN,g,h);if(!h.cancelDataLayerEvents){w.dataLayer.push({event:'tagRocket'+g,tagRocketData:h})}return h};T.f=function(g,h){h.cancelBuiltInEvents=!1;return T.cU(g,h)};T.bk=function(g,h){T.N(function(){T.f(g,h)})};T.cX=function(g,h,b){h.cancelBuiltInEvents=!1;T.cV(g,h,function(j){b&&b(j)})};T.cY=function(g,h){h.cancelBuiltInEvents=!1;return T.cW(g,h)};T.aJ=function(g,h){h.cancel=!1;T.cU(g,h);return!h.cancel};T.cZ=function(g,h){h.cancel=!1;T.cW(g,h);return!h.cancel};w.dataLayer=w.dataLayer||[];T.da=[];T.gp=[];T.L=function(){if(!T.db&&T.dc){T.db=!0;try{while(T.be(T.da)){var a=T.da[0];T.da.splice(0, 1);gtag.apply(null,a)}if(T.dd){while(T.be(T.gp)){var a=T.gp[0];T.gp.splice(0, 1);gtag.apply(null,a)}}}finally{T.db=!1;}}};T.J=function(b){if(!w.gtag||!w.gtag.tagrocket){w.gtag=function(c,e,f){var a=arguments;if(T.dc){var g=f&&f.send_to||[],h=Array.isArray(g)?g:[g],i=["g-0xnhdcesr7","tagrocket","googleanalyticsfour"];if(c==T.h&&e&&T.V(i,e.toLowerCase())&&((f&&f.send_page_view===!1)!=!0)){T.dd=!0}if(c==T.O){if(e==T.m){if(h.some(function(j){return T.V(i,j.toLowerCase())})){T.de=!0}}else if(!T.dd&&(h.some(function(j){return T.V(i,j.toLowerCase())}))){T.aL(f,'v');T.gp.push(a);return}}try{if(TextEncoder){var s=new TextEncoder().encode(T.cb(k)).byteLength;if(s>16e3)T.a('GT5','Gtag Payload Too Large '+s,1,arguments)}}catch(l){}T.aL(f,'e');dataLayer.push(a);if(T.de){T.de=!1;T.dd=!0;T.L()}}else{if(c=='consent')dataLayer.push(a);else{T.aL(f,'p');T.da.push(a)}}};w.gtag.tagrocket=!0;return!0}};T.J('Start');dataLayer.splice(0).forEach(function(a){gtag.apply(null,a)});T.o(T.n,function(a){var b=[];T.e(a.infos,function(c){b.push(T.q({id:T.u(c.product)}))});T.k(a.search?'view_search_results':'view_item_list',{items:b})},'GA4',1);T.o(T.n,function(a){var b=[],c=a.list,e=c.listName,f={items:b},g;T.p(f,'currency',T.j);T.e(a.infos,function(h){g=T.aj(h.product,(h.e?'element':'stencil')+' '+h.trigger+' '+(h.product.searchprovider?h.product.searchprovider:''));if(g)b.push(g)});if(c.category&&c.type!=c.category)e=c.type+':'+c.category;T.ad('view_item_list',T.ak(f,e,c.id))},'GF3d',1);T.o(T.n,function(a){var b=a.list,c='ViewContent',e=a.infos.map(function(f){return T.aV(f.product,{path:b.type})}),g={content_type:'product_group',contents:e,content_ids:e.map(function(f){return f.content_id}),description:b.category||b.type};if(a.search){g.query=a.search;c='Search'}if(e.length>0)T.aR(c,g)},'TT4',1);T.o(T.aC,function(a){T.e(a.infos,function(b){T.aD('view_promotion',b.promotion)})},'GF40',1);T.o(T.ai,function(a){var b=T.aj(a.product),c={items:[b]};T.p(c,'currency',T.j);if(b)T.ad('select_item',T.ak(c,a.list.listName,a.list.id))},'GF3c',1);T.o(T.aE,function(a){T.aD('select_promotion',a)},'GF41',1);T.o(T.aE,function(a){T.aR('ClickButton',{content_id:'banner-'+a.id,content_name:a.name,content_category:'Banner '+a.location});},'TT13',1);T.o(T.df,function(a){T.bm(a.elements)});T.dg='consent';T.dh='default';T.di='update';T.dj='denied';T.dk='granted';T.M='ConsentChanged';T.dl='ConsentPreChanged';T.ax={gtagConsentModeV2:'basic',consentSource:'bc',bcEnabled:T.cH,enabled:T.cH};T.consent=T.ax;T.gtmConsent=function(a,b){T.dm(b||'gtm',a)};T.t('SB7',function(){var a,b,c=function(a){var e=!0;T.aM=T.dn=T.K=T.do=T.dp=e;T.ax.analytics=T.aM;T.ax.functional=T.dn;T.ax.targetingAdvertising=T.K;T.ax.adUserData=T.do;T.ax.adPersonalization=T.dp;};a=T.ay('bc_consent');c(a);T.bF('SB7b',1,function(){b=T.ay('bc_consent');if(a!=b){a=b;c(b);T.f(T.dl,T.ax);T.f(T.M,T.ax)}},500)},1);T.t('SB14',function(){T.updateConsent=function(a,b,c){T.a('SB14','updateConsent called when Tag Rocket is set to use the BigCommerce consent system',1,T.ax);var e,f,g=function(h){switch(h){case true:case T.dk:return!0;case false:case T.dj:return!1;default:return null;}};if(typeof a==='object'&&a!==null){e=a}else{e={};f=g(a);if(f!=null)e.analytics_storage=f?T.dk:T.dj;f=g(b);if(f!=null)e.functionality_storage=f?T.dk:T.dj;f=g(c);if(f!=null)e.ad_storage=f?T.dk:T.dj};T.ax.trLast=e;gtag(T.dg,T.di,e)}},1);T.dr='ConsentEstablished';T.Z(T.aa,function(){T.ax.established='bc';T.dc=!0;T.cX(T.dr,T.ax)});
272T.N=function(a){if(T.dc)a(!0);else T.o(T.dr,a)};T.t('SB84',function(){T.dm=function(a,b){var c='['+T.countryCode+'-'+T.regionCode+'] external Consent Mode '+a+" command detected while Tag Rocket is set to using the BC Banner. Possibly because BigCommerce's BODL GA4 solution is enabled.",e=T.D({o:b,c:T.ax}),f=T.ax.trLast;if(f&&!T.ax.errorSent&&(f.ad_storage!=b.ad_storage||f.analytics_storage!=b.analytics_storage||f.functionality_storage!=b.functionality_storage)){T.ax.errorSent=!0;if(T.bz('wsa-cme'))T.ck(c,e);else T.a('SB91',c,1,e);T.bA('wsa-cme','-')}}},1);T.ds=!0;T.dt=function(){var a=w.google_tag_data,b=T.dh,c=a&&a.ics&&a.ics.entries,e={},f,g;if(c){for(f in c){g=c[f];if(T.E(g.update)){e[f]=g.update?T.dk:T.dj;b=T.di}else if(T.E(g.default))e[f]=g.default?T.dk:T.dj}if(!T.du(e)){a=T.ax.googleTagData;if(!a||T.cb(e)!=T.cb(a)||(b==T.di&&T.ds)){T.ds=!1;T.ax.googleTagData=T.D(e);T.dm('google_tag_data_'+b,e)}}}};T.bF('SB81',0,T.dt,500);T.N(function(){T.J('WhenConsentEstablished');T.L()});T.dv=0;T.t('SB15',function(){w.dataLayer=w.dataLayer||[];var a,b=w.dataLayer,c=b.push,e=function(f,g){if(f&&f.length>2&&f[0]==T.dg)T.dm('dl_'+f[1]+'_'+g,f[2])};for(a=0;a<b.length;a++){e(b[a],'before')};b.push=function(){var h=[].slice.call(arguments,0);T.J('dataLayer.push');c.apply(b,h);h.forEach(function(i){e(i,'push')});T.L()};},1);T.init=function(){T.cL('The Tag Rocket API needs to be enabled to use it. Administration->Global Settings')};T.Z(T.aa,function(){if(T.i)T.e(T.i,function(){T.init()});});T.I=[];T.g=function(){T.J('GtagAdvertisingConsent');if(T.K)gtag.apply(null,arguments);else T.I.push(arguments);T.L()};T.o(T.M,function(){T.J('GtagAdvertisingConsent ConsentChanged');if(T.K){T.e(T.I,function(a){gtag.apply(null,a)});T.I=[];T.L()}});T.k=function(b,c,e){if(!c.send_to)c.send_to="AW-10776808640";c['developer_id.dODEzZj']=true;T.N(function(){T.t('GA91',function(){var f=''+d.location;if(e)gtag('set','page_location',e);T.g(T.O,b,c);if(e)gtag('set','page_location',f)},1)})};T.aK=[];T.ab=function(a,b,c){var e=T.J('GtagAnalyticsConsent');T.aL(c,e?'r':'o');if(T.aM){T.aL(c,'d');gtag.apply(null,arguments);}else{T.aL(c,'q');T.aK.push(arguments)}T.L()};T.o(T.M,function(){T.J('GtagAnalyticsConsent ConsentChanged');if(T.aM){T.e(T.aK,function(f){gtag.apply(null,f);});T.aK=[];T.L()}});T.aN=0;T.aO=0;T.aH=Date.now();T.ad=function(g,c){try{if(g==T.aP){T.aO++;if(T.aO>15)return};var h=T.ac({},T.Q,c);T.aN++;h['developer_id.dODEzZj']=true;if(!gtag)T.a('GF43',g+': No gtag',1,h);T.N(function(i){T.t('GF91',function(){h.send_to="G-0XNHDCESR7";T.aL(h,i?'y':'n');T.ab(T.O,g,h)},1)});}catch(j){T.a('GF42',g+': '+j,1,j);throw j}};gtag('set','developer_id.dODEzZj',true);T.o(T.dl,function(){T.ax.trLast={ad_user_data:T.do?T.dk:T.dj,ad_personalization:T.dp?T.dk:T.dj,analytics_storage:T.aM?T.dk:T.dj,functionality_storage:T.dn?T.dk:T.dj,ad_storage:T.K?T.dk:T.dj};T.J('ConsentChanged1');gtag(T.dg,T.di,T.ax.trLast);dataLayer.push({event:'bc_consent_update'});T.L()});T.o(T.M,function(){if(T.aM&&T.ecq){T.J('ConsentChanged2');T.e(T.ecq,function(a){gtag.apply(null,a)});T.ecq=[];T.L()}});if(T.cH){T.ax.trLast={ad_user_data:T.do?T.dk:T.dj,ad_personalization:T.dp?T.dk:T.dj,functionality_storage:T.dn?T.dk:T.dj,ad_storage:T.K?T.dk:T.dj,analytics_storage:T.aM?T.dk:T.dj};gtag(T.dg,T.dh,T.ax.trLast);};T.bR('wsa-cm');gtag('set','cookie_flags','SameSite=None;Secure');T.dw=function(){var a={address:{}},b=a.address;T.p(a,'email',T.d.email);T.p(a,'phone_number',T.d.phone);T.p(b,'first_name',T.d.first_name);T.p(b,'last_name',T.d.last_name);T.p(b,'street',T.d.street);T.p(b,'city',T.d.city);T.p(b,'postal_code',T.d.postal_code);if(T.du(b)){delete a.address}else{T.p(b,'region',T.d.region_code||T.d.state);T.p(b,'country',T.d.country_code);}if(!T.du(a))gtag('set','user_data',a)};T.o(T.aS,function(){T.dw()});T.dw();gtag('js',new Date);T.t('TT1',function(){var t='ttq',ttq;w.TiktokAnalyticsObject=t;ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(var e=ttq.a[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var i="https://analytics.tiktok.com/i18n/pixel/events.js";ttq.a=ttq.a||{},ttq.a[e]=[],ttq.a[e].b=i,ttq.c=ttq.c||{},ttq.c[e]=+new Date,ttq.e=ttq.e||{},ttq.e[e]=n||{}};T.aQ=[];T.aR=function(){T.aQ.push(arguments)};ttq.track2=T.aR;ttq.load("D07P7U3C77UAB6445LB0");var f={},g=function(){T.p(f,'email',T.d.email);T.p(f,'phone_number',T.d.phone);
272T.p(f,'external_id',T.d.id);if(f)ttq.identify(f)};g();T.o(T.aS,function(){g()});ttq.page()},1);T.bb='https://www.googletagmanager.com/gtag/js?id=G-0XNHDCESR7';T.N(function(){T.t('GA2',function(){var a={groups:["TagRocket","GoogleAds"]};a[T.b]=!0;T.p(a,'user_id',T.d.id);T.g(T.h,"AW-10776808640",a);},1);T.t('GF1',function(){var a={},b={},c={send_page_view:false,groups:['TagRocket','GoogleAnalyticsFour']};T.Q=a;var e={};T.p(e,'customer_id',T.d.id);T.p(e,'customer_group_name',T.d.customer_group_name);T.p(e,'customer_group_id',T.d.customer_group_id);T.p(e,'user_currency_code',T.j);gtag('set','user_properties',e);var f='',g=T.R(),h=T.S("resource"),i,j,k='unknown';b.meta_description=T.T(T.U());b.content_group=T.pageType;a.page_type=T.pageType;if(!w.arrowFunctions)f+='arrowFunctions ';if(!w.asyncFunctions)f+='asyncFunctions ';if(!w.fetch)f+='fetch ';if(!w.MutationObserver)f+='MutationObserver ';if(!w.addEventListener)f+='addEventListener ';b.missing_features=f.trim()||'(none)';if(h){j=h.find(function(l){return l.initiatorType=='early-hints'});i=h.find(function(l){return (T.V(l.name,'googleapis.com')||T.V(l.name,'fonts.gstatic.com'))&&!l.duration&&!l.transferSize});k=i?'hot':(j?'warm':'cold')}a.effective_connection_type=g&&g.effectiveType||'unknown';a.save_data=(g&&T.E(g.saveData))?''+g.saveData:'unknown';a.delivery_type=T.W;a.initially_hidden=T.X;a.resource_loading=k;var m=T.Y,n=d.body;a.width=w.innerWidth||(m&&m.clientWidth);a.height=w.innerHeight||(m&&m.clientHeight);a.pixel_ratio=w.devicePixelRatio;if(!a.width)T.Z(T.aa,function(){a.width=n&&n.clientWidth;a.height=n&&n.clientHeight});T.p(a,'active_currency_code',T.j);a.country_code=T.countryCode;T.p(a,'user_id',T.d.id);c.allow_ad_personalization_signals=!1;c[T.b]=!0;T.ab(T.h,"G-0XNHDCESR7",T.ac(c,a));b=T.ac(b,a);T.ad(T.m,b)},1);T.t('GA2b',function(){var a={page_type:T.pageType};T.p(a,'customer_group_name',T.d.customer_group_name);T.p(a,'customer_group_id',T.d.customer_group_id);T.p(a,'currency_code',T.j);T.k(T.m,a)},1)})}catch(e){T.teh=T.teh||[];T.teh.push(e);if(T.a)T.a('HEAD',''+e,1,e);else if(T.tah)T.tah('Head Script ISSUE')}T.ts=1}}(window,document)
273
274</script>
274
275
276      
276<script type=text/javascript>  
277      /* >> TriplePixel :: start*/ 
278      window.TriplePixelData={TripleName:"store-9khen3dncu.mybigcommerce.com",ver:"2.17",plat:"bigcommerce",isHeadless:false,product:{id:"",name:"",price:""},checkout:{id:"",ship_email:""},user:{em:""}},function(W,H,A,L,E,_,B,N){function O(U,T,P,H,R){void 0===R&&(R=!1),H=new XMLHttpRequest,P?(H.open("POST",U,!0),H.setRequestHeader("Content-Type","text/plain")):H.open("GET",U,!0),H.send(JSON.stringify(P||{})),H.onreadystatechange=function(){4===H.readyState&&200===H.status?(R=H.responseText,U.includes("/first")?eval(R):P||(N[B]=R)):(299<H.status||H.status<200)&&T&&!R&&(R=!0,O(U,T-1,P))}}if(N=window,!N[H+"sn"]){N[H+"sn"]=1,L=function(){return Date.now().toString(36)+"_"+Math.random().toString(36)};try{A.setItem(H,1+(0|A.getItem(H)||0)),(E=JSON.parse(A.getItem(H+"U")||"[]")).push({u:location.href,r:document.referrer,t:Date.now(),id:L()}),A.setItem(H+"U",JSON.stringify(E))}catch(e){}var i,m,p;A.getItem('"!nC`')||(_=A,A=N,A[H]||(E=A[H]=function(t,e,a){return void 0===a&&(a=[]),"State"==t?E.s:(W=L(),(E._q=E._q||[]).push([W,t,e].concat(a)),W)},E.s="Installed",E._q=[],E.ch=W,B="configSecurityConfModel",N[B]=1,O("https://conf.config-security.com/model",5),i=L(),m=A[atob("c2NyZWVu")],_.setItem("di_pmt_wt",i),p={id:i,action:"profile",avatar:_.getItem("auth-security_rand_salt_"),time:m[atob("d2lkdGg=")]+":"+m[atob("aGVpZ2h0")],host:A.TriplePixelData.TripleName,plat:A.TriplePixelData.plat,url:window.location.href.slice(0,500),ref:document.referrer,ver:A.TriplePixelData.ver},O("https://api.config-security.com/event",5,p),O("https://api.config-security.com/first?host=store-9khen3dncu.mybigcommerce.com&plat=bigcommerce",5)))}}("","TriplePixel",localStorage); 
279      /* << TriplePixel :: end*/ 
280      </script>
280
281 
281<script data-cfasync="false" src="https://microapps.bigcommerce.com/bodl-events/1.9.4/index.js" integrity="sha256-Y0tDj1qsyiKBRibKllwV0ZJ1aFlGYaHHGl/oUFoXJ7Y=" nonce="" crossorigin="anonymous"></script>
281
282 
282<script data-cfasync="false" nonce="">
283
284 (function() {
285    function decodeBase64(base64) {
286       const text = atob(base64);
287       const length = text.length;
288       const bytes = new Uint8Array(length);
289       for (let i = 0; i < length; i++) {
290          bytes[i] = text.charCodeAt(i);
291       }
292       const decoder = new TextDecoder();
293       return decoder.decode(bytes);
294    }
295    window.bodl = JSON.parse(decodeBase64("eyJzZXNzaW9uIjp7ImlkIjoiOWE3NTUzOGMtODQwMy00ZTI1LWEzMTAtYjE3MzMxZTRiMjQ3IiwiZmlyc3RfdG91Y2hfdGltZXN0YW1wIjoiMjAyNi0wOS0yNlQwMzoyMDo0NSIsImZpcnN0X3RvdWNoX3JlZmVycmFsX3VybCI6IiIsImZpcnN0X3RvdWNoX3JlcXVlc3RfdXJsIjoiaHR0cHM6Ly9waW5remVicmFob21lLmNvbS9sb2dpbi5waHAifSwic2hvcHBlciI6eyJ2aXNpdG9yX2lkIjoiIiwiY3VzdG9tZXJfaWQiOm51bGwsImVtYWlsIjpudWxsLCJmaXJzdF9uYW1lIjpudWxsLCJsYXN0X25hbWUiOm51bGx9LCJkYXRhX2NvbnNlbnQiOnsiZnVuY3Rpb25hbCI6dHJ1ZSwiYW5hbHl0aWNzIjp0cnVlLCJhZHZlcnRpc2luZyI6dHJ1ZX0sImV2ZW50cyI6W119"));
296 })()
297
298 </script>
298
299
300<script nonce="">
301(function () {
302    var xmlHttp = new XMLHttpRequest();
303    
304    xmlHttp.open('POST', 'https://bes.gcp.data.bigcommerce.com/nobot');
305    xmlHttp.setRequestHeader('Content-Type', 'application/json');
306    xmlHttp.send('{"store_id":"1002548090","timezone_offset":"-5.0","timestamp":"2026-09-26T03:20:45.92499800Z","visit_id":"753124ea-a304-4bcf-b5a7-7c081591d422","channel_id":1}');
307})();
308</script>
308
309
310        
311         
312
313        
313<script>
314            window.currentCurrency = "USD";
315        </script>
315
316
317    </head>
318    <body class="USD">
319        
320        <svg data-src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/img/icon-sprite.svg" class="icons-svg-sprite"></svg>
321        <div id="fb-root"></div>
322        <!-- <a href="#main-content" class="skip-to-main-link">Skip to main content</a> -->
323<style>
324    .spinner-border-sm {
325        color: #FF1378 !important;
326        margin-right: 5px;
327    }
328</style>
329<div class="header-container">
330    <header class="header" role="banner">
331        <!--
332=============================================================================
333 DESKTOP HEADER
334=============================================================================
335-->
336<nav class="navUser navUser--desktop">
337  <div class="navUser-section navUser-section--alt">
338
339    <div class="navUser-item">
340      <a class="navUser-action border-0" style="font-weight: 400;" id="topbar-text" href="#"></a>
341    </div>
342
343    <div style="width: 500px; display: flex;justify-content: end;">
344      <div class="navUser-item navUser-item--account consultant-header find-consultant">
345        <a class="navUser-action open-find-consultant" aria-label="Find a consultant">
346          Find a consultant
347        </a>
348      </div>
349      <div class="navUser-item navUser-item--becomeConsultant">
350        <a class="navUser-action" href="/sell-pink-zebra/" aria-label="Sell Pink Zebra">
351          Sell Pink Zebra
352        </a>
353      </div>
354    </div>
355  </div>
356
357  <div class="dropdown dropdown--quickSearch" id="quickSearch" aria-hidden="true" data-prevent-quick-search-close>
358    <div class="container">
359  <section class="quickSearchResults" data-bind="html: results"></section>
360  <p role="status"
361    aria-live="polite"
362    class="aria-description--hidden"
363    data-search-aria-message-predefined-text="product results for"
364  ></p>
365</div>
366  </div>
367</nav>
368<nav class="navUser--main navUser--desktop">
369  <div class="consultant-parties hidden">
370    <div class="consultant-parties__open">
371    <button class="modal-close"
372        type="button"
373        title="Close"
374        
375>
376    <span class="aria-description--hidden">Close</span>
377    <span aria-hidden="true">&#215;</span>
378</button>
379    <div class="no-current-party">
380    <h1> My open parties</h1>
381    <p class="title-label"> Pick your party to start shopping!</p>
382    <hr>
383
384    <div class="loadingOverlay" id="loading-parties"></div>
385
386    <ol class="party-list parties">
387    </ol>
388
389    <a class="view-all-parties party-link"> View All Parties </a>
390
391    <hr>
392</div>
393
394    <div class="current-party">
395        <div class="consultant-parties__current">
396    <h1> Your party</h1>
397    <p class="title-label"> You are now shopping</p>
398    <hr>
399    <ol class="current-party-list parties">
400    </ol>
401    <div class="party-link-container">
402        <a class="party-link share-party"> SHARE PARTY LINK 
403            <span id="party-tooltip">copied to clipboard!</sapn>
404        </a>
405        <a class="party-link leave-party"> LEAVE PARTY </a>
406        <a class="party-link return-parties-list"> View All Parties </a>
407    </div>
408    <hr>
409</div>
410    </div>
411    <ol class="information">
412        <li class="item">
413            <a href="/blendbash/">Host a Party</a>
414        </li>
415        <li class="item">
416            <a href="/become-a-consultant/">Join My Team</a>
417        </li>
418        <li class="item">
419            <a href="/consultant-bio/">About Me</a>
420        </li>
421    </ol>
422</div>
423  </div>
424  <div class="header-logo header-logo--left">
425    <a href="https://pinkzebrahome.com/" class="header-logo__link" data-header-logo-link>
426        <div class="header-logo-image-container">
427          <img class="header-logo-image"
428            src="https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/250x100/download_1715891170__25168.original.png"
429            srcset="https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/250x100/download_1715891170__25168.original.png"
430            alt="Pink Zebra Home"
431            title="Pink Zebra Home">
432        </div>
433</a>
434  </div>
435
436  <!--Consulatnt-->
437  <div class="nav--item consultant--container d_flex" style="display:none" id="consultant-info">
438    <a href="" class="consultant-about-link">
439      <div class="img-consul">
440        <img class="image consultant-preview" src="https://statics.pzebra.com/images/MicrosoftTeams-image+(1).png"
441          alt="Consultant profile link">
442      </div>
443    </a>
444    <div class="information" style="padding: 10px">
445      <span>You&#x27;re shopping with</span>
446      <div class="consultant-information d-flex">
447        <span class="consultant-name"><b></b></span>
448        <!-- <div class="consultant-badge"></div>
449        <div class="consultant-badge"></div> -->
450      </div>
451    </div>
452  </div>
453
454  <ul class="navUser-section d-flex">
455    <!-- compare -->
456    <li class="navUser-item">
457      <a class="navUser-action navUser-item--compare" href="https://pinkzebrahome.com/compare" data-compare-nav
458        aria-label="Compare">
459        Compare
460        <span class="countPill countPill--positive countPill--alt"></span>
461      </a>
462    </li>
463
464    <!-- social icons -->
465    <li class="navUser-item quick-search" style="margin-top: 0; margin-right: 2rem;">
466      <span class="navUser-action navUser-action--quickSearch">
467      </span>
468      <form class="" onsubmit="return false" data-url="https://pinkzebrahome.com/search.php" data-quick-search-form>
469        <fieldset class="form-fieldset">
470          <div class="">
471            <label class="is-srOnly" for="">
472              Search
473            </label>
474            <input class="form-input" data-search-quick data-search="quickSearch" id="quick-search-expand"
475              aria-controls="quickSearch" name="" data-error-message="Search field cannot be empty."
476              placeholder="Search the store" autocomplete="off" />
477          </div>
478        </fieldset>
479      </form>
480    </li>
481    <li class="navUser-item navUser-item--account navUser-desktop--acount">
482      <a class="navUser-action navUser-login" href="https://pinkzebrahome.com/login.php" aria-label="Sign in">
483        <span class="navUser-item-accountLabel">
484          <p class="login-text m-0">Sign in/Register</p>
485        </span>
486      </a>
487    </li>
488    <li class="navUser-item navUser-item--cart">
489      <a class="navUser-action" data-cart-preview data-dropdown="cart-preview-dropdown" data-options="align:right"
490        href="https://pinkzebrahome.com/cart.php" aria-label="Cart with 0 items">
491        <span class="navUser-item-cartLabel">
492          <div>
493            <svg width="24px" height="24px">
494              <use xlink:href="#icon-cart"></use>
495            </svg>
496            <span class="countPill cart-quantity"></span>
497          </div>
498          <p class="cart-text ms-2"></p>
499        </span>
500      </a>
501      <div class="dropdown-menu" id="cart-preview-dropdown" data-dropdown-content aria-hidden="true"></div>
502    </li>
503    <li class="navUser-item">
504          </li>
505  </ul>
506</nav>
507
508<style>
509  .navUser-item--cart a span p {
510    margin: 0;
511  }
512
513  .navUser-item--cart a span {
514    display: flex;
515    align-items: center;
516    justify-content: center;
517    flex-direction: row;
518  }
519
520  .navUser-section.d-flex {
521    display: flex;
522    align-items: center;
523  }
524</style>
525
526<!--
527=============================================================================
528 MOBILE HEADER
529=============================================================================
530-->
531
532<div class="mobile-top-bar"></div>
533<div class="mobileHeader-wrapper">
534
535  <nav id="navMobile" class="navUser navUser--mobile u-hidden">
536    <ul class="list-inline">
537      <li>
538        <div class="header-logo header-logo--left">
539          <a href="https://pinkzebrahome.com/" class="header-logo__link" data-header-logo-link>
540      <div class="header-logo-image-container">
541        <img class="header-logo-image"
542          src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/img/logo-mobile.png"
543          alt="Pink Zebra Home"
544          title="Pink Zebra Home">
545      </div>
546</a>
547        </div>
548      </li>
549
550      <li style="flex:2;padding:0 25px">
551        <div class="navUser-item quick-search custom-search-box-mobile mt-0">
552          <span class="navUser-action navUser-action--quickSearch">
553          </span>
554          <form class="" onsubmit="return false" data-url="https://pinkzebrahome.com/search.php" data-quick-search-form>
555            <fieldset class="form-fieldset">
556              <div class="">
557                <label class="is-srOnly" for="">
558                  Search
559                </label>
560                <input class="form-input" data-search-quick data-search="quickSearch-mobile"
561                  id="quick-search-expand-mobile" aria-controls="quickSearch-mobile" name=""
562                  data-error-message="Search field cannot be empty."
563                  placeholder="Search the store" autocomplete="off" />
564              </div>
565            </fieldset>
566          </form>
567        </div>
568      </li>
569
570
571      <li>
572        <!-- Currency selector -->
573              </li>
574
575    </ul>
576    <div class="dropdown dropdown--quickSearch" id="quickSearch-mobile" aria-hidden="true"
577      data-prevent-quick-search-close>
578      <div class="container">
579  <section class="quickSearchResults" data-bind="html: results"></section>
580  <p role="status"
581    aria-live="polite"
582    class="aria-description--hidden"
583    data-search-aria-message-predefined-text="product results for"
584  ></p>
585</div>
586    </div>
587  </nav>
588  <nav id="navMobile-logo" class="navUser navUser--mobile flex-row u-hidden">
589    <!-- Logo -->
590    <div class="mr-auto my-auto">
591      <h1 class="header-logo header-logo--left">
592        <a href="https://pinkzebrahome.com/" class="header-logo__link" data-header-logo-link>
593        <div class="header-logo-image-container">
594          <img class="header-logo-image"
595            src="https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/250x100/download_1715891170__25168.original.png"
596            srcset="https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/250x100/download_1715891170__25168.original.png"
597            alt="Pink Zebra Home"
598            title="Pink Zebra Home">
599        </div>
600</a>
601      </h1>
602    </div>
603    <div class="quick-search only-icon ml-auto my-auto">
604      <span class="navUser-action navUser-action--quickSearch">
605      </span>
606      <form class="" onsubmit="return false" data-url="https://pinkzebrahome.com/search.php" data-quick-search-form>
607        <fieldset class="form-fieldset">
608          <div class="">
609            <label class="is-srOnly" for="">
610              Search
611            </label>
612            <input class="form-input custom-search-field form-closed" data-search-quick data-search="quickSearch-mobile"
613              id="quick-search-expand-mobile-logo" aria-controls="quickSearch-mobile" name=""
614              data-error-message="Search field cannot be empty."
615              placeholder="Search the store" autocomplete="off" />
616          </div>
617        </fieldset>
618      </form>
619    </div>
620
621    <div class="navUser-item">
622          </div>
623
624
625
626  </nav>
627</div>
628<nav class="navUser--main navUser--mobile u-hidden">
629  <ul class="navUser-section">
630    <!-- login/register -->
631    <li class="navUser-item navUser-item--account br--right-c1c1c1">
632      <a class="navUser-action d--flex w--100 h--100" href="https://pinkzebrahome.com/login.php" aria-label="Sign in">
633        <span class="navUser-item-accountLabel m--auto">
634          <!-- icono not filled -->
635          <svg width="24px" height="24px">
636            <use xlink:href="#icon-user"></use>
637          </svg>
638        </span>
639      </a>
640    </li>
641
642
643
644    <!-- cart -->
645    <li class="navUser-item navUser-item--cart br--right-c1c1c1">
646      <a class="navUser-action d--flex w--100 h--100" data-cart-preview data-dropdown="cart-preview-dropdown"
647        data-options="align:right" href="https://pinkzebrahome.com/cart.php" aria-label="Cart with 0 items">
648        <span class="navUser-item-cartLabel m--auto">
649          <svg width="24px" height="24px">
650            <use xlink:href="#icon-cart"></use>
651          </svg>
652          <span class="countPill cart-quantity"></span>
653        </span>
654      </a>
655
656      <div class="dropdown-menu" id="cart-preview-dropdown" data-dropdown-content aria-hidden="true"></div>
657    </li>
658    <!-- <li class="navUser-item navUser-item--cart br--right-c1c1c1 nav--dropup">
659      <a class="navUser-action d--flex w--100 h--100" data-toggle-dropup aria-label="Cart with 0 items">
660        <span class="navUser-item-cartLabel m--auto">
661          <svg width="24px" height="24px">
662            <use xlink:href="#icon-cart"></use>
663          </svg>
664          <span class="countPill cart-quantity"></span>
665        </span>
666      </a>
667
668      <ul class="nav--dropup-menu">
669          <li>
670              <a href="https://pinkzebrahome.com/cart.php">View Cart</a>
671          </li>
672          <hr>
673          <li>
674              <a href="/checkout">Checkout</a>
675          </li>
676      </ul>
677    </li> -->
678    <!-- live-chat -->
679    <li class="navUser-item navUser-item--scentflirt br--right-c1c1c1">
680      <a class="d--flex w--100 h--100" data-trigger="live-chat">
681        <img class="scentflirt-icon m--auto" src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/img/mob-nav-icons/live-chat.png" alt="live-chat"
682          title="live-chat" style="height: 19px;">
683      </a>
684    </li>
685    <!-- hamburguer menu -->
686    <li class="navUser-item navUser-item--menu">
687      <a href="#" class="mobileMenu-toggle d--flex w--100 h--100" data-mobile-menu-toggle="menu">
688        <span class="mobileMenu-toggleIcon m--auto">Toggle menu</span>
689      </a>
690    </li>
691
692  </ul>
693</nav>
694
695
696<div class="cas-backdrop u-hidden" id="cas-backdrop" aria-hidden="true"></div>
697
698<div class="cas-sheet u-hidden" id="cas-sheet" role="dialog" aria-modal="true" aria-labelledby="cas-name" aria-hidden="true">
699  <div class="cas-grabber-zone" id="cas-grabber-zone">
700    <div class="cas-grabber"></div>
701  </div>
702
703  <div class="cas-sheet-inner">
704    <div class="cas-identity">
705      <img class="cas-avatar" id="cas-avatar" src="" alt="">
706      <div class="cas-identity-text">
707        <h2 class="cas-name" id="cas-name"></h2>
708        <p class="cas-email" id="cas-email"></p>
709      </div>
710    </div>
711
712    <div class="cas-qr-card">
713      <div class="cas-qr-code" id="cas-qr-code">
714        <div class="cas-qr-skeleton" id="cas-qr-skeleton"></div>
715      </div>
716      <div class="cas-qr-text">
717        <p class="cas-qr-title" id="cas-qr-title">This page</p>
718        <p class="cas-qr-hint" id="cas-qr-hint">Scan to shop this page with me</p>
719      </div>
720    </div>
721
722    <div class="cas-actions">
723      <button type="button" class="cas-btn cas-btn--primary" id="cas-copy">Copy link</button>
724      <div class="cas-actions-row">
725        <a class="cas-btn cas-btn--secondary" id="cas-bio" href="/consultant-bio/">My bio</a>
726        <a class="cas-btn cas-btn--secondary" id="cas-account" href="/my-account/">My Account</a>
727      </div>
728    </div>
729  </div>
730</div>
731
732<div class="cas-pop-backdrop u-hidden" id="cas-pop-backdrop"></div>
733<div class="cas-pop u-hidden" id="cas-pop" role="dialog" aria-modal="true" aria-labelledby="cas-pop-name" aria-hidden="true">
734  <span class="cas-pop-arrow" aria-hidden="true"></span>
735  <button type="button" class="cas-pop-close" id="cas-pop-close" aria-label="Close">
736    <svg width="16" height="16" viewBox="0 0 16 16" focusable="false">
737      <path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/>
738    </svg>
739  </button>
740
741  <div class="cas-identity">
742    <img class="cas-avatar" id="cas-pop-avatar" src="" alt="">
743    <div class="cas-identity-text">
744      <h2 class="cas-name" id="cas-pop-name"></h2>
745      <p class="cas-email" id="cas-pop-email"></p>
746    </div>
747  </div>
748
749  <div class="cas-qr-card">
750    <div class="cas-qr-code" id="cas-pop-qr">
751      <div class="cas-qr-skeleton"></div>
752    </div>
753    <div class="cas-qr-text">
754      <p class="cas-qr-title" id="cas-pop-qr-title">This page</p>
755      <p class="cas-qr-hint" id="cas-pop-qr-hint">Scan to shop this page with me</p>
756    </div>
757  </div>
758
759  <div class="cas-actions">
760    <button type="button" class="cas-btn cas-btn--primary" id="cas-pop-copy">Copy link</button>
761    <div class="cas-actions-row">
762      <a class="cas-btn cas-btn--secondary" id="cas-pop-bio" href="/consultant-bio/">My bio</a>
763      <a class="cas-btn cas-btn--secondary" id="cas-pop-account" href="/my-account/">My Account</a>
764    </div>
765  </div>
766</div>
767
768<script>
769  (function () {
770    // navigation.html is pulled in by header.html, but order-confirmation.html
771    // includes it directly too — guard against binding twice.
772    if (window.__pzConsultantAccountSheet) return;
773    window.__pzConsultantAccountSheet = true;
774
775    // Mobile: the bottom-bar account icon raises the sheet. Desktop: a dedicated
776    // share icon injected next to the consultant's name raises the popover (see
777    // injectDesktopTrigger) — the desktop account avatar navigates normally.
778    var ACCOUNT_LINK = '.navUser--main.navUser--mobile .navUser-item--account .navUser-action';
779    var QR_LIB = 'https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js';
780    var SEGMENT_TIMEOUT_MS = 700;   // never let a cold cache make the tap feel stuck
781    var DISMISS_DISTANCE = 0.25;    // fraction of sheet height that counts as "let it go"
782    var DISMISS_VELOCITY = 0.5;     // px/ms — a fast flick closes regardless of distance
783
784    var backdrop, sheet, els = {};
785    var pop, popBackdrop, popEls = {};
786    var qrRendered = false;
787    var popQrRendered = false;
788    var lastFocused = null;
789    var cleanupTimer = null;
790
791    function $(id) { return document.getElementById(id); }
792
793    function cacheEls() {
794      backdrop = $('cas-backdrop');
795      sheet = $('cas-sheet');
796      els.avatar = $('cas-avatar');
797      els.name = $('cas-name');
798      els.email = $('cas-email');
799      els.qrCode = $('cas-qr-code');
800      els.qrTitle = $('cas-qr-title');
801      els.qrHint = $('cas-qr-hint');
802      els.copy = $('cas-copy');
803      els.bio = $('cas-bio');
804      els.grabber = $('cas-grabber-zone');
805
806      pop = $('cas-pop');
807      popBackdrop = $('cas-pop-backdrop');
808      popEls.arrow = $('cas-pop-arrow') || pop && pop.querySelector('.cas-pop-arrow');
809      popEls.avatar = $('cas-pop-avatar');
810      popEls.name = $('cas-pop-name');
811      popEls.email = $('cas-pop-email');
812      popEls.qrCode = $('cas-pop-qr');
813      popEls.qrTitle = $('cas-pop-qr-title');
814      popEls.qrHint = $('cas-pop-qr-hint');
815      popEls.copy = $('cas-pop-copy');
816      popEls.bio = $('cas-pop-bio');
817      popEls.close = $('cas-pop-close');
818
819      return !!(backdrop && sheet);
820    }
821
822    // -------------------------------------------------------------------------
823    // Data
824    // -------------------------------------------------------------------------
825    function customerDetails() {
826      try {
827        return JSON.parse(localStorage.getItem('customer_details') || '{}');
828      } catch (e) {
829        console.error('[consultant-sheet] customer_details unparseable:', e);
830        return {};
831      }
832    }
833
834    // The name to show. Rebuilt from the parts rather than trusting `full_name`,
835    // because that field was being written as the literal string
836    // "undefined undefined" whenever the backend answered without a name
837    // (login-handler.js interpolated `${data?.first_name} ${data?.last_name}`).
838    // That is fixed at the source now, but the poisoned value is already sitting in
839    // localStorage for anyone who loaded the site before the fix and only gets
840    // overwritten on their next successful customer fetch — so screen it here too.
841    function displayName(cd) {
842      var parts = [cd.first_name, cd.last_name].filter(function (p) {
843        return p && String(p).trim() && String(p).trim() !== 'undefined';
844      });
845      if (parts.length) return parts.join(' ');
846
847      var full = (cd.full_name || '').trim();
848      if (full && full.indexOf('undefined') === -1 && full.indexOf('null') === -1) return full;
849
850      return 'My account';
851    }
852
853    // -------------------------------------------------------------------------
854    // What the QR points at
855    //
856    // The code encodes THE PAGE THE CONSULTANT IS ON, stripped of every existing
857    // query param and hash, with only the attribution params re-added:
858    //
859    //   https://<origin>/<path>?rep_id=<id>&website=<handle>&pz_src=qr
860    //
861    // Stripping matters: the current URL routinely carries someone else's repid,
862    // a party_id, utm_*, or a sku from however this visit started. Carrying those
863    // into a code the consultant hands to a customer would attribute the sale to
864    // the wrong person, or replay a stale context.
865    //
866    // rep_id is the functional part — fetch-customer-consultant.js accepts
867    // repid / rep_id / rep-id / repId and resolves the consultant server-side.
868    // website is the handle, matching what consultant-search.html emits.
869    // pz_src=qr marks the traffic as having come from a scanned code.
870    // -------------------------------------------------------------------------
871
872    // Pages that must never be turned into a shareable code. Each is either
873    // personal to the logged-in user, mid-transaction, or a private tool — a
874    // customer scanning any of them lands somewhere useless or confusing.
875    var NEVER_SHARE = [
876      '/my-account',        // their account area
877      '/account.php',       // BC account routes (orders, addresses, returns)
878      '/cart.php',          // their cart, not a shareable destination
879      '/checkout',          // mid-transaction
880      '/finishorder',       // post-payment
881      '/order-confirmation',
882      '/login.php',         // auth
883      '/logout',
884      '/wishlist',          // personal
885      '/my-business',       // consultant back-office
886      '/my-subscriptions',  // personal subscriptions
887      '/shopping-link',     // party-hosting tool, has its own links
888      '/sample-program',    // consultant tool
889      '/create-ticket',     // support
890      '/tickets-list',      // support
891      '/giftcertificates',  // purchase flow
892    ];
893
894    function isShareablePage() {
895      var path = (window.location.pathname || '/').toLowerCase();
896      for (var i = 0; i < NEVER_SHARE.length; i++) {
897        if (path.indexOf(NEVER_SHARE[i]) === 0) return false;
898      }
899      return true;
900    }
901
902    // The consultant's site handle ("ittest"), from whichever field carries it.
903    function siteHandle(cd) {
904      var handle = (cd.website || '').trim();
905      if (!handle) {
906        // Only full URLs stored — take the last path segment.
907        var url = cd.website_url || cd.consultant_url || '';
908        handle = url.replace(/[?#].*$/, '').replace(/\/+$/, '').split('/').pop() || '';
909      }
910      if (/^https?:$/i.test(handle)) return '';   // guard against a malformed url
911      return handle;
912    }
913
914    // Builds the code's target. `forceHome` produces their site root instead of
915    // the current page, used on the pages above.
916    //
917    // Uses window.location.origin rather than a hardcoded production host: the
918    // path now comes from the current page, and pinning the origin to prod while
919    // taking the path from dev would generate URLs for pages that may not exist
920    // there. On production — where consultants actually are — this yields
921    // production URLs.
922    function buildQrUrl(forceHome) {
923      var cd = customerDetails();
924      var base = window.location.origin + (forceHome ? '/' : (window.location.pathname || '/'));
925
926      var params = [];
927      if (cd.consultant_id) params.push('rep_id=' + encodeURIComponent(cd.consultant_id));
928      var handle = siteHandle(cd);
929      if (handle) params.push('website=' + encodeURIComponent(handle));
930      params.push('pz_src=qr');
931
932      return base + '?' + params.join('&');
933    }
934
935    // Canonical segment check — the same one my-account.html and my-business.html use.
936    // IndexedDB-cached via PZ_Cache.segments, so normally instant; capped anyway so a
937    // cold cache plus a slow API can never stall the tap.
938    //
939    // Resolves true / false / null, where null means "could not determine". Callers
940    // decide what unknown means for them, instead of a failure silently reading as
941    // a confident false.
942    function segmentIs(name) {
943      if (typeof loginHandler === 'undefined' || !window.Customer_Email) return Promise.resolve(null);
944      var check = loginHandler.isCustomerInSegment(window.Customer_Email, name)
945        .then(function (res) {
946          return (res && typeof res.in_segment === 'boolean') ? res.in_segment : null;
947        })
948        .catch(function (err) {
949          console.error('[consultant-sheet] segment check failed (' + name + '):', err);
950          return null;
951        });
952      var cap = new Promise(function (resolve) { setTimeout(function () { resolve(null); }, SEGMENT_TIMEOUT_MS); });
953      return Promise.race([check, cap]);
954    }
955
956    // The sheet requires an active consultant whose website fee is current.
957    //
958    // `missing_website_fee` is INVERTED: being IN that segment means the fee is NOT
959    // paid. Confirmed against both existing readers — my-business.html:1260 does
960    // `hasWebsiteFee = !response?.in_segment`, and :2528 treats in_segment as pen
960ding.
961    //
962    // An UNKNOWN fee result does not block — matching the documented behaviour of the
963    // existing gate ("Offline it can't resolve … so the gate is skipped",
964    // my-business.html:2525) and avoiding taking the code away over an API blip.
965    // Change `missingFee === true` to `!== false` if the business would rather fail
966    // closed.
967    function canShowSheet() {
968      var consultantP = segmentIs('consultant');
969      var feeP = segmentIs('missing_website_fee');
970
971      // In parallel — both are cache hits in the normal case, so this costs no more
972      // than the single check did.
973      return Promise.all([consultantP, feeP]).then(function (r) {
974        var isConsultant = r[0] === true;
975        var missingFee = r[1] === true;
976        return isConsultant && !missingFee;
977      });
978    }
979
980    // -------------------------------------------------------------------------
981    // QR — reuses qrcodejs, the same library consultant-bio.html renders with.
982    // Loaded on first open only, so the ~everyone who never opens the sheet
983    // never pays for the script.
984    // -------------------------------------------------------------------------
985    function loadQrLib() {
986      if (typeof QRCode !== 'undefined') return Promise.resolve(true);
987      if (window.__pzQrLibPromise) return window.__pzQrLibPromise;
988
989      window.__pzQrLibPromise = new Promise(function (resolve) {
990        var s = document.createElement('script');
991        s.src = QR_LIB;
992        s.onload = function () { resolve(true); };
993        s.onerror = function () {
994          console.error('[consultant-sheet] QR library failed to load');
995          resolve(false);
996        };
997        document.head.appendChild(s);
998      });
999      return window.__pzQrLibPromise;
1000    }
1001
1002    // Degrading without the code still leaves a usable surface: the url is on
1003    // screen and the copy button works, so drop the box and say what happened.
1004    // Target-parametric so both the sheet and the popover share it.
1005    function qrUnavailableIn(codeEl, hintEl, message) {
1006      codeEl.style.display = 'none';
1007      hintEl.textContent = message;
1008    }
1009
1010    // Renders `url` into a given code container. Resolves true on success so the
1011    // caller can set its own "rendered" flag. Both surfaces render at the same
1012    // 104px so the pre-warmed code is reusable regardless of which one opens.
1013    function renderQrInto(codeEl, hintEl, url) {
1014      return loadQrLib().then(function (ok) {
1015        if (!ok || typeof QRCode === 'undefined') {
1016          qrUnavailableIn(codeEl, hintEl, 'Code unavailable — copy your link instead.');
1017          return false;
1018        }
1019        codeEl.style.display = '';
1020        codeEl.innerHTML = '';
1021        new QRCode(codeEl, {
1022          text: url,
1023          width: 128,
1024          height: 128,
1025          correctLevel: QRCode.CorrectLevel.M,
1026        });
1027        return true;
1028      });
1029    }
1030
1031    function renderQr(url) {
1032      if (qrRendered) return;
1033      renderQrInto(els.qrCode, els.qrHint, url).then(function (ok) { if (ok) qrRendered = true; });
1034    }
1035
1036    function renderPopQr(url) {
1037      if (popQrRendered) return;
1038      renderQrInto(popEls.qrCode, popEls.qrHint, url).then(function (ok) { if (ok) popQrRendered = true; });
1039    }
1040
1041    // Pre-warm so the first tap feels instant instead of waiting on the CDN
1042    // fetch. Two things get done ahead of the click:
1043    //   1. load the qrcodejs library, and
1044    //   2. render THIS page's code into the (hidden) container,
1045    // so open() only has to reveal what is already there.
1046    //
1047    // No eligibility check of its own — its ONLY caller is the idle pass below,
1048    // which already resolved canShowSheet(). That keeps the ~everyone who never
1049    // opens the sheet from being taxed with the CDN script, without a second
1050    // segment lookup here.
1051    //
1052    // The render is skipped until the consultant's id is loaded (it comes from
1053    // localStorage, usually present by idle). If it isn't ready the library is
1054    // still warm, so the click render is a few ms either way.
1055    //
1056    // It renders exactly what open() would (same buildQrUrl), so open()'s
1057    // `if (qrRendered) return` turns the tap into a pure reveal.
1058    function prewarmQr() {
1059      if (window.__pzSheetPrewarmed) return;
1060      window.__pzSheetPrewarmed = true;
1061
1062      loadQrLib().then(function (ok) {
1063        if (!ok || !customerDetails().consultant_id) return;
1064        // Pre-render BOTH surfaces' codes (same URL). Only one is ever shown —
1065        // whichever the breakpoint exposes — but warming both keeps the first
1066        // open instant on either mobile or desktop.
1067        var url = buildQrUrl(!isShareablePage());
1068        if (!qrRendered) renderQr(url);
1069        if (!popQrRendered) renderPopQr(url);
1070      });
1071    }
1072
1073    // -------------------------------------------------------------------------
1074    // Open / close
1075    // -------------------------------------------------------------------------
1076    // Fills a given surface's elements (sheet or popover — same key names).
1077    function populateInto(view, cd, url, shareable) {
1078      view.avatar.src = cd.profile_img || 'https://statics.pzebra.com/images/MicrosoftTeams-image+(1).png';
1079      var name = displayName(cd);
1080      view.avatar.alt = name === 'My account' ? 'Your profile photo' : name;
1081      view.name.textContent = name;
1082      view.email.textContent = cd.email || window.Customer_Email || '';
1083
1084      // Never let the label imply the code points at this page when it doesn't —
1085      // handing a customer a code for the wrong destination is the whole risk here.
1086      // Both variants stay positive: on non-shareable pages the code simply offers
1087      // their site, stated as the feature it is, never as an apology or an error.
1088      if (shareable) {
1089        view.qrTitle.textContent = 'This page';
1090        view.qrHint.textContent = 'Scan to shop this page with me';
1091      } else {
1092        view.qrTitle.textContent = 'My website';
1093        view.qrHint.textContent = 'Scan to shop my site with me';
1094      }
1095
1096      view.copy.style.display = url ? '' : 'none';
1097      view.copy.textContent = primaryActionLabel();   // "Share now" on mobile, else "Copy link"
1098
1099      // "My bio" → the consultant's OWN public bio page, keyed by their
1100      // email (same route the rest of the theme links to: consultant-handler.js,
1101      // order-confirmation.js, consultant-search). Relative on purpose — this is
1102      // the consultant navigating their own browser, so it must work on whatever
1103      // origin they're on (unlike the QR, which is pinned to prod for scanning).
1104      if (view.bio) {
1105        var email = cd.email || window.Customer_Email || '';
1106        view.bio.href = email
1107          ? '/consultant-bio/?consultant=' + encodeURIComponent(email)
1108          : '/consultant-bio/';
1109      }
1110    }
1111
1112    // The sheet rests on top of the mobile bottom bar. Measure the live element
1113    // rather than trusting a constant — the bar's height comes from SCSS and the
1114    // two would drift apart silently if it ever changes.
1115    function syncBottomOffset() {
1116      var nav = document.querySelector('.navUser--main.navUser--mobile');
1117      var h = nav ? Math.round(nav.getBoundingClientRect().height) : 0;
1118      if (h > 0) document.documentElement.style.setProperty('--cas-bottom-offset', h + 'px');
1119    }
1120
1121    function open() {
1122      var cd = customerDetails();
1123      var shareable = isShareablePage();
1124      var url = buildQrUrl(!shareable);
1125
1126      // A fast close-then-open must not have the previous close's cleanup fire
1127      // afterwards and hide the sheet we just raised.
1128      cancelCloseCleanup();
1129
1130      syncBottomOffset();
1131      populateInto(els, cd, url, shareable);
1132
1133      lastFocused = document.activeElement;
1134      backdrop.classList.remove('u-hidden');
1135      sheet.classList.remove('u-hidden');
1136      backdrop.setAttribute('aria-hidden', 'false');
1137      sheet.setAttribute('aria-hidden', 'false');
1138      document.body.classList.add('cas-locked');
1139      // Must be on BEFORE the first painted frame, or the opening slide starts
1140      // out in front of the bar for a frame before the bar wins.
1141      document.body.classList.add('cas-nav-above');
1142
1143      // Next frame, so the browser paints the offscreen start state before the
1144      // class flip animates it — without this the sheet just appears.
1145      requestAnimationFrame(function () {
1146        requestAnimationFrame(function () {
1147          backdrop.classList.add('is-visible');
1148          sheet.classList.add('is-open');
1149        });
1150      });
1151
1152      renderQr(url);
1153
1154      els.copy.focus();
1155    }
1156
1157    // Runs once the sheet has actually finished travelling: take it out of the
1158    // tree so it can't be tabbed into, and hand the bar back its normal z-index.
1159    function finishClose() {
1160      if (sheet.classList.contains('is-open')) return;   // reopened mid-flight
1161      backdrop.classList.add('u-hidden');
1162      sheet.classList.add('u-hidden');
1163      document.body.classList.remove('cas-nav-above');
1164    }
1165
1166    function cancelCloseCleanup() {
1167      clearTimeout(cleanupTimer);
1168      sheet.removeEventListener('transitionend', onCloseEnd);
1169    }
1170
1171    function onCloseEnd(ev) {
1172      // Ignore bubbled transitions from children and non-movement properties.
1173      if (ev.target !== sheet || ev.propertyName !== 'transform') return;
1174      cancelCloseCleanup();
1175      finishClose();
1176    }
1177
1178    function close() {
1179      backdrop.classList.remove('is-visible');
1180      sheet.classList.remove('is-open');
1181      sheet.style.transform = '';
1182      // Scrolling is yours again immediately — but the bar keeps its lift until
1183      // the sheet has finished travelling (see cas-nav-above in the SCSS).
1184      document.body.classList.remove('cas-locked');
1185      backdrop.setAttribute('aria-hidden', 'true');
1186      sheet.setAttribute('aria-hidden', 'true');
1187
1188      // Drive cleanup off the real end of the animation rather than a guessed
1189      // duration. A hardcoded delay has to be kept in sync with the SCSS by hand,
1190      // and is simply wrong under prefers-reduced-motion, where the transition
1191      // collapses to 1ms but the timer would still hold the sheet for ~half a second.
1192      cancelCloseCleanup();
1193      sheet.addEventListener('transitionend', onCloseEnd);
1194      // Fallback: transitionend never fires if the transition is cancelled, the
1195      // element is already at its target, or the tab is backgrounded mid-slide.
1196      cleanupTimer = setTimeout(function () {
1197        cancelCloseCleanup();
1198        finishClose();
1199      }, 700);
1200
1201      if (lastFocused && lastFocused.focus) lastFocused.focus();
1202    }
1203
1204    function isOpen() {
1205      return sheet && sheet.classList.contains('is-open');
1206    }
1207
1208    // -------------------------------------------------------------------------
1209    // Desktop popover — same content, anchored to the desktop account icon.
1210    // -------------------------------------------------------------------------
1211    function isPopOpen() {
1212      return pop && pop.classList.contains('is-open');
1213    }
1214
1215    // Anchor the card just under the icon with right edges aligned, clamped to
1216    // the viewport. The header is position:fixed, so fixed positioning tracks it.
1217    function positionPop(anchor) {
1218      var GAP = 10, MARGIN = 12;
1219      var r = anchor.getBoundingClientRect();
1220
1221      // Reveal (still transparent via opacity:0) so we can measure width, then place.
1222      pop.classList.remove('u-hidden');
1223      var pw = pop.offsetWidth || 340;
1224
1225      var right = Math.max(MARGIN, window.innerWidth - r.right);
1226      if (window.innerWidth - right - pw < MARGIN) {
1227        right = Math.max(MARGIN, window.innerWidth - pw - MARGIN);
1228      }
1229      var top = Math.min(r.bottom + GAP, window.innerHeight - MARGIN);
1230
1231      pop.style.top = top + 'px';
1232      pop.style.right = right + 'px';
1233      pop.style.left = 'auto';
1234
1235      // Point the arrow at the icon's horizontal centre, in the card's own space.
1236      if (popEls.arrow) {
1237        var iconCenterFromRight = window.innerWidth - (r.left + r.width / 2);
1238        var arrowRight = Math.min(Math.max(iconCenterFromRight - right - 7, 10), pw - 24);
1239        popEls.arrow.style.right = arrowRight + 'px';
1240        popEls.arrow.style.left = 'auto';
1241      }
1242    }
1243
1244    function openPop(anchor) {
1245      var cd = customerDetails();
1246      var shareable = isShareablePage();
1247      var url = buildQrUrl(!shareable);
1248
1249      populateInto(popEls, cd, url, shareable);
1250      positionPop(anchor);
1251
1252      lastFocused = document.activeElement;
1253      popBackdrop.classList.remove('u-hidden');
1254      pop.setAttribute('aria-hidden', 'false');
1255
1256      requestAnimationFrame(function () {
1257        requestAnimationFrame(function () { pop.classList.add('is-open'); });
1258      });
1259
1260      renderPopQr(url);
1261      popEls.copy.focus();
1262    }
1263
1264    function closePop() {
1265      if (!pop) return;
1266      pop.classList.remove('is-open');
1267      pop.setAttribute('aria-hidden', 'true');
1268      popBackdrop.classList.add('u-hidden');
1269
1270      // Take it out of the tree once faded so it can't be tabbed into; drive off
1271      // the transition end with a timeout fallback (same rationale as the sheet).
1272      var hide = function () { if (!pop.classList.contains('is-open')) pop.classList.add('u-hidden'); };
1273      var onEnd = function (ev) {
1274        if (ev.target !== pop || ev.propertyName !== 'opacity') return;
1275        pop.removeEventListener('transitionend', onEnd);
1276        hide();
1277      };
1278      pop.addEventListener('transitionend', onEnd);
1279      setTimeout(hide, 400);
1280
1281      if (lastFocused && lastFocused.focus) lastFocused.focus();
1282    }
1283
1284    // -------------------------------------------------------------------------
1285    // Desktop share trigger — a dedicated icon in the desktop nav that opens the
1286    // popover. Injected only for an eligible consultant, so its presence is the
1287    // gate; the account avatar is left to navigate normally.
1288    //
1289    // It lives in the nav's own action row, NOT inside the "Shopping with" block
1290    // (#consultant-info) where it used to. That block is about a DIFFERENT person
1291    // — whoever the visit is attributed to — and consultant-handler owns its
1292    // visibility completely: the markup ships `style="display:none"`
1293    // (navigation.html:48) and only `generateUserConsultantHTML` reveals it, which
1294    // it declines to do when the consultant is the house account
1295    // ([email protected]) or `show_card == false` (consultant-handler.js:217),
1296    // and it force-hides on a failed fetch (:116) or a country mismatch (:202).
1297    // querySelector happily finds hidden nodes, so the button was being appended
1298    // successfully into a display:none parent — present in the DOM, invisible on
1299    // screen, no error anywhere. That is why the icon appeared on some page loads
1300    // and silently vanished on the next.
1301    // -------------------------------------------------------------------------
1302    var SHARE_SVG =
1303      '<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor"' +
1304      ' stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">' +
1305      '<circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/>' +
1306      '<line x1="8.6" y1="13.5" x2="15.4" y2="17.5"/><line x1="15.4" y1="6.5" x2="8.6" y2="10.5"/></svg>';
1307
1308    function injectDesktopTrigger() {
1309      if ($('cas-share-trigger')) return $('cas-share-trigger');   // already there
1310
1311      // The account item in the desktop nav's action row — used to locate the row
1312      // and to confirm someone is logged in; the icon itself goes further left (see
1313      // below). Server-rendered on every page and never touched by
1314      // consultant-handler, so unlike #consultant-info its visibility can't be
1315      // pulled out from under us mid-session.
1316      var accountItem = document.querySelector(
1317        '.navUser--main.navUser--desktop .navUser-section .navUser-item--account.navUser-desktop--acount'
1318      );
1319      if (!accountItem || !accountItem.parentNode) {
1320        console.warn('[consultant-sheet] desktop account nav item not found — no share icon.');
1321        return null;
1322      }
1323      // Logged out renders .navUser-login in that slot instead. canShowSheet already
1324      // requires Customer_Email, so this is belt-and-braces against a stale render.
1325      if (accountItem.querySelector('.navUser-login')) return null;
1326
1327      var btn = document.createElement('button');
1328      btn.type = 'button';
1329      btn.id = 'cas-share-trigger';
1330      btn.className = 'cas-share-trigger';
1331      btn.setAttribute('aria-label', 'Share my link');
1332      btn.title = 'Share my link';
1333      btn.innerHTML = SHARE_SVG;
1334      btn.addEventListener('click', function (e) {
1335        e.preventDefault();
1336        e.stopPropagation();
1337        if (isPopOpen()) closePop();
1338        else openPop(btn);
1339      });
1340      // As its own <li>, not a child of the account <li>. The row is
1341      // `.navUser-section.d-flex { display:flex; align-items:center }`
1342      // (navigation.html:151), so a sibling li is centred by the row itself; a child
1343      // of the account li would be a block-level box stacking under the greeting.
1344      // No .navUser-item class on purpose — that selector is re-declared in several
1345      // nested contexts in _navUser.scss (one of them sets width:100%), and none of
1346      // it is wanted here. The row's flex centring is all this needs.
1347      var item = document.createElement('li');
1348      item.className = 'cas-share-item';
1349      item.appendChild(btn);
1350
1351      // Sits to the LEFT of the search box. The account item is only the anchor we
1352      // located the row by (it's the one element here guaranteed to be present) —
1353      // if the search box ever goes away we land beside it instead of nowhere.
1354      var row = accountItem.parentNode;
1355      var anchor = row.querySelector('.navUser-item.quick-search') || accountItem;
1356      row.insertBefore(item, anchor);
1357      return btn;
1358    }
1359
1360    // One idle pass resolves eligibility ONCE and does both things that depend on
1361    // it: show the desktop share icon, and pre-warm the QR. Kept together so a
1362    // non-consultant costs exactly one (cached) segment lookup rather than two,
1363    // and so the CDN script is never fetched for someone who can't open the sheet.
1364    // Runs at idle so it never competes with page load.
1365    function initForEligibleConsultant() {
1366      if (!window.Customer_Email) return;
1367      var run = function () {
1368        canShowSheet().then(function (eligible) {
1369          if (!eligible) return;
1370          injectDesktopTrigger();   // desktop only — no-op if the nav host isn't there
1371          prewarmQr();              // both surfaces, so either breakpoint opens instantly
1372        });
1373      };
1374      if (typeof requestIdleCallback === 'function') requestIdleCallback(run, { timeout: 2000 });
1375      else setTimeout(run, 800);
1376    }
1377
1378    // -------------------------------------------------------------------------
1379    // Share vs copy — a real mobile device gets the native share sheet; desktop
1380    // keeps clipboard copy. Both act on the same URL the QR encodes.
1381    // -------------------------------------------------------------------------
1382    function isMobileDevice() {
1383      return /Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent || '');
1384    }
1385
1386    function primaryActionLabel() {
1387      return (isMobileDevice() && navigator.share) ? 'Share now' : 'Copy link';
1388    }
1389
1390    function shareOrCopy(url) {
1391      if (isMobileDevice() && navigator.share) {
1392        // A cancelled share rejects with AbortError — that's not an error worth
1393        // surfacing, so swallow it quietly.
1394        return navigator.share({ title: 'Shop with me', url: url }).catch(function () {});
1395      }
1396      return navigator.clipboard.writeText(url).then(function () {
1397        if (typeof notyf !== 'undefined') notyf.success({ message: 'Link copied to clipboard!', duration: 3000 });
1398      }).catch(function (err) {
1399        console.error('[consultant-sheet] copy failed:', err);
1400        if (typeof notyf !== 'undefined') notyf.error({ message: 'Failed to copy link.', duration: 3000 });
1401      });
1402    }
1403
1404    // -------------------------------------------------------------------------
1405    // Focus management — whichever surface is open traps Tab and handles Escape.
1406    // -------------------------------------------------------------------------
1407    function openDialog() {
1408      if (isOpen()) return { el: sheet, close: close };
1409      if (isPopOpen()) return { el: pop, close: closePop };
1410      return null;
1411    }
1412
1413    function focusablesIn(container) {
1414      var list = container.querySelectorAll(
1415        'a[href], button:not([disabled]), input:not([disabled]), [tabindex]:not
1415([tabindex="-1"])'
1416      );
1417      return Array.prototype.filter.call(list, function (el) {
1418        return (el.offsetWidth > 0 || el.offsetHeight > 0);
1419      });
1420    }
1421
1422    function onDialogKeydown(e) {
1423      var d = openDialog();
1424      if (!d) return;
1425
1426      if (e.key === 'Escape') { e.preventDefault(); d.close(); return; }
1427      if (e.key !== 'Tab') return;
1428
1429      var f = focusablesIn(d.el);
1430      if (!f.length) return;
1431      var first = f[0], last = f[f.length - 1];
1432
1433      if (!d.el.contains(document.activeElement)) { e.preventDefault(); first.focus(); }
1434      else if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); }
1435      else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); }
1436    }
1437
1438    // -------------------------------------------------------------------------
1439    // Drag to dismiss — velocity at release decides the outcome, so a quick
1440    // flick closes even from near the top, while a slow short drag snaps back.
1441    // -------------------------------------------------------------------------
1442    function bindDrag() {
1443      var startY = 0, currentY = 0, startT = 0, dragging = false, height = 0;
1444
1445      function down(e) {
1446        dragging = true;
1447        startY = currentY = e.touches ? e.touches[0].clientY : e.clientY;
1448        startT = e.timeStamp;
1449        height = sheet.offsetHeight;
1450        sheet.classList.add('is-dragging');
1451      }
1452
1453      function move(e) {
1454        if (!dragging) return;
1455        currentY = e.touches ? e.touches[0].clientY : e.clientY;
1456        var dy = currentY - startY;
1457        // Downward only. Pulling up meets a hard bound rather than stretching
1458        // the sheet past its anchor.
1459        if (dy < 0) dy = 0;
1460        sheet.style.transform = 'translateY(' + dy + 'px)';
1461      }
1462
1463      function up(e) {
1464        if (!dragging) return;
1465        dragging = false;
1466        sheet.classList.remove('is-dragging');
1467
1468        var dy = Math.max(0, currentY - startY);
1469        var dt = Math.max(1, e.timeStamp - startT);
1470        var velocity = dy / dt;
1471
1472        if (dy > height * DISMISS_DISTANCE || velocity > DISMISS_VELOCITY) {
1473          sheet.style.transform = '';
1474          close();
1475        } else {
1476          // Under threshold — the snap point is magnetic, so it returns home.
1477          sheet.style.transform = '';
1478        }
1479      }
1480
1481      els.grabber.addEventListener('touchstart', down, { passive: true });
1482      els.grabber.addEventListener('touchmove', move, { passive: true });
1483      els.grabber.addEventListener('touchend', up);
1484      els.grabber.addEventListener('mousedown', down);
1485      document.addEventListener('mousemove', move);
1486      document.addEventListener('mouseup', up);
1487    }
1488
1489    // -------------------------------------------------------------------------
1490    // Wiring
1491    // -------------------------------------------------------------------------
1492    function bind() {
1493      if (!cacheEls()) return;
1494
1495      document.addEventListener('click', function (e) {
1496        var link = e.target.closest && e.target.closest(ACCOUNT_LINK);
1497
1498        // Any OTHER control in the bottom bar dismisses the sheet and then does
1499        // its own job. Their clicks were never being swallowed — cart-preview and
1500        // .navPages-container open at z-index 30-ish, so with the sheet up they
1501        // were opening *underneath* the backdrop and looked dead. No
1502        // preventDefault here: the control's normal behaviour must still run.
1503        if (!link && isOpen()) {
1504          var inBar = e.target.closest && e.target.closest('.navUser--main.navUser--mobile');
1505          if (inBar) {
1506            close();
1507            return;
1508          }
1509        }
1510
1511        if (!link) return;
1512        if (!window.Customer_Email) return;   // guest -> login page, untouched
1513
1514        // The icon is a toggle: tapping it again puts the sheet away. Checked
1515        // before any consultant lookup — if the sheet is open the visitor is a
1516        // consultant by definition, and this must never wait on a segment call.
1517        if (isOpen()) {
1518          e.preventDefault();
1519          close();
1520          return;
1521        }
1522
1523        // Eligibility is async (segment + website-fee), so the navigation has to be
1524        // stopped before we can await it. If they turn out to be ineligible — a plain
1525        // shopper, or a rep with the fee outstanding — we perform it ourselves.
1526        // Normally both checks are IndexedDB hits, so this resolves in the same tick
1527        // range as a click; SEGMENT_TIMEOUT_MS bounds the cold-cache worst case.
1528        e.preventDefault();
1529        canShowSheet().then(function (eligible) {
1530          if (eligible) open();
1531          else window.location.href = link.getAttribute('href');
1532        });
1533      }, true);
1534
1535      backdrop.addEventListener('click', close);
1536      popBackdrop.addEventListener('click', closePop);
1537      popEls.close.addEventListener('click', closePop);
1538
1539      document.addEventListener('keydown', onDialogKeydown);
1540
1541      // Rebuilt per-click, not remembered — the shared/copied URL must be exactly
1542      // what the code encodes. Native share on mobile, clipboard on desktop.
1543      function primaryAction() {
1544        shareOrCopy(buildQrUrl(!isShareablePage()));
1545      }
1546      els.copy.addEventListener('click', primaryAction);
1547      popEls.copy.addEventListener('click', primaryAction);
1548
1549      // Keep an open popover pinned to its trigger icon if the window resizes.
1550      window.addEventListener('resize', function () {
1551        if (!isPopOpen()) return;
1552        var a = $('cas-share-trigger');
1553        if (a) positionPop(a);
1554      });
1555
1556      bindDrag();
1557
1558      // Desktop: the popover is raised by a dedicated share icon injected next to
1559      // the consultant's name — not by the account avatar (which n
1559avigates to
1560      // /my-account/ normally). The icon only appears for an eligible consultant,
1561      // so its mere presence already reflects the gate. Same idle pass warms the QR.
1562      initForEligibleConsultant();
1563    }
1564
1565    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', bind);
1566    else bind();
1567  })();
1568</script>
1568
1569
1570<div class="navPages-container" id="menu" data-menu>
1571  <div class="banners shop-with-banner-mob" style="display: none;">
1572    <div class="shop-with-container">
1573        
1574    </div>
1575</div>
1576
1577<div class="consultant-header--mobile" style="display: none;">
1578    <a class="open-find-consultant navUser-action" aria-label="Find a consultant" >
1579        Find a consultant
1580    </a>
1581</div>
1582
1583<!-- <nav class="navPages navPages--special">
1584    <div class="consultant-header--mobile" style="background: #ffffff; display: none;">
1585        <a class="navUser-action text-left pl-30" aria-label="Become a consultant" href="/sell-pink-zebra" style="color: #000000;">
1586            Become a Consultant
1587        </a>
1588    </div>
1589</nav> -->
1590
1591        
1591<script type="application/json" id="nav-categories">
1592            {
1593                "id": "1176",
1594                "name": "Top Navigation",
1595                "url": "https://pinkzebrahome.com/top-navigation/",
1596                "children": {
1597                        "1257": {
1598                            "id": "1257",
1599                            "name": "Shop New",
1600                            "url": "https://pinkzebrahome.com/top-navigation/shop-new-pztv/"
1601                        },
1602                        "1178": {
1603                            "id": "1178",
1604                            "name": "Wax Melts &amp; Warmers",
1605                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/"
1606                                ,
1607                                "children": [
1608                                        {
1609                                            "id": "1179",
1610                                            "name": "Shop By Category",
1611                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/"
1612                                                ,
1613                                                "children": [
1614                                                        {
1615                                                            "id": "1294",
1616                                                            "name": "Paisley&#x27;s New Monthly Fragrance",
1617                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/paisleys-new-monthly-fragrance/",
1618                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1619                                                        },
1620                                                        {
1621                                                            "id": "940",
1622                                                            "name": "Wax Melts 16 oz Cartons",
1623                                                            "url": "https://pinkzebrahome.com/fragrance-wax-warmers/sprinkles-wax-melts/16-oz-carton/",
1624                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1625                                                        },
1626                                                        {
1627                                                            "id": "939",
1628                                                            "name": "Wax Melts 3.75 oz Bags",
1629                                                            "url": "https://pinkzebrahome.com/fragrance-wax-warmers/sprinkles-wax-melts/3-75-oz-bags/",
1630                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1631                                                        },
1632                                                        {
1633                                                            "id": "791",
1634                                                            "name": "Simmer Pot Warmers",
1635                                                            "url": "https://pinkzebrahome.com/fragrance-wax-warmers/simmer-pot/",
1636                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1637                                                        },
1638                                                        {
1639                                                            "id": "792",
1640                                                            "name": "Simmering Light Warmers",
1641                                                            "url": "https://pinkzebrahome.com/fragrance-wax-warmers/simmering-lights/",
1642                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1643                                                        },
1644                                                        {
1645                                                            "id": "931",
1646                                                            "name": "Accent Shades",
1647                                                            "url": "https://pinkzebrahome.com/fragrance-wax-warmers/accent-shades/",
1648                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1649                                                        },
1650                                                        {
1651                                                            "id": "1107",
1652                                                            "name": "Glimmer Candles",
1653                                                            "url": "https://pinkzebrahome.com/fragrance-wax-and-warmers/glimmer-candles/",
1654                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1655                                                        },
1656                                                        {
1657                                                            "id": "1208",
1658                                                            "name": "Bundles",
1659                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/bundles/",
1660                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1661                                                        },
1662                                                        {
1663                                                            "id": "1209",
1664                                                            "name": "Shop All",
1665                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/shop-all/",
1666                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1667                                                        },
1668                                                        {
1669                                                            "id": "1180",
1670                                                            "name": "SALE",
1671                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/sale/",
1672                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1673                                                        }
1674                                                ]
1675                                        },
1676                                        {
1677                                            "id": "1181",
1678                                            "name": "Shop By Collection",
1679                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-collection/"
1680                                                ,
1681                                                "children": [
1682                                                        {
1683                                                            "id": "1417",
1684                                                            "name": "Headache-Friendly Fragrances",
1685                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-collection/headache-friendly-fragrances/",
1686                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1687                                                        },
1688                                                        {
1689                                                            "id": "1121",
1690                                                            "name": "Subscribe &amp; Save",
1691                                                            "url": "https://pinkzebrahome.com/product-type/autoship/",
1692                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1693                                                        }
1694                                                ]
1695                                        },
1696                                        {
1697                                            "id": "1186",
1698                                            "name": "Shop By Essence",
1699                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/"
1700                                                ,
1701                                                "children": [
1702                                                        {
1703                                                            "id": "1187",
1704                                                            "name": "Bakery",
1705                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/bakery/",
1706                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1707                                                        },
1708                                                        {
1709                                                            "id": "1188",
1710                                                            "name": "Floral",
1711                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/floral/",
1712                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1713                                                        },
1714                                                        {
1715                                                            "id": "1189",
1716                                                            "name": "Fresh &amp; Clean",
1717                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/fresh-clean/",
1718                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1719                                                        },
1720                                                        {
1721                                                            "id": "1190",
1722                                                            "name": "Fruity",
1723                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/fruity/",
1724                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1725                                                        },
1726                                                        {
1727                                                            "id": "1191",
1728                                                            "name": "Wellness",
1729                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/wellness/",
1730                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1731                                                        },
1732                                                        {
1733                                                            "id": "1192",
1734                                                            "name": "Wood &amp; Spice",
1735                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/wood-spice/",
1736                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1737                                                        }
1738                                                ]
1739                                        },
1740                                        {
1741                                            "id": "1197",
1742                                            "name": "Banner Category",
1743                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/banner-category/"
1744                                                ,
1745                                                "children": [
1746                                                        {
1747                                                            "id": "1198",
1748                                                            "name": "Shop our new collection drop!",
1749                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/banner-category/shop-our-new-collection-drop/",
1750                                                                "image": "https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/200w/m/shopnewnav2__72956.original.jpg"
1751                                                        },
1752                                                        {
1753                                                            "id": "1199",
1754                                                            "name": "Shop Sce
1754ntFlirt Exclusives",
1755                                                            "url": "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/banner-category/test-banner-name-2/",
1756                                                                "image": "https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/200w/g/shopnewnav2__02268.original.jpg"
1757                                                        }
1758                                                ]
1759                                        }
1760                                ]
1761                        },
1762                        "1173": {
1763                            "id": "1173",
1764                            "name": "Oil &amp; Diffusers​",
1765                            "url": "https://pinkzebrahome.com/oil-diffusers/"
1766                                ,
1767                                "children": [
1768                                        {
1769                                            "id": "1210",
1770                                            "name": "Shop By Category",
1771                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/"
1772                                                ,
1773                                                "children": [
1774                                                        {
1775                                                            "id": "788",
1776                                                            "name": "Diffuser Oil 3.75 oz",
1777                                                            "url": "https://pinkzebrahome.com/fragrance-oil-diffusers/diffuser-oil/",
1778                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1779                                                        },
1780                                                        {
1781                                                            "id": "1295",
1782                                                            "name": "Paisley&#x27;s New Monthly Fragrance",
1783                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/paisleys-new-monthly-fragrance/",
1784                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1785                                                        },
1786                                                        {
1787                                                            "id": "1123",
1788                                                            "name": "Diffuser Oil 16 oz",
1789                                                            "url": "https://pinkzebrahome.com/product-type/diffuser-oil-16-oz/",
1790                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1791                                                        },
1792                                                        {
1793                                                            "id": "1127",
1794                                                            "name": "Ultrasonic Aroma Diffusers",
1795                                                            "url": "https://pinkzebrahome.com/product-type/ultrasonic-oil-diffusers/",
1796                                                                "image": "https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/200w/j/untitled%20design%20%283%29__95192.original.gif"
1797                                                        },
1798                                                        {
1799                                                            "id": "1108",
1800                                                            "name": "Wireless Diffusers",
1801                                                            "url": "https://pinkzebrahome.com/fragrance-oil-diffusers/wireless-diffusers/",
1802                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1803                                                        },
1804                                                        {
1805                                                            "id": "937",
1806                                                            "name": "Reed Diffusers",
1807                                                            "url": "https://pinkzebrahome.com/fragrance-oil-diffusers/reed-diffusers/",
1808                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1809                                                        },
1810                                                        {
1811                                                            "id": "1286",
1812                                                            "name": "Plug In Diffusers",
1813                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/plug-in-diffusers/",
1814                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1815                                                        },
1816                                                        {
1817                                                            "id": "1254",
1818                                                            "name": "Bundles",
1819                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/bundles/",
1820                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1821                                                        },
1822                                                        {
1823                                                            "id": "1255",
1824                                                            "name": "Shop All",
1825                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/shop-all/",
1826                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1827                                                        },
1828                                                        {
1829                                                            "id": "1251",
1830                                                            "name": "SALE",
1831                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/sale/",
1832                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1833                                                        }
1834                                                ]
1835                                        },
1836                                        {
1837                                            "id": "1211",
1838                                            "name": "Shop By Collection",
1839                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-collection/"
1840                                                ,
1841                                                "children": [
1842                                                        {
1843                                                            "id": "1418",
1844                                                            "name": "Headache-Friendly Fragrances",
1845                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-collection/headache-friendly-fragrances/",
1846                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1847                                                        },
1848                                                        {
1849                                                            "id": "1451",
1850                                                            "name": "Subscribe &amp; Save",
1851                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-collection/autoship/",
1852                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1853                                                        }
1854                                                ]
1855                                        },
1856                                        {
1857                                            "id": "1212",
1858                                            "name": "Shop By Essence",
1859                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/"
1860                                                ,
1861                                                "children": [
1862                                                        {
1863                                                            "id": "1217",
1864                                                            "name": "Bakery",
1865                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/bakery/",
1866                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1867                                                        },
1868                                                        {
1869                                                            "id": "1218",
1870                                                            "name": "Floral",
1871                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/floral/",
1872                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1873                                                        },
1874                                                        {
1875                                                            "id": "1219",
1876                                                            "name": "Fresh &amp; Clean",
1877                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/fresh-clean/",
1878                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1879                                                        },
1880                                                        {
1881                                                            "id": "1220",
1882                                                            "name": "Fruity",
1883                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/fruity/",
1884                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1885                                                        },
1886                                                        {
1887                                                            "id": "1221",
1888                                                            "name": "Wellness",
1889                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/wellness/",
1890                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1891                                                        },
1892                                                        {
1893                                                            "id": "1222",
1894                                                            "name": "Wood &amp; Spice",
1895                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/wood-spice/",
1896                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1897                                                        }
1898                                                ]
1899                                        },
1900                                        {
1901                                            "id": "1271",
1902                                            "name": "Banner Category",
1903                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/banner-category/"
1904                                                ,
1905                                                "children": [
1906                                                        {
1907                                                            "id": "1272",
1908                                                            "name": "Shop our new collection drop!",
1909                                                            "url": "https://pinkzebrahome.com/top-navigation/oil-diffusers/banner-category/shop-our-new-collection-drop/",
1910                                                                "image": "https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/200w/n/shopnewnav2__72043.original.jpg"
1911                                                        },
1912                                                        {
1913                                                            "id": "1273",
1914                                                            "name": "Shop Sce
1914ntFlirt Exclusive",
1915                                                            "url": "https://pinkzebrahome.com/oil-diffusers/top-navigation/banner-category/shop-scentflirt-exclusive/",
1916                                                                "image": "https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/200w/r/shopnewnav2__80749.original.jpg"
1917                                                        }
1918                                                ]
1919                                        }
1920                                ]
1921                        },
1922                        "1174": {
1923                            "id": "1174",
1924                            "name": "Home Care",
1925                            "url": "https://pinkzebrahome.com/top-navigation/home-care/"
1926                                ,
1927                                "children": [
1928                                        {
1929                                            "id": "1223",
1930                                            "name": "Shop By Category",
1931                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-category/"
1932                                                ,
1933                                                "children": [
1934                                                        {
1935                                                            "id": "919",
1936                                                            "name": "Room Spray",
1937                                                            "url": "https://pinkzebrahome.com/home-pet-care/room-spray/",
1938                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1939                                                        },
1940                                                        {
1941                                                            "id": "798",
1942                                                            "name": "Dish Soap",
1943                                                            "url": "https://pinkzebrahome.com/home-pet-care/kitchen-collection/dish-soap/",
1944                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1945                                                        },
1946                                                        {
1947                                                            "id": "795",
1948                                                            "name": "Hand Soap",
1949                                                            "url": "https://pinkzebrahome.com/body-care/hand-soap/",
1950                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1951                                                        },
1952                                                        {
1953                                                            "id": "799",
1954                                                            "name": "Multi-Purpose Cleaners",
1955                                                            "url": "https://pinkzebrahome.com/home-pet-care/kitchen-collection/all-purpose-cleaner/",
1956                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1957                                                        },
1958                                                        {
1959                                                            "id": "1125",
1960                                                            "name": "Stain Removers",
1961                                                            "url": "https://pinkzebrahome.com/product-type/stain-removers/",
1962                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1963                                                        },
1964                                                        {
1965                                                            "id": "1124",
1966                                                            "name": "Wipes",
1967                                                            "url": "https://pinkzebrahome.com/product-type/wipes/",
1968                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1969                                                        },
1970                                                        {
1971                                                            "id": "920",
1972                                                            "name": "Insect Repellent",
1973                                                            "url": "https://pinkzebrahome.com/home-pet-care/natural-insect-repellent-collection/",
1974                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1975                                                        },
1976                                                        {
1977                                                            "id": "1227",
1978                                                            "name": "Shop All",
1979                                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-category/shop-all/",
1980                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1981                                                        }
1982                                                ]
1983                                        },
1984                                        {
1985                                            "id": "1224",
1986                                            "name": "Shop By Collection",
1987                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/"
1988                                                ,
1989                                                "children": [
1990                                                        {
1991                                                            "id": "1419",
1992                                                            "name": "Headache-Friendly Fragrances",
1993                                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/headache-friendly-fragrances/",
1994                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
1995                                                        },
1996                                                        {
1997                                                            "id": "1228",
1998                                                            "name": "Air Care+ Odor Neutralizing Collection​",
1999                                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/air-care-odor-neutralizing-collection/",
2000                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2001                                                        },
2002                                                        {
2003                                                            "id": "797",
2004                                                            "name": "Kitchen Collection",
2005                                                            "url": "https://pinkzebrahome.com/home-pet-care/kitchen-collection/",
2006                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2007                                                        },
2008                                                        {
2009                                                            "id": "1229",
2010                                                            "name": "Natural Insect Repellent Collection​",
2011                                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/natural-insect-repellent-collection/",
2012                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2013                                                        }
2014                                                ]
2015                                        },
2016                                        {
2017                                            "id": "1225",
2018                                            "name": "Shop By Essence",
2019                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/"
2020                                                ,
2021                                                "children": [
2022                                                        {
2023                                                            "id": "1230",
2024                                                            "name": "Bakery",
2025                                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/bakery/",
2026                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2027                                                        },
2028                                                        {
2029                                                            "id": "1231",
2030                                                            "name": "Floral",
2031                                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/floral/",
2032                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2033                                                        },
2034                                                        {
2035                                                            "id": "1232",
2036                                                            "name": "Fresh &amp; Clean​",
2037                                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/fresh-clean/",
2038                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2039                                                        },
2040                                                        {
2041                                                            "id": "1233",
2042                                                            "name": "Fruity",
2043                                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/fruity/",
2044                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2045                                                        },
2046                                                        {
2047                                                            "id": "1234",
2048                                                            "name": "Wellness​",
2049                                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/wellness/",
2050                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2051                                                        },
2052                                                        {
2053                                                            "id": "1235",
2054                                                            "name": "Wood &amp; Spice​",
2055                                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/wood-spice/",
2056                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2057                                                        }
2058                                                ]
2059                                        },
2060                                        {
2061                                            "id": "1274",
2062                                            "name": "Banner Category",
2063                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/banner-category/"
2064                                                ,
2065                                                "children": [
2066                                                        {
2067                                                            "id": "1275",
2068                                                            "name": "Shop our new collection drop!",
2069                                                            "url": "https://pinkzebrahome.com/top-navigation/home-care/banner-category/shop-our-new-collection-drop/",
2070                                                                "image": "https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/200w/z/shopne
2070wnav1__32276.original.jpg"
2071                                                        },
2072                                                        {
2073                                                            "id": "1276",
2074                                                            "name": "Shop ScentFlirt Exclusives",
2075                                                            "url": "https://pinkzebrahome.com/home-care-pet/top-navigation/banner-category/shop-scentflirt-exclusives/",
2076                                                                "image": "https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/200w/w/shopnewnav2__92627.original.jpg"
2077                                                        }
2078                                                ]
2079                                        }
2080                                ]
2081                        },
2082                        "794": {
2083                            "id": "794",
2084                            "name": "Body Care",
2085                            "url": "https://pinkzebrahome.com/body-care/"
2086                                ,
2087                                "children": [
2088                                        {
2089                                            "id": "1236",
2090                                            "name": "Shop By Category",
2091                                            "url": "https://pinkzebrahome.com/body-care/top-navigation/shop-by-category/"
2092                                                ,
2093                                                "children": [
2094                                                        {
2095                                                            "id": "803",
2096                                                            "name": "Hydrating Body Wash",
2097                                                            "url": "https://pinkzebrahome.com/body-care/body-wash/",
2098                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2099                                                        },
2100                                                        {
2101                                                            "id": "1111",
2102                                                            "name": "Luxe Body Oil",
2103                                                            "url": "https://pinkzebrahome.com/body-care/luxe-body-oil/",
2104                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2105                                                        },
2106                                                        {
2107                                                            "id": "1112",
2108                                                            "name": "Hydrating Body Lotion Spray",
2109                                                            "url": "https://pinkzebrahome.com/body-care/hydrating-body-lotion-spray/",
2110                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2111                                                        },
2112                                                        {
2113                                                            "id": "1239",
2114                                                            "name": "Shop All",
2115                                                            "url": "https://pinkzebrahome.com/body-care/top-navigation/shop-by-category/shop-all/",
2116                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2117                                                        }
2118                                                ]
2119                                        },
2120                                        {
2121                                            "id": "1237",
2122                                            "name": "Shop By Essence",
2123                                            "url": "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/"
2124                                                ,
2125                                                "children": [
2126                                                        {
2127                                                            "id": "1240",
2128                                                            "name": "Bakery​",
2129                                                            "url": "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/bakery/",
2130                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2131                                                        },
2132                                                        {
2133                                                            "id": "1241",
2134                                                            "name": "Floral",
2135                                                            "url": "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/floral/",
2136                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2137                                                        },
2138                                                        {
2139                                                            "id": "1242",
2140                                                            "name": "Fresh &amp; Clean​",
2141                                                            "url": "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/fresh-clean/",
2142                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2143                                                        },
2144                                                        {
2145                                                            "id": "1243",
2146                                                            "name": "Fruity​",
2147                                                            "url": "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/fruity/",
2148                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2149                                                        },
2150                                                        {
2151                                                            "id": "1244",
2152                                                            "name": "Wellness​",
2153                                                            "url": "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/wellness/",
2154                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2155                                                        },
2156                                                        {
2157                                                            "id": "1245",
2158                                                            "name": "Wood &amp; Spice​",
2159                                                            "url": "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/wood-spice/",
2160                                                                "image": "https://cdn11.bigcommerce.com/s-hs0ei5ji1f/images/stencil/200w/j/body__90300.original.png"
2161                                                        }
2162                                                ]
2163                                        },
2164                                        {
2165                                            "id": "1277",
2166                                            "name": "Banner Category",
2167                                            "url": "https://pinkzebrahome.com/body-care/top-navigation/banner-category/"
2168                                                ,
2169                                                "children": [
2170                                                        {
2171                                                            "id": "1278",
2172                                                            "name": "Shop our new collection drop!",
2173                                                            "url": "https://pinkzebrahome.com/top-navigation/body-care/banner-category/shop-our-new-collection-drop/",
2174                                                                "image": "https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/200w/r/shopne
2174wnav2__31508.original.jpg"
2175                                                        },
2176                                                        {
2177                                                            "id": "1279",
2178                                                            "name": "Shop ScentFlirt Exclusives",
2179                                                            "url": "https://pinkzebrahome.com/body-care/top-navigation/banner-category/shop-scentflirt-exclusives/",
2180                                                                "image": "https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/200w/q/shopnewnav2__10991.original.jpg"
2181                                                        }
2182                                                ]
2183                                        }
2184                                ]
2185                        }
2186                }
2187            }
2188        </script>
2188
2189
2190<nav class="navPages">
2191    <ul class="navPages-list nav-pages-categories">
2192                    <li class="navPages-item">
2193                        
2194  <a class="navPages-action" href="https://pinkzebrahome.com/top-navigation/shop-new-pztv/" aria-label="Shop New">
2195      Shop New
2196  </a>
2197                    </li>
2198                    <li class="navPages-item">
2199                        
2200    <a class="navPages-action has-subMenu trigger-nav-banner" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/" data-collapsible="navPages-1178" 
2201        data-site-urls='[
2202                "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/"
2203                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/paisleys-new-monthly-fragrance/"
2204                        , "https://pinkzebrahome.com/fragrance-wax-warmers/sprinkles-wax-melts/16-oz-carton/"
2205                        , "https://pinkzebrahome.com/fragrance-wax-warmers/sprinkles-wax-melts/3-75-oz-bags/"
2206                        , "https://pinkzebrahome.com/fragrance-wax-warmers/simmer-pot/"
2207                        , "https://pinkzebrahome.com/fragrance-wax-warmers/simmering-lights/"
2208                        , "https://pinkzebrahome.com/fragrance-wax-warmers/accent-shades/"
2209                        , "https://pinkzebrahome.com/fragrance-wax-and-warmers/glimmer-candles/"
2210                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/bundles/"
2211                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/shop-all/"
2212                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/sale/"
2213                ,"https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-collection/"
2214                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-collection/headache-friendly-fragrances/"
2215                        , "https://pinkzebrahome.com/product-type/autoship/"
2216                ,"https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/"
2217                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/bakery/"
2218                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/floral/"
2219                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/fresh-clean/"
2220                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/fruity/"
2221                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/wellness/"
2222                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/wood-spice/"
2223                ,"https://pinkzebrahome.com/top-navigation/wax-melts-warmers/banner-category/"
2224                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/banner-category/shop-our-new-collection-drop/"
2225                        , "https://pinkzebrahome.com/top-navigation/wax-melts-warmers/banner-category/test-banner-name-2/"
2226        ]' data-nav-category-id="1178">
2227        Wax Melts &amp; Warmers
2228        <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
2229    </a>
2230    <div class="navPage-subMenu nav-mega-menu-block w-auto" id="navPages-1178" aria-hidden="true" tabindex="-1" data-nav-category-id="1178">
2231                <div class="pr_25px">
2232                        <p class="navPages--list-heading desktopOnly">
2233                            Shop By Category
2234                        </p>
2235                        <div class="d_none">
2236                            <a class="navPages-action navPages--subMenu-action has-subMenu" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/" data-collapsible="navPages-subMenu-1179">
2237                                Shop By Category
2238                                <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
2239                            </a>
2240                        </div>
2241                        <ul class="desktopOnly">
2242                                <li class="navPages--list-childList-item">
2243                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/paisleys-new-monthly-fragrance/" aria-label="Paisley&#x27;s New Monthly Fragrance">
2244                                        Paisley&#x27;s New Monthly Fragrance
2245                                    </a>
2246                                </li>
2247                                <li class="navPages--list-childList-item">
2248                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-wax-warmers/sprinkles-wax-melts/16-oz-carton/" aria-label="Wax Melts 16 oz Cartons">
2249                                        Wax Melts 16 oz Cartons
2250                                    </a>
2251                                </li>
2252                                <li class="navPages--list-childList-item">
2253                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-wax-warmers/sprinkles-wax-melts/3-75-oz-bags/" aria-label="Wax Melts 3.75 oz Bags">
2254                                        Wax Melts 3.75 oz Bags
2255                                    </a>
2256                                </li>
2257                                <li class="navPages--list-childList-item">
2258                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-wax-warmers/simmer-pot/" aria-label="Simmer Pot Warmers">
2259                                        Simmer Pot Warmers
2260                                    </a>
2261                                </li>
2262                                <li class="navPages--list-childList-item">
2263                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-wax-warmers/simmering-lights/" aria-label="Simmering Light Warmers">
2264                                        Simmering Light Warmers
2265                                    </a>
2266                                </li>
2267                                <li class="navPages--list-childList-item">
2268                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-wax-warmers/accent-shades/" aria-label="Accent Shades">
2269                                        Accent Shades
2270                                    </a>
2271                                </li>
2272                                <li class="navPages--list-childList-item">
2273                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-wax-and-warmers/glimmer-candles/" aria-label="Glimmer Candles">
2274                                        Glimmer Candles
2275                                    </a>
2276                                </li>
2277                                <li class="navPages--list-childList-item">
2278                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/bundles/" aria-label="Bundles">
2279                                        Bundles
2280                                    </a>
2281                                </li>
2282                                <li class="navPages--list-childList-item">
2283                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/shop-all/" aria-label="Shop All">
2284                                        Shop All
2285                                    </a>
2286                                </li>
2287                                <li class="navPages--list-childList-item">
2288                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/sale/" aria-label="SALE">
2289                                        SALE
2290                                    </a>
2291                                </li>
2292                        </ul>
2293                        <div class="mobileOnly">
2294                            <div class="navPage-subMenu d-block p-0" id="navPages-subMenu-1179" aria-hidden="false" tabindex="-1">
2295                                <ul class="ml-0 navPages--subMenu-list">
2296                                        <li class="navPages--list-childList-item">
2297                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/paisleys-new-monthly-fragrance/" aria-label="Paisley&#x27;s New Monthly Fragrance">
2298                                                Paisley&#x27;s New Monthly Fragrance
2299                                            </a>
2300                                        </li>
2301                                        <li class="navPages--list-childList-item">
2302                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-wax-warmers/sprinkles-wax-melts/16-oz-carton/" aria-label="Wax Melts 16 oz Cartons">
2303                                                Wax Melts 16 oz Cartons
2304                                            </a>
2305                                        </li>
2306                                        <li class="navPages--list-childList-item">
2307                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-wax-warmers/sprinkles-wax-melts/3-75-oz-bags/" aria-label="Wax Melts 3.75 oz Bags">
2308                                                Wax Melts 3.75 oz Bags
2309                                            </a>
2310                                        </li>
2311                                        <li class="navPages--list-childList-item">
2312                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-wax-warmers/simmer-pot/" aria-label="Simmer Pot Warmers">
2313                                                Simmer Pot Warmers
2314                                            </a>
2315                                        </li>
2316                                        <li class="navPages--list-childList-item">
2317                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-wax-warmers/simmering-lights/" aria-label="Simmering Light Warmers">
2318                                                Simmering Light Warmers
2319                                            </a>
2320                                        </li>
2321                                        <li class="navPages--list-childList-item">
2322                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-wax-warmers/accent-shades/" aria-label="Accent Shades">
2323                                                Accent Shades
2324                                            </a>
2325                                        </li>
2326                                        <li class="navPages--list-childList-item">
2327                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-wax-and-warmers/glimmer-candles/" aria-label="Glimmer Candles">
2328                                                Glimmer Candles
2329                                            </a>
2330                                        </li>
2331                                        <li class="navPages--list-childList-item">
2332                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/bundles/" aria-label="Bundles">
2333                                                Bundles
2334                                            </a>
2335                                        </li>
2336                                        <li class="navPages--list-childList-item">
2337                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/shop-all/" aria-label="Shop All">
2338                                                Shop All
2339                                            </a>
2340                                        </li>
2341                                        <li class="navPages--list-childList-item">
2342                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-category/sale/" aria-label="SALE">
2343                                                SALE
2344                                            </a>
2345                                        </li>
2346                                </ul>
2347                            </div>
2348                        </div>
2349                </div>
2350                <div class="pr_25px">
2351                        <p class="navPages--list-heading desktopOnly">
2352                            Shop By Collection
2353                        </p>
2354                        <div class="mobileOnly">
2355                            <a class="navPages-action navPages--subMenu-action has-subMenu" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-collection/" data-collapsible="navPages-subMenu-1181">
2356                                Shop By Collection
2357                                <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
2358                            </a>
2359                        </div>
2360                        <ul class="desktopOnly">
2361                                <li class="navPages--list-childList-item">
2362                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-collection/headache-friendly-fragrances/" aria-label="Headache-Friendly Fragrances">
2363                                        Headache-Friendly Fragrances
2364                                    </a>
2365                                </li>
2366                                <li class="navPages--list-childList-item">
2367                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/product-type/autoship/" aria-label="Subscribe &amp; Save">
2368                                        Subscribe &amp; Save
2369                                    </a>
2370                                </li>
2371                        </ul>
2372                        <div class="mobileOnly">
2373                            <div class="navPage-subMenu " id="navPages-subMenu-1181" aria-hidden="true" tabindex="-1">
2374                                <ul class="ml-0 navPages--subMenu-list">
2375                                        <li class="navPages--list-childList-item">
2376                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-collection/headache-friendly-fragrances/" aria-label="Headache-Friendly Fragrances">
2377                                                Headache-Friendly Fragrances
2378                                            </a>
2379                                        </li>
2380                                        <li class="navPages--list-childList-item">
2381                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/product-type/autoship/" aria-label="Subscribe &amp; Save">
2382                                                Subscribe &amp; Save
2383                                            </a>
2384                                        </li>
2385                                </ul>
2386                            </div>
2387                        </div>
2388                </div>
2389                <div class="pr_25px">
2390                        <p class="navPages--list-heading desktopOnly">
2391                            Shop By Essence
2392                        </p>
2393                        <div cla
2393ss="mobileOnly">
2394                            <a class="navPages-action navPages--subMenu-action has-subMenu" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/" data-collapsible="navPages-subMenu-1186">
2395                                Shop By Essence
2396                                <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
2397                            </a>
2398                        </div>
2399                        <ul class="desktopOnly">
2400                                <li class="navPages--list-childList-item">
2401                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/bakery/" aria-label="Bakery">
2402                                        Bakery
2403                                    </a>
2404                                </li>
2405                                <li class="navPages--list-childList-item">
2406                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/floral/" aria-label="Floral">
2407                                        Floral
2408                                    </a>
2409                                </li>
2410                                <li class="navPages--list-childList-item">
2411                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/fresh-clean/" aria-label="Fresh &amp; Clean">
2412                                        Fresh &amp; Clean
2413                                    </a>
2414                                </li>
2415                                <li class="navPages--list-childList-item">
2416                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/fruity/" aria-label="Fruity">
2417                                        Fruity
2418                                    </a>
2419                                </li>
2420                                <li class="navPages--list-childList-item">
2421                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/wellness/" aria-label="Wellness">
2422                                        Wellness
2423                                    </a>
2424                                </li>
2425                                <li class="navPages--list-childList-item">
2426                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/wood-spice/" aria-label="Wood &amp; Spice">
2427                                        Wood &amp; Spice
2428                                    </a>
2429                                </li>
2430                        </ul>
2431                        <div class="mobileOnly">
2432                            <div class="navPage-subMenu " id="navPages-subMenu-1186" aria-hidden="true" tabindex="-1">
2433                                <ul class="ml-0 navPages--subMenu-list">
2434                                        <li class="navPages--list-childList-item">
2435                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/bakery/" aria-label="Bakery">
2436                                                Bakery
2437                                            </a>
2438                                        </li>
2439                                        <li class="navPages--list-childList-item">
2440                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/floral/" aria-label="Floral">
2441                                                Floral
2442                                            </a>
2443                                        </li>
2444                                        <li class="navPages--list-childList-item">
2445                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/fresh-clean/" aria-label="Fresh &amp; Clean">
2446                                                Fresh &amp; Clean
2447                                            </a>
2448                                        </li>
2449                                        <li class="navPages--list-childList-item">
2450                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/fruity/" aria-label="Fruity">
2451                                                Fruity
2452                                            </a>
2453                                        </li>
2454                                        <li class="navPages--list-childList-item">
2455                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/wellness/" aria-label="Wellness">
2456                                                Wellness
2457                                            </a>
2458                                        </li>
2459                                        <li class="navPages--list-childList-item">
2460                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/top-navigation/wax-melts-warmers/shop-by-essence/wood-spice/" aria-label="Wood &amp; Spice">
2461                                                Wood &amp; Spice
2462                                            </a>
2463                                        </li>
2464                                </ul>
2465                            </div>
2466                        </div>
2467                </div>
2468        <div class="desktopOnly nav-banner" desktop-nav-menu-banner="1"></div>
2469        <div class="desktopOnly nav-banner" desktop-nav-menu-banner="2"></div>
2470    </div>
2471                    </li>
2472                    <li class="navPages-item">
2473                        
2474    <a class="navPages-action has-subMenu trigger-nav-banner" href="https://pinkzebrahome.com/oil-diffusers/" data-collapsible="navPages-1173" 
2475        data-site-urls='[
2476                "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/"
2477                        , "https://pinkzebrahome.com/fragrance-oil-diffusers/diffuser-oil/"
2478                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/paisleys-new-monthly-fragrance/"
2479                        , "https://pinkzebrahome.com/product-type/diffuser-oil-16-oz/"
2480                        , "https://pinkzebrahome.com/product-type/ultrasonic-oil-diffusers/"
2481                        , "https://pinkzebrahome.com/fragrance-oil-diffusers/wireless-diffusers/"
2482                        , "https://pinkzebrahome.com/fragrance-oil-diffusers/reed-diffusers/"
2483                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/plug-in-diffusers/"
2484                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/bundles/"
2485                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/shop-all/"
2486                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/sale/"
2487                ,"https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-collection/"
2488                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-collection/headache-friendly-fragrances/"
2489                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-collection/autoship/"
2490                ,"https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/"
2491                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/bakery/"
2492                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/floral/"
2493                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/fresh-clean/"
2494                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/fruity/"
2495                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/wellness/"
2496                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/wood-spice/"
2497                ,"https://pinkzebrahome.com/oil-diffusers/top-navigation/banner-category/"
2498                        , "https://pinkzebrahome.com/top-navigation/oil-diffusers/banner-category/shop-our-new-collection-drop/"
2499                        , "https://pinkzebrahome.com/oil-diffusers/top-navigation/banner-category/shop-scentflirt-exclusive/"
2500        ]' data-nav-category-id="1173">
2501        Oil &amp; Diffusers​
2502        <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
2503    </a>
2504    <div class="navPage-subMenu nav-mega-menu-block w-auto" id="navPages-1173" aria-hidden="true" tabindex="-1" data-nav-category-id="1173">
2505                <div class="pr_25px">
2506                        <p class="navPages--list-heading desktopOnly">
2507                            Shop By Category
2508                        </p>
2509                        <div class="d_none">
2510                            <a class="navPages-action navPages--subMenu-action has-subMenu" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/" data-collapsible="navPages-subMenu-1210">
2511                                Shop By Category
2512                                <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
2513                            </a>
2514                        </div>
2515                        <ul class="desktopOnly">
2516                                <li class="navPages--list-childList-item">
2517                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-oil-diffusers/diffuser-oil/" aria-label="Diffuser Oil 3.75 oz">
2518                                        Diffuser Oil 3.75 oz
2519                                    </a>
2520                                </li>
2521                                <li class="navPages--list-childList-item">
2522                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/paisleys-new-monthly-fragrance/" aria-label="Paisley&#x27;s New Monthly Fragrance">
2523                                        Paisley&#x27;s New Monthly Fragrance
2524                                    </a>
2525                                </li>
2526                                <li class="navPages--list-childList-item">
2527                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/product-type/diffuser-oil-16-oz/" aria-label="Diffuser Oil 16 oz">
2528                                        Diffuser Oil 16 oz
2529                                    </a>
2530                                </li>
2531                                <li class="navPages--list-childList-item">
2532                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/product-type/ultrasonic-oil-diffusers/" aria-label="Ultrasonic Aroma Diffusers">
2533                                        Ultrasonic Aroma Diffusers
2534                                    </a>
2535                                </li>
2536                                <li class="navPages--list-childList-item">
2537                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-oil-diffusers/wireless-diffusers/" aria-label="Wireless Diffusers">
2538                                        Wireless Diffusers
2539                                    </a>
2540                                </li>
2541                                <li class="navPages--list-childList-item">
2542                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-oil-diffusers/reed-diffusers/" aria-label="Reed Diffusers">
2543                                        Reed Diffusers
2544                                    </a>
2545                                </li>
2546                                <li class="navPages--list-childList-item">
2547                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/plug-in-diffusers/" aria-label="Plug In Diffusers">
2548                                        Plug In Diffusers
2549                                    </a>
2550                                </li>
2551                                <li class="navPages--list-childList-item">
2552                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/bundles/" aria-label="Bundles">
2553                                        Bundles
2554                                    </a>
2555                                </li>
2556                                <li class="navPages--list-childList-item">
2557                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/shop-all/" aria-label="Shop All">
2558                                        Shop All
2559                                    </a>
2560                                </li>
2561                                <li class="navPages--list-childList-item">
2562                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/sale/" aria-label="SALE">
2563                                        SALE
2564                                    </a>
2565                                </li>
2566                        </ul>
2567                        <div class="mobileOnly">
2568                            <div class="navPage-subMenu d-block p-0" id="navPages-subMenu-1210" aria-hidden="false" tabindex="-1">
2569                                <ul class="ml-0 navPages--subMenu-list">
2570                                        <li class="navPages--list-childList-item">
2571                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-oil-diffusers/diffuser-oil/" aria-label="Diffuser Oil 3.75 oz">
2572                                                Diffuser Oil 3.75 oz
2573                                            </a>
2574                                        </li>
2575                                        <li class="navPages--list-childList-item">
2576                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/paisleys-new-monthly-fragrance/" aria-label="Paisley&#x27;s New Monthly Fragrance">
2577                                                Paisley&#x27;s New Monthly Fragrance
2578                                            </a>
2579                                        </li>
2580                                        <li class="navPages--list-childList-item">
2581                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/product-type/diffuser-oil-16-oz/" aria-label="Diffuser Oil 16 oz">
2582                                                Diffuser Oil 16 oz
2583                                            </a>
2584                                        </li>
2585                                        <li class="navPages--list-childList-item">
2586                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/product-type/ultrasonic-oil-diffusers/" aria-label="Ultrasonic Aroma Diffusers">
2587                                                Ultrasonic Aroma Diffusers
2588                                            </a>
2589                                        </li>
2590                                        <li class="navPages--list-childList-item">
2591                                            <a cl
2591ass="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-oil-diffusers/wireless-diffusers/" aria-label="Wireless Diffusers">
2592                                                Wireless Diffusers
2593                                            </a>
2594                                        </li>
2595                                        <li class="navPages--list-childList-item">
2596                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/fragrance-oil-diffusers/reed-diffusers/" aria-label="Reed Diffusers">
2597                                                Reed Diffusers
2598                                            </a>
2599                                        </li>
2600                                        <li class="navPages--list-childList-item">
2601                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/plug-in-diffusers/" aria-label="Plug In Diffusers">
2602                                                Plug In Diffusers
2603                                            </a>
2604                                        </li>
2605                                        <li class="navPages--list-childList-item">
2606                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/bundles/" aria-label="Bundles">
2607                                                Bundles
2608                                            </a>
2609                                        </li>
2610                                        <li class="navPages--list-childList-item">
2611                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/shop-all/" aria-label="Shop All">
2612                                                Shop All
2613                                            </a>
2614                                        </li>
2615                                        <li class="navPages--list-childList-item">
2616                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-category/sale/" aria-label="SALE">
2617                                                SALE
2618                                            </a>
2619                                        </li>
2620                                </ul>
2621                            </div>
2622                        </div>
2623                </div>
2624                <div class="pr_25px">
2625                        <p class="navPages--list-heading desktopOnly">
2626                            Shop By Collection
2627                        </p>
2628                        <div class="mobileOnly">
2629                            <a class="navPages-action navPages--subMenu-action has-subMenu" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-collection/" data-collapsible="navPages-subMenu-1211">
2630                                Shop By Collection
2631                                <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
2632                            </a>
2633                        </div>
2634                        <ul class="desktopOnly">
2635                                <li class="navPages--list-childList-item">
2636                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-collection/headache-friendly-fragrances/" aria-label="Headache-Friendly Fragrances">
2637                                        Headache-Friendly Fragrances
2638                                    </a>
2639                                </li>
2640                                <li class="navPages--list-childList-item">
2641                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-collection/autoship/" aria-label="Subscribe &amp; Save">
2642                                        Subscribe &amp; Save
2643                                    </a>
2644                                </li>
2645                        </ul>
2646                        <div class="mobileOnly">
2647                            <div class="navPage-subMenu " id="navPages-subMenu-1211" aria-hidden="true" tabindex="-1">
2648                                <ul class="ml-0 navPages--subMenu-list">
2649                                        <li class="navPages--list-childList-item">
2650                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-collection/headache-friendly-fragrances/" aria-label="Headache-Friendly Fragrances">
2651                                                Headache-Friendly Fragrances
2652                                            </a>
2653                                        </li>
2654                                        <li class="navPages--list-childList-item">
2655                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-collection/autoship/" aria-label="Subscribe &amp; Save">
2656                                                Subscribe &amp; Save
2657                                            </a>
2658                                        </li>
2659                                </ul>
2660                            </div>
2661                        </div>
2662                </div>
2663                <div class="pr_25px">
2664                        <p class="navPages--list-heading desktopOnly">
2665                            Shop By Essence
2666                        </p>
2667                        <div class="mobileOnly">
2668                            <a class="navPages-action navPages--subMenu-action has-subMenu" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/" data-collapsible="navPages-subMenu-1212">
2669                                Shop By Essence
2670                                <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
2671                            </a>
2672                        </div>
2673                        <ul class="desktopOnly">
2674                                <li class="navPages--list-childList-item">
2675                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/bakery/" aria-label="Bakery">
2676                                        Bakery
2677                                    </a>
2678                                </li>
2679                                <li class="navPages--list-childList-item">
2680                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/floral/" aria-label="Floral">
2681                                        Floral
2682                                    </a>
2683                                </li>
2684                                <li class="navPages--list-childList-item">
2685                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/fresh-clean/" aria-label="Fresh &amp; Clean">
2686                                        Fresh &amp; Clean
2687                                    </a>
2688                                </li>
2689                                <li class="navPages--list-childList-item">
2690                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/fruity/" aria-label="Fruity">
2691                                        Fruity
2692                                    </a>
2693                                </li>
2694                                <li class="navPages--list-childList-item">
2695                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/wellness/" aria-label="Wellness">
2696                                        Wellness
2697                                    </a>
2698                                </li>
2699                                <li class="navPages--list-childList-item">
2700                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/wood-spice/" aria-label="Wood &amp; Spice">
2701                                        Wood &amp; Spice
2702                                    </a>
2703                                </li>
2704                        </ul>
2705                        <div class="mobileOnly">
2706                            <div class="navPage-subMenu " id="navPages-subMenu-1212" aria-hidden="true" tabindex="-1">
2707                                <ul class="ml-0 navPages--subMenu-list">
2708                                        <li class="navPages--list-childList-item">
2709                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/bakery/" aria-label="Bakery">
2710                                                Bakery
2711                                            </a>
2712                                        </li>
2713                                        <li class="navPages--list-childList-item">
2714                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/floral/" aria-label="Floral">
2715                                                Floral
2716                                            </a>
2717                                        </li>
2718                                        <li class="navPages--list-childList-item">
2719                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/fresh-clean/" aria-label="Fresh &amp; Clean">
2720                                                Fresh &amp; Clean
2721                                            </a>
2722                                        </li>
2723                                        <li class="navPages--list-childList-item">
2724                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/fruity/" aria-label="Fruity">
2725                                                Fruity
2726                                            </a>
2727                                        </li>
2728                                        <li class="navPages--list-childList-item">
2729                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/wellness/" aria-label="Wellness">
2730                                                Wellness
2731                                            </a>
2732                                        </li>
2733                                        <li class="navPages--list-childList-item">
2734                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/oil-diffusers/top-navigation/shop-by-essence/wood-spice/" aria-label="Wood &amp; Spice">
2735                                                Wood &amp; Spice
2736                                            </a>
2737                                        </li>
2738                                </ul>
2739                            </div>
2740                        </div>
2741                </div>
2742        <div class="desktopOnly nav-banner" desktop-nav-menu-banner="1"></div>
2743        <div class="desktopOnly nav-banner" desktop-nav-menu-banner="2"></div>
2744    </div>
2745                    </li>
2746                    <li class="navPages-item">
2747                        
2748    <a class="navPages-action has-subMenu trigger-nav-banner" href="https://pinkzebrahome.com/top-navigation/home-care/" data-collapsible="navPages-1174" 
2749        data-site-urls='[
2750                "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-category/"
2751                        , "https://pinkzebrahome.com/home-pet-care/room-spray/"
2752                        , "https://pinkzebrahome.com/home-pet-care/kitchen-collection/dish-soap/"
2753                        , "https://pinkzebrahome.com/body-care/hand-soap/"
2754                        , "https://pinkzebrahome.com/home-pet-care/kitchen-collection/all-purpose-cleaner/"
2755                        , "https://pinkzebrahome.com/product-type/stain-removers/"
2756                        , "https://pinkzebrahome.com/product-type/wipes/"
2757                        , "https://pinkzebrahome.com/home-pet-care/natural-insect-repellent-collection/"
2758                        , "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-category/shop-all/"
2759                ,"https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/"
2760                        , "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/headache-friendly-fragrances/"
2761                        , "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/air-care-odor-neutralizing-collection/"
2762                        , "https://pinkzebrahome.com/home-pet-care/kitchen-collection/"
2763                                , "https://pinkzebrahome.com/home-pet-care/kitchen-collection/fabric-mist/"
2764                                , "https://pinkzebrahome.com/home-pet-care/kitchen-collection/laundry-boost/"
2765                                , "https://pinkzebrahome.com/home-pet-care/kitchen-collection/foaming-soap/"
2766                                , "https://pinkzebrahome.com/home-pet-care/kitchen-collection/dryer-ball/"
2767                        , "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/natural-insect-repellent-collection/"
2768                ,"https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/"
2769                        , "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/bakery/"
2770                        , "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/floral/"
2771                        , "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/fresh-clean/"
2772                        , "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/fruity/"
2773                        , "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/wellness/"
2774                        , "https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/wood-spice/"
2775                ,"https://pinkzebrahome.com/home-care-pet/top-navigation/banner-category/"
2776                        , "https://pinkzebrahome.com/top-navigation/home-care/banner-category/shop-our-new-collection-drop/"
2777                        , "https://pinkzebrahome.com/home-care-pet/top-navigation/banner-category/shop-scentflirt-exclusives/"
2778        ]' data-nav-category-id="1174">
2779        Home Care
2780        <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
2781    </a>
2782    <div class="navPage-subMenu nav-mega-menu-block w-auto" id="navPages-1174" aria-hidden="true" tabindex="-1" data-nav-category-id="1174">
2783                <div class="pr_25px">
2784                        <p class="navPages--list-heading desktopOnly">
2785                            Shop By Category
2786                        </p>
2787                        <div class="d_none">
2788                            <a class="navPages-action navPages--subMenu-action has-subMenu" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-category/" data-collapsible="navPages-subMenu-1223">
2789                                Shop By Category
2790                                <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
2791                            </a>
2792                        </div>
2793                        <ul class="desktopOnly">
2794                                <li class="navPages--list-childList-item">
2795                                    <a class="navPages--list-childList-action" href="h
2795ttps://pinkzebrahome.com/home-pet-care/room-spray/" aria-label="Room Spray">
2796                                        Room Spray
2797                                    </a>
2798                                </li>
2799                                <li class="navPages--list-childList-item">
2800                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-pet-care/kitchen-collection/dish-soap/" aria-label="Dish Soap">
2801                                        Dish Soap
2802                                    </a>
2803                                </li>
2804                                <li class="navPages--list-childList-item">
2805                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/hand-soap/" aria-label="Hand Soap">
2806                                        Hand Soap
2807                                    </a>
2808                                </li>
2809                                <li class="navPages--list-childList-item">
2810                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-pet-care/kitchen-collection/all-purpose-cleaner/" aria-label="Multi-Purpose Cleaners">
2811                                        Multi-Purpose Cleaners
2812                                    </a>
2813                                </li>
2814                                <li class="navPages--list-childList-item">
2815                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/product-type/stain-removers/" aria-label="Stain Removers">
2816                                        Stain Removers
2817                                    </a>
2818                                </li>
2819                                <li class="navPages--list-childList-item">
2820                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/product-type/wipes/" aria-label="Wipes">
2821                                        Wipes
2822                                    </a>
2823                                </li>
2824                                <li class="navPages--list-childList-item">
2825                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-pet-care/natural-insect-repellent-collection/" aria-label="Insect Repellent">
2826                                        Insect Repellent
2827                                    </a>
2828                                </li>
2829                                <li class="navPages--list-childList-item">
2830                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-category/shop-all/" aria-label="Shop All">
2831                                        Shop All
2832                                    </a>
2833                                </li>
2834                        </ul>
2835                        <div class="mobileOnly">
2836                            <div class="navPage-subMenu d-block p-0" id="navPages-subMenu-1223" aria-hidden="false" tabindex="-1">
2837                                <ul class="ml-0 navPages--subMenu-list">
2838                                        <li class="navPages--list-childList-item">
2839                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-pet-care/room-spray/" aria-label="Room Spray">
2840                                                Room Spray
2841                                            </a>
2842                                        </li>
2843                                        <li class="navPages--list-childList-item">
2844                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-pet-care/kitchen-collection/dish-soap/" aria-label="Dish Soap">
2845                                                Dish Soap
2846                                            </a>
2847                                        </li>
2848                                        <li class="navPages--list-childList-item">
2849                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/hand-soap/" aria-label="Hand Soap">
2850                                                Hand Soap
2851                                            </a>
2852                                        </li>
2853                                        <li class="navPages--list-childList-item">
2854                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-pet-care/kitchen-collection/all-purpose-cleaner/" aria-label="Multi-Purpose Cleaners">
2855                                                Multi-Purpose Cleaners
2856                                            </a>
2857                                        </li>
2858                                        <li class="navPages--list-childList-item">
2859                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/product-type/stain-removers/" aria-label="Stain Removers">
2860                                                Stain Removers
2861                                            </a>
2862                                        </li>
2863                                        <li class="navPages--list-childList-item">
2864                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/product-type/wipes/" aria-label="Wipes">
2865                                                Wipes
2866                                            </a>
2867                                        </li>
2868                                        <li class="navPages--list-childList-item">
2869                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-pet-care/natural-insect-repellent-collection/" aria-label="Insect Repellent">
2870                                                Insect Repellent
2871                                            </a>
2872                                        </li>
2873                                        <li class="navPages--list-childList-item">
2874                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-category/shop-all/" aria-label="Shop All">
2875                                                Shop All
2876                                            </a>
2877                                        </li>
2878                                </ul>
2879                            </div>
2880                        </div>
2881                </div>
2882                <div class="pr_25px">
2883                        <p class="navPages--list-heading desktopOnly">
2884                            Shop By Collection
2885                        </p>
2886                        <div class="mobileOnly">
2887                            <a class="navPages-action navPages--subMenu-action has-subMenu" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/" data-collapsible="navPages-subMenu-1224">
2888                                Shop By Collection
2889                                <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
2890                            </a>
2891                        </div>
2892                        <ul class="desktopOnly">
2893                                <li class="navPages--list-childList-item">
2894                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/headache-friendly-fragrances/" aria-label="Headache-Friendly Fragrances">
2895                                        Headache-Friendly Fragrances
2896                                    </a>
2897                                </li>
2898                                <li class="navPages--list-childList-item">
2899                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/air-care-odor-neutralizing-collection/" aria-label="Air Care+ Odor Neutralizing Collection​">
2900                                        Air Care+ Odor Neutralizing Collection​
2901                                    </a>
2902                                </li>
2903                                <li class="navPages--list-childList-item">
2904                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-pet-care/kitchen-collection/" aria-label="Kitchen Collection">
2905                                        Kitchen Collection
2906                                    </a>
2907                                </li>
2908                                <li class="navPages--list-childList-item">
2909                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/natural-insect-repellent-collection/" aria-label="Natural Insect Repellent Collection​">
2910                                        Natural Insect Repellent Collection​
2911                                    </a>
2912                                </li>
2913                        </ul>
2914                        <div class="mobileOnly">
2915                            <div class="navPage-subMenu " id="navPages-subMenu-1224" aria-hidden="true" tabindex="-1">
2916                                <ul class="ml-0 navPages--subMenu-list">
2917                                        <li class="navPages--list-childList-item">
2918                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/headache-friendly-fragrances/" aria-label="Headache-Friendly Fragrances">
2919                                                Headache-Friendly Fragrances
2920                                            </a>
2921                                        </li>
2922                                        <li class="navPages--list-childList-item">
2923                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/air-care-odor-neutralizing-collection/" aria-label="Air Care+ Odor Neutralizing Collection​">
2924                                                Air Care+ Odor Neutralizing Collection​
2925                                            </a>
2926                                        </li>
2927                                        <li class="navPages--list-childList-item">
2928                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-pet-care/kitchen-collection/" aria-label="Kitchen Collection">
2929                                                Kitchen Collection
2930                                            </a>
2931                                        </li>
2932                                        <li class="navPages--list-childList-item">
2933                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-collection/natural-insect-repellent-collection/" aria-label="Natural Insect Repellent Collection​">
2934                                                Natural Insect Repellent Collection​
2935                                            </a>
2936                                        </li>
2937                                </ul>
2938                            </div>
2939                        </div>
2940                </div>
2941                <div class="pr_25px">
2942                        <p class="navPages--list-heading desktopOnly">
2943                            Shop By Essence
2944                        </p>
2945                        <div class="mobileOnly">
2946                            <a class="navPages-action navPages--subMenu-action has-subMenu" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/" data-collapsible="navPages-subMenu-1225">
2947                                Shop By Essence
2948                                <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
2949                            </a>
2950                        </div>
2951                        <ul class="desktopOnly">
2952                                <li class="navPages--list-childList-item">
2953                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/bakery/" aria-label="Bakery">
2954                                        Bakery
2955                                    </a>
2956                                </li>
2957                                <li class="navPages--list-childList-item">
2958                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/floral/" aria-label="Floral">
2959                                        Floral
2960                                    </a>
2961                                </li>
2962                                <li class="navPages--list-childList-item">
2963                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/fresh-clean/" aria-label="Fresh &amp; Clean​">
2964                                        Fresh &amp; Clean​
2965                                    </a>
2966                                </li>
2967                                <li class="navPages--list-childList-item">
2968                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/fruity/" aria-label="Fruity">
2969                                        Fruity
2970                                    </a>
2971                                </li>
2972                                <li class="navPages--list-childList-item">
2973                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/wellness/" aria-label="Wellness​">
2974                                        Wellness​
2975                                    </a>
2976                                </li>
2977                                <li class="navPages--list-childList-item">
2978                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/wood-spice/" aria-label="Wood &amp; Spice​">
2979                                        Wood &amp; Spice​
2980                                    </a>
2981                                </li>
2982                        </ul>
2983                        <div class="mobileOnly">
2984                            <div class="navPage-subMenu " id="navPages-subMenu-1225" aria-hidden="true" tabindex="-1">
2985                                <ul class="ml-0 navPages--subMenu-list">
2986                                        <li class="navPages--list-childList-item">
2987                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/bakery/" aria-label="Bakery">
2988                                                Bakery
2989                                            </a>
2990                                        </li>
2991                                        <li class="navPages--list-childList-item">
2992                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/floral/" aria-label="Floral">
2993                                                Floral
2994                                            </a>
2995                                        </li>
2996                                        <li class="navPages--list-childList-item">
2997                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/fresh-clean/" aria-label="Fresh &amp; Clean​">
2998                                                Fresh &amp; Clean​
2999                                            </a>
3000                                      
3000  </li>
3001                                        <li class="navPages--list-childList-item">
3002                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/fruity/" aria-label="Fruity">
3003                                                Fruity
3004                                            </a>
3005                                        </li>
3006                                        <li class="navPages--list-childList-item">
3007                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/wellness/" aria-label="Wellness​">
3008                                                Wellness​
3009                                            </a>
3010                                        </li>
3011                                        <li class="navPages--list-childList-item">
3012                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/home-care-pet/top-navigation/shop-by-essence/wood-spice/" aria-label="Wood &amp; Spice​">
3013                                                Wood &amp; Spice​
3014                                            </a>
3015                                        </li>
3016                                </ul>
3017                            </div>
3018                        </div>
3019                </div>
3020        <div class="desktopOnly nav-banner" desktop-nav-menu-banner="1"></div>
3021        <div class="desktopOnly nav-banner" desktop-nav-menu-banner="2"></div>
3022    </div>
3023                    </li>
3024                    <li class="navPages-item">
3025                        
3026    <a class="navPages-action has-subMenu trigger-nav-banner" href="https://pinkzebrahome.com/body-care/" data-collapsible="navPages-794" 
3027        data-site-urls='[
3028                "https://pinkzebrahome.com/body-care/top-navigation/shop-by-category/"
3029                        , "https://pinkzebrahome.com/body-care/body-wash/"
3030                        , "https://pinkzebrahome.com/body-care/luxe-body-oil/"
3031                        , "https://pinkzebrahome.com/body-care/hydrating-body-lotion-spray/"
3032                        , "https://pinkzebrahome.com/body-care/top-navigation/shop-by-category/shop-all/"
3033                ,"https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/"
3034                        , "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/bakery/"
3035                        , "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/floral/"
3036                        , "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/fresh-clean/"
3037                        , "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/fruity/"
3038                        , "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/wellness/"
3039                        , "https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/wood-spice/"
3040                ,"https://pinkzebrahome.com/body-care/top-navigation/banner-category/"
3041                        , "https://pinkzebrahome.com/top-navigation/body-care/banner-category/shop-our-new-collection-drop/"
3042                        , "https://pinkzebrahome.com/body-care/top-navigation/banner-category/shop-scentflirt-exclusives/"
3043        ]' data-nav-category-id="794">
3044        Body Care
3045        <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
3046    </a>
3047    <div class="navPage-subMenu nav-mega-menu-block w-auto" id="navPages-794" aria-hidden="true" tabindex="-1" data-nav-category-id="794">
3048                <div class="pr_25px">
3049                        <p class="navPages--list-heading desktopOnly">
3050                            Shop By Category
3051                        </p>
3052                        <div class="d_none">
3053                            <a class="navPages-action navPages--subMenu-action has-subMenu" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-category/" data-collapsible="navPages-subMenu-1236">
3054                                Shop By Category
3055                                <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
3056                            </a>
3057                        </div>
3058                        <ul class="desktopOnly">
3059                                <li class="navPages--list-childList-item">
3060                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/body-wash/" aria-label="Hydrating Body Wash">
3061                                        Hydrating Body Wash
3062                                    </a>
3063                                </li>
3064                                <li class="navPages--list-childList-item">
3065                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/luxe-body-oil/" aria-label="Luxe Body Oil">
3066                                        Luxe Body Oil
3067                                    </a>
3068                                </li>
3069                                <li class="navPages--list-childList-item">
3070                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/hydrating-body-lotion-spray/" aria-label="Hydrating Body Lotion Spray">
3071                                        Hydrating Body Lotion Spray
3072                                    </a>
3073                                </li>
3074                                <li class="navPages--list-childList-item">
3075                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-category/shop-all/" aria-label="Shop All">
3076                                        Shop All
3077                                    </a>
3078                                </li>
3079                        </ul>
3080                        <div class="mobileOnly">
3081                            <div class="navPage-subMenu d-block p-0" id="navPages-subMenu-1236" aria-hidden="false" tabindex="-1">
3082                                <ul class="ml-0 navPages--subMenu-list">
3083                                        <li class="navPages--list-childList-item">
3084                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/body-wash/" aria-label="Hydrating Body Wash">
3085                                                Hydrating Body Wash
3086                                            </a>
3087                                        </li>
3088                                        <li class="navPages--list-childList-item">
3089                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/luxe-body-oil/" aria-label="Luxe Body Oil">
3090                                                Luxe Body Oil
3091                                            </a>
3092                                        </li>
3093                                        <li class="navPages--list-childList-item">
3094                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/hydrating-body-lotion-spray/" aria-label="Hydrating Body Lotion Spray">
3095                                                Hydrating Body Lotion Spray
3096                                            </a>
3097                                        </li>
3098                                        <li class="navPages--list-childList-item">
3099                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-category/shop-all/" aria-label="Shop All">
3100                                                Shop All
3101                                            </a>
3102                                        </li>
3103                                </ul>
3104                            </div>
3105                        </div>
3106                </div>
3107                <div class="pr_25px">
3108                        <p class="navPages--list-heading desktopOnly">
3109                            Shop By Essence
3110                        </p>
3111                        <div class="mobileOnly">
3112                            <a class="navPages-action navPages--subMenu-action has-subMenu" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/" data-collapsible="navPages-subMenu-1237">
3113                                Shop By Essence
3114                                <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i>
3115                            </a>
3116                        </div>
3117                        <ul class="desktopOnly">
3118                                <li class="navPages--list-childList-item">
3119                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/bakery/" aria-label="Bakery​">
3120                                        Bakery​
3121                                    </a>
3122                                </li>
3123                                <li class="navPages--list-childList-item">
3124                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/floral/" aria-label="Floral">
3125                                        Floral
3126                                    </a>
3127                                </li>
3128                                <li class="navPages--list-childList-item">
3129                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/fresh-clean/" aria-label="Fresh &amp; Clean​">
3130                                        Fresh &amp; Clean​
3131                                    </a>
3132                                </li>
3133                                <li class="navPages--list-childList-item">
3134                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/fruity/" aria-label="Fruity​">
3135                                        Fruity​
3136                                    </a>
3137                                </li>
3138                                <li class="navPages--list-childList-item">
3139                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/wellness/" aria-label="Wellness​">
3140                                        Wellness​
3141                                    </a>
3142                                </li>
3143                                <li class="navPages--list-childList-item">
3144                                    <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/wood-spice/" aria-label="Wood &amp; Spice​">
3145                                        Wood &amp; Spice​
3146                                    </a>
3147                                </li>
3148                        </ul>
3149                        <div class="mobileOnly">
3150                            <div class="navPage-subMenu " id="navPages-subMenu-1237" aria-hidden="true" tabindex="-1">
3151                                <ul class="ml-0 navPages--subMenu-list">
3152                                        <li class="navPages--list-childList-item">
3153                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/bakery/" aria-label="Bakery​">
3154                                                Bakery​
3155                                            </a>
3156                                        </li>
3157                                        <li class="navPages--list-childList-item">
3158                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/floral/" aria-label="Floral">
3159                                                Floral
3160                                            </a>
3161                                        </li>
3162                                        <li class="navPages--list-childList-item">
3163                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/fresh-clean/" aria-label="Fresh &amp; Clean​">
3164                                                Fresh &amp; Clean​
3165                                            </a>
3166                                        </li>
3167                                        <li class="navPages--list-childList-item">
3168                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/fruity/" aria-label="Fruity​">
3169                                                Fruity​
3170                                            </a>
3171                                        </li>
3172                                        <li class="navPages--list-childList-item">
3173                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/wellness/" aria-label="Wellness​">
3174                                                Wellness​
3175                                            </a>
3176                                        </li>
3177                                        <li class="navPages--list-childList-item">
3178                                            <a class="navPages--list-childList-action" href="https://pinkzebrahome.com/body-care/top-navigation/shop-by-essence/wood-spice/" aria-label="Wood &amp; Spice​">
3179                                                Wood &amp; Spice​
3180                                            </a>
3181                                        </li>
3182                                </ul>
3183                            </div>
3184                        </div>
3185                </div>
3186        <div class="desktopOnly nav-banner" desktop-nav-menu-banner="1"></div>
3187        <div class="desktopOnly nav-banner" desktop-nav-menu-banner="2"></div>
3188    </div>
3189                    </li>
3190        
3191            
3192<li class="navPages-item">
3193    <a class="navPages-action has-subMenu hide-nav-banner" href="/scentflirt/" data-site-urls='["/scentflirt/","/earn-rewards/"]'
3194        data-collapsible="navPages-ScentFlirts" aria-label="ScentFlirt Subscription" aria-controls="navPages-ScentFlirts"
3195        aria-expanded="true">
3196        ScentFlirt Subscription
3197        <i class="icon navPages-action-moreIcon" aria-hidden="true">
3198            <svg>
3199                <use href="#icon-chevron-down"></use>
3200            </svg>
3201        </i>
3202    </a>
3203    <div class="navPage-subMenu" id="navPages-ScentFlirts" aria-hidden="false" tabindex="-1">
3204        <div>
3205            <ul class="navPage-subMenu-list">
3206                <li class="navPage-subMenu-item">
3207                    <a class="navPage-subMenu-action navPages-action "
3208                        href="/scentflirt/" aria-label="ScentFlirt Subscription">
3209                        ScentFlirt Subscription
3210                    </a>
3211                </li>
3212                <li class="navPage-subMenu-item">
3213                    <a class="navPage-subMenu-action navPages-action "
3214                        href="/scentflirt-exclusive/" aria-label="ScentFlirt Exclusive">
3215                        ScentFlirt Exclusive
3216                    </a>
3217                </li>
3218                <li class="navPage-subMenu-item">
3219                    <a class="navPage-subMenu-action navPages-action "
3220                        href="/earn-rewards" aria-label="ScentFlirt Member">
3221                        Refer a Friend
3222                    </a>
3223                </li>
3224
3225            </ul>
3226        </div>
3227    </div>
3228</li>
3229<li class="navPages-item">
3230    <a class="navPages-action" data-site-url="/share-and-earn" href="/share-and-earn" data-site-urls='["/share-and-earn"]'
3231        aria-label="Share & Earn">
3232        Share & Earn
3233    </a>
3234</li>
3235<li class="navPages-item mobileOnl
3235y">
3236    <a class="navPages-action" data-site-url="/sell-pink-zebra" href="/sell-pink-zebra" data-site-urls='["/sell-pink-zebra"]'
3237        aria-label="Share & Earn">
3238        Sell Pink Zebra
3239    </a>
3240</li>
3241<li class="navPages-item">
3242    <a class="navPages-action" data-site-url="/pztv" href="/pztv" data-site-urls='["/pztv"]'
3243        aria-label="Share & Earn">
3244        PZTV Live Shopping
3245    </a>
3246</li>        <li class="mobileOnly">
3247            <div style="display: flex; justify-content: space-around;">
3248                <div class="nav-banner" mobile-nav-menu-banner="1"></div>
3249                <div class="nav-banner" mobile-nav-menu-banner="2"></div>
3250            </div>
3251        </li>
3252    </ul>
3253    <ul class="navPages-list navPages-list--user">
3254        <li class="navPages-item">
3255            <a class="navPages-action" href="https://pinkzebrahome.com/giftcertificates.php"
3256                aria-label="Gift Certificates">
3257                Gift Certificates
3258            </a>
3259        </li>
3260        <li class="navPages-item">
3261            <a class="navPages-action" href="https://pinkzebrahome.com/login.php" aria-label="Sign in">
3262                Sign in
3263            </a>
3264            or
3265            <a class="navPages-action" href="https://pinkzebrahome.com/login.php?action&#x3D;create_account" aria-label="Register">
3266                Register
3267            </a>
3268        </li>
3269    </ul>
3270</nav>
3271<div class="consultant-parties hidden">
3272    <div class="consultant-parties__open">
3273    <button class="modal-close"
3274        type="button"
3275        title="Close"
3276        
3277>
3278    <span class="aria-description--hidden">Close</span>
3279    <span aria-hidden="true">&#215;</span>
3280</button>
3281    <div class="no-current-party">
3282    <h1> My open parties</h1>
3283    <p class="title-label"> Pick your party to start shopping!</p>
3284    <hr>
3285
3286    <div class="loadingOverlay" id="loading-parties"></div>
3287
3288    <ol class="party-list parties">
3289    </ol>
3290
3291    <a class="view-all-parties party-link"> View All Parties </a>
3292
3293    <hr>
3294</div>
3295
3296    <div class="current-party">
3297        <div class="consultant-parties__current">
3298    <h1> Your party</h1>
3299    <p class="title-label"> You are now shopping</p>
3300    <hr>
3301    <ol class="current-party-list parties">
3302    </ol>
3303    <div class="party-link-container">
3304        <a class="party-link share-party"> SHARE PARTY LINK 
3305            <span id="party-tooltip">copied to clipboard!</sapn>
3306        </a>
3307        <a class="party-link leave-party"> LEAVE PARTY </a>
3308        <a class="party-link return-parties-list"> View All Parties </a>
3309    </div>
3310    <hr>
3311</div>
3312    </div>
3313    <ol class="information">
3314        <li class="item">
3315            <a href="/blendbash/">Host a Party</a>
3316        </li>
3317        <li class="item">
3318            <a href="/become-a-consultant/">Join My Team</a>
3319        </li>
3320        <li class="item">
3321            <a href="/consultant-bio/">About Me</a>
3322        </li>
3323    </ol>
3324</div>
3325</div></div>        
3326        <div data-content-region="header_navigation_bottom--global"></div>
3327    </header>
3328    <div data-content-region="header_bottom--global"><div data-layout-id="9b508de5-a4e7-4877-aece-74f48a1f9c2c">       <div data-sub-layout-container="b79aa5b2-3825-4af8-b44b-3ccb52642950" data-layout-name="Layout">
3329    <style data-container-styling="b79aa5b2-3825-4af8-b44b-3ccb52642950">
3330        [data-sub-layout-container="b79aa5b2-3825-4af8-b44b-3ccb52642950"] {
3331            box-sizing: border-box;
3332            display: flex;
3333            flex-wrap: wrap;
3334            z-index: 0;
3335            position: relative;
3336            height: ;
3337            padding-top: 0px;
3338            padding-right: 0px;
3339            padding-bottom: 0px;
3340            padding-left: 0px;
3341            margin-top: 0px;
3342            margin-right: 0px;
3343            margin-bottom: 0px;
3344            margin-left: 0px;
3345            border-width: 0px;
3346            border-style: solid;
3347            border-color: #333333;
3348        }
3349
3350        [data-sub-layout-container="b79aa5b2-3825-4af8-b44b-3ccb52642950"]:after {
3351            display: block;
3352            position: absolute;
3353            top: 0;
3354            left: 0;
3355            bottom: 0;
3356            right: 0;
3357            background-size: cover;
3358            z-index: auto;
3359        }
3360    </style>
3361
3362    <div data-sub-layout="a7e2d349-299e-4636-8462-84c0b63749ed">
3363        <style data-column-styling="a7e2d349-299e-4636-8462-84c0b63749ed">
3364            [data-sub-layout="a7e2d349-299e-4636-8462-84c0b63749ed"] {
3365                display: flex;
3366                flex-direction: column;
3367                box-sizing: border-box;
3368                flex-basis: 100%;
3369                max-width: 100%;
3370                z-index: 0;
3371                position: relative;
3372                height: ;
3373                padding-top: 0px;
3374                padding-right: 10.5px;
3375                padding-bottom: 0px;
3376                padding-left: 10.5px;
3377                margin-top: 0px;
3378                margin-right: 0px;
3379                margin-bottom: 0px;
3380                margin-left: 0px;
3381                border-width: 0px;
3382                border-style: solid;
3383                border-color: #333333;
3384                justify-content: center;
3385            }
3386            [data-sub-layout="a7e2d349-299e-4636-8462-84c0b63749ed"]:after {
3387                display: block;
3388                position: absolute;
3389                top: 0;
3390                left: 0;
3391                bottom: 0;
3392                right: 0;
3393                background-size: cover;
3394                z-index: auto;
3395            }
3396            @media only screen and (max-width: 700px) {
3397                [data-sub-layout="a7e2d349-299e-4636-8462-84c0b63749ed"] {
3398                    flex-basis: 100%;
3399                    max-width: 100%;
3400                }
3401            }
3402        </style>
3403        <div data-widget-id="d58cada0-b187-4328-b29f-5dc2f6d45926" data-placement-id="bf5ae346-58cf-4414-96ca-36b907ccca73" data-placement-status="ACTIVE"><style>
3404  .shop-now-link {
3405    display:none;
3406  }
3407</style>
3408</div>
3409    </div>
3410</div>
3411
3412</div></div>
3413    <div data-content-region="header_bottom"></div>
3414</div>
3415<!-- Modals Ends Here -->
3416<div class="loadingOverlay pdp-update"></div>        
3416<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/toggleLoader.js"></script>
3416
3417        <main class="body" id="main-content" role="main" data-currency-code="USD">
3418     
3419    <div class="container">
3420        <div class="login">
3421    <h1 class="page-heading">Sign in</h1>
3422    <div class="login-row">
3423        <form class="login-form form" action="https://pinkzebrahome.com/login.php?action&#x3D;check_login" method="post">
3424            <h2 class="login-title">Returning Customers</h2>
3425            
3426            
3427            <div class="form-field">
3428                <label class="form-label" for="login_email">Email Address</label>
3429                <input class="form-input" name="login_email" id="login_email" type="email">
3430            </div>
3431            <div class="form-field">
3432                <label class="form-label" for="login_pass">Password</label>
3433                <div class="password-wrapper">
3434                    <a class="button-toggle-password sso-hideable" alt="Show or hide your password" href="#"></a>
3435                    <input autocomplete="password" id="login_pass" type="password" class="form-input" name="login_pass" value="" required>
3436                </div>
3437            </div>
3438            <div class="form-actions">
3439                <input type="submit" class="button button--primary" value="Sign in">
3440                <a class="forgot-password" href="https://pinkzebrahome.com/login.php?action&#x3D;reset_password">Forgot your password?</a>
3441            </div>
3442        </form>
3443            <div class="new-customer">
3444                <h2 class="login-title">New Customer?</h2>
3445                <p class="new-customer-intro">Create an account with us and you&#x27;ll be able to:</p>
3446                <ul class="new-customer-fact-list">
3447                    <li class="new-customer-fact">Check out faster</li>
3448                    <li class="new-customer-fact">Save multiple shipping addresses</li>
3449                    <li class="new-customer-fact">Access your order history</li>
3450                    <li class="new-customer-fact">Save items to your Wishlist</li>
3451                    <li class="new-customer-fact">Receive faster help with order issues</li>
3452                </ul>
3453                <a class="new-customer-create" href="https://pinkzebrahome.com/login.php?action&#x3D;create_account"><button class="button button--primary">Create My Account</button></a>
3454            </div>
3455    </div>
3456</div>
3457
3458    </div>
3459    <div id="modal" class="modal" data-reveal data-prevent-quick-search-close>
3460    <button class="modal-close"
3461        type="button"
3462        title="Close"
3463        
3464>
3465    <span class="aria-description--hidden">Close</span>
3466    <span aria-hidden="true">&#215;</span>
3467</button>
3468    <div class="modal-content"></div>
3469    <div class="loadingOverlay"></div>
3470</div>
3471    <div id="alert-modal" class="modal modal--alert modal--small" data-reveal data-prevent-quick-search-close>
3472    <div class="alert-icon error-icon">
3473        <span class="icon-content">
3474            <span class="line line-left"></span>
3475            <span class="line line-right"></span>
3476        </span>
3477    </div>
3478
3479    <div class="alert-icon warning-icon">
3480        <div class="icon-content">!</div>
3481    </div>
3482
3483    <div class="alert-icon success-icon">
3484        <svg class="checkmark" viewBox="0 0 52 52">
3485            <circle class="checkmark-circle" cx="26" cy="26" r="25" fill="none" />
3486            <path class="checkmark-check" fill="none" d="M14 27l8 8 16-16" />
3487        </svg>
3488    </div>
3489
3490    <div class="modal-content"></div>
3491
3492    <div class="button-container">
3493        <button type="button" class="confirm button" data-reveal-close>OK</button>
3494        <button type="button" class="cancel button" data-reveal-close>Cancel</button>
3495    </div>
3496</div>
3497</main>        <footer class="footer" role="contentinfo">
3498    <h2 class="footer-title-sr-only">Footer Start</h2>
3499    <div class="container container-footer">
3500        <section class="footer-info">
3501            <div class="footer-info-wrapper">
3502                <article class="footer-info-col info-col-subscribe mobile-version" data-section-type="newsletterSubscription">
3503                        <h3 class="footer-info-heading web-version">Be the first to hear about new products, sales and more!</h3> 
3504<!-- <div class="subscription-form-heading-wrapper mobile-version"> -->
3505   
3506    <!-- <h3 class="footer-info-heading">Join our </h3> 
3507    <h3 class="footer-info-heading-newsletter"> Newsletter</h3>
3508    <div class="subscription-form-heading-decor"></div> -->
3509<!-- </div> -->
3510<!-- <p class="exlusive-offerse">Be the first to hear about new products, sales and more!</p> -->
3511
3512<form class="form" action="https://pinkzebrahome.com/subscribe.php" method="post" id="nl-subscription-form">
3513    <fieldset class="form-fieldset">
3514        <input type="hidden" name="action" value="subscribe">
3515        <input type="hidden" name="nl_first_name" id="nl_first_name" value="bc">
3516        <input type="hidden" name="check" value="1">
3517        
3518        <div class="form-field">
3519            <label class="form-label is-srOnly" for="nl_email">Email Address</label>
3520            <div class="form-prefixPostfix wrap">
3521                <!-- Data Inputs -->
3522                <input class="form-input"
3523                       id="nl_email"
3524                       name="nl_email"
3525                       type="email"
3526                       value=""
3527                       placeholder="Enter email"
3528                       required
3529                >
3530                
3531                <input class="form-input mt-3"
3532                       id="nl_phone"
3533                       name="nl_phone"
3534                       type="text"
3535                       value="+1"
3536                       placeholder="Enter phone number"
3537                       required
3538                >
3539
3540                <!-- Checkboxes (Listening to inputs to enable/disable) -->
3541                <div class="nl-legal-container">
3542                    
3543                    <div class="nl-checkbox-row">
3544                        <label class="nl-cb-label">
3545                            <input type="checkbox" class="nl-custom-cb" disabled>
3546                            <span class="nl-cb-box"></span>
3547                            <span class="nl-cb-text">Yes, I’d like to receive marketing emails from Pink Zebra Home.</span>
3548                        </label>
3549                    </div>
3550
3551                    <div class="nl-checkbox-row">
3552                        <label class="nl-cb-label">
3553                            <input type="checkbox" class="nl-custom-cb" disabled>
3554                            <span class="nl-cb-box"></span>
3555                            <span class="nl-cb-text">Yes, I'd like to receive marketing text messages from Pink Zebra Home.</span>
3556                        </label>
3557                    </div>
3558
3559                    <div class="nl-checkbox-row">
3560                        <div class="legal-info">
3561                            <p style="margin:0">For more information on how we process your data for marketing communication. View our <a href="/privacy-policy" target="_blank">Privacy Policy</a></p>
3562                        </div>
3563                    </div>    
3564                </div>
3565
3566                <!-- <input class="button button--primary form-prefixPostfix-button--postfix ms-0 mt-3"
3567                       type="submit"
3568                       value="Sign me Up"
3569                > -->
3570            </div>
3571        </div>
3572    </fieldset>
3573</form>
3574
3575<style>
3576    .nl-cb-label {
3577        display: flex;
3578        align-items: center;
3579        cursor: pointer;
3580        font-size: 12px;
3581        opacity: 0.4;
3582        transition: opacity 0.3s;
3583        /* Quitamos pointer-events: none para que siempre sea clickeable el área */
3584    }
3585
3586    /* Cuando el input hijo NO está disabled, aclaramos el label */
3587    .nl-cb-label:has(.nl-custom-cb:not(:disabled)) {
3588        opacity: 1;
3589    }
3590
3591    .nl-custom-cb {
3592        position: absolute;
3593        opacity: 0;
3594        width: 0;
3595        height: 0;
3596    }
3597
3598    .nl-cb-box {
3599        width: 16px;
3600        height: 16px;
3601        border: 2px solid #fe1378;
3602        border-radius: 3px;
3603        margin-right: 8px;
3604        flex-shrink: 0;
3605        position: relative;
3606    }
3607
3608    @media (max-width: 768px) {
3609        .nl-cb-box {
3610            border-color: #ffffff;
3611        }
3612    }
3613
3614    .nl-custom-cb:checked + .nl-cb-box {
3615        background-color: #fe1378;
3616    }
3617
3618    .nl-custom-cb:checked + .nl-cb-box::after {
3619        content: '\2713';
3620        position: absolute;
3621        color: #fff;
3622        font-size: 11px;
3623        top: 50%;
3624        left: 50%;
3625        transform: translate(-50%, -50%);
3626    }
3627</style>
3628
3629<script>
3630(function () {
3631    // footer.html renders this partial twice (.mobile-version + .web-version, CSS toggles which
3632    // shows) — guard so only the first copy's script wires up listeners/interval; it already
3633    // operates on ALL '#nl-subscription-form' matches, so the duplicate copy needs no init of its own.
3634    if (window.__nlSubscriptionFormInit) return;
3635    window.__nlSubscriptionFormInit = true;
3636
3637    let cachedEmail = "";
3638    let cachedPhone = "";
3639    let emailRetryCount = 0;
3640    let phoneRetryCount = 0;
3641    let lastRetriedEmail = "";
3642    let lastRetriedPhone = "";
3643    const check = {
3644        email: (val) => /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(val.trim()),
3645        phone: (val) => {
3646            const digits = val.replace(/\D/g, '');
3647            return digits.length === 11 && digits.startsWith('1');
3648        }
3649    };
3650
3651    function getFormData() {
3652        const forms = document.querySelectorAll('#nl-subscription-form');
3653        let email = "", phone = "";
3654        forms.forEach(f => {
3655            const emailInp = f.querySelector('input[name="nl_email"]');
3656            const phoneInp = f.querySelector('input[name="nl_phone"]');
3657            const e = emailInp ? emailInp.value : "";
3658            const p = phoneInp ? phoneInp.value : "";
3659            if (e.length > email.length) email = e;
3660            if (p.length > phone.length) phone = p;
3661        });
3662        return { email, phone };
3663    }
3664
3665    function formatPhone(val) {
3666        if (!val || val === '+1') return '+1';
3667        let digits = String(val).replace(/\D/g, '');
3668        if (digits.startsWith('1')) {
3669            digits = digits.substring(1);
3670        }
3671        return '+1' + digits;
3672    }
3673
3674    function initFormValues() {
3675        const customerDetails = JSON.parse(localStorage.getItem('customer_details')) || {};
3676        const forms = document.querySelectorAll('#nl-subscription-form');
3677        
3678        forms.forEach(f => {
3679            const emailInp = f.querySelector('input[name="nl_email"]');
3680            const phoneInp = f.querySelector('input[name="nl_phone"]');
3681
3682            // 1. Priorizamos LocalStorage si existe data de la API
3683            if (emailInp && customerDetails.email) {
3684                emailInp.value = customerDetails.email;
3685            }
3686            
3687            if (phoneInp) {
3688                const storedPhone = customerDetails.phone || customerDetails.mobile_number;
3689                
3690                // Si la API tiene un teléfono, lo usamos (aunque sea el "5")
3691                if (storedPhone) {
3692                    phoneInp.value = formatPhone(String(storedPhone));
3693                } else {
3694                    // Si no, formateamos lo que traiga Handlebars
3695                    phoneInp.value = formatPhone(phoneInp.value);
3696                }
3697            }
3698        });
3699        updateAllForms();
3700    }
3701
3702    let isUpdating = false;
3703    async function updateAllForms() {
3704        if (isUpdating) return;
3705        
3706        const forms = document.querySelectorAll('#nl-subscription-form');
3707        
3708        // 1. Recopilar datos del formulario que tenga algo escrito
3709        let currentEmail = "";
3710        let currentPhone = "";
3711        
3712        forms.forEach(f => {
3713            const e = f.querySelector('input[name="nl_email"]').value;
3714            const p = f.querySelector('input[name="nl_phone"]').value;
3715            if (e.length > currentEmail.length) currentEmail = e;
3716            if (p.length > currentPhone.length) currentPhone = p;
3717        });
3718
3719        const isEmailOk = check.email(currentEmail);
3720        const isPhoneOk = check.phone(currentPhone);
3721
3722        if (currentEmail === cachedEmail && currentPhone === cachedPhone) {
3723            updateCheckboxStates(isEmailOk, isPhoneOk, currentEmail, currentPhone);
3724            return;
3725        }
3726
3727        isUpdating = true;
3728        try {
3729            // ONE consent lookup by email. check_consent is EMAIL-centric: given the email it
3730            // returns ALL of the contact's consents (marketing_email + marketing_sms), so we mark
3731            // BOTH checkboxes from that single response — no separate phone-only lookup (that one
3732            // couldn't reflect the contact's consents). Phone-only (valid phone, no valid email)
3733            // keeps its own lookup below.
3734            const markFromConsents = (consents) => {
3735                const emailStatus = consents?.marketing_email?.status?.toLowerCase();
3736                const phoneStatus = consents?.marketing_sms?.status?.toLowerCase();
3737                const emailChecked = emailStatus === 'granted' && consents?.marketing_email?.has_synced === true;
3738                const phoneChecked = phoneStatus === 'granted' && consents?.marketing_sms?.has_synced === true;
3739                forms.forEach(f => {
3740                    const cbs = f.querySelectorAll('.nl-custom-cb');
3741                    if (cbs[0] && (emailStatus === 'granted' || emailStatus === 'declined')) cbs[0].checked = emailChecked;
3742                    if (cbs[1] && isPhoneOk && (phoneStatus === 'granted' || phoneStatus === 'declined')) cbs[1].checked = phoneChecked;
3743                });
3744            };
3745
3746            if (isEmailOk && (currentEmail != cachedEmail || currentPhone != cachedPhone)) {
3747                try {
3748                    const response = await loginHandler.getConsentStatus({ email: currentEmail, phone: isPhoneOk ? currentPhone : undefined });
3749                    cachedEmail = currentEmail;
3750                    cachedPhone = currentPhone;
3751                    emailRetryCount = 0;
3752                    phoneRetryCount = 0;
3753                    if (response?.success) markFromConsents(response.consents); // owner-guard may return undefined
3754                } catch (error) {
3755                    if (lastRetriedEmail !== currentEmail) {
3756                        lastRetriedEmail = currentEmail;
3757                        emailRetryCount = 1;
3758                    } else {
3759                        emailRetryCount++;
3760                    }
3761                    if (emailRetryCount >= 3) {
3762                        cachedEmail = currentEmail;
3763                        cachedPhone = currentPhone;
3764                        forms.forEach(f => {
3765                            const cbs = f.querySelectorAll('.nl-custom-cb');
3766                            if (cbs[0]) cbs[0].checked = false;
3767                            if (cbs[1] && isPhoneOk) cbs[1].checked = false;
3768                        });
3769                    } else {
3770                        throw error;
3771                    }
3772                }
3773            }
3774            // No phone-only branch: consent lookup is ALWAYS email-driven (email returns all consents,
3775            // incl. marketing_sms). A valid phone without a valid owner email can't be resolved.
3776            
3777            if (!isEmailOk) cachedEmail = "";
3778
3779            updateCheckboxStates(isEmailOk, isPhoneOk, currentEmail, currentPhone);
3780        } catch (error) {
3781            console.error("Error in updateAllForms:", error);
3782        } finally {
3783            isUpdating = false;
3784        }
3785    }
3786
3787    function updateCheckboxStates(isEmailOk, isPhoneOk, currentEmail, currentPhone) {
3788        const forms = document.querySelectorAll('#nl-subscription-form');
3789        forms.forEach(f => {
3790            const emailInp = f.querySelector('input[name="nl_email"]');
3791            const phoneInp = f.querySelector('input[name="nl_phone"]');
3792            const cbs = f.querySelectorAll('.nl-custom-cb');
3793
3794            if (document.activeElement !== emailInp) emailInp.value = currentEmail;
3795            if (document.activeElement !== phoneInp) phoneInp.value = currentPhone;
3796
3797            if (cbs[0]) {
3798                cbs[0].disabled = !isEmailOk;
3799                if (!isEmailOk) cbs[0].checked = false;
3800            }
3801            if (cbs[1]) {
3802                cbs[1].disabled = !isPhoneOk;
3803                if (!isPhoneOk) cbs[1].checked = false;
3804            }
3805        });
3806    }
3807
3808    let isProcessing = false;
3809
3810    document.addEventListener('change', async function(e) {
3811        const label = e.target.closest('.nl-cb-label');
3812        if (!e.target.classList.contains('nl-custom-cb')) return;
3813        const checkbox = e.target;
3814        if (checkbox.disabled) return;
3815
3816        e.stopImmediatePropagation();
3817        isProcessing = true;
3818
3819        const newState = !!checkbox.checked;
3820        const form = checkbox.closest('#nl-subscription-form');
3821        const allCbs = Array.from(form.querySelectorAll('.nl-custom-cb'));
3822        const index = allCbs.indexOf(checkbox);
3823        
3824        document.querySelectorAll('#nl-subscription-form').forEach(f => {
3825            const targets = f.querySelectorAll('.nl-custom-cb');
3826            if (targets[index] && targets[index] !== checkbox) {
3827                targets[index].checked = newState;
3828            }
3829        });
3830
3831        const { email, phone } = getFormData();
3832        const action = newState ? 'GRANTED' : 'DECLINED';
3833        const type = index === 0 ? 'MARKETING_EMAIL' : 'MARKETING_SMS';
3834        const labelText = checkbox.closest('.nl-cb-label').querySelector('.nl-cb-text').innerText;
3835        const customerDetails = JSON.parse(localStorage.getItem('customer_details')) || {};
3836
3837        try {
3838            if (loginHandler?.registerConsent) {
3839                await loginHandler.registerConsent(
3840                    email || customerDetails.email, 
3841                    action, 
3842                    type, 
3843                    labelText,
3844                    window.location.origin + '/privacy-policy', 
3845                    '1.0', 
3846                    null, 
3847                    null,
3848                    { 
3849                        "url": window.location.origin,
3850                        "page": window.location.pathname,
3851                        "phone": phone || customerDetails.phone,
3852                        "message": labelText,
3853                        "navigator_datetime": new Date().toISOString(),
3854                        "privacy_policy_language": "en",
3855                        "rep_id": localStorage.getItem('repid') || null,
3856                        "lead": true,
3857                        "lead_source": "Website",
3858                        "first_name": customerDetails.first_name || "",
3859                        "last_name": customerDetails.last_name || ""
3860                    },
3861                    null
3862                );
3863            }
3864            if (type == "MARKETING_EMAIL") {
3865                notyf.success("Thank you for joining our mailing list. You'll be sent the next issue of our newsletter shortly");
3866            } else {
3867                notyf.success("Thank you for joining our SMS mailing list. You'll be sent the next issue of our newsletter shortly");
3868            }
3869        } catch (err) {
3870            console.error('[Consent] Error:', err);
3871            notyf.error('Error registering consent, please try again later');
3872        } finally {
3873            setTimeout(() => { isProcessing = false; }, 100);
3874        }
3875    }, true);
3876
3877    document.addEventListener('input', (e) => {
3878        if (e.target.name === 'nl_email' || e.target.name === 'nl_phone') {
3879
3880            const newValue = e.target.value;
3881
3882            document.querySelectorAll('#nl-subscription-form').forEach(f => {
3883                const emailInp = f.querySelector('input[name="nl_email"]');
3884                const phoneInp = f.querySelector('input[name="nl_phone"]');
3885                const cbs = f.querySelectorAll('.nl-custom-cb');
3886
3887                if (e.target.name === 'nl_email' && emailInp !== e.target) {
3888                    emailInp.value = newValue;
3889                }
3890                if (e.target.name === 'nl_phone' && phoneInp !== e.target) {
3891                    phoneInp.value = newValue;
3892                }
3893
3894                if (e.target.name === 'nl_email' && cbs[0]) {
3895                    cbs[0].checked = false;
3896                    cbs[0].disabled = true; 
3897                }
3898                if (e.target.name === 'nl_phone' && cbs[1]) {
3899                    cbs[1].checked = false;
3900                    cbs[1].disabled = true; 
3901                }
3902            });
3903            
3904        }
3905
3906        if (e.target.name === 'nl_phone') {
3907            let digits = e.target.value.replace(/\D/g, '');
3908            if (digits.length > 0 && !digits.startsWith('1')) digits = '1' + digits;
3909            e.target.value = digits.length > 0 ? '+' + digits.slice(0, 11) : '';
3910        }
3911
3912        updateAllForms();
3913    });
3914
3915    // Wait for the full document to parse before the first pass: footer.html renders this partial
3916    // twice (.mobile-version + .web-version), and this script runs inline as the FIRST copy parses
3917    // — the second copy's form doesn't exist in the DOM yet. Running here (instead of immediately)
3918    // guarantees querySelectorAll('#nl-subscription-form') sees both by the time markFromConsents runs.
3919    function boot() {
3920        initFormValues();
3921        setInterval(updateAllForms, 1000);
3922    }
3923    if (document.readyState === 'loading') {
3924        document.addEventListener('DOMContentLoaded', boot);
3925    } else {
3926        boot();
3927    }
3928
3929    // bfcache restore (back/forward button) resumes this exact JS state without re-running any
3930    // 
3930<script> tag, so cachedEmail/cachedPhone can be stale — force a fresh consent check.
3931    window.addEventListener('pageshow', function (e) {
3932        if (!e.persisted) return;
3933        cachedEmail = "";
3934        cachedPhone = "";
3935        updateAllForms();
3936    });
3937})();
3938</script>
3938                </article>
3939                <article class="footer-info-col footer-info-col--small logo-section-wrapper" data-section-type="footer-categories">
3940                        <div class="logo-section">
3941                            <svg class="footer--logo"></svg>
3942                            <p class="footer-logo-down-text">Pink Zebra&#x27;s mission is to change the lives of all those who use our home fragrance products. We proudly produce all our fragrance products right here in the USA in Sugar Land, TX!</p>
3943                        </div>
3944                </article>
3945                <div class="mobile-version">
3946                    <div class="socialLinks-wrapper">
3947    <p class="sosial-links-paragraph">Sprinkle. Snap. Share.</p>
3948    <ul class="socialLinks socialLinks--alt">
3949                <li class="socialLinks-item">
3950                    <a class="icon icon--facebook"
3951                       href="https://www.facebook.com/PinkZebraHome/"
3952                       target="_blank"
3953                       rel="noopener"
3954                       title="Facebook"
3955                    >
3956                        <span class="aria-description--hidden">Facebook</span>
3957                        <svg class="facebook-icon">
3958                            <use href="#icon-facebook"/>
3959                        </svg>
3960                    </a>
3961                </li>
3962                <li class="socialLinks-item">
3963                    <a class="icon icon--instagram"
3964                       href="https://www.instagram.com/pinkzebrahome/"
3965                       target="_blank"
3966                       rel="noopener"
3967                       title="Instagram"
3968                    >
3969                        <span class="aria-description--hidden">Instagram</span>
3970                        <svg class="instagram-icon">
3971                            <use href="#icon-instagram"/>
3972                        </svg>
3973                    </a>
3974                </li>
3975                <li class="socialLinks-item">
3976                    <a class="icon icon--youtube"
3977                       href="https://www.youtube.com/user/PaisleyPinkZebra"
3978                       target="_blank"
3979                       rel="noopener"
3980                       title="Youtube"
3981                    >
3982                        <span class="aria-description--hidden">Youtube</span>
3983                        <svg class="youtube-icon">
3984                            <use href="#icon-youtube"/>
3985                        </svg>
3986                    </a>
3987                </li>
3988                <li class="socialLinks-item">
3989                    <a class="icon icon--"
3990                       href="https://www.tiktok.com/@pinkzebrahome"
3991                       target="_blank"
3992                       rel="noopener"
3993                       title="Tiktok"
3994                    >
3995                        <span class="aria-description--hidden">Tiktok</span>
3996                        <svg class="tiktok-icon">
3997                            <use href="#icon-tiktok"/>
3998                        </svg>
3999                    </a>
4000                </li>
4001                <li class="socialLinks-item">
4002                    <a class="icon icon--pinterest"
4003                       href="https://www.pinterest.com/pinkzebrahome/"
4004                       target="_blank"
4005                       rel="noopener"
4006                       title="Pinterest"
4007                    >
4008                        <span class="aria-description--hidden">Pinterest</span>
4009                        <svg class="pinterest-icon">
4010                            <use href="#icon-pinterest"/>
4011                        </svg>
4012                    </a>
4013                </li>
4014    </ul>
4015</div>
4016                </div>
4017                
4018                <article class="footer-info-col footer-info-col--small links-section mobile-version" data-section-type="footer-categories">
4019                    <div class="have-questions-block">
4020                        <h3 class="footer-info-heading">HAVE QUESTIONS? WE HAVE ANSWERS</h3>
4021                        <div class="have-questions-block-wrapper">
4022    <a class="have-questions-block-item web-version"  href="tel:8557465932">
4023    <span class="have-questions-block-item-span">
4024        <svg class="pz-phone-icon">
4025            <use href="#icon-PZ_Phone"></use>
4026        </svg>
4027    </span>
4028    <span class="have-questions-block-item-span phone">855-746-5932</span>
4029</a>
4030    <a class="have-questions-block-item web-version" href="mailto:[email protected]">
4031    <span class="have-questions-block-item-span">
4032        <svg class="pz-email-2-icon">
4033            <use href="#icon-email_2"></use>
4034        </svg>
4035    </span>
4036    <span class="have-questions-block-item-span" >
4036[email protected]</span>
4037</a>
4038</div>
4039                    </div>
4040                </article>
4041                <article class="footer-info-col footer-info-col--small links-section" data-section-type="footer-categories">
4042                    <button type="button" class="collapsible toggle-title open-collapse-button" data-mobile-button-name="QUICK LINKS">
4043        <div class="collapsible-button-name-wrapper">
4044            <span>QUICK LINKS</span>
4045            <a class="shop-up-to-list-item" data-mobile-button-name="QUICK LINKS"></a>
4046        </div>
4047    <span class="no-active-tab">
4048        
4049        <svg class="plus-icon">
4050            <use href="#icon-plus"></use>
4051        </svg>
4052       
4053    </span>
4054    <span class="active-tab">
4055        <svg class="minus-icon">
4056            <use href="#icon-minus"></use>
4057        </svg>
4058    </span>
4059</button>
4060                    <div class="content">
4061                        <div data-content-region="footer-info-col-1--global"><div data-layout-id="773bc94e-7bed-4ef0-8006-6f6cef32f07f">       <div data-sub-layout-container="36401381-fdb5-44a0-b7f5-678dbc78f780" data-layout-name="Layout">
4062    <style data-container-styling="36401381-fdb5-44a0-b7f5-678dbc78f780">
4063        [data-sub-layout-container="36401381-fdb5-44a0-b7f5-678dbc78f780"] {
4064            box-sizing: border-box;
4065            display: flex;
4066            flex-wrap: wrap;
4067            z-index: 0;
4068            position: relative;
4069            height: ;
4070            padding-top: 0px;
4071            padding-right: 0px;
4072            padding-bottom: 0px;
4073            padding-left: 0px;
4074            margin-top: 0px;
4075            margin-right: 0px;
4076            margin-bottom: 0px;
4077            margin-left: 0px;
4078            border-width: 0px;
4079            border-style: solid;
4080            border-color: #333333;
4081        }
4082
4083        [data-sub-layout-container="36401381-fdb5-44a0-b7f5-678dbc78f780"]:after {
4084            display: block;
4085            position: absolute;
4086            top: 0;
4087            left: 0;
4088            bottom: 0;
4089            right: 0;
4090            background-size: cover;
4091            z-index: auto;
4092        }
4093    </style>
4094
4095    <div data-sub-layout="c083c3c8-60a3-46ad-b4c7-7d67c078df6a">
4096        <style data-column-styling="c083c3c8-60a3-46ad-b4c7-7d67c078df6a">
4097            [data-sub-layout="c083c3c8-60a3-46ad-b4c7-7d67c078df6a"] {
4098                display: flex;
4099                flex-direction: column;
4100                box-sizing: border-box;
4101                flex-basis: 100%;
4102                max-width: 100%;
4103                z-index: 0;
4104                position: relative;
4105                height: ;
4106                padding-top: 0px;
4107                padding-right: 10.5px;
4108                padding-bottom: 0px;
4109                padding-left: 10.5px;
4110                margin-top: 0px;
4111                margin-right: 0px;
4112                margin-bottom: 0px;
4113                margin-left: 0px;
4114                border-width: 0px;
4115                border-style: solid;
4116                border-color: #333333;
4117                justify-content: center;
4118            }
4119            [data-sub-layout="c083c3c8-60a3-46ad-b4c7-7d67c078df6a"]:after {
4120                display: block;
4121                position: absolute;
4122                top: 0;
4123                left: 0;
4124                bottom: 0;
4125                right: 0;
4126                background-size: cover;
4127                z-index: auto;
4128            }
4129            @media only screen and (max-width: 700px) {
4130                [data-sub-layout="c083c3c8-60a3-46ad-b4c7-7d67c078df6a"] {
4131                    flex-basis: 100%;
4132                    max-width: 100%;
4133                }
4134            }
4135        </style>
4136        <div data-widget-id="1f7e7db3-9d13-42dc-8fb9-05dc9a5d68ad" data-placement-id="3afee65a-7618-4c81-badf-2301a4928d37" data-placement-status="ACTIVE"><style>   
4137    ul.footer-info-list li a.section-links:hover {
4138        color: #ff1378 !important;
4139        text-decoration: none; 
4140    }
4141    .section-links.link-color {
4142        color:;
4143    }
4144</style>
4145
4146
4147<ul class="footer-info-list">  
4148            <li><a href="#" class="footer-heading-link"><b>Quick Links</b></a></li>
4149        
4150                 <li><a class="section-links link-color" href="/shop-by-fragrance/fragrance/">Shop Fragrances</a></li> 
4151                 <li><a class="section-links link-color" href="/shop-new-products" style="color:rgba(0,0,0,1);">Shop New Collection</a></li> 
4152                 <li><a class="section-links link-color" href="/scentflirt" style="color:rgba(0,0,0,1);">ScentFlirt Subscription</a></li> 
4153                 <li><a class="section-links link-color" href="/scentflirt-exclusive" style="color:rgba(0,0,0,1);">ScentFlirt Exclusive</a></li> 
4154                 <li><a class="section-links link-color" href="/pztv" style="color:rgba(0,0,0,1);">Watch PZTV</a></li> 
4155                 <li><a class="section-links link-color" href="/share-and-earn">Share &amp; Earn</a></li> 
4156                 <li><a class="section-links link-color" href="/sell-pink-zebra" style="color:rgba(0,0,0,1);">Sell Pink Zebra</a></li> 
4157                 <li><a class="section-links link-color" href="">Find a Consultant</a></li> 
4158</ul></div>
4159    </div>
4160</div>
4161
4162</div></div>
4163                    </div>
4164                </article>
4165                <article class="footer-info-col footer-info-col--small links-section" data-section-type="footer-categories">
4166                    <button type="button" class="collapsible toggle-title open-collapse-button" data-mobile-button-name="CUSTOMER CARE">
4167        <div class="collapsible-button-name-wrapper">
4168            <span>CUSTOMER CARE</span>
4169            <a class="shop-up-to-list-item" data-mobile-button-name="CUSTOMER CARE"></a>
4170        </div>
4171    <span class="no-active-tab">
4172        
4173        <svg class="plus-icon">
4174            <use href="#icon-plus"></use>
4175        </svg>
4176       
4177    </span>
4178    <span class="active-tab">
4179        <svg class="minus-icon">
4180            <use href="#icon-minus"></use>
4181        </svg>
4182    </span>
4183</button>
4184                    <div class="content">
4185                        <div data-content-region="footer-info-col-2--global"><div data-layout-id="49c83bb1-5070-4ae6-92ab-c361dbfac29e">       <div data-sub-layout-container="3fe70549-ad64-4141-80b0-22918c2b823b" data-layout-name="Layout">
4186    <style data-container-styling="3fe70549-ad64-4141-80b0-22918c2b823b">
4187        [data-sub-layout-container="3fe70549-ad64-4141-80b0-22918c2b823b"] {
4188            box-sizing: border-box;
4189            display: flex;
4190            flex-wrap: wrap;
4191            z-index: 0;
4192            position: relative;
4193            height: ;
4194            padding-top: 0px;
4195            padding-right: 0px;
4196            padding-bottom: 0px;
4197            padding-left: 0px;
4198            margin-top: 0px;
4199            margin-right: 0px;
4200            margin-bottom: 0px;
4201            margin-left: 0px;
4202            border-width: 0px;
4203            border-style: solid;
4204            border-color: #333333;
4205        }
4206
4207        [data-sub-layout-container="3fe70549-ad64-4141-80b0-22918c2b823b"]:after {
4208            display: block;
4209            position: absolute;
4210            top: 0;
4211            left: 0;
4212            bottom: 0;
4213            right: 0;
4214            background-size: cover;
4215            z-index: auto;
4216        }
4217    </style>
4218
4219    <div data-sub-layout="f8a8d6ef-663a-4968-90d2-aac51c2c571b">
4220        <style data-column-styling="f8a8d6ef-663a-4968-90d2-aac51c2c571b">
4221            [data-sub-layout="f8a8d6ef-663a-4968-90d2-aac51c2c571b"] {
4222                display: flex;
4223                flex-direction: column;
4224                box-sizing: border-box;
4225                flex-basis: 100%;
4226                max-width: 100%;
4227                z-index: 0;
4228                position: relative;
4229                height: ;
4230                padding-top: 0px;
4231                padding-right: 10.5px;
4232                padding-bottom: 0px;
4233                padding-left: 10.5px;
4234                margin-top: 0px;
4235                margin-right: 0px;
4236                margin-bottom: 0px;
4237                margin-left: 0px;
4238                border-width: 0px;
4239                border-style: solid;
4240                border-color: #333333;
4241                justify-content: center;
4242            }
4243            [data-sub-layout="f8a8d6ef-663a-4968-90d2-aac51c2c571b"]:after {
4244                display: block;
4245                position: absolute;
4246                top: 0;
4247                left: 0;
4248                bottom: 0;
4249                right: 0;
4250                background-size: cover;
4251                z-index: auto;
4252            }
4253            @media only screen and (max-width: 700px) {
4254                [data-sub-layout="f8a8d6ef-663a-4968-90d2-aac51c2c571b"] {
4255                    flex-basis: 100%;
4256                    max-width: 100%;
4257                }
4258            }
4259        </style>
4260        <div data-widget-id="8eb3cabf-661b-41df-a7c3-7e6beaa4dd3e" data-placement-id="89d05daa-dc53-4955-af38-f76696636aeb" data-placement-status="ACTIVE"><style>   
4261    ul.footer-info-list li a.section-links:hover {
4262        color: #ff1378 !important;
4263        text-decoration: none; 
4264    }
4265    .section-links.link-color {
4266        color:;
4267    }
4268</style>
4269
4270
4271<ul class="footer-info-list">  
4272            <li class="custom-care"><a href="#" class="footer-heading-link"><b>Customer care</b></a></li>
4273        
4274                 <li><a class="section-links link-color" href="/returns-and-exchanges" style="color:rgba(0,0,0,1);">Returns/Exchanges</a></li> 
4275                 <li><a class="section-links link-color" href="/faq">FAQ</a></li> 
4276                 <li><a class="section-links link-color" href="/contact">Contact Us</a></li> 
4277</ul></div>
4278    </div>
4279</div>
4280
4281</div></div>
4282                    </div>
4283                </article>
4284                <article class="footer-info-col footer-info-col--small links-section" data-section-type="footer-categories">
4285                    <button type="button" class="collapsible toggle-title open-collapse-button" data-mobile-button-name="COMPANY">
4286        <div class="collapsible-button-name-wrapper">
4287            <span>COMPANY</span>
4288            <a class="shop-up-to-list-item" data-mobile-button-name="COMPANY"></a>
4289        </div>
4290    <span class="no-active-tab">
4291        
4292        <svg class="plus-icon">
4293            <use href="#icon-plus"></use>
4294        </svg>
4295       
4296    </span>
4297    <span class="active-tab">
4298        <svg class="minus-icon">
4299            <use href="#icon-minus"></use>
4300        </svg>
4301    </span>
4302</button>
4303                    <div class="content">
4304                        <div data-content-region="footer-info-col-3--global"><div data-layout-id="e186c4f3-f261-4408-b33e-95e6c144d8b8">       <div data-sub-layout-container="e6f0074c-7474-425b-aa21-122e6568df0b" data-layout-name="Layout">
4305    <style data-container-styling="e6f0074c-7474-425b-aa21-122e6568df0b">
4306        [data-sub-layout-container="e6f0074c-7474-425b-aa21-122e6568df0b"] {
4307            box-sizing: border-box;
4308            display: flex;
4309            flex-wrap: wrap;
4310            z-index: 0;
4311            position: relative;
4312            height: ;
4313            padding-top: 0px;
4314            padding-right: 0px;
4315            padding-bottom: 0px;
4316            padding-left: 0px;
4317            margin-top: 0px;
4318            margin-right: 0px;
4319            margin-bottom: 0px;
4320            margin-left: 0px;
4321            border-width: 0px;
4322            border-style: solid;
4323            border-color: #333333;
4324        }
4325
4326        [data-sub-layout-container="e6f0074c-7474-425b-aa21-122e6568df0b"]:after {
4327            display: block;
4328            position: absolute;
4329            top: 0;
4330            left: 0;
4331            bottom: 0;
4332            right: 0;
4333            background-size: cover;
4334            z-index: auto;
4335        }
4336    </style>
4337
4338    <div data-sub-layout="7a0dfc47-d409-42e4-a4ee-9dc36a98c610">
4339        <style data-column-styling="7a0dfc47-d409-42e4-a4ee-9dc36a98c610">
4340            [data-sub-layout="7a0dfc47-d409-42e4-a4ee-9dc36a98c610"] {
4341                display: flex;
4342                flex-direction: column;
4343                box-sizing: border-box;
4344                flex-basis: 100%;
4345                max-width: 100%;
4346                z-index: 0;
4347                position: relative;
4348                height: ;
4349                padding-top: 0px;
4350                padding-right: 10.5px;
4351                padding-bottom: 0px;
4352                padding-left: 10.5px;
4353                margin-top: 0px;
4354                margin-right: 0px;
4355                margin-bottom: 0px;
4356                margin-left: 0px;
4357                border-width: 0px;
4358                border-style: solid;
4359                border-color: #333333;
4360                justify-content: center;
4361            }
4362            [data-sub-layout="7a0dfc47-d409-42e4-a4ee-9dc36a98c610"]:after {
4363                display: block;
4364                position: absolute;
4365                top: 0;
4366                left: 0;
4367                bottom: 0;
4368                right: 0;
4369                background-size: cover;
4370                z-index: auto;
4371            }
4372            @media only screen and (max-width: 700px) {
4373                [data-sub-layout="7a0dfc47-d409-42e4-a4ee-9dc36a98c610"] {
4374                    flex-basis: 100%;
4375                    max-width: 100%;
4376                }
4377            }
4378        </style>
4379        <div data-widget-id="bc4503fb-3bb5-4ec5-8a94-615a57d2109b" data-placement-id="a853dc02-5035-4f3a-8727-4623e7bff301" data-placement-status="ACTIVE"><style>   
4380    ul.footer-info-list li a.section-links:hover {
4381        color: #ff1378 !important;
4382        text-decoration: none; 
4383    }
4384    .section-links.link-color {
4385        color:;
4386    }
4387</style>
4388
4389
4390<ul class="footer-info-list">  
4391            <li><a href="#" class="footer-heading-link"><b>COMPANY</b></a></li>
4392        
4393                 <li><a class="section-links link-color" href="/our-culture" style="color:rgba(0,0,0,1);">Our Culture </a></li> 
4394                 <li><a class="section-links link-color" href="/our-ingredients">Our Ingredients</a></li> 
4395                 <li><a class="section-links link-color" href="/heroes">Heroes Charitable Program</a></li> 
4396</ul></div>
4397    </div>
4398</div>
4399
4400</div></div>
4401                    </div>
4402                </article>
4403                <article class="footer-info-col info-col-subscribe web-version" data-section-type="newsletterSubscription">
4404                        <h3 class="footer-info-heading web-version">Be the first to hear about new products, sales and more!</h3> 
4405<!-- <div class="subscription-form-heading-wrapper mobile-version"> -->
4406   
4407    <!-- <h3 class="footer-info-heading">Join our </h3> 
4408    <h3 class="footer-info-heading-newsletter"> Newsletter</h3>
4409    <div class="subscription-form-heading-decor"></div> -->
4410<!-- </div> -->
4411<!-- <p class="exlusive-offerse">Be the first to hear about new products, sales and more!</p> -->
4412
4413<form class="form" action="https://pinkzebrahome.com/subscribe.php" method="post" id="nl-subscription-form">
4414    <fieldset class="form-fieldset">
4415        <input type="hidden" name="action" value="subscribe">
4416        <input type="hidden" name="nl_first_name" id="nl_first_name" value="bc">
4417        <input type="hidden" name="check" value="1">
4418        
4419        <div class="form-field">
4420            <label class="form-label is-srOnly" for="nl_email">Email Address</label>
4421            <div class="form-prefixPostfix wrap">
4422                <!-- Data Inputs -->
4423                <input class="form-input"
4424                       id="nl_email"
4425                       name="nl_email"
4426                       type="email"
4427                       value=""
4428                       placeholder="Enter email"
4429                       required
4430                >
4431                
4432                <input class="form-input mt-3"
4433                       id="nl_phone"
4434                       name="nl_phone"
4435                       type="text"
4436                       value="+1"
4437                       placeholder="Enter phone number"
4438                       required
4439                >
4440
4441                <!-- Checkboxes (Listening to inputs to enable/disable) -->
4442                <div class="nl-legal-container">
4443                    
4444                    <div class="nl-checkbox-row">
4445                        <label class="nl-cb-label">
4446                            <input type="checkbox" class="nl-custom-cb" disabled>
4447                            <span class="nl-cb-box"></span>
4448                            <span class="nl-cb-text">Yes, I’d like to receive marketing emails from Pink Zebra Home.</span>
4449                        </label>
4450                    </div>
4451
4452                    <div class="nl-checkbox-row">
4453                        <label class="nl-cb-label">
4454                            <input type="checkbox" class="nl-custom-cb" disabled>
4455                            <span class="nl-cb-box"></span>
4456                            <span class="nl-cb-text">Yes, I'd like to receive marketing text messages from Pink Zebra Home.</span>
4457                        </label>
4458                    </div>
4459
4460                    <div class="nl-checkbox-row">
4461                        <div class="legal-info">
4462                            <p style="margin:0">For more information on how we process your data for marketing communication. View our <a href="/privacy-policy" target="_blank">Privacy Policy</a></p>
4463                        </div>
4464                    </div>    
4465                </div>
4466
4467                <!-- <input class="button button--primary form-prefixPostfix-button--postfix ms-0 mt-3"
4468                       type="submit"
4469                       value="Sign me Up"
4470                > -->
4471            </div>
4472        </div>
4473    </fieldset>
4474</form>
4475
4476<style>
4477    .nl-cb-label {
4478        display: flex;
4479        align-items: center;
4480        cursor: pointer;
4481        font-size: 12px;
4482        opacity: 0.4;
4483        transition: opacity 0.3s;
4484        /* Quitamos pointer-events: none para que siempre sea clickeable el área */
4485    }
4486
4487    /* Cuando el input hijo NO está disabled, aclaramos el label */
4488    .nl-cb-label:has(.nl-custom-cb:not(:disabled)) {
4489        opacity: 1;
4490    }
4491
4492    .nl-custom-cb {
4493        position: absolute;
4494        opacity: 0;
4495        width: 0;
4496        height: 0;
4497    }
4498
4499    .nl-cb-box {
4500        width: 16px;
4501        height: 16px;
4502        border: 2px solid #fe1378;
4503        border-radius: 3px;
4504        margin-right: 8px;
4505        flex-shrink: 0;
4506        position: relative;
4507    }
4508
4509    @media (max-width: 768px) {
4510        .nl-cb-box {
4511            border-color: #ffffff;
4512        }
4513    }
4514
4515    .nl-custom-cb:checked + .nl-cb-box {
4516        background-color: #fe1378;
4517    }
4518
4519    .nl-custom-cb:checked + .nl-cb-box::after {
4520        content: '\2713';
4521        position: absolute;
4522        color: #fff;
4523        font-size: 11px;
4524        top: 50%;
4525        left: 50%;
4526        transform: translate(-50%, -50%);
4527    }
4528</style>
4529
4530<script>
4531(function () {
4532    // footer.html renders this partial twice (.mobile-version + .web-version, CSS toggles which
4533    // shows) — guard so only the first copy's script wires up listeners/interval; it already
4534    // operates on ALL '#nl-subscription-form' matches, so the duplicate copy needs no init of its own.
4535    if (window.__nlSubscriptionFormInit) return;
4536    window.__nlSubscriptionFormInit = true;
4537
4538    let cachedEmail = "";
4539    let cachedPhone = "";
4540    let emailRetryCount = 0;
4541    let phoneRetryCount = 0;
4542    let lastRetriedEmail = "";
4543    let lastRetriedPhone = "";
4544    const check = {
4545        email: (val) => /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(val.trim()),
4546        phone: (val) => {
4547            const digits = val.replace(/\D/g, '');
4548            return digits.length === 11 && digits.startsWith('1');
4549        }
4550    };
4551
4552    function getFormData() {
4553        const forms = document.querySelectorAll('#nl-subscription-form');
4554        let email = "", phone = "";
4555        forms.forEach(f => {
4556            const emailInp = f.querySelector('input[name="nl_email"]');
4557            const phoneInp = f.querySelector('input[name="nl_phone"]');
4558            const e = emailInp ? emailInp.value : "";
4559            const p = phoneInp ? phoneInp.value : "";
4560            if (e.length > email.length) email = e;
4561            if (p.length > phone.length) phone = p;
4562        });
4563        return { email, phone };
4564    }
4565
4566    function formatPhone(val) {
4567        if (!val || val === '+1') return '+1';
4568        let digits = String(val).replace(/\D/g, '');
4569        if (digits.startsWith('1')) {
4570            digits = digits.substring(1);
4571        }
4572        return '+1' + digits;
4573    }
4574
4575    function initFormValues() {
4576        const customerDetails = JSON.parse(localStorage.getItem('customer_details')) || {};
4577        const forms = document.querySelectorAll('#nl-subscription-form');
4578        
4579        forms.forEach(f => {
4580            const emailInp = f.querySelector('input[name="nl_email"]');
4581            const phoneInp = f.querySelector('input[name="nl_phone"]');
4582
4583            // 1. Priorizamos LocalStorage si existe data de la API
4584            if (emailInp && customerDetails.email) {
4585                emailInp.value = customerDetails.email;
4586            }
4587            
4588            if (phoneInp) {
4589                const storedPhone = customerDetails.phone || customerDetails.mobile_number;
4590                
4591                // Si la API tiene un teléfono, lo usamos (aunque sea el "5")
4592                if (storedPhone) {
4593                    phoneInp.value = formatPhone(String(storedPhone));
4594                } else {
4595                    // Si no, formateamos lo que traiga Handlebars
4596                    phoneInp.value = formatPhone(phoneInp.value);
4597                }
4598            }
4599        });
4600        updateAllForms();
4601    }
4602
4603    let isUpdating = false;
4604    async function updateAllForms() {
4605        if (isUpdating) return;
4606        
4607        const forms = document.querySelectorAll('#nl-subscription-form');
4608        
4609        // 1. Recopilar datos del formulario que tenga algo escrito
4610        let currentEmail = "";
4611        let currentPhone = "";
4612        
4613        forms.forEach(f => {
4614            const e = f.querySelector('input[name="nl_email"]').value;
4615            const p = f.querySelector('input[name="nl_phone"]').value;
4616            if (e.length > currentEmail.length) currentEmail = e;
4617            if (p.length > currentPhone.length) currentPhone = p;
4618        });
4619
4620        const isEmailOk = check.email(currentEmail);
4621        const isPhoneOk = check.phone(currentPhone);
4622
4623        if (currentEmail === cachedEmail && currentPhone === cachedPhone) {
4624            updateCheckboxStates(isEmailOk, isPhoneOk, currentEmail, currentPhone);
4625            return;
4626        }
4627
4628        isUpdating = true;
4629        try {
4630            // ONE consent lookup by email. check_consent is EMAIL-centric: given the email it
4631            // returns ALL of the contact's consents (marketing_email + marketing_sms), so we mark
4632            // BOTH checkboxes from that single response — no separate phone-only lookup (that one
4633            // couldn't reflect the contact's consents). Phone-only (valid phone, no valid email)
4634            // keeps its own lookup below.
4635            const markFromConsents = (consents) => {
4636                const emailStatus = consents?.marketing_email?.status?.toLowerCase();
4637                const phoneStatus = consents?.marketing_sms?.status?.toLowerCase();
4638                const emailChecked = emailStatus === 'granted' && consents?.marketing_email?.has_synced === true;
4639                const phoneChecked = phoneStatus === 'granted' && consents?.marketing_sms?.has_synced === true;
4640                forms.forEach(f => {
4641                    const cbs = f.querySelectorAll('.nl-custom-cb');
4642                    if (cbs[0] && (emailStatus === 'granted' || emailStatus === 'declined')) cbs[0].checked = emailChecked;
4643                    if (cbs[1] && isPhoneOk && (phoneStatus === 'granted' || phoneStatus === 'declined')) cbs[1].checked = phoneChecked;
4644                });
4645            };
4646
4647            if (isEmailOk && (currentEmail != cachedEmail || currentPhone != cachedPhone)) {
4648                try {
4649                    const response = await loginHandler.getConsentStatus({ email: currentEmail, phone: isPhoneOk ? currentPhone : undefined });
4650                    cachedEmail = currentEmail;
4651                    cachedPhone = currentPhone;
4652                    emailRetryCount = 0;
4653                    phoneRetryCount = 0;
4654                    if (response?.success) markFromConsents(response.consents); // owner-guard may return undefined
4655                } catch (error) {
4656                    if (lastRetriedEmail !== currentEmail) {
4657                        lastRetriedEmail = currentEmail;
4658                        emailRetryCount = 1;
4659                    } else {
4660                        emailRetryCount++;
4661                    }
4662                    if (emailRetryCount >= 3) {
4663                        cachedEmail = currentEmail;
4664                        cachedPhone = currentPhone;
4665                        forms.forEach(f => {
4666                            const cbs = f.querySelectorAll('.nl-custom-cb');
4667                            if (cbs[0]) cbs[0].checked = false;
4668                            if (cbs[1] && isPhoneOk) cbs[1].checked = false;
4669                        });
4670                    } else {
4671                        throw error;
4672                    }
4673                }
4674            }
4675            // No phone-only branch: consent lookup is ALWAYS email-driven (email returns all consents,
4676            // incl. marketing_sms). A valid phone without a valid owner email can't be resolved.
4677            
4678            if (!isEmailOk) cachedEmail = "";
4679
4680            updateCheckboxStates(isEmailOk, isPhoneOk, currentEmail, currentPhone);
4681        } catch (error) {
4682            console.error("Error in updateAllForms:", error);
4683        } finally {
4684            isUpdating = false;
4685        }
4686    }
4687
4688    function updateCheckboxStates(isEmailOk, isPhoneOk, currentEmail, currentPhone) {
4689        const forms = document.querySelectorAll('#nl-subscription-form');
4690        forms.forEach(f => {
4691            const emailInp = f.querySelector('input[name="nl_email"]');
4692            const phoneInp = f.querySelector('input[name="nl_phone"]');
4693            const cbs = f.querySelectorAll('.nl-custom-cb');
4694
4695            if (document.activeElement !== emailInp) emailInp.value = currentEmail;
4696            if (document.activeElement !== phoneInp) phoneInp.value = currentPhone;
4697
4698            if (cbs[0]) {
4699                cbs[0].disabled = !isEmailOk;
4700                if (!isEmailOk) cbs[0].checked = false;
4701            }
4702            if (cbs[1]) {
4703                cbs[1].disabled = !isPhoneOk;
4704                if (!isPhoneOk) cbs[1].checked = false;
4705            }
4706        });
4707    }
4708
4709    let isProcessing = false;
4710
4711    document.addEventListener('change', async function(e) {
4712        const label = e.target.closest('.nl-cb-label');
4713        if (!e.target.classList.contains('nl-custom-cb')) return;
4714        const checkbox = e.target;
4715        if (checkbox.disabled) return;
4716
4717        e.stopImmediatePropagation();
4718        isProcessing = true;
4719
4720        const newState = !!checkbox.checked;
4721        const form = checkbox.closest('#nl-subscription-form');
4722        const allCbs = Array.from(form.querySelectorAll('.nl-custom-cb'));
4723        const index = allCbs.indexOf(checkbox);
4724        
4725        document.querySelectorAll('#nl-subscription-form').forEach(f => {
4726            const targets = f.querySelectorAll('.nl-custom-cb');
4727            if (targets[index] && targets[index] !== checkbox) {
4728                targets[index].checked = newState;
4729            }
4730        });
4731
4732        const { email, phone } = getFormData();
4733        const action = newState ? 'GRANTED' : 'DECLINED';
4734        const type = index === 0 ? 'MARKETING_EMAIL' : 'MARKETING_SMS';
4735        const labelText = checkbox.closest('.nl-cb-label').querySelector('.nl-cb-text').innerText;
4736        const customerDetails = JSON.parse(localStorage.getItem('customer_details')) || {};
4737
4738        try {
4739            if (loginHandler?.registerConsent) {
4740                await loginHandler.registerConsent(
4741                    email || customerDetails.email, 
4742                    action, 
4743                    type, 
4744                    labelText,
4745                    window.location.origin + '/privacy-policy', 
4746                    '1.0', 
4747                    null, 
4748                    null,
4749                    { 
4750                        "url": window.location.origin,
4751                        "page": window.location.pathname,
4752                        "phone": phone || customerDetails.phone,
4753                        "message": labelText,
4754                        "navigator_datetime": new Date().toISOString(),
4755                        "privacy_policy_language": "en",
4756                        "rep_id": localStorage.getItem('repid') || null,
4757                        "lead": true,
4758                        "lead_source": "Website",
4759                        "first_name": customerDetails.first_name || "",
4760                        "last_name": customerDetails.last_name || ""
4761                    },
4762                    null
4763                );
4764            }
4765            if (type == "MARKETING_EMAIL") {
4766                notyf.success("Thank you for joining our mailing list. You'll be sent the next issue of our newsletter shortly");
4767            } else {
4768                notyf.success("Thank you for joining our SMS mailing list. You'll be sent the next issue of our newsletter shortly");
4769            }
4770        } catch (err) {
4771            console.error('[Consent] Error:', err);
4772            notyf.error('Error registering consent, please try again later');
4773        } finally {
4774            setTimeout(() => { isProcessing = false; }, 100);
4775        }
4776    }, true);
4777
4778    document.addEventListener('input', (e) => {
4779        if (e.target.name === 'nl_email' || e.target.name === 'nl_phone') {
4780
4781            const newValue = e.target.value;
4782
4783            document.querySelectorAll('#nl-subscription-form').forEach(f => {
4784                const emailInp = f.querySelector('input[name="nl_email"]');
4785                const phoneInp = f.querySelector('input[name="nl_phone"]');
4786                const cbs = f.querySelectorAll('.nl-custom-cb');
4787
4788                if (e.target.name === 'nl_email' && emailInp !== e.target) {
4789                    emailInp.value = newValue;
4790                }
4791                if (e.target.name === 'nl_phone' && phoneInp !== e.target) {
4792                    phoneInp.value = newValue;
4793                }
4794
4795                if (e.target.name === 'nl_email' && cbs[0]) {
4796                    cbs[0].checked = false;
4797                    cbs[0].disabled = true; 
4798                }
4799                if (e.target.name === 'nl_phone' && cbs[1]) {
4800                    cbs[1].checked = false;
4801                    cbs[1].disabled = true; 
4802                }
4803            });
4804            
4805        }
4806
4807        if (e.target.name === 'nl_phone') {
4808            let digits = e.target.value.replace(/\D/g, '');
4809            if (digits.length > 0 && !digits.startsWith('1')) digits = '1' + digits;
4810            e.target.value = digits.length > 0 ? '+' + digits.slice(0, 11) : '';
4811        }
4812
4813        updateAllForms();
4814    });
4815
4816    // Wait for the full document to parse before the first pass: footer.html renders this partial
4817    // twice (.mobile-version + .web-version), and this script runs inline as the FIRST copy parses
4818    // — the second copy's form doesn't exist in the DOM yet. Running here (instead of immediately)
4819    // guarantees querySelectorAll('#nl-subscription-form') sees both by the time markFromConsents runs.
4820    function boot() {
4821        initFormValues();
4822        setInterval(updateAllForms, 1000);
4823    }
4824    if (document.readyState === 'loading') {
4825        document.addEventListener('DOMContentLoaded', boot);
4826    } else {
4827        boot();
4828    }
4829
4830    // bfcache restore (back/forward button) resumes this exact JS state without re-running any
4831    // 
4831<script> tag, so cachedEmail/cachedPhone can be stale — force a fresh consent check.
4832    window.addEventListener('pageshow', function (e) {
4833        if (!e.persisted) return;
4834        cachedEmail = "";
4835        cachedPhone = "";
4836        updateAllForms();
4837    });
4838})();
4839</script>
4839                </article>        
4840            </div>
4841        </section>
4842    </div>
4843    <div class="web-version mt-5">
4844        <div class="socialLinks-wrapper">
4845    <p class="sosial-links-paragraph">Sprinkle. Snap. Share.</p>
4846    <ul class="socialLinks socialLinks--alt">
4847                <li class="socialLinks-item">
4848                    <a class="icon icon--facebook"
4849                       href="https://www.facebook.com/PinkZebraHome/"
4850                       target="_blank"
4851                       rel="noopener"
4852                       title="Facebook"
4853                    >
4854                        <span class="aria-description--hidden">Facebook</span>
4855                        <svg class="facebook-icon">
4856                            <use href="#icon-facebook"/>
4857                        </svg>
4858                    </a>
4859                </li>
4860                <li class="socialLinks-item">
4861                    <a class="icon icon--instagram"
4862                       href="https://www.instagram.com/pinkzebrahome/"
4863                       target="_blank"
4864                       rel="noopener"
4865                       title="Instagram"
4866                    >
4867                        <span class="aria-description--hidden">Instagram</span>
4868                        <svg class="instagram-icon">
4869                            <use href="#icon-instagram"/>
4870                        </svg>
4871                    </a>
4872                </li>
4873                <li class="socialLinks-item">
4874                    <a class="icon icon--youtube"
4875                       href="https://www.youtube.com/user/PaisleyPinkZebra"
4876                       target="_blank"
4877                       rel="noopener"
4878                       title="Youtube"
4879                    >
4880                        <span class="aria-description--hidden">Youtube</span>
4881                        <svg class="youtube-icon">
4882                            <use href="#icon-youtube"/>
4883                        </svg>
4884                    </a>
4885                </li>
4886                <li class="socialLinks-item">
4887                    <a class="icon icon--"
4888                       href="https://www.tiktok.com/@pinkzebrahome"
4889                       target="_blank"
4890                       rel="noopener"
4891                       title="Tiktok"
4892                    >
4893                        <span class="aria-description--hidden">Tiktok</span>
4894                        <svg class="tiktok-icon">
4895                            <use href="#icon-tiktok"/>
4896                        </svg>
4897                    </a>
4898                </li>
4899                <li class="socialLinks-item">
4900                    <a class="icon icon--pinterest"
4901                       href="https://www.pinterest.com/pinkzebrahome/"
4902                       target="_blank"
4903                       rel="noopener"
4904                       title="Pinterest"
4905                    >
4906                        <span class="aria-description--hidden">Pinterest</span>
4907                        <svg class="pinterest-icon">
4908                            <use href="#icon-pinterest"/>
4909                        </svg>
4910                    </a>
4911                </li>
4912    </ul>
4913</div>
4914    </div>
4915    <div class="copyright-wrapper">
4916        <div class="footer-copyright">
4917            <div class="footer-copyright-paragraphs-wrapper">
4918                <div class="footer-copyright">
4919                    <a href="/terms-and-conditions" class="powered-by">Terms and Conditions</a> | <a href="/privacy-policy" class="powered-by">Privacy Policy</a> | <a href="/app-privacy-policy" class="powered-by">App Privacy Policy</a> | <a href="/accessibility" class="powered-by">Accessibility</a>
4920                </div>
4921                <div class="footer-copyright">
4922                    <p class="powered-by">Copyright &copy; 2026 Pink Zebra Home All rights reserved</p>
4923                </div>
4924                
4925            </div>
4926        </div>
4927    </div>
4928    </div>
4929    <div data-content-region="ssl_site_seal--global"></div>
4930</footer>
4931<a  class="back-to-top-button-wrapper" href="#">
4932    <span class="back-to-top-button">
4933        <span class="to-top-button-span">top</span>
4934        <svg class="arrow-up">
4935            <use href="#icon-north"/>
4936        </svg>
4937    </span>
4938</a>
4939        <div class="c--modal find-consultant-modal" tabindex="-1" style="--bs-modal-width: 575px;">
4940    <div class="c--modal-dialog">
4941        <div class="c--modal-content">
4942            <div class="search-consultant-by-location">
4943                <h4 class="c--modal-heading mt-0 mb_26px">SEARCH FOR A CONSULTANT BY LOCATION</h4>
4944                <p class="c--modal-subheading mb_19px">
4944Find a consultant in your area!</p>
4945                <form class="search-consultant-form mb_47px" id="search-consultant-form-location">
4946                    <div class="d-flex">
4947                        <div class="mt-0 my-md-auto mr_11px">
4948                            <div class="form-group form-group-small mb-0">
4949                                <input type="checkbox" id="searchByLocation" name="searchByLocation"><label class="mb-0 mt-0" for="searchByLocation"></label>
4950                            </div>
4951                        </div>
4952                        <div class="mt-0 my-md-auto">
4953                            <span class="location--checkbox">
4954                                Use my location to find a Consultant near me.
4955                            </span>
4956                        </div>
4957                    </div>
4958                    <input type="hidden" id="zipCodesInput" name="zip_codes[]">
4959                    <button class="consultant-search-submit button button--primary pl_40px pr_40px mt_39px mb-0 find-by-location" type="submit" search-btn-disabled="location" disabled>FIND A CONSULTANT</button>
4960                </form>
4961                <a href="#" type="button" id="show-adv--search" class="adv-search-link">Advanced Search</a>
4962            </div>
4963
4964            <div class="adv-consultant-search" style="display: none;">
4965                <div class="mb_25px">
4966                    <a href="#" id="show-location--search" class="back--to-location-search c--modal-link"> < Back</a>
4967                </div>
4968                <h4 class="mb_25px c--modal-heading mt_0px">SEARCH FOR A CONSULTANT BY NAME</h4>
4969                <p class="c--modal-subheading mb_27px">Find a Consultant by searching for their first or last name or initials.</p>
4970                <form class="search-consultant-form" id="search-consultant-form-name">
4971                    <div class="" style="gap: 20px;">
4972                        <div class="input mb_10px">
4973                            <label for="firstName" class="d-block mb_8px">First Name</label>
4974                            <input class="consultant-search-input" type="text" id="firstName" name="firstName">
4975                        </div>
4976                        <div class="input">
4977                            <label for="lastName" class="d-block mb_8px">Last Name</label>
4978                            <input class="consultant-search-input" type="text" id="lastName" name="lastName">
4979                        </div>
4980                    </div>
4981                    <button class="consultant-search-submit button button--primary pl_40px pr_40px mt_25px" type="submit" search-btn-disabled="consultant-name" disabled>FIND A CONSULTANT</button>
4982                </form>
4983                <hr class="mt_28px mb_36px">
4984                <h4 class="c--modal-heading mt-0 mb_19px">FIND A CONSULTANT IN YOUR AREA</h4>
4985                <p class="c--modal-subheading mb_19px">Shop with your local Consultant!</p>
4986                <form class="search-consultant-form" id="search-consultant-form-city">
4987                    <div class="d-flex flex-wrap w--100" style="gap: 20px;">
4988                        <div class="mb_10px flex--1 min_w_207px">
4989                            <label for="city" class="d-block mb_8px">City</label>
4990                            <input class="consultant-search-input" type="text" id="city" name="city">
4991                        </div>
4992                        <div class="flex--1 min_w_207px">
4993                            <label for="zipcode" class="d-block mb_8px">Zip Code</label>
4994                            <input class="consultant-search-input" type="text" id="zipcode" name="zip_codes[]">
4995                        </div>
4996                    </div>
4997                    <button class="consultant-search-submit button button--primary pl_40px pr_40px mt_25px" type="submit" search-btn-disabled="zip-code" disabled>FIND A CONSULTANT</button>
4998                </form>
4999            </div>
5000            <button class="mx-auto mb-0 modal-close find-consultant-modal-close">x</button>
5001        </div>
5002    </div>
5003</div>        <!-- Modals Goes Here -->
5004<div class="c--modal preview-login-modal" tabindex="-1" style="z-index: 999999;background: #888 url(https://cdn11.bigcommerce.com/r-d23a8a754c97263a25c1d5066e7abdd011b8d3e9/themes/__master/images/coming-soon.jpg) no-repeat center center; background-size: cover;">
5005    <div class="c--modal-dialog modal-v-centered" style=" max-width: 500px">
5006        <div class="c--modal-content text-center">
5007            <h4 class="c--modal-heading mb_24px">We're Under Maintenance!</h4>
5008            <p class="c--modal-subheading mb_27px">Check back at 7 am CST to explore our new website</p>
5009            <h4 class="c--modal-heading">Developer Login</h4>
5010            <form id="preview-login-form"  method="post">
5011                <div class="row">
5012                    <div class="col-12">
5013                        <div class="alertBox alertBox--error login--error mt_27px" style="display: none;">
5014                            <div class="alertBox-column alertBox-icon my-auto">
5015                                <icon glyph="ic-error" class="icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
5015<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"></path></svg></icon>
5016                            </div>
5017                            <p class="alertBox-column alertBox-message">
5018                                <span id="alertBox-message-text">Your email address or password is incorrect. Please try again.</span>
5019                            </p>
5020                        </div>
5021                    </div>
5022                    <div class="col-sm-6 mt_27px">
5023                        <div class="form-field" id="preview-email-div">
5024                            <label for="preview_login_email" id="preview-email-label" class="form-label">EMAIL ADDRESS<sup>*</sup></label>
5025                            <input autocomplete="email" id="preview_login_email" type="email" class="form-input" name="preview_login_email" value="" required>
5026                        </div>
5027                    </div>
5028                    <div class="col-sm-6 mt_27px">
5029                        <div class="form-field">
5030                            <label for="preview_login_pass" id="preview-password-label" class="form-label">PASSWORD<sup>*</sup></label>
5031                            <div class="password-wrapper">
5032                                <a class="button-toggle-password sso-hideable" alt="Show or hide your password" href="#"></a>
5033                                <input autocomplete="password" id="preview_login_pass" type="password" class="form-input" name="preview_login_pass" value="" required>
5034                            </div>
5035                        </div>
5036                    </div>
5037                    <div class="col-12">
5038                        <div class="d-flex flex-wrap mt_27px">
5039                            <div class="card-action text-left my-auto mb-0">
5040                                <button type="submit" class="button button--primary form_submit me-4 mb-0 popup-signin-button" id="preview-signin-button">SIGN IN</button>
5041                            </div>
5042                            <a href="https://pinkzebrahome.com/login.php?action&#x3D;reset_password" class="my-auto fo-pass">Forgot your password?</a>
5043                        </div>
5044                    </div>
5045                </div>
5046            </form>
5047        </div>
5048    </div>
5049</div>        <div class="c--modal vimeo-video-modal" tabindex="-1">
5050    <div class="c--modal-dialog">
5051        <div class="c--modal-content text-center">
5052            <button class="mx-auto mb-0 modal-close vimeo-video-modal-close">x</button>
5053            <div style="padding:100% 0 0 0;position:relative;"><iframe id="vimeo-video-link"
5054                frameborder="0" allow="autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media"
5055                style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe></div>
5056                
5056<script src="https://player.vimeo.com/api/player.js"></script>
5056
5057        </div>
5058    </div>
5059</div>        <div class="c--modal surcharge--modal" tabindex="-1">
5060    <div class="c--modal-dialog">
5061        <div class="c--modal-content text-center">
5062            <button class="mx-auto mb-0 modal-close" style="top: 22px;" onclick="hideModalPopUp('surcharge--modal');">x</button>
5063            <h4 class="c--modal-heading mb_24px">Tariff Recovery</h4>
5064            <p class="c--modal-subheading mb_27px">Due to recent US tariff charges, a 4% fee has been added to keep prices stable.</p>
5065        </div>
5066    </div>
5067</div>        <div class="c--modal invalid-consultant-modal" tabindex="-1">
5068    <div class="c--modal-dialog">
5069        <div class="c--modal-content text-center">
5070            <button class="mx-auto mb-0 modal-close" style="top: 22px;" onclick="hideModalPopUp('invalid-consultant-modal');">x</button>
5071            <h4 class="c--modal-heading mb_24px">Invalid Consultant Alert!</h4>
5072            <p class="c--modal-subheading mb_27px">Cross border consultants are not allowed please chose a different consultant.</p>
5073        </div>
5074    </div>
5075</div>        <style>
5076    #sitevibes-loyalty-refer-a-friend .sv-loyalty-refer-friend-referrals-item--pending{
5077      background-color:#898487
5078    }
5079    #sitevibes-loyalty-refer-a-friend .sv-loyalty-refer-friend-referrals-item--pending *{
5080      color:#000000;
5081    }
5082    #sitevibes-loyalty-refer-a-friend .sv-loyalty-refer-friend-referrals-item--confirmed{
5083      background-color:#000000
5084    }
5085    #sitevibes-loyalty-refer-a-friend .sv-loyalty-refer-friend-referrals-item--redeemed{
5086      background-color:#FF1378
5087    }
5088    
5089    #sitevibes-loyalty-refer-a-friend .sv-widget .sv-loyalty-refer-friend{
5090      background-color:transparent;
5091      border:none;
5092    }
5093    
5094    #sitevibes-loyalty-refer-a-friend .sv-widget .sv-loyalty-refer-friend-form-input input{
5095      border-radius: 20px;
5096      height: 40px;
5097      font-size: .875rem;
5098    }
5099    
5100    #sitevibes-loyalty-refer-a-friend .sv-widget a.sv-brand-kit-button>span, #sitevibes-loyalty-refer-a-friend .sv-widget button.sv-brand-kit-button>span{
5101      color:#ffffff;
5102    }
5103    #sitevibes-loyalty-refer-a-friend .sv-widget a.sv-brand-kit-button:not(.sv-disabled), #sitevibes-loyalty-refer-a-friend .sv-widget button.sv-brand-kit-button:not(.sv-disabled){
5104      background-color: #ff1378;
5105      border-color: #ff1378;
5106      color: #ffffff;
5107      font-weight: 700;
5108      height: 40px;
5109      border-radius: 20px;
5110    }
5111    
5112    #sitevibes-loyalty-refer-a-friend .sv-widget .sv-loyalty-refer-friend-form-input-error{
5113      text-align:left;
5114    }
5115
5116    @media screen and (max-width: 459px) {
5117      #sitevibes-loyalty-refer-a-friend .sv-widget .sv-loyalty-refer-friend-tab{
5118        padding: 4px 10px !important;
5119      }
5120    }
5121 
5122    .refer-a-friend-modal [modal-close-btn]{
5123      position:absolute;
5124      right:20px;
5125      top:20px;
5126    }
5127    
5128  </style>
5129  
5130  <div class="c--modal refer-a-friend-modal" tabindex="-1">
5131      <div class="c--modal-dialog mt_150px mb_100px">
5132          <div class="c--modal-content text-center">
5133              <div id="sitevibes-loyalty-refer-a-friend"></div>
5134              <div>
5135                <button type="submit" modal-close-btn="true" data-close="refer-a-friend-modal" class="mb-0">X</button>
5136              </div>
5137          </div>
5138      </div>
5139  </div>        <div class="c--modal refer-a-friend-consultant-modal" tabindex="-1">
5140    <div class="c--modal-dialog">
5141        <div class="c--modal-content text-center">
5142            <button class="mx-auto mb-0 modal-close" style="top: 22px;" onclick="hideModalPopUp('refer-a-friend-consultant-modal');">x</button>
5143            <h4 class="c--modal-heading mb_24px">Oops! You’re Already Part of the Herd!</h4>
5144            <p class="c--modal-subheading mb_27px">The ScentFlirt Referral Program is designed just for customers, but don’t worry, you can still encourage your customers to share the love so they earn the Referral Rewards which helps you grow your business and reach your goals!</p>
5145            <div class="d-flex flex-wrap" style="justify-content: space-around;">
5146                <!-- <button class="button button--primary modal-button" onclick="copyReferralUrl()">SHARE WITH CUSTOMERS</button>
5147                
5147<script>
5148                    function copyReferralUrl() {
5149                        const url = window.location.href;
5150                        navigator.clipboard.writeText(url).then(() => {
5151                            notyf.success('Link copied successfully!');
5152                        }).catch(err => {
5153                            notyf.error('Failed to copy link!');
5154                            console.error('Failed to copy: ', err);
5155                        });
5156                    }
5157                </script>
5157 -->
5158                <a href="/shop-by-fragrance/fragrance/" class="button button--primary modal-button">CONTINUE SHOPPING</a>
5159            </div>
5160        </div>
5161    </div>
5162</div>        <div class="c--modal already-a-consultant-modal" tabindex="-1">
5163    <div class="c--modal-dialog">
5164        <div class="c--modal-content text-center">
5165            <button class="mx-auto mb-0 modal-close" onclick="window.location.href='/'">x</button>
5166            <h4 class="c--modal-heading mb_24px">YOU'RE ALREADY A PART OF THE HERD!</h4>
5167            <p class="c--modal-subheading mb_27px">We noticed that you are already registered as a Consultant, so you are not eligible to purchase another Join Kit.</p>
5168            <p class="c--modal-subheading mb_27px">But let us show you some of the fragrances and decor recently released that you can use to grow your business!</p>
5169            <a href="/" class="button button--primary modal-button mx-auto mb-0">SHOW ME NEW PRODUCT</a>
5170        </div>
5171    </div>
5172</div>        <div class="c--modal good-to-see-you-consultant-modal" tabindex="-1">
5173    <div class="c--modal-dialog">
5174        <div class="c--modal-content text-center">
5175            <button class="mx-auto mb-0 modal-close" onclick="window.location.href='/'">x</button>
5176            <h4 class="c--modal-heading mb_24px">GOOD TO SEE YOU!</h4>
5177            <p class="c--modal-subheading mb_27px">We noticed that you have been registered as a Consultant within the last six months, so you are not elegible to purchase another Join Kit at this time. After resigning, former Consultants must wait six months before signing up to become a Consultant again.</p>
5178            <p class="c--modal-subheading mb_27px">But let us show you some of the fragrances and decor recently released that you can use in your personal space!</p>
5179            <a href="/" class="button button--primary modal-button mx-auto mb-0">SHOW ME NEW PRODUCT</a>
5180        </div>
5181    </div>
5182</div>        <div class="c--modal join-not-available-modal" tabindex="-1">
5183    <div class="c--modal-dialog">
5184        <div class="c--modal-content text-center">
5185            <button class="mx-auto mb-0 modal-close" onclick="window.location.href='/'">x</button>
5186            <h4 class="c--modal-heading mb_24px">Thank you so much for your interest in joining Pink Zebra!</h4>
5187            <p class="c--modal-subheading mb_27px">At this time, we are no longer accepting new consultant enrollments in Canada, as our business operations there will be closing at the end of this month.</p>
5188            <p class="c--modal-subheading mb_27px">We are truly grateful for your enthusiasm and support, and we hope to serve you again in the future in other ways.</p>
5189            <a href="/shop-new-products/" class="button button--primary modal-button mx-auto mb-0">SHOW ME NEW PRODUCT</a>
5190        </div>
5191    </div>
5192</div>        <div class="c--modal join-temporary-offline-modal" tabindex="-1">
5193    <div class="c--modal-dialog">
5194        <div class="c--modal-content text-center">
5195            <button class="mx-auto mb-0 modal-close" onclick="window.location.href='/'">x</button>
5196            <h4 class="c--modal-heading mb_24px">Big Things Ahead!</h4>
5197            <p class="c--modal-subheading mb_27px">Our Join Special page is taking a short break while we prep for a join special. It’ll be back soon and ready for you to grab!</p>
5198            <a href="/shop-new-products/" class="button button--primary modal-button mx-auto mb-0">SHOW ME NEW PRODUCT</a>
5199        </div>
5200    </div>
5201</div>        <div class="c--modal website-fee-not-paid-modal" tabindex="-1">
5202    <div class="c--modal-dialog">
5203        <div class="c--modal-content text-center">
5204            <button class="mx-auto mb-0 modal-close" onclick="window.location.href='/'">x</button>
5205            <h4 class="c--modal-heading mb_24px">ACTION REQUIRED:</h4>
5206            <p class="c--modal-subheading-pink mb_27px">Payment Needed to Restore Your Website Access</p>
5207            <p class="c--modal-subheading mb_27px">We noticed that your website fee for this month was not successfully processed due to a payment issue—either an expired card, insufficient funds, or another billing error. As a result, your website access has been temporarily disabled.</p>
5208            <p class="c--modal-subheading mb_27px">To restore access, please update your payment details and complete your website fee payment by clicking the button below.</p>
5209            <p class="c--modal-subheading mb_27px">Once the payment is received, your website will be reinstated automatically. If you have any questions or need assistance updating your payment method, please reach out to Customer Service.</p>
5210            <a id="pay-website-fee" class="button button--primary modal-button mx-auto mb-0" data-product-sku="Website Monthly Fee">PAY NOW</a>
5211        </div>
5212    </div>
5213</div>
5214
5215<script>
5216    document.getElementById('pay-website-fee')?.addEventListener('click', async function (e) {
5217        e.preventDefault();
5218
5219        const button = e.currentTarget;
5220        button.classList.add('is-loading', 'disabled-button');
5221        
5222        const sku = button.getAttribute('data-product-sku');
5223        if (!sku) {
5224            notyf?.error({ message: 'Product SKU is missing.', duration: 3000 });
5225            button.classList.remove('is-loading', 'disabled-button');
5226            return;
5227        }
5228
5229        try {
5230            const product = await fetchProductDetailsViaSKU(sku);
5231            if (!product) {
5232                notyf?.error({ message: 'Product not found!', duration: 3000 });
5233                button.classList.remove('is-loading', 'disabled-button');
5234                return;
5235            }
5236
5237            const productOptions = [];
5238            if (product.options?.edges?.length) {
5239                product.options.edges.forEach(({ node }) => {
5240                    if (node.isRequired) {
5241                        productOptions.push({
5242                            optionId: node.entityId,
5243                            optionValue: node.values.edges[0].node.entityId,
5244                        });
5245                    }
5246                });
5247            }
5248
5249            const axiosOptions = {
5250                method: 'POST',
5251                url: `/api/storefront/carts${window.CART__ID ? `/${window.CART__ID}/items` : ''}`,
5252                headers: {
5253                    Accept: 'application/json',
5254                    'Content-Type': 'application/json'
5255                },
5256                data: {
5257                    lineItems: [{
5258                        quantity: 1,
5259                        productId: product.entityId,
5260                        ...(productOptions.length > 0 && { optionSelections: productOptions })
5261                    }],
5262                    locale: 'en'
5263                }
5264            };
5265
5266            const response = await axios(axiosOptions);
5267            const data = response.data;
5268
5269            if (data.id) {
5270                window.location.href = window.location.origin + '/checkout';
5271            } else {
5272                button.classList.remove('is-loading', 'disabled-button');
5273                notyf?.error({ message: 'Failed to add product to cart.', duration: 3000 });
5274            }
5275
5276        } catch (error) {
5277            button.classList.remove('is-loading', 'disabled-button');
5278            notyf?.error({ message: 'An error occurred. Please try again.', duration: 3000 });
5279        }
5280    });
5281</script>
5281        <div class="c--modal subscription-not-available-modal" tabindex="-1">
5282    <div class="c--modal-dialog">
5283        <div class="c--modal-content text-center">
5284            <button class="mx-auto mb-0 modal-close" onclick="window.location.href='/'">x</button>
5285            <h4 class="c--modal-heading mb_24px">Thank you so much for your interest in our subscription products!</h4>
5286            <p class="c--modal-subheading mb_27px">At this time, we are no longer accepting new orders for subscription products in Canada, as our business operations there will be closing at the end of this month.</p>
5287            <p class="c--modal-subheading mb_27px">We are truly grateful for your enthusiasm and support, and we hope to serve you again in the future in other ways.</p>
5288            <a href="/shop-new-products/" class="button button--primary modal-button mx-auto mb-0">SHOW ME NEW PRODUCT</a>
5289        </div>
5290    </div>
5291</div>        <div class="c--modal sf-subscription-modal" style="--bs-modal-width: 564px;" tabindex="-1">
5292    <div class="c--modal-dialog">
5293        <div class="c--modal-content text-center">
5294            <img class="mr-auto ml-auto" data-sf-modal="logo" src="https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/original/image-manager/scentflirt-logo.png?t=1725879160" alt="" width="247px" height="75px">
5295            <h4 class="c--modal-heading mt_10px mb_25px" data-sf-modal="heading">JOIN SCENTFLIRT AND GET IMMEDIATE ACCESS TO SCENTFLIRT EXCLUSIVE SHOPPING!</h4>
5296            <p class="c--modal-subheading-pink mb_10px" data-sf-modal="subheading" style="font-weight:700;"></p>
5297            <p class="c--modal-subheading mb_27px" data-sf-modal="subheading2"></p>
5298            <p class="c--modal-description mb_30px" data-sf-modal="pricing"></p>
5299            
5300            <button class="button button--primary modal-button ml-auto mr-auto mb_25px add-subscription-to-cart" data-sf-modal="cta-button" data-product-id="4068" data-product-sku="9990002" data-type="modal-true" data-modal-name="sf-subscription-modal">ADD SCENTFLIRT TO MY CART</button>
5301            <div class="d-flex flex-wrap">
5302                <a href="/scentflirt" class="c--modal-link " data-sf-modal="learn-more-link">LEARN MORE</a>
5303                <button class="ml-auto mb-0 c--modal-link close-sf-subscription-modal">CONTINUE SHOPPING</button>
5304            </div>
5305                <hr class="mt_25px mb_20px sf-login-divider">
5306                <div class="sf-login-section" style="display:none;">
5307                    <p class="c--modal-subheading mb_20px" data-sf-modal="login-subheading">Sign in now to shop ScentFlirt exclusive products.</p>
5308                    <form id="sf-exclusive-login-form"  method="post">
5309                        <div class="row">
5310                            <div class="col-12 text-left">
5311                                <div class="alertBox alertBox--error sf--login--error mt_10px" style="display: none;">
5312                                    <div class="alertBox-column alertBox-icon my-auto">
5313                                        <icon glyph="ic-error" class="icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"></path></svg></icon>
5314                                    </div>
5315                                    <p class="alertBox-column alertBox-message">
5316                                        <span id="alertBox-message-text">Your email address or password is incorrect. Please try again. If you've forgotten your sign in details, just click the 'Forgot your password?' link below.</span>
5317                                    </p>
5318                                </div>
5319                            </div>
5320                            <div class="col-12 text-left">
5321                                <div class="alertBox alertBox--error login--error" style="display: none;">
5322                                    <div class="alertBox-column alertBox-icon my-auto">
5323                                        <icon glyph="ic-error" class="icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
5323<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"></path></svg></icon>
5324                                    </div>
5325                                    <p class="alertBox-column alertBox-message">
5326                                        <span id="alertBox-message-text">Your email address or password is incorrect. Please try again. If you've forgotten your sign in details, just click the 'Forgot your password?' link below.</span>
5327                                    </p>
5328                                </div>
5329                            </div>
5330                            <div class="col-sm-6 col-12">
5331                                <div class="form-field text-left mb-3">
5332                                    <label for="login_email" id="email-label" class="form-label">EMAIL ADDRESS</label>
5333                                    <input autocomplete="email" type="email" class="form-input" name="login_email" value="" required>
5334                                </div>
5335                            </div>
5336                            <div class="col-sm-6 col-12">
5337                                <div class="form-field text-left mb-3">
5338                                    <label for="login_pass" id="password-label" class="form-label">PASSWORD</label>
5339                                    <input autocomplete="password" type="password" class="form-input" name="login_pass" value="" required>
5340                                </div>
5341                            </div>
5342                            <div class="col-12">
5343                                <div class="d-flex flex-wrap mt_10px mb_15px">
5344                                    <button type="submit" class="button button--primary form_submit me-4 mb-0 popup-signin-button" id="popup-signin-button">SIGN IN</button>
5345                                    <a href="https://pinkzebrahome.com/login.php?action&#x3D;reset_password" class="my-auto fo-pass">Forgot your password?</a>
5346                                </div>
5347                            </div>
5348                        </div>
5349                    </form>
5350                </div>
5351                <button class="sf-login-toggle" onclick="$jQ('.sf-login-section').slideToggle(200); $jQ(this).toggleClass('is-open');">
5352                    <span data-sf-modal="login-heading">Already a ScentFlirt member?</span>
5353                    <svg class="sf-login-chevron" width="12" height="12" viewBox="0 0 12 12"><path d="M2 8l4-4 4 4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>
5354                </button>
5355            <button class="mx-auto mb-0 modal-close" onclick="hideSfModal();">x</button>
5356        </div>
5357    </div>
5358</div>        <div class="c--modal sf-subscription-complete-modal" style="--bs-modal-width: 564px;" tabindex="-1">
5359    <div class="c--modal-dialog">
5360        <div class="c--modal-content text-center">
5361            <img src="https://cdn11.bigcommerce.com/s-9khen3dncu/images/stencil/original/image-manager/scentflirt-logo.png?t=1725879160" alt="" width="180px" height="auto" class="mr-auto ml-auto mb_10px">
5362            <h4 class="c--modal-heading mt_10px mb_10px sf-confirm-title">You're in!</h4>
5363            <p class="c--modal-subheading-pink mb_10px sf-confirm-subtitle" style="font-size:20px;">Welcome to ScentFlirt Preferred</p>
5364            <p class="c--modal-subheading mb_27px sf-confirm-body">Get ready to discover our most exclusive fragrances, curated just for you.</p>
5365            <a class="button button--primary modal-button ml-auto mr-auto sf-confirm-cta sf-confirm-delayed" href="javascript:void(0);">OK</a>
5366            <div class="d-flex justify-content-center mt_10px">
5367                <button class="c--modal-link sf-confirm-secondary" style="display:none; background:none; border:none; cursor:pointer;">CONTINUE SHOPPING</button>
5368            </div>
5369        </div>
5370    </div>
5371</div>        <div class="c--modal no-instruments-assigned-modal" tabindex="-1">
5372    <div class="c--modal-dialog">
5373        <div class="c--modal-content text-center">
5374            <button class="mx-auto mb-0 modal-close" onclick="closeModalAndSetTimer()">x</button>
5375            <h4 class="c--modal-heading mb_24px">
5376                KEEP YOUR SUBSCRIPTIONS GOING!
5377            </h4>
5378            <p class="c--modal-subheading mb_27px">
5379                You have active subscriptions but no payment method on file. Add one now to keep your subscriptions without interruption.
5380            </p>
5381            <p class="c--modal-subheading mb_27px">
5382                Subscriptions without a payment method:
5383            </p>
5384            <div data-subscription-without-instruments></div>
5385            <a href="/account.php?action=payment_methods" data-add-payment-method class="button button--primary modal-button mx-auto mb-0">ADD A PAYMENT METHOD</a>
5386        </div>
5387    </div>
5388</div>
5389
5390<script>
5391    function closeModalAndSetTimer(){
5392        try {
5393            // Set 24-hour cooldown (in ms since epoch) so modal won't show again in that period
5394            const STORAGE_KEY = 'noInstrumentsLastShownAt';
5395            const SESSION_KEY = 'noInstrumentsSessionNextAllowedAt';
5396            const TWENTY_FOUR_HOURS_MS = 24 * 60 * 60 * 1000;
5397            const nextAt = String(Date.now() + TWENTY_FOUR_HOURS_MS);
5398            localStorage.setItem(STORAGE_KEY, nextAt);
5399            sessionStorage.setItem(SESSION_KEY, nextAt);
5400        } catch (e) {}
5401        hideModalPopUp('no-instruments-assigned-modal');
5402    }
5403</script>
5403        <div class="c--modal sitevibes-referral-modal" tabindex="-1" style="display: none;">
5404    <div class="c--modal-dialog">
5405        <div class="c--modal-content">
5406            <form id="sb-referral-form" method="post" class="pr_40px pl_40px">
5407                <h4 class="c--modal-heading text-center">
5408                    Refer A Friend
5409                </h4>
5410                <div class="mt_27px">
5411                    <div class="form-field text-center">
5412                        <h4 class="c--modal-heading" style="text-transform: none;letter-spacing: 0;">
5413                            Share ScentFlirt with a friend and earn rewards!
5414                        </h4>
5415                        <p class="c--modal-subheading">Enter your friend's email address below to get started.</p>
5416                        <div class="alertBox alertBox--error mt_27px" data-email-already-joined style="display: none;">
5417                            <div class="alertBox-column alertBox-icon my-auto">
5418                                <icon glyph="ic-error" class="icon" aria-hidden="true">
5419                                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
5420                                        <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"></path>
5421                                    </svg>
5422                                </icon>
5423                            </div>
5424                            <p class="alertBox-column alertBox-message">
5425                                <span id="referred-email-error-message"></span>
5426                            </p>
5427                        </div>
5428                        <input autocomplete="email" id="referral_email" type="email" class="form-input" name="referral_email" value="" required placeholder="Enter your friend's email address" data-disable-until-sv-ready />
5429                    </div>
5430                </div>
5431                <div class="mt_27px">
5432                    <div class="card-action text-center my-auto mb-0">
5433                        <button type="submit" class="button button--primary mb-0" data-disable-until-sv-ready>
5434                            Send Referral
5435                        </button>
5436                    </div>
5437                </div>
5438                <div class="text-center mt_15px" style="display: none;">
5439                    <p>
5440                        <a href="#" data-copy-sb-referral-link data-disable-until-sv-ready>
5441                            Copy Referral Link
5442                        </a>
5443                    </p>
5444                </div>
5445            </form>
5446            <div class="text-center" style="display: none;" data-sv-referral-success>
5447                <div class="mt_27px">
5448                    <h4 class="c--modal-heading">
5449                        Thank you for your referral to ScentFlirt.
5450                    </h4>
5451                    <p class="c--modal-subheading">
5452                        Once your friend signs up for ScentFlirt, you will receive your reward!
5453                    </p>
5454                </div>
5455                <button class="button button--primary mb-0 mt-3" data-send-another-referral>
5456                    Send Another Referral
5457                </button>
5458                <p class="mt-4">
5459                    Check the status of your referrals in My Account, under Referrals or <a href="/rewards">click here</a>.
5460                </p>
5461            </div>
5462            <button class="mx-auto mb-0 modal-close" onclick="hideModalPopUp('sitevibes-referral-modal');">x</button>
5463        </div>
5464    </div>
5465</div>
5466<script>
5467    let sv_consultantId = null;
5468    let sv_referral_link = null;
5469
5470    document.querySelectorAll('[data-disable-until-sv-ready]').forEach(function (el) {
5471        el.setAttribute('disabled', true);
5472    });
5473
5474    async function getSitevibesLink(email) {
5475        sv_consultantId = await consultantHandler.getConsultantRepId(email);
5476        let response = await make_PZ_API_Request('PZ_BASE_URL', 'sitevibes/loyalty_customer?app_id=openapi-test&email=' + email, 'GET');
5477        if (response.status) {
5478            sv_referral_link = response.data.customer.loyalty_referral_url + "&repid=" + sv_consultantId;
5479        }
5480        document.querySelectorAll('[data-disable-until-sv-ready]').forEach(function (el) {
5481            el.removeAttribute('disabled');
5482        });
5483    }
5484
5485    document.addEventListener("DOMContentLoaded", function () {
5486        if (window.Customer_Email) {
5487            getSitevibesLink(window.Customer_Email);
5488        }
5489        const form = document.getElementById("sb-referral-form");
5490        form.addEventListener("submit", async function (e) {
5491            e.preventDefault();
5492            if (document.querySelector('[data-email-already-joined]')) {
5493                document.querySelector('[data-email-already-joined]').style.display = "none";
5494            }
5495
5496            const button = form.querySelector("button[type='submit']");
5497            button.classList.add('is-loading');
5498            button.setAttribute('disabled', true);
5499
5500            const referringEmail = "";
5501            const consultantId = await consultantHandler.getConsultantRepId(referringEmail);
5502            const referredEmail = document.getElementById("referral_email").value;
5503            const landingPageUrl = window.location.origin + "/6-months-scentflirt/?repid=" + consultantId;
5504
5505            if (!referredEmail) {
5506                button.classList.remove('is-loading');
5507                button.removeAttribute('disabled');
5508                notyf.error("Please enter a valid email address.");
5509                return;
5510            }
5511
5512            const response = await make_PZ_API_Request('PZ_BASE_URL', window.PZ_API_EP.sitevibe.customerReferral, 'POST', {
5513                app_id: "openapi-test",
5514                referring_email: referringEmail,
5515                referred_email: referredEmail,
5516                landing_page_url: landingPageUrl,
5517            });
5518
5519            button.classList.remove('is-loading');
5520            button.removeAttribute('disabled');
5521
5522            if (response.status) {
5523                document.getElementById("referral_email").value = "";
5524                // notyf.success(response.message);
5525                document.querySelector('[data-sv-referral-success]').style.display = "block";
5526                form.style.display = "none";
5527            } else {
5528                // notyf.error(response?.message || "An error occurred. Please try again.");
5529                document.getElementById("referral_email").value = "";
5530                if (response.message && document.querySelector('[data-email-already-joined]')) {
5531                    if (response.message.toLowerCase().includes("referral for this email already exists.")) {
5532                        document.getElementById("referred-email-error-message").innerText = "This email already joined the ScentFlirt fun through a referral. Try another email to keep spreading the scent love!";
5533                    } else if (response.message.toLowerCase().includes("contact has existing scentflirt order")) {
5534                        document.getElementById("referred-email-error-message").innerText = "This email already joined the ScentFlirt fun. Try another email to keep spreading the scent love!";
5535                    } else {
5536                        document.getElementById("referred-email-error-message").innerText = response.message;
5537                    }
5538                    document.querySelector('[data-email-already-joined]').style.display = "block";
5539                } else {
5540                    if (document.querySelector('[data-email-already-joined]')) {
5541                        document.querySelector('[data-email-already-joined]').style.display = "none";
5542                    }
5543                    notyf.error(response?.message || "An error occurred. Please try again.");
5544                }
5545            }
5546
5547        });
5548
5549        document.querySelector('[data-send-another-referral]').addEventListener('click', function (e) {
5550            e.preventDefault();
5551            document.querySelector('[data-sv-referral-success]').style.display = "none";
5552            form.style.display = "block";
5553        });
5554
5555        document.querySelector('[data-copy-sb-referral-link]').addEventListener('click', async function (e) {
5556            e.preventDefault();
5557            e.target.classList.add('is-loading');
5558            e.target.setAttribute('disabled', true);
5559            await navigator.clipboard.writeText(sv_referral_link);
5560            e.target.classList.remove('is-loading');
5561            e.target.removeAttribute('disabled');
5562            notyf.success("Referral link copied to clipboard");
5563        });
5564    });
5565</script>
5565        <div class="c--modal account-created-modal" style="--bs-modal-width: 564px;" tabindex="-1">
5566    <div class="c--modal-dialog">
5567        <div class="c--modal-content text-center">
5568            <button class="mx-auto mb-0 modal-close" modal-close-btn="true" data-close="account-created-modal" type="button" aria-label="Close">x</button>
5569            <h4 class="c--modal-heading mb_24px account-created-modal__heading">Your account has been created</h4>
5570            <p class="c--modal-subheading mb_27px account-created-modal__message"></p>
5571            <button type="button" class="button button--primary modal-button mx-auto mb-0" modal-close-btn="true" data-close="account-created-modal">CONTINUE SHOPPING</button>
5572        </div>
5573    </div>
5574</div>
5575
5576<script>
5577    // Layer 1 (non-bundled): no modules, uses $jQ / showModalPopUp from base-setup.js.
5578    (function () {
5579        var STORAGE_KEY = 'pz_account_created';
5580        // The destination page can redirect again on its own (segment routing rewrites the URL
5581        // from a Script Manager tag, consultant/login handlers can navigate). So the payload is
5582        // NOT consumed on render — it survives those hops and is only cleared when the customer
5583        // actually dismisses the modal, or when it goes stale.
5584        var MAX_AGE_MS = 5 * 60 * 1000;
5585
5586        function clearPayload() {
5587            try {
5588                sessionStorage.removeItem(STORAGE_KEY);
5589            } catch (e) { /* nothing to clear */ }
5590        }
5591
5592        function readPayload() {
5593            var raw;
5594            try {
5595                raw = sessionStorage.getItem(STORAGE_KEY);
5596            } catch (e) {
5597                console.warn('account-created-modal but sessionStorage unavailable', e);
5598                return null;
5599            }
5600            if (!raw) return null;
5601
5602            var payload;
5603            try {
5604                payload = JSON.parse(raw);
5605            } catch (e) {
5606                clearPayload();
5607                return null;
5608            }
5609
5610            if (payload.ts && (Date.now() - payload.ts) > MAX_AGE_MS) {
5611                clearPayload();
5612                return null;
5613            }
5614            return payload;
5615        }
5616
5617        function show(payload) {
5618            var $modal = $jQ('.account-created-modal');
5619            if (!$modal.length) {
5620                return false;
5621            }
5622
5623            if (payload.heading) $modal.find('.account-created-modal__heading').text(payload.heading);
5624            // `message` is rendered by Handlebars from the `create_account.created.intro` lang
5625            // string, which is intentionally HTML (it bolds the store name / email).
5626            if (payload.message) $modal.find('.account-created-modal__message').html(payload.message);
5627
5628            $modal.find('[modal-close-btn="true"]').on('click', clearPayload);
5629
5630            showModalPopUp('account-created-modal');
5631            return true;
5632        }
5633
5634        function init() {
5635            // The partial ships in every layout, so it also renders on the account-created page
5636            // that writes the payload. Don't fire there — that page is mid-redirect and the
5637            // customer would see the modal twice.
5638            if (document.querySelector('[data-account-created]')) {
5639                return;
5640            }
5641
5642            var payload = readPayload();
5643            if (!payload) return;
5644
5645            if (show(payload)) return;
5646
5647            // Markup wasn't ready — retry once the element appears (base-setup.js helper).
5648            if (typeof window.customReady === 'function') {
5649                window.customReady('.account-created-modal', function () { show(payload); });
5650            }
5651        }
5652
5653        if (document.readyState === 'loading') {
5654            document.addEventListener('DOMContentLoaded', init);
5655        } else {
5656            init();
5657        }
5658    })();
5659</script>
5659
5660            <div class="c--modal get-free-sample--modal" tabindex="-1" style="--bs-modal-width: 575px;">
5661    <div class="c--modal-dialog">
5662        <div class="c--modal-content">
5663            <!-- Step 1: Form -->
5664            <div id="sample-form-step" style="display: block;">
5665                <h4 class="c--modal-heading">WANT TO TRY<br>BEFORE YOU BUY?</h4>
5666                <p class="c--modal-subheading-pink">Snag a FREE sample—just fill out the quick form below.</p>
5667                <p class="c--modal-subheading">Plus, get early access to scentsational deals, insider tips and first
5668                    peeks at what's coming next!</p>
5669                <form id="sample-program-signup-form" class="sample--program-forms" method="post" novalidate>
5670	<div class="form-container">
5671		<div class="form-error" style="display: none;">
5672			<div class="alertBox alertBox--error signup--error">
5673				<div class="alertBox-column alertBox-icon">
5674					<icon glyph="ic-error" class="icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg"
5675							width="24" height="24" viewBox="0 0 24 24">
5676							<path
5677								d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z">
5678							</path>
5679						</svg></icon>
5680				</div>
5681				<p class="alertBox-column alertBox-message">
5682					<span id="signup-alertBox-message-text"></span>
5683				</p>
5684			</div>
5685		</div>
5686
5687		<div class="form-row">
5688			<div class="form-field-half">
5689				<input id="get_sample_first_name" type="text" class="form-input" name="get_sample_first_name"
5690					placeholder="FIRST NAME" required>
5691				<div class="invalid-feedback" data-error="0.first_name"></div>
5692			</div>
5693			<div class="form-field-half">
5694				<input id="get_sample_last_name" type="text" class="form-input" name="get_sample_last_name"
5695					placeholder="LAST NAME" required>
5696				<div class="invalid-feedback" data-error="0.last_name"></div>
5697			</div>
5698		</div>
5699
5700		<div class="form-row">
5701			<div class="form-field-full">
5702				<input id="get_sample_email" type="email" class="form-input" name="get_sample_email"
5703					placeholder="EMAIL" required>
5704				<div class="invalid-feedback" data-error="0.email"></div>
5705			</div>
5706		</div>
5707
5708		<div class="form-row">
5709			<div class="form-field-full">
5710				<input id="get_sample_address1" type="text" class="form-input" name="get_sample_address1"
5711					placeholder="ADDRESS 1" value="" required>
5712				<div class="invalid-feedback" data-error="0.address1"></div>
5713			</div>
5714		</div>
5715
5716		<div class="form-row">
5717			<div class="form-field-full">
5718				<input id="get_sample_address2" type="text" class="form-input" name="get_sample_address2"
5719					placeholder="ADDRESS 2" value="">
5720				<div class="invalid-feedback" data-error="0.address2"></div>
5721			</div>
5722		</div>
5723
5724		<div class="form-row city-state-zip-row">
5725			<div class="form-field-city">
5726				<input id="get_sample_city" type="text" class="form-input" name="get_sample_city" placeholder="CITY"
5727					value="" required>
5728				<div class="invalid-feedback" data-error="0.city"></div>
5729			</div>
5730			<div class="city_state">
5731				<div class="form-field-state">
5732					<!-- <input  type="text" class="form-input" 
5733						placeholder="STATE" value="" required> -->
5734						<select id="get_sample_state" name="get_sample_state" class="form-select"><option value="">Select a state</option></select>
5735					<div class="invalid-feedback" data-error="0.state"></div>
5736				</div>
5737				<div class="form-field-zip">
5738					<input id="get_sample_zip" type="text" class="form-input" name="get_sample_zip" placeholder="ZIP"
5739						value="" required>
5740					<div class="invalid-feedback" data-error="0.zip"></div>
5741				</div>
5742			</div>
5743		</div>
5744
5745		<div class="form-row">
5746			<div class="form-field-full">
5747				<input id="get_sample_phone" type="text" class="form-input" name="get_sample_phone" placeholder="PHONE"
5748					value="+1" required>
5749				<div class="invalid-feedback" data-error="0.phone"></div>
5750			</div>
5751		</div>
5752
5753			<!-- Password field for non-logged-in users -->
5754			<div class="form-row">
5755				<div id="password-field-row" class="form-field-full">
5756					<div class="password-wrapper">
5757						<a class="button-toggle-password sso-hideable" alt="Show or hide your password" href="#"></a>
5758						<input id="get_sample_password" type="password" class="form-input" name="get_sample_password"
5759							placeholder="PASSWORD" value="" minlength="10" maxlength="20" autocomplete="new-password" required
5760							title="Password must be 10–20 characters and include at least one uppercase letter, one number, and one special character.">
5761					</div>
5762					<div class="invalid-feedback" style="color: rgb(255, 0, 0);" data-error="0.password"></div>
5763					<div id="password-requirements" class="password-requirements" aria-l
5763ive="polite" style="margin-top:6px;">
5764						<ul style="list-style:none; padding-left:0; margin:8px 0 0 0; font-size: 13px; line-height: 1.4; color:#444;">
5765							<li><span id="pw-req-length-check" style="display:inline-block; width:16px; color:#9e9e9e;">✗</span> 10–20 characters</li>
5766							<li><span id="pw-req-upper-check" style="display:inline-block; width:16px; color:#9e9e9e;">✗</span> At least one uppercase letter</li>
5767							<li><span id="pw-req-number-check" style="display:inline-block; width:16px; color:#9e9e9e;">✗</span> At least one number</li>
5768							<li><span id="pw-req-special-check" style="display:inline-block; width:16px; color:#9e9e9e;">✗</span> At least one special character</li>
5769						</ul>
5770					</div>
5771				</div>
5772			</div>
5773		
5774		<legal-opt-in 
5775			link="/privacy-policy"
5776			consent-type="marketing_email,marketing_sms"
5777			email=""
5778			phone=""
5779			program-name="sample_program_enrollment"
5780			mode='listener'
5781			email-input-id='get_sample_email'
5782			phone-input-id='get_sample_phone'
5783			listener-button-id='get-sample-button'
5784		>
5785		</legal-opt-in>
5786		<div class="form-submit">
5787			<button type="submit" class="button button--primary--filled mb-0 sample-submit--button"
5788				id="get-sample-button">GET MY FREE SAMPLE</button>
5789		</div>
5790	</div>
5791</form>
5792
5793
5794            </div>
5795
5796            <!-- Step 2: OTP Verification -->
5797            <div id="otp-verification-step" style="display: none;">
5798                <h4 class="c--modal-heading">VERIFY YOUR PHONE</h4>
5799                <p class="c--modal-subheading-pink">We've sent a verification code to <span
5800                        id="otp-phone-display"></span></p>
5801                <p class="c--modal-subheading">Enter the 6-digit code below to complete your free sample request.</p>
5802                <div class="form-container">
5803	<div class="form-error" id="otp-error" style="display: none;">
5804		<div class="alertBox alertBox--error">
5805			<div class="alertBox-column alertBox-icon">
5806				<icon glyph="ic-error" class="icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg"
5807						width="24" height="24" viewBox="0 0 24 24">
5808						<path
5809							d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z">
5810						</path>
5811					</svg></icon>
5812			</div>
5813			<p class="alertBox-column alertBox-message">
5814				<span id="otp-error-message"></span>
5815			</p>
5816		</div>
5817	</div>
5818
5819	<div class="form-row">
5820		<div class="form-field-full">
5821			<input id="otp-code" type="text" class="form-input" name="otp_code" placeholder="ENTER 6-DIGIT CODE"
5822				maxlength="6" pattern="[0-9]{6}" required>
5823			<div class="invalid-feedback" data-error="otp"></div>
5824		</div>
5825	</div>
5826
5827	<div class="form-submit">
5828		<button type="button" class="button button--primary--filled mb-0" id="verify-otp-button">VERIFY CODE</button>
5829	</div>
5830
5831	<div class="otp-actions" style="text-align: center; margin-top: 20px;">
5832		<p>Didn't receive the code?</p>
5833		<button type="button" class="button mb-0" id="resend-otp-button" style="margin-right: 10px;">RESEND
5834			CODE</button>
5835		<button type="button" class="button mb-0" id="change-phone-button">CHANGE PHONE</button>
5836	</div>
5837</div>            </div>
5838
5839            <div id="loading-step" style="display: none;">
5840                <div class="sample-program-loading-step">
5841                    <div class="spinner"></div>
5842                    <h4 class="loading-text">VERIFYING...</h4>
5843                    <p class="loading-subtext">Please wait while we confirm your code and set up your account.</p>
5844                </div>
5845            </div>
5846
5847            <div id="after-login-step" style="display: none;">
5848                <div class="sample-program-after-login-step">
5849                    <div class="success-text">
5850                        <div style="
5851                        color: #ff1378;
5852                        font-size: 64px;margin-bottom: 12px; 
5853                        transform: scale(1.5) translateY(0px); 
5854                        display: flex; justify-content: center; 
5855                        align-items: center;"
5856                        >✓</div>
5857                        <h4 class="c--modal-heading">LOGIN SUCCESS!</h4>
5858                    </div>
5859                </div>
5860            </div>
5861
5862            <!-- "You Are Already IN!" Modal -->
5863            <div id="already-enrolled-step" style="display: none;">
5864                <div style="text-align: center;">
5865                    <h5 class="c--modal-pink-heading">Looks like you’re already part of our Pink Zebra family!</h5>
5866                    <p class="c--modal-subheading">This free sample offer is for new customers only — but we’d love for
5867                        you to check out our newest fragrances and exclusive deals!</p>
5868                    <div class="form-submit" style="margin-top: 30px;">
5869                        <a type="button" class="button button--primary--filled mb-0" onclick="handleClickShopNow()">Shop
5870                            Now</a>
5871                    </div>
5872                </div>
5873            </div>
5874
5875            <button class="modal-close" onclick="closeGetFreeSampleModal()">×</button>
5876        </div>
5877    </div>
5878</div>
5879<script>
5880	let currentStep = 'form';
5881	let formData = {};
5882	let otpResendCount = 0;
5883	let otpMaxAttempts = 3; // from settings
5884	let otpRequestDelaySec = 30; // from settings
5885	let popupDelaySec = 5; // from settings
5886	let popupShowOnce = true; // from settings
5887	let programEnabled = true; // from settings
5888	let enabledCountries = ['US']; // from settings
5889	let programStatus = 'active';
5890	let notEligibleMessage = '';
5891	let noSampleModalRoutes = [];
5892	let testMode = false;
5893	let keywordForTestMode = '';
5894	let showSampleProgramPage = false;
5895	let orderId = null;
5896	let defaultConsultantId = null;
5897	let restrictedModalParams = {};
5898
5899	const PASSWORD_REQUIREMENTS_TEXT = 'Password must be 10–20 characters and include at least one uppercase letter, one number, and one special character.';
5900
5901	// Session flag: ensure modal shows only once per browser session
5902	const SESSION_MODAL_SHOWN_KEY = 'getFreeSampleModalShownInSession';
5903	// 24-hour cooldown: prevent re-showing within 24 hours across sessions (useful on persistent mobile sessions)
5904	const PERSIST_MODAL_LAST_SHOWN_KEY = 'getFreeSampleModalLastShownAt';
5905	const PERSIST_MODAL_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
5906	// const PERSIST_MODAL_TTL_MS = 1 * 60 * 1000; // 1 minute for testing
5907
5908	// Internal flag to ensure we only mark session/24h cooldown if the modal was actually opened
5909	window.__getFreeSampleModalWasOpened = window.__getFreeSampleModalWasOpened || false;
5910
5911	// Validation helpers
5912	function isValidUSPhone(phone) {
5913		const v = String(phone || '').trim();
5914		return /^\+1\d{10}$/.test(v);
5915	}
5916
5917	function isValidEmail(email) {
5918		return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(email || '').trim());
5919	}
5920
5921	function isValidName(name) {
5922		// Allow anything except digits 0-9
5923		return /^[^\d]+$/.test(String(name || '').trim());
5924	}
5925
5926	// Password must be at least 8 chars, include letters (with at least one uppercase), a number, and a special character
5927	function isValidPassword(pwd) {
5928		const v = String(pwd || '');
5929		// 10–20 chars, at least 1 uppercase, 1 number, 1 special
5930		return /^(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{10,20}$/.test(v);
5931	}
5932
5933	function getPasswordChecks(pwd) {
5934		const v = String(pwd || '');
5935		return {
5936			length: v.length >= 10 && v.length <= 20,
5937			upper: /[A-Z]/.test(v),
5938			number: /\d/.test(v),
5939			special: /[^A-Za-z0-9]/.test(v),
5940		};
5941	}
5942
5943	function updatePasswordChecklistUI(pwd) {
5944		const checks = getPasswordChecks(pwd);
5945		const set = (id, ok) => {
5946			const el = document.getElementById(id);
5947			if (!el) return;
5948			el.textContent = ok ? '✓' : '✗';
5949			el.style.color = ok ? '#28a745' : '#9e9e9e';
5950		};
5951		set('pw-req-length-check', checks.length);
5952		set('pw-req-upper-check', checks.upper);
5953		set('pw-req-number-check', checks.number);
5954		set('pw-req-special-check', checks.special);
5955	}
5956
5957	// Helper to safely get .value from settings
5958	async function getSettingValue(path, fallback, opts = {}) {
5959		try {
5960			const obj = await window.get_PZ_Setting(path, opts);
5961			// alert(`Path: ${path} Type ${typeof obj} => ${obj}`)
5962			if (obj && typeof obj === 'object' && 'value' in obj) return obj.value;
5963			return obj ?? fallback;
5964		} catch (e) {
5965			return fallback;
5966		}
5967	}
5968
5969	async function loadSampleProgramSettings() {
5970		try { await window.get_PZ_Schema_Config('sample_program'); } catch { }
5971		programEnabled = await getSettingValue('sample_program.customer_sample_program.is_enabled.value', true, { forceRefresh: true });
5972		popupDelaySec = parseInt(await getSettingValue('sample_program.customer_sample_program.popup_delay_seconds.value', 5)) || 5;
5973		popupShowOnce = !!(await getSettingValue('sample_program.customer_sample_program.popup_show_once.value', true));
5974		enabledCountries = (await getSettingValue('sample_program.customer_sample_program.enabled_countries.value', ['US'])) || ['US'];
5975		otpMaxAttempts = parseInt(await getSettingValue('sample_program.customer_sample_program.otp.max_attempts.value', 3)) || 3;
5976		otpRequestDelaySec = parseInt(await getSettingValue('sample_program.customer_sample_program.otp.request_delay.value', 30)) || 30;
5977		programStatus = await getSettingValue('sample_program.customer_sample_program.program_status.value', 'active');
5978		notEligibleMessage = await getSettingValue('sample_program.customer_sample_program.new_customer_message.value', '') || '';
5979		noSampleModalRoutes = await getSettingValue('sample_program.customer_sample_program.restricted_modal_routes.value', []) || [];
5980
5981		restrictedModalParams = await getSettingValue('sample_program.customer_sample_program.restricted_modal_params.value', {}) || {};
5982
5983		// TEST MODE IS DEPRECATED DUE THE SAMPLE PROGRAM IS OUT TESTING GROUND, BUT KEEPING THE SETTING IN CASE WE WANT TO REUSE IT FOR FUTURE TESTING PURPOSES
5984		// testMode = await getSettingValue('sample_program.customer_sample_program.test_mode.enabled.value', false, { forceRefresh: true }) || false;
5985		// keywordForTestMode = await getSettingValue('sample_program.customer_sample_program.test_mode.keyword_param_url.value', '') || '';
5986		// consultantPermissionList = await getSettingValue('sample_program.customer_sample_program.customer_permission_email_list', '') || '';
5987
5988		defaultConsultantId = await getSettingValue('sample_program.customer_sample_program.default_values.default_consultant_id.value', '') || '';
5989	}
5990
5991	function getDefaultCountryContext() {
5992		const countryCode = (window.StoreFront?.countryCode || window.themeSettings?.storeCountryCode || 'US');
5993		const countryName = countryCode === 'CA' ? 'Canada' : 'United States';
5994		return { code: countryCode, name: countryName };
5995	}
5996
5997	// Safe storage utility to prevent crashes in private browsing / blocked cookie environments
5998	const storage = {
5999		get(key, type = 'session') {
6000			try {
6001				const store = type === 'local' ? localStorage : sessionStorage;
6002				return store.getItem(key);
6003			} catch (e) {
6004				return null;
6005			}
6006		},
6007		set(key, value, type = 'session') {
6008			try {
6009				const store = type === 'local' ? localStorage : sessionStorage;
6010				store.setItem(key, value);
6011				return true;
6012			} catch (e) {
6013				return false;
6014			}
6015		},
6016		remove(key, type = 'session') {
6017			try {
6018				const store = type === 'local' ? localStorage : sessionStorage;
6019				store.removeItem(key);
6020				return true;
6021			} catch (e) {
6022				return false;
6023			}
6024		}
6025	};
6026
6027	let eligibilityCheckPromise = null;
6028
6029	async function shouldShowModalNow() {
6030		return false
6031		if (eligibilityCheckPromise) {
6032			return eligibilityCheckPromise;
6033		}
6034
6035		eligibilityCheckPromise = (async () => {
6036			try {
6037				const result = await evaluateEligibility();
6038				showSampleProgramPage = result.showPage;
6039				return result.showModal;
6040			} catch (error) {
6041				console.error('[Eligibility Check] Unexpected failure:', error);
6042				showSampleProgramPage = false;
6043				return false;
6044			}
6045		})();
6046
6047		return eligibilityCheckPromise;
6048	}
6049
6050	async function evaluateEligibility() {
6051		const urlParams = new URLSearchParams(window.location.search);
6052
6053		if (restrictedModalParams && Object.keys(restrictedModalParams).some(key =>
6054			urlParams.has(key) && String(urlParams.get(key)) === String(restrictedModalParams[key])
6055		)) {
6056			return { showModal: false, showPage: true };
6057		}
6058
6059		const eligibilityKey = 'sp_eligibility_checked';
6060		const lastRepIdKey = 'sp_last_rep_id_checked';
6061		const lastTimeCheckedRepIDKey = 'sp_last_time_checked_rep_id';
6062		const lastCustomerCheckKey = 'sp_last_customer_check';
6063		const lastTimeCheckedCustomerKey = 'sp_last_time_checked_customer';
6064		const repEligibilityKey = 'sp_rep_eligible';
6065		const customerEligibilityKey = 'sp_customer_eligible';
6066
6067		const params = new URLSearchParams(window.location.search);
6068		const currentRepId = params.get("repid") || params.get("rep_id") || storage.get('repid', 'local');
6069		const lastRepId = storage.get(lastRepIdKey);
6070		const lastCustomerCheck = storage.get(lastCustomerCheckKey);
6071		const currentCustomerEmail = window.Customer_Email || false;
6072		const now = Date.now();
6073		const COOLDOWN_12H_MS = 12 * 60 * 60 * 1000;
6074
6075		const lastTimeCheckedRepID = parseInt(storage.get(lastTimeCheckedRepIDKey), 10) || 0;
6076		const lastTimeCheckedCustomer = parseInt(storage.get(lastTimeCheckedCustomerKey), 10) || 0;
6077
6078		// Rep ID needs checking if the ID changed OR if it's been more than 12 hours since the last check
6079		const repIdCheckNeed = currentRepId !== lastRepId || (now - lastTimeCheckedRepID) > COOLDOWN_12H_MS;
6080
6081		let customerEmailCheckNeed = false;
6082		if (!window.Customer_Email) {
6083			customerEmailCheckNeed = true;
6084		} else {
6085			// Logged-in customer needs checking if email changed OR if it's been more than 12 hours since the last check
6086			const emailChanged = String(currentCustomerEmail).toLowerCase() !== String(lastCustomerCheck).toLowerCase();
6087			const timeElapsed = (now - lastTimeCheckedCustomer) > COOLDOWN_12H_MS;
6088			customerEmailCheckNeed = emailChanged || timeElapsed;
6089		}
6090
6091		const eligibility = storage.get(eligibilityKey);
6092		let repEligibility = storage.get(repEligibilityKey) || 'eligible';
6093		let customerEligibility = window.Customer_Email ? (storage.get(customerEligibilityKey) || 'eligible') : 'eligible';
6094
6095		if (!repIdCheckNeed && !customerEmailCheckNeed && eligibility === 'not_eligible') {
6096			return { showModal: false, showPage: false };
6097		}
6098
6099		if (!!window.Cart__ID === true) {
6100			return { showModal: false, showPage: false };
6101		} else if (window.Cart__ID === null || window.Cart__ID === undefined || window.Cart__ID === '') {
6102			try {
6103				const axiosOptions = {
6104					method: 'GET',
6105					url: `/api/storefront/carts`,
6106					headers: {
6107						Accept: 'application/json',
6108						'Content-Type': 'application/json'
6109					}
6110				};
6111				const response = await axios(axiosOptions)
6112				if (response?.data?.length > 0) {
6113					return { showModal: false, showPage: false };
6114				}
6115			} catch (error) {
6116				console.error('[Eligibility Check] Cart API check failed:', error);
6117			}
6118		}
6119
6120		if (repIdCheckNeed || eligibility === null) {
6121			if (currentRepId) {
6122				try {
6123					const repCheckResponse = await make_PZ_API_Request(
6124						'PZ_BASE_URL',
6125						'/sample_program/check-rep-id',
6126						'POST',
6127						{
6128							body: {
6129								rep_id: parseInt(currentRepId, 10),
6130								url: window.location.href
6131							}
6132						}
6133					);
6134					storage.set(lastRepIdKey, String(currentRepId || ''));
6135					storage.set(lastTimeCheckedRepIDKey, String(Date.now()));
6136
6137					if (repCheckResponse?.success === false) {
6138						repEligibility = 'not_eligible';
6139						storage.set(repEligibilityKey, 'not_eligible');
6140						storage.set(eligibilityKey, 'not_eligible');
6141						return { showModal: false, showPage: false };
6142					} else {
6143						repEligibility = 'eligible';
6144						storage.set(repEligibilityKey, 'eligible');
6145					}
6146				} catch (error) {
6147					console.error('[Eligibility Check] Rep ID verification failed:', error);
6148					// Set last rep ID and timestamp to avoid infinite retry loops on consecutive calls
6149					storage.set(lastRepIdKey, String(currentRepId || ''));
6150					storage.set(lastTimeCheckedRepIDKey, String(Date.now()));
6151				}
6152			} else {
6153				repEligibility = 'eligible';
6154				storage.set(repEligibilityKey, 'eligible');
6155			}
6156		}
6157
6158		if (!programEnabled) {
6159			return { showModal: false, showPage: false };
6160		}
6161		if (programStatus && programStatus !== 'active') {
6162			return { showModal: false, showPage: false };
6163		}
6164
6165		const { code } = getDefaultCountryContext();
6166		if (Array.isArray(enabledCountries) && enabledCountries.length > 0 && !enabledCountries.includes(code)) {
6167			return { showModal: false, showPage: false };
6168		}
6169
6170		const isRestrictedRoute = noSampleModalRoutes.some(route => window.location.pathname.includes(route));
6171		const hasSessionEntry = !!storage.get(SESSION_MODAL_SHOWN_KEY);
6172
6173		if (hasSessionEntry && !isRestrictedRoute) {
6174			const lastShown = parseInt(storage.get(PERSIST_MODAL_LAST_SHOWN_KEY, 'local'), 10);
6175			if (lastShown && (Date.now() - lastShown) < PERSIST_MODAL_TTL_MS) {
6176				return { showModal: false, showPage: false };
6177			}
6178		}
6179
6180		if (window.Customer_Email && (customerEmailCheckNeed || eligibility === null)) {
6181			try {
6182				const response = await make_PZ_API_Request(
6183					'PZ_BASE_URL',
6184					window.PZ_API_EP.sampleProgram.checkCustomerEligibility,
6185					'POST',
6186					{
6187						body: {
6188							user_email: window.Customer_Email
6189						}
6190					}
6191				);
6192				storage.set(lastCustomerCheckKey, String(currentCustomerEmail || ''));
6193				storage.set(lastTimeCheckedCustomerKey, String(Date.now()));
6194
6195				if (response?.success === true) {
6196					customerEligibility = 'eligible';
6197					storage.set(customerEligibilityKey, 'eligible');
6198				} else {
6199					customerEligibility = 'not_eligible';
6200					storage.set(customerEligibilityKey, 'not_eligible');
6201					storage.set(eligibilityKey, 'not_eligible');
6202					return { showModal: false, showPage: false };
6203				}
6204			} catch (error) {
6205				console.error('[Eligibility Check] Customer eligibility verification failed:', error);
6206				customerEligibility = 'not_eligible';
6207				storage.set(customerEligibilityKey, 'not_eligible');
6208				storage.set(eligibilityKey, 'not_eligible');
6209				storage.set(lastCustomerCheckKey, String(currentCustomerEmail || ''));
6210				storage.set(lastTimeCheckedCustomerKey, String(Date.now()));
6211				return { showModal: false, showPage: false };
6212			}
6213		}
6214
6215		if (repEligibility === 'eligible' && customerEligibility === 'eligible') {
6216			if (eligibility !== 'eligible') {
6217				storage.set(eligibilityKey, 'eligible');
6218			}
6219		} else {
6220			storage.set(eligibilityKey, 'not_eligible');
6221			return { showModal: false, showPage: false };
6222		}
6223
6224		if (isRestrictedRoute) {
6225			return { showModal: false, showPage: true };
6226		}
6227
6228		return { showModal: true, showPage: true };
6229	}
6230
6231	function markModalShownOnce() {
6232		try {
6233			sessionStorage.setItem(SESSION_MODAL_SHOWN_KEY, '1');
6234		} catch (e) { /* ignore */ }
6235
6236		try {
6237			localStorage.setItem(PERSIST_MODAL_LAST_SHOWN_KEY, String(Date.now()));
6238		} catch (e) { /* ignore */ }
6239	}
6240
6241	function getStates() {
6242		const currencyCode = document.getElementById('main-content').getAttribute('data-currency-code') || 'USD';
6243		const country = currencyCode === 'CAD' ? 'Canada' : 'United%20States';
6244
6245		const url = `${window.location.origin}/remote/v1/country-states/${country}`;
6246		axios.get(url)
6247			.then(response => {
6248				const states = response.data.data.states;
6249				const stateInput = document.getElementById('get_sample_state');
6250				if (stateInput) {
6251					// Clear existing options
6252					stateInput.innerHTML = '';
6253					// Add a default option
6254					const defaultOption = document.createElement('option');
6255					defaultOption.value = '';
6256					defaultOption.textContent = 'Select State';
6257					stateInput.appendChild(defaultOption);
6258					// Populate with fetched states
6259					states.forEach(state => {
6260						const option = document.createElement('option');
6261						option.value = state.name;
6262						option.textContent = state.label;
6263						stateInput.appendChild(option);
6264					});
6265				}
6266			});
6267	}
6268
6269	document.addEventListener('DOMContentLoaded', async () => {
6270		await loadSampleProgramSettings();
6271
6272		const currentPath = window.location.pathname;
6273		const isRestrictedRoute = noSampleModalRoutes.some(route => currentPath.includes(route));
6274		const isDedicatedPage = currentPath.includes('/sample-program');
6275
6276		// Abort execution completely on restricted routes, except for the dedicated landing page
6277		if (isRestrictedRoute && !isDedicatedPage) {
6278			return;
6279		}
6280
6281		getStates();
6282		// Initialize password UI state if password field is present
6283		const pw = document.getElementById('get_sample_password');
6284		if (pw) {
6285			updatePasswordChecklistUI(pw.value || '');
6286		}
6287		// Suppress native validation tooltip for password field; we'll handle inline
6288		document.addEventListener('invalid', function (e) {
6289			const t = e.target;
6290			if (t && t.id === 'get_sample_password') {
6291				e.preventDefault();
6292			}
6293		}, true);
6294
6295		if (await shouldShowModalNow()) {
6296			setTimeout(() => {
6297				showModalPopUp('get-free-sample--modal');
6298				// mark that we actually opened the modal during this page lifecycle
6299				try { window.__getFreeSampleModalWasOpened = true; } catch (e) { }
6300				document.getElementById('sample-form-step').style.display = 'block';
6301			}, Math.max(0, popupDelaySec) * 1000);
6302		}
6303		if (showSampleProgramPage) {
6304			const sampleProgramPageMainSection = document.querySelector(".sp--forms-section");
6305			const noSampleProgramMessage = document.querySelector(".no-sample-program");
6306			const spSideImageSection = document.querySelector("#sp-side-image-section");
6307			const sampleFormStep = document.querySelector("#sample-form-step");
6308			const spHeader = document.querySelector("#sp-header");
6309			if (sampleProgramPageMainSection) { sampleProgramPageMainSection.style.display = "flex"; }
6310			if (noSampleProgramMessage) { noSampleProgramMessage.style.display = "none"; }
6311			if (spSideImageSection) { spSideImageSection.style.display = "block"; }
6312			if (sampleFormStep) { sampleFormStep.style.display = "block"; }
6313			if (spHeader) { spHeader.style.display = "block"; }
6314		}
6315	});
6316
6317	// Form submission handler
6318	document.addEventListener('submit', async function (e) {
6319		if (e.target.id === 'sample-program-signup-form') {
6320			e.preventDefault();
6321			await handleSampleProgramFormSubmission();
6322		}
6323	});
6324
6325	async function handleSampleProgramFormSubmission() {
6326		try {
6327			// Show loading state
6328			const submitButton = document.getElementById('get-sample-button');
6329			const originalText = submitButton.textContent;
6330			submitButton.textContent = 'SUBMITTING...';
6331			submitButton.disabled = true;
6332
6333			// Collect form data
6334			formData = {
6335				first_name: document.getElementById('get_sample_first_name').value,
6336				last_name: document.getElementById('get_sample_last_name').value,
6337				email: document.getElementById('get_sample_email').value,
6338				address1: document.getElementById('get_sample_address1').value,
6339				address2: document.getElementById('get_sample_address2').value,
6340				city: document.getElementById('get_sample_city').value,
6341				state: document.getElementById('get_sample_state').value,
6342				zip: document.getElementById('get_sample_zip').value,
6343				phone: document.getElementById('get_sample_phone').value,
6344				password: document.getElementById('get_sample_password')?.value || ''
6345			};
6346			// Store credentials for auto-login after OTP verification
6347			// sessionStorage is used as volatile storage without persistence
6348			storage.set('sample_program_customer_email', formData.email);
6349			storage.set('sample_program_customer_password', formData.password);
6350
6351			// Validate required fields
6352			if (!validateSampleProgramFormData(formData)) {
6353				submitButton.textContent = originalText;
6354				submitButton.disabled = false;
6355				return;
6356			}
6357
6358			// get rep id from the url
6359			const params = new URLSearchParams(window.location.search);
6360			let repId = params.get('repid');
6361			if (!repId) { repId = localStorage.getItem('repid'); }
6362
6363			// Submit to API to trigger OTP
6364			const { code: countryCode, name: countryName } = getDefaultCountryContext();
6365			const phoneE164 = toE164(formData.phone, countryCode);
6366			const payload = {
6367				user_first_name: formData.first_name,
6368				user_last_name: formData.last_name,
6369				user_password: formData.password || '',
6370				user_email: formData.email,
6371				user_phone: phoneE164,
6372				user_address_1: formData.address1,
6373				user_address_2: formData.address2,
6374				user_city: formData.city,
6375				user_state: formData.state,
6376				user_zip: formData.zip,
6377				user_country: countryName,
6378				user_country_code: countryCode
6379			};
6380
6381			if (repId) {
6382				payload["user_rep_id"] = repId;
6383				if (window.PZJourney) window.PZJourney.record('sample_program_rep_sent', { rep: Number(repId) || null, source: 'url_or_storage' }, 'a sample-program lead was attributed to this rep'); // shadow-audit only
6384			} else {
6385				payload["user_rep_id"] = String(defaultConsultantId);
6386				if (window.PZJourney) window.PZJourney.record('sample_program_rep_sent', { rep: Number(defaultConsultantId) || null, source: 'hardcoded_default' }, 'a sample-program lead fell back to the default rep'); // shadow-audit only
6387			}
6388
6389			let response;
6390			try {
6391				response = await window.make_PZ_API_Request('PZ_BASE_URL', '/sample_program/enrollment/request', 'POST', { body: payload });
6392			} catch (err) {
6393				console.error(err);
6394				//
6395				if (err.status === 409) {
6396					showSampleProgramAlreadyInModal();
6397					return;
6398				}
6399				//
6400				const msg = err?.response?.data?.error || err?.error || 'An error occurred. Please try again.';
6401				notyf.error({
6402					message: msg,
6403					duration: 6000,
6404					dismissible: true,
6405				});
6406				showSampleFormError(msg);
6407				submitButton.textContent = originalText;
6408				submitButton.disabled = false;
6409				return;
6410			}
6411
6412			if (response && response.success) {
6413				showSampleProgramOTPStep();
6414			} else {
6415				notyf.error({
6416					message: response?.data?.error || notEligibleMessage || 'An error occurred. Please try again.',
6417					duration: 6000,
6418					dismissible: true,
6419				});
6420				showSampleFormError(response?.data?.error || notEligibleMessage || 'An error occurred. Please try again.');
6421			}
6422
6423			submitButton.textContent = originalText;
6424			submitButton.disabled = false;
6425
6426		} catch (error) {
6427			console.error('Error submitting form:', error);
6428			showSampleFormError('An error occurred. Please try again.');
6429
6430			const submitButton = document.getElementById('get-sample-button');
6431			submitButton.textContent = 'GET MY FREE SAMPLE';
6432			submitButton.disabled = false;
6433		}
6434	}
6435
6436	function validateSampleProgramFormData(data) {
6437		const requiredFields = ['first_name', 'last_name', 'email', 'address1', 'city', 'state', 'zip', 'phone'];
6438
6439		for (let field of requiredFields) {
6440			if (!data[field] || String(data[field]).trim() === '') {
6441				showSampleFormError(`${field.replace('_', ' ').toUpperCase()} is required.`);
6442				return false;
6443			}
6444		}
6445
6446		// Name validation: no numbers, cannot start with a number
6447		if (!isValidName(data.first_name)) {
6448			showSampleFormError('First name must contain letters only and cannot start with a number.');
6449			return false;
6450		}
6451		if (!isValidName(data.last_name)) {
6452			showSampleFormError('Last name must contain letters only and cannot start with a number.');
6453			return false;
6454		}
6455
6456		if (!isValidEmail(data.email)) {
6457			showSampleFormError('Please enter a valid email address.');
6458			return false;
6459		}
6460
6461		if (!isValidUSPhone(data.phone)) {
6462			showSampleFormError('Enter your phone number with country code +1 and 10 digits (e.g., +19016605560)');
6463			return false;
6464		}
6465
6466		// Password: only required for non-logged-in users; must meet complexity rules
6467		const isLoggedIn = !!window.Customer_Email;
6468		if (!isLoggedIn) {
6469			if (!isValidPassword(data.password)) {
6470				const row = document.getElementById('password-field-row');
6471				const feedback = row ? row.querySelector('.invalid-feedback[data-error="0.password"]') : null;
6472				if (feedback) {
6473					feedback.textContent = PASSWORD_REQUIREMENTS_TEXT;
6474					feedback.style.display = 'block';
6475				}
6476				const pwInput = document.getElementById('get_sample_password');
6477				if (pwInput) {
6478					pwInput.setAttribute('aria-invalid', 'true');
6479					pwInput.classList.add('is-invalid');
6480					pwInput.focus();
6481				}
6482				return false;
6483			} else {
6484				const row = document.getElementById('password-field-row');
6485				const feedback = row ? row.querySelector('.invalid-feedback[data-error="0.password"]') : null;
6486				if (feedback) {
6487					feedback.textContent = '';
6488					feedback.style.display = 'none';
6489				}
6490				const pwInput = document.getElementById('get_sample_password');
6491				if (pwInput) {
6492					pwInput.removeAttribute('aria-invalid');
6493					pwInput.classList.remove('is-invalid');
6494				}
6495			}
6496		}
6497
6498		return true;
6499	}
6500
6501	// mockSubmitFormAndSendOTP removed (replaced by API)
6502
6503	function showSampleProgramOTPStep() {
6504		document.getElementById('sample-form-step')?.style.setProperty('display', 'none');
6505		document.getElementById('otp-verification-step')?.style.setProperty('display', 'block');
6506		document.getElementById('success-step')?.style.setProperty('display', 'none');
6507		document.getElementById('loading-step')?.style.setProperty('display', 'none');
6508
6509		// Display phone number
6510		document.getElementById('otp-phone-display').textContent = formatPhoneNumber(formData.phone);
6511
6512		currentStep = 'otp';
6513
6514		// Clear any previous errors
6515		hideOTPError();
6516
6517		// Focus on OTP input
6518		document.getElementById('otp-code').focus();
6519	}
6520
6521	async function showSampleProgramSuccessRedirect() {
6522		// Mark user as not eligible in this session since they have successfully requested a sample
6523		storage.set('sp_eligibility_checked', 'not_eligible');
6524
6525		await performAutoLogin();
6526		hideLoadingState();
6527
6528		const afterLoginStep = document.getElementById('after-login-step');
6529		if (afterLoginStep) afterLoginStep.style.display = 'none';
6530		const isLoggedIn = !!window.Customer_Email;
6531		const isDedicatedPage = window.location.pathname.includes('/sample-program')
6532
6533		if (!isDedicatedPage) {
6534
6535			if (isLoggedIn) {
6536				hideLoadingState();
6537				const afterLoginStep = document.getElementById('after-login-step');
6538				if (afterLoginStep) afterLoginStep.style.display = 'block';
6539				await new Promise(resolve => setTimeout(resolve, 2000));
6540			}
6541
6542			const modalKey = 'getFreeSampleModalLastClosed';
6543			localStorage.setItem(modalKey, new Date().getTime());
6544			await window.contextRedirect({ to: `/thank-you-shopping-sample?order_id=${orderId}` });
6545		} else {
6546			hideLoadingState();
6547
6548			document.querySelectorAll('.sp--header').forEach(el => el.style.display = 'none');
6549
6550			const sideImage = document.getElementById('sp-side-image-section');
6551			if (sideImage) {
6552				sideImage.style.setProperty('display', 'none', 'important');
6553			}
6554
6555			document.getElementById('success-step')?.style.setProperty('display', 'block');
6556			currentStep = 'success';
6557		}
6558	}
6559
6560	function showLoadingState(message = 'VERIFYING...', subtext = 'Please wait while we confirm your code and set up your account.') {
6561		document.getElementById('sample-form-step')?.style.setProperty('display', 'none');
6562		document.getElementById('otp-verification-step')?.style.setProperty('display', 'none');
6563		document.getElementById('success-step')?.style.setProperty('display', 'none');
6564		document.getElementById('already-enrolled-step')?.style.setProperty('display', 'none');
6565
6566		const loadingStep = document.getElementById('loading-step');
6567		if (loadingStep) {
6568			loadingStep.style.display = 'block';
6569			const msgEl = loadingStep.querySelector('.loading-text');
6570			if (msgEl) msgEl.textContent = message;
6571			const subEl = loadingStep.querySelector('.loading-subtext');
6572			if (subEl) subEl.textContent = subtext;
6573		}
6574	}
6575
6576	function hideLoadingState() {
6577		const loadingStep = document.getElementById('loading-step');
6578		if (loadingStep) {
6579			loadingStep.style.display = 'none';
6580		}
6581	}
6582
6583	function showSampleProgramAlreadyInModal() {
6584		document.getElementById('sample-form-step').style.display = 'none';
6585		document.getElementById('otp-verification-step').style.display = 'none';
6586		document.getElementById('already-enrolled-step').style.display = 'block';
6587
6588		// currentStep = 'success';
6589	}
6590
6591	function goBackToSampleProgramForm() {
6592		document.getElementById('sample-form-step')?.style.setProperty('display', 'block');
6593		document.getElementById('otp-verification-step')?.style.setProperty('display', 'none');
6594		document.getElementById('success-step')?.style.setProperty('display', 'none');
6595		document.getElementById('loading-step')?.style.setProperty('display', 'none');
6596
6597		currentStep = 'form';
6598
6599		// Clear form errors
6600		hideSampleFormError();
6601	}
6602
6603	// OTP verification handlers
6604	document.addEventListener('click', async function (e) {
6605		if (e.target.id === 'verify-otp-button') {
6606			await handleOTPVerification();
6607		} else if (e.target.id === 'resend-otp-button') {
6608			await handleResendOTP();
6609		} else if (e.target.id === 'change-phone-button') {
6610			goBackToSampleProgramForm();
6611		}
6612	});
6613
6614	const performAutoLogin = async () => {
6615		const email = storage.get('sample_program_customer_email') || formData.email;
6616		const password = storage.get('sample_program_customer_password') || formData.password;
6617
6618		if (email && password) {
6619
6620			// Wait a bit before attempting login to allow backend to finish user creation
6621			// This handles the race condition between OTP verification and user creation
6622			// BigCommerce can take several seconds to propagate the new user index
6623			const delays = [0, 200, 200, 200, 200]; // Increased delays: 3s, 5s, 8s, 10s
6624			let attempt = 0;
6625			let loginSuccess = false;
6626
6627			for (const delay of delays) {
6628				attempt++;
6629
6630				// Wait before attempting
6631				await new Promise(resolve => setTimeout(resolve, delay));
6632
6633				try {
6634					// Attempt login
6635					await loginHandler.login_User_Async({
6636						login_email: email,
6637						login_pass: password,
6638					}, false);
6639
6640					// If we reach here without error, check if customer exists
6641					const customerCheck = await loginHandler.getBCCustomerDetails(false);
6642					if (customerCheck?.data?.customer) {
6643						loginSuccess = true;
6644						storage.remove('sample_program_customer_password');
6645						storage.remove('sample_program_customer_email');
6646						// Redirect to home as requested
6647						break;
6648					}
6649				} catch (error) {
6650
6651					// If this is the last attempt, log final failure
6652					if (attempt === delays.length) {
6653						console.error('Auto-login failed after all attempts. User can login manually.');
6654						notyf.error({
6655							message: 'Please login with your credentials to continue.',
6656							duration: 5000,
6657							dismissible: true,
6658						});
6659					}
6660				}
6661			}
6662
6663			// Clean up sessionStorage after all attempts
6664			// sessionStorage.removeItem('sample_program_customer_email');
6665			// sessionStorage.removeItem('sample_program_customer_password');
6666		} else {
6667			console.warn('Auto-login skipped: credentials not found in sessionStorage');
6668		}
6669	};
6670
6671	async function handleOTPVerification() {
6672		try {
6673			const otpCode = document.getElementById('otp-code').value;
6674
6675			if (!otpCode || otpCode.length !== 6) {
6676				showOTPError('Please enter a valid 6-digit code.');
6677				return;
6678			}
6679
6680			// Show loading state
6681			const verifyButton = document.getElementById('verify-otp-button');
6682			const originalText = verifyButton.textContent;
6683			verifyButton.textContent = 'VERIFYING...';
6684			verifyButton.disabled = true;
6685			showLoadingState('VERIFYING...', 'Please wait while we confirm your code.');
6686
6687			// Verify OTP via API
6688			const response = await verifyOTPWithAPI(otpCode);
6689
6690			const responseCode = response?.details?.code
6691			// Helper function to perform auto-login
6692
6693			if (response.success) {
6694				orderId = response?.details?.new_order_bc_id;
6695				verifyButton.textContent = 'LOGGING IN...';
6696				showLoadingState('LOGGING IN...', 'We are finalizing your account and getting everything ready.');
6697				await showSampleProgramSuccessRedirect();
6698			} else {
6699				// alert(`Response Code: ${responseCode}`);
6700				if (responseCode === 'order_not_created_but_placed') {
6701					notyf.error({
6702						message: response.message,
6703						duration: 10000,
6704						dismissible: true,
6705					});
6706					verifyButton.textContent = 'LOGGING IN...';
6707					showLoadingState('LOGGING IN...', 'We are finalizing your account and getting everything ready.');
6708					await showSampleProgramSuccessRedirect();
6709				} else {
6710					hideLoadingState();
6711					document.getElementById('otp-verification-step').style.display = 'block';
6712					showOTPError(response.message || 'Invalid code. Please try again.');
6713				}
6714			}
6715			verifyButton.textContent = originalText;
6716			verifyButton.disabled = false;
6717
6718		} catch (error) {
6719			console.error('Error verifying OTP:', error);
6720			hideLoadingState();
6721			document.getElementById('otp-verification-step').style.display = 'block';
6722			showOTPError('An error occurred. Please try again.');
6723
6724			const verifyButton = document.getElementById('verify-otp-button');
6725			verifyButton.textContent = 'VERIFY CODE';
6726			verifyButton.disabled = false;
6727		}
6728	}
6729
6730	async function handleResendOTP() {
6731		// Clear OTP input
6732		document.getElementById('otp-code').value = '';
6733		if (otpResendCount >= otpMaxAttempts) {
6734			showOTPError('Maximum resend attempts reached. Please try again later.');
6735			return;
6736		}
6737
6738		try {
6739			// Show loading state
6740			const resendButton = document.getElementById('resend-otp-button');
6741			const originalText = resendButton.textContent;
6742			resendButton.textContent = 'SENDING...';
6743			resendButton.disabled = true;
6744
6745			// Resend via API
6746			const response = await resendOTPViaAPI();
6747
6748			if (response.success) {
6749				otpResendCount++;
6750				// Update button text to show countdown or disable after max attempts
6751				if (otpResendCount >= otpMaxAttempts) {
6752					resendButton.textContent = 'MAX ATTEMPTS REACHED';
6753					resendButton.disabled = true;
6754				} else {
6755					resendButton.textContent = originalText;
6756					resendButton.disabled = false;
6757					// Optional: Add countdown timer
6758					startResendCoolDown(resendButton);
6759				}
6760
6761
6762				hideOTPError();
6763			} else {
6764				showOTPError(response.message || 'Failed to resend code. Please try again.');
6765				resendButton.textContent = originalText;
6766				resendButton.disabled = false;
6767			}
6768
6769		} catch (error) {
6770			console.error('Error resending OTP:', error);
6771			showOTPError('An error occurred. Please try again.');
6772
6773			const resendButton = document.getElementById('resend-otp-button');
6774			resendButton.textContent = 'RESEND CODE';
6775			resendButton.disabled = false;
6776		}
6777	}
6778
6779	function startResendCoolDown(button) {
6780		let countdown = parseInt(otpRequestDelaySec) || 30;
6781		const originalText = button.textContent;
6782
6783		button.disabled = true;
6784		const interval = setInterval(() => {
6785			button.textContent = `RESEND CODE (${countdown}s)`;
6786			countdown--;
6787
6788			if (countdown < 0) {
6789				clearInterval(interval);
6790				button.textContent = originalText;
6791				button.disabled = false;
6792			}
6793		}, 1000);
6794	}
6795
6796	async function verifyOTPWithAPI(code) {
6797		const { code: countryCode } = getDefaultCountryContext();
6798		const phoneE164 = toE164(formData.phone, countryCode);
6799		try {
6800			const response = await window.make_PZ_API_Request('PZ_BASE_URL', '/sample_program/enrollment/confirm', 'POST', {
6801				body: {
6802					user_phone: phoneE164,
6803					user_otp: code,
6804				},
6805			});
6806			return response;
6807		} catch (err) {
6808			return { success: false, message: err?.response?.data?.error || err?.error || 'OTP verification failed', details: err?.response?.data?.details || {} };
6809		}
6810	}
6811
6812	async function resendOTPViaAPI() {
6813		// Call dedicated resend endpoint
6814		const { code: countryCode } = getDefaultCountryContext();
6815		const phoneE164 = toE164(formData.phone, countryCode);
6816		try {
6817			const response = await window.make_PZ_API_Request('PZ_BASE_URL', '/sample_program/enrollment/resend_otp', 'POST', { body: { user_phone: phoneE164 } });
6818			return response;
6819		} catch (err) {
6820			return { success: false, message: err?.response?.data?.error || err?.error || 'Failed to resend code' };
6821		}
6822	}
6823
6824	function toE164(input, countryCode = 'US') {
6825		// Normalize to E.164 for US/CA: always +1 followed by 10 digits
6826		const raw = String(input || '');
6827		let digits = raw.replace(/\D/g, '');
6828		const isUSCA = countryCode === 'US' || countryCode === 'CA';
6829		if (isUSCA) {
6830			if (digits.startsWith('1')) {
6831				// Keep country code and next 10 digits
6832				return '+1' + digits.slice(1, 11);
6833			}
6834			// If 10+ digits without leading 1, take first 10 as national
6835			return '+1' + digits.slice(0, 10);
6836		}
6837		// Fallback for other countries (not expected here)
6838		return (raw.trim().startsWith('+') ? raw.trim() : `+${digits}`);
6839	}
6840
6841	// Error handling functions
6842	function showSampleFormError(message) {
6843		const errorElement = document.querySelector('.form-error');
6844		const errorMessageElement = document.querySelector('.form-error .alertBox-message');
6845		if (errorMessageElement) errorMessageElement.textContent = message;
6846		if (errorElement) errorElement.style.display = 'block';
6847	}
6848
6849	function hideSampleFormError() {
6850		const errorElement = document.querySelector('.form-error');
6851		errorElement.style.display = 'none';
6852	}
6853
6854	function showOTPError(message) {
6855		const errorElement = document.getElementById('otp-error');
6856		const errorMessageElement = document.querySelector('#otp-error .alertBox-message');
6857		if (errorMessageElement) errorMessageElement.textContent = message;
6858		if (errorElement) errorElement.style.display = 'block';
6859	}
6860
6861	function hideOTPError() {
6862		const errorElement = document.getElementById('otp-error');
6863		errorElement.style.display = 'none';
6864	}
6865
6866	// Utility functions
6867	function formatPhoneNumber(phone) {
6868		const cleaned = String(phone || '').replace(/\D/g, '');
6869		let d = cleaned;
6870		// If +1XXXXXXXXXX, drop the leading 1 for display formatting
6871		if (cleaned.length === 11 && cleaned.startsWith('1')) {
6872			d = cleaned.slice(1);
6873		}
6874		if (d.length === 10) {
6875			return `(${d.substring(0, 3)}) ${d.substring(3, 6)}-${d.substring(6)}`;
6876		}
6877		return phone;
6878	}
6879
6880	// Input formatting and constraints
6881	// Normalize pasted/typed phone to +1XXXXXXXXXX (US/CA)
6882	document.addEventListener('paste', function (e) {
6883		if (e.target.id === 'get_sample_phone') {
6884			e.preventDefault();
6885			const clip = (e.clipboardData || window.clipboardData);
6886			const text = clip ? (clip.getData('text') || '') : '';
6887			const digits = String(text).replace(/\D/g, '');
6888			let normalized;
6889			if (digits.startsWith('1')) {
6890				normalized = '+1' + digits.slice(1, 11);
6891			} else {
6892				normalized = '+1' + digits.slice(0, 10);
6893			}
6894			e.target.value = normalized || '+1';
6895		}
6896	});
6897
6898	document.addEventListener('input', function (e) {
6899		if (e.target.id === 'otp-code') {
6900			// Only allow numbers
6901			e.target.value = e.target.value.replace(/\D/g, '');
6902			return;
6903		}
6904
6905		if (e.target.id === 'get_sample_first_name' || e.target.id === 'get_sample_last_name') {
6906			// Strip digits anywhere
6907			const cur = e.target.value || '';
6908			const cleaned = cur.replace(/[0-9]/g, '');
6909			if (cleaned !== cur) e.target.value = cleaned;
6910			return;
6911		}
6912
6913		if (e.target.id === 'get_sample_phone') {
6914			// Always coerce to +1 followed by up to 10 digits (US/CA only)
6915			const digits = String(e.target.value || '').replace(/\D/g, '');
6916			let normalized;
6917			if (digits.startsWith('1')) {
6918				normalized = '+1' + digits.slice(1, 11);
6919			} else {
6920				normalized = '+1' + digits.slice(0, 10);
6921			}
6922			e.target.value = normalized || '+1';
6923			return;
6924		}
6925
6926		// Live password validation to update checklist (do not disable submit)
6927		if (e.target.id === 'get_sample_password') {
6928			const val = String(e.target.value || '');
6929			updatePasswordChecklistUI(val);
6930			// Do not show inline error during typing; always hide it on input
6931			const row = document.getElementById('password-field-row');
6932			const feedback = row ? row.querySelector('.invalid-feedback[data-error="0.password"]') : null;
6933			const pwInput = document.getElementById('get_sample_password');
6934			if (feedback) { feedback.textContent = ''; feedback.style.display = 'none'; }
6935			if (pwInput) { pwInput.removeAttribute('aria-invalid'); pwInput.classList.remove('is-invalid'); }
6936			return;
6937		}
6938	});
6939
6940	async function closeGetFreeSampleModal() {
6941		const modalKey = 'getFreeSampleModalLastClosed';
6942		localStorage.setItem(modalKey, new Date().getTime());
6943		hideModalPopUp('get-free-sample--modal');
6944		// Set session and 24-hour cooldown only if modal was actually opened by our code
6945		try {
6946			if (window.__getFreeSampleModalWasOpened) {
6947				markModalShownOnce();
6948				window.__getFreeSampleModalWasOpened = false; // prevent duplicate marking
6949			}
6950		} catch (e) { }
6951		resetSampleFormState();
6952
6953	}
6954
6955	function handleClickShopNow() {
6956		closeGetFreeSampleModal();
6957		window.open("/shop-new-products/", "_self");
6958	}
6959
6960	function resetSampleFormState() {
6961		// Reset to first step
6962		document.getElementById('sample-form-step')?.style.setProperty('display', 'block');
6963		document.getElementById('otp-verification-step')?.style.setProperty('display', 'none');
6964		document.getElementById('success-step')?.style.setProperty('display', 'none');
6965		document.getElementById('loading-step')?.style.setProperty('display', 'none');
6966
6967		// Clear form data
6968		formData = {};
6969		currentStep = 'form';
6970		otpResendCount = 0;
6971
6972		// Clear OTP input
6973		document.getElementById('otp-code').value = '';
6974
6975		// Hide errors
6976		hideSampleFormError();
6977		hideOTPError();
6978
6979		// Reset button states
6980		const verifyButton = document.getElementById('verify-otp-button');
6981		verifyButton.textContent = 'VERIFY CODE';
6982		verifyButton.disabled = false;
6983
6984		const resendButton = document.getElementById('resend-otp-button');
6985		resendButton.textContent = 'RESEND CODE';
6986		resendButton.disabled = false;
6987
6988		const submitButton = document.getElementById('get-sample-button');
6989		submitButton.textContent = 'GET MY FREE SAMPLE';
6990		submitButton.disabled = false;
6991	}
6992
6993	document.addEventListener("DOMContentLoaded", function () {
6994		const emailInput = document.getElementById('get_sample_email');
6995		const phoneInput = document.getElementById('get_sample_phone');
6996		const legalComponent = document.querySelector('legal-opt-in');
6997
6998		function syncData() {
6999			if (legalComponent) {
7000				legalComponent.setAttribute('email', emailInput.value);
7001				legalComponent.setAttribute('phone', phoneInput.value);
7002
7003				legalComponent.email = emailInput.value;
7004				legalComponent.phone = phoneInput.value;
7005			}
7006		}
7007
7008		if (emailInput && phoneInput) {
7009			emailInput.addEventListener('input', syncData);
7010			phoneInput.addEventListener('input', syncData);
7011
7012			setTimeout(syncData, 500);
7013		}
7014	});
7015</script>
7015        <div class="c--modal product-details--modal" tabindex="-1" style="--bs-modal-width: 852px;">
7016    <div class="c--modal-dialog">
7017        <div class="c--modal-content">
7018            <div class="c--modal-body">
7019				<div class="product-details--modal__content">
7020					<div class="product-details--modal__image">
7021						<img product-detail-main-image src="" alt="Product Image" />
7022					</div>
7023
7024					<div class="product-details--modal__info">
7025						<h3 product-detail-name></h3>
7026						<p><span class="product-categories"><span product-detail-categories></span> | </span><span product-detail-sku></span></p>
7027						<p product-detail-reviews></p>
7028						<p product-detail-price></p>
7029						<div product-detail-addToCart></div>
7030					</div>
7031				</div>
7032				<div class="product-details--modal__description">
7033					<h4 class="description-heading">DESCRIPTION</h4>
7034					<hr>
7035					<p product-detail-description></p>
7036				</div>
7037			</div>
7038
7039            <button class="modal-close" onclick="hideModalPopUp('product-details--modal')">×</button>
7040        </div>
7041    </div>
7042</div>
7043        
7043<script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/[email protected]/cdn/components/spinner/spinner.js"></script>
7043
7044        
7044<script src="https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.js"></script>
7044
7045        
7045<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/notifications/notyf.js"></script>
7045
7046        
7046<script>
7047            function onThemeBundleMain() {
7048                window.stencilBootstrap("login", "{\"zoomSize\":\"680x680\",\"productSize\":\"260x260\",\"genericError\":\"Oops! Something went wrong.\",\"urls\":{\"home\":\"https://pinkzebrahome.com/\",\"brands\":\"https://pinkzebrahome.com/brands/\",\"search\":\"https://pinkzebrahome.com/search.php\",\"compare\":\"https://pinkzebrahome.com/compare\",\"sitemap\":\"https://pinkzebrahome.com/sitemap.php\",\"contact_us_submit\":\"https://pinkzebrahome.com/pages.php?action=sendContactForm\",\"subscribe\":{\"action\":\"https://pinkzebrahome.com/subscribe.php\"},\"checkout\":{\"single_address\":\"https://pinkzebrahome.com/checkout\",\"multiple_address\":\"https://pinkzebrahome.com/checkout.php?action=multiple\"},\"account\":{\"orders\":{\"all\":\"https://pinkzebrahome.com/account.php?action=order_status\",\"completed\":\"https://pinkzebrahome.com/account.php?action=view_orders\",\"save_new_return\":\"https://pinkzebrahome.com/account.php?action=save_new_return\"},\"returns\":\"https://pinkzebrahome.com/account.php?action=view_returns\",\"addresses\":\"https://pinkzebrahome.com/account.php?action=address_book\",\"inbox\":\"https://pinkzebrahome.com/account.php?action=inbox\",\"send_message\":\"https://pinkzebrahome.com/account.php?action=send_message\",\"add_address\":\"https://pinkzebrahome.com/account.php?action=add_shipping_address\",\"update_action\":\"https://pinkzebrahome.com/account.php?action=update_account\",\"details\":\"https://pinkzebrahome.com/account.php?action=account_details\",\"recent_items\":\"https://pinkzebrahome.com/account.php?action=recent_items\",\"index\":\"https://pinkzebrahome.com/account.php\",\"wishlists\":{\"all\":\"https://pinkzebrahome.com/wishlist.php\",\"add\":\"https://pinkzebrahome.com/wishlist.php?action=addwishlist\",\"edit\":\"https://pinkzebrahome.com/wishlist.php?action=editwishlist\",\"delete\":\"https://pinkzebrahome.com/wishlist.php?action=deletewishlist\"},\"payment_methods\":{\"all\":\"https://pinkzebrahome.com/account.php?action=payment_methods\"}},\"auth\":{\"login\":\"https://pinkzebrahome.com/login.php\",\"check_login\":\"https://pinkzebrahome.com/login.php?action=check_login\",\"create_account\":\"https://pinkzebrahome.com/login.php?action=create_account\",\"save_new_account\":\"https://pinkzebrahome.com/login.php?action=save_new_account\",\"forgot_password\":\"https://pinkzebrahome.com/login.php?action=reset_password\",\"send_password_email\":\"https://pinkzebrahome.com/login.php?action=send_password_email\",\"save_new_password\":\"https://pinkzebrahome.com/login.php?action=save_new_password\",\"logout\":\"https://pinkzebrahome.com/login.php?action=logout\"},\"cart\":\"https://pinkzebrahome.com/cart.php\",\"product\":{\"post_review\":\"https://pinkzebrahome.com/postreview.php\"},\"gift_certificate\":{\"purchase\":\"https://pinkzebrahome.com/giftcertificates.php\",\"redeem\":\"https://pinkzebrahome.com/giftcertificates.php?action=redeem\",\"balance\":\"https://pinkzebrahome.com/giftcertificates.php?action=balance\"},\"rss\":{\"products\":[]}},\"secureBaseUrl\":\"https://pinkzebrahome.com\",\"cartId\":null,\"template\":\"pages/auth/login\",\"validationDictionaryJSON\":\"{\\\"locale\\\":\\\"en\\\",\\\"locales\\\":{\\\"validation_messages.valid_email\\\":\\\"en\\\",\\\"validation_messages.password\\\":\\\"en\\\",\\\"validation_messages.password_match\\\":\\\"en\\\",\\\"validation_messages.invalid_password\\\":\\\"en\\\",\\\"validation_messages.field_not_blank\\\":\\\"en\\\",\\\"validation_messages.certificate_amount\\\":\\\"en\\\",\\\"validation_messages.certificate_amount_range\\\":\\\"en\\\",\\\"validation_messages.price_min_evaluation\\\":\\\"en\\\",\\\"validation_messages.price_max_evaluation\\\":\\\"en\\\",\\\"validation_messages.price_min_not_entered\\\":\\\"en\\\",\\\"validation_messages.price_max_not_entered\\\":\\\"en\\\",\\\"validation_messages.price_invalid_value\\\":\\\"en\\\",\\\"validation_messages.invalid_gift_certificate\\\":\\\"en\\\"},\\\"translations\\\":{\\\"validation_messages.valid_email\\\":\\\"You must enter a valid email.\\\",\\\"validation_messages.password\\\":\\\"You must enter a password.\\\",\\\"validation_messages.password_match\\\":\\\"Your passwords do not match.\\\",\\\"validation_messages.invalid_password\\\":\\\"Passwords must be at least 7 characters and contain both alphabetic and numeric characters.\\\",\\\"validation_messages.field_not_blank\\\":\\\" field cannot be blank.\\\",\\\"validation_messages.certificate_amount\\\":\\\"You must enter a gift certificate amount.\\\",\\\"validation_messages.certificate_amount_range\\\":\\\"You must enter a certificate amount between [MIN] and [MAX]\\\",\\\"validation_messages.price_min_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_messages.price_max_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_messages.price_min_not_entered\\\":\\\"Min. price is required.\\\",\\\"validation_messages.price_max_n
7048ot_entered\\\":\\\"Max. price is required.\\\",\\\"validation_messages.price_invalid_value\\\":\\\"Input must be greater than 0.\\\",\\\"validation_messages.invalid_gift_certificate\\\":\\\"Please enter your valid certificate code.\\\"}}\",\"validationFallbackDictionaryJSON\":\"{\\\"locale\\\":\\\"en\\\",\\\"locales\\\":{\\\"validation_fallback_messages.valid_email\\\":\\\"en\\\",\\\"validation_fallback_messages.password\\\":\\\"en\\\",\\\"validation_fallback_messages.password_match\\\":\\\"en\\\",\\\"validation_fallback_messages.invalid_password\\\":\\\"en\\\",\\\"validation_fallback_messages.field_not_blank\\\":\\\"en\\\",\\\"validation_fallback_messages.certificate_amount\\\":\\\"en\\\",\\\"validation_fallback_messages.certificate_amount_range\\\":\\\"en\\\",\\\"validation_fallback_messages.price_min_evaluation\\\":\\\"en\\\",\\\"validation_fallback_messages.price_max_evaluation\\\":\\\"en\\\",\\\"validation_fallback_messages.price_min_not_entered\\\":\\\"en\\\",\\\"validation_fallback_messages.price_max_not_entered\\\":\\\"en\\\",\\\"validation_fallback_messages.price_invalid_value\\\":\\\"en\\\",\\\"validation_fallback_messages.invalid_gift_certificate\\\":\\\"en\\\"},\\\"translations\\\":{\\\"validation_fallback_messages.valid_email\\\":\\\"You must enter a valid email.\\\",\\\"validation_fallback_messages.password\\\":\\\"You must enter a password.\\\",\\\"validation_fallback_messages.password_match\\\":\\\"Your passwords do not match.\\\",\\\"validation_fallback_messages.invalid_password\\\":\\\"Passwords must be at least 7 characters and contain both alphabetic and numeric characters.\\\",\\\"validation_fallback_messages.field_not_blank\\\":\\\" field cannot be blank.\\\",\\\"validation_fallback_messages.certificate_amount\\\":\\\"You must enter a gift certificate amount.\\\",\\\"validation_fallback_messages.certificate_amount_range\\\":\\\"You must enter a certificate amount between [MIN] and [MAX]\\\",\\\"validation_fallback_messages.price_min_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_fallback_messages.price_max_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_fallback_messages.price_min_not_entered\\\":\\\"Min. price is required.\\\",\\\"validation_fallback_messages.price_max_not_entered\\\":\\\"Max. price is required.\\\",\\\"validation_fallback_messages.price_invalid_value\\\":\\\"Input must be greater than 0.\\\",\\\"validation_fallback_messages.invalid_gift_certificate\\\":\\\"Please enter your valid certificate code.\\\"}}\",\"validationDefaultDictionaryJSON\":\"{\\\"locale\\\":\\\"en\\\",\\\"locales\\\":{\\\"validation_default_messages.valid_email\\\":\\\"en\\\",\\\"validation_default_messages.password\\\":\\\"en\\\",\\\"validation_default_messages.password_match\\\":\\\"en\\\",\\\"validation_default_messages.invalid_password\\\":\\\"en\\\",\\\"validation_default_messages.field_not_blank\\\":\\\"en\\\",\\\"validation_default_messages.certificate_amount\\\":\\\"en\\\",\\\"validation_default_messages.certificate_amount_range\\\":\\\"en\\\",\\\"validation_default_messages.price_min_evaluation\\\":\\\"en\\\",\\\"validation_default_messages.price_max_evaluation\\\":\\\"en\\\",\\\"validation_default_messages.price_min_not_entered\\\":\\\"en\\\",\\\"validation_default_messages.price_max_not_entered\\\":\\\"en\\\",\\\"validation_default_messages.price_invalid_value\\\":\\\"en\\\",\\\"validation_default_messages.invalid_gift_certificate\\\":\\\"en\\\"},\\\"translations\\\":{\\\"validation_default_messages.valid_email\\\":\\\"You must enter a valid email.\\\",\\\"validation_default_messages.password\\\":\\\"You must enter a password.\\\",\\\"validation_default_messages.password_match\\\":\\\"Your passwords do not match.\\\",\\\"validation_default_messages.invalid_password\\\":\\\"Passwords must be at least 7 characters and contain both alphabetic and numeric characters.\\\",\\\"validation_default_messages.field_not_blank\\\":\\\"The field cannot be blank.\\\",\\\"validation_default_messages.certificate_amount\\\":\\\"You must enter a gift certificate amount.\\\",\\\"validation_default_messages.certificate_amount_range\\\":\\\"You must enter a certificate amount between [MIN] and [MAX]\\\",\\\"validation_default_messages.price_min_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_default_messages.price_max_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_default_messages.price_min_not_entered\\\":\\\"Min. price is required.\\\",\\\"validation_default_messages.price_max_n
7048ot_entered\\\":\\\"Max. price is required.\\\",\\\"validation_default_messages.price_invalid_value\\\":\\\"Input must be greater than 0.\\\",\\\"validation_default_messages.invalid_gift_certificate\\\":\\\"Please enter your valid certificate code.\\\"}}\",\"carouselArrowAndDotAriaLabel\":\"Go to slide [SLIDE_NUMBER] of [SLIDES_QUANTITY]\",\"carouselActiveDotAriaLabel\":\"active\",\"carouselContentAnnounceMessage\":\"You are currently on slide [SLIDE_NUMBER] of [SLIDES_QUANTITY]\",\"themeSetting\":{\"optimizedCheckout-formChecklist-color\":\"#333333\",\"homepage_featured_products_show_carousel_arrows\":true,\"homepage_new_products_column_count\":4,\"optimizedCheckout-buttonPrimary-backgroundColorActive\":\"#000000\",\"optimizedCheckout-colorFocus\":\"#FF1378\",\"fontSize-root\":16,\"show_accept_amex\":false,\"optimizedCheckout-buttonPrimary-borderColorDisabled\":\"transparent\",\"homepage_top_products_count\":4,\"brandpage_products_per_page\":24,\"color-secondaryDarker\":\"\",\"color-secondaryLighter\":\"#F2F8FF\",\"card--alternate-color--hover\":\"#ffffff\",\"navUser-color\":\"#000000\",\"color-textBase--active\":\"#FF1378\",\"show_powered_by\":false,\"preview_catr_items_limit\":5,\"show_accept_amazonpay\":false,\"category_page_products_per_page\":24,\"social_icon_placement_bottom\":\"bottom_none\",\"button--secondary-colorHover\":\"#FF1378\",\"fontSize-h4\":14,\"checkRadio-borderColor\":\"#9F9F9F\",\"color-primaryDarker\":\"\",\"optimizedCheckout-buttonPrimary-colorHover\":\"#ffffff\",\"brand_size\":\"190x250\",\"optimizedCheckout-logo-position\":\"left\",\"optimizedCheckout-discountBanner-backgroundColor\":\"#e5e5e5\",\"color-textLink--hover\":\"#FF1378\",\"pdp-sale-price-label\":\"\",\"optimizedCheckout-headingPrimary-font\":\"Google_Lato_700\",\"logo_size\":\"250x100\",\"tab-mobile-borderColor\":\"#9F9F9F\",\"optimizedCheckout-formField-backgroundColor\":\"#ffffff\",\"optimizedCheckout-buttonSecondary-backgroundColorHover\":\"#f5f5f5\",\"PZ_Hero_Text_CTA_Text_value\":\"Lorem ipsum dolor sit amet, sequat.\",\"footer-backgroundColor\":\"#FFF0F7\",\"navPages-color\":\"#373737\",\"productpage_reviews_count\":9,\"optimizedCheckout-step-borderColor\":\"#dddddd\",\"scentflirt_products_img\":{\"196\":\"/content/kit-detail-189.png\",\"197\":\"/content/kit-detail-190.png\",\"198\":\"/content/kit-detail-191.png\"},\"show_accept_paypal\":false,\"paymentbuttons-paypal-label\":\"checkout\",\"paymentbuttons-paypal-shape\":\"rect\",\"optimizedCheckout-discountBanner-textColor\":\"#333333\",\"pdp-retail-price-label\":\"\",\"optimizedCheckout-buttonPrimary-font\":\"Google_Lato_500\",\"optimizedCheckout-backgroundImage-size\":\"1000x400\",\"pdp_sold_out_label\":\"\",\"carousel-dot-color\":\"#5D5D5D\",\"button--disabled-backgroundColor\":\"#FFFFFF\",\"blockquote-cite-font-color\":\"#999999\",\"optimizedCheckout-formField-shadowColor\":\"transparent\",\"special-font\":\"Northwell\",\"container-fill-base\":\"#ffffff\",\"homepage_featured_products_column_count\":4,\"button--default-color\":\"#FF1378\",\"pace-progress-backgroundColor\":\"#999999\",\"color-textLink--active\":\"#FF1378\",\"scentflirt_addon_option_ids\":{\"171\":{\"optionId\":\"122\",\"optionValue\":\"119\"}},\"optimizedCheckout-loadingToaster-backgroundColor\":\"#333333\",\"color-textHeading\":\"#FF1378\",\"show_accept_discover\":false,\"bc_base_url\":\"https://api.bigcommerce.com/\",\"scentflirt_comparison_chart\":\"/content/chart_comparison.png\",\"optimizedCheckout-formField-errorColor\":\"#d14343\",\"spinner-borderColor-dark\":\"#999999\",\"input-font-color\":\"#9F9F9F\",\"select-bg-color\":\"#ffffff\",\"navUser-main-dropdown-borderColor\":\"#ffffff\",\"show_accept_mastercard\":false,\"show_custom_fields_tabs\":false,\"color_text_product_sale_badges\":\"#ffffff\",\"optimizedCheckout-link-font\":\"Google_Lato_500\",\"homepage_show_carousel_arrows\":false,\"supported_payment_methods\":[\"card\",\"paypal\",\"bank\"],\"carousel-arrow-bgColor\":\"transparent\",\"lazyload_mode\":\"lazyload+lqip\",\"carousel-title-color\":\"#FF1378\",\"custom_heading_value\":\"\",\"show_accept_googlepay\":false,\"card--alternate-borderColor\":\"#FF1378\",\"homepage_new_products_count\":5,\"button--disabled-color\":\"#9F9F9F\",\"USA_states\":[{\"name\":\"Alabama\",\"abbreviation\":\"AL\"},{\"name\":\"Alaska\",\"abbreviation\":\"AK\"},{\"name\":\"American Samoa\",\"abbreviation\":\"AS\"}
7048,{\"name\":\"Arizona\",\"abbreviation\":\"AZ\"},{\"name\":\"Arkansas\",\"abbreviation\":\"AR\"},{\"name\":\"California\",\"abbreviation\":\"CA\"},{\"name\":\"Colorado\",\"abbreviation\":\"CO\"},{\"name\":\"Connecticut\",\"abbreviation\":\"CT\"},{\"name\":\"Delaware\",\"abbreviation\":\"DE\"},{\"name\":\"District Of Columbia\",\"abbreviation\":\"DC\"},{\"name\":\"Federated States Of Micronesia\",\"abbreviation\":\"FM\"},{\"name\":\"Florida\",\"abbreviation\":\"FL\"},{\"name\":\"Georgia\",\"abbreviation\":\"GA\"},{\"name\":\"Guam\",\"abbreviation\":\"GU\"},{\"name\":\"Hawaii\",\"abbreviation\":\"HI\"},{\"name\":\"Idaho\",\"abbreviation\":\"ID\"},{\"name\":\"Illinois\",\"abbreviation\":\"IL\"},{\"name\":\"Indiana\",\"abbreviation\":\"IN\"},{\"name\":\"Iowa\",\"abbreviation\":\"IA\"},{\"name\":\"Kansas\",\"abbreviation\":\"KS\"},{\"name\":\"Kentucky\",\"abbreviation\":\"KY\"},{\"name\":\"Louisiana\",\"abbreviation\":\"LA\"},{\"name\":\"Maine\",\"abbreviation\":\"ME\"},{\"name\":\"Marshall Islands\",\"abbreviation\":\"MH\"},{\"name\":\"Maryland\",\"abbreviation\":\"MD\"},{\"name\":\"Massachusetts\",\"abbreviation\":\"MA\"},{\"name\":\"Michigan\",\"abbreviation\":\"MI\"},{\"name\":\"Minnesota\",\"abbreviation\":\"MN\"},{\"name\":\"Mississippi\",\"abbreviation\":\"MS\"},{\"name\":\"Missouri\",\"abbreviation\":\"MO\"},{\"name\":\"Montana\",\"abbreviation\":\"MT\"},{\"name\":\"Nebraska\",\"abbreviation\":\"NE\"},{\"name\":\"Nevada\",\"abbreviation\":\"NV\"},{\"name\":\"New Hampshire\",\"abbreviation\":\"NH\"},{\"name\":\"New Jersey\",\"abbreviation\":\"NJ\"},{\"name\":\"New Mexico\",\"abbreviation\":\"NM\"},{\"name\":\"New York\",\"abbreviation\":\"NY\"},{\"name\":\"North Carolina\",\"abbreviation\":\"NC\"},{\"name\":\"North Dakota\",\"abbreviation\":\"ND\"},{\"name\":\"Northern Mariana Islands\",\"abbreviation\":\"MP\"},{\"name\":\"Ohio\",\"abbreviation\":\"OH\"},{\"name\":\"Oklahoma\",\"abbreviation\":\"OK\"},{\"name\":\"Oregon\",\"abbreviation\":\"OR\"},{\"name\":\"Palau\",\"abbreviation\":\"PW\"},{\"name\":\"Pennsylvania\",\"abbreviation\":\"PA\"},{\"name\":\"Puerto Rico\",\"abbreviation\":\"PR\"},{\"name\":\"Rhode Island\",\"abbreviation\":\"RI\"},{\"name\":\"South Carolina\",\"abbreviation\":\"SC\"},{\"name\":\"South Dakota\",\"abbreviation\":\"SD\"},{\"name\":\"Tennessee\",\"abbreviation\":\"TN\"},{\"name\":\"Texas\",\"abbreviation\":\"TX\"},{\"name\":\"Utah\",\"abbreviation\":\"UT\"},{\"name\":\"Vermont\",\"abbreviation\":\"VT\"},{\"name\":\"Virgin Islands\",\"abbreviation\":\"VI\"},{\"name\":\"Virginia\",\"abbreviation\":\"VA\"},{\"name\":\"Washington\",\"abbreviation\":\"WA\"},{\"name\":\"West Virginia\",\"abbreviation\":\"WV\"},{\"name\":\"Wisconsin\",\"abbreviation\":\"WI\"},{\"name\":\"Wyoming\",\"abbreviation\":\"WY\"}],\"navUser-main-dropdown-backgroundColor\":\"#ffffff\",\"PZ_Hero_Text_CTA_Button_Text_link\":\"#\",\"color-grey\":\"#999999\",\"body-font\":\"Google_Lato_400\",\"paymentbuttons-paypal-accelerated-content-font-weight\"
7048:\"400\",\"carousel-play-pause-button-textColor--hover\":\"#474747\",\"color_hover_product_sale_badges\":\"#000000\",\"color-price\":\"#FF1378\",\"color-primaryDark\":\"#FF1378\",\"pdp_sale_badge_label\":\"\",\"optimizedCheckout-buttonPrimary-borderColorActive\":\"transparent\",\"navPages-subMenu-backgroundColor\":\"#ffffff\",\"show_quick_payment_buttons\":true,\"optimizedCheckout-step-textColor\":\"#ffffff\",\"button--primary-backgroundColor\":\"#ffffff\",\"optimizedCheckout-formField-borderColor\":\"#cccccc\",\"checkRadio-color\":\"#FF1378\",\"show_product_dimensions\":false,\"optimizedCheckout-link-color\":\"#476bef\",\"card-figcaption-button-background\":\"#FF1378\",\"icon-color-hover\":\"#FF1378\",\"optimizedCheckout-headingSecondary-font\":\"Google_Lato_700\",\"headings-font\":\"Google_Lato_700\",\"label-backgroundColor\":\"#cccccc\",\"button--primary-backgroundColorHover\":\"#FF1378\",\"show_product_reviews\":true,\"button--default-borderColor\":\"transparent\",\"pdp-non-sale-price-label\":\"\",\"button--disabled-borderColor\":\"#9F9F9F\",\"label-color\":\"#ffffff\",\"select-arrow-color\":\"#FF1378\",\"logo_fontSize\":28,\"alert-backgroundColor\":\"#ffffff\",\"optimizedCheckout-logo-size\":\"250x100\",\"navUser-main-color-hover\":\"#000000\",\"default_image_brand\":\"img/BrandDefault.gif\",\"navUser-main-color\":\"#FF1378\",\"button--secondary-backgroundColorHover\":\"#ffffff\",\"card-title-color\":\"#000000\",\"button--secondary-colorActive\":\"#FF1378\",\"optimizedCheckout-headingSecondary-color\":\"#000000\",\"carousel-arrow-color--hover\":\"#FF1378\",\"color-price-pdp\":\"#000000\",\"scentflirt_addon_ids\":\"[171]\",\"product_list_display_mode\":\"grid\",\"paymentbanners-cartpage-logo-type\":\"primary\",\"fontSize-h5\":12,\"icon-ratingFullFilter\":\"#9F9F9F\",\"optimizedCheckout-link-hoverColor\":\"#002fe1\",\"product_size\":\"260x260\",\"paymentbuttons-paypal-color\":\"gold\",\"homepage_show_carousel\":false,\"optimizedCheckout-body-backgroundColor\":\"#ffffff\",\"carousel-arrow-borderColor\":\"transparent\",\"button--default-borderColorActive\":\"transparent\",\"header-backgroundColor\":\"#FFFFFF\",\"color_badge_product_sold_out_badges\":\"#007dc6\",\"color-greyDarkest\":\"#000000\",\"color_badge_product_sale_badges\":\"#007dc6\",\"price_ranges\":true,\"productpage_videos_count\":8,\"color-greyDark\":\"#666666\",\"optimizedCheckout-buttonSecondary-borderColorHover\":\"#999999\",\"optimizedCheckout-discountBanner-iconColor\":\"#333333\",\"optimizedCheckout-buttonSecondary-borderColor\":\"#cccccc\",\"optimizedCheckout-loadingToaster-textColor\":\"#ffffff\",\"optimizedCheckout-buttonPrimary-colorDisabled\":\"#ffffff\",\"optimizedCheckout-formField-placeholderColor\":\"#999999\",\"navUser-color-hover\":\"#FF1378\",\"default_image_gift_certificate\":\"img/GiftCertificate.png\",\"color-textBase--hover\":\"#FF1378\",\"color-errorLight\":\"#ffdddd\",\"club_pink_subscriber_id\":5,\"icon-ratingFull\":\"#FF1378\",\"social_icon_placement_top\":false,\"blog_size\":\"190x250\",\"shop_by_price_visibility\":true,\"optimizedCheckout-buttonSecondary-colorActive\":\"#000000\",\"paymentbanners-proddetailspage-color\":\"white\",\"color-warningLight\":\"#fffdea\",\"show_product_weight\":true,\"paymentbuttons-provider-sorting\":[\"paypal\",\"paypal-credit\",\"paypal-venmo\",\"googlepay\",\"applepay\"],\"optimizedCheckout-orderSummary-backgroundColor\":\"#ffffff\",\"button--default-colorActive\":\"#FFF0F7\",\"masterpass-button-color\":\"black\",\"color-info\":\"#666666\",\"free_shipping_on_order\":\"FREE SHIPPING ON ORDERS OF $60+\",\"paymentbuttons-paypal-accelerated-content-font-family\":\"Lato, Arial, Helvetica, sans-serif\",\"scentflirt_products_ids\":\"[196,197,198,171]\",\"button--secondary-backgroundColor\":\"#FF1378\",\"show_product_quick_view\":false,\"button--default-borderColorHover\":\"transparent\",\"card--alternate-backgroundColor\":\"#ffffff\",\"hide_content_navigation\":false,\"amazon-button-color\":\"Gold\",\"optimizedCheckout-formChecklist-backgroundColorSelected\":\"#f5f5f5\",\"pdp-price-label\":\"\",\"show_copyright_footer\":true,\"swatch_option_size\":\"22x22\",\"optimizedCheckout-orderSummary-borderColor\":\"#707070\",\"color-primaryAccent\":\"#FF1378\",\"optimizedCheckout-show-logo\":\"none\",\"carousel-description-color\":\"#FFFFFF\",\"o
7048ptimizedCheckout-formChecklist-backgroundColor\":\"#ffffff\",\"subscription_products_ids\":\"[171]\",\"checkRadio-borderColor-checked\":\"#FF1378\",\"fontSize-h2\":21,\"optimizedCheckout-step-backgroundColor\":\"#757575\",\"color-textBase\":\"#000000\",\"pz_base_url\":\"https://subscriptions.pzebra.dev/api/v1/\",\"color-warning\":\"#f1a500\",\"paymentbuttons-paypal-accelerated-content-color\":\"white\",\"productgallery_size\":\"500x659\",\"pz_api_endpoint\":\"https://api2.pzebra.com/pzCore\",\"carousel-play-pause-button-textColor\":\"8f8f8f\",\"optimizedCheckout-headingPrimary-color\":\"#000000\",\"alert-color\":\"#333333\",\"shop_by_brand_show_footer\":false,\"card-figcaption-button-color\":\"#ffffff\",\"paymentbuttons-paypal-accelerated-content-label\":\"checkout\",\"color-textSecondary--active\":\"#333333\",\"optimizedCheckout-formField-inputControlColor\":\"#FFFFFF\",\"optimizedCheckout-contentPrimary-color\":\"#000000\",\"optimizedCheckout-buttonSecondary-font\":\"Google_Lato_500\",\"storeName-color\":\"#FF1378\",\"form-label-font-color\":\"#000000\",\"consultant\":{\"find\":{\"title\":\"Find a consultant in your area\",\"description\":\"Shop with your local consultant\"},\"label\":{\"change_my_consultant\":\"Change my consultant\",\"my_parties\":\"My parties\"},\"default_consultant\":\"ittest 1\",\"default_consultant_attribute_key\":\"1\",\"search\":{\"title\":\"Search for a consultant by name\",\"description\":\"Find a Consultant by searching for their first or last name or initials.\"}},\"PZ_Hero_Text_CTA_Button_Text_value\":\"SHOP ALL DIFFUSERS OILS\",\"searchpage_products_per_page\":24,\"testing_url\":\"https://pinkzebra.atdemo.live/\",\"optimizedCheckout-backgroundImage\":\"\",\"color-greyLightest\":\"#e5e5e5\",\"optimizedCheckout-header-backgroundColor\":\"#FF1378\",\"productpage_related_products_count\":10,\"optimizedCheckout-buttonSecondary-backgroundColorActive\":\"#e5e5e5\",\"color-textLink\":\"#7B7B7B\",\"color-greyLighter\":\"#cccccc\",\"category_default_sort\":\"BEST_SELLING\",\"paymentbanners-homepage-ratio\":\"8x1\",\"color-secondaryDark\":\"\",\"fontSize-h6\":11,\"carousel-arrow-color\":\"#FF1378\",\"productpage_similar_by_views_count\":10,\"aws_cloudfront_url\":\"https://d2olgbsrw4fnsq.cloudfront.net/dev/\",\"pdp-custom-fields-tab-label\":\"\",\"afterpay-button-color\":\"black-mint\",\"navUser-main-background-color\":\"#ffffff\",\"optimizedCheckout-buttonPrimary-color\":\"#ffffff\",\"show_product_swatch_names\":true,\"loadingOverlay-backgroundColor\":\"#ffffff\",\"paymentbanners-proddetailspage-ratio\":\"8x1\",\"navPages-subMenu-separatorColor\":\"#ffffff\",\"navPages-color-hover\":\"#FF1378\",\"button--secondary-color\":\"#ffffff\",\"input-bg-color\":\"#ffffff\",\"color-infoLight\":\"#dfdfdf\",\"paymentbanners-homepage-color\":\"white\",\"googlepay-button-color\":\"black\",\"product_sale_badges\":\"none\",\"default_image_product\":\"img/ProductDefault.gif\",\"navUser-dropdown-borderColor\":\"#ffffff\",\"optimizedCheckout-buttonPrimary-colorActive\":\"#ffffff\",\"color-greyMedium\":\"#757575\",\"optimizedCheckout-formChecklist-borderColor\":\"#cccccc\",\"fontSize-h1\":25,\"homepage_featured_products_count\":20,\"color-greyLight\":\"#999999\",\"paymentbuttons-paypal-accelerated-border-color\":\"black\",\"optimizedCheckout-logo\":\"\",\"icon-ratingEmpty\":\"#FFFFFF\",\"show_product_details_tabs\":true,\"icon-color\":\"#FF1378\",\"aws_url\":\"https://8qz6kpk3g8.execute-api.us-east-1.amazonaws.com/dev/\",\"checkout-paymentbuttons-paypal-shape\":\"rect\",\"overlay-backgroundColor\":\"#333333\",\"input-border-color-active\":\"#FF1378\",\"hide_contact_us_page_heading\":false,\"container-fill-dark\":\"#e5e5e5\",\"product_sold_out_badges\":\"none\",\"homepage_show_carousel_play_pause_button\":false,\"optimizedCheckout-buttonPrimary-backgroundColorDisabled\":\"#cccccc\",\"button--primary-color\":\"#FF1378\",\"focusTooltip-backgroundColor\":\"#313440\",\"optimizedCheckout-buttonPrimary-borderColorHover\":\"transparent\",\"color-successLight\":\"#d5ffd8\",\"paymentbuttons-number-of-buttons\":1,\"color-greyDarker\":\"#333333\",\"show_product_quantity_box\":true,\"element-border-color\":\"#707070\",\"color-success\":\"#008a06\",\"spinner-borderColor-light\":\"#ffffff\",\"zoom_size\":\"680x680\",\"color-white\":\"#ffffff\",\"color_hover_product_sold_out_badges\":\"#000000\",\"facet_price_range\":[{\"min\":0,\"max\":15,\"label\":\"$0—$15\"},{\"min\":15,\"max\":25,\"label\":\"$15—$25\"},{\"min\":25,\"max\":40,\"label\":\"$25—$40\"},{\"min\":40,\"max\":45,\"label\":\"$40—$45\"},{\"min\":45,\"max\":50,\"label\":\"$45—$50\"},{\"min\":50,\"max\":60,\"label\":\"$50—$60\"},{\"min\":60,\"max\":10000,\"label\":\"$60 & UP\"}],\"optimizedCheckout-buttonSecondary-backgroundColor\":\"#ffffff\",\"productview_thumb_size\":\"50x50\",\"fontSize-h3\":16,\"optimizedCheckout-header-borderColor\":\"#dddddd\",\"paymentbuttons-container\":\"medium\",\"carousel-dot-color-active\":\"#FF1378\",\"input-border-color\":\"#9F9F9F\",\"optimizedCheckout-buttonPrimary-backgroundColor\":\"#333333\",\"color-secondary\":\"#ABCAE9\",\"carousel-play-pause-button-borderColor\":\"#ffffff\",\"carousel-bgColor\":\"transparent\",\"checkout-paymentbuttons-paypal-color\":\"black\",\"button--primary-backgroundColorActive\":\"#FF1378\",\"color-textSecondary--hover\":\"#333333\",\"color-availability-text\":\"#008000\",\"color-whitesBase\":\"#e5e5e5\",\"body-bg\":\"#ffffff\",\"dropdown--quickSearch-backgroundColor\":\"#ffffff\",\"navUser-dropdown-backgroundColor\":\"#ffffff\",\"color-primary\":\"#FF1378\",\"scentflirt_subscriber_type_id\":4,\"optimizedCheckout-contentSecondary-font\":\"Google_Lato_400\",\"optimizedCheckout-contentPrimary-font\":\"Google_Lato_400\",\"navUser-main-indicator-backgroundColor\":\"#333333\",\"supported_card_type_icons\":[\"american_express\",\"diners_club\",\"discover\",\"mastercard\",\"unionpay\",\"visa\"],\"navigation_design\":\"simple\",\"optimizedCheckout-formField-textColor\":\"#333333\",\"color-black\":\"#ffffff\",\"focusTooltip-textColor\":\"#ffffff\",\"homepage_top_products_column_count\":4,\"hide_page_heading\":false,\"checkout-paymentbuttons-paypal-size\":\"large\",\"optimizedCheckout-buttonSecondary-colorHover\":\"#333333\",\"button--primary-colorActive\":\"#ffffff\",\"paymentbanners-cartpage-logo-position\":\"left\",\"homepage_stretch_carousel_images\":false,\"optimizedCheckout-contentSecondary-color\":\"#757575\",\"card-title-color-hover\":\"#FF1378\",\"checkout-paymentbuttons-paypal-label\":\"pay\",\"hide_breadcrumbs\":false,\"show_accept_klarna\":false,\"applePay-button\":\"black\",\"modal
7048-fill-base\":\"FFF7FA\",\"thumb_size\":\"100x100\",\"navUser-background-color\":\"#F2F8FF\",\"optimizedCheckout-buttonPrimary-borderColor\":\"#333333\",\"navUser-indicator-backgroundColor\":\"#333333\",\"optimizedCheckout-buttonSecondary-borderColorActive\":\"#757575\",\"optimizedCheckout-header-textColor\":\"#333333\",\"optimizedCheckout-show-backgroundImage\":false,\"optimizedCheckout-formField-shipping-inputControlColor\":\"#FF1378\",\"color-primaryLight\":\"#FFF0F7\",\"color-blackLight\":\"#221f20\",\"hide_blog_page_heading\":false,\"hide_category_page_heading\":true,\"scentflirt_kit_ids\":\"[196,197,198]\",\"optimizedCheckout-text-font\":\"Google_Lato_400\",\"banner--deafault-backgroundColor\":\"#FF1378\",\"show_accept_visa\":false,\"logo-position\":\"left\",\"carousel-dot-bgColor\":\"#ffffff\",\"optimizedCheckout-form-textColor\":\"#666666\",\"paymentbuttons-paypal-accelerated-checkout-color\":\"#444\",\"optimizedCheckout-buttonSecondary-color\":\"#333333\",\"button--icon-svg-color\":\"#FF1378\",\"color-secondaryLight\":\"#D5EAFF\",\"alert-color-alt\":\"#ffffff\",\"color_text_product_sold_out_badges\":\"#ffffff\",\"checkRadio-backgroundColor\":\"#ffffff\",\"facebook_app_id\":\"270454785773283\",\"optimizedCheckout-buttonPrimary-backgroundColorHover\":\"#666666\",\"carousel-play-pause-button-bgColor\":\"#ffffff\",\"input-disabled-bg\":\"#F8F8F8\",\"PZ_Hero_Text_CTA_Heading_value\":\"DIFFUSERS OIL\",\"button--default-colorHover\":\"#FFF0F7\",\"paymentbanners-cartpage-text-color\":\"black\",\"dropdown--wishList-backgroundColor\":\"#ffffff\",\"container-border-global-color-base\":\"#707070\",\"productthumb_size\":\"120x120\",\"button--primary-colorHover\":\"#ffffff\",\"color-error\":\"#cc4749\",\"button--secondary-backgroundColorActive\":\"#ffffff\",\"homepage_blog_posts_count\":3,\"color-textSecondary\":\"#000000\",\"gallery_size\":\"300x300\"},\"storefrontAPIToken\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjaWQiOlsxXSwiY29ycyI6WyJodHRwczovL3Bpbmt6ZWJyYWhvbWUuY29tIl0sImVhdCI6MTc5MDUwNjc1NiwiaWF0IjoxNzkwMzMzOTU2LCJpc3MiOiJCQyIsInNpZCI6MTAwMjU0ODA5MCwic3ViIjoiQkMiLCJzdWJfdHlwZSI6MCwidG9rZW5fdHlwZSI6MX0.Dbbz5Ky_KmgYOqRNc1mNuklCGA8U9ANSp2dp5XrHfP_fERT3ZwmFrRT_ZM97Q6g0oEvbpO9Q1zJRl-0DJN1jjA\",\"customer\":null,\"pzAPIEndpoint\":\"https://api2.pzebra.com/pzCore\",\"pageType\":\"login\",\"outOfStock\":\"Out Of Stock\",\"priceRange\":[{\"min\":0,\"max\":15,\"label\":\"$0—$15\"},{\"min\":15,\"max\":25,\"label\":\"$15—$25\"},{\"min\":25,\"max\":40,\"label\":\"$25—$40\"},{\"min\":40,\"max\":45,\"label\":\"$40—$45\"},{\"min\":45,\"max\":50,\"label\":\"$45—$50\"},{\"min\":50,\"max\":60,\"label\":\"$50—$60\"},{\"min\":60,\"max\":10000,\"label\":\"$60 & UP\"}],\"subscription_products_ids\":\"[171]\",\"club_pink\":\"Club Pink members\",\"preferred\":\"ScentFlirt members\",\"exclusive\":\"ScentFlirt members exclusive\",\"scentflirt_ids\":\"[196,197,198,171]\",\"useValidEmail\":\"Please use a valid email address, such as [email protected].\",\"enterPass\":\"You must enter a password.\"}").load();
7049            }
7050        </script>
7050
7051        
7051<script async defer src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/dist/theme-bundle.main.js" onload="onThemeBundleMain()"></script>
7051
7052
7053        
7054        
7054<script defer src="https://connect.facebook.net/en_US/sdk.js"></script>
7054
7055        
7055<script defer src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/modules/pztv-integration.js"></script>
7055
7056        
7056<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/modules/show-consultant-form.js"></script>
7056
7057        
7057<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/modules/localstorage-and-cart-meta-api.js"></script>
7057
7058        
7058<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/modules/wishlist.js"></script>
7058
7059        
7059<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/modules/mobile-menu-setting.js"></script>
7059
7060        
7060<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/modules/sf-modal-content.js"></script>
7060
7061        
7061<script type="text/javascript" src="https://cdn11.bigcommerce.com/shared/js/csrf-protection-header-5eeddd5de78d98d146ef4fd71b2aedce4161903e.js"></script>
vendor: 1 bytes, line 7061
7061
7062<script src='https://na.shgcdn3.com/collector.js' async ></script>
7062<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/gsap.min.js"></script>
vendor: 1 bytes, line 7062
7062
7063<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/ScrollTrigger.min.js"></script>
vendor: 1 bytes, line 7063
7063
7064<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.20.3/TweenMax.min.js"></script>
7064<script>
7065  !function(c,n,r,t){if(!c[r]){var i,d,p=[];d="PROD"!==t&&t?"STAGING"===t?"https://cdn.gladly.qa/gladly/chat-sdk/widget.js":t:"https://cdn.gladly.com/chat-sdk/widget.js",c[r]={init:function(){i=arguments;var e={then:function(t){return p.push({type:"t",next:t}),e},catch:function(t){return p.push({type:"c",next:t}),e}};return e}},c.__onHelpAppHostReady__=function(t){if(delete c.__onHelpAppHostReady__,(c[r]=t).loaderCdn=d,i)for(var e=t.init.apply(t,i),n=0;n<p.length;n++){var a=p[n];e="t"===a.type?e.then(a.next):e.catch(a.next)}},function(){try{var t=n.getElementsByTagName("script")[0],e=n.createElement("script");e.async=!0,e.src=d+"?q="+(new Date).getTime(),t.parentNode.insertBefore(e,t)}catch(t){}}()}}
7066  (window,document,'Gladly','PROD')
7067</script>
7067<script>
7068  window.gladlyConfig = {
7069    appId: 'pinkzebrahome.com'
7070  };
7071</script>
7071      
7071<script>
7072        (function() {
7073          window.shogunVariables = {};
7074          window.shogunVariables.orderId = '';
7075        })();
7076      </script>
vendor: 1 bytes, line 7076
7076
7077<script data-cfasync="false" data-dd-sm-ignore="true" data-cookieconsent="ignore" id="wsa-tag-manager-javascript-f-test" nonce="">!function(w,d){if(d.location.href.indexOf('showHidden=true')<0&&d.location.href.indexOf('shogun.page/previews')<0){w.TagRocket=w.TagRocket||{};var T=w.TagRocket;T.tef=[];w.onerror=function(m,s,l,c,e){T.tef.push((l?(l+' '):'')+(c?(c+' '):'')+m+(m.colno?(':'+m.colno):'')+(s?(' '+s):''));};var m=new Date().toISOString(),q='wsa-tag-manager-javascript-',z;T.taf=function(s){w.dataLayer=w.dataLayer||[];if(!w.gtag){w.gtag=function(){dataLayer.push(arguments)};gtag('js',new Date);t=d.createElement('script');t.async=!0;t.setAttribute('src','https://www.googletagmanager.com/gtag/js?id=G-7XTJM93TLW');d.head.appendChild(t)};if(!w.wsa_tre){var n='denied';gtag('consent',{functionality_storage:n,ad_storage:n,analytics_storage:n,ad_user_data:n,ad_personalization:n,personalization_storage:n,security_storage:n});gtag('config',"G-7XTJM93TLW",{groups:'TagRocketErrorTracking',send_page_view:false});gtag('config',"G-0XNHDCESR7",{groups:'TagRocketErrorTracking',send_page_view:false});gtag('event','tag_rocket_error',{send_to:["G-0XNHDCESR7"],description:'Script Failure',app_version:'3.48.21',tag_rocket_version:'1.95',ua:navigator.userAgent});};w.wsa_tre=1;if(w.console)console.error('Tag Rocket (f): '+s,T.tef);T.tef.forEach(function(e){gtag('event','app_error',{send_to:'G-7XTJM93TLW',scope:s,description:s+' 3.48.21 f '+e,message:'f '+e,app_version:'3.48.21',automatic:1,tag_rocket_version:'1.95',pagedatetime:m,datetime:m,ua:navigator.userAgent,tags:"|unknown",environment:'Production'})})};p=function(){if(!T.ts&&!d.getElementById(q+'second'))T.taf('Header Script Missing');else if(!T.tss)T.taf('Header Script Failure1');else if(!T.ts)T.taf('Header Script Failure2');if(!T.tm&&!d.getElementById(q+'main'))T.taf('Footer Script Missing');else if(!T.tm)T.taf('Footer Script Failure')};if(w.addEventListener)w.addEventListener('DOMContentLoaded',p);else w.attachEvent('onDOMContentLoaded',p)}}(window,document)</script>
vendor: 2 bytes, line 7077
7077
7078<script data-cfasync="false" data-dd-sm-ignore="true" data-cookieconsent="ignore" id="wsa-tag-manager-javascript-main" nonce="">
7079/*
7080    Web Site Advantage: Tag Rocket App 2 of 2 Footer [1.95.88285] Proprietary Runtime
7081    Licensed for use only by authorised Web Site Advantage customers.
7082    Copyright (C) 2020 - 2026 Web Site Advantage Pty Ltd.
7083*/
7084
7085!function(w,d){if(d.location.href.indexOf('showHidden=true')<0&&d.location.href.indexOf('shogun.page/previews')<0){var T=w.TagRocket;try{if(!T||T.block)return;T.y=function(a){return T.H(T.u(a))};T.u=function(a){return T.H(T.getProductId('GoogleAds','ItemGroupId',a,"[[psku]]"))};T.q=function(a){a.google_business_vertical='retail';return a};T.H=function(a){return T.P(a,/ /g)};T.ak=function(a,b,c){a.item_list_name=b;a.item_list_id=c;if(a.items)T.e(a.items,function(e){T.ak(e,b,c)});return a};T.ae=function(a){var b=a.couponCodes,c=a.taxTotal,e=a.shippingMethod,f,g=[],h;T.e(T.an(a.items,200),function(i){h=T.aj(i);if(h)g.push(h)});f={value:a.grandTotal,currency:a.currency.code,items:g};T.p(f,'tax',c);T.p(f,'coupon',b);T.p(f,'shipping_tier',e);return f};T.aj=function(a,b){var c=a.price,e=a.totalDiscount,f=a.couponCodes,g=a.category,h=a.quantity,i=a.index,j=a.brand,k,l={item_id:T.aI(a),item_name:a.name};if(T.w(c))l.price=c;if(a.isVariant){k=a.variantName;if(k)l.item_variant=''+k}if(e)l.discount=T.r(e/(h||1),2);T.p(l,'coupon',f);T.p(l,'reason',b);T.p(l,'quantity',h);T.p(l,'index',i);l.item_brand=j?j:'(no brand)';var m='(no visible category)',n=[m];if(g){n=g.breadcrumbs;m=g.path}l.item_category=m;l.item_category2=n.slice(0,1).join("/");l.item_category3=n.slice(0,2).join("/");l.item_category4=n.slice(0,3).join("/");l.item_category5=n.slice(0,4).join("/");if(T.aJ('GoogleAnalyticsFourItemPending',{product:a,item:l}))return l};T.aI=function(a){return T.getProductId('GA4','ItemGroupId',a,"[[psku]]")};T.aD=function(a,b){var c=T.T(b.name);T.t('GF27',function(){T.ad(a,{promotion_id:b.id,promotion_name:c,creative_name:c,creative_slot:b.location,items:[{promotion_id:b.id,promotion_name:c,creative_name:c,creative_slot:b.location}]})},1)};T.aV=function(a,b){var c=a.price,e=a.brand,f={content_id:T.aY(a),content_type:'product_group',content_name:a.name};b=b||a.category;if(b)f.content_category=b.path;if(e)f.brand=e;if(T.w(c))f.price=c;return f};T.aW=function(a,b){var c=a.price,e=a.brand,f=a.quantity,g=a.category,h={content_id:T.aZ(a),content_type:'product',content_name:a.name};if(g)h.content_category=g.path;if(e)h.brand=e;if(b)h.quantity=Math.abs(b);else if(f)h.quantity=f;if(T.w(c))h.price=c;return h};T.aY=function(a){return T.getProductId('TikTok','ItemGroupId',a,"[[psku]]")};T.aZ=function(a){return T.getProductId('TikTok','ItemId',a,"[[psku]]","[[vsku]]")};T.Z('load',function(){T.aU(function(){T.N(function(){T.t('TT2',function(){var a=function(){T.aT('https://analytics.tiktok.com/i18n/pixel/events.js?sdkid=D07P7U3C77UAB6445LB0&lib=ttq',{},function(){var b=w['ttq'];T.aR=function(){b.track.apply(b,arguments)};b.track2=T.aR;T.e(T.aQ,function(c){T.aU(function(){T.aR.apply(T,c)},500,'TikTok Queue')})})};if(T.K){a()}else{T.o(T.M,function(){if(T.K){a()}})}},1);T.t('GT2a',function(){if(T.K||T.aM){T.bc=!0;T.aT(T.bb)};T.o(T.M,function(){if(T.K||T.aM&&!T.bc){T.bc=!0;T.aT(T.bb)}})},1)});T.al='SearchPage';T.o(T.al,function(a){T.ad('search',{search_term:a.term})},'GF5',1);if(T.bj){T.bk(T.al,{term:T.bj})}T.t('SB21',function(){T.bl(d);if(T.bd()){T.bm(T.bn("["+T.bo+"='list']["+T.bp+"]"))}},1);if(T.bd()){T.t('SB21b',function(){T.br(T.bt());T.bu()},1)}if(!T.bd()){ }T.aA='LinkClick';T.o(T.aA,function(a){var b={link_url:T.T(a.href),description:T.T(a.label),value:a.value};T.p(b,'currency',T.j);T.ad('click_'+(T.aB(T.T(a.category)).split(" ")[0]),b)},'GF22',1);T.o(T.aA,function(a){T.aR('ClickButton',{value:a.value,currency:T.j,content_id:a.href,content_name:a.label,content_category:a.category})},'TT12',1);T.t('SB17',function(){var a='Social',b=function(c){return new RegExp('^https?://[a-zA-Z.]*'+c,'i')},e=[{f:/^tel:/i,g:'Phone',h:'@',i:0.0},{f:/^mailto:/i,g:'Email',h:'@',i:0.0},{f:/^https?:\/\//i,j:1,g:'Outbound Link',h:'@',i:0.0},{f:/^.*\.(pdf|zip|docx|doc|txt|msi|xlsx|xls|rtf|csv|exe|7z|pkg|rar|gz|zip|avi|mov|mp4|wmv|mp3|wav|wma)?(\?.*)?$/i,g:'Download',h:'@',i:0.0},{f:b('facebook.com/'),g:a,h:'Facebook',i:0.0},{f:b('plus.google.com/'),g:a,h:'Google+',i:0.0},{f:b('linkedin.com/'),g:a,h:'LinkedIn',i:0.0},{f:b('youtube.com/'),g:a,h:'YouTube',i:0.0},{f:b('twitter.com/'),g:a,h:'Twitter',i:0.0},{f:b('instagram.com/'),g:a,h:'Instagram',i:0.0},{f:b('pinterest.com/'),g:a,h:'Pinterest',i:0.0},{f:b('tumblr.com/'),g:a,h:'Tumblr',i:0.0}],k=[/^https?:\/\/cdn[0-9]+\.bigcommerce\.com\//i,/^https?:\/\/[^\/]*\.mybigcommerce\.com\//i],l=function(m){return T.e(k,function(n){if(m.match(n))return 1})},o=function(p){if(T.bv(p.tag,'clicked-'+T.P(p.category,/\s+/g))){if
7085(T.bw(p.tag,'target')=='_blank'){T.aU(function(){T.bk(T.aA,p)},0,'LinkClick Yield')}else{T.bk(T.aA,p)}}return true},m,q=d.getElementsByTagName('a');T.e(q,function(r){if(T.bx(r,'href')){m=T.bw(r,'href');if(!l(m)){T.e(e,function(s){if((!s.j||w.location.host!=r.host)&&m.match(s.f)){T.by(r,'click',(function(){var p={tag:r,href:m,category:s.g,label:T.P(s.h,'@',m),value:s.i};return function(){return o(p)}})())}})}}})},1)},1e3,'Wait For On Load')});T.at='SiteLogin';T.au='SiteLogout';T.o(T.at,function(a){T.ad('login',{method:a.method})},'GF17',1);T.o(T.au,function(){T.ad('logout',{method:'site'})},'GF18',1);T.t('SB1',function(){var a=T.d.id?'y':'n',b=T.bz('wsa-l')||'n',c='site';if(b!=a){if(a=='y'){T.bk(T.at,{method:c})}else{T.bk(T.au,{})}T.bA('wsa-l',a)}},1);T.t('SB8b',function(){var a=T.bB("form[action='/subscribe.php']"),b=T.bC('nl_email');if(a&&b){T.by(a,'submit',function(){T.bA('wsa-se',T.aB(b.value))})}},1);T.C='CheckoutStep5OrderCompleted';T.o(T.C,function(a){var b=a.orderAmount,c=[],e=0,f=0,g={value:b,currency:a.currency.code,transaction_id:''+a.orderId},h={value:b,currency:a.currency.code,transaction_id:''+a.orderId};if(a.totalDiscount){g.discount=a.totalDiscount;f=g.discount}T.e(a.items,function(i){e+=i.listPrice;c.push({id:T.y(i),price:i.listPrice,quantity:i.quantity,google_business_vertical:'retail'})});g.items=c;h.items=T.D(c);if(T.E(a.new_customer))g.new_customer=a.new_customer;g.send_to="AW-10776808640/99vbCLWwwJYaEMCZ5JIo";T.k('purchase',g,''+d.location+'/order-'+T.F,);T.k('purchase',h,''+d.location+'/order-'+T.F,)},'GA6',1);T.o(T.C,function(a){var b=a.couponCodes,c=a.paymentMethod,e=a.shippingMethod,f,g={method:'www',tax:a.taxTotal,shipping:a.shippingCostTotal,value:a.orderAmount,currency:a.currency.code,transaction_id:''+a.orderId,items:[]},h;T.p(g,'new_customer',a.new_customer);T.p(g,'coupon',b);T.p(g,'payment_type',c);T.p(g,'shipping_tier',e);T.e(T.an(a.items,200),function(i){f=T.aj(i);if(f)g.items.push(f)});h=T.D(g);T.ad('add_payment_info',g);T.ad('purchase',h)},'GF8',1);T.o(T.C,function(a){var b=a.items.map(function(c){return T.aW(c)});T.aR('AddPaymentInfo');T.aR('Purchase',{content_type:'product',value:a.orderAmount,currency:a.currency.code,contents:b,content_ids:b.map(function(e){return e.content_id})},{event_id:'p'+a.orderId})},'TT11',1);T.processOrder=function(a){T.t('SB11',function(){var b=new Date(),c=T.bz('wsa-ci');if(c!=a){T.F=a;T.bJ('/api/storefront/orders/'+a,function(e,f){T.t('SB11b',function(){if(e>0){try{var g=new Date("2024-07-31"),h=new Date("2024-07-31"),i=new Date(b.getTime()-466560e5),j=T.bz('wsa-lo'),k;if(j){k=new Date(j);f.new_customer=k<i}else if(g<i||(!c&&h<i))f.new_customer=!0}catch(l){T.a('SB25b','new_customer error: '+(l.message||l),1,l)}T.order=f;f.shippingMethod=T.bz('wsa-sm');f.paymentMethod=T.bz('wsa-pm');T.bP(f);T.bf({reason:'Order',cart:f},function(m){T.bi(m,'Order');f=m.cart;T.f(T.C,f);T.bQ=!0;while(T.gq&&T.be(T.gq)){var n=T.gq[0];T.gq.splice(0,1);gtag.apply(null,n)}T.bA('wsa-ci',T.F);T.bA('wsa-lo',b.toISOString());T.bR('wsa-c');T.bR('wsa-cc');T.bR('wsa-sm');T.bR('wsa-pm')})}else{T.a('SB25','Failed to get order: '+f+' '+T.F,1)}},1)})}},1)};T.x='CartItemChanged';T.ao='CartPage';T.bS=0;T.o(T.x,function(a){var b=a.item,c=a.change;if(c>
70850)T.k('add_to_cart',{value:b.price*c,currency:b.currency,items:[{id:T.y(b),google_business_vertical:'retail'}]})},'GA5',1);T.o(T.x,function(a){var b=a.item,c=a.change;if(c>0)T.k('conversion',{send_to:"AW-10776808640/aOvFCIbkwpYaEMCZ5JIo",value:b.price*c,currency:b.currency})},'GA1',1);T.o(T.x,function(a){var b=a.item,c=a.change,e=c>0&&'add_to_cart'||'remove_from_cart',f=T.aj(b),g={currency:b.currency,value:T.r(Math.abs(b.price*c),3),items:[f]};if(f){f.quantity=Math.abs(c);T.ad(e,g)}},'GF4',1);T.o(T.x,function(a){if(a.change>0){var b=a.item,c=[T.aW(b,a.change)];T.aR('AddToCart',{content_type:'product',currency:b.currency,value:b.price*a.change,contents:c,content_ids:c.map(function(e){return e.content_id})})}},'TT4',1);T.o(T.ao,function(a){var b,c=[];T.e(T.an(a.items,200),function(e){b=T.aj(e);if(b)c.push(b)});T.ad('view_cart',{value:a.grandTotal,currency:a.currency.code,items:c})},'GF10',1);T.bT=function(a,b,c){T.bU++;var e={change:a,cart:c,item:b,currency:c.currency.code,price:b.price,quantity:b.quantity,productId:b.productId,productSku:b.productSku,name:b.name};T.bk(T.x,e)};T.checkCart=function(f){var g='Check';if(!localStorage||Math.abs(new Date-T.bS)<50)return;T.bS=new Date;T.t('SB12',function(){T.bR('wsa-cc');T.bJ('/api/storefront/carts',function(h,i){T.t('SB12b',function(){if(h>0){if(i&&T.be(i)){T.bf({reason:g,cart:i[0],response:i},function(e){T.bi(e,g);var c=e.cart;T.bK(c)})}else{T.bK({items:[],currency:{code:T.j}})}}},1)})},1)};if(!T.bz('wsa-c')||T.bz('wsa-cc')=='y')T.checkCart();T.bV='JavaScriptError';T.bW=0;T.bX='LoadError';T.bY=0;T.ef=function(a,b,c,e,f){if(!T.bZ){var g,h,i='',j='',k,l,m=a.target;T.bZ=1;try{if(m&&m!=w&&m.nodeName){T.bZ=a;l=m.getAttribute('src');if(!l)l=m.getAttribute('href');if(l){if(!l.indexOf||l.indexOf('bat.bing')<0){T.bZ.targetUrl=l;T.bZ.targetPath=T.ca(m);if(T.bY<6){T.bk(T.bX,T.bZ)}}};return}try{if(a){if(typeof a=='string'){h='Message';i=a}else{b=a.filename;c=a.lineno;e=a.colno;f=a.error;i=a.message;if(a.filename){h='Event'}else if(a.originalEvent){g=a.originalEvent;h='Intercepted Event';b=b||g.filename;c=c||g.lineno;e=e||g.colno;f=f||g.error;i=i||g.message}else{h='Object';i=T.cb(a,Object.getOwnPropertyNames(a))}}}i=i||'Unknown';if(b)j+=b;if(c){if(j!=='')j+=': ';j+='L'+c;if(e)j+=' C'+e}if(j!=='')j+=': ';j+=i;k=h+' error=';if(f){if(typeof f=='string'){k+=f}else{k+=T.cb(f,Object.getOwnPropertyNames(f))}}else{k+='null'}}catch(f){h='Handler ERROR';i='The error processor had an error! '+f;T.a('OE1',i,1,f)}finally{if(!i.indexOf)T.a('OE2','No message.indexOf because it is a '+(typeof i),1,f);if(!i.indexOf||i.indexOf('Invalid login')<0){if(i=='{"isTrusted":true}')i='Cross Origin Script Error';T.bZ={type:h,message:i,filename:b,lineno:c,colno:e,error:f,action:j,label:k};T.bW++;if(T.bW<6){T.bk(T.bV,T.bZ)}}}}finally{T.bZ=0}}};if(T.eq){T.e(T.eq,function(n){T.ef.apply(T,n)})};T.cc='ConsoleError';T.ct=1;T.cd=0;T.cg=function(a){T.cd++;if(T.cd<6&&T.ct){var b='',c=0,e;while(T.be(b)<200&&T.be(a)>c){e=a[c];if(b)b+=', ';if(typeof e=='string')b+=e;else b+=T.cb(e);c++};if(b)T.bk(T.cc,{message:b})}};T.cf=function(){T.cg(arguments)};if(T.cq)T.e(T.cq,function(a){T.cg(a)});T.ba='JsonLdError';T.o(T.ba,function(a){T.a((a.element.id&&a.element.id.startsWith('wsa-rich-snippets'))?'JsonLdUs':'JsonLdOther',a.error,0,a.element)},1);T.aU(function(){T.e(T.bn("script[type='application/ld+json']"),function(a){if(a.text.trim()!=''){try{T.ch(T.P(T.P(a.text.trim(),/^(\/\/\s*)?<!\[CDATA\[|(\/\/\s*)?\]\]>$/g),/\n|\r|\t/g))}catch(b){T.bk(T.ba,{error:''+b,element:a})}}})},6e3,'Json-LD Check');T.aF='WebVitalsComplete';T.ci='WebVitalsPending';T.cj={};T.o(T.aF,function(a){var b=a.metric,c=b.attribution,e=T.R(),f={metric_id:b.id,metric_value:T.r(b.value,3),value:T.r(b.delta,3)};f.metric_rating=b.rating;if(b.debugTarget){f.debug_target=b.debugTarget.substring(0,100);f.debug_target2=b.debugTarget.substring(100)}T.p(f,'load_state',c.loadState);T.p(f,'lcp_url',c.url);T.p(f,'ttfb',c.timeToFirstByte);T.p(f,'lcp_resource_load_delay',c.resourceLoadDelay);T.p(f,'lcp_element_render_delay',c.elementRenderDelay);T.p(f,'inp_interaction_type',c.interactionType);T.p(f,'inp_interaction_time',c.interactionTime);T.p(f,'cls_largest_shift_time',c.largestShiftTime);T.p(f,'ttfb_waiting_duration',c.waitingDuration);if(e){T.p(f,'downlink',e.downlink);T.p(f,'rtt',e.rtt)}T.ad(b.name,f)},'GF28',1);T.t('SB16',function(){var a=function(b){if(!b.value&&b.value!=0){T.a('SB16b','Web Vital '+b.name+' missing value',1,b);T.ck('Web Vital '+b.name+' missing value',b);return}var c=b.attribution;if(c)b.debugTarget=c.element||c.target||c.interactionTarget||c.largestShiftTarget;T.cj[b.name]=b;T.N(function(){if(T.aJ(T.ci,{metric:b})){T.f(T.aF,{metric:b});T.cj[b.name]=b}})};T.aT('https://unpkg.com/[email protected]/dist/web-vitals.attribution.iife.js',{crossOrigin:"anonymous",fetchPriority:"low",onvisible:!1},function(){var e=webVitals;e.onFCP(a);e.onLCP(a);e.onCLS(a);e.onTTFB(a);e.onINP(a);if(T.cl)T.cl()})},1);T.aG='PerformanceMetrics';T.o(T.aG,function(a){var b=a.metrics,c=b.responseEnd,e=T.R(),f={},g={};if(e){T.p(f,'downlink',e.downlink);T.p(f,'rtt',e.rtt);T.p(g,'downlink',e.downlink);T.p(g,'rtt',e.rtt)}if(c){f.metric_value=c;f.metric_id='ttlb'+T.aH;f.metric_rating=c<=800?'good':(c>1800?'poor':'needs-improvement');T.ad('TTLB',f)}c=b.finalResponseHeadersStart;if(c){g.metric_value=c;g.metric_id='frhs'+T.aH;g.metric_rating=c<=800?'good':(c>1800?'poor':'needs-improvement');T.ad('FRHS',g)}},'GF33b',1);T.cm=1;T.cn=function(){if(T.cm&&d.visibilityState=='hidden'){T.cm=0;T.co('hidden')}};T.cp=function(){if(T.cm){T.cm=0;T.co('pagehide')}};T.co=function(a){var b={},c=T.cj,e=T.cr;if(e){['activationStart','fetchStart','requestStart','responseStart','responseEnd','domContentLoadedEventStart','domContentLoadedEventEnd','loadEventStart','loadEventEnd','transferSize','finalResponseHeadersStart','type','redirectCount'].forEach(function(f){if(e[f]||e[f]==0)b[f]=T.r(e[f])});if(c.FCP)b.fcp=T.r(c.FCP.value);if(c.CLS){b.cls=T.r(c.CLS.value,3);if(c.CLS.debugTarget){b.clsSelectorPart1=c.CLS.debugTarget.slice(0,100);b.clsSelectorPart2=c.CLS.debugTarget.slice(100)}}if(c.LCP){b.lcp=T.r(c.LCP.value);if(c.LCP.debugTarget){b.lcpSelectorPart1=c.LCP.debugTarget.slice(0,100);b.lcpSelectorPart2=c.LCP.debugTarget.slice(100)}}T.e(T.S('paint'),function(g){if(g.name=='first-paint')b.fp=T.r(g.startTime)});T.cs=b;T.bk(T.aG,{eventType:a,metrics:b})}};T.cl=function(){T.by(w,'visibilitychange',T.cn);T.Z('pagehide',T.cp)};T.N(function(){var a=0,b='StencilUtils',c=b+' Check ';e=function(){a++;
7085if(w.stencilUtils){T.bk(b,w.stencilUtils);['cart-item-add-remote','cart-item-remove-remote'].forEach(function(a){w.stencilUtils.hooks.on(a,function(b){T.t('SB13',function(){T.checkCart()},1)})});T.am='QuickSearch';T.o(T.am,function(a){T.ad('quick_search',{search_term:a.term})},'GF5b',1);w.stencilUtils.hooks.on('search-quick',function(a){T.cu=T.cv(a,'target.value');T.cw=T.cx(T.cw,function(){if(T.cu&&T.be(T.cu)>2)T.bk(T.am,{term:T.cu})},1e3)})}else a<9&&T.aU(e,1e3,c+a)};T.aU(e,1,c)});T.cy();T.cz();T.cA();T.cB()}catch(e){T.tef=T.tef||[];T.tef.push(e);if(T.a)T.a('FOOT',''+e,1,e);else if(T.taf)T.taf('Footer Script ISSUE')}T.tm=1}}(window,document)
7086
7087</script>
7087               
7088<script>
7089const sm_customer_email = ""
7090const sm_PZ_API_BASE_URL          = ((window.location.origin === "http://localhost:3000")|| (window.location.origin === "https://pinkzebrahome.com")) ? 'https://api.pzebra.com/pzCore/' : 'https://api.pzebra.dev/pzCore/';
7091const sm_PZ_API_KEY               = ((window.location.origin === "http://localhost:3000")|| (window.location.origin === "https://pinkzebrahome.com")) ? 'CcnelxxstV85XvVMGJZcY34O7kBbAjtxazBsnhXE' : 'aLPW0lIlXjcKFGVjNnDh91HQSujdEIo4uu2159Jj';
7092const sm_PZ_HEADERS = {
7093    accept: 'application/json',
7094    'content-type': 'application/json',
7095    'x-api-key': sm_PZ_API_KEY
7096}
7097
7098/**
7099 * Segment Routing Manager
7100 * 
7101 * Dynamically injects customer segment data into URL parameters based on configuration rules.
7102 * This system allows for contextual personalization by exposing segment membership through
7103 * URL params while maintaining privacy through value aliasing.
7104 * 
7105 * Flow:
7106 * 1. Fetches segment routing configuration from settings
7107 * 2. Retrieves current customer's segment memberships
7108 * 3. Evaluates each segment rule against current page path
7109 * 4. Injects applicable segments into URL params using configured aliases
7110 * 
7111 * Pattern Matching Support:
7112 * - Exact match: "/shop" matches only /shop
7113 * - Wildcard suffix: "/shop/*" matches /shop, /shop/, /shop/products, etc.
7114 * - Wildcard prefix: "*\checkout" matches /checkout, /cart/checkout, /secure/checkout
7115 * - Contains: "*account*" matches /my-account, /user/account/settings, etc.
7116 * - Global: "*" matches all pages
7117 * 
7118 */
7119const sm_segment_routing_manager = async (customer_email) => {
7120	const queryPath = window.location.pathname;
7121	
7122	// Guard: Require authenticated customer
7123	if (!customer_email) {
7124		// console.log('No customer email found; skipping segment injection.');
7125		return;
7126	}
7127
7128	const [Segment_Routing, segmentResponse] = await Promise.all([
7129		// Request 1: Get segment routing configuration
7130		fetch(`${sm_PZ_API_BASE_URL}settings/web/config?schema=${encodeURIComponent('Storefront_Segment_Routing')}&_t=${Date.now()}`, {
7131			method: 'GET',
7132			headers: sm_PZ_HEADERS
7133		}).then(res => res.json()),
7134		
7135		// Request 2: Get customer segments
7136		fetch(`${sm_PZ_API_BASE_URL}segments/get_customer_segments`, {
7137			method: 'POST',
7138			headers: sm_PZ_HEADERS,
7139			body: JSON.stringify({ body: { email: customer_email } })
7140		}).then(res => res.json())
7141	]);
7142
7143	// Validate configuration structure
7144	if (!Segment_Routing?.config?.storefront_segment_routing || 
7145		!Segment_Routing?.config?.storefront_segment_routing?.segments_rules || 
7146		!Segment_Routing?.config?.storefront_segment_routing?.enabled
7147	) {
7148		console.warn('Segment routing is disabled or improperly configured');
7149		return;
7150	}
7151
7152	const {exposure_method, global_config, segments_rules } = Segment_Routing.config.storefront_segment_routing;
7153
7154	// Extract customer's segment memberships
7155	let userSegmentsNames = [];
7156	try {
7157		userSegmentsNames = (segmentResponse.segments || []).map(seg => seg.segment_name);
7158		// console.log('Customer segments:', userSegmentsNames);
7159	} catch (error) {
7160		console.error('Error fetching user segments:', error);
7161		return;
7162	}
7163
7164	/* Path Pattern Matcher */
7165	const pathMatches = (path, pattern) => {
7166		// Normalize paths: remove trailing slash for consistency
7167		const normalizedPath = path.endsWith('/') && path.length > 1 
7168			? path.slice(0, -1) 
7169			: path;
7170		const normalizedPattern = pattern.endsWith('/') && pattern.length > 1 
7171			? pattern.slice(0, -1) 
7172			: pattern;
7173
7174		// Global wildcard
7175		if (normalizedPattern === '*') return true;
7176
7177		// Contains pattern: *keyword*
7178		if (normalizedPattern.startsWith('*') && normalizedPattern.endsWith('*')) {
7179			const keyword = normalizedPattern.slice(1, -1);
7180			return normalizedPath.includes(keyword);
7181		}
7182
7183		// Suffix wildcard: /path/*
7184		if (normalizedPattern.endsWith('/*')) {
7185			const basePath = normalizedPattern.slice(0, -2);
7186			return normalizedPath === basePath || normalizedPath.startsWith(basePath + '/');
7187		}
7188
7189		// Prefix wildcard: */path
7190		if (normalizedPattern.startsWith('*/')) {
7191			const endPath = normalizedPattern.slice(1); // Remove leading *
7192			return normalizedPath === endPath || normalizedPath.endsWith(endPath);
7193		}
7194
7195		// Exact match
7196		return normalizedPath === normalizedPattern;
7197	};
7198
7199	/**
7200	 * Check if current path is in exclusion list
7201	 * @param {string[]} excludeList - Array of path patterns to exclude
7202	 * @returns {boolean} True if current path matches any exclusion pattern
7203	 */
7204	const isPathExcluded = (excludeList) => {
7205		return excludeList.some(pattern => pathMatches(queryPath, pattern));
7206	};
7207
7208	/**
7209	 * Check if page is explicitly targeted (not via global wildcard)
7210	 * This is used to determine if a segment rule should override global exclusions
7211	 * 
7212	 * @param {string[]} targetPages - Array of target path patterns
7213	 * @returns {boolean} True if path is explicitly targeted (not just via "*")
7214	 */
7215	const isExplicitlyTargeted = (targetPages) => {
7216		return targetPages.some(pattern => {
7217			if (pattern === '*') return false; // Global wildcard is not explicit
7218			return pathMatches(queryPath, pattern);
7219		});
7220	};
7221
7222	// Evaluate segment rules and build injection list
7223	const segmentsToInject = [];
7224
7225	for (const rule of segments_rules) {
7226		// console.log(`[Segment Routing] Evaluating segment rule: ${rule.internal_name}`);
7227		
7228		// Rule must be enabled
7229		if (!rule.enabled) {
7230			// console.log(`[Segment Routing] ${rule.internal_name} Skipped: Rule disabled`);
7231			continue;
7232		}
7233
7234		// Customer must be in this segment
7235		if (!userSegmentsNames.includes(rule.internal_name)) {
7236			// console.log(`[Segment Routing] ${rule.internal_name} Skipped: Customer not in segment`);
7237			continue;
7238		}
7239
7240		// Current page must be in target pages
7241		const isTargetPage = rule.target_pages.some(pattern => pathMatches(queryPath, pattern));
7242		if (!isTargetPage) {
7243			// console.log(`[Segment Routing] ${rule.internal_name} Skipped: Page not in target_pages`);
7244			continue;
7245		}
7246
7247		// Page must not be in rule-specific exclusions
7248		if (isPathExcluded(rule.exclude_pages)) {
7249			// console.log(`[Segment Routing] ${rule.internal_name} Skipped: Page in rule exclusion list`);
7250			continue;
7251		}
7252
7253		// Check global exclusions (can be overridden by explicit targeting)
7254		const isGloballyExcluded = isPathExcluded(global_config.always_exclude_pages);
7255		const isExplicitTarget = isExplicitlyTargeted(rule.target_pages);
7256		
7257		if (isGloballyExcluded && !isExplicitTarget) {
7258			// console.log(`[Segment Routing] ${rule.internal_name} Skipped: Page globally excluded and not explicitly targeted`);
7259			continue;
7260		}
7261
7262		// Rule passes all checks - add to injection queue
7263		// console.log(`[Segment Routing] ${rule.internal_name} Approved for injection`);
7264		segmentsToInject.push({
7265			key: rule.param_key || global_config.default_key,
7266			value: rule.value_alias || rule.internal_name,
7267			internal_name: rule.internal_name
7268		});
7269	}
7270
7271	// Exit early if no segments qualify for injection
7272	if (segmentsToInject.length === 0) {
7273		// console.log('[Segment Routing] No applicable segments for current page');
7274		return;
7275	}
7276
7277	// Inject segments via configured exposure method
7278	if (exposure_method === 'url_param') {
7279		const urlParams = new URLSearchParams(window.location.search);
7280		
7281		// Group segments by parameter key
7282		const segmentsByKey = {};
7283		segmentsToInject.forEach(seg => {
7284			if (!segmentsByKey[seg.key]) {
7285				segmentsByKey[seg.key] = [];
7286			}
7287			segmentsByKey[seg.key].push(seg.value);
7288		});
7289
7290		// Add or update URL parameters
7291		Object.entries(segmentsByKey).forEach(([key, values]) => {
7292			const paramValue = values.join(global_config.multi_segment_separator);
7293			urlParams.set(key, paramValue);
7294		});
7295
7296		// Update URL without triggering page reload
7297		const newURL = `${window.location.pathname}?${urlParams.toString()}${window.location.hash}`;
7298		window.history.replaceState({}, '', newURL);
7299		
7300		// console.log('[Segment Routing] Segments injected to URL:', segmentsByKey);
7301	} else {
7302		console.warn(`[Segment Routing] Exposure method "${exposure_method}" is currently disabled`);
7303	}
7304}
7305// exc
7306try { sm_segment_routing_manager(sm_customer_email)} 
7307catch (error) { console.warn("Segment routing fatal error", error)}
7308</script>
7308<script>
7309  var dfCurrencyCode = 'USD';
7310  var dfGroupId = parseInt("");
7311  var dfChannelId = parseInt("1");
7312  var dfPageType = 'login';
7313  var dfProductId = '';
7314
7315  var dfCategoryName = '';
7316  var dfBreadcrumbs = [{"url":"https:\u002f\u002fpinkzebrahome.com\u002f","name":"Home"},{"url":"\u002flogin.php","name":"Login"}];
7317  var items = dfBreadcrumbs.slice(1);
7318  if (dfPageType === 'product') {
7319    items = items.slice(0, -1);
7320  }
7321  if (items.length > 0) {
7322    dfCategoryName = items
7323      .map(function(item) { return item.name; })
7324      .join(' > ');
7325  }
7326
7327</script>
vendor: 1 bytes, line 7327
7327
7328<script src="https://us1-config.doofinder.com/2.x/4543d0a9-707e-439f-8294-1e23846191ea.js" async></script>
7328                
7328<script>
7329                (function () {
7330                    // Framed page = not a shopper: the dashboard's heatmap loads the
7331                    // live store in an iframe, and BigCommerce's own previews frame
7332                    // it too. Tracking there would mint device ids, pageviews and
7333                    // replay uploads for the person LOOKING at analytics. Nothing
7334                    // below runs; __pzReady never appears, so the funnel and purchase
7335                    // blocks stay silent as well.
7336                    try {
7337                        if (window.self !== window.top) return;
7338                    } catch (e) {
7339                        return;
7340                    }
7341                    var HOST = 'https://crud.pinkzebrahome.com';
7342                    var WEBSITE_ID = 'a2d2ec29-dc40-4933-8e0d-05729f18d86f';
7343                    var STAFF_EMAIL = /@pinkzebrahome\.com$/i;
7344                    // Used when pz/config.js is missing or unreachable.
7345                    // 'staff' is the safe default: real customers are never
7346                    // tracked by accident, and the canary keeps working even
7347                    // if the config file was never deployed.
7348                    var DEFAULT_MODE = 'staff';
7349
7350                    function loadScript(src, tagged, onload, onerror) {
7351                        var s = document.createElement('script');
7352                        s.src = src;
7353                        if (tagged) {
7354                            s.setAttribute('data-website-id', WEBSITE_ID);
7355                            // Doofinder rewrites the URL hash on every keystroke;
7356                            // without this each one counts as a pageview.
7357                            s.setAttribute('data-exclude-hash', 'true');
7358                            // Send/accept the collector's own cookie (server-
7359                            // assigned device id, HttpOnly, never readable here).
7360                            // Cross-origin but same site, so Lax cookies travel.
7361                            s.setAttribute('data-fetch-credentials', 'include');
7362                        }
7363                        if (onload) s.onload = onload;
7364                        if (onerror) s.onerror = onerror;
7365                        document.head.appendChild(s);
7366                    }
7367
7368                    // Record every page (owner decision 2026-09-08). Until then only
7369                    // /cart, /checkout* and logged-in customers loaded the recorder;
7370                    // that rule is kept below in case the volume has to be cut back:
7371                    // replace `return true;` with the block that follows it.
7372                    function shouldRecord() {
7373                        return true;
7374                        // var p = location.pathname;
7375                        // if (p.indexOf('/cart') === 0) return true;
7376                        // if (p.indexOf('/checkout') === 0) return true;
7377                        // return Boolean(readCustomer());
7378                    }
7379
7380                    // Who is logged in: the theme's own customer-data JSON block (rendered
7381                    // on every page while logged in, for the theme's code, so a theme
7382                    // release cannot drop it). __pzCustomer, a block only we knew about,
7383                    // was wiped by a release on 2026-09-08: kept as a fallback only.
7384                    function readCustomer() {
7385                        var c = window.__pzCustomer;
7386                        if (c && c.id) return c;
7387                        var el = document.getElementById('customer-data');
7388                        if (!el) return null;
7389                        var d;
7390                        try {
7391                            d = JSON.parse(el.textContent);
7392                        } catch (e) {
7393                            return null;
7394                        }
7395                        if (!d || !d.id) return null;
7396                        var out = {
7397                            id: d.id,
7398                            email: d.email,
7399                            phone: d.phone,
7400                            name: d.name,
7401                            customer_type: d.groupName
7402                        };
7403                        // Not in the theme's JSON yet (storefront repo change pending).
7404                        if (typeof d.storeCredit === 'number') out.store_credit = d.storeCredit;
7405                        // The theme's login handler keeps a richer profile in
7406                        // localStorage `customer_details` (CRM contact id, photo,
7407                        // address, sponsor, rank...). It is written at login and
7408                        // survives a logout without a storage clear, so it only
7409                        // counts when the `customerId` stored with it is the
7410                        // customer the page itself says is logged in.
7411                        var extra = readCustomerDetails(d.id);
7412                        for (var k in extra) {
7413                            if (Object.prototype.hasOwnProperty.call(extra, k)) out[k] = extra[k];
7414                        }
7415                        return out;
7416                    }
7417
7418                    // A scalar id as a trimmed string; anything else (missing,
7419                    // empty, an object) is dropped by the caller.
7420                    function asId(v) {
7421                        if (typeof v === 'number' && isFinite(v)) return String(v);
7422                        if (typeof v === 'string') return v.trim();
7423                        return undefined;
7424                    }
7425
7426                    // A photo URL worth storing. The theme fills profile_img and
7427                    // selected_consultant.rep_image with this placeholder when the
7428                    // consultant never uploaded one: that is "no photo".
7429                    var NO_PHOTO = 'https://statics.pzebra.com/images/MicrosoftTeams-image+(1).png';
7430                    function asImage(v) {
7431                        if (typeof v !== 'string') return undefined;
7432                        v = v.trim();
7433                        if (v.indexOf('https://') !== 0 && v.indexOf('http://') !== 0) return undefined;
7434                        if (v === NO_PHOTO) return undefined;
7435                        return v;
7436                    }
7437
7438                    function readStoredJson(key) {
7439                        try {
7440                            return JSON.parse(localStorage.getItem(key) || 'null');
7441                        } catch (e) {
7442                            return null;
7443                        }
7444                    }
7445
7446                    function readCustomerDetails(customerId) {
7447                        var out = {};
7448                        var storedId = null;
7449                        try {
7450                            storedId = localStorage.getItem('customerId');
7451                        } catch (e) {
7452                        }
7453                        if (storedId === null || String(storedId) !== String(customerId)) return out;
7454                        var cd = readStoredJson('customer_details');
7455                        if (!cd || typeof cd !== 'object') return out;
7456                        // Ids go out as strings: the collector stores a number as
7457                        // "19948384.0000", which is what the profile would show.
7458                        var copy = {
7459                            contact_id: asId(cd.contact_id),
7460                            profile_img: asImage(cd.profile_img),
7461                            address: cd.address,
7462                            city: cd.city,
7463                            state: cd.state,
7464                            postal_code: asId(cd.postal_code),
7465                            country: cd.country,
7466                            // consultants only
7467                            consultant_id: asId(cd.consultant_id),
7468                            rank: cd.current_rank,
7469                            company_name: cd.company_name,
7470                            website_url: cd.website_url
7471                        };
7472                        // For a customer the sponsor is the consultant they were
7473                        // signed up under; for a consultant it is their upline.
7474                        if (cd.sponsor && typeof cd.sponsor === 'object') {
7475                            copy.sponsor_id = asId(cd.sponsor.id);
7476                            copy.sponsor_name = cd.sponsor.full_name;
7477                        }
7478                        for (var k in copy) {
7479                            if (copy[k] !== undefined && copy[k] !== null && copy[k] !== '') out[k] = copy[k];
7480                        }
7481                        return out;
7482                    }
7483
7484                    // The consultant this browser shops under (the theme's `repid` /
7485                    // `selected_consultant`): the sale's attribution. Set for
7486                    // logged-in customers and for visitors who arrive through a
7487                    // consultant's link and never log in.
7488                    function readRep() {
7489                        var out = {};
7490                        var sc = readStoredJson('selected_consultant');
7491                        var repId = null;
7492                        try {
7493                            repId = localStorage.getItem('repid');
7494                        } catch (e) {
7495                        }
7496                        // The theme writes whatever it has, including "null".
7497                        if (repId === 'null' || repId === 'undefined') repId = null;
7498                        if (!repId && sc && sc.repID) repId = sc.repID;
7499                        repId = asId(repId);
7500                        if (repId) out.rep_id = repId;
7501                        if (sc && sc.full_name) out.rep_name = sc.full_name;
7502                        if (sc) {
7503                            var repImg = asImage(sc.rep_image);
7504                            if (repImg) out.rep_img = repImg;
7505                        }
7506                        return out;
7507                    }
7508
7509                    function identifyCustomer() {
7510                        var c = readCustomer();
7511                        var rep = readRep();
7512                        if (!c || !c.id) {
7513                            // Anonymous, but shopping under a consultant: the
7514                            // attribution is still worth a session property.
7515                            if (rep.rep_id) window.pinkzebra.identify(rep);
7516                            return false;
7517                        }
7518                        for (var r in rep) {
7519                            if (Object.prototype.hasOwnProperty.call(rep, r)) c[r] = rep[r];
7520                        }
7521                        var props = {};
7522                        for (var k in c) {
7523                            if (!Object.prototype.hasOwnProperty.call(c, k) || k === 'id') continue;
7524                            var v = c[k];
7525                            // BC pads customer_group_name with a trailing space
7526                            if (typeof v === 'string') v = v.trim();
7527                            if (v === '' || v === null || v === undefined) continue;
7528                            props[k] = v;
7529                        }
7530                        window.pinkzebra.identify(String(c.id), props);
7531                        return true;
7532                    }
7533
7534                    function start(mode) {
7535                        // 'off' and any unknown value fail closed.
7536                        if (mode !== 'all' && mode !== 'staff') return;
7537                        if (mode === 'staff') {
7538                            var c = readCustomer();
7539                            if (!c || !c.email || !STAFF_EMAIL.test(String(c.email).trim())) return;
7540                        }
7541                        loadScript(HOST + '/menu.js', true, function () {
7542                            identifyCustomer();
7543                            // The funnel blocks below wait for this flag, so no
7544                            // track() can ever run before identify(). The
7545                            // tracker's automatic pageview fires at readyState
7546                            // 'complete', which this load also precedes.
7547                            window.__pzReady = true;
7548                            if (shouldRecord()) loadScript(HOST + '/recorder.js', true);
7549                        });
7550                    }
7551
7552                    // Decide only when BOTH are in: pz/config.js (the mode) and
7553                    // DOMContentLoaded (the theme's customer-data JSON in the head).
7554                    var pending = 2;
7555                    var mode = DEFAULT_MODE;
7556                    function armed() {
7557                        pending -= 1;
7558                        if (pending === 0) start(mode);
7559                    }
7560
7561                    // Loaded as a script, not fetch(): no CORS needed from the
7562                    // storefront origin. Cache-busted so a mode flip on the
7563                    // server applies on every visitor's next page load.
7564                    loadScript(HOST + '/pz/config.js?t=' + Date.now(), false, function () {
7565                        if (window.__pzConfig && window.__pzConfig.mode) {
7566                            mode = String(window.__pzConfig.mode);
7567                        }
7568                        armed();
7569                    }, armed);
7570
7571                    if (document.readyState === 'loading') {
7572                        document.addEventListener('DOMContentLoaded', armed);
7573                    } else {
7574                        armed();
7575                    }
7576                })();
7577                </script>
7577
7578                
7578<script>
7579                (function () {
7580                    // __pzReady is set by the gate above only after menu.js has
7581                    // loaded AND identify() has run, so anything behind whenPz
7582                    // lands in the identified session. When tracking is gated
7583                    // off, __pzReady never appears and every send is a no-op.
7584                    function whenPz(fn, tries) {
7585                        if (window.__pzReady) return fn();
7586                        if (tries <= 0) return;
7587                        setTimeout(function () { whenPz(fn, tries - 1); }, 250);
7588                    }
7589
7590                    function num(v) {
7591                        var n = Number(v);
7592                        return isFinite(n) ? n : null;
7593                    }
7594
7595                    function productContext() {
7596                        var ctx = {};
7597                        var idInput = document.querySelector('input[name="product_id"]');
7598                        if (idInput && idInput.value) ctx.product_id = idInput.value;
7599                        try {
7600                            var attrs = window.BCData && window.BCData.product_attributes;
7601                            if (attrs) {
7602                                if (attrs.sku) ctx.sku = attrs.sku;
7603                                var price = attrs.price && (attrs.price.with_tax || attrs.price.without_tax);
7604                                if (price && num(price.value) !== null) ctx.price = num(price.value);
7605                            }
7606                        } catch (e) {
7607                        }
7608                        var title = document.querySelector('h1.productView-title');
7609                        if (title) ctx.name = title.textContent.replace(/\s+/g, ' ').trim().slice(0, 200);
7610                        return ctx;
7611                    }
7612
7613                    function isProductPage() {
7614                        return Boolean(document.querySelector('input[name="product_id"]') ||
7615                            (window.BCData && window.BCData.product_attributes));
7616                    }
7617
7618                    function trackViewProduct() {
7619                        if (!isProductPage()) return;
7620                        whenPz(function () { window.pinkzebra.track('view-product', productContext()); }, 80);
7621                    }
7622
7623                    function bindAddToCart() {
7624                        document.addEventListener('click', function (event) {
7625                            var target = event.target;
7626                            if (!target || !target.closest) return;
7627                            var btn = target.closest('#form-action-addToCart, [data-button-type="add-cart"], form[action*="cart.php"] [type="submit"]');
7628                            if (!btn) {
7629                                // Vue listing cards: the direct add button is a plain
7630                                // anchor with no tracking attributes - match its label.
7631                                var candidate = target.closest('a.button, button.button');
7632                                if (candidate &&
7633                                    /^add to cart$/i.test((candidate.textContent || '').replace(/\s+/g, ' ').trim())) {
7634                                    btn = candidate;
7635                                }
7636                            }
7637                            if (!btn) return;
7638                            // Listing-card "options" buttons navigate to the product page
7639                            // instead of adding; the real add is tracked there.
7640                            if ((btn.className || '').indexOf('button--options') > -1) return;
7641                            var data = productContext();
7642                            if (data.product_id) {
7643                                var qty = document.querySelector('input[name="qty[]"], input[name="qty"]');
7644                                if (qty && num(qty.value) !== null) data.quantity = num(qty.value);
7645                            } else {
7646                                // Listing/category card: product data lives on the card
7647                                var pid = btn.getAttribute('data-product-id');
7648                                var href = btn.getAttribute('data-href') || btn.getAttribute('href') || '';
7649                                if (!pid) {
7650                                    var m = href.match(/[?&]product_id=(\d+)/);
7651                                    if (m) pid = m[1];
7652                                }
7653                                if (pid) data.product_id = String(pid);
7654                                // .card (exact token): [class*=card] would stop at
7655                                // inner wrappers like card-action
7656                                var card = btn.closest('.card');
7657                                if (card) {
7658                                    var t = card.querySelector('.product_title, .card-title, h3, h4');
7659                                    if (t) data.name = t.textContent.replace(/\s+/g, ' ').trim().slice(0, 200);
7660                                    var priceEl = card.querySelector('[class*="price"]');
7661                                    if (priceEl) {
7662                                        // Last number wins: sale cards read "Was $40 Now $29.99"
7663                                        var pm = (priceEl.textContent || '').replace(/,/g, '').match(/\d+(?:\.\d+)?/g);
7664                                        if (pm && pm.length) data.price = Number(pm[pm.length - 1]);
7665                                    }
7666                                    var link = card.querySelector('a[href*="/"]');
7667                                    if (link && !data.product_id) {
7668                                        data.product_path = (link.getAttribute('href') || '').slice(0, 200);
7669                                    }
7670                                }
7671                                data.quantity = 1;
7672                            }
7673                            // cart_id ties this click to the begin-checkout of the same cart, so
7674                            // the funnel is measured per cart and survives a session cut (login
7675                            // at checkout, next-day return). The theme sets window.CART__ID at
7676                            // page load; an empty cart has no id until the add lands, so ONE
7677                            // later, non-blocking lookup is made and the event goes out with or
7678                            // without the id. Nothing here waits on the click path.
7679                            if (window.CART__ID) data.cart_id = String(window.CART__ID);
7680                            whenPz(function () {
7681                                if (data.cart_id) {
7682                                    window.pinkzebra.track('add-to-cart', data);
7683                                    return;
7684                                }
7685                                var sent = false;
7686                                function send() {
7687                                    if (sent) return;
7688                                    sent = true;
7689                                    window.pinkzebra.track('add-to-cart', data);
7690                                }
7691                                setTimeout(function () {
7692                                    if (sent) return;
7693                                    fetch('/api/storefront/carts', {credentials: 'same-origin', keepalive: true})
7694                                        .then(function (r) { return r.ok ? r.json() : null; })
7695                                        .then(function (carts) {
7696                                            var cart = carts && carts[0];
7697                                            if (cart && cart.id) {
7698                                                data.cart_id = String(cart.id);
7699                                                window.CART__ID = cart.id;
7700                                            }
7701                                            send();
7702                                        })
7703                                        .catch(send);
7704                                }, 1200);
7705                                setTimeout(send, 3000);
7706                                window.addEventListener('pagehide', send);
7707                            }, 80);
7708                        }, true);
7709                    }
7710
7711                    function trackBeginCheckout() {
7712                        var p = location.pathname;
7713                        if (p.indexOf('/checkout') !== 0) return;
7714                        if (p.indexOf('/checkout/order-confirmation') === 0) return;
7715                        // Behind whenPz so gated-off visitors never hit the
7716                        // storefront cart API for nothing.
7717                        whenPz(function () {
7718                            fetch('/api/storefront/carts', {credentials: 'same-origin'})
7719                                .then(function (r) { return r.ok ? r.json() : null; })
7720                                .then(function (carts) {
7721                                    var cart = carts && carts[0];
7722                                    var data = {};
7723                                    var guard = 'pz.begin-checkout';
7724                                    if (cart) {
7725                                        guard += '.' + cart.id;
7726                                        data.cart_id = cart.id;
7727                                        if (num(cart.cartAmount) !== null) data.cart_total = num(cart.cartAmount);
7728                                        try {
7729                                            var items = cart.lineItems || {};
7730                                            var count = 0;
7731                                            ['physicalItems', 'digitalItems', 'customItems'].forEach(function (k) {
7732                                                (items[k] || []).forEach(function (i) { count += i.quantity || 1; });
7733                                            });
7734                                            if (count > 0) data.items = count;
7735                                        } catch (e) {
7736                                        }
7737                                    }
7738                                    try {
7739                                        if (sessionStorage.getItem(guard)) return;
7740                                    } catch (e) {
7741                                    }
7742                                    window.pinkzebra.track('begin-checkout', data).then(function () {
7743                                        try {
7744                                            sessionStorage.setItem(guard, '1');
7745                                        } catch (e) {
7746                                        }
7747                                    });
7748                                })
7749                                .catch(function () {
7750                                });
7751                        }, 80);
7752                    }
7753
7754                    // Heuristic: error alert boxes appearing during checkout. Message text
7755                    // is included so noisy matches can be refined with real data.
7756                    function watchCheckoutErrors() {
7757                        if (location.pathname.indexOf('/checkout') !== 0) return;
7758                        if (!window.MutationObserver) return;
7759                        var selector = '[class*="alertBox--error"], [class*="notification--error"], [class*="alert--error"]';
7760                        var sent = {};
7761
7762                        function report(el) {
7763                            var message = (el.textContent || '').replace(/\s+/g, ' ').trim().slice(0, 200);
7764                            if (message.length < 4 || sent[message]) return;
7765                            sent[message] = true;
7766                            window.pinkzebra.track('checkout-error', {message: message, path: location.pathname});
7767                        }
7768
7769                        var observer = new MutationObserver(function (mutations) {
7770                            for (var i = 0; i < mutations.length; i++) {
7771                                var nodes = mutations[i].addedNodes;
7772                                for (var j = 0; j < nodes.length; j++) {
7773                                    var node = nodes[j];
7774                                    if (!node || node.nodeType !== 1) continue;
7775                                    if (node.matches && node.matches(selector)) {
7776                                        report(node);
7777                                    } else if (node.querySelector) {
7778                                        var el = node.querySelector(selector);
7779                                        if (el) report(el);
7780                                    }
7781                                }
7782                            }
7783                        });
7784
7785                        // whenPz resolves after DOMContentLoaded (the gate waits
7786                        // for it), so document.body exists; gated-off visitors
7787                        // never pay for the observer.
7788                        whenPz(function () {
7789                            observer.observe(document.body, {childList: true, subtree: true});
7790                        }, 80);
7791                    }
7792
7793                    function init() {
7794                        trackViewProduct();
7795                        bindAddToCart();
7796                        trackBeginCheckout();
7797                        watchCheckoutErrors();
7798                    }
7799
7800                    if (document.readyState === 'loading') {
7801                        document.addEventListener('DOMContentLoaded', init);
7802                    } else {
7803                        init();
7804                    }
7805                })();
7806                </script>
7806
7807                
7807<script>
7808                (function () {
7809                    // Site search. The Doofinder live layer puts the query in the
7810                    // URL hash on every keystroke (#4543/classic/...&q=pumpkin) and
7811                    // writes "44 results found" / "No results found" into a
7812                    // screen-reader-only node of its Search view. One `search`
7813                    // event per distinct query per page, 2 s after the last
7814                    // change, carrying the results count once the layer answered.
7815                    // BigCommerce's own results page (Enter in the box) is covered
7816                    // too: the query travels in ?search_query=.
7817                    var SEARCH_DELAY = 2000;
7818                    var RESULTS_WAIT = 2500;
7819                    var MIN_LENGTH = 2;
7820                    var sent = {};
7821                    var timer = null;
7822
7823                    function normalize(q) {
7824                        return String(q || '').trim().toLowerCase().replace(/\s+/g, ' ').slice(0, 100);
7825                    }
7826
7827                    function decode(v) {
7828                        try {
7829                            return decodeURIComponent(String(v).replace(/\+/g, ' '));
7830                        } catch (e) {
7831                            return String(v);
7832                        }
7833                    }
7834
7835                    function currentQuery() {
7836                        var m = location.hash.match(/[?&#]q=([^&]*)/);
7837                        if (m) return decode(m[1]);
7838                        var inputs = document.querySelectorAll('input[data-search-quick]');
7839                        for (var i = 0; i < inputs.length; i++) {
7840                            if (inputs[i].value) return inputs[i].value;
7841                        }
7842                        return '';
7843                    }
7844
7845                    // null while the layer has not answered yet (or is closed)
7846                    function layerResults() {
7847                        var root = document.querySelector('.dfd-root[data-dfd-view="Search"]');
7848                        if (!root || root.hidden) return null;
7849                        var nodes = root.querySelectorAll('.sr-only');
7850                        for (var i = 0; i < nodes.length; i++) {
7851                            var t = nodes[i].textContent || '';
7852                            if (/no results/i.test(t)) return 0;
7853                            var m = t.match(/(\d[\d,]*)\s+results?/i);
7854                            if (m) return parseInt(m[1].replace(/,/g, ''), 10);
7855                        }
7856                        return null;
7857                    }
7858
7859                    function send(q, source, results) {
7860                        if (sent[q]) return;
7861                        sent[q] = true;
7862                        var data = {query: q, source: source};
7863                        if (results !== null && results !== undefined) data.results = results;
7864                        window.pinkzebra.track('search', data);
7865                    }
7866
7867                    function sendWhenAnswered(q) {
7868                        var started = Date.now();
7869                        (function attempt() {
7870                            if (sent[q]) return;
7871                            var n = layerResults();
7872                            if (n === null && Date.now() - started < RESULTS_WAIT) return setTimeout(attempt, 250);
7873                            send(q, 'doofinder', n);
7874                        })();
7875                    }
7876
7877                    function schedule() {
7878                        clearTimeout(timer);
7879                        timer = setTimeout(function () {
7880                            if (!window.__pzReady) return;
7881                            var q = normalize(currentQuery());
7882                            if (q.length < MIN_LENGTH) return;
7883                            sendWhenAnswered(q);
7884                        }, SEARCH_DELAY);
7885                    }
7886
7887                    window.addEventListener('hashchange', schedule);
7888                    document.addEventListener('input', function (e) {
7889                        var el = e.target;
7890                        if (el && el.matches && el.matches('input[data-search-quick]')) schedule();
7891                    }, true);
7892
7893                    // The classic results page: query in the URL, count in the
7894                    // page heading when the theme prints one.
7895                    if (location.pathname === '/search.php') {
7896                        var m = location.search.match(/[?&]search_query=([^&]*)/);
7897                        var q = m ? normalize(decode(m[1])) : '';
7898                        if (q.length >= MIN_LENGTH) {
7899                            var tries = 120;
7900                            (function poll() {
7901                                if (!window.__pzReady) {
7902                                    if (tries-- > 0) return setTimeout(poll, 250);
7903                                    return;
7904                                }
7905                                var n = null;
7906                                var heading = document.querySelector('.page-heading, h1');
7907                                var hm = heading && (heading.textContent || '').match(/(\d[\d,]*)\s+results?/i);
7908                                if (hm) n = parseInt(hm[1].replace(/,/g, ''), 10);
7909                                send(q, 'search-page', n);
7910                            })();
7911                        }
7912                    }
7913                })();
7914                </script>
7914
7915                
7915<script>
7916                    (function () {
7917                        // A consultant join never reaches /checkout/order-confirmation:
7918                        // the theme's checkout redirects to /thank-you-join the moment
7919                        // BigCommerce shows the confirmation skeleton (checkout-default.js,
7920                        // waitForOrderResult), so the block below has to run there too.
7921                        // On that page the order id is not in the DOM: the theme's
7922                        // login handler writes it to localStorage `recent_order` once
7923                        // the backend knows the order, which can take a moment -- and
7924                        // until then `recent_order` may still hold the customer's
7925                        // PREVIOUS order. The id seen during checkout is remembered so
7926                        // only a NEW one counts.
7927                        var JOIN_PAGE = location.pathname === '/thank-you-join';
7928                        var PREV_ORDER_KEY = 'pz.join.prev_order';
7929
7930                        function recentOrderId() {
7931                            try {
7932                                var r = JSON.parse(localStorage.getItem('recent_order') || 'null');
7933                                return r ? validOrderId(r.order_id) : null;
7934                            } catch (e) {
7935                                return null;
7936                            }
7937                        }
7938
7939                        if (location.pathname.indexOf('/checkout') === 0 &&
7940                            location.pathname.indexOf('/checkout/order-confirmation') !== 0) {
7941                            try {
7942                                sessionStorage.setItem(PREV_ORDER_KEY, recentOrderId() || '');
7943                            } catch (e) {
7944                            }
7945                            return;
7946                        }
7947                        if (!JOIN_PAGE && location.pathname.indexOf('/checkout/order-confirmation') !== 0) return;
7948
7949                        // A real BC order id is a positive integer. BC has rendered
7950                        // orderId 0 in checkout-config (and the page text can echo
7951                        // it): a 0 is not a lost purchase, it is a FAKE order that
7952                        // joins with nothing and, worse, a shared dedupe key
7953                        // (pz.purchase.0) that then blocks that browser's next
7954                        // real purchase. Never accept it.
7955                        function validOrderId(id) {
7956                            var s = id === undefined || id === null ? '' : String(id);
7957                            return /^[1-9][0-9]*$/.test(s) ? s : null;
7958                        }
7959
7960                        function orderIdFromConfig() {
7961                            try {
7962                                var el = document.getElementById('checkout-config');
7963                                if (el) {
7964                                    var cfg = JSON.parse(el.textContent);
7965                                    return validOrderId(cfg && cfg.orderId);
7966                                }
7967                            } catch (e) {
7968                            }
7969                            return null;
7970                        }
7971
7972                        function orderIdFromDom() {
7973                            var m = document.body && document.body.innerText.match(/order number is[^0-9]*([0-9]+)/i);
7974                            return m ? validOrderId(m[1]) : null;
7975                        }
7976
7977                        // /thank-you-join: the query string when the theme passes it,
7978                        // otherwise `recent_order` -- but never the id already there
7979                        // when the checkout started (that one is an older order).
7980                        function orderIdFromJoinPage() {
7981                            var m = location.search.match(/[?&](?:orderId|order_id)=([^&]*)/);
7982                            if (m) {
7983                                var q = null;
7984                                try {
7985                                    q = validOrderId(decodeURIComponent(m[1]));
7986                                } catch (e) {
7987                                }
7988                                if (q) return q;
7989                            }
7990                            var recent = recentOrderId();
7991                            if (!recent) return null;
7992                            var prev = null;
7993                            try {
7994                                prev = sessionStorage.getItem(PREV_ORDER_KEY);
7995                            } catch (e) {
7996                            }
7997                            return prev !== null && recent === prev ? null : recent;
7998                        }
7999
8000                        // Marks a purchase that came through the join page, so the
8001                        // two paths can be told apart in the data.
8002                        function tagged(data) {
8003                            if (JOIN_PAGE) data.confirmation = '
8003join';
8004                            return data;
8005                        }
8006
8007                        // No usable order id but the tracker is up: count the
8008                        // purchase with the id ABSENT (countable as "unknown") rather
8009                        // than a fake one, guarded per page so a reload can't double it.
8010                        function firePurchaseWithoutId() {
8011                            var key = 'pz.purchase.noid.' + location.pathname + location.search;
8012                            try {
8013                                if (sessionStorage.getItem(key)) return;
8014                                sessionStorage.setItem(key, '1');
8015                            } catch (e) {
8016                            }
8017                            pinkzebra.track('purchase', tagged({currency: 'USD', order_id_missing: true}));
8018                        }
8019
8020                        function num(v) {
8021                            return typeof v === 'number' && isFinite(v) ? v : null;
8022                        }
8023
8024                        function firePurchase(orderId) {
8025                            var key = 'pz.purchase.' + orderId;
8026                            try {
8027                                if (localStorage.getItem(key)) return;
8028                            } catch (e) {
8029                            }
8030
8031                            var sent = false;
8032
8033                            function send(data) {
8034                                if (sent) return;
8035                                sent = true;
8036                                pinkzebra.track('purchase', tagged(data)).then(function () {
8037                                    try {
8038                                        localStorage.setItem(key, '1');
8039                                    } catch (e) {
8040                                    }
8041                                });
8042                            }
8043
8044                            // The order detail below takes a round trip the visitor may
8045                            // not wait for. If the page goes away first, the purchase
8046                            // leaves NOW with what is certain, the order id, instead of
8047                            // dying with the tab. `partial` marks it: the order counts,
8048                            // its amount is not known to the dashboard.
8049                            function sendPartial() {
8050                                send({order_id: orderId, currency: 'USD', partial: true});
8051                            }
8052                            window.addEventListener('pagehide', sendPartial);
8053                            document.addEventListener('visibilitychange', function () {
8054                                if (document.visibilityState === 'hidden') sendPartial();
8055                            });
8056
8057                            fetch('/api/storefront/orders/' + orderId, {credentials: 'same-origin'})
8058                                .then(function (r) {
8059                                    return r.ok ? r.json() : null;
8060                                })
8061                                .then(function (order) {
8062                                    var data = {order_id: orderId, currency: 'USD'};
8063                                    if (order) {
8064                                        if (order.currency && order.currency.code) data.currency = order.currency.code;
8065                                        var paid = num(order.orderAmount);
8066                                        var subtotal = num(order.baseAmount);
8067                                        var discount = num(order.discountAmount) || 0;
8068                                        // Coupons are NOT in discountAmount: the API lists them
8069                                        // apart. Without this a couponed order's net was its
8070                                        // pre-coupon subtotal (orderAmount was already right).
8071                                        var coupon = 0;
8072                                        if (order.coupons && order.coupons.length) {
8073                                            for (var i = 0; i < order.coupons.length; i++) {
8074                                                coupon += num(order.coupons[i].discountedAmount) || 0;
8075                                            }
8076                                        }
8077                                        coupon = Math.round(coupon * 100) / 100;
8078                                        var shipping = num(order.shippingCostTotal) || 0;
8079                                        var tax = num(order.taxTotal) || 0;
8080                                        // Raw components: consumers sum what they need. A
8081                                        // null travels as-is = "unknown" (countable), never
8082                                        // silently replaced by a different number.
8083                                        data.subtotal = subtotal;
8084                                        data.discount = discount;
8085                                        data.coupon_discount = coupon;
8086                                        data.shipping = shipping;
8087                                        data.tax = tax;
8088                                        data.order_total = paid;
8089                                        data.charged = paid;
8090                                        // ONE revenue definition, ALWAYS the same: tax is
8091                                        // never revenue, shipping is not either, discount
8092                                        // and coupons subtract. When subtotal is unknown the key is
8093                                        // OMITTED, never a fallback number (a non-numeric
8094                                        // value in a *revenue* data_key would abort the
8095                                        // whole event insert -- the revenue MV runs
8096                                        // toDecimal64 on it): absence IS the null.
8097                                        if (subtotal !== null) {
8098                                            data.net_revenue = Math.round((subtotal - discount - coupon) * 100) / 100;
8099                                            if (paid !== null) {
8100                                                var fullValue = Math.round((subtotal - discount - coupon + shipping + tax) * 100) / 100;
8101                                                var credit = Math.round((fullValue - paid) * 100) / 100;
8102                                                if (credit > 0) data.credit_used = credit;
8103                                                if (paid === 0 && fullValue > 0) data.paid_with_credit = true;
8104                                            }
8105                                        }
8106                                    }
8107                                    send(data);
8108                                })
8109                                .catch(function () {
8110                                    send({order_id: orderId, currency: 'USD'});
8111                                });
8112                        }
8113
8114                        // __pzReady (not just window.pinkzebra): guarantees the
8115                        // purchase lands in the identified session and that
8116                        // gated-off visitors never hit the order API. 60s of
8117                        // polling: slow mobiles took longer than the old 20s.
8118                        var tries = 240;
8119                        (function poll() {
8120                            var id = JOIN_PAGE ? orderIdFromJoinPage() : (orderIdFromConfig() || orderIdFromDom());
8121                            if (id && window.__pzReady) return firePurchase(id);
8122                            if (tries-- > 0) return setTimeout(poll, 250);
8123                            if (window.__pzReady) firePurchaseWithoutId();
8124                        })();
8125                    })();
8126                </script>
8126
8127
8128         
8129        
8129<script type="module" src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/shogun/index.js"></script>
8129
8130        
8130<script src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/theme/doc-ready.js"></script>
8130
8131        
8131<script defer src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/audit/journey-viewer.js"></script>
8131
8132        
8132<script defer src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/audit/journey-cart-sink.js"></script>
8132
8133        
8133<script defer src="https://cdn11.bigcommerce.com/s-9khen3dncu/stencil/d4cea4a0-99a2-013f-a855-120a24f73952/e/c98a9ca0-8e5d-013f-f3bf-328227f9e273/js/helpers/devtools/devtools-warning.js"></script>
8133
8134
8135    
8135<script>window.__CF$cv$params={r:'a40f2276cb7b99f0',t:'MTc5MDM5Mjg0NQ==',u:'01a0dbbac7e67726ad04caa0bc250fbf',ut:'8H1k2.hpFUzNy1120Znv.3XeARyG8eMgOUUISe9YWjk-1790392846-1.2.1.1-jozdh.FjFy8jKPtxYZNVLBnorTnSY97wIfVJaVvYgp2jLa1pTwed.Cq0_d1e81hQ4T3MARR_uGzBdKnNG.7LhSJ7pqGm3tWUEBDys4pjcqQ',i:60};(function(){if(!document.body)return;var s=document.createElement('script');s.src='/cdn-cgi/challenge-platform/scripts/precursor/main.js';document.head.appendChild(s);})();</script>
8135</body>
8136</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.