<!doctype html>
<html class="no-js" lang="en" dir="ltr">
  <head>
<!-- Start of Shoplift scripts -->
<!-- 2026-05-07T22:31:52.2292666Z -->
<style>.shoplift-hide { opacity: 0 !important; }</style>
<style id="sl-preview-bar-hide">#preview-bar-iframe, #PBarNextFrameWrapper { display: none !important; }</style>
<script type="text/javascript">(function(rootPath, template, themeRole, themeId, isThemePreview){ /* Generated on 2026-06-21T15:30:01.1293316Z */(function(){"use strict";var tt=document.createElement("style");tt.textContent=`#shoplift-preview-control{position:fixed;max-width:332px;height:56px;background-color:#141414;z-index:9999;bottom:20px;display:flex;border-radius:8px;box-shadow:13px 22px 7px #0000,9px 14px 7px #00000003,5px 8px 6px #0000000d,2px 4px 4px #00000017,1px 1px 2px #0000001a,0 0 #0000001a;align-items:center;margin:0 auto;left:16px;right:16px;opacity:0;transform:translateY(20px);visibility:hidden;transition:opacity .4s ease-in-out,transform .4s ease-in-out,visibility 0s .4s}#shoplift-preview-control.visible{opacity:1;transform:translateY(0);visibility:visible;transition:opacity .4s ease-in-out,transform .4s ease-in-out,visibility 0s 0s}#shoplift-preview-control *{font-family:Inter,sans-serif;color:#fff;box-sizing:border-box;font-size:16px}#shoplift-preview-variant-title{font-weight:400;line-height:140%;font-size:16px;text-align:start;letter-spacing:-.16px;flex-grow:1;text-wrap:nowrap;overflow:hidden;text-overflow:ellipsis}#shoplift-preview-variant-selector{position:relative;display:block;padding:6px 0;height:100%;min-width:0;flex:1 1 auto}#shoplift-preview-variant-menu-trigger{border:none;cursor:pointer;width:100%;background-color:transparent;padding:0 16px;border-left:1px solid #333;border-right:1px solid #333;height:100%;display:flex;align-items:center;justify-content:start;gap:8px}#shoplift-preview-variant-selector .menu-variant-label{width:24px;height:24px;border-radius:50%;padding:6px;display:flex;justify-content:center;align-items:center;font-size:12px;font-style:normal;font-weight:600;line-height:100%;letter-spacing:-.12px;flex-shrink:0}#shoplift-preview-variant-selector .preview-variant-menu{position:absolute;bottom:110%;transform:translate3d(0,20px,0);visibility:hidden;pointer-events:none;opacity:0;cursor:pointer;background-color:#141414;border:1px solid #141414;border-radius:6px;width:100%;max-height:156px;overflow-y:auto;box-shadow:0 8px 16px #0003;z-index:1;transition:opacity .3s ease-in-out,transform .3s ease-in-out,visibility 0s .3s}#shoplift-preview-variant-selector .preview-variant-menu.preview-variant-menu__visible{visibility:visible;pointer-events:auto;opacity:100;transform:translateZ(0);transition:opacity .3s ease-in-out,transform .3s ease-in-out,visibility 0s 0s}@media screen and (max-width:400px){#shoplift-preview-variant-selector .preview-variant-menu{position:fixed;left:0;right:0;width:auto;bottom:110%}}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item{padding:12px 16px;display:flex;overflow:hidden}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item .menu-variant-label{margin-right:6px}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item span{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap;white-space:nowrap;color:#f6f6f6;font-size:14px;font-style:normal;font-weight:500}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:hover{background-color:#545454}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:last-of-type{border-bottom-left-radius:6px;border-bottom-right-radius:6px}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:first-of-type{border-top-left-radius:6px;border-top-right-radius:6px}#shoplift-preview-control div:has(#shoplift-exit-preview-button){padding:0 16px}#shoplift-exit-preview-button{padding:6px 8px;font-weight:500;line-height:75%;border-radius:4px;background-color:transparent;border:none;text-decoration:none}#shoplift-exit-preview-button:hover{cursor:pointer;background-color:#333}#shoplift-preview-subscription-warning{position:relative;display:flex;align-items:center;gap:6px;padding:6px 10px;margin:0 4px;border-left:1px solid #333;cursor:help;outline:none}#shoplift-preview-subscription-warning__icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background-color:#f59e0b;color:#141414!important;font-weight:700;font-size:12px!important;line-height:1;flex-shrink:0}#shoplift-preview-subscription-warning__label{font-size:13px!important;font-weight:500;color:#fbbf24!important;text-wrap:nowrap;white-space:nowrap}#shoplift-preview-subscription-warning__tooltip{position:absolute;bottom:calc(100% + 8px);right:0;max-width:320px;width:max-content;padding:10px 12px;border-radius:6px;background-color:#1f1f1f;color:#fff!important;font-size:12px!important;line-height:1.4!important;box-shadow:0 8px 16px #0000004d;z-index:10000;opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .2s ease-in-out,transform .2s ease-in-out,visibility 0s .2s;pointer-events:none}#shoplift-preview-subscription-warning__tooltip.shoplift-preview-subscription-warning__tooltip--visible{opacity:1;visibility:visible;transform:translateY(0);transition:opacity .2s ease-in-out,transform .2s ease-in-out,visibility 0s 0s}#shoplift-preview-subscription-warning:focus-visible{box-shadow:inset 0 0 0 2px #f59e0b;border-radius:4px}#shoplift-preview-control:has(#shoplift-preview-subscription-warning){max-width:480px}/*$vite$:1*/`,document.head.appendChild(tt);var ht=" daum[ /]| deusu/| yadirectfetcher|(?:^|[^g])news(?!sapphire)|(?<! (?:channel/|google/))google(?!(app|/google| pixel))|(?<! cu)bots?(?:\\b|_)|(?<!(?: ya| yandex|^job|inapp;) ?)search|(?<!(?:lib))http|(?<![hg]m)score|@[a-z][\\w-]+\\.|\\(\\)|\\.com|\\b\\d{13}\\b|^<|^[\\w \\.\\-\\(?:\\):]+(?:/v?\\d+(?:\\.\\d+)?(?:\\.\\d{1,10})*?)?(?:,|$)|^[^ ]{50,}$|^\\d+\\b|^\\w+/[\\w\\(\\)]*$|^active|^ad muncher|^amaya|^avsdevicesdk/|^biglotron|^bot|^bw/|^clamav[ /]|^client/|^cobweb/|^custom|^ddg[_-]android|^discourse|^dispatch/\\d|^downcast/|^duckduckgo|^facebook|^getright/|^gozilla/|^hobbit|^hotzonu|^hwcdn/|^jeode/|^jetty/|^jigsaw|^microsoft bits|^movabletype|^mozilla/\\d\\.\\d \\(compatible;?\\)$|^mozilla/\\d\\.\\d \\w*$|^navermailapp|^netsurf|^offline|^owler|^postman|^python|^rank|^read|^reed|^rest|^rss|^snapchat|^space bison|^svn|^swcd |^taringa|^thumbor/|^track|^valid|^w3c|^webbandit/|^webcopier|^wget|^whatsapp|^wordpress|^xenu link sleuth|^yahoo|^yandex|^zdm/\\d|^zoom marketplace/|^{{.*}}$|admin|analyzer|archive|ask jeeves/teoma|bit\\.ly/|bluecoat drtr|browsex|burpcollaborator|capture|catch|check|chrome-lighthouse|chromeframe|classifier|clean|cloud|crawl|cypress/|dareboost|datanyze|dejaclick|detect|dmbrowser|download|evc-batch/|feed|firephp|gomezagent|headless|httrack|hubspot marketing grader|hydra|ibisbrowser|images|insight|inspect|iplabel|ips-agent|java(?!;)|library|mail\\.ru/|manager|measure|neustar wpm|node|nutch|offbyone|optimize|pageburst|pagespeed|parser|perl|phantomjs|pingdom|powermarks|preview|proxy|ptst[ /]\\d|reputation|resolver|retriever|rexx;|rigor|rss\\b|scan|scrape|server|sogou|sparkler/|speedcurve|spider|splash|statuscake|synapse|synthetic|tools|torrent|trace|transcoder|url|virtuoso|wappalyzer|watch|webglance|webkit2png|whatcms/|zgrab",ft=/bot|spider|crawl|http|lighthouse/i,z;function gt(){if(z instanceof RegExp)return z;try{z=new RegExp(ht,"i")}catch{z=ft}return z}function mt(a){return!!a&&gt().test(a)}class Q{timestamp;constructor(){this.timestamp=new Date}}class yt extends Q{type;testId;hypothesisId;constructor(t,e,i){super(),this.type=3,this.testId=t,this.hypothesisId=e,this.timestamp=i}}class vt extends Q{type;path;constructor(t){super(),this.type=4,this.path=t}}class wt extends Q{type;cart;constructor(t){super(),this.type=5,this.cart=t}}class et extends Error{isBot;constructor(){super(),this.isBot=!0}}function bt(a,t,e){for(const i of t.selectors){const s=a.querySelectorAll(i.cssSelector);for(let r=0;r<s.length;r++)e(t.testId,t.hypothesisId)}st(a,t,(i,s,r,n,o)=>o(s,r),e)}function U(a,t,e){for(const i of t.selectors)rt(a,t.testId,t.hypothesisId,i,e??(()=>{}));st(a,t,rt,e??(()=>{}))}function it(a){return a.urlPatterns.reduce((t,e)=>{switch(e.operator){case"contains":return t+`.*${e}.*`;case"endsWith":return t+`.*${e}`;case"startsWith":return t+`${e}.*`}},"")}function st(a,t,e,i){new MutationObserver(()=>{for(const r of t.selectors)e(a,t.testId,t.hypothesisId,r,i)}).observe(a.documentElement,{childList:!0,subtree:!0})}function rt(a,t,e,i,s){const r=a.querySelectorAll(i.cssSelector);for(let n=0;n<r.length;n++){let o=r.item(n);if(o instanceof HTMLElement&&o.dataset.shoplift!==""){o.dataset.shoplift="";for(const l of i.actions.sort(kt))o=St(a,i.cssSelector,o,l)}}return r.length>0&&s?(s(t,e),!0):!1}function St(a,t,e,i){switch(i.type){case"innerHtml":e.innerHTML=i.value;break;case"attribute":Ct(e,i.scope,i.value);break;case"css":Tt(a,t,i.value);break;case"js":It(a,e,i);break;case"copy":return Pt(e);case"remove":At(e);break;case"move":Et(e,parseInt(i.value));break}return e}function Ct(a,t,e){a.setAttribute(t,e)}function Tt(a,t,e){const i=a.createElement("style");i.innerHTML=`${t} { ${e} }`,a.getElementsByTagName("head")[0]?.appendChild(i)}function It(a,t,e){Function("document","element",`"use strict"; ${e.value}`)(a,t)}function Pt(a){const t=a.cloneNode(!0);if(!a.parentNode)throw"Can't copy node outside of DOM";return a.parentNode.insertBefore(t,a.nextSibling),t}function At(a){a.remove()}function Et(a,t){if(t===0)return;const e=Array.prototype.slice.call(a.parentElement.children).indexOf(a),i=Math.min(Math.max(e+t,0),a.parentElement.children.length-1);a.parentElement.children.item(i).insertAdjacentElement(t>0?"afterend":"beforebegin",a)}function kt(a,t){return nt(a)-nt(t)}function nt(a){return a.type==="copy"||a.type==="remove"?0:1}var M=(a=>(a[a.Template=0]="Template",a[a.Theme=1]="Theme",a[a.UrlRedirect=2]="UrlRedirect",a[a.Script=3]="Script",a[a.Dom=4]="Dom",a[a.Price=5]="Price",a))(M||{});const xt="data:image/svg+xml,%3csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M9.96001%207.90004C9.86501%207.90004%209.77001%207.86504%209.69501%207.79004L6.43501%204.53004C6.19501%204.29004%205.80501%204.29004%205.56501%204.53004L2.30501%207.79004C2.16001%207.93504%201.92001%207.93504%201.77501%207.79004C1.63001%207.64504%201.63001%207.40504%201.77501%207.26004L5.03501%204.00004C5.56501%203.47004%206.43001%203.47004%206.96501%204.00004L10.225%207.26004C10.37%207.40504%2010.37%207.64504%2010.225%207.79004C10.15%207.86004%2010.055%207.90004%209.96001%207.90004Z'%20fill='white'/%3e%3c/svg%3e",_t="data:image/svg+xml,%3csvg%20width='14'%20height='24'%20viewBox='0%200%2014%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.3976%2014.5255C12.2833%2013.8788%2012.0498%2013.3024%2011.6952%2012.7961C11.3416%2012.2898%2010.9209%2011.8353%2010.4353%2011.4317C9.94868%2011.0291%209.43546%2010.6488%208.89565%2010.292C8.48487%2010.049%208.09577%209.78565%207.72637%209.50402C7.35697%209.2224%207.08016%208.89503%206.89694%208.51987C6.71273%208.14471%206.67826%207.69533%206.79055%207.1697C6.86345%206.83216%206.97476%206.54647%207.12351%206.31162C7.27324%206.07778%207.47124%205.89986%207.7175%205.77684C7.96377%205.65483%208.21989%205.59383%208.48389%205.59383C8.88087%205.59383%209.17639%205.7016%209.3734%205.91714C9.56943%206.13268%209.68271%206.42345%209.71424%206.78946C9.74576%207.15547%209.72015%207.55401%209.63839%207.98509C9.55663%208.41617%209.43645%208.84724%209.27687%209.27934L13.5127%208.80149C13.9638%207.52656%2014.1017%206.42447%2013.9264%205.49725C13.751%204.56901%2013.2664%203.85122%2012.4724%203.34491C12.239%203.19648%2011.9779%203.07041%2011.6893%202.96569L12.0026%201.50979L9.86397%200L7.3875%201.50979L7.11169%202.78878C6.65166%202.8874%206.21724%203.01957%205.8114%203.19038C4.85292%203.594%204.06684%204.15115%203.45117%204.86385C2.83452%205.57655%202.42571%206.40108%202.22378%207.33847C2.06616%208.06947%202.04942%208.70796%202.17551%209.25087C2.30061%209.7948%202.52028%2010.2828%202.8355%2010.7139C3.14974%2011.145%203.51816%2011.5344%203.93977%2011.881C4.36039%2012.2288%204.782%2012.5521%205.20164%2012.851C5.68334%2013.1702%206.13844%2013.5169%206.56497%2013.8921C6.99052%2014.2672%207.31954%2014.7125%207.55004%2015.228C7.78055%2015.7445%207.81502%2016.3769%207.65347%2017.1262C7.56482%2017.5389%207.43676%2017.8765%207.27028%2018.1388C7.10381%2018.4011%206.89596%2018.5983%206.64772%2018.7295C6.3985%2018.8606%206.12071%2018.9267%205.8114%2018.9267C5.21641%2018.9267%204.79776%2018.6034%204.62833%2018.1632C4.4589%2017.7229%204.47367%2017.2583%204.60075%2016.5639C4.72782%2015.8705%205.05092%2015.1395%205.37107%2014.3699H1.17665C1.17665%2014.3699%200.207341%2016.1115%200.0310135%2017.6762C-0.0655232%2018.5302%200.0635208%2019.2653%200.41519%2019.8844C0.76686%2020.5036%201.33032%2020.9814%202.10655%2021.319C2.39222%2021.443%202.7104%2021.5447%203.05813%2021.623L2.54589%2024H7.17473L7.7047%2021.5386C8.08493%2021.442%208.43857%2021.3231%208.76562%2021.1787C9.73985%2020.7476%2010.52%2020.1427%2011.1071%2019.3649C11.6932%2018.5871%2012.0873%2017.7291%2012.2892%2016.7917C12.4744%2015.9295%2012.5099%2015.1741%2012.3966%2014.5275L12.3976%2014.5255Z'%20fill='white'/%3e%3c/svg%3e";async function Rt(a){let t=a.replace(/-/g,"+").replace(/_/g,"/");for(;t.length%4;)t+="=";const e=atob(t),i=Uint8Array.from(e,n=>n.charCodeAt(0)),s=new Blob([i]).stream().pipeThrough(new DecompressionStream("gzip")),r=await new Response(s).text();return JSON.parse(r)}function F(a,t){return typeof t=="string"&&/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+(?:Z|[+-]\d+)/.test(t)?new Date(t):t}function X(a,t){return t}function q(a,t=!1,e=!1,i=","){const s=a/100;if(e){const n=Math.round(s).toLocaleString("en-US");return i!==","?n.replace(/,/g,i):n}else{const r=t?",":".",n=s.toFixed(2).split("."),o=parseInt(n[0],10),l=n[1]??"00",c=o.toLocaleString("en-US");return i!==","?`${c.replace(/,/g,i)}${r}${l}`:t?`${c.replace(/,/g,".")}${r}${l}`:`${c}${r}${l}`}}function H(a,t,e,i){const s=t.replace("{{amount}}",q(a,!1,!1)).replace("{{amount_no_decimals}}",q(a,!1,!0)).replace("{{amount_with_comma_separator}}",q(a,!0,!1)).replace("{{amount_no_decimals_with_comma_separator}}",q(a,!0,!0)).replace("{{amount_with_space_separator}}",q(a,!1,!1," ")).replace("{{amount_no_decimals_with_space_separator}}",q(a,!1,!0," ")).replace("{{amount_with_apostrophe_separator}}",q(a,!1,!1,"'")).replace("{{amount_no_decimals_with_apostrophe_separator}}",q(a,!1,!0,"'")).replace("{{amount_with_period_and_space_separator}}",q(a,!1,!1,". ")).replace("{{amount_no_decimals_with_period_and_space_separator}}",q(a,!1,!0,". "));return i?`${s} ${e}`:s}function ot(a){return a.replace(/[^\d.,\s-]/g,"").trim()}function j(a){const t=new Map;for(const[e,i,s]of a.variants)t.set(e,{priceInCents:i,compareAtPriceInCents:s});return t}function Dt(a,t,e,i){const{priceInCents:s,compareAtPriceInCents:r}=e,{moneyFormat:n,currency:o,currencyCodeEnabled:l}=i;if(a.getAttribute("data-sl-attribute-p")===t)a.innerHTML=H(s,n,o,l);else if(a.getAttribute("data-sl-attribute-cap")===t)r<=0||r<=s?a.remove():a.innerHTML=H(r,n,o,l);else if(a.getAttribute("data-sl-attribute-discount")===t&&!(r<=0||r<=s)){const d=Math.round((r-s)/r*100),p=ot(H(r-s,n,o,!1)),h=a.getAttribute("data-sl-format")||"percent";h==="percent"?a.textContent=`-${d}%`:h==="amount"?a.textContent=`-${p}`:h==="both"&&(a.textContent=`-${d}% (-${p})`)}}function Ot(a){const t=[],e={id:"url-pattern",operator:"contains",value:"/"};for(const[i,s,r]of a.variants){t.push({id:`p-${i}`,cssSelector:`[data-sl-attribute-p="${i}"]`,urlPatterns:[e],actions:[{id:`p-action-${i}`,type:"innerHtml",scope:"price",value:H(s,a.moneyFormat,a.currency,a.currencyCodeEnabled)}]});const n=r<=0||r<=s;if(t.push({id:`cap-${i}`,cssSelector:`[data-sl-attribute-cap="${i}"]`,urlPatterns:[e],actions:[{id:`cap-action-${i}`,type:n?"remove":"innerHtml",scope:"compare-at-price",value:n?"":H(r,a.moneyFormat,a.currency,a.currencyCodeEnabled)}]}),!n&&r>s){const o=Math.round((r-s)/r*100),l=ot(H(r-s,a.moneyFormat,a.currency,!1));t.push({id:`d-${i}`,cssSelector:`[data-sl-attribute-discount="${i}"]`,urlPatterns:[e],actions:[{id:`d-action-${i}`,type:"js",scope:null,value:`var format = element.getAttribute('data-sl-format') || 'percent';                    if (format === 'percent') {                      element.textContent = '-${o}%';                    } else if (format === 'amount') {                      element.textContent = '-${l}';                    } else if (format === 'both') {                      element.textContent = '-${o}% (-${l})';                    }`}]})}}return t}const Jt="modulepreload",Yt=function(a){return"/"+a},Zt={},Vt=function(t,e,i){let s=Promise.resolve();function r(n){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=n,window.dispatchEvent(o),!o.defaultPrevented)throw n}return s.then(n=>{for(const o of n||[])o.status==="rejected"&&r(o.reason);return t().catch(r)})};function at(a,t,e){const i=e?a.plans.filter(c=>!c.variantId||c.variantId===e):a.plans,s=[],r=[];for(const c of i)c.direction==="decrease"?(s.push(c.existingShopifyPlanId),r.push(c.createdShopifyPlanId)):(s.push(c.createdShopifyPlanId),r.push(c.existingShopifyPlanId));const n=t?s:r,o=t?r:s;if(e)for(const c of a.plans)for(const d of[c.existingShopifyPlanId,c.createdShopifyPlanId])d&&!n.includes(d)&&!o.includes(d)&&o.push(d);const l={};for(let c=0;c<o.length;c++){const d=o[c],p=n[c];d&&p&&(l[d]=p)}return{showPlanIds:n,hidePlanIds:o,swapMap:l}}function lt(a,t,e){const i=t?a.plans.find(r=>r.variantId===t):void 0;if(i)return i.direction;if(e){const r=a.plans.find(n=>n.productId===e);if(r)return r.direction}return a.plans.find(r=>!r.variantId)?.direction??null}function K(a,t){const e=t?a.plans.filter(r=>!r.productId||r.productId===t):a.plans,i={};for(const r of e)i[r.existingShopifyPlanId]=r.existingDiscountAmount,i[r.createdShopifyPlanId]=r.existingDiscountAmount;const s=Math.max(...Object.values(i),0);return{discountMap:i,maxDiscount:s}}function W(a){const t=document.querySelector('form[action*="/cart/add"] input[name="product-id"]')?.value;if(t)return t;if(a){for(const r of Array.from(document.querySelectorAll("[data-sl-attribute-p]"))){const n=r.getAttribute("data-sl-attribute-p");if(!n)continue;const o=a.variants.find(l=>l[0]===n);if(o?.[3])return o[3]}const s=document.querySelector('form[action*="/cart/add"] input[name="id"]')?.value;if(s){const r=a.variants.find(n=>n[0]===s);if(r?.[3])return r[3]}}const e=window,i=e.ShopifyAnalytics?.meta?.product?.id??e.meta?.product?.id;return i!=null?String(i):null}function D(a,t){return a.widget.selectors[t]??[]}function N(a,t){return a.replace(/[\d.]+%/,`${t}%`)}function $(a,t){const e=document.createTreeWalker(a,NodeFilter.SHOW_TEXT);let i=e.nextNode();for(;i;){if(i.nodeValue!==null){const s=t(i.nodeValue);if(s!==i.nodeValue){i.nodeValue=s;return}}i=e.nextNode()}}function ct(a,t){return a===null?!1:a==="decrease"?!t:t}async function Lt(a){if(a.subscriptionSwapDone)return;const t=a.getActiveAssignment();if(!t)return;const e=a.getHypothesis(t.hypothesisId);if(!e?.subscriptionData)return;a.subscriptionSwapDone=!0;const i=e.subscriptionData,s=e.isControl,r=[...new Set(i.plans.map(d=>d.direction))].join(",");a.log(`[SUB-SWAP] ${s?"A":"B"} side, directions=${r}`);const n=i.plans.some(d=>d.variantId);let o=!1,l=!1;function c(){if(!l){l=!0;try{const d=n?document.querySelector("select[name='id'], input[name='id']")?.value:void 0,{showPlanIds:p,hidePlanIds:h,swapMap:u}=at(i,s,d);a.swapMap=u;const b=D(i,"widgetParent"),k=D(i,"subscriptionPlans"),S=D(i,"subscriptionInput");if(!b.length||!k.length||!S.length)return;const P=document.querySelector(b[0].selector);if(!P?.shadowRoot)return;const _=P.shadowRoot.querySelector(k[0].selector);if(!_?.shadowRoot)return;const C=S[0].selector;let m=null;if(i.widget.widgetType==="buttons"||i.widget.widgetType==="radio"){const y=Array.from(_.shadowRoot.querySelectorAll(C));if(!y.length)return;for(const v of y){const g=v.closest("label");g&&(p.includes(v.value)?g.style.display="":h.includes(v.value)&&(g.style.display="none"))}const w=y.some(v=>p.includes(v.value)&&v.checked),T=y.some(v=>h.includes(v.value)&&v.checked);if((w||T)&&(o=!1),!w&&!o){o=!0;for(const v of y)if(p.includes(v.value)){v.closest("label")?.click(),v.dispatchEvent(new Event("change",{bubbles:!0}));break}}const f=y.find(v=>v.checked);m=f&&p.includes(f.value)?f.value:p[0]??null}else if(i.widget.widgetType==="dropdown"){const y=_.shadowRoot.querySelector("select");if(!y)return;for(const w of Array.from(y.options))h.includes(w.value)&&(w.style.display="none",w.disabled=!0);if(h.includes(y.value)){const w=Array.from(y.options).find(T=>p.includes(T.value));w&&(y.value=w.value,y.dispatchEvent(new Event("change",{bubbles:!0})))}m=p.includes(y.value)?y.value:p[0]??null}if(m){const y=Array.from(document.querySelectorAll('input[name="selling_plan"]'));for(const w of y)w.value!==m&&(w.value=m)}}finally{l=!1}}}if(a.subscriptionHideWrongPlans=c,a.swapMap=at(i,s).swapMap,c(),n){const d=document.querySelector("select[name='id'], input[name='id']");d&&d.addEventListener("change",c)}}function B(a){const t=D(a,"widgetParent");return t.length?document.querySelector(t[0].selector)?.shadowRoot??null:null}function J(a,t){const e=D(a,"subscriptionPlans");return e.length?t.querySelector(e[0].selector)?.shadowRoot??null:null}function Y(a,t){const e=new URLSearchParams(window.location.search).get("variant");if(e)return e;{const i=document.querySelector('form[action*="/cart/add"] input[name="id"]')?.value;if(i)return i}return a.size>0?[...a.keys()][0]:void 0}function G(a,t){return H(a,t.moneyFormat,t.currency,t.currencyCodeEnabled)}function $t({originalFetch:a,swapMap:t,slptValue:e,getSelectedPlanId:i,log:s}){if(window.fetch.__shoplift_intercepted)return s("[SUB-INTERCEPT] already installed — skipping"),()=>{};function r(o){if(i){const l=i();if(l)return t[l]??l}return t[o]??o}const n=function(o,l){if((typeof o=="string"?o:o instanceof URL?o.href:o.url).includes("/cart/add")&&l?.body)try{if(l.body instanceof FormData){const d=l.body.get("selling_plan");d?l.body.set("selling_plan",r(String(d))):(!d||d==="")&&e&&l.body.set("properties[_slpt]",e)}else if(typeof l.body=="string"){const d=JSON.parse(l.body);if(d.items)for(const p of d.items){const h=String(p.selling_plan??"");h?p.selling_plan=r(h):!p.selling_plan&&e&&(p.properties||(p.properties={}),p.properties._slpt=e)}else if(d.id){const p=String(d.selling_plan??"");p?d.selling_plan=r(p):!d.selling_plan&&e&&(d.properties||(d.properties={}),d.properties._slpt=e)}l.body=JSON.stringify(d)}}catch(d){s("[SUB-INTERCEPT] body parse failed; cart-add proceeds with un-swapped plan",d)}return a.call(window,o,l)};return n.__shoplift_intercepted=!0,window.fetch=n,function(){window.fetch===n&&(window.fetch=a)}}function Mt({log:a}){if(window.fetch.__shoplift_intercepted)return a("[SUB-PREVIEW-BLOCK] already installed — skipping"),()=>{};const t=window.fetch,e=function(i,s){const r=typeof i=="string"?i:i instanceof URL?i.href:i.url;return r.includes("/cart/add")?(a("[SUB-PREVIEW-BLOCK] cart-add blocked in preview mode",{url:r}),Promise.resolve(new Response(JSON.stringify({id:0,properties:{},quantity:0,variant_id:0,key:"preview",title:"Preview — cart-add blocked",price:0,original_price:0,line_price:0,original_line_price:0,total_discount:0,discounts:[],preview:!0}),{status:200,headers:{"Content-Type":"application/json"}}))):t.call(window,i,s)};return e.__shoplift_intercepted=!0,window.fetch=e,function(){window.fetch===e&&(window.fetch=t)}}function dt({data:a,runUpdates:t,debounceMs:e=150}){let i=null;function s(){i&&clearTimeout(i),t(),i=setTimeout(t,e)}let r=null;const n=[],o={childList:!0,subtree:!0,characterData:!0,attributes:!0};function l(h){for(const u of n)u.disconnect();n.length=0;for(const u of Array.from(h.querySelectorAll("*")))if(u.shadowRoot){const b=new MutationObserver(s);b.observe(u.shadowRoot,o),n.push(b)}}function c(){const h=B(a);return h?(r&&r.disconnect(),l(h),r=new MutationObserver(u=>{u.some(b=>b.type==="childList"&&b.addedNodes.length>0)&&l(h),s()}),r.observe(h,o),!0):!1}const d=document.body||document.documentElement,p=new MutationObserver(()=>{c()&&s()});return p.observe(d,{childList:!0,subtree:!0}),c()&&s(),t(),function(){i&&(clearTimeout(i),i=null),p.disconnect(),r&&(r.disconnect(),r=null);for(const u of n)u.disconnect();n.length=0}}async function qt(a){if(a.subscriptionPriceDone)return;const t=a.getActiveAssignment(),e=t?a.getHypothesis(t.hypothesisId):void 0,i=e?.subscriptionData?null:a.findActiveSubscriptionTestControl(),s=e?.subscriptionData?e:i?.hypothesis;if(!s?.subscriptionData)return;const r=e?.subscriptionData?t.testId:i.testId;a.subscriptionPriceDone=!0;const n=s.subscriptionData,o=s.isControl,l=s.priceData,c=n.widget.widgetType;let d=W(l),p=K(n,d),h=p.discountMap,u=p.maxDiscount;function b(){const g=W(l);g!==d&&(d=g,p=K(n,d),h=p.discountMap,u=p.maxDiscount,a.log(`[SUB-PRICE] scope refreshed side=${o?"A":"B"}, currentProductId=${d??"n/a"}, maxDiscount=${u}`))}a.log(`[SUB-PRICE] side=${o?"A":"B"}, currentProductId=${d??"n/a"}, maxDiscount=${u}`),a.updatePriceTestHiddenInputs(r,o?"control":"variant",!1);function k(){if(!l)return null;const g=j(l),I=Y(g),A=lt(n,I,d);if(!ct(A,o))return null;const E=I?g.get(I):void 0;return E?{formattedVariantPrice:G(E.priceInCents,l),formattedDiscounted:G(E.priceInCents*(1-u/100),l)}:null}$t({originalFetch:a.fetch,swapMap:a.swapMap??{},slptValue:a.slptValue??void 0,log:a.log,getSelectedPlanId:()=>{const g=B(n);if(!g)return null;const I=J(n,g);if(!I)return null;const A=D(n,"subscriptionInput"),E=A.length?A[0].selector:'input[name="rc_plan"]';return I.querySelector(`${E}:checked`)?.value??null}});function S(g){const I=D(n,"subscriptionDiscount");for(const A of I)if(A.selector.includes("badge")||A.selector.includes("__badge")){const E=g.querySelector(A.selector);E?.textContent&&!E.textContent.includes(`${u}%`)&&$(E,x=>N(x,u))}}function P(g){const I=k();if(!I)return;const A=D(n,"subscriptionCompareAt");for(const E of A){const x=g.querySelector(E.selector)||g.querySelector(`[part~="${E.selector}"]`);x?.textContent&&!x.textContent.includes(I.formattedVariantPrice)&&$(x,R=>/\d/.test(R)?I.formattedVariantPrice:R)}}function _(g,I){const A=D(n,"subscriptionCompareAt"),E=I===0?"none":"";for(const x of A){const R=g.querySelector(x.selector)||g.querySelector(`[part~="${x.selector}"]`);R&&(E==="none"?R.style.display!=="none"&&(R.style.display="none"):R.style.display==="none"&&(R.style.display=""))}}function C(g){const I=D(n,"subscriptionInput"),A=I.length?I[0].selector:'input[name="rc_plan"]',E=D(n,"subscriptionPlanDiscount"),x=E.length?E[0].selector:".rc-plans-button__discount";for(const R of Array.from(g.querySelectorAll("label"))){const V=R.querySelector(A),O=R.querySelector(x);if(V&&O){const L=h[V.value];if(L!==void 0){if(L===0)O.style.display!=="none"&&(O.style.display="none");else if(O.style.display==="none"&&(O.style.display=""),O.textContent){const Z=O.textContent.match(/[\d.]+%/)?.[0];Z&&Z!==`${L}%`&&$(O,Kt=>N(Kt,L))}}}}}function m(g){const I=g.querySelector("select");if(I)for(const A of Array.from(I.options)){const E=h[A.value];if(E!==void 0&&A.textContent){const x=A.textContent.match(/[\d.]+%/)?.[0];x&&x!==`${E}%`&&(A.textContent=N(A.textContent,E))}}}function y(g,I){const E=D(n,"subscriptionDiscount").filter(x=>x.selector.includes("benefit")||x.selector==="rc-benefits");for(const x of E){const R=g.querySelector(x.selector);if(R?.shadowRoot){for(const V of Array.from(R.shadowRoot.querySelectorAll("li")))if(V.textContent?.includes("Save")){const O=V;if(I===0)O.style.display!=="none"&&(O.style.display="none");else{O.style.display==="none"&&(O.style.display="");const L=V.textContent.match(/[\d.]+%/)?.[0];L&&L!==`${I}%`&&$(V,Z=>N(Z,I))}}}}}let w=!1;function T(){if(!w){w=!0;try{if(b(),d!==null&&Object.keys(h).length===0)return;const g=B(n);if(!g)return;S(g),l&&P(g);const I=J(n,g);let A=u;if(I){const E=D(n,"subscriptionInput"),x=E.length?E[0].selector:'input[name="rc_plan"]',R=I.querySelector(`${x}:checked`);if(R){const V=h[R.value];V!==void 0&&(A=V)}c==="buttons"||c==="radio"?C(I):m(I)}_(g,A),y(g,A)}finally{w=!1}}}function f(){const g=k();if(!g)return;const I=B(n);if(!I)return;const A=D(n,"onetimeToggle"),E=A.length?A[0].selector:'input[value="onetime"]';if(!I.querySelector(E)?.checked)return;const R=D(n,"subscriptionPrice");for(const V of R){const O=I.querySelector(V.selector)||I.querySelector(`[part~="${V.selector}"]`);O?.textContent&&!O.textContent.includes(g.formattedDiscounted)&&$(O,L=>/\d/.test(L)?g.formattedDiscounted:L)}}function v(){a.subscriptionHideWrongPlans&&a.subscriptionHideWrongPlans(),T(),a.subscriptionUpdateOneTime&&a.subscriptionUpdateOneTime(),f()}dt({data:n,runUpdates:v})}async function Ht(a){if(a.subscriptionOneTimeDone)return;const t=a.getActiveAssignment(),e=t?a.getHypothesis(t.hypothesisId):void 0,i=!!(e?.subscriptionData&&e.priceData),s=i?null:a.findActiveSubscriptionTestControl(),r=i?e:s?.hypothesis;if(!r?.subscriptionData||!r.priceData)return;const n=i?t.testId:s.testId;a.subscriptionOneTimeDone=!0;const o=r.subscriptionData,l=r.priceData,c=j(l),d=r.isControl,p=d?"control":"variant";a.slptValue=`${n}:${p}:f`,a.updatePriceTestHiddenInputs(n,p,!1);function h(){const u=B(o);if(!u)return;const b=Y(c);if(!b)return;const k=W(l),S=lt(o,b,k);if(!ct(S,d))return;const P=c.get(b);if(!P)return;const _=H(P.priceInCents,l.moneyFormat,l.currency,l.currencyCodeEnabled),C=D(o,"onetimePrice");if(!C.length)return;const m=D(o,"onetimeContainer"),y=m.length?m[0].selector:'[part~="rc-purchase-option__onetime"]',T=u.querySelector(y)??u;for(const f of C){let v=null;try{v=T.querySelector(f.selector)}catch{v=null}v??=T.querySelector(`[part~="${f.selector}"]`),v&&v.textContent&&!v.textContent.includes(_)&&$(v,g=>/\d/.test(g)?_:g)}}a.subscriptionUpdateOneTime=h,h()}async function Nt(a,t){const{subscriptionPreviewRender:e}=await Vt(async()=>{const{subscriptionPreviewRender:i}=await Promise.resolve().then(()=>jt);return{subscriptionPreviewRender:i}},void 0);return e(a.subscriptionData,a.priceData,a.isControl,t)}function Ut(a,t){const e=a.widget.selectors.widgetParent??[],i=a.widget.selectors.subscriptionPlans??[],s=a.widget.selectors.subscriptionInput??[];if(!e.length||!i.length||!s.length){t("[SUB-GLOBAL-HIDE] Missing required selectors — skipping");return}const r=e[0].selector,n=i[0].selector,o=s[0].selector;let l=!1,c=null,d=!1;function p(){if(!d){d=!0;try{h()}finally{d=!1}}}function h(){const P=document.querySelector(r);if(!P?.shadowRoot)return;const _=P.shadowRoot.querySelector(n);if(!_?.shadowRoot)return;_.shadowRoot!==c&&(c=_.shadowRoot,l=!1);let C=0;if(a.widget.widgetType==="buttons"||a.widget.widgetType==="radio"){const m=Array.from(_.shadowRoot.querySelectorAll(o));for(const f of m)if(a.planIds.includes(f.value)){f.disabled||(f.disabled=!0);const v=f.closest("label");v&&v.style.display!=="none"&&(v.style.display="none",C++)}const y=m.filter(f=>!a.planIds.includes(f.value));if(!y.some(f=>f.checked)&&!l&&y.length>0){l=!0;const f=y[0];f.closest("label")?.click(),f.dispatchEvent(new Event("change",{bubbles:!0})),t(`[SUB-GLOBAL-HIDE] Preselected first visible plan input=${f.value}`)}const T=y.find(f=>f.checked)??y[0];if(T){const f=Array.from(document.querySelectorAll('input[name="selling_plan"]'));for(const v of f)v.value!==T.value&&(v.value=T.value,t(`[SUB-GLOBAL-HIDE] Mirrored plan id ${T.value} to form selling_plan input`))}}else if(a.widget.widgetType==="dropdown"){const m=_.shadowRoot.querySelector("select");if(!m)return;for(const T of Array.from(m.options))a.planIds.includes(T.value)&&(T.style.display!=="none"&&(T.style.display="none"),T.disabled||(T.disabled=!0),C++);const y=Array.from(m.options).filter(T=>!a.planIds.includes(T.value)),w=y.some(T=>T.value===m.value);y.length>0&&!w&&!l&&(l=!0,m.value=y[0].value,m.dispatchEvent(new Event("change",{bubbles:!0})),t(`[SUB-GLOBAL-HIDE] Preselected first visible option=${y[0].value}`))}C>0&&t(`[SUB-GLOBAL-HIDE] Hidden ${C} B-side plan buttons`)}const u={childList:!0,subtree:!0,characterData:!0};let b=null;function k(P){b?.disconnect(),b=new MutationObserver(()=>p()),b.observe(P,u)}function S(){const P=document.querySelector(r);if(!P?.shadowRoot)return!1;p(),new MutationObserver(()=>{p();const m=P.shadowRoot.querySelector(n);m?.shadowRoot&&k(m.shadowRoot)}).observe(P.shadowRoot,u);const C=P.shadowRoot.querySelector(n);return C?.shadowRoot&&k(C.shadowRoot),!0}if(!S()){t("[SUB-GLOBAL-HIDE] Widget not in DOM yet — waiting via MutationObserver");const P=new MutationObserver(()=>{S()&&P.disconnect()});P.observe(document.body??document.documentElement,{childList:!0,subtree:!0})}}const ut="Limited preview",Ft="Add-to-cart and checkout prices won't reflect this test until it launches — test selling plans are not created in your subscription app until after a test is launched.",Bt=5e3;function zt(){const a=document.createElement("div");a.id="shoplift-preview-subscription-warning";const t=document.createElement("span");t.id="shoplift-preview-subscription-warning__icon",t.setAttribute("aria-hidden","true"),t.textContent="!";const e=document.createElement("span");e.id="shoplift-preview-subscription-warning__label",e.textContent=ut;const i=document.createElement("div");i.id="shoplift-preview-subscription-warning__tooltip",i.setAttribute("role","tooltip"),i.textContent=Ft,a.appendChild(t),a.appendChild(e),a.appendChild(i),a.setAttribute("tabindex","0"),a.setAttribute("aria-describedby",i.id),a.setAttribute("aria-label",ut);let s=null;function r(){s!==null&&(clearTimeout(s),s=null)}function n(){i.classList.add("shoplift-preview-subscription-warning__tooltip--visible")}function o(){i.classList.remove("shoplift-preview-subscription-warning__tooltip--visible")}function l(){n(),r(),s=setTimeout(()=>{o(),s=null},Bt)}function c(){r(),n()}function d(){s===null&&o()}a.addEventListener("mouseenter",c),a.addEventListener("mouseleave",d),a.addEventListener("focus",c),a.addEventListener("blur",d);function p(u){try{const b=u.target;if(!(b instanceof Element))return;(b.closest('form[action*="/cart/add"] button[type="submit"], form[action*="/cart/add"] input[type="submit"]')!==null||b.closest('[name="add"], button[name="add"], [data-add-to-cart], button[data-add-to-cart]')!==null)&&l()}catch{}}document.addEventListener("click",p,!0);function h(){r(),document.removeEventListener("click",p,!0),a.removeEventListener("mouseenter",c),a.removeEventListener("mouseleave",d),a.removeEventListener("focus",c),a.removeEventListener("blur",d),a.remove()}return{root:a,tooltip:i,cleanup:h}}let pt=!1;class Wt{constructor(t,e,i,s,r,n,o,l,c,d,p,h,u){this.shop=t,this.host=e,this.eventHost=i,this.disableReferrerOverride=l,this.logHistory=[],this.legacySessionKey=`SHOPLIFT_SESSION_${this.shop}`,this.cssHideClass=s?"shoplift-hide":"",this.testConfigs=p.map(k=>({...k,startAt:new Date(k.startAt),statusHistory:k.statusHistory.map(S=>({...S,createdAt:new Date(S.createdAt)}))})),this.inactiveTestConfigs=h,this.hiddenSubscriptionPlans=u,this.sendPageView=!!r,this.shopliftDebug=n===!0,this.telemetryEnabled=c===!0,this.gaConfig=o!=={"sendEvents":false,"mode":"gtag"}?o:{sendEvents:!1},this.fetch=window.fetch.bind(window),this.localStorageSet=window.localStorage.setItem.bind(window.localStorage),this.localStorageGet=window.localStorage.getItem.bind(window.localStorage);const b=this.getDeviceType();this.device=b!=="tablet"?b:"mobile",this.state=this.loadState(),this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.testsFilteredByAudience=p.filter(k=>k.status=="active"),this.getCountryTimeout=d===1000?1e3:d,this.log("State Loaded",JSON.stringify(this.state))}DATA_SL_ATTRIBUTE_P="data-sl-attribute-p";DATA_SL_TEST_ID="data-sl-test-id";VIEWPORT_TRACK_THRESHOLD=.5;temporarySessionKey="Shoplift_Session";essentialSessionKey="Shoplift_Essential";analyticsSessionKey="Shoplift_Analytics";priceSelectorsSessionKey="Shoplift_PriceSelectors_v2";legacySessionKey;cssHideClass;testConfigs;inactiveTestConfigs;hiddenSubscriptionPlans;testsFilteredByAudience;sendPageView;shopliftDebug;gaConfig;telemetryEnabled;getCountryTimeout;state;subscriptionPreviewWarningCleanup=null;shopifyAnalyticsId;cookie=document.cookie;isSyncing=!1;isSyncingGA=!1;fetch;localStorageSet;localStorageGet;sessionStorageSet=window.sessionStorage.setItem.bind(window.sessionStorage);sessionStorageGet=window.sessionStorage.getItem.bind(window.sessionStorage);urlParams=new URLSearchParams(window.location.search);device;logHistory;activeViewportObservers=new Map;clientIdRetryCount=0;deriveCategoryFromExistingTests(){if(!this.state.temporary.testCategory&&this.state.essential.visitorTests.length>0){const t=this.state.essential.visitorTests.some(e=>{if(!e.hypothesisId)return!1;const i=this.getHypothesis(e.hypothesisId);return i&&["theme","basicScript","price"].includes(i.type)});this.state.temporary.testCategory=t?"global":"conditional",this.persistTemporaryState(),this.log("Derived test category from existing visitorTests: %s",this.state.temporary.testCategory)}}async init(){try{if(this.log("Shoplift script initializing"),window.Shopify&&window.Shopify.designMode){this.log("Skipping script for design mode");return}if(window.location.href.includes("slScreenshot=true")){this.log("Skipping script for screenshot");return}if(window.location.hostname.endsWith(".edgemesh.com")){this.log("Skipping script for preview");return}if(window.location.href.includes("isShopliftMerchant")){const s=this.urlParams.get("isShopliftMerchant")==="true";this.log("Setting merchant session to %s",s),this.state.temporary.isMerchant=s,this.persistTemporaryState()}if(this.state.temporary.isMerchant){this.log("Setting up preview for merchant"),typeof window.shoplift!="object"&&this.setShopliftStub(),this.state.temporary.previewConfig||this.hidePage(),await this.initPreview(),document.querySelector("#sl-preview-bar-hide")?.remove();return}if(this.state.temporary.previewConfig=void 0,mt(navigator.userAgent))return;const t=this.state.essential.visitorTests.filter(s=>s.hypothesisId&&+s.createdAt>Date.now()-6e4);if(t.length===0)this.sendDiagnosticTelemetry("page-landed",null);else for(const s of t)this.sendDiagnosticTelemetry("page-landed",s.testId,{hypothesisId:s.hypothesisId,isControl:s.assignedTo==="control",testType:s.testType??"unknown"});if(navigator.userAgent.includes("Chrome/118")){this.log("Random: %o",[Math.random(),Math.random(),Math.random()]);const s=await this.makeRequest({url:`${this.eventHost}/api/v0/events/ip`,method:"get"}).then(r=>r?.json());this.log(`IP: ${s}`),this.makeRequest({url:`${this.eventHost}/api/v0/logs`,method:"post",data:JSON.stringify(this.debugState(),X)}).catch()}if(this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.monitorConsentChange(),this.checkForThemePreview())return;if(!this.disableReferrerOverride&&this.state.temporary.originalReferrer!=null){this.log(`Overriding referrer from '${document.referrer}' to '${this.state.temporary.originalReferrer}'`);const s=this.state.temporary.originalReferrer;delete this.state.temporary.originalReferrer,this.persistTemporaryState(),Object.defineProperty(document,"referrer",{get:()=>s,enumerable:!0,configurable:!0})}if(await this.refreshVisitor(this.shopifyAnalyticsId),await this.handleVisitorTest()){this.log("Redirecting for visitor test");return}this.setShoplift(),this.showPage(),this.ensureCartAttributesForExistingPriceTests(!1);const i=this.state.essential.visitorTests.some(s=>(s.hypothesisId?this.getHypothesis(s.hypothesisId):void 0)?.subscriptionData!=null)||Object.values(this.state.temporary.testReservations??{}).some(s=>this.getHypothesis(s.hypothesisId)?.subscriptionData!=null);this.hiddenSubscriptionPlans&&!i&&(this.log(`[SUB-GLOBAL] Visitor not in subscription test — hiding ${this.hiddenSubscriptionPlans.planIds.length} B-side plans`),Ut(this.hiddenSubscriptionPlans,s=>this.log(s))),await this.subscriptionSwap(),await this.subscriptionOneTimePrice(),await this.subscriptionPriceChange(),await this.finalize(),console.log("SHOPLIFT SCRIPT INITIALIZED!")}catch(t){if(t instanceof et)return;throw t}finally{typeof window.shoplift!="object"&&this.setShopliftStub()}}getVariantColor(t){switch(t){case"a":return{text:"#141414",bg:"#E2E2E2"};case"b":return{text:"rgba(255, 255, 255, 1)",bg:"rgba(37, 99, 235, 1)"}}}getDefaultVariantTitle(t){return t.title?t.title:t.type==="price"?t.isControl?"Original prices":"Variant prices":t.isControl?"Original":"Untitled variant "+t.label.toUpperCase()}async initPreview(){const t=this.urlParams.get("previewConfig");if(t){this.state.temporary.previewConfig=void 0,this.log("Setting up the preview"),this.log("Found preview config, writing to temporary state");const e=await Rt(t);if(this.state.temporary.previewConfig=e,this.state.temporary.previewConfig.testTypeCategory===M.Price){this.hidePage(!0);const s=this.state.temporary.previewConfig;let r=`${this.host}/api/dom-selectors/${s.storeId}/${s.testId}/${s.isDraft||!1}`;s.shopifyProductId&&(r+=`?productId=${s.shopifyProductId}`);const n=await this.makeJsonRequest({method:"get",url:r}).catch(o=>(this.log("Error getting domSelectors",o),null));if(s.variants.forEach(o=>o.domSelectors=n[o.id]?.domSelectors),s.isDraft){const o=`${this.host}/api/dom-selectors/${s.storeId}/${s.testId}/subscription-preview`,l=await this.makeJsonRequest({method:"get",url:o}).catch(c=>(this.log("No subscription preview data for draft (test may not have a subscription widget)",c),null));l?.subscriptionData&&s.variants.forEach(c=>{c.subscriptionData=l.subscriptionData,c.priceData=l.priceData})}}this.persistTemporaryState();const i=new URL(window.location.toString());i.searchParams.delete("previewConfig"),this.queueRedirect(i)}else if(this.state.temporary.previewConfig){this.showPage();const e=this.state.temporary.previewConfig;if(e.testTypeCategory===M.Template&&this.handleTemplatePreview(e)&&this.initPreviewControls(e),e.testTypeCategory===M.UrlRedirect&&this.handleUrlPreview(e)&&this.initPreviewControls(e),e.testTypeCategory===M.Script&&this.handleScriptPreview(e)&&this.initPreviewControls(e),e.testTypeCategory===M.Price){const i=await this.handlePricePreview(e);e.isDraft?await this.handleSubscriptionPricePreview(e):await this.handleSubscriptionLivePreview(e),i&&this.initPreviewControls(e)}}}initPreviewControls(t){document.addEventListener("DOMContentLoaded",()=>{const e=t.variants.find(b=>b.id===t.currentVariant),i=e?.label||"a",s=t.variants,r=document.createElement("div");r.id="shoplift-preview-control";const n=document.createElement("div"),o=document.createElement("img");o.src=_t,o.height=24,o.width=14,n.style.padding="0 16px",n.style.lineHeight="100%",n.appendChild(o),r.appendChild(n);const l=document.createElement("div");l.id="shoplift-preview-variant-selector";const c=document.createElement("button");c.id="shoplift-preview-variant-menu-trigger";const d=document.createElement("div");d.className="menu-variant-label",d.style.backgroundColor=this.getVariantColor(i).bg,d.style.color=this.getVariantColor(i).text,d.innerText=i.toUpperCase(),c.appendChild(d);const p=document.createElement("span");if(p.id="shoplift-preview-variant-title",p.innerText=e?this.getDefaultVariantTitle(e):"Untitled variant "+i.toUpperCase(),c.appendChild(p),s.length>1){const b=document.createElement("img");b.src=xt,b.width=12,b.height=12,b.style.height="12px",b.style.width="12px",c.appendChild(b);const k=document.createElement("div");k.className="preview-variant-menu";for(const S of t.variants.filter(P=>P.id!==t.currentVariant)){const P=document.createElement("div");P.className="preview-variant-menu--item";const _=document.createElement("div");_.className="menu-variant-label",_.style.backgroundColor=this.getVariantColor(S.label).bg,_.style.color=this.getVariantColor(S.label).text,_.style.flexShrink="0",_.innerText=S.label.toUpperCase(),P.appendChild(_);const C=document.createElement("span");C.innerText=this.getDefaultVariantTitle(S),P.appendChild(C),P.addEventListener("click",()=>{this.pickVariant(S.id)}),k.appendChild(P)}l.appendChild(k),c.addEventListener("click",()=>{k.className!=="preview-variant-menu preview-variant-menu__visible"?k.classList.add("preview-variant-menu__visible"):k.classList.remove("preview-variant-menu__visible")}),document.addEventListener("click",S=>{S.target instanceof Element&&!c.contains(S.target)&&k.className==="preview-variant-menu preview-variant-menu__visible"&&k.classList.remove("preview-variant-menu__visible")})}else c.style.pointerEvents="none",d.style.margin="0";if(l.appendChild(c),r.appendChild(l),t.hasSubscription){this.subscriptionPreviewWarningCleanup?.();const b=zt();r.appendChild(b.root),this.subscriptionPreviewWarningCleanup=b.cleanup}const h=document.createElement("div"),u=document.createElement("button");u.id="shoplift-exit-preview-button",u.innerText="Exit",h.appendChild(u),u.addEventListener("click",()=>{this.exitPreview()}),r.appendChild(h),document.body.appendChild(r),requestAnimationFrame(()=>{r.classList.add("visible")})}),this.ensureCartAttributesForExistingPriceTests(!0)}pickVariant(t){if(this.state.temporary.previewConfig){const e=this.state.temporary.previewConfig,i=new URL(window.location.toString());if(e.testTypeCategory===M.UrlRedirect){const s=e.variants.find(r=>r.id===e.currentVariant)?.redirectUrl;if(i.pathname===s){const r=e.variants.find(n=>n.id===t)?.redirectUrl;r&&(i.pathname=r)}}if(e.testTypeCategory===M.Template){const s=e.variants.find(r=>r.id===e.currentVariant)?.pathName;if(s&&i.pathname===s){const r=e.variants.find(n=>n.id===t)?.pathName;r&&r!==s&&(i.pathname=r)}}e.currentVariant=t,this.persistTemporaryState(),this.queueRedirect(i)}}exitPreview(){const t=new URL(window.location.toString());if(this.state.temporary.previewConfig?.testTypeCategory===M.Template&&t.searchParams.delete("view"),this.state.temporary.previewConfig?.testTypeCategory===M.Script&&t.searchParams.delete("slVariant"),this.state.temporary.previewConfig?.testTypeCategory===M.UrlRedirect){const i=this.state.temporary.previewConfig.variants.filter(r=>!r.isControl&&r.redirectUrl!==null).map(r=>r.redirectUrl),s=this.state.temporary.previewConfig.variants.find(r=>r.label==="a")?.redirectUrl;i.includes(t.pathname)&&s&&(t.pathname=s)}this.state.temporary.isMerchant=!1,t.searchParams.delete("isShopliftMerchant"),this.state.temporary.previewConfig=void 0,this.persistTemporaryState(),this.subscriptionPreviewWarningCleanup?.(),this.subscriptionPreviewWarningCleanup=null,this.hidePage(),this.queueRedirect(t)}handleTemplatePreview(t){const e=t.currentVariant,i=t.variants.find(l=>l.id===e);if(!i)return!1;const s=t.variants.find(l=>l.isControl);if(!s)return!1;this.log("Setting up template preview for type",s.type);const r=new URL(window.location.toString()),n=r.searchParams.get("view"),o=i.type===s.type;return!o&&!i.isControl&&template.suffix===s.affix&&this.typeFromTemplate()===s.type&&i.pathName!==null?(this.log("Hit control template type, redirecting to the variant url"),this.hidePage(),r.pathname=i.pathName,this.queueRedirect(r),!0):(!i.isControl&&this.typeFromTemplate()==i.type&&template.suffix===s.affix&&o&&n!==(i.affix||"__DEFAULT__")&&(this.log("Template type and affix match control, updating the view param"),r.searchParams.delete("view"),this.log("Setting the new viewParam to",i.affix||"__DEFAULT__"),this.hidePage(),r.searchParams.set("view",i.affix||"__DEFAULT__"),this.queueRedirect(r)),n!==null&&n!==(i.affix||"__DEFAULT__")&&(r.searchParams.delete("view"),this.hidePage(),this.queueRedirect(r)),!0)}handleUrlPreview(t){const e=t.currentVariant,i=t.variants.find(n=>n.id===e),s=t.variants.find(n=>n.isControl)?.redirectUrl;if(!i)return!1;this.log("Setting up URL redirect preview");const r=new URL(window.location.toString());return r.pathname===s&&!i.isControl&&i.redirectUrl!==null&&(this.log("Url matches control, redirecting"),this.hidePage(),r.pathname=i.redirectUrl,this.queueRedirect(r)),!0}handleScriptPreview(t){const e=t.currentVariant,i=t.variants.find(n=>n.id===e);if(!i)return!1;this.log("Setting up script preview");const s=new URL(window.location.toString());return s.searchParams.get("slVariant")!==i.id&&(this.log("current id doesn't match the variant, redirecting"),s.searchParams.delete("slVariant"),this.log("Setting the new slVariantParam"),this.hidePage(),s.searchParams.set("slVariant",i.id),this.queueRedirect(s)),!0}async handlePricePreview(t){const e=t.currentVariant,i=t.variants.find(s=>s.id===e);return i?(this.log("Setting up price preview"),i.domSelectors&&i.domSelectors.length>0&&(U(document,{testId:t.testId,hypothesisId:i.id,selectors:i.domSelectors}),this.ensureCartAttributesForExistingPriceTests(!0)),!0):!1}async handleSubscriptionPricePreview(t){const e=t.variants.find(i=>i.id===t.currentVariant);e?.subscriptionData&&(this.log("Setting up subscription price preview"),await Nt({id:e.id,isControl:e.isControl,subscriptionData:e.subscriptionData,priceData:e.priceData},(i,...s)=>this.log(i,...s)))}async handleSubscriptionLivePreview(t){this.testConfigs.find(s=>s.id===t.testId)?.hypotheses.find(s=>s.id===t.currentVariant)?.subscriptionData&&(this.log("Setting up subscription live preview"),this.subscriptionSwapDone=!1,this.subscriptionOneTimeDone=!1,this.subscriptionPriceDone=!1,await this.subscriptionSwap(),await this.subscriptionOneTimePrice(),await this.subscriptionPriceChange())}async finalize(){const t=await this.getCartState();t!==null&&this.queueCartUpdate(t),this.pruneStateAndSave(),await this.syncAllEvents()}setShoplift(){this.log("Setting up public API");const e=this.urlParams.get("slVariant")==="true",i=e?null:this.urlParams.get("slVariant");window.shoplift={isHypothesisActive:async s=>{if(this.log("Script checking variant for hypothesis '%s'",s),e)return this.log("Forcing variant for hypothesis '%s'",s),!0;if(i!==null)return this.log("Forcing hypothesis '%s'",i),s===i;const r=this.testConfigs.find(o=>o.hypotheses.some(l=>l.id===s));if(!r)return this.log("No test found for hypothesis '%s'",s),!1;const n=this.state.essential.visitorTests.find(o=>o.testId===r.id);return n?(this.log("Active visitor test found",s),n.hypothesisId===s):(await this.manuallySplitVisitor(r),this.testConfigs.some(o=>o.hypotheses.some(l=>l.id===s&&this.state.essential.visitorTests.some(c=>c.hypothesisId===l.id))))},setAnalyticsConsent:async s=>{await this.onConsentChange(s,!0)},getVisitorData:()=>({visitor:this.state.analytics.visitor,visitorTests:this.state.essential.visitorTests.filter(s=>!s.isInvalid).map(s=>{const{shouldSendToGa:r,savedAt:n,...o}=s;return o})})}}setShopliftStub(){this.log("Setting up stubbed public API");const e=this.urlParams.get("slVariant")==="true",i=e?null:this.urlParams.get("slVariant");window.shoplift={isHypothesisActive:s=>Promise.resolve(e||s===i),setAnalyticsConsent:()=>Promise.resolve(),getVisitorData:()=>({visitor:null,visitorTests:[]})}}async manuallySplitVisitor(t){this.log("Starting manual split for test '%s'",t.id),await this.handleVisitorTest([t]);const e=this.getReservationForTest(t.id);e&&!e.isRealized&&e.entryCriteriaKey&&(this.log("Realizing manual API reservation for test '%s'",t.id),this.realizeReservationForCriteria(e.entryCriteriaKey)),this.saveState(),this.syncAllEvents()}async handleVisitorTest(t){await this.filterTestsByAudience(this.testConfigs,this.state.analytics.visitor??this.buildBaseVisitor(),this.state.essential.visitorTests),this.pruneStaleVisitorTests(),this.deriveCategoryFromExistingTests(),this.clearStaleReservations();let e=t?t.filter(i=>this.testsFilteredByAudience.some(s=>s.id===i.id)):[...this.testsForUrl(this.testsFilteredByAudience),...this.domTestsForUrl(this.testsFilteredByAudience)];try{if(e.length===0)return this.log("No tests found"),!1;this.log("Checking for existing visitor test on page");const i=this.getCurrentVisitorHypothesis(e);if(i){this.log("Found current visitor test");const l=this.considerRedirect(i);return l&&(this.log("Redirecting for current visitor test"),this.redirect(i)),l}const s=this.getReservationForCurrentPage();if(s){this.log("Found matching reservation for current page: %s",s.testId);const l=this.getHypothesis(s.hypothesisId);if(l){l.type!=="price"&&this.realizeReservationForCriteria(s.entryCriteriaKey);const c=this.considerRedirect(l);return c&&this.redirect(l),c}}this.log("No active test relation for test page");const r=this.testsForUrl(this.inactiveTestConfigs.filter(l=>this.testIsPaused(l)&&l.hypotheses.some(c=>this.state.essential.visitorTests.some(d=>d.hypothesisId===c.id)))).map(l=>l.id);if(r.length>0)return this.log("Visitor has paused tests for test page, skipping test assignment: %o",r),!1;if(!this.state.temporary.testCategory){const l=this.testsFilteredByAudience.filter(d=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(d))),c=this.testsFilteredByAudience.filter(d=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(d)));if(this.log("Category dice roll - global tests: %o, conditional tests: %o",l.map(d=>({id:d.id,title:d.title,criteria:this.getEntryCriteriaKey(d)})),c.map(d=>({id:d.id,title:d.title,criteria:this.getEntryCriteriaKey(d)}))),l.length>0&&c.length>0){const d=l.length,p=c.length,h=d+p,u=Math.random()*h;this.state.temporary.testCategory=u<d?"global":"conditional",this.log("Category dice roll: rolled %.2f of %d (global weight: %d, conditional weight: %d), selected '%s'",u,h,d,p,this.state.temporary.testCategory)}else l.length>0?(this.state.temporary.testCategory="global",this.log("Only global tests available, setting category to global")):(this.state.temporary.testCategory="conditional",this.log("Only conditional tests available, setting category to conditional"));this.persistTemporaryState()}const n=this.state.temporary.testCategory;if(this.log("Visitor test category: %s",n),n==="global"){const l=this.testsFilteredByAudience.filter(c=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)));for(const c of l)this.markTestAsBlocked(c,"category:global");e=e.filter(c=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)))}else{const l=this.testsFilteredByAudience.filter(c=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)));for(const c of l)this.markTestAsBlocked(c,"category:conditional");e=e.filter(c=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)))}if(e.length===0)return this.log("No tests remaining after category filter"),!1;this.createReservations(e);const o=this.getReservationForCurrentPage();if(o&&!o.isRealized){const l=this.getHypothesis(o.hypothesisId);if(l){l.type!=="price"&&this.realizeReservationForCriteria(o.entryCriteriaKey);const c=this.considerRedirect(l);return c&&(this.log("Redirecting for new test"),this.redirect(l)),c}}return!1}finally{this.includeInDomTests(),this.saveState()}}includeInDomTests(){this.applyControlForAudienceFilteredPriceTests();const t=this.getDomTestsForCurrentUrl(),e=this.getVisitorDomHypothesis(t);for(const i of t){this.log("Evaluating dom test '%s'",i.id);const s=i.hypotheses.some(u=>u.type==="price");if(this.state.essential.visitorTests.find(u=>u.testId===i.id&&u.isInvalid&&!u.hypothesisId)){if(this.log("Visitor is blocked from test '%s', applying control prices if price test",i.id),s){const u=i.hypotheses.find(b=>b.isControl);u?.priceData&&(this.applyPriceTestWithMapLookup(i.id,u,[u],()=>{this.log("Control prices applied for blocked visitor, no metrics tracked")}),this.updatePriceTestHiddenInputs(i.id,"control",!1))}continue}const n=this.getReservationForTest(i.id);let o=null,l=!1;const c=e.find(u=>i.hypotheses.some(b=>u.id===b.id));if(n)o=this.getHypothesis(n.hypothesisId)??null,this.log("Using reserved hypothesis '%s' for test '%s'",n.hypothesisId,i.id);else if(c)o=c,this.log("Using existing hypothesis assignment for test '%s'",i.id);else if(s){const u=this.visitorActiveTestTypeWithReservations();u?(l=!0,this.log("Visitor already in test type '%s', treating as non-test for price test '%s'",u,i.id)):o=this.pickHypothesis(i)}else o=this.pickHypothesis(i);if(l&&s){const u=i.hypotheses.find(b=>b.isControl);u?.priceData&&(this.log("Applying control prices for non-test visitor on price test '%s' (Map-based)",i.id),this.applyPriceTestWithMapLookup(i.id,u,[u],()=>{this.log("Control prices applied for non-test visitor, no metrics tracked")}),this.updatePriceTestHiddenInputs(i.id,"control",!1));continue}if(!o){this.log("Failed to pick hypothesis for test");continue}this.sendDiagnosticTelemetry("assignment",i.id,{hypothesisId:o.id,isControl:o.isControl,testType:o.type});const d=i.bayesianRevision??4,p=o.type==="price",h=d>=5;if(p&&h){if(this.log(`Price test with Map-based lookup (v${d}): ${i.id}`),!o.priceData){this.log("No price data for hypothesis '%s', skipping",o.id);continue}const u=o.isControl?"control":"variant";this.log(`Setting up Map-based price test for ${u} (test: ${i.id})`),this.applyPriceTestWithMapLookup(i.id,o,i.hypotheses,b=>{const k=this.getReservationForTest(b);k&&!k.isRealized&&k.entryCriteriaKey?this.realizeReservationForCriteria(k.entryCriteriaKey):this.queueAddVisitorToTest(b,o),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()});continue}if(p&&!h){this.log(`Price test without viewport tracking (v${d}): ${i.id}`);const u=this.getDomSelectorsForHypothesis(o);if(u.length===0)continue;U(document,{testId:i.id,hypothesisId:o.id,selectors:u},b=>{this.queueAddVisitorToTest(b,o),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()});continue}if(!o.domSelectors||o.domSelectors.length===0){this.log("No selectors found, skipping hypothesis");continue}U(document,{testId:i.id,hypothesisId:o.id,selectors:o.domSelectors},u=>{this.queueAddVisitorToTest(u,o),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()})}}considerRedirect(t){if(this.log("Considering redirect for hypothesis '%s'",t.id),t.isControl)return this.log("Skipping redirect for control"),!1;if(t.type==="basicScript"||t.type==="manualScript")return this.log("Skipping redirect for script test"),!1;const e=this.state.essential.visitorTests.find(n=>n.hypothesisId===t.id),i=new URL(window.location.toString()),r=new URLSearchParams(window.location.search).get("view");if(t.type==="theme"){if(!(t.themeId===themeId)){if(this.log("Theme id '%s' is not hypothesis theme ID '%s'",t.themeId,themeId),this.isAppProxyPath())return this.log("On App Proxy path, skipping theme redirect to avoid infinite loop"),!1;if(e&&e.themeId!==t.themeId&&(e.themeId===themeId||!this.isThemePreview()))this.log("On old theme, redirecting and updating local visitor"),e.themeId=t.themeId;else if(this.isThemePreview())return this.log("On non-test theme, skipping redirect"),!1;return this.log("Hiding page to redirect for theme test"),this.hidePage(),!0}return!1}else if(t.type!=="dom"&&t.type!=="price"&&t.affix!==template.suffix&&t.affix!==r||t.redirectPath&&!i.pathname.endsWith(t.redirectPath))return this.log("Hiding page to redirect for template test"),this.hidePage(),!0;return this.log("Not redirecting"),!1}redirect(t){if(this.log("Redirecting to hypothesis '%s'",t.id),t.isControl)return;const e=new URL(window.location.toString());if(e.searchParams.delete("view"),t.redirectPath){const i=RegExp("^(/w{2}-w{2})/").exec(e.pathname);if(i&&i.length>1){const s=i[1];e.pathname=`${s}${t.redirectPath}`}else e.pathname=t.redirectPath}else t.type==="theme"?(e.searchParams.set("_ab","0"),e.searchParams.set("_fd","0"),e.searchParams.set("_sc","1"),e.searchParams.set("preview_theme_id",t.themeId.toString())):t.type!=="urlRedirect"&&e.searchParams.set("view",t.affix);this.queueRedirect(e)}async refreshVisitor(t){if(t===null||!this.state.essential.isFirstLoad||!this.testConfigs.some(i=>i.visitorOption!=="all"))return;this.log("Refreshing visitor"),this.hidePage();const e=await this.getVisitor(t);e&&e.id&&this.updateLocalVisitor(e)}buildBaseVisitor(){return{shopifyAnalyticsId:this.shopifyAnalyticsId,device:this.device,country:null,...this.state.essential.initialState}}getInitialState(){const t=this.getUTMValue("utm_source")??"",e=this.getUTMValue("utm_medium")??"",i=this.getUTMValue("utm_campaign")??"",s=this.getUTMValue("utm_content")??"",r=window.document.referrer,n=this.device;return{createdAt:new Date,utmSource:t,utmMedium:e,utmCampaign:i,utmContent:s,referrer:r,device:n}}checkForThemePreview(){return this.log("Checking for theme preview"),window.location.hostname.endsWith(".shopifypreview.com")?(this.log("on shopify preview domain"),this.clearThemeBar(!0,!1,this.state),document.querySelector("#sl-preview-bar-hide")?.remove(),!1):this.isThemePreview()?this.state.essential.visitorTests.some(t=>t.isThemeTest&&t.hypothesisId!=null&&this.getHypothesis(t.hypothesisId)&&t.themeId===themeId)?(this.log("On active theme test, removing theme bar"),this.clearThemeBar(!1,!0,this.state),!1):this.state.essential.visitorTests.some(t=>t.isThemeTest&&t.hypothesisId!=null&&!this.getHypothesis(t.hypothesisId)&&t.themeId===themeId)?(this.log("Visitor is on an inactive theme test, redirecting to main theme"),this.redirectToMainTheme(),!0):this.state.essential.isFirstLoad?(this.log("No visitor found on theme preview, redirecting to main theme"),this.redirectToMainTheme(),!0):this.inactiveTestConfigs.some(t=>t.hypotheses.some(e=>e.themeId===themeId))?(this.log("Current theme is an inactive theme test, redirecting to main theme"),this.redirectToMainTheme(),!0):this.testConfigs.some(t=>t.hypotheses.some(e=>e.themeId===themeId))?(this.log("Falling back to clearing theme bar"),this.clearThemeBar(!1,!0,this.state),!1):(this.log("No tests on current theme, skipping script"),this.clearThemeBar(!0,!1,this.state),document.querySelector("#sl-preview-bar-hide")?.remove(),!0):(this.log("Not on theme preview"),this.clearThemeBar(!0,!1,this.state),!1)}redirectToMainTheme(){this.hidePage();const t=new URL(window.location.toString());t.searchParams.set("preview_theme_id",""),this.queueRedirect(t)}testsForUrl(t){const e=new URL(window.location.href),i=this.typeFromTemplate();return t.filter(s=>s.hypotheses.some(r=>r.type!=="dom"&&r.type!=="price"&&(r.isControl&&r.type===i&&r.affix===template.suffix||r.type==="theme"||r.isControl&&r.type==="urlRedirect"&&r.redirectPath&&e.pathname.endsWith(r.redirectPath)||r.type==="basicScript"))&&(s.ignoreTestViewParameterEnforcement||!e.searchParams.has("view")||s.hypotheses.map(r=>r.affix).includes(e.searchParams.get("view")??"")))}domTestsForUrl(t){const e=new URL(window.location.href);return t.filter(i=>i.hypotheses.some(s=>s.type!=="dom"&&s.type!=="price"?!1:s.type==="price"&&s.priceData&&s.priceData.variants.length>0?!0:s.domSelectors&&s.domSelectors.some(r=>new RegExp(it(r)).test(e.toString()))))}async filterTestsByAudience(t,e,i){const s=[];let r=e.country;!r&&t.some(n=>n.requiresCountry&&!i.some(o=>o.testId===n.id))&&(this.log("Hiding page to check geoip"),this.hidePage(),r=await this.makeJsonRequest({method:"get",url:`${this.eventHost}/api/v0/visitors/get-country`,signal:AbortSignal.timeout(this.getCountryTimeout)}).catch(n=>(this.log("Error getting country",n),null)));for(const n of t){if(this.log("Checking audience for test '%s'",n.id),this.state.essential.visitorTests.some(c=>c.testId===n.id&&c.hypothesisId==null)){console.log(`Skipping blocked test '${n.id}'`);continue}const o=this.visitorCreatedDuringTestActive(n.statusHistory);(i.some(c=>c.testId===n.id&&(n.device==="all"||n.device===e.device&&n.device===this.device))||this.isTargetAudience(n,e,o,r))&&(this.log("Visitor is in audience for test '%s'",n.id),s.push(n))}this.testsFilteredByAudience=s}isTargetAudience(t,e,i,s){const r=this.getChannel(e);return(t.device==="all"||t.device===e.device&&t.device===this.device)&&(t.visitorOption==="all"||t.visitorOption==="new"&&i||t.visitorOption==="returning"&&!i)&&(t.targetAudiences.length===0||t.targetAudiences.reduce((n,o)=>n||o.reduce((l,c)=>l&&c(e,i,r,s),!0),!1))}visitorCreatedDuringTestActive(t){let e="";for(const i of t){if(this.state.analytics.visitor!==null&&this.state.analytics.visitor.createdAt<i.createdAt||this.state.essential.initialState.createdAt<i.createdAt)break;e=i.status}return e==="active"}getDomTestsForCurrentUrl(){return this.domTestsForUrl(this.testsFilteredByAudience)}getCurrentVisitorHypothesis(t){return t.flatMap(e=>e.hypotheses).find(e=>e.type!=="dom"&&e.type!=="price"&&this.state.essential.visitorTests.some(i=>i.hypothesisId===e.id))}getVisitorDomHypothesis(t){return t.flatMap(e=>e.hypotheses).filter(e=>(e.type==="dom"||e.type==="price")&&this.state.essential.visitorTests.some(i=>i.hypothesisId===e.id))}getHypothesis(t){return this.testConfigs.filter(e=>e.hypotheses.some(i=>i.id===t)).map(e=>e.hypotheses.find(i=>i.id===t))[0]}getActiveAssignment(){if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const e=this.state.temporary.previewConfig;return e.currentVariant&&e.testId?{testId:e.testId,hypothesisId:e.currentVariant}:null}const t=this.state.essential.visitorTests.find(e=>e.hypothesisId);return t?.hypothesisId?{testId:t.testId,hypothesisId:t.hypothesisId}:null}findActiveSubscriptionTestControl(){for(const t of this.testConfigs){const e=t.hypotheses.find(i=>i.isControl);if(e?.subscriptionData)return{testId:t.id,hypothesis:e}}return null}getDomSelectorsForHypothesis(t){if(!t)return[];if(t.domSelectors&&t.domSelectors.length>0)return t.domSelectors;if(t.priceData){const e=`${this.priceSelectorsSessionKey}_${t.id}`;try{const s=sessionStorage.getItem(e);if(s){const r=JSON.parse(s);return t.domSelectors=r,this.log("Loaded %d price selectors from cache for hypothesis '%s'",r.length,t.id),r}}catch{}const i=Ot(t.priceData);t.domSelectors=i;try{sessionStorage.setItem(e,JSON.stringify(i)),this.log("Generated and cached %d price selectors for hypothesis '%s'",i.length,t.id)}catch{this.log("Generated %d price selectors for hypothesis '%s' (cache unavailable)",i.length,t.id)}return i}return[]}hasThemeTest(t){return t.some(e=>e.hypotheses.some(i=>i.type==="theme"))}hasTestThatIsNotThemeTest(t){return t.some(e=>e.hypotheses.some(i=>i.type!=="theme"&&i.type!=="dom"&&i.type!=="price"))}hasThemeAndOtherTestTypes(t){return this.hasThemeTest(t)&&this.hasTestThatIsNotThemeTest(t)}testIsPaused(t){return t.status==="paused"||t.status==="incompatible"||t.status==="suspended"}visitorActiveTestType(){const t=this.state.essential.visitorTests.filter(e=>this.testConfigs.some(i=>i.hypotheses.some(s=>s.id==e.hypothesisId)));return t.length===0?null:t.some(e=>e.isThemeTest)?"theme":"templateOrUrlRedirect"}getReservationType(t){return t==="price"||this.isTemplateTestType(t)?"deferred":"immediate"}isTemplateTestType(t){return["product","collection","landing","index","cart","search","blog","article","collectionList"].includes(t)}getEntryCriteriaKey(t){const e=t.hypotheses.find(i=>i.isControl);if(!e)return`unknown:${t.id}`;switch(e.type){case"theme":return"global:theme";case"basicScript":return"global:autoApi";case"price":return"global:price";case"manualScript":return`conditional:manualApi:${t.id}`;case"urlRedirect":return`conditional:url:${e.redirectPath||"unknown"}`;default:return`conditional:template:${e.type}`}}isGlobalEntryCriteria(t){return t.startsWith("global:")}groupTestsByEntryCriteria(t){const e=new Map;for(const i of t){const s=this.getEntryCriteriaKey(i),r=e.get(s)||[];r.push(i),e.set(s,r)}return e}doesCurrentPageMatchEntryCriteria(t){if(this.isGlobalEntryCriteria(t))return!0;if(t==="conditional:manualApi")return!1;if(t.startsWith("conditional:url:")){const e=t.replace("conditional:url:","");return window.location.pathname.endsWith(e)}if(t.startsWith("conditional:template:")){const e=t.replace("conditional:template:","");return this.typeFromTemplate()===e}return!1}hasActiveReservation(){const t=this.getActiveReservations();return Object.values(t).some(e=>!e.isRealized)}getActiveReservation(){const t=this.getActiveReservations();return Object.values(t).find(e=>!e.isRealized)??null}clearStaleReservations(){const t=this.state.temporary.testReservations;if(!t)return;let e=!1;for(const[i,s]of Object.entries(t)){const r=this.testConfigs.find(o=>o.id===s.testId);if(!r){this.log("Test '%s' no longer in config, clearing reservation for criteria '%s'",s.testId,i),delete t[i],e=!0;continue}if(r.status!=="active"){this.log("Test '%s' status is '%s', clearing reservation for criteria '%s'",s.testId,r.status,i),delete t[i],e=!0;continue}this.testsFilteredByAudience.some(o=>o.id===s.testId)||(this.log("Visitor no longer passes audience for test '%s', clearing reservation for criteria '%s'",s.testId,i),delete t[i],e=!0)}e&&this.persistTemporaryState()}createReservations(t){if(this.state.temporary.testReservations||(this.state.temporary.testReservations={}),this.state.temporary.rolledEntryCriteria||(this.state.temporary.rolledEntryCriteria=[]),this.state.temporary.testCategory==="global"){this.createSingleReservation(t,"global");return}const i=t.filter(o=>this.doesCurrentPageMatchEntryCriteria(this.getEntryCriteriaKey(o))),s=t.filter(o=>!this.doesCurrentPageMatchEntryCriteria(this.getEntryCriteriaKey(o)));this.log("Conditional tests split - matching current page: %d, not matching: %d",i.length,s.length),i.length>0&&this.log("Tests matching current page (same pool): %o",i.map(o=>({id:o.id,title:o.title,criteria:this.getEntryCriteriaKey(o)})));const r=`conditional:current-page:${this.typeFromTemplate()}`;if(i.length>0&&!this.state.temporary.rolledEntryCriteria.includes(r)){this.createSingleReservation(i,r);for(const o of i){const l=this.getEntryCriteriaKey(o);this.state.temporary.rolledEntryCriteria.includes(l)||this.state.temporary.rolledEntryCriteria.push(l)}}const n=this.groupTestsByEntryCriteria(s);for(const[o,l]of n){if(this.state.temporary.rolledEntryCriteria.includes(o)){this.log("Already rolled for criteria '%s', skipping",o);continue}if(l.some(S=>this.state.essential.visitorTests.some(P=>P.testId===S.id))){this.log("Visitor already has VT for criteria '%s', skipping",o),this.state.temporary.rolledEntryCriteria.push(o);continue}const d=[...l].sort((S,P)=>S.id.localeCompare(P.id));this.log("Test dice roll for criteria '%s' - available tests: %o",o,d.map(S=>({id:S.id,title:S.title})));const p=Math.floor(Math.random()*d.length),h=d[p];this.log("Test dice roll: picked index %d of %d, selected test '%s' (%s)",p+1,l.length,h.id,h.title);const u=this.pickHypothesis(h);if(!u){this.log("No hypothesis picked for test '%s'",h.id);continue}this.sendDiagnosticTelemetry("assignment",h.id,{hypothesisId:u.id,isControl:u.isControl,testType:u.type});const b=this.getReservationType(u.type),k={testId:h.id,hypothesisId:u.id,testType:u.type,reservationType:b,isThemeTest:u.type==="theme",themeId:u.themeId,createdAt:new Date,isRealized:!1,entryCriteriaKey:o};this.state.temporary.testReservations[o]=k,this.state.temporary.rolledEntryCriteria.push(o),this.log("Created %s reservation for test '%s' (criteria: %s)",b,h.id,o);for(const S of l)S.id!==h.id&&this.markTestAsBlocked(S,o)}this.persistTemporaryState()}createSingleReservation(t,e){if(this.state.temporary.rolledEntryCriteria.includes(e)){this.log("Already rolled for pool '%s', skipping",e);return}if(t.some(p=>this.state.essential.visitorTests.some(h=>h.testId===p.id&&!h.isInvalid))){this.log("Visitor already has VT for pool '%s', skipping",e),this.state.temporary.rolledEntryCriteria.push(e);return}if(t.length===0){this.log("No tests in pool '%s'",e);return}const s=[...t].sort((p,h)=>p.id.localeCompare(h.id));this.log("Test dice roll for pool '%s' - available tests: %o",e,s.map(p=>({id:p.id,title:p.title,criteria:this.getEntryCriteriaKey(p)})));const r=Math.floor(Math.random()*s.length),n=s[r];this.log("Test dice roll: picked index %d of %d, selected test '%s' (%s)",r,t.length,n.id,n.title);const o=this.pickHypothesis(n);if(!o){this.log("No hypothesis picked for test '%s'",n.id);return}this.sendDiagnosticTelemetry("assignment",n.id,{hypothesisId:o.id,isControl:o.isControl,testType:o.type});const l=this.getReservationType(o.type),c=this.getEntryCriteriaKey(n),d={testId:n.id,hypothesisId:o.id,testType:o.type,reservationType:l,isThemeTest:o.type==="theme",themeId:o.themeId,createdAt:new Date,isRealized:!1,entryCriteriaKey:c};this.state.temporary.testReservations[c]=d,this.state.temporary.rolledEntryCriteria.push(e),this.log("Created %s reservation for test '%s' from pool '%s' (criteria: %s)",l,n.id,e,c);for(const p of t)p.id!==n.id&&this.markTestAsBlocked(p,`pool:${e}`);this.persistTemporaryState()}markTestAsBlocked(t,e){this.state.essential.visitorTests.some(i=>i.testId===t.id)||(this.log("Blocking visitor from test '%s' (reason: %s)",t.id,e),this.state.essential.visitorTests.push({createdAt:new Date,testId:t.id,hypothesisId:null,isThemeTest:t.hypotheses.some(i=>i.type==="theme"),shouldSendToGa:!1,isSaved:!0,isInvalid:!0,themeId:void 0}))}realizeReservationForCriteria(t){const e=this.state.temporary.testReservations?.[t];if(!e)return this.log("No reservation found for criteria '%s'",t),!1;if(e.isRealized)return this.log("Reservation already realized for criteria '%s'",t),!1;if(this.state.essential.visitorTests.some(s=>s.testId===e.testId&&!s.isInvalid))return this.log("Visitor already assigned to test '%s'",e.testId),!1;const i=this.getHypothesis(e.hypothesisId);return i?(e.isRealized=!0,this.persistTemporaryState(),this.queueAddVisitorToTest(e.testId,i),this.saveState(),this.log("Realized reservation for test '%s' (criteria: %s)",e.testId,t),!0):(this.log("Hypothesis '%s' not found",e.hypothesisId),!1)}getActiveReservations(){return this.state.temporary.testReservations??{}}getReservationForCurrentPage(){const t=this.getActiveReservations();for(const[e,i]of Object.entries(t)){if(i.isRealized)continue;const s=this.testConfigs.find(r=>r.id===i.testId);if(!(!s||s.status!=="active")&&this.doesCurrentPageMatchEntryCriteria(e))return i}return null}getReservationForTest(t){const e=this.getActiveReservations();return Object.values(e).find(i=>i.testId===t)??null}getReservationTestType(){const t=this.getActiveReservations(),e=Object.values(t);if(e.length===0)return null;for(const i of e)if(i.isThemeTest)return"theme";for(const i of e)if(i.testType==="price")return"price";return e.some(i=>!i.isRealized)?"templateOrUrlRedirect":null}hasPriceTests(t){return t.some(e=>e.hypotheses.some(i=>i.type==="price"))}_priceTestProductIds=null;getPriceTestProductIds(){if(this._priceTestProductIds)return this._priceTestProductIds;const t=new Set;for(const e of this.testConfigs)for(const i of e.hypotheses)if(i.type==="price"){for(const s of i.domSelectors||[]){const r=s.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);r?.[1]&&t.add(r[1])}if(i.priceData?.variants)for(const[s]of i.priceData.variants)t.add(s)}return this._priceTestProductIds=t,this.log("Built price test product ID cache with %d products",t.size),t}isProductInAnyPriceTest(t){return this.getPriceTestProductIds().has(t)}visitorActiveTestTypeWithReservations(){const t=this.getActiveReservations();for(const r of Object.values(t)){if(r.isThemeTest)return"theme";if(r.testType==="price")return"price"}if(Object.values(t).some(r=>!r.isRealized)){if(this.state.temporary.testCategory==="global")for(const n of Object.values(t)){if(n.testType==="theme")return"theme";if(n.testType==="price")return"price";if(n.testType==="basicScript")return"theme"}return"templateOrUrlRedirect"}const i=this.state.essential.visitorTests.filter(r=>!r.isInvalid&&this.testConfigs.some(n=>n.hypotheses.some(o=>o.id===r.hypothesisId)));return i.length===0?null:i.some(r=>this.getHypothesis(r.hypothesisId)?.type==="price")?"price":i.some(r=>r.isThemeTest)?"theme":"templateOrUrlRedirect"}applyControlForAudienceFilteredPriceTests(){const t=this.testConfigs.filter(s=>s.status==="active"&&s.hypotheses.some(r=>r.type==="price"));if(t.length===0)return;const e=this.testsFilteredByAudience.filter(s=>s.hypotheses.some(r=>r.type==="price")),i=t.filter(s=>!e.some(r=>r.id===s.id));if(i.length!==0){this.log("Found %d price tests filtered by audience, applying control selectors",i.length);for(const s of i){const r=s.hypotheses.find(c=>c.isControl),n=this.getDomSelectorsForHypothesis(r);if(n.length===0){this.log("No control selectors for audience-filtered price test '%s'",s.id);continue}const o=new URL(window.location.href);n.some(c=>{try{return new RegExp(it(c)).test(o.toString())}catch{return!1}})&&(this.log("Applying control selectors for audience-filtered price test '%s'",s.id),U(document,{testId:s.id,hypothesisId:r.id,selectors:n},()=>{}),this.updatePriceTestHiddenInputs(s.id,"control",!1))}}}pickHypothesis(t){let e=Math.random();const i=t.hypotheses.reduce((r,n)=>r+n.visitorCount,0);return t.hypotheses.sort((r,n)=>r.isControl?n.isControl?0:-1:n.isControl?1:0).reduce((r,n)=>{if(r!==null)return r;const l=t.hypotheses.reduce((c,d)=>c&&d.visitorCount>20,!0)?n.visitorCount/i-n.trafficPercentage:0;return e<=n.trafficPercentage-l?n:(e-=n.trafficPercentage-l,null)},null)}typeFromTemplate(){switch(template.type){case"list-collections":return"collectionList";case"page":return"landing";case"article":case"blog":case"cart":case"collection":case"index":case"product":case"search":return template.type;default:return null}}queueRedirect(t){this.saveState(),this.disableReferrerOverride||(this.log(`Saving temporary referrer override '${document.referrer}'`),this.state.temporary.originalReferrer=document.referrer,this.persistTemporaryState()),window.setTimeout(()=>window.location.assign(t),0),window.setTimeout(()=>{this.syncAllEvents()},2e3)}scheduleRetrySync(){this.clientIdRetryCount>=5||(this.clientIdRetryCount++,window.setTimeout(()=>{this.syncAllEvents()},500))}async syncAllEvents(){const t=async()=>{if(this.isSyncing){window.setTimeout(()=>{(async()=>await t())()},500);return}try{if(this.isSyncing=!0,this.syncGAEvents(),this.shopifyAnalyticsId||(this.shopifyAnalyticsId=this.getShopifyAnalyticsId()),!this.shopifyAnalyticsId){this.scheduleRetrySync();return}await this.syncEvents()}finally{this.isSyncing=!1}};await t()}async syncEvents(){if(!this.state.essential.consentApproved||!this.shopifyAnalyticsId||this.state.analytics.queue.length===0)return;const t=this.state.analytics.queue.length,e=this.state.analytics.queue.splice(0,t);this.log("Syncing %s events",t);try{const i={shop:this.shop,visitorDetails:{shopifyAnalyticsId:this.shopifyAnalyticsId,device:this.state.analytics.visitor?.device??this.device,country:this.state.analytics.visitor?.country??null,...this.state.essential.initialState},events:this.state.essential.visitorTests.filter(r=>!r.isInvalid&&!r.isSaved&&r.hypothesisId!=null).map(r=>new yt(r.testId,r.hypothesisId,r.createdAt)).concat(e)};await this.sendEvents(i);for(const r of this.state.essential.visitorTests.filter(n=>!n.isInvalid&&!n.isSaved&&n.hypothesisId!=null))this.sendDiagnosticTelemetry("event-delivered",r.testId,{hypothesisId:r.hypothesisId,isControl:r.assignedTo==="control",testType:r.testType??"unknown"});const s=await this.getVisitor(this.shopifyAnalyticsId);s!==null&&this.updateLocalVisitor(s);for(const r of this.state.essential.visitorTests.filter(n=>!n.isInvalid&&!n.isSaved))r.isSaved=!0,r.savedAt=Date.now()}catch{this.state.analytics.queue.splice(0,0,...e)}finally{this.saveState()}}syncGAEvents(){if(!this.gaConfig.sendEvents){if(pt)return;pt=!0,this.log("UseGtag is false — skipping GA Events");return}if(this.isSyncingGA){this.log("Already syncing GA - skipping GA events");return}const t=this.state.essential.visitorTests.filter(e=>e.shouldSendToGa);t.length!==0&&(this.isSyncingGA=!0,this.log("Syncing %s GA Events",t.length),Promise.allSettled(t.map(e=>this.sendGAEvent(e))).then(()=>this.log("All gtag events sent")).finally(()=>this.isSyncingGA=!1))}sendGAEvent(t){return new Promise(e=>{this.log("Sending GA Event for test %s, hypothesis %s",t.testId,t.hypothesisId);const i=()=>{this.log("GA acknowledged event for hypothesis %s",t.hypothesisId),t.shouldSendToGa=!1,this.persistEssentialState(),e()},s={exp_variant_string:`SL-${t.testId}-${t.hypothesisId}`};this.shopliftDebug&&Object.assign(s,{debug_mode:!0});function r(n,o,l){window.dataLayer=window.dataLayer||[],window.dataLayer.push(arguments)}this.gaConfig.mode==="gtag"?r("event","experience_impression",{...s,event_callback:i}):(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"experience_impression",...s,eventCallback:i}))})}updateLocalVisitor(t){let e;({visitorTests:e,...this.state.analytics.visitor}=t),this.log("updateLocalVisitor - server returned %d tests: %o",e.length,e.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isInvalid:s.isInvalid}))),this.log("updateLocalVisitor - local has %d tests: %o",this.state.essential.visitorTests.length,this.state.essential.visitorTests.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isSaved:s.isSaved,isInvalid:s.isInvalid})));const i=300*1e3;for(const s of this.state.essential.visitorTests.filter(r=>r.isSaved&&(!r.savedAt||Date.now()-r.savedAt>i)&&!e.some(n=>n.testId===r.testId)))this.log("updateLocalVisitor - marking LOCAL test as INVALID (isSaved && not in server): testId=%s, hypothesisId=%s",s.testId,s.hypothesisId),s.isInvalid=!0;for(const s of e){const r=this.state.essential.visitorTests.findIndex(o=>o.testId===s.testId);if(!(r!==-1))this.log("updateLocalVisitor - ADDING server test (not found locally): testId=%s, hypothesisId=%s",s.testId,s.hypothesisId),this.state.essential.visitorTests.push(s);else{const o=this.state.essential.visitorTests.at(r);this.log("updateLocalVisitor - REPLACING local test with server test: testId=%s, local hypothesisId=%s -> server hypothesisId=%s, local isInvalid=%s -> false",s.testId,o?.hypothesisId,s.hypothesisId,o?.isInvalid),s.isInvalid=!1,s.shouldSendToGa=o?.shouldSendToGa??!1,s.testType=o?.testType,s.assignedTo=o?.assignedTo,s.testTitle=o?.testTitle,this.state.essential.visitorTests.splice(r,1,s)}}this.log("updateLocalVisitor - FINAL local tests: %o",this.state.essential.visitorTests.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isSaved:s.isSaved,isInvalid:s.isInvalid}))),this.state.analytics.visitor.storedAt=new Date}async getVisitor(t){try{return await this.makeJsonRequest({method:"get",url:`${this.eventHost}/api/v0/visitors/by-key/${this.shop}/${t}`})}catch{return null}}async sendEvents(t){await this.makeRequest({method:"post",url:`${this.eventHost}/api/v0/events`,data:JSON.stringify(t)})}sendDiagnosticTelemetry(t,e,i){if(!this.telemetryEnabled||!navigator.sendBeacon)return;const s=this.state.essential.consentApproved,r=JSON.stringify({shop:this.shop,testId:e,checkpoint:t,device:this.device,...s?{visitorId:this.shopifyAnalyticsId??"unknown"}:{},clientTimestamp:Date.now(),consentApproved:s,hasConsentInteraction:this.state.essential.hasConsentInteraction,...i});navigator.sendBeacon(`${this.eventHost}/api/v0/telemetry`,new Blob([r],{type:"text/plain"}))}getUTMValue(t){const i=decodeURIComponent(window.location.search.substring(1)).split("&");for(let s=0;s<i.length;s++){const r=i[s].split("=");if(r[0]===t)return r[1]||null}return null}hidePage(t){this.log("Hiding page"),this.cssHideClass&&!window.document.documentElement.classList.contains(this.cssHideClass)&&(window.document.documentElement.classList.add(this.cssHideClass),t||setTimeout(this.removeAsyncHide(this.cssHideClass),2e3))}showPage(){this.cssHideClass&&this.removeAsyncHide(this.cssHideClass)()}getDeviceType(){function t(){let i=!1;return(function(s){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(s)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(s.substr(0,4)))&&(i=!0)})(navigator.userAgent||navigator.vendor),i}function e(){let i=!1;return(function(s){(/android|ipad|playbook|silk/i.test(s)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(s.substr(0,4)))&&(i=!0)})(navigator.userAgent||navigator.vendor),i}return t()?"mobile":e()?"tablet":"desktop"}removeAsyncHide(t){return()=>{t&&window.document.documentElement.classList.remove(t)}}async getCartState(){try{let t=await this.makeJsonRequest({method:"get",url:`${window.location.origin}/cart.js`});return t===null||(t.note===null&&(t=await this.makeJsonRequest({method:"post",url:`${window.location.origin}/cart/update.js`,data:JSON.stringify({note:""})})),t==null)?null:{token:t.token,total_price:t.total_price,total_discount:t.total_discount,currency:t.currency,items_subtotal_price:t.items_subtotal_price,items:t.items.map(e=>({quantity:e.quantity,variant_id:e.variant_id,key:e.key,price:e.price,final_line_price:e.final_line_price,sku:e.sku,product_id:e.product_id}))}}catch(t){return this.log("Error sending cart info",t),null}}ensureCartAttributesForExistingPriceTests(t){try{if(this.log("Checking visitor assignments for active price tests"),t&&this.state.temporary.previewConfig){const e=this.state.temporary.previewConfig;this.log("Using preview config for merchant:",e.testId);let i="variant";if(e.variants&&e.variants.length>0){const s=e.variants.find(r=>r.id===e.currentVariant);s&&s.isControl&&(i="control")}this.log("Merchant preview - updating hidden inputs:",e.testId,i),this.updatePriceTestHiddenInputs(e.testId,i,!0);return}for(const e of this.state.essential.visitorTests){const i=this.testConfigs.find(n=>n.id===e.testId);if(!i){this.log("Test config not found:",e.testId);continue}const s=i.hypotheses.find(n=>n.id===e.hypothesisId);if(!s||s.type!=="price")continue;const r=s.isControl?"control":"variant";this.log("Updating hidden inputs for price test:",e.testId,r),this.updatePriceTestHiddenInputs(e.testId,r,t)}}catch(e){this.log("Error ensuring cart attributes for existing price tests:",e)}}subscriptionSwapDone=!1;subscriptionHideWrongPlans=null;subscriptionPriceDone=!1;subscriptionUpdateOneTime=null;subscriptionOneTimeDone=!1;swapMap=null;slptValue=null;async subscriptionSwap(){await Lt(this)}async subscriptionPriceChange(){await qt(this)}async subscriptionOneTimePrice(){await Ht(this)}updatePriceTestHiddenInputs(t,e,i){try{this.cleanupPriceTestObservers();const s=`${t}:${e}:${i?"t":"f"}`,r=C=>{const m=C.getAttribute("data-sl-pid");if(!m)return!0;if(i&&this.state.temporary.previewConfig){const w=this.state.temporary.previewConfig,T=e==="control"?"a":"b",f=w.variants.find(v=>v.label===T);if(!f)return!1;for(const v of f.domSelectors||[]){const g=v.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);if(g){const I=g[1];if(this.log(`Extracted ID from selector: ${I}, comparing to: ${m}`),I===m)return this.log("Product ID match found in preview config:",m,"variant:",f.label),!0}else this.log(`Could not extract ID from selector: ${v.cssSelector}`)}return this.log("No product ID match in preview config for:",m,"variant:",T),!1}const y=this.testConfigs.find(w=>w.id===t);if(!y)return this.log("Test config not found for testId:",t),!1;for(const w of y.hypotheses||[]){for(const T of w.domSelectors||[]){const f=T.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);if(f&&f[1]===m)return this.log("Product ID match found in domSelectors:",m,"for test:",t),!0}if(w.priceData?.variants){for(const T of w.priceData.variants)if(T[0]===m)return this.log("Product ID match found in priceData:",m,"for test:",t),!0}}return this.log("No product ID match for:",m,"in test:",t),!1},n=new Set;let o=!1,l=null;const c=(C,m)=>{if(document.querySelectorAll("[data-sl-attribute-p]").forEach(w=>{if(w instanceof Element&&w.nodeType===Node.ELEMENT_NODE&&w.isConnected&&document.contains(w))try{C.observe(w,{childList:!0,subtree:!0,characterData:!0,characterDataOldValue:!0,attributes:!1})}catch(T){this.log(`Failed to observe element (${m}):`,T)}}),document.body&&document.body.isConnected)try{C.observe(document.body,{childList:!0,subtree:!0,characterData:!0,characterDataOldValue:!0,attributes:!1})}catch(w){this.log(`Failed to observe document.body (${m}):`,w)}},d=(C,m,y,w)=>{const T=C.filter(f=>{const v=f.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);return v&&v[1]===w});this.log(`Applying ${y} DOM selectors, total: ${C.length}, filtered: ${T.length}`),T.length>0&&U(document,{testId:t,hypothesisId:m,selectors:T})},p=(C,m)=>{this.log(`Applying DOM selector changes for product ID: ${C}`),m.disconnect(),o=!0;try{if(i&&this.state.temporary.previewConfig){const y=e==="control"?"a":"b",w=this.state.temporary.previewConfig.variants.find(T=>T.label===y);if(!w?.domSelectors){this.log(`No DOM selectors found for preview variant: ${y}`);return}d(w.domSelectors,w.id,"preview config",C)}else{const y=this.testConfigs.find(T=>T.id===t);if(!y){this.log(`No test config found for testId: ${t}`);return}const w=y.hypotheses.find(T=>e==="control"?T.isControl:!T.isControl);if(!w?.domSelectors){this.log(`No DOM selectors found for assignment: ${e}`);return}d(w.domSelectors,w.id,"live config",C)}}finally{l!==null&&clearTimeout(l),l=window.setTimeout(()=>{o=!1,l=null,c(m,"reconnection"),this.log("Re-established innerHTML observer after DOM changes")},50)}},h=new MutationObserver(C=>{if(!o)for(const m of C){if(m.type!=="childList"&&m.type!=="characterData")continue;let y=m.target;m.type==="characterData"&&(y=m.target.parentElement||m.target.parentNode);let w=y,T=w.getAttribute("data-sl-attribute-p");for(;!T&&w.parentElement;)w=w.parentElement,T=w.getAttribute("data-sl-attribute-p");if(!T)continue;const f=w.innerHTML||w.textContent||"";let v="";m.type==="characterData"&&m.oldValue!==null&&(v=m.oldValue),this.log(`innerHTML changed on element with data-sl-attribute-p="${T}"`),v&&this.log(`Previous content: "${v}"`),this.log(`Current content: "${f}"`),p(T,h)}});c(h,"initial setup"),n.add(h);const u=new MutationObserver(C=>{C.forEach(m=>{m.addedNodes.forEach(y=>{if(y.nodeType===Node.ELEMENT_NODE){const w=y;k(w);const T=w.matches('input[name="properties[_slpt]"]')?[w]:w.querySelectorAll('input[name="properties[_slpt]"]');T.length>0&&this.log(`MutationObserver found ${T.length} new hidden input(s)`),T.forEach(f=>{const v=f.getAttribute("data-sl-pid");if(this.log(`MutationObserver checking new input with data-sl-pid="${v}"`),r(f))f.value!==s&&(f.value=s,this.log("Updated newly added hidden input:",s)),S(f);else{const g=f.getAttribute("data-sl-pid");g&&this.isProductInAnyPriceTest(g)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",g):(f.remove(),this.log("Removed newly added non-matching hidden input for product ID:",g))}})}})})});n.add(u);const b=new MutationObserver(C=>{C.forEach(m=>{if(m.type==="attributes"&&m.attributeName==="data-sl-pid"){const y=m.target;if(this.log("AttributeObserver detected data-sl-pid attribute change on:",y.tagName),y.matches('input[name="properties[_slpt]"]')){const w=y,T=m.oldValue,f=w.getAttribute("data-sl-pid");this.log(`data-sl-pid changed from "${T}" to "${f}" - triggering payment placement updates`),r(w)?(w.value!==s&&(w.value=s,this.log("Updated hidden input after data-sl-pid change:",s)),f&&p(f,h),this.log("Re-running payment placement updates after variant change"),k(document.body)):f&&this.isProductInAnyPriceTest(f)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",f):(w.remove(),this.log("Removed non-matching hidden input after data-sl-pid change:",f))}}})});n.add(b);const k=C=>{C.tagName==="SHOPIFY-PAYMENT-TERMS"&&(this.log("MutationObserver found new shopify-payment-terms element"),this.updateShopifyPaymentTerms(t,e));const m=C.querySelectorAll("shopify-payment-terms");m.length>0&&(this.log(`MutationObserver found ${m.length} shopify-payment-terms in added node`),this.updateShopifyPaymentTerms(t,e)),C.tagName==="AFTERPAY-PLACEMENT"&&(this.log("MutationObserver found new afterpay-placement element"),this.updateAfterpayPlacements(t,e,"afterpay"));const y=C.querySelectorAll("afterpay-placement");y.length>0&&(this.log(`MutationObserver found ${y.length} afterpay-placement in added node`),this.updateAfterpayPlacements(t,e,"afterpay")),C.tagName==="SQUARE-PLACEMENT"&&(this.log("MutationObserver found new square-placement element"),this.updateAfterpayPlacements(t,e,"square"));const w=C.querySelectorAll("square-placement");w.length>0&&(this.log(`MutationObserver found ${w.length} square-placement in added node`),this.updateAfterpayPlacements(t,e,"square")),C.tagName==="KLARNA-PLACEMENT"&&(this.log("MutationObserver found new klarna-placement element"),this.updateKlarnaPlacements(t,e));const T=C.querySelectorAll("klarna-placement");T.length>0&&(this.log(`MutationObserver found ${T.length} klarna-placement in added node`),this.updateKlarnaPlacements(t,e))},S=C=>{b.observe(C,{attributes:!0,attributeFilter:["data-sl-pid"],attributeOldValue:!0,subtree:!1});const m=C.getAttribute("data-sl-pid");this.log(`Started AttributeObserver on specific input with data-sl-pid="${m}"`)},P=()=>{const C=document.querySelectorAll('input[name="properties[_slpt]"]');this.log(`Found ${C.length} existing hidden inputs to check`),C.forEach(m=>{const y=m.getAttribute("data-sl-pid");this.log(`Checking existing input with data-sl-pid="${y}"`),r(m)?(m.value=s,this.log("Updated existing hidden input:",s),y&&(this.log("Applying initial DOM selector changes for existing product"),p(y,h)),S(m)):y&&this.isProductInAnyPriceTest(y)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",y):(m.remove(),this.log("Removed non-matching hidden input for product ID:",y))})},_=()=>{document.body?(u.observe(document.body,{childList:!0,subtree:!0}),this.log("Started MutationObserver on document.body"),P(),k(document.body)):document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{document.body&&(u.observe(document.body,{childList:!0,subtree:!0}),this.log("Started MutationObserver after DOMContentLoaded"),P(),k(document.body))}):(this.log("Set timeout on observer"),setTimeout(_,10))};_(),window.__shopliftPriceTestObservers=n,window.__shopliftPriceTestValue=s,this.log("Set up DOM observer for price test hidden inputs")}catch(s){this.log("Error updating price test hidden inputs:",s)}}updateKlarnaPlacements(t,e){this.updatePlacementElements(t,e,"klarna-placement",(i,s)=>{i.setAttribute("data-purchase-amount",s.toString())})}cleanupPriceTestObservers(){const t=window.__shopliftPriceTestObservers;t&&(t.forEach(e=>{e.disconnect()}),t.clear(),this.log("Cleaned up existing price test observers")),delete window.__shopliftPriceTestObservers,delete window.__shopliftPriceTestValue}updateAfterpayPlacements(t,e,i="afterpay"){const s=i==="square"?"square-placement":"afterpay-placement";if(document.querySelectorAll(s).length===0){this.log(`No ${s} elements found on page - early return`);return}this.updatePlacementElements(t,e,s,(n,o)=>{if(i==="afterpay"){const l=(o/100).toFixed(2);n.setAttribute("data-amount",l)}else n.setAttribute("data-amount",o.toString())}),this.log("updateAfterpayPlacements completed")}updatePlacementElements(t,e,i,s){const r=document.querySelectorAll(i);if(r.length===0){this.log(`No ${i} elements found - early return`);return}let n;if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const l=e==="control"?"a":"b",c=this.state.temporary.previewConfig.variants.find(d=>d.label===l);if(!c?.domSelectors){this.log(`No variant found for label ${l} in preview config for ${i}`);return}n=c.domSelectors,this.log(`Using preview config for ${i} in merchant mode, variant: ${l}`)}else{const l=this.testConfigs.find(d=>d.id===t);if(!l){this.log(`No testConfig found for id: ${t} - early return`);return}const c=l.hypotheses.find(d=>e==="control"?d.isControl:!d.isControl);if(!c?.domSelectors){this.log(`No hypothesis or domSelectors found for assignment: ${e} - early return`);return}n=c.domSelectors}const o=new RegExp(`${this.DATA_SL_ATTRIBUTE_P}=["'](\\d+)["']`);r.forEach(l=>{let c=null;const d=l.parentElement;if(d&&(c=d.querySelector('input[name="properties[_slpt]"]')),c||(c=l.querySelector('input[name="properties[_slpt]"]')),!c){this.log(`No hidden input found for ${i} element`);return}const p=c.getAttribute("data-sl-pid");if(!p){this.log("Hidden input has no data-sl-pid attribute - skipping");return}const h=n.find(S=>{const P=S.cssSelector.match(o);return P&&P[1]===p});if(!h){this.log(`No matching selector found for productId: ${p} - skipping element`);return}const u=h.actions.find(S=>S.scope==="price");if(!u?.value){this.log("No price action or value found - skipping element");return}const b=parseFloat(u.value.replace(/[^0-9.]/g,""));if(Number.isNaN(b)){this.log(`Invalid price "${u.value}" for product ${p} - skipping`);return}const k=Math.round(b*100);s(l,k)}),this.log(`updatePlacementElements completed for ${i}`)}updateShopifyPaymentTerms(t,e){const i=document.querySelectorAll("shopify-payment-terms");if(i.length===0)return;this.log("Store using shopify payments");let s;if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const n=e==="control"?"a":"b",o=this.state.temporary.previewConfig.variants.find(l=>l.label===n);if(!o||!o.domSelectors){this.log(`No variant found for label ${n} in preview config`);return}s=o.domSelectors,this.log(`Using preview config for shopify-payment-terms in merchant mode, variant: ${n}`)}else{const n=this.testConfigs.find(l=>l.id===t);if(!n)return;const o=n.hypotheses.find(l=>e==="control"?l.isControl===!0:l.isControl===!1);if(!o||!o.domSelectors)return;s=o.domSelectors}const r=new RegExp(`${this.DATA_SL_ATTRIBUTE_P}=["'](\\d+)["']`);i.forEach(n=>{const o=n.getAttribute("variant-id");if(!o)return;const l=s.find(c=>{const d=c.cssSelector.match(r);return d&&d[1]===o});if(l){const c=l.actions.find(d=>d.scope==="price");if(c&&c.value){const d=n.getAttribute("shopify-meta");if(d)try{const p=JSON.parse(d);if(p.variants&&Array.isArray(p.variants)){const h=p.variants.find(u=>u.id?.toString()===o);if(h){h.full_price=c.value;const u=parseFloat(c.value.replace(/[^0-9.]/g,""));if(h.number_of_payment_terms&&h.number_of_payment_terms>1){const b=u/h.number_of_payment_terms;h.price_per_term=`$${b.toFixed(2)}`}n.setAttribute("shopify-meta",JSON.stringify(p))}}}catch(p){this.log("Error parsing/updating shoplift-meta:",p)}}}})}async makeJsonRequest(t){const e=await this.makeRequest(t);return e===null?null:JSON.parse(await e.text(),F)}async makeRequest(t){const{url:e,method:i,headers:s,data:r,signal:n}=t,o=new Headers;if(s)for(const c in s)o.append(c,s[c]);(!s||!s.Accept)&&o.append("Accept","application/json"),(!s||!s["Content-Type"])&&o.append("Content-Type","application/json"),(this.eventHost.includes("ngrok.io")||this.eventHost.includes("ngrok-free.app"))&&o.append("ngrok-skip-browser-warning","1234");const l=await this.fetch(e,{method:i,headers:o,body:r,signal:n});if(!l.ok){if(l.status===204)return null;if(l.status===422){const c=await l.json();if(typeof c<"u"&&c.isBot)throw new et}throw new Error(`Error sending shoplift request ${l.status}`)}return l}queueAddVisitorToTest(t,e){if(this.state.essential.visitorTests.some(s=>s.testId===t))return;const i=this.testConfigs.find(s=>s.id===t);if(this.state.essential.visitorTests.push({createdAt:new Date,testId:t,hypothesisId:e.id,isThemeTest:e.type==="theme",themeId:e.themeId,isSaved:!1,isInvalid:!1,shouldSendToGa:!0,testType:e.type,assignedTo:e.isControl?"control":"variant",testTitle:i?.title}),e.type==="price"){const s=e.isControl?"control":"variant";this.log("Price test assignment detected, updating cart attributes:",t,s),this.updatePriceTestHiddenInputs(t,s,!1)}}queueCartUpdate(t){this.queueEvent(new wt(t))}queuePageView(t){this.queueEvent(new vt(t))}queueEvent(t){!this.state.essential.consentApproved&&this.state.essential.hasConsentInteraction||this.state.analytics.queue.length>10||this.state.analytics.queue.push(t)}legacyGetLocalStorageVisitor(){const t=this.localStorageGet(this.legacySessionKey);if(t)try{return JSON.parse(t,F)}catch{}return null}pruneStaleVisitorTests(){this.state.essential.visitorTests=this.state.essential.visitorTests.filter(t=>this.testConfigs.some(e=>e.id==t.testId)||this.inactiveTestConfigs.filter(e=>this.testIsPaused(e)).some(e=>e.id===t.testId))}pruneStateAndSave(){this.pruneStaleVisitorTests(),this.saveState()}saveState(){this.persistEssentialState(),this.persistAnalyticsState()}loadState(){const t=this.loadAnalyticsState(),e={analytics:t,essential:this.loadEssentialState(t),temporary:this.loadTemporaryState()},i=this.legacyGetLocalStorageVisitor(),s=this.legacyGetCookieVisitor(),r=[i,s].filter(n=>n!==null).sort((n,o)=>+o.storedAt-+n.storedAt)[0];return e.analytics.visitor===null&&r&&({visitorTests:e.essential.visitorTests,...e.analytics.visitor}=r,e.essential.isFirstLoad=!1,e.essential.initialState={createdAt:r.createdAt,referrer:r.referrer,utmCampaign:r.utmCampaign,utmContent:r.utmContent,utmMedium:r.utmMedium,utmSource:r.utmSource,device:r.device},this.deleteCookie("SHOPLIFT"),this.deleteLocalStorage(this.legacySessionKey)),!e.essential.consentApproved&&e.essential.hasConsentInteraction&&this.deleteLocalStorage(this.analyticsSessionKey),e}loadEssentialState(t){const e=this.loadLocalStorage(this.essentialSessionKey),i=this.loadCookie(this.essentialSessionKey),s=this.getInitialState();t.visitor?.device&&(s.device=t.visitor.device);const r={timestamp:new Date,consentApproved:!1,hasConsentInteraction:!1,debugMode:!1,initialState:s,visitorTests:[],isFirstLoad:!0},n=[e,i].filter(o=>o!==null).sort((o,l)=>+l.timestamp-+o.timestamp)[0]??r;return n.initialState||(t.visitor!==null?n.initialState=t.visitor:(n.initialState=s,n.initialState.createdAt=n.timestamp)),n}loadAnalyticsState(){const t=this.loadLocalStorage(this.analyticsSessionKey),e=this.loadCookie(this.analyticsSessionKey),i={timestamp:new Date,visitor:null,queue:[]},s=[t,e].filter(r=>r!==null).sort((r,n)=>+n.timestamp-+r.timestamp)[0]??i;return s.queue.length===0&&t&&t.queue.length>1&&(s.queue=t.queue),s}loadTemporaryState(){const t=this.sessionStorageGet(this.temporarySessionKey),e=t?JSON.parse(t,F):null,i=this.loadCookie(this.temporarySessionKey);return e??i??{isMerchant:!1,timestamp:new Date}}persistEssentialState(){this.log("Persisting essential state"),this.state.essential.isFirstLoad=!1,this.state.essential.timestamp=new Date,this.persistLocalStorageState(this.essentialSessionKey,this.state.essential),this.persistCookieState(this.essentialSessionKey,this.state.essential)}persistAnalyticsState(){this.log("Persisting analytics state"),this.state.essential.consentApproved&&(this.state.analytics.timestamp=new Date,this.persistLocalStorageState(this.analyticsSessionKey,this.state.analytics),this.persistCookieState(this.analyticsSessionKey,{...this.state.analytics,queue:[]}))}persistTemporaryState(){this.log("Setting temporary session state"),this.state.temporary.timestamp=new Date,this.sessionStorageSet(this.temporarySessionKey,JSON.stringify(this.state.temporary)),this.persistCookieState(this.temporarySessionKey,this.state.temporary,!0)}loadLocalStorage(t){const e=this.localStorageGet(t);if(e===null)return null;try{return JSON.parse(e,F)}catch{return null}}loadCookie(t){const e=this.getCookie(t);if(e===null)return null;try{return JSON.parse(e,F)}catch{return null}}persistLocalStorageState(t,e){this.localStorageSet(t,JSON.stringify(e))}persistCookieState(t,e,i=!1){const s=JSON.stringify(e),r=i?"":`expires=${new Date(new Date().getTime()+864e5*365).toUTCString()};`;document.cookie=`${t}=${s};domain=.${window.location.hostname};path=/;SameSite=Strict;${r}`}deleteCookie(t){const e=new Date(0).toUTCString();document.cookie=`${t}=;domain=.${window.location.hostname};path=/;expires=${e};`}deleteLocalStorage(t){window.localStorage.removeItem(t)}getChannel(t){return[{"name":"cross-network","test":(v) => new RegExp(".*cross-network.*", "i").test(v.utmCampaign)},{"name":"direct","test":(v) => v.utmSource === "" && v.utmMedium === ""},{"name":"paid-shopping","test":(v) => (new RegExp("^(?:Google|IGShopping|aax-us-east\.amazon-adsystem\.com|aax\.amazon-adsystem\.com|alibaba|alibaba\.com|amazon|amazon\.co\.uk|amazon\.com|apps\.shopify\.com|checkout\.shopify\.com|checkout\.stripe\.com|cr\.shopping\.naver\.com|cr2\.shopping\.naver\.com|ebay|ebay\.co\.uk|ebay\.com|ebay\.com\.au|ebay\.de|etsy|etsy\.com|m\.alibaba\.com|m\.shopping\.naver\.com|mercadolibre|mercadolibre\.com|mercadolibre\.com\.ar|mercadolibre\.com\.mx|message\.alibaba\.com|msearch\.shopping\.naver\.com|nl\.shopping\.net|no\.shopping\.net|offer\.alibaba\.com|one\.walmart\.com|order\.shopping\.yahoo\.co\.jp|partners\.shopify\.com|s3\.amazonaws\.com|se\.shopping\.net|shop\.app|shopify|shopify\.com|shopping\.naver\.com|shopping\.yahoo\.co\.jp|shopping\.yahoo\.com|shopzilla|shopzilla\.com|simplycodes\.com|store\.shopping\.yahoo\.co\.jp|stripe|stripe\.com|uk\.shopping\.net|walmart|walmart\.com)$", "i").test(v.utmSource) || new RegExp("^(.*(([^a-df-z]|^)shop|shopping).*)$", "i").test(v.utmCampaign)) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-search","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|yandex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-social","test":(v) => new RegExp("^(?:43things|43things\.com|51\.com|5ch\.net|Hatena|ImageShack|academia\.edu|activerain|activerain\.com|activeworlds|activeworlds\.com|addthis|addthis\.com|airg\.ca|allnurses\.com|allrecipes\.com|alumniclass|alumniclass\.com|ameba\.jp|ameblo\.jp|americantowns|americantowns\.com|amp\.reddit\.com|ancestry\.com|anobii|anobii\.com|answerbag|answerbag\.com|answers\.yahoo\.com|aolanswers|aolanswers\.com|apps\.facebook\.com|ar\.pinterest\.com|artstation\.com|askubuntu|askubuntu\.com|asmallworld\.com|athlinks|athlinks\.com|away\.vk\.com|awe\.sm|b\.hatena\.ne\.jp|baby-gaga|baby-gaga\.com|babyblog\.ru|badoo|badoo\.com|bebo|bebo\.com|beforeitsnews|beforeitsnews\.com|bharatstudent|bharatstudent\.com|biip\.no|biswap\.org|bit\.ly|blackcareernetwork\.com|blackplanet|blackplanet\.com|blip\.fm|blog\.com|blog\.feedspot\.com|blog\.goo\.ne\.jp|blog\.naver\.com|blog\.yahoo\.co\.jp|blogg\.no|bloggang\.com|blogger|blogger\.com|blogher|blogher\.com|bloglines|bloglines\.com|blogs\.com|blogsome|blogsome\.com|blogspot|blogspot\.com|blogster|blogster\.com|blurtit|blurtit\.com|bookmarks\.yahoo\.co\.jp|bookmarks\.yahoo\.com|br\.pinterest\.com|brightkite|brightkite\.com|brizzly|brizzly\.com|business\.facebook\.com|buzzfeed|buzzfeed\.com|buzznet|buzznet\.com|cafe\.naver\.com|cafemom|cafemom\.com|camospace|camospace\.com|canalblog\.com|care\.com|care2|care2\.com|caringbridge\.org|catster|catster\.com|cbnt\.io|cellufun|cellufun\.com|centerblog\.net|chat\.zalo\.me|chegg\.com|chicagonow|chicagonow\.com|chiebukuro\.yahoo\.co\.jp|classmates|classmates\.com|classquest|classquest\.com|co\.pinterest\.com|cocolog-nifty|cocolog-nifty\.com|copainsdavant\.linternaute\.com|couchsurfing\.org|cozycot|cozycot\.com|cross\.tv|crunchyroll|crunchyroll\.com|cyworld|cyworld\.com|cz\.pinterest\.com|d\.hatena\.ne\.jp|dailystrength\.org|deluxe\.com|deviantart|deviantart\.com|dianping|dianping\.com|digg|digg\.com|diigo|diigo\.com|discover\.hubpages\.com|disqus|disqus\.com|dogster|dogster\.com|dol2day|dol2day\.com|doostang|doostang\.com|dopplr|dopplr\.com|douban|douban\.com|draft\.blogger\.com|draugiem\.lv|drugs-forum|drugs-forum\.com|dzone|dzone\.com|edublogs\.org|elftown|elftown\.com|epicurious\.com|everforo\.com|exblog\.jp|extole|extole\.com|facebook|facebook\.com|faceparty|faceparty\.com|fandom\.com|fanpop|fanpop\.com|fark|fark\.com|fb|fb\.me|fc2|fc2\.com|feedspot|feministing|feministing\.com|filmaffinity|filmaffinity\.com|flickr|flickr\.com|flipboard|flipboard\.com|folkdirect|folkdirect\.com|foodservice|foodservice\.com|forums\.androidcentral\.com|forums\.crackberry\.com|forums\.imore\.com|forums\.nexopia\.com|forums\.webosnation\.com|forums\.wpcentral\.com|fotki|fotki\.com|fotolog|fotolog\.com|foursquare|foursquare\.com|free\.facebook\.com|friendfeed|friendfeed\.com|fruehstueckstreff\.org|fubar|fubar\.com|gaiaonline|gaiaonline\.com|gamerdna|gamerdna\.com|gather\.com|geni\.com|getpocket\.com|glassboard|glassboard\.com|glassdoor|glassdoor\.com|godtube|godtube\.com|goldenline\.pl|goldstar|goldstar\.com|goo\.gl|gooblog|goodreads|goodreads\.com|google\+|googlegroups\.com|googleplus|govloop|govloop\.com|gowalla|gowalla\.com|gree\.jp|groups\.google\.com|gulli\.com|gutefrage\.net|habbo|habbo\.com|hi5|hi5\.com|hootsuite|hootsuite\.com|houzz|houzz\.com|hoverspot|hoverspot\.com|hr\.com|hu\.pinterest\.com|hubculture|hubculture\.com|hubpages\.com|hyves\.net|hyves\.nl|ibibo|ibibo\.com|id\.pinterest\.com|identi\.ca|ig|imageshack\.com|imageshack\.us|imvu|imvu\.com|in\.pinterest\.com|insanejournal|insanejournal\.com|instagram|instagram\.com|instapaper|instapaper\.com|internations\.org|interpals\.net|intherooms|intherooms\.com|irc-galleria\.net|is\.gd|italki|italki\.com|jammerdirect|jammerdirect\.com|jappy\.com|jappy\.de|kaboodle\.com|kakao|kakao\.com|kakaocorp\.com|kaneva|kaneva\.com|kin\.naver\.com|l\.facebook\.com|l\.instagram\.com|l\.messenger\.com|last\.fm|librarything|librarything\.com|lifestream\.aol\.com|line|line\.me|linkedin|linkedin\.com|listal|listal\.com|listography|listography\.com|livedoor\.com|livedoorblog|livejournal|livejournal\.com|lm\.facebook\.com|lnkd\.in|m\.blog\.naver\.com|m\.cafe\.naver\.com|m\.facebook\.com|m\.kin\.naver\.com|m\.vk\.com|m\.yelp\.com|mbga\.jp|medium\.com|meetin\.org|meetup|meetup\.com|meinvz\.net|meneame\.net|menuism\.com|messages\.google\.com|messages\.yahoo\.co\.jp|messenger|messenger\.com|mix\.com|mixi\.jp|mobile\.facebook\.com|mocospace|mocospace\.com|mouthshut|mouthshut\.com|movabletype|movabletype\.com|mubi|mubi\.com|my\.opera\.com|myanimelist\.net|myheritage|myheritage\.com|mylife|mylife\.com|mymodernmet|mymodernmet\.com|myspace|myspace\.com|netvibes|netvibes\.com|news\.ycombinator\.com|newsshowcase|nexopia|ngopost\.org|niconico|nicovideo\.jp|nightlifelink|nightlifelink\.com|ning|ning\.com|nl\.pinterest\.com|odnoklassniki\.ru|odnoklassniki\.ua|okwave\.jp|old\.reddit\.com|oneworldgroup\.org|onstartups|onstartups\.com|opendiary|opendiary\.com|oshiete\.goo\.ne\.jp|out\.reddit\.com|over-blog\.com|overblog\.com|paper\.li|partyflock\.nl|photobucket|photobucket\.com|pinboard|pinboard\.in|pingsta|pingsta\.com|pinterest|pinterest\.at|pinterest\.ca|pinterest\.ch|pinterest\.cl|pinterest\.co\.kr|pinterest\.co\.uk|pinterest\.com|pinterest\.com\.au|pinterest\.com\.mx|pinterest\.de|pinterest\.es|pinterest\.fr|pinterest\.it|pinterest\.jp|pinterest\.nz|pinterest\.ph|pinterest\.pt|pinterest\.ru|pinterest\.se|pixiv\.net|pl\.pinterest\.com|playahead\.se|plurk|plurk\.com|plus\.google\.com|plus\.url\.google\.com|pocket\.co|posterous|posterous\.com|pro\.homeadvisor\.com|pulse\.yahoo\.com|qapacity|qapacity\.com|quechup|quechup\.com|quora|quora\.com|qzone\.qq\.com|ravelry|ravelry\.com|reddit|reddit\.com|redux|redux\.com|renren|renren\.com|researchgate\.net|reunion|reunion\.com|reverbnation|reverbnation\.com|rtl\.de|ryze|ryze\.com|salespider|salespider\.com|scoop\.it|screenrant|screenrant\.com|scribd|scribd\.com|scvngr|scvngr\.com|secondlife|secondlife\.com|serverfault|serverfault\.com|shareit|sharethis|sharethis\.com|shvoong\.com|sites\.google\.com|skype|skyrock|skyrock\.com|slashdot\.org|slideshare\.net|smartnews\.com|snapchat|snapchat\.com|social|sociallife\.com\.br|socialvibe|socialvibe\.com|spaces\.live\.com|spoke|spoke\.com|spruz|spruz\.com|ssense\.com|stackapps|stackapps\.com|stackexchange|stackexchange\.com|stackoverflow|stackoverflow\.com|stardoll\.com|stickam|stickam\.com|studivz\.net|suomi24\.fi|superuser|superuser\.com|sweeva|sweeva\.com|t\.co|t\.me|tagged|tagged\.com|taggedmail|taggedmail\.com|talkbiznow|talkbiznow\.com|taringa\.net|techmeme|techmeme\.com|tencent|tencent\.com|tiktok|tiktok\.com|tinyurl|tinyurl\.com|toolbox|toolbox\.com|touch\.facebook\.com|tr\.pinterest\.com|travellerspoint|travellerspoint\.com|tripadvisor|tripadvisor\.com|trombi|trombi\.com|trustpilot|tudou|tudou\.com|tuenti|tuenti\.com|tumblr|tumblr\.com|tweetdeck|tweetdeck\.com|twitter|twitter\.com|twoo\.com|typepad|typepad\.com|unblog\.fr|urbanspoon\.com|ushareit\.com|ushi\.cn|vampirefreaks|vampirefreaks\.com|vampirerave|vampirerave\.com|vg\.no|video\.ibm\.com|vk\.com|vkontakte\.ru|wakoopa|wakoopa\.com|wattpad|wattpad\.com|web\.facebook\.com|web\.skype\.com|webshots|webshots\.com|wechat|wechat\.com|weebly|weebly\.com|weibo|weibo\.com|wer-weiss-was\.de|weread|weread\.com|whatsapp|whatsapp\.com|wiki\.answers\.com|wikihow\.com|wikitravel\.org|woot\.com|wordpress|wordpress\.com|wordpress\.org|xanga|xanga\.com|xing|xing\.com|yahoo-mbga\.jp|yammer|yammer\.com|yelp|yelp\.co\.uk|yelp\.com|youroom\.in|za\.pinterest\.com|zalo|zoo\.gr|zooppa|zooppa\.com)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-video","test":(v) => new RegExp("^(?:blog\.twitch\.tv|crackle|crackle\.com|curiositystream|curiositystream\.com|d\.tube|dailymotion|dailymotion\.com|dashboard\.twitch\.tv|disneyplus|disneyplus\.com|fast\.wistia\.net|help\.hulu\.com|help\.netflix\.com|hulu|hulu\.com|id\.twitch\.tv|iq\.com|iqiyi|iqiyi\.com|jobs\.netflix\.com|justin\.tv|m\.twitch\.tv|m\.youtube\.com|music\.youtube\.com|netflix|netflix\.com|player\.twitch\.tv|player\.vimeo\.com|ted|ted\.com|twitch|twitch\.tv|utreon|utreon\.com|veoh|veoh\.com|viadeo\.journaldunet\.com|vimeo|vimeo\.com|wistia|wistia\.com|youku|youku\.com|youtube|youtube\.com)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"display","test":(v) => new RegExp("^(?:display|banner|expandable|interstitial|cpm)$", "i").test(v.utmMedium)},{"name":"paid-other","test":(v) => new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"organic-shopping","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|yandex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) || new RegExp("^(.*(([^a-df-z]|^)shop|shopping).*)$", "i").test(v.utmCampaign)},{"name":"organic-social","test":(v) => new RegExp("^(?:43things|43things\.com|51\.com|5ch\.net|Hatena|ImageShack|academia\.edu|activerain|activerain\.com|activeworlds|activeworlds\.com|addthis|addthis\.com|airg\.ca|allnurses\.com|allrecipes\.com|alumniclass|alumniclass\.com|ameba\.jp|ameblo\.jp|americantowns|americantowns\.com|amp\.reddit\.com|ancestry\.com|anobii|anobii\.com|answerbag|answerbag\.com|answers\.yahoo\.com|aolanswers|aolanswers\.com|apps\.facebook\.com|ar\.pinterest\.com|artstation\.com|askubuntu|askubuntu\.com|asmallworld\.com|athlinks|athlinks\.com|away\.vk\.com|awe\.sm|b\.hatena\.ne\.jp|baby-gaga|baby-gaga\.com|babyblog\.ru|badoo|badoo\.com|bebo|bebo\.com|beforeitsnews|beforeitsnews\.com|bharatstudent|bharatstudent\.com|biip\.no|biswap\.org|bit\.ly|blackcareernetwork\.com|blackplanet|blackplanet\.com|blip\.fm|blog\.com|blog\.feedspot\.com|blog\.goo\.ne\.jp|blog\.naver\.com|blog\.yahoo\.co\.jp|blogg\.no|bloggang\.com|blogger|blogger\.com|blogher|blogher\.com|bloglines|bloglines\.com|blogs\.com|blogsome|blogsome\.com|blogspot|blogspot\.com|blogster|blogster\.com|blurtit|blurtit\.com|bookmarks\.yahoo\.co\.jp|bookmarks\.yahoo\.com|br\.pinterest\.com|brightkite|brightkite\.com|brizzly|brizzly\.com|business\.facebook\.com|buzzfeed|buzzfeed\.com|buzznet|buzznet\.com|cafe\.naver\.com|cafemom|cafemom\.com|camospace|camospace\.com|canalblog\.com|care\.com|care2|care2\.com|caringbridge\.org|catster|catster\.com|cbnt\.io|cellufun|cellufun\.com|centerblog\.net|chat\.zalo\.me|chegg\.com|chicagonow|chicagonow\.com|chiebukuro\.yahoo\.co\.jp|classmates|classmates\.com|classquest|classquest\.com|co\.pinterest\.com|cocolog-nifty|cocolog-nifty\.com|copainsdavant\.linternaute\.com|couchsurfing\.org|cozycot|cozycot\.com|cross\.tv|crunchyroll|crunchyroll\.com|cyworld|cyworld\.com|cz\.pinterest\.com|d\.hatena\.ne\.jp|dailystrength\.org|deluxe\.com|deviantart|deviantart\.com|dianping|dianping\.com|digg|digg\.com|diigo|diigo\.com|discover\.hubpages\.com|disqus|disqus\.com|dogster|dogster\.com|dol2day|dol2day\.com|doostang|doostang\.com|dopplr|dopplr\.com|douban|douban\.com|draft\.blogger\.com|draugiem\.lv|drugs-forum|drugs-forum\.com|dzone|dzone\.com|edublogs\.org|elftown|elftown\.com|epicurious\.com|everforo\.com|exblog\.jp|extole|extole\.com|facebook|facebook\.com|faceparty|faceparty\.com|fandom\.com|fanpop|fanpop\.com|fark|fark\.com|fb|fb\.me|fc2|fc2\.com|feedspot|feministing|feministing\.com|filmaffinity|filmaffinity\.com|flickr|flickr\.com|flipboard|flipboard\.com|folkdirect|folkdirect\.com|foodservice|foodservice\.com|forums\.androidcentral\.com|forums\.crackberry\.com|forums\.imore\.com|forums\.nexopia\.com|forums\.webosnation\.com|forums\.wpcentral\.com|fotki|fotki\.com|fotolog|fotolog\.com|foursquare|foursquare\.com|free\.facebook\.com|friendfeed|friendfeed\.com|fruehstueckstreff\.org|fubar|fubar\.com|gaiaonline|gaiaonline\.com|gamerdna|gamerdna\.com|gather\.com|geni\.com|getpocket\.com|glassboard|glassboard\.com|glassdoor|glassdoor\.com|godtube|godtube\.com|goldenline\.pl|goldstar|goldstar\.com|goo\.gl|gooblog|goodreads|goodreads\.com|google\+|googlegroups\.com|googleplus|govloop|govloop\.com|gowalla|gowalla\.com|gree\.jp|groups\.google\.com|gulli\.com|gutefrage\.net|habbo|habbo\.com|hi5|hi5\.com|hootsuite|hootsuite\.com|houzz|houzz\.com|hoverspot|hoverspot\.com|hr\.com|hu\.pinterest\.com|hubculture|hubculture\.com|hubpages\.com|hyves\.net|hyves\.nl|ibibo|ibibo\.com|id\.pinterest\.com|identi\.ca|ig|imageshack\.com|imageshack\.us|imvu|imvu\.com|in\.pinterest\.com|insanejournal|insanejournal\.com|instagram|instagram\.com|instapaper|instapaper\.com|internations\.org|interpals\.net|intherooms|intherooms\.com|irc-galleria\.net|is\.gd|italki|italki\.com|jammerdirect|jammerdirect\.com|jappy\.com|jappy\.de|kaboodle\.com|kakao|kakao\.com|kakaocorp\.com|kaneva|kaneva\.com|kin\.naver\.com|l\.facebook\.com|l\.instagram\.com|l\.messenger\.com|last\.fm|librarything|librarything\.com|lifestream\.aol\.com|line|line\.me|linkedin|linkedin\.com|listal|listal\.com|listography|listography\.com|livedoor\.com|livedoorblog|livejournal|livejournal\.com|lm\.facebook\.com|lnkd\.in|m\.blog\.naver\.com|m\.cafe\.naver\.com|m\.facebook\.com|m\.kin\.naver\.com|m\.vk\.com|m\.yelp\.com|mbga\.jp|medium\.com|meetin\.org|meetup|meetup\.com|meinvz\.net|meneame\.net|menuism\.com|messages\.google\.com|messages\.yahoo\.co\.jp|messenger|messenger\.com|mix\.com|mixi\.jp|mobile\.facebook\.com|mocospace|mocospace\.com|mouthshut|mouthshut\.com|movabletype|movabletype\.com|mubi|mubi\.com|my\.opera\.com|myanimelist\.net|myheritage|myheritage\.com|mylife|mylife\.com|mymodernmet|mymodernmet\.com|myspace|myspace\.com|netvibes|netvibes\.com|news\.ycombinator\.com|newsshowcase|nexopia|ngopost\.org|niconico|nicovideo\.jp|nightlifelink|nightlifelink\.com|ning|ning\.com|nl\.pinterest\.com|odnoklassniki\.ru|odnoklassniki\.ua|okwave\.jp|old\.reddit\.com|oneworldgroup\.org|onstartups|onstartups\.com|opendiary|opendiary\.com|oshiete\.goo\.ne\.jp|out\.reddit\.com|over-blog\.com|overblog\.com|paper\.li|partyflock\.nl|photobucket|photobucket\.com|pinboard|pinboard\.in|pingsta|pingsta\.com|pinterest|pinterest\.at|pinterest\.ca|pinterest\.ch|pinterest\.cl|pinterest\.co\.kr|pinterest\.co\.uk|pinterest\.com|pinterest\.com\.au|pinterest\.com\.mx|pinterest\.de|pinterest\.es|pinterest\.fr|pinterest\.it|pinterest\.jp|pinterest\.nz|pinterest\.ph|pinterest\.pt|pinterest\.ru|pinterest\.se|pixiv\.net|pl\.pinterest\.com|playahead\.se|plurk|plurk\.com|plus\.google\.com|plus\.url\.google\.com|pocket\.co|posterous|posterous\.com|pro\.homeadvisor\.com|pulse\.yahoo\.com|qapacity|qapacity\.com|quechup|quechup\.com|quora|quora\.com|qzone\.qq\.com|ravelry|ravelry\.com|reddit|reddit\.com|redux|redux\.com|renren|renren\.com|researchgate\.net|reunion|reunion\.com|reverbnation|reverbnation\.com|rtl\.de|ryze|ryze\.com|salespider|salespider\.com|scoop\.it|screenrant|screenrant\.com|scribd|scribd\.com|scvngr|scvngr\.com|secondlife|secondlife\.com|serverfault|serverfault\.com|shareit|sharethis|sharethis\.com|shvoong\.com|sites\.google\.com|skype|skyrock|skyrock\.com|slashdot\.org|slideshare\.net|smartnews\.com|snapchat|snapchat\.com|social|sociallife\.com\.br|socialvibe|socialvibe\.com|spaces\.live\.com|spoke|spoke\.com|spruz|spruz\.com|ssense\.com|stackapps|stackapps\.com|stackexchange|stackexchange\.com|stackoverflow|stackoverflow\.com|stardoll\.com|stickam|stickam\.com|studivz\.net|suomi24\.fi|superuser|superuser\.com|sweeva|sweeva\.com|t\.co|t\.me|tagged|tagged\.com|taggedmail|taggedmail\.com|talkbiznow|talkbiznow\.com|taringa\.net|techmeme|techmeme\.com|tencent|tencent\.com|tiktok|tiktok\.com|tinyurl|tinyurl\.com|toolbox|toolbox\.com|touch\.facebook\.com|tr\.pinterest\.com|travellerspoint|travellerspoint\.com|tripadvisor|tripadvisor\.com|trombi|trombi\.com|trustpilot|tudou|tudou\.com|tuenti|tuenti\.com|tumblr|tumblr\.com|tweetdeck|tweetdeck\.com|twitter|twitter\.com|twoo\.com|typepad|typepad\.com|unblog\.fr|urbanspoon\.com|ushareit\.com|ushi\.cn|vampirefreaks|vampirefreaks\.com|vampirerave|vampirerave\.com|vg\.no|video\.ibm\.com|vk\.com|vkontakte\.ru|wakoopa|wakoopa\.com|wattpad|wattpad\.com|web\.facebook\.com|web\.skype\.com|webshots|webshots\.com|wechat|wechat\.com|weebly|weebly\.com|weibo|weibo\.com|wer-weiss-was\.de|weread|weread\.com|whatsapp|whatsapp\.com|wiki\.answers\.com|wikihow\.com|wikitravel\.org|woot\.com|wordpress|wordpress\.com|wordpress\.org|xanga|xanga\.com|xing|xing\.com|yahoo-mbga\.jp|yammer|yammer\.com|yelp|yelp\.co\.uk|yelp\.com|youroom\.in|za\.pinterest\.com|zalo|zoo\.gr|zooppa|zooppa\.com)$", "i").test(v.utmSource) || new RegExp("^(?:social|social-network|social-media|sm|social network|social media)$", "i").test(v.utmMedium)},{"name":"organic-video","test":(v) => new RegExp("^(?:blog\.twitch\.tv|crackle|crackle\.com|curiositystream|curiositystream\.com|d\.tube|dailymotion|dailymotion\.com|dashboard\.twitch\.tv|disneyplus|disneyplus\.com|fast\.wistia\.net|help\.hulu\.com|help\.netflix\.com|hulu|hulu\.com|id\.twitch\.tv|iq\.com|iqiyi|iqiyi\.com|jobs\.netflix\.com|justin\.tv|m\.twitch\.tv|m\.youtube\.com|music\.youtube\.com|netflix|netflix\.com|player\.twitch\.tv|player\.vimeo\.com|ted|ted\.com|twitch|twitch\.tv|utreon|utreon\.com|veoh|veoh\.com|viadeo\.journaldunet\.com|vimeo|vimeo\.com|wistia|wistia\.com|youku|youku\.com|youtube|youtube\.com)$", "i").test(v.utmSource) || new RegExp("^(.*video.*)$", "i").test(v.utmMedium)},{"name":"organic-search","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|yandex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) || v.utmMedium.toLowerCase() === "organic"},{"name":"referral","test":(v) => new RegExp("^(?:referral|app|link)$", "i").test(v.utmMedium)},{"name":"email","test":(v) => new RegExp("^(?:email|e-mail|e_mail|e mail)$", "i").test(v.utmMedium) || new RegExp("^(?:email|e-mail|e_mail|e mail)$", "i").test(v.utmSource)},{"name":"affiliate","test":(v) => v.utmMedium.toLowerCase() === "affiliate"},{"name":"audio","test":(v) => v.utmMedium.toLowerCase() === "audio"},{"name":"sms","test":(v) => v.utmSource.toLowerCase() === "sms" || v.utmMedium.toLowerCase() === "sms"},{"name":"mobile-push-notification","test":(v) => v.utmSource.toLowerCase() === "firebase" || new RegExp("(?:.*mobile.*|.*notification.*|push$)", "i").test(v.utmMedium)}].find(i=>i.test(t))?.name??"other"}getShopifyAnalyticsId(){const t=this.getCookie("_shopify_y");if(t)return t;try{const e=this.localStorageGet("Shoplift_ClientId");if(e)return e}catch{}return null}legacyGetCookieVisitor(){const t=this.getCookie("SHOPLIFT");return t===null?null:JSON.parse(t,F)}getCookie(t){const e=this.cookie.split("; ").filter(i=>i.split("=").at(0)===t).at(0);return e===void 0?null:e.split("=").slice(1).join("=")}monitorConsentChange(){document.addEventListener("visitorConsentCollected",t=>{(async()=>await this.onConsentChange(t.detail.analyticsAllowed,!0))()}),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>this.loadShopifyConsentApiWithRetry()):this.loadShopifyConsentApiWithRetry()}loadShopifyConsentApiWithRetry(){let t=0;const e=()=>{this.loadShopifyConsentApi()||t++<10&&window.setTimeout(e,100)};e()}loadShopifyConsentApi(){if(window.Shopify){this.log("Loading Shopify features");const t=async()=>{if(!window.Shopify){this.log("Shopify object missing... suddenly?");return}if(window.Shopify.customerPrivacy===void 0){this.log("Shopify CustomerPrivacy api still missing, trying again in 1000ms"),e=window.setTimeout(()=>{(async()=>await t())()},1e3);return}const i=window.Shopify.customerPrivacy.getTrackingConsent();await this.onConsentChange(window.Shopify.customerPrivacy.analyticsProcessingAllowed(),i==="yes")};let e=window.setTimeout(()=>{(async()=>await t())()},5e3);return window.Shopify.loadFeatures([{name:"consent-tracking-api",version:"0.1"}],i=>{(async()=>{if(window.clearTimeout(e),i){this.log("Error loading consent tracking",i);return}await t()})()}),!0}return!1}async onConsentChange(t,e){try{if(this.log("Consent change detected",t,e),this.state.essential.consentApproved=t,this.state.essential.hasConsentInteraction=e,!this.state.essential.consentApproved){this.state.essential.hasConsentInteraction&&(this.state.analytics.queue.length=0),this.saveState();return}this.cookie=document.cookie,this.shopifyAnalyticsId=this.getShopifyAnalyticsId();for(const i of this.state.analytics.queue.filter(s=>s.type===1||s.type===2)){const s=i;s.shopifyAnalyticsId=this.shopifyAnalyticsId}this.saveState(),await this.syncAllEvents()}catch(i){this.log("Error syncing on consent change",i)}}isThemePreview(){return isThemePreview||themeRole!=="main"}isAppProxyPath(){const t=["/apps/","/tools/","/a/"],e=window.location.pathname;return t.some(i=>e.startsWith(i))}clearThemeBar(t,e,i){const s=structuredClone(i);this.log("Looking for theme bar"),this.waitForElement(null,"body").then(r=>this.waitForElement(r,"#preview-bar-iframe, #PBarNextFrameWrapper").then(n=>(this.log("Found theme bar"),e&&(this.log("Removing theme bar"),n.remove()),t?this.makeRequest({url:`${this.eventHost}/api/v0/logs`,method:"post",data:JSON.stringify({...this.debugState(),stateAtEvaluation:s},X)}):Promise.resolve(null)))).catch(r=>console.error(r))}waitForElement(t,e){return new Promise(i=>{const s=document.querySelector(e);if(s){i(s);return}const r=new MutationObserver(n=>{const o=document.querySelector(e);if(o){r.disconnect(),i(o);return}});r.observe(t??document.documentElement,{childList:!0})})}setDebug(t){this.state.essential.debugMode=t,this.saveState()}log(t,...e){let i=0;const s=t.replace(/%[sdoOfF]/g,r=>{if(i>=e.length)return r;const n=e[i++];return r==="%o"||r==="%O"?JSON.stringify(n):String(n)});this.logHistory.push(`[${new Date().toISOString()}][SL] ${s}`),!(!this.state.essential.debugMode&&!this.shopliftDebug)&&console.debug(`[SL] ${t}`,...e)}debugState(){return{state:this.state,storage:{essential:this.loadLocalStorage(this.essentialSessionKey),analytics:this.loadLocalStorage(this.analyticsSessionKey)},params:{shop:this.shop,host:this.host,eventHost:this.eventHost,cssHideClass:this.cssHideClass,testConfigs:this.testConfigs,inactiveTestConfigs:this.inactiveTestConfigs,sendPageView:this.sendPageView,isShopifyMerchantCookie:this.getCookie("is_shopify_merchant"),themeId,url:window.location.href,isThemePreview,themeRole,gaConfig:this.gaConfig},logHistory:this.logHistory}}createViewportObserver(t,e={}){const{threshold:i=this.VIEWPORT_TRACK_THRESHOLD,triggerOnce:s=!0}=e,r=new Set;return new IntersectionObserver(n=>{n.forEach(o=>{if(o.isIntersecting&&!r.has(o.target)){const l=o.target,c=l.getAttribute(this.DATA_SL_TEST_ID);c&&(t(c,l),s&&r.add(l))}})},{threshold:i})}applyChangesWithViewport(t,e,i,s){const r=e.selectorsForViewportTracking??e.selectors,n=o=>{if(this.state.essential.visitorTests.some(h=>h.testId===o)||this.activeViewportObservers.has(o))return;const l=[];if(r.forEach(h=>{t.querySelectorAll(h.cssSelector).forEach(b=>l.push(b))}),l.length===0)return;let c=!1;const d=()=>{c||(c=!0,i(o),p.disconnect(),this.activeViewportObservers.delete(o))},p=this.createViewportObserver(()=>{d()},{triggerOnce:!0,...s});this.activeViewportObservers.set(o,p),this.log(`Created viewport observer for test ${o}, observing ${l.length} elements`),l.forEach(h=>{h.setAttribute(this.DATA_SL_TEST_ID,String(o)),p.observe(h)}),setTimeout(()=>{c||l.forEach(h=>{const u=h.getBoundingClientRect(),b=s?.threshold??this.VIEWPORT_TRACK_THRESHOLD,k=Math.min(u.bottom,window.innerHeight)-Math.max(u.top,0),S=Math.min(u.right,window.innerWidth)-Math.max(u.left,0);u.top<window.innerHeight&&u.bottom>0&&u.left<window.innerWidth&&u.right>0&&k>0&&S>0&&k>=u.height*b&&(this.log(`Price element already visible in viewport for test ${o}:`,h),d())})},100)};e.selectors.length>0&&U(t,e,()=>{}),bt(t,{testId:e.testId,hypothesisId:e.hypothesisId,selectors:r},o=>{n(o)})}applyPriceTestWithMapLookup(t,e,i,s){if(!e.priceData){this.log("No price data for hypothesis '%s'",e.id);return}this.log("Hypothesis '%s' isControl=%s, priceData has %d variants",e.id,e.isControl,e.priceData.variants.length);const r=e.priceData.variants.slice(0,3);for(const[S,P,_]of r)this.log("  Sample priceData: variant=%s, price=%d, compareAt=%d",S,P,_);const n=j(e.priceData),o=new Set;for(const S of i)if(S.priceData)for(const[P]of S.priceData.variants)o.add(P);this.log("Price test Map lookup: %d products in hypothesis, %d total products to track",n.size,o.size);const l=e.priceData,c=new WeakSet;let d=!1;const p="[data-sl-attribute-p], [data-sl-attribute-cap], [data-sl-attribute-discount]",h=S=>{if(c.has(S))return;const P=S.getAttribute("data-sl-attribute-p"),_=S.getAttribute("data-sl-attribute-cap"),C=S.getAttribute("data-sl-attribute-discount"),m=P||_||C;if(!m||!o.has(m))return;c.add(S);const y=n.get(m);y&&(this.log("Applying price for product %s: %d cents (compare at: %d cents)",m,y.priceInCents,y.compareAtPriceInCents),Dt(S,m,y,l),this.log("Applied price to element for product %s",m)),!d&&!this.state.essential.visitorTests.some(w=>w.testId===t)&&(S.setAttribute(this.DATA_SL_TEST_ID,String(t)),this.setupElementViewportTracking(S,t,()=>{d||(d=!0,s(t))}))},u=()=>{const S=document.querySelectorAll(p);this.log("Scanning for price elements, found: %d",S.length),S.forEach(h)},b=new MutationObserver(S=>{for(const P of S)P.type==="childList"&&P.addedNodes.forEach(_=>{if(_.nodeType===Node.ELEMENT_NODE){const C=_;(C.hasAttribute("data-sl-attribute-p")||C.hasAttribute("data-sl-attribute-cap")||C.hasAttribute("data-sl-attribute-discount"))&&h(C),C.querySelectorAll(p).forEach(h)}}),P.type==="attributes"&&P.target instanceof Element&&h(P.target)}),k=document.body||document.documentElement;b.observe(k,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-sl-attribute-p","data-sl-attribute-cap","data-sl-attribute-discount"]}),this.log("MutationObserver started for price elements"),u(),document.readyState==="loading"&&document.addEventListener("DOMContentLoaded",()=>{this.log("DOMContentLoaded - rescanning for price elements"),u()}),setTimeout(()=>{this.log("Delayed rescan for price elements"),u()},100),setTimeout(()=>{this.log("Final rescan for price elements"),u()},500)}setupElementViewportTracking(t,e,i){const s=this.VIEWPORT_TRACK_THRESHOLD,r=t.getBoundingClientRect(),n=Math.min(r.bottom,window.innerHeight)-Math.max(r.top,0),o=Math.min(r.right,window.innerWidth)-Math.max(r.left,0);if(r.top<window.innerHeight&&r.bottom>0&&r.left<window.innerWidth&&r.right>0&&n>0&&o>0&&n>=r.height*s){this.log("Price element already visible for test %s",e),i();return}const c=new IntersectionObserver(d=>{for(const p of d)if(p.isIntersecting&&p.intersectionRatio>=s){this.log("Price element entered viewport for test %s",e),c.disconnect(),i();break}},{threshold:s});c.observe(t)}debug(){const t=this.debugState();console.log(JSON.stringify(t,X,2))}}(async function(){window.shopliftInstance||(window.shopliftInstance=new Wt("f8e228.myshopify.com","https://app.shoplift.ai","https://events.shoplift.ai",false,false,false,{"sendEvents":false,"mode":"gtag"},false,false,1000,[],[{"id":"019d010e-edd2-7dc1-b86b-7339c481f2ff","bayesianRevision":5,"status":"paused","hypotheses":[{"id":"019d010d-c3a3-7717-880b-e6b04e33f7df","type":"urlRedirect","themeId":184602034461,"affix":"","isControl":true,"redirectPath":"/products/crowd-compass"},{"id":"019d010e-6612-7c6a-b71a-c02fe53b5e50","type":"urlRedirect","themeId":184602034461,"affix":"","isControl":false,"redirectPath":"/products/crowd-compass-v2"}],"ignoreTestViewParameterEnforcement":false}],null),await window.shopliftInstance.init())})();async function Gt(a,t,e,i){const s=Mt({log:i});if(e)return i("[SUB-PREVIEW] A side — no overlay applied; widget renders naturally"),s;const r=a.widget.widgetType,n=t?j(t):null;let o=W(t),l=K(a,o),c=l.discountMap,d=l.maxDiscount;function p(){const f=W(t);f!==o&&(o=f,l=K(a,o),c=l.discountMap,d=l.maxDiscount,i(`[SUB-PREVIEW] scope refreshed currentProductId=${o??"n/a"}, maxDiscount=${d}`))}i(`[SUB-PREVIEW] side=B, currentProductId=${o??"n/a"}, maxDiscount=${d}`);function h(f){if(!t||!n)return null;const v=Y(n),g=v?n.get(v):void 0;return g?{formattedVariantPrice:G(g.priceInCents,t),formattedDiscounted:G(g.priceInCents*(1-f/100),t)}:null}function u(f){const v=J(a,f);if(!v)return d;const g=D(a,"subscriptionInput"),I=g.length?g[0].selector:'input[name="rc_plan"]',A=v.querySelector(`${I}:checked`);if(A){const E=c[A.value];if(E!==void 0)return E}return d}function b(f){const v=D(a,"subscriptionDiscount");for(const g of v)if(g.selector.includes("badge")||g.selector.includes("__badge")){const I=f.querySelector(g.selector);I?.textContent&&!I.textContent.includes(`${d}%`)&&$(I,A=>N(A,d))}}function k(f,v){const g=h(v);if(!g)return;const I=D(a,"subscriptionCompareAt");for(const A of I){const E=f.querySelector(A.selector)||f.querySelector(`[part~="${A.selector}"]`);E?.textContent&&!E.textContent.includes(g.formattedVariantPrice)&&$(E,x=>/\d/.test(x)?g.formattedVariantPrice:x)}}function S(f,v){const g=h(v);if(!g)return;const I=D(a,"subscriptionPrice");for(const A of I){const E=f.querySelector(A.selector)||f.querySelector(`[part~="${A.selector}"]`);E?.textContent&&!E.textContent.includes(g.formattedDiscounted)&&$(E,x=>/\d/.test(x)?g.formattedDiscounted:x)}}function P(f){const v=D(a,"subscriptionInput"),g=v.length?v[0].selector:'input[name="rc_plan"]',I=D(a,"subscriptionPlanDiscount"),A=I.length?I[0].selector:".rc-plans-button__discount";for(const E of Array.from(f.querySelectorAll("label"))){const x=E.querySelector(g),R=E.querySelector(A);if(x&&R?.textContent){const V=c[x.value];if(V!==void 0){const O=R.textContent.match(/[\d.]+%/)?.[0];O&&O!==`${V}%`&&$(R,L=>N(L,V))}}}}function _(f){const v=f.querySelector("select");if(v)for(const g of Array.from(v.options)){const I=c[g.value];if(I!==void 0&&g.textContent){const A=g.textContent.match(/[\d.]+%/)?.[0];A&&A!==`${I}%`&&(g.textContent=N(g.textContent,I))}}}function C(f){const v=D(a,"onetimePrice");if(!v.length||!t||!n)return;const g=Y(n),I=g?n.get(g):void 0;if(!I)return;const A=G(I.priceInCents,t),E=D(a,"onetimeContainer"),x=E.length?E[0].selector:'[part~="rc-purchase-option__onetime"]',R=f.querySelector(x);if(R)for(const V of v){const O=R.querySelector(`[part~="${V.selector}"]`);O?.textContent&&!O.textContent.includes(A)&&$(O,L=>/\d/.test(L)?A:L)}}function m(f,v){const I=D(a,"subscriptionDiscount").filter(A=>A.selector.includes("benefit")||A.selector==="rc-benefits");for(const A of I){const E=f.querySelector(A.selector);if(E?.shadowRoot){for(const x of Array.from(E.shadowRoot.querySelectorAll("li")))if(x.textContent?.includes("Save")){const R=x.textContent.match(/[\d.]+%/)?.[0];R&&R!==`${v}%`&&$(x,V=>N(V,v))}}}}let y=!1;function w(){if(!y){y=!0;try{p();const f=B(a);if(!f)return;const v=u(f);b(f),k(f,v),S(f,v),C(f);const g=J(a,f);g&&(r==="buttons"||r==="radio"?P(g):_(g)),m(f,v)}finally{y=!1}}}const T=dt({data:a,runUpdates:w});return function(){T(),s()}}const jt=Object.freeze(Object.defineProperty({__proto__:null,subscriptionPreviewRender:Gt},Symbol.toStringTag,{value:"Module"}))})(); })("/", { suffix: "", type: "index" }, "main", 184602034461, false)</script>
<!-- End of Shoplift scripts -->
 
<meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <meta name="theme-color" content="#171717">
    <link rel="canonical" href="https://www.crowdcompass.io/">
    <link rel="preconnect" href="https://cdn.shopify.com" crossorigin>
    <link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin>
    <link rel="dns-prefetch" href="https://ajax.googleapis.com">
    <link rel="dns-prefetch" href="https://maps.googleapis.com">
    <link rel="dns-prefetch" href="https://maps.gstatic.com">
<link rel="shortcut icon" href="//www.crowdcompass.io/cdn/shop/files/favicon.png?crop=center&height=32&v=1769390566&width=32" type="image/png" /><title>Crowd Compass: Find your friends at music festivals without your phone</title><meta name="description" content="Find your friends at music festivals without your phone, internet, or cell service. Using a private and secure network, see friends who are 3+ miles away, send messages, and more! Wander Freely at your next festival with Crowd Compass">
<meta property="og:site_name" content="Crowd Compass">
<meta property="og:url" content="https://www.crowdcompass.io/">
<meta property="og:title" content="Crowd Compass: Find your friends at music festivals without your phone">
<meta property="og:type" content="website">
<meta property="og:description" content="Find your friends at music festivals without your phone, internet, or cell service. Using a private and secure network, see friends who are 3+ miles away, send messages, and more! Wander Freely at your next festival with Crowd Compass"><meta property="og:image" content="http://www.crowdcompass.io/cdn/shop/files/Hero_logo_and_tagline_fda765e6-61db-4d0d-8fac-86c760dd4043.png?v=1739067489">
  <meta property="og:image:secure_url" content="https://www.crowdcompass.io/cdn/shop/files/Hero_logo_and_tagline_fda765e6-61db-4d0d-8fac-86c760dd4043.png?v=1739067489">
  <meta property="og:image:width" content="1920">
  <meta property="og:image:height" content="1080"><meta name="twitter:site" content="@">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Crowd Compass: Find your friends at music festivals without your phone">
<meta name="twitter:description" content="Find your friends at music festivals without your phone, internet, or cell service. Using a private and secure network, see friends who are 3+ miles away, send messages, and more! Wander Freely at your next festival with Crowd Compass">
<style>@font-face {
  font-family: Roboto;
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  src: url("//www.crowdcompass.io/cdn/fonts/roboto/roboto_n7.f38007a10afbbde8976c4056bfe890710d51dec2.woff2") format("woff2"),
       url("//www.crowdcompass.io/cdn/fonts/roboto/roboto_n7.94bfdd3e80c7be00e128703d245c207769d763f9.woff") format("woff");
}
@font-face {
  font-family: Roboto;
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  src: url("//www.crowdcompass.io/cdn/fonts/roboto/roboto_n5.250d51708d76acbac296b0e21ede8f81de4e37aa.woff2") format("woff2"),
       url("//www.crowdcompass.io/cdn/fonts/roboto/roboto_n5.535e8c56f4cbbdea416167af50ab0ff1360a3949.woff") format("woff");
}
@font-face {
  font-family: Roboto;
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  src: url("//www.crowdcompass.io/cdn/fonts/roboto/roboto_n7.f38007a10afbbde8976c4056bfe890710d51dec2.woff2") format("woff2"),
       url("//www.crowdcompass.io/cdn/fonts/roboto/roboto_n7.94bfdd3e80c7be00e128703d245c207769d763f9.woff") format("woff");
}
@font-face {
  font-family: Raleway;
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  src: url("//www.crowdcompass.io/cdn/fonts/raleway/raleway_n5.0f898fcb9d16ae9a622ce7e706bb26c4a01b5028.woff2") format("woff2"),
       url("//www.crowdcompass.io/cdn/fonts/raleway/raleway_n5.c754eb57a4de1b66b11f20a04a7e3f1462e000f4.woff") format("woff");
}
@font-face {
  font-family: Raleway;
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  src: url("//www.crowdcompass.io/cdn/fonts/raleway/raleway_n5.0f898fcb9d16ae9a622ce7e706bb26c4a01b5028.woff2") format("woff2"),
       url("//www.crowdcompass.io/cdn/fonts/raleway/raleway_n5.c754eb57a4de1b66b11f20a04a7e3f1462e000f4.woff") format("woff");
}
@font-face {
  font-family: Raleway;
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  src: url("//www.crowdcompass.io/cdn/fonts/raleway/raleway_n7.740cf9e1e4566800071db82eeca3cca45f43ba63.woff2") format("woff2"),
       url("//www.crowdcompass.io/cdn/fonts/raleway/raleway_n7.84943791ecde186400af8db54cf3b5b5e5049a8f.woff") format("woff");
}
@font-face {
  font-family: Raleway;
  font-weight: 500;
  font-style: italic;
  font-display: swap;
  src: url("//www.crowdcompass.io/cdn/fonts/raleway/raleway_i5.7c1179a63f760a1745604b586a712edb951beff6.woff2") format("woff2"),
       url("//www.crowdcompass.io/cdn/fonts/raleway/raleway_i5.0c656ad447ea049e85281d48394058c7bfca3cd7.woff") format("woff");
}
@font-face {
  font-family: Raleway;
  font-weight: 700;
  font-style: italic;
  font-display: swap;
  src: url("//www.crowdcompass.io/cdn/fonts/raleway/raleway_i7.6d68e3c55f3382a6b4f1173686f538d89ce56dbc.woff2") format("woff2"),
       url("//www.crowdcompass.io/cdn/fonts/raleway/raleway_i7.ed82a5a5951418ec5b6b0a5010cb65216574b2bd.woff") format("woff");
}
:root {
    /*! General */
    --color-base-text: 13 13 13;
    --color-base-highlight: 254 144 230;
    --color-base-background: 255 255 255;
    --color-base-button: 23 23 23;
    --color-base-button-gradient: #171717;
    --color-base-button-text: 255 255 255;
    --color-keyboard-focus: ;
    --color-shadow: 168 232 226;
    --color-price: 23 23 23;
    --color-sale-price: 225 29 72;
    --color-sale-tag: 225 29 72;
    --color-sale-tag-text: 255 255 255;
    --color-rating: 245 158 11;
    --color-placeholder: 255 255 255;
    --color-success-text: 77 124 15;
    --color-success-background: 247 254 231;
    --color-error-text: 190 18 60;
    --color-error-background: 255 241 242;
    --color-info-text: 245 158 11;
    --color-info-background: 255 251 235;
    
    /*! Menu and drawers */
    --color-drawer-text: 255 255 255;
    --color-drawer-background: 13 13 13;
    --color-drawer-button-background: 106 229 172;
    --color-drawer-button-gradient: #6ae5ac;
    --color-drawer-button-text: 13 13 13;
    --color-drawer-overlay: 23 23 23;

    /*! Product card */
    --card-radius: var(--rounded-card);
    --card-border-width: 0.2rem;
    --card-border-opacity: 0.0;
    --card-shadow-opacity: 0.1;
    --card-shadow-horizontal-offset: 0.0rem;
    --card-shadow-vertical-offset: 0.0rem;

    /*! Buttons */
    --buttons-radius: var(--rounded-button);
    --buttons-border-width: 2px;
    --buttons-border-opacity: 1.0;
    --buttons-shadow-opacity: 0.0;
    --buttons-shadow-horizontal-offset: 0px;
    --buttons-shadow-vertical-offset: 0px;

    /*! Inputs */
    --inputs-radius: var(--rounded-input);
    --inputs-border-width: 0px;
    --inputs-border-opacity: 0.65;

    /*! Spacing */
    --sp-0d5: 0.125rem;
    --sp-1: 0.25rem;
    --sp-1d5: 0.375rem;
    --sp-2: 0.5rem;
    --sp-2d5: 0.625rem;
    --sp-3: 0.75rem;
    --sp-3d5: 0.875rem;
    --sp-4: 1rem;
    --sp-4d5: 1.125rem;
    --sp-5: 1.25rem;
    --sp-5d5: 1.375rem;
    --sp-6: 1.5rem;
    --sp-6d5: 1.625rem;
    --sp-7: 1.75rem;
    --sp-7d5: 1.875rem;
    --sp-8: 2rem;
    --sp-8d5: 2.125rem;
    --sp-9: 2.25rem;
    --sp-9d5: 2.375rem;
    --sp-10: 2.5rem;
    --sp-10d5: 2.625rem;
    --sp-11: 2.75rem;
    --sp-12: 3rem;
    --sp-13: 3.25rem;
    --sp-14: 3.5rem;
    --sp-15: 3.875rem;
    --sp-16: 4rem;
    --sp-18: 4.5rem;
    --sp-20: 5rem;
    --sp-23: 5.625rem;
    --sp-24: 6rem;
    --sp-28: 7rem;
    --sp-32: 8rem;
    --sp-36: 9rem;
    --sp-40: 10rem;
    --sp-44: 11rem;
    --sp-48: 12rem;
    --sp-52: 13rem;
    --sp-56: 14rem;
    --sp-60: 15rem;
    --sp-64: 16rem;
    --sp-68: 17rem;
    --sp-72: 18rem;
    --sp-80: 20rem;
    --sp-96: 24rem;
    --sp-100: 32rem;

    /*! Font family */
    --font-heading-family: Roboto, sans-serif;
    --font-heading-style: normal;
    --font-heading-weight: 700;
    --font-heading-line-height: 1;
    --font-heading-letter-spacing: -0.035em;
    

    --font-body-family: Raleway, sans-serif;
    --font-body-style: normal;
    --font-body-weight: 500;
    --font-body-line-height: 1.4;
    --font-body-letter-spacing: 0.0em;

    --font-navigation-family: var(--font-body-family);
    --font-navigation-size: clamp(0.875rem, 0.748rem + 0.3174vw, 1.125rem);
    --font-navigation-weight: 500;
    

    --font-button-family: var(--font-body-family);
    --font-button-size: clamp(0.875rem, 0.8115rem + 0.1587vw, 1.0rem);
    --font-button-weight: 500;
    

    --font-product-family: var(--font-heading-family);
    --font-product-size: clamp(1.0rem, 0.873rem + 0.3175vw, 1.25rem);
    --font-product-weight: 500;
    

    /*! Font size */
    --text-3xs: 0.625rem;
    --text-2xs: 0.6875rem;
    --text-xs: 0.75rem;
    --text-2sm: 0.8125rem;
    --text-sm: 0.875rem;
    --text-base: 1.0rem;
    --text-lg: 1.125rem;
    --text-xl: 1.25rem;
    --text-2xl: 1.5rem;
    --text-3xl: 1.875rem;
    --text-4xl: 2.25rem;
    --text-5xl: 3.0rem;
    --text-6xl: 3.75rem;
    --text-7xl: 4.5rem;
    --text-8xl: 6.0rem;

    /*! Layout */
    --page-width: 1460px;
    --gap-padding: clamp(var(--sp-5), 2.526vw, var(--sp-12));
    --grid-gap: clamp(40px, 20vw, 60px);
    --page-padding: var(--sp-5);
    --page-container: min(calc(100vw - var(--scrollbar-width, 0px) - var(--page-padding) * 2), var(--page-width));
    --rounded-button: 3.75rem;
    --rounded-input: 0.375rem;
    --rounded-card: clamp(var(--sp-2d5), 1.053vw, var(--sp-5));
    --rounded-block: clamp(var(--sp-2d5), 1.053vw, var(--sp-5));

    /*! Other */
    --icon-weight: 1.5px;
  }

  @media screen and (min-width: 1024px) {
    :root {
      --page-padding: var(--sp-9);
    }
  }

  @media screen and (min-width: 1280px) {
    :root {
      --gap-padding: var(--sp-12);
      --page-padding: var(--sp-12);
      --page-container: min(calc(100vw - var(--scrollbar-width, 0px) - var(--page-padding) * 2), max(var(--page-width), 1280px));
    }
  }

  @media screen and (min-width: 1536px) {
    :root {
      --page-padding: max(var(--sp-12), 50vw - var(--scrollbar-width, 0px)/2 - var(--page-width)/2);
    }
  }
</style>
  <link rel="preload" as="font" href="//www.crowdcompass.io/cdn/fonts/raleway/raleway_n5.0f898fcb9d16ae9a622ce7e706bb26c4a01b5028.woff2" type="font/woff2" crossorigin>

  <link rel="preload" as="font" href="//www.crowdcompass.io/cdn/fonts/roboto/roboto_n7.f38007a10afbbde8976c4056bfe890710d51dec2.woff2" type="font/woff2" crossorigin>
<link href="//www.crowdcompass.io/cdn/shop/t/56/assets/theme.css?v=54130150842442101401769371158" rel="stylesheet" type="text/css" media="all" /><link rel="stylesheet" href="//www.crowdcompass.io/cdn/shop/t/56/assets/apps.css?v=162097722211979372921769371146" media="print" fetchpriority="low" onload="this.media='all'">

    <script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script><meta name="facebook-domain-verification" content="52leusbgjs91dbbtwfjnccilzsge89">
<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/81020387613/digital_wallets/dialog">
<meta name="shopify-checkout-api-token" content="2e422fc7e4895439b00a88e7cfd90266">
<meta id="in-context-paypal-metadata" data-shop-id="81020387613" data-venmo-supported="true" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD">
<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=81020387613" crossorigin="anonymous"></script>
<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":81020387613,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/81020387613","merchantName":"Crowd Compass","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Crowd Compass","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
<script id="shopify-features" type="application/json">{"accessToken":"2e422fc7e4895439b00a88e7cfd90266","betas":["rich-media-storefront-analytics"],"domain":"www.crowdcompass.io","predictiveSearch":true,"shopId":81020387613,"locale":"en"}</script>
<script>var Shopify = Shopify || {};
Shopify.shop = "f8e228.myshopify.com";
Shopify.locale = "en";
Shopify.currency = {"active":"USD","rate":"1.0"};
Shopify.country = "US";
Shopify.theme = {"name":"Updated copy of Shark Tank Airing","id":184602034461,"schema_name":"Concept","schema_version":"5.2.0","theme_store_id":2412,"role":"main"};
Shopify.theme.handle = "null";
Shopify.theme.style = {"id":null,"handle":null};
Shopify.cdnHost = "www.crowdcompass.io/cdn";
Shopify.routes = Shopify.routes || {};
Shopify.routes.root = "/";
Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
Shopify.SignInWithShop = Shopify.SignInWithShop || {};
Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
Shopify.SignInWithShop.User.recognized = false;</script>
<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
<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>
<script>
  window.ShopifyPay = window.ShopifyPay || {};
  window.ShopifyPay.apiHost = "shop.app\/pay";
  window.ShopifyPay.redirectState = null;
</script>
<script>
  window.Shopify = window.Shopify || {};
  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.01 };
  window.Shopify.SignInWithShop.eligible = true;
</script>
<script id="shop-js-analytics" type="application/json">{"pageType":"index"}</script>
<script defer="defer" async type="module" src="//www.crowdcompass.io/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
<script type="module">
  await import("//www.crowdcompass.io/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");

  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true,"transferSessionEnabled":true});

</script>
<script>
  window.Shopify = window.Shopify || {};
  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
  window.Shopify.featureAssets['shop-js'] = {"listener":["modules/v2/loader.listener.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"avatar":["modules/v2/loader.avatar.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.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-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"]};
</script>
<script>(function() {
  var isLoaded = false;
  function asyncLoad() {
    if (isLoaded) return;
    isLoaded = true;
    var urls = ["https:\/\/chimpstatic.com\/mcjs-connected\/js\/users\/0d169922f154dd2f3a08b8a0c\/9d48e813bba19d6b49ccd8182.js?shop=f8e228.myshopify.com","https:\/\/hotjar.dualsidedapp.com\/script.js?shop=f8e228.myshopify.com\u0026shop=f8e228.myshopify.com","https:\/\/a.mailmunch.co\/widgets\/site-1047569-4f71683ff30fe5af82876d40f17ec3188c164a84.js?shop=f8e228.myshopify.com"];
    for (var i = 0; i < urls.length; i++) {
      var s = document.createElement('script');
      s.type = 'text/javascript';
      s.async = true;
      s.src = urls[i];
      var x = document.getElementsByTagName('script')[0];
      x.parentNode.insertBefore(s, x);
    }
  };
  if(window.attachEvent) {
    window.attachEvent('onload', asyncLoad);
  } else {
    window.addEventListener('load', asyncLoad, false);
  }
})();</script>
<script id="__st">var __st={"a":81020387613,"offset":-25200,"reqid":"400cbea5-13f7-43f8-86b4-75912952c0a8-1782059231","pageurl":"www.crowdcompass.io\/index.xml","u":"c4bfe6e0994d","p":"home"};</script>
<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
<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.2.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>
<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//www.crowdcompass.io/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
<script crossorigin="anonymous" defer="defer" src="//www.crowdcompass.io/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-bf1cdb70.js?v=20250812"></script>
<script id="shopify-origin-trials" async="async" integrity="sha256-MrpR+SbfwphjsvuxKsSWA5xxY07P36eahsNLLXSgEwo=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-c173577b.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://www.crowdcompass.io/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
</script>
<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
  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);
</script>
<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})}}));
</script>
<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://www.crowdcompass.io/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
<style id="shopify-accelerated-checkout-cart">
        #shopify-buyer-consent {
  margin-top: 1em;
  display: inline-block;
  width: 100%;
}

#shopify-buyer-consent.hidden {
  display: none;
}

#shopify-subscription-policy-button {
  background: none;
  border: none;
  padding: 0;
  text-decoration: underline;
  font-size: inherit;
  cursor: pointer;
}

#shopify-subscription-policy-button::before {
  box-shadow: none;
}

      </style>

<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>

    <script src="//www.crowdcompass.io/cdn/shop/t/56/assets/vendor.js?v=83836565987576270061769371159" defer="defer"></script>
    <script src="//www.crowdcompass.io/cdn/shop/t/56/assets/theme.js?v=66574789208036865481769371158" defer="defer"></script><script>
  document.documentElement.classList.replace('no-js', 'js');

  window.theme = window.theme || {};
  theme.routes = {
    shop_url: 'https://www.crowdcompass.io',
    root_url: '/',
    cart_url: '/cart',
    cart_add_url: '/cart/add',
    cart_change_url: '/cart/change',
    cart_update_url: '/cart/update',
    search_url: '/search',
    predictive_search_url: '/search/suggest'
  };

  theme.variantStrings = {
    preOrder: "Pre-order",
    addToCart: "Add to cart",
    soldOut: "Sold Out",
    unavailable: "Unavailable",
    addToBundle: "Add to bundle",
    backInStock: "Notify me when it’s available"
  };

  theme.shippingCalculatorStrings = {
    error: "One or more errors occurred while retrieving the shipping rates:",
    notFound: "Sorry, we do not ship to your address.",
    oneResult: "There is one shipping rate for your address:",
    multipleResults: "There are multiple shipping rates for your address:"
  };

  theme.discountStrings = {
    error: "Discount code cannot be applied to your cart",
    shippingError: "Shipping discounts are shown at checkout after adding an address"
  };

  theme.recipientFormStrings = {
    expanded: "Gift card recipient form expanded",
    collapsed: "Gift card recipient form collapsed"
  };

  theme.quickOrderListStrings = {
    itemsAdded: "[quantity] items added",
    itemAdded: "[quantity] item added",
    itemsRemoved: "[quantity] items removed",
    itemRemoved: "[quantity] item removed",
    viewCart: "View cart",
    each: "[money]\/ea",
    minError: "This item has a minimum of [min]",
    maxError: "This item has a maximum of [max]",
    stepError: "You can only add this item in increments of [step]"
  };

  theme.cartStrings = {
    error: "There was an error while updating your cart. Please try again.",
    quantityError: "You can only add [quantity] of this item to your cart.",
    giftNoteAttribute: "Gift note",
    giftWrapAttribute: "Gift wrapping",
    giftWrapBooleanTrue: "Yes",
    targetProductAttribute: "For"
  };

  theme.dateStrings = {
    d: "d",
    day: "Day",
    days: "Days",
    h: "h",
    hour: "Hour",
    hours: "Hours",
    m: "m",
    minute: "Min",
    minutes: "Mins",
    s: "s",
    second: "Sec",
    seconds: "Secs"
  };theme.strings = {
    recentlyViewedEmpty: "Your recently viewed is empty.",
    close: "Close",
    next: "Next",
    previous: "Previous",
    qrImageAlt: "QR code — scan to redeem gift card"
  };

  theme.settings = {
    moneyFormat: "${{amount_no_decimals}}",
    moneyWithCurrencyFormat: "${{amount_no_decimals}} USD",
    currencyCodeEnabled: false,
    externalLinksNewTab: false,
    cartType: "page",
    isCartTemplate: false,
    pswpModule: "\/\/www.crowdcompass.io\/cdn\/shop\/t\/56\/assets\/photoswipe.min.js?v=41760041872977459911769371155",
    themeName: 'Concept',
    themeVersion: '5.2.0',
    agencyId: ''
  };</script>
<!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/clarity_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea -->
<script type="text/javascript">
  (function (c, l, a, r, i, t, y) {
    c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); };
    t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i + "?ref=shopify";
    y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y);

    c.Shopify.loadFeatures([{ name: "consent-tracking-api", version: "0.1" }], error => {
      if (error) {
        console.error("Error loading Shopify features:", error);
        return;
      }

      c[a]('consentv2', {
        ad_Storage: c.Shopify.customerPrivacy.marketingAllowed() ? "granted" : "denied",
        analytics_Storage: c.Shopify.customerPrivacy.analyticsProcessingAllowed() ? "granted" : "denied",
        source: 101,
      });
    });

    l.addEventListener("visitorConsentCollected", function (e) {
      c[a]('consentv2', {
        ad_Storage: e.detail.marketingAllowed ? "granted" : "denied",
        analytics_Storage: e.detail.analyticsAllowed ? "granted" : "denied",
        source: 101,
      });
    });
  })(window, document, "clarity", "script", "v12y5we9un");
</script>



<!-- END app block --><!-- BEGIN app block: shopify://apps/judge-me-reviews/blocks/judgeme_core/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8 --><!-- Start of Judge.me Core -->







<link rel="dns-prefetch" href="https://cdn.judge.me">
<link rel="dns-prefetch" href="https://cdn1.judge.me">
<link rel="dns-prefetch" href="https://api.judge.me">

<script data-cfasync='false' class='jdgm-settings-script'>window.jdgmSettings={"pagination":5,"disable_web_reviews":true,"badge_no_review_text":"No reviews","badge_n_reviews_text":"{{ n }} review/reviews","hide_badge_preview_if_no_reviews":true,"badge_hide_text":true,"enforce_center_preview_badge":false,"widget_title":"Trusted By People Who've Used It When It Mattered Most","widget_open_form_text":"Write a review","widget_close_form_text":"Cancel review","widget_refresh_page_text":"Refresh page","widget_summary_text":"Based on {{ number_of_reviews }} review/reviews","widget_no_review_text":"Be the first to write a review","widget_name_field_text":"Display name","widget_verified_name_field_text":"Verified Name (public)","widget_name_placeholder_text":"Display name","widget_required_field_error_text":"This field is required.","widget_email_field_text":"Email address","widget_verified_email_field_text":"Verified Email (private, can not be edited)","widget_email_placeholder_text":"Your email address","widget_email_field_error_text":"Please enter a valid email address.","widget_rating_field_text":"Rating","widget_review_title_field_text":"Review Title","widget_review_title_placeholder_text":"Give your review a title","widget_review_body_field_text":"Review content","widget_review_body_placeholder_text":"Start writing here...","widget_pictures_field_text":"Picture/Video (optional)","widget_submit_review_text":"Submit Review","widget_submit_verified_review_text":"Submit Verified Review","widget_submit_success_msg_with_auto_publish":"Thank you! Please refresh the page in a few moments to see your review. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_submit_success_msg_no_auto_publish":"Thank you! Your review will be published as soon as it is approved by the shop admin. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_show_default_reviews_out_of_total_text":"Showing {{ n_reviews_shown }} out of {{ n_reviews }} reviews.","widget_show_all_link_text":"Show all","widget_show_less_link_text":"Show less","widget_author_said_text":"{{ reviewer_name }} said:","widget_days_text":"{{ n }} days ago","widget_weeks_text":"{{ n }} week/weeks ago","widget_months_text":"{{ n }} month/months ago","widget_years_text":"{{ n }} year/years ago","widget_yesterday_text":"Yesterday","widget_today_text":"Today","widget_replied_text":"\u003e\u003e {{ shop_name }} replied:","widget_read_more_text":"Read more","widget_reviewer_name_as_initial":"","widget_rating_filter_color":"#6AE5AC","widget_rating_filter_see_all_text":"See all reviews","widget_sorting_most_recent_text":"Most Recent","widget_sorting_highest_rating_text":"Highest Rating","widget_sorting_lowest_rating_text":"Lowest Rating","widget_sorting_with_pictures_text":"Only Pictures","widget_sorting_most_helpful_text":"Most Helpful","widget_open_question_form_text":"Ask a question","widget_reviews_subtab_text":"Reviews","widget_questions_subtab_text":"Questions","widget_question_label_text":"Question","widget_answer_label_text":"Answer","widget_question_placeholder_text":"Write your question here","widget_submit_question_text":"Submit Question","widget_question_submit_success_text":"Thank you for your question! We will notify you once it gets answered.","verified_badge_text":"Verified","verified_badge_bg_color":"","verified_badge_text_color":"","verified_badge_placement":"left-of-reviewer-name","widget_review_max_height":"","widget_hide_border":false,"widget_social_share":false,"widget_thumb":false,"widget_review_location_show":false,"widget_location_format":"","all_reviews_include_out_of_store_products":true,"all_reviews_out_of_store_text":"(out of store)","all_reviews_pagination":100,"all_reviews_product_name_prefix_text":"about","enable_review_pictures":false,"enable_question_anwser":false,"widget_theme":"align","review_date_format":"mm/dd/yyyy","default_sort_method":"most-recent","widget_product_reviews_subtab_text":"Product Reviews","widget_shop_reviews_subtab_text":"Shop Reviews","widget_other_products_reviews_text":"Reviews for other products","widget_store_reviews_subtab_text":"Store reviews","widget_product_variant_reference_text":"Review for","widget_no_store_reviews_text":"This store hasn't received any reviews yet","widget_web_restriction_product_reviews_text":"This product hasn't received any reviews yet","widget_no_items_text":"No items found","widget_show_more_text":"Show more","widget_write_a_store_review_text":"Write a Store Review","widget_product_and_store_reviews_text":"Product and store reviews","widget_reviews_in_collection_text":"Reviews in this collection","widget_other_languages_heading":"Reviews in Other Languages","widget_translate_review_text":"Translate review to {{ language }}","widget_translating_review_text":"Translating...","widget_show_original_translation_text":"Show original ({{ language }})","widget_translate_review_failed_text":"Review couldn't be translated.","widget_translate_review_retry_text":"Retry","widget_translate_review_try_again_later_text":"Try again later","show_product_url_for_grouped_product":false,"widget_sorting_pictures_first_text":"Pictures First","show_pictures_on_all_rev_page_mobile":false,"show_pictures_on_all_rev_page_desktop":false,"floating_tab_hide_mobile_install_preference":false,"floating_tab_button_name":"★ Reviews","floating_tab_title":"Let customers speak for us","floating_tab_button_color":"","floating_tab_button_background_color":"","floating_tab_url":"","floating_tab_url_enabled":false,"floating_tab_tab_style":"text","all_reviews_text_badge_text":"Customers rate us {{ shop.metafields.judgeme.all_reviews_rating | round: 1 }}/5 based on {{ shop.metafields.judgeme.all_reviews_count }} reviews.","all_reviews_text_badge_text_branded_style":"{{ shop.metafields.judgeme.all_reviews_rating | round: 1 }} out of 5 stars based on {{ shop.metafields.judgeme.all_reviews_count }} reviews","is_all_reviews_text_badge_a_link":false,"show_stars_for_all_reviews_text_badge":false,"all_reviews_text_badge_url":"","all_reviews_text_style":"branded","all_reviews_text_color_style":"judgeme_brand_color","all_reviews_text_color":"#108474","all_reviews_text_show_jm_brand":true,"featured_carousel_show_header":false,"featured_carousel_title":"What Our Customers Are Saying","testimonials_carousel_title":"Customers are saying","videos_carousel_title":"Real customer stories","cards_carousel_title":"Customers are saying","featured_carousel_count_text":"from {{ n }} reviews","featured_carousel_add_link_to_all_reviews_page":true,"featured_carousel_url":"/pages/reviews","featured_carousel_show_images":false,"featured_carousel_autoslide_interval":0,"featured_carousel_arrows_on_the_sides":true,"featured_carousel_height":300,"featured_carousel_width":100,"featured_carousel_image_size":0,"featured_carousel_image_height":250,"featured_carousel_arrow_color":"#eeeeee","verified_count_badge_style":"branded","verified_count_badge_orientation":"horizontal","verified_count_badge_color_style":"judgeme_brand_color","verified_count_badge_color":"#108474","is_verified_count_badge_a_link":false,"verified_count_badge_url":"","verified_count_badge_show_jm_brand":true,"widget_rating_preset_default":5,"widget_first_sub_tab":"product-reviews","widget_show_histogram":true,"widget_histogram_use_custom_color":true,"widget_pagination_use_custom_color":true,"widget_star_use_custom_color":false,"widget_verified_badge_use_custom_color":false,"widget_write_review_use_custom_color":false,"picture_reminder_submit_button":"Upload Pictures","enable_review_videos":false,"mute_video_by_default":false,"widget_sorting_videos_first_text":"Videos First","widget_review_pending_text":"Pending","featured_carousel_items_for_large_screen":3,"social_share_options_order":"Facebook,Twitter","remove_microdata_snippet":true,"disable_json_ld":false,"enable_json_ld_products":false,"preview_badge_show_question_text":false,"preview_badge_no_question_text":"No questions","preview_badge_n_question_text":"{{ number_of_questions }} question/questions","qa_badge_show_icon":false,"qa_badge_position":"same-row","remove_judgeme_branding":true,"widget_add_search_bar":false,"widget_search_bar_placeholder":"Search","widget_sorting_verified_only_text":"Verified only","featured_carousel_theme":"card","featured_carousel_show_rating":true,"featured_carousel_show_title":true,"featured_carousel_show_body":true,"featured_carousel_show_date":true,"featured_carousel_show_reviewer":true,"featured_carousel_show_product":false,"featured_carousel_header_background_color":"#108474","featured_carousel_header_text_color":"#ffffff","featured_carousel_name_product_separator":"reviewed","featured_carousel_full_star_background":"#6AE5AC","featured_carousel_empty_star_background":"#dadada","featured_carousel_vertical_theme_background":"#f9fafb","featured_carousel_verified_badge_enable":true,"featured_carousel_verified_badge_color":"#108474","featured_carousel_border_style":"round","featured_carousel_review_line_length_limit":3,"featured_carousel_more_reviews_button_text":"Read more reviews","featured_carousel_view_product_button_text":"View product","all_reviews_page_load_reviews_on":"scroll","all_reviews_page_load_more_text":"Load More Reviews","disable_fb_tab_reviews":false,"enable_ajax_cdn_cache":false,"widget_advanced_speed_features":5,"widget_public_name_text":"displayed publicly like","default_reviewer_name":"John Smith","default_reviewer_name_has_non_latin":true,"widget_reviewer_anonymous":"Anonymous","medals_widget_title":"Judge.me Review Medals","medals_widget_background_color":"#f9fafb","medals_widget_position":"footer_all_pages","medals_widget_border_color":"#f9fafb","medals_widget_verified_text_position":"left","medals_widget_use_monochromatic_version":false,"medals_widget_elements_color":"#108474","show_reviewer_avatar":true,"widget_invalid_yt_video_url_error_text":"Not a YouTube video URL","widget_max_length_field_error_text":"Please enter no more than {0} characters.","widget_show_country_flag":false,"widget_show_collected_via_shop_app":true,"widget_verified_by_shop_badge_style":"light","widget_verified_by_shop_text":"Verified by Shop","widget_show_photo_gallery":false,"widget_load_with_code_splitting":true,"widget_ugc_install_preference":false,"widget_ugc_title":"Made by us, Shared by you","widget_ugc_subtitle":"Tag us to see your picture featured in our page","widget_ugc_arrows_color":"#ffffff","widget_ugc_primary_button_text":"Buy Now","widget_ugc_primary_button_background_color":"#108474","widget_ugc_primary_button_text_color":"#ffffff","widget_ugc_primary_button_border_width":"0","widget_ugc_primary_button_border_style":"none","widget_ugc_primary_button_border_color":"#108474","widget_ugc_primary_button_border_radius":"25","widget_ugc_secondary_button_text":"Load More","widget_ugc_secondary_button_background_color":"#ffffff","widget_ugc_secondary_button_text_color":"#108474","widget_ugc_secondary_button_border_width":"2","widget_ugc_secondary_button_border_style":"solid","widget_ugc_secondary_button_border_color":"#108474","widget_ugc_secondary_button_border_radius":"25","widget_ugc_reviews_button_text":"View Reviews","widget_ugc_reviews_button_background_color":"#ffffff","widget_ugc_reviews_button_text_color":"#108474","widget_ugc_reviews_button_border_width":"2","widget_ugc_reviews_button_border_style":"solid","widget_ugc_reviews_button_border_color":"#108474","widget_ugc_reviews_button_border_radius":"25","widget_ugc_reviews_button_link_to":"judgeme-reviews-page","widget_ugc_show_post_date":true,"widget_ugc_max_width":"800","widget_rating_metafield_value_type":true,"widget_primary_color":"#6AE5AC","widget_enable_secondary_color":false,"widget_secondary_color":"#edf5f5","widget_summary_average_rating_text":"{{ average_rating }} out of 5","widget_media_grid_title":"Customer photos \u0026 videos","widget_media_grid_see_more_text":"See more","widget_round_style":true,"widget_show_product_medals":false,"widget_verified_by_judgeme_text":"Verified by Judge.me","widget_show_store_medals":false,"widget_verified_by_judgeme_text_in_store_medals":"Verified by Judge.me","widget_media_field_exceed_quantity_message":"Sorry, we can only accept {{ max_media }} for one review.","widget_media_field_exceed_limit_message":"{{ file_name }} is too large, please select a {{ media_type }} less than {{ size_limit }}MB.","widget_review_submitted_text":"Review Submitted!","widget_question_submitted_text":"Question Submitted!","widget_close_form_text_question":"Cancel","widget_write_your_answer_here_text":"Write your answer here","widget_enabled_branded_link":false,"widget_show_collected_by_judgeme":false,"widget_reviewer_name_color":"#0D0D0D","widget_write_review_text_color":"#FFFFFF","widget_write_review_bg_color":"","widget_collected_by_judgeme_text":"collected by Judge.me","widget_pagination_type":"standard","widget_load_more_text":"Load More","widget_load_more_color":"#6AE5AC","widget_full_review_text":"Full Review","widget_read_more_reviews_text":"Read More Reviews","widget_read_questions_text":"Read Questions","widget_questions_and_answers_text":"Questions \u0026 Answers","widget_verified_by_text":"Verified by","widget_verified_text":"Verified","widget_number_of_reviews_text":"{{ number_of_reviews }} reviews","widget_back_button_text":"Back","widget_next_button_text":"Next","widget_custom_forms_filter_button":"Filters","custom_forms_style":"horizontal","widget_show_review_information":false,"how_reviews_are_collected":"How reviews are collected?","widget_show_review_keywords":false,"widget_gdpr_statement":"How we use your data: We'll only contact you about the review you left, and only if necessary. By submitting your review, you agree to Judge.me's \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms\u003c/a\u003e, \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy\u003c/a\u003e and \u003ca href='https://judge.me/content-policy' target='_blank' rel='nofollow noopener'\u003econtent\u003c/a\u003e policies.","widget_multilingual_sorting_enabled":false,"widget_translate_review_content_enabled":false,"widget_translate_review_content_method":"manual","popup_widget_review_selection":"automatically_with_pictures","popup_widget_round_border_style":true,"popup_widget_show_title":true,"popup_widget_show_body":true,"popup_widget_show_reviewer":false,"popup_widget_show_product":true,"popup_widget_show_pictures":true,"popup_widget_use_review_picture":true,"popup_widget_show_on_home_page":true,"popup_widget_show_on_product_page":true,"popup_widget_show_on_collection_page":true,"popup_widget_show_on_cart_page":true,"popup_widget_position":"bottom_left","popup_widget_first_review_delay":5,"popup_widget_duration":5,"popup_widget_interval":5,"popup_widget_review_count":5,"popup_widget_hide_on_mobile":true,"review_snippet_widget_round_border_style":true,"review_snippet_widget_card_color":"#FFFFFF","review_snippet_widget_slider_arrows_background_color":"#FFFFFF","review_snippet_widget_slider_arrows_color":"#000000","review_snippet_widget_star_color":"#108474","show_product_variant":false,"all_reviews_product_variant_label_text":"Variant: ","widget_show_verified_branding":false,"widget_ai_summary_title":"Customers say","widget_ai_summary_disclaimer":"AI-powered review summary based on recent customer reviews","widget_show_ai_summary":false,"widget_show_ai_summary_bg":false,"write_review_button_visibility":"everyone","store_summary_widget_heading":"Customers rate this store","store_summary_widget_button_text":"View customer reviews","store_summary_widget_button_theme_text":"See AI reviews summary","widget_show_review_title_input":true,"redirect_reviewers_invited_via_email":"review_widget","request_store_review_after_product_review":false,"request_review_other_products_in_order":false,"review_form_color_scheme":"default","review_form_corner_style":"square","review_form_star_color":{},"review_form_text_color":"#333333","review_form_background_color":"#ffffff","review_form_field_background_color":"#fafafa","review_form_button_color":{},"review_form_button_text_color":"#ffffff","review_form_modal_overlay_color":"#000000","review_content_screen_title_text":"How would you rate this product?","review_content_introduction_text":"We would love it if you would share a bit about your experience.","store_review_form_title_text":"How would you rate this store?","store_review_form_introduction_text":"We would love it if you would share a bit about your experience.","show_review_guidance_text":true,"one_star_review_guidance_text":"Poor","five_star_review_guidance_text":"Great","customer_information_screen_title_text":"About you","customer_information_introduction_text":"Please tell us more about you.","custom_questions_screen_title_text":"Your experience in more detail","custom_questions_introduction_text":"Here are a few questions to help us understand more about your experience.","review_submitted_screen_title_text":"Thanks for your review!","review_submitted_screen_thank_you_text":"We are processing it and it will appear on the store soon.","review_submitted_screen_email_verification_text":"Please confirm your email by clicking the link we just sent you. This helps us keep reviews authentic.","confirm_email_screen_title_text":"Confirm your email","confirm_email_screen_message_text":"To help keep reviews authentic, we'll send you a secure link to continue writing your review. It only takes a moment.","check_email_screen_title_text":"Check your email","check_email_screen_message_text":"We sent you an email to {{ email }}. Click the button on the email to continue.","check_email_screen_resend_message_text":"Email resent!","check_email_resend_hint_text":"Didn't get the email? Check your spam folder or [resend the email].","verification_email_rate_limit_error_text":"You've reached the limit for review attempts on this product. Please check your inbox or try again later.","review_submitted_request_store_review_text":"Would you like to share your experience of shopping with us?","review_submitted_review_other_products_text":"Would you like to review these products?","store_review_screen_title_text":"Would you like to share your experience of shopping with us?","store_review_introduction_text":"We value your feedback and use it to improve. Please share any thoughts or suggestions you have.","reviewer_media_screen_title_picture_text":"Share a picture","reviewer_media_introduction_picture_text":"Upload a photo to support your review.","reviewer_media_screen_title_video_text":"Share a video","reviewer_media_introduction_video_text":"Upload a video to support your review.","reviewer_media_screen_title_picture_or_video_text":"Share a picture or video","reviewer_media_introduction_picture_or_video_text":"Upload a photo or video to support your review.","reviewer_media_youtube_url_text":"Paste your Youtube URL here","advanced_settings_next_step_button_text":"Next","advanced_settings_close_review_button_text":"Close","modal_write_review_flow":false,"write_review_flow_required_text":"Required","write_review_flow_privacy_message_text":"We respect your privacy.","write_review_flow_anonymous_text":"Post review as anonymous","write_review_flow_visibility_text":"This won't be visible to other customers.","write_review_flow_multiple_selection_help_text":"Select as many as you like","write_review_flow_single_selection_help_text":"Select one option","write_review_flow_required_field_error_text":"This field is required","write_review_flow_invalid_email_error_text":"Please enter a valid email address","write_review_flow_max_length_error_text":"Max. {{ max_length }} characters.","write_review_flow_media_upload_text":"\u003cb\u003eClick to upload\u003c/b\u003e or drag and drop","write_review_flow_gdpr_statement":"We'll only contact you about your review if necessary. By submitting your review, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","rating_only_reviews_enabled":false,"show_negative_reviews_help_screen":false,"new_review_flow_help_screen_rating_threshold":3,"negative_review_resolution_screen_title_text":"Tell us more","negative_review_resolution_text":"Your experience matters to us. If there were issues with your purchase, we're here to help. Feel free to reach out to us, we'd love the opportunity to make things right.","negative_review_resolution_button_text":"Contact us","negative_review_resolution_proceed_with_review_text":"Leave a review","negative_review_resolution_subject":"Issue with purchase from {{ shop_name }}.{{ order_name }}","preview_badge_collection_page_install_status":false,"widget_review_custom_css":".jdgm-rev__author, .jdgm-sort-dropdown-wrapper .jdgm-sort-dropdown, .jdgm-sort-dropdown-wrapper .jdgm-sort-dropdown-arrow {\n   color: #0D0D0D;\n}","preview_badge_custom_css":"","preview_badge_stars_count":"5-stars","featured_carousel_custom_css":"","floating_tab_custom_css":"","all_reviews_widget_custom_css":".jdgm-rev__author, .jdgm-sort-dropdown-wrapper .jdgm-sort-dropdown, .jdgm-sort-dropdown-wrapper .jdgm-sort-dropdown-arrow {\n   color: #0D0D0D;\n}","medals_widget_custom_css":"","verified_badge_custom_css":"","all_reviews_text_custom_css":"","transparency_badges_collected_via_store_invite":false,"transparency_badges_from_another_provider":false,"transparency_badges_collected_from_store_visitor":false,"transparency_badges_collected_by_verified_review_provider":false,"transparency_badges_earned_reward":false,"transparency_badges_collected_via_store_invite_text":"Review collected via store invitation","transparency_badges_from_another_provider_text":"Review collected from another provider","transparency_badges_collected_from_store_visitor_text":"Review collected from a store visitor","transparency_badges_written_in_google_text":"Review written in Google","transparency_badges_written_in_etsy_text":"Review written in Etsy","transparency_badges_written_in_shop_app_text":"Review written in Shop App","transparency_badges_earned_reward_text":"Review earned a reward for future purchase","product_review_widget_per_page":10,"widget_store_review_label_text":"Review about the store","checkout_comment_extension_title_on_product_page":"Customer Comments","checkout_comment_extension_num_latest_comment_show":5,"checkout_comment_extension_format":"name_and_timestamp","checkout_comment_customer_name":"last_initial","checkout_comment_comment_notification":true,"preview_badge_collection_page_install_preference":false,"preview_badge_home_page_install_preference":false,"preview_badge_product_page_install_preference":false,"review_widget_install_preference":"","review_carousel_install_preference":false,"floating_reviews_tab_install_preference":"none","verified_reviews_count_badge_install_preference":false,"all_reviews_text_install_preference":false,"review_widget_best_location":false,"judgeme_medals_install_preference":false,"review_widget_revamp_enabled":false,"review_widget_qna_enabled":false,"review_widget_header_theme":"minimal","review_widget_widget_title_enabled":true,"review_widget_header_text_size":"medium","review_widget_header_text_weight":"regular","review_widget_average_rating_style":"compact","review_widget_bar_chart_enabled":true,"review_widget_bar_chart_type":"numbers","review_widget_bar_chart_style":"standard","review_widget_expanded_media_gallery_enabled":false,"review_widget_show_review_highlights":false,"review_widget_show_review_keywords_in_gray":false,"review_widget_reviews_section_theme":"standard","review_widget_image_style":"thumbnails","review_widget_review_image_ratio":"square","review_widget_stars_size":"medium","review_widget_verified_badge":"standard_text","review_widget_review_title_text_size":"medium","review_widget_review_text_size":"medium","review_widget_review_text_length":"medium","review_widget_number_of_columns_desktop":3,"review_widget_carousel_transition_speed":5,"review_widget_custom_questions_answers_display":"always","review_widget_card_section_size":"small","review_widget_button_text_color":"#FFFFFF","review_widget_text_color":"#000000","review_widget_lighter_text_color":"#7B7B7B","review_widget_corner_styling":"soft","review_widget_review_word_singular":"review","review_widget_review_word_plural":"reviews","review_widget_voting_label":"Helpful?","review_widget_shop_reply_label":"Reply from {{ shop_name }}:","review_widget_filters_title":"Filters","review_widget_filter_rating_title":"Rating","review_widget_filter_keyword_title":"Keyword","review_widget_clear_filters_text":"Clear filters","review_widget_expand_more_text":"More","review_widget_review_highlights_title":"Review highlights","qna_widget_question_word_singular":"Question","qna_widget_question_word_plural":"Questions","qna_widget_answer_reply_label":"Answer from {{ answerer_name }}:","qna_content_screen_title_text":"Ask a question about this product","qna_widget_question_required_field_error_text":"Please enter your question.","qna_widget_flow_gdpr_statement":"We'll only contact you about your question if necessary. By submitting your question, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","qna_widget_question_submitted_text":"Thanks for your question!","qna_widget_close_form_text_question":"Close","qna_widget_question_submit_success_text":"We’ll notify you by email when your question is answered.","all_reviews_widget_v2025_enabled":false,"all_reviews_widget_v2025_header_theme":"default","all_reviews_widget_v2025_widget_title_enabled":true,"all_reviews_widget_v2025_header_text_size":"medium","all_reviews_widget_v2025_header_text_weight":"regular","all_reviews_widget_v2025_average_rating_style":"compact","all_reviews_widget_v2025_bar_chart_enabled":true,"all_reviews_widget_v2025_bar_chart_type":"numbers","all_reviews_widget_v2025_bar_chart_style":"standard","all_reviews_widget_v2025_expanded_media_gallery_enabled":false,"all_reviews_widget_v2025_show_store_medals":true,"all_reviews_widget_v2025_show_photo_gallery":true,"all_reviews_widget_v2025_show_review_keywords":false,"all_reviews_widget_v2025_show_ai_summary":false,"all_reviews_widget_v2025_show_ai_summary_bg":false,"all_reviews_widget_v2025_show_review_highlights":false,"all_reviews_widget_v2025_show_review_keywords_in_gray":false,"all_reviews_widget_v2025_add_search_bar":false,"all_reviews_widget_v2025_default_sort_method":"most-recent","all_reviews_widget_v2025_reviews_per_page":10,"all_reviews_widget_v2025_reviews_section_theme":"default","all_reviews_widget_v2025_image_style":"thumbnails","all_reviews_widget_v2025_review_image_ratio":"square","all_reviews_widget_v2025_stars_size":"medium","all_reviews_widget_v2025_verified_badge":"standard_text","all_reviews_widget_v2025_review_title_text_size":"medium","all_reviews_widget_v2025_review_text_size":"medium","all_reviews_widget_v2025_review_text_length":"medium","all_reviews_widget_v2025_number_of_columns_desktop":3,"all_reviews_widget_v2025_carousel_transition_speed":5,"all_reviews_widget_v2025_custom_questions_answers_display":"always","all_reviews_widget_v2025_review_dates":false,"all_reviews_widget_v2025_card_section_size":"small","all_reviews_widget_v2025_show_product_variant":false,"all_reviews_widget_v2025_show_reviewer_avatar":true,"all_reviews_widget_v2025_reviewer_name_as_initial":"","all_reviews_widget_v2025_review_location_show":false,"all_reviews_widget_v2025_location_format":"","all_reviews_widget_v2025_show_country_flag":false,"all_reviews_widget_v2025_widget_thumb":false,"all_reviews_widget_v2025_verified_by_shop_badge_style":"light","all_reviews_widget_v2025_social_share":false,"all_reviews_widget_v2025_social_share_options_order":"Facebook,Twitter,LinkedIn,Pinterest","all_reviews_widget_v2025_pagination_type":"standard","all_reviews_widget_v2025_button_text_color":"#FFFFFF","all_reviews_widget_v2025_text_color":"#000000","all_reviews_widget_v2025_lighter_text_color":"#7B7B7B","all_reviews_widget_v2025_corner_styling":"soft","all_reviews_widget_v2025_title":"Customer reviews","all_reviews_widget_v2025_ai_summary_title":"Customers say about this store","all_reviews_widget_v2025_no_review_text":"Be the first to write a review","all_reviews_widget_v2025_review_highlights_title":"Review highlights","reviews_grid_widget_show_sample_reviews":false,"reviews_grid_widget_review_selection":"all","reviews_grid_widget_select_products":[],"reviews_grid_widget_show_media_only":false,"reviews_grid_widget_display_order":"media_first","reviews_grid_widget_columns_desktop":3,"reviews_grid_widget_rows_desktop":3,"reviews_grid_widget_columns_mobile":2,"reviews_grid_widget_rows_mobile":6,"reviews_grid_widget_show_stars":true,"reviews_grid_widget_show_reviewer_name":true,"reviews_grid_widget_show_review_title_on_hover_desktop":true,"reviews_grid_widget_corner_styling":"soft","reviews_grid_widget_card_spacing":"medium","reviews_grid_widget_header_text_color":"#000000","reviews_grid_widget_star_and_reviewer_name_color":"#F9F9F9","reviews_grid_widget_overlay_and_background_color":"#000000","reviews_grid_widget_content_color":"#F9F9F9","reviews_grid_widget_header_text":"From our customers","reviews_grid_widget_show_average_rating":true,"platform":"shopify","branding_url":"https://app.judge.me/reviews","branding_text":"Powered by Judge.me","locale":"en","reply_name":"Crowd Compass","widget_version":"3.0","footer":true,"autopublish":false,"review_dates":true,"enable_custom_form":false,"shop_use_review_site":false,"shop_locale":"en","enable_multi_locales_translations":false,"show_review_title_input":true,"review_verification_email_status":"always","require_verification_before_submit":false,"customer_account_validation_enabled":true,"can_be_branded":true,"reply_name_text":"Crowd Compass"};</script> <style class='jdgm-settings-style'>.jdgm-xx{left:0}:root{--jdgm-primary-color: #6AE5AC;--jdgm-secondary-color: rgba(106,229,172,0.1);--jdgm-star-color: #6AE5AC;--jdgm-write-review-text-color: #FFFFFF;--jdgm-write-review-bg-color: #6AE5AC;--jdgm-paginate-color: #6AE5AC;--jdgm-border-radius: 10;--jdgm-reviewer-name-color: #0D0D0D}.jdgm-histogram__bar-content{background-color:#6AE5AC}.jdgm-rev[data-verified-buyer=true] .jdgm-rev__icon.jdgm-rev__icon:after,.jdgm-rev__buyer-badge.jdgm-rev__buyer-badge{color:white;background-color:#6AE5AC}.jdgm-review-widget--small .jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}@media only screen and (min-width: 768px){.jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}}.jdgm-widget .jdgm-write-rev-link{display:none}.jdgm-widget .jdgm-rev-widg[data-number-of-reviews='0']{display:none}.jdgm-prev-badge[data-average-rating='0.00']{display:none !important}.jdgm-prev-badge__text{display:none !important}.jdgm-author-all-initials{display:none !important}.jdgm-author-last-initial{display:none !important}.jdgm-rev-widg__title{visibility:hidden}.jdgm-rev-widg__summary-text{visibility:hidden}.jdgm-prev-badge__text{visibility:hidden}.jdgm-rev__prod-link-prefix:before{content:'about'}.jdgm-rev__variant-label:before{content:'Variant: '}.jdgm-rev__out-of-store-text:before{content:'(out of store)'}@media only screen and (min-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}@media only screen and (max-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}.jdgm-preview-badge[data-template="product"]{display:none !important}.jdgm-preview-badge[data-template="collection"]{display:none !important}.jdgm-preview-badge[data-template="index"]{display:none !important}.jdgm-review-widget[data-from-snippet="true"]{display:none !important}.jdgm-verified-count-badget[data-from-snippet="true"]{display:none !important}.jdgm-carousel-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-all-reviews-text[data-from-snippet="true"]{display:none !important}.jdgm-medals-section[data-from-snippet="true"]{display:none !important}.jdgm-ugc-media-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_via_store_invitation"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_another_provider"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_store_visitor"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_written_in_etsy"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_written_in_google_business"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_written_in_shop_app"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_earned_for_future_purchase"]{display:none !important}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card{border-radius:8px;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card__rev-rating .jdgm-star{color:#108474}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn{border-radius:50%;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn>svg,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn>svg{fill:#000}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jm-mfp-content,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__icon,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__pic-img,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__reply{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev[data-verified-buyer="true"] .jdgm-full-rev__icon::after{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-rev__buyer-badge{border-radius:calc( 8px / 2 )}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__replier::before{content:'Crowd Compass'}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__product-button{border-radius:calc( 8px * 6 )}
</style> <style class='jdgm-settings-style'>.jdgm-review-widget .jdgm-rev__author,.jdgm-review-widget .jdgm-sort-dropdown-wrapper .jdgm-sort-dropdown,.jdgm-review-widget .jdgm-sort-dropdown-wrapper .jdgm-sort-dropdown-arrow{color:#0D0D0D}
</style>

  
  
  
  <style class='jdgm-miracle-styles'>
  @-webkit-keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/IazfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal}.jdgm-star{font-family:'JudgemeStar';display:inline !important;text-decoration:none !important;padding:0 4px 0 0 !important;margin:0 !important;font-weight:bold;opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jdgm-star:hover{opacity:1}.jdgm-star:last-of-type{padding:0 !important}.jdgm-star.jdgm--on:before{content:"\e000"}.jdgm-star.jdgm--off:before{content:"\e001"}.jdgm-star.jdgm--half:before{content:"\e002"}.jdgm-widget *{margin:0;line-height:1.4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.jdgm-hidden{display:none !important;visibility:hidden !important}.jdgm-temp-hidden{display:none}.jdgm-spinner{width:40px;height:40px;margin:auto;border-radius:50%;border-top:2px solid #eee;border-right:2px solid #eee;border-bottom:2px solid #eee;border-left:2px solid #ccc;-webkit-animation:jdgm-spin 0.8s infinite linear;animation:jdgm-spin 0.8s infinite linear}.jdgm-prev-badge{display:block !important}

</style>


  
  
   



  
    
    
    
      <link id="judgeme_widget_align_css" rel="stylesheet" type="text/css" media="nope!" onload="this.media='all'" href="https://cdn.shopify.com/extensions/019ee010-adc7-76bc-a9e6-daa1d1cc25ff/judgeme-580/assets/widget_v3_theme_align.css">
    
  


<script data-cfasync='false' class='jdgm-script'>
!function(e){window.jdgm=window.jdgm||{},jdgm.CDN_HOST="https://cdnwidget.judge.me/",jdgm.CDN_HOST_ALT="https://cdn2.judge.me/cdn/widget_frontend/",jdgm.API_HOST="https://api.judge.me/",jdgm.CDN_BASE_URL="https://cdn.shopify.com/extensions/019ee010-adc7-76bc-a9e6-daa1d1cc25ff/judgeme-580/assets/",jdgm.CDN_API_HOST="https://cdn.judge.me/",
jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)?
setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){
!o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d),
(a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!",
a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))},
jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest;
t.onreadystatechange=function(){4===t.readyState&&(Function(t.response)(),d&&d(t.response))},
t.open("GET",e),t.onerror=function(){if(e.indexOf(jdgm.CDN_HOST)===0&&jdgm.CDN_HOST_ALT!==jdgm.CDN_HOST){var f=e.replace(jdgm.CDN_HOST,jdgm.CDN_HOST_ALT);jdgm.loadJS(f,d)}},t.send()},jdgm.docReady((function(){(window.jdgmLoadCSS||e.querySelectorAll(
".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting?
parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_v3_base.css"):
jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_base.css"):jdgm.loadCSS(jdgm.CDN_BASE_URL+"shopify_v2.css")
)}))}(document);
</script>
<noscript><link rel="stylesheet" type="text/css" media="all" href="https://cdn.shopify.com/extensions/019ee010-adc7-76bc-a9e6-daa1d1cc25ff/judgeme-580/assets/shopify_v2.css"></noscript>

<!-- BEGIN app snippet: theme_fix_tags --><script>
  (function() {
    var jdgmThemeFixes = null;
    if (!jdgmThemeFixes) return;
    var thisThemeFix = jdgmThemeFixes[Shopify.theme.id];
    if (!thisThemeFix) return;

    if (thisThemeFix.html) {
      document.addEventListener("DOMContentLoaded", function() {
        var htmlDiv = document.createElement('div');
        htmlDiv.classList.add('jdgm-theme-fix-html');
        htmlDiv.innerHTML = thisThemeFix.html;
        document.body.append(htmlDiv);
      });
    };

    if (thisThemeFix.css) {
      var styleTag = document.createElement('style');
      styleTag.classList.add('jdgm-theme-fix-style');
      styleTag.innerHTML = thisThemeFix.css;
      document.head.append(styleTag);
    };

    if (thisThemeFix.js) {
      var scriptTag = document.createElement('script');
      scriptTag.classList.add('jdgm-theme-fix-script');
      scriptTag.innerHTML = thisThemeFix.js;
      document.head.append(scriptTag);
    };
  })();
</script>
<!-- END app snippet -->
<!-- End of Judge.me Core -->



<!-- END app block --><!-- BEGIN app block: shopify://apps/candy-rack/blocks/head/cb9c657f-334f-4905-80c2-f69cca01460c --><script src="https://cdn.shopify.com/extensions/019eda9f-0264-7a1c-a54f-2b7ad41b46c2/candyrack-557/assets/main.js?shop=f8e228.myshopify.com" async></script>


  <!-- BEGIN app snippet: inject-slider-cart --><div id="candyrack-slider-cart"></div>
<!-- BEGIN app snippet: slider-cart-script-src --><script id="candyrack-slider-cart-config" type="application/json">{"scriptSrc": "https://cdn.shopify.com/extensions/019eda9f-0264-7a1c-a54f-2b7ad41b46c2/candyrack-557/assets/candyrack-slider-cart.js", "loadCss": true}</script>
<!-- END app snippet -->


    <script id="candyrack-slider-cart-data" type="application/json">
    {"offers":[],"settings":{"top_bar_title":"Cart ({{item_quantity}})","empty_cart_title":"","empty_cart_button_label":"Continue shopping","subtotal_title":"Subtotal","footer_text":"Taxes and shipping calculated at checkout","terms_and_conditions_text":"I agree to the terms and conditions","terms_and_conditions_error_message":"You must agree to the terms and conditions","primary_button_label":"Checkout","secondary_button_label":"Continue shopping","offer_title":"Add items often bought together","offer_subtitle":"","offer_button_label":"Add","reward_bar_message":"<p>You're <strong>{{amount}}</strong> away from <strong>free shipping</strong>.</p>","reward_bar_qualified_message":"<p>You've got <strong>free shipping</strong>!</p>","desktop_cart_width":480,"background_color":"#FFFFFF","text_color":"#282A2C","error_message_color":"#BE1414","corner_radius":0,"custom_css":"","top_bar_font_size":16,"is_top_bar_sticky":true,"image_ratio":"adapt","image_width":96,"product_name_font_size":14,"variant_price_font_size":14,"offer_show_divider":true,"offer_background_color":"#FFFFFF","offer_show_title":true,"offer_title_font_size":16,"offer_show_subtitle":false,"offer_subtitle_font_size":14,"empty_cart_font_size":20,"empty_cart_button_action":"stay_on_page","empty_cart_custom_link":"","checkout_bg_color":"#FFFFFF","show_divider":true,"show_subtotal":true,"subtotal_font_size":16,"show_footer_text":false,"footer_text_font_size":14,"show_terms_and_conditions":false,"terms_and_conditions_required_consent":true,"terms_and_conditions_font_size":14,"offer_layout":"list","offer_image_width":96,"offer_badge_font_size":14,"offer_product_name_font_size":14,"offer_price_and_description_font_size":14,"offer_button_style":"primary","offer_button_font_size":14,"offer_button_bg_color":"#282A2C","offer_button_bg_hover_color":"#4A4E52","offer_button_text_color":"#FFFFFF","offer_button_text_hover_color":"#FFFFFF","offer_button_show_border":false,"offer_button_border_width":1,"offer_button_border_color":"#282A2C","offer_button_border_hover_color":"#282A2C","primary_button_action":"checkout","primary_button_font_size":16,"primary_button_bg_color":"#282A2C","primary_button_bg_hover_color":"#4A4E52","primary_button_text_color":"#FFFFFF","primary_button_text_hover_color":"#FFFFFF","primary_button_show_border":true,"primary_button_border_width":1,"primary_button_border_color":"#282A2C","primary_button_border_hover_color":"#282A2C","show_secondary_button":true,"secondary_button_variant":"button","secondary_button_action":"stay_on_page","secondary_button_custom_link":"","secondary_button_bg_color":"#FFFFFF","secondary_button_bg_hover_color":"#FFFFFF","secondary_button_text_color":"#282A2C","secondary_button_text_hover_color":"#282A2C","secondary_button_show_border":true,"secondary_button_border_width":1,"secondary_button_border_color":"#A9AAAB","secondary_button_border_hover_color":"#282A2C","secondary_button_text_link_color":"#282A2C","reward_bar_enabled":false,"reward_bar_goal":"0.00","reward_bar_font_size":14,"reward_bar_bg_color":"#F8F8F8","reward_bar_text_color":"#282A2C","reward_bar_progress_color":"#282A2C","reward_bar_bar_color":"#DCDCDC","is_reward_bar_sticky":false,"custom_block_body_enabled":false,"custom_block_body_content":"","custom_block_body_sticky":false,"custom_block_footer_enabled":false,"custom_block_footer_content":"","announcement_bar_enabled":false,"announcement_bar_text":"","announcement_bar_font_size":14,"announcement_bar_bg_color":"#BDFCC2","announcement_bar_text_color":"#0C5132","is_announcement_bar_sticky":true,"positions":{"body":["rewards_bar","cart_and_offer_items"],"footer":["subtotal","custom_text","terms_and_conditions","checkout_buttons"]}},"storefront_access_token":"ec229f0bc67f6201aece9dbede8f809c","custom_wording_metaobject_id":192703758621,"enabled":false}
  </script>







<script>

  const STOREFRONT_API_VERSION = '2026-04';

  const fetchSlideCartOffers = async (storefrontToken) => {
    try {
      const query = `
      query GetSlideCartOffers {
        shop {
          metafield(namespace: "$app:candyrack", key: "slide_cart_offers") {
            value
          }
        }
      }
    `;

      const response = await fetch(`/api/${STOREFRONT_API_VERSION}/graphql.json`, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          'X-Shopify-Storefront-Access-Token': storefrontToken
        },
        body: JSON.stringify({
          query: query
        })
      });

      const result = await response.json();

      if (result.data?.shop?.metafield?.value) {
        return JSON.parse(result.data.shop.metafield.value);
      }

      return null;
    } catch (error) {
      console.warn('Failed to fetch slide cart offers:', error);
      return null;
    }
  }

  const initializeCandyrackSliderCart = async () => {
    // Preview
    const urlParams = new URLSearchParams(window.location.search);
    const storageKey = 'candyrack-slider-cart-preview';
    const customBlockPreviewKey = 'candyrack-slider-cart-custom-block-preview';

    if (urlParams.has('candyrack-slider-cart-preview') && urlParams.get('candyrack-slider-cart-preview') === 'true') {
      window.sessionStorage.setItem(storageKey, 'true');
      window.sessionStorage.removeItem(customBlockPreviewKey);
    }

    if (urlParams.has('candyrack-slider-cart-custom-block-preview') && urlParams.get('candyrack-slider-cart-custom-block-preview') === 'true') {
      window.sessionStorage.setItem(storageKey, 'true');
      window.sessionStorage.setItem(customBlockPreviewKey, 'true');
    }



    window.SliderCartData = {
      currency_format: '${{amount_no_decimals}}',
      offers: [],
      settings: {},
      storefront_access_token: '',
      enabled: false,
      custom_wording_metaobject_id: null,
      failed: false,
      isCartPage: false,
      use_drs_ab_test: false
    }

    const dataScriptTag = document.querySelector('#candyrack-slider-cart-data');
    let data = {};
    if(dataScriptTag) {
      try {
        data = dataScriptTag.textContent ? JSON.parse(dataScriptTag.textContent) : {};
        
        
        
        
        

        const isCartPage = "page" === "page";

        let sliderCartSettingsMetaobject = {}
        
        sliderCartSettingsMetaobject = {"empty_cart_button_label":"Continue shopping","empty_cart_title":"Your cart is empty","footer_text":"Taxes and shipping calculated at checkout","offer_button_label":"Add","offer_subtitle":"Shop now, before they are gone.","offer_title":"Add items often bought together","primary_button_label":"Checkout","secondary_button_label":"Continue shopping","subtotal_title":"Subtotal","terms_and_conditions_error_message":"You must agree to the terms and conditions","terms_and_conditions_text":"I agree to the terms and conditions","top_bar_title":"Cart ({{item_quantity}})","version":5};
        



        const storefrontApiToken = data?.storefront_access_token

        if(!storefrontApiToken) {
          throw new Error("Storefront API token is not set.");
        }

        const metafieldData = await fetchSlideCartOffers(storefrontApiToken) || data

        // Retrieve metafield for the DRS A/B-test shop override -> 1 or 0 (metafield limitation)
        const useDrsAbTest = 0;

        // Default layout in case some store does not have the updated values
        const DEFAULT_POSITIONS = {
          body: ['announcement_bar', 'rewards_bar', 'cart_and_offer_items', 'custom_block'],
          footer: ['subtotal', 'custom_text', 'terms_and_conditions', 'checkout_buttons'],
        };

        const positions = metafieldData?.settings?.positions ?? DEFAULT_POSITIONS;

        window.SliderCartData = {
          ...window.SliderCartData,
          offers: metafieldData?.offers,
          settings: {...metafieldData?.settings, positions, ...sliderCartSettingsMetaobject},
          storefront_access_token: storefrontApiToken,
          enabled: metafieldData?.enabled,
          use_drs_ab_test: Boolean(useDrsAbTest),
          custom_wording_metaobject_id: metafieldData?.custom_wording_metaobject_id,
          failed: false,
          isCartPage,
        }
      } catch (error) {
        window.SliderCartData = {...window.SliderCartData, failed: true, error: error};
        console.error("Candy Rack Slider Cart failed parsing data",error);
      }
    }


    if(Object.keys(data).length === 0){
      window.SliderCartData = {...window.SliderCartData, failed: false, enabled: false};
    }

    const calculateCornerRadius = (element, value) => {
      if (value === 0) return 0;
      const radiusMap = {
        button: { 20: 4, 40: 8, 60: 12, 80: 16, 100: 99999 },
        image: { 20: 4, 40: 8, 60: 8, 80: 8, 100: 8 },
        input: { 20: 4, 40: 8, 60: 12, 80: 16, 100: 99999 },
        badge: { 20: 4, 40: 6, 60: 8, 80: 10, 100: 99999 },
        checkbox: { 20: 2, 40: 4, 60: 4, 80: 4, 100: 4 }
      };
      return radiusMap[element]?.[value] || 0;
    }


    const getLineHeightOffset = (fontSize) => {
      if (fontSize === 16) return 4;
      if (fontSize === 18) return 5;
      return 6; // for 20px, 14px, 12px, 10px
    };

    const generalStyles = `
:root {
   --cr-slider-cart-desktop-cart-width: ${window.SliderCartData.settings.desktop_cart_width}px;
   --cr-slider-cart-background-color: ${window.SliderCartData.settings.background_color};
   --cr-slider-cart-text-color: ${window.SliderCartData.settings.text_color};
   --cr-slider-cart-error-message-color: ${window.SliderCartData.settings.error_message_color};
   --cr-slider-cart-corner-radius-button: ${calculateCornerRadius("button",window.SliderCartData.settings.corner_radius)}px;
   --cr-slider-cart-corner-radius-image: ${calculateCornerRadius("image",window.SliderCartData.settings.corner_radius)}px;
   --cr-slider-cart-corner-radius-input: ${calculateCornerRadius("input",window.SliderCartData.settings.corner_radius)}px;
   --cr-slider-cart-corner-radius-badge: ${calculateCornerRadius("badge",window.SliderCartData.settings.corner_radius)}px;
   --cr-slider-cart-corner-radius-checkbox: ${calculateCornerRadius("checkbox",window.SliderCartData.settings.corner_radius)}px;
   --cr-slider-cart-top-bar-font-size: ${window.SliderCartData.settings.top_bar_font_size}px;
   --cr-slider-cart-top-bar-line-height: ${window.SliderCartData.settings.top_bar_font_size + getLineHeightOffset(window.SliderCartData.settings.top_bar_font_size)}px;
   --cr-slider-cart-image-width: ${window.SliderCartData.settings.image_width}px;
   --cr-slider-cart-empty-cart-font-size: ${window.SliderCartData.settings.empty_cart_font_size}px;
   --cr-slider-cart-empty-cart-line-height: ${window.SliderCartData.settings.empty_cart_font_size + getLineHeightOffset(window.SliderCartData.settings.empty_cart_font_size)}px;
   --cr-slider-cart-product-name-font-size: ${window.SliderCartData.settings.product_name_font_size}px;
   --cr-slider-cart-product-name-line-height: ${window.SliderCartData.settings.product_name_font_size + getLineHeightOffset(window.SliderCartData.settings.product_name_font_size)}px;
   --cr-slider-cart-variant-price-font-size: ${window.SliderCartData.settings.variant_price_font_size}px;
   --cr-slider-cart-variant-price-line-height: ${window.SliderCartData.settings.variant_price_font_size + getLineHeightOffset(window.SliderCartData.settings.variant_price_font_size)}px;
   --cr-slider-cart-checkout-bg-color: ${window.SliderCartData.settings.checkout_bg_color};
   --cr-slider-cart-subtotal-font-size: ${window.SliderCartData.settings.subtotal_font_size}px;
   --cr-slider-cart-subtotal-line-height: ${window.SliderCartData.settings.subtotal_font_size + getLineHeightOffset(window.SliderCartData.settings.subtotal_font_size)}px;
   --cr-slider-cart-primary-button-font-size: ${window.SliderCartData.settings.primary_button_font_size}px;
   --cr-slider-cart-primary-button-line-height: ${window.SliderCartData.settings.primary_button_font_size + getLineHeightOffset(window.SliderCartData.settings.primary_button_font_size)}px;
   --cr-slider-cart-primary-button-bg-color: ${window.SliderCartData.settings.primary_button_bg_color};
   --cr-slider-cart-primary-button-bg-hover-color: ${window.SliderCartData.settings.primary_button_bg_hover_color};
   --cr-slider-cart-primary-button-text-color: ${window.SliderCartData.settings.primary_button_text_color};
   --cr-slider-cart-primary-button-text-hover-color: ${window.SliderCartData.settings.primary_button_text_hover_color};
   --cr-slider-cart-primary-button-border-width: ${window.SliderCartData.settings.primary_button_border_width}px;
   --cr-slider-cart-primary-button-border-color: ${window.SliderCartData.settings.primary_button_border_color};
   --cr-slider-cart-primary-button-border-hover-color: ${window.SliderCartData.settings.primary_button_border_hover_color};
   --cr-slider-cart-secondary-button-bg-color: ${window.SliderCartData.settings.secondary_button_bg_color};
   --cr-slider-cart-secondary-button-bg-hover-color: ${window.SliderCartData.settings.secondary_button_bg_hover_color};
   --cr-slider-cart-secondary-button-text-color: ${window.SliderCartData.settings.secondary_button_text_color};
   --cr-slider-cart-secondary-button-text-hover-color: ${window.SliderCartData.settings.secondary_button_text_hover_color};
   --cr-slider-cart-secondary-button-border-width: ${window.SliderCartData.settings.secondary_button_border_width}px;
   --cr-slider-cart-secondary-button-border-color: ${window.SliderCartData.settings.secondary_button_border_color};
   --cr-slider-cart-secondary-button-border-hover-color: ${window.SliderCartData.settings.secondary_button_border_hover_color};
   --cr-slider-cart-secondary-button-text-link-color: ${window.SliderCartData.settings.secondary_button_text_link_color};
   --cr-slider-cart-offer-bg-color: ${window.SliderCartData.settings.offer_background_color};
   --cr-slider-cart-offers-title-font-size: ${window.SliderCartData.settings.offer_title_font_size}px;
   --cr-slider-cart-offers-title-line-height: ${window.SliderCartData.settings.offer_title_font_size + getLineHeightOffset(window.SliderCartData.settings.offer_title_font_size)}px;
   --cr-slider-cart-offer-subtitle-font-size: ${window.SliderCartData.settings.offer_subtitle_font_size}px;
   --cr-slider-cart-offer-subtitle-line-height: ${window.SliderCartData.settings.offer_subtitle_font_size + getLineHeightOffset(window.SliderCartData.settings.offer_subtitle_font_size)}px;
   --cr-slider-cart-offer-badge-font-size: ${window.SliderCartData.settings.offer_badge_font_size}px;
   --cr-slider-cart-offer-badge-line-height: ${window.SliderCartData.settings.offer_badge_font_size + getLineHeightOffset(window.SliderCartData.settings.offer_badge_font_size)}px;
   --cr-slider-cart-offer-image-width: ${window.SliderCartData.settings.offer_image_width}px;
   --cr-slider-cart-offer-product-name-font-size: ${window.SliderCartData.settings.offer_product_name_font_size}px;
   --cr-slider-cart-offer-product-name-line-height: ${window.SliderCartData.settings.offer_product_name_font_size + getLineHeightOffset(window.SliderCartData.settings.offer_product_name_font_size)}px;
   --cr-slider-cart-offer-price-font-size: ${window.SliderCartData.settings.offer_price_and_description_font_size}px;
   --cr-slider-cart-offer-price-line-height: ${window.SliderCartData.settings.offer_price_and_description_font_size + getLineHeightOffset(window.SliderCartData.settings.offer_price_and_description_font_size)}px;
   --cr-slider-cart-offer-button-font-size: ${window.SliderCartData.settings.offer_button_font_size}px;
   --cr-slider-cart-offer-button-line-height: ${window.SliderCartData.settings.offer_button_font_size + getLineHeightOffset(window.SliderCartData.settings.offer_button_font_size)}px;
   --cr-slider-cart-offer-button-bg-color: ${window.SliderCartData.settings.offer_button_bg_color};
   --cr-slider-cart-offer-button-bg-hover-color: ${window.SliderCartData.settings.offer_button_bg_hover_color};
   --cr-slider-cart-offer-button-text-color: ${window.SliderCartData.settings.offer_button_text_color};
   --cr-slider-cart-offer-button-text-hover-color: ${window.SliderCartData.settings.offer_button_text_hover_color};
   --cr-slider-cart-offer-button-border-width: ${window.SliderCartData.settings.offer_button_border_width}px;
   --cr-slider-cart-offer-button-border-color: ${window.SliderCartData.settings.offer_button_border_color};
   --cr-slider-cart-offer-button-border-hover-color: ${window.SliderCartData.settings.offer_button_border_hover_color};
   --cr-slider-cart-custom-text-font-size: ${window.SliderCartData.settings.footer_text_font_size}px;
   --cr-slider-cart-custom-text-line-height: ${window.SliderCartData.settings.footer_text_font_size + getLineHeightOffset(window.SliderCartData.settings.footer_text_font_size)}px;
   --cr-slider-cart-terms-font-size: ${window.SliderCartData.settings.terms_and_conditions_font_size}px;
   --cr-slider-cart-terms-line-height: ${window.SliderCartData.settings.terms_and_conditions_font_size + getLineHeightOffset(window.SliderCartData.settings.terms_and_conditions_font_size)}px;
   --cr-slider-cart-announcement-bar-font-size: ${(window.SliderCartData.settings.announcement_bar_font_size ?? 14)}px;
   --cr-slider-cart-announcement-bar-line-height: ${(window.SliderCartData.settings.announcement_bar_font_size ?? 14) + getLineHeightOffset(window.SliderCartData.settings.announcement_bar_font_size ?? 14)}px;
   --cr-slider-cart-announcement-bar-bg-color: ${window.SliderCartData.settings.announcement_bar_bg_color ?? '#BDFCC2'};
   --cr-slider-cart-announcement-bar-text-color: ${window.SliderCartData.settings.announcement_bar_text_color ?? '#0C5132'};
}`;
    if (window.SliderCartData.enabled || window.sessionStorage.getItem(storageKey) === 'true') {
      const configEl = document.getElementById('candyrack-slider-cart-config');
      const config = configEl ? JSON.parse(configEl.textContent) : { scriptSrc: "https://cdn.shopify.com/extensions/019eda9f-0264-7a1c-a54f-2b7ad41b46c2/candyrack-557/assets/candyrack-slider-cart.js", loadCss: true };

      const script = document.createElement('script');
      script.type = 'module';
      script.async = true;
      script.src = config.scriptSrc;
      document.head.appendChild(script);

      if (config.loadCss) {
        const link = document.createElement('link');
        link.rel = 'stylesheet';
        link.href = "https://cdn.shopify.com/extensions/019eda9f-0264-7a1c-a54f-2b7ad41b46c2/candyrack-557/assets/index.css";
        document.head.appendChild(link);
      }

const style = document.createElement('style');
style.type = 'text/css';
style.textContent = generalStyles;
document.head.appendChild(style);

const customStyle = document.createElement('style');
customStyle.type = 'text/css';
customStyle.textContent = window.SliderCartData.settings.custom_css
document.head.appendChild(customStyle);
}
}


initializeCandyrackSliderCart()


</script>
<!-- END app snippet -->



<!-- END app block --><!-- BEGIN app block: shopify://apps/triplewhale/blocks/triple_pixel_snippet/483d496b-3f1a-4609-aea7-8eee3b6b7a2a --><link rel='preconnect dns-prefetch' href='https://api.config-security.com/' crossorigin />
<link rel='preconnect dns-prefetch' href='https://conf.config-security.com/' crossorigin />
<script>
/* >> TriplePixel :: start*/
window.TriplePixelData={TripleName:"f8e228.myshopify.com",ver:"2.16",plat:"SHOPIFY",isHeadless:false,src:'SHOPIFY_EXT',product:{id:"",name:``,price:"",variant:"",av:{  }},search:"",collection:"",cart:"page",template:"index",curr:"USD" || "USD"},function(W,H,A,L,E,_,B,N){function O(U,T,P,H,R){void 0===R&&(R=!1),H=new XMLHttpRequest,P?(H.open("POST",U,!0),H.setRequestHeader("Content-Type","text/plain")):H.open("GET",U,!0),H.send(JSON.stringify(P||{})),H.onreadystatechange=function(){4===H.readyState&&200===H.status?(R=H.responseText,U.includes("/first")?eval(R):P||(N[B]=R)):(299<H.status||H.status<200)&&T&&!R&&(R=!0,O(U,T-1,P))}}if(N=window,!N[H+"sn"]){N[H+"sn"]=1,L=function(){return Date.now().toString(36)+"_"+Math.random().toString(36)};try{A.setItem(H,1+(0|A.getItem(H)||0)),(E=JSON.parse(A.getItem(H+"U")||"[]")).push({u:location.href,r:document.referrer,t:Date.now(),id:L()}),A.setItem(H+"U",JSON.stringify(E))}catch(e){}var i,m,p;A.getItem('"!nC`')||(_=A,A=N,A[H]||(E=A[H]=function(t,e,i){return void 0===i&&(i=[]),"State"==t?E.s:(W=L(),(E._q=E._q||[]).push([W,t,e].concat(i)),W)},E.s="Installed",E._q=[],E.ch=W,B="configSecurityConfModel",N[B]=1,O("https://conf.config-security.com/model",5),i=L(),m=A[atob("c2NyZWVu")],_.setItem("di_pmt_wt",i),p={id:i,action:"profile",avatar:_.getItem("auth-security_rand_salt_"),time:m[atob("d2lkdGg=")]+":"+m[atob("aGVpZ2h0")],host:A.TriplePixelData.TripleName,plat:A.TriplePixelData.plat,url:window.location.href.slice(0,500),ref:document.referrer,ver:A.TriplePixelData.ver},O("https://api.config-security.com/event",5,p),O("https://api.config-security.com/first?host=".concat(p.host,"&plat=").concat(p.plat),5)))}}("","TriplePixel",localStorage);
/* << TriplePixel :: end*/
</script>



<!-- END app block --><!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/brandAgents_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea -->





<!-- END app block --><!-- BEGIN app block: shopify://apps/ecomposer-builder/blocks/app-embed/a0fc26e1-7741-4773-8b27-39389b4fb4a0 --><!-- DNS Prefetch & Preconnect -->
<link rel="preconnect" href="https://cdn.ecomposer.app" crossorigin>
<link rel="dns-prefetch" href="https://cdn.ecomposer.app">

<link rel="prefetch" href="https://cdn.ecomposer.app/vendors/css/ecom-swiper@11.css" as="style">
<link rel="prefetch" href="https://cdn.ecomposer.app/vendors/js/ecom-swiper@11.0.5.js" as="script">
<link rel="prefetch" href="https://cdn.ecomposer.app/vendors/js/ecom_modal.js" as="script">

<!-- Global CSS --><!--ECOM-EMBED-->
  <style id="ecom-global-css" class="ecom-global-css">/**ECOM-INSERT-CSS**/.ecom-section > div.core__row--columns{max-width: 1200px;}.ecom-column>div.core__column--wrapper{padding: 20px;}div.core__blocks--body>div.ecom-block.elmspace:not(:first-child){margin-top: 20px;}:root{--ecom-global-colors-primary:#ffffff;--ecom-global-colors-secondary:#ffffff;--ecom-global-colors-text:#ffffff;--ecom-global-colors-accent:#ffffff;--ecom-global-colors-GKkE0F:#6AE5AC;--ecom-global-colors-3BnI0v:#fe90e6;--ecom-global-colors-9hpK4x:#0d0d0d;--ecom-global-colors-yJcIaH:#ffffff;--ecom-global-typography-h1-font-weight:600;--ecom-global-typography-h1-font-size:72px;--ecom-global-typography-h1-font-family:Raleway;--ecom-global-typography-h2-font-weight:600;--ecom-global-typography-h2-font-size:72px;--ecom-global-typography-h2-font-family:Raleway;--ecom-global-typography-h3-font-weight:600;--ecom-global-typography-h3-font-size:48px;--ecom-global-typography-h3-line-height:60px;--ecom-global-typography-h3-letter-spacing:-0.02em;--ecom-global-typography-h4-font-weight:600;--ecom-global-typography-h4-font-size:36px;--ecom-global-typography-h4-line-height:44px;--ecom-global-typography-h4-letter-spacing:-0.02em;--ecom-global-typography-h4-font-family:Raleway;--ecom-global-typography-h5-font-weight:600;--ecom-global-typography-h5-font-size:26px;--ecom-global-typography-h5-line-height:38px;--ecom-global-typography-h6-font-weight:600;--ecom-global-typography-h6-font-size:28px;--ecom-global-typography-h6-line-height:32px;--ecom-global-typography-h6-font-family:Raleway;--ecom-global-typography-h6-font-style:oblique;--ecom-global-typography-h7-font-weight:700;--ecom-global-typography-h7-font-size:18px;--ecom-global-typography-h7-line-height:23px;--ecom-global-typography-h7-font-family:Raleway;--ecom-global-typography-h7-font-style:oblique;--ecom-global-typography-tEvFVg-font-size:15px;--ecom-global-typography-tEvFVg-font-family:Roboto;--ecom-global-typography-tEvFVg-font-style:italic;}</style>
  <!--/ECOM-EMBED--><!-- Custom CSS & JS --><style id="ecom-custom-css"></style><script id="ecom-custom-js" async></script><!-- Open Graph Meta Tags for Pages --><!-- AI Search Optimization (LLM Outreach) --><!-- Critical Inline Styles -->
<style class="ecom-theme-helper">.ecom-animation{opacity:0}.ecom-animation.animate,.ecom-animation.ecom-animated{opacity:1}.ecom-cart-popup{display:grid;position:fixed;inset:0;z-index:9999999;align-content:center;padding:5px;justify-content:center;align-items:center;justify-items:center}.ecom-cart-popup::before{content:' ';position:absolute;background:#e5e5e5b3;inset:0}.ecom-ajax-loading{cursor:not-allowed;pointer-events:none;opacity:.6}#ecom-toast{visibility:hidden;max-width:50px;height:60px;margin:auto;background-color:#333;color:#fff;text-align:center;border-radius:2px;position:fixed;z-index:1;left:0;right:0;bottom:30px;font-size:17px;display:grid;grid-template-columns:50px auto;align-items:center;justify-content:start;align-content:center;justify-items:start}#ecom-toast.ecom-toast-show{visibility:visible;animation:ecomFadein .5s,ecomExpand .5s .5s,ecomStay 3s 1s,ecomShrink .5s 4s,ecomFadeout .5s 4.5s}#ecom-toast #ecom-toast-icon{width:50px;height:100%;box-sizing:border-box;background-color:#111;color:#fff;padding:5px}#ecom-toast .ecom-toast-icon-svg{width:100%;height:100%;position:relative;vertical-align:middle;margin:auto;text-align:center}#ecom-toast #ecom-toast-desc{color:#fff;padding:16px;overflow:hidden;white-space:nowrap}@media(max-width:768px){#ecom-toast #ecom-toast-desc{white-space:normal;min-width:250px}#ecom-toast{height:auto;min-height:60px}}.ecom__column-full-height{height:100%}@keyframes ecomFadein{from{bottom:0;opacity:0}to{bottom:30px;opacity:1}}@keyframes ecomExpand{from{min-width:50px}to{min-width:var(--ecom-max-width)}}@keyframes ecomStay{from{min-width:var(--ecom-max-width)}to{min-width:var(--ecom-max-width)}}@keyframes ecomShrink{from{min-width:var(--ecom-max-width)}to{min-width:50px}}@keyframes ecomFadeout{from{bottom:30px;opacity:1}to{bottom:60px;opacity:0}}</style>


<!-- EComposer Config Script -->
<script id="ecom-theme-helpers" async>
window.EComposer=window.EComposer||{};(function(){if(!this.configs)this.configs={};this.configs={"custom_code":{"custom_css":"","custom_js":""},"instagram":"IGQWRNQTg5dWNCWUxBSTREU0hQN0Y1QlkwMWdfeGtoNVJrY2Y1bTU1alFLRGt6amJyUDA5Mnk2ZA3N3ZADExdVdKWGIwc1hYYXVJVFhiTlNqQm50TFFqeEhQdVVPZAC1pNHlPSTEyM0h6NXdEUQZDZD"};this.configs.ajax_cart={enable:false};this.customer=false;this.initQuickview=function(){};
this.proxy_path='/apps/ecomposer-visual-page-builder';
this.popupScriptUrl='https://cdn.shopify.com/extensions/019ed333-004a-7189-85e3-0e674dbb075e/ecomposer-130/assets/ecom_popup.js';
this.routes={domain:'https://www.crowdcompass.io',root_url:'/',collections_url:'/collections',all_products_collection_url:'/collections/all',cart_url:'/cart',cart_add_url:'/cart/add',cart_change_url:'/cart/change',cart_clear_url:'/cart/clear',cart_update_url:'/cart/update',product_recommendations_url:'/recommendations/products'};
this.queryParams={};
if(window.location.search.length){new URLSearchParams(window.location.search).forEach((value,key)=>{this.queryParams[key]=value})}
this.money_format="${{amount_no_decimals}}";
this.money_with_currency_format="${{amount_no_decimals}} USD";
this.currencyCodeEnabled=false;this.abTestingData = [];this.formatMoney=function(t,e){const r=this.currencyCodeEnabled?this.money_with_currency_format:this.money_format;function a(t,e){return void 0===t?e:t}function o(t,e,r,o){if(e=a(e,2),r=a(r,","),o=a(o,"."),isNaN(t)||null==t)return 0;var n=(t=(t/100).toFixed(e)).split(".");return n[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1"+r)+(n[1]?o+n[1]:"")}"string"==typeof t&&(t=t.replace(".",""));var n="",i=/\{\{\s*(\w+)\s*\}\}/,s=e||r;switch(s.match(i)[1]){case"amount":n=o(t,2);break;case"amount_no_decimals":n=o(t,0);break;case"amount_with_comma_separator":n=o(t,2,".",",");break;case"amount_with_space_separator":n=o(t,2," ",",");break;case"amount_with_period_and_space_separator":n=o(t,2," ",".");break;case"amount_no_decimals_with_comma_separator":n=o(t,0,".",",");break;case"amount_no_decimals_with_space_separator":n=o(t,0," ");break;case"amount_with_apostrophe_separator":n=o(t,2,"'",".")}return s.replace(i,n)};
this.resizeImage=function(t,e){try{if(!e||"original"==e||"full"==e||"master"==e)return t;if(-1!==t.indexOf("cdn.shopify.com")||-1!==t.indexOf("/cdn/shop/")){var r=t.match(/\.(jpg|jpeg|gif|png|bmp|bitmap|tiff|tif|webp)((\#[0-9a-z\-]+)?(\?v=.*)?)?$/gim);if(null==r)return null;var a=t.split(r[0]),o=r[0];return a[0]+"_"+e+o}}catch(r){return t}return t};
this.getProduct=function(t){if(!t)return!1;let e=("/"===this.routes.root_url?"":this.routes.root_url)+"/products/"+t+".js?shop="+Shopify.shop;return window.ECOM_LIVE&&(e="/shop/builder/ajax/ecom-proxy/products/"+t+"?shop="+Shopify.shop),window.fetch(e,{headers:{"Content-Type":"application/json"}}).then(t=>t.ok?t.json():false)};
const u=new URLSearchParams(window.location.search);if(u.has("ecom-redirect")){const r=u.get("ecom-redirect");if(r){let d;try{d=decodeURIComponent(r)}catch{return}d=d.trim().replace(/[\r\n\t]/g,"");if(d.length>2e3)return;const p=["javascript:","data:","vbscript:","file:","ftp:","mailto:","tel:","sms:","chrome:","chrome-extension:","moz-extension:","ms-browser-extension:"],l=d.toLowerCase();for(const o of p)if(l.includes(o))return;const x=[/<script/i,/<\/script/i,/javascript:/i,/vbscript:/i,/onload=/i,/onerror=/i,/onclick=/i,/onmouseover=/i,/onfocus=/i,/onblur=/i,/onsubmit=/i,/onchange=/i,/alert\s*\(/i,/confirm\s*\(/i,/prompt\s*\(/i,/document\./i,/window\./i,/eval\s*\(/i];for(const t of x)if(t.test(d))return;if(d.startsWith("/")&&!d.startsWith("//")){if(!/^[a-zA-Z0-9\-._~:/?#[\]@!$&'()*+,;=%]+$/.test(d))return;if(d.includes("../")||d.includes("./"))return;window.location.href=d;return}if(!d.includes("://")&&!d.startsWith("//")){if(!/^[a-zA-Z0-9\-._~:/?#[\]@!$&'()*+,;=%]+$/.test(d))return;if(d.includes("../")||d.includes("./"))return;window.location.href="/"+d;return}let n;try{n=new URL(d)}catch{return}if(!["http:","https:"].includes(n.protocol))return;if(n.port&&(parseInt(n.port)<1||parseInt(n.port)>65535))return;const a=[window.location.hostname];if(a.includes(n.hostname)&&(n.href===d||n.toString()===d))window.location.href=d}}
}).bind(window.EComposer)();
if(window.Shopify&&window.Shopify.designMode&&window.top&&window.top.opener){window.addEventListener("load",function(){window.top.opener.postMessage({action:"ecomposer:loaded"},"*")})}
</script><!-- Toast Template -->
<script type="text/template" id="ecom-template-html"><!-- BEGIN app snippet: ecom-toast --><div id="ecom-toast"><div id="ecom-toast-icon"><svg xmlns="http://www.w3.org/2000/svg" class="ecom-toast-icon-svg ecom-toast-icon-info" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
<svg class="ecom-toast-icon-svg ecom-toast-icon-success" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 48c110.5 0 200 89.5 200 200 0 110.5-89.5 200-200 200-110.5 0-200-89.5-200-200 0-110.5 89.5-200 200-200m140.2 130.3l-22.5-22.7c-4.7-4.7-12.3-4.7-17-.1L215.3 303.7l-59.8-60.3c-4.7-4.7-12.3-4.7-17-.1l-22.7 22.5c-4.7 4.7-4.7 12.3-.1 17l90.8 91.5c4.7 4.7 12.3 4.7 17 .1l172.6-171.2c4.7-4.7 4.7-12.3 .1-17z"/></svg>
</div><div id="ecom-toast-desc"></div></div><!-- END app snippet --></script><!-- END app block --><script src="https://cdn.shopify.com/extensions/019ee010-adc7-76bc-a9e6-daa1d1cc25ff/judgeme-580/assets/loader.js" type="text/javascript" defer="defer"></script>
<script src="https://cdn.shopify.com/extensions/019ed333-004a-7189-85e3-0e674dbb075e/ecomposer-130/assets/ecom.js" type="text/javascript" defer="defer"></script>
<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
<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: 81020387613,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "index"};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>
<script>
  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
</script>
<script id="web-pixels-manager-setup">(function(){var wpmLoader=function(){"use strict";return function(e,d,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};if(!Boolean(null==(i=null==(a=window.Shopify)?void 0:a.analytics)?void 0:i.replayQueue)){var a,i;window.Shopify=window.Shopify||{};var t=window.Shopify;t.analytics=t.analytics||{};var s=t.analytics;s.replayQueue=[],s.publish=function(e,d,r){return s.replayQueue.push([e,d,r]),!0};try{self.performance.mark("wpm:start")}catch(e){}var l,u,c,m,p,f,h,g,y,w,v,b,S,P=(u=(l={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:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-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:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-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,c=l.legacy,(m=navigator.userAgent).match(u)?"modern":m.match(c)?"legacy":"unknown"),C="modern"===P?"modern":"legacy",_=(null!=n?n:{modern:"",legacy:""})[C],O=[(p={baseUrl:d,hashVersion:r,buildTarget:C}).baseUrl,"/wpm","/b",p.hashVersion,"modern"===p.buildTarget?"m":"l",".js"].join(""),U=(f={version:r,bundleTarget:P,surface:e.surface,pageUrl:self.location.href,monorailEndpoint:e.monorailEndpoint},h=f.version,g=f.bundleTarget,y=f.surface,w=f.pageUrl,v=f.monorailEndpoint,{emit:function(e){var d=e.status,r=e.errorMsg,n=(new Date).getTime(),o=JSON.stringify({metadata:{event_sent_at_ms:n},events:[{schema_id:"web_pixels_manager_load/3.1",payload:{version:h,bundle_target:g,page_url:w,status:d,surface:y,error_msg:r},metadata:{event_created_at_ms:n}}]});if(!v)return console&&console.warn&&console.warn("[Web Pixels Manager] No Monorail endpoint provided, skipping logging."),!1;try{return self.navigator.sendBeacon.bind(self.navigator)(v,o)}catch(e){}var a=new XMLHttpRequest;try{return a.open("POST",v,!0),a.setRequestHeader("Content-Type","text/plain"),a.send(o),!0}catch(e){return console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging to Monorail."),!1}}});try{o.browserTarget=P,function(e){var d=e.src,r=e.async,n=void 0===r||r,o=e.onload,a=e.onerror,i=e.sri,t=e.scriptDataAttributes,s=void 0===t?{}:t,l=document.createElement("script"),u=document.querySelector("head"),c=document.querySelector("body");if(l.async=n,l.src=d,i&&(l.integrity=i,l.crossOrigin="anonymous"),s)for(var m in s)if(Object.prototype.hasOwnProperty.call(s,m))try{l.dataset[m]=s[m]}catch(e){}if(o&&l.addEventListener("load",o),a&&l.addEventListener("error",a),u)u.appendChild(l);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(l)}}({src:O,async:!0,onload:function(){if(!function(){var e,d;return Boolean(null==(d=null==(e=window.Shopify)?void 0:e.analytics)?void 0:d.initialized)}()){var d=window.webPixelsManager.init(e)||void 0;if(d){var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var r=e[0],n=e[1],o=e[2];d.publishCustomEvent(r,n,o)}),r.replayQueue=[],r.publish=d.publishCustomEvent,r.visitor=d.visitor,r.initialized=!0}}},onerror:function(){return U.emit({status:"failed",errorMsg:"".concat(O," has failed to load")})},sri:(b=_,S=/^sha384-[A-Za-z0-9+/=]+$/,"string"==typeof b&&S.test(b)?_:""),scriptDataAttributes:o}),U.emit({status:"loading"})}catch(e){U.emit({status:"failed",errorMsg:(null==e?void 0:e.message)||"Unknown error"})}}}}();wpmLoader({shopId: 81020387613,storefrontBaseUrl: "https://www.crowdcompass.io",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://monorail-edge.shopifysvc.com/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["d5bdd5d0","2b8f910e"],webPixelsConfigList: [{"id":"2450719005","configuration":"{\"shop\":\"f8e228.myshopify.com\", \"shopliftUrl\":\"https:\/\/events.shoplift.ai\/api\/events\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"24c9ecc3cab2a5cad14f04750f74c9f1","type":"APP","apiClientId":7521861633,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"2342682909","configuration":"{\"mailchimp_store_id\":\"store_s7mhhqqvznnxn52r4xeh\", \"mailchimp_user_id\":\"196053094\",\"mailchimp_list_id\":\"a2fc9ccb78\"}","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":"2253685021","configuration":"{\"projectId\":\"v12y5we9un\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"4e27c3dfbb360ace43db5c8bd52813dd","type":"APP","apiClientId":240074326017,"privacyPurposes":[],"capabilities":["advanced_dom_events"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1600454941","configuration":"{\"shopId\":\"f8e228.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"b86194809e9bbe0b74334b13c8bf4709","type":"APP","apiClientId":2753413,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1432158493","configuration":"{\"webPixelName\":\"Judge.me\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"34ad157958823915625854214640f0bf","type":"APP","apiClientId":683015,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"757825821","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-RB4MC08EC6\\\",\\\"AW-11500872559\\\",\\\"GT-5NXK6FLK\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-RB4MC08EC6\\\",\\\"AW-11500872559\\\/04RJCPjD8pgaEO_Ghewq\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-RB4MC08EC6\\\",\\\"AW-11500872559\\\/EnoRCPLD8pgaEO_Ghewq\\\"]},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-RB4MC08EC6\\\",\\\"AW-11500872559\\\/WXSKCO_D8pgaEO_Ghewq\\\",\\\"MC-28WYYV3TGS\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-RB4MC08EC6\\\",\\\"AW-11500872559\\\/dyIKCOnD8pgaEO_Ghewq\\\",\\\"MC-28WYYV3TGS\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-RB4MC08EC6\\\",\\\"AW-11500872559\\\/rSAoCOzD8pgaEO_Ghewq\\\",\\\"MC-28WYYV3TGS\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-RB4MC08EC6\\\",\\\"AW-11500872559\\\/vqJVCPvD8pgaEO_Ghewq\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-RB4MC08EC6\\\",\\\"AW-11500872559\\\/YRaWCPXD8pgaEO_Ghewq\\\"]}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"20a1a395175a780fd37f04940f5b4db5","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":"687112477","configuration":"{\"pixelCode\":\"CMS3F0RC77UDUQCF7TPG\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"422215965","configuration":"{\"pixel_id\":\"976200044503163\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"abff2a8add143ccb04deb20f0ebd74a9","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0460","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0460","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Crowd Compass","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"f8e228.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/www.crowdcompass.io"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"9029234524445","handle":"crowd-compass","title":"","vendor":"","type":null,"untranslatedTitle":null,"url":null,"remoteShopId":null,"variants":[{"id":"49614392262941","price":{"amount":0.0,"currencyCode":"USD"},"image":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null,"page":{"pageType":"home","resourceId":null}},},"https://www.crowdcompass.io/cdn","0d88c59awa19302f9p5122874fmc636b965",{"modern":"","legacy":""},{"trekkieShim":true,"apiClientId":"580111","themeId":"184602034461","themeStoreId":"2412","pageType":"home","shopId":"81020387613","storefrontBaseUrl":"https:\/\/www.crowdcompass.io","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"d5bdd5d0\", \"2b8f910e\"]","isMerchantRequest":"false","hashVersion":"0d88c59awa19302f9p5122874fmc636b965","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script><script>
  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
  window.ShopifyAnalytics.meta.currency = 'USD';
  var meta = {"page":{"pageType":"home","requestId":"400cbea5-13f7-43f8-86b4-75912952c0a8-1782059231"}};
  for (var attr in meta) {
    window.ShopifyAnalytics.meta[attr] = meta[attr];
  }
</script>
<script class="analytics">
  (function () {
    var customDocumentWrite = function(content) {
      var jquery = null;

      if (window.jQuery) {
        jquery = window.jQuery;
      } else if (window.Checkout && window.Checkout.$) {
        jquery = window.Checkout.$;
      }

      if (jquery) {
        jquery('body').append(content);
      }
    };

    var hasLoggedConversion = function(token) {
      if (token) {
        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
      }
      return false;
    }

    var setCookieIfConversion = function(token) {
      if (token) {
        var twoMonthsFromNow = new Date(Date.now());
        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);

        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
      }
    }

    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
    if (trekkie.integrations) {
      return;
    }
    trekkie.methods = [
      'identify',
      'page',
      'ready',
      'track',
      'trackForm',
      'trackLink'
    ];
    trekkie.factory = function(method) {
      return function() {
        var args = Array.prototype.slice.call(arguments);
        args.unshift(method);
        trekkie.push(args);
        if (window.__TREKKIE_SHIM_QUEUE && (method == 'track' || method == 'page')) {
          try {
            window.__TREKKIE_SHIM_QUEUE.push({
              from: 'trekkie-stub',
              method: method,
              args: args.slice(1)
            });
          } catch (e) {
            // no-op
          }
        }
        return trekkie;
      };
    };
    for (var i = 0; i < trekkie.methods.length; i++) {
      var key = trekkie.methods[i];
      trekkie[key] = trekkie.factory(key);
    }
    trekkie.load = function(config) {
      trekkie.config = config || {};
      trekkie.config.initialDocumentCookie = document.cookie;
      var first = document.getElementsByTagName('script')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.onerror = function(e) {
  var scriptFallback = document.createElement('script');
  scriptFallback.type = 'text/javascript';
  scriptFallback.onerror = function(error) {
          var Monorail = {
      produce: function produce(monorailDomain, schemaId, payload) {
        var currentMs = new Date().getTime();
        var event = {
          schema_id: schemaId,
          payload: payload,
          metadata: {
            event_created_at_ms: currentMs,
            event_sent_at_ms: currentMs
          }
        };
        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
      },
      sendRequest: function sendRequest(endpointUrl, payload) {
        // Try the sendBeacon API
        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
          var blobData = new window.Blob([payload], {
            type: 'text/plain'
          });

          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
            return true;
          } // sendBeacon was not successful

        } // XHR beacon

        var xhr = new XMLHttpRequest();

        try {
          xhr.open('POST', endpointUrl);
          xhr.setRequestHeader('Content-Type', 'text/plain');
          xhr.send(payload);
        } catch (e) {
          console.log(e);
        }

        return false;
      },
      isIos12: function isIos12() {
        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
      }
    };
    Monorail.produce('monorail-edge.shopifysvc.com',
      'trekkie_storefront_load_errors/1.1',
      {shop_id: 81020387613,
      theme_id: 184602034461,
      app_name: "storefront",
      context_url: window.location.href,
      source_url: "//www.crowdcompass.io/cdn/s/trekkie.storefront.370ef8ffef154dc56bb5a814fea4666724353464.min.js"});

  };
  scriptFallback.async = true;
  scriptFallback.src = '//www.crowdcompass.io/cdn/s/trekkie.storefront.370ef8ffef154dc56bb5a814fea4666724353464.min.js';
  first.parentNode.insertBefore(scriptFallback, first);
};
script.async = true;
script.src = '//www.crowdcompass.io/cdn/s/trekkie.storefront.370ef8ffef154dc56bb5a814fea4666724353464.min.js';
first.parentNode.insertBefore(script, first);

    };
    trekkie.load(
      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":81020387613,"isMerchantRequest":null,"themeId":184602034461,"themeCityHash":"17219518396832349815","contentLanguage":"en","currency":"USD","eventMetadataId":"c4cbff06-1002-4918-ae85-c3a82313a95d"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["b5387b81","d5bdd5d0"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
    );

    var loaded = false;
    trekkie.ready(function() {
      if (loaded) return;
      loaded = true;

      window.ShopifyAnalytics.lib = window.trekkie;

      var originalDocumentWrite = document.write;
      document.write = customDocumentWrite;
      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
      document.write = originalDocumentWrite;

      window.ShopifyAnalytics.lib.page(null,{"pageType":"home","requestId":"400cbea5-13f7-43f8-86b4-75912952c0a8-1782059231","shopifyEmitted":true});

      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
      var token = match? match[1]: undefined;
      if (!hasLoggedConversion(token)) {
        setCookieIfConversion(token);
        
      }
    });

    var eventsListenerScript = document.createElement('script');
    eventsListenerScript.async = true;
    eventsListenerScript.src = "//www.crowdcompass.io/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
})();</script>
<script
  defer
  src="https://www.crowdcompass.io/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.5.2.min.js"
  data-application="storefront-renderer"
  data-shop-id="81020387613"
  data-render-region="gcp-us-central1"
  data-page-type="index"
  data-theme-instance-id="184602034461"
  data-theme-name="Concept"
  data-theme-version="5.2.0"
  data-monorail-region="shop_domain"
  data-resource-timing-sampling-rate="10"
  data-shs="true"
  data-shs-beacon="true"
  data-shs-export-with-fetch="true"
  data-shs-logs-sample-rate="1"
  data-shs-beacon-endpoint="https://www.crowdcompass.io/api/collect"
></script>
</head>

  <body class="template-index" data-rounded-button="round" data-rounded-input="round-slight" data-rounded-block="round" data-rounded-card="round" data-button-hover="standard" data-page-transition data-lazy-image data-modal-swipe-only data-title-animation data-page-rendering>
    <a class="sr-only skip-link" href="#MainContent">Skip to content</a><loading-bar class="loading-bar block fixed top-0 left-0 w-full h-full overflow-hidden pointer-events-none"><svg class="icon icon-spinner icon-lg absolute animate-spin" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="M2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2"></path>
    </svg></loading-bar>
<mouse-cursor class="mouse-cursor z-50 fixed select-none flex items-center justify-center pointer-events-none rounded-full"> 
  <svg class="icon icon-cursor" stroke="currentColor" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
    <path d="M10 30L30 10M10 10L30 30" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"></path>
  </svg>
</mouse-cursor>
<!-- BEGIN sections: header-group -->
<div id="shopify-section-sections--26225644962077__header" class="shopify-section shopify-section-group-header-group header-section"><style>
  #shopify-section-sections--26225644962077__header {
    --section-padding-top: 16px;
    --section-padding-bottom: 16px;
    --color-background: 13 13 13;
    --color-foreground: 255 255 255;
    --color-transparent: 255 255 255;
    --color-localization: ;
  }
</style><menu-drawer id="MenuDrawer" class="menu-drawer drawer drawer--start z-30 fixed bottom-0 left-0 h-full w-full pointer-events-none"
  data-section-id="sections--26225644962077__header"
  hidden
>
  <overlay-element class="overlay fixed-modal invisible opacity-0 fixed bottom-0 left-0 w-full h-screen pointer-events-none" aria-controls="MenuDrawer" aria-expanded="false"></overlay-element>
  <div class="drawer__inner z-10 absolute top-0 flex flex-col w-full h-full overflow-hidden">
    <gesture-element class="drawer__header flex justify-between opacity-0 invisible relative" tabindex="0">
      <span class="drawer__title heading lg:text-3xl text-2xl leading-none tracking-tight"></span>
      <button class="button button--secondary button--close drawer__close hidden sm:flex items-center justify-center" type="button" is="hover-button" aria-controls="MenuDrawer" aria-expanded="false" aria-label="Close">
        <span class="btn-fill" data-fill></span>
        <span class="btn-text"><svg class="icon icon-close icon-sm" viewBox="0 0 20 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="M5 15L15 5M5 5L15 15"></path>
    </svg></span>
      </button>
    </gesture-element>
    <div class="drawer__content opacity-0 invisible flex flex-col h-full grow shrink">
      <nav class="relative grow overflow-hidden" role="navigation">
        <ul class="drawer__scrollable drawer__menu relative w-full h-full" role="list" data-parent><li class="drawer__menu-group"><a class="drawer__menu-item block heading text-2xl leading-none tracking-tight" href="/">Home</a></li><li class="drawer__menu-group"><details is="menu-details">
  <summary class="drawer__menu-item block cursor-pointer relative" aria-expanded="false">
    <span class="heading text-2xl leading-none tracking-tight"><api-button class="api-only" data-id="DrawerSubMenu-sections--26225644962077__header-2" data-section-id="sections--26225644962077__header"></api-button>Shop</span><svg class="icon icon-chevron-right icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="M10 6L16 12L10 18"></path>
    </svg></summary>
  <div class="drawer__submenu z-1 absolute top-0 left-0 flex flex-col w-full h-full" data-parent><button type="button" class="tracking-tight heading text-base shrink-0 flex items-center gap-3 w-full" data-close>Shop</button><div id="DrawerSubMenu-sections--26225644962077__header-2" class="drawer__scrollable flex flex-col h-full"></div></div>
</details>
</li><li class="drawer__menu-group"><a class="drawer__menu-item block heading text-2xl leading-none tracking-tight" href="/pages/faqs">FAQs</a></li><li class="drawer__menu-group"><a class="drawer__menu-item block heading text-2xl leading-none tracking-tight" href="/pages/how-to-use-your-crowd-compass">User Manual</a></li><li class="drawer__menu-group"><a class="drawer__menu-item block heading text-2xl leading-none tracking-tight" href="/pages/our-story">Our Story</a></li><li class="drawer__menu-group"><a class="drawer__menu-item block heading text-2xl leading-none tracking-tight" href="https://www.crowdcompass.io/pages/download-app-redirect">Companion App</a></li><li class="drawer__menu-group"><a class="drawer__menu-item block heading text-2xl leading-none tracking-tight" href="/blogs/news">Blog</a></li><li class="drawer__menu-group"><a class="drawer__menu-item block heading text-2xl leading-none tracking-tight" href="/pages/crowd-compass-release-notes">Release Notes</a></li><li class="drawer__menu-group"><a class="drawer__menu-item block heading text-2xl leading-none tracking-tight" href="/pages/contact">Contact</a></li></ul>
      </nav>
      <div class="drawer__footer grid w-full"><div class="drawer__footer-bottom flex items-center justify-between gap-6"><a href="https://www.crowdcompass.io/customer_authentication/redirect?locale=en&region_country=US" class="button button--primary icon-with-text" is="hover-link" rel="nofollow">
              <span class="btn-fill" data-fill></span>
              <span class="btn-text"><svg class="icon icon-account-2 icon-xs" viewBox="0 0 16 17" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <rect width="6.5" height="6.5" x="4.75" y="1.917" rx="3.25"></rect>
      <path stroke-linecap="round" d="M8 10.834c1 0 2.667.222 3 .333.333.11 2.467.533 3 1.333.667 1 .667 1.334.667 2.667M8 10.834c-1 0-2.667.222-3 .333-.333.11-2.467.533-3 1.333-.667 1-.667 1.334-.667 2.667"></path>
    </svg>Login</span>
            </a><ul class="flex flex-wrap items-center gap-6" role="list"><li><a href="https://www.facebook.com/profile.php?id=61551818764397" class="social_platform block relative" is="magnet-link" title="Crowd Compass on Facebook"><svg class="icon icon-facebook icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M9.03153 23L9 13H5V9H9V6.5C9 2.7886 11.2983 1 14.6091 1C16.1951 1 17.5581 1.11807 17.9553 1.17085V5.04948L15.6591 5.05052C13.8584 5.05052 13.5098 5.90614 13.5098 7.16171V9H18.75L16.75 13H13.5098V23H9.03153Z"/>
    </svg><span class="sr-only">Facebook</span>
        </a>
      </li><li><a href="http://instagram.com/crowdcompass.io" class="social_platform block relative" is="magnet-link" title="Crowd Compass on Instagram"><svg class="icon icon-instagram icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M12 2.98C14.94 2.98 15.28 2.99 16.44 3.04C17.14 3.04 17.83 3.18 18.48 3.42C18.96 3.6 19.39 3.88 19.75 4.24C20.12 4.59 20.4 5.03 20.57 5.51C20.81 6.16 20.94 6.85 20.95 7.55C21 8.71 21.01 9.06 21.01 12C21.01 14.94 21 15.28 20.95 16.44C20.95 17.14 20.81 17.83 20.57 18.48C20.39 18.95 20.11 19.39 19.75 19.75C19.39 20.11 18.96 20.39 18.48 20.57C17.83 20.81 17.14 20.94 16.44 20.95C15.28 21 14.93 21.01 12 21.01C9.07 21.01 8.72 21 7.55 20.95C6.85 20.95 6.16 20.81 5.51 20.57C5.03 20.39 4.6 20.11 4.24 19.75C3.87 19.4 3.59 18.96 3.42 18.48C3.18 17.83 3.05 17.14 3.04 16.44C2.99 15.28 2.98 14.93 2.98 12C2.98 9.07 2.99 8.72 3.04 7.55C3.04 6.85 3.18 6.16 3.42 5.51C3.6 5.03 3.88 4.6 4.24 4.24C4.59 3.87 5.03 3.59 5.51 3.42C6.16 3.18 6.85 3.05 7.55 3.04C8.71 2.99 9.06 2.98 12 2.98ZM12 1C9.01 1 8.64 1.01 7.47 1.07C6.56 1.09 5.65 1.26 4.8 1.58C4.07 1.86 3.4 2.3 2.85 2.85C2.3 3.41 1.86 4.07 1.58 4.8C1.26 5.65 1.09 6.56 1.07 7.47C1.02 8.64 1 9.01 1 12C1 14.99 1.01 15.36 1.07 16.53C1.09 17.44 1.26 18.35 1.58 19.2C1.86 19.93 2.3 20.6 2.85 21.15C3.41 21.7 4.07 22.14 4.8 22.42C5.65 22.74 6.56 22.91 7.47 22.93C8.64 22.98 9.01 23 12 23C14.99 23 15.36 22.99 16.53 22.93C17.44 22.91 18.35 22.74 19.2 22.42C19.93 22.14 20.6 21.7 21.15 21.15C21.7 20.59 22.14 19.93 22.42 19.2C22.74 18.35 22.91 17.44 22.93 16.53C22.98 15.36 23 14.99 23 12C23 9.01 22.99 8.64 22.93 7.47C22.91 6.56 22.74 5.65 22.42 4.8C22.14 4.07 21.7 3.4 21.15 2.85C20.59 2.3 19.93 1.86 19.2 1.58C18.35 1.26 17.44 1.09 16.53 1.07C15.36 1.02 14.99 1 12 1ZM12 6.35C10.88 6.35 9.79 6.68 8.86 7.3C7.93 7.92 7.21 8.8 6.78 9.84C6.35 10.87 6.24 12.01 6.46 13.1C6.68 14.2 7.22 15.2 8.01 15.99C8.8 16.78 9.81 17.32 10.9 17.54C12 17.76 13.13 17.65 14.16 17.22C15.19 16.79 16.07 16.07 16.7 15.14C17.32 14.21 17.65 13.12 17.65 12C17.65 10.5 17.05 9.06 16 8.01C14.94 6.95 13.5 6.36 12.01 6.36L12 6.35ZM12 15.67C11.27 15.67 10.57 15.45 9.96 15.05C9.36 14.65 8.89 14.07 8.61 13.4C8.33 12.73 8.26 11.99 8.4 11.28C8.54 10.57 8.89 9.92 9.4 9.4C9.91 8.88 10.57 8.54 11.28 8.4C11.99 8.26 12.73 8.33 13.4 8.61C14.07 8.89 14.64 9.36 15.05 9.96C15.45 10.56 15.67 11.27 15.67 12C15.67 12.97 15.28 13.91 14.6 14.59C13.91 15.28 12.98 15.66 12.01 15.66L12 15.67ZM17.87 7.45C18.6 7.45 19.19 6.86 19.19 6.13C19.19 5.4 18.6 4.81 17.87 4.81C17.14 4.81 16.55 5.4 16.55 6.13C16.55 6.86 17.14 7.45 17.87 7.45Z"/>
    </svg><span class="sr-only">Instagram</span>
        </a>
      </li><li><a href="https://www.youtube.com/channel/UCi11hNFaShHv0pX8DLnfyWA" class="social_platform block relative" is="magnet-link" title="Crowd Compass on YouTube"><svg class="icon icon-youtube icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M23.8 7.6C23.8 7.6 23.6 5.9 22.8 5.2C21.9 4.2 20.9 4.2 20.4 4.2C17 4 12 4 12 4C12 4 7 4 3.6 4.2C3.1 4.3 2.1 4.3 1.2 5.2C0.5 5.9 0.2 7.6 0.2 7.6C0.2 7.6 0 9.5 0 11.5V13.3C0 15.2 0.2 17.2 0.2 17.2C0.2 17.2 0.4 18.9 1.2 19.6C2.1 20.6 3.3 20.5 3.8 20.6C5.7 20.8 12 20.8 12 20.8C12 20.8 17 20.8 20.4 20.5C20.9 20.4 21.9 20.4 22.8 19.5C23.5 18.8 23.8 17.1 23.8 17.1C23.8 17.1 24 15.2 24 13.2V11.4C24 9.5 23.8 7.6 23.8 7.6ZM9.5 15.5V8.8L16 12.2L9.5 15.5Z"/>
    </svg><span class="sr-only">YouTube</span>
        </a>
      </li><li><a href="https://www.tiktok.com/@crowdcompass?lang=en" class="social_platform block relative" is="magnet-link" title="Crowd Compass on TikTok"><svg class="icon icon-tiktok icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M10.6315 8.937V13.059C10.1123 12.9221 9.56911 12.9034 9.0418 13.0044C8.5145 13.1054 8.01657 13.3234 7.58473 13.6424C7.15288 13.9613 6.79813 14.3732 6.54661 14.8475C6.2951 15.3218 6.15324 15.8466 6.13148 16.383C6.10175 16.8449 6.17125 17.3078 6.33531 17.7405C6.49938 18.1733 6.7542 18.5659 7.08266 18.892C7.41111 19.2181 7.80557 19.4701 8.23952 19.631C8.67346 19.7919 9.13684 19.8581 9.59848 19.825C10.0648 19.8608 10.5333 19.7949 10.9717 19.6319C11.41 19.4689 11.8078 19.2126 12.1374 18.8809C12.4671 18.5491 12.7208 18.1498 12.881 17.7104C13.0413 17.271 13.1042 16.8021 13.0655 16.336V0H17.1425C17.8355 4.315 19.9935 5.316 22.8825 5.778V9.913C20.8804 9.74881 18.9491 9.09645 17.2575 8.013V16.18C17.2575 19.88 15.0675 24 9.63048 24C8.61045 23.9955 7.60156 23.7875 6.66297 23.3881C5.72437 22.9886 4.87496 22.4059 4.16451 21.6739C3.45407 20.942 2.89689 20.0755 2.52563 19.1254C2.15438 18.1754 1.97652 17.1607 2.00248 16.141C2.03479 15.0794 2.29174 14.0366 2.75639 13.0815C3.22105 12.1265 3.88285 11.2807 4.69819 10.6C5.51352 9.9193 6.46387 9.41915 7.48658 9.1325C8.50929 8.84586 9.58114 8.77923 10.6315 8.937Z"/>
    </svg><span class="sr-only">TikTok</span>
        </a>
      </li><li><a href="https://discord.com/invite/mxJr2Cp87z" class="social_platform block relative" is="magnet-link" title="Crowd Compass on Discord"><svg class="icon icon-discord icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M9.32792 10.068C8.99458 10.0969 8.68419 10.2497 8.45805 10.4964C8.2319 10.743 8.10645 11.0654 8.10645 11.4C8.10645 11.7346 8.2319 12.057 8.45805 12.3036C8.68419 12.5502 8.99458 12.7031 9.32792 12.732C9.4958 12.725 9.66066 12.6851 9.81307 12.6143C9.96548 12.5436 10.1025 12.4435 10.2161 12.3198C10.3298 12.1961 10.418 12.0512 10.4756 11.8933C10.5332 11.7355 10.5592 11.5679 10.5519 11.4C10.5601 11.2319 10.5348 11.0639 10.4776 10.9056C10.4203 10.7474 10.3322 10.6021 10.2183 10.4782C10.1044 10.3543 9.9671 10.2542 9.81425 10.1838C9.66141 10.1134 9.4961 10.074 9.32792 10.068ZM13.7079 10.068C13.4396 10.0452 13.1707 10.104 12.9364 10.2366C12.702 10.3693 12.5132 10.5696 12.3946 10.8113C12.276 11.053 12.2332 11.3249 12.2717 11.5914C12.3102 11.8579 12.4283 12.1066 12.6105 12.3049C12.7926 12.5031 13.0305 12.6418 13.2927 12.7026C13.555 12.7635 13.8296 12.7437 14.0805 12.6459C14.3314 12.5481 14.5469 12.3769 14.6988 12.1546C14.8507 11.9323 14.932 11.6692 14.9319 11.4C14.9392 11.2321 14.9132 11.0645 14.8556 10.9066C14.798 10.7488 14.7098 10.6039 14.5961 10.4802C14.4825 10.3564 14.3455 10.2564 14.1931 10.1856C14.0407 10.1149 13.8758 10.0749 13.7079 10.068Z"/>
      <path d="M19.54 0H3.46001C3.13617 0.000786973 2.81565 0.0653515 2.51677 0.190007C2.21788 0.314663 1.94647 0.496969 1.71804 0.726515C1.4896 0.956062 1.30862 1.22835 1.18542 1.52784C1.06222 1.82734 0.999218 2.14816 1.00001 2.472V18.7C0.999218 19.0238 1.06222 19.3447 1.18542 19.6442C1.30862 19.9436 1.4896 20.2159 1.71804 20.4455C1.94647 20.675 2.21788 20.8573 2.51677 20.982C2.81565 21.1066 3.13617 21.1712 3.46001 21.172H17.068L16.432 18.952L17.968 20.38L19.42 21.72L22 24V2.472C22.0008 2.14816 21.9378 1.82734 21.8146 1.52784C21.6914 1.22835 21.5104 0.956062 21.282 0.726515C21.0535 0.496969 20.7821 0.314663 20.4832 0.190007C20.1844 0.0653515 19.8638 0.000786973 19.54 0ZM14.908 15.672C14.908 15.672 14.476 15.156 14.116 14.7C14.9858 14.4952 15.7552 13.9893 16.288 13.272C15.8562 13.5594 15.3933 13.7969 14.908 13.98C14.3498 14.2183 13.7659 14.3914 13.168 14.496C12.1403 14.6852 11.0863 14.6812 10.06 14.484C9.45887 14.3659 8.86976 14.1932 8.30001 13.968C7.81882 13.7842 7.35992 13.5467 6.93201 13.26C7.44554 13.9624 8.18835 14.4632 9.03201 14.676C8.67201 15.132 8.23201 15.676 8.23201 15.676C7.51919 15.6952 6.81258 15.5388 6.17437 15.2208C5.53616 14.9027 4.9859 14.4327 4.57201 13.852C4.61037 11.4179 5.20124 9.02433 6.30001 6.852C7.26643 6.09298 8.44466 5.65272 9.67201 5.592L9.79201 5.736C8.63452 6.02081 7.55416 6.55757 6.62801 7.308C6.62801 7.308 6.89201 7.164 7.33601 6.96C8.19835 6.56489 9.11767 6.3084 10.06 6.2C10.1259 6.18632 10.1928 6.17829 10.26 6.176C11.0641 6.07122 11.8779 6.06317 12.684 6.152C13.9533 6.2975 15.1817 6.69023 16.3 7.308C15.4231 6.5942 14.4047 6.07475 13.312 5.784L13.48 5.592C14.7074 5.65272 15.8856 6.09298 16.852 6.852C17.9508 9.02433 18.5416 11.4179 18.58 13.852C18.1624 14.4314 17.6096 14.9001 16.9697 15.2173C16.3297 15.5344 15.622 15.6905 14.908 15.672Z"/>
    </svg><span class="sr-only">Discord</span>
        </a>
      </li></ul></div>
      </div>
    </div>
  </div>
</menu-drawer>
<header data-section-id="sections--26225644962077__header" class="header header--center-drawer mobile:header--center page-width page-width--full section section--padding grid items-center z-20 relative w-full" is="sticky-header" data-sticky-type="always"><div class="header__icons header__icons--start flex justify-start z-2">
  <div class="header__buttons flex items-center gap-1d5"><a href="/search" class="search-drawer-button flex items-center justify-center" is="magnet-link" aria-controls="SearchDrawer" aria-expanded="false" >
        <span class="sr-only">Search</span><svg class="icon icon-search icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" d="m21 21-3.636-3.636m0 0A9 9 0 1 0 4.636 4.636a9 9 0 0 0 12.728 12.728Z"></path>
    </svg></a><button class="menu-drawer-button flex items-center gap-2d5 justify-center" type="button" is="magnet-button" aria-controls="MenuDrawer" aria-expanded="false">
        <span class="sr-only">Site navigation</span><svg class="icon icon-hamburger icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" d="M3 6H21M3 12H11M3 18H16"></path>
    </svg></button></div>
</div>
<h1 class="header__logo flex justify-center z-2" itemscope itemtype="http://schema.org/Organization"><a
      href="/"
      itemprop="url"
      class="header__logo-link flex items-center relative"
    >
      <span class="sr-only">Crowd Compass</span><img src="//www.crowdcompass.io/cdn/shop/files/favicon.png?v=1769390566&amp;width=667" alt="" srcset="//www.crowdcompass.io/cdn/shop/files/favicon.png?v=1769390566&amp;width=70 70w, //www.crowdcompass.io/cdn/shop/files/favicon.png?v=1769390566&amp;width=140 140w" width="667" height="667" loading="eager" sizes="70px" style="max-height: 70.0px;max-width: 70px;" itemprop="logo" is="lazy-image" class="logo hidden md:block"><img src="//www.crowdcompass.io/cdn/shop/files/cc_icon_ca42fc48-016b-4548-8530-31aef831c60a.png?v=1774925485&amp;width=375" alt="" srcset="//www.crowdcompass.io/cdn/shop/files/cc_icon_ca42fc48-016b-4548-8530-31aef831c60a.png?v=1774925485&amp;width=50 50w, //www.crowdcompass.io/cdn/shop/files/cc_icon_ca42fc48-016b-4548-8530-31aef831c60a.png?v=1774925485&amp;width=100 100w" width="375" height="375" loading="eager" sizes="50px" style="max-height: 50.0px;max-width: 50px;" itemprop="logo" is="lazy-image" class="logo md:hidden"></a></h1><div class="header__navigation hidden lg:flex lg:gap-5 lg:justify-start">
    <nav class="header__menu hidden lg:flex" role="navigation" aria-label="Primary"><ul class="flex flex-wrap gap-1 list-menu with-block"><li>
        <a href="/" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="magnet-link" data-magnet="0">
          <span class="btn-text" data-text>Home</span><span class="btn-text btn-duplicate">Home</span></a>
      </li><li>
        <details is="details-dropdown" trigger="click" level="top">
          <summary data-link="/collections" class="z-2 relative rounded-full">
            <magnet-element class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" data-magnet="0">
              <span class="btn-text" data-text>Shop<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
    </svg></span><span class="btn-text btn-duplicate">Shop<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
    </svg></span></magnet-element>
          </summary>
          <div id="DropdownMenu-sections--26225644962077__header-2-start" class="dropdown opacity-0 invisible absolute top-0 max-w-full pointer-events-none">
            <div class="dropdown__container relative"><span class="dropdown__corner corner left top flex absolute pointer-events-none">
  <svg class="w-full h-auto" viewBox="0 0 101 101" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
    <path fill-rule="evenodd" clip-rule="evenodd" d="M101 0H0V101H1C1 45.7715 45.7715 1 101 1V0Z"></path>
    <path d="M1 101C1 45.7715 45.7715 1 101 1" fill="none"></path>
  </svg>
</span>
<span class="dropdown__corner corner right top flex absolute pointer-events-none">
  <svg class="w-full h-auto" viewBox="0 0 101 101" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
    <path fill-rule="evenodd" clip-rule="evenodd" d="M101 0H0V101H1C1 45.7715 45.7715 1 101 1V0Z"></path>
    <path d="M1 101C1 45.7715 45.7715 1 101 1" fill="none"></path>
  </svg>
</span><ul class="dropdown__nav flex flex-col gap-1d5 xl:gap-2" role="list"><li class="opacity-0">
                      <p>
                        <a href="/products/crowd-compass" class="reversed-link text-sm-base">Crowd Compass</a>
                      </p>
                    </li><li class="opacity-0">
                      <p>
                        <a href="/collections/accessories" class="reversed-link text-sm-base">Accessories</a>
                      </p>
                    </li></ul>
            </div>
          </div>
        </details>
      </li><li>
        <a href="/pages/faqs" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="magnet-link" data-magnet="0">
          <span class="btn-text" data-text>FAQs</span><span class="btn-text btn-duplicate">FAQs</span></a>
      </li><li>
        <a href="/pages/how-to-use-your-crowd-compass" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="magnet-link" data-magnet="0">
          <span class="btn-text" data-text>User Manual</span><span class="btn-text btn-duplicate">User Manual</span></a>
      </li><li>
        <a href="/pages/our-story" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="magnet-link" data-magnet="0">
          <span class="btn-text" data-text>Our Story</span><span class="btn-text btn-duplicate">Our Story</span></a>
      </li><li>
        <a href="https://www.crowdcompass.io/pages/download-app-redirect" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="magnet-link" data-magnet="0">
          <span class="btn-text" data-text>Companion App</span><span class="btn-text btn-duplicate">Companion App</span></a>
      </li><li>
        <a href="/blogs/news" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="magnet-link" data-magnet="0">
          <span class="btn-text" data-text>Blog</span><span class="btn-text btn-duplicate">Blog</span></a>
      </li><li>
        <a href="/pages/crowd-compass-release-notes" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="magnet-link" data-magnet="0">
          <span class="btn-text" data-text>Release Notes</span><span class="btn-text btn-duplicate">Release Notes</span></a>
      </li><li>
        <a href="/pages/contact" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="magnet-link" data-magnet="0">
          <span class="btn-text" data-text>Contact</span><span class="btn-text btn-duplicate">Contact</span></a>
      </li></ul>
</nav>
  </div><div class="header__icons header__icons--end flex justify-end z-2">
  <div class="header__buttons flex items-center gap-1d5"><a href="/search" class="search-drawer-button flex items-center justify-center" is="magnet-link" aria-controls="SearchDrawer" aria-expanded="false" >
        <span class="sr-only">Search</span><svg class="icon icon-search icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" d="m21 21-3.636-3.636m0 0A9 9 0 1 0 4.636 4.636a9 9 0 0 0 12.728 12.728Z"></path>
    </svg></a><a href="https://www.crowdcompass.io/customer_authentication/redirect?locale=en&region_country=US" class="hidden lg:flex items-center justify-center" is="magnet-link" rel="nofollow">
        <span class="sr-only">Login</span><svg class="icon icon-account icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <rect width="10.5" height="10.5" x="6.75" y="1.75" rx="5.25"></rect>
      <path stroke-linecap="round" d="M12 15.5c1.5 0 4 .333 4.5.5.5.167 3.7.8 4.5 2 1 1.5 1 2 1 4m-10-6.5c-1.5 0-4 .333-4.5.5-.5.167-3.7.8-4.5 2-1 1.5-1 2-1 4"></path>
    </svg></a><a href="/cart" class="cart-drawer-button flex items-center justify-center relative" is="magnet-link" aria-controls="CartDrawer" aria-expanded="false" data-no-instant>
        <span class="sr-only">Cart</span><svg class="icon icon-cart icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
          <path stroke-linecap="round" stroke-linejoin="round" d="M1 1h.5v0c.226 0 .339 0 .44.007a3 3 0 0 1 2.62 1.976c.034.095.065.204.127.42l.17.597m0 0 1.817 6.358c.475 1.664.713 2.496 1.198 3.114a4 4 0 0 0 1.633 1.231c.727.297 1.592.297 3.322.297h2.285c1.75 0 2.626 0 3.359-.302a4 4 0 0 0 1.64-1.253c.484-.627.715-1.472 1.175-3.161l.06-.221c.563-2.061.844-3.092.605-3.906a3 3 0 0 0-1.308-1.713C19.92 4 18.853 4 16.716 4H4.857ZM12 20a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm8 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
        </svg><cart-count class="count absolute top-0 right-0 text-xs" aria-label="0 items" hidden>0</cart-count>
      </a><button class="menu-drawer-button flex items-center gap-2d5 justify-center" type="button" is="magnet-button" aria-controls="MenuDrawer" aria-expanded="false">
        <span class="sr-only">Site navigation</span><svg class="icon icon-hamburger icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" d="M3 6H21M3 12H11M3 18H16"></path>
    </svg></button></div>
</div>
<span class="header__cutout cutout opacity-0 absolute left-0 top-100 w-full pointer-events-none"></span></header><overlay-element class="overlay opacity-0 z-1 fixed left-0 w-full pointer-events-none"></overlay-element>
</div><div id="shopify-section-sections--26225644962077__announcement-bar" class="shopify-section shopify-section-group-header-group topbar-section"><style>
    :root {
      --topbar-height: var(--sp-12);
    }
    
    @media screen and (min-width: 1536px) {
      :root {
        --topbar-height: var(--sp-14);
      }
    }

    #shopify-section-sections--26225644962077__announcement-bar {
      --gradient-background: #6ae5ac;
      --color-background: 106 229 172;
      --color-foreground: 13 13 13;
      --color-highlight: 255 221 191;
    }
  </style><nav class="topbar topbar--center topbar--inverted topbar--only page-width page-width--full section section--rounded relative grid py-0 h-full w-full items-center" aria-label="Announcement bar"><div class="announcement-bar h-full flex justify-center lg:justify-center relative">
  <announcement-bar id="Slider-sections--26225644962077__announcement-bar" class="announcement__slides"><div class="announcement__slide flex h-full" ><a class="announcement__content flex items-center gap-2" href="/products/crowd-compass"><span class="announcement-icon"><svg class="icon icon-award icon-xs stroke-1" viewBox="0 0 16 16" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path d="M4.66662 11L3.99996 14.6667C5.32123 14.4465 6.6563 14.1471 7.99996 14.1471C9.34362 14.1471 10.6787 14.4465 12 14.6667L11.3333 11M7.99996 12C5.05444 12 2.66663 9.61219 2.66663 6.66668C2.66663 3.72116 5.05444 1.33334 7.99996 1.33334C10.9455 1.33334 13.3333 3.72116 13.3333 6.66668C13.3333 9.61219 10.9455 12 7.99996 12Z" stroke-linecap="round" stroke-linejoin="round"/>
    </svg></span><p class="announcement-text leading-tight"><strong>Shark Tank  Season 17 | SXSW Innovation Finalist | TIME Best Inventions </strong></p></a></div></announcement-bar></div>
</nav>
</div>
<!-- END sections: header-group --><!-- BEGIN sections: overlay-group -->
<div id="shopify-section-sections--26225644994845__cart-drawer" class="shopify-section shopify-section-group-overlay-group">
<style> #shopify-section-sections--26225644994845__cart-drawer .price__sale {color: #ffffff;} </style></div><div id="shopify-section-sections--26225644994845__search-drawer" class="shopify-section shopify-section-group-overlay-group"><script src="//www.crowdcompass.io/cdn/shop/t/56/assets/search.js?v=6305371176491887341769371157" defer></script><search-drawer id="SearchDrawer" class="search-drawer drawer drawer--end z-35 fixed bottom-0 left-0 h-full w-full pointer-events-none"
    role="dialog"
    aria-modal="true"
    aria-label="Search"
    shopify-design-mode
    hidden
  >
    <overlay-element class="overlay fixed-modal invisible opacity-0 fixed bottom-0 left-0 w-full h-screen pointer-events-none" aria-controls="SearchDrawer" aria-expanded="false"></overlay-element>
    <div class="drawer__inner z-10 absolute top-0 flex flex-col w-full h-full overflow-hidden">
      <gesture-element class="drawer__header flex justify-between opacity-0 invisible relative" tabindex="0">
        <span class="drawer__title heading lg:text-3xl text-2xl leading-none tracking-tight">Search</span>
        <button class="button button--secondary button--close drawer__close hidden sm:flex items-center justify-center" type="button" is="hover-button" aria-controls="SearchDrawer" aria-expanded="false" aria-label="Close">
          <span class="btn-fill" data-fill></span>
          <span class="btn-text"><svg class="icon icon-close icon-sm" viewBox="0 0 20 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="M5 15L15 5M5 5L15 15"></path>
    </svg></span>
        </button>
      </gesture-element>
      <div class="drawer__content opacity-0 invisible flex flex-col h-full grow shrink">
        <div class="drawer__scrollable relative flex flex-col grow shrink"><form class="search__form flex flex-col gap-8 h-full relative" action="/search" method="GET" role="search"
    is="predictive-search"
    data-section-id="sections--26225644994845__search-drawer"
    data-limit="3"
  >
  <input type="hidden" name="options[prefix]" value="last" />
  <label class="sr-only" for="SearchFormInput-sections--26225644994845__search-drawer">Search</label>
  <div class="search__field field flex items-center gap-4 relative"><input
      class="input search__input"
      type="search"
      name="q"
      id="SearchFormInput-sections--26225644994845__search-drawer"
      placeholder="Search for ..."
      autocomplete="off"
      autocorrect="off"
      autocapitalize="off"
      spellcheck="off"/>
      <button class="clear absolute flex items-center justify-center text-xs opacity-0" type="reset">
        <span>Clear</span><svg class="icon icon-loader icon-sm absolute opacity-0 invisible animate-spin" viewBox="0 0 18 18" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="M0.7,9.9C0.5,5.2,4.1,1.2,8.5,1c4.7-0.3,8.9,3.8,8.8,8.8"></path>
    </svg></button></div>
    <div id="PredictiveSearchResults-sections--26225644994845__search-drawer" class="search__box search__results text-left flex flex-col items-start grow gap-10" role="listbox"></div></form>
</div>
      </div>
    </div>
  </search-drawer>
</div><div id="shopify-section-sections--26225644994845__newsletter-popup" class="shopify-section shopify-section-group-overlay-group newsletter-section"><style>
    #shopify-section-sections--26225644994845__newsletter-popup {
      --color-drawer-text: 23 23 23;
      --color-drawer-background: 255 255 255;
      --color-drawer-button-gradient: #171717;
      --color-drawer-button-background: 23 23 23;
      --color-drawer-button-text: 255 255 255;
      --color-highlight: 254 144 230;
      --color-drawer-overlay: 23 23 23;
    }
  </style><link rel="stylesheet" href="//www.crowdcompass.io/cdn/shop/t/56/assets/newsletter-popup.css?v=70958374402311731511769371154" media="print" onload="this.media='all'">
    <noscript><link href="//www.crowdcompass.io/cdn/shop/t/56/assets/newsletter-popup.css?v=70958374402311731511769371154" rel="stylesheet" type="text/css" media="all" /></noscript><script src="//www.crowdcompass.io/cdn/shop/t/56/assets/newsletter-popup.js?v=145134458895424454371769371154" defer="defer"></script>

  <newsletter-modal id="NewsletterModal" class="x-modal newsletter-modal drawer z-35 fixed bottom-0 left-0 h-full w-full pointer-events-none"
    data-delay="4"
    data-expiry="1"
    data-test-mode="false"
    role="dialog"
    aria-labelledby="Dialog-sections--26225644994845__newsletter-popup-Heading1"
    aria-modal="false"
    shopify-design-mode
    hidden
  >
    <overlay-element class="overlay fixed-modal invisible opacity-0 fixed bottom-0 left-0 w-full h-screen" aria-controls="NewsletterModal" aria-expanded="false"></overlay-element>
    <div class="drawer__inner z-10 absolute bottom-0 center-0 flex flex-col w-full h-full overflow-hidden">
      <gesture-element class="drawer__header flex justify-between opacity-0 invisible relative" tabindex="0">
        <button class="button button--secondary button--close drawer__close hidden sm:flex items-center justify-center" type="button" is="hover-button" aria-controls="NewsletterModal" aria-expanded="false" aria-label="Close">
          <span class="btn-fill" data-fill></span>
          <span class="btn-text"><svg class="icon icon-close icon-sm" viewBox="0 0 20 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="M5 15L15 5M5 5L15 15"></path>
    </svg></span>
        </button>
      </gesture-element>
      <div class="drawer__content opacity-0 invisible">
        <div class="newsletter-grid with-image flex"><div class="newsletter__image shrink-0 media media--height relative hidden sm:block"><img src="//www.crowdcompass.io/cdn/shop/files/Giveaway_MEdia_Your_Story_5.png?v=1773349174&amp;width=1080" alt="" srcset="//www.crowdcompass.io/cdn/shop/files/Giveaway_MEdia_Your_Story_5.png?v=1773349174&amp;width=1080 1080w, //www.crowdcompass.io/cdn/shop/files/Giveaway_MEdia_Your_Story_5.png?v=1773349174&amp;width=1080 1080w" width="1080" height="1920" loading="lazy" sizes="min(calc(100vw - 16px), 310px)" is="lazy-image"></div><div class="drawer__scrollable relative w-full">
            <div class="rich-text text-left"><div class="rte body subtext-custom leading-normal text-opacity" style="--subtext-size: 12px;--subtext-line-height: 1.6;--subtext-letter-spacing: 0.0em;" ><p>Limited-Time Giveaway!</p></div>
<h2 id="Dialog-sections--26225644994845__newsletter-popup-Heading1" class="heading leading-none text-2xl lg:text-3xl" >Win the Ultimate Festival Gear Giveaway</h2>
<form method="post" action="/contact#newsletter-sections--26225644994845__newsletter-popup" id="newsletter-sections--26225644994845__newsletter-popup" accept-charset="UTF-8" class="newsletter-form grid gap-5"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="contact[tags]" value="newsletter" />
  <input type="hidden" name="contact[context]" value="popup" />
  <div class="field relative">
    <input
      id="NewsletterForm--sections--26225644994845__newsletter-popup"
      class="input is-floating input--fill"
      type="email"
      name="contact[email]"
      value=""
      autocorrect="off"
      autocapitalize="off"
      autocomplete="email"
      placeholder="Enter your email"
      required/>
    <label class="label is-floating" for="NewsletterForm--sections--26225644994845__newsletter-popup">Enter your email</label>
    <div class="self-submit-button absolute">
      <button type="submit" class="button button--primary self-button flex justify-center items-center" is="magnet-button" data-magnet="20" aria-label="Subscribe">
        <span class="btn-text">
          <svg class="icon icon-arrow-right icon-xs transform" viewBox="0 0 16 16" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
            <path stroke-linecap="round" stroke-linejoin="round" d="M2 8.00012H14M14 8.00012L9.33333 3.3335M14 8.00012L9.33333 12.6668"></path>
          </svg>
        </span>
      </button>
    </div>
  </div></form>
<div class="rte body text-sm leading-normal text-opacity" ><p>Enter your email for a chance to win products from Crowd Compass.<br/><br/>By entering, you agree to the <a href="/pages/giveaway-terms-conditions" target="_blank" title="Giveaway Terms & Conditions"><strong>Terms & Conditions</strong></a> and <a href="/policies/privacy-policy" target="_blank" title="Privacy Policy"><strong>Privacy Policy</strong></a>, and consent to receive emails from Crowd Compass.</p></div>
<div class="social-icons flex items-center" ><ul class="flex flex-wrap items-center gap-6" role="list"><li><a href="https://www.facebook.com/profile.php?id=61551818764397" class="social_platform block relative" is="magnet-link" title="Crowd Compass on Facebook"><svg class="icon icon-facebook icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M9.03153 23L9 13H5V9H9V6.5C9 2.7886 11.2983 1 14.6091 1C16.1951 1 17.5581 1.11807 17.9553 1.17085V5.04948L15.6591 5.05052C13.8584 5.05052 13.5098 5.90614 13.5098 7.16171V9H18.75L16.75 13H13.5098V23H9.03153Z"/>
    </svg><span class="sr-only">Facebook</span>
        </a>
      </li><li><a href="http://instagram.com/crowdcompass.io" class="social_platform block relative" is="magnet-link" title="Crowd Compass on Instagram"><svg class="icon icon-instagram icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M12 2.98C14.94 2.98 15.28 2.99 16.44 3.04C17.14 3.04 17.83 3.18 18.48 3.42C18.96 3.6 19.39 3.88 19.75 4.24C20.12 4.59 20.4 5.03 20.57 5.51C20.81 6.16 20.94 6.85 20.95 7.55C21 8.71 21.01 9.06 21.01 12C21.01 14.94 21 15.28 20.95 16.44C20.95 17.14 20.81 17.83 20.57 18.48C20.39 18.95 20.11 19.39 19.75 19.75C19.39 20.11 18.96 20.39 18.48 20.57C17.83 20.81 17.14 20.94 16.44 20.95C15.28 21 14.93 21.01 12 21.01C9.07 21.01 8.72 21 7.55 20.95C6.85 20.95 6.16 20.81 5.51 20.57C5.03 20.39 4.6 20.11 4.24 19.75C3.87 19.4 3.59 18.96 3.42 18.48C3.18 17.83 3.05 17.14 3.04 16.44C2.99 15.28 2.98 14.93 2.98 12C2.98 9.07 2.99 8.72 3.04 7.55C3.04 6.85 3.18 6.16 3.42 5.51C3.6 5.03 3.88 4.6 4.24 4.24C4.59 3.87 5.03 3.59 5.51 3.42C6.16 3.18 6.85 3.05 7.55 3.04C8.71 2.99 9.06 2.98 12 2.98ZM12 1C9.01 1 8.64 1.01 7.47 1.07C6.56 1.09 5.65 1.26 4.8 1.58C4.07 1.86 3.4 2.3 2.85 2.85C2.3 3.41 1.86 4.07 1.58 4.8C1.26 5.65 1.09 6.56 1.07 7.47C1.02 8.64 1 9.01 1 12C1 14.99 1.01 15.36 1.07 16.53C1.09 17.44 1.26 18.35 1.58 19.2C1.86 19.93 2.3 20.6 2.85 21.15C3.41 21.7 4.07 22.14 4.8 22.42C5.65 22.74 6.56 22.91 7.47 22.93C8.64 22.98 9.01 23 12 23C14.99 23 15.36 22.99 16.53 22.93C17.44 22.91 18.35 22.74 19.2 22.42C19.93 22.14 20.6 21.7 21.15 21.15C21.7 20.59 22.14 19.93 22.42 19.2C22.74 18.35 22.91 17.44 22.93 16.53C22.98 15.36 23 14.99 23 12C23 9.01 22.99 8.64 22.93 7.47C22.91 6.56 22.74 5.65 22.42 4.8C22.14 4.07 21.7 3.4 21.15 2.85C20.59 2.3 19.93 1.86 19.2 1.58C18.35 1.26 17.44 1.09 16.53 1.07C15.36 1.02 14.99 1 12 1ZM12 6.35C10.88 6.35 9.79 6.68 8.86 7.3C7.93 7.92 7.21 8.8 6.78 9.84C6.35 10.87 6.24 12.01 6.46 13.1C6.68 14.2 7.22 15.2 8.01 15.99C8.8 16.78 9.81 17.32 10.9 17.54C12 17.76 13.13 17.65 14.16 17.22C15.19 16.79 16.07 16.07 16.7 15.14C17.32 14.21 17.65 13.12 17.65 12C17.65 10.5 17.05 9.06 16 8.01C14.94 6.95 13.5 6.36 12.01 6.36L12 6.35ZM12 15.67C11.27 15.67 10.57 15.45 9.96 15.05C9.36 14.65 8.89 14.07 8.61 13.4C8.33 12.73 8.26 11.99 8.4 11.28C8.54 10.57 8.89 9.92 9.4 9.4C9.91 8.88 10.57 8.54 11.28 8.4C11.99 8.26 12.73 8.33 13.4 8.61C14.07 8.89 14.64 9.36 15.05 9.96C15.45 10.56 15.67 11.27 15.67 12C15.67 12.97 15.28 13.91 14.6 14.59C13.91 15.28 12.98 15.66 12.01 15.66L12 15.67ZM17.87 7.45C18.6 7.45 19.19 6.86 19.19 6.13C19.19 5.4 18.6 4.81 17.87 4.81C17.14 4.81 16.55 5.4 16.55 6.13C16.55 6.86 17.14 7.45 17.87 7.45Z"/>
    </svg><span class="sr-only">Instagram</span>
        </a>
      </li><li><a href="https://www.youtube.com/channel/UCi11hNFaShHv0pX8DLnfyWA" class="social_platform block relative" is="magnet-link" title="Crowd Compass on YouTube"><svg class="icon icon-youtube icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M23.8 7.6C23.8 7.6 23.6 5.9 22.8 5.2C21.9 4.2 20.9 4.2 20.4 4.2C17 4 12 4 12 4C12 4 7 4 3.6 4.2C3.1 4.3 2.1 4.3 1.2 5.2C0.5 5.9 0.2 7.6 0.2 7.6C0.2 7.6 0 9.5 0 11.5V13.3C0 15.2 0.2 17.2 0.2 17.2C0.2 17.2 0.4 18.9 1.2 19.6C2.1 20.6 3.3 20.5 3.8 20.6C5.7 20.8 12 20.8 12 20.8C12 20.8 17 20.8 20.4 20.5C20.9 20.4 21.9 20.4 22.8 19.5C23.5 18.8 23.8 17.1 23.8 17.1C23.8 17.1 24 15.2 24 13.2V11.4C24 9.5 23.8 7.6 23.8 7.6ZM9.5 15.5V8.8L16 12.2L9.5 15.5Z"/>
    </svg><span class="sr-only">YouTube</span>
        </a>
      </li><li><a href="https://www.tiktok.com/@crowdcompass?lang=en" class="social_platform block relative" is="magnet-link" title="Crowd Compass on TikTok"><svg class="icon icon-tiktok icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M10.6315 8.937V13.059C10.1123 12.9221 9.56911 12.9034 9.0418 13.0044C8.5145 13.1054 8.01657 13.3234 7.58473 13.6424C7.15288 13.9613 6.79813 14.3732 6.54661 14.8475C6.2951 15.3218 6.15324 15.8466 6.13148 16.383C6.10175 16.8449 6.17125 17.3078 6.33531 17.7405C6.49938 18.1733 6.7542 18.5659 7.08266 18.892C7.41111 19.2181 7.80557 19.4701 8.23952 19.631C8.67346 19.7919 9.13684 19.8581 9.59848 19.825C10.0648 19.8608 10.5333 19.7949 10.9717 19.6319C11.41 19.4689 11.8078 19.2126 12.1374 18.8809C12.4671 18.5491 12.7208 18.1498 12.881 17.7104C13.0413 17.271 13.1042 16.8021 13.0655 16.336V0H17.1425C17.8355 4.315 19.9935 5.316 22.8825 5.778V9.913C20.8804 9.74881 18.9491 9.09645 17.2575 8.013V16.18C17.2575 19.88 15.0675 24 9.63048 24C8.61045 23.9955 7.60156 23.7875 6.66297 23.3881C5.72437 22.9886 4.87496 22.4059 4.16451 21.6739C3.45407 20.942 2.89689 20.0755 2.52563 19.1254C2.15438 18.1754 1.97652 17.1607 2.00248 16.141C2.03479 15.0794 2.29174 14.0366 2.75639 13.0815C3.22105 12.1265 3.88285 11.2807 4.69819 10.6C5.51352 9.9193 6.46387 9.41915 7.48658 9.1325C8.50929 8.84586 9.58114 8.77923 10.6315 8.937Z"/>
    </svg><span class="sr-only">TikTok</span>
        </a>
      </li><li><a href="https://discord.com/invite/mxJr2Cp87z" class="social_platform block relative" is="magnet-link" title="Crowd Compass on Discord"><svg class="icon icon-discord icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M9.32792 10.068C8.99458 10.0969 8.68419 10.2497 8.45805 10.4964C8.2319 10.743 8.10645 11.0654 8.10645 11.4C8.10645 11.7346 8.2319 12.057 8.45805 12.3036C8.68419 12.5502 8.99458 12.7031 9.32792 12.732C9.4958 12.725 9.66066 12.6851 9.81307 12.6143C9.96548 12.5436 10.1025 12.4435 10.2161 12.3198C10.3298 12.1961 10.418 12.0512 10.4756 11.8933C10.5332 11.7355 10.5592 11.5679 10.5519 11.4C10.5601 11.2319 10.5348 11.0639 10.4776 10.9056C10.4203 10.7474 10.3322 10.6021 10.2183 10.4782C10.1044 10.3543 9.9671 10.2542 9.81425 10.1838C9.66141 10.1134 9.4961 10.074 9.32792 10.068ZM13.7079 10.068C13.4396 10.0452 13.1707 10.104 12.9364 10.2366C12.702 10.3693 12.5132 10.5696 12.3946 10.8113C12.276 11.053 12.2332 11.3249 12.2717 11.5914C12.3102 11.8579 12.4283 12.1066 12.6105 12.3049C12.7926 12.5031 13.0305 12.6418 13.2927 12.7026C13.555 12.7635 13.8296 12.7437 14.0805 12.6459C14.3314 12.5481 14.5469 12.3769 14.6988 12.1546C14.8507 11.9323 14.932 11.6692 14.9319 11.4C14.9392 11.2321 14.9132 11.0645 14.8556 10.9066C14.798 10.7488 14.7098 10.6039 14.5961 10.4802C14.4825 10.3564 14.3455 10.2564 14.1931 10.1856C14.0407 10.1149 13.8758 10.0749 13.7079 10.068Z"/>
      <path d="M19.54 0H3.46001C3.13617 0.000786973 2.81565 0.0653515 2.51677 0.190007C2.21788 0.314663 1.94647 0.496969 1.71804 0.726515C1.4896 0.956062 1.30862 1.22835 1.18542 1.52784C1.06222 1.82734 0.999218 2.14816 1.00001 2.472V18.7C0.999218 19.0238 1.06222 19.3447 1.18542 19.6442C1.30862 19.9436 1.4896 20.2159 1.71804 20.4455C1.94647 20.675 2.21788 20.8573 2.51677 20.982C2.81565 21.1066 3.13617 21.1712 3.46001 21.172H17.068L16.432 18.952L17.968 20.38L19.42 21.72L22 24V2.472C22.0008 2.14816 21.9378 1.82734 21.8146 1.52784C21.6914 1.22835 21.5104 0.956062 21.282 0.726515C21.0535 0.496969 20.7821 0.314663 20.4832 0.190007C20.1844 0.0653515 19.8638 0.000786973 19.54 0ZM14.908 15.672C14.908 15.672 14.476 15.156 14.116 14.7C14.9858 14.4952 15.7552 13.9893 16.288 13.272C15.8562 13.5594 15.3933 13.7969 14.908 13.98C14.3498 14.2183 13.7659 14.3914 13.168 14.496C12.1403 14.6852 11.0863 14.6812 10.06 14.484C9.45887 14.3659 8.86976 14.1932 8.30001 13.968C7.81882 13.7842 7.35992 13.5467 6.93201 13.26C7.44554 13.9624 8.18835 14.4632 9.03201 14.676C8.67201 15.132 8.23201 15.676 8.23201 15.676C7.51919 15.6952 6.81258 15.5388 6.17437 15.2208C5.53616 14.9027 4.9859 14.4327 4.57201 13.852C4.61037 11.4179 5.20124 9.02433 6.30001 6.852C7.26643 6.09298 8.44466 5.65272 9.67201 5.592L9.79201 5.736C8.63452 6.02081 7.55416 6.55757 6.62801 7.308C6.62801 7.308 6.89201 7.164 7.33601 6.96C8.19835 6.56489 9.11767 6.3084 10.06 6.2C10.1259 6.18632 10.1928 6.17829 10.26 6.176C11.0641 6.07122 11.8779 6.06317 12.684 6.152C13.9533 6.2975 15.1817 6.69023 16.3 7.308C15.4231 6.5942 14.4047 6.07475 13.312 5.784L13.48 5.592C14.7074 5.65272 15.8856 6.09298 16.852 6.852C17.9508 9.02433 18.5416 11.4179 18.58 13.852C18.1624 14.4314 17.6096 14.9001 16.9697 15.2173C16.3297 15.5344 15.622 15.6905 14.908 15.672Z"/>
    </svg><span class="sr-only">Discord</span>
        </a>
      </li></ul></div>

            </div>
          </div>
        </div>
      </div>
    </div>
  </newsletter-modal>
</div>
<!-- END sections: overlay-group --><div class="page-container" id="PageContainer">
      <main class="main-content relative" id="MainContent" role="main">
        <div id="shopify-section-template--26225644273949__video-with-text-overlay" class="shopify-section"><style>
  #shopify-section-template--26225644273949__video-with-text-overlay {
    --section-padding-top: 0px;
    --section-padding-bottom: 0px;--color-foreground: 255 255 255;
  --color-border: var(--color-foreground)/ 0.1;
  --color-border-dark: var(--color-foreground)/ 0.4;
  --color-border-light: var(--color-foreground)/ 0.06;--color-highlight: 224 165 128;--color-button-background: 255 255 255;
  --color-button-border: 255 255 255;--color-button-text: 23 23 23;--color-overlay: 0 0 0;--overlay-opacity: 0.5;}</style>

<div class="section section--padding">
  <div class="relative">
    <div class="video-hero banner media--600px mobile:media--500px relative"><video-media class="media deferred-media mobile:deferred-media block banner__media media media--height w-full h-full relative"
    style="--aspect-ratio: 1.775;" autoplay><img src="//www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=1920" alt="Load video: " srcset="//www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=300 300w, //www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=400 400w, //www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=500 500w, //www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=600 600w, //www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=700 700w, //www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=800 800w, //www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=900 900w, //www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=1000 1000w, //www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=1200 1200w, //www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=1400 1400w, //www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=1600 1600w, //www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000.jpg?v=1738474332&amp;width=1800 1800w" width="1920" height="1080" loading="eager" fetchpriority="high" sizes="100vw" is="lazy-image"><template><video playsinline="true" muted="muted" autoplay="autoplay" loop="loop" preload="metadata" poster="//www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000_800x.jpg?v=1738474332"><source src="//www.crowdcompass.io/cdn/shop/videos/c/vp/0ddbce3a7936400d854333fc7e21e6d2/0ddbce3a7936400d854333fc7e21e6d2.HD-1080p-2.5Mbps-41940667.mp4?v=0" type="video/mp4"><img src="//www.crowdcompass.io/cdn/shop/files/preview_images/0ddbce3a7936400d854333fc7e21e6d2.thumbnail.0000000000_800x.jpg?v=1738474332"></video></template><button type="button" id="DeferredPoster-52410183155997" class="deferred-poster absolute top-0 left-0 w-full h-full" aria-label="Play video">
        <span class="play-button absolute flex items-center justify-center rounded-full pointer-events-auto z-10"><svg class="icon icon-play icon-md" viewBox="0 0 36 36" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M34 17.5006C34 18.3302 33.5707 19.0963 32.8683 19.5206L9.535 33.6629C9.164 33.8869 8.74867 34 8.33333 34C7.93667 34 7.54 33.8986 7.183 33.6936C6.45267 33.274 6 32.4915 6 31.6429V3.35817C6 2.50962 6.45267 1.72708 7.183 1.30752C7.91333 0.885606 8.814 0.899749 9.535 1.33816L32.8683 15.4805C33.5707 15.9048 34 16.6709 34 17.5006"></path>
    </svg><svg class="icon icon-pause icon-md" viewBox="0 0 36 36" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-width="6" d="M9 4V32"></path>
      <path stroke-linecap="round" stroke-width="6" d="M27 4V32"></path>
    </svg></span>
      </button></video-media><video-media class="media deferred-media block banner__media media media--height w-full h-full relative"
    style="--aspect-ratio: 1.775;" autoplay><img src="//www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=1920" alt="Load video: " srcset="//www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=300 300w, //www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=400 400w, //www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=500 500w, //www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=600 600w, //www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=700 700w, //www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=800 800w, //www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=900 900w, //www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=1000 1000w, //www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=1200 1200w, //www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=1400 1400w, //www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=1600 1600w, //www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000.jpg?v=1738472867&amp;width=1800 1800w" width="1920" height="1080" loading="eager" fetchpriority="high" sizes="100vw" is="lazy-image"><template><video playsinline="true" muted="muted" autoplay="autoplay" loop="loop" preload="metadata" poster="//www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000_800x.jpg?v=1738472867"><source src="//www.crowdcompass.io/cdn/shop/videos/c/vp/b7ee6f24b2f849ad882e329ef1384fc9/b7ee6f24b2f849ad882e329ef1384fc9.HD-1080p-2.5Mbps-41940025.mp4?v=0" type="video/mp4"><img src="//www.crowdcompass.io/cdn/shop/files/preview_images/b7ee6f24b2f849ad882e329ef1384fc9.thumbnail.0000000000_800x.jpg?v=1738472867"></video></template><button type="button" id="DeferredPoster-52410155565341" class="deferred-poster absolute top-0 left-0 w-full h-full" aria-label="Play video">
        <span class="play-button absolute flex items-center justify-center rounded-full pointer-events-auto z-10"><svg class="icon icon-play icon-md" viewBox="0 0 36 36" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M34 17.5006C34 18.3302 33.5707 19.0963 32.8683 19.5206L9.535 33.6629C9.164 33.8869 8.74867 34 8.33333 34C7.93667 34 7.54 33.8986 7.183 33.6936C6.45267 33.274 6 32.4915 6 31.6429V3.35817C6 2.50962 6.45267 1.72708 7.183 1.30752C7.91333 0.885606 8.814 0.899749 9.535 1.33816L32.8683 15.4805C33.5707 15.9048 34 16.6709 34 17.5006"></path>
    </svg><svg class="icon icon-pause icon-md" viewBox="0 0 36 36" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-width="6" d="M9 4V32"></path>
      <path stroke-linecap="round" stroke-width="6" d="M27 4V32"></path>
    </svg></span>
      </button></video-media><span class="banner__overlay absolute top-0 left-0 w-full h-full pointer-events-none"></span>
        <div class="banner__content overflow-hidden absolute z-1 top-0 left-0 w-full h-full">
          <div class="page-width w-full h-full flex md:items-center md:justify-center items-center justify-center">
            <div class="banner__box banner__box--medium md:text-center text-center"><h2 class="banner__title heading leading-none title-sm" ><split-words class="split-words js-invisible block" data-animate="fade-up-large" data-animate-delay="250">Never Lose Your Crew Again</split-words></h2><div class="rte body subtext-md leading-normal text-opacity" ><p><strong>STAY CONNECTED WITHOUT INTERNET OR LTE</strong></p></div></div>
          </div>
        </div></div>
  </div>
</div>


<style> #shopify-section-template--26225644273949__video-with-text-overlay {background: black; padding-top: 10px;} #shopify-section-template--26225644273949__video-with-text-overlay .banner__box .leading-normal {color: #ffffff; margin-top: 10px; padding-left: 30px; padding-right: 30px; font-size: 1.4rem;} #shopify-section-template--26225644273949__video-with-text-overlay .banner__box h2 {font-size: 3rem;} #shopify-section-template--26225644273949__video-with-text-overlay .banner__box {padding: 0; padding-top: 40px;} #shopify-section-template--26225644273949__video-with-text-overlay .play-button {display: none;} #shopify-section-template--26225644273949__video-with-text-overlay .video-hero {background-color: black;} @media screen and (max-width: 767px) {#shopify-section-template--26225644273949__video-with-text-overlay .mobile\:media--500px {height: 450px; } #shopify-section-template--26225644273949__video-with-text-overlay .video-hero {padding-top: 50px; } #shopify-section-template--26225644273949__video-with-text-overlay .banner__box .leading-normal {font-size: 1rem; } #shopify-section-template--26225644273949__video-with-text-overlay .banner__box h2 {font-size: 1.75rem; }} </style></div><div id="shopify-section-template--26225644273949__rich_text_cTK3tD" class="shopify-section"><style>
  #shopify-section-template--26225644273949__rich_text_cTK3tD {
    --section-padding-top: 0px;
    --section-padding-bottom: 64px;--color-background: 0 0 0;--color-button-background: 106 229 172;
  --color-button-border: 106 229 172;--color-button-text: 23 23 23;}
</style>

<div class="section section--padding">
  <div class="page-width relative"><div class="rich-text md:text-center text-center relative z-1"><a class="button button--secondary button--lg" href="/products/crowd-compass" is="hover-link" >
    <span class="btn-fill" data-fill></span>
    <span class="btn-text">Shop Now</span>
  </a><a class="button button--secondary button--lg" href="/collections/accessories" is="hover-link" >
    <span class="btn-fill" data-fill></span>
    <span class="btn-text">Accessorize</span>
  </a></div></div>
</div>


</div><div id="shopify-section-template--26225644273949__custom_liquid_i3dy43" class="shopify-section"><style>
  #shopify-section-template--26225644273949__custom_liquid_i3dy43 {
    --section-padding-top: 16px;
    --section-padding-bottom: 16px;--color-background: 23 23 23;}
</style>

<div class="section section--padding">
  <div class="page-width relative">
    <div class="features-container">
  <div class="features-grid">
    <div class="feature-item">
      <div class="feature-icon">
        <img src="https://cdn.shopify.com/s/files/1/0810/2038/7613/files/no-wifi-white.png" alt="No Network Required">
      </div>
      <p>No Network Required</p>
    </div>

    <div class="feature-item">
      <div class="feature-icon">
        <img src="https://cdn.shopify.com/s/files/1/0810/2038/7613/files/cross-hair-white.png" alt="Long Range CrowdLink">
      </div>
      <p>Long Range CrowdLink™</p>
    </div>

    <div class="feature-item">
      <div class="feature-icon">
        <img src="https://cdn.shopify.com/s/files/1/0810/2038/7613/files/message-bubble-white.png" alt="No-Service Messaging">
      </div>
      <p>No-Service Messaging</p>
    </div>

    <div class="feature-item">
      <div class="feature-icon">
        <img src="https://cdn.shopify.com/s/files/1/0810/2038/7613/files/map-pin-outline-white.png" alt="Interactive Maps">
      </div>
      <p>Interactive Maps</p>
    </div>

    <div class="feature-item">
      <div class="feature-icon">
        <img src="https://cdn.shopify.com/s/files/1/0810/2038/7613/files/infinity-white.png" alt="Unlimited Pairing">
      </div>
      <p>Unlimited Pairing</p>
    </div>

    <div class="feature-item">
      <div class="feature-icon">
        <img src="https://cdn.shopify.com/s/files/1/0810/2038/7613/files/secure-lock-white.png" alt="Secure Connection">
      </div>
      <p>Secure Connection</p>
    </div>
  </div>
</div>

<style>
  /* 🎨 MAIN CONTROL AREA — tweak variables here */
  .features-container {
    /* 👇 ICON SIZE */
    --icon-size: clamp(45px, 5vw, 70px);

    /* 👇 TEXT SIZE (smaller than before) */
    --font-size: clamp(13px, 1.6vw, 22px);

    /* 👇 GAP between icon & text */
    --gap-y: clamp(2px, 0.8vw, 10px);

    /* 👇 GAP between features */
    --grid-gap: clamp(20px, 4vw, 60px);

    /* 👇 Container layout */
    margin: 0 auto;
    width: 100%;
    max-width: 1400px;
    padding: clamp(16px, 4vw, 60px) 0;
  }

  /* 🧩 GRID LAYOUT */
  .features-grid {
    display: grid !important;
    grid-template-columns: repeat(6, 1fr); /* One row, 6 columns on large screens */
    gap: var(--grid-gap);
    justify-content: center; /* Centers all items horizontally */
    align-items: start; /* Keeps icons/text aligned nicely */
    text-align: center;
  }

  /* 📱 Responsive: stack into 2x3 on smaller screens */
  @media (max-width: 1024px) {
    .features-grid {
      grid-template-columns: repeat(3, 1fr);
    }
  }

  /* 📦 FEATURE ITEM */
  .feature-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    row-gap: var(--gap-y);
  }

  /* 🔵 ICON STYLING */
  .feature-icon {
    display: grid;
    place-items: center;
    height: calc(var(--icon-size) + 8px);
  }

  .feature-item img {
    width: calc(var(--icon-size) - 10px);
    height: auto;
  }

  /* 📝 TEXT STYLING */
  .feature-item p {
    color: #fff;
    font-weight: 600;
    font-style: normal;
    font-size: var(--font-size);
    line-height: 1.25;
    margin: 0;
    max-width: clamp(120px, 18vw, 200px);
  }
</style>
  </div>
</div>


</div><div id="shopify-section-template--26225644273949__custom_liquid_LF6iRe" class="shopify-section"><style>
  #shopify-section-template--26225644273949__custom_liquid_LF6iRe {
    --section-padding-top: 44px;
    --section-padding-bottom: 20px;}
</style>

<div class="section section--padding section--divider">
  <div class="page-width relative">
    <div class="time-feature-card">
<div class="kicker">As featured in</div>
  <div class="accent" aria-hidden="true">
</div>
  <h2 class="brand-title">TIME</h2>
  <p class="headline">Best Inventions of 2025</p>
  <p class="meta">
    Connectivity &amp; Communication
  </p>
  <p class="meta time-link">
    — <a href="https://time.com/collections/best-inventions-2025/7318262/crowd-compass/" target="_blank" rel="noopener nofollow">Read the feature</a>
  </p>
</div>

<style>
  .time-feature-card{
    text-align:center;
    padding: 16px;
  }

  .time-feature-card .kicker{
    margin-bottom: 10px;
    font-size: .95rem;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:#6b7280;
  }

  .time-feature-card .accent{
    width:60px;
    height:3px;
    background:#d72626; /* red line */
    border-radius:2px;
    margin: auto;
    margin-bottom: 22px;
  }

  .time-feature-card .brand-title{
    margin-bottom: 10px;
    font:700 2.45rem/1.1 Georgia,"Times New Roman",Times,serif;
    letter-spacing:.02em;
    color:#111;
  }

  .time-feature-card .headline{
    margin-bottom: 16px;
    font-weight:800;
    font-size:1.5rem;
  }

  .time-feature-card .meta{
    font-size:.95rem;
    line-height:1.4;
    color:#6b7280;
  }

  .time-feature-card .time-link {
    margin-top: 4px;
    font-style: italic;
  }

  .time-feature-card .time-link a{
    text-decoration:underline;
    text-underline-offset:4px;
    text-decoration-color:rgba(0,0,0,.25);
  }

  /* Desktop */
  @media (min-width:767px){
    .time-feature-card .kicker{ font-size:1.1rem; margin-bottom:14px; }

  .time-feature-card .accent{ margin-bottom: 30px; }

    .time-feature-card .brand-title{ font-size:3rem; }

    .time-feature-card .headline{ font-size:2rem; line-height:1.25; }

    .time-feature-card .meta{ font-size:1.1rem;  }
  }
</style>
  </div>
</div>


</div><div id="shopify-section-template--26225644273949__custom_liquid_4YbBLP" class="shopify-section"><style>
  #shopify-section-template--26225644273949__custom_liquid_4YbBLP {
    --section-padding-top: 32px;
    --section-padding-bottom: 44px;}
</style>

<div class="section section--padding section--divider">
  <div class="page-width relative">
    <div class="sxsw-meta">
    <div class="sxsw-logo">
      <img src="https://cdn.shopify.com/s/files/1/0810/2038/7613/files/25_SXSW_IA-Finalist_web_1fd42d5e-6133-4030-9fd2-92f7e5b8fda2.png?v=1761095200&width=500" alt="SXSW Innovation Awards Finalist">
    </div>
  <h2 class="kicker">Top 5 Finalist</h2>
  <p class="brand-title">SXSW Innovation Awards</p>
  <p class="category-text">
    <a
      href="https://www.sxsw.com/interactive/2025/2025-sxsw-innovation-awards-finalists-announced/"
      target="_blank"
      rel="noopener nofollow"
    >
      Connection &amp; Communication <br>category
    </a>
  </p>
</div>

<style>
  .sxsw-meta {
    text-align: center;
  }
  .sxsw-meta .sxsw-logo img{
    width: 40%;
  display: block;
  margin: 0 auto;
  }


  .sxsw-meta .kicker {
    font-size: 0.95rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-weight: 600;
    margin-top: 15px;
    margin-bottom: 8px;
    color: #6b7280;
  }

  .sxsw-meta .brand-title {
    font-size: 1.55rem;
    font-family: 'Montserrat', sans-serif;
    font-weight: 800;
    letter-spacing: -0.02em;
    margin-bottom: 4px;
  }

  .sxsw-meta .category-text {
    font-size: 0.95rem;
    line-height: 1.4;
    color: #6b7280;
font-style: italic;
  }

  /* Desktop */
  @media (min-width:767px){
  .sxsw-meta .kicker {
    font-size: 1.2rem;
    letter-spacing: 0.1em;
    margin-bottom: 10px;
  }

  .sxsw-meta .brand-title {
    font-size: 2rem;
    letter-spacing: -0.02em;
    margin-bottom: 6px;
  }

  .sxsw-meta .category-text {
    font-size: 1.1rem;
  }
  .sxsw-meta .sxsw-logo img{
    width: 18%;
  }
}
</style>
  </div>
</div>


</div><div id="shopify-section-template--26225644273949__rich_text_p7JxQB" class="shopify-section"><style>
  #shopify-section-template--26225644273949__rich_text_p7JxQB {
    --section-padding-top: 60px;
    --section-padding-bottom: 64px;}
</style>

<div class="section section--padding">
  <div class="page-width page-width--narrow relative"><div class="rich-text md:text-center text-center relative z-1"><a class="button button--primary button--md icon-with-text" href="/products/crowd-compass" is="hover-link" >
    <span class="btn-fill" data-fill></span>
    <span class="btn-text">Shop Now<svg class="icon icon-arrow-right icon-sm transform" viewBox="0 0 21 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="M3 10H18M18 10L12.1667 4.16675M18 10L12.1667 15.8334"></path>
    </svg></span>
  </a></div></div>
</div>


</div><div id="shopify-section-template--26225644273949__multicolumn_with_icons_mPRH7L" class="shopify-section"><style>
  #shopify-section-template--26225644273949__multicolumn_with_icons_mPRH7L {
    --section-padding-top: 72px;
    --section-padding-bottom: 72px;--color-background: 13 13 13;--color-foreground: 255 255 255;
  --color-border: var(--color-foreground)/ 0.1;
  --color-border-dark: var(--color-foreground)/ 0.4;
  --color-border-light: var(--color-foreground)/ 0.06;--color-highlight: 254 144 230;}
</style>

<div class="section section--padding section--rounded relative">
  <div class="page-width relative"><div class="title-wrapper leading-none gap-4 lg:gap-8 flex flex-col text-center md:items-center md:justify-between relative z-1"><div class="grid gap-4"><h2 class="heading title-md">Product Features</h2></div></div><carousel-element class="text-with-icons with-background block lg:grid grid--3 relative z-1" watch-css><div class="column flex gap-5 w-full flex-col xl:flex-row xl:text-center text-center" ><div class="column__icon with-svg"><svg xmlns="http://www.w3.org/2000/svg" width="1080" zoomandpan="magnify" viewbox="0 0 810 809.999993" height="1080" preserveaspectratio="xMidYMid meet" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
    <defs>
        <clippath id="f6791f93b4">
            <path d="M 81.007812 81 L 728.992188 81 L 728.992188 728.996094 L 81.007812 728.996094 Z M 81.007812 81 " clip-rule="nonzero"></path>
        </clippath>
    </defs>
    <path d="M 275.976562 296.5 L 249.625 262.472656 L 249.582031 262.386719 C 247.023438 263.9375 244.507812 265.535156 242.03125 267.253906 C 241.320312 267.71875 240.5625 268.179688 239.851562 268.683594 C 228.101562 276.402344 216.898438 285.003906 206.324219 294.402344 C 205.445312 295.160156 204.519531 295.953125 203.640625 296.75 C 201.835938 298.304688 200.074219 299.941406 198.351562 301.703125 C 196.589844 303.296875 194.828125 305.019531 193.109375 306.738281 C 189.039062 310.765625 186.8125 316.179688 186.8125 321.882812 C 186.8125 327.632812 189.039062 333.003906 193.109375 337.074219 C 197.136719 341.105469 202.550781 343.324219 208.253906 343.324219 C 214.003906 343.324219 219.375 341.105469 223.445312 337.074219 C 239.261719 321.214844 256.882812 307.664062 276.0625 296.585938 L 275.976562 296.5 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 488.371094 329.851562 C 461.855469 318.652344 433.828125 312.945312 405 312.945312 C 396.566406 312.945312 388.257812 313.453125 379.992188 314.414062 L 380.078125 314.496094 L 412.089844 355.910156 C 415.910156 356.039062 419.726562 356.332031 423.542969 356.75 C 419.769531 356.371094 415.953125 356.078125 412.089844 355.910156 L 412.132812 355.996094 C 432.652344 356.835938 452.664062 361.324219 471.671875 369.378906 C 492.0625 377.980469 510.355469 390.316406 526.050781 405.96875 C 530.078125 410.039062 535.449219 412.261719 541.199219 412.261719 C 546.945312 412.261719 552.316406 410.039062 556.386719 405.96875 C 560.414062 401.941406 562.640625 396.527344 562.640625 390.824219 C 562.640625 385.074219 560.414062 379.703125 556.386719 375.632812 C 536.789062 356.039062 513.882812 340.636719 488.371094 329.851562 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 333.792969 371.226562 L 307.109375 336.738281 L 307.070312 336.652344 C 287.347656 346.765625 269.386719 359.855469 253.613281 375.632812 C 249.585938 379.703125 247.359375 385.074219 247.359375 390.820312 C 247.359375 396.527344 249.585938 401.941406 253.613281 405.96875 C 257.683594 410.039062 263.050781 412.265625 268.804688 412.265625 C 274.550781 412.265625 279.921875 410.039062 283.949219 405.96875 C 298.511719 391.449219 315.292969 379.785156 333.882812 371.351562 L 333.792969 371.226562 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 386.453125 439.285156 L 386.367188 439.203125 L 358.507812 403.203125 L 358.464844 403.117188 C 357.289062 403.535156 356.117188 404 354.945312 404.503906 C 339.667969 410.960938 325.90625 420.234375 314.160156 431.984375 C 310.128906 436.054688 307.863281 441.425781 307.863281 447.128906 C 307.863281 452.878906 310.128906 458.25 314.160156 462.320312 C 318.230469 466.390625 323.597656 468.613281 329.347656 468.613281 C 335.054688 468.613281 340.46875 466.390625 344.496094 462.320312 C 352.339844 454.472656 361.488281 448.308594 371.683594 444.027344 C 376.507812 441.972656 381.417969 440.417969 386.453125 439.285156 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 455.058594 404.5 C 452.539062 403.449219 450.023438 402.484375 447.460938 401.605469 L 447.546875 401.730469 L 494.917969 462.992188 L 495.003906 463.074219 C 495.292969 462.863281 495.589844 462.570312 495.839844 462.320312 C 499.867188 458.25 502.132812 452.878906 502.132812 447.128906 C 502.132812 441.421875 499.867188 436.050781 495.839844 431.984375 C 484.09375 420.234375 470.328125 410.960938 455.058594 404.5 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 374.78125 505.191406 C 367.039062 512.929688 362.246094 523.617188 362.246094 535.402344 C 362.246094 558.980469 381.425781 578.15625 405 578.15625 C 428.574219 578.15625 447.753906 558.980469 447.753906 535.402344 C 447.753906 523.617188 442.960938 512.929688 435.21875 505.1875 C 442.960938 512.929688 447.753906 523.617188 447.753906 535.410156 C 447.753906 558.992188 428.582031 578.167969 405 578.167969 C 381.417969 578.167969 362.246094 558.992188 362.246094 535.410156 C 362.246094 523.621094 367.039062 512.929688 374.78125 505.191406 Z M 362.160156 535.410156 C 362.160156 559.03125 381.378906 578.25 405 578.25 C 428.625 578.25 447.839844 559.03125 447.839844 535.410156 C 447.839844 511.789062 428.625 492.574219 405 492.574219 C 381.378906 492.574219 362.160156 511.789062 362.160156 535.410156 " fill-opacity="1" fill-rule="nonzero"></path>
    <g clip-path="url(#f6791f93b4)">
        <path d="M 672.234375 439.117188 C 664.515625 499.578125 637.449219 554.167969 593.898438 596.964844 L 590.5 600.238281 L 487.699219 467.398438 L 487.617188 467.269531 L 433.867188 397.789062 L 433.742188 397.660156 L 401.433594 355.871094 L 401.347656 355.785156 L 370.46875 315.839844 L 370.382812 315.757812 L 335.976562 271.285156 L 335.9375 271.195312 L 308.035156 235.15625 C 309.460938 234.695312 310.886719 234.1875 312.3125 233.769531 C 313.699219 233.265625 315.125 232.847656 316.507812 232.382812 L 316.550781 232.382812 L 344.789062 268.890625 L 344.871094 268.972656 C 364.46875 264.230469 384.566406 261.84375 405 261.84375 C 439.574219 261.84375 473.226562 268.679688 505.027344 282.105469 C 535.613281 295.074219 563.058594 313.535156 586.554688 337.074219 C 590.625 341.101562 595.992188 343.324219 601.746094 343.324219 C 607.449219 343.324219 612.863281 341.101562 616.890625 337.074219 C 620.957031 333.003906 623.183594 327.632812 623.183594 321.882812 C 623.183594 316.179688 620.957031 310.765625 616.890625 306.738281 C 589.449219 279.296875 557.4375 257.726562 521.726562 242.625 C 484.59375 226.890625 445.320312 218.960938 405 218.960938 C 374.746094 218.960938 345.125 223.40625 316.507812 232.300781 L 316.464844 232.300781 C 315.042969 232.722656 313.613281 233.183594 312.230469 233.6875 C 310.804688 234.105469 309.375 234.566406 307.992188 235.117188 L 262.59375 176.414062 L 266.660156 173.980469 C 318.984375 142.550781 378.605469 130.007812 439.109375 137.769531 C 474.734375 142.300781 508.425781 153.671875 538.722656 171.042969 C 569.015625 188.414062 595.910156 211.742188 617.980469 240.230469 C 662.082031 297.210938 681.335938 367.828125 672.234375 439.117188 Z M 543.339844 636.027344 C 501.042969 661.414062 454.007812 674.460938 405.585938 674.460938 C 394.089844 674.460938 382.511719 673.75 370.886719 672.238281 C 235.066406 654.910156 135.582031 538.726562 135.582031 405.257812 C 135.582031 393.886719 136.296875 382.429688 137.765625 370.890625 C 145.484375 310.429688 172.546875 255.84375 216.101562 213.042969 L 219.5 209.773438 L 256.886719 258.109375 L 256.96875 258.191406 L 283.402344 292.347656 L 283.488281 292.46875 L 314.789062 332.917969 L 314.832031 333.003906 L 341.769531 367.828125 L 341.851562 367.914062 L 366.816406 400.179688 L 366.859375 400.265625 L 395.8125 437.648438 L 395.894531 437.773438 L 547.40625 633.59375 Z M 445.992188 83.644531 C 432.144531 81.882812 418.257812 81 404.496094 81 C 333.210938 81 264.269531 104.453125 206.871094 148.886719 C 138.351562 201.882812 94.589844 278.289062 83.636719 364.011719 C 61.023438 541.203125 186.773438 703.75 364.007812 726.363281 C 541.195312 748.980469 703.742188 623.230469 726.359375 446 C 748.976562 268.808594 623.226562 106.261719 445.992188 83.644531 " fill-opacity="1" fill-rule="nonzero"></path>
    </g>
</svg></div><div class="column__content"><p class="column__title heading font-medium leading-tight tracking-none"><strong>No Wi-Fi or Cell Service Required</strong></p><div class="column__text rte"><p><em>Don’t get stuck without cell service. </em></p><p>Powered by a 915MHz radio and mesh network technology, Crowd Compass keeps you connected whether you’re outside coverage areas or dealing with congested networks.</p></div></div>
        </div><div class="column flex gap-5 w-full flex-col xl:flex-row xl:text-center text-center" ><div class="column__icon with-svg"><svg xmlns="http://www.w3.org/2000/svg" width="1080" zoomandpan="magnify" viewbox="0 0 810 809.999993" height="1080" preserveaspectratio="xMidYMid meet" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
    <defs>
        <clippath id="e12d249888">
            <path d="M 56 99.695312 L 753 99.695312 L 753 710.195312 L 56 710.195312 Z M 56 99.695312 " clip-rule="nonzero"></path>
        </clippath>
    </defs>
    <g clip-path="url(#e12d249888)">
        <path d="M 140.480469 710.1875 C 127.269531 710.1875 114.4375 708.0625 102.351562 703.878906 L 74.804688 694.347656 L 95.972656 674.308594 C 123.984375 647.78125 131.054688 617.1875 131.515625 594.269531 C 83.089844 540.601562 56.507812 473.640625 56.507812 404.945312 C 56.507812 236.632812 212.636719 99.695312 404.539062 99.695312 C 596.441406 99.695312 752.578125 236.632812 752.578125 404.945312 C 752.578125 573.25 596.441406 710.175781 404.539062 710.175781 C 347.398438 710.175781 291.042969 697.800781 240.808594 674.28125 C 221.875 687.675781 183.625 710.1875 140.480469 710.1875 Z M 236.667969 632.722656 L 246.828125 637.863281 C 294.582031 662.007812 349.121094 674.785156 404.539062 674.785156 C 576.929688 674.785156 717.1875 553.730469 717.1875 404.945312 C 717.1875 256.140625 576.929688 135.085938 404.539062 135.085938 C 232.148438 135.085938 91.902344 256.140625 91.902344 404.945312 C 91.902344 466.792969 116.800781 527.238281 162.023438 575.160156 L 166.625 580.042969 L 166.839844 586.742188 C 167.617188 610.796875 163.296875 643.421875 141.902344 674.785156 C 182.871094 674.132812 220.566406 645.605469 227.765625 639.835938 Z M 236.667969 632.722656 " fill-opacity="1" fill-rule="nonzero"></path>
    </g>
    <path d="M 593.558594 404.945312 C 593.558594 406.164062 593.496094 407.378906 593.378906 408.59375 C 593.257812 409.804688 593.078125 411.007812 592.839844 412.203125 C 592.605469 413.398438 592.308594 414.582031 591.953125 415.746094 C 591.601562 416.914062 591.191406 418.058594 590.722656 419.1875 C 590.257812 420.3125 589.738281 421.414062 589.164062 422.488281 C 588.585938 423.5625 587.960938 424.605469 587.285156 425.621094 C 586.609375 426.632812 585.882812 427.609375 585.109375 428.554688 C 584.335938 429.496094 583.519531 430.398438 582.65625 431.257812 C 581.792969 432.121094 580.894531 432.9375 579.949219 433.710938 C 579.007812 434.484375 578.03125 435.210938 577.015625 435.886719 C 576.003906 436.5625 574.960938 437.191406 573.882812 437.765625 C 572.808594 438.339844 571.707031 438.859375 570.582031 439.324219 C 569.457031 439.792969 568.308594 440.203125 567.144531 440.554688 C 565.976562 440.910156 564.796875 441.207031 563.601562 441.445312 C 562.40625 441.679688 561.203125 441.859375 559.988281 441.980469 C 558.777344 442.097656 557.558594 442.160156 556.339844 442.160156 C 555.121094 442.160156 553.90625 442.097656 552.691406 441.980469 C 551.480469 441.859375 550.277344 441.679688 549.082031 441.445312 C 547.886719 441.207031 546.703125 440.910156 545.539062 440.554688 C 544.371094 440.203125 543.226562 439.792969 542.097656 439.324219 C 540.972656 438.859375 539.871094 438.339844 538.796875 437.765625 C 537.722656 437.191406 536.679688 436.5625 535.664062 435.886719 C 534.652344 435.210938 533.671875 434.484375 532.730469 433.710938 C 531.789062 432.9375 530.886719 432.121094 530.023438 431.257812 C 529.164062 430.398438 528.34375 429.496094 527.574219 428.554688 C 526.800781 427.609375 526.074219 426.632812 525.398438 425.621094 C 524.71875 424.605469 524.09375 423.5625 523.519531 422.488281 C 522.945312 421.414062 522.425781 420.3125 521.957031 419.1875 C 521.492188 418.058594 521.082031 416.914062 520.726562 415.746094 C 520.375 414.582031 520.078125 413.398438 519.839844 412.203125 C 519.601562 411.007812 519.421875 409.804688 519.304688 408.59375 C 519.183594 407.378906 519.125 406.164062 519.125 404.945312 C 519.125 403.726562 519.183594 402.511719 519.304688 401.296875 C 519.421875 400.085938 519.601562 398.878906 519.839844 397.683594 C 520.078125 396.488281 520.375 395.308594 520.726562 394.140625 C 521.082031 392.976562 521.492188 391.828125 521.957031 390.703125 C 522.425781 389.578125 522.945312 388.476562 523.519531 387.402344 C 524.09375 386.328125 524.71875 385.285156 525.398438 384.269531 C 526.074219 383.257812 526.800781 382.277344 527.574219 381.335938 C 528.347656 380.394531 529.164062 379.492188 530.023438 378.628906 C 530.886719 377.769531 531.789062 376.953125 532.730469 376.179688 C 533.671875 375.40625 534.652344 374.679688 535.664062 374.003906 C 536.679688 373.324219 537.722656 372.699219 538.796875 372.125 C 539.871094 371.550781 540.972656 371.03125 542.097656 370.5625 C 543.226562 370.097656 544.371094 369.6875 545.539062 369.332031 C 546.703125 368.980469 547.886719 368.683594 549.082031 368.445312 C 550.277344 368.207031 551.480469 368.03125 552.691406 367.910156 C 553.90625 367.789062 555.121094 367.730469 556.339844 367.730469 C 557.558594 367.730469 558.777344 367.789062 559.988281 367.910156 C 561.203125 368.03125 562.40625 368.207031 563.601562 368.445312 C 564.796875 368.683594 565.976562 368.980469 567.144531 369.332031 C 568.308594 369.6875 569.457031 370.097656 570.582031 370.5625 C 571.707031 371.03125 572.808594 371.550781 573.882812 372.125 C 574.960938 372.699219 576.003906 373.324219 577.015625 374.003906 C 578.03125 374.679688 579.007812 375.40625 579.949219 376.179688 C 580.894531 376.953125 581.792969 377.769531 582.65625 378.628906 C 583.519531 379.492188 584.335938 380.394531 585.109375 381.335938 C 585.882812 382.277344 586.609375 383.257812 587.285156 384.269531 C 587.960938 385.285156 588.585938 386.328125 589.164062 387.402344 C 589.738281 388.476562 590.257812 389.578125 590.722656 390.703125 C 591.191406 391.828125 591.601562 392.976562 591.953125 394.140625 C 592.308594 395.308594 592.605469 396.488281 592.839844 397.683594 C 593.078125 398.878906 593.257812 400.085938 593.378906 401.296875 C 593.496094 402.511719 593.558594 403.726562 593.558594 404.945312 Z M 593.558594 404.945312 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 441.773438 404.945312 C 441.773438 406.164062 441.714844 407.378906 441.59375 408.59375 C 441.472656 409.804688 441.296875 411.007812 441.058594 412.203125 C 440.820312 413.398438 440.523438 414.582031 440.171875 415.746094 C 439.816406 416.914062 439.40625 418.058594 438.941406 419.1875 C 438.472656 420.3125 437.953125 421.414062 437.378906 422.488281 C 436.804688 423.5625 436.179688 424.605469 435.5 425.621094 C 434.824219 426.632812 434.097656 427.609375 433.324219 428.554688 C 432.550781 429.496094 431.734375 430.398438 430.871094 431.257812 C 430.011719 432.121094 429.109375 432.9375 428.167969 433.710938 C 427.222656 434.484375 426.246094 435.210938 425.234375 435.886719 C 424.21875 436.5625 423.175781 437.191406 422.101562 437.765625 C 421.023438 438.339844 419.925781 438.859375 418.796875 439.324219 C 417.671875 439.792969 416.527344 440.203125 415.359375 440.554688 C 414.195312 440.910156 413.011719 441.207031 411.816406 441.445312 C 410.621094 441.679688 409.417969 441.859375 408.203125 441.980469 C 406.992188 442.097656 405.777344 442.160156 404.558594 442.160156 C 403.339844 442.160156 402.121094 442.097656 400.910156 441.980469 C 399.695312 441.859375 398.492188 441.679688 397.296875 441.445312 C 396.101562 441.207031 394.921875 440.910156 393.753906 440.554688 C 392.585938 440.203125 391.441406 439.792969 390.316406 439.324219 C 389.1875 438.859375 388.089844 438.339844 387.011719 437.765625 C 385.9375 437.191406 384.894531 436.5625 383.878906 435.886719 C 382.867188 435.210938 381.890625 434.484375 380.945312 433.710938 C 380.003906 432.9375 379.101562 432.121094 378.242188 431.257812 C 377.378906 430.398438 376.5625 429.496094 375.789062 428.554688 C 375.015625 427.609375 374.289062 426.632812 373.613281 425.621094 C 372.933594 424.605469 372.308594 423.5625 371.734375 422.488281 C 371.160156 421.414062 370.640625 420.3125 370.171875 419.1875 C 369.707031 418.058594 369.296875 416.914062 368.941406 415.746094 C 368.589844 414.582031 368.292969 413.398438 368.054688 412.203125 C 367.816406 411.007812 367.640625 409.804688 367.519531 408.59375 C 367.402344 407.378906 367.339844 406.164062 367.339844 404.945312 C 367.339844 403.726562 367.402344 402.511719 367.519531 401.296875 C 367.640625 400.085938 367.816406 398.878906 368.054688 397.683594 C 368.292969 396.488281 368.589844 395.308594 368.941406 394.140625 C 369.296875 392.976562 369.707031 391.828125 370.171875 390.703125 C 370.640625 389.578125 371.160156 388.476562 371.734375 387.402344 C 372.308594 386.328125 372.933594 385.285156 373.613281 384.269531 C 374.289062 383.257812 375.015625 382.277344 375.789062 381.335938 C 376.5625 380.394531 377.378906 379.492188 378.242188 378.628906 C 379.101562 377.769531 380.003906 376.953125 380.945312 376.179688 C 381.890625 375.40625 382.867188 374.679688 383.878906 374.003906 C 384.894531 373.324219 385.9375 372.699219 387.011719 372.125 C 388.089844 371.550781 389.1875 371.03125 390.316406 370.5625 C 391.441406 370.097656 392.585938 369.6875 393.753906 369.332031 C 394.921875 368.980469 396.101562 368.683594 397.296875 368.445312 C 398.492188 368.207031 399.695312 368.03125 400.910156 367.910156 C 402.121094 367.789062 403.339844 367.730469 404.558594 367.730469 C 405.777344 367.730469 406.992188 367.789062 408.203125 367.910156 C 409.417969 368.03125 410.621094 368.207031 411.816406 368.445312 C 413.011719 368.683594 414.195312 368.980469 415.359375 369.332031 C 416.527344 369.6875 417.671875 370.097656 418.796875 370.5625 C 419.925781 371.03125 421.023438 371.550781 422.101562 372.125 C 423.175781 372.699219 424.21875 373.324219 425.234375 374.003906 C 426.246094 374.679688 427.222656 375.40625 428.167969 376.179688 C 429.109375 376.953125 430.011719 377.769531 430.871094 378.628906 C 431.734375 379.492188 432.550781 380.394531 433.324219 381.335938 C 434.097656 382.277344 434.824219 383.257812 435.5 384.269531 C 436.179688 385.285156 436.804688 386.328125 437.378906 387.402344 C 437.953125 388.476562 438.472656 389.578125 438.941406 390.703125 C 439.40625 391.828125 439.816406 392.976562 440.171875 394.140625 C 440.523438 395.308594 440.820312 396.488281 441.058594 397.683594 C 441.296875 398.878906 441.472656 400.085938 441.59375 401.296875 C 441.714844 402.511719 441.773438 403.726562 441.773438 404.945312 Z M 441.773438 404.945312 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 289.953125 404.945312 C 289.953125 406.164062 289.894531 407.378906 289.773438 408.59375 C 289.65625 409.804688 289.476562 411.007812 289.238281 412.203125 C 289 413.398438 288.703125 414.582031 288.351562 415.746094 C 287.996094 416.914062 287.585938 418.058594 287.121094 419.1875 C 286.652344 420.3125 286.132812 421.414062 285.558594 422.488281 C 284.984375 423.5625 284.359375 424.605469 283.679688 425.621094 C 283.003906 426.632812 282.277344 427.609375 281.503906 428.554688 C 280.734375 429.496094 279.914062 430.398438 279.054688 431.257812 C 278.191406 432.121094 277.289062 432.9375 276.347656 433.710938 C 275.40625 434.484375 274.425781 435.210938 273.414062 435.886719 C 272.398438 436.5625 271.355469 437.191406 270.28125 437.765625 C 269.207031 438.339844 268.105469 438.859375 266.980469 439.324219 C 265.851562 439.792969 264.707031 440.203125 263.539062 440.554688 C 262.375 440.910156 261.191406 441.207031 259.996094 441.445312 C 258.800781 441.679688 257.597656 441.859375 256.386719 441.980469 C 255.171875 442.097656 253.957031 442.160156 252.738281 442.160156 C 251.519531 442.160156 250.300781 442.097656 249.089844 441.980469 C 247.875 441.859375 246.671875 441.679688 245.476562 441.445312 C 244.28125 441.207031 243.101562 440.910156 241.933594 440.554688 C 240.769531 440.203125 239.621094 439.792969 238.496094 439.324219 C 237.371094 438.859375 236.269531 438.339844 235.195312 437.765625 C 234.117188 437.191406 233.074219 436.5625 232.0625 435.886719 C 231.046875 435.210938 230.070312 434.484375 229.128906 433.710938 C 228.1875 432.9375 227.285156 432.121094 226.421875 431.257812 C 225.558594 430.398438 224.742188 429.496094 223.96875 428.554688 C 223.195312 427.609375 222.46875 426.632812 221.792969 425.621094 C 221.117188 424.605469 220.492188 423.5625 219.914062 422.488281 C 219.339844 421.414062 218.820312 420.3125 218.355469 419.1875 C 217.886719 418.058594 217.476562 416.914062 217.125 415.746094 C 216.769531 414.582031 216.472656 413.398438 216.238281 412.203125 C 216 411.007812 215.820312 409.804688 215.699219 408.59375 C 215.582031 407.378906 215.519531 406.164062 215.519531 404.945312 C 215.519531 403.726562 215.582031 402.511719 215.699219 401.296875 C 215.820312 400.085938 216 398.878906 216.238281 397.683594 C 216.472656 396.488281 216.769531 395.308594 217.125 394.140625 C 217.476562 392.976562 217.886719 391.828125 218.355469 390.703125 C 218.820312 389.578125 219.339844 388.476562 219.914062 387.402344 C 220.492188 386.328125 221.117188 385.285156 221.792969 384.269531 C 222.46875 383.257812 223.195312 382.277344 223.96875 381.335938 C 224.742188 380.394531 225.558594 379.492188 226.421875 378.628906 C 227.285156 377.769531 228.1875 376.953125 229.128906 376.179688 C 230.070312 375.40625 231.046875 374.679688 232.0625 374.003906 C 233.074219 373.324219 234.117188 372.699219 235.195312 372.125 C 236.269531 371.550781 237.371094 371.03125 238.496094 370.5625 C 239.621094 370.097656 240.769531 369.6875 241.933594 369.332031 C 243.101562 368.980469 244.28125 368.683594 245.476562 368.445312 C 246.671875 368.207031 247.875 368.03125 249.089844 367.910156 C 250.300781 367.789062 251.519531 367.730469 252.738281 367.730469 C 253.957031 367.730469 255.171875 367.789062 256.386719 367.910156 C 257.597656 368.03125 258.800781 368.207031 259.996094 368.445312 C 261.191406 368.683594 262.375 368.980469 263.539062 369.332031 C 264.707031 369.6875 265.851562 370.097656 266.980469 370.5625 C 268.105469 371.03125 269.207031 371.550781 270.28125 372.125 C 271.355469 372.699219 272.398438 373.324219 273.414062 374.003906 C 274.425781 374.679688 275.40625 375.40625 276.347656 376.179688 C 277.289062 376.953125 278.191406 377.769531 279.054688 378.628906 C 279.914062 379.492188 280.734375 380.394531 281.503906 381.335938 C 282.277344 382.277344 283.003906 383.257812 283.679688 384.269531 C 284.359375 385.285156 284.984375 386.328125 285.558594 387.402344 C 286.132812 388.476562 286.652344 389.578125 287.121094 390.703125 C 287.585938 391.828125 287.996094 392.976562 288.351562 394.140625 C 288.703125 395.308594 289 396.488281 289.238281 397.683594 C 289.476562 398.878906 289.65625 400.085938 289.773438 401.296875 C 289.894531 402.511719 289.953125 403.726562 289.953125 404.945312 Z M 289.953125 404.945312 " fill-opacity="1" fill-rule="nonzero"></path>
</svg></div><div class="column__content"><p class="column__title heading font-medium leading-tight tracking-none"><strong>No-Service Messaging</strong></p><div class="column__text rte"><p><em>With or without your phone. </em><br/><br/>Send and receive customizable messages with your Crowd Compass, or take advantage our mobile app to send texts through the radio mesh network. </p></div></div>
        </div><div class="column flex gap-5 w-full flex-col xl:flex-row xl:text-center text-center" ><div class="column__icon with-svg"><svg xmlns="http://www.w3.org/2000/svg" width="1080" zoomandpan="magnify" viewbox="0 0 810 809.999993" height="1080" preserveaspectratio="xMidYMid meet" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
    <path d="M 722.574219 398.515625 L 671.050781 398.515625 C 670.234375 364.945312 663.222656 332.347656 650.214844 301.582031 C 636.777344 269.84375 617.578125 241.375 593.160156 216.917969 C 568.703125 192.460938 540.234375 173.261719 508.535156 159.863281 C 477.769531 146.855469 445.171875 139.84375 411.601562 139.027344 L 411.601562 87.503906 C 411.601562 83.921875 408.679688 81 405.097656 81 C 401.515625 81 398.59375 83.921875 398.59375 87.503906 L 398.59375 139.027344 C 364.90625 139.804688 332.191406 146.816406 301.269531 159.863281 C 269.53125 173.300781 241.0625 192.5 216.605469 216.917969 C 192.148438 241.375 172.949219 269.84375 159.550781 301.582031 C 146.542969 332.347656 139.535156 364.945312 138.714844 398.515625 L 87.542969 398.515625 C 83.960938 398.515625 81.039062 401.4375 81.039062 405.019531 C 81.039062 408.601562 83.960938 411.523438 87.542969 411.523438 L 138.675781 411.523438 C 139.457031 445.210938 146.464844 477.925781 159.511719 508.847656 C 172.910156 540.546875 192.109375 569.015625 216.566406 593.472656 C 241.023438 617.929688 269.492188 637.128906 301.191406 650.527344 C 332.074219 663.613281 364.789062 670.582031 398.515625 671.363281 L 398.515625 722.496094 C 398.515625 726.078125 401.4375 729 405.019531 729 C 408.601562 729 411.523438 726.078125 411.523438 722.496094 L 411.523438 671.402344 C 445.09375 670.582031 477.691406 663.574219 508.457031 650.566406 C 540.15625 637.167969 568.625 617.96875 593.082031 593.511719 C 617.539062 569.054688 636.738281 540.585938 650.136719 508.886719 C 663.222656 478 670.195312 445.289062 670.972656 411.5625 L 722.457031 411.5625 C 726.039062 411.5625 728.960938 408.640625 728.960938 405.058594 C 728.960938 401.476562 726.15625 398.515625 722.574219 398.515625 Z M 658.003906 398.515625 L 545.375 398.515625 C 544.597656 381.886719 540.9375 365.761719 534.472656 350.457031 C 527.382812 333.710938 517.257812 318.679688 504.328125 305.75 C 491.398438 292.820312 476.367188 282.695312 459.621094 275.605469 C 444.316406 269.140625 428.191406 265.480469 411.5625 264.703125 L 411.5625 152.074219 C 545.882812 155.578125 654.5 264.195312 658.003906 398.515625 Z M 476.601562 411.523438 L 532.328125 411.523438 C 529.136719 476.753906 476.753906 529.253906 411.5625 532.640625 L 411.5625 476.5625 C 411.5625 472.976562 408.640625 470.058594 405.058594 470.058594 C 401.476562 470.058594 398.554688 472.976562 398.554688 476.5625 L 398.554688 532.679688 C 333.207031 529.488281 280.628906 476.871094 277.398438 411.523438 L 333.515625 411.523438 C 337.101562 411.523438 340.019531 408.601562 340.019531 405.019531 C 340.019531 401.4375 337.101562 398.515625 333.515625 398.515625 L 277.4375 398.515625 C 280.824219 333.359375 333.324219 280.941406 398.554688 277.75 L 398.554688 333.476562 C 398.554688 337.0625 401.476562 339.980469 405.058594 339.980469 C 408.640625 339.980469 411.5625 337.0625 411.5625 333.476562 L 411.5625 277.75 C 476.601562 281.136719 528.941406 333.4375 532.328125 398.515625 L 476.601562 398.515625 C 473.015625 398.515625 470.097656 401.4375 470.097656 405.019531 C 470.097656 408.601562 473.015625 411.523438 476.601562 411.523438 Z M 398.554688 152.074219 L 398.554688 264.664062 C 381.808594 265.402344 365.53125 269.0625 350.144531 275.566406 C 333.398438 282.65625 318.367188 292.78125 305.4375 305.710938 C 292.507812 318.640625 282.382812 333.671875 275.292969 350.417969 C 268.828125 365.722656 265.167969 381.847656 264.390625 398.476562 L 151.761719 398.476562 C 155.265625 264.078125 264.039062 155.382812 398.554688 152.074219 Z M 151.722656 411.523438 L 264.3125 411.523438 C 265.050781 428.269531 268.714844 444.546875 275.21875 459.929688 C 282.304688 476.675781 292.429688 491.710938 305.359375 504.640625 C 318.289062 517.570312 333.324219 527.695312 350.070312 534.78125 C 365.492188 541.285156 381.730469 544.949219 398.476562 545.6875 L 398.476562 658.277344 C 263.921875 655.003906 155.074219 546.15625 151.722656 411.523438 Z M 411.5625 658.316406 L 411.5625 545.6875 C 428.191406 544.910156 444.316406 541.246094 459.621094 534.78125 C 476.367188 527.695312 491.398438 517.570312 504.328125 504.640625 C 517.257812 491.710938 527.382812 476.675781 534.472656 459.929688 C 540.976562 444.507812 544.636719 428.269531 545.375 411.523438 L 657.964844 411.523438 C 654.695312 546.039062 546 654.808594 411.5625 658.316406 Z M 411.5625 658.316406 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 435.046875 405.214844 C 435.046875 406.203125 434.996094 407.1875 434.902344 408.171875 C 434.804688 409.15625 434.660156 410.132812 434.464844 411.101562 C 434.273438 412.070312 434.03125 413.03125 433.746094 413.976562 C 433.460938 414.921875 433.125 415.851562 432.75 416.765625 C 432.371094 417.675781 431.949219 418.570312 431.480469 419.441406 C 431.015625 420.3125 430.507812 421.160156 429.960938 421.980469 C 429.410156 422.804688 428.820312 423.597656 428.195312 424.363281 C 427.566406 425.125 426.90625 425.855469 426.207031 426.554688 C 425.507812 427.253906 424.773438 427.917969 424.011719 428.546875 C 423.246094 429.171875 422.453125 429.761719 421.632812 430.308594 C 420.808594 430.859375 419.964844 431.367188 419.089844 431.832031 C 418.21875 432.296875 417.328125 432.71875 416.414062 433.097656 C 415.5 433.476562 414.570312 433.808594 413.625 434.097656 C 412.679688 434.382812 411.722656 434.625 410.75 434.816406 C 409.78125 435.007812 408.804688 435.152344 407.820312 435.25 C 406.839844 435.347656 405.851562 435.394531 404.863281 435.394531 C 403.875 435.394531 402.890625 435.347656 401.90625 435.25 C 400.921875 435.152344 399.945312 435.007812 398.976562 434.816406 C 398.007812 434.625 397.046875 434.382812 396.101562 434.097656 C 395.15625 433.808594 394.226562 433.476562 393.3125 433.097656 C 392.398438 432.71875 391.507812 432.296875 390.636719 431.832031 C 389.765625 431.367188 388.917969 430.859375 388.09375 430.308594 C 387.273438 429.761719 386.480469 429.171875 385.714844 428.546875 C 384.953125 427.917969 384.21875 427.253906 383.523438 426.554688 C 382.824219 425.855469 382.160156 425.125 381.53125 424.363281 C 380.90625 423.597656 380.316406 422.804688 379.769531 421.980469 C 379.21875 421.160156 378.710938 420.3125 378.246094 419.441406 C 377.78125 418.570312 377.355469 417.675781 376.980469 416.765625 C 376.601562 415.851562 376.269531 414.921875 375.980469 413.976562 C 375.695312 413.03125 375.453125 412.070312 375.261719 411.101562 C 375.070312 410.132812 374.921875 409.15625 374.828125 408.171875 C 374.730469 407.1875 374.679688 406.203125 374.679688 405.214844 C 374.679688 404.226562 374.730469 403.238281 374.828125 402.253906 C 374.921875 401.273438 375.070312 400.296875 375.261719 399.324219 C 375.453125 398.355469 375.695312 397.398438 375.980469 396.453125 C 376.269531 395.507812 376.601562 394.578125 376.980469 393.664062 C 377.355469 392.75 377.78125 391.859375 378.246094 390.988281 C 378.710938 390.113281 379.21875 389.269531 379.769531 388.445312 C 380.316406 387.625 380.90625 386.832031 381.53125 386.066406 C 382.160156 385.300781 382.824219 384.570312 383.523438 383.871094 C 384.21875 383.171875 384.953125 382.511719 385.714844 381.882812 C 386.480469 381.257812 387.273438 380.667969 388.09375 380.117188 C 388.917969 379.570312 389.765625 379.0625 390.636719 378.597656 C 391.507812 378.128906 392.398438 377.707031 393.3125 377.328125 C 394.226562 376.953125 395.15625 376.617188 396.101562 376.332031 C 397.046875 376.042969 398.007812 375.804688 398.976562 375.613281 C 399.945312 375.417969 400.921875 375.273438 401.90625 375.175781 C 402.890625 375.082031 403.875 375.03125 404.863281 375.03125 C 405.851562 375.03125 406.839844 375.082031 407.820312 375.175781 C 408.804688 375.273438 409.78125 375.417969 410.75 375.613281 C 411.722656 375.804688 412.679688 376.042969 413.625 376.332031 C 414.570312 376.617188 415.5 376.953125 416.414062 377.328125 C 417.328125 377.707031 418.21875 378.128906 419.089844 378.597656 C 419.964844 379.0625 420.808594 379.570312 421.632812 380.117188 C 422.453125 380.667969 423.246094 381.257812 424.011719 381.882812 C 424.773438 382.511719 425.507812 383.171875 426.207031 383.871094 C 426.90625 384.570312 427.566406 385.300781 428.195312 386.066406 C 428.820312 386.832031 429.410156 387.625 429.960938 388.445312 C 430.507812 389.269531 431.015625 390.113281 431.480469 390.988281 C 431.949219 391.859375 432.371094 392.75 432.75 393.664062 C 433.125 394.578125 433.460938 395.507812 433.746094 396.453125 C 434.03125 397.398438 434.273438 398.355469 434.464844 399.324219 C 434.660156 400.296875 434.804688 401.273438 434.902344 402.253906 C 434.996094 403.238281 435.046875 404.226562 435.046875 405.214844 Z M 435.046875 405.214844 " fill-opacity="1" fill-rule="nonzero"></path>
</svg></div><div class="column__content"><p class="column__title heading font-medium leading-tight tracking-none"><strong>Full Festival Range</strong></p><div class="column__text rte"><p><em>Up to 3 mile range between devices<br/><br/></em>Crowd Compass uses a mesh network to extend this even further by relaying messages through nearby devices. More devices mean stronger, wider coverage—even if they aren’t part of your group.</p></div></div>
        </div><div class="column flex gap-5 w-full flex-col xl:flex-row xl:text-center text-center" ><div class="column__icon with-svg"><svg xmlns="http://www.w3.org/2000/svg" width="1080" zoomandpan="magnify" viewbox="0 0 810 809.999993" height="1080" preserveaspectratio="xMidYMid meet" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
    <path d="M 516 339 L 497.402344 339 L 497.402344 251.699219 C 497.402344 220.4375 471.964844 195 440.703125 195 L 369.300781 195 C 338.035156 195 312.597656 220.4375 312.597656 251.699219 L 312.597656 339 L 294 339 C 274.117188 339 258 355.117188 258 375 L 258 550.199219 C 258 570.082031 274.117188 586.199219 294 586.199219 L 516 586.199219 C 535.882812 586.199219 552 570.082031 552 550.199219 L 552 375 C 552 355.117188 535.878906 339 516 339 Z M 341.398438 251.699219 C 341.398438 236.316406 353.914062 223.800781 369.300781 223.800781 L 440.703125 223.800781 C 456.085938 223.800781 468.601562 236.316406 468.601562 251.699219 L 468.601562 336.597656 L 341.402344 336.597656 L 341.402344 251.699219 Z M 423.839844 525.226562 C 424.1875 527.554688 422.382812 529.652344 420.027344 529.652344 L 389.976562 529.652344 C 387.617188 529.652344 385.816406 527.554688 386.164062 525.226562 L 392.984375 479.542969 C 385.210938 474.777344 380.417969 465.625 382.320312 455.464844 C 384.035156 446.300781 391.578125 438.816406 400.757812 437.179688 C 415.386719 434.578125 428.101562 445.753906 428.101562 459.902344 C 428.101562 468.238281 423.644531 475.484375 417.019531 479.542969 Z M 423.839844 525.226562 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 405 81 C 226.347656 81 81 226.347656 81 405 C 81 583.652344 226.347656 729 405 729 C 583.652344 729 729 583.652344 729 405 C 729 226.347656 583.652344 81 405 81 Z M 405 700.199219 C 242.226562 700.199219 109.800781 567.773438 109.800781 405 C 109.800781 242.226562 242.226562 109.800781 405 109.800781 C 567.773438 109.800781 700.199219 242.226562 700.199219 405 C 700.199219 567.773438 567.773438 700.199219 405 700.199219 Z M 405 700.199219 " fill-opacity="1" fill-rule="nonzero"></path>
</svg></div><div class="column__content"><p class="column__title heading font-medium leading-tight tracking-none"><strong>Secure Encrypted Connection</strong></p><div class="column__text rte"><p>Crowd Compass uses secure end-to-end encryption to keep your messages and location private, ensuring they can’t be accessed by anyone outside your group.</p></div></div>
        </div><div class="column flex gap-5 w-full flex-col xl:flex-row xl:text-center text-center" ><div class="column__icon with-svg"><svg xmlns="http://www.w3.org/2000/svg" width="1080" zoomandpan="magnify" viewbox="0 0 810 809.999993" height="1080" preserveaspectratio="xMidYMid meet" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
    <path d="M 83.507812 402.726562 C 81.070312 298.40625 194.824219 225.140625 294.667969 282.394531 C 327.558594 301.257812 355.480469 329.195312 385.503906 359.707031 C 386.867188 361.09375 387.5 360.953125 388.777344 359.664062 C 435.734375 312.289062 503.730469 240.054688 598.96875 268.15625 C 639.046875 279.984375 666.898438 306.007812 681.171875 345.222656 C 728.925781 476.460938 591.9375 585.128906 474.46875 513.09375 C 444.84375 494.925781 419.253906 469.859375 389.011719 439.03125 C 387.394531 437.386719 386.667969 437.621094 385.191406 439.109375 C 350.832031 473.785156 313.84375 511.476562 268.160156 527.253906 C 175.195312 559.363281 86.070312 503.925781 83.511719 402.722656 Z M 141.679688 400.703125 C 144.644531 460.960938 190.960938 489.054688 240.3125 478.371094 C 282.960938 469.140625 318.738281 431.601562 349.210938 400.253906 C 350.238281 399.199219 349.664062 398.769531 348.957031 398.109375 C 322.488281 373.386719 296.644531 343.1875 264.070312 327.644531 C 200.933594 297.523438 141.46875 341.695312 141.679688 400.703125 Z M 632.574219 398.15625 C 630.699219 339.921875 584.789062 308.1875 531.886719 320.605469 C 490.261719 330.375 454.691406 367.734375 425.140625 398.121094 C 424.117188 399.175781 424.511719 399.667969 425.351562 400.453125 C 462.300781 434.957031 505.898438 489.441406 564.808594 479.511719 C 604.046875 472.894531 632.660156 438.691406 632.574219 398.15625 Z M 632.574219 398.15625 " fill-opacity="1" fill-rule="nonzero"></path>
</svg></div><div class="column__content"><p class="column__title heading font-medium leading-tight tracking-none"><strong>Unlimited Pairing</strong></p><div class="column__text rte"><p>With unlimited connections, no one is left out of the adventure, no matter the size of your group. Use the mobile app to customize your Compass and easily identify each member.</p></div></div>
        </div><div class="column flex gap-5 w-full flex-col xl:flex-row xl:text-center text-center" ><div class="column__icon with-svg"><svg xmlns="http://www.w3.org/2000/svg" width="1080" zoomandpan="magnify" viewbox="0 0 810 809.999993" height="1080" preserveaspectratio="xMidYMid meet" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
    <defs>
        <clippath id="0fc1bb5ff9">
            <path d="M 300 211.410156 L 467 211.410156 L 467 598.410156 L 300 598.410156 Z M 300 211.410156 " clip-rule="nonzero"></path>
        </clippath>
    </defs>
    <path d="M 127.746094 517.328125 C 113.621094 517.328125 102.132812 505.839844 102.132812 491.71875 L 102.132812 317.996094 C 102.132812 303.875 113.621094 292.386719 127.746094 292.386719 L 319.0625 292.386719 L 326.035156 271.269531 L 127.746094 271.269531 C 101.96875 271.269531 81 292.230469 81 317.996094 L 81 491.71875 C 81 517.484375 101.96875 538.445312 127.746094 538.445312 L 367.480469 538.445312 L 367.480469 517.328125 L 127.746094 517.328125 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 639.753906 271.269531 L 400.011719 271.269531 L 400.011719 292.386719 L 639.753906 292.386719 C 653.878906 292.386719 665.367188 303.875 665.367188 317.996094 L 665.367188 491.71875 C 665.367188 505.839844 653.878906 517.328125 639.753906 517.328125 L 448.433594 517.328125 L 441.460938 538.445312 L 639.753906 538.445312 C 665.527344 538.445312 686.5 517.484375 686.5 491.71875 L 686.5 317.996094 C 686.5 292.230469 665.527344 271.269531 639.753906 271.269531 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 112.695312 317.996094 L 112.695312 491.71875 C 112.695312 500.015625 119.449219 506.765625 127.746094 506.765625 L 367.480469 506.765625 L 367.480469 458.523438 L 300.753906 458.523438 C 292.277344 458.523438 284.316406 454.453125 279.347656 447.585938 C 274.382812 440.722656 273.015625 431.890625 275.671875 423.84375 L 315.578125 302.949219 L 127.746094 302.949219 C 119.449219 302.949219 112.695312 309.695312 112.695312 317.996094 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 654.800781 491.71875 L 654.800781 317.996094 C 654.800781 309.695312 648.050781 302.949219 639.753906 302.949219 L 400.011719 302.949219 L 400.011719 351.191406 L 466.742188 351.191406 C 475.21875 351.191406 483.179688 355.257812 488.148438 362.125 C 493.113281 368.992188 494.484375 377.824219 491.828125 385.867188 L 451.917969 506.765625 L 639.753906 506.765625 C 648.050781 506.765625 654.800781 500.015625 654.800781 491.71875 " fill-opacity="1" fill-rule="nonzero"></path>
    <path d="M 709.523438 362.988281 L 692.589844 362.988281 L 692.589844 446.726562 L 709.523438 446.726562 C 720.28125 446.726562 729 438.011719 729 427.261719 L 729 382.453125 C 729 371.703125 720.28125 362.988281 709.523438 362.988281 " fill-opacity="1" fill-rule="nonzero"></path>
    <g clip-path="url(#0fc1bb5ff9)">
        <path d="M 466.738281 377.597656 L 373.597656 377.597656 L 373.597656 211.449219 L 300.753906 432.117188 C 321.441406 432.117188 371.132812 432.117188 393.898438 432.117188 L 393.898438 598.265625 L 466.738281 377.597656 " fill-opacity="1" fill-rule="nonzero"></path>
    </g>
</svg></div><div class="column__content"><p class="column__title heading font-medium leading-tight tracking-none"><strong>Up to 24 Hrs Battery Life</strong></p><div class="column__text rte"><p>With up to 24 hours of uninterrupted battery life, the Crowd Compass is powered by replaceable AA batteries, keeping you connected when it matters most—no charging station required.</p></div></div>
        </div></carousel-element>
  </div>
</div>



<style> #shopify-section-template--26225644273949__multicolumn_with_icons_mPRH7L .text-with-icons svg {color: #6ae5ac; width: 4rem; height: auto;} #shopify-section-template--26225644273949__multicolumn_with_icons_mPRH7L .flickity-cell {padding-top: 40px; padding-bottom: 40px;} #shopify-section-template--26225644273949__multicolumn_with_icons_mPRH7L .column__text p {line-height: 1.6; font-size: 1rem;} </style></div><div id="shopify-section-template--26225644273949__rich_text_AwibHV" class="shopify-section"><style>
  #shopify-section-template--26225644273949__rich_text_AwibHV {
    --section-padding-top: 60px;
    --section-padding-bottom: 0px;--color-button-background: 13 13 13;
  --color-button-border: 13 13 13;}
</style>

<div class="section section--padding">
  <div class="page-width relative"><div class="rich-text md:text-left text-left relative z-1"><h2 class="heading leading-none title-md" ><split-words class="split-words js-invisible block" data-animate="fade-up-large" data-animate-delay="250">What Our Customers Are Saying</split-words></h2></div></div>
</div>


</div><div id="shopify-section-template--26225644273949__1739579464a00f6e6b" class="shopify-section"><style>
  #shopify-section-template--26225644273949__1739579464a00f6e6b {
    --section-padding-top: 0px;
    --section-padding-bottom: 0px;}
</style>

<div class="section section--padding">
  <div class="page-width page-width--full relative"><div id="shopify-block-ARkhhL0RBcVNJQWtoL__judge_me_reviews_featured_carousel_JbLxGc" class="shopify-block shopify-app-block"><div style="margin:0 auto;max-width:1600px;">
  <div class='jdgm-carousel-wrapper'>
      <div class="jdgm-carousel-title-and-link">
        <h2 class='jdgm-carousel-title'>Let customers speak for us</h2>
        <span class="jdgm-all-reviews-rating-wrapper" href="javascript:void(0)">
          <span style="display:block" data-score='4.66' class='jdgm-all-reviews-rating' aria-label='4.66 stars' tabindex='0' role='img'></span>
          <span style="display: block" class='jdgm-carousel-number-of-reviews' data-number-of-reviews='76'>
            from 76 reviews
          </span>
        </span>
      </div>
    <section class='jdgm-widget jdgm-carousel jdgm-carousel--card-theme' data-widget-locale='en'> <style>.jdgm-carousel{display: none}</style> <style> .jdgm-xx{left:0}.jdgm-carousel-wrapper .jdgm-carousel__item-wrapper{height:300px}.jdgm-carousel-wrapper{width:100% !important;margin:auto}.jdgm-carousel-title-and-link{width:calc(100% - 81px);margin:0 auto 24px auto}.jdgm-carousel-wrapper .jdgm-widget.jdgm-carousel{width:calc(100% - 81px);margin:0 auto}.jdgm-carousel-wrapper .jdgm-carousel__left-arrow{float:left;margin-left:-25px;margin-top:-180.0px}.jdgm-carousel-wrapper .jdgm-carousel__right-arrow{float:right;margin-right:-25px;margin-top:-180.0px}.jdgm-carousel-item__product-title{display:none !important}.jdgm-carousel-title-and-link{display:none !important}.jdgm-carousel-title-and-link{padding-left:20px}.jdgm-carousel-title,.jdgm-all-reviews-rating-wrapper{text-align:left !important}.jdgm-carousel-wrapper .jdgm-star.jdgm-star,.jdgm-carousel .jdgm-star.jdgm-star{background:#6AE5AC;padding:3px !important;margin:0 2px !important;color:white}.jdgm-carousel-wrapper .jdgm-star.jdgm-star.jdgm--off,.jdgm-carousel .jdgm-star.jdgm-star.jdgm--off{background:#dadada}.jdgm-carousel-wrapper .jdgm-star.jdgm-star.jdgm--off:before,.jdgm-carousel .jdgm-star.jdgm-star.jdgm--off:before{content:"\e000"}.jdgm-carousel-wrapper .jdgm-star.jdgm-star.jdgm--half,.jdgm-carousel .jdgm-star.jdgm-star.jdgm--half{background:linear-gradient(90deg, #6AE5AC 50%, #dadada 50%)}.jdgm-carousel-wrapper .jdgm-star.jdgm-star.jdgm--half:before,.jdgm-carousel .jdgm-star.jdgm-star.jdgm--half:before{content:"\e000"}.jdgm-carousel--card-theme .jdgm-carousel-item{padding:8px 20px}.jdgm-carousel--card-theme .jdgm-carousel-item__inner-wrapper{height:100%;padding:16px;box-shadow:0px 4px 12px rgba(0,0,0,0.1);border-radius:4px;width:100%}.jdgm-carousel--card-theme .jdgm-carousel-item__review-rating{font-size:80%;margin-bottom:8px}.jdgm-carousel--card-theme .jdgm-carousel-item__product{text-align:left}.jdgm-carousel--card-theme .jdgm-carousel-item__reviewer-name-wrapper{text-align:left;margin:8px 0 0 0}.jdgm-carousel--card-theme .jdgm-carousel-item__reviewer-name{font-size:100%;opacity:0.8;line-height:1.4;padding-bottom:0;font-weight:600}.jdgm-carousel--card-theme .jdgm-carousel-item__timestamp{opacity:0.8}.jdgm-carousel--card-theme .jdgm-carousel-item__review{text-align:left;height:calc(100% - 2.6em)}
 </style> <style>  </style> <div class='jdgm-carousel__item-container'> <div class='jdgm-carousel__item-wrapper'><div class='jdgm-carousel-item' data-review-id='a1828b1d-9f5d-4021-a030-368ce2c1063b'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'>EDC LV Success</div> <div class='jdgm-carousel-item__review-body'><p>We used Crowd Compass for EDCLV and they worked well! Definitely play around with anything before you use them at a festival, I suggest a hide and seek with them to learn the quirks. Battery life was great for the long days. We really wanted something to be able to track if we didn't have cell service or someone lost a phone. These do exactly that!</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> James </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='01/12/2026'> 01/12/2026 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='233b4651-1bf5-43be-9963-910402ea936d'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'>Crowd Compass: it works LOL</div> <div class='jdgm-carousel-item__review-body'><p>I was the only person in my group with the crowd compass app (bc they're lame and they didn't believe in it). Guess what? Didn't even matter. We didn't lose anyone the whole night, and we split up more times than we can count. GPS isn't perfect, but since it comes to ~20 ft range, finding each other was easy enough.</p>

<p>There are some things I would change, but overall it's a great product. Lemme just say, I didn't struggle nearly as much as some people who had the competing company at Niteharts</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> Noah </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='01/12/2026'> 01/12/2026 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='2aecdf65-afed-487b-a442-93e9f1c6753e'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'>Great at EDC LV!</div> <div class='jdgm-carousel-item__review-body'><p>These are amazing!!! I bought them for EDC LV last year and was looking for one of a few groups of friends that were there to loan them one of them. I searched for a good 45 minutes but couldn't find them and found myself alone at a festival with 500,000 attendees. Under normal circumstances I would never have been able to find my friends because there is no cell service out there and I had no idea where they were. Thanks to my compass and the app on the phone I was able to use the compass as well as the interactive map on the app to find my friends in about 5-10 minutes on the other side of the festival. The look of surprise on my crews face when I casually just walked up out of the crowd was 100% worth it! Great product and very easy to use.</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> Will </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='01/12/2026'> 01/12/2026 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='1d4757c1-dcc7-5fa5-ae44-53a088091290'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'></div> <div class='jdgm-carousel-item__review-body'><p>definitely recommend this product! such amazinf customer service! they didnt have the option to ship to New Zealand however when i sent them a message they said they could sort out the shipping for me which they did! i was super worried they wouldnt turn up in time being so far away and i wanted them before xmas, however they turned up much earlier than expected. thank u so much super happy with my compasses!</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> S.H. </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='12/17/2025'> 12/17/2025 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='ac2ecc40-9716-44c1-b969-651b1a245fd8'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='4 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--off'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'>Makes finding friends easier without your phone.</div> <div class='jdgm-carousel-item__review-body'><p>We bought four Crowd Compasses to be able to track our friends in poor cell service or lost phone situations. Out of the box, there is some set up and learning of the product you need to do before you roll out with them the first time. Once you do a weekend with them, they are easy to use and pretty accurate. Definitely recommend calibrating in the venue/area you plan to use them before you go in. That helped a bunch on the final day of EDCLV and they worked flawlessly. There is a delay in position updates, we noticed about 30 seconds. When tracking someone, it helps to walk a bit and pause periodically to let the devices sync. Covered all of EDCLV without maxing out the range finder. Love that you can pair unlimited devices! Battery life with generic batteries easily lasted 12 hours and only got down to about 45%. All in all, these were a game-changer for our festival experience, and we’ll definitely be recommending them to friends and fellow festival-goers.</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> William Rutherford </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/protective-party-case-1#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass Protective Case </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='11/03/2025'> 11/03/2025 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='ea0706f7-7059-46ee-b495-d63005caad79'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'>Flawless at Lost Lands</div> <div class='jdgm-carousel-item__review-body'><p>Lost lands with the help of crowd compass was flawless when locating my friend. Even in the most crowded areas I was able to locate them with ease.  Got the chance to play some games of hide and seek with my other camp mates to show them the device and what it could do. They were really surprised how easy it was  setup/ use. I found myself having to keep track of my crowd compass due to them wanting to use it so much. Without crowd compass my lost land experience would have not been amazing.</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> David </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='09/28/2025'> 09/28/2025 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='4f562507-7f3a-49eb-b950-ecdf9f8b80cc'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'>The perfect simple device to keep you and your friends connected</div> <div class='jdgm-carousel-item__review-body'><p>The Crowd Compass is the perfect combination of simplicity and functionality to keep you and your friends connected. I used this at Burning Man and was able to easily find friends in the middle of the crowd of tens of thousands of people. Highly recommend!</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> Anonymous </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='09/26/2025'> 09/26/2025 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='d807d0a8-3a7e-4543-b6f5-8d296644e2e2'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='4 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--off'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'>Cat herding to crowd surfing</div> <div class='jdgm-carousel-item__review-body'><p>Finding your extroverts has never been easier. More ethical than secrete air tags, cooler than giant hats, and you don’t even need to be the “tall” guy to find your way.</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> Paul R </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='09/25/2025'> 09/25/2025 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='b9de2c1b-fc31-52b3-a73f-3b95a26249eb'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'></div> <div class='jdgm-carousel-item__review-body'><p>Very sturdy and offers amazing protection</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> David </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/protective-party-case-1#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass Protective Case </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='07/29/2025'> 07/29/2025 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='54f69640-57ca-4ac1-aa77-be3e876b7c03'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'></div> <div class='jdgm-carousel-item__review-body'><p>Being the rave dad of my crew sometimes feels like herding chickens when trying to find all my friends. Thanks to Crowd Compass, my issues have been solved. I appreciate the peace of mind that this company provides with a product handcrafted to keep a community together.
<br />Crowd Compass provides fantastic customer support when it comes to its product, be it regarding helping customers or updates to the device.
<br />I have used the Crowd Compass numerous times for hikes and festivals. The device has worked amazingly with littley to no issues. I have ultimate faith in this company because it believes in its product, and it shows.</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> David Adkins </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='02/12/2025'> 02/12/2025 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='cc1a5904-fd92-47c0-8a3d-b1425cecb63c'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'>Absolute life changer!</div> <div class='jdgm-carousel-item__review-body'><p>Crowd Compass is an absolute life changer. I am heading to EDC Mexico with my bestfriend, and i've never attended an out of the country fest so I'm really thrilled that we can keep track of one another with them. They absolutely helped break the barrier of lack of service at EDCO allowing me to ensure my fam was coming to our meetups. And I am excited that these will be my main form of communication at my camping fests up in the mountaints like Big Dub!! Also for bonus points, CC community has been absolutely wonderful and all PLURR! The team is super attentive to all questions, concerns, and feedback, and I've made tons of connections in the EDM community as well because of it!</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> Brianna Carroll </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='02/11/2025'> 02/11/2025 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='6df9e47e-8c04-4747-bd55-7a79b511d531'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'>Amazing customer service!!</div> <div class='jdgm-carousel-item__review-body'><p>Your customer service is outstanding as you guys have always replied within a reasonable time as well as always providing fast solutions to my problems I thank you guys so much for the outstanding customer service you have provided as well as the most perfect use of a product that'll always be a part of my festival outfits and a help in all sorts of ways to find friends thank you very much!!!</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> Franky Hernandez </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='02/03/2025'> 02/03/2025 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='5391eaff-6dfc-4475-be25-d09ce0331b16'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'>Crowd Compass Review – A Must-Have for Music Festivals!</div> <div class='jdgm-carousel-item__review-body'><p>If you’ve ever struggled to find your friends at a packed music festival, the Crowd Compass is the perfect solution. This innovative device allows you to track and reunite with your group without relying on cell service or smartphones—a game-changer for large outdoor events. I’ve personally used the Crowd Compass at festivals like Apocalypse Zombieland and Escape at NOS Center, and it performed flawlessly. The tracking is reliable, and I love that it runs on batteries instead of requiring USB charging, making it ideal for multi-day events when charging isn’t always an option. One minor issue I encountered in earlier versions was teaching people how to zoom out on the map, as some users initially thought they couldn't locate friends at longer distances. Thankfully, this has been fixed in the latest update! A key thing to note is that Crowd Compass is best suited for outdoor festivals. Since it relies on gathering location data, it doesn’t work as well for indoor concerts where signal reception may be limited. Overall, I highly recommend the Crowd Compass for anyone attending large festivals where groups tend to split up. It eliminates the stress of finding friends in massive crowds and ensures a seamless experience.</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> Ivan Rivera </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='02/01/2025'> 02/01/2025 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='5a41d5ea-873e-4268-84fd-bbc346bc1628'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'>Crowd Compass Review</div> <div class='jdgm-carousel-item__review-body'><p>I recently used the Crowd Compass on a camping trip, and I have to say, it was a game-changer. I tend to walk slower than my friends, so it was great to be able to let them go on ahead without worrying about me getting lost. Funnily enough, there was a moment where I had to pick between going left or right on the trail and since my compass showed my friends were towards the right, I headed to the right. Lo and behold, it was correct! In my experience, the compass itself has been incredibly reliable and accurate, and I love that it can be connected to my phone via an app to unlock more cool features (like texting without need of cell service). I also didn't expect the battery to last as long as it did – it lasted me the entire weekend! And I have to say, the "party mode" feature is pretty cool for whenever I just want to chill and vibe with it on. I can't wait to use it at music festivals this year – it's going to be perfect for finding my friends in a crowd. Overall, I'm really impressed with this device and have already recommended it to my friends - specially the ravers in my group!</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> Joe </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='02/01/2025'> 02/01/2025 </div> </div> </div> </div><div class='jdgm-carousel-item' data-review-id='486006a2-4d1d-4d41-9f40-6a18df6e3862'> <div class='jdgm-carousel-item__inner-wrapper'> <div class='jdgm-carousel-item__review'> <div class='jdgm-carousel-item__review-rating' tabindex='0' aria-label='5 stars' role='img'> <span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span><span class='jdgm-star jdgm--on'></span> </div> <div class='jdgm-carousel-item__review-content'> <div class='jdgm-carousel-item__review-title'>Changed my festival experience!</div> <div class='jdgm-carousel-item__review-body'><p>Crowd compass has changed my festival experience! Tested in several crowded places never have I had a problem finding my crew. Local shows only but even getting back to my crew at the rail was nothing! Looking forward to taking these to Tomorrowland 2025!!! Not a single regret about my purchase and the support from the staff handling emails to the CEO himself has been above and beyond any service I have gotten. PLUR</p></div> </div> </div> <div class='jdgm-carousel-item__reviewer-name-wrapper'> <div class='jdgm-carousel-item__reviewer-name jdgm-ellipsis'> Scott Olin </div> <a class='jdgm-carousel-item__product jdgm-ellipsis' href='/products/crowd-compass#judgeme_product_reviews'> <div class='jdgm-carousel-item__product-title jdgm-ellipsis'> Crowd Compass </div> </a> <div class='jdgm-carousel-item__timestamp jdgm-ellipsis jdgm-spinner' data-time='01/31/2025'> 01/31/2025 </div> </div> </div> </div></div> </div> <div class='jdgm-carousel__arrows'> <div class='jdgm-carousel__left-arrow' tabindex="0"></div> <div class='jdgm-carousel__right-arrow' tabindex="0"></div> </div> </section> <section>  </section>
  </div>
</div>


</div>
</div>
</div>


</div><div id="shopify-section-template--26225644273949__rich_text_gyrdBU" class="shopify-section"><style>
  #shopify-section-template--26225644273949__rich_text_gyrdBU {
    --section-padding-top: 0px;
    --section-padding-bottom: 60px;--color-button-background: 106 229 172;
  --color-button-border: 106 229 172;}
</style>

<div class="section section--padding">
  <div class="page-width relative"><div class="rich-text md:text-center text-center relative z-1"><a class="link inline-block icon-with-text" href="/pages/reviews" is="hover-link" >
    <span class="link-text">Read More Reviews</span><svg class="icon icon-arrow-right icon-sm transform" viewBox="0 0 21 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="M3 10H18M18 10L12.1667 4.16675M18 10L12.1667 15.8334"></path>
    </svg></a></div></div>
</div>


</div><div id="shopify-section-template--26225644273949__rich-text-2" class="shopify-section"><style>
  #shopify-section-template--26225644273949__rich-text-2 {
    --section-padding-top: 80px;
    --section-padding-bottom: 0px;--color-background: 13 13 13;--color-foreground: 255 255 255;
  --color-border: var(--color-foreground)/ 0.1;
  --color-border-dark: var(--color-foreground)/ 0.4;
  --color-border-light: var(--color-foreground)/ 0.06;--color-highlight: 254 144 230;--color-button-background: 106 229 172;
  --color-button-border: 106 229 172;--color-button-text: 23 23 23;}
</style>

<div class="section section--padding section--rounded relative">
  <div class="page-width relative"><div class="collage collage-medium with-richtext grid items-start"><div class="title-wrapper leading-none gap-4 lg:gap-8 flex flex-col text-left md:items-end md:flex-row md:justify-between relative z-1"><div class="grid gap-4"><h3 class="heading title-lg tracking-heading">Shop with confidence with our <em is="highlighted-text" class="highlighted-text not-italic relative" data-style="underline">100% money-back</em> guarantee</h3></div></div><div class="rich-text md:text-left text-left relative z-1"><div class="rte body subtext-md leading-normal" ><p>If you are not completely satisfied within 30 days, we will issue a full refund, no questions asked.</p></div><div class="rte heading subtext-lg leading-normal" ><p>Read our <a href="/policies/refund-policy" title="Refund Policy"><em>Crowd Compass Guarantee</em></a></p></div></div></div></div>
</div>


</div><div id="shopify-section-template--26225644273949__rich_text_X6wakL" class="shopify-section"><style>
  #shopify-section-template--26225644273949__rich_text_X6wakL {
    --section-padding-top: 60px;
    --section-padding-bottom: 80px;--color-background: 13 13 13;--color-foreground: 255 255 255;
  --color-border: var(--color-foreground)/ 0.1;
  --color-border-dark: var(--color-foreground)/ 0.4;
  --color-border-light: var(--color-foreground)/ 0.06;--color-highlight: 254 144 230;--color-button-background: 106 229 172;
  --color-button-border: 106 229 172;--color-button-text: 23 23 23;}
</style>

<div class="section section--padding section--rounded relative">
  <div class="page-width relative"><div class="rich-text md:text-center text-center relative z-1"><a class="button button--primary button--sm icon-with-text" href="/products/crowd-compass" is="hover-link" >
    <span class="btn-fill" data-fill></span>
    <span class="btn-text">Shop now<svg class="icon icon-arrow-right icon-sm transform" viewBox="0 0 21 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="M3 10H18M18 10L12.1667 4.16675M18 10L12.1667 15.8334"></path>
    </svg></span>
  </a></div></div>
</div>


</div>
      </main>

      <footer class="footer-group block w-full" is="footer-group"><!-- BEGIN sections: footer-group -->
<div id="shopify-section-sections--26225644929309__newsletter_Tq3HKR" class="shopify-section shopify-section-group-footer-group"><style>
  #shopify-section-sections--26225644929309__newsletter_Tq3HKR {
    --section-padding-top: 36px;
    --section-padding-bottom: 36px;--color-highlight: 106 229 172;}
</style>

<div class="section section--padding">
  <div class="page-width page-width--narrow relative">
    <div class="banner">
      <div class="banner__content relative z-1">
        <div class="banner__box banner__box--large md:text-center text-center"><h2 class="banner__title heading leading-none tracking-none title-sm" ><em is="highlighted-text" class="highlighted-text not-italic relative" data-style="text">Subscribe to Our Newsletter</em></h2><div class="rte body subtext-md leading-normal" ><p>Be the first to know about exclusive sales and product updates.</p></div><form method="post" action="/contact#newsletter-sections--26225644929309__newsletter_Tq3HKR" id="newsletter-sections--26225644929309__newsletter_Tq3HKR" accept-charset="UTF-8" class="newsletter-form grid gap-5"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="contact[tags]" value="newsletter" />
  <input type="hidden" name="contact[context]" value="section" />
  <div class="field relative">
    <input
      id="NewsletterForm--sections--26225644929309__newsletter_Tq3HKR"
      class="input is-floating input--fill"
      type="email"
      name="contact[email]"
      value=""
      autocorrect="off"
      autocapitalize="off"
      autocomplete="email"
      placeholder="Enter your email"
      required/>
    <label class="label is-floating" for="NewsletterForm--sections--26225644929309__newsletter_Tq3HKR">Enter your email</label>
    <div class="self-submit-button absolute">
      <button type="submit" class="button button--primary self-button flex justify-center items-center" is="magnet-button" data-magnet="20" aria-label="Subscribe">
        <span class="btn-text">
          <svg class="icon icon-arrow-right icon-xs transform" viewBox="0 0 16 16" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
            <path stroke-linecap="round" stroke-linejoin="round" d="M2 8.00012H14M14 8.00012L9.33333 3.3335M14 8.00012L9.33333 12.6668"></path>
          </svg>
        </span>
      </button>
    </div>
  </div></form></div>
      </div>
    </div>
  </div>
</div>


</div><div id="shopify-section-sections--26225644929309__footer" class="shopify-section shopify-section-group-footer-group"><style>
  #shopify-section-sections--26225644929309__footer {
    --section-padding-top: 72px;
    --section-padding-bottom: 72px;--color-background: 31 31 31;--color-foreground: 255 255 255;
  --color-border: var(--color-foreground)/ 0.1;
  --color-border-dark: var(--color-foreground)/ 0.4;
  --color-border-light: var(--color-foreground)/ 0.06;--color-button-background: 255 255 255;
  --color-button-border: 255 255 255;--color-button-text: 0 0 0;}
</style><div class="section section--padding section--rounded">
  <div class="footer footer--inverted page-width page-width--full relative grid" role="region" aria-label="Footer"><div class="footer__left flex flex-col md:flex-row gap-10"><div class="footer__accordions flex flex-wrap flex-col md:flex-row md:grow md:gap-12"><details class="footer__item--link_list_G8CmQQ details active" is="footer-details" >
      <summary class="details__summary flex items-center justify-between gap-2 cursor-pointer">
        <span class="heading text-base-2xl font-medium lg:font-heading">Quick Links</span><svg class="icon icon-chevron-up icon-md" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="M6 15L12 9L18 15"></path>
    </svg></summary><div class="details__content">
      <ul class="flex flex-col gap-3"><li class="inline-flex">
            <a href="/products/crowd-compass" class="block reversed-link text-sm-lg leading-tight">Shop</a>
          </li><li class="inline-flex">
            <a href="/pages/faqs" class="block reversed-link text-sm-lg leading-tight">FAQs</a>
          </li><li class="inline-flex">
            <a href="/blogs/news" class="block reversed-link text-sm-lg leading-tight">Blog</a>
          </li><li class="inline-flex">
            <a href="/pages/contact" class="block reversed-link text-sm-lg leading-tight">Contact Us</a>
          </li><li class="inline-flex">
            <a href="/pages/giveaway-terms-conditions" class="block reversed-link text-sm-lg leading-tight">Giveaway Terms & Conditions</a>
          </li></ul>
    </div>
    <style>
      @media (min-width: 1280px) {
        .footer__item--link_list_G8CmQQ { width: calc(50% - var(--sp-12)); }
      }
    </style></details><details class="footer__item--link_list-1 details active" is="footer-details" >
      <summary class="details__summary flex items-center justify-between gap-2 cursor-pointer">
        <span class="heading text-base-2xl font-medium lg:font-heading">More Details</span><svg class="icon icon-chevron-up icon-md" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="M6 15L12 9L18 15"></path>
    </svg></summary><div class="details__content">
      <ul class="flex flex-col gap-3"><li class="inline-flex">
            <a href="/pages/how-to-use-your-crowd-compass" class="block reversed-link text-sm-lg leading-tight">How-To's</a>
          </li><li class="inline-flex">
            <a href="/pages/contact" class="block reversed-link text-sm-lg leading-tight">Bulk Pricing</a>
          </li></ul>
    </div>
    <style>
      @media (min-width: 1280px) {
        .footer__item--link_list-1 { width: calc(50% - var(--sp-12)); }
      }
    </style></details><details class="footer__item--link_list-2 details active" is="footer-details" >
      <summary class="details__summary flex items-center justify-between gap-2 cursor-pointer">
        <span class="heading text-base-2xl font-medium lg:font-heading">Legal Stuff</span><svg class="icon icon-chevron-up icon-md" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path stroke-linecap="round" stroke-linejoin="round" d="M6 15L12 9L18 15"></path>
    </svg></summary><div class="details__content">
      <ul class="flex flex-col gap-3"><li class="inline-flex">
            <a href="/pages/refund-policy" class="block reversed-link text-sm-lg leading-tight">Refund Policy</a>
          </li><li class="inline-flex">
            <a href="/pages/extended-warranty-agreement" class="block reversed-link text-sm-lg leading-tight">Extended Warranty Agreement</a>
          </li><li class="inline-flex">
            <a href="/policies/terms-of-service" class="block reversed-link text-sm-lg leading-tight">Terms of Service</a>
          </li><li class="inline-flex">
            <a href="/policies/privacy-policy" class="block reversed-link text-sm-lg leading-tight">Privacy Policy</a>
          </li><li class="inline-flex">
            <a href="https://www.crowdcompass.io/pages/crowd-compass-companion-app-privacy-policy" class="block reversed-link text-sm-lg leading-tight">Companion App Privacy Policy</a>
          </li></ul>
    </div>
    <style>
      @media (min-width: 1280px) {
        .footer__item--link_list-2 { width: calc(50% - var(--sp-12)); }
      }
    </style></details></div>
      </div><div class="footer__right grid gap-10"><div class="footer__socials flex align-self-end justify-start md:justify-end xl:justify-start"><ul class="flex flex-wrap items-center gap-7" role="list"><li><a href="https://www.facebook.com/profile.php?id=61551818764397" class="social_platform block relative" is="magnet-link" title="Crowd Compass on Facebook"><svg class="icon icon-facebook icon-lg" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M9.03153 23L9 13H5V9H9V6.5C9 2.7886 11.2983 1 14.6091 1C16.1951 1 17.5581 1.11807 17.9553 1.17085V5.04948L15.6591 5.05052C13.8584 5.05052 13.5098 5.90614 13.5098 7.16171V9H18.75L16.75 13H13.5098V23H9.03153Z"/>
    </svg><span class="sr-only">Facebook</span>
        </a>
      </li><li><a href="http://instagram.com/crowdcompass.io" class="social_platform block relative" is="magnet-link" title="Crowd Compass on Instagram"><svg class="icon icon-instagram icon-lg" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M12 2.98C14.94 2.98 15.28 2.99 16.44 3.04C17.14 3.04 17.83 3.18 18.48 3.42C18.96 3.6 19.39 3.88 19.75 4.24C20.12 4.59 20.4 5.03 20.57 5.51C20.81 6.16 20.94 6.85 20.95 7.55C21 8.71 21.01 9.06 21.01 12C21.01 14.94 21 15.28 20.95 16.44C20.95 17.14 20.81 17.83 20.57 18.48C20.39 18.95 20.11 19.39 19.75 19.75C19.39 20.11 18.96 20.39 18.48 20.57C17.83 20.81 17.14 20.94 16.44 20.95C15.28 21 14.93 21.01 12 21.01C9.07 21.01 8.72 21 7.55 20.95C6.85 20.95 6.16 20.81 5.51 20.57C5.03 20.39 4.6 20.11 4.24 19.75C3.87 19.4 3.59 18.96 3.42 18.48C3.18 17.83 3.05 17.14 3.04 16.44C2.99 15.28 2.98 14.93 2.98 12C2.98 9.07 2.99 8.72 3.04 7.55C3.04 6.85 3.18 6.16 3.42 5.51C3.6 5.03 3.88 4.6 4.24 4.24C4.59 3.87 5.03 3.59 5.51 3.42C6.16 3.18 6.85 3.05 7.55 3.04C8.71 2.99 9.06 2.98 12 2.98ZM12 1C9.01 1 8.64 1.01 7.47 1.07C6.56 1.09 5.65 1.26 4.8 1.58C4.07 1.86 3.4 2.3 2.85 2.85C2.3 3.41 1.86 4.07 1.58 4.8C1.26 5.65 1.09 6.56 1.07 7.47C1.02 8.64 1 9.01 1 12C1 14.99 1.01 15.36 1.07 16.53C1.09 17.44 1.26 18.35 1.58 19.2C1.86 19.93 2.3 20.6 2.85 21.15C3.41 21.7 4.07 22.14 4.8 22.42C5.65 22.74 6.56 22.91 7.47 22.93C8.64 22.98 9.01 23 12 23C14.99 23 15.36 22.99 16.53 22.93C17.44 22.91 18.35 22.74 19.2 22.42C19.93 22.14 20.6 21.7 21.15 21.15C21.7 20.59 22.14 19.93 22.42 19.2C22.74 18.35 22.91 17.44 22.93 16.53C22.98 15.36 23 14.99 23 12C23 9.01 22.99 8.64 22.93 7.47C22.91 6.56 22.74 5.65 22.42 4.8C22.14 4.07 21.7 3.4 21.15 2.85C20.59 2.3 19.93 1.86 19.2 1.58C18.35 1.26 17.44 1.09 16.53 1.07C15.36 1.02 14.99 1 12 1ZM12 6.35C10.88 6.35 9.79 6.68 8.86 7.3C7.93 7.92 7.21 8.8 6.78 9.84C6.35 10.87 6.24 12.01 6.46 13.1C6.68 14.2 7.22 15.2 8.01 15.99C8.8 16.78 9.81 17.32 10.9 17.54C12 17.76 13.13 17.65 14.16 17.22C15.19 16.79 16.07 16.07 16.7 15.14C17.32 14.21 17.65 13.12 17.65 12C17.65 10.5 17.05 9.06 16 8.01C14.94 6.95 13.5 6.36 12.01 6.36L12 6.35ZM12 15.67C11.27 15.67 10.57 15.45 9.96 15.05C9.36 14.65 8.89 14.07 8.61 13.4C8.33 12.73 8.26 11.99 8.4 11.28C8.54 10.57 8.89 9.92 9.4 9.4C9.91 8.88 10.57 8.54 11.28 8.4C11.99 8.26 12.73 8.33 13.4 8.61C14.07 8.89 14.64 9.36 15.05 9.96C15.45 10.56 15.67 11.27 15.67 12C15.67 12.97 15.28 13.91 14.6 14.59C13.91 15.28 12.98 15.66 12.01 15.66L12 15.67ZM17.87 7.45C18.6 7.45 19.19 6.86 19.19 6.13C19.19 5.4 18.6 4.81 17.87 4.81C17.14 4.81 16.55 5.4 16.55 6.13C16.55 6.86 17.14 7.45 17.87 7.45Z"/>
    </svg><span class="sr-only">Instagram</span>
        </a>
      </li><li><a href="https://www.youtube.com/channel/UCi11hNFaShHv0pX8DLnfyWA" class="social_platform block relative" is="magnet-link" title="Crowd Compass on YouTube"><svg class="icon icon-youtube icon-lg" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M23.8 7.6C23.8 7.6 23.6 5.9 22.8 5.2C21.9 4.2 20.9 4.2 20.4 4.2C17 4 12 4 12 4C12 4 7 4 3.6 4.2C3.1 4.3 2.1 4.3 1.2 5.2C0.5 5.9 0.2 7.6 0.2 7.6C0.2 7.6 0 9.5 0 11.5V13.3C0 15.2 0.2 17.2 0.2 17.2C0.2 17.2 0.4 18.9 1.2 19.6C2.1 20.6 3.3 20.5 3.8 20.6C5.7 20.8 12 20.8 12 20.8C12 20.8 17 20.8 20.4 20.5C20.9 20.4 21.9 20.4 22.8 19.5C23.5 18.8 23.8 17.1 23.8 17.1C23.8 17.1 24 15.2 24 13.2V11.4C24 9.5 23.8 7.6 23.8 7.6ZM9.5 15.5V8.8L16 12.2L9.5 15.5Z"/>
    </svg><span class="sr-only">YouTube</span>
        </a>
      </li><li><a href="https://www.tiktok.com/@crowdcompass?lang=en" class="social_platform block relative" is="magnet-link" title="Crowd Compass on TikTok"><svg class="icon icon-tiktok icon-lg" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M10.6315 8.937V13.059C10.1123 12.9221 9.56911 12.9034 9.0418 13.0044C8.5145 13.1054 8.01657 13.3234 7.58473 13.6424C7.15288 13.9613 6.79813 14.3732 6.54661 14.8475C6.2951 15.3218 6.15324 15.8466 6.13148 16.383C6.10175 16.8449 6.17125 17.3078 6.33531 17.7405C6.49938 18.1733 6.7542 18.5659 7.08266 18.892C7.41111 19.2181 7.80557 19.4701 8.23952 19.631C8.67346 19.7919 9.13684 19.8581 9.59848 19.825C10.0648 19.8608 10.5333 19.7949 10.9717 19.6319C11.41 19.4689 11.8078 19.2126 12.1374 18.8809C12.4671 18.5491 12.7208 18.1498 12.881 17.7104C13.0413 17.271 13.1042 16.8021 13.0655 16.336V0H17.1425C17.8355 4.315 19.9935 5.316 22.8825 5.778V9.913C20.8804 9.74881 18.9491 9.09645 17.2575 8.013V16.18C17.2575 19.88 15.0675 24 9.63048 24C8.61045 23.9955 7.60156 23.7875 6.66297 23.3881C5.72437 22.9886 4.87496 22.4059 4.16451 21.6739C3.45407 20.942 2.89689 20.0755 2.52563 19.1254C2.15438 18.1754 1.97652 17.1607 2.00248 16.141C2.03479 15.0794 2.29174 14.0366 2.75639 13.0815C3.22105 12.1265 3.88285 11.2807 4.69819 10.6C5.51352 9.9193 6.46387 9.41915 7.48658 9.1325C8.50929 8.84586 9.58114 8.77923 10.6315 8.937Z"/>
    </svg><span class="sr-only">TikTok</span>
        </a>
      </li><li><a href="https://discord.com/invite/mxJr2Cp87z" class="social_platform block relative" is="magnet-link" title="Crowd Compass on Discord"><svg class="icon icon-discord icon-lg" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M9.32792 10.068C8.99458 10.0969 8.68419 10.2497 8.45805 10.4964C8.2319 10.743 8.10645 11.0654 8.10645 11.4C8.10645 11.7346 8.2319 12.057 8.45805 12.3036C8.68419 12.5502 8.99458 12.7031 9.32792 12.732C9.4958 12.725 9.66066 12.6851 9.81307 12.6143C9.96548 12.5436 10.1025 12.4435 10.2161 12.3198C10.3298 12.1961 10.418 12.0512 10.4756 11.8933C10.5332 11.7355 10.5592 11.5679 10.5519 11.4C10.5601 11.2319 10.5348 11.0639 10.4776 10.9056C10.4203 10.7474 10.3322 10.6021 10.2183 10.4782C10.1044 10.3543 9.9671 10.2542 9.81425 10.1838C9.66141 10.1134 9.4961 10.074 9.32792 10.068ZM13.7079 10.068C13.4396 10.0452 13.1707 10.104 12.9364 10.2366C12.702 10.3693 12.5132 10.5696 12.3946 10.8113C12.276 11.053 12.2332 11.3249 12.2717 11.5914C12.3102 11.8579 12.4283 12.1066 12.6105 12.3049C12.7926 12.5031 13.0305 12.6418 13.2927 12.7026C13.555 12.7635 13.8296 12.7437 14.0805 12.6459C14.3314 12.5481 14.5469 12.3769 14.6988 12.1546C14.8507 11.9323 14.932 11.6692 14.9319 11.4C14.9392 11.2321 14.9132 11.0645 14.8556 10.9066C14.798 10.7488 14.7098 10.6039 14.5961 10.4802C14.4825 10.3564 14.3455 10.2564 14.1931 10.1856C14.0407 10.1149 13.8758 10.0749 13.7079 10.068Z"/>
      <path d="M19.54 0H3.46001C3.13617 0.000786973 2.81565 0.0653515 2.51677 0.190007C2.21788 0.314663 1.94647 0.496969 1.71804 0.726515C1.4896 0.956062 1.30862 1.22835 1.18542 1.52784C1.06222 1.82734 0.999218 2.14816 1.00001 2.472V18.7C0.999218 19.0238 1.06222 19.3447 1.18542 19.6442C1.30862 19.9436 1.4896 20.2159 1.71804 20.4455C1.94647 20.675 2.21788 20.8573 2.51677 20.982C2.81565 21.1066 3.13617 21.1712 3.46001 21.172H17.068L16.432 18.952L17.968 20.38L19.42 21.72L22 24V2.472C22.0008 2.14816 21.9378 1.82734 21.8146 1.52784C21.6914 1.22835 21.5104 0.956062 21.282 0.726515C21.0535 0.496969 20.7821 0.314663 20.4832 0.190007C20.1844 0.0653515 19.8638 0.000786973 19.54 0ZM14.908 15.672C14.908 15.672 14.476 15.156 14.116 14.7C14.9858 14.4952 15.7552 13.9893 16.288 13.272C15.8562 13.5594 15.3933 13.7969 14.908 13.98C14.3498 14.2183 13.7659 14.3914 13.168 14.496C12.1403 14.6852 11.0863 14.6812 10.06 14.484C9.45887 14.3659 8.86976 14.1932 8.30001 13.968C7.81882 13.7842 7.35992 13.5467 6.93201 13.26C7.44554 13.9624 8.18835 14.4632 9.03201 14.676C8.67201 15.132 8.23201 15.676 8.23201 15.676C7.51919 15.6952 6.81258 15.5388 6.17437 15.2208C5.53616 14.9027 4.9859 14.4327 4.57201 13.852C4.61037 11.4179 5.20124 9.02433 6.30001 6.852C7.26643 6.09298 8.44466 5.65272 9.67201 5.592L9.79201 5.736C8.63452 6.02081 7.55416 6.55757 6.62801 7.308C6.62801 7.308 6.89201 7.164 7.33601 6.96C8.19835 6.56489 9.11767 6.3084 10.06 6.2C10.1259 6.18632 10.1928 6.17829 10.26 6.176C11.0641 6.07122 11.8779 6.06317 12.684 6.152C13.9533 6.2975 15.1817 6.69023 16.3 7.308C15.4231 6.5942 14.4047 6.07475 13.312 5.784L13.48 5.592C14.7074 5.65272 15.8856 6.09298 16.852 6.852C17.9508 9.02433 18.5416 11.4179 18.58 13.852C18.1624 14.4314 17.6096 14.9001 16.9697 15.2173C16.3297 15.5344 15.622 15.6905 14.908 15.672Z"/>
    </svg><span class="sr-only">Discord</span>
        </a>
      </li></ul></div></div></div></div>


</div><div id="shopify-section-sections--26225644929309__footer-copyright" class="shopify-section shopify-section-group-footer-group"><style>
  #shopify-section-sections--26225644929309__footer-copyright {
    --gradient-background: #171717;
    --color-background: 23 23 23;
    --color-foreground: 255 255 255;
  }
</style>

<div class="section section--rounded" is="footer-parallax">
  <div class="footer-copyright page-width page-width--full w-full flex flex-col items-center justify-between gap-4 lg:gap-0 lg:flex-row relative">
    <div class="rte credits text-center">&copy;&nbsp;2026&nbsp;Crowd Compass.&nbsp;<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><ul class="flex flex-wrap gap-3 justify-center lg:justify-start"><li>
                <small>
                  <a href="/policies/refund-policy" class="block reversed-link">Refund policy</a>
                </small>
              </li><li>
                <small>
                  <a href="/policies/privacy-policy" class="block reversed-link">Privacy policy</a>
                </small>
              </li><li>
                <small>
                  <a href="/policies/terms-of-service" class="block reversed-link">Terms of service</a>
                </small>
              </li><li>
                <small>
                  <a href="/policies/shipping-policy" class="block reversed-link">Shipping policy</a>
                </small>
              </li><li>
                <small>
                  <a href="/policies/subscription-policy" class="block reversed-link">Cancellation policy</a>
                </small>
              </li></ul></div><ul class="payment-icons flex flex-wrap justify-center gap-2 xl:gap-3"><li><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-american_express"><title id="pi-american_express">American Express</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#0071CE" style="fill:#0071CE;fill:color(display-p3 0.0000 0.4431 0.8078);fill-opacity:1;"/><path d="M3 0.5H35C36.3348 0.5 37.5 1.58692 37.5 3V21C37.5 22.4239 36.4239 23.5 35 23.5H3C1.66524 23.5 0.5 22.4131 0.5 21V3C0.5 1.57614 1.57614 0.5 3 0.5Z" stroke="black" stroke-opacity="0.07" style="stroke:black;stroke-opacity:0.07;"/><path d="M25.8662 6.33203V3H31L31.8662 5.5332L32.7334 3H37V14.2002H36.7998L34.8672 16.2656L36.7998 18.3594H37V21.2666H33.5996L31.9336 19.3994L30.2002 21.2666H19.4668V12.666H16L20.2666 3H24.4004L25.8662 6.33203ZM20.5996 20.2656H27V18.5322H22.666V17.3994H26.8662V15.666H22.666V14.5322H27V12.7988H20.5996V20.2656ZM30.5332 16.5322L27 20.2656H29.5996L31.8662 17.8662L34.0664 20.2656H36.7324L33.1992 16.4658L36.7324 12.7988H34.1328L31.8662 15.1992L29.7324 12.7988H27L30.5332 16.5322ZM17.666 11.7324H19.9326L20.5332 10.1992H23.999L24.666 11.7324H26.999L23.666 4.19922H20.999L17.666 11.7324ZM33.5996 4.19922L31.9326 8.86621L30.1992 4.19922H27V11.666H29.0664V6.39941L31 11.666H32.7998L34.7324 6.39941V11.666H36.7324V4.13281L33.5996 4.19922ZM23.2656 8.46582H21.2656L22.2656 5.99902L23.2656 8.46582Z" fill="white" style="fill:white;fill-opacity:1;"/></svg>
</li><li><svg version="1.1" xmlns="http://www.w3.org/2000/svg" role="img" x="0" y="0" width="38" height="24" viewBox="0 0 165.521 105.965" xml:space="preserve" aria-labelledby="pi-apple_pay"><title id="pi-apple_pay">Apple Pay</title><path fill="#000" d="M150.698 0H14.823c-.566 0-1.133 0-1.698.003-.477.004-.953.009-1.43.022-1.039.028-2.087.09-3.113.274a10.51 10.51 0 0 0-2.958.975 9.932 9.932 0 0 0-4.35 4.35 10.463 10.463 0 0 0-.975 2.96C.113 9.611.052 10.658.024 11.696a70.22 70.22 0 0 0-.022 1.43C0 13.69 0 14.256 0 14.823v76.318c0 .567 0 1.132.002 1.699.003.476.009.953.022 1.43.028 1.036.09 2.084.275 3.11a10.46 10.46 0 0 0 .974 2.96 9.897 9.897 0 0 0 1.83 2.52 9.874 9.874 0 0 0 2.52 1.83c.947.483 1.917.79 2.96.977 1.025.183 2.073.245 3.112.273.477.011.953.017 1.43.02.565.004 1.132.004 1.698.004h135.875c.565 0 1.132 0 1.697-.004.476-.002.952-.009 1.431-.02 1.037-.028 2.085-.09 3.113-.273a10.478 10.478 0 0 0 2.958-.977 9.955 9.955 0 0 0 4.35-4.35c.483-.947.789-1.917.974-2.96.186-1.026.246-2.074.274-3.11.013-.477.02-.954.022-1.43.004-.567.004-1.132.004-1.699V14.824c0-.567 0-1.133-.004-1.699a63.067 63.067 0 0 0-.022-1.429c-.028-1.038-.088-2.085-.274-3.112a10.4 10.4 0 0 0-.974-2.96 9.94 9.94 0 0 0-4.35-4.35A10.52 10.52 0 0 0 156.939.3c-1.028-.185-2.076-.246-3.113-.274a71.417 71.417 0 0 0-1.431-.022C151.83 0 151.263 0 150.698 0z" /><path fill="#FFF" d="M150.698 3.532l1.672.003c.452.003.905.008 1.36.02.793.022 1.719.065 2.583.22.75.135 1.38.34 1.984.648a6.392 6.392 0 0 1 2.804 2.807c.306.6.51 1.226.645 1.983.154.854.197 1.783.218 2.58.013.45.019.9.02 1.36.005.557.005 1.113.005 1.671v76.318c0 .558 0 1.114-.004 1.682-.002.45-.008.9-.02 1.35-.022.796-.065 1.725-.221 2.589a6.855 6.855 0 0 1-.645 1.975 6.397 6.397 0 0 1-2.808 2.807c-.6.306-1.228.511-1.971.645-.881.157-1.847.2-2.574.22-.457.01-.912.017-1.379.019-.555.004-1.113.004-1.669.004H14.801c-.55 0-1.1 0-1.66-.004a74.993 74.993 0 0 1-1.35-.018c-.744-.02-1.71-.064-2.584-.22a6.938 6.938 0 0 1-1.986-.65 6.337 6.337 0 0 1-1.622-1.18 6.355 6.355 0 0 1-1.178-1.623 6.935 6.935 0 0 1-.646-1.985c-.156-.863-.2-1.788-.22-2.578a66.088 66.088 0 0 1-.02-1.355l-.003-1.327V14.474l.002-1.325a66.7 66.7 0 0 1 .02-1.357c.022-.792.065-1.717.222-2.587a6.924 6.924 0 0 1 .646-1.981c.304-.598.7-1.144 1.18-1.623a6.386 6.386 0 0 1 1.624-1.18 6.96 6.96 0 0 1 1.98-.646c.865-.155 1.792-.198 2.586-.22.452-.012.905-.017 1.354-.02l1.677-.003h135.875" /><g><g><path fill="#000" d="M43.508 35.77c1.404-1.755 2.356-4.112 2.105-6.52-2.054.102-4.56 1.355-6.012 3.112-1.303 1.504-2.456 3.959-2.156 6.266 2.306.2 4.61-1.152 6.063-2.858" /><path fill="#000" d="M45.587 39.079c-3.35-.2-6.196 1.9-7.795 1.9-1.6 0-4.049-1.8-6.698-1.751-3.447.05-6.645 2-8.395 5.1-3.598 6.2-.95 15.4 2.55 20.45 1.699 2.5 3.747 5.25 6.445 5.151 2.55-.1 3.549-1.65 6.647-1.65 3.097 0 3.997 1.65 6.696 1.6 2.798-.05 4.548-2.5 6.247-5 1.95-2.85 2.747-5.6 2.797-5.75-.05-.05-5.396-2.101-5.446-8.251-.05-5.15 4.198-7.6 4.398-7.751-2.399-3.548-6.147-3.948-7.447-4.048" /></g><g><path fill="#000" d="M78.973 32.11c7.278 0 12.347 5.017 12.347 12.321 0 7.33-5.173 12.373-12.529 12.373h-8.058V69.62h-5.822V32.11h14.062zm-8.24 19.807h6.68c5.07 0 7.954-2.729 7.954-7.46 0-4.73-2.885-7.434-7.928-7.434h-6.706v14.894z" /><path fill="#000" d="M92.764 61.847c0-4.809 3.665-7.564 10.423-7.98l7.252-.442v-2.08c0-3.04-2.001-4.704-5.562-4.704-2.938 0-5.07 1.507-5.51 3.82h-5.252c.157-4.86 4.731-8.395 10.918-8.395 6.654 0 10.995 3.483 10.995 8.89v18.663h-5.38v-4.497h-.13c-1.534 2.937-4.914 4.782-8.579 4.782-5.406 0-9.175-3.222-9.175-8.057zm17.675-2.417v-2.106l-6.472.416c-3.64.234-5.536 1.585-5.536 3.95 0 2.288 1.975 3.77 5.068 3.77 3.95 0 6.94-2.522 6.94-6.03z" /><path fill="#000" d="M120.975 79.652v-4.496c.364.051 1.247.103 1.715.103 2.573 0 4.029-1.09 4.913-3.899l.52-1.663-9.852-27.293h6.082l6.863 22.146h.13l6.862-22.146h5.927l-10.216 28.67c-2.34 6.577-5.017 8.735-10.683 8.735-.442 0-1.872-.052-2.261-.157z" /></g></g></svg>
</li><li><svg viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img" width="38" height="24" aria-labelledby="pi-diners_club"><title id="pi-diners_club">Diners Club</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path d="M12 12v3.7c0 .3-.2.3-.5.2-1.9-.8-3-3.3-2.3-5.4.4-1.1 1.2-2 2.3-2.4.4-.2.5-.1.5.2V12zm2 0V8.3c0-.3 0-.3.3-.2 2.1.8 3.2 3.3 2.4 5.4-.4 1.1-1.2 2-2.3 2.4-.4.2-.4.1-.4-.2V12zm7.2-7H13c3.8 0 6.8 3.1 6.8 7s-3 7-6.8 7h8.2c3.8 0 6.8-3.1 6.8-7s-3-7-6.8-7z" fill="#3086C8"/></svg></li><li><svg viewBox="0 0 38 24" width="38" height="24" role="img" aria-labelledby="pi-discover" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="pi-discover">Discover</title><path fill="#000" opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32z" fill="#fff"/><path d="M3.57 7.16H2v5.5h1.57c.83 0 1.43-.2 1.96-.63.63-.52 1-1.3 1-2.11-.01-1.63-1.22-2.76-2.96-2.76zm1.26 4.14c-.34.3-.77.44-1.47.44h-.29V8.1h.29c.69 0 1.11.12 1.47.44.37.33.59.84.59 1.37 0 .53-.22 1.06-.59 1.39zm2.19-4.14h1.07v5.5H7.02v-5.5zm3.69 2.11c-.64-.24-.83-.4-.83-.69 0-.35.34-.61.8-.61.32 0 .59.13.86.45l.56-.73c-.46-.4-1.01-.61-1.62-.61-.97 0-1.72.68-1.72 1.58 0 .76.35 1.15 1.35 1.51.42.15.63.25.74.31.21.14.32.34.32.57 0 .45-.35.78-.83.78-.51 0-.92-.26-1.17-.73l-.69.67c.49.73 1.09 1.05 1.9 1.05 1.11 0 1.9-.74 1.9-1.81.02-.89-.35-1.29-1.57-1.74zm1.92.65c0 1.62 1.27 2.87 2.9 2.87.46 0 .86-.09 1.34-.32v-1.26c-.43.43-.81.6-1.29.6-1.08 0-1.85-.78-1.85-1.9 0-1.06.79-1.89 1.8-1.89.51 0 .9.18 1.34.62V7.38c-.47-.24-.86-.34-1.32-.34-1.61 0-2.92 1.28-2.92 2.88zm12.76.94l-1.47-3.7h-1.17l2.33 5.64h.58l2.37-5.64h-1.16l-1.48 3.7zm3.13 1.8h3.04v-.93h-1.97v-1.48h1.9v-.93h-1.9V8.1h1.97v-.94h-3.04v5.5zm7.29-3.87c0-1.03-.71-1.62-1.95-1.62h-1.59v5.5h1.07v-2.21h.14l1.48 2.21h1.32l-1.73-2.32c.81-.17 1.26-.72 1.26-1.56zm-2.16.91h-.31V8.03h.33c.67 0 1.03.28 1.03.82 0 .55-.36.85-1.05.85z" fill="#231F20"/><path d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint0_linear)"/><path opacity=".65" d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint1_linear)"/><path d="M36.57 7.506c0-.1-.07-.15-.18-.15h-.16v.48h.12v-.19l.14.19h.14l-.16-.2c.06-.01.1-.06.1-.13zm-.2.07h-.02v-.13h.02c.06 0 .09.02.09.06 0 .05-.03.07-.09.07z" fill="#231F20"/><path d="M36.41 7.176c-.23 0-.42.19-.42.42 0 .23.19.42.42.42.23 0 .42-.19.42-.42 0-.23-.19-.42-.42-.42zm0 .77c-.18 0-.34-.15-.34-.35 0-.19.15-.35.34-.35.18 0 .33.16.33.35 0 .19-.15.35-.33.35z" fill="#231F20"/><path d="M37 12.984S27.09 19.873 8.976 23h26.023a2 2 0 002-1.984l.024-3.02L37 12.985z" fill="#F48120"/><defs><linearGradient id="pi-paint0_linear" x1="21.657" y1="12.275" x2="19.632" y2="9.104" gradientUnits="userSpaceOnUse"><stop stop-color="#F89F20"/><stop offset=".25" stop-color="#F79A20"/><stop offset=".533" stop-color="#F68D20"/><stop offset=".62" stop-color="#F58720"/><stop offset=".723" stop-color="#F48120"/><stop offset="1" stop-color="#F37521"/></linearGradient><linearGradient id="pi-paint1_linear" x1="21.338" y1="12.232" x2="18.378" y2="6.446" gradientUnits="userSpaceOnUse"><stop stop-color="#F58720"/><stop offset=".359" stop-color="#E16F27"/><stop offset=".703" stop-color="#D4602C"/><stop offset=".982" stop-color="#D05B2E"/></linearGradient></defs></svg></li><li><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-google_pay"><title id="pi-google_pay">Google Pay</title><path d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000" opacity=".07"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32" fill="#FFF"/><path d="M18.093 11.976v3.2h-1.018v-7.9h2.691a2.447 2.447 0 0 1 1.747.692 2.28 2.28 0 0 1 .11 3.224l-.11.116c-.47.447-1.098.69-1.747.674l-1.673-.006zm0-3.732v2.788h1.698c.377.012.741-.135 1.005-.404a1.391 1.391 0 0 0-1.005-2.354l-1.698-.03zm6.484 1.348c.65-.03 1.286.188 1.778.613.445.43.682 1.03.65 1.649v3.334h-.969v-.766h-.049a1.93 1.93 0 0 1-1.673.931 2.17 2.17 0 0 1-1.496-.533 1.667 1.667 0 0 1-.613-1.324 1.606 1.606 0 0 1 .613-1.336 2.746 2.746 0 0 1 1.698-.515c.517-.02 1.03.093 1.49.331v-.208a1.134 1.134 0 0 0-.417-.901 1.416 1.416 0 0 0-.98-.368 1.545 1.545 0 0 0-1.319.717l-.895-.564a2.488 2.488 0 0 1 2.182-1.06zM23.29 13.52a.79.79 0 0 0 .337.662c.223.176.5.269.785.263.429-.001.84-.17 1.146-.472.305-.286.478-.685.478-1.103a2.047 2.047 0 0 0-1.324-.374 1.716 1.716 0 0 0-1.03.294.883.883 0 0 0-.392.73zm9.286-3.75l-3.39 7.79h-1.048l1.281-2.728-2.224-5.062h1.103l1.612 3.885 1.569-3.885h1.097z" fill="#5F6368"/><path d="M13.986 11.284c0-.308-.024-.616-.073-.92h-4.29v1.747h2.451a2.096 2.096 0 0 1-.9 1.373v1.134h1.464a4.433 4.433 0 0 0 1.348-3.334z" fill="#4285F4"/><path d="M9.629 15.721a4.352 4.352 0 0 0 3.01-1.097l-1.466-1.14a2.752 2.752 0 0 1-4.094-1.44H5.577v1.17a4.53 4.53 0 0 0 4.052 2.507z" fill="#34A853"/><path d="M7.079 12.05a2.709 2.709 0 0 1 0-1.735v-1.17H5.577a4.505 4.505 0 0 0 0 4.075l1.502-1.17z" fill="#FBBC04"/><path d="M9.629 8.44a2.452 2.452 0 0 1 1.74.68l1.3-1.293a4.37 4.37 0 0 0-3.065-1.183 4.53 4.53 0 0 0-4.027 2.5l1.502 1.171a2.715 2.715 0 0 1 2.55-1.875z" fill="#EA4335"/></svg>
</li><li><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-master"><title id="pi-master">Mastercard</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#1C1C1C" style="fill:#1C1C1C;fill:color(display-p3 0.1098 0.1098 0.1098);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#232323" style="fill:#232323;fill:color(display-p3 0.1373 0.1373 0.1373);fill-opacity:1;"/><path d="M14.6364 19.2727C18.8538 19.2727 22.2727 15.8538 22.2727 11.6364C22.2727 7.41892 18.8538 4 14.6364 4C10.4189 4 7 7.41892 7 11.6364C7 15.8538 10.4189 19.2727 14.6364 19.2727Z" fill="#EB001B" style="fill:#EB001B;fill:color(display-p3 0.9216 0.0000 0.1059);fill-opacity:1;"/><path d="M23.3637 19.2727C27.5811 19.2727 31 15.8538 31 11.6364C31 7.41892 27.5811 4 23.3637 4C19.1462 4 15.7273 7.41892 15.7273 11.6364C15.7273 15.8538 19.1462 19.2727 23.3637 19.2727Z" fill="#F79E1B" style="fill:#F79E1B;fill:color(display-p3 0.9686 0.6196 0.1059);fill-opacity:1;"/><path d="M22.2727 11.6362C22.2727 9.01797 20.9637 6.72706 19 5.41797C17.0364 6.83615 15.7273 9.12706 15.7273 11.6362C15.7273 14.1452 17.0364 16.5452 19 17.8543C20.9637 16.5452 22.2727 14.2543 22.2727 11.6362Z" fill="#FF5F00" style="fill:#FF5F00;fill:color(display-p3 1.0000 0.3725 0.0000);fill-opacity:1;"/></svg>
</li><li><svg viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-paypal"><title id="pi-paypal">PayPal</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path fill="#003087" d="M23.9 8.3c.2-1 0-1.7-.6-2.3-.6-.7-1.7-1-3.1-1h-4.1c-.3 0-.5.2-.6.5L14 15.6c0 .2.1.4.3.4H17l.4-3.4 1.8-2.2 4.7-2.1z"/><path fill="#3086C8" d="M23.9 8.3l-.2.2c-.5 2.8-2.2 3.8-4.6 3.8H18c-.3 0-.5.2-.6.5l-.6 3.9-.2 1c0 .2.1.4.3.4H19c.3 0 .5-.2.5-.4v-.1l.4-2.4v-.1c0-.2.3-.4.5-.4h.3c2.1 0 3.7-.8 4.1-3.2.2-1 .1-1.8-.4-2.4-.1-.5-.3-.7-.5-.8z"/><path fill="#012169" d="M23.3 8.1c-.1-.1-.2-.1-.3-.1-.1 0-.2 0-.3-.1-.3-.1-.7-.1-1.1-.1h-3c-.1 0-.2 0-.2.1-.2.1-.3.2-.3.4l-.7 4.4v.1c0-.3.3-.5.6-.5h1.3c2.5 0 4.1-1 4.6-3.8v-.2c-.1-.1-.3-.2-.5-.2h-.1z"/></svg></li><li><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-shopify_pay"><title id="pi-shopify_pay">Shop Pay</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000"/><path d="M35.889 0C37.05 0 38 .982 38 2.182v19.636c0 1.2-.95 2.182-2.111 2.182H2.11C.95 24 0 23.018 0 21.818V2.182C0 .982.95 0 2.111 0H35.89z" fill="#5A31F4"/><path d="M9.35 11.368c-1.017-.223-1.47-.31-1.47-.705 0-.372.306-.558.92-.558.54 0 .934.238 1.225.704a.079.079 0 00.104.03l1.146-.584a.082.082 0 00.032-.114c-.475-.831-1.353-1.286-2.51-1.286-1.52 0-2.464.755-2.464 1.956 0 1.275 1.15 1.597 2.17 1.82 1.02.222 1.474.31 1.474.705 0 .396-.332.582-.993.582-.612 0-1.065-.282-1.34-.83a.08.08 0 00-.107-.035l-1.143.57a.083.083 0 00-.036.111c.454.92 1.384 1.437 2.627 1.437 1.583 0 2.539-.742 2.539-1.98s-1.155-1.598-2.173-1.82v-.003zM15.49 8.855c-.65 0-1.224.232-1.636.646a.04.04 0 01-.069-.03v-2.64a.08.08 0 00-.08-.081H12.27a.08.08 0 00-.08.082v8.194a.08.08 0 00.08.082h1.433a.08.08 0 00.081-.082v-3.594c0-.695.528-1.227 1.239-1.227.71 0 1.226.521 1.226 1.227v3.594a.08.08 0 00.081.082h1.433a.08.08 0 00.081-.082v-3.594c0-1.51-.981-2.577-2.355-2.577zM20.753 8.62c-.778 0-1.507.24-2.03.588a.082.082 0 00-.027.109l.632 1.088a.08.08 0 00.11.03 2.5 2.5 0 011.318-.366c1.25 0 2.17.891 2.17 2.068 0 1.003-.736 1.745-1.669 1.745-.76 0-1.288-.446-1.288-1.077 0-.361.152-.657.548-.866a.08.08 0 00.032-.113l-.596-1.018a.08.08 0 00-.098-.035c-.799.299-1.359 1.018-1.359 1.984 0 1.46 1.152 2.55 2.76 2.55 1.877 0 3.227-1.313 3.227-3.195 0-2.018-1.57-3.492-3.73-3.492zM28.675 8.843c-.724 0-1.373.27-1.845.746-.026.027-.069.007-.069-.029v-.572a.08.08 0 00-.08-.082h-1.397a.08.08 0 00-.08.082v8.182a.08.08 0 00.08.081h1.433a.08.08 0 00.081-.081v-2.683c0-.036.043-.054.069-.03a2.6 2.6 0 001.808.7c1.682 0 2.993-1.373 2.993-3.157s-1.313-3.157-2.993-3.157zm-.271 4.929c-.956 0-1.681-.768-1.681-1.783s.723-1.783 1.681-1.783c.958 0 1.68.755 1.68 1.783 0 1.027-.713 1.783-1.681 1.783h.001z" fill="#fff"/></svg>
</li><li><svg viewBox="0 0 38 24" width="38" height="24" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="pi-venmo"><title id="pi-venmo">Venmo</title><g fill="none" fill-rule="evenodd"><rect fill-opacity=".07" fill="#000" width="38" height="24" rx="3"/><path fill="#3D95CE" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path d="M24.675 8.36c0 3.064-2.557 7.045-4.633 9.84h-4.74L13.4 6.57l4.151-.402 1.005 8.275c.94-1.566 2.099-4.025 2.099-5.702 0-.918-.154-1.543-.394-2.058l3.78-.783c.437.738.634 1.499.634 2.46z" fill="#FFF" fill-rule="nonzero"/></g></svg>
</li><li><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-visa"><title id="pi-visa">Visa</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#142FBD" style="fill:#142FBD;fill:color(display-p3 0.0784 0.1843 0.7412);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#1532CB" style="fill:#1532CB;fill:color(display-p3 0.0824 0.1961 0.7961);fill-opacity:1;"/><path d="M29.5944 10.2167H29.2778C28.8556 11.2722 28.5389 11.8 28.2222 13.3833H30.2278C29.9111 11.8 29.9111 11.0611 29.5944 10.2167V10.2167ZM32.6556 16.4444H30.8611C30.7556 16.4444 30.7556 16.4444 30.65 16.3389L30.4389 15.3889L30.3333 15.1778H27.8C27.6944 15.1778 27.5889 15.1778 27.5889 15.3889L27.2722 16.3389C27.2722 16.4444 27.1667 16.4444 27.1667 16.4444H24.95L25.1611 15.9167L28.2222 8.73889C28.2222 8.21111 28.5389 8 29.0667 8H30.65C30.7556 8 30.8611 8 30.8611 8.21111L32.3389 15.0722C32.4444 15.4944 32.55 15.8111 32.55 16.2333C32.6556 16.3389 32.6556 16.3389 32.6556 16.4444V16.4444ZM18.5111 16.1278L18.9333 14.2278C19.0389 14.2278 19.1444 14.3333 19.1444 14.3333C19.8833 14.65 20.6222 14.8611 21.3611 14.7556C21.5722 14.7556 21.8889 14.65 22.1 14.5444C22.6278 14.3333 22.6278 13.8056 22.2056 13.3833C21.9944 13.1722 21.6778 13.0667 21.3611 12.8556C20.9389 12.6444 20.5167 12.4333 20.2 12.1167C18.9333 11.0611 19.3556 9.58333 20.0944 8.84444C20.7278 8.42222 21.0444 8 21.8889 8C23.1556 8 24.5278 8 25.1611 8.21111H25.2667C25.1611 8.84444 25.0556 9.37222 24.8444 10.0056C24.3167 9.79444 23.7889 9.58333 23.2611 9.58333C22.9444 9.58333 22.6278 9.58333 22.3111 9.68889C22.1 9.68889 21.9944 9.79444 21.8889 9.9C21.6778 10.1111 21.6778 10.4278 21.8889 10.6389L22.4167 11.0611C22.8389 11.2722 23.2611 11.4833 23.5778 11.6944C24.1056 12.0111 24.6333 12.5389 24.7389 13.1722C24.95 14.1222 24.6333 14.9667 23.7889 15.6C23.2611 16.0222 23.05 16.2333 22.3111 16.2333C20.8333 16.2333 19.6722 16.3389 18.7222 16.0222C18.6167 16.2333 18.6167 16.2333 18.5111 16.1278V16.1278ZM14.8167 16.4444C14.9222 15.7056 14.9222 15.7056 15.0278 15.3889C15.5556 13.0667 16.0833 10.6389 16.5056 8.31667C16.6111 8.10556 16.6111 8 16.8222 8H18.7222C18.5111 9.26667 18.3 10.2167 17.9833 11.3778C17.6667 12.9611 17.35 14.5444 16.9278 16.1278C16.9278 16.3389 16.8222 16.3389 16.6111 16.3389L14.8167 16.4444ZM5 8.21111C5 8.10556 5.21111 8 5.31667 8H8.90556C9.43333 8 9.85556 8.31667 9.96111 8.84444L10.9111 13.4889C10.9111 13.5944 10.9111 13.5944 11.0167 13.7C11.0167 13.5944 11.1222 13.5944 11.1222 13.5944L13.3389 8.21111C13.2333 8.10556 13.3389 8 13.4444 8H15.6611C15.6611 8.10556 15.6611 8.10556 15.5556 8.21111L12.2833 15.9167C12.1778 16.1278 12.1778 16.2333 12.0722 16.3389C11.9667 16.4444 11.7556 16.3389 11.5444 16.3389H9.96111C9.85556 16.3389 9.75 16.3389 9.75 16.1278L8.06111 9.58333C7.85 9.37222 7.53333 9.05556 7.11111 8.95C6.47778 8.63333 5.31667 8.42222 5.10556 8.42222L5 8.21111Z" fill="white" style="fill:white;fill-opacity:1;"/></svg>
</li></ul></div>
</div>


</div>
<!-- END sections: footer-group --></footer>
    </div>

    <ul hidden>
      <li id="a11y-refresh-page-message">Choosing a selection results in a full page refresh.</li>
      <li id="a11y-new-window-message">Opens in a new window.</li>
    </ul><script src="//www.crowdcompass.io/cdn/shop/t/56/assets/instant-page.js?v=99963444960178710701769371152" type="module" fetchpriority="low" defer="defer"></script><style>  </style>
<div id="shopify-block-AcnZVK2xRcGJ4SEdOd__9696655121035291526" class="shopify-block shopify-app-block">


<input id="rappi-shop-permanent-domain" type="hidden" value="f8e228.myshopify.com">
<input id="rappi-page-type" type="hidden" value="index">
<input id="rappi-product-id" type="hidden" value="">
<input id="rappi-money-format" type="hidden" value="$">
<div id="load-font"></div>

<input id="rappi-collection-ids" type="hidden" value="">
<input id="rappi-money-format-template" type="hidden" value="${{amount_no_decimals}}">
<input id="rappi-country-code" type="hidden" value="US">
<div id="rappi-image-container" style="display:none"></div>





<script>
    window.Shopify = window.Shopify || {};
    const _rb2bCustomer = null;
</script>

<script> let installedAt = false; </script>





    <script>
        let _qbrb = undefined;
        // let custom__qbrbs = [];
        let _cprb = undefined;
        let _api_status = false;
        var collectionIds = "".length > 0 ? "".split(",") : [];
        const _rpShopDomain = "f8e228.myshopify.com";
        const _rpCountryCode = (document.getElementById('rappi-country-code')?.value || '').toUpperCase();
        const _rapiPageType = "index";
        function _rapiIsHomepagePageType() {
            return _rapiPageType === "index";
        }
        function _rapiHasPlacementNode() {
            return document.querySelector("[data-rapi-id]") != null;
        }
        function _rapiShouldStartHomepageBundleInit() {
            if (_rapiIsHomepagePageType()) return true;
            return _rapiHasPlacementNode();
        }

        function _isBundleVisibleInMarket(bundle) {
            const markets = bundle.target_markets;
            if (!markets || !Array.isArray(markets) || markets.length === 0) return true;
            if (!_rpCountryCode) return true;
            return markets.some(m => String(m).toUpperCase() === _rpCountryCode);
        }

        function _freeGiftHasAutoAddWhenQtyMatch(fg) {
            if (!fg || typeof fg !== 'object') return false;
            var v = fg.auto_add_when_quantity_matches;
            if (v === true || v === 1 || v === '1') return true;
            v = fg.autoAddWhenQuantityMatches;
            return v === true || v === 1 || v === '1';
        }

        function _bundleHasAutogiftByFreeGifts(bundle) {
            if (!bundle || !bundle.offers || !bundle.offers.length || !bundle.free_gifts?.length) return false;
            for (var oi = 0; oi < bundle.free_gifts.length; oi++) {
                var fgs = bundle.free_gifts[oi] || [];
                if (_freeGiftHasAutoAddWhenQtyMatch(fgs)) return true;
                
            }
            return false;
        }

        function getRapiConfigFromAppData(dataObj) {
            if (!dataObj || typeof dataObj !== 'object') return {};
            const dataSource = dataObj?.data ?? dataObj;
            const raw = dataSource?.config;
            if (!raw) return {};
            if (typeof raw === 'object') return raw;
            try { return JSON.parse(raw); } catch (e) { return {}; }
        }

        function collectAutogiftBundlesFromAppData(dataObj) {
            var out = [];
            if (!dataObj || typeof dataObj !== 'object') return out;
            let dataSource = dataObj?.data ?? dataObj;
            for (var key in dataSource) {
                if (!(key.startsWith("bundle_") && !key.startsWith("bundle_metaobject_type"))) continue;
                const bundle = (typeof dataSource[key] == "object") ? dataSource[key] : (typeof dataSource[key] == "string" && dataSource[key].includes('{') ) ?  JSON.parse(dataSource[key]) : dataSource[key];
                var raw = bundle;
                var b = null;
                if (typeof raw === 'object' && raw !== null) {
                    b = raw;
                } else if (typeof raw === 'string' && raw.indexOf('{') !== -1) {
                    try { b = JSON.parse(raw); } catch (e) { b = null; }
                }
                if (!b || !b.is_published || b.is_archived){ continue; } 
                if (!_isBundleVisibleInMarket(b)) { continue; } 
                if (b.exclude_b2b_customer && _rb2bCustomer) {continue;} 
                if (!_bundleHasAutogiftByFreeGifts(b)) {continue;} 
                if (b.parent_bundle_id) { continue;} 
                out.push(b);
            }
            return out;
        }

        function transformProduct(product) {
            const centsToDollars = (cents) => (cents / 100).toFixed(2);

            const getCurrentDate = () => new Date().toISOString();

            const getUniqueOptionValues = (optionIndex) => {
                return product.variants
                    .map(variant => variant[`option${optionIndex + 1}`])
                    .filter((value, index, self) => value && self.indexOf(value) === index);
            };

            const availableOptions = {};
            const variants = [];
            const inStockVariants = []
            const allSellingPlan = {}

            if(product?.selling_plan_groups?.length) {
                product?.selling_plan_groups?.map(sellingPlans => {

                    if(sellingPlans?.selling_plans?.length) {
                        sellingPlans?.selling_plans.map(sellingPlan => {
                            if(sellingPlan.id) allSellingPlan[`id-${sellingPlan.id}`] = sellingPlan
                        })
                    }
                })
            }

            product.variants.map((variant, index) => {
                const variantObj = {
                    id: Date.now() + index,
                    product_id: product.id,
                    shopify_variant_id: variant.id,
                    title: variant.title,
                    position: index + 1,
                    price: parseFloat(centsToDollars(variant.price)),
                    compare_at_price: variant.compare_at_price ? parseFloat(centsToDollars(variant.compare_at_price)) : null,
                    inventory_quantity: variant.inventory_quantity || null,
                    image_url: variant.featured_image ? variant.featured_image.src : null,
                    option1: variant.option1,
                    option2: variant.option2,
                    option3: variant.option3,
                    available: variant?.available,
                    created_at: variant.created_at || getCurrentDate(),
                    updated_at: variant.updated_at || getCurrentDate()
                }

                if(variant?.selling_plan_allocations?.length) {
                    const planArr = [];
                    variant.selling_plan_allocations.map(item => {
                        const itemObj = {
                            ...item,
                            amount: Number((item.price / 100)?.toFixed(2)),
                            id: item.selling_plan_id,
                            name: "",
                        }
                        if(item.selling_plan_id && allSellingPlan[`id-${item.selling_plan_id}`])
                            itemObj.name = allSellingPlan[`id-${item.selling_plan_id}`].name;
                        planArr.push(itemObj)
                    })

                    if(planArr.length > 0) variantObj.selling_plans = planArr
                }

                variants.push(variantObj)

                if(_qbrb?.bundle?.hide_when_out_of_stock) {
                    if(!variant.available) return;
                    variant.options.map((optVal, optIndex) => {
                        if(availableOptions[optIndex]) availableOptions[optIndex].push(optVal)
                        else availableOptions[optIndex] = [optVal]
                    });
                    inStockVariants.push(variantObj)
                }
            });

            const options = [];
            product.options.map((option, index) => {
                const optObj = {
                    id: Date.now() + index,
                    product_id: product.id,
                    name: option,
                    position: index + 1,
                    values: getUniqueOptionValues(index)
                };

                if(_qbrb?.bundle?.hide_when_out_of_stock) {
                    optObj.values = optObj.values.filter(optVal => availableOptions[index]?.includes(optVal))
                    if(optObj.values.length > 0) options.push(optObj);
                } else {
                    options.push(optObj);
                }
            });

            const productVendorStr = product.vendor != null ? String(product.vendor).trim() : "";

            return {
                id: product.id,
                shopify_product_id: product.id,
                productTitle: product.title,
                productVendor: productVendorStr,
                options: options,
                variants: inStockVariants?.length > 0 ? inStockVariants : variants,
                image_url: product?.images?.length > 0 ? product.images[0] : "",
                all_selling_plans: allSellingPlan
            };
        }

        async function fetchBundleVariant (bundleDetails, abTestBundleIDs = []) {
            window.rapiFetch = true;
            _api_status = true;
            const rapiUrl = `https://app.rapibundle.com/api/storefront/${_rpShopDomain}/bundle-visits?bundle_id=${bundleDetails.id}&variant_ids=${abTestBundleIDs.join(",")}`

            const rapiApiResponse = await fetch(rapiUrl);
            const responseData = await rapiApiResponse.json()

            _api_status = false;
            return responseData.data.bundle_id
        }

        async function extractBundle (obj, bndlKey){
            let bundleDetails = {};
            let rapi_config = {};
            var productId = Number();
            const allParentBundle = {};
            // var collectionIds = "".length > 0 ? "".split(",") : [];

            for (const key in obj) {
                if (key.startsWith(bndlKey) && !key.startsWith("bundle_metaobject_type")) {
                    const bundle = (typeof obj[key] == "object") ? obj[key] : (typeof obj[key] == "string" && obj[key].includes('{') ) ?  JSON.parse(obj[key]) : obj[key];
                    if(!bundle.is_published || !!bundle?.is_archived) continue;
                    if(!_isBundleVisibleInMarket(bundle)) continue;
                    if (typeof bundle.selected_products === 'string') {
                        bundle.selected_products = bundle.selected_products
                            .split(',')
                            .filter(Boolean)
                            .map(id => ({ shopify_product_id: Number(id) }));
                    } else if (!Array.isArray(bundle.selected_products)) {
                        bundle.selected_products = [];
                    } 

                    // Visibility: excluded-products
                    const excludedProductCondition = bundle.visibility === 'excluded-products' &&
                        !bundle.selected_products.some(product => product.shopify_product_id === productId);

                    // Visibility: selected-products or selected-collections
                    const selectedProductCondition = ['selected-products'].includes(bundle.visibility) &&
                        bundle.selected_products.some(product => product.shopify_product_id === productId);

                    const selectedCollectinCondition = bundle.visibility === 'selected-collections' &&
                        bundle.selected_collections.some(collection => collectionIds.findIndex((val) => val == collection.shopify_collection_id) > -1);

                    // Visibility: all-products
                    const allProductCondition = bundle.visibility === 'all-products';

                    if (excludedProductCondition || selectedProductCondition || allProductCondition || selectedCollectinCondition) {
                        if(bundle.exclude_b2b_customer && _rb2bCustomer ) continue;

                        // Handle A/B test variant bundles (those with parent_bundle_id)
                        // Always add variant bundles to allParentBundle, regardless of is_ab_test_active flag
                        if(bundle.parent_bundle_id) {
                            if(!allParentBundle[bundle.parent_bundle_id]) {
                                allParentBundle[bundle.parent_bundle_id] = {};
                            }
                            allParentBundle[bundle.parent_bundle_id][bundle.id] = bundle;
                        }
                        // Handle parent bundles with A/B testing active
                        else if(bundle.ab_test_variant_number || bundle.is_ab_test_active) {
                            if(!allParentBundle[bundle.id]) {
                                allParentBundle[bundle.id] = {};
                            }
                            allParentBundle[bundle.id][bundle.id] = bundle;
                        }

                        // Set bundleDetails to parent bundles only (those without parent_bundle_id)
                        if(!bundle.parent_bundle_id) bundleDetails = bundle;
                    }
                }

                if(key == "config"){
                    rapi_config = JSON.parse(obj[key])
                    installedAt = rapi_config.created_at
                }
            }

            // Ensure the parent bundle is included in allParentBundle if there are variants
            // This handles cases where the parent's is_ab_test_active might be false in old metafields
            if(bundleDetails.id && allParentBundle[bundleDetails.id] && !allParentBundle[bundleDetails.id][bundleDetails.id]) {
                allParentBundle[bundleDetails.id][bundleDetails.id] = bundleDetails;
            }

            const localStorageKey = "rapi-bundle-" + bundleDetails.id + "-shop-" + _rpShopDomain
            const extingBundleID = localStorage.getItem(localStorageKey)
            const abTestBundles = allParentBundle[bundleDetails.id] ?? {}
            const abBundleIDs = Object.keys(abTestBundles);

            if(extingBundleID && abBundleIDs.includes(extingBundleID) && abBundleIDs.length > 1) {
                bundleDetails = abTestBundles[extingBundleID] ?? {}
            } else if(abBundleIDs.length > 1) {
                showBundleID = await fetchBundleVariant(bundleDetails, abBundleIDs)
                bundleDetails = abTestBundles[showBundleID] ?? {}
                localStorage.setItem(localStorageKey, showBundleID);
            }

            return { bundle: bundleDetails, config: rapi_config, autogift_bundles: collectAutogiftBundlesFromAppData(obj) };
        }

        async function extractBundleHomePage (obj, bndlKey) {
            let bundleDetails = [];
            let rapi_config = {};
            const allParentBundle = {};

            for (const key in obj) {
                if (key.startsWith(bndlKey)) {
                    const bundle = (typeof obj[key] == "object") ? obj[key] : (typeof obj[key] == "string" && obj[key].includes('{') ) ?  JSON.parse(obj[key]) : obj[key];
                    if(!bundle.is_published || !!bundle?.is_archived) continue;
                    if(!_isBundleVisibleInMarket(bundle)) continue;
                    if(!bundle?.show_bundle_on_homepage && _rapiIsHomepagePageType() && document.querySelector("[data-rapi-id]") == null ) continue;
                    if (typeof bundle.selected_products === 'string') {
                        bundle.selected_products = bundle.selected_products
                            .split(',')
                            .filter(Boolean)
                            .map(id => ({ shopify_product_id: Number(id) }));
                    } else if (!Array.isArray(bundle.selected_products)) {
                        bundle.selected_products = [];
                    } 

                    if(bundle?.exclude_b2b_customer == true && _rb2bCustomer) continue;

                    // Handle A/B test variant bundles (those with parent_bundle_id)
                    // Always add variant bundles to allParentBundle, regardless of is_ab_test_active flag
                    if(bundle.parent_bundle_id) {
                        if(!allParentBundle[bundle.parent_bundle_id]) {
                            allParentBundle[bundle.parent_bundle_id] = {};
                        }
                        allParentBundle[bundle.parent_bundle_id][bundle.id] = bundle;
                    }
                    // Handle parent bundles with A/B testing active
                    else if(bundle.ab_test_variant_number || bundle.is_ab_test_active) {
                        if(!allParentBundle[bundle.id]) {
                            allParentBundle[bundle.id] = {};
                        }
                        allParentBundle[bundle.id][bundle.id] = bundle;
                    }

                    // Add parent bundles (those without parent_bundle_id) to bundleDetails
                    if(!bundle.parent_bundle_id) {
                        bundleDetails.push(bundle);
                    }
                }
                if(key == "config"){
                    rapi_config = JSON.parse(obj[key])
                    installedAt = rapi_config.created_at
                }
            }

            // Ensure parent bundles are included in allParentBundle if they have variants
            // This handles cases where the parent's is_ab_test_active might be false in old metafields
            for (const bundle of bundleDetails) {
                if(bundle.id && allParentBundle[bundle.id] && !allParentBundle[bundle.id][bundle.id]) {
                    allParentBundle[bundle.id][bundle.id] = bundle;
                }
            }

            // Process A/B testing for each bundle
            const processedBundles = [];
            for (const bundle of bundleDetails) {
                let finalBundle = bundle;
                const localStorageKey = "rapi-bundle-" + bundle.id + "-shop-" + _rpShopDomain
                const extingBundleID = localStorage.getItem(localStorageKey)
                const abTestBundles = allParentBundle[bundle.id] ?? {}
                const abBundleIDs = Object.keys(abTestBundles);
                if(abBundleIDs.length > 1 && !bundle.is_ab_test_active && !bundle.ab_test_variant_number) {
                    // Parent is not an A/B test — skip variant selection, use parent directly
                    processedBundles.push(finalBundle);
                    continue;
                }

                if(extingBundleID && abBundleIDs.includes(extingBundleID) && abBundleIDs.length > 1) {
                    finalBundle = abTestBundles[extingBundleID] ?? bundle
                } else if(abBundleIDs.length > 1) {
                    const showBundleID = await fetchBundleVariant(bundle, abBundleIDs)
                    finalBundle = abTestBundles[showBundleID] ?? bundle
                    localStorage.setItem(localStorageKey, showBundleID);
                }

                processedBundles.push(finalBundle);
            }

            return { bundle: {}, config: rapi_config, all_bundles: processedBundles, autogift_bundles: collectAutogiftBundlesFromAppData(obj) };
        }

        var __appDataMetafield = {"bundle_66329":{"id":66329,"uuid":"d6cac109-566a-4d0a-b2bb-a8a4d1532703","bundle_type":"quantity_breaks","manual_placement_id":"rapi_635b1006c9563850957","discount_app_id":"gid:\/\/shopify\/DiscountAutomaticNode\/1712814391581","app_metafield_gid":null,"user_id":37657,"name":"Crowd Compass Rental Bundle","title":"Bundle \u0026 Save","layout":"prestige","visibility":"selected-products","show_header_line":0,"header_line_thickness":2,"stacking_desktop":3,"stacking_mobile":3,"hide_when_out_of_stock":0,"swatch_size":null,"swatch_shape":null,"combo_discount_type":null,"combo_discount_value":null,"block_title_translations":null,"different_variants_enabled":false,"hide_variant_picker":false,"hide_theme_price":false,"show_prices_per_item":true,"show_both_prices":false,"use_product_compare_at_price":true,"price_rounding":false,"price_rounding_value":"00","skip_cart":true,"has_out_of_stock_message":0,"out_of_stock_message":"Quantity exceeds stock. Available quantity may still be added to cart.","show_bundle_on_homepage":false,"show_variants_for_single_quantity":false,"preselected_offer_id":1448459,"highlight_offer_id":1356418,"highlight_type":"text","highlight_text":"Most Popular","highlight_is_blinking":false,"highlight_timer_time":{"days":0,"hours":23,"minutes":59,"seconds":59,"timerText":null},"highlight_settings":{"color":"#ffffff","shape":null,"bg_color":"#e43a36ff","location":null},"checkmark":"none","color_settings":{"tags":"#777777","price":"#000000","title":"#000000","border":"#007BFF7A","footer":null,"header":"#000000","atc_btn":null,"fg_text":"#ffffff","fg_label":"#ffffff","fg_price":"#ff0000","fg_title":"#000000","quantity":null,"subtitle":"#777777ff","checkmark":"#007BFF","fg_locked":"#000000","plus_icon":null,"upsl_text":"#ffffff","background":"#007BFF0f","upsl_price":"#ffffff","fg_active_bg":"#6F42C1","fg_locked_bg":"#6F42C17A","footer_border":null,"upsl_checkbox":"#6F42C1","atc_btn_border":null,"compared_price":"#777777ff","upsl_active_bg":"#6F42C1","upsl_locked_bg":"#6F42C17A","tags_background":"#007BFF2B","fg_active_border":"#6F42C1","fg_locked_border":"#6F42C17A","footer_background":null,"atc_btn_background":null,"bg_selected_bundle":"#FFFFFF","quantity_background":null,"upsl_compared_price":"#ffffff","border_selected_bundle":"#007BFF"},"typography_settings":{"shape":0,"fg_size":14,"add_icon":null,"fg_weight":"regular","font_size":"28","upsl_size":14,"text_align":"left","bundles_gap":4,"font_family":null,"font_weight":"bold","upsl_weight":"regular","block_radius":12,"border_width":2,"subtitle_size":14,"highlight_size":12,"subtitle_weight":"regular","highlight_weight":"regular","bundles_gap_bottom":4,"footer_spacing_top":null,"product_image_size":50,"product_title_font":null,"product_title_size":16,"product_title_weight":"regular","footer_spacing_bottom":null},"footer_text":null,"call_to_action_button_text":null,"footer_settings":null,"action_button_settings":null,"is_published":true,"is_processed":1,"is_offer_clickable":0,"is_open_new_tab":1,"total_revenues":145692.04,"activation_type":"immediate","start_date_time":null,"end_date_time":null,"timezone":"UTC","created_at":"2025-05-22T03:23:12.000000Z","updated_at":"2025-05-22T03:48:04.000000Z","free_gift_template":"inline","offers":[{"id":1448459,"bundle_id":66329,"title":"Two Pack","subtitle":"Price Per Compass","quantity":2,"xqty":1,"yqty":1,"tags":null,"discount_type":"amount","discount_value":0,"image":null,"image_size":null,"image_radius":null,"translations":null,"created_at":"2025-05-22T03:48:02.000000Z","updated_at":"2025-05-22T03:48:02.000000Z","offer_highlight":null},{"id":1448460,"bundle_id":66329,"title":"Three Pack","subtitle":"Price Per Compass","quantity":3,"xqty":1,"yqty":1,"tags":null,"discount_type":"amount","discount_value":1,"image":null,"image_size":null,"image_radius":null,"translations":null,"created_at":"2025-05-22T03:48:02.000000Z","updated_at":"2025-05-22T03:48:02.000000Z","offer_highlight":null},{"id":1448461,"bundle_id":66329,"title":"Four Pack","subtitle":"Price Per Compass","quantity":4,"xqty":1,"yqty":1,"tags":null,"discount_type":"amount","discount_value":2,"image":null,"image_size":null,"image_radius":null,"translations":null,"created_at":"2025-05-22T03:48:02.000000Z","updated_at":"2025-05-22T03:48:02.000000Z","offer_highlight":null},{"id":1448462,"bundle_id":66329,"title":"Five Pack","subtitle":"Price Per Compass","quantity":4,"xqty":1,"yqty":1,"tags":null,"discount_type":"amount","discount_value":3,"image":null,"image_size":50,"image_radius":5,"translations":null,"created_at":"2025-05-22T03:48:02.000000Z","updated_at":"2025-05-22T03:48:02.000000Z","offer_highlight":null},{"id":1448463,"bundle_id":66329,"title":"Six Pack","subtitle":"Price Per Compass","quantity":5,"xqty":1,"yqty":1,"tags":null,"discount_type":"amount","discount_value":4,"image":null,"image_size":50,"image_radius":5,"translations":null,"created_at":"2025-05-22T03:48:02.000000Z","updated_at":"2025-05-22T03:48:02.000000Z","offer_highlight":null}],"offer_upsells":[],"free_gifts":[],"offer_products":[],"offer_highlights":null,"selected_products":[{"id":18616063,"shopify_product_id":9852058370333}],"selected_collections":[],"color_swatches":[],"translations":[]},"bundle_metaobject_type":"app--6223601--rapi_bundle_payload","config":"{\"strfrnt_access_token\":\"n2s0sns35qqr6nnqn07oq067r71847s7\",\"api_version\":\"2025-07\",\"env\":\"dev\",\"currency_symbol\":\"$\",\"money_format\":\"${{amount_no_decimals}}\",\"created_at\":\"2025-01-31T03:44:17.000000Z\",\"bundle_metaobject_type\":\"app--6223601--rapi_bundle_payload\",\"custom_css_scope\":\"this_bundle\",\"shop_global_custom_css\":{\"css\":\"\",\"enabled\":false}}"};
        
        var __appDataMetaobject = {"config":"{\"strfrnt_access_token\":\"n2s0sns35qqr6nnqn07oq067r71847s7\",\"api_version\":\"2025-07\",\"env\":\"dev\",\"currency_symbol\":\"$\",\"money_format\":\"${{amount_no_decimals}}\",\"created_at\":\"2025-01-31T03:44:17.000000Z\",\"bundle_metaobject_type\":\"app--6223601--rapi_bundle_payload\",\"custom_css_scope\":\"this_bundle\",\"shop_global_custom_css\":{\"css\":\"\",\"enabled\":false}}","bundle_53792":"{\"id\":53792,\"parent_bundle_id\":null,\"uuid\":\"2c8efe5b-b0d7-4e68-bd63-6b3394e7520e\",\"is_freezed\":false,\"is_archived\":0,\"bundle_type\":\"quantity_breaks\",\"manual_placement_id\":\"rapi_62cfa1831beba0\",\"discount_app_id\":\"gid:\\\/\\\/shopify\\\/DiscountAutomaticNode\\\/1712814391581\",\"app_metafield_gid\":null,\"app_metaobject_gid\":\"gid:\\\/\\\/shopify\\\/Metaobject\\\/254668374301\",\"user_id\":37657,\"name\":\"Crowd Compass Volume Bundle\",\"title\":\"Bundle \u0026 Save\",\"layout\":\"prestige\",\"visibility\":\"selected-products\",\"target_markets\":[],\"show_header_line\":0,\"header_line_thickness\":2,\"stacking_desktop\":3,\"stacking_mobile\":3,\"hide_when_out_of_stock\":0,\"swatch_size\":null,\"swatch_shape\":null,\"prgs_template\":\"block\",\"prgs_position\":\"after-atc\",\"prgs_transition_type\":\"locker\",\"prgs_transition\":1,\"combo_discount_type\":null,\"combo_discount_value\":null,\"block_title_translations\":null,\"different_variants_enabled\":false,\"update_all_variants\":false,\"hide_variant_picker\":false,\"hide_theme_price\":false,\"update_product_price\":false,\"show_prices_per_item\":true,\"show_both_prices\":false,\"use_product_compare_at_price\":true,\"compare_at_source\":\"shopify_price\",\"price_rounding\":false,\"price_rounding_value\":\"00\",\"hide_decimals\":0,\"skip_cart\":true,\"has_out_of_stock_message\":0,\"out_of_stock_message\":\"Quantity exceeds stock. Available quantity may still be added to cart.\",\"show_bundle_on_homepage\":false,\"show_variants_for_single_quantity\":false,\"preselected_offer_id\":3210604,\"highlight_offer_id\":1356418,\"highlight_type\":\"text\",\"highlight_text\":\"Most Popular\",\"highlight_is_blinking\":false,\"highlight_timer_time\":{\"days\":0,\"hours\":23,\"minutes\":59,\"seconds\":59,\"timerText\":null},\"highlight_settings\":{\"color\":\"#ffffff\",\"shape\":null,\"bg_color\":\"#e43a36ff\",\"location\":null},\"checkmark\":\"none\",\"color_settings\":{\"tags\":\"#777777\",\"price\":\"#000000\",\"title\":\"#000000\",\"border\":\"#007BFF7A\",\"footer\":null,\"header\":\"#000000\",\"atc_btn\":null,\"fg_text\":\"#ffffff\",\"fg_label\":\"#ffffff\",\"fg_price\":\"#ff0000\",\"fg_title\":\"#000000\",\"quantity\":null,\"subtitle\":\"#777777ff\",\"checkmark\":\"#007BFF\",\"fg_locked\":\"#000000\",\"plus_icon\":null,\"upsl_text\":\"#ffffff\",\"background\":\"#007BFF0f\",\"upsl_price\":\"#ffffff\",\"prgs_fullbg\":\"#9013FE\",\"prgs_header\":\"#000000\",\"prgs_locker\":\"#8a8a8a\",\"prgs_reward\":\"#000000\",\"fg_active_bg\":\"#6F42C1\",\"fg_locked_bg\":\"#6F42C17A\",\"prgs_emptybg\":\"#C7C0BC\",\"footer_border\":null,\"prgs_lockedbg\":\"#f3f3f3\",\"upsl_checkbox\":\"#6F42C1\",\"atc_btn_border\":null,\"compared_price\":\"#777777ff\",\"upsl_active_bg\":\"#6F42C1\",\"upsl_locked_bg\":\"#6F42C17A\",\"prgs_cardborder\":\"#6F42C1\",\"quantity_widget\":\"#ffffff\",\"tags_background\":\"#007BFF2B\",\"fg_active_border\":\"#6F42C1\",\"fg_locked_border\":\"#6F42C17A\",\"prgs_highlightbg\":\"#6F42C1\",\"footer_background\":null,\"atc_btn_background\":null,\"bg_selected_bundle\":\"#FFFFFF\",\"prgs_highlight_text\":\"#ffffff\",\"prgs_lockerselected\":\"#ffffff\",\"quantity_background\":null,\"upsl_compared_price\":\"#ffffff\",\"border_selected_bundle\":\"#007BFF\",\"quantity_widget_background\":\"#007BFF\"},\"typography_settings\":{\"shape\":0,\"fg_size\":14,\"add_icon\":null,\"fg_weight\":\"regular\",\"font_size\":\"28\",\"upsl_size\":14,\"text_align\":\"left\",\"bundles_gap\":4,\"font_family\":null,\"font_weight\":\"bold\",\"prgs_header\":14,\"prgs_reward\":14,\"prgs_weight\":\"regular\",\"upsl_weight\":\"regular\",\"block_radius\":12,\"border_width\":2,\"subtitle_size\":14,\"highlight_size\":12,\"subtitle_weight\":\"regular\",\"highlight_weight\":\"regular\",\"bundles_gap_bottom\":4,\"footer_spacing_top\":null,\"prgs_reward_weight\":\"regular\",\"product_image_size\":50,\"product_title_font\":null,\"product_title_size\":16,\"product_image_radius\":null,\"product_title_weight\":\"regular\",\"footer_spacing_bottom\":null,\"highlight_image_height\":null},\"footer_text\":null,\"call_to_action_button_text\":null,\"footer_settings\":null,\"action_button_settings\":null,\"is_published\":true,\"is_processed\":1,\"is_offer_clickable\":0,\"is_open_new_tab\":1,\"total_revenues\":256541.11999999965,\"activation_type\":\"immediate\",\"start_date_time\":null,\"end_date_time\":null,\"timezone\":\"UTC\",\"created_at\":\"2025-01-31T05:53:52.000000Z\",\"updated_at\":\"2026-03-25T18:56:15.000000Z\",\"stats_reset_at\":null,\"free_gift_template\":\"inline\",\"used_features\":[],\"shipping_discount_app_id\":null,\"prgs_all_goal_reached_text\":\"Free gifts with your order \\ud83c\\udf89\",\"prgs_locker_text\":\"Locked\",\"per_unit_price_text\":\"\\\/unit\",\"boosters_position\":[],\"bundle_siblings_position\":[\"bundle\"],\"exclude_b2b_customer\":false,\"exclude_pos\":false,\"image_zoom_in_popup\":false,\"is_ab_test_active\":false,\"ab_test_variant_name\":null,\"ab_test_variant_number\":null,\"is_ab_test_winner\":false,\"ab_test_started_at\":null,\"ab_test_ended_at\":null,\"offers\":[{\"id\":3210604,\"identifier_id\":\"4XWfn\",\"is_combo_bundle\":0,\"hide_combo_bundle\":0,\"show_gift_when_bar_selected\":0,\"bundle_id\":53792,\"title\":\"Single\",\"subtitle\":null,\"quantity\":1,\"xqty\":1,\"yqty\":1,\"tags\":null,\"discount_type\":\"default\",\"discount_value\":0,\"specific_percentage\":null,\"image\":null,\"image_type\":\"none\",\"image_size\":50,\"image_radius\":0,\"quantity_widget\":0,\"is_sold_out\":0,\"sold_out_text\":\"Out of stock\",\"typography_settings\":{\"soFontSize\":14,\"soAlignment\":\"center\",\"soFontStyle\":\"normal\",\"soFontWeight\":\"regular\"},\"colors_settings\":{\"soFontColor\":\"#ffffff\",\"soBackground\":\"#262528\"},\"translations\":null,\"combo_template\":null,\"combo_add_divider\":null,\"combo_stacking_desktop\":null,\"combo_stacking_mobile\":null,\"show_products_when_selected\":0,\"created_at\":\"2026-03-25T18:56:13.000000Z\",\"updated_at\":\"2026-03-25T18:56:13.000000Z\",\"offer_highlight\":null},{\"id\":3210605,\"identifier_id\":\"MgW2k\",\"is_combo_bundle\":0,\"hide_combo_bundle\":0,\"show_gift_when_bar_selected\":0,\"bundle_id\":53792,\"title\":\"Two or More\",\"subtitle\":\"Biggest Savings!\",\"quantity\":2,\"xqty\":1,\"yqty\":1,\"tags\":null,\"discount_type\":\"amount\",\"discount_value\":10,\"specific_percentage\":null,\"image\":null,\"image_type\":\"none\",\"image_size\":50,\"image_radius\":0,\"quantity_widget\":0,\"is_sold_out\":0,\"sold_out_text\":\"Out of stock\",\"typography_settings\":{\"soFontSize\":14,\"soAlignment\":\"center\",\"soFontStyle\":\"normal\",\"soFontWeight\":\"regular\"},\"colors_settings\":{\"soFontColor\":\"#ffffff\",\"soBackground\":\"#262528\"},\"translations\":null,\"combo_template\":null,\"combo_add_divider\":null,\"combo_stacking_desktop\":null,\"combo_stacking_mobile\":null,\"show_products_when_selected\":0,\"created_at\":\"2026-03-25T18:56:13.000000Z\",\"updated_at\":\"2026-03-25T18:56:13.000000Z\",\"offer_highlight\":null}],\"offer_upsells\":[],\"combo_products\":[],\"free_gifts\":[],\"offer_products\":[],\"offer_highlights\":null,\"selected_products\":[{\"id\":20149126,\"shopify_product_id\":9029234524445},{\"id\":20149127,\"shopify_product_id\":10121353199901}],\"selected_collections\":[],\"color_swatches\":[],\"translations\":[],\"progressbar_goals\":[],\"subscription\":null,\"live_social_proof\":null,\"timer\":null,\"sticky_add_to_cart\":null,\"bundle_builder\":null,\"default_variants\":[],\"progress_gift_builder\":{\"id\":14530,\"bundle_id\":53792,\"is_progress_gift_builder_active\":0,\"eligible_bundling\":\"excluded-products\",\"cta_text\":\"Select\",\"locked_text\":\"Locked\",\"modal_title\":\"Select Product\",\"modal_label\":\"Free\",\"modal_cta_text\":\"Select\",\"modal_image_size\":80,\"modal_image_radius\":8,\"modal_divider\":1,\"typography_settings\":{\"textSize\":16,\"buttonSize\":16},\"color_settings\":{\"cta\":\"#ffffff\",\"text\":\"#000000\",\"label\":\"#777777\",\"price\":\"#616161\",\"overlay\":\"#0000004D\",\"productCta\":\"#000000\",\"comparedPrice\":\"#616161\",\"ctaBackground\":\"#6F42C1\",\"labelBackground\":\"#6F42C12B\"},\"created_at\":\"2026-03-07T17:56:09.000000Z\",\"updated_at\":\"2026-03-25T18:56:13.000000Z\",\"selected_products\":[],\"selected_collections\":[]}}"};
        

        function countBundleKeys(dataObj) {
            if(!dataObj || typeof dataObj !== 'object') return 0;
            return Object.keys(dataObj).filter(function(key){
                return key.indexOf('bundle_') === 0 || key.indexOf('combo_bundle_') === 0;
            }).length;
        }

        function resolveAppData() {
            const mf = (__appDataMetafield && typeof __appDataMetafield === 'object') ? __appDataMetafield : {};
            const mo = (__appDataMetaobject && typeof __appDataMetaobject === 'object') ? __appDataMetaobject : {};
            const mfCount = countBundleKeys(mf);
            const moCount = countBundleKeys(mo);

            // Merge both data sources to avoid partial migration data loss.
            const merged = Object.assign({}, mf, mo);
            const mergedCount = countBundleKeys(merged);

            let source = 'none';
            if (mergedCount > 0) source = 'merged';
            else if (moCount > 0) source = 'metaobject';
            else if (mfCount > 0) source = 'metafield';

            return { data: mergedCount > 0 ? merged : (moCount >= mfCount ? mo : mf), source };
        }

        function injectCSS(href) {
            if (document.querySelector(`link[href="${href}"]`)) return;

            const link = document.createElement("link");
            link.rel = "stylesheet";
            link.href = href;
            link.type = "text/css";

            document.head.appendChild(link);
        }

        function injectJS(src, callback) {
            if (document.querySelector(`script[src="${src}"]`)) {
                callback && callback();
                return;
            }

            const script = document.createElement("script");
            script.src = src;
            script.async = true;

            script.onload = () => {
                callback && callback();
            };

            document.body.appendChild(script);
        }

        function tryInjectRapiAssets() {
            if(_qbrb?.bundle?.id || _cprb?.bundle?.id || _qbrb?.all_bundles?.length > 0 || _cprb?.all_bundles?.length > 0 || window?.rapiFetch || window?.custom__qbrbs?.length > 0 || (_qbrb?.autogift_bundles && _qbrb.autogift_bundles.length > 0)){
                injectCSS("https://cdn.shopify.com/extensions/019edf15-1a4c-78d9-bb68-1b182c8559bb/rapi-526/assets/rappi-front.css");
                injectJS("https://cdn.shopify.com/extensions/019edf15-1a4c-78d9-bb68-1b182c8559bb/rapi-526/assets/rappi-front.js");
            }
        }

        if("index" == "product"){
            var appDataResolved = resolveAppData();
            var appData = appDataResolved.data;
            if (/[?&]rapi_debug=(true|1)/i.test(window.location.search || '')) { console.log('Rapi bundle: source=' + appDataResolved.source, ', data=', appData); }
            

            var rapi_details;

            async function assignValues () {
                if(appData && Object.keys(appData).length){
                    _qbrb = await extractBundle(appData, 'bundle_')
                    _cprb = await extractBundle(appData, 'combo_bundle_')

                    if(_qbrb?.bundle?.id){
                        const container = document.getElementById('rappi-image-container');
                        _qbrb.bundle.offers.forEach(o => {
                            if(o.image && o.image_type != "none"){
                                const img = new Image();
                                img.src = o.image;
                                container.appendChild(img);
                            }
                        });
                    }
                }
            }

            assignValues().finally(() => {
                var _p = null;
                if (_qbrb) {
                    _qbrb.product = _p ? transformProduct(_p) : null;
                }
                tryInjectRapiAssets();
            });

        } else {
            var appDataResolved = resolveAppData();
            var appData = appDataResolved.data;
            if (/[?&]rapi_debug=(true|1)/i.test(window.location.search || '')) { console.log('Rapi bundle: source=' + appDataResolved.source, ', data=', appData); }

            async function assignValuesHomePage () {
                if(appData && Object.keys(appData).length){
                    _qbrb = await extractBundleHomePage(appData, 'bundle_');
                }
            }

            function startHomepageBundleInit() {
                assignValuesHomePage().finally(() => tryInjectRapiAssets());
            }

            if (_rapiShouldStartHomepageBundleInit()) {
                startHomepageBundleInit();
            } else if (document.readyState === "loading") {
                document.addEventListener("DOMContentLoaded", function rapiHomepageDomReady() {
                    if (_rapiShouldStartHomepageBundleInit()) {
                        startHomepageBundleInit();
                    } else {
                        if(!_qbrb){
                            _qbrb = {
                                bundle: {},
                                config: getRapiConfigFromAppData(appDataResolved),
                                all_bundles: [],
                                autogift_bundles: collectAutogiftBundlesFromAppData(appDataResolved)
                            };
                        }
                        else{
                            _qbrb.autogift_bundles = collectAutogiftBundlesFromAppData(appDataResolved);
                        }
                        tryInjectRapiAssets();
                    }
                }, { once: true });
            } else {
                if(!_qbrb){
                    _qbrb = {
                        bundle: {},
                        config: getRapiConfigFromAppData(appDataResolved),
                        all_bundles: [],
                        autogift_bundles: collectAutogiftBundlesFromAppData(appDataResolved)
                    };
                }
                else{
                    _qbrb.autogift_bundles = collectAutogiftBundlesFromAppData(appDataResolved);
                }
                tryInjectRapiAssets();
            }
        }

    </script>




</div><div id="shopify-block-AWUpOQXhTUURWaFB4N__13375938897875554821" class="shopify-block shopify-app-block"><script id="q-salekit-v2" type="text/javascript">
  window.qskStore = {
    currency: "USD",
    moneyFormat: "${{amount_no_decimals}}",
    templateName: "index",
    productHandle: "",
  };

  

  window.qskData = {
    settings: null,
    subscription: null,
    isDesignMode: false,
    instanceConfig: null,
    shop: null,
    storeFrontAccessToken: null,

    salespopTranslation: null,
    visitorCountTranslation: null,
    soldCountTranslation: null,
    cartcountdownTranslation: null,
    promobarTranslation: null,
    popupTranslation: null,
  };

  
    qskData.settings = []
  

  
    qskData.subscription = {"name":"salekit-free","kind":"subscription","over_capacity":false,"applied_shopify_plans":null}
  

  

  
    qskData.instanceConfig = null;
  

  
    qskData.shop = {"plan_name":"professional"};
  

  
    qskData.storeFrontAccessToken = 'b0a68a311bc5e9a5f32c2cff08e2f734';
  

  

  

  

  

  

  
</script>

<script src="https://cdn.shopify.com/extensions/019eca44-a037-7441-ae76-82e1a70d0d5e/sale-kit-113/assets/salekit-v2.js" defer="defer"></script>




  <style id="qikify-salekit-custom-style"></style>



  <script id="qikify-salekit-custom-script"></script>




</div><div id="shopify-block-ARjU3NnZOMUVyVVRke__11158620501380966596" class="shopify-block shopify-app-block"><script>
  const moneyFormat = "${{amount_no_decimals}} USD";
</script>
<script>
    const templateName = "index";
</script>
<script>
  const product = null;
</script>

<script>
    const shopName = "Crowd Compass";
</script>
<script>
  const trustzShopDateNowApp = "2026-06-21 09:27"
  const trustzCurrentDayApp = "Sunday"
</script>

<script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/app_embed.js" async></script>

  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/countdown_timer_cart.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/free_shipping_bar.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/sales_pop_up.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/payment_badges_cart.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/trust_badges_cart.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/cookie_banner.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/agree_to_terms_checkbox.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/add_to_cart_animation.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/size_chart_app_embed.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/favicon_cart_count.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/inactive_tab.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/sticky_add_to_cart.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/scroll_to_top_button.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/auto_external_links.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/social_media_buttons.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/content_protection.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/best_sellers_protection.js" async></script>

<script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/product_labels.js" async></script>

  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/product_tabs_and_accordion.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/spending_goal_tracker.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/order_limits.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/quote_upsell.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/insurance_add_ons.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/reward_upsell.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/frequently_bought.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/email_capture_popup.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/spin_wheel.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/facebook_pixel.js" async></script>


  <script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/hide_accelerated_checkout_button.js" async></script>


<div class="trustz-countdown-timer-content" id="trustz-countdown-timer"></div>
<div id="trustz-free-shipping-bar"></div>
<div id="trustz-sales-pop-up"></div>
<div id="badges-trustz"></div>
<div id="cookie-banner" style="position: fixed; bottom: 0; left: 0; right: 0; z-index: 999;"></div>
<div id="sticky-add-to-cart" class="app-embed"></div>
<div id="sticky-alert-success" class="sticky-alert-success"></div>
<div id="size-chart" class="app-embed"></div>
<div id="scroll-to-top-button" class="app-embed"></div>
<div id="tz-social-media-buttons" class="app-embed"></div>
<div id="tz-insurance-add-ons"></div>



<script>
  window.trustzInstanceSearchSettings = {"enabled":false,"field_weights":[{"field":"title","enabled":true,"priority":0},{"field":"vendor","enabled":true,"priority":1},{"field":"product_type","enabled":true,"priority":2},{"field":"tag","enabled":true,"priority":3},{"field":"option","enabled":true,"priority":4},{"field":"description","enabled":true,"priority":5},{"field":"collection_title","enabled":true,"priority":6},{"field":"sku","enabled":true,"priority":7}],"instant_search":{"enabled":true,"show_products":true,"show_collections":true,"show_pages":true,"show_popular_searches":true,"popular_search_type":"auto","popular_search_keywords":[],"no_result":{"show_popular_searches":true,"popular_search_type":"auto","popular_search_keywords":[],"show_recommended_products":true,"recommended_product_type":"auto","recommended_product_ids":[]}},"result_page":{"enabled":true,"products_per_page":12,"show_collections_tab":true,"show_pages_tab":true,"no_result":{"show_recommended_products":true,"recommended_product_type":"auto","recommended_product_ids":[],"show_popular_searches":true,"popular_search_type":"auto","popular_search_keywords":[]}}};
</script>
<link rel="stylesheet" href="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/filter_instance_search_default.css" />
<script src="https://cdn.shopify.com/extensions/019ed37d-687c-73b1-8aec-17ffe43c2a18/trustz-411/assets/filter_instance_search_default.js" async></script>



</div><script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
</body>
</html>
