PageSourceSearch

https://nativepet.com/pages/store-locator

html nativepet.com collected 2026-10-04 00:25:30 UTC 494,559 bytes, 5,580 lines download raw bytes

1<!doctype html>
2<html class="no-js" lang="en">
3  <head>
4    
5    
6    
7    
8    
9    
10      
11      
12    
13  
14    <!-- Start of Shoplift scripts -->
15    <!-- 2026-05-07T22:19:54.2759169Z -->
16<style>.shoplift-hide { opacity: 0 !important; }</style>
17<style id="sl-preview-bar-hide">#preview-bar-iframe, #PBarNextFrameWrapper { display: none !important; }</style>
18<script type="text/javascript">(function(rootPath, template, themeRole, themeId, isThemePreview){ /* Generated on 2026-05-20T16:13:23.9343219Z */(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|firep
18hp|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%200L
187.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={}
18,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}}}
18if(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] interceptor 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}
18`),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}
18: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{}}
18document.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=>
18k.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)}}
18async 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));
18if(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);
18const 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.deriveC
18ategoryFromExistingTests(),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")}
18),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, remov
18ing 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;
18if(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=>
18i.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()=>
18{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}`};
18this.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 )|
18sy(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)}
18updatePriceTestHiddenInputs(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=>
18{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)=>
18{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,shouldSe
18ndToGa:!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)}
18,{"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|k
18akao|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) =>
18 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|k
18akao|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|y
18andex\.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
18: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("the-native-pet.myshopify.com","https://app.shoplift.ai","https://events.shoplift.ai",false,false,false,{"sendEvents":false,"mode":"gtag"},false,false,1000,[],[{"id":"87caf187-1f03-4891-8ae0-9e8cf6745c10","bayesianRevision":4,"status":"cancelled","hypotheses":[{"id":"5afdd146-9633-4bc1-97e7-c73e12348a93","type":"theme","themeId":126752292907,"affix":"","isControl":true,"redirectPath":null},{"id":"058b9b9c-f0b8-41af-b5de-68992e67c35c","type":"theme","themeId":130643460139,"affix":"","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false},{"id":"019d28c6-2814-761b-9e75-bf42b38139a3","bayesianRevision":5,"status":"cancelled","hypotheses":[{"id":"019d28c5-cfc2-7026-9373-0067b877912c","type":"theme","themeId":184646828
18075,"affix":"","isControl":true,"redirectPath":null},{"id":"019d28c5-cfc3-7c9e-8858-4bd559e6e6c4","type":"theme","themeId":184432525355,"affix":"","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false},{"id":"019cb50d-55f2-7d7a-a6c8-94d6e832ee14","bayesianRevision":5,"status":"cancelled","hypotheses":[{"id":"019cb50b-a9b4-71b8-921b-1756c523bad9","type":"theme","themeId":126752292907,"affix":"","isControl":true,"redirectPath":null},{"id":"019cb50c-92af-71cf-90b8-0c5c2fea52a3","type":"theme","themeId":183729684523,"affix":"","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false},{"id":"c762e7d5-a0c4-4cea-93db-752835ea506a","bayesianRevision":2,"status":"cancelled","hypotheses":[{"id":"b50340da-d2b5-474a-9e57-4dcc9254206e","type":"theme","themeId":126587863083,"affix":"","isControl":true,"redirectPath":null},{"id":"e2720ca1-b0fe-4ec6-9bd7-c5fee85b33a4","type":"theme","themeId":126622269483,"affix":"","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false},{"id":"8a79cbcd-4402-43d8-b3be-27c176db93c2","bayesianRevision":2,"status":"cancelled","hypotheses":[{"id":"ff4b6fd6-35bc-414f-be86-5edaf53a61e1","type":"theme","themeId":126587863083,"affix":"","isControl":true,"redirectPath":null},{"id":"dc1023ff-fc3f-4898-9337-ca386aca18b3","type":"theme","themeId":126601429035,"affix":"","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false},{"id":"73ace278-222a-42dc-adc8-67af76f992fa","bayesianRevision":3,"status":"cancelled","hypotheses":[{"id":"11c760d5-f390-43b2-9346-6728f2f1afdd","type":"theme","themeId":126752292907,"affix":"","isControl":true,"redirectPath":null},{"id":"36566fe7-5379-4efd-a8e7-94000cecb93b","type":"theme","themeId":126750818347,"affix":"","isControl":false,"redirectPath":null}],"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: "store-locator", type: "page" }, "main", 126752292907, false)</script>
18
19    <!-- End of Shoplift scripts -->
20
21    <meta charset="utf-8">
22    <meta http-equiv="X-UA-Compatible" content="IE=edge">
23    <meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
24    <link rel="canonical" href="https://nativepet.com/pages/store-locator">
25
26    <title>Store locator
27 &ndash; Native Pet</title>
28
29    
30      <meta name="description" content="">
31    
32    <meta http-equiv="cleartype" content="on">
33
34    
35<meta property="og:site_name" content="Native Pet">
36<meta property="og:url" content="https://nativepet.com/pages/store-locator">
37<meta property="og:title" content="Store locator">
38<meta property="og:type" content="website">
39<meta property="og:description" content="Native Pet - High quality, tasty and effective supplements for dogs"><meta property="og:image" content="http://nativepet.com/cdn/shop/files/NP-LinkPreview-1200x1200_8a25b0ab-34f9-42b1-a01f-6883ad9907f2.gif?v=1771016887">
40  <meta property="og:image:secure_url" content="https://nativepet.com/cdn/shop/files/NP-LinkPreview-1200x1200_8a25b0ab-34f9-42b1-a01f-6883ad9907f2.gif?v=1771016887">
41  <meta property="og:image:width" content="1200">
42  <meta property="og:image:height" content="1200"><meta name="twitter:card" content="summary_large_image">
43<meta name="twitter:title" content="Store locator">
44<meta name="twitter:description" content="Native Pet - High quality, tasty and effective supplements for dogs">
45
46<meta name="theme-color" content="" />
47<link rel="icon" type="image/png" href="//nativepet.com/cdn/shop/files/NP_Favicon-3_abe22479-5523-44be-bb17-5e590f0defc1.png?crop=center&height=32&v=1673929835&width=32"><!-- Klaviyo integration script from Consentmo GDPR app -->
48<script id="consentmo-klaviyo-integration-script">
49  function checkConsentForKlaviyo(isMarketingEnabled) {
50    if (isMarketingEnabled) {
51      console.log('exec klaviyo');
52      document.cookie = "__kla_off=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
53    } else {
54      console.log('blocked klaviyo');
55      document.cookie = "__kla_off=true"; 
56    }
57  }
58
59  document.addEventListener('consentmoSignal_onLoad', function(eventData) {
60    const csmLoadSignal = eventData.detail || {isActive:false};
61
62    if (!csmLoadSignal.isActive) {
63      checkConsentForKlaviyo(true);
64    } else {
65      document.addEventListener('consentmoSignal', function(event) {
66        const csmPreferences = event.detail.preferences;
67        checkConsentForKlaviyo(csmPreferences.marketing);
68      });
69    }
70  });
71</script>
71
72
73<script id="consentmo-gcmv2-integration">
74  /*
75  * Options:
76  * - true: set default consent for all regions
77  * - false: set default consent when the cookie bar active
78  */
79  const isSetDefaultConsent = true;
80
81  window.dataLayer = window.dataLayer || [];
82  function gtag(){dataLayer.push(arguments);}
83
84  const getCsmCookie = (cookieName) => (document.cookie.split(';').map(c => c.trim()).find(c => c.startsWith(`${cookieName}=`))?.split('=')[1] ?? undefined);
85  const getCsmStorage = () => {
86    try {
87      const storage = localStorage.getItem('gdprCache');
88      if (!storage) return undefined;
89      const parsed = JSON.parse(storage);
90      const settings = parsed.getCookieConsentSettings && JSON.parse(parsed.getCookieConsentSettings);
91      return {
92        settings,
93        cookieConsentName: `cookieconsent_status${settings?.cookie_name || ''}`
94      };
95    } catch {
96      return undefined;
97    }
98  }
99
100  const csmStorage = getCsmStorage();
101  const cookieName = csmStorage?.cookieConsentName || 'cookieconsent_status';
102  const csmCookieConsent = getCsmCookie(cookieName);
103  const csmCookiePreferences = getCsmCookie('cookieconsent_preferences_disabled');
104
105  if (isSetDefaultConsent) {
106    let consentValues = {
107      analytics: 'denied',
108      marketing: 'denied',
109      functionality: 'denied',
110    };
111    let adsDataRedaction = false;
112    let urlPassthrough = false;
113
114    if (csmCookieConsent && csmCookiePreferences !== undefined) {
115      consentValues.analytics = csmCookiePreferences.indexOf('analytics') >= 0 ? 'denied' : 'granted';
116      consentValues.marketing = csmCookiePreferences.indexOf('marketing') >= 0 ? 'denied' : 'granted';
117      consentValues.functionality = csmCookiePreferences.indexOf('functionality') >= 0 ? 'denied' : 'granted';
118
119      if (csmStorage && csmStorage?.settings?.gcm_options?.state == '1') {
120        adsDataRedaction = csmStorage.settings.gcm_options?.ads_data_redaction || false;
121        urlPassthrough = csmStorage.settings.gcm_options?.url_passthrough || false;
122      }
123    }
124
125    gtag('consent', 'default', {
126      ad_storage: consentValues.marketing,
127      ad_personalization: consentValues.marketing,
128      ad_user_data: consentValues.marketing,
129      analytics_storage: consentValues.analytics,
130      functionality_storage: consentValues.functionality,
131      personalization_storage: consentValues.functionality,
132      security_storage: 'granted',
133      wait_for_update: 1500
134    });
135    gtag('set', 'ads_data_redaction', adsDataRedaction);
136    gtag('set', 'url_passthrough', urlPassthrough);
137  }
138
139  document.addEventListener('consentmoSignal', function(event) {
140    const csmSignal = event.detail;
141    const consentState = csmSignal.integration?.gcm?.isEnabled ? csmSignal.integration.gcm.state : csmSignal.state;
142
143    gtag('consent', (!isSetDefaultConsent ? 'default' : 'update'), consentState);
144    if (csmSignal.integration?.gcm?.isEnabled) {
145      gtag('set', 'ads_data_redaction', csmSignal.integration.gcm.adsDataRedaction);
146      gtag('set', 'url_passthrough', csmSignal.integration.gcm.urlPassthrough);
147    }
148  });
149</script>
149
150    
151
152    
153
154
155
156  <link href="//nativepet.com/cdn/shop/t/361/assets/styles.B7ebCmtk.min.css?v=6585637652943896461790965871" rel="stylesheet" type="text/css" media="all" />
157
158
159
160
161  
161<script src="//nativepet.com/cdn/shop/t/361/assets/theme.dtRWEQLS.min.js?v=106135853765909470911790961956" type="module" crossorigin="anonymous"></script>
161
162  <link rel="modulepreload" href="//nativepet.com/cdn/shop/t/361/assets/embla-tween-scale.C1ErBjGe.min.js?v=149431972923256146471778187746" crossorigin="anonymous">
163  <link rel="modulepreload" href="//nativepet.com/cdn/shop/t/361/assets/quiz-logic.CCAwsLMR.min.js?v=146500644096213194951790717339" crossorigin="anonymous">
164
165<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
165<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/27157980/digital_wallets/dialog">
166<meta id="in-context-paypal-metadata" data-shop-id="27157980" data-venmo-supported="true" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD">
167<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
167<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=33406550059"></script>
167
168<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
169<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=33406550059&shop_id=27157980" crossorigin="anonymous"></script>
vendor: 1 bytes, line 169
169
170<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":27157980,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/27157980","merchantName":"Native Pet","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Native Pet","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 170
170
171<script id="shopify-features" type="application/json">{"accessToken":"c35147530d37ea14750c6a5b2191eac3","betas":["rich-media-storefront-analytics"],"domain":"nativepet.com","predictiveSearch":true,"shopId":27157980,"locale":"en"}</script>
vendor: 1 bytes, line 171
171
172<script>var Shopify = Shopify || {};
173Shopify.shop = "the-native-pet.myshopify.com";
174Shopify.locale = "en";
175Shopify.currency = {"active":"USD","rate":"1.0"};
176Shopify.country = "US";
177Shopify.theme = {"name":"bella\/live","id":126752292907,"schema_name":"Bella","schema_version":"2.60.6","theme_store_id":null,"role":"main"};
178Shopify.theme.handle = "null";
179Shopify.theme.style = {"id":null,"handle":null};
180Shopify.cdnHost = "nativepet.com/cdn";
181Shopify.routes = Shopify.routes || {};
182Shopify.routes.root = "/";
183Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
184Shopify.SignInWithShop = Shopify.SignInWithShop || {};
185Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
186Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 186
186
187<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 187
187
188<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 188
188
189<script>
190  window.ShopifyPay = window.ShopifyPay || {};
191  window.ShopifyPay.apiHost = "shop.app\/pay";
192  window.ShopifyPay.redirectState = null;
193</script>
vendor: 1 bytes, line 193
193
194<script>
195  window.Shopify = window.Shopify || {};
196  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
197  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
198  window.Shopify.SignInWithShop.eligible = true;
199</script>
vendor: 1 bytes, line 199
199
200<script id="shop-js-analytics" type="application/json">{"pageType":"page"}</script>
vendor: 1 bytes, line 200
200
201<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 201
201
202<script type="module">
203  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
204
205  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
206
207</script>
vendor: 1 bytes, line 207
207
208<script>
209  window.Shopify = window.Shopify || {};
210  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
211  window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]};
212</script>
vendor: 1 bytes, line 212
212
213<script>(function() {
214  var isLoaded = false;
215  function asyncLoad() {
216    if (isLoaded) return;
217    isLoaded = true;
218    var urls = ["https:\/\/id-shop.govx.com\/app\/the-native-pet.myshopify.com\/govx.js?shop=the-native-pet.myshopify.com","https:\/\/cdn.attn.tv\/nativepet\/dtag.js?shop=the-native-pet.myshopify.com","https:\/\/superfiliate-cdn.com\/storefront.js?shop=the-native-pet.myshopify.com","https:\/\/pps.triplewhale.systems\/main.js?shop=the-native-pet.myshopify.com","https:\/\/storefront.recart.com\/settings\/69dd1ba90d2425636d835bc6\/settings.js?shop=the-native-pet.myshopify.com","https:\/\/storefront.recart.com\/loader.js?domain=nativepet.com\u0026account=69dd1ba90d2425636d835bc6\u0026hasGMInitParams=1\u0026shop=the-native-pet.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=the-native-pet.myshopify.com","https:\/\/cdn.instant.one\/instant.js?siteId=site_af6ab632509a48fc9436e615bc0a521a\u0026shop=the-native-pet.myshopify.com"];
219    for (var i = 0; i < urls.length; i++) {
220      var s = document.createElement('script');
221      s.type = 'text/javascript';
222      s.async = true;
223      s.src = urls[i];
224      var x = document.getElementsByTagName('script')[0];
225      x.parentNode.insertBefore(s, x);
226    }
227  };
228  if(window.attachEvent) {
229    window.attachEvent('onload', asyncLoad);
230  } else {
231    window.addEventListener('load', asyncLoad, false);
232  }
233})();</script>
vendor: 1 bytes, line 233
233
234<script id="__st">var __st={"a":27157980,"offset":-18000,"reqid":"4323fb28-d9b6-47bc-9aec-bdd4d0ab48ac-1791073527","pageurl":"nativepet.com\/pages\/store-locator","s":"pages-87538499627","u":"49aa87026b64","p":"page","rtyp":"page","rid":87538499627};</script>
vendor: 1 bytes, line 234
234
235<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 235
235
236<script id="form-persister">!function(){'use strict';const t='contact',e='new_comment',n=[[t,t],['blogs',e],['comments',e],[t,'customer']],o='password',r='form_key',c=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',o],s=()=>{try{return window.sessionStorage}catch{return}},i='__shopify_v',u=t=>t.elements[r],a=function(){const t=[...n].map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(',');var e;return e=t,()=>e?[...document.querySelectorAll(e)].map((t=>t.form)):[]}();function m(t){const e=u(t);a().includes(t)&&(!e||!e.value)&&function(t){try{if(!s())return;!function(t){const e=s();if(!e)return;const n=u(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){u(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:r})),t.elements[r].value=e}(t,e),function(t,e){const n=s();if(!n)return;const r=[...t.querySelectorAll(`input[type='${o}']`)].map((({name:t})=>t)),u=[...c,...r],a={};for(const[o,c]of new FormData(t).entries())u.includes(o)||(a[o]=c);n.setItem(e,JSON.stringify({[i]:1,action:t.action,data:a}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(t)}const f=t=>{if('true'===t.dataset.persistBound)return;const e=function(t,e){const n=function(t){return'function'==typeof t.submit?t.submit:HTMLFormElement.prototype.submit}(t).bind(t);return function(){let t;return()=>{t||(t=!0,(()=>{try{e(),n()}catch(t){(t=>{console.error('form submit failed',t)})(t)}})(),setTimeout((()=>t=!1),250))}}()}(t,(()=>{m(t)}));!function(t,e){if('function'==typeof t.submit&&'function'==typeof e)try{t.submit=e}catch{}}(t,e),t.addEventListener('submit',(t=>{t.preventDefault(),e()})),t.dataset.persistBound='true'};!function(){function t(t){const e=(t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form})(t);e&&m(e)}document.addEventListener('submit',t),document.addEventListener('DOMContentLoaded',(()=>{const e=a();for(const t of e)f(t);var n;n=document.body,new window.MutationObserver((t=>{for(const e of t)if('childList'===e.type&&e.addedNodes.length)for(const t of e.addedNodes)1===t.nodeType&&'FORM'===t.tagName&&a().includes(t)&&f(t)})).observe(n,{childList:!0,subtree:!0,attributes:!1}),document.removeEventListener('submit',t)}))}()}();</script>
vendor: 1 bytes, line 236
236
237<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//nativepet.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 237
237
238<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//nativepet.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
238<script crossorigin="anonymous" defer="defer" src="//nativepet.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 238
238
239<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 239
239
240<script>
241  window.Shopify = window.Shopify || {};
242  window.Shopify.MCP = window.Shopify.MCP || {};
243  window.Shopify.MCP.enabled = true;
244  window.Shopify.MCP.shop = "the-native-pet.myshopify.com";
245  window.Shopify.MCP.mcpEndpoint = "https:\/\/nativepet.com\/api\/mcp";
246  window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n  - What is your return policy?\n  - What is your shipping policy?\n  - What is your phone number?\n  - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}];
247</script>
vendor: 1 bytes, line 247
247
248<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/nativepet.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
249</script>
vendor: 1 bytes, line 249
249
250<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://nativepet.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
251</script>
vendor: 1 bytes, line 251
251
252<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
253  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);
254</script>
vendor: 1 bytes, line 254
254
255<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})}}));
256</script>
256
257<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://nativepet.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
258<style id="shopify-accelerated-checkout-cart">
259        #shopify-buyer-consent {
260  margin-top: 1em;
261  display: inline-block;
262  width: 100%;
263}
264
265#shopify-buyer-consent.hidden {
266  display: none;
267}
268
269#shopify-subscription-policy-button {
270  background: none;
271  border: none;
272  padding: 0;
273  text-decoration: underline;
274  font-size: inherit;
275  cursor: pointer;
276}
277
278#shopify-subscription-policy-button::before {
279  box-shadow: none;
280}
281
282      </style>
283
284<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
284
285
286    
287<link href="//nativepet.com/cdn/shop/t/361/assets/Adieu-Light.woff2" as="font" type="font/woff2" crossorigin="true" rel="preload">
288<link href="//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-Regular.woff2" as="font" type="font/woff2" crossorigin="true" rel="preload">
289
290<style data-shopify>
291  @font-face {
292    font-family: 'Adieu';
293    font-style: normal;
294    src: url('//nativepet.com/cdn/shop/t/361/assets/Adieu-Light.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-Light.woff') format("woff"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-Light.otf') format("opentype");
295    font-weight: 200;
296    font-display: swap;
297  }
298
299  @font-face {
300    font-family: 'Adieu';
301    font-style: normal;
302    src: url('//nativepet.com/cdn/shop/t/361/assets/Adieu-Regular.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-Regular.woff') format("woff"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-Regular.otf') format("opentype");
303    font-weight: 400;
304    font-display: swap;
305  }
306
307  @font-face {
308    font-family: 'Adieu';
309    font-style: normal;
310    src: url('//nativepet.com/cdn/shop/t/361/assets/Adieu-Bold.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-Bold.woff') format("woff"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-Bold.otf') format("opentype");
311    font-weight: 700;
312    font-display: swap;
313  }
314
315  @font-face {
316    font-family: 'Adieu';
317    font-style: normal;
318    src: url('//nativepet.com/cdn/shop/t/361/assets/Adieu-Black.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-Black.woff') format("woff"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-Black.otf') format("opentype");
319    font-weight: 900;
320    font-display: swap;
321  }
322
323  @font-face {
324    font-family: 'Adieu';
325    font-style: italic;
326    src: url('//nativepet.com/cdn/shop/t/361/assets/Adieu-LightSlanted.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-LightSlanted.woff') format("woff"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-LightSlanted.otf') format("opentype");
327    font-weight: 200;
328    font-display: swap;
329  }
330
331  @font-face {
332    font-family: 'Adieu';
333    font-style: italic;
334    src: url('//nativepet.com/cdn/shop/t/361/assets/Adieu-RegularSlanted.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-RegularSlanted.woff') format("woff"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-RegularSlanted.otf') format("opentype");
335    font-weight: 400;
336    font-display: swap;
337  }
338
339  @font-face {
340    font-family: 'Adieu';
341    font-style: italic;
342    src: url('//nativepet.com/cdn/shop/t/361/assets/Adieu-BoldSlanted.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-BoldSlanted.woff') format("woff"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-BoldSlanted.otf') format("opentype");
343    font-weight: 700;
344    font-display: swap;
345  }
346
347  @font-face {
348    font-family: 'Adieu';
349    font-style: italic;
350    src: url('//nativepet.com/cdn/shop/t/361/assets/Adieu-BlackSlanted.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-BlackSlanted.woff') format("woff"), url('//nativepet.com/cdn/shop/t/361/assets/Adieu-BlackSlanted.otf') format("opentype");
351    font-weight: 900;
352    font-display: swap;
353  }
354
355  @font-face {
356    font-family: 'F37 Ginger Soft';
357    font-style: normal;
358    src: url('//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-Regular.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-Regular.woff') format("woff"), url('//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-Regular.otf') format("opentype");
359    font-weight: 400;
360    font-display: swap;
361  }
362
363  @font-face {
364    font-family: 'F37 Ginger Soft';
365    font-style: italic;
366    src: url('//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-RegularItalic.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-RegularItalic.woff') format("woff"), url('//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-RegularItalic.otf') format("opentype");
367    font-weight: 400;
368    font-display: swap;
369  }
370
371  @font-face {
372    font-family: 'F37 Ginger Soft';
373    font-style: normal;
374    src: url('//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-Bold.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-Bold.woff') format("woff"), url('//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-Bold.otf') format("opentype");
375    font-weight: 700;
376    font-display: swap;
377  }
378
379  @font-face {
380    font-family: 'F37 Ginger Soft';
381    font-style: italic;
382    src: url('//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-BoldItalic.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-BoldItalic.woff') format("woff"), url('//nativepet.com/cdn/shop/t/361/assets/F37GingerSoft-BoldItalic.otf') format("opentype");
383    font-weight: 700;
384    font-display: swap;
385  }
386
387  @font-face {
388    font-family: 'Suisse Intl Mono';
389    font-style: normal;
390    src: url('//nativepet.com/cdn/shop/t/361/assets/SuisseIntlMono-Regular-WebS.woff2') format("woff2"), url('//nativepet.com/cdn/shop/t/361/assets/SuisseIntlMono-Regular-WebS.woff') format("woff");
391    font-weight: 400;
392    font-display: swap;
393  }
394
395  
396    .color-scheme-1 {
397      --color-background: #155dd7;
398      --color-background-gradient: ;
399      --color-foreground: #ffffff;
400      --color-shadow: #155dd7;
401      --color-button: #deff5b;
402      --color-button-text: #155dd7;
403      --color-secondary-button: #155dd7;
404      --color-secondary-button-text: #155dd7;
405    }
406  
407    .color-scheme-2 {
408      --color-background: #ffffff;
409      --color-background-gradient: ;
410      --color-foreground: #155dd7;
411      --color-shadow: #deff5b;
412      --color-button: #155dd7;
413      --color-button-text: #deff5b;
414      --color-secondary-button: #ffffff;
415      --color-secondary-button-text: #155dd7;
416    }
417  :root,
418    .color-scheme-3 {
419      --color-background: #ffffff;
420      --color-background-gradient: ;
421      --color-foreground: #155dd7;
422      --color-shadow: #155dd7;
423      --color-button: #deff5b;
424      --color-button-text: #155dd7;
425      --color-secondary-button: #ffffff;
426      --color-secondary-button-text: #155dd7;
427    }
428  
429    .color-scheme-4 {
430      --color-background: #e2f5fa;
431      --color-background-gradient: ;
432      --color-foreground: #155dd7;
433      --color-shadow: #155dd7;
434      --color-button: #deff5b;
435      --color-button-text: #155dd7;
436      --color-secondary-button: #e2f5fa;
437      --color-secondary-button-text: #5b6b7f;
438    }
439  
440    .color-scheme-5 {
441      --color-background: #155dd7;
442      --color-background-gradient: ;
443      --color-foreground: #ffffff;
444      --color-shadow: #deff5b;
445      --color-button: #155dd7;
446      --color-button-text: #deff5b;
447      --color-secondary-button: #155dd7;
448      --color-secondary-button-text: #155dd7;
449    }
450  
451    .color-scheme-6 {
452      --color-background: #deff5b;
453      --color-background-gradient: ;
454      --color-foreground: #155dd7;
455      --color-shadow: #155dd7;
456      --color-button: #155dd7;
457      --color-button-text: #ffffff;
458      --color-secondary-button: #deff5b;
459      --color-secondary-button-text: #155dd7;
460    }
461  
462    .color-scheme-7 {
463      --color-background: #e2f5fa;
464      --color-background-gradient: ;
465      --color-foreground: #155dd7;
466      --color-shadow: #deff5b;
467      --color-button: #155dd7;
468      --color-button-text: #deff5b;
469      --color-secondary-button: #e2f5fa;
470      --color-secondary-button-text: #5b6b7f;
471    }
472  
473    .color-scheme-69828ea5-8c9c-4397-9f98-918bda86a92a {
474      --color-background: #e2f5fa;
475      --color-background-gradient: ;
476      --color-foreground: #155dd7;
477      --color-shadow: #155dd7;
478      --color-button: #deff5b;
479      --color-button-text: #155dd7;
480      --color-secondary-button: #e2f5fa;
481      --color-secondary-button-text: #155dd7;
482    }
483  
484    .color-scheme-9 {
485      --color-background: #155dd7;
486      --color-background-gradient: ;
487      --color-foreground: #deff5b;
488      --color-shadow: #e2f5fa;
489      --color-button: #deff5b;
490      --color-button-text: #155dd7;
491      --color-secondary-button: #155dd7;
492      --color-secondary-button-text: #155dd7;
493    }
494  
495    .color-scheme-0fd989ee-0686-4f8a-b1bd-6883d7843d4a {
496      --color-background: #155dd7;
497      --color-background-gradient: linear-gradient(90deg, rgba(21, 93, 215, 1), rgba(137, 225, 208, 1) 100%);
498      --color-foreground: #deff5b;
499      --color-shadow: #155dd7;
500      --color-button: #deff5b;
501      --color-button-text: #155dd7;
502      --color-secondary-button: #155dd7;
503      --color-secondary-button-text: #155dd7;
504    }
505  
506    .color-scheme-9410d6e7-e586-48d7-949b-7dcf339b6a35 {
507      --color-background: #155dd7;
508      --color-background-gradient: linear-gradient(90deg, rgba(222, 255, 91, 1), rgba(21, 93, 215, 1) 58%);
509      --color-foreground: #deff5b;
510      --color-shadow: #155dd7;
511      --color-button: #deff5b;
512      --color-button-text: #155dd7;
513      --color-secondary-button: #155dd7;
514      --color-secondary-button-text: #155dd7;
515    }
516  
517    .color-scheme-10 {
518      --color-background: #155dd7;
519      --color-background-gradient: ;
520      --color-foreground: #deff5b;
521      --color-shadow: #e2f5fa;
522      --color-button: #155dd7;
523      --color-button-text: #ffffff;
524      --color-secondary-button: #155dd7;
525      --color-secondary-button-text: #155dd7;
526    }
527  
528    .color-scheme-11 {
529      --color-background: #d5e1f6;
530      --color-background-gradient: ;
531      --color-foreground: #155dd7;
532      --color-shadow: #155dd7;
533      --color-button: #deff5b;
534      --color-button-text: #155dd7;
535      --color-secondary-button: #d5e1f6;
536      --color-secondary-button-text: #155dd7;
537    }
538  
539    .color-scheme-12 {
540      --color-background: #fafafa;
541      --color-background-gradient: ;
542      --color-foreground: #155dd7;
543      --color-shadow: #e2f5fa;
544      --color-button: #155dd7;
545      --color-button-text: #e2f5fa;
546      --color-secondary-button: #fafafa;
547      --color-secondary-button-text: #5b6b7f;
548    }
549  
550    .color-scheme-13 {
551      --color-background: #d5e1f6;
552      --color-background-gradient: ;
553      --color-foreground: #155dd7;
554      --color-shadow: #e2f5fa;
555      --color-button: #155dd7;
556      --color-button-text: #e2f5fa;
557      --color-secondary-button: #d5e1f6;
558      --color-secondary-button-text: #ffffff;
559    }
560  
561    .color-scheme-14 {
562      --color-background: #ffffff;
563      --color-background-gradient: ;
564      --color-foreground: #155dd7;
565      --color-shadow: #e2f5fa;
566      --color-button: #155dd7;
567      --color-button-text: #e2f5fa;
568      --color-secondary-button: #ffffff;
569      --color-secondary-button-text: #155dd7;
570    }
571  
572</style>
573
574    
574<script>
575  document.documentElement.classList.replace('no-js', 'js');
576  if (Shopify.designMode) {
577    document.documentElement.classList.add('shopify-design-mode');
578  }
579</script>
579
580
581<script>
582  LUX = (function () {
583    function n() {
584      return Date.now ? Date.now() : +new Date();
585    }
586    var r,
587      t = n(),
588      a = window.performance || {},
589      e = a.timing || {
590        activationStart: 0,
591        navigationStart: (null === (r = window.LUX) || void 0 === r ? void 0 : r.ns) || t,
592      };
593    function i() {
594      return a.now ? ((r = a.now()), Math.floor(r)) : n() - e.navigationStart;
595      var r;
596    }
597    (((LUX = window.LUX || {}).ac = []),
598      (LUX.addData = function (n, r) {
599        return LUX.cmd(['addData', n, r]);
600      }),
601      (LUX.cmd = function (n) {
602        return LUX.ac.push(n);
603      }),
604      (LUX.getDebug = function () {
605        return [[t, 0, []]];
606      }),
607      (LUX.init = function () {
608        return LUX.cmd(['init']);
609      }),
610      (LUX.mark = function () {
611        for (var n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r];
612        if (a.mark) return a.mark.apply(a, n);
613        var t = n[0],
614          e = n[1] || {};
615        void 0 === e.startTime && (e.startTime = i());
616        LUX.cmd(['mark', t, e]);
617      }),
618      (LUX.markLoadTime = function () {
619        return LUX.cmd(['markLoadTime', i()]);
620      }),
621      (LUX.measure = function () {
622        for (var n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r];
623        if (a.measure) return a.measure.apply(a, n);
624        var t,
625          e = n[0],
626          o = n[1],
627          u = n[2];
628        t = 'object' == typeof o ? n[1] : { start: o, end: u };
629        t.duration || t.end || (t.end = i());
630        LUX.cmd(['measure', e, t]);
631      }),
632      (LUX.send = function () {
633        return LUX.cmd(['send']);
634      }),
635      (LUX.ns = t));
636    var o = LUX;
637    return (
638      (window.LUX_ae = []),
639      window.addEventListener('error', function (n) {
640        window.LUX_ae.push(n);
641      }),
642      o
643    );
644  })();
645</script>
vendor: 1 bytes, line 645
645
646<script src="https://cdn.speedcurve.com/js/lux.js?id=4628291387" defer crossorigin="anonymous"></script>
646
647
648
649
650<script>
vendor: 415 bytes, lines 650-660
650
651  (function (w, d, s, l, i) {
652    w[l] = w[l] || [];
653    w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });
654    var f = d.getElementsByTagName(s)[0],
655      j = d.createElement(s),
656      dl = l != 'dataLayer' ? '&l=' + l : '';
657    j.async = true;
658    j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
659    f.parentNode.insertBefore(j, f);
660  })(window, document, 'script', 'dataLayer', '
660GTM-5FXN3GW
vendor: 4 bytes, line 660
660');
661</script>
661
662
663<script async="async" src="https://mm-uxrv.com/js/mm_3313584a-9861-45df-95ad-473af76dfb09-77254798.js"></script>
663
664
665
666
667  
667<script>
668    function runShopliftHook() {
669      const data = localStorage.getItem('Shoplift_Essential');
670      const shopliftTestConfigs = window.shopliftInstance.testConfigs;
671
672      if (data && shopliftTestConfigs) {
673        const parsedData = JSON.parse(data);
674
675        for (const visitorTest of parsedData.visitorTests) {
676          const testConfig = shopliftTestConfigs.find((test) => test.id === visitorTest.testId);
677
678          if (!testConfig) {
679            continue;
680          }
681
682          const visitorHypothesis = testConfig.hypotheses.find(
683            (hypothesis) => hypothesis.id === visitorTest.hypothesisId,
684          );
685
686          
687
688          heap.addUserProperties({
689            ['Shoplift-Exp-' + testConfig.title]: visitorHypothesis.isControl ? 'control' : 'variant',
690          });
691        }
692      }
693    }
694
695    function checkShopliftInitialized() {
696      const startTime = Date.now();
697      const maxWaitTime = 5000; // 5 seconds
698
699      function check() {
700        if (window.shoplift && window.heap?.loaded) {
701          runShopliftHook();
702        } else if (Date.now() - startTime < maxWaitTime) {
703          setTimeout(check, 500);
704        } else {
705          console.warn('Shoplift initialization timed out after 5 seconds');
706        }
707      }
708
709      check();
710    }
711
712    document.addEventListener('DOMContentLoaded', checkShopliftInitialized);
713  </script>
713
714
715
716
717<script name="sliderule-tracking" data-ot-ignore>
718  (function(){
719  	slideruleData = {
720      "version":"v0.0.1",
721      "referralExclusion":"/(paypal|visa|MasterCard|clicksafe|arcot\.com|geschuetzteinkaufen|checkout\.shopify\.com|checkout\.rechargeapps\.com|portal\.afterpay\.com|payfort)/",
722      "googleSignals":true,
723      "anonymizeIp":true,
724      "productClicks":true,
725      "persistentUserId":true,
726      "hideBranding":false,
727      "ecommerce":{"currencyCode":"USD",
728      "impressions":[]},
729      "pageType":"page",
730  		"destinations":{},
731      "cookieUpdate":true
732  	}
733
734  	
735  		slideruleData.themeMode = "live"
736  	
737
738  	
739
740
741  	
742  	})();
743</script>
vendor: 1 bytes, line 743
743
744<script async type="text/javascript" src="https://grow.slideruleanalytics.com/eluredils-g.js"></script>
744
745
746
747  <!-- BEGIN app block: shopify://apps/consentmo-gdpr/blocks/gdpr_cookie_consent/4fbe573f-a377-4fea-9801-3ee0858cae41 -->
748<link rel="preconnect" href="https://app.consentmo.com" crossorigin data-csm-preconnect="app">
749<link rel="dns-prefetch" href="https://workers.consentmo.com" data-csm-preconnect="workers">
750<link rel="dns-prefetch" href="https://storage.consentmo.com" data-csm-preconnect="storage">
751<link rel="preconnect" href="https://cdn.consentmo.com" crossorigin data-csm-preconnect="cdn"><link rel="prefetch" href="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/layout-cookie-bar.consentmo.js" crossorigin data-csm-layout-prefetch="banner">
752  <link rel="prefetch" href="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/layout-cookie-dialog.consentmo.js" crossorigin data-csm-layout-prefetch="dialog">
753  <link rel="prefetch" href="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/layout-cookie-box.consentmo.js" crossorigin data-csm-layout-prefetch="box">
754  <link rel="prefetch" href="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/layout-cookie-smart-banner.consentmo.js" crossorigin data-csm-layout-prefetch="smart">
755  <link rel="prefetch" href="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/layout-mobile-cookie-bar.consentmo.js" crossorigin data-csm-layout-prefetch="mobile">
755<script>
756(function () {
757  try {
758    document.documentElement.classList.add('csm-cookie-embed');
759  } catch (e) {}
760})();
761</script>
761<script data-consentmo-data-src-bootstrap>
762(function () {
763  'use strict';
764  if (window.__consentmoDataSrcBootstrapInit) return;
765  window.__consentmoDataSrcBootstrapInit = true;
766
767  var DATA_SRC_SELECTOR = [
768    'script[data-src*="consentmo_cookie_consent"]',
769    'script[data-src*="gdpr_cookie_consent.min"]',
770    'script[data-src*="gdrp_cookie_consent_unlimited"]'
771  ].join(',');
772
773  function activateConsentmoDataSrcScripts() {
774    if (!window.Shopify || !window.Shopify.shop) return;
775    document.querySelectorAll(DATA_SRC_SELECTOR).forEach(function (scriptEl) {
776      // getAttribute: src="" must not count as "already has src" (.src === page URL).
777      if (scriptEl.getAttribute('src')) return;
778      var url = scriptEl.getAttribute('data-src');
779      if (!url) return;
780      if (scriptEl.getAttribute('type') === 'text/plain') {
781        scriptEl.removeAttribute('type');
782      }
783      scriptEl.src = url;
784    });
785  }
786  function scheduleActivation() {
787    activateConsentmoDataSrcScripts();
788    // Retry on next task so other DCL handlers (lazy-loaders) can finish setting Shopify.shop / data-src first.
789    setTimeout(activateConsentmoDataSrcScripts, 0);
790  }
791  if (document.readyState === 'loading') {
792    document.addEventListener('DOMContentLoaded', scheduleActivation, { once: true });
793  } else {
794    scheduleActivation();
795  }
796})();
797</script>
797
798
799
800<!-- END app block --><!-- BEGIN app block: shopify://apps/intelligems-a-b-testing/blocks/intelligems-script/fa83b64c-0c77-4c0c-b4b2-b94b42f5ef19 -->
800<script>
801  window._template = {
802    directory: "",
803    name: "page",
804    suffix: "store-locator"
805  };
806  window.__productIdFromTemplate = null;
807  window.__plpCollectionIdFromTemplate = null;
808  window.igProductData = (function() {
809    const data = {};return data;
810  })();
811</script>
811
812
813<script type="module" blocking="render" fetchpriority="high" src="https://cdn.intelligems.io/esm/7e58415fb6af/bundle.js" data-em-disable async></script>
813
814
815
816<!-- END app block --><!-- BEGIN app block: shopify://apps/attentive/blocks/attn-tag/8df62c72-8fe4-407e-a5b3-72132be30a0d -->
816<script type="text/javascript" src="https://pqzba.nativepet.com/providers/atLabel/load" onerror=" var fallbackScript = document.createElement('script'); fallbackScript.src = 'https://cdn.attn.tv/nativepet/dtag.js'; document.head.appendChild(fallbackScript);" data-source="loaded?source=app-embed" defer="defer"></script>
816
817
818
819<!-- END app block --><!-- BEGIN app block: shopify://apps/loyalty-rewards-and-referrals/blocks/embed-main/6f172e67-4106-4ac0-89c5-b32a069b3101 -->
820
821<style
822  type='text/css'
823  data-lion-app-styles='main'
824  data-lion-app-styles-settings='{&quot;primary_color&quot;:&quot;#4d384b&quot;,&quot;secondary_color&quot;:&quot;#126bbf&quot;,&quot;icon_color&quot;:&quot;#126bbf&quot;,&quot;button_size&quot;:&quot;medium&quot;,&quot;button_border_radius&quot;:4,&quot;button_primary_background_color&quot;:&quot;#4d384b&quot;,&quot;button_primary_text_color&quot;:&quot;#ffffff&quot;,&quot;button_neutral_background_color&quot;:&quot;#757575&quot;,&quot;button_neutral_text_color&quot;:&quot;#ffffff&quot;}'
825></style>
826
827
828<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 -->
829
830
831
832
833
834
835
836
837
838
839
840
841  
841<script async src="https://static.klaviyo.com/onsite/js/KNpPbt/klaviyo.js?company_id=KNpPbt"></script>
841
842  
842<script>!function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w<n;w++)o[w]=arguments[w];var t="function"==typeof o[o.length-1]?o.pop():void 0,e=new Promise((function(n){window._klOnsite.push([i].concat(o,[function(i){t&&t(i),n(i)}]))}));return e}}})}catch(n){window.klaviyo=window.klaviyo||[],window.klaviyo.push=function(){var n;(n=window._klOnsite).push.apply(n,arguments)}}}}();</script>
842
843
844  
845
846
847
848
849  
849<script>
850    window.klaviyoReviewsProductDesignMode = false
851  </script>
851
852
853
854
855  <!-- BEGIN app snippet: customer-hub-data -->
855<script>
856  if (!window.customerHub) {
857    window.customerHub = {};
858  }
859  window.customerHub.storefrontRoutes = {
860    login: "https://nativepet.com/customer_authentication/redirect?locale=en&region_country=US?return_url=%2F%23k-hub",
861    register: "https://account.nativepet.com?locale=en&region_country=US&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ0aGUtbmF0aXZlLXBldC5teXNob3BpZnkuY29tIiwiZmxhZ3MiOltdLCJleHAiOjE3OTE2NzgzMjcsIm5iZiI6MTc5MTA3MzUyN30.0qNQGYmJJhtznapaNwet3WHH6L0tkTJMQbX-ZqlhajE?return_url=%2F%23k-hub",
862    logout: "/account/logout",
863    profile: "/account",
864    addresses: "/account/addresses",
865  };
866  
867  window.customerHub.userId = null;
868  
869  window.customerHub.storeDomain = "the-native-pet.myshopify.com";
870
871  
872
873  
874    window.customerHub.storeLocale = {
875        currentLanguage: 'en',
876        currentCountry: 'US',
877        availableLanguages: [
878          
879            {
880              iso_code: 'en',
881              endonym_name: 'English'
882            }
883          
884        ],
885        availableCountries: [
886          
887            {
888              iso_code: 'US',
889              name: 'United States',
890              currency_code: 'USD'
891            }
892          
893        ]
894    };
895  
896</script>
896
897<!-- END app snippet -->
898
899
900
901
902
903
904
905<!-- END app block --><!-- BEGIN app block: shopify://apps/loyalty-rewards-and-referrals/blocks/embed-sdk/6f172e67-4106-4ac0-89c5-b32a069b3101 -->
906
907<style
908  type='text/css'
909  data-lion-app-styles='main'
910  data-lion-app-styles-settings='{&quot;disableBundledCSS&quot;:false,&quot;disableBundledFonts&quot;:true,&quot;useClassIsolator&quot;:false}'
911></style>
912
913<!-- loyaltylion.snippet.version=fca9e1ed84+13037 -->
914
915
916<script>
917  
918  !function(t,n){function o(n){var o=t.getElementsByTagName("script")[0],i=t.createElement("script");i.src=n,i.crossOrigin="",o.parentNode.insertBefore(i,o)}if(!n.isLoyaltyLion){window.loyaltylion=n,void 0===window.lion&&(window.lion=n),n.version=2,n.isLoyaltyLion=!0;var i=new Date,e=i.getFullYear().toString()+i.getMonth().toString()+i.getDate().toString();o("https://sdk.loyaltylion.net/static/2/loader.js?t="+e);var r=!1;n.init=function(t){if(r)throw new Error("Cannot call lion.init more than once");r=!0;var a=n._token=t.token;if(!a)throw new Error("Token must be supplied to lion.init");for(var l=[],s="_push configure bootstrap shutdown on removeListener authenticateCustomer".split(" "),c=0;c<s.length;c+=1)!function(t,n){t[n]=function(){l.push([n,Array.prototype.slice.call(arguments,0)])}}(n,s[c]);o("https://sdk.loyaltylion.net/sdk/start/"+a+".js?t="+e+i.getHours().toString()),n._initData=t,n._buffer=l}}}(document,window.loyaltylion||[]);
919
920  
921    
922      loyaltylion.init(
923        { token: "392d5ef14ddbf4e5da13ae3b51aa43c2" }
924      );
925    
926  
927
928  loyaltylion.configure({
929    disableBundledCSS: false,
930    disableBundledFonts: true,
931    useClassIsolator: false,
932  })
933
934  
935</script>
935
936
937
938
939<!-- END app block --><!-- BEGIN app block: shopify://apps/okendo/blocks/theme-settings/bb689e69-ea70-4661-8fb7-ad24a2e23c29 --><!-- BEGIN app snippet: header-metafields -->
940
941
942
943
944
945
946
947
948
949
950
951
952    
953        <style data-oke-reviews-version="0.104.2" type="text/css" data-href="https://cdn-static.okendo.io/reviews-widget-plus/css/okendo-reviews-styles.c5b9c195.css"></style><style data-oke-reviews-version="0.104.2" type="text/css" data-href="https://cdn-static.okendo.io/reviews-widget-plus/css/modules/okendo-star-rating.4cb378a8.css"></style><style data-oke-reviews-version="0.104.2" type="text/css" data-href="https://cdn-static.okendo.io/reviews-widget-plus/css/modules/okendo-reviews-keywords.0942444f.css"></style><style data-oke-reviews-version="0.104.2" type="text/css" data-href="https://cdn-static.okendo.io/reviews-widget-plus/css/modules/okendo-reviews-summary.a0c9d7d6.css"></style><style type="text/css">.okeReviews[data-oke-container],div.okeReviews{font-size:14px;font-size:var(--oke-text-regular);font-weight:400;font-family:var(--oke-text-fontFamily);line-height:1.6}.okeReviews[data-oke-container] *,.okeReviews[data-oke-container] :after,.okeReviews[data-oke-container] :before,div.okeReviews *,div.okeReviews :after,div.okeReviews :before{box-sizing:border-box}.okeReviews[data-oke-container] h1,.okeReviews[data-oke-container] h2,.okeReviews[data-oke-container] h3,.okeReviews[data-oke-container] h4,.okeReviews[data-oke-container] h5,.okeReviews[data-oke-container] h6,div.okeReviews h1,div.okeReviews h2,div.okeReviews h3,div.okeReviews h4,div.okeReviews h5,div.okeReviews h6{font-size:1em;font-weight:400;line-height:1.4;margin:0}.okeReviews[data-oke-container] ul,div.okeReviews ul{padding:0;margin:0}.okeReviews[data-oke-container] li,div.okeReviews li{list-style-type:none;padding:0}.okeReviews[data-oke-container] p,div.okeReviews p{line-height:1.8;margin:0 0 4px}.okeReviews[data-oke-container] p:last-child,div.okeReviews p:last-child{margin-bottom:0}.okeReviews[data-oke-container] a,div.okeReviews a{text-decoration:none;color:inherit}.okeReviews[data-oke-container] button,div.okeReviews button{border-radius:0;border:0;box-shadow:none;margin:0;width:auto;min-width:auto;padding:0;background-color:transparent;min-height:auto}.okeReviews[data-oke-container] button,.okeReviews[data-oke-container] input,.okeReviews[data-oke-container] select,.okeReviews[data-oke-container] textarea,div.okeReviews button,div.okeReviews input,div.okeReviews select,div.okeReviews textarea{font-family:inherit;font-size:1em}.okeReviews[data-oke-container] label,.okeReviews[data-oke-container] select,div.okeReviews label,div.okeReviews select{display:inline}.okeReviews[data-oke-container] select,div.okeReviews select{width:auto}.okeReviews[data-oke-container] article,.okeReviews[data-oke-container] aside,div.okeReviews article,div.okeReviews aside{margin:0}.okeReviews[data-oke-container] table,div.okeReviews table{background:transparent;border:0;border-collapse:collapse;border-spacing:0;font-family:inherit;font-size:1em;table-layout:auto}.okeReviews[data-oke-container] table td,.okeReviews[data-oke-container] table th,.okeReviews[data-oke-container] table tr,div.okeReviews table td,div.okeReviews table th,div.okeReviews table tr{border:0;font-family:inherit;font-size:1em}.okeReviews[data-oke-container] table td,.okeReviews[data-oke-container] table th,div.okeReviews table td,div.okeReviews table th{background:transparent;font-weight:400;letter-spacing:normal;padding:0;text-align:left;text-transform:none;vertical-align:middle}.okeReviews[data-oke-container] table tr:hover td,.okeReviews[data-oke-container] table tr:hover th,div.okeReviews table tr:hover td,div.okeReviews table tr:hover th{background:transparent}.okeReviews[data-oke-container] fieldset,div.okeReviews fieldset{border:0;padding:0;margin:0;min-width:0}.okeReviews[data-oke-container] img,.okeReviews[data-oke-container] svg,div.okeReviews img,div.okeReviews svg{max-width:none}.okeReviews[data-oke-container] div:empty,div.okeReviews div:empty{display:block}.okeReviews[data-oke-container] .oke-icon:before,div.okeReviews .oke-icon:before{font-family:oke-widget-icons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:inherit}.okeReviews[data-oke-container] .oke-icon--select-arrow:before,div.okeReviews .oke-icon--select-arrow:before{content:""}.okeReviews[data-oke-container] .oke-icon--loading:before,div.okeReviews .oke-icon--loading:before{content:""}
953.okeReviews[data-oke-container] .oke-icon--pencil:before,div.okeReviews .oke-icon--pencil:before{content:""}.okeReviews[data-oke-container] .oke-icon--filter:before,div.okeReviews .oke-icon--filter:before{content:""}.okeReviews[data-oke-container] .oke-icon--play:before,div.okeReviews .oke-icon--play:before{content:""}.okeReviews[data-oke-container] .oke-icon--tick-circle:before,div.okeReviews .oke-icon--tick-circle:before{content:""}.okeReviews[data-oke-container] .oke-icon--chevron-left:before,div.okeReviews .oke-icon--chevron-left:before{content:""}.okeReviews[data-oke-container] .oke-icon--chevron-right:before,div.okeReviews .oke-icon--chevron-right:before{content:""}.okeReviews[data-oke-container] .oke-icon--thumbs-down:before,div.okeReviews .oke-icon--thumbs-down:before{content:""}.okeReviews[data-oke-container] .oke-icon--thumbs-up:before,div.okeReviews .oke-icon--thumbs-up:before{content:""}.okeReviews[data-oke-container] .oke-icon--close:before,div.okeReviews .oke-icon--close:before{content:""}.okeReviews[data-oke-container] .oke-icon--chevron-up:before,div.okeReviews .oke-icon--chevron-up:before{content:""}.okeReviews[data-oke-container] .oke-icon--chevron-down:before,div.okeReviews .oke-icon--chevron-down:before{content:""}.okeReviews[data-oke-container] .oke-icon--star:before,div.okeReviews .oke-icon--star:before{content:""}.okeReviews[data-oke-container] .oke-icon--magnifying-glass:before,div.okeReviews .oke-icon--magnifying-glass:before{content:""}@font-face{font-family:oke-widget-icons;src:url(https://cdn-static.okendo.io/reviews-widget-plus/fonts/oke-widget-icons.fbb067ad.ttf) format("truetype"),url(https://cdn-static.okendo.io/reviews-widget-plus/fonts/oke-widget-icons.64db83c3.woff) format("woff"),url(https://cdn-static.okendo.io/reviews-widget-plus/img/oke-widget-icons.bc0d6b0a.svg) format("svg");font-weight:400;font-style:normal;font-display:swap}.okeReviews[data-oke-container] .oke-button,div.okeReviews .oke-button{display:inline-block;border-style:solid;border-color:var(--oke-button-borderColor);border-width:var(--oke-button-borderWidth);background-color:var(--oke-button-backgroundColor);line-height:1;padding:12px 24px;margin:0;border-radius:var(--oke-button-borderRadius);color:var(--oke-button-textColor);text-align:center;position:relative;font-weight:var(--oke-button-fontWeight);font-size:var(--oke-button-fontSize);font-family:var(--oke-button-fontFamily);outline:0}.okeReviews[data-oke-container] .oke-button-text,.okeReviews[data-oke-container] .oke-button .oke-icon,div.okeReviews .oke-button-text,div.okeReviews .oke-button .oke-icon{line-height:1}.okeReviews[data-oke-container] .oke-button.oke-is-loading,div.okeReviews .oke-button.oke-is-loading{position:relative}.okeReviews[data-oke-container] .oke-button.oke-is-loading:before,div.okeReviews .oke-button.oke-is-loading:before{font-family:oke-widget-icons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";color:undefined;font-size:12px;display:inline-block;animation:oke-spin 1s linear infinite;position:absolute;width:12px;height:12px;top:0;left:0;bottom:0;right:0;margin:auto}.okeReviews[data-oke-container] .oke-button.oke-is-loading>*,div.okeReviews .oke-button.oke-is-loading>*{opacity:0}.okeReviews[data-oke-container] .oke-button.oke-is-active,div.okeReviews .oke-button.oke-is-active{background-color:var(--oke-button-backgroundColorActive);color:var(--oke-button-textColorActive);border-color:var(--oke-button-borderColorActive)}.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading),div.okeReviews .oke-button:not(.oke-is-loading){cursor:pointer}.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading):not(.oke-is-active):hover,div.okeReviews .oke-button:not(.oke-is-loading):not(.oke-is-active):hover{background-color:var(--oke-button-backgroundColorHover);color:var(--oke-button-textColorHover);border-color:var(--oke-button-borderColorHover);box-shadow:0 0 0 2px var(--oke-button-backgroundColorHover)}.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading):not(.oke-is-active):active,.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading):not(.oke-is-active):hover:active,div.okeReviews .oke-button:not(.oke-is-loading):not(.oke-is-active):active,div.okeReviews .oke-button:not(.oke-is-loading):not(.oke-is-active):hover:active{background-color:var(--oke-button-backgroundColorActive);color:var(--oke-button-textColorActive);border-color:var(--oke-button-borderColorActive)}.okeReviews[data-oke-container] .oke-title,div.okeReviews .oke-title{font-weight:var(--oke-title-fontWeight);font-size:var(--oke-title-fontSize);font-family:var(--oke-title-fontFamily)}.okeReviews[data-oke-container] .oke-bodyText,div.okeReviews .oke-bodyText{font-weight:var(--oke-bodyText-fontWeight);font-size:var(--oke-bodyText-fontSize);font-family:var(--oke-bodyText-fontFamily)}.okeReviews[data-oke-container] .oke-linkButton,div.okeReviews .oke-linkButton{curs
953or:pointer;font-weight:700;pointer-events:auto;text-decoration:underline}.okeReviews[data-oke-container] .oke-linkButton:hover,div.okeReviews .oke-linkButton:hover{text-decoration:none}.okeReviews[data-oke-container] .oke-readMore,div.okeReviews .oke-readMore{cursor:pointer;color:inherit;text-decoration:underline}.okeReviews[data-oke-container] .oke-select,div.okeReviews .oke-select{cursor:pointer;background-repeat:no-repeat;background-position-x:100%;background-position-y:50%;border:none;padding:0 24px 0 12px;-moz-appearance:none;appearance:none;color:inherit;-webkit-appearance:none;background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg fill='currentColor' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E");outline-offset:4px}.okeReviews[data-oke-container] .oke-select:disabled,div.okeReviews .oke-select:disabled{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg fill='%239a9db1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E")}.okeReviews[data-oke-container] .oke-loader,div.okeReviews .oke-loader{position:relative}.okeReviews[data-oke-container] .oke-loader:before,div.okeReviews .oke-loader:before{font-family:oke-widget-icons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";color:var(--oke-text-secondaryColor);font-size:12px;display:inline-block;animation:oke-spin 1s linear infinite;position:absolute;width:12px;height:12px;top:0;left:0;bottom:0;right:0;margin:auto}.okeReviews[data-oke-container] .oke-a11yText,div.okeReviews .oke-a11yText{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.okeReviews[data-oke-container] .oke-hidden,div.okeReviews .oke-hidden{display:none}.okeReviews[data-oke-container] .oke-modal,div.okeReviews .oke-modal{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2147483647;max-height:100%;background-color:rgba(0,0,0,.5);padding:40px 0 12px}@media only screen and (min-width:1024px){.okeReviews[data-oke-container] .oke-modal,div.okeReviews .oke-modal{display:flex;align-items:center;padding:48px 0}}.okeReviews[data-oke-container] .oke-modal ::-moz-selection,div.okeReviews .oke-modal ::-moz-selection{background-color:rgba(39,45,69,.2)}.okeReviews[data-oke-container] .oke-modal ::selection,div.okeReviews .oke-modal ::selection{background-color:rgba(39,45,69,.2)}.okeReviews[data-oke-container] .oke-modal,.okeReviews[data-oke-container] .oke-modal p,div.okeReviews .oke-modal,div.okeReviews .oke-modal p{color:#272d45}.okeReviews[data-oke-container] .oke-modal-content,div.okeReviews .oke-modal-content{background-color:#fff;margin:auto;position:relative;will-change:transform,opacity;width:calc(100% - 24px)}@media only screen and (min-width:1024px){.okeReviews[data-oke-container] .oke-modal-content,div.okeReviews .oke-modal-content{max-width:1000px}}.okeReviews[data-oke-container] .oke-modal-close,div.okeReviews .oke-modal-close{cursor:pointer;position:absolute;width:32px;height:32px;top:-32px;padding:4px;right:-4px;line-height:1}.okeReviews[data-oke-container] .oke-modal-close:before,div.okeReviews .oke-modal-close:before{font-family:oke-widget-icons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";color:#fff;font-size:24px;display:inline-block;width:24px;height:24px}.okeReviews[data-oke-container] .oke-modal-overlay,div.okeReviews .oke-modal-overlay{background-color:rgba(43,46,56,.9)}@media only screen and (min-width:1024px){.okeReviews[data-oke-container] .oke-modal--large .oke-modal-content,div.okeReviews .oke-modal--large .oke-modal-content{max-width:1200px}}.okeReviews[data-oke-container] .oke-modal .oke-helpful,.okeReviews[data-oke-container] .oke-modal .oke-helpful-vote-button,.okeReviews[data-oke-container] .oke-modal .oke-reviewContent-date,div.okeReviews .oke-modal .oke-helpful,div.okeReviews .oke-modal .oke-helpful-vote-button,div.okeReviews .oke-modal .oke-reviewContent-date{color:#676986}.oke-modal .okeReviews[data-oke-container].oke-w,.oke-modal div.okeReviews.oke-w{color:#272d45}.okeReviews[data-oke-container] .oke-tag,div.okeReviews .oke-tag{align-items:center;color:#272d45;display:flex;font-size:var(--oke-text-small);font-weight:600;text-align:left;position:relative;z-index:2;background-color:#f4f4f6;padding:4px 6px;border:none;border-radius:4px;gap:6px;line-height:1}.okeReviews[data-oke-container] .oke-tag svg,div.okeReviews .oke-tag svg{fill:currentColor;height:1rem}.okeReviews[data-oke-container] .hooper,div.okeReviews .hooper{height:auto}.okeReviews--left{text-align:left}.okeReviews--right{text-align:right}.okeReviews--center{text-align:center}.okeReviews :not([tabindex="-1"]):focus-visible{outline:5px auto highlight;outline:5px auto -webkit-focus-ring-color}.is-oke-modalOpen{overflow:hidden!important}img.oke-is-error{background-color:var(--oke-shadingColor);background-size:cover;background-position:50% 50%;box-shadow:inset 0 0 0 1px var(--oke-border-color)}@keyframes oke-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes oke-fade-in{0%{opacity:0}
953to{opacity:1}}.layout-panel-flex>div:has([data-oke-container]){width:100%}
954.oke-stars{line-height:1;position:relative;display:inline-block}.oke-stars-background svg{overflow:visible}.oke-stars-foreground{overflow:hidden;position:absolute;top:0;left:0}.oke-sr{display:inline-block;padding-top:var(--oke-starRating-spaceAbove);padding-bottom:var(--oke-starRating-spaceBelow)}.oke-sr .oke-is-clickable{cursor:pointer}.oke-sr--hidden{display:none}.oke-sr-count,.oke-sr-rating,.oke-sr-stars{display:inline-block;vertical-align:middle}.oke-sr-stars{line-height:1;margin-right:8px}.oke-sr-rating{display:none}.oke-sr-count--brackets:before{content:"("}.oke-sr-count--brackets:after{content:")"}
955.oke-rk{display:block}.okeReviews[data-oke-container] .oke-reviewsKeywords-heading,div.okeReviews .oke-reviewsKeywords-heading{font-weight:700;margin-bottom:8px}.okeReviews[data-oke-container] .oke-reviewsKeywords-heading-skeleton,div.okeReviews .oke-reviewsKeywords-heading-skeleton{height:calc(var(--oke-button-fontSize) + 4px);width:150px}.okeReviews[data-oke-container] .oke-reviewsKeywords-list,div.okeReviews .oke-reviewsKeywords-list{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px}.okeReviews[data-oke-container] .oke-reviewsKeywords-list-category,div.okeReviews .oke-reviewsKeywords-list-category{background-color:var(--oke-filter-backgroundColor);color:var(--oke-filter-textColor);border:1px solid var(--oke-filter-borderColor);border-radius:var(--oke-filter-borderRadius);padding:6px 16px;transition:background-color .1s ease-out,border-color .1s ease-out;white-space:nowrap}.okeReviews[data-oke-container] .oke-reviewsKeywords-list-category.oke-is-clickable,div.okeReviews .oke-reviewsKeywords-list-category.oke-is-clickable{cursor:pointer}.okeReviews[data-oke-container] .oke-reviewsKeywords-list-category.oke-is-active,div.okeReviews .oke-reviewsKeywords-list-category.oke-is-active{background-color:var(--oke-filter-backgroundColorActive);color:var(--oke-filter-textColorActive);border-color:var(--oke-filter-borderColorActive)}.okeReviews[data-oke-container] .oke-reviewsKeywords .oke-translateButton,div.okeReviews .oke-reviewsKeywords .oke-translateButton{margin-top:12px}
956.oke-rs{display:block}.oke-rs .oke-reviewsSummary.oke-is-preRender .oke-reviewsSummary-summary{-webkit-mask:linear-gradient(180deg,#000 0,#000 40%,transparent 95%,transparent 0) 100% 50%/100% 100% repeat-x;mask:linear-gradient(180deg,#000 0,#000 40%,transparent 95%,transparent 0) 100% 50%/100% 100% repeat-x;max-height:150px}.okeReviews[data-oke-container] .oke-reviewsSummary .oke-tooltip,div.okeReviews .oke-reviewsSummary .oke-tooltip{display:inline-block;font-weight:400}.okeReviews[data-oke-container] .oke-reviewsSummary .oke-tooltip-trigger,div.okeReviews .oke-reviewsSummary .oke-tooltip-trigger{height:15px;width:15px;overflow:hidden;transform:translateY(-10%)}.okeReviews[data-oke-container] .oke-reviewsSummary-heading,div.okeReviews .oke-reviewsSummary-heading{align-items:center;-moz-column-gap:4px;column-gap:4px;display:inline-flex;font-weight:700;margin-bottom:8px}.okeReviews[data-oke-container] .oke-reviewsSummary-heading-skeleton,div.okeReviews .oke-reviewsSummary-heading-skeleton{height:calc(var(--oke-button-fontSize) + 4px);width:150px}.okeReviews[data-oke-container] .oke-reviewsSummary-icon,div.okeReviews .oke-reviewsSummary-icon{fill:currentColor;font-size:14px}.okeReviews[data-oke-container] .oke-reviewsSummary-icon svg,div.okeReviews .oke-reviewsSummary-icon svg{vertical-align:baseline}.okeReviews[data-oke-container] .oke-reviewsSummary-summary.oke-is-truncated,div.okeReviews .oke-reviewsSummary-summary.oke-is-truncated{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}</style>
957    
958    
958<script type="application/json" id="oke-reviews-settings">{"subscriberId":"15ab5c73-f607-4ce7-92f4-b81d74513896","analyticsSettings":{"provider":"gtm","isWidgetOnScreenTrackingEnabled":false},"locale":"en","localeAndVariant":{"code":"en"},"widgetSettings":{"global":{"dateSettings":{"format":{"type":"relative"}},"hideOkendoBranding":true,"reviewTranslationsMode":"off","showIncentiveIndicator":false,"searchEnginePaginationEnabled":true,"stars":{"backgroundColor":"#E5E5E5","foregroundColor":"#FFCF2A","interspace":2,"shape":{"type":"default"},"showBorder":false},"font":{"fontType":"inherit-from-page"}},"homepageCarousel":{"defaultSort":"rating desc","scrollBehaviour":"slide","slidesPerPage":{"large":3,"medium":2},"style":{"arrows":{"color":"#676986","size":{"value":24,"unit":"px"},"enabled":true},"avatar":{"backgroundColor":"#E5E5EB","placeholderTextColor":"#2C3E50","size":{"value":48,"unit":"px"},"enabled":true},"border":{"color":"#E5E5EB","width":{"value":1,"unit":"px"}},"highlightColor":"#0E7A82","layout":{"name":"default","reviewDetailsPosition":"below","showAttributeBars":false,"showProductDetails":"only-when-grouped","showProductName":false},"media":{"size":{"value":80,"unit":"px"},"imageGap":{"value":4,"unit":"px"},"enabled":true},"productImageSize":{"value":48,"unit":"px"},"showDates":true,"spaceAbove":{"value":20,"unit":"px"},"spaceBelow":{"value":20,"unit":"px"},"stars":{"height":{"value":18,"unit":"px"},"globalOverrideSettings":{"backgroundColor":"#E5E5E5","foregroundColor":"#FFCF2A"}},"text":{"primaryColor":"#2C3E50","fontSizeRegular":{"value":14,"unit":"px"},"fontSizeSmall":{"value":12,"unit":"px"},"secondaryColor":"#676986"}},"totalSlides":12,"truncation":{"bodyMaxLines":4,"enabled":true,"truncateAll":false}},"mediaCarousel":{"minimumImages":1,"linkText":"Read More","stars":{"backgroundColor":"#E5E5E5","foregroundColor":"#FFCF2A","height":{"value":12,"unit":"px"}},"autoPlay":false,"slideSize":"medium","arrowPosition":"outside"},"mediaGrid":{"showMoreArrow":{"arrowColor":"#676986","enabled":true,"backgroundColor":"#f4f4f6"},"infiniteScroll":false,"gridStyleDesktop":{"layout":"default-desktop"},"gridStyleMobile":{"layout":"default-mobile"},"linkText":"Read More","stars":{"backgroundColor":"#E5E5E5","foregroundColor":"#FFCF2A","height":{"value":12,"unit":"px"}},"gapSize":{"value":10,"unit":"px"}},"questions":{"loadMorePageSize":6,"initialPageSize":6},"reviewsBadge":{"layout":"large","colorScheme":"dark"},"reviewsTab":{"enabled":false},"reviewsWidget":{"style":{"headingFont":{"hasCustomFontSettings":false},"spaceBelow":{"unit":"px","value":40},"avatar":{"backgroundColor":"#EFEFEF","placeholderTextColor":"#155dd7","size":{"value":48,"unit":"px"},"enabled":true},"button":{"textColorActive":"#155DD7","borderWidth":{"value":0,"unit":"px"},"borderColorActive":"#FFFFFF","backgroundColor":"#DEFF5B","textColorHover":"#155DD7","font":{"fontSize":{"unit":"px","value":14},"fontFamily":"adieu","fontWeight":300,"fontType":"custom","hasCustomFontSettings":true},"borderColor":"#EDEDED","textColor":"#155DD7","borderRadius":{"value":100,"unit":"px"},"backgroundColorActive":"#DEFF5B","backgroundColorHover":"#DEFF5B","borderColorHover":"#FFFFFF"},"spaceAbove":{"value":40,"unit":"px"},"showDates":true,"text":{"fontSizeSmall":{"value":12,"unit":"px"},"fontSizeRegular":{"value":16,"unit":"px"},"secondaryColor":"#5B6B7F","primaryColor":"#24364B","fontSizeLarge":{"value":20,"unit":"px"}},"bodyFont":{"hasCustomFontSettings":false},"border":{"color":"#E5E5EB","width":{"unit":"px","value":1}},"filters":{"textColor":"#155dd7","borderColor":"#DBDDE4","textColorActive":"#FFFFFF","searchHighlightColor":"#a1beef","backgroundColor":"#FFFFFF","backgroundColorActive":"#155DD7","borderColorActive":"#FFFFFF","borderRadius":{"unit":"px","value":100}},"productImageSize":{"unit":"px","value":48},"highlightColor":"#155dd7","attributeBar":{"markerColor":"#155dd7","style":"default","backgroundColor":"#D3D4DD","shadingColor":"#155DD7"},"stars":{"height":{"value":18,"unit":"px"},"globalOverrideSettings":{"foregroundColor":"#155DD7","showBorder":false,"backgroundColor":"#FFFFFF"}},"shadingColor":"#EAEAEA"},"showWhenEmpty":true,"tabs":{"questions":false,"reviews":true},"header":{"verticalAlignment":"top","columnDistribution":"space-between","blocks":[{"modules":[{"name":"reviews-summary","heading":"Reviews Summary","maxTextLines":5}],"textAlignment":"left","columnWidth":"full"},{"columnWidth":"half","modules":[{"name":"rating-average","layout":"one-line"},{"shadingColor":"#155DD7","backgroundColor":"#F4F4F6","stretchMode":"stretch","name":"rating-breakdown"}],"textAlignment":"left"},{"textAlignment":"center","columnWidth":"half","modules":[{"stretchMode":"stretch","layout":"stacked","name":"attributes"}]},{"textAlignment":"left","columnWidth":"full","modules":[{"name":"media-carousel","imageGap":{"value":4,"unit":"px"},"imageHeight":{"value":120,"unit":"px"}}]}]},"reviews":{"controls":{"writeReviewButtonEnabled":true,"defaultSort":"helpful desc","freeTextSearchEnabled":true,"filterMode":"closed","sortOptionOrder":["helpful desc","date desc","has_media desc","rating desc","rating asc","date asc","unhelpful desc"],"keywordsFilterEnabled":true},"list":{"truncation":{"bodyMaxLines":4,"truncateAll":false,"enabled":true},"initialPageSize":5,"replyTruncation":{"bodyMaxLines":4,"enabled":true},"loyalty":{"maxInitialAchievements":3},"media":{"imageGap":{"unit":"px","value":4},"layout":"thumbnail","size":{"unit":"px","value":200}},"loadMorePageSize":5,"layout":{"collapseReviewerDetails":false,"borderStyle":"minimal","columnAmount":4,"showProductVariantName":false,"showAttributeBars":false,"showProductDetails":"always","name":"default"}}}},"starRatings":{"clickBehavior":"scroll-to-widget","showWhenEmpty":false,"style":{"globalOverrideSettings":{"backgroundColor":"#E5E5E5","foregroundColor":"#FFCF2A"},"spaceAbove":{"value":0,"unit":"px"},"text":{"content":"review-count","style":"number-and-text","brackets":false},"height":{"value":18,"unit":"px"},"spaceBelow":{"value":0,"unit":"px"}}}},"features":{"attributeFiltersEnabled":true,"recorderPlusEnabled":true,"recorderQandaPlusEnabled":true,"reviewsKeywordsEnabled":true,"reviewsSummariesEnabled":true,"widgetPlusTranslationsEnabled":true}}</script>
958
959            <style id="oke-css-vars">:root{--oke-widget-spaceAbove:40px;--oke-widget-spaceBelow:40px;--oke-starRating-spaceAbove:0;--oke-starRating-spaceBelow:0;--oke-button-backgroundColor:#deff5b;--oke-button-backgroundColorHover:#deff5b;--oke-button-backgroundColorActive:#deff5b;--oke-button-textColor:#155dd7;--oke-button-textColorHover:#155dd7;--oke-button-textColorActive:#155dd7;--oke-button-borderColor:#ededed;--oke-button-borderColorHover:#fff;--oke-button-borderColorActive:#fff;--oke-button-borderRadius:100px;--oke-button-borderWidth:0;--oke-button-fontWeight:300;--oke-button-fontSize:14px;--oke-button-fontFamily:adieu,sans-serif;--oke-border-color:#e5e5eb;--oke-border-width:1px;--oke-text-primaryColor:#24364b;--oke-text-secondaryColor:#5b6b7f;--oke-text-small:12px;--oke-text-regular:16px;--oke-text-large:20px;--oke-text-fontFamily:inherit;--oke-avatar-size:48px;--oke-avatar-backgroundColor:#efefef;--oke-avatar-placeholderTextColor:#155dd7;--oke-highlightColor:#155dd7;--oke-shadingColor:#eaeaea;--oke-productImageSize:48px;--oke-attributeBar-shadingColor:#155dd7;--oke-attributeBar-borderColor:undefined;--oke-attributeBar-backgroundColor:#d3d4dd;--oke-attributeBar-markerColor:#155dd7;--oke-filter-backgroundColor:#fff;--oke-filter-backgroundColorActive:#155dd7;--oke-filter-borderColor:#dbdde4;--oke-filter-borderColorActive:#fff;--oke-filter-textColor:#155dd7;--oke-filter-textColorActive:#fff;--oke-filter-borderRadius:100px;--oke-filter-searchHighlightColor:#a1beef;--oke-mediaGrid-chevronColor:#676986;--oke-stars-foregroundColor:#ffcf2a;--oke-stars-backgroundColor:#e5e5e5;--oke-stars-borderWidth:0}.oke-reviewCarousel{--oke-stars-foregroundColor:#ffcf2a;--oke-stars-backgroundColor:#e5e5e5;--oke-stars-borderWidth:0}.oke-w,.oke-modal{--oke-stars-foregroundColor:#155dd7;--oke-stars-backgroundColor:#fff;--oke-stars-borderWidth:0}.oke-sr{--oke-stars-foregroundColor:#ffcf2a;--oke-stars-backgroundColor:#e5e5e5;--oke-stars-borderWidth:0}.oke-w,.oke-modal{--oke-title-fontWeight:600;--oke-title-fontSize:var(--oke-text-regular,14px);--oke-title-fontFamily:inherit;--oke-bodyText-fontWeight:400;--oke-bodyText-fontSize:var(--oke-text-regular,14px);--oke-bodyText-fontFamily:inherit}</style>
960            
961            <template id="oke-reviews-body-template"><svg id="oke-star-symbols" style="display:none!important" data-oke-id="oke-star-symbols"><symbol id="oke-star-empty" style="overflow:visible;"><path id="star-default--empty" fill="var(--oke-stars-backgroundColor)" stroke="var(--oke-stars-borderColor)" stroke-width="var(--oke-stars-borderWidth)" d="M3.34 13.86c-.48.3-.76.1-.63-.44l1.08-4.56L.26 5.82c-.42-.36-.32-.7.24-.74l4.63-.37L6.92.39c.2-.52.55-.52.76 0l1.8 4.32 4.62.37c.56.05.67.37.24.74l-3.53 3.04 1.08 4.56c.13.54-.14.74-.63.44L7.3 11.43l-3.96 2.43z"/></symbol><symbol id="oke-star-filled" style="overflow:visible;"><path id="star-default--filled" fill="var(--oke-stars-foregroundColor)" stroke="var(--oke-stars-borderColor)" stroke-width="var(--oke-stars-borderWidth)" d="M3.34 13.86c-.48.3-.76.1-.63-.44l1.08-4.56L.26 5.82c-.42-.36-.32-.7.24-.74l4.63-.37L6.92.39c.2-.52.55-.52.76 0l1.8 4.32 4.62.37c.56.05.67.37.24.74l-3.53 3.04 1.08 4.56c.13.54-.14.74-.63.44L7.3 11.43l-3.96 2.43z"/></symbol></svg></template>
961<script>document.addEventListener('readystatechange',() =>{Array.from(document.getElementById('oke-reviews-body-template')?.content.children)?.forEach(function(child){if(!Array.from(document.body.querySelectorAll('[data-oke-id='.concat(child.getAttribute('data-oke-id'),']'))).length){document.body.prepend(child)}})},{once:true});</script>
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975<!-- END app snippet -->
976
977    <!-- BEGIN app snippet: okendo-reviews-json-ld -->
978<!-- END app snippet -->
979
980<!-- BEGIN app snippet: widget-plus-initialisation-script -->
981
982
983
984
985    
985<script async id="okendo-reviews-script" src="https://cdn-static.okendo.io/reviews-widget-plus/js/okendo-reviews.js"></script>
985
986
987<!-- END app snippet -->
988
989
990<!-- END app block --><!-- BEGIN app block: shopify://apps/recart-sms-list-growth/blocks/loader/c3f195f0-9f15-4ebc-9a44-84989a1ee8d1 -->
991
992<script type="text/javascript" async src="https://storefront.recart.com/loader.js?domain=nativepet.com&account=69dd1ba90d2425636d835bc6&hasGMInitParams=1&shop=the-native-pet.myshopify.com" data-em-disable="true"></script>
992
993  
993<script type="text/javascript" async src="https://storefront.recart.com/settings/69dd1ba90d2425636d835bc6/settings.js?shop=the-native-pet.myshopify.com" data-em-disable="true"></script>
993
994
995
996
997<!-- 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 />
998<link rel='preconnect dns-prefetch' href='https://conf.config-security.com/' crossorigin />
999<script>
1000/* >> TriplePixel :: start*/
1001window.TriplePixelData={TripleName:"the-native-pet.myshopify.com",ver:"2.16",plat:"SHOPIFY",isHeadless:false,src:'SHOPIFY_EXT',product:{id:"",name:``,price:"",variant:"",av:{  }},search:"",collection:"",cart:"drawer",template:"page",curr:"USD" || "USD", market:"428212267"},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);
1002/* << TriplePixel :: end*/
1003</script>
1003
1004
1005
1006
1007<!-- END app block -->
1007<script src="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/consentmo_cookie_consent.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1007
1007
1008<script src="https://cdn.shopify.com/extensions/01a0fe54-371b-77cc-aed0-c4657456b419/aftersell-1118/assets/aftersell-utm-triggers.js" type="text/javascript" defer="defer"></script>
1008
1009<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1010<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: 27157980,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "page"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 1010
1010
1011<script>
1012  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
1013</script>
vendor: 1 bytes, line 1013
1013
1014<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
1014).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 27157980,storefrontBaseUrl: "https://nativepet.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://nativepet.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"2274885675","configuration":"{\"accountID\":\"veeper-app-id\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"1d343e89934ea1dbfdb8898bc8b5e698","type":"APP","apiClientId":5163463,"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":"2263646251","configuration":"{\"vibePixelId\":\"AwvmCV\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"72859894ec8aa8d5e0246c40aaed9466","type":"APP","apiClientId":132266098689,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2252472363","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-T19G0XBDP1\\\",\\\"AW-815210734\\\",\\\"GT-PZ6DVHXH\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-T19G0XBDP1\\\",\\\"AW-815210734\\\/4jqiCJqt1PMCEO7B3IQD\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-T19G0XBDP1\\\",\\\"AW-815210734\\\/gEZSCJ2t1PMCEO7B3IQD\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-T19G0XBDP1\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-T19G0XBDP1\\\",\\\"AW-815210734\\\/ByPkCJSt1PMCEO7B3IQD\\\",\\\"MC-BJ0LMSWTJE\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-T19G0XBDP1\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-T19G0XBDP1\\\",\\\"AW-815210734\\\/NH73CJGt1PMCEO7B3IQD\\\",\\\"MC-BJ0LMSWTJE\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-T19G0XBDP1\\\",\\\"AW-815210734\\\/K4TTCI6t1PMCEO7B3IQD\\\",\\\"MC-BJ0LMSWTJE\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-T19G0XBDP1\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-T19G0XBDP1\\\",\\\"AW-815210734\\\/EzGfCJiu1PMCEO7B3IQD\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-T19G0XBDP1\\\",\\\"AW-815210734\\\/h6EcCJet1PMCEO7B3IQD\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-T19G0XBDP1\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"2021294123","configuration":"{\"accountID\":\"shopify-27157980\", \"endpoint\"
1014:\"https:\/\/connect.nosto.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"85848493c2a1c7a4bbf22728b6f9f31f","type":"APP","apiClientId":272825,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1925480491","configuration":"{\"accountID\":\"1220658\",\"workspaceId\":\"f02ce379-a118-401b-bed3-4da71a1fdde4\",\"projectId\":\"641753cf-f654-4085-9e57-41bc8e90219b\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d98eb033f1e81320021a411362de3a55","type":"APP","apiClientId":5461967,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1905721387","configuration":"{\"shopId\":\"the-native-pet.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"31536d5a2ef62c1887054e49fd58dba0","type":"APP","apiClientId":4845829,"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":"1850081323","configuration":"{\"pixel_id\":\"1446982975350461\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","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":"1849229355","configuration":"{\"siteID\":\"69dd1ba90d2425636d835bc6\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"022e2d3d38c42b2f6986f90d20803831","type":"APP","apiClientId":1098570,"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":"1037631531","configuration":"{\"accountID\":\"KNpPbt\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c63c5b72c8d77be5f2d27d14c081da38","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"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":"333971499","configuration":"{\"accountID\":\"18023\",\"micrositeDomain\":\"partner.nativepet.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"9fae8f5cb0b9c97477ac364bb3772a0c","type":"APP","apiClientId":4862993,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"297992235","configuration":"{\"myshopifyDomain\":\"the-native-pet.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"23b97d18e2aa74363140dc29c9284e87","type":"APP","apiClientId":2775569,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"}
1014,{"id":"163446827","configuration":"{\"env\":\"prod\"}","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"8a9a175b11d15038a70fe78d09c59720","type":"APP","apiClientId":3977633,"privacyPurposes":["ANALYTICS","MARKETING"],"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":"43745323","configuration":"{\"tagID\":\"2613076493321\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7ae565e198624b39e0856d352b9a6b4c","type":"APP","apiClientId":3009811,"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":"33980459","configuration":"{\"shopId\":\"the-native-pet.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7093dff47f098f6de2afb75b62011ebe","type":"APP","apiClientId":2753413,"privacyPurposes":["ANALYTICS","MARKETING"],"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":"18186283","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"8","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"],"name":"Amazon"},{"id":"28049451","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Attentive tag"},{"id":"96796715","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"2","type":"CUSTOM","privacyPurposes":["ANALYTICS"],"name":"Heap"},{"id":"98107435","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":[],"name":"Instant"},{"id":"133070891","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"4","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"GA4 Custom Events"}
1014,{"id":"135528491","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"7","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Meta Checkout Events"},{"id":"137461803","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"FBC\/FBP Cart Writer"},{"id":"140869675","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"4","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"PostHog Checkout"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Native Pet","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"the-native-pet.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/nativepet.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"7609540378667","handle":"hip-joint-advanced-care-powder","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"42265215107115","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"7989690105899","handle":"cat-multivitamin","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"50461037723691","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"7074701180971","handle":"the-daily","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"43086087061547","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://nativepet.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"126752292907","themePublished":"true","eventMetadataId":"2e685c7f-2162-4f40-93af-803b8645696b","pageType":"page","resourceId":"87538499627","shopId":"27157980","storefrontBaseUrl":"https:\/\/nativepet.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
1014<script>
1015  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
1016  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
1017  window.ShopifyAnalytics.meta.currency = 'USD';
1018  var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":87538499627,"requestId":"4323fb28-d9b6-47bc-9aec-bdd4d0ab48ac-1791073527"}};
1019  for (var attr in meta) {
1020    window.ShopifyAnalytics.meta[attr] = meta[attr];
1021  }
1022</script>
vendor: 1 bytes, line 1022
1022
1023<script class="analytics">
1024  (function () {
1025    var customDocumentWrite = function(content) {
1026      var jquery = null;
1027
1028      if (window.jQuery) {
1029        jquery = window.jQuery;
1030      } else if (window.Checkout && window.Checkout.$) {
1031        jquery = window.Checkout.$;
1032      }
1033
1034      if (jquery) {
1035        jquery('body').append(content);
1036      }
1037    };
1038
1039    var hasLoggedConversion = function(token) {
1040      if (token) {
1041        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
1042      }
1043      return false;
1044    }
1045
1046    var setCookieIfConversion = function(token) {
1047      if (token) {
1048        var twoMonthsFromNow = new Date(Date.now());
1049        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
1050
1051        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
1052      }
1053    }
1054
1055    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
1056    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
1057    if (trekkie.integrations) {
1058      return;
1059    }
1060    trekkie.methods = [
1061      'identify',
1062      'page',
1063      'ready',
1064      'track',
1065      'trackForm',
1066      'trackLink'
1067    ];
1068    trekkie.factory = function(method) {
1069      return function() {
1070        var args = Array.prototype.slice.call(arguments);
1071        args.unshift(method);
1072        trekkie.push(args);
1073        if (method == 'track' || method == 'page') {
1074          var pageUrl;
1075          try {
1076            pageUrl = window.location.href;
1077          } catch (e) {}
1078          var pageReferrer;
1079          try {
1080            pageReferrer = document.referrer;
1081          } catch (e) {}
1082          try {
1083            if (window.__TREKKIE_SHIM_QUEUE == null) {
1084              window.__TREKKIE_SHIM_QUEUE = [];
1085            }
1086            window.__TREKKIE_SHIM_QUEUE.push({
1087              from: 'trekkie-stub',
1088              method: method,
1089              args: args.slice(1),
1090              pageContext: {
1091                url: pageUrl,
1092                referrer: pageReferrer
1093              }
1094            });
1095          } catch (e) {
1096            // no-op
1097          }
1098        }
1099        return trekkie;
1100      };
1101    };
1102    for (var i = 0; i < trekkie.methods.length; i++) {
1103      var key = trekkie.methods[i];
1104      trekkie[key] = trekkie.factory(key);
1105    }
1106    trekkie.load = function(config) {
1107      trekkie.config = config || {};
1108      trekkie.config.initialDocumentCookie = document.cookie;
1109      var first = document.getElementsByTagName('script')[0];
1110var script = document.createElement('script');
1111script.type = 'text/javascript';
1112script.onerror = function(e) {
1113  var scriptFallback = document.createElement('script');
1114  scriptFallback.type = 'text/javascript';
1115  scriptFallback.onerror = function(error) {
1116          var Monorail = {
1117      produce: function produce(monorailDomain, schemaId, payload) {
1118        var currentMs = new Date().getTime();
1119        var event = {
1120          schema_id: schemaId,
1121          payload: payload,
1122          metadata: {
1123            event_created_at_ms: currentMs,
1124            event_sent_at_ms: currentMs
1125          }
1126        };
1127        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
1128      },
1129      sendRequest: function sendRequest(endpointUrl, payload) {
1130        // Try the sendBeacon API
1131        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
1132          var blobData = new window.Blob([payload], {
1133            type: 'text/plain'
1134          });
1135
1136          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
1137            return true;
1138          } // sendBeacon was not successful
1139
1140        } // XHR beacon
1141
1142        var xhr = new XMLHttpRequest();
1143
1144        try {
1145          xhr.open('POST', endpointUrl);
1146          xhr.setRequestHeader('Content-Type', 'text/plain');
1147          xhr.send(payload);
1148        } catch (e) {
1149          console.log(e);
1150        }
1151
1152        return false;
1153      },
1154      isIos12: function isIos12() {
1155        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
1156      }
1157    };
1158    Monorail.produce('monorail-edge.shopifysvc.com',
1159      'trekkie_storefront_load_errors/1.1',
1160      {shop_id: 27157980,
1161      theme_id: 126752292907,
1162      app_name: "storefront",
1163      context_url: window.location.href,
1164      source_url: "//nativepet.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"});
1165
1166  };
1167  scriptFallback.async = true;
1168  scriptFallback.src = '//nativepet.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
1169  first.parentNode.insertBefore(scriptFallback, first);
1170};
1171script.async = true;
1172script.src = '//nativepet.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
1173first.parentNode.insertBefore(script, first);
1174
1175    };
1176    trekkie.load(
1177      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":27157980,"isMerchantRequest":null,"themeId":126752292907,"themeCityHash":"6646004496582341436","contentLanguage":"en","currency":"USD","eventMetadataId":"2e685c7f-2162-4f40-93af-803b8645696b"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
1178    );
1179
1180    var loaded = false;
1181    trekkie.ready(function() {
1182      if (loaded) return;
1183      loaded = true;
1184
1185      window.ShopifyAnalytics.lib = window.trekkie;
1186
1187      var originalDocumentWrite = document.write;
1188      document.write = customDocumentWrite;
1189      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
1190      document.write = originalDocumentWrite;
1191
1192      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
1193      var token = match? match[1]: undefined;
1194      if (!hasLoggedConversion(token)) {
1195        setCookieIfConversion(token);
1196        
1197      }
1198    });
1199
1200    window.ShopifyAnalytics.lib.page(null,{"pageType":"page","resourceType":"page","resourceId":87538499627,"requestId":"4323fb28-d9b6-47bc-9aec-bdd4d0ab48ac-1791073527","shopifyEmitted":true});
1201
1202    var eventsListenerScript = document.createElement('script');
1203    eventsListenerScript.async = true;
1204    eventsListenerScript.src = "//nativepet.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
1205    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
1206})();</script>
1206
1207  
1207<script>
1208  if (!window.ga || (window.ga && typeof window.ga !== 'function')) {
1209    window.ga = function ga() {
1210      (window.ga.q = window.ga.q || []).push(arguments);
1211      if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
1212        window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"});
1213      }
1214      console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information.");
1215    };
1216    if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
1217      window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"});
1218    }
1219  }
1220</script>
vendor: 1 bytes, line 1220
1220
1221<script
1222  defer
1223  src="https://nativepet.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js"
1224  data-application="storefront-renderer"
1225  data-shop-id="27157980"
1226  data-render-region="gcp-us-central1"
1227  data-page-type="page"
1228  data-theme-instance-id="126752292907"
1229  data-theme-name="Bella"
1230  data-theme-version="2.60.6"
1231  data-monorail-region="shop_domain"
1232  data-resource-timing-sampling-rate="10"
1233  data-shs="true"
1234  data-shs-beacon="true"
1235  data-shs-export-with-fetch="true"
1236  data-shs-logs-sample-rate="1"
1237  data-shs-beacon-endpoint="https://nativepet.com/api/collect"
1238></script>
1238
1239<meta name="shopify-y" content="a81bd2b8-cf5e-4e65-a9c7-543ebc17b58a" data-expiration="1822631127000"><meta name="shopify-s" content="785c3e53-f23e-4569-a281-0a7ed8ca52af" data-expiration="1791075327000"><meta name="new-cookie-storage-activated" content="t">
1240</head>
1241
1242  <body class="page-page">
1243    <a
1244  href="#main"
1245  class="sr-only left-0 top-0 z-50 inline-block bg-dark text-white focus:not-sr-only focus:absolute focus:z-50 focus:px-4 focus:py-2 focus:outline-none focus:ring-2 focus:ring-dark focus:ring-offset-2"
1246>
1247  Skip to content
1248</a>
1249
1250    <!-- BEGIN sections: header-group -->
1251<div id="shopify-section-sections--15358667685931__announcement-bar" class="shopify-section shopify-section-group-header-group announcement-bar-section">
1252
1253<style data-shopify>
1254  .announcement-bar-section {
1255    z-index: 50;
1256  }
1257</style>
1258
1259
1260  <div
1261    id="announcement-bar"
1262    class="bg-background text-foreground color-scheme-1"
1263    role="region"
1264    aria-roledescription="Carousel"
1265    aria-label="Announcement bar"
1266    x-data="
1267      {
1268        emblaApi: null,
1269
1270        setAnnouncementBarHeight() {
1271          document.documentElement.style.setProperty('--announcement-bar-height', $el.offsetHeight + 'px')
1272        },
1273
1274        init() {
1275          const isReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches
1276
1277          const plugins = isReducedMotion
1278            ? [EmblaCarouselFade(), EmblaCarouselAutoplay(), EmblaCarouselWheelGestures()]
1279            : [EmblaCarouselAutoplay(), EmblaCarouselWheelGestures()]
1280
1281          this.emblaApi = EmblaCarousel($refs.embla, { loop: true }, plugins)
1282
1283          this.setAnnouncementBarHeight()
1284        }
1285      }
1286    "
1287    
1288      style="--color-background: #155dd7;"
1289    
1290  >
1291    <div
1292      role="region"
1293      aria-roledescription="carousel"
1294      style="--slide-size: 100%; --slide-spacing: 0"
1295    >
1296      <div x-ref="embla" class="embla__viewport">
1297        <div class="embla__container text-center text-[12px] tracking-[1px] lg:text-[14px]">
1298          
1299            
1300              
1301              
1302              
1303              
1304              
1305              
1306              
1307              <div
1308                class="embla__slide flex h-10 items-center justify-center !px-4"
1309                role="region"
1310                aria-label="Announcement"
1311                
1312              ><a href="/collections/cat">
1313                    <span class="overflow-hidden overflow-ellipsis whitespace-nowrap text-white">
1314                      We Got Cats. Shop Meow.
1315                    </span>
1316                  </a></div>
1317            
1318              
1319              
1320              
1321              
1322              
1323              
1324              
1325              <div
1326                class="embla__slide flex h-10 items-center justify-center !px-4"
1327                role="region"
1328                aria-label="Announcement"
1329                
1330              ><span class="overflow-hidden overflow-ellipsis whitespace-nowrap">
1331                    Free Daily Travel Size on Orders $75+
1332                  </span></div>
1333            
1334              
1335              
1336              
1337              
1338              
1339              
1340              
1341              <div
1342                class="embla__slide flex h-10 items-center justify-center !px-4"
1343                role="region"
1344                aria-label="Announcement"
1345                
1346              ><a href="/collections/all">
1347                    <span class="overflow-hidden overflow-ellipsis whitespace-nowrap text-white">
1348                      Free Shipping on Every $34.99+ Order
1349                    </span>
1350                  </a></div>
1351            
1352          
1353        </div>
1354      </div>
1355    </div>
1356  </div>
1357
1358
1359
1360</div><div id="shopify-section-sections--15358667685931__header" class="shopify-section shopify-section-group-header-group header-section"><style data-shopify>
1361  .header-section {
1362    background-color: var(--color-transparent);
1363    color: var(--color-white);
1364    z-index: 1000;
1365    position: sticky;
1366    top: 0;
1367    transition:
1368      background-color 250ms ease-in-out,
1369      color 250ms ease-in-out;
1370    width: 100%;
1371  }
1372
1373  .header-section::after {
1374    box-shadow: 0px 4px 24px -8px rgba(0, 0, 0, 0.25);
1375    content: '';
1376    position: absolute;
1377    z-index: -1;
1378    inset: 0;
1379    opacity: 0;
1380    transition: opacity 250ms ease-in-out;
1381  }
1382
1383  body .header-section,
1384  /* body:not(.page-index) .header-section, */
1385  html[data-state='sticky'] .header-section,
1386  html[data-menu='open'] .header-section {
1387    color: var(--color-dark);
1388  }
1389
1390  body .header-section,
1391  /* body:not(.page-index) .header-section, */
1392  html[data-state='sticky'] .header-section {
1393    background-color: var(--color-white);
1394  }
1395
1396  html[data-state='sticky'] .header-section::after,
1397  html[data-menu='open'] .header-section::after {
1398    opacity: 1;
1399  }
1400
1401  #menu,
1402  #search {
1403    box-shadow: 0px 4px 24px -8px rgba(0, 0, 0, 0.25);
1404  }
1405</style>
1406
1407
1408
1409
1410
1411<header
1412  id="header"
1413  x-data="
1414    {
1415      open: false,
1416      isStuck: false,
1417
1418      toggleSticky() {
1419        const pastThreshold = window.scrollY > 40
1420
1421        if (pastThreshold && !this.isStuck) {
1422          document.documentElement.setAttribute('data-state', 'sticky');
1423          this.isStuck = true;
1424        } else if (!pastThreshold && this.isStuck) {
1425          document.documentElement.removeAttribute('data-state')
1426          this.isStuck = false
1427        }
1428      },
1429
1430      
1431      openSearch() {
1432        if (typeof window.Rebuy !== 'undefined' && typeof window.Rebuy?.SmartSearch?.quickView?.view?.openQuickView === 'function') {
1433          window.Rebuy.SmartSearch.quickView.view.openQuickView();
1434        }
1435        else {
1436          this.toggleMenu('search');
1437        }
1438      },
1439      
1440
1441      toggleMenu(state = this.open) {
1442        this.open = state;
1443        document.documentElement.setAttribute('data-menu', this.open ? 'open' : 'closed');
1444        if (this.open === 'menu' && typeof window?.Rebuy?.SmartSearch?.quickView?.view?.closeQuickView === 'function') {
1445          window.Rebuy.SmartSearch.quickView.view.closeQuickView();
1446        }
1447      },
1448
1449      init() {
1450        this.reInit()
1451        this.handleAbExperiment()
1452      },
1453
1454      reInit() {
1455        this.toggleSticky();
1456        document.documentElement.style.setProperty('--header-height', this.$el.offsetHeight + 'px');
1457      },
1458
1459      handleMouseLeave() {
1460        if (this.open !== 'search') {
1461          this.timeoutId = setTimeout(() => this.toggleMenu(false), 300);
1462        }
1463      },
1464
1465      handleMouseEnter() {
1466        if (this.open !== 'search' && this.timeoutId) {
1467          clearTimeout(this.timeoutId);
1468        }
1469      },
1470
1471      async handleAbExperiment() {
1472        const hypothesisId = 'dffc1f21-bbbe-4f1a-be86-443bdcf08737'
1473        const isVariant = await window.shoplift?.isHypothesisActive?.(hypothesisId) ?? false
1474
1475        if (isVariant) {
1476          const els = this.$el.querySelectorAll(`a[href='/pages/philosophy']`)
1477
1478          els.forEach((el) => el.remove())
1479        }
1480      }
1481    }
1482  "
1483  @scroll.window.passive="toggleSticky"
1484  @mouseleave="handleMouseLeave"
1485  @mouseenter="handleMouseEnter"
1486  @resize.window.passive="reInit"
1487>
1488  <div class="relative z-50 color-scheme-3 bg-background text-foreground">
1489    <div x-ref="header" class="mx-auto h-[72px] w-full max-w-8xl px-2 lg:h-20 lg:px-6">
1490      <div class="grid grid-cols-[max-content_max-content_1fr_max-content_max-content] items-center py-4 lg:grid-cols-[max-content_1fr_max-content] lg:gap-4 2xl:gap-8">
1491        <button
1492          type="button"
1493          class="-order-2 grid h-10 w-10 items-center justify-center xl:hidden"
1494          @click="$dispatch('toggle-mobile-menu')"
1495        >
1496          <span class="sr-only">Open menu</span>
1497          <svg
1498  xmlns="http://www.w3.org/2000/svg"
1499  aria-hidden="true"
1500  focusable="false"
1501  class="icon icon-hamburger size-10"
1502  viewBox="0 0 40 40"
1503>
1504  <g fill="none" fill-rule="evenodd"><path d="M0 0h40v40H0z"/><g fill="currentColor"><path d="M10 24h20v2H10zM10 19h20v2H10zM10 14h20v2H10z"/></g></g>
1505</svg>
1506
1507        </button>
1508        <div class="flex justify-center lg:justify-start">
1509          
1510            <a href="/" class="block text-current">
1511              <span class="sr-only">Native Pet</span>
1512              <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 122 32" class="block w-[150px] lg:w-[180px]">
1513  <path fill="currentColor" d="m17.16 21.527-.412-6.468c-.342-5.373-3.285-7.427-6.502-7.427-2.362 0-4.244 1.13-5.202 2.978V8.385c0-.582-.343-.992-1.061-.616L.663 9.378c-.377.17-.616.342-.616.616v.102c0 .753 1.54.787 1.54 2.293v9.172c0 1.335-1.369 1.472-1.369 2.225v.137c0 .308.274.513.719.513h5.305c.479 0 .752-.205.752-.513v-.137c0-.753-1.403-.89-1.403-2.225V13.52c0-2.464 1.403-4.244 3.594-4.244 2.088 0 3.422 1.745 3.593 5.647l.343 6.605c.068 1.37-1.232 1.506-1.232 2.26v.136c0 .308.273.513.753.513h4.996c.445 0 .753-.205.753-.513v-.137c0-.753-1.163-.89-1.232-2.259Z"/>
1514  <path fill="currentColor" d="m31.735 21.322-.684-6.571c-.48-4.415-3.252-7.119-7.564-7.119-3.662 0-6.332 1.677-6.332 3.833 0 .959.65 1.575 1.677 1.575 2.157 0 1.472-4.142 4.655-4.142 2.396 0 3.217 2.054 3.594 6.024l.068.684c-.924-.718-2.293-1.163-3.97-1.163-3.457 0-6.263 1.78-6.229 5.133 0 3.354 2.67 5.168 6.4 5.168 2.43 0 3.97-.924 4.757-2.19.137 1.677.993 2.054 2.738 2.054 1.472 0 2.773-.206 2.773-.856 0-.89-1.643-.205-1.883-2.43Zm-7.255 2.122c-2.122 0-3.491-2.02-3.491-4.347 0-2.053 1.334-3.354 3.217-3.354 1.814 0 3.114 1.232 3.251 3.183l.103 1.061c.102 1.848-1.164 3.457-3.08 3.457Z"/>
1515  <path fill="currentColor" d="M37.71 24.744c3.08 0 4.826-2.293 4.826-4.586 0-.616-.822-.718-1.13-.17-.205.992-.992 1.779-2.43 1.779-1.13 0-1.95-.89-1.95-2.533V9.651h4.312c.342 0 .616-.24.616-.581v-.48a.613.613 0 0 0-.616-.616h-4.313l-.034-3.32c0-.479-.205-.752-.65-.752h-.513c-.343 0-.616.273-.685.753-.274 1.985-1.335 3.32-3.114 3.32h-1.061c-.377 0-.582.239-.582.615v.48c0 .342.24.581.582.581h1.95V19.2c0 3.696 1.917 5.544 4.792 5.544Z"/>
1516  <path fill="currentColor" d="M43.975 5.134c1.678 0 2.773-1.061 2.773-2.567C46.748 1.095 45.653 0 43.975 0c-1.71 0-2.84 1.095-2.84 2.567 0 1.506 1.13 2.567 2.84 2.567Zm-2.532 19.268h5.202c.445 0 .753-.205.753-.513v-.137c0-.753-1.403-.89-1.403-2.225V8.351c0-.548-.445-.958-1.232-.582L41.34 9.48c-.376.206-.616.342-.616.616v.103c0 .616 1.267.958 1.267 2.361v8.967c0 1.335-1.267 1.472-1.267 2.225v.137c0 .308.274.513.719.513Z"/>
1517  <path fill="currentColor" d="M62.582 7.974h-3.8c-.376 0-.615.171-.615.514v.102c0 .72 1.916.822 1.197 2.773L55.36 21.527l-4.21-10.644c-.513-1.334.822-1.642.822-2.293v-.102c0-.308-.274-.514-.582-.514h-5.715c-.377 0-.616.171-.616.48v.102c0 .753.992 1.061 1.574 2.259l6.092 12.834c.24.514.48.753 1.027.753h1.437c.514 0 .822-.24.993-.753l5.1-12.834c.478-1.266 1.916-1.506 1.916-2.259v-.103c0-.308-.24-.479-.616-.479Z"/>
1518  <path fill="currentColor" d="M73.648 19.371c-.685 1.37-2.225 2.498-4.38 2.498-2.43 0-4.176-1.437-5.032-3.764l8.282-3.046c1.061-.377 1.746-1.095 1.746-2.396 0-2.396-1.985-5.03-6.4-5.03-4.518 0-8.18 3.524-8.18 8.418 0 5.305 3.525 8.693 8.112 8.693 4.346 0 6.64-3.011 6.947-5.03.069-.685-.719-.822-1.
1518095-.343ZM67.18 8.933c1.984 0 3.25 2.464 3.25 3.867 0 .684-.273 1.164-.889 1.437l-5.681 2.465a11.076 11.076 0 0 1-.206-2.19c0-3.286 1.37-5.58 3.526-5.58ZM90.505 7.632c-2.259 0-4.141.958-5.1 2.601l.035-1.882c0-.582-.308-.958-1.13-.548l-3.148 1.54c-.377.171-.616.411-.616.719v.137c0 .787 1.471.856 1.471 2.156v16.77c0 1.37-1.3 1.506-1.3 2.259v.103c0 .342.308.513.753.513h5.202c.445 0 .753-.171.753-.513v-.103c0-.753-1.403-.89-1.403-2.259V22.93c1.13 1.164 2.635 1.814 4.517 1.814 4.313 0 7.906-3.627 7.906-8.83 0-5.202-3.833-8.282-7.94-8.282Zm-.445 15.812c-2.088 0-4.038-2.362-4.038-4.86v-6.332c.24-1.916 1.745-3.32 3.49-3.32 2.944 0 4.895 3.355 4.895 8.249 0 4.004-1.643 6.263-4.347 6.263Z"/>
1519  <path fill="currentColor" d="M111.111 19.371c-.685 1.37-2.225 2.498-4.381 2.498-2.43 0-4.175-1.437-5.031-3.764l8.283-3.046c1.061-.377 1.745-1.095 1.745-2.396 0-2.396-1.985-5.03-6.4-5.03-4.518 0-8.18 3.524-8.18 8.418 0 5.305 3.525 8.693 8.112 8.693 4.346 0 6.639-3.011 6.947-5.03.069-.685-.719-.822-1.095-.343Zm-6.468-10.438c1.985 0 3.251 2.464 3.251 3.867 0 .684-.274 1.164-.89 1.437l-5.681 2.465a11.067 11.067 0 0 1-.206-2.19c0-3.286 1.369-5.58 3.526-5.58Z"/>
1520  <path fill="currentColor" d="M117.174 24.744c3.081 0 4.826-2.293 4.826-4.586 0-.616-.821-.718-1.129-.17-.206.992-.993 1.779-2.43 1.779-1.13 0-1.951-.89-1.951-2.533V9.651h4.312c.342 0 .616-.24.616-.581v-.48a.614.614 0 0 0-.616-.616h-4.312l-.034-3.32c0-.479-.206-.752-.651-.752h-.513c-.342 0-.616.273-.685.753-.273 1.985-1.334 3.32-3.114 3.32h-1.061c-.376 0-.582.239-.582.615v.48c0 .342.24.581.582.581h1.951V19.2c0 3.696 1.916 5.544 4.791 5.544Z"/>
1521</svg>
1522
1523            </a>
1524          
1525        </div>
1526        <div id="main-menu" class="mb-1 hidden gap-3 font-medium lowercase xl:flex">
1527          
1528            <a
1529              href="/collections/dog"
1530              
1531                
1532                  x-ref="menu-trigger"
1533                  @mouseover="toggleMenu('shop-dog')"
1534                  :aria-expanded="open == 'shop-dog' ? 'true' : 'false'"
1535                
1536              
1537                
1538              
1539              class="group flex items-center text-current">
1540              <span class="group-hover:underline group-aria-expanded:underline">Shop Dog</span>
1541              
1542                
1543                  
1544                  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-5">
1545                    <path fill-rule="evenodd" d="M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd" />
1546                  </svg>
1547                
1548              
1549                
1550              
1551            </a>
1552          
1553            <a
1554              href="/collections/cat"
1555              
1556                
1557              
1558                
1559                  x-ref="menu-trigger"
1560                  @mouseover="toggleMenu('shop-cat')"
1561                  :aria-expanded="open == 'shop-cat' ? 'true' : 'false'"
1562                
1563              
1564              class="group flex items-center text-current">
1565              <span class="group-hover:underline group-aria-expanded:underline">Shop Cat</span>
1566              
1567                
1568              
1569                
1570                  
1571                    <span class="text-p4 isolate grid -rotate-12 place-content-center rounded-full bg-accent font-bold uppercase leading-none text-dark size-10 text-[10px] ml-1">
1572  new
1573</span>
1574
1575                  
1576                  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-5">
1577                    <path fill-rule="evenodd" d="M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd" />
1578                  </svg>
1579                
1580              
1581            </a>
1582          
1583            <a
1584              href="/blogs/health"
1585              
1586                
1587              
1588                
1589              
1590              class="group flex items-center text-current">
1591              <span class="group-hover:underline group-aria-expanded:underline">The Blog Park</span>
1592              
1593                
1594              
1595                
1596              
1597            </a>
1598          
1599        </div>
1600        <div class="contents lg:flex lg:gap-4">
1601          <div class="contents lg:flex">
1602            
1603              <button
1604                id="menu-search"
1605                class="-order-1 flex h-10 w-10 items-center justify-center"
1606                @click="openSearch"
1607              >
1608                <span class="sr-only">Search</span>
1609                <svg
1610  aria-hidden="true"
1611  focusable="false"
1612  xmlns="http://www.w3.org/2000/svg"
1613  width="40"
1614  height="40"
1615  viewBox="0 0 40 40"
1616  class="block size-10"
1617>
1618  <g fill="none" fill-rule="evenodd"><path d="M0 0h40v40H0z"/><g fill="currentColor" fill-rule="nonzero" transform="translate(8 8)"><path d="m14.204 12.787 6.987 6.986-1.415 1.414-6.986-6.986z"/><rect width="10" height="4" x="14.88" y="17.885" rx="2" transform="rotate(45 19.88 19.885)"/><path d="M8.5 0C3.81 0 0 3.81 0 8.5 0 13.19 3.81 17 8.5 17c4.69 0 8.5-3.81 8.5-8.5C17 3.81 13.19 0 8.5 0Zm0 14.5c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6Z"/></g></g>
1619</svg>
1620
1621              </button>
1622            
1623            <a
1624              href="/account"
1625              id="menu-account"
1626              class="flex h-10 w-10 items-center justify-center text-current"
1627            >
1628              <span class="sr-only">
1629                
1630                  Login
1631                
1632              </span>
1633              <svg
1634  aria-hidden="true"
1635  focusable="false"
1636  xmlns="http://www.w3.org/2000/svg"
1637  width="40"
1638  height="40"
1639  viewBox="0 0 40 40"
1640  class="block size-10"
1641>
1642  <g fill="none" fill-rule="evenodd"><path d="M0 0h40v40H0z"/><g fill="currentColor" fill-rule="nonzero" transform="translate(8 8)"><circle cx="11.939" cy="6" r="6"/>
1642<path d="M22.869 24c.6 0 1.08-.53 1-1.12-.67-4.99-5.75-8.88-11.93-8.88S.679 17.88.009 22.88c-.08.6.4 1.12 1 1.12H22.869Z"/></g></g>
1643</svg>
1644
1645            </a>
1646            <a
1647              href="/cart"
1648              class="flex h-10 w-10 items-center justify-center text-current"
1649              x-data
1650              x-init="$el.role = 'button';$el.setAttribute('aria-haspopup', 'dialog');"
1651              @click.prevent="Rebuy?.SmartCart?.show();"
1652            >
1653              
1654
1655<div
1656  x-data="
1657    {
1658      count: 0,
1659      updateCountFromRebuy (event) {
1660        const { smartcart, item } = event.detail;
1661        this.count = smartcart.cart.item_count;
1662      }
1663    }
1664  "
1665  x-init="document.addEventListener('rebuy:smartcart.hide', event => { updateCountFromRebuy(event) });"
1666  id="cart"
1667  :data-state="count > 0 && 'full'"
1668  class="relative"
1669  @update-count.window="count = Number($event.detail.item_count)"
1670>
1671  <span class="sr-only">Cart</span>
1672  <div
1673    id="cart-count"
1674    class="absolute right-0 top-0.5 grid size-3.5 place-content-center rounded-full bg-accent text-[12px] font-bold leading-none text-dark"
1675    aria-hidden="true"
1676    x-text="count"
1677  >
1678    0
1679  </div>
1680  <svg
1681    viewBox="0 0 40 40"
1682    xmlns="http://www.w3.org/2000/svg"
1683    fill="currentColor"
1684    aria-hidden="true"
1685    data-has-items=""
1686    class="icon icon-cart size-10 "
1687  >
1688    <path d="M32.6487 12.7051C32.4479 12.3895 32.1036 12.16 31.7306 12.16L13.5987 11.328L12.9675 8.86069C12.824 8.34428 12.3937 8 11.8486 8H8.14759C7.51642 8 7 8.51642 7 9.14759C7 9.77877 7.51642 10.2952 8.14759 10.2952H10.9592L14.1151 22.5744L13.3404 25.7877C13.2544 26.132 13.3404 26.5049 13.5413 26.7631C13.7708 27.05 14.0864 27.1935 14.4307 27.1935H28.4887C29.1198 27.1935 29.6363 26.6771 29.6363 26.0459C29.6363 25.4147 29.1198 24.8983 28.4887 24.8983H15.9225L16.2381 23.5786L27.714 23.0335C28.1444 23.0048 28.5174 22.7466 28.6895 22.3736L32.7061 13.7667C32.8782 13.4511 32.8495 13.0494 32.6487 12.7051Z" fill="#155DD7"/>
1689    <path d="M15.1767 32.0992C16.3651 32.0992 17.3284 31.1359 17.3284 29.9475C17.3284 28.7591 16.3651 27.7958 15.1767 27.7958C13.9883 27.7958 13.0249 28.7591 13.0249 29.9475C13.0249 31.1359 13.9883 32.0992 15.1767 32.0992Z" fill="#155DD7"/>
1690    <path d="M28.087 32.0992C29.2754 32.0992 30.2388 31.1359 30.2388 29.9475C30.2388 28.7591 29.2754 27.7958 28.087 27.7958C26.8987 27.7958 25.9353 28.7591 25.9353 29.9475C25.9353 31.1359 26.8987 32.0992 28.087 32.0992Z" fill="#155DD7"/>
1691  </svg>
1692</div>
1693
1694<style data-shopify>
1695  #cart {
1696    #cart-count,
1697    #cart-mask {
1698      visibility: hidden;
1699    }
1700  }
1701
1702  #cart[data-state='full'] {
1703    #cart-count,
1704    #cart-mask {
1705      visibility: visible;
1706    }
1707  }
1708</style>
1709
1710            </a>
1711          </div>
1712          <div class="hidden lg:block">
1713            <a class="button min-w-52" style="--button-padding: 8px 24px; --button-border-width: 0" href="/pages/quiz">Take the quiz + $5 off</a>
1714          </div>
1715        </div>
1716      </div>
1717    </div>
1718  </div>
1719
1720  
1721    <div
1722  id="search"
1723  x-cloak
1724  class="absolute inset-x-0 top-0 z-40 hidden bg-white pb-10 pt-30"
1725  x-transition.opacity.duration.250ms
1726  x-show="open == 'search'"
1727  @click.outside="open == 'search' && toggleMenu(false)"
1728>
1729  <div class="mx-auto grid max-w-8xl px-12">
1730    <form
1731      action="/search"
1732      method="get"
1733      role="search"
1734      class="relative gap-4"
1735    >
1736      <input
1737        x-ref="search"
1738        type="search"
1739        name="q"
1740        placeholder="Search"
1741        class="w-full rounded-xl border-2 border-solid border-dark bg-transparent p-4 font-display text-2xl uppercase leading-none placeholder-blueGrayHalf focus:outline-none focus:ring-2 focus:ring-dark focus:ring-offset-2"
1742      >
1743      <button
1744        type="submit"
1745        class="absolute right-4 top-1/2 grid size-10 -translate-y-1/2 place-items-center rounded-full bg-accent text-dark"
1746      >
1747        <span class="sr-only">Submit</span>
1748        <svg
1749  viewBox="0 0 24 24"
1750  fill="none"
1751  aria-hidden="true"
1752  focusable="false"
1753  class="icon icon-arrow-right size-6"
1754  xmlns="http://www.w3.org/2000/svg"
1755  stroke-width="2"
1756  stroke="currentColor"
1757>
1758  <path stroke-linecap="round" stroke-linejoin="round" d="M17.25 8.25 21 12m0 0-3.75 3.75M21 12H3" />
1759</svg>
1760
1761      </button>
1762    </form>
1763  </div>
1764</div>
1765
1766  
1767
1768  
1769    
1770
1771
1772
1773
1774
1775
1776  <div
1777    id="menu"
1778    x-show="open == 'shop-dog'"
1779    x-cloak
1780    class="absolute inset-x-0 top-0 z-40 hidden bg-white pt-[80px] lg:block"
1781    x-transition.opacity.duration.250ms
1782    @click.outside="open == 'shop-dog' && toggleMenu(false)"
1783  >
1784    <div class="border-0 border-t border-solid border-accent py-10 pb-10">
1785      <div class="mx-auto grid max-w-8xl grid-cols-4 gap-10 px-12">
1786        
1787          
1788            
1789              <div>
1790  <h2 class="text-nav lowercase">
1791    
1792      <a href="/collections/dog" title="">Featured</a>
1793    
1794  </h2>
1795  
1796    <ul role="list" class="text-p2 mt-4 grid gap-1 lowercase">
1797      
1798        <li>
1799          <a href="/collections/dog" class="inline-flex items-center gap-2">
1800            All Products
1801          </a>
1802        </li>
1803      
1804        <li>
1805          <a href="/collections/best-sellers" class="inline-flex items-center gap-2">
1806            Best Sellers
1807          </a>
1808        </li>
1809      
1810        <li>
1811          <a href="/collections/new-arrivals" class="inline-flex items-center gap-2">
1812            New Arrivals
1813          </a>
1814        </li>
1815      
1816    </ul>
1817  
1818</div>
1819
1820            
1821          
1822            
1823              <div>
1824  <h2 class="text-nav lowercase">
1825    
1826      <a href="/collections/concerns" title="">Shop by concern</a>
1827    
1828  </h2>
1829  
1830    <ul role="list" class="text-p2 mt-4 grid gap-1 lowercase">
1831      
1832        <li>
1833          <a href="/collections/dog" class="inline-flex items-center gap-2">
1834            all products
1835          </a>
1836        </li>
1837      
1838        <li>
1839          <a href="/collections/gut-health-and-digestion" class="inline-flex items-center gap-2">
1840            gut health + digestion
1841          </a>
1842        </li>
1843      
1844        <li>
1845          <a href="/collections/skin-health" class="inline-flex items-center gap-2">
1846            skin health
1847          </a>
1848        </li>
1849      
1850        <li>
1851          <a href="/collections/mobility-and-joints" class="inline-flex items-center gap-2">
1852            mobility + joints
1853          </a>
1854        </li>
1855      
1856        <li>
1857          <a href="/collections/allergy-relief" class="inline-flex items-center gap-2">
1858            allergy relief
1859          </a>
1860        </li>
1861      
1862        <li>
1863          <a href="/collections/runny-and-irregular-poop" class="inline-flex items-center gap-2">
1864            runny + irregular poop
1865          </a>
1866        </li>
1867      
1868        <li>
1869          <a href="/collections/picky-eaters" class="inline-flex items-center gap-2">
1870            picky eaters
1871          </a>
1872        </li>
1873      
1874        <li>
1875          <a href="/collections/stress-and-anxiety" class="inline-flex items-center gap-2">
1876            stress + anxiety
1877          </a>
1878        </li>
1879      
1880        <li>
1881          <a href="/collections/dental-health" class="inline-flex items-center gap-2">
1882            dental health
1883          </a>
1884        </li>
1885      
1886        <li>
1887          <a href="/collections/senior-care" class="inline-flex items-center gap-2">
1888            senior care
1889          </a>
1890        </li>
1891      
1892    </ul>
1893  
1894</div>
1895
1896            
1897          
1898            
1899          
1900        
1901        
1902          
1903          
1904            
1905              
1906              
1907              <div
1908  class="flex flex-col"
1909  
1910    style="grid-column-start: 3;"
1911  
1912>
1913  <a href="/products/hip-joint-advanced-care-powder" class="mb-4 block">
1914    <img src="//nativepet.com/cdn/shop/files/Nav_Mega_Menu_Image.jpg?v=1781019292&amp;width=686" alt="" srcset="//nativepet.com/cdn/shop/files/Nav_Mega_Menu_Image.jpg?v=1781019292&amp;width=352 352w, //nativepet.com/cdn/shop/files/Nav_Mega_Menu_Image.jpg?v=1781019292&amp;width=686 686w" width="686" height="515" loading="lazy" class="w-full block rounded-3xl aspect-[4/3] object-cover" sizes="343px">
1915  </a>
1916  <div>
1917    
1918      <h2 class="text-p4 mb-2 mt-0 font-bold">Hip+Joint Advanced Care</h2>
1919    
1920    
1921      <p class="text-p4 mt-0">A full-spectrum formula to support your dog’s mobility, joints and overall comfort.</p>
1922    
1923  </div>
1924  
1925    <div class="mt-3">
1926      <a class="link font-bold" href="/products/hip-joint-advanced-care-powder">SHOP NOW</a>
1927    </div>
1928  
1929</div>
1930
1931              
1932            
1933          
1934            
1935              
1936              
1937              <div
1938  class="flex flex-col"
1939  
1940>
1941  <a href="/pages/quiz" class="mb-4 block">
1942    <img src="//nativepet.com/cdn/shop/files/NP-Homepage-Navigation-Card-2.jpg?v=1718224172&amp;width=686" alt="" srcset="//nativepet.com/cdn/shop/files/NP-Homepage-Navigation-Card-2.jpg?v=1718224172&amp;width=352 352w, //nativepet.com/cdn/shop/files/NP-Homepage-Navigation-Card-2.jpg?v=1718224172&amp;width=686 686w" width="686" height="503" loading="lazy" class="w-full block rounded-3xl aspect-[4/3] object-cover" sizes="343px">
1943  </a>
1944  <div>
1945    
1946      <h2 class="text-p4 mb-2 mt-0 font-bold">Build Their Routine</h2>
1947    
1948    
1949      <p class="text-p4 mt-0">Find the right product for your pet. Every pet need is different, find what works for yours!</p>
1950    
1951  </div>
1952  
1953    <div class="mt-3">
1954      <a class="link font-bold" href="/pages/quiz">Take The Quiz + $5 Off</a>
1955    </div>
1956  
1957</div>
1958
1959              
1960            
1961          
1962            
1963          
1964            
1965          
1966            
1967          
1968        
1969      </div>
1970    </div>
1971  </div>
1972
1973
1974  
1975    
1976
1977
1978
1979
1980
1981
1982  <div
1983    id="menu"
1984    x-show="open == 'shop-cat'"
1985    x-cloak
1986    class="absolute inset-x-0 top-0 z-40 hidden bg-white pt-[80px] lg:block"
1987    x-transition.opacity.duration.250ms
1988    @click.outside="open == 'shop-cat' && toggleMenu(false)"
1989  >
1990    <div class="border-0 border-t border-solid border-accent py-10 pb-10">
1991      <div class="mx-auto grid max-w-8xl grid-cols-4 gap-10 px-12">
1992        
1993          
1994            
1995          
1996            
1997          
1998            
1999              <div>
2000  <h2 class="text-nav lowercase">
2001    
2002      <a href="/collections/cat" title="">Featured</a>
2003    
2004  </h2>
2005  
2006    <ul role="list" class="text-p2 mt-4 grid gap-1 lowercase">
2007      
2008        <li>
2009          <a href="/collections/cat" class="inline-flex items-center gap-2">
2010            all products
2011          </a>
2012        </li>
2013      
2014        <li>
2015          <a href="/products/cat-hairball" class="inline-flex items-center gap-2">
2016            hairball
2017          </a>
2018        </li>
2019      
2020        <li>
2021          <a href="/products/cat-multivitamin" class="inline-flex items-center gap-2">
2022            multivitamin
2023          </a>
2024        </li>
2025      
2026        <li>
2027          <a href="/products/cat-probiotic" class="inline-flex items-center gap-2">
2028            probiotic
2029          </a>
2030        </li>
2031      
2032        <li>
2033          <a href="/products/cat-immune" class="inline-flex items-center gap-2">
2034            immune
2035          </a>
2036        </li>
2037      
2038        <li>
2039          <a href="/products/cat-calm" class="inline-flex items-center gap-2">
2040            calm
2041          </a>
2042        </li>
2043      
2044    </ul>
2045  
2046</div>
2047
2048            
2049          
2050        
2051        
2052          
2053          
2054            
2055          
2056            
2057          
2058            
2059              
2060              
2061              <div
2062  class="flex flex-col"
2063  
2064    style="grid-column-start: 2;"
2065  
2066>
2067  <a href="/collections/cat" class="mb-4 block">
2068    <img src="//nativepet.com/cdn/shop/files/NP-DTC-Navigation-1.webp?v=1790089500&amp;width=686" alt="" srcset="//nativepet.com/cdn/shop/files/NP-DTC-Navigation-1.webp?v=1790089500&amp;width=352 352w, //nativepet.com/cdn/shop/files/NP-DTC-Navigation-1.webp?v=1790089500&amp;width=686 686w" width="686" height="515" loading="lazy" class="w-full block rounded-3xl aspect-[4/3] object-cover" sizes="343px">
2069  </a>
2070  <div>
2071    
2072      <h2 class="text-p4 mb-2 mt-0 font-bold">NEW! Cat supplements</h2>
2073    
2074    
2075      <p class="text-p4 mt-0">Vet-formulated, clean ingredient supplements for cats with really good taste.</p>
2076    
2077  </div>
2078  
2079    <div class="mt-3">
2080      <a class="link font-bold" href="/collections/cat">SHOP CAT</a>
2081    </div>
2082  
2083</div>
2084
2085              
2086            
2087          
2088            
2089              
2090              
2091              <div
2092  class="flex flex-col"
2093  
2094>
2095  <a href="/products/cat-multivitamin" class="mb-4 block">
2096    <img src="//nativepet.com/cdn/shop/files/NP-DTC-Navigation-3.webp?v=1790089435&amp;width=686" alt="" srcset="//nativepet.com/cdn/shop/files/NP-DTC-Navigation-3.webp?v=1790089435&amp;width=352 352w, //nativepet.com/cdn/shop/files/NP-DTC-Navigation-3.webp?v=1790089435&amp;width=686 686w" width="686" height="515" loading="lazy" class="w-full block rounded-3xl aspect-[4/3] object-cover" sizes="343px">
2097  </a>
2098  <div>
2099    
2100      <h2 class="text-p4 mb-2 mt-0 font-bold">Multivitamin</h2>
2101    
2102    
2103      <p class="text-p4 mt-0">Foundational daily wellness, just for cats.</p>
2104    
2105  </div>
2106  
2107    <div class="mt-3">
2108      <a class="link font-bold" href="/products/cat-multivitamin">Shop Now</a>
2109    </div>
2110  
2111</div>
2112
2113              
2114            
2115          
2116            
2117              
2118              
2119              <div
2120  class="flex flex-col"
2121  
2122>
2123  <a href="/pages/quiz" class="mb-4 block">
2124    <img src="//nativepet.com/cdn/shop/files/NP-DTC-Navigation-2.webp?v=1790089522&amp;width=686" alt="" srcset="//nativepet.com/cdn/shop/files/NP-DTC-Navigation-2.webp?v=1790089522&amp;width=352 352w, //nativepet.com/cdn/shop/files/NP-DTC-Navigation-2.webp?v=1790089522&amp;width=686 686w" width="686" height="515" loading="lazy" class="w-full block rounded-3xl aspect-[4/3] object-cover" sizes="343px">
2125  </a>
2126  <div>
2127    
2128      <h2 class="text-p4 mb-2 mt-0 font-bold">Build Their Routine</h2>
2129    
2130    
2131      <p class="text-p4 mt-0">Find the right product for your cat. Every need is different, so choose what works best for yours.</p>
2132    
2133  </div>
2134  
2135    <div class="mt-3">
2136      <a class="link font-bold" href="/pages/quiz">Take The Quiz + $5 Off</a>
2137    </div>
2138  
2139</div>
2140
2141              
2142            
2143          
2144        
2145      </div>
2146    </div>
2147  </div>
2148
2149
2150  
2151</header>
2152
2153
2154</div>
2155<!-- END sections: header-group -->
2156
2157    <div id="main" tabindex="-1"></div>
2158    <main role="main">
2159      <div id="shopify-section-template--15358668374059__store-locator" class="shopify-section banner-template-section">
2160
2161<link href="//nativepet.com/cdn/shop/t/361/assets/rover-layer.min.css?v=61194367373170259971723248543" rel="stylesheet" type="text/css" media="all" />
2162<link href="//nativepet.com/cdn/shop/t/361/assets/store-locator.min.css?v=38149052325634629981727220355" rel="stylesheet" type="text/css" media="all" />
2163
2164
2165
2166  
2166<script src="//nativepet.com/cdn/shop/t/361/assets/store-locator.Bhb4ok6l.min.js?v=151039303842317032321778187747" type="module" crossorigin="anonymous"></script>
2166
2167
2168
2169<store-locator class="rover">
2170  <section
2171    id="banner-template--15358668374059__store-locator"
2172    class="banner page-banner dark-overlay- full-width--"
2173  >
2174    
2175      <div class="store-locator">
2176        
2177          <h1
2178            class="store-locator__heading h5"
2179          >
2180            find your nearest store
2181          </h1>
2182        
2183
2184        
2185          <div
2186            class="store-locator__text text-body-xxx-large"
2187          >
2188            <p>Wanna go for a ride?!</p>
2189          </div>
2190        
2191      </div>
2192    
2193  </section>
2194
2195  <a name="pagecontent" id="pagecontent"><span class="sr-only">Store locator pagecontent</span></a>
2196  <div
2197    class="container main content"
2198  >
2199    <div class="sixteen columns page clearfix">
2200      <div>
2201        <div id="storepoint-container" data-map-id="16228208697c3f"></div>
2202<script>// <![CDATA[
2203(function(){var a=document.createElement("script");a.type="text/javascript";a.async=!0;a.src="https://cdn.storepoint.co/api/v1/js/16228208697c3f.js";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b);}());
2204// ]]></script>
2204
2205<style><!--
2206.main{background:white;}
2207--></style>
2208      </div>
2209    </div>
2210  </div>
2211
2212  
2213    <div class="store-locator-block-wrapper py-15 order-2 mx-auto grid max-w-2xl grid-cols-3 flex-wrap items-center gap-4 lg:grid-cols-4 lg:gap-8">
2214      
2215<div>
2216          
2217            
2218              <a aria-label="Link to https://www.amazon.com/stores/page/FD5C1BDC-AD71-43CC-954B-4F47BC17FC3F?maas=maas_adg_3A877AD445805E166F529DD408A5464B_afap_abs&ref_=aa_maas&tag=maas" href="https://www.amazon.com/stores/page/FD5C1BDC-AD71-43CC-954B-4F47BC17FC3F?maas=maas_adg_3A877AD445805E166F529DD408A5464B_afap_abs&ref_=aa_maas&tag=maas">
2219                <img src="//nativepet.com/cdn/shop/files/logo_5c011a69-e851-4ee8-b1cf-81ade756f3ea.png?v=1670411878&amp;width=600" alt="" srcset="//nativepet.com/cdn/shop/files/logo_5c011a69-e851-4ee8-b1cf-81ade756f3ea.png?v=1670411878&amp;width=352 352w, //nativepet.com/cdn/shop/files/logo_5c011a69-e851-4ee8-b1cf-81ade756f3ea.png?v=1670411878&amp;width=600 600w" width="600" height="334" class="max-h-[60px] w-auto mx-auto">
2220              </a>
2221            
2222          
2223        </div>
2224      
2225<div>
2226          
2227            
2228              <a aria-label="Link to https://www.target.com/s?searchTerm=native+pet" href="https://www.target.com/s?searchTerm=native+pet">
2229                <img src="//nativepet.com/cdn/shop/files/Vector.png?v=1670411896&amp;width=600" alt="" srcset="//nativepet.com/cdn/shop/files/Vector.png?v=1670411896&amp;width=352 352w, //nativepet.com/cdn/shop/files/Vector.png?v=1670411896&amp;width=600 600w" width="600" height="808" class="max-h-[60px] w-auto mx-auto">
2230              </a>
2231            
2232          
2233        </div>
2234      
2235<div>
2236          
2237            
2238              <a aria-label="Link to https://www.chewy.com/brands/native-pet-105742?nav-submit-button=&ref-query=native%20pet&ref=searchRedirect" href="https://www.chewy.com/brands/native-pet-105742?nav-submit-button=&ref-query=native%20pet&ref=searchRedirect">
2239                <img src="//nativepet.com/cdn/shop/files/logo_1.png?v=1670411920&amp;width=600" alt="Chewy logo." srcset="//nativepet.com/cdn/shop/files/logo_1.png?v=1670411920&amp;width=352 352w, //nativepet.com/cdn/shop/files/logo_1.png?v=1670411920&amp;width=600 600w" width="600" height="332" class="max-h-[60px] w-auto mx-auto">
2240              </a>
2241            
2242          
2243        </div>
2244      
2245<div>
2246          
2247            
2248              <a aria-label="Link to https://www.petco.com/shop/en/petcostore/brand/native-pet" href="https://www.petco.com/shop/en/petcostore/brand/native-pet">
2249                <img src="//nativepet.com/cdn/shop/files/Petco_Logo.png?v=1717084693&amp;width=600" alt="" srcset="//nativepet.com/cdn/shop/files/Petco_Logo.png?v=1717084693&amp;width=352 352w, //nativepet.com/cdn/shop/files/Petco_Logo.png?v=1717084693&amp;width=600 600w" width="600" height="209" class="max-h-[60px] w-auto mx-auto">
2250              </a>
2251            
2252          
2253        </div>
2254      
2255<div>
2256          
2257            
2258              <a aria-label="Link to https://www.meijer.com/shopping/product/native-pet-the-daily-supplement-for-dogs-7-oz-/85002184059.html" href="https://www.meijer.com/shopping/product/native-pet-the-daily-supplement-for-dogs-7-oz-/85002184059.html">
2259                <img src="//nativepet.com/cdn/shop/files/Meijer_Logo.png?v=1717084680&amp;width=600" alt="" srcset="//nativepet.com/cdn/shop/files/Meijer_Logo.png?v=1717084680&amp;width=352 352w, //nativepet.com/cdn/shop/files/Meijer_Logo.png?v=1717084680&amp;width=600 600w" width="600" height="237" class="max-h-[60px] w-auto mx-auto">
2260              </a>
2261            
2262          
2263        </div>
2264      
2265<div>
2266          
2267            
2268              <a aria-label="Link to https://www.tractorsupply.com/tsc/brand/Native+Pet" href="https://www.tractorsupply.com/tsc/brand/Native+Pet">
2269                <img src="//nativepet.com/cdn/shop/files/Tractor_Supply_Company_Logo.png?v=1717084701&amp;width=600" alt="" srcset="//nativepet.com/cdn/shop/files/Tractor_Supply_Company_Logo.png?v=1717084701&amp;width=352 352w, //nativepet.com/cdn/shop/files/Tractor_Supply_Company_Logo.png?v=1717084701&amp;width=600 600w" width="600" height="161" class="max-h-[60px] w-auto mx-auto">
2270              </a>
2271            
2272          
2273        </div>
2274      
2275<div>
2276          
2277            
2278              <img src="//nativepet.com/cdn/shop/files/PetSmart-Logo.wine.png?v=1727214823&amp;width=600" alt="" srcset="//nativepet.com/cdn/shop/files/PetSmart-Logo.wine.png?v=1727214823&amp;width=352 352w, //nativepet.com/cdn/shop/files/PetSmart-Logo.wine.png?v=1727214823&amp;width=600 600w" width="600" height="158" class="max-h-[60px] w-auto mx-auto">
2279            
2280          
2281        </div>
2282      
2283<div>
2284          
2285            
2286              <a aria-label="Link to https://www.sprouts.com/" href="https://www.sprouts.com/">
2287                <img src="//nativepet.com/cdn/shop/files/Sprouts_Logo.png?v=1738861955&amp;width=600" alt="" srcset="//nativepet.com/cdn/shop/files/Sprouts_Logo.png?v=1738861955&amp;width=352 352w, //nativepet.com/cdn/shop/files/Sprouts_Logo.png?v=1738861955&amp;width=600 600w" width="600" height="156" class="max-h-[60px] w-auto mx-auto">
2288              </a>
2289            
2290          
2291        </div>
2292      
2293<div>
2294          
2295            
2296              <img src="//nativepet.com/cdn/shop/files/WholeFoods_logo.png?v=1746028138&amp;width=600" alt="" srcset="//nativepet.com/cdn/shop/files/WholeFoods_logo.png?v=1746028138&amp;width=352 352w, //nativepet.com/cdn/shop/files/WholeFoods_logo.png?v=1746028138&amp;width=600 600w" width="600" height="600" class="max-h-[60px] w-auto mx-auto">
2297            
2298          
2299        </div>
2300      
2301    </div>
2302  
2303</store-locator>
2304
2305
2306
2307
2308</div><div id="shopify-section-template--15358668374059__1755fe7f-2ca1-4a42-a098-c1981d43712a" class="shopify-section">
2309
2310<div class="">
2311  <picture>
2312    <source srcset="//nativepet.com/cdn/shop/files/NativePet_Footer_Home-ALT_M.jpg?v=1671565751&width=800" media="(max-width: 768px)">
2313    <img src="//nativepet.com/cdn/shop/files/NativePet_Footer_Home-ALT_D.jpg?v=1671565745&amp;width=2000" alt="woman and her grey poodle laying in the grass" srcset="//nativepet.com/cdn/shop/files/NativePet_Footer_Home-ALT_D.jpg?v=1671565745&amp;width=352 352w, //nativepet.com/cdn/shop/files/NativePet_Footer_Home-ALT_D.jpg?v=1671565745&amp;width=832 832w, //nativepet.com/cdn/shop/files/NativePet_Footer_Home-ALT_D.jpg?v=1671565745&amp;width=1200 1200w, //nativepet.com/cdn/shop/files/NativePet_Footer_Home-ALT_D.jpg?v=1671565745&amp;width=1920 1920w, //nativepet.com/cdn/shop/files/NativePet_Footer_Home-ALT_D.jpg?v=1671565745&amp;width=2000 2000w" width="2000" height="1125" loading="lazy" class="h-auto object-center object-cover select-none pointer-events-none">
2314  </picture>
2315</div>
2316
2317
2318</div>
2319    </main>
2320
2321    <ul hidden>
2322      <li id="a11y-refresh-page-message">Choosing a selection results in a full page refresh.</li>
2323      <li id="a11y-new-window-message">Opens in a new window.</li>
2324    </ul>
2325
2326    <!-- BEGIN sections: footer-group -->
2327<div id="shopify-section-sections--15358667718699__footer" class="shopify-section shopify-section-group-footer-group"><footer id="site-footer" class="bg-background text-foreground color-scheme-1">
2328  <div class="wrapper">
2329    <div class="grid lg:grid-cols-[2fr_3fr]">
2330      <div class="flex flex-col justify-between border-0 py-10 lg:border-r lg:border-solid lg:border-accent lg:p-15">
2331        <div>
2332          <h3 class="text-eyebrow">Join our pack!</h3>
2333          <p class="text-p2 mt-2 text-light">
2334            Stay in the know on all things health and wellness for your pet. Plus! Exclusive deals for pet parents like
2335            you.
2336          </p>
2337          <style data-shopify>
2338  .klaviyo-form-RA7TM8 input,
2339  .klaviyo-form-RA7TM8 span:not([role='alert']) {
2340    background: transparent !important;
2341    color: #fff !important;
2342    border: 0 !important;
2343  }
2344
2345  .klaviyo-form-RA7TM8 [data-testid='form-row'] {
2346    gap: 1rem;
2347  }
2348
2349  .klaviyo-form-RA7TM8 [data-testid='form-component'] {
2350    align-self: center !important;
2351  }
2352
2353  .klaviyo-form-RA7TM8 input::placeholder {
2354    color: #fff !important;
2355  }
2356
2357  .klaviyo-form-RA7TM8 input,
2358  .klaviyo-form-RA7TM8 span,
2359  .klaviyo-form-RA7TM8 button {
2360    font-family: var(--font-sans) !important;
2361    font-weight: 400 !important;
2362  }
2363
2364  .klaviyo-form-RA7TM8 button {
2365    border-radius: 0 8px 8px 0 !important;
2366    font-size: 13px !important;
2367    text-transform: uppercase !important;
2368  }
2369
2370  .klaviyo-form-RA7TM8 button:focus-visible {
2371    box-shadow: none !important;
2372    outline: none !important;
2373  }
2374
2375  @media (min-width: 1024px) {
2376    .klaviyo-form-RA7TM8 button {
2377      font-size: 14px !important;
2378    }
2379  }
2380</style>
2381
2382<div class="klaviyo-form-RA7TM8 mt-4"></div>
2383
2384        </div>
2385        
2386
2387<div class="text-p3 hidden lg:block">
2388  <div class="text-center lg:text-left">&copy; 2026 Native Pet</div>
2389  <nav class="mt-4">
2390    <ul role="list" class="flex justify-center lg:justify-start">
2391      
2392        <li class="first:mr-4 first:border-0 first:border-r first:border-solid first:border-light first:pr-4">
2393          <a href="/policies/terms-of-service" class="text-current">Terms of Service</a>
2394        </li>
2395      
2396        <li class="first:mr-4 first:border-0 first:border-r first:border-solid first:border-light first:pr-4">
2397          <a href="/policies/privacy-policy" class="text-current">Privacy Policy</a>
2398        </li>
2399      
2400    </ul>
2401  </nav>
2402</div>
2403
2404      </div>
2405      <div class="grid lg:grid-cols-2 lg:gap-15 lg:p-15 xl:grid-cols-3">
2406        
2407          <nav
2408  x-data="
2409    {
2410      active: false
2411    }
2412  "
2413  class="border-0 border-b-2 border-solid border-light first:border-t-2 lg:border-0 lg:first:border-0"
2414>
2415  <h3>
2416    <button
2417      type="button"
2418      class="text-p1 flex w-full items-center justify-between py-4 lowercase lg:hidden"
2419      @click="active = !active"
2420    >
2421      Shop
2422      <svg
2423  xmlns="http://www.w3.org/2000/svg"
2424  aria-hidden="true"
2425  focusable="false"
2426  class="icon icon-plus size-4"
2427  fill="none"
2428  viewBox="0 0 10 10"
2429>
2430  <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor">
2431</svg>
2432
2433    </button>
2434    <span class="text-eyebrow hidden lg:block">Shop</span>
2435  </h3>
2436  <ul
2437    x-show="active"
2438    x-cloak
2439    x-collapse
2440    role="list"
2441    class="text-p2 mt-2 space-y-1 lg:mt-4 lg:!block lg:!h-auto lg:!overflow-auto"
2442  >
2443    
2444      <li class="last:pb-6 lg:last:pb-0">
2445        <a
2446          href="/collections/best-sellers"
2447          
2448          class="lowercase text-light"
2449        >best sellers</a>
2450      </li>
2451    
2452      <li class="last:pb-6 lg:last:pb-0">
2453        <a
2454          href="/collections/air-dried-chews"
2455          
2456          class="lowercase text-light"
2457        >air-dried chews</a>
2458      </li>
2459    
2460      <li class="last:pb-6 lg:last:pb-0">
2461        <a
2462          href="/collections/healthy-toppers"
2463          
2464          class="lowercase text-light"
2465        >healthy toppers</a>
2466      </li>
2467    
2468      <li class="last:pb-6 lg:last:pb-0">
2469        <a
2470          href="/collections/all"
2471          
2472          class="lowercase text-light"
2473        >all products</a>
2474      </li>
2475    
2476  </ul>
2477</nav>
2478
2479        
2480          <nav
2481  x-data="
2482    {
2483      active: false
2484    }
2485  "
2486  class="border-0 border-b-2 border-solid border-light first:border-t-2 lg:border-0 lg:first:border-0"
2487>
2488  <h3>
2489    <button
2490      type="button"
2491      class="text-p1 flex w-full items-center justify-between py-4 lowercase lg:hidden"
2492      @click="active = !active"
2493    >
2494      Help
2495      <svg
2496  xmlns="http://www.w3.org/2000/svg"
2497  aria-hidden="true"
2498  focusable="false"
2499  class="icon icon-plus size-4"
2500  fill="none"
2501  viewBox="0 0 10 10"
2502>
2503  <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor">
2504</svg>
2505
2506    </button>
2507    <span class="text-eyebrow hidden lg:block">Help</span>
2508  </h3>
2509  <ul
2510    x-show="active"
2511    x-cloak
2512    x-collapse
2513    role="list"
2514    class="text-p2 mt-2 space-y-1 lg:mt-4 lg:!block lg:!h-auto lg:!overflow-auto"
2515  >
2516    
2517      <li class="last:pb-6 lg:last:pb-0">
2518        <a
2519          href="/pages/rewards"
2520          
2521          class="lowercase text-light"
2522        >Rewards</a>
2523      </li>
2524    
2525      <li class="last:pb-6 lg:last:pb-0">
2526        <a
2527          href="https://nativepet.gorgias.help/en-US"
2528          
2529          class="lowercase text-light"
2530        >Help Center</a>
2531      </li>
2532    
2533      <li class="last:pb-6 lg:last:pb-0">
2534        <a
2535          href="https://nativepet.com/policies/shipping-policy"
2536          
2537          class="lowercase text-light"
2538        >Shipping</a>
2539      </li>
2540    
2541      <li class="last:pb-6 lg:last:pb-0">
2542        <a
2543          href="/policies/refund-policy"
2544          
2545          class="lowercase text-light"
2546        >Refunds</a>
2547      </li>
2548    
2549      <li class="last:pb-6 lg:last:pb-0">
2550        <a
2551          href="/pages/tracking"
2552          
2553          class="lowercase text-light"
2554        >Find my order</a>
2555      </li>
2556    
2557      <li class="last:pb-6 lg:last:pb-0">
2558        <a
2559          href="/pages/store-locator"
2560          
2561            aria-current="page"
2562          
2563          class="lowercase text-light"
2564        >Find us in stores</a>
2565      </li>
2566    
2567  </ul>
2568</nav>
2569
2570        
2571          <nav
2572  x-data="
2573    {
2574      active: false
2575    }
2576  "
2577  class="border-0 border-b-2 border-solid border-light first:border-t-2 lg:border-0 lg:first:border-0"
2578>
2579  <h3>
2580    <button
2581      type="button"
2582      class="text-p1 flex w-full items-center justify-between py-4 lowercase lg:hidden"
2583      @click="active = !active"
2584    >
2585      Contact
2586      <svg
2587  xmlns="http://www.w3.org/2000/svg"
2588  aria-hidden="true"
2589  focusable="false"
2590  class="icon icon-plus size-4"
2591  fill="none"
2592  viewBox="0 0 10 10"
2593>
2594  <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor">
2595</svg>
2596
2597    </button>
2598    <span class="text-eyebrow hidden lg:block">Contact</span>
2599  </h3>
2600  <ul
2601    x-show="active"
2602    x-cloak
2603    x-collapse
2604    role="list"
2605    class="text-p2 mt-2 space-y-1 lg:mt-4 lg:!block lg:!h-auto lg:!overflow-auto"
2606  >
2607    
2608      <li class="last:pb-6 lg:last:pb-0">
2609        <a
2610          href="https://nativepet.com/pages/contact-form"
2611          
2612          class="lowercase text-light"
2613        >Email us</a>
2614      </li>
2615    
2616      <li class="last:pb-6 lg:last:pb-0">
2617        <a
2618          href="/pages/retail-wholesale"
2619          
2620          class="lowercase text-light"
2621        >Wholesale Inquiries</a>
2622      </li>
2623    
2624      <li class="last:pb-6 lg:last:pb-0">
2625        <a
2626          href="https://thenativepet.superfiliate.com/portal/signUp"
2627          
2628          class="lowercase text-light"
2629        >Become an ambassador</a>
2630      </li>
2631    
2632  </ul>
2633</nav>
2634
2635        
2636          <nav
2637  x-data="
2638    {
2639      active: false
2640    }
2641  "
2642  class="border-0 border-b-2 border-solid border-light first:border-t-2 lg:border-0 lg:first:border-0"
2643>
2644  <h3>
2645    <button
2646      type="button"
2647      class="text-p1 flex w-full items-center justify-between py-4 lowercase lg:hidden"
2648      @click="active = !active"
2649    >
2650      Company
2651      <svg
2652  xmlns="http://www.w3.org/2000/svg"
2653  aria-hidden="true"
2654  focusable="false"
2655  class="icon icon-plus size-4"
2656  fill="none"
2657  viewBox="0 0 10 10"
2658>
2659  <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor">
2660</svg>
2661
2662    </button>
2663    <span class="text-eyebrow hidden lg:block">Company</span>
2664  </h3>
2665  <ul
2666    x-show="active"
2667    x-cloak
2668    x-collapse
2669    role="list"
2670    class="text-p2 mt-2 space-y-1 lg:mt-4 lg:!block lg:!h-auto lg:!overflow-auto"
2671  >
2672    
2673      <li class="last:pb-6 lg:last:pb-0">
2674        <a
2675          href="/pages/philosophy"
2676          
2677          class="lowercase text-light"
2678        >Native Pet Pact</a>
2679      </li>
2680    
2681      <li class="last:pb-6 lg:last:pb-0">
2682        <a
2683          href="/blogs/health"
2684          
2685          class="lowercase text-light"
2686        >Blog</a>
2687      </li>
2688    
2689      <li class="last:pb-6 lg:last:pb-0">
2690        <a
2691          href="/blogs/press"
2692          
2693          class="lowercase text-light"
2694        >Press</a>
2695      </li>
2696    
2697  </ul>
2698</nav>
2699
2700        
2701        <div class="mt-10 lg:col-span-2 lg:mt-0">
2702  <div class="flex h-full flex-col justify-between">
2703    <div>
2704      <h3 class="text-p4 lg:text-p3 hidden font-display uppercase lg:block">Follow Us</h3>
2705      <div class="flex justify-center gap-4 lg:mt-4 lg:justify-start">
2706        <div>
2707          <a
2708            href="https://www.youtube.com/channel/UC9utEsG-PpbUEk62gXlEf1g/featured"
2709            class="text-light"
2710            target="_blank"
2711          >
2712            <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
2713  <title>YouTube</title>
2714  <path d="M9.522 15.135V8.344l6.484 3.407-6.484 3.384ZM23.76 7.167s-.235-1.665-.954-2.399c-.913-.963-1.936-.967-2.405-1.023-3.358-.245-8.396-.245-8.396-.245h-.01s-5.038 0-8.396.245c-.47.056-1.492.06-2.406 1.023-.719.734-.953 2.4-.953 2.4S0 9.122 0 11.077v1.835c0 1.956.24 3.912.24 3.912s.234 1.665.953 2.399c.914.963 2.113.932 2.647 1.033 1.92.186 8.16.243 8.16.243s5.043-.008 8.401-.252c.47-.057 1.492-.061 2.405-1.024.72-.734.954-2.4.954-2.4s.24-1.955.24-3.911v-1.834c0-1.956-.24-3.912-.24-3.912Z"/>
2715</svg>
2716
2717          </a>
2718        </div>
2719        <div>
2720          <a href="https://www.instagram.com/nativepet/" class="text-light" target="_blank">
2721            <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
2722  <title>Instagram</title>
2723  <path d="M12 0C8.741 0 8.332.014 7.052.072 5.775.13 4.902.333 4.14.63a5.882 5.882 0 0 0-2.126 1.384A5.882 5.882 0 0 0 .63 4.14c-.297.763-.5 1.635-.558 2.912C.014 8.332 0 8.741 0 12c0 3.259.014 3.668.072 4.948.058 1.277.261 2.15.558 2.912.307.79.717 1.459 1.384 2.126A5.883 5.883 0 0 0 4.14 23.37c.763.297 1.635.5 2.912.558C8.332 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 1.277-.058 2.15-.261 2.912-.558a5.883 5.883 0 0 0 2.126-1.384 5.883 5.883 0 0 0 1.384-2.126c.297-.763.5-1.635.558-2.912.058-1.28.072-1.689.072-4.948 0-3.259-.014-3.668-.072-4.948-.058-1.277-.261-2.15-.558-2.912a5.883 5.883 0 0 0-1.384-2.126A5.882 5.882 0 0 0 19.86.63c-.763-.297-1.
2723635-.5-2.912-.558C15.668.014 15.259 0 12 0Zm0 2.162c3.204 0 3.584.012 4.849.07 1.17.053 1.805.249 2.228.413.56.218.96.478 1.38.898.42.42.68.82.898 1.38.164.423.36 1.058.413 2.228.058 1.265.07 1.645.07 4.849s-.012 3.584-.07 4.849c-.053 1.17-.249 1.805-.413 2.228-.218.56-.478.96-.898 1.38-.42.42-.82.68-1.38.898-.423.164-1.058.36-2.228.413-1.265.058-1.645.07-4.849.07s-3.584-.012-4.849-.07c-1.17-.053-1.805-.249-2.228-.413a3.717 3.717 0 0 1-1.38-.898c-.42-.42-.68-.82-.898-1.38-.164-.423-.36-1.058-.413-2.228-.058-1.265-.07-1.645-.07-4.849s.012-3.584.07-4.849c.053-1.17.249-1.805.413-2.228.218-.56.478-.96.898-1.38.42-.42.82-.68 1.38-.898.423-.164 1.058-.36 2.228-.413 1.265-.058 1.645-.07 4.849-.07Zm0 3.676a6.162 6.162 0 1 0 0 12.324 6.162 6.162 0 0 0 0-12.324ZM12 16a4 4 0 1 1 0-8 4 4 0 0 1 0 8Zm7.846-10.406a1.44 1.44 0 1 1-2.88 0 1.44 1.44 0 0 1 2.88 0Z"/>
2724</svg>
2725
2726          </a>
2727        </div>
2728        <div>
2729          <a href="https://www.facebook.com/Native-Pet-1708986049410202/" class="text-light" target="_blank">
2730            <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
2731  <title>Meta</title>
2732  <path d="M24 14.331c0 3.424-1.477 5.569-4.136 5.569-2.348 0-3.593-1.297-5.884-5.122l-1.178-1.973c-.31-.469-.543-.907-.794-1.313-.754 1.268-1.767 3.113-1.767 3.113C7.73 18.977 6.32 19.9 4.358 19.9 1.627 19.9 0 17.751 0 14.429 0 9.066 2.992 4 6.896 4c1.883 0 3.518.926 5.43 3.356C13.717 5.478 15.255 4 17.224 4 20.94 4 24 8.714 24 14.331ZM10.777 9.618c-1.608-2.33-2.658-3.02-3.914-3.02-2.322 0-4.267 3.98-4.267 7.876 0 1.819.693 2.838 1.859 2.838 1.133 0 1.838-.712 3.87-3.892 0 0 .926-1.466 2.453-3.803Zm9.143 7.694c1.207 0 1.759-1.03 1.759-2.808 0-4.658-2.037-8.454-4.62-8.454-1.245 0-2.292.973-3.559 2.926.352.518.716 1.088 1.099 1.703l1.406 2.34c2.201 3.528 2.756 4.293 3.915 4.293Z"/>
2733</svg>
2734
2735          </a>
2736        </div>
2737        <div>
2738          <a href="https://www.tiktok.com/@nativepet" class="text-light" target="_blank">
2739            <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
2740  <title>TikTok</title>
2741  <path d="M22.999 9.842a9.849 9.849 0 0 1-5.756-1.84v8.38a7.621 7.621 0 1 1-6.575-7.553v4.215a3.499 3.499 0 1 0 2.449 3.337V0h4.126c-.003.348.026.696.087 1.04a5.729 5.729 0 0 0 2.528 3.76 5.693 5.693 0 0 0 3.141.945v4.097Z"/>
2742</svg>
2743
2744          </a>
2745        </div>
2746        <div>
2747          <a href="https://www.pinterest.com/nativepet/" class="text-light" target="_blank">
2748            <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
2749  <title>Pinterest</title>
2750  <path d="M21.626 8.343c0 5.729-3.184 9.993-7.869 9.993-1.573 0-3.052-.852-3.547-1.82-.852 3.358-1.023 4.001-1.023 4.001-.305 1.12-.929 2.24-1.478 3.111-1.564 1.106-1.71-.606-1.71-.606-.036-1.026-.018-2.257.249-3.355 0 0 .284-1.178 1.875-7.928-.472-.93-.472-2.314-.472-2.314 0-2.162 1.252-3.774 2.808-3.774 1.327 0 1.97 1.005 1.97 2.2 0 1.328-.854 3.32-1.288 5.159-.36 1.555.777 2.806 2.294 2.806 2.77 0 4.626-3.544 4.626-7.737 0-3.205-2.16-5.593-6.068-5.593-4.417 0-7.167 3.3-7.167 6.978 0 1.272.378 2.163.966 2.865.267.322.305.435.209.814-.074.266-.225.91-.302 1.157-.094.38-.399.511-.72.38C2.949 13.841 2 11.605 2 9.101 2 4.968 5.488 0 12.392 0c5.576 0 9.234 4.038 9.234 8.343Z"/>
2751</svg>
2752
2753          </a>
2754        </div>
2755      </div>
2756    </div>
2757    <div class="text-eyebrow hidden text-accent lg:block">
2758      Around the bowl nutrition™
2759    </div>
2760  </div>
2761</div>
2762
2763      </div>
2764    </div>
2765    
2766
2767<div class="text-p3 mt-10 lg:hidden">
2768  <div class="text-center lg:text-left">&copy; 2026 Native Pet</div>
2769  <nav class="mt-4">
2770    <ul role="list" class="flex justify-center lg:justify-start">
2771      
2772        <li class="first:mr-4 first:border-0 first:border-r first:border-solid first:border-light first:pr-4">
2773          <a href="/policies/terms-of-service" class="text-current">Terms of Service</a>
2774        </li>
2775      
2776        <li class="first:mr-4 first:border-0 first:border-r first:border-solid first:border-light first:pr-4">
2777          <a href="/policies/privacy-policy" class="text-current">Privacy Policy</a>
2778        </li>
2779      
2780    </ul>
2781  </nav>
2782</div>
2783
2784    <div class="text-eyebrow mt-10 text-center text-accent lg:hidden">
2785      Around the bowl nutrition™
2786    </div>
2787  </div>
2788  <div class="overflow-hidden border-0 pt-10 lg:col-span-2 lg:border-t lg:border-solid lg:border-accent lg:pt-15">
2789    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 122 28" class="text-light block w-[102%] h-auto max-w-8xl mx-auto translate-x-[-1%]">
2790  <path fill="currentColor" d="m17.16 21.527-.412-6.468c-.342-5.373-3.285-7.427-6.502-7.427-2.362 0-4.244 1.13-5.202 2.978V8.385c0-.582-.343-.992-1.061-.616L.663 9.378c-.377.17-.616.342-.616.616v.102c0 .753 1.54.787 1.54 2.293v9.172c0 1.335-1.369 1.472-1.369 2.225v.137c0 .308.274.513.719.513h5.305c.479 0 .752-.205.752-.513v-.137c0-.753-1.403-.89-1.403-2.225V13.52c0-2.464 1.403-4.244 3.594-4.244 2.088 0 3.422 1.745 3.593 5.647l.343 6.605c.068 1.37-1.232 1.506-1.232 2.26v.136c0 .308.273.513.753.513h4.996c.445 0 .753-.205.753-.513v-.137c0-.753-1.163-.89-1.232-2.259Z"/>
2791  <path fill="currentColor" d="m31.735 21.322-.684-6.571c-.48-4.415-3.252-7.119-7.564-7.119-3.662 0-6.332 1.677-6.332 3.833 0 .959.65 1.575 1.677 1.575 2.157 0 1.472-4.142 4.655-4.142 2.396 0 3.217 2.054 3.594 6.024l.068.684c-.924-.718-2.293-1.163-3.97-1.163-3.457 0-6.263 1.78-6.229 5.133 0 3.354 2.67 5.168 6.4 5.168 2.43 0 3.97-.924 4.757-2.19.137 1.677.993 2.054 2.738 2.054 1.472 0 2.773-.206 2.773-.856 0-.89-1.643-.205-1.883-2.43Zm-7.255 2.122c-2.122 0-3.491-2.02-3.491-4.347 0-2.053 1.334-3.354 3.217-3.354 1.814 0 3.114 1.232 3.251 3.183l.103 1.061c.102 1.848-1.164 3.457-3.08 3.457Z"/>
2792  <path fill="currentColor" d="M37.71 24.744c3.08 0 4.826-2.293 4.826-4.586 0-.616-.822-.718-1.13-.17-.205.992-.992 1.779-2.43 1.779-1.13 0-1.95-.89-1.95-2.533V9.651h4.312c.342 0 .616-.24.616-.581v-.48a.613.613 0 0 0-.616-.616h-4.313l-.034-3.32c0-.479-.205-.752-.65-.752h-.513c-.343 0-.616.273-.685.753-.274 1.985-1.335 3.32-3.114 3.32h-1.061c-.377 0-.582.239-.582.615v.48c0 .342.24.581.582.581h1.95V19.2c0 3.696 1.917 5.544 4.792 5.544Z"/>
2793  <path fill="currentColor" d="M43.975 5.134c1.678 0 2.773-1.061 2.773-2.567C46.748 1.095 45.653 0 43.975 0c-1.71 0-2.84 1.095-2.84 2.567 0 1.506 1.13 2.567 2.84 2.567Zm-2.532 19.268h5.202c.445 0 .753-.205.753-.513v-.137c0-.753-1.403-.89-1.403-2.225V8.351c0-.548-.445-.958-1.232-.582L41.34 9.48c-.376.206-.616.342-.616.616v.103c0 .616 1.267.958 1.267 2.361v8.967c0 1.335-1.267 1.472-1.267 2.225v.137c0 .308.274.513.719.513Z"/>
2794  <path fill="currentColor" d="M62.582 7.974h-3.8c-.376 0-.615.171-.615.514v.102c0 .72 1.916.822 1.197 2.773L55.36 21.527l-4.21-10.644c-.513-1.334.822-1.642.822-2.293v-.102c0-.308-.274-.514-.582-.514h-5.715c-.377 0-.616.171-.616.48v.102c0 .753.992 1.061 1.574 2.259l6.092 12.834c.24.514.48.753 1.027.753h1.437c.514 0 .822-.24.993-.753l5.1-12.834c.478-1.266 1.916-1.506 1.916-2.259v-.103c0-.308-.24-.479-.616-.479Z"/>
2795  <path fill="currentColor" d="M73.648 19.371c-.685 1.37-2.225 2.498-4.38 2.498-2.43 0-4.176-1.437-5.032-3.764l8.282-3.046c1.061-.377 1.746-1.095 1.746-2.396 0-2.396-1.985-5.03-6.4-5.03-4.518 0-8.18 3.524-8.18 8.418 0 5.305 3.525 8.693 8.112 8.693 4.346 0 6.64-3.011 6.947-5.03.069-.685-.719-.822-1.095-.343ZM67.18 8.933c1.984 0 3.25 2.464 3.25 3.867 0 .684-.273 1.164-.889 1.437l-5.681 2.465a11.076 11.076 0 0 1-.206-2.19c0-3.286 1.37-5.58 3.526-5.58ZM90.505 7.632c-2.259 0-4.141.958-5.1 2.601l.035-1.882c0-.582-.308-.958-1.13-.548l-3.148 1.54c-.377.171-.616.411-.616.719v.137c0 .787 1.471.856 1.471 2.156v16.77c0 1.37-1.3 1.506-1.3 2.259v.103c0 .342.308.513.753.513h5.202c.445 0 .753-.171.753-.513v-.103c0-.753-1.403-.89-1.403-2.259V22.93c1.13 1.164 2.635 1.814 4.517 1.814 4.313 0 7.906-3.627 7.906-8.83 0-5.202-3.833-8.282-7.94-8.282Zm-.445 15.812c-2.088 0-4.038-2.362-4.038-4.86v-6.332c.24-1.916 1.745-3.32 3.49-3.32 2.944 0 4.895 3.355 4.895 8.249 0 4.004-1.643 6.263-4.347 6.263Z"/>
2796  <path fill="currentColor" d="M111.111 19.371c-.685 1.37-2.225 2.498-4.381 2.498-2.43 0-4.175-1.437-5.031-3.764l8.283-3.046c1.061-.377 1.745-1.095 1.745-2.396 0-2.396-1.985-5.03-6.4-5.03-4.518 0-8.18 3.524-8.18 8.418 0 5.305 3.525 8.693 8.112 8.693 4.346 0 6.639-3.011 6.947-5.03.069-.685-.719-.822-1.095-.343Zm-6.468-10.438c1.985 0 3.251 2.464 3.251 3.867 0 .684-.274 1.164-.89 1.437l-5.681 2.465a11.067 11.067 0 0 1-.206-2.19c0-3.286 1.369-5.58 3.526-5.58Z"/>
2797  <path fill="currentColor" d="M117.174 24.744c3.081 0 4.826-2.293 4.826-4.586 0-.616-.821-.718-1.129-.17-.206.992-.993 1.779-2.43 1.779-1.13 0-1.951-.89-1.951-2.533V9.651h4.312c.342 0 .616-.24.616-.581v-.48a.614.614 0 0 0-.616-.616h-4.312l-.034-3.32c0-.479-.206-.752-.651-.752h-.513c-.342 0-.616.273-.685.753-.273 1.985-1.334 3.32-3.114 3.32h-1.061c-.376 0-.582.239-.582.615v.48c0 .342.24.581.582.581h1.951V19.2c0 3.696 1.916 5.544 4.791 5.544Z"/>
2798</svg>
2799
2800  </div>
2801</footer>
2802
2803
2804</div>
2805<!-- END sections: footer-group -->
2806    
2807  
2808  
2809
2810
2811  
2811<script src="//nativepet.com/cdn/shop/t/361/assets/auto-apply-discount.GZ8tLMQD.min.js?v=5744795416662153421778187746" type="module" crossorigin="anonymous"></script>
2811
2812
2813
2814
2815
2816
2817
2818<script id="apply-cart-discount">
2819  document.addEventListener('alpine:init', () => {
2820    Alpine.store('discount', {
2821      percentage: 0,
2822      code: localStorage.getItem('pending_discount'),
2823      init () {
2824        if (this.percentage > 0) {
2825          localStorage.setItem('discount_percentage', this.percentage);
2826          
2827          return;
2828        }
2829        else {
2830          this.clear();
2831        }
2832        const stored = Number(localStorage.getItem('discount_percentage')) || 0;
2833        this.percentage = stored;
2834      },
2835      clear () {
2836        localStorage.removeItem('discount_percentage');
2837        localStorage.removeItem('pending_discount');
2838      }
2839    });
2840  })
2841</script>
2841
2842
2843
2844
2845
2846  
2847
2848
2849
2850
2851  
2851<script id="free-gift-auto-add">
2852    document.addEventListener('alpine:init', () => {
2853      const setFreeGiftState = () => {
2854        Alpine.store('cart').setFreeGiftThreshold(75.0);
2855        Alpine.store('cart').setFreeGiftVariants([43086087061547]);
2856        Alpine.store('cart').setFreeGiftDiscountCode("FREEGIFT")
2857      }
2858      if (Alpine.store('cart')) {
2859        setFreeGiftState();
2860      }
2861      else {
2862        document.addEventListener('alpine:cart_store:ready', setFreeGiftState);
2863      }
2864    })
2865  </script>
2865
2866
2867
2868
2869
2870
2871
2872<script>
2873  window.shopUrl = 'https://nativepet.com';
2874  window.routes = {
2875    cart_add_url: '/cart/add',
2876    cart_change_url: '/cart/change',
2877    cart_update_url: '/cart/update',
2878    predictive_search_url: '/search/suggest',
2879  };
2880
2881  window.cartStrings = {
2882    error: `There was an error while updating your cart. Please try again.`,
2883    quantityError: `You can only add [quantity] of this item to your cart.`,
2884  };
2885
2886  window.variantStrings = {
2887    addToCart: `Add to cart`,
2888    soldOut: `Sold out`,
2889    unavailable: `Unavailable`,
2890  };
2891
2892  window.accessibilityStrings = {
2893    imageAvailable: `Image [index] is now available in gallery view`,
2894    shareSuccess: `Link copied to clipboard`,
2895    pauseSlideshow: `Pause slideshow`,
2896    playSlideshow: `Play slideshow`,
2897  };
2898</script>
2898
2899
2900
2901<div id="shopify-section-mobile-drawer" class="shopify-section drawer-section">
2902
2903
2904<div
2905  x-data="
2906    {
2907      open: false,
2908      openMenu: '',
2909
2910      async handleAbExperiment() {
2911        const hypothesisId = 'dffc1f21-bbbe-4f1a-be86-443bdcf08737'
2912        const isVariant = await window.shoplift?.isHypothesisActive?.(hypothesisId) ?? false
2913
2914        if (isVariant) {
2915          const els = this.$el.querySelectorAll(`a[href='/pages/philosophy']`)
2916
2917          els.forEach((el) => el.parentElement.remove());
2918        }
2919      }
2920    }
2921  "
2922  x-init="handleAbExperiment"
2923  @toggle-mobile-menu.window="open = !open"
2924  @open-mobile-menu="openMenu = $event.detail.menu"
2925  @close-mobile-menu="openMenu = ''"
2926>
2927  <div x-dialog x-model="open" x-cloak class="fixed inset-0 isolate z-max overflow-hidden">
2928    <div x-dialog:overlay x-transition.opacity class="fixed inset-0 bg-blueGrayHalf"></div>
2929
2930    <div class="fixed inset-y-0 left-0 w-full">
2931      <div
2932        aria-label="your cart"
2933        x-dialog:panel
2934        x-transition:enter="transition ease-out duration-300"
2935        x-transition:enter-start="-translate-x-full"
2936        x-transition:enter-end="translate-x-0"
2937        x-transition:leave="transition ease-in duration-300"
2938        x-transition:leave-start="translate-x-0"
2939        x-transition:leave-end="-translate-x-full"
2940        class="h-full w-full"
2941      >
2942        <button
2943          type="button"
2944          @click="$dialog.close(); setTimeout(() => openMenu = '', 300)"
2945          class="fixed right-2 top-6 z-20 rounded-xl p-2 text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2"
2946        >
2947          <span class="sr-only">Close mobile menu</span>
2948          
2949
2950    <svg
2951      class="icon icon--place icon--close "
2952      xmlns="http://www.w3.org/2000/svg"
2953      fill="currentColor"
2954      viewBox="0 0 24 24"
2955      width="24px"
2956      height="24px"
2957    >
2958      <path d="M 4.7070312 3.2929688 L 3.2929688 4.7070312 L 10.585938 12 L 3.2929688 19.292969 L 4.7070312 20.707031 L 12 13.414062 L 19.292969 20.707031 L 20.707031 19.292969 L 13.414062 12 L 20.707031 4.7070312 L 19.292969 3.2929688 L 12 10.585938 L 4.7070312 3.2929688 z"/>
2959    </svg>
2960
2961  
2962        </button>
2963
2964        <div
2965          class="relative grid h-full grid-rows-[max-content_1fr_max-content] overflow-visible bg-dark p-4 text-white shadow-lg transition-transform"
2966          :class="openMenu !== '' ? '-translate-x-full delay-100' : ''"
2967        >
2968          <div class="h-16 pb-4 pt-2">
2969            <h2 x-dialog:title class="text-p1 lowercase">
2970              <a href="/">
2971                <span class="sr-only">Native Pet</span>
2972                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 122 32" class="block w-[150px] lg:w-[180px] text-white">
2973  <path fill="currentColor" d="m17.16 21.527-.412-6.468c-.342-5.373-3.285-7.427-6.502-7.427-2.362 0-4.244 1.13-5.202 2.978V8.385c0-.582-.343-.992-1.061-.616L.663 9.378c-.377.17-.616.342-.616.616v.102c0 .753 1.54.787 1.54 2.293v9.172c0 1.335-1.369 1.472-1.369 2.225v.137c0 .308.274.513.719.513h5.305c.479 0 .752-.205.752-.513v-.137c0-.753-1.403-.89-1.403-2.225V13.52c0-2.464 1.403-4.244 3.594-4.244 2.088 0 3.422 1.745 3.593 5.647l.343 6.605c.068 1.37-1.232 1.506-1.232 2.26v.136c0 .308.273.513.753.513h4.996c.445 0 .753-.205.753-.513v-.137c0-.753-1.163-.89-1.232-2.259Z"/>
2974  <path fill="currentColor" d="m31.735 21.322-.684-6.571c-.48-4.415-3.252-7.119-7.564-7.119-3.662 0-6.332 1.677-6.332 3.833 0 .959.65 1.575 1.677 1.575 2.157 0 1.472-4.142 4.655-4.142 2.396 0 3.217 2.054 3.594 6.024l.068.684c-.924-.718-2.293-1.163-3.97-1.163-3.457 0-6.263 1.78-6.229 5.133 0 3.354 2.67 5.168 6.4 5.168 2.43 0 3.97-.924 4.757-2.19.137 1.677.993 2.054 2.738 2.054 1.472 0 2.773-.206 2.773-.856 0-.89-1.643-.205-1.883-2.43Zm-7.255 2.122c-2.122 0-3.491-2.02-3.491-4.347 0-2.053 1.334-3.354 3.217-3.354 1.814 0 3.114 1.232 3.251 3.183l.103 1.061c.102 1.848-1.164 3.457-3.08 3.457Z"/>
2975  <path fill="currentColor" d="M37.71 24.744c3.08 0 4.826-2.293 4.826-4.586 0-.616-.822-.718-1.13-.17-.205.992-.992 1.779-2.43 1.779-1.13 0-1.95-.89-1.95-2.533V9.651h4.312c.342 0 .616-.24.616-.581v-.48a.613.613 0 0 0-.616-.616h-4.313l-.034-3.32c0-.479-.205-.752-.65-.752h-.513c-.343 0-.616.273-.685.753-.274 1.985-1.335 3.32-3.114 3.32h-1.061c-.377 0-.582.239-.582.615v.48c0 .342.24.581.582.581h1.95V19.2c0 3.696 1.917 5.544 4.792 5.544Z"/>
2976  <path fill="currentColor" d="M43.975 5.134c1.678 0 2.773-1.061 2.773-2.567C46.748 1.095 45.653 0 43.975 0c-1.71 0-2.84 1.095-2.84 2.567 0 1.506 1.13 2.567 2.84 2.567Zm-2.532 19.268h5.202c.445 0 .753-.205.753-.513v-.137c0-.753-1.403-.89-1.403-2.225V8.351c0-.548-.445-.958-1.232-.582L41.34 9.48c-.376.206-.616.342-.616.616v.103c0 .616 1.267.958 1.267 2.361v8.967c0 1.335-1.267 1.472-1.267 2.225v.137c0 .308.274.513.719.513Z"/>
2977  <path fill="currentColor" d="M62.582 7.974h-3.8c-.376 0-.615.171-.615.514v.102c0 .72 1.916.822 1.197 2.773L55.36 21.527l-4.21-10.644c-.513-1.334.822-1.642.822-2.293v-.102c0-.308-.274-.514-.582-.514h-5.715c-.377 0-.616.171-.616.48v.102c0 .753.992 1.061 1.574 2.259l6.092 12.834c.24.514.48.753 1.027.753h1.437c.514 0 .822-.24.993-.753l5.1-12.834c.478-1.266 1.916-1.506 1.916-2.259v-.103c0-.308-.24-.479-.616-.479Z"/>
2978  <path fill="currentColor" d="M73.648 19.371c-.685 1.37-2.225 2.498-4.38 2.498-2.43 0-4.176-1.437-5.032-3.764l8.282-3.046c1.061-.377 1.746-1.095 1.746-2.396 0-2.396-1.985-5.03-6.4-5.03-4.518 0-8.18 3.524-8.18 8.418 0 5.305 3.525 8.693 8.112 8.693 4.346 0 6.64-3.011 6.947-5.03.069-.685-.719-.822-1.095-.343ZM67.18 8.933c1.984 0 3.25 2.464 3.25 3.867 0 .684-.273 1.164-.889 1.437l-5.681 2.465a11.076 11.076 0 0 1-.206-2.19c0-3.286 1.37-5.58 3.526-5.58ZM90.505 7.632c-2.259 0-4.141.958-5.1 2.601l.035-1.882c0-.582-.308-.958-1.13-.548l-3.148 1.54c-.377.171-.616.411-.616.719v.137c0 .787 1.471.856 1.471 2.156v16.77c0 1.37-1.3 1.506-1.3 2.259v.103c0 .342.308.513.753.513h5.202c.445 0 .753-.171.753-.513v-.103c0-.753-1.403-.89-1.403-2.259V22.93c1.13 1.164 2.635 1.814 4.517 1.814 4.313 0 7.906-3.627 7.906-8.83 0-5.202-3.833-8.282-7.94-8.282Zm-.445 15.812c-2.088 0-4.038-2.362-4.038-4.86v-6.332c.24-1.916 1.745-3.32 3.49-3.32 2.944 0 4.895 3.355 4.895 8.249 0 4.004-1.643 6.263-4.347 6.263Z"/>
2979  <path fill="currentColor" d="M111.111 19.371c-.685 1.37-2.225 2.498-4.381 2.498-2.43 0-4.175-1.437-5.031-3.764l8.283-3.046c1.061-.377 1.745-1.095 1.745-2.396 0-2.396-1.985-5.03-6.4-5.03-4.518 0-8.18 3.524-8.18 8.418 0 5.305 3.525 8.693 8.112 8.693 4.346 0 6.639-3.011 6.947-5.03.069-.685-.719-.822-1.095-.343Zm-6.468-10.438c1.985 0 3.251 2.464 3.251 3.867 0 .684-.274 1.164-.89 1.437l-5.681 2.465a11.067 11.067 0 0 1-.206-2.19c0-3.286 1.369-5.58 3.526-5.58Z"/>
2980  <path fill="currentColor" d="M117.174 24.744c3.081 0 4.826-2.293 4.826-4.586 0-.616-.821-.718-1.129-.17-.206.992-.993 1.779-2.43 1.779-1.13 0-1.951-.89-1.951-2.533V9.651h4.312c.342 0 .616-.24.616-.581v-.48a.614.614 0 0 0-.616-.616h-4.312l-.034-3.32c0-.479-.206-.752-.651-.752h-.513c-.342 0-.616.273-.685.753-.273 1.985-1.334 3.32-3.114 3.32h-1.061c-.376 0-.582.239-.582.615v.48c0 .342.24.581.582.581h1.951V19.2c0 3.696 1.916 5.544 4.791 5.544Z"/>
2981</svg>
2982
2983              </a>
2984            </h2>
2985          </div>
2986
2987          <div class="hide-scrollbar flex flex-1 flex-col overflow-y-scroll">
2988            <div class="flex-1">
2989              
2990                
2991                
2992                  <div class="border-0 border-t border-solid border-light/25 py-4 lowercase">
2993                    <a href="/collections/all" class="text-[18px] text-white">Shop All</a>
2994                  </div>
2995                
2996              
2997                
2998                
2999                  
3000                  
3001                  
3002                    <div class="border-0 border-t border-solid border-light/25">
3003  <h3>
3004    <button
3005      @click="$dispatch('open-mobile-menu', { menu: 'shop-dog' })"
3006      class="flex w-full items-center justify-between py-4 lowercase"
3007    >
3008      <span class="flex items-center gap-2 text-[18px]">
3009  Shop dog
3010  
3011</span>
3012
3013      
3014
3015    <svg class="icon icon--place icon--chevron-right size-4" width="8" height="12" viewBox="0 0 8 12" fill="none">
3016      <path d="M1.39961 11.6501L0.349609 10.6001L4.94961 6.0001L0.349609 1.4001L1.39961 0.350098L7.04961 6.0001L1.39961 11.6501Z" fill="currentColor"/>
3017    </svg>
3018
3019  
3020    </button>
3021  </h3>
3022  <div
3023    class="fixed inset-0 size-full translate-x-full bg-dark p-4 transition-all"
3024    :class="openMenu === 'shop-dog' ? 'visible' : 'invisible'"
3025  >
3026    <div class="grid h-16 grid-cols-[1.5rem_1fr_1.5rem] items-center justify-center pb-4 pt-2">
3027      <button aria-label="Go back" @click="$dispatch('close-mobile-menu')">
3028        
3029
3030    <svg class="icon icon--place icon--chevron-left size-4" width="8" height="12" viewBox="0 0 8 12" fill="none">
3031      <path d="M6.60039 11.6501L7.65039 10.6001L3.05039 6.0001L7.65039 1.4001L6.60039 0.350098L0.950391 6.0001L6.60039 11.6501Z" fill="currentColor"/>
3032    </svg>
3033
3034  
3035      </button>
3036      <h3 class="text-center text-[18px] font-bold lowercase">Shop dog</h3>
3037    </div>
3038    
3039    
3040      
3041      
3042        
3043        
3044        <div
3045  x-data="{ open: true }"
3046  class="border-0 border-t border-solid border-light/25"
3047>
3048  <h3>
3049    <button
3050      @click="open = !open"
3051      class="flex w-full items-center justify-between py-4 lowercase font-bold"
3052    >
3053      
3054      <span class="flex items-center gap-2 text-[18px]">
3055  featured
3056  
3057</span>
3058
3059      <div x-show="open" aria-hidden="true" class="ml-4">
3060
3061    <svg class="icon icon--place icon--minus size-3" width="10" height="10" viewBox="0 0 10 10" fill="none">
3062      <path fill-rule="evenodd" clip-rule="evenodd" d="M0 4.99129C0 4.57707 0.124967 4.24129 0.279121 4.24129L9.72088 4.24129C9.87503 4.24129 10 4.57707 10 4.99129C10 5.4055 9.87503 5.74129 9.72088 5.74129H0.279121C0.124967 5.74129 0 5.4055 0 4.99129Z" fill="currentColor"/>
3063    </svg>
3064
3065  </div>
3066      <div x-show="!open" aria-hidden="true" class="ml-4">
3067
3068    <svg class="icon icon--place icon--plus size-3" width="10" height="10" viewBox="0 0 10 10" fill="none">
3069      <path d="M4.25 10V5.75H0V4.25H4.25V0H5.75V4.25H10V5.75H5.75V10H4.25Z" fill="currentColor"/>
3070    </svg>
3071
3072  </div>
3073    </button>
3074  </h3>
3075  <div x-show="open" x-collapse class="mb-4">
3076    <ul role="list" class="grid gap-2 lowercase">
3077      
3078        <li>
3079          <a href="/collections/dog" class="text-[18px] text-white">All Products</a>
3080        </li>
3081      
3082        <li>
3083          <a href="/collections/best-sellers" class="text-[18px] text-white">Best Sellers</a>
3084        </li>
3085      
3086        <li>
3087          <a href="/collections/new-arrivals" class="text-[18px] text-white">New Arrivals</a>
3088        </li>
3089      
3090    </ul>
3091  </div>
3092</div>
3093
3094      
3095    
3096      
3097      
3098        
3099        
3100        <div
3101  x-data="{ open: false }"
3102  class="border-0 border-t border-solid border-light/25"
3103>
3104  <h3>
3105    <button
3106      @click="open = !open"
3107      class="flex w-full items-center justify-between py-4 lowercase font-bold"
3108    >
3109      
3110      <span class="flex items-center gap-2 text-[18px]">
3111  shop by concern
3112  
3113</span>
3114
3115      <div x-show="open" aria-hidden="true" class="ml-4">
3116
3117    <svg class="icon icon--place icon--minus size-3" width="10" height="10" viewBox="0 0 10 10" fill="none">
3118      <path fill-rule="evenodd" clip-rule="evenodd" d="M0 4.99129C0 4.57707 0.124967 4.24129 0.279121 4.24129L9.72088 4.24129C9.87503 4.24129 10 4.57707 10 4.99129C10 5.4055 9.87503 5.74129 9.72088 5.74129H0.279121C0.124967 5.74129 0 5.4055 0 4.99129Z" fill="currentColor"/>
3119    </svg>
3120
3121  </div>
3122      <div x-show="!open" aria-hidden="true" class="ml-4">
3123
3124    <svg class="icon icon--place icon--plus size-3" width="10" height="10" viewBox="0 0 10 10" fill="none">
3125      <path d="M4.25 10V5.75H0V4.25H4.25V0H5.75V4.25H10V5.75H5.75V10H4.25Z" fill="currentColor"/>
3126    </svg>
3127
3128  </div>
3129    </button>
3130  </h3>
3131  <div x-show="open" x-collapse class="mb-4">
3132    <ul role="list" class="grid gap-2 lowercase">
3133      
3134        <li>
3135          <a href="/collections/dog" class="text-[18px] text-white">all products</a>
3136        </li>
3137      
3138        <li>
3139          <a href="/collections/gut-health-and-digestion" class="text-[18px] text-white">gut health + digestion</a>
3140        </li>
3141      
3142        <li>
3143          <a href="/collections/skin-health" class="text-[18px] text-white">skin health</a>
3144        </li>
3145      
3146        <li>
3147          <a href="/collections/mobility-and-joints" class="text-[18px] text-white">mobility + joints</a>
3148        </li>
3149      
3150        <li>
3151          <a href="/collections/allergy-relief" class="text-[18px] text-white">allergy relief</a>
3152        </li>
3153      
3154        <li>
3155          <a href="/collections/runny-and-irregular-poop" class="text-[18px] text-white">runny + irregular poop</a>
3156        </li>
3157      
3158        <li>
3159          <a href="/collections/picky-eaters" class="text-[18px] text-white">picky eaters</a>
3160        </li>
3161      
3162        <li>
3163          <a href="/collections/stress-and-anxiety" class="text-[18px] text-white">stress + anxiety</a>
3164        </li>
3165      
3166        <li>
3167          <a href="/collections/dental-health" class="text-[18px] text-white">dental health</a>
3168        </li>
3169      
3170        <li>
3171          <a href="/collections/senior-care" class="text-[18px] text-white">senior care</a>
3172        </li>
3173      
3174    </ul>
3175  </div>
3176</div>
3177
3178      
3179    
3180      
3181      
3182    
3183  </div>
3184</div>
3185
3186                  
3187                
3188              
3189                
3190                
3191                  
3192                  
3193                  
3194                    <div class="border-0 border-t border-solid border-light/25">
3195  <h3>
3196    <button
3197      @click="$dispatch('open-mobile-menu', { menu: 'shop-cat' })"
3198      class="flex w-full items-center justify-between py-4 lowercase"
3199    >
3200      <span class="flex items-center gap-2 text-[18px]">
3201  Shop cat
3202  
3203    <span class="text-p4 isolate grid -rotate-12 place-content-center rounded-full bg-accent font-bold uppercase leading-none text-dark  size-6 text-[7px]">
3204  new
3205</span>
3206
3207  
3208</span>
3209
3210      
3211
3212    <svg class="icon icon--place icon--chevron-right size-4" width="8" height="12" viewBox="0 0 8 12" fill="none">
3213      <path d="M1.39961 11.6501L0.349609 10.6001L4.94961 6.0001L0.349609 1.4001L1.39961 0.350098L7.04961 6.0001L1.39961 11.6501Z" fill="currentColor"/>
3214    </svg>
3215
3216  
3217    </button>
3218  </h3>
3219  <div
3220    class="fixed inset-0 size-full translate-x-full bg-dark p-4 transition-all"
3221    :class="openMenu === 'shop-cat' ? 'visible' : 'invisible'"
3222  >
3223    <div class="grid h-16 grid-cols-[1.5rem_1fr_1.5rem] items-center justify-center pb-4 pt-2">
3224      <button aria-label="Go back" @click="$dispatch('close-mobile-menu')">
3225        
3226
3227    <svg class="icon icon--place icon--chevron-left size-4" width="8" height="12" viewBox="0 0 8 12" fill="none">
3228      <path d="M6.60039 11.6501L7.65039 10.6001L3.05039 6.0001L7.65039 1.4001L6.60039 0.350098L0.950391 6.0001L6.60039 11.6501Z" fill="currentColor"/>
3229    </svg>
3230
3231  
3232      </button>
3233      <h3 class="text-center text-[18px] font-bold lowercase">Shop cat</h3>
3234    </div>
3235    
3236    
3237      
3238      
3239    
3240      
3241      
3242    
3243      
3244      
3245        
3246        
3247        <div
3248  x-data="{ open: true }"
3249  class="border-0 border-t border-solid border-light/25"
3250>
3251  <h3>
3252    <button
3253      @click="open = !open"
3254      class="flex w-full items-center justify-between py-4 lowercase font-bold"
3255    >
3256      
3257      <span class="flex items-center gap-2 text-[18px]">
3258  featured
3259  
3260</span>
3261
3262      <div x-show="open" aria-hidden="true" class="ml-4">
3263
3264    <svg class="icon icon--place icon--minus size-3" width="10" height="10" viewBox="0 0 10 10" fill="none">
3265      <path fill-rule="evenodd" clip-rule="evenodd" d="M0 4.99129C0 4.57707 0.124967 4.24129 0.279121 4.24129L9.72088 4.24129C9.87503 4.24129 10 4.57707 10 4.99129C10 5.4055 9.87503 5.74129 9.72088 5.74129H0.279121C0.124967 5.74129 0 5.4055 0 4.99129Z" fill="currentColor"/>
3266    </svg>
3267
3268  </div>
3269      <div x-show="!open" aria-hidden="true" class="ml-4">
3270
3271    <svg class="icon icon--place icon--plus size-3" width="10" height="10" viewBox="0 0 10 10" fill="none">
3272      <path d="M4.25 10V5.75H0V4.25H4.25V0H5.75V4.25H10V5.75H5.75V10H4.25Z" fill="currentColor"/>
3273    </svg>
3274
3275  </div>
3276    </button>
3277  </h3>
3278  <div x-show="open" x-collapse class="mb-4">
3279    <ul role="list" class="grid gap-2 lowercase">
3280      
3281        <li>
3282          <a href="/collections/cat" class="text-[18px] text-white">all products</a>
3283        </li>
3284      
3285        <li>
3286          <a href="/products/cat-hairball" class="text-[18px] text-white">hairball</a>
3287        </li>
3288      
3289        <li>
3290          <a href="/products/cat-multivitamin" class="text-[18px] text-white">multivitamin</a>
3291        </li>
3292      
3293        <li>
3294          <a href="/products/cat-probiotic" class="text-[18px] text-white">probiotic</a>
3295        </li>
3296      
3297        <li>
3298          <a href="/products/cat-immune" class="text-[18px] text-white">immune</a>
3299        </li>
3300      
3301        <li>
3302          <a href="/products/cat-calm" class="text-[18px] text-white">calm</a>
3303        </li>
3304      
3305    </ul>
3306  </div>
3307</div>
3308
3309      
3310    
3311  </div>
3312</div>
3313
3314                  
3315                
3316              
3317                
3318                
3319                  <div class="border-0 border-t border-solid border-light/25 py-4 lowercase">
3320                    <a href="/pages/build-your-own-bundle" class="text-[18px] text-white">Build Your Bundle + 15% Off</a>
3321                  </div>
3322                
3323              
3324                
3325                
3326                  <div class="border-0 border-t border-solid border-light/25 py-4 lowercase">
3327                    <a href="/blogs/health" class="text-[18px] text-white">The Blog Park</a>
3328                  </div>
3329                
3330              
3331            </div>
3332
3333            
3334          </div>
3335
3336          <!-- Footer -->
3337          <div class="mt-4 grid w-full gap-4">
3338            <div>
3339              <a class="button w-full" style="--button-padding: 8px 16px" href="/pages/quiz">Take the quiz + $5 off</a>
3340            </div>
3341            
3342            <a href="/account" class="flex items-center gap-2 lowercase text-white">
3343              <svg
3344  aria-hidden="true"
3345  focusable="false"
3346  xmlns="http://www.w3.org/2000/svg"
3347  width="40"
3348  height="40"
3349  viewBox="0 0 40 40"
3350  class="block size-10"
3351>
3352  <g fill="none" fill-rule="evenodd"><path d="M0 0h40v40H0z"/><g fill="currentColor" fill-rule="nonzero" transform="translate(8 8)"><circle cx="11.939" cy="6" r="6"/>
3352<path d="M22.869 24c.6 0 1.08-.53 1-1.12-.67-4.99-5.75-8.88-11.93-8.88S.679 17.88.009 22.88c-.08.6.4 1.12 1 1.12H22.869Z"/></g></g>
3353</svg>
3354
3355
3356              Sign in
3357            </a>
3358          </div>
3359        </div>
3360      </div>
3361    </div>
3362  </div>
3363</div>
3364
3365
3366</div>
3367<div id="shopify-section-quick-add" class="shopify-section"><div
3368  x-data="
3369    {
3370      open: false,
3371      section: null,
3372
3373      async openModal(event) {
3374        this.$dispatch('toggle-cart', false)
3375        const html = await fetch(`/products/${event.detail.handle}?view=modal`).then(r => r.text());
3376        const doc = new DOMParser().parseFromString(html, 'text/html');
3377
3378        this.section = event.detail.section_name;
3379        this.$refs['modal-contents'].innerHTML = doc.body.innerHTML;
3380
3381        this.open = true;
3382      },
3383
3384      closeModal() {
3385        this.open = false;
3386      },
3387    }
3388  "
3389  class="flex justify-center"
3390  @open-quick-add.window="openModal"
3391>
3392  <div
3393    x-dialog
3394    x-model="open"
3395    x-cloak
3396    class="color-scheme-4 fixed inset-0 isolate z-max overflow-hidden"
3397  >
3398    <div x-dialog:overlay x-transition.opacity class="fixed inset-0 hidden bg-blueGrayHalf lg:block"></div>
3399
3400    <div
3401      class="fixed inset-0 lg:mt-0 lg:grid lg:place-content-center lg:p-4"
3402    >
3403      <div
3404        x-dialog:panel
3405        x-transition:enter="transition ease-out duration-300"
3406        x-transition:enter-start="transform opacity-0 translate-y-full lg:translate-y-0"
3407        x-transition:enter-end="transform opacity-100 translate-y-0"
3408        x-transition:leave="transition ease-in duration-300"
3409        x-transition:leave-start="transform opacity-100 translate-y-0"
3410        x-transition:leave-end="transform opacity-0 translate-y-full lg:translate-y-0"
3411        class="relative h-full w-full max-w-[960px] bg-white shadow-lg lg:rounded-xl"
3412      >
3413        <div class="absolute right-0 top-0 pr-4 pt-4">
3414          <button
3415            type="button"
3416            @click="$dialog.close()"
3417            class="rounded-xl p-2 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2"
3418          >
3419            <span class="sr-only">Close modal</span>
3420            <svg
3421  xmlns="http://www.w3.org/2000/svg"
3422  fill="none"
3423  viewBox="0 0 24 24"
3424  stroke-width="1.5"
3425  stroke="currentColor"
3426  class="size-6 block"
3427>
3428  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" />
3429</svg>
3430
3431          </button>
3432        </div>
3433
3434        <div x-ref="modal-contents"></div>
3435      </div>
3436    </div>
3437  </div>
3438</div>
3439
3440
3441
3442</div>
3443
3444    
3444<script id="rebuy-script-overrides">
3445  window.rbss_hidden_variant_ids = [
3446    '43088290709547', // probiotic 1.7oz
3447    '42704411885611', // omega oil 3 oz
3448    '43086087061547', // daily 1.7oz
3449  ];
3450
3451  window.buy3TiersPercentageComplete = function (p, n = false) {
3452    const t = p.tiers[0];
3453    const min = t.minimum;
3454    if (typeof window.Rebuy.SmartCart !== 'undefined' && typeof window.Rebuy.SmartCart.cart !== 'undefined') {
3455      let qty = 0;
3456      window.Rebuy.SmartCart.cart.items.forEach((item) => {
3457        if (!item.selling_plan_allocation && !item.properties.__free_gift) {
3458          qty += item.quantity;
3459        }
3460      });
3461      let progress = qty >= min ? 100 : 100 * (qty / min);
3462      if (!n) progress = progress + '%';
3463      return progress;
3464    }
3465    return 0;
3466  };
3467
3468  window.buy3GetTierFeedbackText = function (p) {
3469    const t = p.tiers[0];
3470    const min = t.minimum;
3471    const discount = t.discount_amount_from_total;
3472    let text = t.discount_amount_remaining_label_text;
3473    if (typeof window.Rebuy.SmartCart !== 'undefined' && typeof window.Rebuy.SmartCart.cart !== 'undefined') {
3474      let qty = 0;
3475      window.Rebuy.SmartCart.cart.items.forEach((item) => {
3476        if (!item.selling_plan_allocation && !item.properties.__free_gift) {
3477          qty += item.quantity;
3478        }
3479      });
3480      if (qty < min) {
3481        text = text.replace('{{remaining_amount}}', min - qty);
3482      } else {
3483        text = t.discount_amount_reached_label_text;
3484      }
3485    }
3486    return text.replace('{{discount_amount}}', discount + '%');
3487  };
3488
3489  window.buy3Visible = function () {
3490    if (typeof window.Rebuy.SmartCart !== 'undefined' && typeof window.Rebuy.SmartCart.cart !== 'undefined') {
3491      const min = 3;
3492      let qty = 0;
3493      window.Rebuy.SmartCart.cart.items.forEach((item) => {
3494        if (!item.selling_plan_allocation && !item.properties.__free_gift) {
3495          qty += item.quantity;
3496        }
3497      });
3498      return qty < min;
3499    }
3500    return false;
3501  };
3502
3503  window.cartItemPrice = function (item) {
3504    let price = item.discounted_price || item.final_price;
3505    if (item.product?.subscription && item.discounted_price) {
3506      const orderDiscount = item.discounts?.find((d) => ['Order Discount', 'Buy 3, get 15% off'].includes(d.title));
3507      if (orderDiscount) {
3508        const itemDiscount = Math.trunc(orderDiscount.amount / item.quantity);
3509        price = item.discounted_price + itemDiscount;
3510      }
3511    }
3512    return price;
3513  };
3514
3515  window.cartItemSavings = function (item) {
3516    let savings = 0;
3517    if (item.line_level_discount_allocations && item.line_level_discount_allocations.length) {
3518      item.line_level_discount_allocations.forEach((allocation) => {
3519        if (allocation.discount_application.value_type === 'percentage') {
3520          savings += parseInt(allocation.discount_application.value, 10);
3521        }
3522      });
3523    }
3524    if (
3525      item.selling_plan_allocation &&
3526      item.selling_plan_allocation.selling_plan &&
3527      item.selling_plan_allocation.selling_plan.price_adjustments &&
3528      item.selling_plan_allocation.selling_plan.price_adjustments[0].value_type === 'percentage'
3529    ) {
3530      savings += item.selling_plan_allocation.selling_plan.price_adjustments[0].value;
3531    }
3532    return savings >= 100 ? 0 : savings;
3533  };
3534
3535  document.addEventListener('rebuy:smartcart.line-item-increase', (event) => {
3536    const { item } = event.detail;
3537
3538    if (typeof window.posthogCapture === 'function') {
3539      window.posthogCapture('product_quantity_update', {
3540        category: item.product.category?.name || '',
3541        product_type: item.product.product_type || '',
3542        product_id: item.product.id || '',
3543        name: item.product.title || '',
3544        variant_id: item.product.selected_variant_id || '',
3545        variant: item.product.selected_variant?.title || '',
3546        quick_add: false,
3547        section: 'rebuy_cart',
3548        direction: 'increase',
3549        quantity_before: item.quantity,
3550        quantity_after: item.quantity + item.quantity_rule.increment,
3551      });
3552    }
3553  });
3554
3555  document.addEventListener('rebuy:smartcart.line-item-decrease', (event) => {
3556    const { item } = event.detail;
3557
3558    if (typeof window.posthogCapture === 'function') {
3559      window.posthogCapture('product_quantity_update', {
3560        category: item.product.category?.name || '',
3561        product_type: item.product.product_type || '',
3562        product_id: item.product.id || '',
3563        name: item.product.title || '',
3564        variant_id: item.product.selected_variant_id || '',
3565        variant: item.product.selected_variant?.title || '',
3566        quick_add: false,
3567        section: 'rebuy_cart',
3568        direction: 'decrease',
3569        quantity_before: item.quantity,
3570        quantity_after: item.quantity - item.quantity_rule.increment,
3571      });
3572    }
3573  });
3574
3575  document.addEventListener('rebuy:smartcart.item-switch-to-subscription', (event) => {
3576    const { item } = event.detail;
3577    if (item.properties?._has_subscription_gift !== 'true') {
3578      fetch('/cart/change.js', {
3579        method: 'POST',
3580        headers: {
3581          'Content-Type': 'application/json',
3582        },
3583        body: JSON.stringify({
3584          id: item.key,
3585          properties: {
3586            ...item.properties,
3587            _has_subscription_gift: 'true',
3588          },
3589        }),
3590      });
3591    }
3592  });
3593</script>
3593
3594
3595
3596<script id="rebuy-recommended-template" type="text/template">
3597    <template v-for="w in [(''.constructor.constructor('return window')())]">
3598    <div class="rebuy-widget"
3599    v-cloak
3600    v-show="w.buy3Visible() || false"
3601    v-on:click="stopPropagation($event)"
3602    v-bind:id="'rebuy-widget-' + id"
3603    v-bind:class="['widget-type-' + config.type.replace('_','-'), 'widget-display-' + config.display_type, products.length > 0 ? 'is-visible' : 'is-nn', 'widget-layout-' + currentLayout()]">
3604        <div
3605            class="rebuy-widget-container"
3606            v-cloak
3607            v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]"
3608            v-on:click.self="config.display_type == 'popup' && hide()">
3609
3610            <div class="rebuy-widget-content">
3611                <div class="rebuy-modal-close" v-on:click="hide()" aria-label="close modal">
3612                    <rebuy-icon name="x"></rebuy-icon>
3613                </div>
3614
3615                <div class="rebuy-timer" v-if="hasTimer()">
3616                    <p class="rebuy-timer-title" v-if="config.language.timer_title">
3617                        <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span>
3618                    </p>
3619                </div>
3620
3621                <h3 class="super-title" v-if="config.language.super_title != ''" v-html="config.language.super_title"></h3>
3622
3623                <h4 class="primary-title" v-if="config.language.title != ''" v-html="config.language.title"></h4>
3624
3625                <div class="description" v-if="config.language.description != ''" v-html="config.language.description"></div>
3626
3627                <div class="rebuy-product-grid" v-bind:class="layoutClasses" role="list">
3628
3629                    <div
3630                        v-for="(product, product_index) in products"
3631                        v-bind:class="[
3632                            product.handle,
3633                            'product-id-' + product.id,
3634                            cartHasProduct(product) ? 'cart-has-item' : '',
3635                            productTagClasses(product),
3636                            hasSplideCarousel ? 'splide__slide' : '',
3637                        ]"
3638                        aria-label="product"
3639                        class="rebuy-product-block"
3640                        role="listitem"
3641                    >
3642                        <template
3643                            v-if="product.variants.some(v => v.id === product.selected_variant.id && (v?.metafields?.custom?.hidden || (w.rbss_hidden_variant_ids && w.rbss_hidden_variant_ids.includes(String(v.id)))))
3644                                && (product.selected_variant = (product.variants.find(v => !v?.metafields?.custom?.hidden && !(w.rbss_hidden_variant_ids && w.rbss_hidden_variant_ids.includes(String(v.id)))) || {}))
3645                                && false">
3646                        </template>
3647                        <div class="rebuy-product-media">
3648                            <a
3649                                v-if="!(hasProductQuickViewEnabled() && hasQuickViewPhotoTrigger())"
3650                                class="rebuy-product-image"
3651                                tabindex="-1"
3652                                v-bind:href="learnMoreURL(product)"
3653                                v-bind:style="imageStyles"
3654                                v-on:click="learnMore(product, $event);"
3655                                v-bind:class="[hasLearnMore() ? 'clickable' : '']"
3656                                rel="nofollow"
3657                            >
3658                                <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
3659                            </a>
3660                            <button
3661                                v-if="hasProductQuickViewEnabled() && hasQuickViewPhotoTrigger()"
3662                                class="rebuy-product-image-trigger"
3663                                v-bind:style="imageStyles"
3664                                v-on:click="openQuickViewVariantModal(product)"
3665                                v-bind:aria-label="'Quick view ' + product.title"
3666                                type="button"
3667                            >
3668                                <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
3669                            </button>
3670                        </div>
3671                        <div class="rebuy-product-info">
3672                            <span
3673                                v-if="product.metafields?.card?.social_tag"
3674                                class="social-tag"
3675                                v-html="product.metafields.card.social_tag"
3676                                :data-type="product.metafields.card.social_tag"
3677                            ></span>
3678                            <h5
3679                                class="rebuy-product-title"
3680                                v-bind:class="[hasLearnMore() ? 'clickable' : '']">
3681                                <a
3682                                    v-bind:href="learnMoreURL(product)"
3683                                    class="rebuy-product-title-link"
3684                                    v-on:click="learnMore(product, $event);"
3685                                    v-html="product.title"
3686                                    v-bind:class="[hasLearnMore() ? 'clickable' : '']"
3687                                    v-bind:aria-label="'View ' + product.title"
3688                                    rel="nofollow"
3689                                ></a>
3690                            </h5>
3691                            <div
3692                                class="rebuy-product-vendor-container"
3693                                v-if="showProductVendor(product.vendor)"
3694                            >
3695                                <a
3696                                    class="rebuy-product-vendor"
3697                                    v-bind:class="[hasEnabledProductVendorLink() ? 'clickable' : '']"
3698                                    v-html="product.vendor"
3699                                    v-bind:href="vendorURL(product.vendor)"
3700                                    v-bind:aria-label="'View ' + product.vendor + ' products'"
3701                                    rel="nofollow"
3702                                ></a>
3703                            </div>
3704                            <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div>
3705                            <div class="rebuy-product-review" v-if="hasProductReviews(product)" aria-label="product star rating">
3706                                <span class="rebuy-star-rating">
3707                                    <span
3708                                        v-if="product.reviews.star_rating"
3709                                        class="rebuy-star-rating-value sr-only"
3710                                        v-html="product.reviews.star_rating + ' stars out of 5 stars'"
3711                                    >
3712                                    </span>
3713                                    <span class="rebuy-star-rating-background"></span>
3714                                    <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span>
3715                                </span>
3716                                <span class="rebuy-review-count" v-html="productReviewCount(product)"></span>
3717                            </div>
3718
3719                            <div class="rebuy-product-price">
3720                                <div v-if="variantOnSale(product, product.selected_variant)">
3721                                    <span class="rebuy-money sale">
3722                                        <span class="sr-only">Sale price</span>
3723                                        <span v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
3724                                    </span>
3725                                    <span class="rebuy-money compare-at">
3726                                        <span class="sr-only">Original price</span>
3727                                        <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span>
3728                                    </span>
3729                                </div>
3730                                <div v-if="!(variantOnSale(product, product.selected_variant))">
3731                                    <span class="rebuy-money">
3732                                        <span class="sr-only">Price</span>
3733                                        <span v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
3734                                    </span>
3735                                </div>
3736                            </div>
3737                            <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div>
3738                        </div>
3739                        <div class="rebuy-product-options" v-if="showVariantSelect(product)">
3740                            <template
3741                                v-if="product.variants.some(v => v.id === product.selected_variant_id && (v?.metafields?.custom?.hidden || (w.rbss_hidden_variant_ids && w.rbss_hidden_variant_ids.includes(String(v.id)))))
3742                                    && (product.selected_variant_id = (product.variants.find(v => !v?.metafields?.custom?.hidden && !(w.rbss_hidden_variant_ids && w.rbss_hidden_variant_ids.includes(String(v.id)))) || {}).id)
3743                                    && false">
3744                            </template>
3745                            <select
3746                                title="Select product variant"
3747                                :id="id + '-' + 'select' + '-' + product_index"
3748                                :class="{ hide : config.view_options.variant_selector === 'buttons' }"
3749                                class="rebuy-select"
3750                                v-bind:aria-label="'variant of ' + product.title"
3751                                v-model="product.selected_variant_id"
3752                                v-on:change="selectVariant(product)">
3753                                <template v-for="variant in product.variants">
3754                                    <option
3755                                        v-if="!variant?.metafields?.custom?.hidden && (!w.rbss_hidden_variant_ids || !w.rbss_hidden_variant_ids.includes(String(variant.id)))"
3756                                        class="rebuy-product-options__option"
3757                                        :class="{ 'rebuy-product-options__option--oos' : !variantAvailable(variant) }"
3758                                        v-bind:value="variant.id"
3759                                        :disabled="!variantAvailable(variant)"
3760                                        v-html="formatVariantOptionTitle(variant)">
3761                                    </option>
3762                                </template>
3763                            </select>
3764
3765                            <div
3766                                class="rebuy-product-options__button-swatches-container"
3767                                :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }"
3768                                >
3769                                <div
3770                                    v-for="option in product.options"
3771                                    :key="'option-' + product.id + '-' + option.name"
3772                                    class="rebuy-product-options__button-swatches rebuy-size-swatches"
3773                                    >
3774                                    <div
3775                                        v-for="(value, value_index) in filterOOSOptions(option, product)"
3776                                        :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index"
3777                                        >
3778                                        <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch">
3779                                            <input
3780                                                :name="id + '-color-' + product_index"
3781                                                :id="id + '-color-' + product_index + '-' + value + '-' + value_index"
3782                                                :checked="hasSwatchOptionSelected(product, value, value_index, 'color')"
3783                                                :value="value"
3784                                                type="radio"
3785                                                class="rebuy-color-input hide"
3786                                                v-on:change="selectVariantByOption(product, option.name, value)"
3787                                                :disabled="isDisabledOptionValue(product, option.name, value)"
3788                                            />
3789
3790                                            <label
3791                                                :for="id + '-color-' + product_index + '-' + value + '-' + value_index"
3792                                                :style="getMerchantThemeColorAssetStyle(value)"
3793                                                :title="value"
3794                                                class="rebuy-color-label"
3795                                                :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
3796                                            >
3797                                            </label>
3798                                        </div>
3799
3800                                        <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch">
3801                                            <input
3802                                                :name="id + '-' + option.name + '-' + product_index"
3803                                                :id="id + '-' + option.name + '-' + product_index + '-' + value"
3804                                                :checked="hasSwatchOptionSelected(product, value, value_index, option.name)"
3805                                                :value="value"
3806                                                type="radio"
3807                                                class="rebuy-size-input hide"
3808                                                v-on:change="selectVariantByOption(product, option.name, value)"
3809                                                :disabled="isDisabledOptionValue(product, option.name, value)"
3810                                            />
3811
3812                                            <label
3813                                                :for="id + '-' + option.name + '-' + product_index + '-' + value"
3814                                                class="rebuy-size-label"
3815                                                :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
3816                                            >
3817                                                {{ value }}
3818                                            </label>
3819                                        </div>
3820                                    </div>
3821                                </div>
3822                            </div>
3823                        </div>
3824
3825                        <div class="rebuy-product-actions">
3826                            <button
3827                                v-if="hasProductQuickViewEnabled() && hasQuickViewButtonTrigger()"
3828                                class="product-quick-view-button rebuy-button outline"
3829                                v-on:click="openQuickViewVariantModal(product)"
3830                                v-bind:aria-label="'Quick view ' + product.title"
3831                                type="button">
3832                                <span v-html="getQuickViewButtonText()"></span>
3833                            </button>
3834
3835                            <div class="subscription-checkbox" v-if="showSubscriptionOptions(product)">
3836                                <label class="rebuy-checkbox-label">
3837                                    <input
3838                                        class="checkbox-input rebuy-checkbox"
3839                                        v-model="product.subscription"
3840                                        v-on:change="toggleSubscription(product)"
3841                                        type="checkbox"
3842                                        :aria-label="upgradeToSubscriptionAriaLabel(product)"
3843                                    />
3844                                    <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
3845                                </label>
3846                            </div>
3847
3848                            <div class="subscription-frequency" v-if="showSubscriptionFrequency(product)">
3849                                <select
3850                                    class="rebuy-select"
3851                                    aria-label="subscription frequency"
3852                                    v-model="product.subscription_frequency"
3853                                    v-on:change="updateSubscriptionFrequency(product)">
3854                                    <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
3855                                </select>
3856                            </div>
3857
3858                            <div class="product-quantity" v-if="hasQuantityInputEnabled()">
3859                                <div class="rebuy-select-wrapper">
3860                                    <label class="rebuy-label">Quantity</label>
3861                                    <select
3862                                        class="rebuy-select"
3863                                        aria-label="product quantity"
3864                                        v-model="product.quantity">
3865                                        <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
3866                                    </select>
3867                                </div>
3868                            </div>
3869
3870                            <button
3871                                class="rebuy-button"
3872                                v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
3873                                v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
3874                                v-bind:aria-label="buttonAriaLabel(product)"
3875                                v-on:click="addToCart(product)"
3876                                type="button">
3877                                    <span v-html="buttonLabel(product)"></span>
3878                            </button>
3879                        </div>
3880                    </div>
3881
3882                </div>
3883
3884                <div class="rebuy-modal-actions" v-if="showContinueButton()">
3885                    <button
3886                        class="rebuy-button decline"
3887                        v-on:click="hide()"
3888                        type="button">
3889                            <span v-html="continueLabel()"></span>
3890                    </button>
3891                </div>
3892
3893                <div class="powered-by-rebuy">
3894                    <a v-bind:href="'https://rebuyengine.com/?shop=' + config.shop.myshopify_domain" target="_blank" rel="noopener">
3895                        Powered by Rebuy
3896                    </a>
3897                </div>
3898
3899            </div>
3900
3901        </div>
3902    </div>
3903    </template>
3904</script>
3904
3905
3906
3907
3908<script id="rebuy-quick-view-dropdown-search-template" type="text/template">
3909    <div id="rebuy-quick-view-dropdown-search" class="rebuy-quick-view-dropdown">
3910        <div
3911            class="rebuy-quick-view-dropdown__container"
3912            v-bind:class="[isQuickViewOpen ? 'visible' : '']"
3913            role="region"
3914            aria-label="product search filter"
3915        >
3916            <div class="rebuy-quick-view-dropdown__input-container">
3917                <div class="rebuy-quick-view__search-input rebuy-quick-view-dropdown__search-input rebuy-input">
3918                    <label v-if="searchByCollectionsEnabled" for="search" class="sr-only">Search by Collections</label>
3919                    <select
3920                        v-if="searchByCollectionsEnabled"
3921                        name="search"
3922                        class="rebuy-select"
3923                        id="search"
3924                        v-model="searchByCollection"
3925                    >
3926                        <option :value="SEARCH_BY_COLLECTION_DEFAULT">All</option>
3927                        <option v-for="{ name, id } in searchByCollectionsCollections" :value="id">{{name}}</option>
3928                    </select>
3929
3930                    <!-- NP: Replace Rebuy's search icon -->
3931                    <svg class="rebuy-icon-wrapper--inline" aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 40 40">
3932                        <g fill="none" fill-rule="evenodd"><path d="M0 0h40v40H0z"></path><g fill="currentColor" fill-rule="nonzero" transform="translate(8 8)"><path d="m14.204 12.787 6.987 6.986-1.415 1.414-6.986-6.986z"></path><rect width="10" height="4" x="14.88" y="17.885" rx="2" transform="rotate(45 19.88 19.885)"></rect><path d="M8.5 0C3.81 0 0 3.81 0 8.5 0 13.19 3.81 17 8.5 17c4.69 0 8.5-3.81 8.5-8.5C17 3.81 13.19 0 8.5 0Zm0 14.5c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6Z"></path></g></g>
3933                    </svg>
3934                    <label for="searchInput" class="sr-only">Enter a Search Term</label>
3935                    <span class="sr-only">
3936                        The following text field filters the products, collections, and content shown below as you
3937                        type. Type at least 3 characters to see results; results update automatically shortly after
3938                        you stop typing.
3939                    </span>
3940                    <input
3941                        id="searchInput"
3942                        :class="(searchByCollectionsEnabled) && 'right-rounded'"
3943                        type="text"
3944                        :placeholder="placeholderText()"
3945                        :value="searchTerm"
3946                        @input="($event) => searchTerm = $event.target.value"
3947                        ref="searchInput"
3948                        @keydown.enter.stop.prevent="goToSearchPage"
3949                        @keydown.escape.stop.prevent="closeQuickView"
3950                    />
3951                </div>
3952
3953                <div class="rebuy-quick-view-dropdown__live-region sr-only" role="status" aria-live="polite">
3954                    {{resultsAnnouncement}}
3955                </div>
3956
3957                <button
3958                    class="rebuy-quick-view-dropdown__close"
3959                    type="button"
3960                    v-on:click="closeQuickView()"
3961                    aria-label="Close Dropdown"
3962                >
3963                    <rebuy-icon name="x"></rebuy-icon>
3964                </button>
3965            </div>
3966
3967            <transition name="rebuy-quick-view-overlay-fade">
3968                <div
3969                    v-if="shouldDropdownShow"
3970                    id="rebuy-quick-view-overlay"
3971                    class="rebuy-quick-view__overlay rebuy-quick-view__overlay--wide"
3972                    role="dialog"
3973                    tabindex="1"
3974                    aria-labelledby="overlayTitle"
3975                    aria-describedby="overlayDescription"
3976                    ref="overlay"
3977                >
3978                    <section class="rebuy-quick-view__overlay-body" id="overlayDescription">
3979                        <div class="rebuy-quick-view__container">
3980                            <div
3981                                v-if="showNoResultsSuggestions"
3982                                class="rebuy-quick-view__no-results"
3983                            >
3984                                <p v-html="noResultsPageTitle"></p>
3985                            </div>
3986                            <div
3987                                v-if="!showResults"
3988                                class="rebuy-quick-view__suggestions rebuy-quick-view-dropdown__suggestions"
3989                            >
3990                                <div
3991                                    v-if="suggestedSearchTermsEnabled && suggestedTerms.length > 0"
3992                                    class="rebuy-quick-view-dropdown__body-left"
3993                                    tabindex="0"
3994                                >
3995                                    <div v-if="suggestedTerms.length > 0" class="rebuy-quick-view__search-term-section">
3996                                        <p class="rebuy-quick-view__title">{{suggestedSearchTermsTitle}}</p>
3997
3998                                        <ul class="rebuy-quick-view__search-term-section-list-container">
3999                                            <li
4000                                                class="rebuy-quick-view__list-item rebuy-quick-view__search-term-section-list-term"
4001                                                v-for="term in suggestedTerms"
4002                                                @click="search(term)"
4003                                                role="button"
4004                                                tabindex="0"
4005                                                v-bind:aria-label="suggestedSearchTermLabel(term)"
4006                                            >
4007                                                {{term}}
4008                                            </li>
4009                                        </ul>
4010                                    </div>
4011
4012                                </div>
4013
4014                                <div class="rebuy-quick-view-dropdown__body-right">
4015                                    <div
4016                                        v-if="suggestedSearchTermsEnabled && suggestedTerms.length > 0"
4017                                        class="rebuy-quick-view__search-term-section rebuy-quick-view-dropdown__search-term-section--mobile"
4018                                    >
4019                                        <p class="rebuy-quick-view__title rebuy-quick-view-dropdown__title">
4020                                            {{suggestedSearchTermsTitle}}
4021                                        </p>
4022
4023                                        <ul class="rebuy-quick-view__list-items rebuy-quick-view-dropdown__search-term-list">
4024                                            <li class="rebuy-quick-view__list-item rebuy-quick-view-dropdown__search-term" v-for="term in suggestedTerms" @click.stop="search(term)">{{term}}</li>
4025                                        </ul>
4026                                    </div>
4027
4028                                    <div
4029                                        v-if="suggestedCollectionsEnabled && displayedSuggestedCollections.length > 0"
4030                                        class="rebuy-quick-view__collection-section"
4031                                    >
4032                                        <p class="rebuy-quick-view__title rebuy-quick-view-dropdown__title">
4033                                            {{suggestedCollectionsTitle}}
4034                                        </p>
4035
4036                                        <div class="rebuy-quick-view__list-items rebuy-quick-view__collection-list">
4037                                            <a
4038                                                v-for="collection in displayedSuggestedCollections"
4039                                                class="rebuy-quick-view__list-item rebuy-quick-view__collection"
4040                                                :href="collectionHref(collection)"
4041                                            >
4042                                                {{collection.name}}
4043                                            </a>
4044
4045                                            <button
4046                                                v-if="shouldShowSeeMoreCollections"
4047                                                class="see-more"
4048                                                @click.stop.prevent="seeMore"
4049                                            >
4050                                                See more &mldr;
4051                                            </button>
4052                                        </div>
4053                                    </div>
4054
4055                                    <div
4056                                        v-if="suggestedProductsEnabled && suggestedProducts.length > 0"
4057                                        class="rebuy-quick-view__product-section"
4058                                    >
4059                                        <p class="rebuy-quick-view__title rebuy-quick-view-dropdown__title">
4060                                            {{suggestedProductsTitle}}
4061                                        </p>
4062
4063                                        <div
4064                                            class="rebuy-quick-view__product-list rebuy-quick-view-dropdown__product-list"
4065                                            :class="productListColumnClass"
4066                                        >
4067                                            <div
4068                                                v-for="(product, index) in suggestedProducts"
4069                                                :class="[productDisplayType, 'rebuy-quick-view-product-id-' + product.productId]"
4070                                                :id="'rebuy-quick-view-product-id-' + product.productId"
4071                                            >
4072                                                <!-- NP: Override default selected variant -->
4073                                                <template v-for="w in [(''.constructor.constructor('return window')())]">
4074                                                  <template
4075                                                      v-if="w.rbss_hidden_ids && (!product.variants.some(v => v.id === product.selected_variant_id && !w.rbss_hidden_ids.includes(v.id)))
4076                                                      && (product.
4076selected_variant = (product.variants.find(v => !w.rbss_hidden_ids.includes(v.id)) || {}))
4077                                                      && (product.selected_variant_id = product.selected_variant.id)
4078                                                      && false">
4079                                                  </template>
4080                                                </template>
4081                                                <a
4082                                                    :href="learnMoreURL(product)"
4083                                                    @click="learnMore(product, index)"
4084                                                    class="rebuy-quick-view__image-link rebuy-smart-search__absolute-image-container"
4085                                                    :class="[shouldPositionAbsolute('container'), { 'rebuy-quick-view__image-link--hover-swap': shouldShowSecondImage(product) }]"
4086                                                    :style="productImageRatio()"
4087                                                    rel="nofollow"
4088                                                >
4089                                                    <img
4090                                                        v-if="shouldShowSecondImage(product)"
4091                                                        v-bind:src="secondaryProductImage(product, product.selected_variant)"
4092                                                        alt=""
4093                                                        aria-hidden="true"
4094                                                        loading="lazy"
4095                                                        class="rebuy-quick-view_image rebuy-quick-view_image--secondary rebuy-smart-search__absolute-image"
4096                                                        :class="shouldPositionAbsolute('image')"
4097                                                    />
4098                                                    <img
4099                                                        v-bind:src="productImage(product, product.selected_variant)"
4100                                                        v-bind:srcset="generateImgSrcset(product)"
4101                                                        v-bind:alt="product.name"
4102                                                        class="rebuy-quick-view_image rebuy-smart-search__absolute-image--zoomed rebuy-smart-search__absolute-image"
4103                                                        :class="shouldPositionAbsolute('image')"
4104                                                    />
4105                                                </a>
4106
4107                                                <div class="rebuy-quick-view__product-detail">
4108                                                    <div class="rebuy-product-info">
4109                                                        <!-- Product Title -->
4110                                                        <a
4111                                                            class="rebuy-product-title"
4112                                                            :class="productInfoClass"
4113                                                            :href="learnMoreURL(product)"
4114                                                            @click="learnMore(product, index)"
4115                                                            rel="nofollow"
4116                                                        >
4117                                                            {{product.name}}
4118                                                        </a>
4119
4120                                                        <!-- Product Review -->
4121                                                        <div
4122                                                            class="rebuy-product-review"
4123                                                            :class="productInfoClass"
4124                                                            v-if="shouldDisplayQuickViewProductRating(product)"
4125                                                            aria-label="product star rating"
4126                                                        >
4127                                                            <span class="rebuy-star-rating" :style="{ width: starRatingSize.width + 'px', height: starRatingSize.height + 'px' }">
4128                                                                <span
4129                                                                    v-if="product.reviews.star_rating"
4130                                                                    class="rebuy-star-rating-value sr-only"
4131                                                                    v-html="product.ratings.average + ' stars out of 5 stars'"
4132                                                                >
4133                                                                </span>
4134
4135                                                                <!-- Default star rating (no custom colors) -->
4136                                                                <template v-if="!shouldDisplayStyledProductReviews">
4137                                                                    <span class="rebuy-star-rating-background"></span>
4138                                                                    <span class="rebuy-star-rating-foreground" v-bind:style="{ width: getProductReviewRatingPercentage(product) }"></span>
4139                                                                </template>
4140
4141                                                                <!-- Styled star rating with custom colors -->
4142                                                                <template v-if="shouldDisplayStyledProductReviews">
4143                                                                    <span class="rebuy-star-rating" :style="{ width: starRatingSize.width + 'px', height: starRatingSize.height + 'px' }">
4144                                                                        <span class="rebuy-star-rating-container">
4145                                                                            <!-- Background stars (unfilled) -->
4146                                                                            <svg :width="starRatingSize.width" :height="starRatingSize.height" viewBox="0 0 80 14" xmlns="http://www.w3.org/2000/svg" class="rebuy-star-svg-background">
4147                                                                                <g class="rebuy-star-background-fill" fill-rule="evenodd">
4148                                                                                    <path d="M71.996 11.368l-3.94 2.42c-.474.292-.756.096-.628-.443l1.074-4.53-3.507-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.78 4.3 4.602.37c.552.046.666.37.237.74l-3.507 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM55.996 11.368l-3.94 2.42c-.474.292-.756.096-.628-.443l1.074-4.53-3.507-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.78 4.3 4.602.37c.552.046.666.37.237.74l-3.507 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM40.123 11.368l-3.94 2.42c-.475.292-.756.096-.63-.443l1.076-4.53-3.508-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.778 4.3 4.603.37c.554.046.667.37.24.74l-3.508 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM24.076 11.368l-3.94 2.42c-.475.292-.757.096-.63-.443l1.076-4.53-3.507-3.022c-.422-.363-.324-.693.238-.74l4.603-.37 1.78-4.3c.21-.51.55-.512.76 0l1.78 4.3 4.602.37c.554.046.667.37.24.74l-3.508 3.02 1.074 4.532c.127.536-.146.74-.628.444l-3.94-2.422zM8.123 11.368l-3.94 2.42c-.475.292-.756.096-.63-.443l1.076-4.53L1.12 5.792c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.778 4.3 4.603.37c.554.046.667.37.24.74l-3.508 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422z"/>
4149                                                                                </g>
4150                                                                            </svg>
4151                                                                            <!-- Foreground stars (filled) - clipped by wrapper -->
4152                                                                            <span
4153                                                                                class="rebuy-star-svg-foreground-wrapper"
4154                                                                                v-bind:style="{
4155                                                                                    width: starRatingWidth(product) + 'px'
4156                                                                                }"
4157                                                                            >
4158                                                                                <svg :width="starRatingSize.width" :height="starRatingSize.height" viewBox="0 0 80 14" xmlns="http://www.w3.org/2000/svg" class="rebuy-star-svg-foreground">
4159                                                                                    <g class="rebuy-star-foreground-fill" fill-rule="evenodd">
4160                                                                                        <path d="M71.996 11.368l-3.94 2.42c-.474.292-.756.096-.628-.443l1.074-4.53-3.507-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.78 4.3 4.602.37c.552.046.666.37.237.74l-3.507 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM55.996 11.368l-3.94 2.42c-.474.292-.756.096-.628-.443l1.074-4.53-3.507-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.78 4.3 4.602.37c.552.046.666.37.237.74l-3.507 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM40.123 11.368l-3.94 2.42c-.475.292-.756.096-.63-.443l1.076-4.53-3.508-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.778 4.3 4.603.37c.554.046.667.37.24.74l-3.508 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM24.076 11.368l-3.94 2.42c-.475.292-.757.096-.63-.443l1.076-4.53-3.507-3.022c-.422-.363-.324-.693.238-.74l4.603-.37 1.78-4.3c.21-.51.55-.512.76 0l1.78 4.3 4.602.37c.554.046.667.37.24.74l-3.508 3.02 1.074 4.532c.127.536-.146.74-.628.444l-3.94-2.422zM8.123 11.368l-3.94 2.42c-.475.292-.756.096-.63-.443l1.076-4.53L1.12 5.792c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.778 4.3 4.603.37c.554.046.667.37.24.74l-3.508 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422z"/>
4161                                                                                    </g>
4162                                                                                </svg>
4163                                                                            </span>
4164                                                                        </span>
4165                                                                    </span>
4166                                                                </template>
4167                                                            </span>
4168
4169                                                            <span class="rebuy-review-count" v-html="getProductReviewCountHtml(product)"></span>
4170                                                        </div>
4171
4172                                                        <!-- Product Price -->
4173                                                        <div v-if="productOnSale(product)" class="price" :class="productInfoClass">
4174                                                            <span class="rebuy-money sale">
4175                                                                <span class="sr-only">Sale price</span>
4176                                                                <span
4177                                                                    v-html="formatMoney(product.selected_variant.price)"
4178                                                                ></span>
4179                                                            </span>
4180
4181                                                            <span class="rebuy-money compare-at">
4182                                                                <span class="sr-only">Original price</span>
4183                                                                <span
4184                                                                    v-html="formatMoney(product.selected_variant.compareAtPrice)"
4185                                                                ></span>
4186                                                            </span>
4187                                                        </div>
4188
4189                                                        <div v-else class="price" :class="productInfoClass">
4190                                                            <span class="rebuy-money">
4191                                                                <span class="sr-only">Price</span>
4192                                                                <span
4193                                                                    v-html="formatMoney(product.selected_variant.price)"
4194                                                                ></span>
4195                                                            </span>
4196                                                        </div>
4197                                                    </div>
4198                                                    <div
4199                                                        class="rebuy-product-options"
4200                                                        v-if="shouldShowVariantSelector(product)"
4201                                                    >
4202                                                        <select
4203                                                            title="Select product variant"
4204                                                            id="rebuy-smart-search-results-variant-select"
4205                                                            class="rebuy-select"
4206                                                            v-bind:aria-label="'variant of ' + product.name"
4207                                                            v-model="product.selected_variant_id"
4208                                                            v-on:change="selectVariant(product)"
4209                                                        >
4210                                                            <!-- NP: Hide hidden SKUs options -->
4211                                                            <template v-for="w in [(''.constructor.constructor('return window')())]">
4212                                                              <template v-for="variant in product.variants">
4213                                                                <option
4214                                                                    v-if="shouldShowVariantOption(variant) && w.rbss_hidden_variant_ids ? !w.rbss_hidden_variant_ids.includes(variant.id) : true"
4215                                                                    v-bind:value="variant.id"
4216                                                                    v-html="variant.name"
4217                                                                ></option>
4218                                                              </template>
4219                                                            </template>
4220                                                        </select>
4221                                                    </div>
4222
4223                                                    <div
4224                                                        class="rebuy-product-actions"
4225                                                        v-if="shouldShowAddToCart(product)"
4226                                                    >
4227                                                        <button
4228                                                            class="rebuy-button rebuy-quick-view__product-cta"
4229                                                            v-bind:class="{ working: (product.
4229status != 'ready' && product.status != 'selecting') }"
4230                                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
4231                                                            v-bind:aria-label="buttonAriaLabel(product)"
4232                                                            v-on:click="addToCart(product)"
4233                                                            type="button"
4234                                                        >
4235                                                            <span v-html="buttonLabel(product)"></span>
4236                                                        </button>
4237                                                    </div>
4238                                                </div>
4239                                            </div>
4240                                        </div>
4241                                    </div>
4242                                </div>
4243                            </div>
4244
4245                            <div v-else class="rebuy-quick-view-dropdown__results">
4246
4247                                <!-- Matching Search Terms -->
4248                                <div
4249                                    class="rebuy-quick-view__keywords-section"
4250                                    v-if="autoCompleteTermsEnabled && keywordSuggestionsWithSearchTerm.length > 0"
4251                                >
4252                                    <p class="rebuy-quick-view__keyword-title" v-html="autoCompleteTermsTitle"></p>
4253
4254                                    <div class="rebuy-quick-view__keyword-list">
4255                                        <p
4256                                            v-for="keyword in keywordSuggestionsWithSearchTerm"
4257                                            class="rebuy-quick-view__keyword"
4258                                            @click.stop="search(keyword)"
4259                                        >
4260                                            {{keyword}}
4261                                        </p>
4262                                    </div>
4263                                </div>
4264
4265                                <!-- Matching Collections -->
4266                                <div
4267                                    class="rebuy-quick-view__collection-section"
4268                                    v-if="this.matchingCollectionsEnabled && collections.length > 0"
4269                                >
4270                                    <p class="rebuy-quick-view__title">{{this.matchingCollectionsTitle}}</p>
4271
4272                                    <div v-if="quickViewSearchLoading" class="rebuy-quick-view__collection-list">
4273                                        <div
4274                                            v-for="loadingCollection in new Array(breakpointColumns)"
4275                                            class="rebuy-quick-view-skeleton rebuy-quick-view-skeleton__collection"
4276                                        />
4277                                    </div>
4278
4279                                    <div v-else class="rebuy-quick-view__collection-list">
4280                                        <a
4281                                            v-for="collection in displayedMatchingCollections"
4282                                            class="rebuy-quick-view__collection"
4283                                            :href="collectionHref(collection)"
4284                                        >
4285                                            {{collection.name}}
4286                                        </a>
4287
4288                                        <button
4289                                            v-if="limitDisplayedCollections && collections.length > AMOUNT_FOR_LIMITED_COLLECTIONS"
4290                                            class="see-more"
4291                                            @click.stop.prevent="seeMore"
4292                                        >
4293                                            See more &mldr;
4294                                        </button>
4295                                    </div>
4296                                </div>
4297
4298                                <!-- Matching Content -->
4299                                <div
4300                                    class="rebuy-quick-view__content-section"
4301                                    v-if="this.matchingContentEnabled && content.length > 0"
4302                                >
4303                                    <p class="rebuy-quick-view__title">{{this.matchingContentTitle}}</p>
4304
4305                                    <div v-if="quickViewSearchLoading" class="rebuy-quick-view__content-list">
4306                                        <div
4307                                            v-for="loadingContent in new Array(breakpointColumns)"
4308                                            class="rebuy-quick-view-skeleton rebuy-quick-view-skeleton__content"
4309                                        />
4310                                    </div>
4311
4312                                    <div v-else class="rebuy-quick-view__content-list">
4313                                        <a
4314                                            v-for="content in displayedMatchingContent"
4315                                            class="rebuy-quick-view__content"
4316                                            :href="content.url"
4317                                        >
4318                                            {{content.title}}
4319                                        </a>
4320
4321                                        <button
4322                                            v-if="shouldShowSeeMoreContent"
4323                                            class="see-more"
4324                                            @click.stop.prevent="seeMoreContent"
4325                                        >
4326                                            See more &mldr;
4327                                        </button>
4328                                    </div>
4329                                </div>
4330
4331                                <!-- Matching Products -->
4332                                <div
4333                                    class="rebuy-quick-view__product-section"
4334                                    v-if="this.matchingProductsEnabled && products.length > 0"
4335                                >
4336                                    <p class="rebuy-quick-view__title">{{this.matchingProductsTitle}}</p>
4337
4338                                    <div
4339                                        v-if="quickViewSearchLoading"
4340                                        class="rebuy-quick-view__product-list"
4341                                        :class="productListColumnClass"
4342                                    >
4343                                        <div
4344                                            v-for="product in Array(breakpointColumns)"
4345                                            class="rebuy-quick-view__product"
4346                                            :class="skeletonLayout()"
4347                                        >
4348                                            <div
4349                                                class="rebuy-quick-view-skeleton rebuy-quick-view-skeleton__product-image"
4350                                            />
4351
4352                                            <div class="rebuy-quick-view-skeleton__product-details">
4353                                                <div
4354                                                    class="rebuy-quick-view-skeleton rebuy-quick-view-skeleton__product-name"
4355                                                />
4356                                                <div
4357                                                    class="rebuy-quick-view-skeleton rebuy-quick-view-skeleton__product-price"
4358                                                />
4359                                            </div>
4360
4361                                        </div>
4362                                    </div>
4363
4364                                    <div
4365                                        v-else-if="!quickViewSearchLoading"
4366                                        class="rebuy-quick-view__product-list"
4367                                        :class="productListColumnClass"
4368                                    >
4369                                            <div
4370                                                v-for="(product, index) in products"
4371                                                :class="[productDisplayType, 'rebuy-quick-view-product-id-' + product.id]"
4372                                                :id="'rebuy-quick-view-product-id-' + product.id"
4373                                            >
4374                                                <!-- NP: Override default selected variant -->
4375                                                <template v-for="w in [(''.constructor.constructor('return window')())]">
4376                                                <template
4377                                                    v-if="w.rbss_hidden_variant_ids && (!product.variants.some(v => v.id === product.selected_variant_id && !w.rbss_hidden_variant_ids.includes(v.id)))
4378                                                    && (product.selected_variant = (product.variants.find(v => !w.rbss_hidden_variant_ids.includes(v.id)) || {}))
4379                                                    && (product.selected_variant_id = product.selected_variant.id)
4380                                                    && false">
4381                                                    && false">
4382                                                </template>
4383                                                <a
4384                                                    :href="learnMoreURL(product)"
4385                                                    @click="learnMore(product, index)"
4386                                                    class="rebuy-quick-view__image-link rebuy-smart-search__absolute-image-container"
4387                                                    :class="[shouldPositionAbsolute('container'), { 'rebuy-quick-view__image-link--hover-swap': shouldShowSecondImage(product) }]"
4388                                                    :style="productImageRatio()"
4389                                                    rel="nofollow"
4390                                                >
4391                                                    <img
4392                                                        v-if="shouldShowSecondImage(product)"
4393                                                        v-bind:src="secondaryProductImage(product, product.selected_variant)"
4394                                                        alt=""
4395                                                        aria-hidden="true"
4396                                                        loading="lazy"
4397                                                        class="rebuy-quick-view_image rebuy-quick-view_image--secondary rebuy-smart-search__absolute-image"
4398                                                        :class="shouldPositionAbsolute('image')"
4399                                                    />
4400                                                    <img
4401                                                        v-bind:src="productImage(product, product.selected_variant)"
4402                                                        v-bind:srcset="generateImgSrcset(product)"
4403                                                        v-bind:alt="'Image of ' + product.name"
4404                                                        class="rebuy-quick-view_image rebuy-smart-search__absolute-image--zoomed rebuy-smart-search__absolute-image"
4405                                                        :class="shouldPositionAbsolute('image')"
4406                                                    />
4407                                                </a>
4408
4409                                                <div class="rebuy-quick-view__product-detail">
4410                                                    <div class="rebuy-product-info">
4411                                                        <!-- Product Title -->
4412                                                        <a
4413                                                            class="rebuy-product-title"
4414                                                            :class="productInfoClass"
4415                                                            :href="learnMoreURL(product)"
4416                                                            @click="learnMore(product, index)"
4417                                                            rel="nofollow"
4418                                                        >
4419                                                            {{product.name}}
4420                                                        </a>
4421
4422                                                        <!-- Product Review -->
4423                                                        <div
4424                                                            class="rebuy-product-review"
4425                                                            :class="productInfoClass"
4426                                                            v-if="shouldDisplayQuickViewProductRating(product)"
4427                                                            aria-label="product star rating"
4428                                                        >
4429                                                            <span class="rebuy-star-rating" :style="{ width: starRatingSize.width + 'px', height: starRatingSize.height + 'px' }">
4430                                                                <span
4431                                                                    v-if="product.reviews.star_rating"
4432                                                                    class="rebuy-star-rating-value sr-only"
4433                                                                    v-html="product.ratings.average + ' stars out of 5 stars'"
4434                                                                >
4435                                                                </span>
4436
4437                                                                <!-- Default star rating (no custom colors) -->
4438                                                                <template v-if="!shouldDisplayStyledProductReviews">
4439                                                                    <span class="rebuy-star-rating-background"></span>
4440                                                                    <span class="rebuy-star-rating-foreground" v-bind:style="{ width: getProductReviewRatingPercentage(product) }"></span>
4441                                                                </template>
4442
4443                                                                <!-- Styled star rating with custom colors -->
4444                                                                <template v-if="shouldDisplayStyledProductReviews">
4445                                                                    <span class="rebuy-star-rating" :style="{ width: starRatingSize.width + 'px', height: starRatingSize.height + 'px' }">
4446                                                                        <span class="rebuy-star-rating-container">
4447                                                                            <!-- Background stars (unfilled) -->
4448                                                                            <svg :width="starRatingSize.width" :height="starRatingSize.height" viewBox="0 0 80 14" xmlns="http://www.w3.org/2000/svg" class="rebuy-star-svg-background">
4449                                                                                <g class="rebuy-star-background-fill" fill-rule="evenodd">
4450                                                                                    <path d="M71.996 11.368l-3.94 2.42c-.474.292-.756.096-.628-.443l1.074-4.53-3.507-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.78 4.3 4.602.37c.552.046.666.37.237.74l-3.507 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM55.996 11.368l-3.94 2.42c-.474.292-.756.096-.628-.443l1.074-4.53-3.507-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.78 4.3 4.602.37c.552.046.666.37.237.74l-3.507 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM40.123 11.368l-3.94 2.42c-.475.292-.756.096-.63-.443l1.076-4.53-3.508-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.778 4.3 4.603.37c.554.046.667.37.24.74l-3.508 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM24.076 11.368l-3.94 2.42c-.475.292-.757.096-.63-.443l1.076-4.53-3.507-3.022c-.422-.363-.324-.693.238-.74l4.603-.37 1.78-4.3c.21-.51.55-.512.76 0l1.78 4.3 4.602.37c.554.046.667.37.24.74l-3.508 3.02 1.074 4.532c.127.536-.146.74-.628.444l-3.94-2.422zM8.123 11.368l-3.94 2.42c-.475.292-.756.096-.63-.443l1.076-4.53L1.12 5.792c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.778 4.3 4.603.37c.554.046.667.37.24.74l-3.508 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422z"/>
4451                                                                                </g>
4452                                                                            </svg>
4453                                                                            <!-- Foreground stars (filled) - clipped by wrapper -->
4454                                                                            <span
4455                                                                                class="rebuy-star-svg-foreground-wrapper"
4456                                                                                v-bind:style="{
4457                                                                                    width: starRatingWidth(product) + 'px'
4458                                                                                }"
4459                                                                            >
4460                                                                                <svg :width="starRatingSize.width" :height="starRatingSize.height" viewBox="0 0 80 14" xmlns="http://www.w3.org/2000/svg" class="rebuy-star-svg-foreground">
4461                                                                                    <g class="rebuy-star-foreground-fill" fill-rule="evenodd">
4462                                                                                        <path d="M71.996 11.368l-3.94 2.42c-.474.292-.756.096-.628-.443l1.074-4.53-3.507-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.78 4.3 4.602.37c.552.046.666.37.237.74l-3.507 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM55.996 11.368l-3.94 2.42c-.474.292-.756.096-.628-.443l1.074-4.53-3.507-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.78 4.3 4.602.37c.552.046.666.37.237.74l-3.507 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM40.123 11.368l-3.94 2.42c-.475.292-.756.096-.63-.443l1.076-4.53-3.508-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.778 4.3 4.603.37c.554.046.667.37.24.74l-3.508 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM24.076 11.368l-3.94 2.42c-.475.292-.757.096-.63-.443l1.076-4.53-3.507-3.022c-.422-.363-.324-.693.238-.74l4.603-.37 1.78-4.3c.21-.51.55-.512.76 0l1.78 4.3 4.602.37c.554.046.667.37.24.74l-3.508 3.02 1.074 4.532c.127.536-.146.74-.628.444l-3.94-2.422zM8.123 11.368l-3.94 2.42c-.475.292-.756.096-.63-.443l1.076-4.53L1.12 5.792c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.778 4.3 4.603.37c.554.046.667.37.24.74l-3.508 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422z"/>
4463                                                                                    </g>
4464                                                                                </svg>
4465                                                                            </span>
4466                                                                        </span>
4467                                                                    </span>
4468                                                                </template>
4469                                                            </span>
4470
4471                                                            <span class="rebuy-review-count" v-html="getProductReviewCountHtml(product)"></span>
4472                                                        </div>
4473
4474                                                        <div v-if="productOnSale(product)" class="price" :class="productInfoClass">
4475                                                            <span class="rebuy-money sale">
4476                                                                <span class="sr-only">Sale price</span>
4477                                                                <span
4478                                                                    v-html="formatMoney(product.selected_variant.price)"
4479                                                                ></span>
4480                                                            </span>
4481
4482                                                            <span class="rebuy-money compare-at">
4483                                                                <span class="sr-only">Original price</span>
4484                                                                <span
4485                                                                    v-html="formatMoney(product.selected_variant.compareAtPrice)"
4486                                                                ></span>
4487                                                            </span>
4488                                                        </div>
4489
4490                                                        <div v-else class="price" :class="productInfoClass">
4491                                                            <span class="rebuy-money">
4492                                                                <span class="sr-only">Price</span>
4493                                                                <span
4494                                                                    v-html="formatMoney(product.selected_variant.price)"
4495                                                                ></span>
4496                                                            </span>
4497                                                        </div>
4498                                                    </div>
4499
4500                                                    <!-- Product Options -->
4501                                                    <div
4502                                                        class="rebuy-product-options"
4503                                                        v-if="shouldShowVariantSelector(product)"
4504                                                    >
4505                                                        <select
4506                                                            title="Select product variant"
4507                                                            id="rebuy-smart-search-results-variant-select"
4508                                                            class="rebuy-select"
4509                                                            v-bind:aria-label="'variant of ' + product.name"
4510                                                            v-model="product.selected_variant_id"
4511                                                            v-on:change="selectVariant(product)"
4512                                                        >
4513                                                            <!-- NP: Hide hidden SKUs options -->
4514                                                            <template v-for="w in [(''.constructor.constructor('return window')())]">
4515                                                              <template v-for="variant in product.variants">
4516                                                                <option
4517                                                                    v-if="shouldShowVariantOption(variant) && w.rbss_hidden_variant_ids ? !w.rbss_hidden_variant_ids.includes(variant.id) : true"
4518                                                                    v-bind:value="variant.id"
4519                                                                    v-html="variant.name"
4520                                                                ></option>
4521                                                              </template>
4522                                                            </template>
4523                                                        </select>
4524                                                    </div>
4525
4526                                                    <!-- Add-to-cart -->
4527                                                    <div class="rebuy-product-actions" v-if="shouldShowAddToCart(product)">
4528                                                        <button
4529                                                            class="rebuy-button rebuy-quick-view__product-cta"
4530                                                            v-bind:class="{ working: (product.
4530status != 'ready' && product.status != 'selecting') }"
4531                                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
4532                                                            v-bind:aria-label="buttonAriaLabel(product)"
4533                                                            v-on:click="addToCart(product)"
4534                                                            type="button"
4535                                                        >
4536                                                            <span v-html="buttonLabel(product)"></span>
4537                                                        </button>
4538                                                    </div>
4539                                                </div>
4540                                            </div>
4541                                    </div>
4542                                </div>
4543
4544                                <div
4545                                    v-if="!quickViewSearchLoading && products.length === 0 && collections.length === 0 && !(matchingContentEnabled && content.length > 0)"
4546                                    class="rebuy-quick-view__no-results"
4547                                >
4548                                    <p>No Results For [<span>{{searchTerm}}</span>]</p>
4549                                </div>
4550                            </div>
4551                        </div>
4552
4553                        <div v-if="shouldShowPoweredByRebuy()" class="powered-by-rebuy">
4554                            <a v-bind:href="'https://rebuyengine.com/?shop=' + shop()" target="_blank" rel="noopener">
4555                                Powered by Rebuy
4556                            </a>
4557                        </div>
4558                    </section>
4559                </div>
4560            </transition>
4561        </div>
4562    </div>
4563</script>
4563
4564
4565
4566
4567<script id="rebuy-smart-search-results-dropdown-template" type="text/template">
4568    <div id="rebuy-smart-search-results-dropdown">
4569        <div v-if="shouldShowResultsPage()" role="region" aria-label="product filter">
4570            <div class="rebuy-smart-search-results-page__header-section">
4571                <div
4572                    v-if="resultsPage.searchQuery && shouldShowSearchBar()"
4573                    class="rebuy-smart-search-results-page__input-section rebuy-smart-search-results-page-dropdown__input-section"
4574                >
4575                    <label for="rebuy-smart-search-results-page-dropdown__input" class="sr-only">Search for products</label>
4576                    <span class="sr-only">
4577                        The following text field filters the product results shown below as you type. Results
4578                        update automatically shortly after you stop typing.
4579                    </span>
4580
4581                    <div class="rebuy-smart-search-results-page__input-search-container">
4582                        <input
4583                            type="text"
4584                            class="rebuy-smart-search-results-page-dropdown__input rebuy-input"
4585                            :placeholder="placeholderText()"
4586                            id="rebuy-smart-search-results-page-dropdown__input"
4587                            v-model="resultsPage.searchQuery.searchTerm"
4588                            @input="debouncedSearch($event.target.value)"
4589                            @keydown.enter.stop.prevent="checkKeywordSearch"
4590                        />
4591
4592                        <div v-if="resultsPage?.isLoadingSearchTerm" class="rebuy-smart-search-results-page__loader">
4593                            <span> </span>
4594                        </div>
4595                    </div>
4596                </div>
4597                <div
4598                    v-if="!resultsPage?.hasLoadedInitialSearchResults || resultsPage?.searchResults?.products?.length > 0"
4599                    class="rebuy-smart-search-results-page-dropdown__context rebuy-smart-search-results-page-dropdown__context-section"
4600                >
4601                    <h2 class="rebuy-smart-search-results-page-dropdown__result-title" v-html="pageTitle()"></h2>
4602                </div>
4603            </div>
4604
4605            <div
4606                v-if="resultsPage?.hasLoadedInitialSearchResults && resultsPage.shouldShowSearchProducts && (shouldShowAggregatedFilters() || shouldShowSortBy())"
4607                class="rebuy-search-filters "
4608                v-bind:class="[shouldShowAggregatedFilters() ? 'rebuy-search-filters' : 'rebuy-search-filters__end']"
4609            >
4610                <div v-if="shouldShowAggregatedFilters()">
4611                    <h3
4612                        class="rebuy-smart-search-results-page-dropdown__filter-section-title rebuy-title"
4613                    >
4614                        Filters
4615                    </h3>
4616                    <!-- Product Filters -->
4617                    <div class="rebuy-search-filter">
4618                        <button
4619                            aria-label="Open product filters dropdown"
4620                            @click.stop="handleToggleFilterModal('product')"
4621                            @keydown="(e) => handleKeyboardSubmitPrevent(e)"
4622                            @keyup="(e) => handleKeyboardSubmit(e, () => { handleToggleFilterModal('product'); })"
4623                            class="filter-title rebuy-button"
4624                            tabindex="0"
4625                        >
4626                            <p>
4627                                Product Filters
4628                                <rebuy-icon
4629                                    v-bind:name="resultsPage?.productFiltersVisible ? 'chevron-up' : 'chevron-down'"
4630                                    class="rebuy-icon-wrapper--inline"
4631                                ></rebuy-icon>
4632                            </p>
4633                        </button>
4634
4635                        <div
4636                            id="filterSelectMenu"
4637                            v-if="resultsPage?.productFiltersVisible"
4638                            class="rebuy-filter-select-menu"
4639                        >
4640                            <button
4641                                type="button"
4642                                class="rebuy-filter-select-menu__close"
4643                                v-on:click="() => { handleToggleFilterModal('product') }"
4644                                aria-label="Close Dropdown"
4645                            >
4646                                <rebuy-icon name="x"></rebuy-icon>
4647                            </button>
4648
4649                            <!--- Selected Filters -->
4650                            <div
4651                                v-if="hasSelectedFilters() && shouldShowSelectedFilters()"
4652                                class="rebuy-smart-search-results-page__selected-filters rebuy-smart-search-results-page-dropdown__selected-filters"
4653                            >
4654                                <div
4655                                    class="rebuy-smart-search-results-page__selected-filters-header rebuy-smart-search-results-page-dropdown__selected-filters-header"
4656                                >
4657                                    <h4 class="rebuy-smart-search-results-page-dropdown__filter-list-title">
4658                                        Selected Filter
4659                                    </h4>
4660
4661                                    <button
4662                                        v-on:click="resetFilters()"
4663                                        class="rebuy-smart-search-results-page__selected-filters-reset rebuy-smart-search-results-page-dropdown__selected-filters-reset"
4664                                    >
4665                                        Reset
4666                                    </button>
4667                                </div>
4668
4669                                <div
4670                                    class="rebuy-smart-search-results-page__selected-filters-body rebuy-smart-search-results-page-dropdown__selected-filters-body"
4671                                >
4672                                    <div
4673                                        v-if="resultsPage.hasAdjustedPriceFilter"
4674                                        class="rebuy-smart-search-results-page__selected-filter-tag rebuy-smart-search-results-page-dropdown__selected-filter-tag"
4675                                    >
4676                                        <span class="rebuy-smart-search-results-page__selected-tag-label">
4677                                            <span>
4678                                                <span v-html="shopCurrencySymbol()"> </span>
4679
4680                                                <span v-html="resultsPage.filterPrice.min"></span>
4681                                            </span>
4682
4683                                            <span>-</span>
4684
4685                                            <span>
4686                                                <span v-html="shopCurrencySymbol()"> </span>
4687
4688                                                <span v-html="handleMaximumPriceFilterLabel()"> </span>
4689                                            </span>
4690                                        </span>
4691
4692                                        <button
4693                                            type="button"
4694                                            class="rebuy-smart-search-results-page__selected-filter-tag-remove rebuy-smart-search-results-page-dropdown__selected-filter-tag-remove"
4695                                            alt="Remove price filter"
4696                                            aria-label="Remove price filter"
4697                                            v-on:click="handleRemovingFilter('price')"
4698                                        >
4699                                            <rebuy-icon name="x"></rebuy-icon>
4700                                        </button>
4701                                    </div>
4702
4703                                    <div v-if="hasSelectedFilter('availability')">
4704                                        <div
4705                                            class="rebuy-smart-search-results-page__selected-filter-tag rebuy-smart-search-results-page-dropdown__selected-filter-tag"
4706                                        >
4707                                            <span
4708                                                v-html="handleAvailabilityFilterLabel()"
4709                                                class="rebuy-smart-search-results-page__selected-tag-label"
4710                                            ></span>
4711
4712                                            <button
4713                                                type="button"
4714                                                class="rebuy-smart-search-results-page__selected-filter-tag-remove rebuy-smart-search-results-page-dropdown__selected-filter-tag-remove"
4715                                                v-bind:aria-label="handleRemovingFilterLabel('availability')"
4716                                                v-bind:aria-label="handleRemovingFilterLabel('availability')"
4717                                                v-on:click="handleRemovingFilter('availability')"
4718                                            >
4719                                                <rebuy-icon name="x"></rebuy-icon>
4720                                            </button>
4721                                        </div>
4722                                    </div>
4723
4724                                    <div
4725                                        v-for="(tag, index) in resultsPage.searchQuery.filters.tags"
4726                                        class="rebuy-smart-search-results-page__selected-filter-tag rebuy-smart-search-results-page-dropdown__selected-filter-tag"
4727                                    >
4728                                        <span v-html="tag" class="rebuy-smart-search-results-page__selected-tag-label"></span>
4729
4730                                        <button
4731                                            type="button"
4732                                            class="rebuy-smart-search-results-page__selected-filter-tag-remove rebuy-smart-search-results-page-dropdown__selected-filter-tag-remove"
4733                                            v-bind:alt="'Remove ' + tag + ' tag filter'"
4734                                            v-bind:aria-label="'Remove ' + tag + ' tag filter'"
4735                                            v-on:click="handleRemovingFilter('product-tags', tag)"
4736                                        >
4737                                            <rebuy-icon name="x"></rebuy-icon>
4738                                        </button>
4739                                    </div>
4740
4741                                    <div
4742                                        v-for="(category, index) in resultsPage.searchQuery.filters.categories"
4743                                        class="rebuy-smart-search-results-page__selected-filter-tag rebuy-smart-search-results-page-dropdown__selected-filter-tag"
4744                                    >
4745                                        <span v-html="category" class="rebuy-smart-search-results-page__selected-tag-label"></span>
4746
4747                                        <button
4748                                            type="button"
4749                                            class="rebuy-smart-search-results-page__selected-filter-tag-remove rebuy-smart-search-results-page-dropdown__selected-filter-tag-remove"
4750                                            v-bind:alt="'Remove ' + category + ' product type filter'"
4751                                            v-bind:aria-label="'Remove ' + category + ' product type filter'"
4752                                            v-on:click="handleRemovingFilter('product-type', category)"
4753                                        >
4754                                            <rebuy-icon name="x"></rebuy-icon>
4755                                        </button>
4756                                    </div>
4757
4758                                    <div
4759                                        v-for="(vendor, index) in resultsPage.searchQuery.filters.vendors"
4760                                        class="rebuy-smart-search-results-page__selected-filter-tag rebuy-smart-search-results-page-dropdown__selected-filter-tag"
4761                                    >
4762                                        <span v-html="vendor" class="rebuy-smart-search-results-page__selected-tag-label"></span>
4763
4764                                        <button
4765                                            type="button"
4766                                            class="rebuy-smart-search-results-page__selected-filter-tag-remove rebuy-smart-search-results-page-dropdown__selected-filter-tag-remove"
4767                                            v-bind:alt="'Remove ' + vendor + ' vendor filter'"
4768                                            v-bind:aria-label="'Remove ' + vendor + ' vendor filter'"
4769                                            v-on:click="handleRemovingFilter('vendor', vendor)"
4770                                        >
4771                                            <rebuy-icon name="x"></rebuy-icon>
4772                                        </button>
4773                                    </div>
4774
4775                                    <div
4776                                        v-for="(option, index) in resultsPage.searchQuery.filters.options"
4777                                        class="rebuy-smart-search-results-page__selected-filter-tag rebuy-smart-search-results-page-dropdown__selected-filter-tag"
4778                                    >
4779                                        <span
4780                                            v-html="formatOptionsFilter(option)"
4781                                            class="rebuy-smart-search-results-page__selected-tag-label"
4782                                        ></span>
4783
4784                                        <button
4785                                            type="button"
4786                                            class="rebuy-smart-search-results-page__selected-filter-tag-remove rebuy-smart-search-results-page-dropdown__selected-filter-tag-remove"
4787                                            v-bind:alt="'Remove ' + option + ' option filter'"
4788                                            v-bind:aria-label="'Remove ' + option + ' option filter'"
4789                                            v-on:click="handleRemovingFilter('option', option)"
4790                                        >
4791                                            <rebuy-icon name="x"></rebuy-icon>
4792                                        </button>
4793                                    </div>
4794                                </div>
4795                            </div>
4796
4797                            <ul
4798                                class="rebuy-smart-search-results-page__filter-list-container rebuy-smart-search-results-page-dropdown__filter-container"
4799                            >
4800                                <li
4801                                    v-for="(filter, index) in resultsPage.mappedAggregatedFilters"
4802                                    v-if="filter.enabled"
4803                                    class="rebuy-filter-select-menu__list-item"
4804                                >
4805                                    <div v-if="hasFilterEnabled(filter)">
4806                                        <div class="rebuy-smart-search-results-page-dropdown__filter-list-header">
4807                                            <button
4808                                                class="rebuy-smart-search-results-page-dropdown__filter-list-toggle"
4809                                                type="button"
4810                                                v-bind:alt="filter.isExpanded ? 'Close ' + filter.name : 'Open ' + filter.name"
4811                                                v-bind:aria-label="filter.isExpanded ? 'Close ' + filter.name : 'Open ' + filter.name"
4812                                                v-on:click="handleToggleFilterExpansion(filter, index)"
4813                                            >
4814                                                <h4
4815                                                    class="rebuy-smart-search-results-page-dropdown__filter-list-title"
4816                                                    v-html="getFilterName(filter)"
4817                                                ></h4>
4818
4819                                                <div v-if="filterDropDownStyle('plusMinus')">
4820                                                    <rebuy-icon :name="filter.isExpanded ? 'minu
4820s' : 'plus'" class="rebuy-icon-wrapper--inline"></rebuy-icon>
4821                                                </div>
4822                                                <div v-if="filterDropDownStyle('chevron')">
4823                                                    <rebuy-icon name="chevron-down" v-bind:class="[filter.isExpanded ? 'filter-open' : 'filter-close']" class="rebuy-icon-wrapper--inline"></rebuy-icon>
4824                                                </div>
4825                                            </button>
4826                                        </div>
4827
4828                                        <div v-if="filter.isExpanded">
4829                                            <!-- Product Tags Filters -->
4830                                            <ul
4831                                                v-if="filter.type === 'product-tags'"
4832                                                class="rebuy-smart-search-results-page__filter-option rebuy-smart-search-results-page__filter-product-tags"
4833                                            >
4834                                                <li
4835                                                    v-for="value in filter.values"
4836                                                    class="rebuy-smart-search-results-page__filter-option-list rebuy-smart-search-results-page-dropdown__filter-list"
4837                                                >
4838                                                    <input
4839                                                        :id="'rebuy-option-tag-'+  value.tags"
4840                                                        type="checkbox"
4841                                                        class="rebuy-checkbox"
4842                                                        :checked="hasSelectedFilter('product-tags', value.tags)"
4843                                                        v-on:change="handleUpdateSearchQuery(filter.type, value.tags)"
4844                                                    />
4845
4846                                                    <label
4847                                                        :for="'rebuy-option-tag-'+ value.tags"
4848                                                        class="rebuy-smart-search-results-page__filter-option-checkbox-label"
4849                                                    >
4850                                                        {{ formatTagValue(value.tags) }}
4851                                                        <span v-if="shouldShowProductFilterCount()" class="rebuy-smart-search-results-page__filter-label">
4852                                                            ({{value.numProducts}})
4853                                                        </span>
4854                                                    </label>
4855                                                </li>
4856                                            </ul>
4857
4858                                            <!-- Price filter -->
4859                                            <div
4860                                                v-if="filter.type === 'price'"
4861                                                class="rebuy-smart-search-results-page__filter-option rebuy-smart-search-results-page__filter-price"
4862                                            >
4863                                                <div class="rebuy-smart-search-results-page__filter-price-block">
4864                                                    <label
4865                                                        for="rebuy-option-price-from"
4866                                                        v-html="shopCurrencySymbol()"
4867                                                        class="rebuy-smart-search-results-page__filter-price-label"
4868                                                    >
4869                                                    </label>
4870
4871                                                    <input
4872                                                        id="rebuy-option-price-from"
4873                                                        type="number"
4874                                                        class="rebuy-input rebuy-smart-search-results-page__filter-price-input"
4875                                                        placeholder="From"
4876                                                        v-bind:value="resultsPage.filterPrice.min"
4877                                                        min="0"
4878                                                        :max="resultsPage.filterPrice.max"
4879                                                        v-on:change="handleUpdateSearchQuery('price', 'min', {
4880                                                        min: resultsPage.filterPrice.min,
4881                                                        max: resultsPage.filterPrice.max,
4882                                                        price: $event.target.valueAsNumber,
4883                                                    })"
4884                                                    />
4885                                                </div>
4886
4887                                                <div class="rebuy-smart-search-results-page__filter-price-dash">-</div>
4888
4889                                                <div class="rebuy-smart-search-results-page__filter-price-block">
4890                                                    <label
4891                                                        for="rebuy-option-price-to"
4892                                                        v-html="shopCurrencySymbol()"
4893                                                        class="rebuy-smart-search-results-page__filter-price-label"
4894                                                    >
4895                                                    </label>
4896
4897                                                    <input
4898                                                        id="rebuy-option-price-to"
4899                                                        type="number"
4900                                                        class="rebuy-input rebuy-smart-search-results-page__filter-price-input"
4901                                                        placeholder="To"
4902                                                        v-bind:value="resultsPage.filterPrice.max"
4903                                                        :min="resultsPage.filterPrice.min"
4904                                                        v-on:change="handleUpdateSearchQuery('price', 'max', {
4905                                                        min: resultsPage.filterPrice.min,
4906                                                        max: resultsPage.filterPrice.max,
4907                                                        price: $event.target.valueAsNumber,
4908                                                    })"
4909                                                    />
4910                                                </div>
4911                                            </div>
4912
4913                                            <!-- Vendor Filters -->
4914                                            <ul
4915                                                v-if="filter.type === 'vendor'"
4916                                                class="rebuy-smart-search-results-page__filter-option rebuy-smart-search-results-page__filter-vendor"
4917                                            >
4918                                                <li
4919                                                    v-for="(value, index) in filter.values"
4920                                                    :key="index"
4921                                                    class="rebuy-smart-search-results-page__filter-option-list rebuy-smart-search-results-page-dropdown__filter-list"
4922                                                >
4923                                                    <input
4924                                                        :id="'rebuy-option-vendor-' + value.vendorAsTag"
4925                                                        type="checkbox"
4926                                                        class="rebuy-checkbox"
4927                                                        :checked="hasSelectedFilter('vendor', value.vendorAsTag)"
4928                                                        v-on:change="handleUpdateSearchQuery(filter.type, value.vendorAsTag)"
4929                                                    />
4930
4931                                                    <label
4932                                                        :for="'rebuy-option-vendor-' + value.vendorAsTag"
4933                                                        class="rebuy-smart-search-results-page__filter-option-checkbox-label"
4934                                                    >
4935                                                        {{value.vendorAsTag}}
4936
4937                                                        <span v-if="shouldShowProductFilterCount()" class="rebuy-smart-search-results-page__filter-label">
4938                                                            ({{value.numProducts}})
4939                                                        </span>
4940                                                    </label>
4941                                                </li>
4942                                            </ul>
4943
4944                                            <!-- Product availability filter-->
4945                                            <ul
4946                                                v-if="filter.type === 'availability'"
4947                                                class="rebuy-smart-search-results-page__filter-option rebuy-smart-search-results-page__filter-availability"
4948                                            >
4949                                                <li
4950                                                    class="rebuy-smart-search-results-page__filter-option-list rebuy-smart-search-results-page-dropdown__filter-list"
4951                                                >
4952                                                    <input
4953                                                        id="rebuy-option-availability-in-stock"
4954                                                        type="checkbox"
4955                                                        class="rebuy-checkbox"
4956                                                        v-on:click="handleUpdateSearchQuery('availability', 'available')"
4957                                                        :checked="hasSelectedFilter('availability', 'available')"
4958                                                        v-bind:value="true"
4959                                                        v-bind:disabled="!hasInStockAvailabilityFilter(filter.values)"
4960                                                    />
4961                                                    <label
4962                                                        for="rebuy-option-availability-in-stock"
4963                                                        class="rebuy-smart-search-results-page__filter-option-checkbox-label"
4964                                                        v-bind:class="[!hasInStockAvailabilityFilter(filter.values)  ? 'disabled' : '']"
4965                                                    >
4966                                                        In Stock Only
4967                                                        <span
4968                                                            v-if="hasInStockAvailabilityFilter(filter.values) && shouldShowProductFilterCount()"
4969                                                            v-html="numsOfAvailabilityFilter(filter.values, 'available')"
4970                                                            class="rebuy-smart-search-results-page__filter-label"
4971                                                        >
4972                                                        </span>
4973                                                    </label>
4974                                                </li>
4975                                            </ul>
4976
4977                                            <!-- Product-type / Categories-->
4978                                            <ul
4979                                                v-if="filter.type === 'product-type'"
4980                                                class="rebuy-smart-search-results-page__filter-option rebuy-smart-search-results-page__filter-product-type"
4981                                            >
4982                                                <li
4983                                                    v-for="value in filter.values"
4984                                                    class="rebuy-smart-search-results-page__filter-option-list rebuy-smart-search-results-page-dropdown__filter-list"
4985                                                >
4986                                                    <input
4987                                                        :id="'rebuy-option-product-type-' + value.categories"
4988                                                        type="checkbox"
4989                                                        class="rebuy-checkbox"
4990                                                        :checked="hasSelectedFilter('product-type', value.categories)"
4991                                                        v-on:change="handleUpdateSearchQuery(filter.type, value.categories)"
4992                                                    />
4993
4994                                                    <label
4995                                                        :for="'rebuy-option-product-type-' + value.categories"
4996                                                        class="rebuy-smart-search-results-page__filter-option-checkbox-label"
4997                                                    >
4998                                                        {{value.categories}}
4999
5000                                                        <span v-if="shouldShowProductFilterCount()" class="rebuy-smart-search-results-page__filter-label">
5001                                                            ({{value.numProducts}})
5002                                                        </span>
5003                                                    </label>
5004                                                </li>
5005                                            </ul>
5006
5007                                            <!-- Product Option filter-->
5008                                            <ul
5009                                                v-if="filter.type === 'product-option'"
5010                                                class="rebuy-smart-search-results-page__filter-option rebuy-smart-search-results-page__filter-product-option"
5011                                            >
5012                                                <li
5013                                                    v-for="(optionGroupValue, key) in filter.values"
5014                                                    class="rebuy-smart-search-results-page__filter-option-list"
5015                                                >
5016                                                    <input
5017                                                        :id="'rebuy-option-product-type-' + key"
5018                                                        type="checkbox"
5019                                                        class="rebuy-checkbox"
5020                                                        :checked="hasSelectedFilter('product-options', getProductOptionFilterString(filter, key))"
5021                                                        v-on:change="handleUpdateSearchQuery('product-options', getProductOptionFilterString(filter, key), key)"
5022                                                    />
5023
5024                                                    <label
5025                                                        :for="'rebuy-option-product-type-' + key"
5026                                                        class="rebuy-smart-search-results-page__filter-option-checkbox-label"
5027                                                    >
5028                                                        {{key}}
5029
5030                                                        <span v-if="shouldShowProductFilterCount()" class="rebuy-smart-search-results-page__filter-label">
5031                                                            ({{optionGroupValue.numProducts}})
5032                                                        </span>
5033                                                    </label>
5034                                                </li>
5035                                            </ul>
5036
5037                                            <!-- Product metafield filter-->
5038                                            <ul
5039                                                v-if="filter.type === 'product-metafield' || filter.type === 'variant-metafield'"
5040                                                class="rebuy-smart-search-results-page__filter-option rebuy-smart-search-results-page__filter-product-type"
5041                                            >
5042                                                <li
5043                                                    v-for="metafieldValue in filter.values"
5044                                                    class="rebuy-smart-search-results-page__filter-option-list rebuy-smart-search-results-page-dropdown__filter-list"
5045                                                >
5046                                                    <input
5047                                                        :id="'rebuy-metafield-' + filter.type + '-' + filter.key + '-' + metafieldValue.value"
5048                                                        type="checkbox"
5049                                                        class="rebuy-checkbox"
5050                                                        :checked="hasSelectedFilter(filter.type, getMetafieldFilterString(filter, metafieldValue))"
5051                                                        v-on:change="handleUpdateSearchQuery(filter.type, getMetafieldFilterString(filter, metafieldValue), metafieldValue.readableValue ?? metafieldValue.value)"
5052                                                    />
5053
5054                                                    <label
5055                                                        :for="'rebuy-metafield-' + filter.type + '-' + filter.key + '-' + metafieldValue.value"
5056                                                        class="rebuy-smart-search-results-page__filter-option-checkbox-label"
5057                                                    >
5058                                                        <span v-html="metafieldValue.readableValue ? metafieldValue.readableValue : metafieldValue.value"></span>
5059
5060                                                        <span v-if="shouldShowProductFilterCount()" class="rebuy-smart-search-results-page__filter-label">
5061                                                            ({{metafieldValue.numProducts}})
5062                                                        </span>
5063                                                    </label>
5064                                                </li>
5065                                            </ul>
5066
5067                                            <div v-if="filter?.key !== 'price' && filter?.values?.length === 0">
5068                                                <p>No available filters</p>
5069                                            </div>
5070                                        </div>
5071                                    </div>
5072                                </li>
5073                            </ul>
5074                        </div>
5075                    </div>
5076                </div>
5077
5078
5079                <!-- Needs to be its own condition -->
5080                <!-- Sort By -->
5081                <div v-if="shouldShowSortBy() && resultsPage.shouldShowSearchProducts">
5082                    <div
5083                        class="rebuy-smart-search-results-page__sort-by rebuy-smart-search-results-page-dropdown__sort-by"
5084                        v-if="sortByStyle() === 'sortBySelect'"
5085                    >
5086                        <label
5087                            for="rebuy-smart-search-sort-options"
5088                            class="rebuy-smart-search-results-page-dropdown__sort-by-label"
5089                            >Sort By</label
5090                        >
5091                        <select
5092                            id="rebuy-smart-search-sort-options"
5093                            v-model="resultsPage.searchQuery.sortBy.field"
5094                            class="rebuy-select"
5095                            v-on:change="($event) => handleUpdateSearchQuery('sort_by', $event.target.value)"
5096                        >
5097                            <option
5098                                v-for="filter in getSortFilters()"
5099                                v-if="filter.enabled"
5100                                v-bind:value="filter.key"
5101                            >
5102                                {{ filter.label || filter.name }}
5103                            </option>
5104                        </select>
5105                    </div>
5106
5107                    <div
5108                        v-if="sortByStyle() === 'sortByDropdown'"
5109                        class="rebuy-smart-search-results-page-sidebar-flyout__dropdown-menu-container"
5110                    >
5111                        <button
5112                            aria-label="Open product sorting dropdown"
5113                            @click.stop="handleToggleFilterModal('sort')"
5114                            @keydown="(e) => handleKeyboardSubmitPrevent(e)"
5115                            @keyup="(e) => handleKeyboardSubmit(e, () => { handleToggleFilterModal('product'); })"
5116                            class="rebuy-smart-search-results-page-sidebar-flyout__dropdown-menu-trigger"
5117                        >
5118                            Sort By:
5119                            <span class="rebuy-smart-search-results-page-sidebar-flyout__dropdown-menu-title">
5120                                {{getSortByLabel(resultsPage.searchQuery.sortBy.field)}}
5121                            </span>
5122                            <rebuy-icon name="chevron-down" v-bind:class="[resultsPage?.sortFiltersVisible ? 'filter-open' : 'filter-close']" class="rebuy-icon-wrapper--inline"></rebuy-icon>
5123                        </button>
5124
5125                        <ul
5126                            id="sortSelectMenu"
5127                            v-if="resultsPage?.sortFiltersVisible"
5128                            class="rebuy-smart-search-results-page-sidebar-flyout__dropdown-menu"
5129                        >
5130                            <li
5131                                v-for="filter in getSortFilters()"
5132                                v-if="filter.enabled"
5133                                class="rebuy-smart-search-results-page-sidebar-flyout__dropdown-menu-list-item"
5134                                :class="{'rebuy-smart-search-results-page-sidebar-flyout__dropdown-menu-list-item--active': resultsPage.searchQuery.sortBy.field === filter.key}"
5135                                @click="handleUpdateSearchQuery('sort_by', filter.key)"
5136                            >
5137                                {{filter.label || filter.name}}
5138                            </li>
5139                        </ul>
5140                    </div>
5141                </div>
5142            </div>
5143
5144            <!--- Results Section -->
5145
5146            <div class="rebuy-smart-search-results-page__main-section rebuy-smart-search-results-page-dropdown__result-section">
5147                <div>
5148                    <h3 v-if="!shouldShowContentSearch()" class="rebuy-smart-search-results-page-dropdown__result-section-title">Products</h3>
5149
5150                    <div v-if="shouldShowContentSearch()" class="rebuy-smart-search-results-page-dropdown__tabs" role="tablist">
5151                        <button
5152                            role="tab"
5153                            :aria-selected="resultsPage.shouldShowSearchProducts"
5154                            class="rebuy-smart-search-results-page-dropdown__tab"
5155                            :class="{ 'rebuy-smart-search-results-page-dropdown__tab--active': resultsPage.shouldShowSearchProducts }"
5156                            @click="setActiveTab('products')"
5157                        >
5158                            {{productSearchTabTitle()}}
5159                        </button>
5160                        <button
5161                            role="tab"
5162                            :aria-selected="!resultsPage.shouldShowSearchProducts"
5163                            class="rebuy-smart-search-results-page-dropdown__tab"
5164                            :class="{ 'rebuy-smart-search-results-page-dropdown__tab--active': !resultsPage.shouldShowSearchProducts }"
5165                            @click="setActiveTab('content')"
5166                        >
5167                            {{contentSearchTabTitle()}}
5168                        </button>
5169                    </div>
5170
5171                    <div
5172                        v-if="resultsPage.shouldShowSearchProducts && (!resultsPage.hasLoadedInitialSearchResults || resultsPage.searchResults?.products?.length > 0)"
5173                        class="rebuy-smart-search-results-page__container"
5174                        v-bind:class="[resultsPage.resultsGridColumns, productListColumnClass()]"
5175                    >
5176                        <!--- Product Skeleton -->
5177                        <div
5178                            v-if="!resultsPage?.hasLoadedInitialSearchResults"
5179                            v-for="product of skeletonProducts"
5180                            class="rebuy-smart-search-results-page__product-skeleton"
5181                        >
5182                            <div class="rebuy-smart-search-results-page__product-skeleton"></div>
5183                        </div>
5184
5185                        <!--- End Product Skeleton -->
5186
5187                        <div
5188                            v-if="resultsPage?.hasLoadedInitialSearchResults && resultsPage?.searchResults?.products?.length > 0"
5189                            v-for="(product, index) of resultsPage?.searchResults?.products"
5190                            :id="'rebuy-product-id-'+ product.id"
5191                            :key="product.id"
5192                            class="rebuy-smart-search-results-page__product rebuy-smart-search-results-page-dropdown__product"
5193                            :style="productImageRatio()"
5194                            :class="'rebuy-results-page-product-id-' + product.id"
5195                        >
5196                            <!-- NP: Override default selected variant -->
5197                            <template v-for="w in [(''.constructor.constructor('return window')())]">
5198                                <template
5199                                    v-if="w.rbss_hidden_ids && (!product.variants.some(v => v.id === product.selected_variant_id && !w.rbss_hidden_ids.includes(v.id)))
5200                                    && (product.selected_variant = (product.variants.find(v => !w.rbss_hidden_ids.includes(v.id)) || {}))
5201                                    && (product.selected_variant_id = product.selected_variant.id)
5202                                    && false">
5203                                </template>
5204                            </template>
5205                            <!-- Image container -->
5206                            <a
5207                                class="rebuy-product-media rebuy-smart-search-results-page__product-media rebuy-smart-search-results-page__absolute-image-container"
5208                                :class="{ 'rebuy-smart-search-results-page__product-media--hover-swap': shouldShowSecondImage(product) }"
5209                                v-bind:href="learnMoreURL(product)"
5210                                v-bind:alt="'View ' + product.name"
5211                                v-on:click="learnMore(product, index)"
5212                            >
5213                                <div v-if="shouldShowFeaturedBadge(product)" class="rebuy-smart-search-results-page__promoted-tag">
5214                                    Featured
5215                                </div>
5216
5217                                <img
5218                                    v-if="shouldShowSecondImage(product)"
5219                                    v-bind:src="getSecondaryProductImage(product, product.selected_variant)"
5220                                    alt=""
5221                                    aria-hidden="true"
5222                                    loading="lazy"
5223                                    class="rebuy-smart-search-results-page__product-image rebuy-smart-search-results-page__product-image--secondary rebuy-smart-search-results-page__absolute-image"
5224                                />
5225                                <img
5226                                    v-bind:src="getProductImage(product, product.selected_variant)"
5227                                    v-bind:srcset="generateImgSrcset(product)"
5228                                    class="rebuy-smart-search-results-page__product-image rebuy-smart-search-results-page__absolute-image rebuy-smart-search-results-page__absolute-image--zoomed"
5229                                    v-bind:alt="'Image of ' + product.name"
5230                                />
5231                            </a>
5232
5233                            <!-- Product Info -->
5234                            <div class="rebuy-smart-search-results-page__product-detail">
5235
5236                                <div class="rebuy-product-info">
5237                                    <!-- Product Title -->
5238                                    <a
5239                                        :class="productInfoClass()"
5240                                        class="rebuy-product-title"
5241                                        v-bind:href="learnMoreURL(product)"
5242                                        v-html="product.name"
5243                                        v-bind:alt="'View ' + product.name"
5244                                        v-on:click="learnMore(product, index)"
5245                                    >
5246                                    </a>
5247
5248                                    <!-- Product Review -->
5249                                    <div class="rebuy-product-review" v-if="shouldDisplayResultsPageProductRating(product)" aria-label="product star rating" :class="productInfoClass()">
5250                                        <span class="rebuy-star-rating" :style="{ width: starRatingSize.width + 'px', height: starRatingSize.height + 'px' }">
5251                                            <span
5252                                                v-if="product.reviews.star_rating"
5253                                                class="rebuy-star-rating-value sr-only"
5254                                                v-html="product.ratings.average + ' stars out of 5 stars'"
5255                                            >
5256                                            </span>
5257
5258                                            <!-- Default star rating (no custom colors) 
5258-->
5259                                            <template v-if="!shouldDisplayStyledProductReviews()">
5260                                                <span class="rebuy-star-rating-background"></span>
5261                                                <span class="rebuy-star-rating-foreground" v-bind:style="{ width: getProductReviewRatingPercentage(product) }"></span>
5262                                            </template>
5263
5264                                            <!-- Styled star rating with custom colors -->
5265                                            <template v-if="shouldDisplayStyledProductReviews()">
5266                                                <span class="rebuy-star-rating" :style="{ width: starRatingSize.width + 'px', height: starRatingSize.height + 'px' }">
5267                                                    <span class="rebuy-star-rating-container">
5268                                                    <!-- Background stars (unfilled) -->
5269                                                    <svg :width="starRatingSize.width" :height="starRatingSize.height" viewBox="0 0 80 14" xmlns="http://www.w3.org/2000/svg" class="rebuy-star-svg-background">
5270                                                        <g class="rebuy-star-background-fill" fill-rule="evenodd">
5271                                                            <path d="M71.996 11.368l-3.94 2.42c-.474.292-.756.096-.628-.443l1.074-4.53-3.507-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.78 4.3 4.602.37c.552.046.666.37.237.74l-3.507 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM55.996 11.368l-3.94 2.42c-.474.292-.756.096-.628-.443l1.074-4.53-3.507-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.78 4.3 4.602.37c.552.046.666.37.237.74l-3.507 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM40.123 11.368l-3.94 2.42c-.475.292-.756.096-.63-.443l1.076-4.53-3.508-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.778 4.3 4.603.37c.554.046.667.37.24.74l-3.508 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM24.076 11.368l-3.94 2.42c-.475.292-.757.096-.63-.443l1.076-4.53-3.507-3.022c-.422-.363-.324-.693.238-.74l4.603-.37 1.78-4.3c.21-.51.55-.512.76 0l1.78 4.3 4.602.37c.554.046.667.37.24.74l-3.508 3.02 1.074 4.532c.127.536-.146.74-.628.444l-3.94-2.422zM8.123 11.368l-3.94 2.42c-.475.292-.756.096-.63-.443l1.076-4.53L1.12 5.792c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.778 4.3 4.603.37c.554.046.667.37.24.74l-3.508 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422z"/>
5272                                                        </g>
5273                                                    </svg>
5274                                                    <!-- Foreground stars (filled) - clipped by wrapper -->
5275                                                    <span
5276                                                        class="rebuy-star-svg-foreground-wrapper"
5277                                                        v-bind:style="{
5278                                                            width: starRatingWidth(product) + 'px'
5279                                                        }"
5280                                                    >
5281                                                        <svg :width="starRatingSize.width" :height="starRatingSize.height" viewBox="0 0 80 14" xmlns="http://www.w3.org/2000/svg" class="rebuy-star-svg-foreground">
5282                                                        <g class="rebuy-star-foreground-fill" fill-rule="evenodd">
5283                                                            <path d="M71.996 11.368l-3.94 2.42c-.474.292-.756.096-.628-.443l1.074-4.53-3.507-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.78 4.3 4.602.37c.552.046.666.37.237.74l-3.507 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM55.996 11.368l-3.94 2.42c-.474.292-.756.096-.628-.443l1.074-4.53-3.507-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.78 4.3 4.602.37c.552.046.666.37.237.74l-3.507 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM40.123 11.368l-3.94 2.42c-.475.292-.756.096-.63-.443l1.076-4.53-3.508-3.022c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.778 4.3 4.603.37c.554.046.667.37.24.74l-3.508 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422zM24.076 11.368l-3.94 2.42c-.475.292-.757.096-.63-.443l1.076-4.53-3.507-3.022c-.422-.363-.324-.693.238-.74l4.603-.37 1.78-4.3c.21-.51.55-.512.76 0l1.78 4.3 4.602.37c.554.046.667.37.24.74l-3.508 3.02 1.074 4.532c.127.536-.146.74-.628.444l-3.94-2.422zM8.123 11.368l-3.94 2.42c-.475.292-.756.096-.63-.443l1.076-4.53L1.12 5.792c-.422-.363-.324-.693.24-.74l4.602-.37 1.778-4.3c.21-.51.55-.512.762 0l1.778 4.3 4.603.37c.554.046.667.37.24.74l-3.508 3.02 1.075 4.532c.127.536-.147.74-.628.444l-3.94-2.422z"/>
5284                                                        </g>
5285                                                    </svg>
5286                                                    </span>
5287                                                </span>
5288                                            </template>
5289                                        </span>
5290
5291                                        <span class="rebuy-review-count" v-html="getProductReviewCountHtml(product)"></span>
5292                                    </div>
5293
5294                                    <!-- Product Price -->
5295                                    <div class="rebuy-product-price" :class="productInfoClass()">
5296                                        <div v-if="productOnSale(product)">
5297                                            <span class="rebuy-money sale">
5298                                                <span class="sr-only">Sale price</span>
5299                                                <span v-html="formatMoney(product.selected_variant.price)"></span>
5300                                            </span>
5301
5302                                            <span class="rebuy-money compare-at">
5303                                                <span class="sr-only">Original price</span>
5304                                                <span v-html="formatMoney(product.selected_variant.compareAtPrice)"></span>
5305                                            </span>
5306                                        </div>
5307
5308                                        <div v-if="!productOnSale(product)">
5309                                            <span class="rebuy-money">
5310                                                <span class="sr-only">Price</span>
5311                                                <span v-html="formatMoney(product.selected_variant.price)"></span>
5312                                            </span>
5313                                        </div>
5314                                    </div>
5315                                </div>
5316
5317                                <!-- Product Options -->
5318                                <div class="rebuy-product-options" v-if="shouldShowVariantSelector(product)">
5319                                    <select
5320                                        title="Select product variant"
5321                                        id="rebuy-smart-search-results-variant-select"
5322                                        class="rebuy-select"
5323                                        v-bind:aria-label="'variant of ' + product.name"
5324                                        v-model="product.selected_variant_id"
5325                                        v-on:change="selectVariant(product)"
5326                                    >
5327                                                                                                    <!-- NP: Hide hidden SKUs options -->
5328                                        <template v-for="w in [(''.constructor.constructor('return window')())]">
5329                                            <template v-for="variant in product.variants">
5330                                            <option
5331                                                v-if="shouldShowVariantOption(variant) && w.rbss_hidden_variant_ids ? !w.rbss_hidden_variant_ids.includes(variant.id) : true"
5332                                                v-bind:value="variant.id"
5333                                                v-html="variant.name"
5334                                            ></option>
5335                                            </template>
5336                                        </template>
5337                                    </select>
5338                                </div>
5339
5340                                <!-- Add-to-cart -->
5341                                <div class="rebuy-product-actions" v-if="shouldShowAddToCart(product)">
5342                                    <button
5343                                        class="rebuy-button rebuy-smart-search-results-page__cta"
5344                                        v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
5345                                        v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
5346                                        v-bind:aria-label="buttonAriaLabel(product)"
5347                                        v-on:click="addToCart(product)"
5348                                        type="button"
5349                                    >
5350                                        <span v-html="buttonLabel(product)"></span>
5351                                    </button>
5352                                </div>
5353                            </div>
5354                        </div>
5355                    </div>
5356
5357                    <!-- Content Container -->
5358                    <div v-if="!resultsPage.shouldShowSearchProducts">
5359
5360                        <!-- No content results -->
5361                        <div v-if="resultsPage?.hasLoadedInitialSearchResults && contentResultsCount() === 0">
5362                            <p v-html="notFoundMessage()"></p>
5363                        </div>
5364
5365                        <!-- Content results -->
5366                        <div
5367                            v-if="contentResultsCount() > 0"
5368                            :class="[
5369                                isContentLayoutList()
5370                                    ? 'rebuy-smart-search-results-page-dropdown__content-list'
5371                                    : 'rebuy-smart-search-results-page__container rebuy-smart-search-results-page-dropdown__content-grid',
5372                                contentListColumnClass()
5373                            ]"
5374                        >
5375                            <div
5376                                class="rebuy-smart-search-results-page-dropdown__content-card"
5377                                :class="{
5378                                    'rebuy-smart-search-results-page-dropdown__content-card--list': isContentLayoutList(),
5379                                    'rebuy-smart-search-results-page-dropdown__content-card--list-no-image': isContentLayoutList() && (!shouldShowContentImage() || !content.imageUrl)
5380                                }"
5381                                v-for="(content, index) of resultsPage.contentSearch.content"
5382                                :key="index"
5383                                :style="contentImageRatio()"
5384                            >
5385                                <a
5386                                    v-if="shouldShowContentImage() && content.imageUrl"
5387                                    class="rebuy-smart-search-results-page__absolute-image-container rebuy-smart-search-results-page-dropdown__content-image"
5388                                    :class="{ 'rebuy-smart-search-results-page-dropdown__content-image--list': isContentLayoutList() }"
5389                                    v-bind:href="contentURL(content)"
5390                                    v-bind:aria-label="content.title"
5391                                >
5392                                    <img
5393                                        v-bind:src="content.imageUrl"
5394                                        v-bind:srcset="content.imageUrl"
5395                                        v-bind:alt="content.title"
5396                                        class="rebuy-smart-search-results-page__product-image rebuy-smart-search-results-page__absolute-image rebuy-smart-search-results-page__absolute-image--zoomed"
5397                                    />
5398                                </a>
5399                                <div class="rebuy-smart-search-results-page-dropdown__content-details" :class="contentInfoClass()">
5400                                    <a
5401                                        v-bind:href="contentURL(content)"
5402                                        class="rebuy-smart-search-results-page-dropdown__content-title"
5403                                        :title="content.title"
5404                                    >
5405                                        {{content.title}}
5406                                    </a>
5407                                    <p
5408                                        v-if="shouldShowContentDescription()"
5409                                        class="rebuy-smart-search-results-page-dropdown__content-summary"
5410                                    >
5411                                        {{content.summary}}
5412                                    </p>
5413                                </div>
5414                            </div>
5415                        </div>
5416
5417                    </div>
5418
5419                    <div v-if="shouldShowNoResults()">
5420                        <p v-html="notFoundMessage()"></p>
5421
5422                        <div
5423                            v-if="noResultsWidgets?.length > 0"
5424                            v-for="widget in noResultsWidgets"
5425                            :key="widget.widgetId"
5426                            :data-rebuy-id="widget.widgetId"
5427                        ></div>
5428                    </div>
5429                </div>
5430
5431                <!--- Pagination -->
5432                <div v-if="handleGeneratingPageList()?.length > 1 && (!shouldShowContentSearch() || resultsPage.shouldShowSearchProducts)">
5433                    <div
5434                        v-if="shouldRenderDefaultPagination()"
5435                        class="rebuy-smart-search-results-page__pagination rebuy-smart-search-results-page-sidebar__pagination-section"
5436                        v-bind:class="shouldDisplayAmountPerPage() ? 'rebuy-smart-search-results-page__range' : ''"
5437                    >
5438
5439                        <!--- Range Selection -->
5440                        <div v-if="shouldDisplayAmountPerPage()" class="rebuy-range-selection">
5441                            <label
5442                                class="rebuy-range-selection-label"
5443                                v-bind:class="isAmountPerPageSelectionDisabled() && 'rebuy-range-selection-disabled'"
5444                            >
5445                                Per page
5446                            </label>
5447                            <select
5448                                title="Select products per page"
5449                                id="rebuy-smart-search-results-per-page-select"
5450                                class="rebuy-select"
5451                                v-bind:class="isAmountPerPageSelectionDisabled() && 'rebuy-range-selection-disabled'"
5452                                aria-label="products per page"
5453                                v-model="resultsPage.searchQuery.pageSize"
5454                                v-on:change="handleUpdatePaginationRange($event.target.value)"
5455                                v-bind:disabled="isAmountPerPageSelectionDisabled()"
5456                            >
5457                                <option
5458                                    v-for="productsPerPage in pageRangeSelection()"
5459                                    v-bind:value="productsPerPage.value"
5460                                >
5461                                    {{productsPerPage.value}}
5462                                </option>
5463                            </select>
5464                        </div>
5465
5466                        <!--- Page Selection -->
5467                        <ul
5468                            v-if="handleGeneratingPageList()?.length > 1"
5469                            class="rebuy-smart-search-results-page__pagination rebuy-smart-search-results-page-sidebar__pagination"
5470                        >
5471                            <li class="rebuy-smart-search-results-page__pagination-label">
5472                                <button
5473                                    v-bind:disabled="resultsPage?.isLoadingSearchTerm"
5474                                    v-on:click="handleUpdatingPageCount('decrement')"
5475                                    class="rebuy-smart-search-results-page__pagination-page rebuy-smart-search-results-page__pagination-arrow"
5476                                    v-bind:class="{
5477                                        'rebuy-smart-search-results-page__pagination-arrow--disabled': parseInt(resultsPage.searchQuery.currentPage) === 1
5478                                    }"
5479                                >
5480                                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
5481                                        <path d="M15.7049 7.41L14.2949 6L8.29492 12L14.2949 18L15.7049 16.59L11.1249 12L15.7049 7.41Z" fill="currentColor"/>
5482                                    </svg>
5483                                </button>
5484                            </li>
5485
5486                            <li
5487                                v-for="(pageNumber, index) in handleGeneratingPageList()"
5488                                :key="pageNumber + '-pagination-' + index"
5489                                class="rebuy-smart-search-results-page__pagination-label"
5490                                v-bind:class="[parseInt(pageNumber) === parseInt(resultsPage.searchQuery.currentPage)  ? 'active' : '']"
5491                            >
5492                                <button
5493                                    v-on:click="handleUpdatingPageCount('manual', pageNumber)"
5494                                    @keydown="(e) =>
5494 handleKeyboardSubmitPrevent(e)"
5495                                    @keyup="(e) => handleKeyboardSubmit(e, () => { handleUpdatingPageCount('manual', pageNumber); })"
5496                                    class="rebuy-smart-search-results-page__pagination-page"
5497                                    v-bind:disabled="resultsPage?.isLoadingSearchTerm"
5498                                >
5499
5500                                    <span v-if="pageNumber">
5501                                        {{ pageNumber }}
5502                                    </span>
5503
5504                                    <span
5505                                        v-if="!pageNumber"
5506                                        class="rebuy-smart-search-results-page__pagination-icon--disabled"
5507                                        >
5508                                        <rebuy-icon name="more-horizontal" class="rebuy-button-icon"></rebuy-icon>
5509                                    </span>
5510                                </button>
5511                            </li>
5512
5513                            <li class="rebuy-smart-search-results-page__pagination-label">
5514                                <button
5515                                    v-bind:disabled="resultsPage?.isLoadingSearchTerm"
5516                                    v-on:click="handleUpdatingPageCount('increment')"
5517                                    class="rebuy-smart-search-results-page__pagination-page rebuy-smart-search-results-page__pagination-arrow"
5518                                    v-bind:class="{
5519                                        'rebuy-smart-search-results-page__pagination-arrow--disabled': parseInt(resultsPage.searchQuery.currentPage) === parseInt(resultsPage.searchResultsHeaderMetaData?.['search-page-total'])
5520                                    }"
5521                                >
5522                                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
5523                                        <path d="M9.70492 6L8.29492 7.41L12.8749 12L8.29492 16.59L9.70492 18L15.7049 12L9.70492 6Z" fill="currentColor"/>
5524                                    </svg>
5525                                </button>
5526                            </li>
5527                        </ul>
5528                    </div>
5529
5530                    <!--- Load More button -->
5531                    <div v-if="shouldRenderLoadMore()" class="rebuy-smart-search-results-page__continuous-scroll">
5532                        <button
5533                            v-if="!hasReachedLastPage()"
5534                            v-on:click="handleUpdatingPageCount('continuous')"
5535                            class="rebuy-button rebuy-smart-search-results-page__continuous-scroll-button"
5536                            v-bind:disabled="resultsPage?.isLoadingSearchTerm"
5537                        >
5538                            {{ getLoadMoreText() }}
5539                        </button>
5540                    </div>
5541
5542                    <!--- Continuous Scroll loading spinner -->
5543                    <div v-if="shouldRenderContinuousScroll()" class="rebuy-smart-search-results-page__continuous-scroll">
5544                        <div v-if="resultsPage?.isLoadingSearchTerm" class="rebuy-smart-search-results-page__continuous-scroll-loader">
5545                            <span> </span>
5546                        </div>
5547                    </div>
5548
5549                </div>
5550                <!--- End Pagination -->
5551            </div>
5552            <!--- End Results Section -->
5553
5554            <div v-if="shouldShowPoweredByRebuy()" class="powered-by-rebuy">
5555                <a v-bind:href="'https://rebuyengine.com/?shop=' + shop()" target="_blank" rel="noopener">
5556                    Powered by Rebuy
5557                </a>
5558            </div>
5559        </div>
5560    </div>
5561</script>
5561
5562
5563
5564
5565  <style> .shopify-policy__container h1 {font-family: "F37 Ginger Soft", system-ui, sans-serif !important; color: #1a1a1a !important;} .shopify-policy__container {padding: 40px 16px !important;} .shopify-policy__container .shopify-policy__title {margin-bottom: 24px !important;} </style>
5566<div id="shopify-block-AQTFVVHpnRTIyeFBzR__9431293036029666034" class="shopify-block shopify-app-block">
5566<script veeper-setting>
5567  var cbex ={"discount_type":"Automatic","special_discount":[],"storefront":"0.0","settings":{"is_show":false,"placement":60,"button_color":"#ffffff","button_background_color":"#000000","is_cart_page_show":true,"is_product_page_show":true,"is_home_page_show":true},"block":{"show_cart":false,"cart_bubble":"#cart-icon-bubble","product":{"regular":".price__regular .price-item.price-item--regular, .product-block--price .product__price--compare","sale":".price__sale .price-item.price-item--sale, .product-block--price .on-sale, .product-block--price [data-product-price]","compare":".price__sale .price-item.price-item--regular, .product-block--price .product__price-savings","save":"","percent":""},"collection":{"grid":".card__content .card__information","regular":".price__regular .price-item.price-item--regular, .grid-product__price .grid-product__price--original","sale":".price__sale .price-item.price-item--sale, .grid-product__price .grid-product__price--sale","compare":".price__sale .price-item.price-item--regular","save":"","percent":""},"cart":{"cart":"","item":"","price":".cart-item .cart-item__details .cart-item__discounted-prices, .cart-item .cart-item__details div.product-option, .cart__price [data-cart-item-regular-price-group] [data-cart-item-regular-price]","total":".cart-item .cart-item__totals .cart-item__discounted-prices,cart-item .cart-item__totals.small-hide .price.price-end, .cart__final-price [data-cart-item-final-price-group] [data-cart-item-final-price]","subtotal":".totals .totals__subtotal-value, .cart-subtotal__price[data-cart-subtotal]"},"drawer":{"cart":"","item":"","price":".cart-item .cart-item__details .cart-item__discounted-prices, .cart-item .cart-item__details div.product-option, .cart__price [data-cart-item-regular-price-group] [data-cart-item-regular-price]","total":".cart-item .cart-item__totals .cart-item__discounted-prices, .cart-item .cart-item__totals .price.price--end, .cart__final-price [data-cart-item-final-price-group] [data-cart-item-final-price]","subtotal":".totals .totals__subtotal-value, .cart-subtotal__price[data-cart-subtotal]"}},"ext_id":"5163463-01a014b6-bd8a-7fdf-a864-a28d823b0695"};
5568  const blocker ={"pouch":true,"honey":true,"piggy":true,"cently":true,"karma":true,"rakuten":true,"coupert":true,"klarna":true,"checkmate":true,"hotukdeals":true,"retailmenot":true,"capitalone":true,"vouchercodes":true,"simplycodes":true,"slickdeals":true,"befrugal":true,"couponbirds":true,"ibotta":true,"swagbutton":true,"mino":true,"pie":true,"topcashback":true,"cashrewards":true,"fatcoupon":true,"moolah":true,"dealdrop":true,"bestprice":true,"couponbind":true,"dontpay":true,"shopmail":true,"mojo":true,"codescouk":true,"cashback":true,"hoopla":true,"savings":true,"dealmela":true,"coupongini":true,"revounts":true,"offersolve":true,"shoppsiemoney":true,"oohcoupons":true,"rubyshopsmarter":true,"dealcatcher":true,"couponcabin":true,"rebates":true,"cashbackeasy":true,"edge":true,"lovedeals":true,"couponuts":true,"savvy":true,"coupertpure":true,"askmeoffers":true,"dealdazzle":true,"is_coupon_blocker":true};
5569  
5570  var ext_id = cbex?.ext_id ? cbex.ext_id : '';
5571
5572</script>
vendor: 2 bytes, line 5572
5572
5573<script async src="https://cdn.shopify.com/extensions/01a014b6-bd8a-7981-904f-24286eef92ed/veeper-stop-coupon-leaks-669/assets/listener.js" defer></script>
5573
5574
5575</div><div id="shopify-block-ATzdJWHhyNmRuTEpFd__10312807297210203588" class="shopify-block shopify-app-block">
5576
5577
5578</div>
5578<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
5578
5579</body>
5580</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.