PageSourceSearch

https://foxfirelites.com/cart

html foxfirelites.com collected 2026-10-10 01:44:23 UTC 226,127 bytes, 7,128 lines download raw bytes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<!doctype html>
18<html class="no-js no-touch" lang="en">
19  <head>
19<script data-source-attribution="shopify.event_observer.bootstrap">
20(function(){let e=navigator,t=`prototype`,n=`sendBeacon`,r=e[n],i=fetch,a=XMLHttpRequest[t],{open:o,send:s}=a,c=`EventListener`,l=`add${c}`,u=`remove${c}`,d=EventTarget[t],f=d[l],p=d[u],m=e=>Error((e=document.currentScript)&&[e?.src,e?.id||e?.dataset?.sourceAttribution]),h=(e=[],t=0)=>(e.p=n=>e[t++%1e3]=n,[e,t=>(e.forEach(e.p=t),e.length=0)]),[g,_]=h(),[v,y]=h(),b,x=new WeakMap,S=e=>e&&g.p([e,b||[m()]]);d[l]=function(e,t,n){let r=this,i=t?.handleEvent||t,a=x.get(t),o=m();i?.call&&!a&&x.set(t,a=function(e){b=[o,e.type];try{i.call(t==i?this:t,e)}finally{b=null}}),v.p([e,o,a,r?.tagName||r+``,r?.id]),f.call(r,e,a||t,n)},d[u]=function(e,t,n){p.call(this,e,x.get(t)||t,n)},a.open=function(e,t){x.set(this,[t+``,e]),o.apply(this,arguments)},a.send=function(e){S(x.get(this)),s.call(this,e)},fetch=(e,t)=>(S([(e?.url||e)+``,t?.method]),i(e,t)),e[n]=(t,n)=>(S([t+``,``]),r.call(e,t,n)),setTimeout(()=>import("//foxfirelites.com/cdn/shopifycloud/storefront/assets/storefront/event_observer_reporter-ed358274.js").then(e=>e.$(_,y,f,i,`53362458807`)))})();
21//# sourceURL=event-observer-collector.js
22</script>
22
23
24  
25  
25<script type="text/javascript" async src="https://na.shgcdn3.com/pixel-collector.js"></script>
25
26    <meta charset="utf-8">
27    <meta http-equiv="x-ua-compatible" content="IE=edge">
28
29    <link rel="preconnect" href="https://cdn.shopify.com">
30    <link rel="preconnect" href="https://fonts.shopifycdn.com">
31    <link rel="preconnect" href="https://v.shopify.com">
32    <link rel="preconnect" href="https://cdn.shopifycloud.com">
33
34    <title>Your Shopping Cart — FoxFire Safety Lites</title>
35
36    
37
38    
39
40    
41      <link rel="canonical" href="https://foxfirelites.com/cart" />
42    
43
44    <meta name="viewport" content="width=device-width">
45
46    
47    
48
49
50
51
52
53<meta property="og:site_name" content="FoxFire Safety Lites">
54<meta property="og:url" content="https://foxfirelites.com/cart">
55<meta property="og:title" content="Your Shopping Cart">
56<meta property="og:type" content="website">
57<meta property="og:description" content="Increase visibility with Foxfire Safety Light products that include personal safety lighting, construction zone lighting, jobsite lighting and products that help mark your vehicles with amber and red lights. ">
58
59
60
61
62    
63    
64    
65
66    
67    
68    <meta
69      property="og:image"
70      content="https://foxfirelites.com/cdn/shop/files/about_ff_43dff437-4fd2-4ce8-b57c-a50555d0a3b6_1200x857.jpg?v=1621973101"
71    />
72    <meta
73      property="og:image:secure_url"
74      content="https://foxfirelites.com/cdn/shop/files/about_ff_43dff437-4fd2-4ce8-b57c-a50555d0a3b6_1200x857.jpg?v=1621973101"
75    />
76    <meta property="og:image:width" content="1200" />
77    <meta property="og:image:height" content="857" />
78    
79    
80    <meta property="og:image:alt" content="Social media image" />
81  
82
83
84
85
86
87
88
89
90
91
92
93
94<meta name="twitter:title" content="Your Shopping Cart">
95<meta name="twitter:description" content="Increase visibility with Foxfire Safety Light products that include personal safety lighting, construction zone lighting, jobsite lighting and products that help mark your vehicles with amber and red lights. ">
96
97
98    
99    
100    
101      
102      
103      <meta name="twitter:card" content="summary_large_image">
104    
105    
106    <meta
107      property="twitter:image"
108      content="https://foxfirelites.com/cdn/shop/files/about_ff_43dff437-4fd2-4ce8-b57c-a50555d0a3b6_1200x600_crop_center.jpg?v=1621973101"
109    />
110    <meta property="twitter:image:width" content="1200" />
111    <meta property="twitter:image:height" content="600" />
112    
113    
114    <meta property="twitter:image:alt" content="Social media image" />
115  
116
117
118
119    <link rel="preload" href="//foxfirelites.com/cdn/fonts/lato/lato_n4.c3b93d431f0091c8be23185e15c9d1fee1e971c5.woff2" as="font" crossorigin="anonymous">
120    <link rel="preload" as="style" href="//foxfirelites.com/cdn/shop/t/18/assets/theme.css?v=41735844184499907181791212955">
120<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
vendor: 1 bytes, line 120
120
121<script type="importmap">
122{
123  "imports": {
124    "element.base-media": "//foxfirelites.com/cdn/shop/t/18/assets/element.base-media.js?v=61305152781971747521790694046",
125    "element.image.parallax": "//foxfirelites.com/cdn/shop/t/18/assets/element.image.parallax.js?v=59188309605188605141790694072",
126    "element.model": "//foxfirelites.com/cdn/shop/t/18/assets/element.model.js?v=101001098341450788491790694042",
127    "element.quantity-selector": "//foxfirelites.com/cdn/shop/t/18/assets/element.quantity-selector.js?v=68208048201360514121790694064",
128    "element.text.rte": "//foxfirelites.com/cdn/shop/t/18/assets/element.text.rte.js?v=28194737298593644281790694064",
129    "element.video": "//foxfirelites.com/cdn/shop/t/18/assets/element.video.js?v=47354384994497331701790694057",
130    "es-module-shims": "//foxfirelites.com/cdn/shop/t/18/assets/es-module-shims.min.js?v=3197203922110785981790694081",
131    "is-land": "//foxfirelites.com/cdn/shop/t/18/assets/is-land.min.js?v=92343381495565747271790694066",
132    "lightbox": "//foxfirelites.com/cdn/shop/t/18/assets/lightbox.js?v=116354114233759933611790694071",
133    "product.gallery": "//foxfirelites.com/cdn/shop/t/18/assets/product.gallery.js?v=169430556141423714401790694063",
134    "section.slideshow": "//foxfirelites.com/cdn/shop/t/18/assets/section.slideshow.js?v=176892809315355130961790694079",
135    "util.events": "//foxfirelites.com/cdn/shop/t/18/assets/util.events.js?v=163430142883111782711790694053",
136    "util.misc": "//foxfirelites.com/cdn/shop/t/18/assets/util.misc.js?v=117964846174238173191790694065",
137    "util.resource-loader": "//foxfirelites.com/cdn/shop/t/18/assets/util.resource-loader.js?v=81301169148003274841790694058",
138    "utility.stylesheet": "//foxfirelites.com/cdn/shop/t/18/assets/utility.stylesheet.js?v=115421978848924304161790694082",
139    "vendor.drift-zoom": "//foxfirelites.com/cdn/shop/t/18/assets/vendor.drift-zoom.js?v=58010873367620907491790694056",
140    "vendor.in-view": "//foxfirelites.com/cdn/shop/t/18/assets/vendor.in-view.js?v=126891093837844970591790694048",
141    "vendor.photoswipe-ui-default": "//foxfirelites.com/cdn/shop/t/18/assets/vendor.photoswipe-ui-default.min.js?v=60644649669025199041790694052",
142    "vendor.photoswipe": "//foxfirelites.com/cdn/shop/t/18/assets/vendor.photoswipe.min.js?v=169650331104647059261790694048",
143    "vendor.swiper": "//foxfirelites.com/cdn/shop/t/18/assets/vendor.swiper.js?v=76943365775285958891790694075"
144  }
145}
146</script>
146<script>
147  if (!(HTMLScriptElement.supports && HTMLScriptElement.supports('importmap'))) {
148    const el = document.createElement('script')
149    el.async = true
150    el.src = "//foxfirelites.com/cdn/shop/t/18/assets/es-module-shims.min.js?v=3197203922110785981790694081"
151    document.head.appendChild(el)
152  }
153</script>
vendor: 1 bytes, line 153
153
154<script type="module" src="//foxfirelites.com/cdn/shop/t/18/assets/is-land.min.js?v=92343381495565747271790694066"></script>
154
155<style data-shopify>:root {
156    /* Core Sizes */
157    --size-0-25: 0.0625rem; /* 1px */
158    --size-0-5: 0.125rem; /* 2px */
159    --size-1: 0.25rem; /* 4px */
160    --size-1-5: 0.375rem; /* 6px */
161    --size-2: 0.5rem; /* 8px */
162    --size-2-5: 0.625rem; /* 10px */
163    --size-3: 0.75rem; /* 12px */
164    --size-3-5: 0.875rem; /* 14px */
165    --size-4: 1rem; /* 16px */
166    --size-4-5: 1.125rem; /* 18px */
167    --size-5: 1.25rem; /* 20px */
168    --size-5-5: 1.375rem; /* 22px */
169    --size-6: 1.5rem; /* 24px */
170    --size-6-5: 1.625rem; /* 26px */
171    --size-7: 1.75rem; /* 28px */
172    --size-7-5: 1.875rem; /* 30px */
173    --size-8: 2rem; /* 32px */
174    --size-8-5: 2.125rem; /* 34px */
175    --size-9: 2.25rem; /* 36px */
176    --size-9-5: 2.375rem; /* 38px */
177    --size-10: 2.5rem; /* 40px */
178    --size-11: 2.75rem; /* 44px */
179    --size-12: 3rem; /* 48px */
180    --size-14: 3.5rem; /* 56px */
181    --size-16: 4rem; /* 64px */
182    --size-18: 4.5rem; /* 72px */
183    --size-20: 5rem; /* 80px */
184    --size-24: 6rem; /* 96px */
185    --size-28: 7rem; /* 112px */
186    --size-32: 8rem; /* 128px */
187
188    /* Text Sizes */
189    --text-size-2: 0.5rem; /* 8px */
190    --text-size-2-5: 0.625rem; /* 10px */
191    --text-size-3: 0.75rem; /* 12px */
192    --text-size-3-5: 0.875rem; /* 14px */
193    --text-size-4: 1rem; /* 16px */
194    --text-size-4-5: 1.125rem; /* 18px */
195    --text-size-5: 1.25rem; /* 20px */
196    --text-size-5-5: 1.375rem; /* 22px */
197    --text-size-6: 1.5rem; /* 24px */
198    --text-size-6-5: 1.625rem; /* 26px */
199    --text-size-7: 1.75rem; /* 28px */
200    --text-size-7-5: 1.875rem; /* 30px */
201    --text-size-8: 2rem; /* 32px */
202    --text-size-8-5: 2.125rem; /* 34px */
203    --text-size-9: 2.25rem; /* 36px */
204    --text-size-9-5: 2.375rem; /* 38px */
205    --text-size-10: 2.5rem; /* 40px */
206    --text-size-11: 2.75rem; /* 44px */
207    --text-size-12: 3rem; /* 48px */
208    --text-size-14: 3.5rem; /* 56px */
209    --text-size-16: 4rem; /* 64px */
210    --text-size-18: 4.5rem; /* 72px */
211    --text-size-20: 5rem; /* 80px */
212    --text-size-24: 6rem; /* 96px */
213    --text-size-28: 7rem; /* 112px */
214    --text-size-32: 8rem; /* 128px */
215
216    /* Line */
217    --line-size-none: 0px;
218    --line-size-xs: 0.5px;
219    --line-size-sm: 1px;
220    --line-size-md: 2px;
221    --line-size-lg: 4px;
222    --line-size-xl: 8px;
223
224    /* Gap */
225    --gap-size-none: 0px;
226    --gap-size-xs: 8px;
227    --gap-size-sm: 16px;
228    --gap-size-md: 32px;
229    --gap-size-lg: 48px;
230    --gap-size-xl: 64px;
231
232    /* Radius */
233    --radius-xs: 4px;
234    --radius-sm: 8px;
235    --radius-md: 12px;
236    --radius-lg: 16px;
237    --radius-xl: 24px;
238    --radius-2xl: 32px;
239    --radius-none: 0px;
240    --radius-full: 999px;
241
242    /* Dropshadow */
243    --shadow-none: 0px 0px 0px 0px rgba(0, 0, 0, 0);
244    --shadow-sm: 0px 1px 2px 0px rgba(0, 0, 0, 0.08);
245    --shadow-md: 0px 2px 4px -1px rgba(0, 0, 0, 0.08);
246    --shadow-lg: 0px 8px 16px -4px rgba(0, 0, 0, 0.08);
247    --shadow-xl: 0px 16px 32px -6px rgba(0, 0, 0, 0.12);
248    --shadow-2xl: 0px 16px 64px -12px rgba(0, 0, 0, 0.22);
249
250    /* Font Weights */
251    --font-weight-100: 100;
252    --font-weight-200: 200;
253    --font-weight-300: 300;
254    --font-weight-400: 400;
255    --font-weight-500: 500;
256    --font-weight-600: 600;
257    --font-weight-700: 700;
258    --font-weight-800: 800;
259    --font-weight-900: 900;
260
261    /* Letter Spacings */
262    --letter-space-2xs: -0.05em;
263    --letter-space-xs: -0.03em;
264    --letter-space-sm: -0.015em;
265    --letter-space-md: 0em;
266    --letter-space-lg: 0.015em;
267    --letter-space-xl: 0.03em;
268    --letter-space-2xl: 0.05em;
269    --letter-space-3xl: 0.08em;
270    --letter-space-4xl: 0.12em;
271
272    /* Line Heights */
273    --line-height-2xs: 0.9;
274    --line-height-xs: 1;
275    --line-height-sm: 1.1;
276    --line-height-md: 1.2;
277    --line-height-lg: 1.5;
278    --line-height-xl: 1.7;
279    --line-height-2xl: 2;
280
281    /* Color Shades */
282    --shade-0: 0%;
283    --shade-4: 4%;
284    --shade-8: 8%;
285    --shade-12: 12%;
286    --shade-16: 16%;
287    --shade-20: 20%;
288    --shade-30: 30%;
289    --shade-40: 40%;
290    --shade-50: 50%;
291    --shade-60: 60%;
292    --shade-70: 70%;
293    --shade-80: 80%;
294    --shade-90: 90%;
295    --shade-100: 100%;
296  }</style><style data-shopify>/* Root Variables */
297  :root {
298    --root-font-size: 16px;
299    --root-color-primary: #000;
300    --root-color-secondary: #fff;
301  }
302
303  /* Colors */
304  :root {
305    --color-primary: var(--root-color-primary);
306    --color-secondary: var(--root-color-secondary);
307    --color-focus: #4a9afc;
308    --color-error: #ba4444;
309    --color-price: var(--color-primary);
310    --color-text-savings: var(--color-primary);
311    --disabled-grey: #f6f6f6;
312    --disabled-border: #b6b6b6;
313    --disabled-grey-text: #b6b6b6;
314    --success-green: #56ad6a;
315    --success-green-bg: #ecfef0;
316    --color-sticky-nav-links: #fff;
317  }
318
319  /* Body Font Stack */
320  :root {
321    --body-font-family: 'Arial';
322    --body-font-family-fallback: 'sans-serif';
323    --body-font-weight: var(--font-weight-400);
324    --body-letter-spacing: var(--letter-space-md);
325    --body-line-height: var(--line-height-md);
326    --body-text-transform: none;
327    --body-lg-font-size: var(--text-size-4);
328    --body-md-font-size: var(--text-size-3-5);
329    --body-sm-font-size: var(--text-size-3);
330    --body-xs-font-size: var(--text-size-2-5);
331
332    @media screen and (min-width: 769px) {
333      --body-lg-font-size: var(--text-size-4-5);
334      --body-md-font-size: var(--text-size-4);
335      --body-sm-font-size: var(--text-size-3-5);
336      --body-xs-font-size: var(--text-size-3);
337    }
338  }
339
340  /* Heading Font Stack */
341  :root {
342    --heading-font-family: 'Arial';
343    --heading-font-family-fallback: 'sans-serif';
344    --heading-font-weight: var(--font-weight-700);
345    --heading-letter-spacing: var(--letter-space-md);
346
347    --heading-2xl-line-height: var(--line-height-md);
348    --heading-xl-line-height: var(--line-height-md);
349    --heading-lg-line-height: var(--line-height-md);
350    --heading-md-line-height: var(--line-height-md);
351    --heading-sm-line-height: var(--line-height-md);
352    --heading-xs-line-height: var(--line-height-md);
353
354    --heading-2xl-font-size: var(--text-size-12);
355    --heading-xl-font-size: var(--text-size-8);
356    --heading-lg-font-size: var(--text-size-6);
357    --heading-md-font-size: var(--text-size-5);
358    --heading-sm-font-size: var(--text-size-4-5);
359    --heading-xs-font-size: var(--text-size-4);
360
361    @media screen and (min-width: 769px) {
362      --heading-2xl-font-size: var(--text-size-16);
363      --heading-xl-font-size: var(--text-size-12);
364      --heading-lg-font-size: var(--text-size-8);
365      --heading-md-font-size: var(--text-size-6);
366      --heading-sm-font-size: var(--text-size-5);
367      --heading-xs-font-size: var(--text-size-4-5);
368    }
369  }
370
371  /* Accent Font Stack */
372  :root {
373    --accent-font-family: 'Arial';
374    --accent-font-family-fallback: 'sans-serif';
375    --accent-font-weight: var(--font-weight-400);
376    --accent-letter-spacing: var(--letter-space-4xl);
377    --accent-line-height: var(--line-height-md);
378    --accent-text-transform: uppercase;
379  }
380
381  /* ==================================================================== */
382  /* OLD CSS VARIABLES THAT NEEDS TO 🔥 */
383  /* ==================================================================== */
384  :root {
385    --z-index-modal: 30;
386    --z-index-toolbar: 7;
387    --z-index-header: 6;
388    --z-index-header-submenu: 7;
389    --z-index-header-bottom-row: 3;
390    --z-index-header-drawers: 5;
391    --z-index-header-drawers-mobile: 3;
392    --z-index-header-search: 7;
393    --z-index-loader: 4;
394    --z-index-header-search-overlay: 1;
395    --url-ico-select: url(//foxfirelites.com/cdn/shop/t/18/assets/ico-select.svg);
396    --url-swirl-svg: url(//foxfirelites.com/cdn/shop/t/18/assets/swirl.svg);
397    --header-padding-bottom: 0;
398    --gutter: 30px;
399    --page-width: 1500px;
400    --page-width-narrow: 1000px;
401    --page-width-gutter-small: 17px;
402    --grid-gutter: 22px;
403    --grid-gutter-small: 16px;
404    --slide-curve: 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
405    --drawer-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
406    --product-grid-margin: 10px;
407    --product-grid-padding: 12px;
408    --product-radius: 10px;
409    --page-top-padding: 35px;
410    --page-narrow: 780px;
411    --page-width-padding: 40px;
412    --grid-gutter: 22px;
413    --index-section-padding: 60px;
414    --section-header-bottom: 40px;
415    --size-chart-margin: 30px 0;
416    --size-chart-icon-margin: 5px;
417    --newsletter-reminder-padding: 20px 30px 20px 25px;
418    --text-frame-margin: 10px;
419    --desktop-menu-chevron-size: 10px;
420    --site-nav-item-padding: 20px;
421    --site-nav-item-padding-top-bottom: 16px;
422    --site-nav-icon-padding: 12px;
423  }
424
425  @media screen and (max-width: 768px) {
426    :root {
427      --page-top-padding: 15px;
428      --page-narrow: 330px;
429      --page-width-padding: 17px;
430      --grid-gutter: 16px;
431      --index-section-padding: 40px;
432      --section-header-bottom: 25px;
433      --text-frame-margin: 7px;
434    }
435  }</style>
436<style data-shopify>:root {
437    --text-size-scale-n-4: var(--text-size-2); /* 8px */
438    --text-size-scale-n-3: var(--text-size-2-5); /* 10px */
439    --text-size-scale-n-2: var(--text-size-3); /* 12px */
440    --text-size-scale-n-1: var(--text-size-3-5); /* 14px */
441    --text-size-scale-n0: var(--text-size-4); /* 16px */
442    --text-size-scale-n1: var(--text-size-4-5); /* 18px */
443    --text-size-scale-n2: var(--text-size-5); /* 20px */
444    --text-size-scale-n3: var(--text-size-6); /* 24px */
445    --text-size-scale-n4: var(--text-size-6-5); /* 26px */
446    --text-size-scale-n5: var(--text-size-7); /* 28px */
447    --text-size-scale-n6: var(--text-size-8); /* 32px */
448    --text-size-scale-n7: var(--text-size-9); /* 36px */
449    --text-size-scale-n8: var(--text-size-10); /* 40px */
450    --text-size-scale-n9: var(--text-size-12); /* 48px */
451    --text-size-scale-n10: var(--text-size-14); /* 56px */
452    --text-size-scale-n11: var(--text-size-16); /* 64px */
453    --text-size-scale-n12: var(--text-size-18); /* 72px */
454    --text-size-scale-n13: var(--text-size-20); /* 80px */
455    --text-size-scale-n14: var(--text-size-24); /* 96px */
456
457    --font-weight-scale-n-3: var(--font-weight-100);
458    --font-weight-scale-n-2: var(--font-weight-200);
459    --font-weight-scale-n-1: var(--font-weight-300);
460    --font-weight-scale-n0: var(--font-weight-400);
461    --font-weight-scale-n1: var(--font-weight-500);
462    --font-weight-scale-n2: var(--font-weight-600);
463    --font-weight-scale-n3: var(--font-weight-700);
464    --font-weight-scale-n4: var(--font-weight-800);
465    --font-weight-scale-n5: var(--font-weight-900);
466
467    --letter-spacing-scale-n-3: var(--letter-space-2xs);
468    --letter-spacing-scale-n-2: var(--letter-space-xs);
469    --letter-spacing-scale-n-1: var(--letter-space-sm);
470    --letter-spacing-scale-n0: var(--letter-space-md);
471    --letter-spacing-scale-n1: var(--letter-space-lg);
472    --letter-spacing-scale-n2: var(--letter-space-xl);
473    --letter-spacing-scale-n3: var(--letter-space-2xl);
474    --letter-spacing-scale-n4: var(--letter-space-3xl);
475    --letter-spacing-scale-n5: var(--letter-space-4xl);
476
477    --line-height-scale-n-3: var(--line-height-2xs);
478    --line-height-scale-n-2: var(--line-height-xs);
479    --line-height-scale-n-1: var(--line-height-sm);
480    --line-height-scale-n0: var(--line-height-md);
481    --line-height-scale-n1: var(--line-height-lg);
482    --line-height-scale-n2: var(--line-height-xl);
483    --line-height-scale-n3: var(--line-height-2xl);
484
485    /* Body Font Scales */--body-letter-spacing: var(--letter-spacing-scale-n0);--body-line-height: var(--line-height-scale-n1);--body-lg-font-size: var(--text-size-scale-n0);
486      --body-md-font-size: var(--text-size-scale-n-1);
487      --body-sm-font-size: var(--text-size-scale-n-2);
488      --body-xs-font-size: var(--text-size-scale-n-3);/* Heading Font Scales */--heading-letter-spacing: var(--letter-spacing-scale-n0);--heading-line-height: var(--line-height-scale-n0);/* Accent Font Scales */@media screen and (min-width: 769px) {
489      /* Body Font Desktop Sizes */--body-lg-font-size: var(--text-size-scale-n1);
490        --body-md-font-size: var(--text-size-scale-n0);
491        --body-sm-font-size: var(--text-size-scale-n-1);
492        --body-xs-font-size: var(--text-size-scale-n-2);/* Heading Desktop Font Sizes */--heading-2xl-font-size: max(var(--text-size-scale-n11), var(--body-md-font-size));
493        --heading-xl-font-size: max(var(--text-size-scale-n9), var(--body-md-font-size));
494        --heading-lg-font-size: max(var(--text-size-scale-n6), var(--body-md-font-size));
495        --heading-md-font-size: max(var(--text-size-scale-n3), var(--body-md-font-size));
496        --heading-sm-font-size: max(var(--text-size-scale-n2), var(--body-md-font-size));
497        --heading-xs-font-size: max(var(--text-size-scale-n1), var(--body-md-font-size));}
498  }</style>
499<style data-shopify>:root {
500    
501
502    
503  }
504
505  
506
507  
508
509  /* LEGACY TOKENS THAT WE NEED TO KILLLLLLLLLLLLL */
510  /* --------------------------------------------- */
511
512  :root {
513    /* Fixed colors */
514    --color-price: ;
515    --color-text-savings: ;
516
517    /* TODO: Move to component that uses this */
518    --color-button-primary: #000; /* TODO: Remove this */
519    --color-button-primary-light: #1a1a1a; /* TODO: Remove this */
520    --color-button-primary-dim: #000000; /* TODO: Remove this */
521    --color-button-primary-text: #ffffff; /* TODO: Remove this */
522
523    --color-sale-tag: ;
524    --color-sale-tag-text: ;
525  }</style><style data-shopify>
526  :root {
527    
528
529    --color-background: #fff;
530    --color-background-alpha-0: rgba(255, 255, 255, 0);
531    --color-background-alpha-90: rgba(255, 255, 255, 0.9);
532
533    /* Typography */
534    
535    
536    --color-headings: #1d1d1d;
537    --color-text: #1d1d1d;
538
539    --color-text-05: #f4f4f4;
540    --color-text-05-alpha-0: rgba(244, 244, 244, 0);
541
542    --color-text-hover: #1d1d1d;
543    --color-text-light: #1d1d1d;
544    --color-links: #046e82;
545    --color-link-hover: #1d1d1d;
546
547    /* Products */
548    --color-products-in-stock: #268c0b;
549    --color-products-low-stock: #cc1313;
550    --color-products-no-stock: #121212;
551
552    /* Buttons */
553    
554    
555
556    --color-button-text: #ffffff;
557    --color-button-background: #f04f36;
558    --color-button-background-hover: #f2614a;
559
560    --color-button-background-focus: #dddddd;
561    --color-button-disable: #939393;
562
563    --color-button-secondary-text: #f04f36;
564    --color-button-secondary-background: #ffffff;
565    --color-button-secondary-background-hover: #ffffff;
566    --color-button-secondary-background-focus: #e6e6e6;
567    --color-button-secondary-border: #dddddd;
568    --color-button-secondary-border-hover: #c7c7c7;
569
570    --button-primary-text-color: #ffffff;
571    --button-primary-text-color-highlight: #ffffff;
572    --button-primary-bg-color: #000000;
573    --button-primary-bg-color-highlight: #606060;
574    --button-primary-border-color: rgba(0,0,0,0);
575    --button-primary-border-color-highlight: rgba(0,0,0,0);
576
577    --button-secondary-text-color: #000000;
578    --button-secondary-text-color-highlight: #ffffff;
579    --button-secondary-bg-color: rgba(0,0,0,0);
580    --button-secondary-bg-color-highlight: #000000;
581    --button-secondary-border-color: #000000;
582    --button-secondary-border-color-highlight: #000000;
583
584    --button-link-text-color: #000000;
585    --button-link-text-color-highlight: #ccc;
586
587    /* Header */
588    --color-header-text: #1d1d1d;
589    --color-header-background: #fff;
590
591    /* Forms */
592    
593    --color-input-text: #4d4d4d;
594
595    --color-input-text-hover: #dddddd;
596
597    --color-input-background: #fff;
598    --color-input-background-hover: #f4f4f4;
599
600    --color-input-border: #dddddd;
601    --color-input-border-alpha-25: rgba(221, 221, 221, 0.25);
602
603
604    --color-input-border-morph-2: #c7c7c7;
605    --color-input-border-morph-4: #b1b1b1;
606    --color-input-border-morph-10: #858585;
607    --color-input-border-morph-12: #767676;
608
609    --color-input-border-hover: #c7c7c7;
610
611    --color-product-sale-accent: #f04f36;
612    --color-product-review-star: #ffab41;
613
614    /* Footer */
615    --color-footer-text: #1d1d1d;
616
617    --color-footer-background: #f5f3ed;
618
619
620    --color-footer-link: #3c3c3c;
621    --color-footer-color-alt: rgba(29, 29, 29, 0.8);
622    --color-additional-accent: rgba(29, 29, 29, 0.5);
623
624    /* Placeholders */
625    --color-placeholder-background: #ededed;
626    --color-placeholder-fill: #b0b0b0;
627
628    /* General */
629    
630    
631    
632    --color-black: #000;
633    --color-white: #fff;
634
635    --color-border: #808080;
636    --color-border-modify: rgba(128, 128, 128, 0.3);
637    --color-border-less-soft: rgba(0, 0, 0, 0.25);
638    --color-border-soft: rgba(0, 0, 0, 0.15);
639    --color-border-softer: rgba(0, 0, 0, 0.1);
640
641
642    --color-overlay-background: Liquid error (snippets/head.styles.legacy-settings-color line 118): Alpha must be a float between 0 and 1;
643
644
645    --color-background-8: #ededed;
646    --color-background-4: #f6f6f6;
647
648    --color-background-light: #f2f2f2;
649    --color-search-category-background: #e8e8e8;
650
651    --color-box-shadow-border: rgba(128, 128, 128, 0.16);
652    --color-box-shadow-shadow: rgba(128, 128, 128, 0.11);
653    --color-box-shadow-border-focused: rgba(128, 128, 128, 0.5);
654    --color-box-shadow-shadow-focused: rgba(128, 128, 128, 0.5);
655
656    --color-box-shadow-shadow-headings: rgba(128, 128, 128, 0.05);
657
658    --color-error: #f05d5d;
659    --color-success: #51a551;
660    --color-warning: #dfa354;
661    --color-highlight: #fffbd9;
662    --color-notice: --color-text;
663    --color-sale: --color-product-sale-accent;
664    --color-star: --color-product-review-star;
665    --color-star-empty: #8e8e8e;
666
667    --color-facebook: #425dab;
668    --color-x: #000;
669    --color-pinterest: #bd1c1c;
670    --color-linkedin: #0077B5;
671  }
672</style>
673<style data-shopify>:root {
674    --heading-font-family: 'Open Sans', sans-serif;
675    --heading-font-weight: 400;
676    --heading-letter-spacing: 0px;
677    --body-font-family: 'Open Sans', sans-serif;
678
679    --heading-font-style: normal;
680    --subheading-font-family: 'Open Sans', sans-serif;
681    --button-font-family: 'Open Sans', sans-serif;
682
683    /* Font sizes */
684    --heading-xl-font-size: 40px;
685    --heading-lg-font-size: 20px;
686    --body-md-font-size: 15px;
687
688    --button-primary-font-size: 1rem;
689    --button-primary-line-height: inherit;
690
691    --button-secondary-font-size: 1rem;
692    --button-secondary-line-height: inherit;
693
694    --button-link-style-font-size: 1rem;
695    --button-link-style-line-height: inherit;
696
697    --heading-responsive: 1;
698    --subheading-responsive: 1;
699
700    /* Button styles */
701    --button-font-weight: 700;
702    --button-font-style: normal;
703    --button-letter-spacing: 0px;
704    --button-transition-speed: 0.3s;
705    --button-font-capitalization: none;
706
707    --button-primary-border-radius: 0px;
708    --button-secondary-border-radius: 0px;
709    --button-link-underline-thickness: 1px;
710    --button-link-underline-style: solid;
711  }</style>
712<style-sheet name="vendor.flickity.css" remove-duplicate="true" load="async" style="display: none;"><link href="//foxfirelites.com/cdn/shop/t/18/assets/vendor.flickity.css?v=168134560433028609901790694083" rel="preload" as="style" onload="this.rel='stylesheet'">
713<script type="module" src="//foxfirelites.com/cdn/shop/t/18/assets/utility.stylesheet.js?v=115421978848924304161790694082"></script>
713</style-sheet>
714
715<style-sheet name="vendor.swiper.css" remove-duplicate="true" load="async" style="display: none;"><link href="//foxfirelites.com/cdn/shop/t/18/assets/vendor.swiper.css?v=103091539061108917781790694057" rel="preload" as="style" onload="this.rel='stylesheet'">
716<script type="module" src="//foxfirelites.com/cdn/shop/t/18/assets/utility.stylesheet.js?v=115421978848924304161790694082"></script>
716</style-sheet>
717
718
719
720<style data-shopify>
721  :root {
722    /* Backgrounds */
723    
724    
725
726    --color-background: 
727      
728rgb(255, 255, 255)
729    ;
730    --color-background-alpha-0: rgba(255, 255, 255, 0);
731    --color-background-alpha-90: rgba(255, 255, 255, 0.9);
732
733    /* Typography */
734    --color-headings: #121212;
735    --color-text: #121212;
736
737    --color-text-05: #f3f3f3;
738    --color-text-05-alpha-0: rgba(243, 243, 243, 0);
739
740    
741    
742
743    
744    
745    
746    
747
748    --color-text-hover: 
749      
750#2f2f2f
751    ;
752    --color-text-light: #111111;
753    --color-links: #121212;
754
755    
756    
757    
758
759    --color-link-hover: 
760      
761#232323
762    ;
763
764    /* Products */
765    --color-products-in-stock: #268c0b;
766    --color-products-low-stock: #cc1313;
767    --color-products-no-stock: #121212;
768
769    /* Buttons */
770    --color-button-text: #ffffff;
771    --color-button-background: #cc1313;
772    --color-button-background-hover: rgb(209, 43, 43);
773
774    
775    
776
777    --color-button-background-focus: 
778      
779#b91111
780    ;
781    --color-button-disable: #707070;
782
783    --color-button-secondary-text: #ffffff;
784    --color-button-secondary-background: #121212;
785    --color-button-secondary-background-hover: rgb(65, 65, 65);
786
787    
788    
789
790    --color-button-secondary-background-focus: 
791      
792#1d1d1d
793    ;
794    --color-button-secondary-border: #121212;
795
796    
797    
798
799    --color-button-secondary-border-hover: 
800      
801#1d1d1d
802    ;
803
804    /* Header */
805    --color-header-text: #ffffff;
806
807    
808    
809
810    --color-header-background: 
811      
812rgb(18, 18, 18)
813    ;
814
815    /* Forms */
816    --color-input-text: #4d4d4d;
817
818    
819    
820
821    --color-input-text-hover: 
822      
823#434343
824    ;
825
826    --color-input-background: #ffffff;
827    --color-input-background-hover: #f3f3f3;
828
829    --color-input-border: #dddddd;
830    --color-input-border-alpha-25: rgba(221, 221, 221, 0.25);
831
832    
833
834    
835    
836
837    
838    
839
840    
841    
842
843    
844    
845
846    --color-input-border-morph-2: 
847      
848#cecece
849    ;
850    --color-input-border-morph-4: 
851      
852#bebebe
853    ;
854    --color-input-border-morph-10: 
855      
856#919191
857    ;
858    --color-input-border-morph-12: 
859      
860#818181
861    ;
862
863    --color-input-border-hover: 
864      
865#cecece
866    ;
867
868    --color-product-sale-accent: #cc1313;
869    --color-product-review-star: #121212;
870
871    /* Footer */
872    --color-footer-text: #ffffff;
873
874    
875    
876
877    --color-footer-background: 
878      
879rgb(18, 18, 18)
880    ;
881
882    
883    
884
885    --color-footer-link: 
886      
887#ebebeb
888    ;
889    --color-footer-color-alt: rgba(255, 255, 255, 0.8);
890    --color-additional-accent: rgba(255, 255, 255, 0.5);
891
892    /* Placeholders */
893    --color-placeholder-background: #ececec;
894    --color-placeholder-fill: #acacac;
895
896    /* General */
897    
898    
899
900    --color-black: #000;
901    --color-white: #fff;
902
903    
904    
905    
906    
907
908    
909    
910
911    --color-border: rgb(128, 128, 128);
912    --color-border-modify: rgba(128, 128, 128, 0.3);
913    --color-border-less-soft: rgba(0, 0, 0, 0.25);
914    --color-border-soft: rgba(0, 0, 0, 0.15);
915    --color-border-softer: rgba(0, 0, 0, 0.1);
916
917    
918
919    --color-overlay-background: rgba(18, 18, 18, 0.5);
920
921    
922
923    --color-background-8: #ececec;
924    --color-background-4: #f6f6f6;
925
926    --color-background-light: #f3f3f3;
927    --color-search-category-background: #e7e7e7;
928
929    --color-box-shadow-border: rgba(128, 128, 128, 0.16);
930    --color-box-shadow-shadow: rgba(128, 128, 128, 0.11);
931    --color-box-shadow-border-focused: rgba(128, 128, 128, 0.5);
932    --color-box-shadow-shadow-focused: rgba(128, 128, 128, 0.5);
933
934    --color-box-shadow-shadow-headings: rgba(128, 128, 128, 0.05);
935
936    --color-error: #f05d5d;
937    --color-success: #51a551;
938    --color-warning: #dfa354;
939    --color-highlight: #fffbd9;
940    --color-notice: --color-text;
941    --color-sale: --color-product-sale-accent;
942    --color-star: --color-product-review-star;
943    --color-star-empty: #898989;
944
945    --color-facebook: #425dab;
946    --color-x: #000;
947    --color-pinterest: #bd1c1c;
948    --color-linkedin: #0077B5;
949  }
950</style>
951
952<style data-shopify>:root {
953    /* Override heading font stack with empire legacy settings */
954    --heading-font-family: Lato,sans-serif;
955    --heading-font-scale: 1.2;
956    --heading-font-weight: 400;
957    --heading-font-style: normal;
958    --heading-font-capitalization: uppercase;
959    --heading-letter-spacing: 0.02em;
960    --subheading-font-family: 'Nunito Sans', sans-serif;
961    --button-font-family: Lato,sans-serif;
962    --button-font-weight: 400;
963    --button-font-style: normal;
964    --button-font-capitalization: initial;
965    --button-letter-spacing: 0.0em;
966
967    --heading-responsive: 1;
968    --subheading-responsive: 1;
969    --body-font-family: Lato;
970
971    --menu-font-family: Lato,sans-serif;
972    --menu-font-weight: 400;
973    --menu-font-style: normal;
974    --menu-font-capitalization: uppercase;
975    --menu-letter-spacing: 0.01em;
976  }</style>
977  
977<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
977<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/53362458807/digital_wallets/dialog">
978<meta id="in-context-paypal-metadata" data-shop-id="53362458807" data-venmo-supported="true" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD">
979<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
979<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=9797815"></script>
979
980<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
981<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=9797815&shop_id=53362458807" crossorigin="anonymous"></script>
vendor: 1 bytes, line 981
981
982<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":53362458807,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/53362458807","merchantName":"FoxFire Safety Lites","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","discover","amex","elo","jcb"],"total":{"type":"pending","label":"FoxFire Safety Lites","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 982
982
983<script id="shopify-features" type="application/json">{"accessToken":"8c2b200b217737ade010dd9259c2ef6f","betas":["rich-media-storefront-analytics"],"domain":"foxfirelites.com","predictiveSearch":true,"shopId":53362458807,"locale":"en"}</script>
vendor: 1 bytes, line 983
983
984<script>var Shopify = Shopify || {};
985Shopify.shop = "foxfirelites.myshopify.com";
986Shopify.locale = "en";
987Shopify.currency = {"active":"USD","rate":"1.0"};
988Shopify.country = "US";
989Shopify.theme = {"name":"Updated copy of Patrol Release Theme - 2026-09-29","id":207850602865,"schema_name":"Empire","schema_version":"13.0.1","theme_store_id":838,"role":"main"};
990Shopify.theme.handle = "null";
991Shopify.theme.style = {"id":null,"handle":null};
992Shopify.cdnHost = "foxfirelites.com/cdn";
993Shopify.routes = Shopify.routes || {};
994Shopify.routes.root = "/";
995Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
996Shopify.SignInWithShop = Shopify.SignInWithShop || {};
997Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
998Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 998
998
999<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 999
999
1000<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 1000
1000
1001<script>
1002  window.ShopifyPay = window.ShopifyPay || {};
1003  window.ShopifyPay.apiHost = "shop.app\/pay";
1004  window.ShopifyPay.redirectState = null;
1005</script>
vendor: 1 bytes, line 1005
1005
1006<script>
1007  window.Shopify = window.Shopify || {};
1008  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
1009  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
1010  window.Shopify.SignInWithShop.eligible = true;
1011</script>
vendor: 1 bytes, line 1011
1011
1012<script id="shop-js-analytics" type="application/json">{"pageType":"cart"}</script>
vendor: 1 bytes, line 1012
1012
1013<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 1013
1013
1014<script type="module">
1015  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
1016
1017  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
1018
1019</script>
vendor: 1 bytes, line 1019
1019
1020<script>
1021  window.Shopify = window.Shopify || {};
1022  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
1023  window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]};
1024</script>
vendor: 1 bytes, line 1024
1024
1025<script>(function() {
1026  var isLoaded = false;
1027  function asyncLoad() {
1028    if (isLoaded) return;
1029    isLoaded = true;
1030    var urls = ["https:\/\/chimpstatic.com\/mcjs-connected\/js\/users\/1f46a78d665fdd73d49beb7da\/01d6ae0a799133baf2bec493c.js?shop=foxfirelites.myshopify.com","https:\/\/cdn-widgetsrepository.yotpo.com\/v1\/loader\/ceVTFAl0eNXykv1OxAEHPFkOImHoSY5DgQx3bCvA?shop=foxfirelites.myshopify.com"];
1031    for (var i = 0; i < urls.length; i++) {
1032      var s = document.createElement('script');
1033      s.type = 'text/javascript';
1034      s.async = true;
1035      s.src = urls[i];
1036      var x = document.getElementsByTagName('script')[0];
1037      x.parentNode.insertBefore(s, x);
1038    }
1039  };
1040  if(window.attachEvent) {
1041    window.attachEvent('onload', asyncLoad);
1042  } else {
1043    window.addEventListener('load', asyncLoad, false);
1044  }
1045})();</script>
vendor: 1 bytes, line 1045
1045
1046<script id="__st">var __st={"a":53362458807,"offset":-14400,"reqid":"a2237326-bebd-4f2a-add7-9ec71180af33-1791596663","pageurl":"foxfirelites.com\/cart","u":"68d11277a30c","p":"cart"};</script>
vendor: 1 bytes, line 1046
1046
1047<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 1047
1047
1048<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 1048
1048
1049<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//foxfirelites.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1049
1049
1050<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//foxfirelites.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
1050<script crossorigin="anonymous" defer="defer" src="//foxfirelites.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-f0e26bdf.js?v=20250812"></script>
vendor: 1 bytes, line 1050
1050
1051<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 1051
1051
1052<script>
1053  window.Shopify = window.Shopify || {};
1054  window.Shopify.MCP = window.Shopify.MCP || {};
1055  window.Shopify.MCP.enabled = true;
1056  window.Shopify.MCP.shop = "foxfirelites.myshopify.com";
1057  window.Shopify.MCP.mcpEndpoint = "https:\/\/foxfirelites.com\/api\/mcp";
1058  window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n  - What is your return policy?\n  - What is your shipping policy?\n  - What is your phone number?\n  - What are your hours of operation?\"\nSet policy_types to also get the store's written policies (full text and URL).\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."},"policy_types":{"type":"array","items":{"type":"string","enum":["refund","shipping","privacy","terms_of_service","terms_of_sale","subscription","legal_notice","contact"]},"description":"Policy kinds to fetch, chosen from the user's question — e.g. [\"refund\"] for returns\/exchanges\/damaged items, [\"contact\"] for phone\/hours\/address. Include every kind the question touches. Omit it to get only FAQ answers."}},"required":["query"]}}];
1059</script>
vendor: 1 bytes, line 1059
1059
1060<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/foxfirelites.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-f427de6a.js","sha256-ypGF+5vIq4Psw4WG7nsVtdd\/TCfsJWnrNuACdqLCElY=");})();
1061</script>
vendor: 1 bytes, line 1061
1061
1062<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://foxfirelites.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
1063</script>
vendor: 1 bytes, line 1063
1063
1064<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
1065  function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent);
1066</script>
vendor: 1 bytes, line 1066
1066
1067<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
1068</script>
1068
1069<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://foxfirelites.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
1070<style id="shopify-accelerated-checkout-cart">
1071        #shopify-buyer-consent {
1072  margin-top: 1em;
1073  display: inline-block;
1074  width: 100%;
1075}
1076
1077#shopify-buyer-consent.hidden {
1078  display: none;
1079}
1080
1081#shopify-subscription-policy-button {
1082  background: none;
1083  border: none;
1084  padding: 0;
1085  text-decoration: underline;
1086  font-size: inherit;
1087  cursor: pointer;
1088}
1089
1090#shopify-subscription-policy-button::before {
1091  box-shadow: none;
1092}
1093
1094      </style>
1095<link rel="compression-dictionary" href="//foxfirelites.com/cdn/shop/t/18/compiled_assets/styles.css?v=55596397364742937191790694102" crossorigin="anonymous">
1096<link rel="stylesheet" media="screen" href="//foxfirelites.com/cdn/shop/t/18/compiled_assets/styles.css?v=55596397364742937191790694102&subset=AAAAAAAAAAAAAAAAAAE" crossorigin="anonymous">
1097<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
1097
1098  
1099
1100
1101
1102
1103
1104  
1104<script type="text/javascript">
1105    
1106      window.__shgMoneyFormat = window.__shgMoneyFormat || {"USD":{"currency":"USD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","}};
1107    
1108    window.__shgCurrentCurrencyCode = window.__shgCurrentCurrencyCode || {
1109      currency: "USD",
1110      currency_symbol: "$",
1111      decimal_separator: ".",
1112      thousands_separator: ",",
1113      decimal_places: 2,
1114      currency_symbol_location: "left"
1115    };
1116  </script>
1116
1117
1118
1119
1120    <link href="//foxfirelites.com/cdn/shop/t/18/assets/stylesheet-tags.css?v=14080549596461555881790694063" rel="stylesheet" type="text/css" media="all" />
1121
1122    <style>
1123      :root {
1124        /* ------------------------------------------------------------
1125          Typography
1126        ------------------------------------------------------------ */
1127        /* Body */
1128        --element-text-font-family--body: Lato, sans-serif;
1129        --element-text-font-weight--body: 400;
1130        --element-text-font-size--rte-body: 16px;
1131        --element-text-line-height--body: var(--line-height-lg);
1132        /* Headings */
1133        --element-text-font-family--heading: Lato, sans-serif;
1134        --element-text-font-weight--heading: 400;
1135        --element-text-letter-spacing--heading: 0.02em;
1136        --element-text-text-transform--heading: uppercase;--element-text-font-size--heading-xl: 31.5px;
1137            @media screen and (max-width: 719px) {
1138              --element-text-font-size--heading-xl: 27px;
1139            }/* Buttons */
1140        --element-button-font-size: 13px;
1141        --element-button-radius: 3px;
1142        --element-badge-radius: 0px;
1143        --element-badge-px: var(--size-2);
1144        --element-badge-py: var(--size-0-5);
1145        
1146        /* ------------------------------------------------------------
1147          Colors
1148        ------------------------------------------------------------ */
1149        --color-primary: #121212; 
1150        --color-secondary: #ffffff;
1151        --root-color-primary: #121212; 
1152        --root-color-secondary: #ffffff;
1153        --element-text-color: #121212;
1154        --color-sale-tag-text: #fff ;
1155        --color-sale-tag: #cc1313;
1156      }
1157
1158      /* Override Shopify Payment Button styles */
1159      .shopify-payment-button .shopify-payment-button__button--unbranded,
1160      .shopify-payment-button .shopify-payment-button__button {
1161        --element-text-line-height--body-md: 1;
1162        --element-button-text-transform: none;
1163        --element-button-letter-spacing: 0.0em;
1164        --element-button-font-family: Lato, sans-serif;
1165        --color-primary: #cc1313;
1166        border: none!important;
1167      }
1168
1169      .add-to-cart-button{
1170        --element-text-line-height--body-md: 1;
1171        --element-button-font-size: var(--font-size-button-large);
1172        --element-button-text-transform: none;
1173        --element-button-letter-spacing: 0.0em;
1174        --element-button-font-family: Lato, sans-serif;
1175        --element-text-font-weight: 700;
1176        --element-text-color: #ffffff;
1177        --element-button-color-secondary: #121212;
1178        box-shadow: inset 0 0 0 1px #121212;
1179      }
1180
1181      .add-to-cart-button:focus-visible{
1182        box-shadow: 0 0 0 2px #fff, 0 0 0 5px #19f6, 0 3px 8px #0000001a;
1183      }
1184
1185      .add-to-cart-button:not(.element-button--inverted) {
1186        --element-button-color-primary: #121212;
1187        --element-button-color-secondary: #121212;
1188      }
1189
1190      .element-button{
1191        box-sizing: border-box;
1192      }
1193
1194      .product-title{
1195        --element-text-color: #121212;
1196      }
1197        
1198      .vendor{
1199        --element-text-color: #121212;
1200        text-decoration: none;
1201      }
1202
1203      .sale-price{
1204        --element-text-color: #cc1313;
1205      }
1206
1207      .compare-at-price{
1208        --element-text-color: #111111;
1209      }
1210
1211      .variant-option-value-name-selected{
1212        --element-button-color-primary: white!important;
1213        --element-button-color-secondary: #121212!important;
1214      }
1215
1216      .sku{
1217        --element-text-color: #111111;
1218      }
1219
1220      .inventory-status--low-stock {
1221        --element-text-color: #cc1313;
1222      }
1223
1224      .inventory-status--in-stock {
1225        --element-text-color: #268c0b;
1226      }
1227
1228      .inventory-status--sold-out {
1229        --element-text-color: #121212;
1230      }
1231
1232      .overlay-lightbox__overlay {
1233        z-index: 10000;
1234      }
1235
1236      .element-text--rte ul {
1237        padding-left: 20px;
1238        margin: 1rem 0;
1239      }
1240
1241      .element-text--rte table {
1242        display: block;
1243        border-collapse: collapse;
1244        width: fit-content;
1245        max-width: 100%;
1246        height: auto;
1247        overflow: auto;
1248        white-space: nowrap;
1249        box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
1250      }
1251
1252      .element-text--rte table th,
1253      .element-text--rte table td {
1254        border: 1px solid rgba(0, 0, 0, 0.1);
1255      }
1256
1257      .element-text--rte table th {
1258        font-family: var(--element-text-font-family--heading);
1259        font-weight: var(--element-text-font-weight--heading);
1260        font-size: var(--element-text-font-size--rte-body);
1261        padding: 8px;
1262        text-align: left;
1263        color: var(--color-primary);
1264      }
1265
1266      .element-text--rte table td {
1267        font-size: var(--element-text-font-size--rte-body);
1268        padding: 0.75rem 1rem;
1269      }
1270    </style>
1271
1272    <link href="//foxfirelites.com/cdn/shop/t/18/assets/theme.css?v=41735844184499907181791212955" rel="stylesheet" type="text/css" media="all" />
1273
1274    
1275      <link href="//foxfirelites.com/cdn/shop/t/18/assets/ripple.css?v=100240391239311985871790694100" rel="stylesheet" type="text/css" media="all" />
1276    
1277
1278    
1279    
1279<script>
1280      window.Theme = window.Theme || {};
1281      window.Theme.version = '13.0.1';
1282      window.Theme.name = 'Empire';
1283      window.Theme.routes = {
1284        "root_url": "/",
1285        "account_url": "/account",
1286        "account_login_url": "/account/login",
1287        "account_logout_url": "/account/logout",
1288        "account_register_url": "/account/register",
1289        "account_addresses_url": "/account/addresses",
1290        "collections_url": "/collections",
1291        "all_products_collection_url": "/collections/all",
1292        "search_url": "/search",
1293        "predictive_search_url": "/search/suggest",
1294        "cart_url": "/cart",
1295        "cart_add_url": "/cart/add",
1296        "cart_change_url": "/cart/change",
1297        "cart_clear_url": "/cart/clear",
1298        "product_recommendations_url": "/recommendations/products",
1299      };
1300    </script>
1300
1301    
1302
1303  
1304  
1305
1306<script type="text/javascript">
1307  
1308    window.SHG_CUSTOMER = null;
1309  
1310</script>
1310
1311
1312
1313
1314
1315
1316
1317
1318<!-- BEGIN app block: shopify://apps/yotpo-product-reviews/blocks/settings/eb7dfd7d-db44-4334-bc49-c893b51b36cf -->
1319
1320
1321<script type="text/javascript">
1322  (function e(){var e=document.createElement("script");
1323  e.type="text/javascript",e.async=true,
1324  e.src="//staticw2.yotpo.com//widget.js?lang=en";
1325  var t=document.getElementsByTagName("script")[0];
1326  t.parentNode.insertBefore(e,t)})();
1327</script>
1327
1328
1329
1330
1331  
1332<!-- END app block --><!-- BEGIN app block: shopify://apps/yotpo-product-reviews/blocks/reviews_tab/eb7dfd7d-db44-4334-bc49-c893b51b36cf -->
1333
1334
1335
1336<!-- END app block --><!-- BEGIN app block: shopify://apps/patrol/blocks/theme-injection/019c9621-793f-7152-a8bf-bac8d71d9665 -->
1337
1338
1339
1340<script>
1341  window.__patrolConsentPopupActive = false;
1342  window.__patrolConsentAppearance = null;
1343  window.__patrolPreviewScriptUrl = "https:\/\/cdn.shopify.com\/extensions\/01a112bf-11a4-7c62-8bc0-61a9aa2231f5\/patrol-90\/assets\/patrol-preview.js";
1344</script>
1344
1345
1346<!-- END app block -->
1346<script src="https://cdn.shopify.com/extensions/01a112bf-11a4-7c62-8bc0-61a9aa2231f5/patrol-90/assets/patrol-modules.js" type="text/javascript" defer="defer"></script>
1346
1347<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1348<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 53362458807,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "cart"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 1348
1348
1349<script>
1350  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
1351</script>
vendor: 1 bytes, line 1351
1351
1352<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
1352).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 53362458807,storefrontBaseUrl: "https://foxfirelites.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://foxfirelites.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab"],webPixelsConfigList: [{"id":"3337257329","configuration":"{\"mailchimp_store_id\":\"store_xkk9edeh9yhyszj9rtqw\", \"mailchimp_user_id\":\"126869082\",\"mailchimp_list_id\":\"194a6ce533\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"e357a49eadeb6216a959d63fa3fb8f55","type":"APP","apiClientId":2585307,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":[]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"901087601","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-0JGGWVQZH0\\\"],\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":\\\"G-0JGGWVQZH0\\\"},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":\\\"G-0JGGWVQZH0\\\"},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-0JGGWVQZH0\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":\\\"G-0JGGWVQZH0\\\"},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-0JGGWVQZH0\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":\\\"G-0JGGWVQZH0\\\"},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":\\\"G-0JGGWVQZH0\\\"},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-0JGGWVQZH0\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":\\\"G-0JGGWVQZH0\\\"},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":\\\"G-0JGGWVQZH0\\\"},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-0JGGWVQZH0\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"287670455","configuration":"{\"site_id\":\"2c4504af-88a3-4f09-beff-961938bd370a\",\"analytics_endpoint\"
1352:\"https:\\\/\\\/na.shgcdn3.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"695709fc3f146fa50a25299517a954f2","type":"APP","apiClientId":1158168,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"FoxFire Safety Lites","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"foxfirelites.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/foxfirelites.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://foxfirelites.com/cdn","7ec887c8w14f9f074p854094e1m1370c602",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"207850602865","themeStoreId":"838","themePublished":"true","eventMetadataId":"40a92c0e-57e1-41d2-9a28-10783721f779","pageType":"cart","shopId":"53362458807","storefrontBaseUrl":"https:\/\/foxfirelites.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\"]","isMerchantRequest":"false","hashVersion":"7ec887c8w14f9f074p854094e1m1370c602","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
1352<script>
1353  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
1354  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
1355  window.ShopifyAnalytics.meta.currency = 'USD';
1356  var meta = {"page":{"pageType":"cart","requestId":"a2237326-bebd-4f2a-add7-9ec71180af33-1791596663"}};
1357  for (var attr in meta) {
1358    window.ShopifyAnalytics.meta[attr] = meta[attr];
1359  }
1360</script>
vendor: 1 bytes, line 1360
1360
1361<script class="analytics">
1362  (function () {
1363    var customDocumentWrite = function(content) {
1364      var jquery = null;
1365
1366      if (window.jQuery) {
1367        jquery = window.jQuery;
1368      } else if (window.Checkout && window.Checkout.$) {
1369        jquery = window.Checkout.$;
1370      }
1371
1372      if (jquery) {
1373        jquery('body').append(content);
1374      }
1375    };
1376
1377    var hasLoggedConversion = function(token) {
1378      if (token) {
1379        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
1380      }
1381      return false;
1382    }
1383
1384    var setCookieIfConversion = function(token) {
1385      if (token) {
1386        var twoMonthsFromNow = new Date(Date.now());
1387        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
1388
1389        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
1390      }
1391    }
1392
1393    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
1394    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
1395    if (trekkie.integrations) {
1396      return;
1397    }
1398    trekkie.methods = [
1399      'identify',
1400      'page',
1401      'ready',
1402      'track',
1403      'trackForm',
1404      'trackLink'
1405    ];
1406    trekkie.factory = function(method) {
1407      return function() {
1408        var args = Array.prototype.slice.call(arguments);
1409        args.unshift(method);
1410        trekkie.push(args);
1411        if (method == 'track' || method == 'page') {
1412          var pageUrl;
1413          try {
1414            pageUrl = window.location.href;
1415          } catch (e) {}
1416          var pageReferrer;
1417          try {
1418            pageReferrer = document.referrer;
1419          } catch (e) {}
1420          try {
1421            if (window.__TREKKIE_SHIM_QUEUE == null) {
1422              window.__TREKKIE_SHIM_QUEUE = [];
1423            }
1424            window.__TREKKIE_SHIM_QUEUE.push({
1425              from: 'trekkie-stub',
1426              method: method,
1427              args: args.slice(1),
1428              pageContext: {
1429                url: pageUrl,
1430                referrer: pageReferrer
1431              }
1432            });
1433          } catch (e) {
1434            // no-op
1435          }
1436        }
1437        return trekkie;
1438      };
1439    };
1440    for (var i = 0; i < trekkie.methods.length; i++) {
1441      var key = trekkie.methods[i];
1442      trekkie[key] = trekkie.factory(key);
1443    }
1444    trekkie.load = function(config) {
1445      trekkie.config = config || {};
1446      trekkie.config.initialDocumentCookie = document.cookie;
1447      var first = document.getElementsByTagName('script')[0];
1448var script = document.createElement('script');
1449script.type = 'text/javascript';
1450script.onerror = function(e) {
1451  var scriptFallback = document.createElement('script');
1452  scriptFallback.type = 'text/javascript';
1453  scriptFallback.onerror = function(error) {
1454          var Monorail = {
1455      produce: function produce(monorailDomain, schemaId, payload) {
1456        var currentMs = new Date().getTime();
1457        var event = {
1458          schema_id: schemaId,
1459          payload: payload,
1460          metadata: {
1461            event_created_at_ms: currentMs,
1462            event_sent_at_ms: currentMs
1463          }
1464        };
1465        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
1466      },
1467      sendRequest: function sendRequest(endpointUrl, payload) {
1468        // Try the sendBeacon API
1469        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
1470          var blobData = new window.Blob([payload], {
1471            type: 'text/plain'
1472          });
1473
1474          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
1475            return true;
1476          } // sendBeacon was not successful
1477
1478        } // XHR beacon
1479
1480        var xhr = new XMLHttpRequest();
1481
1482        try {
1483          xhr.open('POST', endpointUrl);
1484          xhr.setRequestHeader('Content-Type', 'text/plain');
1485          xhr.send(payload);
1486        } catch (e) {
1487          console.log(e);
1488        }
1489
1490        return false;
1491      },
1492      isIos12: function isIos12() {
1493        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
1494      }
1495    };
1496    Monorail.produce('monorail-edge.shopifysvc.com',
1497      'trekkie_storefront_load_errors/1.1',
1498      {shop_id: 53362458807,
1499      theme_id: 207850602865,
1500      app_name: "storefront",
1501      context_url: window.location.href,
1502      source_url: "//foxfirelites.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js"});
1503
1504  };
1505  scriptFallback.async = true;
1506  scriptFallback.src = '//foxfirelites.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js';
1507  first.parentNode.insertBefore(scriptFallback, first);
1508};
1509script.async = true;
1510script.src = '//foxfirelites.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js';
1511first.parentNode.insertBefore(script, first);
1512
1513    };
1514    trekkie.load(
1515      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":53362458807,"isMerchantRequest":null,"themeId":207850602865,"themeCityHash":"6713508650300882134","contentLanguage":"en","currency":"USD","eventMetadataId":"40a92c0e-57e1-41
1515d2-9a28-10783721f779"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
1516    );
1517
1518    var loaded = false;
1519    trekkie.ready(function() {
1520      if (loaded) return;
1521      loaded = true;
1522
1523      window.ShopifyAnalytics.lib = window.trekkie;
1524
1525      var originalDocumentWrite = document.write;
1526      document.write = customDocumentWrite;
1527      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
1528      document.write = originalDocumentWrite;
1529
1530      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
1531      var token = match? match[1]: undefined;
1532      if (!hasLoggedConversion(token)) {
1533        setCookieIfConversion(token);
1534        
1535      }
1536    });
1537
1538    window.ShopifyAnalytics.lib.page(null,{"pageType":"cart","requestId":"a2237326-bebd-4f2a-add7-9ec71180af33-1791596663","shopifyEmitted":true});
1539
1540    var eventsListenerScript = document.createElement('script');
1541    eventsListenerScript.async = true;
1542    eventsListenerScript.src = "//foxfirelites.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
1543    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
1544})();</script>
vendor: 1 bytes, line 1544
1544
1545<script
1546  defer
1547  src="https://foxfirelites.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.10.1.min.js"
1548  data-application="storefront-renderer"
1549  data-shop-id="53362458807"
1550  data-render-region="gcp-us-central1"
1551  data-page-type="cart"
1552  data-theme-instance-id="207850602865"
1553  data-theme-name="Empire"
1554  data-theme-version="13.0.1"
1555  data-monorail-region="shop_domain"
1556  data-resource-timing-sampling-rate="10"
1557  data-shs="true"
1558  data-shs-beacon="true"
1559  data-shs-export-with-fetch="true"
1560  data-shs-logs-sample-rate="1"
1561  data-shs-beacon-endpoint="https://foxfirelites.com/api/collect"
1562></script>
vendor: 1 bytes, line 1562
1562
1563<script src="https://cdn.shopify.com/storefront/web-components/account.js" type="module" crossorigin fetchpriority="low" async></script>
1563<script id="shopify-customer-account-data" type="application/json">{"customer":null,"shop":{"id":"53362458807","customerAccountTranslations":[{"key":"account_menu.signed_out_state.sheet_title","value":"Sign in or create account"},{"key":"account_menu.signed_out_state.section_divider","value":"More ways to sign in"},{"key":"account_menu.signed_out_state.alternate_divider","value":"OR"},{"key":"account_menu.signed_out_state.email_field_label","value":"Email"},{"key":"account_menu.signed_out_state.orders_button","value":"Orders"},{"key":"account_menu.signed_out_state.profile_button","value":"Profile"},{"key":"account_menu.signed_out_state.shop_login_button","value":"Sign in with Shop"},{"key":"account_menu.signed_out_state.continue_with_google","value":"Continue with Google"},{"key":"account_menu.signed_out_state.continue_with_facebook","value":"Continue with Facebook"},{"key":"account_menu.signed_out_state.marketing_consent_label","value":"Email me with news and offers"},{"key":"account_menu.signed_in_state.greeting_with_name","value":"Hi, {{first_name}}"},{"key":"account_menu.signed_in_state.greeting_without_name","value":"Account"},{"key":"account_menu.signed_in_state.orders_button","value":"Orders"},{"key":"account_menu.signed_in_state.profile_button","value":"Profile"},{"key":"account_menu.location_picker.sheet_title","value":"Locations"},{"key":"account_menu.location_picker.search_field_placeholder","value":"Search"},{"key":"account_menu.aria_labels.close_menu","value":"Close menu"},{"key":"account_menu.aria_labels.back_to_main_menu","value":"Back to main menu from {{title}}"},{"key":"account_menu.aria_labels.open_submenu","value":"{{title}}, opens submenu"},{"key":"account_menu.aria_labels.loading_menu","value":"Loading menu"},{"key":"account_menu.aria_labels.loading","value":"Loading"},{"key":"account_menu.aria_labels.account","value":"Account"},{"key":"account_menu.aria_labels.sign_in_with_email","value":"Sign in with email"},{"key":"account_menu.aria_labels.sign_in","value":"Sign in"}],"socialLoginProviders":[{"handle":"Shop"}],"legacyCustomerAccounts":true,"signInLinksVisible":true,"b2bEnabled":true,"marketingConsentSigninEnabled":true,"marketingConsentPreselected":true},"visitor":{"country":"US","language":"en"}}</script>
1563
1564<meta name="shopify-y" content="e653df45-4535-48f7-a7ff-e9a0ed8273b9" data-expiration="1823154263000"><meta name="shopify-s" content="d929b01c-8810-4166-863b-1d244dd38783" data-expiration="1791598463000">
1565</head>
1566
1567  <body class="template-cart" data-instant-allow-query-string >
1568    
1568<script>
1569      document.documentElement.className=document.documentElement.className.replace(/\bno-js\b/,'js');
1570      if(window.Shopify&&window.Shopify.designMode)document.documentElement.className+=' in-theme-editor';
1571      if(('ontouchstart' in window)||window.DocumentTouch&&document instanceof DocumentTouch)document.documentElement.className=document.documentElement.className.replace(/\bno-touch\b/,'has-touch');
1572    </script>
1572
1573
1574    
1575    <svg
1576      class="icon-star-reference"
1577      aria-hidden="true"
1578      focusable="false"
1579      role="presentation"
1580      xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="3 3 17 17" fill="none"
1581    >
1582      <symbol id="icon-star">
1583        <rect class="icon-star-background" width="20" height="20" fill="currentColor"/>
1584        <path d="M10 3L12.163 7.60778L17 8.35121L13.5 11.9359L14.326 17L10 14.6078L5.674 17L6.5 11.9359L3 8.35121L7.837 7.60778L10 3Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
1585      </symbol>
1586      <clipPath id="icon-star-clip">
1587        <path d="M10 3L12.163 7.60778L17 8.35121L13.5 11.9359L14.326 17L10 14.6078L5.674 17L6.5 11.9359L3 8.35121L7.837 7.60778L10 3Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
1588      </clipPath>
1589    </svg>
1590    
1591
1592
1593    <a class="skip-to-main" href="#site-main">Skip to content</a>
1594
1595    <!-- BEGIN sections: header-group -->
1596<div id="shopify-section-sections--32261645664625__announcement-bar" class="shopify-section shopify-section-group-header-group site-announcement">
1596<script
1597  type="application/json"
1598  data-section-id="sections--32261645664625__announcement-bar"
1599  data-section-type="static-announcement">
1600</script>
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610  
1611    <div
1612      class="
1613        announcement-bar
1614        
1615      "
1616      style="
1617        color: #dddddd;
1618        background: #cc1313;
1619      "
1620      data-announcement-bar
1621    >
1622      
1623        <a
1624          class="announcement-bar-link"
1625          href="/pages/foxfire-portable-safety-flashers"
1626          ></a>
1627      
1628
1629      
1630        <div class="announcement-bar-text">
1631          NEW! FL263 SIGNAL LIGHT
1632        </div>
1633      
1634
1635      <div class="announcement-bar-text-mobile">
1636        
1637          NEW! FL263 SIGNAL LIGHT
1638        
1639      </div>
1640    </div>
1641  
1642
1643
1644</div><div id="shopify-section-sections--32261645664625__utility-bar" class="shopify-section shopify-section-group-header-group"><style data-shopify>
1645  .utility-bar {
1646    background-color: #121212;
1647    border-bottom: 1px solid rgba(0,0,0,0);
1648  }
1649
1650  .utility-bar .social-link,
1651  .utility-bar__menu-link {
1652    color: #ffffff;
1653  }
1654
1655  .utility-bar .disclosure__toggle {
1656    --disclosure-toggle-text-color: #ffffff;
1657    --disclosure-toggle-background-color: #121212;
1658  }
1659
1660  .utility-bar .disclosure__toggle:hover {
1661    --disclosure-toggle-text-color: #ffffff;
1662  }
1663
1664  .utility-bar .social-link:hover,
1665  .utility-bar__menu-link:hover {
1666    color: #ffffff;
1667  }
1668
1669  .utility-bar .disclosure__toggle::after {
1670    --disclosure-toggle-svg-color: #ffffff;
1671  }
1672
1673  .utility-bar .disclosure__toggle:hover::after {
1674    --disclosure-toggle-svg-color: #ffffff;
1675  }
1676</style>
1677
1678<script
1679  type="application/json"
1680  data-section-type="static-utility-bar"
1681  data-section-id="sections--32261645664625__utility-bar"
1682  data-section-data
1683>
1684  {
1685    "settings": {
1686      "mobile_layout": "below"
1687    }
1688  }
1689</script>
1689
1690
1691
1692
1693
1694  <section
1695    class="
1696      utility-bar
1697      
1698    "
1699    data-utility-bar
1700  >
1701    <div class="utility-bar__content">
1702
1703      
1704      
1705      
1706
1707      
1708        
1709        
1710      
1711        
1712        
1713      
1714        
1715        
1716      
1717        
1718        
1719      
1720        
1721        
1722      
1723        
1724        
1725      
1726        
1727        
1728      
1729        
1730        
1731      
1732        
1733        
1734      
1735        
1736        
1737      
1738        
1739        
1740      
1741        
1742        
1743      
1744        
1745        
1746      
1747        
1748        
1749      
1750        
1751        
1752      
1753        
1754        
1755      
1756        
1757        
1758      
1759        
1760        
1761      
1762        
1763        
1764      
1765        
1766        
1767      
1768        
1769        
1770      
1771        
1772        
1773      
1774        
1775        
1776      
1777        
1778        
1779      
1780        
1781        
1782      
1783        
1784        
1785      
1786
1787      <div class="utility-bar__content-left">
1788        
1789
1790        
1791      </div>
1792
1793      <div class="utility-bar__content-right" data-disclosure-items>
1794        
1795
1796        
1797          
1798          <div class="shopify-cross-border">
1799            
1800          
1801            
1802          </div>
1803          
1804
1805        
1806      </div>
1807    </div>
1808  </section>
1809
1810  
1811  
1812
1813  
1814
1815  <div class="utility-bar__mobile-disclosure" style="display: none;" data-utility-bar-mobile>
1816    
1817
1818    
1819      <span class="utility-bar__mobile__border"></span>
1820
1821      <div class="utility-bar__disclosure--mobile">
1822        
1823        <div class="shopify-cross-border">
1824          
1825        
1826          
1827        </div>
1828        
1829
1830      </div>
1831    
1832  </div>
1833
1834
1835</div><div id="shopify-section-sections--32261645664625__header" class="shopify-section shopify-section-group-header-group site-header-wrapper">
1836
1837<script
1838  type="application/json"
1839  data-section-id="sections--32261645664625__header"
1840  data-section-type="static-header"
1841  data-section-data>
1842  {
1843    "settings": {
1844      "sticky_header": true,
1845      "has_box_shadow": false,
1846      "live_search": {
1847        "enable": true,
1848        "money_format": "${{amount}}",
1849        "show_mobile_search_bar": false
1850      }
1851    }
1852  }
1853</script>
1853
1854
1855
1856
1857
1858
1859<style data-shopify>
1860  .site-logo {
1861    max-width: 150px;
1862  }
1863
1864  .site-logo-image {
1865    max-height: 40px;
1866  }
1867</style>
1868
1869<header
1870  class="site-header site-header-nav--open"
1871  role="banner"
1872  data-site-header
1873>
1874  <div
1875    class="
1876      site-header-main
1877      
1878        site-header--full-width
1879      
1880    "
1881    data-site-header-main
1882    data-site-header-sticky
1883    
1884      data-site-header-mobile-search-button
1885    
1886  >
1887    <button class="site-header-menu-toggle" data-menu-toggle>
1888      <div class="site-header-menu-toggle--button" tabindex="-1">
1889        <span class="toggle-icon--bar toggle-icon--bar-top"></span>
1890        <span class="toggle-icon--bar toggle-icon--bar-middle"></span>
1891        <span class="toggle-icon--bar toggle-icon--bar-bottom"></span>
1892        <span class="visually-hidden">Menu</span>
1893      </div>
1894    </button>
1895
1896    
1897      
1898
1899      
1900        <button
1901          class="site-header-mobile-search-button"
1902          data-mobile-search-button
1903        >
1904          
1905        <div class="site-header-mobile-search-button--button" tabindex="-1">
1906          <svg
1907  aria-hidden="true"
1908  focusable="false"
1909  role="presentation"
1910  xmlns="http://www.w3.org/2000/svg"
1911  width="23"
1912  height="24"
1913  fill="none"
1914  viewBox="0 0 23 24"
1915>
1916  <path d="M21 21L15.5 15.5" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
1917  <circle cx="10" cy="9" r="8" stroke="currentColor" stroke-width="2"/>
1918</svg>
1919
1920          <span class="visually-hidden">Search</span>
1921        </div>
1922      
1923        </button>
1924      
1925    
1926
1927    <div
1928      class="
1929        site-header-main-content
1930        
1931      "
1932    >
1933      <div class="site-header-logo">
1934        <a
1935          class="site-logo"
1936          href="/">
1937          
1938            
1939            
1940
1941            
1942
1943  
1944
1945  <img
1946    
1947      src="//foxfirelites.com/cdn/shop/files/FOXFIRELOGO_whitetext_red_x_987x150.png?v=1716222049"
1948    
1949    alt=""
1950
1951    
1952      data-rimg
1953      srcset="//foxfirelites.com/cdn/shop/files/FOXFIRELOGO_whitetext_red_x_987x150.png?v=1716222049 1x, //foxfirelites.com/cdn/shop/files/FOXFIRELOGO_whitetext_red_x_997x152.png?v=1716222049 1.01x"
1954    
1955
1956    class="site-logo-image"
1957    style="
1958        object-fit:cover;object-position:50.0% 50.0%;
1959      
1960"
1961    
1962  >
1963
1964
1965
1966
1967          
1968        </a>
1969      </div>
1970
1971      
1972
1973
1974
1975
1976
1977<div class="live-search" data-live-search><form
1978    class="
1979      live-search-form
1980      form-fields-inline
1981      
1982    "
1983    action="/search"
1984    method="get"
1985    role="search"
1986    aria-label="Product"
1987    data-live-search-form
1988  >
1989    <div class="form-field no-label"><span class="form-field-select-wrapper live-search-filter-wrapper">
1990          <select
1991            class="live-search-filter"
1992            id="live-search-filter"
1993            data-live-search-filter
1994            data-filter-all="All categories"
1995          >
1996            
1997            <option value="" selected>All categories</option>
1998            <option value="" disabled>------</option>
1999            
2000              
2001<option value="product_type:Accessories">Accessories</option>
2002<option value="product_type:Safety Lites">Safety Lites</option>
2003<option value="product_type:Warning Lites">Warning Lites</option>
2004            
2005          </select>
2006
2007          <label
2008            class="
2009              live-search-filter-label
2010              form-field-select
2011            "
2012            for="live-search-filter"
2013            data-live-search-filter-label
2014          >All categories
2015</label>
2016          <svg
2017  aria-hidden="true"
2018  focusable="false"
2019  role="presentation"
2020  width="8"
2021  height="6"
2022  viewBox="0 0 8 6"
2023  fill="none"
2024  xmlns="http://www.w3.org/2000/svg"
2025  class="icon-chevron-down"
2026>
2027<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
2028<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
2029</svg>
2030
2031        </span><input
2032        class="form-field-input live-search-form-field"
2033        type="text"
2034        name="q"
2035        aria-label="Search"
2036        placeholder="What are you looking for?"
2037        
2038        autocomplete="off"
2039        data-live-search-input
2040      >
2041      <button
2042        class="live-search-takeover-cancel"
2043        type="button"
2044        data-live-search-takeover-cancel>
2045        Cancel
2046      </button>
2047
2048      <button
2049        class="live-search-button"
2050        type="submit"
2051        aria-label="Search"
2052        data-live-search-submit
2053      >
2054        <span class="search-icon search-icon--inactive">
2055          <svg
2056  aria-hidden="true"
2057  focusable="false"
2058  role="presentation"
2059  xmlns="http://www.w3.org/2000/svg"
2060  width="23"
2061  height="24"
2062  fill="none"
2063  viewBox="0 0 23 24"
2064>
2065  <path d="M21 21L15.5 15.5" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
2066  <circle cx="10" cy="9" r="8" stroke="currentColor" stroke-width="2"/>
2067</svg>
2068
2069        </span>
2070        <span class="search-icon search-icon--active">
2071          <svg
2072  aria-hidden="true"
2073  focusable="false"
2074  role="presentation"
2075  width="26"
2076  height="26"
2077  viewBox="0 0 26 26"
2078  xmlns="http://www.w3.org/2000/svg"
2079>
2080  <g fill-rule="nonzero" fill="currentColor">
2081    <path d="M13 26C5.82 26 0 20.18 0 13S5.82 0 13 0s13 5.82 13 13-5.82 13-13 13zm0-3.852a9.148 9.148 0 1 0 0-18.296 9.148 9.148 0 0 0 0 18.296z" opacity=".29"/><path d="M13 26c7.18 0 13-5.82 13-13a1.926 1.926 0 0 0-3.852 0A9.148 9.148 0 0 1 13 22.148 1.926 1.926 0 0 0 13 26z"/>
2082  </g>
2083</svg>
2084        </span>
2085      </button>
2086    </div>
2087
2088    <div class="search-flydown" data-live-search-flydown>
2089      <div class="search-flydown--placeholder" data-live-search-placeholder>
2090        <div class="search-flydown--product-items">
2091          
2092            <a class="search-flydown--product search-flydown--product" href="#">
2093              
2094                <div class="search-flydown--product-image">
2095                  <svg class="placeholder--image placeholder--content-image" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 525.5 525.5"><path d="M324.5 212.7H203c-1.6 0-2.8 1.3-2.8 2.8V308c0 1.6 1.3 2.8 2.8 2.8h121.6c1.6 0 2.8-1.3 2.8-2.8v-92.5c0-1.6-1.3-2.8-2.9-2.8zm1.1 95.3c0 .6-.5 1.1-1.1 1.1H203c-.6 0-1.1-.5-1.1-1.1v-92.5c0-.6.5-1.1 1.1-1.1h121.6c.6 0 1.1.5 1.1 1.1V308z"/><path d="M210.4 299.5H240v.1s.1 0 .2-.1h75.2v-76.2h-105v76.2zm1.8-7.2l20-20c1.6-1.6 3.8-2.5 6.1-2.5s4.5.9 6.1 2.5l1.5 1.5 16.8 16.8c-12.9 3.3-20.7 6.3-22.8 7.2h-27.7v-5.5zm101.5-10.1c-20.1 1.7-36.7 4.8-49.1 7.9l-16.9-16.9 26.3-26.3c1.6-1.6 3.8-2.5 6.1-2.5s4.5.9 6.1 2.5l27.5 27.5v7.8zm-68.9 15.5c9.7-3.5 33.9-10.9 68.9-13.8v13.8h-68.9zm68.9-72.7v46.8l-26.2-26.2c-1.9-1.9-4.5-3-7.3-3s-5.4 1.1-7.3 3l-26.3 26.3-.9-.9c-1.9-1.9-4.5-3-7.3-3s-5.4 1.1-7.3 3l-18.8 18.8V225h101.4z"/><path d="M232.8 254c4.6 0 8.3-3.7 8.3-8.3s-3.7-8.3-8.3-8.3-8.3 3.7-8.3 8.3 3.7 8.3 8.3 8.3zm0-14.9c3.6 0 6.6 2.9 6.6 6.6s-2.9 6.6-6.6 6.6-6.6-2.9-6.6-6.6 3-6.6 6.6-6.6z"/></svg>
2096                </div>
2097              
2098
2099              <div class="search-flydown--product-text">
2100                <span class="search-flydown--product-title placeholder--content-text"></span>
2101                <span class="search-flydown--product-price placeholder--content-text"></span>
2102              </div>
2103            </a>
2104          
2105            <a class="search-flydown--product search-flydown--product" href="#">
2106              
2107                <div class="search-flydown--product-image">
2108                  <svg class="placeholder--image placeholder--content-image" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 525.5 525.5"><path d="M324.5 212.7H203c-1.6 0-2.8 1.3-2.8 2.8V308c0 1.6 1.3 2.8 2.8 2.8h121.6c1.6 0 2.8-1.3 2.8-2.8v-92.5c0-1.6-1.3-2.8-2.9-2.8zm1.1 95.3c0 .6-.5 1.1-1.1 1.1H203c-.6 0-1.1-.5-1.1-1.1v-92.5c0-.6.5-1.1 1.1-1.1h121.6c.6 0 1.1.5 1.1 1.1V308z"/><path d="M210.4 299.5H240v.1s.1 0 .2-.1h75.2v-76.2h-105v76.2zm1.8-7.2l20-20c1.6-1.6 3.8-2.5 6.1-2.5s4.5.9 6.1 2.5l1.5 1.5 16.8 16.8c-12.9 3.3-20.7 6.3-22.8 7.2h-27.7v-5.5zm101.5-10.1c-20.1 1.7-36.7 4.8-49.1 7.9l-16.9-16.9 26.3-26.3c1.6-1.6 3.8-2.5 6.1-2.5s4.5.9 6.1 2.5l27.5 27.5v7.8zm-68.9 15.5c9.7-3.5 33.9-10.9 68.9-13.8v13.8h-68.9zm68.9-72.7v46.8l-26.2-26.2c-1.9-1.9-4.5-3-7.3-3s-5.4 1.1-7.3 3l-26.3 26.3-.9-.9c-1.9-1.9-4.5-3-7.3-3s-5.4 1.1-7.3 3l-18.8 18.8V225h101.4z"/><path d="M232.8 254c4.6 0 8.3-3.7 8.3-8.3s-3.7-8.3-8.3-8.3-8.3 3.7-8.3 8.3 3.7 8.3 8.3 8.3zm0-14.9c3.6 0 6.6 2.9 6.6 6.6s-2.9 6.6-6.6 6.6-6.6-2.9-6.6-6.6 3-6.6 6.6-6.6z"/></svg>
2109                </div>
2110              
2111
2112              <div class="search-flydown--product-text">
2113                <span class="search-flydown--product-title placeholder--content-text"></span>
2114                <span class="search-flydown--product-price placeholder--content-text"></span>
2115              </div>
2116            </a>
2117          
2118            <a class="search-flydown--product search-flydown--product" href="#">
2119              
2120                <div class="search-flydown--product-image">
2121                  <svg class="placeholder--image placeholder--content-image" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 525.5 525.5"><path d="M324.5 212.7H203c-1.6 0-2.8 1.3-2.8 2.8V308c0 1.6 1.3 2.8 2.8 2.8h121.6c1.6 0 2.8-1.3 2.8-2.8v-92.5c0-1.6-1.3-2.8-2.9-2.8zm1.1 95.3c0 .6-.5 1.1-1.1 1.1H203c-.6 0-1.1-.5-1.1-1.1v-92.5c0-.6.5-1.1 1.1-1.1h121.6c.6 0 1.1.5 1.1 1.1V308z"/><path d="M210.4 299.5H240v.1s.1 0 .2-.1h75.2v-76.2h-105v76.2zm1.8-7.2l20-20c1.6-1.6 3.8-2.5 6.1-2.5s4.5.9 6.1 2.5l1.5 1.5 16.8 16.8c-12.9 3.3-20.7 6.3-22.8 7.2h-27.7v-5.5zm101.5-10.1c-20.1 1.7-36.7 4.8-49.1 7.9l-16.9-16.9 26.3-26.3c1.6-1.6 3.8-2.5 6.1-2.5s4.5.9 6.1 2.5l27.5 27.5v7.8zm-68.9 15.5c9.7-3.5 33.9-10.9 68.9-13.8v13.8h-68.9zm68.9-72.7v46.8l-26.2-26.2c-1.9-1.9-4.5-3-7.3-3s-5.4 1.1-7.3 3l-26.3 26.3-.9-.9c-1.9-1.9-4.5-3-7.3-3s-5.4 1.1-7.3 3l-18.8 18.8V225h101.4z"/><path d="M232.8 254c4.6 0 8.3-3.7 8.3-8.3s-3.7-8.3-8.3-8.3-8.3 3.7-8.3 8.3 3.7 8.3 8.3 8.3zm0-14.9c3.6 0 6.6 2.9 6.6 6.6s-2.9 6.6-6.6 6.6-6.6-2.9-6.6-6.6 3-6.6 6.6-6.6z"/></svg>
2122                </div>
2123              
2124
2125              <div class="search-flydown--product-text">
2126                <span class="search-flydown--product-title placeholder--content-text"></span>
2127                <span class="search-flydown--product-price placeholder--content-text"></span>
2128              </div>
2129            </a>
2130          
2131        </div>
2132      </div>
2133
2134      <div
2135        class="
2136          search-flydown--results
2137          
2138        "
2139        data-live-search-results
2140      ></div>
2141
2142      
2143    </div>
2144  </form>
2145</div>
2146
2147
2148      
2149    </div>
2150
2151    <div class="site-header-right">
2152      <ul class="site-header-actions" data-header-actions>
2153  
2154    <li class="site-header-actions__account-link">
2155      
2156
2157
2158  <shopify-store store-domain="https://foxfirelites.com" country="US" language="en"></shopify-store>
2159<shopify-account
2160    
2161      menu="customer-account-main-menu"
2162    
2163  >
2164    <div slot="signed-out-avatar">
2165      <div
2166        class="site-header_account-link-anchor"
2167        role="button"
2168        tabindex="0"
2169      >
2170        <span class="site-header__account-icon">
2171          
2172
2173
2174    <svg class="icon-account "    aria-hidden="true"    focusable="false"    role="presentation"    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 26" fill="none" xmlns="http://www.w3.org/2000/svg">      <path d="M11.3336 14.4447C14.7538 14.4447 17.5264 11.6417 17.5264 8.18392C17.5264 4.72616 14.7538 1.9231 11.3336 1.9231C7.91347 1.9231 5.14087 4.72616 5.14087 8.18392C5.14087 11.6417 7.91347 14.4447 11.3336 14.4447Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>      <path d="M20.9678 24.0769C19.5098 20.0278 15.7026 17.3329 11.4404 17.3329C7.17822 17.3329 3.37107 20.0278 1.91309 24.0769" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>    </svg>                                                                                                                  
2175
2176        </span>
2177
2178        <span class="site-header_account-link-text">
2179          Login
2180        </span>
2181      </div>
2182    </div>
2183  </shopify-account>
2184
2185
2186
2187
2188    </li>
2189  
2190</ul>
2191
2192
2193      <div class="site-header-cart">
2194        <a class="site-header-cart--button" href="/cart">
2195          <span
2196            class="site-header-cart--count "
2197            data-header-cart-count="">
2198          </span>
2199          <span class="site-header-cart-icon site-header-cart-icon--svg">
2200            
2201              
2202
2203
2204            <svg width="25" height="24" viewBox="0 0 25 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 0C0.447715 0 0 0.447715 0 1C0 1.55228 0.447715 2 1 2H1.33877H1.33883C1.61048 2.00005 2.00378 2.23945 2.10939 2.81599L2.10937 2.816L2.11046 2.82171L5.01743 18.1859C5.12011 18.7286 5.64325 19.0852 6.18591 18.9826C6.21078 18.9779 6.23526 18.9723 6.25933 18.9658C6.28646 18.968 6.31389 18.9692 6.34159 18.9692H18.8179H18.8181C19.0302 18.9691 19.2141 18.9765 19.4075 18.9842L19.4077 18.9842C19.5113 18.9884 19.6175 18.9926 19.7323 18.9959C20.0255 19.0043 20.3767 19.0061 20.7177 18.9406C21.08 18.871 21.4685 18.7189 21.8028 18.3961C22.1291 18.081 22.3266 17.6772 22.4479 17.2384C22.4569 17.2058 22.4642 17.1729 22.4699 17.1396L23.944 8.46865C24.2528 7.20993 23.2684 5.99987 21.9896 6H21.9894H4.74727L4.07666 2.45562L4.07608 2.4525C3.83133 1.12381 2.76159 8.49962e-05 1.33889 0H1.33883H1ZM5.12568 8L6.8227 16.9692H18.8178H18.8179C19.0686 16.9691 19.3257 16.9793 19.5406 16.9877L19.5413 16.9877C19.633 16.9913 19.7171 16.9947 19.7896 16.9967C20.0684 17.0047 20.2307 16.9976 20.3403 16.9766C20.3841 16.9681 20.4059 16.96 20.4151 16.9556C20.4247 16.9443 20.4639 16.8918 20.5077 16.7487L21.9794 8.09186C21.9842 8.06359 21.9902 8.03555 21.9974 8.0078C21.9941 8.00358 21.9908 8.00108 21.989 8H5.12568ZM20.416 16.9552C20.4195 16.9534 20.4208 16.9524 20.4205 16.9523C20.4204 16.9523 20.4199 16.9525 20.4191 16.953L2
22040.416 16.9552ZM10.8666 22.4326C10.8666 23.2982 10.195 24 9.36658 24C8.53815 24 7.86658 23.2982 7.86658 22.4326C7.86658 21.567 8.53815 20.8653 9.36658 20.8653C10.195 20.8653 10.8666 21.567 10.8666 22.4326ZM18.0048 24C18.8332 24 19.5048 23.2982 19.5048 22.4326C19.5048 21.567 18.8332 20.8653 18.0048 20.8653C17.1763 20.8653 16.5048 21.567 16.5048 22.4326C16.5048 23.2982 17.1763 24 18.0048 24Z" fill="currentColor"/>    </svg>                                                                                                          
2205
2206             
2207          </span>
2208          <span class="visually-hidden">View cart</span>
2209        </a>
2210      </div>
2211    </div>
2212  </div>
2213
2214  <div
2215    class="
2216      site-navigation-wrapper
2217      
2218        site-navigation--has-actions
2219      
2220      
2221        site-header--full-width
2222      
2223    "
2224    data-site-navigation
2225    id="site-header-nav"
2226  >
2227    <nav
2228      class="site-navigation"
2229      aria-label="Main"
2230    >
2231      
2232
2233
2234
2235
2236<ul
2237  class="navmenu navmenu-depth-1"
2238  data-navmenu
2239  aria-label="Main menu"
2240>
2241  
2242    
2243    
2244
2245    
2246    
2247    
2248    
2249<li
2250      class="navmenu-item              navmenu-basic__item                  navmenu-id-home"
2251      
2252      
2253      
2254    >
2255      
2256        <a
2257      
2258        class="
2259          navmenu-link
2260          navmenu-link-depth-1
2261          
2262          
2263        "
2264        
2265          href="/"
2266        
2267      >
2268        Home
2269        
2270      
2271        </a>
2272      
2273
2274      
2275      </details>
2276    </li>
2277  
2278    
2279    
2280
2281    
2282    
2283    
2284    
2285<li
2286      class="navmenu-item              navmenu-basic__item                    navmenu-item-parent                  navmenu-basic__item-parent                    navmenu-id-shop"
2287      
2288      data-navmenu-parent
2289      
2290    >
2291      
2292        <details data-navmenu-details>
2293        <summary
2294      
2295        class="
2296          navmenu-link
2297          navmenu-link-depth-1
2298          navmenu-link-parent
2299          
2300        "
2301        
2302          aria-haspopup="true"
2303          aria-expanded="false"
2304          data-href="/collections/shop-all"
2305        
2306      >
2307        Shop
2308        
2309          <span
2310            class="navmenu-icon navmenu-icon-depth-1"
2311            data-navmenu-trigger
2312          >
2313            <svg
2314  aria-hidden="true"
2315  focusable="false"
2316  role="presentation"
2317  width="8"
2318  height="6"
2319  viewBox="0 0 8 6"
2320  fill="none"
2321  xmlns="http://www.w3.org/2000/svg"
2322  class="icon-chevron-down"
2323>
2324<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
2325<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
2326</svg>
2327
2328          </span>
2329        
2330      
2331        </summary>
2332      
2333
2334      
2335        
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348<ul
2349  class="
2350    navmenu
2351    navmenu-depth-2
2352    navmenu-submenu
2353    
2354  "
2355  data-navmenu
2356  
2357  data-navmenu-submenu
2358  aria-label="Main menu"
2359>
2360  
2361    
2362
2363    
2364    
2365
2366    
2367    
2368
2369    
2370
2371    
2372<li
2373        class="navmenu-item        navmenu-item-parent        navmenu-id-f263-portable-magnetic-led-flashers"
2374        data-navmenu-parent
2375      >
2376        
2377          <details data-navmenu-details>
2378          <summary
2379            data-href="/collections/magnetic-signal-lights"
2380        
2381          class="navmenu-link navmenu-link-parent "
2382          
2383            aria-haspopup="true"
2384            aria-expanded="false"
2385          
2386        >
2387          
2388          F263 Portable Magnetic LED Flashers
2389
2390            <span
2391              class="navmenu-icon navmenu-icon-depth-2"
2392              data-navmenu-trigger
2393            >
2394              <svg
2395  aria-hidden="true"
2396  focusable="false"
2397  role="presentation"
2398  width="8"
2399  height="6"
2400  viewBox="0 0 8 6"
2401  fill="none"
2402  xmlns="http://www.w3.org/2000/svg"
2403  class="icon-chevron-down"
2404>
2405<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
2406<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
2407</svg>
2408
2409            </span>
2410          
2411        
2412          </summary>
2413        
2414
2415        
2416
2417        
2418          
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431<ul
2432  class="
2433    navmenu
2434    navmenu-depth-3
2435    navmenu-submenu
2436    
2437  "
2438  data-navmenu
2439  
2440  data-navmenu-submenu
2441  aria-label="Main menu"
2442>
2443  
2444    
2445
2446    
2447    
2448
2449    
2450    
2451
2452    
2453
2454    
2455      <li
2456        class="navmenu-item navmenu-id-magnetic-single-flashers"
2457      >
2458        <a
2459        class="
2460          navmenu-link
2461          navmenu-link-depth-3
2462          
2463        "
2464        href="/collections/magnetic-single-lights"
2465        >
2466          
2467          Magnetic Single Flashers
2468</a>
2469      </li>
2470    
2471  
2472    
2473
2474    
2475    
2476
2477    
2478    
2479
2480    
2481
2482    
2483      <li
2484        class="navmenu-item navmenu-id-magnetic-4-light-flasher-kits"
2485      >
2486        <a
2487        class="
2488          navmenu-link
2489          navmenu-link-depth-3
2490          
2491        "
2492        href="/collections/foxfire-magnetic-flasher-kits"
2493        >
2494          
2495          Magnetic 4 Light Flasher Kits
2496</a>
2497      </li>
2498    
2499  
2500    
2501
2502    
2503    
2504
2505    
2506    
2507
2508    
2509
2510    
2511      <li
2512        class="navmenu-item navmenu-id-flasher-accessories"
2513      >
2514        <a
2515        class="
2516          navmenu-link
2517          navmenu-link-depth-3
2518          
2519        "
2520        href="/collections/foxfire-flashing-light-accessories"
2521        >
2522          
2523          Flasher Accessories
2524</a>
2525      </li>
2526    
2527  
2528    
2529
2530    
2531    
2532
2533    
2534    
2535
2536    
2537
2538    
2539      <li
2540        class="navmenu-item navmenu-id-which-light-is-right-for-me"
2541      >
2542        <a
2543        class="
2544          navmenu-link
2545          navmenu-link-depth-3
2546          
2547        "
2548        href="/pages/foxfire-portable-safety-flashers"
2549        >
2550          
2551          Which light is right for me?
2552</a>
2553      </li>
2554    
2555  
2556</ul>
2557
2558        
2559        
2560          </details>
2561        
2562      </li>
2563    
2564  
2565    
2566
2567    
2568    
2569
2570    
2571    
2572
2573    
2574
2575    
2576<li
2577        class="navmenu-item        navmenu-item-parent        navmenu-id-logging-lights"
2578        data-navmenu-parent
2579      >
2580        
2581          <details data-navmenu-details>
2582          <summary
2583            data-href="/collections/logging-lites"
2584        
2585          class="navmenu-link navmenu-link-parent "
2586          
2587            aria-haspopup="true"
2588            aria-expanded="false"
2589          
2590        >
2591          
2592          Logging Lights
2593
2594            <span
2595              class="navmenu-icon navmenu-icon-depth-2"
2596              data-navmenu-trigger
2597            >
2598              <svg
2599  aria-hidden="true"
2600  focusable="false"
2601  role="presentation"
2602  width="8"
2603  height="6"
2604  viewBox="0 0 8 6"
2605  fill="none"
2606  xmlns="http://www.w3.org/2000/svg"
2607  class="icon-chevron-down"
2608>
2609<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
2610<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
2611</svg>
2612
2613            </span>
2614          
2615        
2616          </summary>
2617        
2618
2619        
2620
2621        
2622          
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635<ul
2636  class="
2637    navmenu
2638    navmenu-depth-3
2639    navmenu-submenu
2640    
2641  "
2642  data-navmenu
2643  
2644  data-navmenu-submenu
2645  aria-label="Main menu"
2646>
2647  
2648    
2649
2650    
2651    
2652
2653    
2654    
2655
2656    
2657
2658    
2659      <li
2660        class="navmenu-item navmenu-id-red-and-amber-logging-kit"
2661      >
2662        <a
2663        class="
2664          navmenu-link
2665          navmenu-link-depth-3
2666          
2667        "
2668        href="/collections/logging-lites"
2669        >
2670          
2671          Red and Amber Logging Kit
2672</a>
2673      </li>
2674    
2675  
2676    
2677
2678    
2679    
2680
2681    
2682    
2683
2684    
2685
2686    
2687      <li
2688        class="navmenu-item navmenu-id-logging-light-accessory"
2689      >
2690        <a
2691        class="
2692          navmenu-link
2693          navmenu-link-depth-3
2694          
2695        "
2696        href="/products/replacement-t-handle-foxfire-s-logger-lite-kits"
2697        >
2698          
2699          Logging Light Accessory
2700</a>
2701      </li>
2702    
2703  
2704</ul>
2705
2706        
2707        
2708          </details>
2709        
2710      </li>
2711    
2712  
2713    
2714
2715    
2716    
2717
2718    
2719    
2720
2721    
2722
2723    
2724      <li
2725        class="navmenu-item navmenu-id-hard-hat-light-kits"
2726      >
2727        <a
2728        class="
2729          navmenu-link
2730          navmenu-link-depth-2
2731          
2732        "
2733        href="/collections/hard-hat-lite-kits"
2734        >
2735          
2736          Hard Hat Light Kits
2737</a>
2738      </li>
2739    
2740  
2741    
2742
2743    
2744    
2745
2746    
2747    
2748
2749    
2750
2751    
2752<li
2753        class="navmenu-item        navmenu-item-parent        navmenu-id-personal-safety-lights"
2754        data-navmenu-parent
2755      >
2756        
2757          <details data-navmenu-details>
2758          <summary
2759            data-href="/collections/personal-safety-lites"
2760        
2761          class="navmenu-link navmenu-link-parent "
2762          
2763            aria-haspopup="true"
2764            aria-expanded="false"
2765          
2766        >
2767          
2768          Personal Safety Lights
2769
2770            <span
2771              class="navmenu-icon navmenu-icon-depth-2"
2772              data-navmenu-trigger
2773            >
2774              <svg
2775  aria-hidden="true"
2776  focusable="false"
2777  role="presentation"
2778  width="8"
2779  height="6"
2780  viewBox="0 0 8 6"
2781  fill="none"
2782  xmlns="http://www.w3.org/2000/svg"
2783  class="icon-chevron-down"
2784>
2785<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
2786<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
2787</svg>
2788
2789            </span>
2790          
2791        
2792          </summary>
2793        
2794
2795        
2796
2797        
2798          
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811<ul
2812  class="
2813    navmenu
2814    navmenu-depth-3
2815    navmenu-submenu
2816    
2817  "
2818  data-navmenu
2819  
2820  data-navmenu-submenu
2821  aria-label="Main menu"
2822>
2823  
2824    
2825
2826    
2827    
2828
2829    
2830    
2831
2832    
2833
2834    
2835      <li
2836        class="navmenu-item navmenu-id-personal-safety-light-kit"
2837      >
2838        <a
2839        class="
2840          navmenu-link
2841          navmenu-link-depth-3
2842          
2843        "
2844        href="/products/foxfire-psl56-personal-safety-lite"
2845        >
2846          
2847          Personal Safety Light Kit
2848</a>
2849      </li>
2850    
2851  
2852    
2853
2854    
2855    
2856
2857    
2858    
2859
2860    
2861
2862    
2863      <li
2864        class="navmenu-item navmenu-id-lighted-safety-bands"
2865      >
2866        <a
2867        class="
2868          navmenu-link
2869          navmenu-link-depth-3
2870          
2871        "
2872        href="/products/foxfire-lsb-g-lighted-safety-band"
2873        >
2874          
2875          Lighted Safety Bands
2876</a>
2877      </li>
2878    
2879  
2880    
2881
2882    
2883    
2884
2885    
2886    
2887
2888    
2889
2890    
2891      <li
2892        class="navmenu-item navmenu-id-clip-on-safety-light"
2893      >
2894        <a
2895        class="
2896          navmenu-link
2897          navmenu-link-depth-3
2898          
2899        "
2900        href="/products/foxfire-sl34-personal-safety-lite"
2901        >
2902          
2903          Clip-On Safety Light
2904</a>
2905      </li>
2906    
2907  
2908</ul>
2909
2910        
2911        
2912          </details>
2913        
2914      </li>
2915    
2916  
2917    
2918
2919    
2920    
2921
2922    
2923    
2924
2925    
2926
2927    
2928<li
2929        class="navmenu-item        navmenu-item-parent        navmenu-id-strobe-and-beacon-lights"
2930        data-navmenu-parent
2931      >
2932        
2933          <details data-navmenu-details>
2934          <summary
2935            data-href="/collections/strobe-beacon-lites"
2936        
2937          class="navmenu-link navmenu-link-parent "
2938          
2939            aria-haspopup="true"
2940            aria-expanded="false"
2941          
2942        >
2943          
2944          Strobe and Beacon Lights
2945
2946            <span
2947              class="navmenu-icon navmenu-icon-depth-2"
2948              data-navmenu-trigger
2949            >
2950              <svg
2951  aria-hidden="true"
2952  focusable="false"
2953  role="presentation"
2954  width="8"
2955  height="6"
2956  viewBox="0 0 8 6"
2957  fill="none"
2958  xmlns="http://www.w3.org/2000/svg"
2959  class="icon-chevron-down"
2960>
2961<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
2962<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
2963</svg>
2964
2965            </span>
2966          
2967        
2968          </summary>
2969        
2970
2971        
2972
2973        
2974          
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987<ul
2988  class="
2989    navmenu
2990    navmenu-depth-3
2991    navmenu-submenu
2992    
2993  "
2994  data-navmenu
2995  
2996  data-navmenu-submenu
2997  aria-label="Main menu"
2998>
2999  
3000    
3001
3002    
3003    
3004
3005    
3006    
3007
3008    
3009
3010    
3011      <li
3012        class="navmenu-item navmenu-id-flashing-strobe-beacon"
3013      >
3014        <a
3015        class="
3016          navmenu-link
3017          navmenu-link-depth-3
3018          
3019        "
3020        href="/products/flashing-strobe-beacon"
3021        >
3022          
3023          Flashing Strobe Beacon
3024</a>
3025      </li>
3026    
3027  
3028    
3029
3030    
3031    
3032
3033    
3034    
3035
3036    
3037
3038    
3039      <li
3040        class="navmenu-item navmenu-id-strobe-warning-lite"
3041      >
3042        <a
3043        class="
3044          navmenu-link
3045          navmenu-link-depth-3
3046          
3047        "
3048        href="/products/strobe-warning-light"
3049        >
3050          
3051          Strobe Warning Lite
3052</a>
3053      </li>
3054    
3055  
3056</ul>
3057
3058        
3059        
3060          </details>
3061        
3062      </li>
3063    
3064  
3065    
3066
3067    
3068    
3069
3070    
3071    
3072
3073    
3074
3075    
3076<li
3077        class="navmenu-item        navmenu-item-parent        navmenu-id-traffic-control-lights"
3078        data-navmenu-parent
3079      >
3080        
3081          <details data-navmenu-details>
3082          <summary
3083            data-href="/collections/roadside-safety-lights"
3084        
3085          class="navmenu-link navmenu-link-parent "
3086          
3087            aria-haspopup="true"
3088            aria-expanded="false"
3089          
3090        >
3091          
3092          Traffic Control Lights
3093
3094            <span
3095              class="navmenu-icon navmenu-icon-depth-2"
3096              data-navmenu-trigger
3097            >
3098              <svg
3099  aria-hidden="true"
3100  focusable="false"
3101  role="presentation"
3102  width="8"
3103  height="6"
3104  viewBox="0 0 8 6"
3105  fill="none"
3106  xmlns="http://www.w3.org/2000/svg"
3107  class="icon-chevron-down"
3108>
3109<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
3110<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
3111</svg>
3112
3113            </span>
3114          
3115        
3116          </summary>
3117        
3118
3119        
3120
3121        
3122          
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135<ul
3136  class="
3137    navmenu
3138    navmenu-depth-3
3139    navmenu-submenu
3140    
3141  "
3142  data-navmenu
3143  
3144  data-navmenu-submenu
3145  aria-label="Main menu"
3146>
3147  
3148    
3149
3150    
3151    
3152
3153    
3154    
3155
3156    
3157
3158    
3159      <li
3160        class="navmenu-item navmenu-id-dot-warning-triangles"
3161      >
3162        <a
3163        class="
3164          navmenu-link
3165          navmenu-link-depth-3
3166          
3167        "
3168        href="/products/warning-triangles-dot-approved"
3169        >
3170          
3171          DOT Warning Triangles
3172</a>
3173      </li>
3174    
3175  
3176    
3177
3178    
3179    
3180
3181    
3182    
3183
3184    
3185
3186    
3187      <li
3188        class="navmenu-item navmenu-id-traffic-warning-arrow"
3189      >
3190        <a
3191        class="
3192          navmenu-link
3193          navmenu-link-depth-3
3194          
3195        "
3196        href="/products/led-traffic-warning-arrow"
3197        >
3198          
3199          Traffic Warning Arrow
3200</a>
3201      </li>
3202    
3203  
3204    
3205
3206    
3207    
3208
3209    
3210    
3211
3212    
3213
3214    
3215      <li
3216        class="navmenu-item navmenu-id-traffic-batons"
3217      >
3218        <a
3219        class="
3220          navmenu-link
3221          navmenu-link-depth-3
3222          
3223        "
3224        href="/products/traffic-baton-kit"
3225        >
3226          
3227          Traffic Batons
3228</a>
3229      </li>
3230    
3231  
3232</ul>
3233
3234        
3235        
3236          </details>
3237        
3238      </li>
3239    
3240  
3241    
3242
3243    
3244    
3245
3246    
3247    
3248
3249    
3250
3251    
3252      <li
3253        class="navmenu-item navmenu-id-accessories"
3254      >
3255        <a
3256        class="
3257          navmenu-link
3258          navmenu-link-depth-2
3259          
3260        "
3261        href="/collections/accessories-1"
3262        >
3263          
3264          Accessories
3265</a>
3266      </li>
3267    
3268  
3269    
3270
3271    
3272    
3273
3274    
3275    
3276
3277    
3278
3279    
3280      <li
3281        class="navmenu-item navmenu-id-sale"
3282      >
3283        <a
3284        class="
3285          navmenu-link
3286          navmenu-link-depth-2
3287          
3288        "
3289        href="/collections/sale"
3290        >
3291          
3292          SALE
3293</a>
3294      </li>
3295    
3296  
3297</ul>
3298
3299      
3300      </details>
3301    </li>
3302  
3303    
3304    
3305
3306    
3307    
3308    
3309    
3310<li
3311      class="navmenu-item              navmenu-basic__item                  navmenu-id-catalog"
3312      
3313      
3314      
3315    >
3316      
3317        <a
3318      
3319        class="
3320          navmenu-link
3321          navmenu-link-depth-1
3322          
3323          
3324        "
3325        
3326          href="https://cdn.shopify.com/s/files/1/0533/6245/8807/files/FOXFIRE_CATALOG_-_2023.pdf?v=1698691008"
3327        
3328      >
3329        Catalog
3330        
3331      
3332        </a>
3333      
3334
3335      
3336      </details>
3337    </li>
3338  
3339    
3340    
3341
3342    
3343    
3344    
3345    
3346<li
3347      class="navmenu-item              navmenu-basic__item                  navmenu-id-dealer-application"
3348      
3349      
3350      
3351    >
3352      
3353        <a
3354      
3355        class="
3356          navmenu-link
3357          navmenu-link-depth-1
3358          
3359          
3360        "
3361        
3362          href="/pages/wholesale-application"
3363        
3364      >
3365        Dealer Application
3366        
3367      
3368        </a>
3369      
3370
3371      
3372      </details>
3373    </li>
3374  
3375    
3376    
3377
3378    
3379    
3380    
3381    
3382<li
3383      class="navmenu-item              navmenu-basic__item                  navmenu-id-contact-us"
3384      
3385      
3386      
3387    >
3388      
3389        <a
3390      
3391        class="
3392          navmenu-link
3393          navmenu-link-depth-1
3394          
3395          
3396        "
3397        
3398          href="/pages/contact-us"
3399        
3400      >
3401        Contact Us
3402        
3403      
3404        </a>
3405      
3406
3407      
3408      </details>
3409    </li>
3410  
3411    
3412    
3413
3414    
3415    
3416    
3417    
3418<li
3419      class="navmenu-item              navmenu-basic__item                  navmenu-id-about-us"
3420      
3421      
3422      
3423    >
3424      
3425        <a
3426      
3427        class="
3428          navmenu-link
3429          navmenu-link-depth-1
3430          
3431          
3432        "
3433        
3434          href="/pages/about-us"
3435        
3436      >
3437        About Us
3438        
3439      
3440        </a>
3441      
3442
3443      
3444      </details>
3445    </li>
3446  
3447</ul>
3448
3449
3450      
3451    </nav>
3452  </div>
3453
3454  <div class="site-mobile-nav" id="site-mobile-nav" data-mobile-nav tabindex="0">
3455  <div class="mobile-nav-panel" data-mobile-nav-panel>
3456
3457    <ul class="site-header-actions" data-header-actions>
3458  
3459    <li class="site-header-actions__account-link">
3460      
3461
3462
3463  <shopify-account
3464    
3465      menu="customer-account-main-menu"
3466    
3467  >
3468    <div slot="signed-out-avatar">
3469      <div
3470        class="site-header_account-link-anchor"
3471        role="button"
3472        tabindex="0"
3473      >
3474        <span class="site-header__account-icon">
3475          
3476
3477
3478    <svg class="icon-account "    aria-hidden="true"    focusable="false"    role="presentation"    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 26" fill="none" xmlns="http://www.w3.org/2000/svg">      <path d="M11.3336 14.4447C14.7538 14.4447 17.5264 11.6417 17.5264 8.18392C17.5264 4.72616 14.7538 1.9231 11.3336 1.9231C7.91347 1.9231 5.14087 4.72616 5.14087 8.18392C5.14087 11.6417 7.91347 14.4447 11.3336 14.4447Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>      <path d="M20.9678 24.0769C19.5098 20.0278 15.7026 17.3329 11.4404 17.3329C7.17822 17.3329 3.37107 20.0278 1.91309 24.0769" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>    </svg>                                                                                                                  
3479
3480        </span>
3481
3482        <span class="site-header_account-link-text">
3483          Login
3484        </span>
3485      </div>
3486    </div>
3487  </shopify-account>
3488
3489
3490
3491
3492    </li>
3493  
3494</ul>
3495
3496
3497    <a
3498      class="mobile-nav-close"
3499      href="#site-header-nav"
3500      data-mobile-nav-close>
3501      <svg
3502  aria-hidden="true"
3503  focusable="false"
3504  role="presentation"
3505  xmlns="http://www.w3.org/2000/svg"
3506  width="13"
3507  height="13"
3508  viewBox="0 0 13 13"
3509>
3510  <path fill="currentColor" fill-rule="evenodd" d="M5.306 6.5L0 1.194 1.194 0 6.5 5.306 11.806 0 13 1.194 7.694 6.5 13 11.806 11.806 13 6.5 7.694 1.194 13 0 11.806 5.306 6.5z"/>
3511</svg>
3512      <span class="visually-hidden">Close</span>
3513    </a>
3514
3515    <div class="mobile-nav-content" data-mobile-nav-content>
3516      
3517
3518
3519
3520
3521<ul
3522  class="navmenu navmenu-depth-1"
3523  data-navmenu
3524  aria-label="Main menu"
3525>
3526  
3527    
3528    
3529
3530    
3531    
3532    
3533<li
3534      class="navmenu-item            navmenu-id-home"
3535      
3536    >
3537      <a
3538        class="navmenu-link  "
3539        href="/"
3540        
3541      >
3542        Home
3543      </a>
3544
3545      
3546
3547      
3548      
3549
3550      
3551
3552      
3553    </li>
3554  
3555    
3556    
3557
3558    
3559    
3560    
3561<li
3562      class="navmenu-item      navmenu-item-parent      navmenu-id-shop"
3563      data-navmenu-parent
3564    >
3565      <a
3566        class="navmenu-link navmenu-link-parent "
3567        href="/collections/shop-all"
3568        
3569          aria-haspopup="true"
3570          aria-expanded="false"
3571        
3572      >
3573        Shop
3574      </a>
3575
3576      
3577        
3578
3579
3580
3581<button
3582  class="navmenu-button"
3583  data-navmenu-trigger
3584  aria-expanded="false"
3585>
3586  <div class="navmenu-button-wrapper" tabindex="-1">
3587    <span class="navmenu-icon ">
3588      <svg
3589  aria-hidden="true"
3590  focusable="false"
3591  role="presentation"
3592  width="8"
3593  height="6"
3594  viewBox="0 0 8 6"
3595  fill="none"
3596  xmlns="http://www.w3.org/2000/svg"
3597  class="icon-chevron-down"
3598>
3599<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
3600<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
3601</svg>
3602
3603    </span>
3604    <span class="visually-hidden">Shop</span>
3605  </div>
3606</button>
3607
3608      
3609
3610      
3611      
3612
3613      
3614        
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627<ul
3628  class="
3629    navmenu
3630    navmenu-depth-2
3631    navmenu-submenu
3632    
3633  "
3634  data-navmenu
3635  data-accordion-content
3636  data-navmenu-submenu
3637  aria-label="Main menu"
3638>
3639  
3640    
3641
3642    
3643    
3644
3645    
3646    
3647
3648    
3649
3650    
3651<li
3652        class="navmenu-item        navmenu-item-parent        navmenu-id-f263-portable-magnetic-led-flashers"
3653        data-navmenu-parent
3654      >
3655        
3656          <a
3657            href="/collections/magnetic-signal-lights"
3658        
3659          class="navmenu-link navmenu-link-parent "
3660          
3661            aria-haspopup="true"
3662            aria-expanded="false"
3663          
3664        >
3665          
3666          F263 Portable Magnetic LED Flashers
3667
3668        
3669          </a>
3670        
3671
3672        
3673          
3674
3675
3676
3677<button
3678  class="navmenu-button"
3679  data-navmenu-trigger
3680  aria-expanded="false"
3681>
3682  <div class="navmenu-button-wrapper" tabindex="-1">
3683    <span class="navmenu-icon navmenu-icon-depth-2">
3684      <svg
3685  aria-hidden="true"
3686  focusable="false"
3687  role="presentation"
3688  width="8"
3689  height="6"
3690  viewBox="0 0 8 6"
3691  fill="none"
3692  xmlns="http://www.w3.org/2000/svg"
3693  class="icon-chevron-down"
3694>
3695<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
3696<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
3697</svg>
3698
3699    </span>
3700    <span class="visually-hidden">F263 Portable Magnetic LED Flashers</span>
3701  </div>
3702</button>
3703
3704        
3705
3706        
3707          
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720<ul
3721  class="
3722    navmenu
3723    navmenu-depth-3
3724    navmenu-submenu
3725    
3726  "
3727  data-navmenu
3728  data-accordion-content
3729  data-navmenu-submenu
3730  aria-label="Main menu"
3731>
3732  
3733    
3734
3735    
3736    
3737
3738    
3739    
3740
3741    
3742
3743    
3744      <li
3745        class="navmenu-item navmenu-id-magnetic-single-flashers"
3746      >
3747        <a
3748        class="
3749          navmenu-link
3750          navmenu-link-depth-3
3751          
3752        "
3753        href="/collections/magnetic-single-lights"
3754        >
3755          
3756          Magnetic Single Flashers
3757</a>
3758      </li>
3759    
3760  
3761    
3762
3763    
3764    
3765
3766    
3767    
3768
3769    
3770
3771    
3772      <li
3773        class="navmenu-item navmenu-id-magnetic-4-light-flasher-kits"
3774      >
3775        <a
3776        class="
3777          navmenu-link
3778          navmenu-link-depth-3
3779          
3780        "
3781        href="/collections/foxfire-magnetic-flasher-kits"
3782        >
3783          
3784          Magnetic 4 Light Flasher Kits
3785</a>
3786      </li>
3787    
3788  
3789    
3790
3791    
3792    
3793
3794    
3795    
3796
3797    
3798
3799    
3800      <li
3801        class="navmenu-item navmenu-id-flasher-accessories"
3802      >
3803        <a
3804        class="
3805          navmenu-link
3806          navmenu-link-depth-3
3807          
3808        "
3809        href="/collections/foxfire-flashing-light-accessories"
3810        >
3811          
3812          Flasher Accessories
3813</a>
3814      </li>
3815    
3816  
3817    
3818
3819    
3820    
3821
3822    
3823    
3824
3825    
3826
3827    
3828      <li
3829        class="navmenu-item navmenu-id-which-light-is-right-for-me"
3830      >
3831        <a
3832        class="
3833          navmenu-link
3834          navmenu-link-depth-3
3835          
3836        "
3837        href="/pages/foxfire-portable-safety-flashers"
3838        >
3839          
3840          Which light is right for me?
3841</a>
3842      </li>
3843    
3844  
3845</ul>
3846
3847        
3848        
3849      </li>
3850    
3851  
3852    
3853
3854    
3855    
3856
3857    
3858    
3859
3860    
3861
3862    
3863<li
3864        class="navmenu-item        navmenu-item-parent        navmenu-id-logging-lights"
3865        data-navmenu-parent
3866      >
3867        
3868          <a
3869            href="/collections/logging-lites"
3870        
3871          class="navmenu-link navmenu-link-parent "
3872          
3873            aria-haspopup="true"
3874            aria-expanded="false"
3875          
3876        >
3877          
3878          Logging Lights
3879
3880        
3881          </a>
3882        
3883
3884        
3885          
3886
3887
3888
3889<button
3890  class="navmenu-button"
3891  data-navmenu-trigger
3892  aria-expanded="false"
3893>
3894  <div class="navmenu-button-wrapper" tabindex="-1">
3895    <span class="navmenu-icon navmenu-icon-depth-2">
3896      <svg
3897  aria-hidden="true"
3898  focusable="false"
3899  role="presentation"
3900  width="8"
3901  height="6"
3902  viewBox="0 0 8 6"
3903  fill="none"
3904  xmlns="http://www.w3.org/2000/svg"
3905  class="icon-chevron-down"
3906>
3907<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
3908<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
3909</svg>
3910
3911    </span>
3912    <span class="visually-hidden">Logging Lights</span>
3913  </div>
3914</button>
3915
3916        
3917
3918        
3919          
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932<ul
3933  class="
3934    navmenu
3935    navmenu-depth-3
3936    navmenu-submenu
3937    
3938  "
3939  data-navmenu
3940  data-accordion-content
3941  data-navmenu-submenu
3942  aria-label="Main menu"
3943>
3944  
3945    
3946
3947    
3948    
3949
3950    
3951    
3952
3953    
3954
3955    
3956      <li
3957        class="navmenu-item navmenu-id-red-and-amber-logging-kit"
3958      >
3959        <a
3960        class="
3961          navmenu-link
3962          navmenu-link-depth-3
3963          
3964        "
3965        href="/collections/logging-lites"
3966        >
3967          
3968          Red and Amber Logging Kit
3969</a>
3970      </li>
3971    
3972  
3973    
3974
3975    
3976    
3977
3978    
3979    
3980
3981    
3982
3983    
3984      <li
3985        class="navmenu-item navmenu-id-logging-light-accessory"
3986      >
3987        <a
3988        class="
3989          navmenu-link
3990          navmenu-link-depth-3
3991          
3992        "
3993        href="/products/replacement-t-handle-foxfire-s-logger-lite-kits"
3994        >
3995          
3996          Logging Light Accessory
3997</a>
3998      </li>
3999    
4000  
4001</ul>
4002
4003        
4004        
4005      </li>
4006    
4007  
4008    
4009
4010    
4011    
4012
4013    
4014    
4015
4016    
4017
4018    
4019      <li
4020        class="navmenu-item navmenu-id-hard-hat-light-kits"
4021      >
4022        <a
4023        class="
4024          navmenu-link
4025          navmenu-link-depth-2
4026          
4027        "
4028        href="/collections/hard-hat-lite-kits"
4029        >
4030          
4031          Hard Hat Light Kits
4032</a>
4033      </li>
4034    
4035  
4036    
4037
4038    
4039    
4040
4041    
4042    
4043
4044    
4045
4046    
4047<li
4048        class="navmenu-item        navmenu-item-parent        navmenu-id-personal-safety-lights"
4049        data-navmenu-parent
4050      >
4051        
4052          <a
4053            href="/collections/personal-safety-lites"
4054        
4055          class="navmenu-link navmenu-link-parent "
4056          
4057            aria-haspopup="true"
4058            aria-expanded="false"
4059          
4060        >
4061          
4062          Personal Safety Lights
4063
4064        
4065          </a>
4066        
4067
4068        
4069          
4070
4071
4072
4073<button
4074  class="navmenu-button"
4075  data-navmenu-trigger
4076  aria-expanded="false"
4077>
4078  <div class="navmenu-button-wrapper" tabindex="-1">
4079    <span class="navmenu-icon navmenu-icon-depth-2">
4080      <svg
4081  aria-hidden="true"
4082  focusable="false"
4083  role="presentation"
4084  width="8"
4085  height="6"
4086  viewBox="0 0 8 6"
4087  fill="none"
4088  xmlns="http://www.w3.org/2000/svg"
4089  class="icon-chevron-down"
4090>
4091<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
4092<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
4093</svg>
4094
4095    </span>
4096    <span class="visually-hidden">Personal Safety Lights</span>
4097  </div>
4098</button>
4099
4100        
4101
4102        
4103          
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116<ul
4117  class="
4118    navmenu
4119    navmenu-depth-3
4120    navmenu-submenu
4121    
4122  "
4123  data-navmenu
4124  data-accordion-content
4125  data-navmenu-submenu
4126  aria-label="Main menu"
4127>
4128  
4129    
4130
4131    
4132    
4133
4134    
4135    
4136
4137    
4138
4139    
4140      <li
4141        class="navmenu-item navmenu-id-personal-safety-light-kit"
4142      >
4143        <a
4144        class="
4145          navmenu-link
4146          navmenu-link-depth-3
4147          
4148        "
4149        href="/products/foxfire-psl56-personal-safety-lite"
4150        >
4151          
4152          Personal Safety Light Kit
4153</a>
4154      </li>
4155    
4156  
4157    
4158
4159    
4160    
4161
4162    
4163    
4164
4165    
4166
4167    
4168      <li
4169        class="navmenu-item navmenu-id-lighted-safety-bands"
4170      >
4171        <a
4172        class="
4173          navmenu-link
4174          navmenu-link-depth-3
4175          
4176        "
4177        href="/products/foxfire-lsb-g-lighted-safety-band"
4178        >
4179          
4180          Lighted Safety Bands
4181</a>
4182      </li>
4183    
4184  
4185    
4186
4187    
4188    
4189
4190    
4191    
4192
4193    
4194
4195    
4196      <li
4197        class="navmenu-item navmenu-id-clip-on-safety-light"
4198      >
4199        <a
4200        class="
4201          navmenu-link
4202          navmenu-link-depth-3
4203          
4204        "
4205        href="/products/foxfire-sl34-personal-safety-lite"
4206        >
4207          
4208          Clip-On Safety Light
4209</a>
4210      </li>
4211    
4212  
4213</ul>
4214
4215        
4216        
4217      </li>
4218    
4219  
4220    
4221
4222    
4223    
4224
4225    
4226    
4227
4228    
4229
4230    
4231<li
4232        class="navmenu-item        navmenu-item-parent        navmenu-id-strobe-and-beacon-lights"
4233        data-navmenu-parent
4234      >
4235        
4236          <a
4237            href="/collections/strobe-beacon-lites"
4238        
4239          class="navmenu-link navmenu-link-parent "
4240          
4241            aria-haspopup="true"
4242            aria-expanded="false"
4243          
4244        >
4245          
4246          Strobe and Beacon Lights
4247
4248        
4249          </a>
4250        
4251
4252        
4253          
4254
4255
4256
4257<button
4258  class="navmenu-button"
4259  data-navmenu-trigger
4260  aria-expanded="false"
4261>
4262  <div class="navmenu-button-wrapper" tabindex="-1">
4263    <span class="navmenu-icon navmenu-icon-depth-2">
4264      <svg
4265  aria-hidden="true"
4266  focusable="false"
4267  role="presentation"
4268  width="8"
4269  height="6"
4270  viewBox="0 0 8 6"
4271  fill="none"
4272  xmlns="http://www.w3.org/2000/svg"
4273  class="icon-chevron-down"
4274>
4275<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
4276<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
4277</svg>
4278
4279    </span>
4280    <span class="visually-hidden">Strobe and Beacon Lights</span>
4281  </div>
4282</button>
4283
4284        
4285
4286        
4287          
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300<ul
4301  class="
4302    navmenu
4303    navmenu-depth-3
4304    navmenu-submenu
4305    
4306  "
4307  data-navmenu
4308  data-accordion-content
4309  data-navmenu-submenu
4310  aria-label="Main menu"
4311>
4312  
4313    
4314
4315    
4316    
4317
4318    
4319    
4320
4321    
4322
4323    
4324      <li
4325        class="navmenu-item navmenu-id-flashing-strobe-beacon"
4326      >
4327        <a
4328        class="
4329          navmenu-link
4330          navmenu-link-depth-3
4331          
4332        "
4333        href="/products/flashing-strobe-beacon"
4334        >
4335          
4336          Flashing Strobe Beacon
4337</a>
4338      </li>
4339    
4340  
4341    
4342
4343    
4344    
4345
4346    
4347    
4348
4349    
4350
4351    
4352      <li
4353        class="navmenu-item navmenu-id-strobe-warning-lite"
4354      >
4355        <a
4356        class="
4357          navmenu-link
4358          navmenu-link-depth-3
4359          
4360        "
4361        href="/products/strobe-warning-light"
4362        >
4363          
4364          Strobe Warning Lite
4365</a>
4366      </li>
4367    
4368  
4369</ul>
4370
4371        
4372        
4373      </li>
4374    
4375  
4376    
4377
4378    
4379    
4380
4381    
4382    
4383
4384    
4385
4386    
4387<li
4388        class="navmenu-item        navmenu-item-parent        navmenu-id-traffic-control-lights"
4389        data-navmenu-parent
4390      >
4391        
4392          <a
4393            href="/collections/roadside-safety-lights"
4394        
4395          class="navmenu-link navmenu-link-parent "
4396          
4397            aria-haspopup="true"
4398            aria-expanded="false"
4399          
4400        >
4401          
4402          Traffic Control Lights
4403
4404        
4405          </a>
4406        
4407
4408        
4409          
4410
4411
4412
4413<button
4414  class="navmenu-button"
4415  data-navmenu-trigger
4416  aria-expanded="false"
4417>
4418  <div class="navmenu-button-wrapper" tabindex="-1">
4419    <span class="navmenu-icon navmenu-icon-depth-2">
4420      <svg
4421  aria-hidden="true"
4422  focusable="false"
4423  role="presentation"
4424  width="8"
4425  height="6"
4426  viewBox="0 0 8 6"
4427  fill="none"
4428  xmlns="http://www.w3.org/2000/svg"
4429  class="icon-chevron-down"
4430>
4431<path class="icon-chevron-down-left" d="M4 4.5L7 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
4432<path class="icon-chevron-down-right" d="M4 4.5L1 1.5" stroke="currentColor" stroke-width="1.25" stroke-linecap="square"/>
4433</svg>
4434
4435    </span>
4436    <span class="visually-hidden">Traffic Control Lights</span>
4437  </div>
4438</button>
4439
4440        
4441
4442        
4443          
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456<ul
4457  class="
4458    navmenu
4459    navmenu-depth-3
4460    navmenu-submenu
4461    
4462  "
4463  data-navmenu
4464  data-accordion-content
4465  data-navmenu-submenu
4466  aria-label="Main menu"
4467>
4468  
4469    
4470
4471    
4472    
4473
4474    
4475    
4476
4477    
4478
4479    
4480      <li
4481        class="navmenu-item navmenu-id-dot-warning-triangles"
4482      >
4483        <a
4484        class="
4485          navmenu-link
4486          navmenu-link-depth-3
4487          
4488        "
4489        href="/products/warning-triangles-dot-approved"
4490        >
4491          
4492          DOT Warning Triangles
4493</a>
4494      </li>
4495    
4496  
4497    
4498
4499    
4500    
4501
4502    
4503    
4504
4505    
4506
4507    
4508      <li
4509        class="navmenu-item navmenu-id-traffic-warning-arrow"
4510      >
4511        <a
4512        class="
4513          navmenu-link
4514          navmenu-link-depth-3
4515          
4516        "
4517        href="/products/led-traffic-warning-arrow"
4518        >
4519          
4520          Traffic Warning Arrow
4521</a>
4522      </li>
4523    
4524  
4525    
4526
4527    
4528    
4529
4530    
4531    
4532
4533    
4534
4535    
4536      <li
4537        class="navmenu-item navmenu-id-traffic-batons"
4538      >
4539        <a
4540        class="
4541          navmenu-link
4542          navmenu-link-depth-3
4543          
4544        "
4545        href="/products/traffic-baton-kit"
4546        >
4547          
4548          Traffic Batons
4549</a>
4550      </li>
4551    
4552  
4553</ul>
4554
4555        
4556        
4557      </li>
4558    
4559  
4560    
4561
4562    
4563    
4564
4565    
4566    
4567
4568    
4569
4570    
4571      <li
4572        class="navmenu-item navmenu-id-accessories"
4573      >
4574        <a
4575        class="
4576          navmenu-link
4577          navmenu-link-depth-2
4578          
4579        "
4580        href="/collections/accessories-1"
4581        >
4582          
4583          Accessories
4584</a>
4585      </li>
4586    
4587  
4588    
4589
4590    
4591    
4592
4593    
4594    
4595
4596    
4597
4598    
4599      <li
4600        class="navmenu-item navmenu-id-sale"
4601      >
4602        <a
4603        class="
4604          navmenu-link
4605          navmenu-link-depth-2
4606          
4607        "
4608        href="/collections/sale"
4609        >
4610          
4611          SALE
4612</a>
4613      </li>
4614    
4615  
4616</ul>
4617
4618      
4619
4620      
4621    </li>
4622  
4623    
4624    
4625
4626    
4627    
4628    
4629<li
4630      class="navmenu-item            navmenu-id-catalog"
4631      
4632    >
4633      <a
4634        class="navmenu-link  "
4635        href="https://cdn.shopify.com/s/files/1/0533/6245/8807/files/FOXFIRE_CATALOG_-_2023.pdf?v=1698691008"
4636        
4637      >
4638        Catalog
4639      </a>
4640
4641      
4642
4643      
4644      
4645
4646      
4647
4648      
4649    </li>
4650  
4651    
4652    
4653
4654    
4655    
4656    
4657<li
4658      class="navmenu-item            navmenu-id-dealer-application"
4659      
4660    >
4661      <a
4662        class="navmenu-link  "
4663        href="/pages/wholesale-application"
4664        
4665      >
4666        Dealer Application
4667      </a>
4668
4669      
4670
4671      
4672      
4673
4674      
4675
4676      
4677    </li>
4678  
4679    
4680    
4681
4682    
4683    
4684    
4685<li
4686      class="navmenu-item            navmenu-id-contact-us"
4687      
4688    >
4689      <a
4690        class="navmenu-link  "
4691        href="/pages/contact-us"
4692        
4693      >
4694        Contact Us
4695      </a>
4696
4697      
4698
4699      
4700      
4701
4702      
4703
4704      
4705    </li>
4706  
4707    
4708    
4709
4710    
4711    
4712    
4713<li
4714      class="navmenu-item            navmenu-id-about-us"
4715      
4716    >
4717      <a
4718        class="navmenu-link  "
4719        href="/pages/about-us"
4720        
4721      >
4722        About Us
4723      </a>
4724
4725      
4726
4727      
4728      
4729
4730      
4731
4732      
4733    </li>
4734  
4735</ul>
4736
4737
4738      
4739    </div>
4740    <div class="utility-bar__mobile-disclosure" data-utility-mobile></div>
4741  </div>
4742
4743  <div class="mobile-nav-overlay" data-mobile-nav-overlay></div>
4744</div>
4745
4746</header>
4747
4748</div>
4749<!-- END sections: header-group -->
4750
4751    <div style="--background-color: #ffffff">
4752      
4753
4754
4755    </div>
4756
4757    <div class="intersection-target" data-header-intersection-target></div>
4758    <div class="site-main-dimmer" data-site-main-dimmer></div>
4759    <main id="site-main" class="site-main" aria-label="Main content" tabindex="-1">
4760      <div id="shopify-section-template--32261644976497__main" class="shopify-section cart
4760--section section--canonical">
4761
4762
4763<script
4764  type="application/json"
4765  data-section-type="static-cart"
4766  data-section-id="template--32261644976497__main"
4767  data-section-data>
4768  {
4769    "settings": {
4770      "shipping": true,
4771      "money_format": "${{amount}}"
4772    },
4773    "shipping": {
4774      "calculate_shipping": "Calculate Shipping",
4775      "calculating": "Calculating",
4776      "customer": false,
4777      "multiple_rates": "We found *number_of_rates* shipping rates available for *address*, starting at *rate*.",
4778      "one_rate": "We found one shipping rate available for *address*.",
4779      "no_rates": "Sorry, we do not ship to this destination.",
4780      "rate_value": "*rate_title* at *rate*",
4781      "zip": "Zip \/ Postal Code",
4782      "shipment_too_heavy": "Sorry, but this shipment is too heavy to ship.",
4783      "error_general": "Sorry, we\u0026#39;re not able to calculate your shipping at this time."
4784    }
4785  }
4786</script>
4786
4787
4788<form
4789  action="/cart"
4790  method="post"
4791  aria-label="cart checkout"
4792><header class="cart-title">
4793    <div class="cart-title-left">
4794      <h1>Your cart</h1>
4795
4796      
4797    </div>
4798
4799    
4800      <div class="cart-title-right">
4801        
4802          <a class="cart-continue" href="/collections/all">
4803      Continue shopping
4804      
4805
4806
4807                                                                                                      <svg class="icon-signpost-arrow "    aria-hidden="true"    focusable="false"    role="presentation"    xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 18 12" fill="none">      <path fill-rule="evenodd" clip-rule="evenodd" d="M14.7272 5.6364L10.3636 1.27279L11.6364 0L17.2728 5.6364L11.6364 11.2728L10.3636 10L14.7272 5.6364Z" fill="currentColor"/>      <path fill-rule="evenodd" clip-rule="evenodd" d="M0 4.73645L16 4.73645L16 6.53645L-1.57361e-07 6.53645L0 4.73645Z" fill="currentColor"/>    </svg>                
4808
4809    </a>
4810        
4811      </div>
4812    
4813  </header>
4814
4815  <section class="cartitems--container ">
4816    <div class="cartitems" data-html="list">
4817
4818        <div class="cartitems-empty">
4819          <div class="cartitems-empty--inner">
4820            <p>Your cart is empty</p>
4821
4822            
4823              <a class="button-primary" href="/collections/all">
4824                
4825
4826
4827            <svg width="25" height="24" viewBox="0 0 25 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 0C0.447715 0 0 0.447715 0 1C0 1.55228 0.447715 2 1 2H1.33877H1.33883C1.61048 2.00005 2.00378 2.23945 2.10939 2.81599L2.10937 2.816L2.11046 2.82171L5.01743 18.1859C5.12011 18.7286 5.64325 19.0852 6.18591 18.9826C6.21078 18.9779 6.23526 18.9723 6.25933 18.9658C6.28646 18.968 6.31389 18.9692 6.34159 18.9692H18.8179H18.8181C19.0302 18.9691 19.2141 18.9765 19.4075 18.9842L19.4077 18.9842C19.5113 18.9884 19.6175 18.9926 19.7323 18.9959C20.0255 19.0043 20.3767 19.0061 20.7177 18.9406C21.08 18.871 21.4685 18.7189 21.8028 18.3961C22.1291 18.081 22.3266 17.6772 22.4479 17.2384C22.4569 17.2058 22.4642 17.1729 22.4699 17.1396L23.944 8.46865C24.2528 7.20993 23.2684 5.99987 21.9896 6H21.9894H4.74727L4.07666 2.45562L4.07608 2.4525C3.83133 1.12381 2.76159 8.49962e-05 1.33889 0H1.33883H1ZM5.12568 8L6.8227 16.9692H18.8178H18.8179C19.0686 16.9691 19.3257 16.9793 19.5406 16.9877L19.5413 16.9877C19.633 16.9913 19.7171 16.9947 19.7896 16.9967C20.0684 17.0047 20.2307 16.9976 20.3403 16.9766C20.3841 16.9681 20.4059 16.96 20.4151 16.9556C20.4247 16.9443 20.4639 16.8918 20.5077 16.7487L21.9794 8.09186C21.9842 8.06359 21.9902 8.03555 21.9974 8.0078C21.9941 8.00358 21.9908 8.00108 21.989 8H5.12568ZM20.416 16.9552C20.4195 16.9534 20.4208 16.9524 20.4205 16.9523C20.4204 16.9523 20.4199 16.9525 20.4191 16.953L20.416 16.9552ZM10.8666 22.4326C10.8666 23.2982 10.195 24 9.36658 24C8.53815 24 7.86658 23.2982 7.86658 22.4326C7.86658 21.567 8.53815 20.8653 9.36658 20.8653C10.195 20.8653 10.8666 21.567 10.8666 22.4326ZM18.0048 24C18.8332 24 19.5048 23.2982 19.5048 22.4326C19.5048 21.567 18.8332 20.8653 18.0048 20.8653C17.1763 20.8653 16.5048 21.567 16.5048 22.4326C16.5048 23.2982 17.1763 24 18.0048 24Z" fill="currentColor"/>    </svg>                                                                                                          
4828
4829                Continue shopping
4830              </a>
4831            
4832          </div>
4833        </div>
4834      
4835    </div>
4836
4837    
4838  </section>
4839</form>
4840
4841</div>
4842    </main><!-- BEGIN sections: footer-group -->
4843<div id="shopify-section-sections--32261645697393__footer" class="shopify-section shopify-section-group-footer-group">
4843<script
4844  type="application/json"
4845  data-section-id="sections--32261645697393__footer"
4846  data-section-type="static-footer">
4847</script>
4847
4848
4849
4850
4851
4852
4853<footer role="contentinfo" aria-label="Footer">
4854  <section class="site-footer-wrapper">
4855    
4856      <div class="site-footer-item">
4857        <div class="site-footer-blocks column-count-4">
4858          <div class="site-footer-block-item  site-footer-block-menu  has-accordion" >
4859
4860  
4861      <h2 class="site-footer-block-title" data-accordion-trigger>
4862        Main menu
4863
4864        <span class="site-footer-block-icon accordion--icon">
4865          <svg
4866  aria-hidden="true"
4867  focusable="false"
4868  role="presentation"
4869  width="14"
4870  height="8"
4871  viewBox="0 0 14 8"
4872  fill="none"
4873  xmlns="http://www.w3.org/2000/svg"
4874>
4875  <path class="icon-chevron-down-left" d="M7 6.75L12.5 1.25" stroke="currentColor" stroke-width="1.75" stroke-linecap="square"/>
4876  <path class="icon-chevron-down-right" d="M7 6.75L1.5 1.25" stroke="currentColor" stroke-width="1.75" stroke-linecap="square"/>
4877</svg>
4878
4879        </span>
4880      </h2>
4881
4882      <div class="site-footer-block-content">
4883        
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896<ul
4897  class="
4898    navmenu
4899    navmenu-depth-1
4900    
4901    
4902  "
4903  data-navmenu
4904  data-accordion-content
4905  
4906  
4907>
4908  
4909    
4910
4911    
4912    
4913
4914    
4915    
4916
4917    
4918
4919    
4920      <li
4921        class="navmenu-item navmenu-id-home"
4922      >
4923        <a
4924        class="
4925          navmenu-link
4926          navmenu-link-depth-1
4927          
4928        "
4929        href="/"
4930        >
4931          
4932          Home
4933</a>
4934      </li>
4935    
4936  
4937    
4938
4939    
4940    
4941
4942    
4943    
4944
4945    
4946
4947    
4948      <li
4949        class="navmenu-item navmenu-id-shop"
4950      >
4951        <a
4952        class="
4953          navmenu-link
4954          navmenu-link-depth-1
4955          
4956        "
4957        href="/collections/shop-all"
4958        >
4959          
4960          Shop
4961</a>
4962      </li>
4963    
4964  
4965    
4966
4967    
4968    
4969
4970    
4971    
4972
4973    
4974
4975    
4976      <li
4977        class="navmenu-item navmenu-id-catalog"
4978      >
4979        <a
4980        class="
4981          navmenu-link
4982          navmenu-link-depth-1
4983          
4984        "
4985        href="https://cdn.shopify.com/s/files/1/0533/6245/8807/files/FOXFIRE_CATALOG_-_2023.pdf?v=1698691008"
4986        >
4987          
4988          Catalog
4989</a>
4990      </li>
4991    
4992  
4993    
4994
4995    
4996    
4997
4998    
4999    
5000
5001    
5002
5003    
5004      <li
5005        class="navmenu-item navmenu-id-dealer-application"
5006      >
5007        <a
5008        class="
5009          navmenu-link
5010          navmenu-link-depth-1
5011          
5012        "
5013        href="/pages/wholesale-application"
5014        >
5015          
5016          Dealer Application
5017</a>
5018      </li>
5019    
5020  
5021    
5022
5023    
5024    
5025
5026    
5027    
5028
5029    
5030
5031    
5032      <li
5033        class="navmenu-item navmenu-id-contact-us"
5034      >
5035        <a
5036        class="
5037          navmenu-link
5038          navmenu-link-depth-1
5039          
5040        "
5041        href="/pages/contact-us"
5042        >
5043          
5044          Contact Us
5045</a>
5046      </li>
5047    
5048  
5049    
5050
5051    
5052    
5053
5054    
5055    
5056
5057    
5058
5059    
5060      <li
5061        class="navmenu-item navmenu-id-about-us"
5062      >
5063        <a
5064        class="
5065          navmenu-link
5066          navmenu-link-depth-1
5067          
5068        "
5069        href="/pages/about-us"
5070        >
5071          
5072          About Us
5073</a>
5074      </li>
5075    
5076  
5077</ul>
5078
5079      </div>
5080  
5081</div>
5082<div class="site-footer-block-item  site-footer-block-menu  has-accordion" >
5083
5084  
5085      <h2 class="site-footer-block-title" data-accordion-trigger>
5086        
5087
5088        <span class="site-footer-block-icon accordion--icon">
5089          <svg
5090  aria-hidden="true"
5091  focusable="false"
5092  role="presentation"
5093  width="14"
5094  height="8"
5095  viewBox="0 0 14 8"
5096  fill="none"
5097  xmlns="http://www.w3.org/2000/svg"
5098>
5099  <path class="icon-chevron-down-left" d="M7 6.75L12.5 1.25" stroke="currentColor" stroke-width="1.75" stroke-linecap="square"/>
5100  <path class="icon-chevron-down-right" d="M7 6.75L1.5 1.25" stroke="currentColor" stroke-width="1.75" stroke-linecap="square"/>
5101</svg>
5102
5103        </span>
5104      </h2>
5105
5106      <div class="site-footer-block-content">
5107        
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120<ul
5121  class="
5122    navmenu
5123    navmenu-depth-1
5124    
5125    
5126  "
5127  data-navmenu
5128  data-accordion-content
5129  
5130  
5131>
5132  
5133</ul>
5134
5135      </div>
5136  
5137</div>
5138<div class="site-footer-block-item  site-footer-block-menu  has-accordion" >
5139
5140  
5141      <h2 class="site-footer-block-title" data-accordion-trigger>
5142        
5143
5144        <span class="site-footer-block-icon accordion--icon">
5145          <svg
5146  aria-hidden="true"
5147  focusable="false"
5148  role="presentation"
5149  width="14"
5150  height="8"
5151  viewBox="0 0 14 8"
5152  fill="none"
5153  xmlns="http://www.w3.org/2000/svg"
5154>
5155  <path class="icon-chevron-down-left" d="M7 6.75L12.5 1.25" stroke="currentColor" stroke-width="1.75" stroke-linecap="square"/>
5156  <path class="icon-chevron-down-right" d="M7 6.75L1.5 1.25" stroke="currentColor" stroke-width="1.75" stroke-linecap="square"/>
5157</svg>
5158
5159        </span>
5160      </h2>
5161
5162      <div class="site-footer-block-content">
5163        
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176<ul
5177  class="
5178    navmenu
5179    navmenu-depth-1
5180    
5181    
5182  "
5183  data-navmenu
5184  data-accordion-content
5185  
5186  
5187>
5188  
5189</ul>
5190
5191      </div>
5192  
5193</div>
5194<div class="site-footer-block-item  site-footer-block-newsletter  " >
5195
5196  
5197    
5198      <h2 class="site-footer-block-title">
5199        Subscribe
5200      </h2>
5201    
5202
5203    
5204      <div class="site-footer-block-content rte">
5205        <p>Sign up for early release products, promotions and more.</p>
5206      </div>
5207    
5208
5209    
5210      
5211      
5212
5213<div class="newsletter">
5214  <form method="post" action="/contact#footer_newsletter_newsletter" id="footer_newsletter_newsletter" accept-charset="UTF-8" class="contact-form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" />
5215    
5216      <input
5217        type="hidden"
5218        name="contact[tags]"
5219        value="prospect, newsletter"
5220      >
5221
5222      <div class="form-fields-inline pxs-newsletter-form-fields">
5223        <div class="form-field newsletter-input">
5224          <input
5225            class="
5226              form-field-input
5227              form-field-text
5228            "
5229            type="email"
5230            id="footer_newsletter_email"
5231            name="contact[email]"
5232            aria-label="Email address"
5233            placeholder=" "
5234          >
5235
5236          <label
5237            class="form-field-title"
5238            for="footer_newsletter_email"
5239          >
5240            Email address
5241          </label>
5242        </div>
5243
5244        <div class="form-field newsletter-submit">
5245          <button
5246            class="button-primary"
5247            name="subscribe"
5248            type="submit"
5249          >
5250            Sign up
5251          </button>
5252        </div>
5253      </div>
5254    
5255  </form>
5256</div>
5257
5258    
5259  
5260</div>
5261
5262        </div>
5263      </div>
5264    
5265
5266    <div class="site-footer-item site-footer-item--information">
5267      <div class="site-footer__row site-footer__row--first">
5268
5269      </div>
5270
5271      <div class="site-footer__row site-footer__row--second">
5272        <div class="site-footer__row-inner-wrapper-left"><nav
5273              class="site-footer-navigation"
5274              aria-label="Footer"
5275            >
5276              
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289<ul
5290  class="
5291    navmenu
5292    navmenu-depth-1
5293    
5294    
5295  "
5296  data-navmenu
5297  
5298  
5299  
5300>
5301  
5302    
5303
5304    
5305    
5306
5307    
5308    
5309
5310    
5311
5312    
5313      <li
5314        class="navmenu-item navmenu-id-search"
5315      >
5316        <a
5317        class="
5318          navmenu-link
5319          navmenu-link-depth-1
5320          
5321        "
5322        href="/search"
5323        >
5324          
5325          Search
5326</a>
5327      </li>
5328    
5329  
5330    
5331
5332    
5333    
5334
5335    
5336    
5337
5338    
5339
5340    
5341      <li
5342        class="navmenu-item navmenu-id-wholesale-application"
5343      >
5344        <a
5345        class="
5346          navmenu-link
5347          navmenu-link-depth-1
5348          
5349        "
5350        href="/pages/wholesale-application"
5351        >
5352          
5353          Wholesale Application
5354</a>
5355      </li>
5356    
5357  
5358    
5359
5360    
5361    
5362
5363    
5364    
5365
5366    
5367
5368    
5369      <li
5370        class="navmenu-item navmenu-id-shopify-collective"
5371      >
5372        <a
5373        class="
5374          navmenu-link
5375          navmenu-link-depth-1
5376          
5377        "
5378        href="https://foxfirelites.com/apps/collective/retailer-referral"
5379        >
5380          
5381          Shopify Collective
5382</a>
5383      </li>
5384    
5385  
5386    
5387
5388    
5389    
5390
5391    
5392    
5393
5394    
5395
5396    
5397      <li
5398        class="navmenu-item navmenu-id-accessibility-statement"
5399      >
5400        <a
5401        class="
5402          navmenu-link
5403          navmenu-link-depth-1
5404          
5405        "
5406        href="/pages/accessibility-statement"
5407        >
5408          
5409          Accessibility Statement
5410</a>
5411      </li>
5412    
5413  
5414</ul>
5415
5416            </nav><p class="site-footer-credits">Copyright &copy; 2026 FoxFire Safety Lites.
5417          </p>
5418
5419          <p class="site-footer-credits">
5420            <a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=poweredby&amp;utm_medium=shopify&amp;utm_source=onlinestore">Powered by Shopify</a>
5421          </p>
5422        </div>
5423
5424        
5425
5426      </div>
5427    </div>
5428  </section>
5429</footer>
5430
5431</div>
5432<!-- END sections: footer-group -->
5433
5434    
5435    <div style="display: none;" aria-hidden="true" data-templates>
5436      
5437      <div
5438        class="message-banner--container"
5439        role="alert"
5440        data-message-banner
5441      >
5442        <div class="message-banner--outer">
5443          <div class="message-banner--inner" data-message-banner-content></div>
5444      
5445          <button
5446            class="message-banner--close"
5447            type="button"
5448            aria-label="Close"
5449            data-message-banner-close
5450          ><svg
5451  aria-hidden="true"
5452  focusable="false"
5453  role="presentation"
5454  xmlns="http://www.w3.org/2000/svg"
5455  width="13"
5456  height="13"
5457  viewBox="0 0 13 13"
5458>
5459  <path fill="currentColor" fill-rule="evenodd" d="M5.306 6.5L0 1.194 1.194 0 6.5 5.306 11.806 0 13 1.194 7.694 6.5 13 11.806 11.806 13 6.5 7.694 1.194 13 0 11.806 5.306 6.5z"/>
5460</svg></button>
5461        </div>
5462      </div>
5463      
5464
5465      
5466      <section class="atc-banner--container" role="log" data-atc-banner>
5467        <div class="atc-banner--outer">
5468          <div class="atc-banner--inner">
5469            <div class="atc-banner--product">
5470              <h2 class="atc-banner--product-title">
5471                <span class="atc-banner--product-title--icon">
5472                  
5473
5474
5475                <svg class="icon-checkmark "    aria-hidden="true"    focusable="false"    role="presentation"    xmlns="http://www.w3.org/2000/svg" width="18"  height="13" viewBox="0 0 18 13" xmlns="http://www.w3.org/2000/svg">      <path fill="currentColor" fill-rule="evenodd" d="M6.23 9.1L2.078 5.2 0 7.15 6.23 13 18 1.95 15.923 0z" />    </svg>                                                                                                      
5476
5477                </span>
5478                Added to your cart:
5479              </h2>
5480      
5481              <div class="atc--product">
5482                <div class="atc--product-image" data-atc-banner-product-image>
5483                  <svg class="placeholder--image" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 525.5 525.5"><path d="M324.5 212.7H203c-1.6 0-2.8 1.3-2.8 2.8V308c0 1.6 1.3 2.8 2.8 2.8h121.6c1.6 0 2.8-1.3 2.8-2.8v-92.5c0-1.6-1.3-2.8-2.9-2.8zm1.1 95.3c0 .6-.5 1.1-1.1 1.1H203c-.6 0-1.1-.5-1.1-1.1v-92.5c0-.6.5-1.1 1.1-1.1h121.6c.6 0 1.1.5 1.1 1.1V308z"/><path d="M210.4 299.5H240v.1s.1 0 .2-.1h75.2v-76.2h-105v76.2zm1.8-7.2l20-20c1.6-1.6 3.8-2.5 6.1-2.5s4.5.9 6.1 2.5l1.5 1.5 16.8 16.8c-12.9 3.3-20.7 6.3-22.8 7.2h-27.7v-5.5zm101.5-10.1c-20.1 1.7-36.7 4.8-49.1 7.9l-16.9-16.9 26.3-26.3c1.6-1.6 3.8-2.5 6.1-2.5s4.5.9 6.1 2.5l27.5 27.5v7.8zm-68.9 15.5c9.7-3.5 33.9-10.9 68.9-13.8v13.8h-68.9zm68.9-72.7v46.8l-26.2-26.2c-1.9-1.9-4.5-3-7.3-3s-5.4 1.1-7.3 3l-26.3 26.3-.9-.9c-1.9-1.9-4.5-3-7.3-3s-5.4 1.1-7.3 3l-18.8 18.8V225h101.4z"/><path d="M232.8 254c4.6 0 8.3-3.7 8.3-8.3s-3.7-8.3-8.3-8.3-8.3 3.7-8.3 8.3 3.7 8.3 8.3 8.3zm0-14.9c3.6 0 6.6 2.9 6.6 6.6s-2.9 6.6-6.6 6.6-6.6-2.9-6.6-6.6 3-6.6 6.6-6.6z"/></svg>
5484                </div>
5485                <div class="atc--product-details">
5486                  <h2 class="atc--product-details--title" data-atc-banner-product-title></h2>
5487                  <span class="atc--product-details--options" data-atc-banner-product-options></span>
5488                  <span class="atc--product-details--price">
5489                    <span class="atc--product-details--price-quantity" data-atc-banner-product-price-quantity></span>
5490                    <span class="atc--product-details--price-value money" data-atc-banner-product-price-value></span>
5491                    <span class="atc--product-details--price-discounted money" data-atc-banner-product-price-discounted></span>
5492                    <span class="atc--product-details--unit-price hidden" data-atc-banner-unit-price>
5493                      ** total_quantity ** | ** unit_price ** / ** unit_measure **
5494                    </span>
5495                  </span>
5496                  <ul class="discount-list" data-atc-banner-product-discounts>
5497                    <li class="discount-list-item">
5498                      
5499
5500
5501                                                                          <svg class="icon-sale-tag "    aria-hidden="true"    focusable="false"    role="presentation"    xmlns="http://www.w3.org/2000/svg" width="350" height="350" viewBox="0 0 350 350" fill="none">      <path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M0 197.826C0 192.95 1.93821 188.275 5.38762 184.83L179.459 10.7587C186.348 3.86966 195.692 -0.000356971 205.435 2.46966e-08H334.782C343.187 2.46966e-08 350 6.81304 350 15.2173V144.565C350 154.308 346.13 163.651 339.241 170.541L165.17 344.612C161.725 348.061 157.049 350 152.174 350C147.299 350 142.624 348.061 139.179 344.612L5.38762 210.821C1.93821 207.376 0 202.701 0 197.826ZM304.348 68.4786C304.348 81.085 294.128 91.3046 281.521 91.3046C268.915 91.3046 258.695 81.085 258.695 68.4786C258.695 55.8721 268.915 45.6525 281.521 45.6525C294.128 45.6525 304.348 55.8721 304.348 68.4786Z" fill="currentColor"/>    </svg>                                            
5502
5503                      <span class="discount-title"></span>
5504                      (-<span class="money discount-amount"></span>)
5505                    </li>
5506                  </ul>
5507                  <span class="atc--line-item-subscriptions" data-atc-banner-product-subscription-title></span>
5508                </div>
5509              </div>
5510            </div>
5511      
5512            <div class="atc-banner--cart">
5513              <div class="atc-banner--cart-subtotal">
5514                <span class="atc-subtotal--label">
5515                  Cart subtotal
5516                </span>
5517                <span class="atc-subtotal--price money" data-atc-banner-cart-subtotal></span>
5518              </div>
5519<footer class="atc-banner--cart-footer">
5520                <a class="button-secondary atc-button--viewcart" href="/cart" data-atc-banner-cart-button>
5521                  View cart (<span></span>)
5522                </a>
5523                <form
5524                  class="atc-banner__form"
5525                  action="/cart"
5526                  method="post"
5527                  aria-label="cart checkout"
5528                >
5529                  <button class="button-primary atc-button--checkout" type="submit" name="checkout">
5530                    
5531                    <span>Checkout</span>
5532                  </button>
5533                </form>
5534              </footer>
5535            </div>
5536          </div>
5537      
5538          <button
5539            class="atc-banner--close"
5540            type="button"
5541            aria-label="Close"
5542            data-atc-banner-close
5543          ><svg
5544  aria-hidden="true"
5545  focusable="false"
5546  role="presentation"
5547  xmlns="http://www.w3.org/2000/svg"
5548  width="13"
5549  height="13"
5550  viewBox="0 0 13 13"
5551>
5552  <path fill="currentColor" fill-rule="evenodd" d="M5.306 6.5L0 1.194 1.194 0 6.5 5.306 11.806 0 13 1.194 7.694 6.5 13 11.806 11.806 13 6.5 7.694 1.194 13 0 11.806 5.306 6.5z"/>
5553</svg></button>
5554        </div>
5555      </section>
5556      
5557
5558    </div>
5559
5560    
5561    
5562    <div class="modal" data-modal-container aria-label="modal window" data-trap-focus>
5563      <div class="modal-inner" data-modal-inner>
5564        <button
5565          class="modal-close"
5566          type="button"
5567          aria-label="Close"
5568          data-modal-close
5569        >
5570          <svg
5571  aria-hidden="true"
5572  focusable="false"
5573  role="presentation"
5574  xmlns="http://www.w3.org/2000/svg"
5575  width="13"
5576  height="13"
5577  viewBox="0 0 13 13"
5578>
5579  <path fill="currentColor" fill-rule="evenodd" d="M5.306 6.5L0 1.194 1.194 0 6.5 5.306 11.806 0 13 1.194 7.694 6.5 13 11.806 11.806 13 6.5 7.694 1.194 13 0 11.806 5.306 6.5z"/>
5580</svg>
5581        </button>
5582        <div class="modal-content" data-modal-content></div>
5583      </div>
5584    </div>
5585    
5586    <div class="modal-1" data-modal-container-1 aria-label="modal window">
5587      <div class="modal-inner" data-modal-inner>
5588        <button
5589          class="modal-close"
5590          type="button"
5591          aria-label="Close"
5592          data-modal-1-close
5593        >
5594          <svg
5595  aria-hidden="true"
5596  focusable="false"
5597  role="presentation"
5598  xmlns="http://www.w3.org/2000/svg"
5599  width="13"
5600  height="13"
5601  viewBox="0 0 13 13"
5602>
5603  <path fill="currentColor" fill-rule="evenodd" d="M5.306 6.5L0 1.194 1.194 0 6.5 5.306 11.806 0 13 1.194 7.694 6.5 13 11.806 11.806 13 6.5 7.694 1.194 13 0 11.806 5.306 6.5z"/>
5604</svg>
5605        </button>
5606        <div class="modal-content" data-modal-content></div>
5607      </div>
5608    </div>
5609    
5610
5611
5612    
5613    
5614    
5615    
5616    
5617
5618    
5619
5620    
5621
5622      
5622<script>
5623        (
5624          function () {
5625            var classes = {
5626              block: 'pxu-lia-block',
5627              element: 'pxu-lia-element',
5628            };
5629
5630            document
5631              .querySelectorAll('[type="application/pxs-animation-mapping+json"]')
5632              .forEach(function (mappingEl) {
5633                const section = mappingEl.parentNode;
5634                try {
5635                  const mapping = JSON.parse(mappingEl.innerHTML);
5636                  mapping.elements.forEach(function (elementSelector) {
5637                    section
5638                      .querySelectorAll(elementSelector)
5639                      .forEach(function (element) { element.classList.add(classes.element); });
5640                  });
5641
5642                  mapping.blocks.forEach(function (blockSelector) {
5643                    section
5644                      .querySelectorAll(blockSelector)
5645                      .forEach(function (block) { block.classList.add(classes.block); });
5646                  });
5647                } catch (error) {
5648                  console.warn('Unable to parse animation mapping', mappingEl, error);
5649                }
5650            });
5651          }
5652        )()
5653      </script>
5653
5654    
5655<script
5656        src="//foxfirelites.com/cdn/shop/t/18/assets/empire.min.js?v=8791642673198322091790694058"
5657        data-scripts
5658        data-shopify-api-url="//foxfirelites.com/cdn/shopifycloud/storefront/assets/themes_support/api.jquery-7ab1a3a4.js"
5659        data-shopify-countries="/services/javascripts/countries.js"
5660        data-shopify-common="//foxfirelites.com/cdn/shopifycloud/storefront/assets/themes_support/shopify_common-5f594365.js"
5661        data-shopify-cart="//foxfirelites.com/cdn/shop/t/18/assets/jquery.cart.js?v=11295"
5662        data-pxu-polyfills="//foxfirelites.com/cdn/shop/t/18/assets/polyfills.min.js?v=106201537444437039941790694060"
5663        async
5664      ></script>
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673  
5673<script type="application/ld+json">
5674    {
5675      "@context": "http://schema.org",
5676      "@type": "BreadcrumbList",
5677      "itemListElement": [
5678      
5679          {
5680            "@type": "ListItem",
5681            "position": 1,
5682            "item": {
5683              "@id": "https://foxfirelites.com/cart",
5684              "name": "Cart"
5685            }
5686          }
5687        
5688      ]
5689    }
5690  </script>
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699<script type="application/ld+json">
5700  {
5701    "@context": "http://schema.org",
5702    "@type": "WebSite",
5703    "name": "FoxFire Safety Lites",
5704    "url": "https://foxfirelites.com"
5705  }
5706</script>
5706
5707
5708
5709    
5709<script>
5710    (function () {
5711      function handleFirstTab(e) {
5712        if (e.keyCode === 9) { // the "I am a keyboard user" key
5713          document.body.classList.add('user-is-tabbing');
5714          window.removeEventListener('keydown', handleFirstTab);
5715        }
5716      }
5717      window.addEventListener('keydown', handleFirstTab);
5718    })();
5719    </script>
5719
5720
5721    
5721<script
5722      src="//foxfirelites.com/cdn/shop/t/18/assets/instantPage.min.js?v=106097555643400646271790694049"
5723      type="module"
5724      defer
5725    >
5726    </script>
5726
5727    
5727<script>(function(n, v) {/* eslint-disable-next-line max-len */if (window.Shopify && window.Shopify.theme && navigator && navigator.sendBeacon && window.Shopify.designMode) {if (sessionStorage.getItem('oots_beacon')) return;navigator.sendBeacon('https://app.outofthesandbox.com/beacon', new URLSearchParams({shop_domain: window.Shopify.shop.toLowerCase(),shop_id: '53362458807',shop_email: '[email protected]',theme_name: n.toLowerCase(),theme_version: v.toLowerCase(),theme_store_id: window.Shopify.theme.theme_store_id,theme_id: window.Shopify.theme.id,theme_role: window.Shopify.theme.role,}));sessionStorage.setItem('oots_beacon', '');}}('empire','13.0.1'))</script>
5727
5728  <div id="shopify-block-AQ3lzVEIvN2NlS2kzR__8176430683102238291" class="shopify-block shopify-app-block">
5729
5730<script>
5731  window.accessProAiA11yFixes = {"fixes":[]};
5732</script>
5732
5733
5734<script src="https://cdn.shopify.com/extensions/01a1115f-a4db-79a9-998b-83572f4594c6/access-pro-2-247/assets/ai-a11y-fixes.js" defer></script>
5734
5735
5736
5737</div><div id="shopify-block-Ad0NQMEFOV1NvbFdBR__8086182589341073271" class="shopify-block shopify-app-block">
5738
5739<script>
5740  
5741  window.accessProCookieBannerSettings = null;
5742
5743  
5744  if (!window.accessProProxyHandle) {
5745    
5746    window.accessProProxyHandle = '/apps/access-pro';
5747    
5748  }
5749
5750  
5751  window.accessProCookieBannerSettingsUrl = window.accessProProxyHandle + '/theme/cookie-banner/';
5752</script>
5752
5753
5754<script src="https://cdn.shopify.com/extensions/01a1115f-a4db-79a9-998b-83572f4594c6/access-pro-2-247/assets/cookie-banner.js" defer></script>
5754
5755
5756
5757</div><div id="shopify-block-AdTBORzdUdm95L0F1Z__1537173939754162885" class="shopify-block shopify-app-block">
5758
5759<script>
5760  window.accessProWidgetSettings = {"icon_size":"default","widget_size":"small","icon_position":"BL","enable_features":true,"icon_color_fill":"#419d4a","icon_color_stroke":"#419d4a","enableMenuSettings":{"links":true,"reset":true,"cursor":true,"images":true,"sounds":true,"videos":true,"mission":true,"contrast":true,"dyslexic":true,"headings":true,"profiles":true,"alignment":true,"animation":true,"fontscale":true,"languages":true,"magnifier":true,"fontweight":true,"saturation":true,"adhdprofile":true,"linespacing":true,"readingmask":true,"text2speech":true,"textsummary":true,"readingguide":true,"letterspacing":true,"pagestructure":true,"readerprofile":true,"describeimages":true,"seizureprofile":true,"cognitiveprofile":true},"menu_content_color":"#111111","selected_languages":["en","fr","es","de"],"default_menu_language":"en","menu_header_font_color":"#f2f2f2","open_accessibility_profile":true,"menu_header_background_color":"#850e0e"};
5761  window.accessProComplianceSettings = {"compliance_title":"Compliance","compliance_content":"\u003cdiv class=\"ap-compliance-main-title\"\u003e\u003cstrong\u003eAccessPro Compliance Mission Statement\u003c\/strong\u003e\u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-wrapper\"\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eWCAG 2.2 Commitment:\u003c\/strong\u003e We strictly adhere to WCAG 2.2 AA guidelines.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003ePersonalized UI:\u003c\/strong\u003e Users with disabilities can personalize the interface.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eAI-Based Compliance:\u003c\/strong\u003e We use AI to maintain accessibility during updates.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eARIA Attributes:\u003c\/strong\u003e Meaningful data for screen-readers using ARIA attributes.\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-wrapper\"\u003e\u003cdiv class=\"ap-compliance-list-title\"\u003e\u003cstrong\u003eOptimized Screen Reader and Keyboard Navigation:\u003c\/strong\u003e\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list\"\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eScreen-reader Optimization:\u003c\/strong\u003e ARIA attributes for meaningful data.\u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eImage Description:\u003c\/strong\u003e Auto image descriptions for better understanding.\u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eOCR Technology:\u003c\/strong\u003e Text extraction from images.\u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eKeyboard Navigation:\u003c\/strong\u003e Enhanced keyboard operability. \u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eContent-skip Menus:\u003c\/strong\u003e Easy navigation with shortcuts.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003ePopup Handling:\u003c\/strong\u003e Improved handling of popups.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eShortcuts:\u003c\/strong\u003e Quick access to key elements with shortcuts.\u003c\/div\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-wrapper\"\u003e\u003cdiv class=\"ap-compliance-list-title\"\u003e\u003cstrong\u003eSpecialized Profiles for Disabilities:\u003c\/strong\u003e\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list\"\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eEpilepsy Safe Profile:\u003c\/strong\u003e Safe browsing with reduced triggers.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eVision Impaired Profile:\u003c\/strong\u003e Enhanced interface for visual impairments.\u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eCognitive Disability Profile:\u003c\/strong\u003e Assistive features for cognitive disabilities.\u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eADHD-Friendly Profile:\u003c\/strong\u003e Minimized distractions for ADHD users.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eBlind Users Profile:\u003c\/strong\u003e Compatibility with popular screen-readers.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eKe
5761yboard Navigation Profile:\u003c\/strong\u003e Navigate with keyboard commands.\u003c\/div\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-wrapper\"\u003e\u003cdiv class=\"ap-compliance-list-title\"\u003e\u003cstrong\u003eCustomizable User Interface Adjustments:\u003c\/strong\u003e\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list\"\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eFont Adjustments:\u003c\/strong\u003e Customize font settings for readability.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eColour Adjustments:\u003c\/strong\u003e Choose contrast profiles and color schemes.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eAnimations:\u003c\/strong\u003e Disable animations for user safety.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eContent Highlighting:\u003c\/strong\u003e Emphasize key elements.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eAudio Muting:\u003c\/strong\u003e Instantly mute the website.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eCognitive Disorders:\u003c\/strong\u003e Linked search engine for better understanding.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eAdditional Functions:\u003c\/strong\u003e Various customizable options.\u003c\/div\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-wrapper\"\u003e\u003cdiv class=\"ap-compliance-list-title\"\u003e\u003cstrong\u003eBrowser and Assistive Technology Support:\u003c\/strong\u003e\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list\"\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eSupported Browsers:\u003c\/strong\u003e Google Chrome, Mozilla Firefox, Apple Safari, Opera, Microsoft Edge.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eSupported Screen Readers:\u003c\/strong\u003e JAWS (Windows\/MAC), NVDA (Windows\/MAC).\u003c\/div\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-wrapper\"\u003e\u003cdiv class=\"ap-compliance-list-title\"\u003e\u003cstrong\u003eContinual Accessibility Improvement:\u003c\/strong\u003e\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list\"\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eOngoing Efforts:\u003c\/strong\u003e We continuously enhance accessibility. \u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eGoal:\u003c\/strong\u003e Achieve maximum accessibility with evolving technology.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e• \u003cstrong\u003eContact Us:\u003c\/strong\u003e Reach out via the website’s contact form for queries or concerns.\u003c\/div\u003e\u003c\/div\u003e \u003c\/div\u003e","statement_action":"popup","statement_redirect_url":"","statement_redirect_page_id":""};
5762  window.accessProCurrentPage = {
5763    pageType: "cart",
5764    path: "\/cart"
5765  };
5766</script>
5766
5767
5768<style>
5769    
5770
5771  .asw-widget-button-top {
5772     position: absolute !important;
5773     top: 10px !important;
5774     left: 10px !important;
5775     background-color: #000 !important;
5776     color: #fff !important;
5777     text-decoration: none !important;
5778     overflow: hidden;
5779     width: 1px !important;
5780     height: 1px !important;
5781     margin: -1px !important;
5782     padding: 0 !important;
5783     border: 0 !important;
5784     clip: rect(0 0 0 0) !important;
5785     word-wrap: normal !important;
5786  }
5787    .asw-widget-button-top-focused,
5788    .asw-widget-button-top:focus {
5789      z-index: 9999 !important;
5790      overflow: auto !important;
5791      width: auto !important;
5792      height: auto !important;
5793      clip: auto !important;
5794      padding: 10px 15px !important;
5795    }
5796
5797    #acp-virtualKeyboardPopup {
5798      position: fixed;
5799      bottom: 80px;
5800      left: 50%;
5801      transform: translateX(-50%);
5802      background: #ffffff !important;
5803      border: 1px solid #ccc;
5804      padding: 8px;
5805      box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2);
5806      z-index: 9999;
5807      display: none;
5808      width: 90%;
5809      max-width: 600px;
5810      border-radius: 10px;
5811    }
5812
5813    #acp-virtual-input {
5814      width: 100%;
5815      padding: 10px;
5816      font-size: 16px;
5817      margin-bottom: 10px;
5818    }
5819
5820    #acp-closeKeyboardBtn {
5821      color: #fff;
5822      border: none;
5823      padding: 1px 3px;
5824      cursor: pointer;
5825      float: right;
5826      border-radius: 4px;
5827      margin-bottom: 5px;
5828    }
5829    #acp-definition-popup {
5830      position: absolute;
5831      display: none;
5832      padding: 10px;
5833      background: white;
5834      border: 1px solid #ccc;
5835      z-index: 1000;
5836      border-radius: 14px;
5837    }
5838</style>
5839
5840<div id="acp-icon"></div>
5841<div id="acp-widget"></div>
5842
5843<!-- Virtual Keyboard Input and Keyboard -->
5844<div
5845  id="acp-definition-popup"
5846></div>
5847<div
5848  id="acp-dictionary-toast"
5849  class="asw-text-speech-bar"
5850  style="display: none;"
5851  data-ap-translate="DICTIONARY DESC"
5852>
5853  Double click on a word to see the definition.
5854</div>
5855<div id="acp-virtualKeyboardPopup" role="dialog" aria-modal="true" aria-label="Virtual keyboard popup">
5856  <button id="acp-closeKeyboardBtn" aria-label="Close virtual keyboard">
5857    <svg
5858      xmlns="http://www.w3.org/2000/svg"
5859      width="24"
5860      height="24"
5861      viewBox="0 0 24 24"
5862      fill="none"
5863    >
5864      <path
5865        d="M18 6L6 18"
5866        stroke="black"
5867        strokeWidth="2"
5868        strokeLinecap="round"
5869        strokeLinejoin="round"
5870      />
5871      <path
5872        d="M6 6L18 18"
5873        stroke="black"
5874        strokeWidth="2"
5875        strokeLinecap="round"
5876        strokeLinejoin="round"
5877      />
5878    </svg>
5879  </button>
5880  
5881  <div id="acp-virtual-keyboard" class="simple-keyboard"></div>
5882  
5882<script>
5883    function makeDraggableVirtualKeyboard(el) {
5884      let pos1 = 0,
5885        pos2 = 0,
5886        pos3 = 0,
5887        pos4 = 0;
5888
5889      el.onmousedown = dragMouseDown;
5890
5891      function dragMouseDown(e) {
5892        e.preventDefault();
5893        pos3 = e.clientX;
5894        pos4 = e.clientY;
5895        document.onmouseup = closeDragElement;
5896        document.onmousemove = elementDrag;
5897      }
5898
5899      function elementDrag(e) {
5900        e.preventDefault();
5901        pos1 = pos3 - e.clientX;
5902        pos2 = pos4 - e.clientY;
5903        pos3 = e.clientX;
5904        pos4 = e.clientY;
5905        el.style.top = el.offsetTop - pos2 + 'px';
5906        el.style.left = el.offsetLeft - pos1 + 'px';
5907        el.style.bottom = 'unset';
5908        el.style.right = 'unset';
5909      }
5910
5911      function closeDragElement() {
5912        document.onmouseup = null;
5913        document.onmousemove = null;
5914      }
5915    }
5916
5917    makeDraggableVirtualKeyboard(document.getElementById('acp-virtualKeyboardPopup'));
5918  </script>
5918
5919</div>
5920<script>
5921  // App Procxy Handle
5922  
5923  window.accessProProxyHandle = '/apps/access-pro';
5924  
5925
5926  // URLs
5927  window.accessProSettingsUrl = `${window.accessProProxyHandle}/theme/settings/`;
5928  window.accessProPageViewsCountUrl = `${window.accessProProxyHandle}/theme/views/update/count`;
5929  
5930
5931  // Translation URL
5932  var shopify_domain = `foxfirelites.myshopify.com`;
5933  window.accessProTranslationUrl = `https://access-pro-api.entanglecommerce.com/api/v1/language/translate/?domain=${shopify_domain}`;
5934  window.pageViewsCountURL = `${window.accessProProxyHandle}/theme/views/update/count`;
5935</script>
5935
5936
5937<script src="https://cdn.shopify.com/extensions/01a1115f-a4db-79a9-998b-83572f4594c6/access-pro-2-247/assets/main.js" defer></script>
vendor: 1 bytes, line 5937
5937
5938<script>
5939  (function () {
5940    var params = new URLSearchParams(window.location.search);
5941    var token = params.get('acp_scan');
5942    if (!token) return;
5943
5944    function showScanOverlay(message) {
5945      var el = document.getElementById('acp-scan-overlay');
5946      if (!el) {
5947        el = document.createElement('div');
5948        el.id = 'acp-scan-overlay';
5949        el.style.cssText =
5950          'position:fixed;inset:0;background:rgba(255,255,255,0.94);z-index:2147483647;display:flex;align-items:center;justify-content:center;font-family:system-ui,-apple-system,sans-serif;';
5951        el.innerHTML =
5952          '<div style="text-align:center;max-width:320px;padding:24px">' +
5953          '<p style="font-size:18px;font-weight:600;margin:0 0 8px;color:#111">Scanning for accessibility</p>' +
5954          '<p id="acp-scan-overlay-status" style="font-size:14px;color:#666;margin:0"></p>' +
5955          '</div>';
5956        document.body.appendChild(el);
5957      }
5958      var status = document.getElementById('acp-scan-overlay-status');
5959      if (status) status.textContent = message || 'Please wait…';
5960    }
5961
5962    showScanOverlay('Preparing accessibility scan…');
5963
5964    function hideOverlay() {
5965      var el = document.getElementById('acp-scan-overlay');
5966      if (el) el.style.display = 'none';
5967    }
5968
5969    function pageIsThemePreview() {
5970      try {
5971        return Boolean(new URLSearchParams(window.location.search).get('preview_theme_id'));
5972      } catch (e) {
5973        return false;
5974      }
5975    }
5976
5977    // Shopify stores the unpublished theme in a storefront cookie. Clear it
5978    // here so the scan window never has to navigate to the live theme.
5979    var previewExitPromise = null;
5980    function exitThemePreviewQuietly() {
5981      if (!pageIsThemePreview()) return Promise.resolve();
5982      if (previewExitPromise) return previewExitPromise;
5983      previewExitPromise = new Promise(function (resolve) {
5984        var settled = false;
5985        function finish() {
5986          if (settled) return;
5987          settled = true;
5988          resolve();
5989        }
5990        setTimeout(finish, 2000);
5991        try {
5992          var frame = document.createElement('iframe');
5993          frame.setAttribute('aria-hidden', 'true');
5994          frame.title = '';
5995          frame.style.cssText =
5996            'position:absolute;width:0;height:0;border:0;visibility:hidden';
5997          frame.src = window.location.origin + '/?exitPreview=1';
5998          (document.body || document.documentElement).appendChild(frame);
5999        } catch (e) {}
6000        try {
6001          fetch(window.location.origin + '/?exitPreview=1', {
6002            credentials: 'include',
6003            cache: 'no-store',
6004            redirect: 'follow',
6005          }).catch(function () {});
6006        } catch (e) {}
6007      });
6008      return previewExitPromise;
6009    }
6010
6011    window.addEventListener('message', function (event) {
6012      if (event.source !== window.opener) return;
6013      var data = event.data;
6014      if (!data || data.type !== 'accesspro-exit-preview') return;
6015      exitThemePreviewQuietly().then(function () {
6016        if (window.opener) {
6017          window.opener.postMessage({ type: 'accesspro-preview-exited' }, '*');
6018        }
6019      });
6020    });
6021
6022    function submitScanResult(payload) {
6023      var params = new URLSearchParams(window.location.search);
6024      var jobId = params.get('acp_job');
6025      if (!jobId) {
6026        return;
6027      }
6028
6029      var pageUrl = window.location.origin + window.location.pathname;
6030      fetch(window.accessProProxyHandle + '/theme/accessibility-scan/complete', {
6031        method: 'POST',
6032        headers: { 'Content-Type': 'application/json' },
6033        body: JSON.stringify({
6034          jobId: jobId,
6035          scanToken: token,
6036          url: pageUrl,
6037          axeResults: payload.results || null,
6038          error:
6039            payload.type === 'accesspro-axe-scan-error'
6040              ? payload.message || 'Accessibility scan failed'
6041              : null,
6042        }),
6043      })
6044        .then(function (response) {
6045          return response.json().catch(function () {
6046            return {};
6047          });
6048        })
6049        .then(function (data) {
6050          if (window.opener) {
6051            var isFinal = data.reportId != null;
6052            var hasError = !data.success;
6053            var isNextScanPage = false;
6054            if (data.redirectUrl) {
6055              try {
6056                isNextScanPage = new URL(data.redirectUrl).searchParams.has('acp_scan');
6057              } catch (e) {}
6058            }
6059            var continuing = isNextScanPage && data.redirectUrl && !isFinal && !hasError;
6060
6061            function deliver() {
6062              window.opener.postMessage(
6063                {
6064                  type: 'accesspro-axe-scan-progress',
6065                  jobId: jobId,
6066                  redirectUrl: data.redirectUrl || null,
6067                  reportId: data.reportId != null ? data.reportId : null,
6068                  error: data.success ? null : (data.message || 'Scan failed'),
6069                },
6070                '*',
6071              );
6072
6073              if (isFinal) {
6074                showScanOverlay('Returning to your audit report…');
6075                return;
6076              }
6077
6078              if (continuing) {
6079                showScanOverlay('Scanning next page…');
6080                window.location.href = data.redirectUrl;
6081                return;
6082              }
6083
6084              setTimeout(function () {
6085                window.close();
6086              }, 400);
6087            }
6088
6089            if (pageIsThemePreview() && !continuing) {
6090              if (isFinal) showScanOverlay('Returning to your audit report…');
6091              exitThemePreviewQuietly().then(deliver);
6092              return;
6093            }
6094
6095            deliver();
6096            return;
6097          }
6098          if (data.redirectUrl) {
6099            showScanOverlay('Returning to your audit report…');
6100            window.location.href = data.redirectUrl;
6101            return;
6102          }
6103          showScanOverlay(data.message || 'Scan failed');
6104          if (window.opener) {
6105            window.opener.postMessage(
6106              {
6107                type: 'accesspro-axe-scan-progress',
6108                jobId: jobId,
6109                error: data.message || 'Scan failed',
6110              },
6111              '*',
6112            );
6113          }
6114        })
6115        .catch(function (err) {
6116          var message =
6117            (err && err.message) || 'Scan failed';
6118          showScanOverlay(message);
6119          function deliver() {
6120            if (!window.opener) return;
6121            var jobIdErr = new URLSearchParams(window.location.search).get('acp_job');
6122            window.opener.postMessage(
6123              {
6124                type: 'accesspro-axe-scan-progress',
6125                jobId: jobIdErr,
6126                error: message,
6127              },
6128              '*',
6129            );
6130          }
6131          if (pageIsThemePreview()) {
6132            exitThemePreviewQuietly().then(deliver);
6133            return;
6134          }
6135          deliver();
6136        });
6137    }
6138
6139    function waitForFullPageLoad() {
6140      return new Promise(function (resolve) {
6141        function settle() {
6142          // Extended settle time for dynamic content, carousels, lazy sections
6143          // Wait for network idle + animations + JS state changes
6144          setTimeout(function() {
6145            // Wait for any lazy images to finish loading
6146            var images = Array.prototype.slice.call(document.querySelectorAll('img[loading="lazy"]'));
6147            var pendingImages = images.filter(function(img) {
6148              return !img.complete;
6149            });
6150            
6151            if (pendingImages.length > 0) {
6152              var loaded = 0;
6153              var timeout = setTimeout(function() {
6154                resolve(); // Don't wait forever
6155              }, 2000);
6156              
6157              pendingImages.forEach(function(img) {
6158                function handleLoad() {
6159                  loaded++;
6160                  if (loaded >= pendingImages.length) {
6161                    clearTimeout(timeout);
6162                    // Additional wait for any pending RAF or microtasks
6163                    requestAnimationFrame(function() {
6164                      setTimeout(resolve, 100);
6165                    });
6166                  }
6167                }
6168                img.addEventListener('load', handleLoad, { once: true });
6169                img.addEventListener('error', handleLoad, { once: true });
6170              });
6171            } else {
6172              // Additional wait for any pending RAF or microtasks
6173              requestAnimationFrame(function() {
6174                setTimeout(resolve, 100);
6175              });
6176            }
6177          }, 3000);
6178        }
6179        if (document.readyState === 'complete') {
6180          settle();
6181          return;
6182        }
6183        window.addEventListener('load', settle, { once: true });
6184      });
6185    }
6186
6187    // Port of accessibility-scanner Phase 3 WCAG 2.2 / APG checks (browser-side).
6188    // Findings are merged into axe violations/incomplete so the existing pipeline needs no changes.
6189    function isAccessProScanElement(el) {
6190      if (!el || !el.closest) return false;
6191      return !!(
6192        el.closest('#acp-icon') ||
6193        el.closest('#acp-widget') ||
6194        el.closest('#acp-virtualKeyboardPopup') ||
6195        el.closest('#acp-definition-popup') ||
6196        el.closest('#acp-dictionary-toast') ||
6197        el.closest('#acp-scan-overlay') ||
6198        el.closest('[id^="acp-"]') ||
6199        el.closest('.asw-widget-button-top')
6200      );
6201    }
6202    
6203    // Enhanced element visibility check including all CSS hiding techniques
6204    function isElementVisible(el) {
6205      if (!el || !el.getBoundingClientRect) return false;
6206      var style = window.getComputedStyle(el);
6207      if (style.display === 'none' || style.visibility === 'hidden') return false;
6208      if (style.opacity === '0') return false;
6209      if (style.position === 'absolute' && style.clip === 'rect(0px, 0px, 0px, 0px)') return false;
6210      if (style.width === '1px' && style.height === '1px' && style.overflow === 'hidden') return false;
6211      var rect = el.getBoundingClientRect();
6212      if (rect.width === 0 || rect.height === 0) return false;
6213      return true;
6214    }
6215
6216    function runWcag22Checks() {
6217      var violations = [];
6218      var incomplete = [];
6219
6220      try {
6221        // WCAG 2.4.11 Focus Not Obscured — sticky/fixed heuristic (manual review)
6222        var stickyElements = Array.prototype.slice
6223          .call(document.querySelectorAll('*'))
6224          .filter(function (el) {
6225            if (isAccessProScanElement(el)) return false;
6226            if (!isElementVisible(el)) return false;
6227            var style = getComputedStyle(el);
6228            return (
6229              (style.position === 'sticky' || style.position === 'fixed') &&
6230              el.getBoundingClientRect().height > 40
6231            );
6232          })
6233          .slice(0, 5)
6234          .map(function (el) {
6235            var style = getComputedStyle(el);
6236            return {
6237              tag: el.tagName.toLowerCase(),
6238              id: el.id || null,
6239              height: Math.round(el.getBoundingClientRect().height),
6240              position: style.position,
6241            };
6242          });
6243
6244        if (stickyElements.length > 0) {
6245          incomplete.push({
6246            id: 'focus-not-obscured',
6247            impact: 'serious',
6248            tags: ['wcag22aa', 'wcag2411'],
6249            description:
6250              'WCAG 2.4.11: Focused elements must not be entirely obscured. Fixed/sticky elements detected — manual keyboard testing required.',
6251            helpUrl:
6252              'https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html',
6253            nodes: stickyElements.map(function (e) {
6254              return {
6255                html:
6256                  '<' +
6257                  e.tag +
6258                  (e.id ? ' id="' + e.id + '"' : '') +
6259                  '> (' +
6260                  e.position +
6261                  ', ' +
6262                  e.height +
6263                  'px tall)',
6264                target: [e.tag + (e.id ? '#' + e.id : '')],
6265                failureSummary:
6266                  'Fixed/sticky element may obscure focused components. Verify with keyboard navigation.',
6267              };
6268            }),
6269          });
6270        }
6271        
6272        // NEW: aria-hidden-focus check - elements with aria-hidden="true" that are focusable
6273        var hiddenFocusable = [];
6274        document.querySelectorAll('[aria-hidden="true"]').forEach(function(el) {
6275          if (isAccessProScanElement(el)) return;
6276          // Check if this element or any descendant is focusable
6277          var focusableSelectors = 'a[href], button, input, select, textarea, [tabindex]:not
6277([tabindex="-1"])';
6278          var focusables = el.matches(focusableSelectors) ? [el] : Array.prototype.slice.call(el.querySelectorAll(focusableSelectors));
6279          focusables.forEach(function(focusEl) {
6280            if (isElementVisible(focusEl) && focusEl.tabIndex >= 0) {
6281              hiddenFocusable.push({
6282                html: focusEl.outerHTML.slice(0, 500),
6283                selector: buildScanSelector(focusEl),
6284                parentHiddenHtml: el.outerHTML.slice(0, 200)
6285              });
6286            }
6287          });
6288        });
6289        
6290        if (hiddenFocusable.length > 0) {
6291          violations.push({
6292            id: 'aria-hidden-focus',
6293            impact: 'serious',
6294            tags: ['wcag2aa', 'wcag412'],
6295            description: 'WCAG 4.1.2: Focusable elements must not be hidden with aria-hidden="true"',
6296            helpUrl: 'https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html',
6297            nodes: hiddenFocusable.slice(0, 10).map(function(item) {
6298              return {
6299                html: item.html,
6300                target: [item.selector],
6301                failureSummary: 'Focusable element is inside aria-hidden="true" container'
6302              };
6303            })
6304          });
6305        }
6306
6307        // WCAG 2.5.3 Label in Name - Enhanced with better visible text extraction
6308        // Visible text = text rendered on screen (excludes aria-hidden, sr-only, SVG internals).
6309        function getVisibleText(el) {
6310          var text = '';
6311          for (var i = 0; i < el.childNodes.length; i++) {
6312            var child = el.childNodes[i];
6313            if (child.nodeType === 3) { text += child.textContent; continue; }
6314            if (child.nodeType !== 1) continue;
6315            if (child.getAttribute('aria-hidden') === 'true') continue;
6316            var st = window.getComputedStyle(child);
6317            if (st.display === 'none' || st.visibility === 'hidden') continue;
6318            if (st.opacity === '0') continue;
6319            if (st.position === 'absolute') {
6320              var clip = st.clip;
6321              if (clip === 'rect(0px, 0px, 0px, 0px)' || clip === 'rect(0, 0, 0, 0)') continue;
6322            }
6323            if (st.width === '1px' && st.height === '1px' && st.overflow === 'hidden') continue;
6324            if (st.fontSize === '0px' || st.width === '0px' || st.height === '0px') continue;
6325            text += getVisibleText(child);
6326          }
6327          return text;
6328        }
6329        function buildScanSelector(el) {
6330          if (el.id) return '#' + CSS.escape(el.id);
6331          var testId = el.getAttribute('data-testid') || el.getAttribute('data-test-id');
6332          if (testId) return '[data-testid="' + testId + '"]';
6333          var tag = el.tagName.toLowerCase();
6334          var cls = (el.getAttribute('class') || '').split(/\s+/).filter(function (c) {
6335            return c && c.length < 60 && !/^(active|is-|js-|open|hidden|focus|hover)/i.test(c);
6336          }).slice(0, 3);
6337          return cls.length ? tag + '.' + cls.join('.') : tag;
6338        }
6339        
6340        // Enhanced selector to catch more interactive elements
6341        var interactiveSelector = 'button, [role="button"], a[aria-label], [role="link"][aria-label], ' +
6342          '[role="menuitem"][aria-label], [role="tab"][aria-label], [role="checkbox"][aria-label], ' +
6343          '[role="radio"][aria-label], [role="switch"][aria-label], [role="combobox"][aria-label], ' +
6344          '[role="searchbox"][aria-label], [role="textbox"][aria-label]';
6345          
6346        var mismatches = Array.prototype.slice
6347          .call(document.querySelectorAll(interactiveSelector))
6348          .filter(function (el) {
6349            return !isAccessProScanElement(el) && isElementVisible(el);
6350          })
6351          .map(function (el) {
6352            var ariaLabel = el.getAttribute('aria-label') || '';
6353            var visibleText = getVisibleText(el).replace(/\s+/g, ' ').trim();
6354            if (!ariaLabel || !visibleText) return null;
6355            if (visibleText.length <= 1) return null;
6356            
6357            // Normalize for comparison - remove punctuation and make case-insensitive
6358            var normalizedLabel = ariaLabel.toLowerCase().replace(/[^\w\s]/g, '');
6359            var normalizedVisible = visibleText.toLowerCase().replace(/[^\w\s]/g, '');
6360            
6361            // Check if visible text is substring of aria-label
6362            if (normalizedLabel.includes(normalizedVisible)) return null;
6363            
6364            // Check word-by-word containment for multi-word labels
6365            var visibleWords = normalizedVisible.split(/\s+/).filter(Boolean);
6366            if (visibleWords.length > 0) {
6367              var allWordsPresent = visibleWords.every(function(word) {
6368                return normalizedLabel.includes(word);
6369              });
6370              if (allWordsPresent) return null;
6371            }
6372            
6373            return {
6374              html: el.outerHTML.slice(0, 500),
6375              selector: buildScanSelector(el),
6376              ariaLabel: ariaLabel,
6377              visibleText: visibleText,
6378            };
6379          })
6380          .filter(Boolean)
6381          .slice(0, 10);
6382
6383        if (mismatches.length > 0) {
6384          violations.push({
6385            id: 'label-in-name',
6386            impact: 'serious',
6387            tags: ['wcag21a', 'wcag253'],
6388            description: 'WCAG 2.5.3: Accessible name must contain visible label text',
6389            helpUrl: 'https://www.w3.org/WAI/WCAG22/Understanding/label-in-name.html',
6390            nodes: mismatches.map(function (m) {
6391              return {
6392                html: m.html,
6393                target: [m.selector],
6394                failureSummary:
6395                  'aria-label="' +
6396                  m.ariaLabel +
6397                  '" does not contain visible text "' +
6398                  m.visibleText +
6399                  '"',
6400              };
6401            }),
6402          });
6403        }
6404
6405        // 2.5.7 Dragging Movements
6406        var draggableElements = Array.prototype.slice
6407          .call(
6408            document.querySelectorAll(
6409              '[draggable="true"], [data-sortable], .sortable-item',
6410            ),
6411          )
6412          .filter(function (el) {
6413            return !isAccessProScanElement(el);
6414          })
6415          .slice(0, 5)
6416          .map(function (el) {
6417            return {
6418              html: el.outerHTML.slice(0, 500),
6419              selector: buildScanSelector(el),
6420            };
6421          });
6422
6423        if (draggableElements.length > 0) {
6424          incomplete.push({
6425            id: 'dragging-movements',
6426            impact: 'serious',
6427            tags: ['wcag22aa', 'wcag257'],
6428            description:
6429              'WCAG 2.5.7: Draggable elements must have a single-pointer alternative. Manual verification required.',
6430            helpUrl: 'https://www.w3.org/WAI/WCAG22/Understanding/dragging-movements.html',
6431            nodes: draggableElements.map(function (e) {
6432              return {
6433                html: e.html,
6434                target: [e.selector],
6435                failureSummary:
6436                  'Verify that a keyboard or single-pointer alternative exists for this drag operation.',
6437              };
6438            }),
6439          });
6440        }
6441
6442        // ARIA APG: Dialog Pattern
6443        var badDialogs = Array.prototype.slice
6444          .call(document.querySelectorAll('[role="dialog"], [role="alertdialog"]'))
6445          .filter(function (el) {
6446            if (isAccessProScanElement(el)) return false;
6447            return !(
6448              el.hasAttribute('aria-labelledby') || el.hasAttribute('aria-label')
6449            );
6450          })
6451          .slice(0, 5)
6452          .map(function (el) {
6453            return {
6454              html: el.outerHTML.slice(0, 500),
6455              selector: buildScanSelector(el),
6456            };
6457          });
6458
6459        if (badDialogs.length > 0) {
6460          violations.push({
6461            id: 'dialog-missing-label',
6462            impact: 'serious',
6463            tags: ['aria-apg', 'wcag2aa'],
6464            description:
6465              'ARIA APG Dialog Pattern: role="dialog" must have aria-labelledby or aria-label',
6466            helpUrl: 'https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/',
6467            nodes: badDialogs.map(function (d) {
6468              return {
6469                html: d.html,
6470                target: [d.selector],
6471                failureSummary:
6472                  'Add aria-labelledby pointing to a visible dialog title, or aria-label.',
6473              };
6474            }),
6475          });
6476        }
6477
6478        // ARIA APG: Tabs Pattern — tabs must have aria-selected (true on active, false on others
6478)
6479        var badTabs = [];
6480        Array.prototype.slice
6481          .call(document.querySelectorAll('[role="tablist"]'))
6482          .forEach(function (tabList) {
6483            if (isAccessProScanElement(tabList)) return;
6484            var tabs = Array.prototype.slice.call(tabList.querySelectorAll('[role="tab"]'));
6485            var hasAnySelected = tabs.some(function (t) { return t.getAttribute('aria-selected') === 'true'; });
6486            tabs.forEach(function (tab) {
6487                if (isAccessProScanElement(tab)) return;
6488                if (!tab.hasAttribute('aria-selected')) {
6489                  // Detect if this tab appears active (has aria-current, class "active", etc.)
6490                  var looksActive = !hasAnySelected && tab.classList.contains('active');
6491                  badTabs.push({
6492                    html: tab.outerHTML.slice(0, 500),
6493                    selector: buildScanSelector(tab),
6494                    suggestValue: looksActive ? 'true' : 'false',
6495                  });
6496                }
6497              });
6498          });
6499        badTabs = badTabs.slice(0, 5);
6500
6501        if (badTabs.length > 0) {
6502          violations.push({
6503            id: 'tabs-missing-aria-selected',
6504            impact: 'serious',
6505            tags: ['aria-apg', 'wcag2aa'],
6506            description:
6507              'ARIA APG Tabs Pattern: each [role="tab"] must have aria-selected="true" or aria-selected="false"',
6508            helpUrl: 'https://www.w3.org/WAI/ARIA/apg/patterns/tabs/',
6509            nodes: badTabs.map(function (t) {
6510              return {
6511                html: t.html,
6512                target: [t.selector],
6513                failureSummary:
6514                  'Tab missing aria-selected. Suggested value: aria-selected="' + (t.suggestValue || 'false') + '"',
6515              };
6516            }),
6517          });
6518        }
6519      } catch (err) {
6520        console.warn(
6521          '[AccessPro][AxeScan][storefront] WCAG 2.2 checks error',
6522          err && err.message ? err.message : err,
6523        );
6524      }
6525
6526      return { violations: violations, incomplete: incomplete };
6527    }
6528
6529    function runAxeScan() {
6530      if (!window.axe) {
6531        showScanOverlay('Scan failed: axe-core not loaded');
6532        notifyScanOpener({
6533          type: 'accesspro-axe-scan-error',
6534          token: token,
6535          message: 'axe-core failed to load',
6536        });
6537        return;
6538      }
6539      
6540      // CRITICAL: Hide overlay before scan to prevent interference with color-contrast/visibility checks
6541      hideOverlay();
6542      
6543      // Run axe WITHOUT overlay visible to get accurate color contrast and visibility results
6544      window.axe
6545        .run(document, {
6546          runOnly: {
6547            type: 'tag',
6548            values: ['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'],
6549          },
6550          exclude: [
6551            ['#acp-icon'],
6552            ['#acp-widget'],
6553            ['#acp-virtualKeyboardPopup'],
6554            ['#acp-definition-popup'],
6555            ['#acp-dictionary-toast'],
6556            ['#acp-scan-overlay'],
6557            ['.asw-widget-button-top'],
6558          ],
6559        })
6560        .then(function (results) {
6561          // Now safe to show overlay after scan completes
6562          showScanOverlay('Processing scan results…');
6563          var extra = runWcag22Checks();
6564          if (!results.violations) results.violations = [];
6565          if (!results.incomplete) results.incomplete = [];
6566          // Scanner stores customChecks separately; merge into axe arrays so
6567          // buildAxeScanSummary (customChecks: []) still surfaces them.
6568          results.violations = results.violations.concat(extra.violations || []);
6569          results.incomplete = results.incomplete.concat(extra.incomplete || []);
6570
6571          // List rule only: axe often stores just the opening <ul> tag.
6572          // Re-serialize with direct children so the report/AI Fixes show the real issue.
6573          enrichListViolationNodes(results);
6574
6575          notifyScanOpener({
6576            type: 'accesspro-axe-scan',
6577            token: token,
6578            url: window.location.href,
6579            results: results,
6580          });
6581        })
6582        .catch(function (err) {
6583          showScanOverlay('Scan failed');
6584          notifyScanOpener({
6585            type: 'accesspro-axe-scan-error',
6586            token: token,
6587            message: err && err.message ? err.message : 'Accessibility scan failed',
6588          });
6589        });
6590    }
6591
6592    /**
6593     * Optimize axe `list` node payloads only (no other rules).
6594     * Horizon overflow-list / ul[part=list] failures need children in HTML
6595     * so merchants see role=presentation / non-li children clearly.
6596     */
6597    function enrichListViolationNodes(results) {
6598      var violations = results && results.violations;
6599      if (!violations || !violations.length) return;
6600
6601      function queryInRoot(root, sel) {
6602        if (!root || !sel) return null;
6603        try {
6604          return root.querySelector(sel);
6605        } catch (e) {
6606          return null;
6607        }
6608      }
6609
6610      function resolveShadowPath(path) {
6611        if (!path) return null;
6612        if (typeof path === 'string') {
6613          return (
6614            queryInRoot(document, path) ||
6615            queryDeepAll(path)[0] ||
6616            null
6617          );
6618        }
6619        if (!Array.isArray(path) || !path.length) return null;
6620
6621        // Nested shadow path: ["host", "inner"] or [["host", "inner"]]
6622        var steps = path;
6623        if (steps.length === 1 && Array.isArray(steps[0])) {
6624          steps = steps[0];
6625        }
6626
6627        var ctx = document;
6628        var el = null;
6629        for (var i = 0; i < steps.length; i++) {
6630          var step = steps[i];
6631          if (Array.isArray(step)) {
6632            el = resolveShadowPath(step);
6633          } else {
6634            el = queryInRoot(ctx, String(step));
6635            if (!el && ctx === document) {
6636              el = queryDeepAll(String(step))[0] || null;
6637            }
6638          }
6639          if (!el) return null;
6640          ctx = el.shadowRoot || el;
6641        }
6642        return el;
6643      }
6644
6645      function queryDeepAll(sel) {
6646        var out = [];
6647        function walk(root) {
6648          if (!root || !root.querySelectorAll) return;
6649          try {
6650            Array.prototype.push.apply(out, root.querySelectorAll(sel));
6651          } catch (e) {
6652            /* invalid selector */
6653          }
6654          var all = root.querySelectorAll ? root.querySelectorAll('*') : [];
6655          for (var i = 0; i < all.length; i++) {
6656            if (all[i].shadowRoot) walk(all[i].shadowRoot);
6657          }
6658        }
6659        walk(document);
6660        return out;
6661      }
6662
6663      function serializeChildSnippet(child) {
6664        if (!child || !child.tagName) return '';
6665        var tag = child.tagName.toLowerCase();
6666        var role = (child.getAttribute && child.getAttribute('role')) || '';
6667        var part = (child.getAttribute && child.getAttribute('part')) || '';
6668        var cls = (child.getAttribute && child.getAttribute('class')) || '';
6669        var open =
6670          '<' +
6671          tag +
6672          (role ? ' role="' + role + '"' : '') +
6673          (part ? ' part="' + part + '"' : '') +
6674          (cls
6675            ? ' class="' +
6676              String(cls)
6677                .trim()
6678                .split(/\s+/)
6679                .slice(0, 3)
6680                .join(' ') +
6681              '"'
6682            : '') +
6683          '>';
6684        var text = (child.textContent || '').replace(/\s+/g, ' ').trim().slice(0, 40);
6685        return open + (text ? text : '…') + '</' + tag + '>';
6686      }
6687
6688      function serializeListHtml(listEl) {
6689        if (!listEl || !listEl.tagName) return '';
6690        var tag = listEl.tagName.toLowerCase();
6691        if (tag !== 'ul' && tag !== 'ol') return '';
6692        var openMatch = String(listEl.outerHTML || '').match(/^<[^>]+>/);
6693        var openTag = openMatch ? openMatch[0] : '<' + tag + '>';
6694        var children = Array.prototype.slice.call(listEl.children || []).slice(0, 10);
6695        if (!children.length) return openTag;
6696        var lines = children.map(function (child) {
6697          return '  ' + serializeChildSnippet(child);
6698        });
6699        if ((listEl.children || []).length > 10) {
6700          lines.push('  <!-- … ' + (listEl.children.length - 10) + ' more -->');
6701        }
6702        return openTag + '\n' + lines.join('\n') + '\n</' + tag + '>';
6703      }
6704
6705      function findListFallback() {
6706        var candidates = queryDeepAll('ul[part="list"], overflow-list ul, ul, ol');
6707        var withBad = candidates.filter(function (listEl) {
6708          return Array.prototype.some.call(listEl.children || [], function (child) {
6709            var role = (child.getAttribute && child.getAttribute('role')) || '';
6710            var t = (child.tagName || '').toLowerCase();
6711            return (
6712              role === 'presentation' ||
6713              role === 'none' ||
6714              (t !== 'li' && t !== 'script' && t !== 'template' && t !== 'style')
6715            );
6716          });
6717        });
6718        return withBad.length === 1 ? withBad[0] : null;
6719      }
6720
6721      violations.forEach(function (v) {
6722        if (!v || v.id !== 'list') return;
6723        (v.nodes || []).forEach(function (node) {
6724          if (!node) return;
6725          var hintHtml = String(node.html || '');
6726          var el = resolveShadowPath(node.target);
6727
6728          // Flat axe targets like ["ul"] are too generic — prefer part=list from html hint.
6729          if (
6730            el &&
6731            /part\s*=\s*["']list["']/i.test(hintHtml) &&
6732            !(el.getAttribute && el.getAttribute('part') === 'list')
6733          ) {
6734            var partLists = queryDeepAll('ul[part="list"]');
6735            if (partLists.length === 1) el = partLists[0];
6736            else if (partLists.length > 1) {
6737              var badPart = partLists.filter(function (listEl) {
6738                return Array.prototype.some.call(listEl.children || [], function (child) {
6739                  var role = (child.getAttribute && child.getAttribute('role')) || '';
6740                  return role === 'presentation' || role === 'none';
6741                });
6742              });
6743              if (badPart.length === 1) el = badPart[0];
6744            }
6745          }
6746
6747          if (el && el.tagName) {
6748            var t = el.tagName.toLowerCase();
6749            if (t !== 'ul' && t !== 'ol' && el.closest) {
6750              el = el.closest('ul, ol') || el;
6751            }
6752          }
6753          if (!el || !el.tagName || !/^(UL|OL)$/.test(el.tagName)) {
6754            el = findListFallback();
6755          }
6756          if (!el) return;
6757
6758          var better = serializeListHtml(el);
6759          if (better && better.length > hintHtml.length) {
6760            node.html = better.slice(0, 2500);
6761          }
6762
6763          // Prefer a stable, actionable selector for Horizon chrome lists.
6764          if (el.getAttribute && el.getAttribute('part') === 'list') {
6765            node.target = ['ul[part="list"]'];
6766          }
6767        });
6768      });
6769    }
6770
6771    function notifyScanOpener(payload) {
6772      if (window.opener && payload.type === 'accesspro-axe-scan-error') {
6773        var jobId = new URLSearchParams(window.location.search).get('acp_job');
6774        showScanOverlay('Scan failed');
6775        window.opener.postMessage(
6776          {
6777            type: 'accesspro-axe-scan-progress',
6778            jobId: jobId,
6779            error: payload.message || 'Accessibility scan failed',
6780          },
6781          '*',
6782        );
6783        setTimeout(function () {
6784          window.close();
6785        }, 400);
6786        return;
6787      }
6788      submitScanResult(payload);
6789    }
6790
6791    var script = document.createElement('script');
6792    // cdnjs only goes up to 4.10.3; jsDelivr serves 4.11.1 (matches accessibility-scanner).
6793    script.src = 'https://cdn.jsdelivr.net/npm/[email protected]/axe.min.js';
6794    script.onload = function () {
6795      waitForFullPageLoad().then(runAxeScan);
6796    };
6797    script.onerror = function () {
6798      notifyScanOpener({
6799        type: 'accesspro-axe-scan-error',
6800        token: token,
6801        message: 'Failed to load axe-core',
6802      });
6803    };
6804    document.head.appendChild(script);
6805  })();
6806</script>
6806
6807
6808
6809<style>
6810  .accesspro-icon {
6811    display: inline-flex;
6812    flex-direction: column;
6813    align-items: center;
6814    gap: 4px;
6815    cursor: pointer;
6816    text-decoration: none;
6817    vertical-align: middle;
6818    color: var(--acp-trigger-color, #23185c);
6819  }
6820
6821  /* Icon-only triggers should not reserve a text line box. */
6822  .accesspro-icon[icon='true']:not(.acp-trigger--has-text) {
6823    line-height: 0;
6824  }
6825
6826  .accesspro-icon .asw-menu-btn-container {
6827    flex-shrink: 0;
6828  }
6829
6830  /* The cloned icon is inert; the host element is the control. */
6831  .accesspro-icon .asw-menu-btn-container,
6832  .accesspro-icon .asw-menu-btn {
6833    pointer-events: none;
6834  }
6835</style>
6836<script>
6837  (function () {
6838    var SELECTOR = '.accesspro-icon';
6839    var BOUND = 'acpTriggerBound';
6840    var FILLED = 'acpTriggerFilled';
6841    var settings = window.accessProWidgetSettings || {};
6842    var inlineMode = !!settings.hide_floating_icon;
6843    var fallbackReady = inlineMode;
6844    document.documentElement.style.setProperty(
6845      '--acp-trigger-color',
6846      settings.icon_color_fill || '#23185c'
6847    );
6848
6849    /* ---- open the widget ------------------------------------------------ */
6850    /* main.js is deferred, so iconInstance may not exist on an early click. */
6851    function openWidget(event) {
6852      if (event) event.preventDefault();
6853      if (window.iconInstance) {
6854        window.iconInstance.toggleWidget();
6855        return;
6856      }
6857      var waited = 0;
6858      var timer = setInterval(function () {
6859        if (window.iconInstance) {
6860          clearInterval(timer);
6861          window.iconInstance.toggleWidget();
6862        } else if ((waited += 100) >= 10000) {
6863          clearInterval(timer);
6864          console.error('[AccessPro] Widget did not load — cannot open menu.');
6865        }
6866      }, 100);
6867    }
6868
6869    /* ---- clone the floating icon ---------------------------------------- */
6870    function buildIcon() {
6871      var source = document.querySelector('#Access-Pro-Icon .asw-menu-btn-container');
6872      if (!source) return null;
6873
6874      var clone = source.cloneNode(true);
6875
6876      // Strip ids: the widget mutates apMenuIconStroke / apMenuIconFill by id
6877      // when contrast modes change, and duplicates would shadow the original.
6878      clone.removeAttribute('id');
6879      clone.querySelectorAll('[id]').forEach(function (node) {
6880        node.removeAttribute('id');
6881      });
6882
6883      // The dismiss "X" and loading dots belong to the floating icon only.
6884      clone.querySelectorAll('.asw-hide-widget-icon, .acp-floating-dots').forEach(function (node) {
6885        node.remove();
6886      });
6887
6888      // A <button> nested inside the merchant's <a>
6888 is invalid HTML. Swap it
6889      // for a <span> carrying the same classes so the widget CSS still applies.
6890      var button = clone.querySelector('.asw-menu-btn');
6891      if (button) {
6892        var span = document.createElement('span');
6893        span.className = button.className;
6894        span.setAttribute('style', button.getAttribute('style') || '');
6895        span.setAttribute('aria-hidden', 'true');
6896        while (button.firstChild) span.appendChild(button.firstChild);
6897        button.parentNode.replaceChild(span, button);
6898      }
6899
6900      return clone;
6901    }
6902
6903
6904    /* ---- fallback: build the icon from settings ------------------------- */
6905    /* Used when the floating icon is not in the DOM — the widget skips
6906       render() entirely if the visitor dismissed it, if a page/country filter
6907       bails out of init(), or if trigger display is set to title-only.
6908       Geometry below mirrors render() in main.js exactly. */
6909    var GLYPHS = {
6910      default: '<svg class="asw-main-icon" xmlns="http://www.w3.org/2000/svg" fill="#ffffff" style="height: 45%; width: 45%; fill: #ffffff" viewBox="0 0 512 512" aria-hidden="true" focusable="false"><path d="M256,112a56,56,0,1,1,56-56A56.06,56.06,0,0,1,256,112Z" /><path d="M432,112.8l-.45.12h0l-.42.13c-1,.28-2,.58-3,.89-18.61,5.46-108.93,30.92-172.56,30.92-59.13,0-141.28-22-167.56-29.47a73.79,73.79,0,0,0-8-2.58c-19-5-32,14.3-32,31.94,0,17.47,15.7,25.79,31.55,31.76v.28l95.22,29.74c9.73,3.73,12.33,7.54,13.6,10.84,4.13,10.59.83,31.56-.34,38.88l-5.8,45L150.05,477.44q-.15.72-.27,1.47l-.23,1.27h0c-2.32,16.15,9.54,31.82,32,31.82,19.6,0,28.25-13.53,32-31.94h0s28-157.57,42-157.57,42.84,157.57,42.84,157.57h0c3.75,18.41,12.4,31.94,32,31.94,22.52,0,34.38-15.74,32-31.94-.21-1.38-.46-2.74-.76-4.06L329,301.27l-5.79-45c-4.19-26.21-.82-34.87.32-36.9a1.09,1.09,0,0,0,.08-.15c1.08-2,6-6.48,17.48-10.79l89.28-31.21a16.9,16.9,0,0,0,1.62-.52c16-6,32-14.3,32-31.93S451,107.81,432,112.8Z" /></svg>',
6911      wheelchair: '<svg class="asw-main-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 960" fill="#ffffff" aria-hidden="true" focusable="false"> <path d="M480 240q-33 0-56.5-23.5T400 160q0-33 23.5-56.5T480 80q33 0 56.5 23.5T560 160q0 33-23.5 56.5T480 240ZM680 880V680H480q-33 0-56.5-23.5T400 600V360q0-33 23.5-56.5T480 280q24 0 41.5 10.5T559 324q55 66 99.5 90.5T760 480v80q-53 0-107-23t-93-55v138h120q33 0 56.5 23.5T760 680v220h-80ZM400 880q-83 0-141.5-58.5T200 680q0-72 45.5-127T360 484v82q-35 14-57.5 44.5T280 680q0 50 35 85t85 35q39 0 69.5-22.5T514 720h82q-14 69-69 114.5T400 880Z" /> </svg>',
6912      blind: '<svg class="asw-main-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" fill="#ffffff" style="fill: #ffffff" aria-hidden="true" focusable="false"> <path d="m240-60-64-48 104-139v-213q0-31 5.5-68.5T300-596l-60 34v142h-80v-188l216-123q8-5 17-7t19-2q24 0 44 12t30 33l31 67q20 44 61 66t102 22v80h-39L860-78l-35 20-237-413q-40-13-72.5-37.5T460-568q-10 29-15.5 66.5T441-432l79 112v260h-80v-200l-71-102-9 142L240-60Zm220-700q-33 0-56.5-23.5T380-840q0-33 23.5-56.5T460-920q33 0 56.5 23.5T540-840q0 33-23.5 56.5T460-760Z" /> </svg>',
6913      eye: '<svg class="asw-main-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" fill="#ffffff" style="fill: #ffffff" aria-hidden="true" focusable="false"><path d="m644-428-58-58q9-47-27-88t-93-32l-58-58q17-8 34.5-12t37.5-4q75 0 127.5 52.5T660-500q0 20-4 37.5T644-428Zm128 126-58-56q38-29 67.5-63.5T832-500q-50-101-143.5-160.5T480-720q-29 0-57 4t-55 12l-62-62q41-17 84-25.5t90-8.5q151 0 269 83.5T920-500q-23 59-60.5 109.5T772-302Zm20 246L624-222q-35 11-70.5 16.5T480-200q-151 0-269-83.5T40-500q21-53 53-98.5t73-81.5L56-792l56-56 736 736-56 56ZM222-624q-29 26-53 57t-41 67q50 101 143.5 160.5T480-280q20 0 39-2.5t39-5.5l-36-38q-11 3-21 4.5t-21 1.5q-75 0-127.5-52.5T300-500q0-11 1.5-21t4.5-21l-84-82Zm319 93Zm-151 75Z" /></svg>',
6914      accStraight: '<svg class="asw-main-icon" xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" fill="#ffffff" style="fill: #ffffff" aria-hidden="true" focusable="false"><path d="M480-720q-33 0-56.5-23.5T400-800q0-33 23.5-56.5T480-880q33 0 56.5 23.5T560-800q0 33-23.5 56.5T480-720ZM360-80v-520H120v-80h720v80H600v520h-80v-240h-80v240h-80Z" /></svg>',
6915      settings: '<svg class="asw-main-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" fill="#ffffff" style="fill: #ffffff" aria-hidden="true" focusable="false">
6915<path d="m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z" /></svg>'
6916    };
6917
6918    var SIZES = {
6919      small: 40, '0.5x': 40,
6920      medium: 50, '1x': 50, default: 50,
6921      large: 60, '1.5x': 60,
6922      extraLarge: 75, '2x': 75
6923    };
6924
6925    function buildIconFromSettings() {
6926      var s = window.accessProWidgetSettings || {};
6927      var style = s.icon_style || 'thick';
6928      var square = s.icon_shape === 'square';
6929      // Defaults must match mergeSettings() in main.js and DEFAULT_SETTINGS in
6930      // app/constants/settings.js — both use #23185c for stroke AND fill — so a
6931      // metafield missing these keys renders identically on either path.
6932      var stroke = s.icon_color_stroke || '#23185c';
6933      var fill = s.icon_color_fill || '#23185c';
6934      var px = SIZES[s.icon_size] || 50;
6935      var solid = style === 'solid';
6936      var thin = style === 'thin';
6937      var shapes = '';
6938
6939      if (square) {
6940        var sizes = [
6941          [solid ? 100 : 98, stroke, 12],
6942          [solid ? 0 : thin ? 86 : 82, '#ffffff', 10],
6943          [solid || thin ? 80 : 70, fill, 8]
6944        ];
6945        sizes.forEach(function (d) {
6946          if (!d[0]) return;
6947          var off = (100 - d[0]) / 2;
6948          shapes += '<rect x="' + off + '" y="' + off + '" width="' + d[0] + '" height="' + d[0] +
6949            '" rx="' + d[2] + '" ry="' + d[2] + '" fill="' + d[1] + '" />';
6950        });
6951      } else {
6952        [
6953          [solid ? 50 : 49, stroke],
6954          [solid ? 0 : thin ? 43 : 41, '#ffffff'],
6955          [solid || thin ? 40 : 35, fill]
6956        ].forEach(function (d) {
6957          shapes += '<circle cx="50" cy="50" r="' + d[0] + '" fill="' + d[1] + '" />';
6958        });
6959      }
6960
6961      var name = GLYPHS[s.icon] ? s.icon : 'default';
6962      var box = document.createElement('div');
6963      box.className = 'asw-menu-btn-container';
6964      box.setAttribute('style', 'position:relative;width:' + px + 'px;height:' + px + 'px;');
6965      // The widget stylesheet may not be loaded when render() never ran, so
6966      // every layout-critical rule is inlined rather than left to the classes.
6967      box.innerHTML =
6968        '<span class="asw-menu-btn' + (square ? ' asw-menu-btn--square' : '') + '" aria-hidden="true"' +
6969        ' style="position:relative;display:flex;align-items:center;justify-content:center;' +
6970        'width:100%;height:100%;background:transparent;border:none;padding:0;margin:0;' +
6971        'border-radius:' + (square ? '12%' : '50%') + ';">' +
6972        '<svg class="asw-outer-svg" viewBox="0 0 100 100" aria-hidden="true" focusable="false"' +
6973        ' style="width:100%;height:100%;display:block;">' + shapes + '</svg>' +
6974        GLYPHS[name] + '</span>';
6975
6976      var glyph = box.querySelector('.asw-main-icon');
6977      if (glyph) {
6978        // .asw-main-icon sizes to 50% via CSS; the default glyph overrides to 45% inline.
6979        var pct = name === 'default' ? '45%' : '50%';
6980        glyph.setAttribute(
6981          'style',
6982          'position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);' +
6983          'width:' + pct + ';height:' + pct + ';fill:#ffffff;z-index:100;'
6984        );
6985      }
6986      return box;
6987    }
6988
6989    /* Name from the host only. Text inside aria-hidden (the cloned icon) does not count. */
6990    function triggerNeedsName(el) {
6991      if ((el.getAttribute('aria-label') || '').trim()) return false;
6992      if ((el.getAttribute('aria-labelledby') || '').trim()) return false;
6993      if ((el.getAttribute('title') || '').trim()) return false;
6994      var node = el.firstChild;
6995      while (node) {
6996        if (node.nodeType === 3) {
6997          if (node.textContent.trim()) return false;
6998        } else if (node.nodeType === 1 && node.getAttribute('aria-hidden') !== 'true') {
6999          if (!triggerNeedsName(node)) return false;
7000        }
7001        node = node.nextSibling;
7002      }
7003      return true;
7004    }
7005
7006    function ensureTriggerName(el) {
7007      if (triggerNeedsName(el)) {
7008        el.setAttribute('aria-label', 'Open Accessibility Menu');
7009      }
7010    }
7011
7012    /* ---- wire one element ----------------------------------------------- */
7013    function bind(el) {
7014      if (el.dataset[BOUND]) return;
7015      el.dataset[BOUND] = '1';
7016
7017      el.addEventListener('click', openWidget);
7018      el.addEventListener('keydown', function (event) {
7019        if (event.key === 'Enter' || event.key === ' ') openWidget(event);
7020      });
7021
7022      // A non-anchor host (div/span) needs explicit button semantics.
7023      var tag = el.tagName.toLowerCase();
7024      if (tag !== 'a' && tag !== 'button') {
7025        if (!el.hasAttribute('role')) el.setAttribute('role', 'button');
7026        if (!el.hasAttribute('tabindex')) el.setAttribute('tabindex', '0');
7027      }
7028
7029      if (el.textContent.trim()) el.classList.add('acp-trigger--has-text');
7030      ensureTriggerName(el);
7031    }
7032
7033    function fillIcon(el, allowFallback) {
7034      if (el.dataset[FILLED]) return true;
7035      if (el.getAttribute('icon') !== 'true') return true;
7036
7037      // Prefer cloning the live icon; fall back to rebuilding from settings.
7038      var icon = buildIcon();
7039      if (!icon && (allowFallback || inlineMode)) icon = buildIconFromSettings();
7040      if (!icon) return false;
7041
7042      // The clone's size lives only in the container's inline style. If the
7043      // widget rendered without one, size it from settings so it cannot
7044      // collapse to zero height inside the merchant's layout.
7045      if (!/\bheight\s*:/.test(icon.getAttribute('style') || '')) {
7046        var px = SIZES[(window.accessProWidgetSettings || {}).icon_size] || 50;
7047        icon.style.position = 'relative';
7048        icon.style.width = px + 'px';
7049        icon.style.height = px + 'px';
7050      }
7051
7052      el.insertBefore(icon, el.firstChild);
7053      el.dataset[FILLED] = '1';
7054      ensureTriggerName(el);
7055      return true;
7056    }
7057
7058    /* ---- scan ------------------------------------------------------------ */
7059    /* Clicks are wired immediately so the trigger works before the icon
7060       renders; icons are filled in once the floating icon exists. */
7061    var pendingIcons = false;
7062
7063    function scan(allowFallback) {
7064      pendingIcons = false;
7065      document.querySelectorAll(SELECTOR).forEach(function (el) {
7066        bind(el);
7067        if (!fillIcon(el, allowFallback)) pendingIcons = true;
7068      });
7069    }
7070
7071    function start() {
7072      scan(inlineMode);
7073
7074      // Inline mode hides the floating icon, so build from settings immediately.
7075      if (inlineMode) {
7076        // console.log('[AccessPro] Inline triggers — using widget settings for icons');
7077      }
7078
7079      // The floating icon only renders after the settings request resolves and
7080      // the widget chunk loads, so poll until it appears. If it never does,
7081      // stop waiting and build the icon from settings instead.
7082      var FALLBACK_AFTER = 2500;
7083      var waited = 0;
7084      var timer = setInterval(function () {
7085        if (!pendingIcons) {
7086          clearInterval(timer);
7087          return;
7088        }
7089        waited += 200;
7090        if (waited < FALLBACK_AFTER) {
7091          scan(false);
7092          return;
7093        }
7094        fallbackReady = true;
7095        clearInterval(timer);
7096        scan(true);
7097        if (pendingIcons) {
7098          console.warn('[AccessPro] Could not render inline icons.');
7099        }
7100      }, 200);
7101
7102      // Catch triggers added later (theme editor re-renders, dynamic sections).
7103      // Debounced: the widget itself mutates the DOM heavily as it renders.
7104      if (window.MutationObserver) {
7105        var queued = false;
7106        new window.MutationObserver(function () {
7107          if (queued) return;
7108          queued = true;
7109          requestAnimationFrame(function () {
7110            queued = false;
7111            scan(fallbackReady || inlineMode);
7112          });
7113        }).observe(document.body, { childList: true, subtree: true });
7114      }
7115    }
7116
7117    if (document.readyState === 'loading') {
7118      document.addEventListener('DOMContentLoaded', start);
7119    } else {
7120      start();
7121    }
7122  })();
7123</script>
7123
7124
7125
7126</div>
7126<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
7126
7127</body>  
7128</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.