1<!doctype html> 2<html lang="en"> 3 <head> 4 5
6<script src="/cdn/shopifycloud/consent-tracking-api/v0.1/consent-tracking-api.js"></script>
6 7
8<script type="text/javascript"> 9 10;(function() { 11 var Rt=Object.defineProperty;var kt=(b,I,E)=>I in b?Rt(b,I,{enumerable:!0,configurable:!0,writable:!0,value:E}):b[I]=E;var c=(b,I,E)=>kt(b,typeof I!="symbol"?I+"":I,E);(function(){"use strict";/*! js-cookie v3.0.8 | MIT */function b(o){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var i in e)i!=="__proto__"&&(o[i]=e[i])}return o}var I={read:function(o){return o[0]==='"'&&(o=o.slice(1,-1)),o.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(o){return encodeURIComponent(o).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}};function E(o,t){function e(s,n,r){if(!(typeof document>"u")){r=b({},t,r),typeof r.expires=="number"&&(r.expires=new Date(Date.now()+r.expires*864e5)),r.expires&&(r.expires=r.expires.toUTCString()),s=encodeURIComponent(s).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var d="";for(var a in r)r[a]&&(d+="; "+a,r[a]!==!0&&(d+="="+r[a].split(";")[0]));return document.cookie=s+"="+o.write(n,s)+d}}function i(s){if(!(typeof document>"u"||arguments.length&&!s)){for(var n=document.cookie?document.cookie.split("; "):[],r={},d=0;d<n.length;d++){var a=n[d].split("="),l=a.slice(1).join("=");try{var u=decodeURIComponent(a[0]);if(u in r||(r[u]=o.read(l,u)),s===u)break}catch{}}return s?r[s]:r}}return Object.create({set:e,get:i,remove:function(s,n){e(s,"",b({},n,{expires:-1}))},withAttributes:function(s){return E(this.converter,b({},this.attributes,s))},withConverter:function(s){return E(b({},this.converter,s),this.attributes)}},{attributes:{value:Object.freeze(t)},converter:{value:Object.freeze(o)}})}var $=E(I,{path:"/"});const U=class U{constructor(t,e={}){c(this,"_writable");this.kind=t,this.cookieAttributes=e}get writable(){if(this._writable===void 0){const t=`${U.PROBE_KEY}_${this.kind}`;this._writable=this.set(t,"1"),this.remove(t)}return this._writable}get(t){var e;try{return this.kind==="cookie"?$.get(t)??null:((e=this.storage)==null?void 0:e.getItem(t))??null}catch(i){return console.debug(`shogun: could not read '${t}' from ${this.kind} store`,i),null}}set(t,e){try{if(this.kind==="cookie")$.set(t,e,this.cookieAttributes);else{const i=this.storage;if(!i)return!1;i.setItem(t,e)}}catch(i){return console.debug(`shogun: could not write '${t}' to ${this.kind} store`,i),!1}return this.get(t)===e}remove(t){try{if(this.kind==="cookie")$.remove(t,this.cookieAttributes);else{const e=this.storage;if(!e)return!1;e.removeItem(t)}}catch(e){return console.debug(`shogun: could not remove '${t}' from ${this.kind} store`,e),!1}return this.get(t)===null}get storage(){try{return(this.kind==="local"?globalThis.localStorage:globalThis.sessionStorage)??null}catch{return null}}};c(U,"PROBE_KEY","_shg_storage_probe");let v=U;class nt{constructor(t,e){c(this,"CACHE_KEY","_shg_audience_cache");c(this,"CACHE_EXPIRATION_DAYS",7);c(this,"DEVICE_MOBILE_BREAKPOINT",768);c(this,"cache",{timestamp:Date.now(),data:{}});c(this,"storage",new v("local"));this.visitor=t,this.locationApiUrl=e,this.restoreCache()}evaluate(t){switch(t.value=this.snakeCaseKeys(t.value),t.audience_type){case"location":return this.locationMatches(t);case"b2b":return this.b2bMatches(t);case"device":return this.deviceMatches(t);case"logged_in":return this.loggedInMatches(t);case"referrer_contains":return this.referrerContainsMatches(t);case"url_contains":return this.urlContainsMatches(t);case"new_visitor":return this.newVisitorMatches(t);case"returning_visitor":return this.returningVisitorMatches(t);default:return{status:"skipped",expected:t.value,actual:null,reason:`No evaluator implemented for audience type: ${t.audience_type}`}}}evaluateAll(t,e="every"){if(!t||t.length===0)return{status:"eligible",condition:e,expected:{},actual:{}};if(!["every","any"].includes(e))return{status:"error",condition:e,expected:{},actual:{}};const i=t.map(d=>({type:d.audience_type,evaluation:this.evaluate(d)})),s=e==="every"?i.every(d=>d.evaluation.status==="match"):i.some(d=>d.evaluation.status==="match"),n=i.some(d=>d.evaluation.status==="error"),r=e==="every"&&i.some(d=>d.evaluation.status==="no_match");return{status:s?"eligible":n&&!r?"error":"not_eligible",condition:e,expected:t.reduce((d,a)=>(d[a.audience_type]={condition:a.condition,value:a.value},d),{}),actual:i.reduce((d,a)=>(d[a.type]=a.evaluation.actual,d),{}),evaluations:i.reduce((d,a)=>(d[a.type]={status:a.evaluation.status,reason:a.evaluation.reason},d),{})}}b2bMatches(t){const e=t.value===this.visitor.isB2B;return{status:(t.condition==="is_not"?!e:e)?"match":"no_match",expected:{condition:t.condition,value:t.value},actual:{value:this.visitor.isB2B}}}deviceMatches(t){const e=window.innerWidth<this.DEVICE_MOBILE_BREAKPOINT||window.outerWidth<this.DEVICE_MOBILE_BREAKPOINT?"mobile":"desktop",i=t.value===e;return{status:(t.condition==="is_not"?!i:i)?"match":"no_match",expected:{condition:t.condition,value:t.value},actual:{value:e}}}truncate(t){return t?t.slice(0,200):void 0}locationMatches(t){let e=null;if(!this.cache.data.location){let h=null,_=0;try{const m=new XMLHttpRequest;m.open("GET",this.locationApiUrl,!1),m.send(null),_=m.status,_===200?h=JSON.parse(m.responseText):e={cause:"http_status",status:_,error:this.truncate(m.responseText)}}
11catch(m){e={cause:_===200?"invalid_response":"request_failed",status:_,error:this.truncate(String(m))}}e&&console.debug("shogun: location lookup failed, location audiences cannot be evaluated",e),h&&(this.cache.data.location={country:h==null?void 0:h.country,region:h==null?void 0:h.region,city:h==null?void 0:h.city,timestamp:Date.now()},this.saveCache())}const i={condition:t.condition,value:t.value},s=this.cache.data.location;if(!i||!i.value||!i.value.type||!i.value.country_code)return{status:"no_match",expected:i,actual:s?{value:s}:null};if(!s)return{status:"error",expected:i,actual:e,reason:"location_unavailable"};const{type:n,country_code:r,toponym_name:d,parent_name:a}=i.value;let l=!1;switch(n){case"country":l=s.country===r;break;case"region":l=s.region===d&&s.country===r;break;case"city":l=s.city===d&&s.region===a&&s.country===r;break;default:l=!1}return{status:(t.condition==="is_not"?!l:l)?"match":"no_match",expected:i,actual:{value:s}}}loggedInMatches(t){const e=String(t.value)==="true",i=this.visitor.isLoggedIn===e;return{status:(t.condition==="is_not"?!i:i)?"match":"no_match",expected:{condition:t.condition,value:t.value},actual:{value:this.visitor.isLoggedIn}}}referrerContainsMatches(t){if(typeof t.value!="string")return{status:"error",expected:{condition:t.condition,value:t.value},actual:null,reason:"Invalid expected value"};const e=document.referrer.toLowerCase().includes(t.value.toLowerCase());return{status:(t.condition==="is_not"?!e:e)?"match":"no_match",expected:{condition:t.condition,value:t.value},actual:{value:document.referrer}}}urlContainsMatches(t){if(typeof t.value!="string")return{status:"error",expected:{condition:t.condition,value:t.value},actual:null,reason:"Invalid expected value"};const e=window.location.href.toLowerCase().includes(t.value.toLowerCase());return{status:(t.condition==="is_not"?!e:e)?"match":"no_match",expected:{condition:t.condition,value:t.value},actual:{value:window.location.href}}}returningVisitorMatches(t){if(!this.visitor.detailsPersisted||!this.visitor.details)return{status:"error",expected:{condition:t.condition,value:t.value},actual:null,reason:"visitor_details_unavailable"};const{expected_time_in_milliseconds:e,within_or_after:i}=t.value||{};if(typeof e!="number"||!i)return{status:"error",expected:{condition:t.condition,value:t.value},actual:null,reason:"Invalid expected data"};const s=this.visitor.details.first_visit_timestamp,n=Date.now();if(i==="within"){const r=s+e>n;return{status:(t.condition==="is_not"?!r:r)?"match":"no_match",expected:{condition:t.condition,value:t.value},actual:{value:s}}}else{const r=s+e<n;return{status:(t.condition==="is_not"?!r:r)?"match":"no_match",expected:{condition:t.condition,value:t.value},actual:{value:s}}}}newVisitorMatches(t){if(!this.visitor.detailsPersisted)return{status:"error",expected:{condition:t.condition,value:t.value},actual:null,reason:"visitor_details_unavailable"};const e=t.value==this.visitor.isFirstVisit;return{status:(t.condition==="is_not"?!e:e)?"match":"no_match",expected:{condition:t.condition,value:t.value},actual:{value:this.visitor.isFirstVisit}}}restoreCache(){const t=this.storage.get(this.CACHE_KEY);if(t)try{const e=JSON.parse(t);e.timestamp<=Date.now()-this.CACHE_EXPIRATION_DAYS*24*60*60*1e3?(this.storage.remove(this.CACHE_KEY),this.cache.data={}):this.cache=e}catch{this.storage.remove(this.CACHE_KEY),this.cache.data={}}}saveCache(){this.cache.timestamp=Date.now(),this.storage.set(this.CACHE_KEY,JSON.stringify(this.cache))}snakeCaseKeys(t){if(t==null||typeof t!="object")return t;const e={};for(const[i,s]of Object.entries(t)){const n=i.replace(/[A-Z]/g,r=>`_${r.toLowerCase()}`);e[n]=s}return e}}class A extends Error{constructor(e,i,s={}){super(e,{cause:s.cause});c(this,"optimization");this.reason=i,this.name="DispatchError",this.optimization=s.optimization}}const g=class g{constructor(t){c(this,"customerId");c(this,"isB2B");c(this,"details",null);c(this,"sessionId",null);c(this,"id",null);c(this,"_idsPersisted",!0);c(this,"_detailsPersisted",!0);c(this,"storage",new v("local"));c(this,"sessionCookie",new v("cookie",{expires:1/48,path:"/"}));c(this,"visitorCookie",new v("cookie",{expires:365,path:"/"}));this.context=t,this.sessionId=t.sessionId,this.customerId=t.customerId,this.isB2B=t.isB2B,this.loadCachedDetails(),this.loadAndStoreVisitorId(),this.loadAndStoreSessionId()}static storedIds(){const t=new v("cookie");return{id:t.get(g.VISITOR_ID_KEY),sessionId:t.get(g.SESSION_ID_KEY)}}get bin(){return this.sessionId?this.hashWithDjb2(this.sessionId)%g.DEFAULT_NUMBER_OF_BINS:0}
11get firstVisitTimestamp(){var t;return((t=this.details)==null?void 0:t.first_visit_timestamp)??Date.now()}get isFirstVisit(){return this.firstVisitTimestamp>=Date.now()-g.NEW_VISITOR_THRESHOLD_MINUTES*60*1e3}get isLoggedIn(){return!!this.customerId}loadCachedDetails(){var e;const t=this.storage.get(g.DETAILS_KEY);if(t)try{this.details=JSON.parse(t),typeof((e=this.details)==null?void 0:e.first_visit_timestamp)!="number"&&(console.warn("Invalid visitor details found in storage, resetting."),this.details=null)}catch(i){console.error("Error loading visitor details from storage:",i),this.details=null}this.details||(this.details={first_visit_timestamp:Date.now()},this._detailsPersisted=this.storage.set(g.DETAILS_KEY,JSON.stringify(this.details)))}get detailsPersisted(){return this._detailsPersisted}get idsPersisted(){return this._idsPersisted}get cookiesWritable(){return this.visitorCookie.writable}newId(){try{return crypto.randomUUID()}catch{return console.debug("shogun: this platform will not generate an identifier for the visitor"),null}}loadAndStoreSessionId(){const t=this.sessionId||this.sessionCookie.get(g.SESSION_ID_KEY)||null;t?this.sessionId=t:(this.sessionId=this.newId(),this.sessionId||(this._idsPersisted=!1)),this.sessionId&&(this._idsPersisted=this.sessionCookie.set(g.SESSION_ID_KEY,this.sessionId)&&this._idsPersisted)}loadAndStoreVisitorId(){const t=this.visitorCookie.get(g.VISITOR_ID_KEY)||null;t?this.id=t:(this.id=this.newId(),this.id?this._idsPersisted=this.visitorCookie.set(g.VISITOR_ID_KEY,this.id)&&this._idsPersisted:this._idsPersisted=!1)}hashWithDjb2(t){let e=5381;for(let i=0;i<t.length;i++)e=(e<<5)-e+t.charCodeAt(i),e|=0;return Math.abs(e)}};c(g,"DETAILS_KEY","_shg_ab_visitor_details"),c(g,"SESSION_ID_KEY","_shg_ab_session_id"),c(g,"VISITOR_ID_KEY","_shg_ab_visitor_id"),c(g,"DEFAULT_NUMBER_OF_BINS",1e4),c(g,"NEW_VISITOR_THRESHOLD_MINUTES",30);let T=g;const S=class S{constructor(t){c(this,"buyItNowHandlerAttached",!1);this.config=t}run(){typeof document<"u"&&document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{this.attachBuyItNowHandler()}):setTimeout(()=>{this.attachBuyItNowHandler()},100)}attachBuyItNowHandler(){var s;const t=(s=this.config)==null?void 0:s.currentCartVariantId;if(!t){console.debug("shogun: no current cart variant ID assigned, buy-it-now interception skipped");return}if(this.buyItNowHandlerAttached)return;this.buyItNowHandlerAttached=!0,console.debug("shogun: setting up buy-it-now interception with cart variant ID:",t);const e=async(n,r)=>{var u,h,_,m;const d=(r==null?void 0:r.formData)??new FormData(n);let a=(r==null?void 0:r.variantId)??this.extractVariantIdFromFormData(d);if(!a){console.debug("shogun: no product variant ID found for buy-it-now, interception skipped");return}const l=(r==null?void 0:r.quantity)??(parseInt(d.get("quantity")||"1",10)||1);if(console.debug("shogun: buy-it-now details:",{productVariantId:a,quantity:l,cartVariantId:t,storefrontAccessToken:(u=this.config)!=null&&u.storefrontAccessToken?"***":null,shopDomain:(h=this.config)==null?void 0:h.shopDomain}),(_=this.config)!=null&&_.storefrontAccessToken&&((m=this.config)!=null&&m.shopDomain)){console.debug("shogun: attempting cartCreate with merchandiseId:",`gid://shopify/ProductVariant/${a}`);const D=await this.createCartAndGetCheckoutUrl(a,l,t);if(D){console.debug("shogun: redirecting to cartCreate checkoutUrl (original cart preserved)"),window.location.href=D;return}}console.debug("shogun: falling back to cart add with cart variant"),await this.addToCartAndCheckout(a,l,t)};typeof document<"u"&&(()=>{document.addEventListener("click",n=>{const r=n.target;if(!r)return;const d=this.findPaymentElementFromClick(n,r);if(!d)return;const a=this.findFormForPaymentElement(d,r,n);if(!a)return;
11const l=this.getBuyItNowDetailsFromForm(a);l&&(n.preventDefault(),n.stopPropagation(),n.stopImmediatePropagation(),e(a,l))},{capture:!0})})()}async createCartAndGetCheckoutUrl(t,e,i){var a,l,u,h,_,m,D;if(!((a=this.config)!=null&&a.storefrontAccessToken)||!((l=this.config)!=null&&l.shopDomain))return null;const s=` 12 mutation cartCreate($input: CartInput!) { 13 cartCreate(input: $input) { 14 cart { 15 id 16 checkoutUrl 17 } 18 userErrors { 19 field 20 message 21 } 22 } 23 } 24 `,n=i?[{key:"shogun_variant_id",value:i}]:[];let r=[];i&&this.config.lineItemLevelVariant&&(r=[{key:"_shogun_variant_id",value:i}]);const d={input:{lines:[{merchandiseId:`gid://shopify/ProductVariant/${t}`,quantity:e,attributes:r}],attributes:n}};try{const M=JSON.stringify({query:s,variables:d}),st=`https://${this.config.shopDomain}/api/2026-07/graphql.json`;console.debug("shogun: cartCreate request URL:",st),console.debug("shogun: cartCreate request body:",M);const P=await(await fetch(st,{method:"POST",headers:{"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":this.config.storefrontAccessToken},body:M})).json();return console.debug("shogun: cartCreate full response:",JSON.stringify(P,null,2)),(_=(h=(u=P.data)==null?void 0:u.cartCreate)==null?void 0:h.cart)!=null&&_.checkoutUrl?(console.debug("shogun: cartCreate successful, checkoutUrl:",P.data.cartCreate.cart.checkoutUrl),P.data.cartCreate.cart.checkoutUrl):(console.error("shogun: cartCreate failed:",((D=(m=P.data)==null?void 0:m.cartCreate)==null?void 0:D.userErrors)||P.errors),null)}catch(M){return console.error("shogun: cartCreate error:",M),null}}async addToCartAndCheckout(t,e,i){var n;const s={items:[{id:t,quantity:e,properties:{}}]};i&&(s.attributes={shogun_variant_id:i},(n=this.config)!=null&&n.lineItemLevelVariant&&(s.items[0].properties={_shogun_variant_id:i}));try{const r=await fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});r.ok?(console.debug("shogun: added to cart, redirecting to checkout"),window.location.href="/checkout"):console.error("shogun: cart add failed:",await r.text())}catch(r){console.error("shogun: cart add error:",r)}}findPaymentElementFromClick(t,e){const i=e.closest(S.SHOPIFY_PAYMENT_BUTTON_SELECTOR);if(i)return i;const s=typeof t.composedPath=="function"?t.composedPath():[];for(const n of s)if(n instanceof HTMLElement&&n.matches(S.SHOPIFY_PAYMENT_BUTTON_SELECTOR))return n;return null}findFormForPaymentElement(t,e,i){const s=t.closest("form");if(s)return s;const n=e==null?void 0:e.closest("form");if(n)return n;const r=(e==null?void 0:e.closest("[form]"))||t.closest("[form]")||t.querySelector("[form]"),d=r==null?void 0:r.getAttribute("form");if(d){const h=document.getElementById(d);if(h instanceof HTMLFormElement)return h}const a=typeof(i==null?void 0:i.composedPath)=="function"?i.composedPath():[];for(const h of a)if(h instanceof HTMLFormElement)return h;const l=document.querySelectorAll("form");let u=null;for(const h of l)if(h.querySelector(S.SHOPIFY_PAYMENT_BUTTON_SELECTOR)){if(u)return console.debug("shogun: multiple payment-button forms found; skipping ambiguous buy-it-now form mapping"),null;u=h}return u}normalizeProductVariantId(t){if(!t)return null;const e=String(t);if(!e.includes("gid://"))return e;const i=e.match(/\/(\d+)$/);return i?i[1]:e}extractVariantIdFromFormData(t){const e=t.get("id")||t.get("variant_id");if(!e)return null;const i=this.normalizeProductVariantId(e);return i&&i!==e&&console.debug("shogun: extracted numeric ID from GID:",i),i}
24getBuyItNowDetailsFromForm(t){const e=new FormData(t),i=this.extractVariantIdFromFormData(e);if(!i)return null;const s=parseInt(e.get("quantity")||"1",10)||1;return{formData:e,variantId:i,quantity:s}}};c(S,"SHOPIFY_PAYMENT_BUTTON_SELECTOR",'shopify-buy-it-now-button, shopify-accelerated-checkout, [data-shopify="payment-button"], .shopify-payment-button');let z=S;class V{constructor(t,e,i){c(this,"id");c(this,"name");c(this,"type");c(this,"scope");c(this,"config");c(this,"variants");c(this,"assignedVariantId");c(this,"state");c(this,"assignedAt");c(this,"eligibility");c(this,"context");c(this,"audienceEvaluator");this.id=t.id,this.name=t.name,this.type=t.type,this.scope=t.scope,this.config=t.config||{},this.variants=t.variants||[],this.assignedVariantId=t.assignedVariantId,this.state=t.assignedVariantId?t.state:void 0,this.assignedAt=t.assignedVariantId?t.assignedAt:void 0,this.context=e,this.audienceEvaluator=i}get isFirstAssignment(){return!!this.assignedVariantId&&this.state===void 0}get isFirstView(){return!!this.assignedVariantId&&(this.isEligible||this.isOnAssignedVariant)&&this.state!=="started"}get assignedVariant(){return this.assignedVariantId&&this.variants.find(t=>t.id===this.assignedVariantId)||null}get originalVariant(){return this.variants.find(t=>t.config.original)||null}get isOnAssignedVariant(){var t;return this.assignedVariantId?this.assignedVariantId===((t=this.currentVariant)==null?void 0:t.id):!1}get isEligible(){var t;return((t=this.eligibility)==null?void 0:t.status)==="eligible"}get firstNonDefaultEligibleVariant(){if(!this.eligibility||!this.eligibility.variants)return null;const t=Object.entries(this.eligibility.variants).filter(([i,s])=>s.status==="eligible").map(([i,s])=>i);return this.variantsByPosition().find(i=>t.includes(i.id)&&!i.config.original)||null}get inReview(){return this.type==="review"}get canDispatch(){return!!this.assignedVariant}get needsDispatch(){return this.assignedVariantId?!this.isOnAssignedVariant&&(this.inReview||this.isEligible):!1}evaluateEligibility(){const t=this.type=="ab_test"?this.evaluateAudienceEligibility():{status:"eligible",condition:void 0,expected:{},actual:{}},e=this.evaluateScopeEligibility(),i=this.evaluateVariantAudienceEligibility(),s=[t,e].every(r=>r.status==="eligible"||r.status==="match")&&(Object.keys(i).length===0||Object.values(i).some(r=>r.status==="eligible")),n=[t,e,...Object.values(i)].some(r=>r.status==="error");this.eligibility={status:s?"eligible":n?"error":"not_eligible",audience:t,scope:e,variants:i}}evaluateAudienceEligibility(){return this.audienceEvaluator.evaluateAll(this.config.audiences||[],this.config.audiences_condition||"every")}evaluateVariantAudienceEligibility(){const t={};for(const e of this.variants)e.config.audiences&&e.config.audiences.length>0?t[e.id]=this.audienceEvaluator.evaluateAll(e.config.audiences,e.config.audiences_condition||"every"):e.config.original||(t[e.id]={status:"eligible",condition:void 0,expected:{},actual:{}});return t}finalize(){this.isEligible&&this.removeViewParam()}extractPartialTemplateKey(t){if(!t)return;const e=t.split(".");return e.length<2?t:e.slice(0,-1).join(".")}variantForCurrentTemplate(){const t=this.pagePartialTemplateKey();return this.variants.find(e=>this.extractPartialTemplateKey(e.config.full_template_key)===t)||null}matchesCurrentTemplate(){return this.variantForCurrentTemplate()!==null}pagePartialTemplateKey(){const t=this.context.page.templateDirectory||(this.context.page.pageType==="metaobject"?"metaobject":null),e=t?`templates/${t}/`:"templates/",i=[this.context.page.templateName,this.context.page.templateSuffix].filter(Boolean).join(".");return e+i}extractViewParamFromFullTemplateKey(t){if(!t)return;const e=t.split("/").pop().split(".")||[];return e.slice(1,e.length-1).join(".")}variantsByPosition(){return this.variants.slice().sort((t,e)=>{const i=t.position||0,s=e.position||0;return i-s})}removeViewParam(){const t=new URL(window.location.href);t.searchParams.delete("view"),window.history.replaceState({},"",t.toString())}redirect(t){t.searchParams.delete("cache"),window.location.replace(t.toString())}}class N extends V{constructor(e,i,s){super(e,i,s);c(this,"buyItNowFinalizer",null);this.buyItNowFinalizer=new z({currentCartVariantId:this.context.page.currentCartVariantId,shopDomain:this.context.shop.shopDomain,storefrontAccessToken:this.context.shop.storefrontAccessToken})}get currentVariant(){return this.variants.find(e=>e.id===this.context.page.currentCartVariantId)||null}evaluateScopeEligibility(){return{status:"match",expected:this.scope,actual:this.scope}}
24dispatch(){this.dispatchCartAssignment(new URL(window.location.href))}dispatchCartAssignment(e){var n;const i=this.assignedVariant;if(!i)throw new Error(`Cannot dispatch ${this.scope} optimization because the assigned variant is not set`);const s=new XMLHttpRequest;if(s.open("POST","/cart/update.js",!1),s.setRequestHeader("Content-Type","application/json"),s.send(JSON.stringify({attributes:{shogun_variant_id:i==null?void 0:i.id}})),s.status===200){const r=(n=i==null?void 0:i.config)==null?void 0:n.theme_id;console.debug(`shogun: dispatching ${this.scope} optimization by setting cart attribute and reloading the page to reflect cart changes`+(r?` with theme_id '${r}'`:"")),this.redirect(e)}else throw new Error(`Failed to update cart for ${this.scope} optimization dispatch, status: ${s.status}`)}finalize(){var e;(this.isEligible||this.inReview)&&((e=this.buyItNowFinalizer)==null||e.run())}}class rt extends N{}class at extends V{get currentVariant(){return this.matchesPage()?this.variantForCurrentTemplate():null}matchesPage(){const{page_type:t,page_id:e}=this.config,i=!t||t===this.context.page.pageType,s=!e||e===this.context.page.pageId;return i&&s}evaluateScopeEligibility(){const{page_type:t,page_id:e}=this.config,i=new URLSearchParams(window.location.search).get("view");return i&&!this.variants.some(s=>this.extractViewParamFromFullTemplateKey(s.config.full_template_key)===i)?{status:"skipped",expected:void 0,actual:void 0,reason:"Visitor has view param that does not match any variant template keys, likely previewing a template change from theme editor"}:{status:this.scope==="page"&&this.matchesCurrentTemplate()&&this.matchesPage()?"match":"no_match",expected:{page_type:t,page_id:e},actual:{page_type:this.context.page.pageType,page_id:this.context.page.pageId}}}get canDispatch(){var t;return super.canDispatch&&!!this.extractViewParamFromFullTemplateKey((t=this.assignedVariant)==null?void 0:t.config.full_template_key)}dispatch(){var i,s,n;const t=new URL(window.location.href),e=this.extractViewParamFromFullTemplateKey((i=this.assignedVariant)==null?void 0:i.config.full_template_key);if(!e)throw new Error(`Assigned variant does not have a valid viewParam for dispatching full_template_key: ${(s=this.assignedVariant)==null?void 0:s.config.full_template_key}, variant: ${(n=this.assignedVariant)==null?void 0:n.id}`);t.searchParams.set("view",e),console.debug("shogun: Dispatching page optimization by redirecting to ",t.toString()),this.redirect(t)}}class ot extends N{}class ct extends N{}const B="_shogun_variant_id",x=`properties[${B}]`,dt=/\/cart\/add(\.js)?$/;class lt{constructor(t){c(this,"addToCartHandlerAttached",!1);c(this,"cartAddRequestInterceptionAttached",!1);this.config=t}run(){var e;const t=(e=this.config)==null?void 0:e.currentCartVariantId;if(!t){console.debug("shogun: no current cart variant ID assigned, add-to-cart interception skipped");return}this.interceptCartAddRequests(t),typeof document<"u"&&document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{this.attachAddToCartHandler(t)}):setTimeout(()=>{this.attachAddToCartHandler(t)},100)}attachAddToCartHandler(t){this.addToCartHandlerAttached||(this.addToCartHandlerAttached=!0,console.debug("shogun: setting up add-to-cart interception with cart variant ID:",t),document.querySelectorAll('form[action="/cart/add"]').forEach(e=>{const i=document.createElement("input");i.name=x,i.value=t,i.type="hidden",e.appendChild(i)}))}interceptCartAddRequests(t){this.cartAddRequestInterceptionAttached||(this.cartAddRequestInterceptionAttached=!0,this.interceptFetchCartAdd(t),this.interceptXhrCartAdd(t))}interceptFetchCartAdd(t){if(typeof window>"u"||typeof window.fetch!="function")return;const e=window.fetch,i=this;window.fetch=function(s,n){try{const r=((n==null?void 0:n.method)??(s instanceof Request?s.method:"GET")).toUpperCase(),d=s instanceof Request?s.url:String(s);if(r==="POST"&&i.isCartAddUrl(d)&&(n==null?void 0:n.body)!=null){const a=i.withShogunVariantProperty(n.body,t);if(a!==null)return e.call(this,s,{...n,body:a})}}catch(r){console.debug("shogun: failed to inject cart variant into fetch cart add request:",r)}return e.call(this,s,n)}}interceptXhrCartAdd(t){if(typeof XMLHttpRequest>"u")return;const e=XMLHttpRequest.prototype.open,i=XMLHttpRequest.prototype.send,s=this;XMLHttpRequest.prototype.open=function(n,r,d=!0,a,l){return this.__shogunIsCartAdd=(n==null?void 0:n.toUpperCase())==="POST"&&s.isCartAddUrl(String(r)),e.call(this,n,r,d,a,l)},XMLHttpRequest.prototype.send=function(n){if(this.__shogunIsCartAdd&&n!=null&&!(n instanceof Document))try{const r=s.withShogunVariantProperty(n,t);if(r!==null)return i.call(this,r)}catch(r){console.debug("shogun: failed to inject cart variant into XHR cart add request:",r)}return i.call(this,n)}}isCartAddUrl(t){try{const e=new URL(t,window.location.origin);return e.origin===window.location.origin&&dt.test(e.pathname)}catch{return!1}}withShogunVariantProperty(t,e){return t instanceof FormData||t instanceof URLSearchParams?(t.has(x)||t.append(x,e),t):typeof t=="string"?this.withShogunVariantPropertyInString(t,e):null}withShogunVariantPropertyInString(t,e){try{const s=JSON.parse(t);return s&&typeof s=="object"&&!Array.isArray(s)?JSON.stringify(this.withShogunVariantPropertyInPayload(s,e)):null}catch{}if(!t.includes("="))return null;const i=new URLSearchParams(t);return i.has(x)||i.append(x,e),i.toString()}withShogunVariantPropertyInPayload(t,e){return Array.isArray(t.items)?{...t,items:t.items.map(i=>i&&typeof i=="object"?{...i,properties:this.withVariantProperty(i.properties,e)}:i)}:"id"in t?{...t,properties:this.withVariantProperty(t.properties,e)}:t}withVariantProperty(t,e){const i=t&&typeof t=="object"?t:{};return i[B]!=null?i:{...i,[B]:e}}}const R=class R{constructor(){c(this,"observer",null)}removePreviewBar(t){t instanceof Element&&t.matches(R.PREVIEW_BAR_IFRAME_SELECTOR)&&(console.debug(`shogun: Removing preview bar iframe with id: ${t.id}`),t.remove(),this.stop()),t.querySelectorAll(R.PREVIEW_BAR_IFRAME_SELECTOR).forEac
24h(e=>{console.debug(`shogun: Removing preview bar iframe with id: ${e.id}`),e.remove(),this.stop()})}run(){if(this.observer)return;const t=document.documentElement;t&&(this.observer=new MutationObserver(e=>{for(const i of e)for(const s of i.addedNodes)s instanceof Element&&this.removePreviewBar(s)}),this.observer.observe(t,{childList:!0,subtree:!0}),this.removePreviewBar(document))}stop(){var t;(t=this.observer)==null||t.disconnect(),this.observer=null}};c(R,"PREVIEW_BAR_IFRAME_SELECTOR","#preview-bar-iframe, #PBarNextFrameWrapper");let F=R;class ht extends N{constructor(e,i,s){super(e,i,s);c(this,"addToCartFinalizer",null);c(this,"themePreviewFinalizer",null);this.buyItNowFinalizer=new z({currentCartVariantId:this.context.page.currentCartVariantId,shopDomain:this.context.shop.shopDomain,storefrontAccessToken:this.context.shop.storefrontAccessToken,lineItemLevelVariant:!0}),this.addToCartFinalizer=new lt({currentCartVariantId:this.context.page.currentCartVariantId})}get currentVariant(){const e=super.currentVariant;if(!e)return null;const i=e.config.theme_id;return i?i===this.context.page.themeId?e:null:e}dispatch(){var s;const e=new URL(window.location.href),i=(s=this.assignedVariant)==null?void 0:s.config.theme_id;i&&i!==this.context.page.themeId&&e.searchParams.set("preview_theme_id",i),this.dispatchCartAssignment(e)}finalize(){var e,i,s,n;(this.isEligible||this.inReview)&&((e=this.addToCartFinalizer)==null||e.run(),(i=this.buyItNowFinalizer)==null||i.run()),this.isOnAssignedVariant&&((s=this.assignedVariant)!=null&&s.config.theme_id)&&(this.themePreviewFinalizer||(this.themePreviewFinalizer=new F),(n=this.themePreviewFinalizer)==null||n.run())}}class ut extends V{get currentVariant(){return this.variantForCurrentTemplate()}evaluateScopeEligibility(){const t=this.pagePartialTemplateKey();return{status:this.matchesCurrentTemplate()?"match":"no_match",expected:t,actual:t}}get canDispatch(){var t;return super.canDispatch&&!!this.extractViewParamFromFullTemplateKey((t=this.assignedVariant)==null?void 0:t.config.full_template_key)}dispatch(){var i,s,n;const t=new URL(window.location.href),e=this.extractViewParamFromFullTemplateKey((i=this.assignedVariant)==null?void 0:i.config.full_template_key);if(!e)throw new Error(`Assigned variant does not have a valid viewParam for dispatching full_template_key: ${(s=this.assignedVariant)==null?void 0:s.config.full_template_key}, variant: ${(n=this.assignedVariant)==null?void 0:n.id}`);t.searchParams.set("view",e),console.debug("shogun: Dispatching template optimization by redirecting to ",t.toString()),this.redirect(t)}}class J extends V{constructor(e,i,s){super(e,i,s);c(this,"themePreviewFinalizer",null);this.themePreviewFinalizer=new F}get currentVariant(){return this.variants.find(e=>e.config.theme_id===this.context.page.themeId)||null}evaluateScopeEligibility(){if(!this.originalVariant)return{status:"error",expected:void 0,actual:void 0,reason:"Original variant is missing"};const e=this.originalVariant.config.theme_id;return e?{status:e===this.context.page.themeId?"match":"no_match",expected:e,actual:this.context.page.themeId}:{status:"error",expected:void 0,actual:void 0,reason:"Original variant is missing theme_id in config"}}
24get needsDispatch(){return this.isEligible&&!this.isOnAssignedVariant&&this.isFirstView}get canDispatch(){var e;return super.canDispatch&&!!((e=this.assignedVariant)!=null&&e.config.theme_id)}dispatch(){var s,n;const e=(s=this.assignedVariant)==null?void 0:s.config.theme_id;if(!e)throw new Error(`Assigned variant does not have a valid theme_id for dispatching, variant: ${(n=this.assignedVariant)==null?void 0:n.id}`);const i=new URL(window.location.href);i.searchParams.set("preview_theme_id",e),console.debug("shogun: Dispatching theme optimization by redirecting to ",i.toString()),this.redirect(i)}finalize(){var e;this.isOnAssignedVariant&&((e=this.themePreviewFinalizer)==null||e.run())}}c(J,"PREVIEW_BAR_IFRAME_IDS",["preview-bar-iframe","PBarNextFrameWrapper"]);class gt extends V{get currentVariant(){const t=decodeURIComponent(this.getCurrentPathWithoutLanguagePrefix());return this.variants.find(e=>e.config.path===t)||null}evaluateScopeEligibility(){const t=this.variants.find(r=>r.config.original);if(!t)return{status:"error",expected:void 0,actual:void 0,reason:"Original variant is missing"};const e=t.config.path;if(!e)return{status:"error",expected:void 0,actual:void 0,reason:"Original variant is missing path in config"};if(new URL(window.location.href).searchParams.get("view"))return{status:"skipped",expected:void 0,actual:void 0,reason:"Visitor is likely previewing a template change from theme editor"};const s=this.getCurrentPathWithoutLanguagePrefix(),n=decodeURIComponent(s);return{status:decodeURIComponent(e)===n?"match":"no_match",expected:e,actual:n}}get needsDispatch(){return!this.assignedVariantId||!this.isEligible?!1:(console.debug("shogun: Checking if URL redirect optimization needs dispatch. isOnAssignedVariant:",this.isOnAssignedVariant,"isFirstView:",this.isFirstView,"permanentRedirect:",this.config.permanent_redirect),this.config.permanent_redirect===!0&&!this.isOnAssignedVariant||!this.isOnAssignedVariant&&this.isFirstView===!0)}get canDispatch(){var t;return super.canDispatch&&!!((t=this.assignedVariant)!=null&&t.config.path)}get isOnAssignedVariant(){var e;if(super.isOnAssignedVariant)return!0;const t=((e=this.currentVariant)==null?void 0:e.config.original)===!0;return!!this.assignedVariantId&&t&&this.state==="started"&&this.config.permanent_redirect!==!0}dispatch(){var e,i,s,n,r;const t=new URL(window.location.href);if(!((e=this.assignedVariant)!=null&&e.config.path))throw new Error(`Assigned variant does not have a valid path for dispatching path: ${(i=this.assignedVariant)==null?void 0:i.config.path}, variant: ${(s=this.assignedVariant)==null?void 0:s.id}`);t.pathname=this.context.page.languageRootUrl!=="/"?this.context.page.languageRootUrl+((n=this.assignedVariant)==null?void 0:n.config.path):(r=this.assignedVariant)==null?void 0:r.config.path,console.debug("shogun: Dispatching url optimization by redirecting to ",t.toString()),this.redirect(t)}getCurrentPathWithoutLanguagePrefix(){return this.context.page.languageRootUrl==="/"||!this.context.page.path.startsWith(this.context.page.languageRootUrl)?this.context.page.path:this.context.page.path.replace(this.context.page.languageRootUrl,"")}}function X(o,t,e){switch(o.scope){case"page":return new at(o,t,e);case"template":return new ut(o,t,e);case"theme":return new J(o,t,e);case"url_redirect":return new gt(o,t,e);case"price":return new ot(o,t,e);case"product_details":return new ct(o,t,e);case"checkout":return new rt(o,t,e);case"shipping":return new ht(o,t,e);default:return console.debug(`shogun: No implementation for optimization scope '${o.scope}', ignoring optimization '${o.name}' (${o.id})`),null}}class H{constructor(t){c(this,"visitorBin");this.visitorBin=t}getRandomVariantForVisitorBin(t){let e=null,i=0;for(const s of t)if(i+=T.DEFAULT_NUMBER_OF_BINS*this.trafficForVariant(s)/100,this.visitorBin<i){e=s;break}return e||null}trafficForVariant(t){return t.config.percentage||0}}const k=class k extends H{assign(t){var s,n;if(t.length===0)return null;const e=this.sortOptimizationsByPriority(t),i=e.find(r=>r.firstNonDefaultEligibleVariant!==null);return i?(i.assignedVariantId=(s=i.firstNonDefaultEligibleVariant)==null?void 0:s.id,i):(e[0].assignedVariantId=(n=e[0].originalVariant)==null?void 0:n.id,e[0])}sortOptimizationsByPriority(t){return t.sort((e,i)=>{const s=this.scopePriority(e.scope),n=this.scopePriority(i.scope);return s-n})}
24scopePriority(t){return k.SCOPE_PRIORITIES[t||"page"]??k.SCOPE_PRIORITIES.page}};c(k,"SCOPE_PRIORITIES",{theme:1,template:2,page:3,url_redirect:4,price:5,product_details:6,checkout:7,shipping:8});let K=k;class Z extends H{assign(t){const e=t.filter(n=>n.isEligible);if(e.length===0)return null;const i=e[Math.floor(Math.random()*e.length)],s=this.getRandomVariantForVisitorBin(i.variants);return s?(i.assignedVariantId=s.id,i):null}}class pt extends H{assign(t){const e=t.flatMap(n=>n.variants),i=this.getRandomVariantForVisitorBin(e),s=t.find(n=>n.variants.some(r=>r.id===(i==null?void 0:i.id)))||null;return s&&i?(s.assignedVariantId=i.id,s):null}trafficForVariant(t){return t.traffic_percentage||0}}const O=class O{constructor(){c(this,"storage",new v("session"))}save(){typeof document>"u"||this.storage.set(O.STORAGE_KEY,document.referrer)||console.debug("shogun: could not retain the referrer, this visitor will be attributed to an internal redirect")}restore(){const t=this.storage.get(O.STORAGE_KEY);return t===null?typeof document<"u"&&document.referrer||null:(this.overrideDocumentReferrer(t),t||null)}clear(){this.storage.remove(O.STORAGE_KEY)}overrideDocumentReferrer(t){if(!(typeof document>"u"))try{Object.defineProperty(document,"referrer",{configurable:!0,get:()=>t})}catch(e){console.debug("shogun: failed to set original referrer via `Object.defineProperty`"),console.error(e);try{window.document.__defineGetter__("referrer",()=>t)}catch(i){console.debug("shogun: failed to set original referrer via `__defineGetter__`"),console.error(i)}}}};c(O,"STORAGE_KEY","_shg_referrer");let Y=O;const p=class p{constructor(t,e){c(this,"storage",new v("session"));c(this,"previewLinkHandlerAttached",!1);c(this,"_optimizationInReview");c(this,"optimizationResolved",!1);this.context=t,this.audienceEvaluator=e}get inReview(){return!!this.optimizationInReview}get optimizationInReview(){if(!this.optimizationResolved){const t=this.previewVariantId;this._optimizationInReview=t?X({id:"review-optimization",name:"Review Optimization",type:"review",scope:this.previewScope,state:"started",variants:[{id:t,name:"Preview Variant",optimization_id:"review-optimization",traffic_percentage:100,config:{original:!1,percentage:100}}],assignedVariantId:t},{page:this.context.page,shop:this.context.shop},this.audienceEvaluator):null,this.optimizationResolved=!0}return this._optimizationInReview||null}run(){const t=document.getElementById(p.PANEL_TEMPLATE_ID);if(!t){console.debug("shogun: sidebar not found!!!");return}const e=t.content.cloneNode(!0);this.attachPreviewLinkClickHandler();const i=()=>{document.body.style.paddingLeft="360px",document.body.style.paddingTop="50px",document.body.prepend(e),typeof window.restoreCollapsedState=="function"&&window.restoreCollapsedState(),typeof window.restoreDescriptionHeightState=="function"&&window.restoreDescriptionHeightState()};if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",i);return}i()}get previewVariantId(){const e=new URLSearchParams(window.location.search).get(p.REVIEW_OPTIMIZATION_VARIANT_ID_PARAM),i=this.storage.get(p.PREVIEW_VARIANT_ID_STORAGE_KEY);return e&&e!==i?(console.debug(`shogun: theme review in progress, setting variant: ${e}`),this.storage.set(p.PREVIEW_VARIANT_ID_STORAGE_KEY,e),e):(i&&console.debug(`shogun: theme review in progress, viewing variant: ${i}`),i)}get previewScope(){const e=new URLSearchParams(window.location.search).get(p.REVIEW_OPTIMIZATION_SCOPE_PARAM),i=this.storage.get(p.PREVIEW_OPTIMIZATION_SCOPE_STORAGE_KEY);return e&&e!==i?(console.debug(`shogun: theme review in progress, setting scope: ${e}`),this.storage.set(p.PREVIEW_OPTIMIZATION_SCOPE_STORAGE_KEY,e),e):i?(console.debug(`shogun: theme review in progress, using scope: ${i}`),i):p.DEFAULT_REVIEW_SCOPE}attachPreviewLinkClickHandler(){this.previewLinkHandlerAttached||(this.previewLinkHandlerAttached=!0,document.addEventListener("click",t=>{var n,r;const e=(r=(n=t.target).closest)==null?void 0:r.call(n,'a[id^="shg-preview-btn-"]'),i=e==null?void 0:e.dataset.variantId;if(!i)return;t.preventDefault();const s=new URLSearchParams(window.location.search);s.set(p.REVIEW_OPTIMIZATION_VARIANT_ID_PARAM,i),window.location.href=`${window.location.pathname}?${s.toString()}`}))}};c(p,"PANEL_TEMPLATE_ID","shogun-price-test-preview"),c(p,"PREVIEW_VARIANT_ID_
24STORAGE_KEY","_shg_preview_variant_id"),c(p,"PREVIEW_OPTIMIZATION_SCOPE_STORAGE_KEY","_shg_preview_optimization_scope"),c(p,"REVIEW_OPTIMIZATION_VARIANT_ID_PARAM","shgpvid"),c(p,"REVIEW_OPTIMIZATION_SCOPE_PARAM","shgsc"),c(p,"DEFAULT_REVIEW_SCOPE","product_details");let j=p;var ft=" daum[ /]| deusu/|(?:^|[^g])news(?!sapphire)|(?<! channel/|google/)google(?!(?:wv|app|/google| pixel))|(?<! cu)bots?(?:\\b|_)|(?<!cam)scan|(?<!lib)http|24x7|;\\s\\w+;$|@[a-z][\\w-]+\\.|\\(\\)|\\.com\\b|\\b\\w+/1\\.0;|\\bbw/|\\bdlc\\b|\\bort/|\\bperl\\b|\\btime/|\\||^[<\\(;]|^[\\w \\.\\-\\(?:\\):%]+(?:/v?\\d+(?:\\.\\d+)?(?:\\.\\d{1,10})*?)?(?:,|$)|^[\\w\\-]+/[\\w]+$|^[^ ]{50,}$|^\\d+\\b|^\\w*search\\b|^\\w+/[\\w\\(\\)]*$|^\\w+/\\d\\.\\d\\s\\([\\w@]+\\)$|^active|^ad muncher|^amaya|^apache/|^avsdevicesdk/|^azure|^biglotron|^blackbox exporter|^bot|^clamav[ /]|^claude-code/|^client/|^cobweb/|^custom|^ddg[_-]android|^discourse|^dispatch/\\d|^downcast/|^duckduckgo|^email|^exodusmovement|^facebook|^getright/|^gozilla/|^hobbit|^hotzonu|^hwcdn/|^igetter/|^jeode/|^jetty/|^jigsaw|^microsoft bits|^movabletype|^mozilla/\\d\\.\\d\\s[\\w\\.-]+$|^mozilla/\\d\\.\\d\\s\\((?:compatible;)?(?:\\s?[\\w\\d-.]+\\/\\d+\\.\\d+)?\\)$|^navermailapp|^netsurf|^offline|^openai/|^owler|^php|^postman|^ps_daily/|^python|^rank|^read|^reed|^remove\\.bg/|^rest|^rss|^snapchat|^sora |^space bison|^stape/|^svn|^swcd |^taringa|^thumbor/|^track|^w3c|^webbandit/|^webcopier|^wget|^whatsapp|^wordpress|^xenu link sleuth|^yahoo|^yandex|^zdm/\\d|^zoom marketplace/|abuse|advisor|agent\\b|analyzer|archive|ask jeeves/teoma|attracta|audit|bluecoat drtr|browsex|burpcollaborator|capture|catch|check\\b|checker|chrome-lighthouse|chromeframe|classifier|cloudflare|collapsify\\b|convertify|cookiehubverify/|crawl|cursor/|cypress/|dareboost|datanyze|dejaclick|detect|discovery|dmbrowser|download|exaleadcloudview|feed|firephp|foregenix|functionize|grab|hardenize\\b|headless|hotjar|httrack|hubspot marketing grader|ibisbrowser|infrawatch|insight|inspect|iplabel|java(?!;)|library|linkcheck|linktiger|mail\\.ru/|manager|manus-user/|marketgoo/|measure|monitor\\b|neustar wpm|node\\b|nutch|offbyone|openvas|optimize|pageburst|pagespeed|parser|phantomjs|pingdom|playwright|powermarks|preview|productfinder|prospectingstudio|proxy|ptst[ /]\\d|radar|readable/|retriever|rexx;|rigor|rss\\b|scrape|securityheaders|selenium|server|silktide|sindup/|sogou|sparkler/|speedcurve|spider|splash|statuscake|supercleaner|synapse|synthetic|testlocally|tools|torrent|transcoder|url|validator|virtuoso|wappalyzer|watchtowr|webglance|webkit2png|whatcms/|xtate/",mt=/bot|crawl|http|lighthouse|scan|search|spider/i,C;function vt(){if(C instanceof RegExp)return C;try{C=new RegExp(ft,"i")}catch{C=mt}return C}var wt=o=>typeof o=="string"&&o!=="";function _t(o){return wt(o)&&vt().test(o)}var bt=_t;const f=class f{constructor(t){c(this,"storage",new v("local"));this.publishedOptimizationIds=t}get writable(){return this.storage.writable}get legacyEntries(){return Object.values(this.getState()).filter(t=>typeof t=="string").length}get(t){const e=this.getState()[t];return!e||typeof e=="string"?void 0:{...e,state:e.state??"started"}}update(t){var r,d,a,l;if(t.type!=="ab_test"||t.inReview)return!0;console.debug(`shogun: Caching assignment for optimization: '${t.name}' (${t.id}) to variant: '${(r=t.assignedVariant)==null?void 0:r.name}' (${(d=t.assignedVariant)==null?void 0:d.id})'`);const e=this.getState(),i=t.state??"assigned",s=e[t.id],n=s&&typeof s=="object"?s.assignedAt:t.assignedAt??(t.isFirstAssignment?Date.now():void 0);return t.assignedAt=n,this.storage.set(f.STORAGE_KEY,JSON.stringify({...e,[t.id]:{variantId:t.assignedVariantId,themeId:(l=(a=t.assignedVariant)==null?void 0:a.config)==null?void 0:l.theme_id,state:i,assignedAt:n}}))}markDispatched(t){const e=this.getState(),i=e[t];if(!i||typeof i!="object")return null;const s=Date.now();return this.storage.set(f.STORAGE_KEY,JSON.stringify({...e,[t]:{...i,dispatchedAt:s}}))?s:null}pendingDispatch(){let t;try{t=JSON.parse(this.storage.get(f.STORAGE_KEY)||"{}")??{}}catch{return null}for(const[e,i]of Object.entries(t))if(i&&typeof i=="object"&&typeof i.dispatchedAt=="number"){const s=typeof i.landedAt=="number"?i.landedAt:void 0;return{optimizationId:e,variantId:i.variantId,dispatchedAt:i.dispatchedAt,landedAt:s}}return null}markLanded(t,e){const i=this.getState(),s=i[t];!s||typeof s!="object"||s.dispatchedAt!==e||this.storage.set(f.STORAGE_KEY,JSON.stringify({...i,[t]:{...s,landedAt:Date.now()}}))}clearDispatched(){const t=this.getState(),e=Object.keys(t).filter(i=>{const s=t[i];return typeof s=="object"&&s!==null&&(s.dispatchedAt!==void 0||s.landedAt!==void 0)});e.length!==0&&(e.forEach(i=>
24{const{dispatchedAt:s,landedAt:n,...r}=t[i];t[i]=r}),this.storage.set(f.STORAGE_KEY,JSON.stringify(t)))}clearExpired(){const t=this.getState();if(this.expiredOptimizationIds().forEach(i=>delete t[i]),!this.storage.set(f.STORAGE_KEY,JSON.stringify(t))){console.debug("shogun: could not clear expired optimization state, not redirecting so the visitor is not sent round in a loop");return}console.debug("shogun: cleared expired optimization state, redirecting to default theme");const e=new URL(window.location.href);e.searchParams.set(f.PREVIEW_THEME_PARAM,""),window.location.replace(e.toString())}hasExpiredEntries(){return this.expiredOptimizationIds().length>0}expiredOptimizationIds(){return Object.entries(this.getState()).filter(([t,e])=>typeof e=="string"?!0:!!e.themeId).map(([t])=>t).filter(t=>!this.publishedOptimizationIds.includes(t))}getState(){try{const t=JSON.parse(this.storage.get(f.STORAGE_KEY)||"{}");return!t||typeof t!="object"||Array.isArray(t)?{}:t}catch{return this.storage.remove(f.STORAGE_KEY),{}}}};c(f,"STORAGE_KEY","_shg_ab_optimizations_cache"),c(f,"PREVIEW_THEME_PARAM","preview_theme_id");let q=f;function Q(){const o=At(),t=yt();return{navigation_type:(o==null?void 0:o.type)??null,prerendering:t.prerendering,activation_start:typeof(o==null?void 0:o.activationStart)=="number"?Math.round(o.activationStart):null,visibility:t.visibility,elapsed_ms:It(),webdriver:Et()}}function yt(){try{return{prerendering:"prerendering"in document?!!document.prerendering:null,visibility:document.visibilityState??null}}catch(o){return console.debug("shogun: could not read the state of this page",o),{prerendering:null,visibility:null}}}function It(){try{return Math.round(performance.now())}catch(o){return console.debug("shogun: could not read how long this page has been loading",o),null}}function Et(){try{return"webdriver"in navigator?!!navigator.webdriver:null}catch(o){return console.debug("shogun: could not read whether this page is driven by automation",o),null}}function At(){try{return performance.getEntriesByType("navigation")[0]??null}catch(o){return console.debug("shogun: could not read the navigation timing for this page",o),null}}const tt={visitor_consent:null,banner:null,region:null};function et(o){var t,e,i;if(!o)return tt;try{return{visitor_consent:((t=o.currentVisitorConsent)==null?void 0:t.call(o))??null,banner:((e=o.shouldShowBanner)==null?void 0:e.call(o))??null,region:((i=o.getRegion)==null?void 0:i.call(o))||null}}catch(s){return console.debug("shogun: could not read the consent state",s),tt}}const y=class y{constructor(t){c(this,"pixelTrackingStarted",!1);c(this,"assignedOptimization",null);c(this,"pageViewId",y.newPageViewId());this.context=t}static newPageViewId(){try{return crypto.randomUUID()}catch{return null}}get configLapsed(){const t=this.context.shop.configExpiresAt;return typeof t=="number"&&Date.now()-t>=y.CONFIG_LAPSE_GRACE_MS}static isoOrNull(t){if(typeof t!="number"||!Number.isFinite(t))return null;const e=new Date(t);return Number.isNaN(e.getTime())?null:e.toISOString()}async track(t,e,{reason:i,details:s}={}){var d,a,l;if(e!=null&&e.inReview||this.configLapsed)return;console.debug(`shogun: tracking event '${t}' for optimization '${(e==null?void 0:e.name)||"none"}' (${(e==null?void 0:e.id)||"none"}) ${i?`with reason '${i}'`:""}`),this.assignedOptimization=e??this.assignedOptimization,(t=="started"||t=="viewed"||t=="skipped")&&this.startPixelTracking(t==="started").catch(u=>this.reportCollectionFailure(u));const n=(d=window.Shopify)==null?void 0:d.customerPrivacy;let r=!1;try{r=(n==null?void 0:n.analyticsProcessingAllowed())??!1}catch(u){console.debug("shogun: could not read the consent status",u)}try{const u=await fetch(`${this.context.shop.analyticsUrl}/dispatcher/${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,shop_id:this.context.shop.shopId,pageview_id:this.pageViewId,session_id:this.context.visitor.sessionId,visitor_id:this.context.visitor.id,optimization_id:e==null?void 0:e.id,variant_id:(a=e==null?void 0:e.assignedVariant)==null?void 0:a.id,reason:i,details:{optimization_ids:this.context.publishedOptimizations.map(h=>h.id),distribution_method:this.context.assignmentStrategy,context:this.context.page,default_theme_id:this.context.shop.defaultThemeId??null,legacy_cache_entries:this.context.legacyCacheEntries,client_timestamp:new Date().toISOString(),optimizations:this.context.publishedOptimizations.map(h=>({id:h.id,assigned_variant_id:h.assignedVariantId,first_assignment:h.isFirstAssignment,assigned_at:y.isoOrNull(h.assignedAt),eligibility:h.eligibility}
24)),from_dispatch_at:y.isoOrNull(this.context.fromDispatchAt),first_visit_at:this.context.visitor.detailsPersisted?y.isoOrNull((l=this.context.visitor.details)==null?void 0:l.first_visit_timestamp):null,consented:r,consent_api:n?"available":"unavailable",consent:et(n),environment:{version:this.context.version,storage:this.context.storage,config_expires_at:y.isoOrNull(this.context.configExpiresAt),...this.context.deferral,...Q()},...s}}),keepalive:!0});u.ok||console.error(`shogun: the analytics endpoint refused the '${t}' event with status ${u.status}, it was not recorded`)}catch(u){console.error("shogun: failed to send tracking event",u)}}static async trackLanded(t){var e;try{const i=await fetch(`${t.analyticsUrl}/dispatcher/landed`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:"landed",shop_id:t.shopId,pageview_id:null,session_id:t.visitor.sessionId,visitor_id:t.visitor.id,optimization_id:t.optimization.id,variant_id:t.optimization.variantId,details:{context:t.page,client_timestamp:new Date().toISOString(),from_dispatch_at:y.isoOrNull(t.dispatchedAt),consent:et((e=window.Shopify)==null?void 0:e.customerPrivacy),environment:{version:t.version,...Q()}}}),keepalive:!0});return i.ok||console.error(`shogun: the analytics endpoint refused the 'landed' event with status ${i.status}, it was not recorded`),i.ok}catch(i){return console.error("shogun: failed to send tracking event",i),!1}}async startPixelTracking(t=!1){var n,r,d,a,l;if(console.debug("shogun: attempting to start pixel tracking for optimizations"),this.pixelTrackingStarted)return;const e=Date.now(),[i,s]=await Promise.all([this.getCustomerPrivacy(),this.getAnalytics()]);i.analyticsProcessingAllowed()||(console.debug("shogun: Visitor has not consented to tracking, unable to start pixel tracking for optimizations, waiting for consent..."),await this.waitForConsent(i),this.track("consented",this.assignedOptimization??void 0).catch(u=>console.error("shogun: could not report consent",u))),console.debug("shogun: Visitor has consented to tracking, starting pixel tracking for optimizations");try{s.publish("shogun:load",{app_type:((n=this.assignedOptimization)==null?void 0:n.type)=="personalization"?"personalization":"ab_testing",page_type:this.context.page.pageType,page_id:this.context.page.pageId,optimization_id:((r=this.assignedOptimization)==null?void 0:r.id)??null,variant_id:((a=(d=this.assignedOptimization)==null?void 0:d.assignedVariant)==null?void 0:a.id)??null,on_assigned_variant:((l=this.assignedOptimization)==null?void 0:l.isOnAssignedVariant)??!1,session_id:this.context.visitor.sessionId,visitor_id:this.context.visitor.id,pageview_id:this.pageViewId,original_referrer:this.context.originalReferrer}),this.pixelTrackingStarted=!0}catch(u){this.reportCollectionFailure(u);return}t&&this.track("collecting",this.assignedOptimization??void 0,{details:{waited_ms:Date.now()-e}}).catch(u=>console.error("shogun: could not report that collection started",u))}reportCollectionFailure(t){console.error("shogun: pixel tracking did not start, this visitor will not be collected",t);const e=t instanceof A?t.reason:"analytics_unavailable";this.track("errored",this.assignedOptimization??void 0,{reason:e,details:{error:t instanceof Error?{message:t.message,stack:t.stack}:String(t)}}).catch(i=>console.error("shogun: could not report the collection failure",i))}async getShopify(){return this.until(()=>window.Shopify,"Timed out waiting for Shopify API","analytics_unavailable")}
24async getAnalytics(){const t=await this.getShopify();return this.until(()=>{const e=t.analytics;return e!=null&&e.publish?e:void 0},"Timed out waiting for Shopify analytics API","analytics_unavailable")}async getCustomerPrivacy(){const t=await this.getShopify();return t!=null&&t.customerPrivacy?t.customerPrivacy:(await this.loadConsentTrackingApi(),this.until(()=>{var e;return(e=window.Shopify)==null?void 0:e.customerPrivacy},"Timed out waiting for Shopify customerPrivacy API","analytics_unavailable"))}loadConsentTrackingApi(){return new Promise((t,e)=>{const i=window.Shopify;if(!(i!=null&&i.loadFeatures)){e(new A("Shopify.loadFeatures is not available","analytics_unavailable"));return}i.loadFeatures([{name:"consent-tracking-api",version:"0.1"}],s=>{s&&s.length>0?e(s[0]):t()})})}waitForConsent(t){return t.analyticsProcessingAllowed()?Promise.resolve():new Promise((e,i)=>{let s=!1,n=!1;const r=()=>{document.removeEventListener("visitorConsentCollected",d)},d=()=>{try{s=t.analyticsProcessingAllowed(),s||(n=!0)}catch(a){console.debug("shogun: could not read the consent status after it was collected",a)}};document.addEventListener("visitorConsentCollected",d),this.until(()=>s?!0:void 0,"Timed out waiting for user consent","consent_timeout").then(()=>{r(),e()}).catch(a=>{r(),i(n?new A("Consent was declined","consent_declined",{cause:a}):a)})})}until(t,e,i,{intervalMs:s=250,timeoutMs:n=15e3}={}){return new Promise((r,d)=>{const a=t();if(a){r(a);return}const l=Date.now(),u=window.setInterval(()=>{const h=t();if(h){window.clearInterval(u),r(h);return}Date.now()-l>n&&(window.clearInterval(u),d(new A(e,i)))},s)})}};c(y,"CONFIG_LAPSE_GRACE_MS",4320*60*1e3);let L=y;class St{constructor(t){c(this,"deferredAt",null);c(this,"shownAt",null);c(this,"resume",()=>{this.hidden||(this.shownAt===null&&(this.shownAt=Date.now()),this.onShown())});this.onShown=t}get hidden(){try{const t=document.visibilityState;return!!document.prerendering||t==="hidden"||t==="prerender"}catch(t){return console.debug("shogun: could not read whether the page is visible, treating it as visible",t),!1}}holdUntilShown(){if(!this.hidden)return!1;if(this.deferredAt!==null)return!0;try{this.listen(!0)}catch(t){return console.debug("shogun: could not wait for the page to be shown, running now",t),this.release(),!1}return this.deferredAt=Date.now(),!0}release(){try{this.listen(!1)}catch(t){console.debug("shogun: could not stop waiting for the page to be shown",t)}}get deferral(){return this.deferredAt===null?{was_hidden:!1,hidden_ms:0}:{was_hidden:!0,hidden_ms:(this.shownAt??Date.now())-this.deferredAt}}listen(t){const e=t?"addEventListener":"removeEventListener";document[e]("visibilitychange",this.resume),document[e]("prerenderingchange",this.resume),window[e]("pageshow",this.resume)}}const Ot=["gclid","gbraid","wbraid","fbclid","ttclid","msclkid","srsltid"],Pt=64;function Tt(o,t){const e=Vt(o);return{click_ids:Ot.filter(i=>e==null?void 0:e.has(i)),utm_source:W(e==null?void 0:e.get("utm_source")),utm_medium:W(e==null?void 0:e.get("utm_medium")),utm_campaign:W(e==null?void 0:e.get("utm_campaign")),referrer_host:xt(t)}}function Vt(o){try{return new URL(o).searchParams}catch{return null}}function xt(o){if(!o)return null;try{return new URL(o).host||null}catch{return null}}function W(o){return o?o.slice(0,Pt):null}const Ct={location_unavailable:"location_unavailable",visitor_details_unavailable:"storage_unavailable"},it=o=>o instanceof Error?{message:o.message,stack:o.stack}:String(o),w=class w{constructor(t){c(this,"retainedReferrer");c(this,"originalReferrer");c(this,"optimizationCache");c(this,"_visitor");c(this,"_audienceEvaluator");c(this,"_optimizationReview");c(this,"attemptsStore",new v("session"));c(this,"tracker");c(this,"hasRun",!1);c(this,"pageVisibility",new St(()=>this.run()));c(this,"legacyCacheEntries",0);c(this,"_publishedOptimizations");c(this,"_assignedOptimization");c(this,"fromDispatchAt",null);this.context=t,this.retainedReferrer=new Y,this.originalReferrer=this.retainedReferrer.restore(),this.optimizationCache=new q(t.publishedOptimizations.map(e=>e.id)),this.reportHeldLanding()}reportHeldLanding(){try{if(!this.pageVisibility.hidden)return;const t=this.optimizationCache.pendingDispatch();if(!t||t.landedAt!==void 0)return;
24L.trackLanded({analyticsUrl:this.context.shop.analyticsUrl,shopId:this.context.shop.shopId,version:w.VERSION,page:this.context.page,visitor:T.storedIds(),optimization:{id:t.optimizationId,variantId:t.variantId},dispatchedAt:t.dispatchedAt}).then(e=>{e&&this.optimizationCache.markLanded(t.optimizationId,t.dispatchedAt)}).catch(e=>console.debug("shogun: could not note that a hidden landing was reported",e))}catch(t){console.debug("shogun: could not report a page that loaded hidden after a redirect",t)}}get visitor(){return this._visitor||(this._visitor=new T(this.context.session)),this._visitor}get audienceEvaluator(){return this._audienceEvaluator||(this._audienceEvaluator=new nt(this.visitor,this.context.shop.geoLocationApi)),this._audienceEvaluator}get optimizationReview(){return this._optimizationReview||(this._optimizationReview=new j(this.context,this.audienceEvaluator)),this._optimizationReview}get publishedOptimizations(){return this._publishedOptimizations||(this._publishedOptimizations=this.context.publishedOptimizations.flatMap(t=>{var r,d;const e=this.optimizationCache.get(t.id),i=(e==null?void 0:e.variantId)||t.assignedVariantId,s=(e==null?void 0:e.state)||t.state,n=(e==null?void 0:e.assignedAt)??t.assignedAt;if(i){const a=((d=(r=t.variants)==null?void 0:r.find(l=>l.id===i))==null?void 0:d.name)||i;console.debug(`shogun: Found cached optimization for optimization: '${t.name}' (${t.id}), with variant: '${a}' (${i})`)}return X({...t,assignedVariantId:i,state:s,assignedAt:n},{page:this.context.page,shop:this.context.shop},this.audienceEvaluator)??[]})),this._publishedOptimizations}get abTestStrategy(){switch(this.context.assignmentStrategy){case"greedy":return new Z(this.visitor.bin);case"even":return new pt(this.visitor.bin);default:return new Z(this.visitor.bin)}}get personalizationStrategy(){return new K(this.visitor.bin)}get assignedOptimization(){return this._assignedOptimization===void 0&&(this._assignedOptimization=this.optimizationReview.optimizationInReview||this.previouslyAssignedOptimization||this.abTestStrategy.assign(this.publishedOptimizations.filter(t=>t.type==="ab_test"))||this.personalizationStrategy.assign(this.publishedOptimizations.filter(t=>t.type==="personalization"))||null),this._assignedOptimization}get previouslyAssignedOptimization(){return this.publishedOptimizations.find(t=>t.assignedVariantId!==void 0)||null}get isBot(){return bt(navigator.userAgent)}get dispatchAttempts(){return Number(this.attemptsStore.get(w.DISPATCH_ATTEMPTS_KEY)||"0")}get trackingService(){return this.tracker||(this.tracker=new L({shop:this.context.shop,page:this.context.page,visitor:this.visitor,assignmentStrategy:this.context.assignmentStrategy,publishedOptimizations:this.publishedOptimizations,originalReferrer:this.originalReferrer,storage:{cookie:this.visitor.cookiesWritable,local:this.optimizationCache.writable,session:this.attemptsStore.writable},version:w.VERSION,legacyCacheEntries:this.legacyCacheEntries,deferral:this.pageVisibility.deferral,configExpiresAt:this.context.configExpiresAt??null,fromDispatchAt:this.fromDispatchAt})),this.tracker}get isThemePreview(){var i,s,n;if(this.optimizationReview.inReview)return!1;const t=this.context.page.themeId!=this.context.shop.defaultThemeId,e=(n=(s=(i=this.previouslyAssignedOptimization)==null?void 0:i.assignedVariant)==null?void 0:s.config)==null?void 0:n.theme_id;return t&&(e===void 0||e!==this.context.page.themeId)}set dispatchAttempts(t){this.attemptsStore.set(w.DISPATCH_ATTEMPTS_KEY,t.toString())||console.debug("shogun: could not record the dispatch attempt, this session is not protected against a redirect loop")}exclude(t,e,i=this.previouslyAssignedOptimization){const s=i&&!i.inReview?i:void 0;this.trackingService.track("excluded",s,e?{reason:t,details:e}:{reason:t})}get unassignedReason(){if(this.context.configExpired&&this.publishedOptimizations.length===0)return"config_expired";const e=this.publishedOptimizations.flatMap(i=>{var s,n;return[...Object.values(((s=i.eligibility)==null?void 0:s.audience.evaluations)??{}),...Object.values(((n=i.eligibility)==null?void 0:n.variants)??{}).flatMap(r=>Object.values(r.evaluations??{}))]}).find(i=>i.status==="error");return Ct[(e==null?void 0:e.reason)??""]??"no_assigned_variant"}run(){var t,e,i,s,n,r;if(!this.hasRun&&!this.pageVisibility.holdUntilShown()){this.hasRun=!0,this.pageVisibility.release(),this.legacyCacheEntries=this.optimizationCache.legacyEntries,this.fromDispatchAt=((t=this.optimizationCache.pendingDispatch())==null?void 0:t.dispatchedAt)??null,this.optimizationCache.clearDispatched();try{if(this.isBot){console.debug("shogun: Visitor identified as bot, skipping optimization assignment and execution."),this.exclude("bot");return}const d=!this.optimizationCache.writable&&this.publishedOptimizations.some(l=>l.type==="ab_test");
24if(!this.visitor.idsPersisted||d){console.debug("shogun: Visitor cannot persist their assignment, skipping optimization assignment and execution."),this.exclude("storage_unavailable");return}if(this.dispatchAttempts>=w.MAX_DISPATCH_ATTEMPTS)throw new A(`Maximum dispatch attempts of ${w.MAX_DISPATCH_ATTEMPTS} exceeded. Possible redirect loop detected.`,"max_dispatch_attempts");if(this.optimizationCache.hasExpiredEntries()){this.exclude("cache_expired",{expired_optimization_ids:this.optimizationCache.expiredOptimizationIds()},null),this.optimizationCache.clearExpired();return}if(this.isThemePreview){console.debug("shogun: Visitor identified as theme preview, skipping optimization assignment and execution."),this.exclude("theme_preview");return}this.publishedOptimizations.forEach(l=>l.evaluateEligibility()),console.debug(`shogun: Running dispatcher with ${this.publishedOptimizations.length} published optimizations (${this.publishedOptimizations.map(l=>l.name).join(", ")})`);const a=this.assignedOptimization;if(a){if(!this.optimizationCache.update(a)){console.debug("shogun: Could not record the assignment, skipping optimization execution."),this.exclude("storage_unavailable",void 0,a);return}if(a.isFirstAssignment&&this.trackingService.track("assigned",a,{details:{traffic:Tt(window.location.href,this.originalReferrer)}}),a.needsDispatch){if(!a.canDispatch)throw new A(`Optimization '${a.name}' (${a.id}) cannot dispatch variant '${(e=a.assignedVariant)==null?void 0:e.id}'`,"invalid_variant_config",{optimization:a});console.debug(`shogun: Dispatching optimization: ${a.name} (${a.id}) with variant: ${(i=a.assignedVariant)==null?void 0:i.name} (${(s=a.assignedVariant)==null?void 0:s.id}) [attempt ${this.dispatchAttempts+1}]`),this.dispatchAttempts==0&&this.retainedReferrer.save();const l=this.optimizationCache.markDispatched(a.id);this.trackingService.track("dispatched",a,{details:{dispatched_at:l===null?null:new Date(l).toISOString()}}),this.dispatchAttempts=this.dispatchAttempts+1;try{a.dispatch()}catch(u){throw this.optimizationCache.clearDispatched(),new A(`Dispatch failed for optimization '${a.id}'`,"dispatch_failed",{cause:u,optimization:a})}return}console.debug(`shogun: Running optimization: '${a.name}' (${a.id}) with variant: '${(n=a.assignedVariant)==null?void 0:n.name}' (${(r=a.assignedVariant)==null?void 0:r.id})`),a.inReview?(console.debug("shogun: Optimization is in review, running optimization review flow for optimization"),this.optimizationReview.run()):a.isFirstView?(console.debug("shogun: This is the first view for this optimization, tracking started event."),a.state="started",this.optimizationCache.update(a),this.trackingService.track("started",a)):a.isOnAssignedVariant?(console.debug("shogun: This is not the first view for this optimization, tracking viewed event."),this.trackingService.track("viewed",a)):(console.debug("shogun: Visitor is not eligible for the assigned optimization, skipping view tracking and finalization."),this.trackingService.track("skipped",a,{reason:"not_eligible"})),this.dispatchAttempts=0,a.finalize()}else console.debug("shogun: No optimization assigned to this visitor."),this.trackingService.track("skipped",void 0,{reason:this.unassignedReason});this.retainedReferrer.clear()}catch(d){console.error("shogun: Error running optimizations",d);try{const a=d instanceof A?d:void 0;this.trackingService.track("errored",a==null?void 0:a.optimization,{reason:a==null?void 0:a.reason,details:{error:it(d),cause:(a==null?void 0:a.cause)===void 0?void 0:it(
24a.cause)}})}catch(a){console.error("shogun: Failed to report dispatcher error",a)}this.retainedReferrer.clear()}}}};c(w,"VERSION","2.2.0"),c(w,"MAX_DISPATCH_ATTEMPTS",5),c(w,"DISPATCH_ATTEMPTS_KEY","_shg_dispatch_attempts");let G=w;window.ShogunDispatcher=G})(); 25 26})(); 27 28</script>
28<script type="text/javascript"> 29 ;(function() { 30 const designMode = false; 31 if (designMode) { 32 console.debug("shogun: Design mode is enabled, skipping optimizer initialization"); 33 return; 34 } 35 36 // an Error cannot be sent as-is: message and stack are non-enumerable, so JSON.stringify gives {} 37 const describeThrown = (value) => 38 value instanceof Error ? { message: value.message, stack: value.stack } : String(value); 39 40 const reportExclusion = (reason, details) => { 41 try { 42 if (typeof fetch !== 'function') return; 43 44 fetch("https://shogun-abc-production.global.ssl.fastly.net/dispatcher/excluded", { 45 method: 'POST', 46 headers: { 'Content-Type': 'application/json' }, 47 body: JSON.stringify({ 48 name: 'excluded', 49 shop_id: "b0690a5a-54cf-44ab-a8b3-04ef1cbfbdf1", 50 reason: reason, 51 details: details || {} 52 }), 53 keepalive: true, 54 }).catch(() => {}); 55 } catch (_error) { 56 // reporting a bail must never be a thing that breaks a merchant's page 57 } 58 }; 59 60 // If the referrer url is the Shopify admin url or other known merchant domains, then set a local storage shg_is_merchant flag to true 61 // This is used to remove the preview bar from the page for shoppers 62 // 63 // Reading localStorage throws outright where the origin is denied storage, and this only decides whether a 64 // merchant sees the preview bar. Letting it escape would take the dispatcher down with it and leave the visitor 65 // reporting nothing at all. 66 try { 67 const referrer = document.referrer 68 const merchantDomains = ['admin.shopify.com', 'ab.shgapi.com', 'abc.shogun.dev'] 69 if (!localStorage.getItem('_shg_is_merchant') && merchantDomains.some(domain => referrer.includes(domain))) { 70 console.debug('shogun: Setting shg_is_merchant to true') 71 localStorage.setItem('_shg_is_merchant', 'true') 72 } 73 } catch (error) { 74 console.debug('shogun: could not read the merchant flag, continuing without it', error) 75 } 76 77 // Check for optimization disable flags 78 const urlParams = new URLSearchParams(window.location.search); 79 const optimizationDisabled = urlParams.get('shg') === "false" || window.location.hostname.includes('shopifypreview'); 80 81 if (optimizationDisabled) { 82 console.debug("shogun: Optimization is disabled, skipping optimizer initialization"); 83 return; 84 } 85 86 // Load shop metafield configuration 87 88 const shopMetafieldConfig = {"default_theme_id":192598049132,"method":"greedy","optimizations":[{"id":"83df3fea-4028-42f8-a676-41b234e36d36","type":"ab_test","scope":"theme","name":"Theme test September 30, 2026","config":{"audiences":[],"audience_id":null,"new_optimization":false,"audiences_condition":null},"variants":[{"id":"4b4cb275-0421-41ed-8848-423d46ede8b4","name":"Original","config":{"original":true,"position":0,"theme_id":"192598049132","percentage":50,"theme_name":"Salty-captain/main (A)","variant_preview_url":"https://saltycaptain-co.myshopify.com/?preview_theme_id=192598049132&shg=false"},"optimization_id":"83df3fea-4028-42f8-a676-41b234e36d36","traffic_percentage":50.0},{"id":"886b677e-181f-40be-8eb9-7e7464daa603","name":"Variant B","config":{"original":false,"position":1,"theme_id":"189989749100","percentage":50,"theme_name":"Salty-captain/main (B)","variant_preview_url":"https://saltycaptain-co.myshopify.com/?preview_theme_id=189989749100&shg=false"},"optimization_id":"83df3fea-4028-42f8-a676-41b234e36d36","traffic_percentage":50.0}]}],"expires_at":1791109502000,"env":"production"}; 89 90 if (!shopMetafieldConfig) { 91 console.debug("shogun: Shop metafield configuration for optimizations is missing. Skipping optimizer initialization."); 92 reportExclusion('config_unavailable'); 93 return; 94 } 95 96 // A lapsed metafield yields no optimizations, which on its own is indistinguishable from a shop running none. 97 const configExpired = !(shopMetafieldConfig.expires_at > Date.now()); 98 const optimizationsData = configExpired ? [] : (shopMetafieldConfig.optimizations || []); 99 100 // These ID should match. It is possible for them to be different if a theme is copied from a different shop. 101 const intendedShopifyId = "28845277320";
101 // The hard coded shopify ID when this snippet was pushed to the theme. 102 const currentShopifyId = "28845277320"; // The current shopify ID that this theme is rendered in. 103 if (intendedShopifyId !== currentShopifyId) { 104 console.debug(`shogun: Shopify ID mismatch: intendedShopifyId=${intendedShopifyId} currentShopifyId=${currentShopifyId}. This may indicate the theme was copied from another shop and not properly set up. Skipping optimizer initialization to avoid potential issues.`); 105 // Attributed to the shop the snippet was written for, the only internal id it carries; both Shopify ids ride 106 // along so the shop it is actually running on can be resolved. 107 reportExclusion('shop_mismatch', { intended_shopify_id: intendedShopifyId, current_shopify_id: currentShopifyId }); 108 return; 109 } else { 110 console.debug(`shogun: Shopify ID verified: ${intendedShopifyId}`); 111 } 112 113 114 if (typeof ShogunDispatcher === 'undefined') { 115 console.error("shogun: Dispatcher is not defined. Please ensure the shogun optimizer script is properly loaded."); 116 reportExclusion('dispatcher_unavailable', { optimizer_version: 2 }); 117 return; 118 } 119 120 const dispatcherConfig = { 121 shop: { 122 shopId: "b0690a5a-54cf-44ab-a8b3-04ef1cbfbdf1", 123 shopDomain: "saltycaptain-co.myshopify.com", 124 analyticsUrl: "https://shogun-abc-production.global.ssl.fastly.net", 125 geoLocationApi: "https://ipinfo.io/json?token=f2ae3a557d807b", 126 storefrontAccessToken: null, 127 defaultThemeId: shopMetafieldConfig.default_theme_id ? shopMetafieldConfig.default_theme_id.toString() : null, 128 configExpiresAt: shopMetafieldConfig.expires_at, 129 }, 130 page: { 131 pageId: "", 132 pageType: "search", 133 templateName: "search", 134 templateSuffix: "", 135 templateDirectory: "", 136 themeId: "192598049132", 137 languageRootUrl: "/", 138 path: window.location.pathname, 139 currentCartVariantId: null, 140 }, 141 session: { 142 sessionId: urlParams.get('shgSessionId'), 143 customerId: "", 144 isB2B: false, 145 }, 146 assignmentStrategy: shopMetafieldConfig.method, 147 publishedOptimizations: optimizationsData, 148 configExpired: configExpired, 149 configExpiresAt: typeof shopMetafieldConfig.expires_at === 'number' ? shopMetafieldConfig.expires_at : null 150 } 151 152 console.debug("shogun: Initializing ShogunOptimizer v2"); 153 try { 154 const dispatcher = new ShogunDispatcher(dispatcherConfig); 155 dispatcher.run(); 156 } catch (error) { 157 console.error("shogun: Dispatcher failed to start.", error); 158 reportExclusion('dispatcher_unavailable', { optimizer_version: 2, error: describeThrown(error) }); 159 } 160 161 })(); 162 163</script>
163 164 165 166 <link rel="icon" href="//saltycaptain.com.au/cdn/shop/t/212/assets/favicon.svg?v=165920389120986043991790801601" type="image/x-icon"> 167 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"> 168 <link href="//saltycaptain.com.au/cdn/shop/t/212/assets/critical.css?v=104805564617938580131790801601" rel="stylesheet" type="text/css" media="all" /> 169 <link href="//saltycaptain.com.au/cdn/shop/t/212/assets/style.css?v=116225903476679003271790887641" rel="stylesheet" type="text/css" media="all" /> 170 <meta charset="utf-8"> 171<meta http-equiv="X-UA-Compatible" content="IE=edge"> 172<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 173 174<meta 175 property="og:site_name" 176 content="Salty Captain" 177> 178<meta 179 property="og:url" 180 content="https://saltycaptain.com.au/search" 181> 182<meta 183 property="og:title" 184 content="Search" 185> 186<meta 187 property="og:type" 188 content="website" 189> 190<meta 191 property="og:description" 192 content="Australiaâs #1 salt removal brand. Shop car wash kits, boat cleaning products & 4WD solutions. 100% made in Australia. Free shipping on bundles. 500K+ customers." 193><meta 194 name="twitter:card" 195 content="summary_large_image" 196> 197<meta 198 name="twitter:title" 199 content="Search" 200> 201<meta 202 name="twitter:description" 203 content="Australiaâs #1 salt removal brand. Shop car wash kits, boat cleaning products & 4WD solutions. 100% made in Australia. Free shipping on bundles. 500K+ customers." 204> 205 206<title> 207 Search 208 – Salty Captain</title> 209 210<link 211 rel="canonical" 212 href="https://saltycaptain.com.au/search" 213> 214 215 216 <meta 217 name="description" 218 content="Australiaâs #1 salt removal brand. Shop car wash kits, boat cleaning products & 4WD solutions. 100% made in Australia. Free shipping on bundles. 500K+ customers." 219 > 220 221 222
222<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
222<meta name="facebook-domain-verification" content="h6odd8rknahuy87pc29lovr038e36l"> 223<meta name="google-site-verification" content="7gavodKB4YGklB5i3C1B4tjOG4TgR3fmwPrtJrgJdFM"> 224<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/28845277320/digital_wallets/dialog"> 225<meta id="in-context-paypal-metadata" data-shop-id="28845277320" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="AUD"> 226<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
226<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=14876830"></script>
226 227<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
228<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=14876830&shop_id=28845277320" crossorigin="anonymous"></script>
vendor: 1 bytes, line 228
228
229<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":28845277320,"countryCode":"AU","currencyCode":"AUD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/28845277320","merchantName":"Salty Captain","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","jcb"],"total":{"type":"pending","label":"Salty Captain","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 229
229
230<script id="shopify-features" type="application/json">{"accessToken":"69789003340ba250a32bd67ffed4b11a","betas":["rich-media-storefront-analytics"],"domain":"saltycaptain.com.au","predictiveSearch":true,"shopId":28845277320,"locale":"en"}</script>
vendor: 1 bytes, line 230
230
231<script>var Shopify = Shopify || {}; 232Shopify.shop = "saltycaptain-co.myshopify.com"; 233Shopify.locale = "en"; 234Shopify.currency = {"active":"AUD","rate":"1.0"}; 235Shopify.country = "US"; 236Shopify.theme = {"name":"Salty-captain\/main (A)","id":192598049132,"schema_name":"Glow","schema_version":"0.1.0","theme_store_id":null,"role":"main"}; 237Shopify.theme.handle = "null"; 238Shopify.theme.style = {"id":null,"handle":null}; 239Shopify.cdnHost = "saltycaptain.com.au/cdn"; 240Shopify.routes = Shopify.routes || {}; 241Shopify.routes.root = "/"; 242Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 243Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 244Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 245Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 245
245
246<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 246
246
247<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 247
247
248<script> 249 window.ShopifyPay = window.ShopifyPay || {}; 250 window.ShopifyPay.apiHost = "shop.app\/pay"; 251 window.ShopifyPay.redirectState = null; 252</script>
vendor: 1 bytes, line 252
252
253<script> 254 window.Shopify = window.Shopify || {}; 255 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 256 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 257 window.Shopify.SignInWithShop.eligible = true; 258</script>
vendor: 1 bytes, line 258
258
259<script id="shop-js-analytics" type="application/json">{"pageType":"search"}</script>
vendor: 1 bytes, line 259
259
260<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 260
260
261<script type="module"> 262 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 263 264 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 265 266</script>
vendor: 1 bytes, line 266
266
267<script> 268 window.Shopify = window.Shopify || {}; 269 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 270 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"]}; 271</script>
vendor: 1 bytes, line 271
271
272<script>(function() { 273 var isLoaded = false; 274 function asyncLoad() { 275 if (isLoaded) return; 276 isLoaded = true; 277 var urls = ["https:\/\/pc-quiz.s3.us-east-2.amazonaws.com\/current\/quiz-loader.min.js?shop=saltycaptain-co.myshopify.com","\/\/cdn.shopify.com\/proxy\/ee2b8226e91c5a39c2e1dfb3511bd7dec352530cf7b0dd59b88f5255d081033a\/d1639lhkj5l89m.cloudfront.net\/js\/storefront\/uppromote.js?shop=saltycaptain-co.myshopify.com\u0026sp-cache-control=cHVibGljLCBtYXgtYWdlPTkwMA"]; 278 for (var i = 0; i < urls.length; i++) { 279 var s = document.createElement('script'); 280 s.type = 'text/javascript'; 281 s.async = true; 282 s.src = urls[i]; 283 var x = document.getElementsByTagName('script')[0]; 284 x.parentNode.insertBefore(s, x); 285 } 286 }; 287 if(window.attachEvent) { 288 window.attachEvent('onload', asyncLoad); 289 } else { 290 window.addEventListener('load', asyncLoad, false); 291 } 292})();</script>
vendor: 1 bytes, line 292
292
293<script id="__st">var __st={"a":28845277320,"offset":36000,"reqid":"456e2517-f662-40b0-8d95-a4a8028c40c3-1791082464","pageurl":"saltycaptain.com.au\/search","u":"1daf1b1d9fce","p":"searchresults"};</script>
vendor: 1 bytes, line 293
293
294<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 294
294
295<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 295
295
296<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//saltycaptain.com.au/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 296
296
297<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 = "//saltycaptain.com.au/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>
297<script crossorigin="anonymous" defer="defer" src="//saltycaptain.com.au/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 297
297
298<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 298
298
299<script> 300 window.Shopify = window.Shopify || {}; 301 window.Shopify.MCP = window.Shopify.MCP || {}; 302 window.Shopify.MCP.enabled = true; 303 window.Shopify.MCP.shop = "saltycaptain-co.myshopify.com"; 304 window.Shopify.MCP.mcpEndpoint = "https:\/\/saltycaptain.com.au\/api\/mcp"; 305 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"]}}]; 306</script>
vendor: 1 bytes, line 306
306
307<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("\/\/saltycaptain.com.au\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 308</script>
vendor: 1 bytes, line 308
308
309<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://saltycaptain.com.au/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 310</script>
vendor: 1 bytes, line 310
310
311<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 312 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); 313</script>
vendor: 1 bytes, line 313
313
314<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})}})); 315</script>
315 316<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://saltycaptain.com.au/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 317<style id="shopify-accelerated-checkout-cart"> 318 #shopify-buyer-consent { 319 margin-top: 1em; 320 display: inline-block; 321 width: 100%; 322} 323 324#shopify-buyer-consent.hidden { 325 display: none; 326} 327 328#shopify-subscription-policy-button { 329 background: none; 330 border: none; 331 padding: 0; 332 text-decoration: underline; 333 font-size: inherit; 334 cursor: pointer; 335} 336 337#shopify-subscription-policy-button::before { 338 box-shadow: none; 339} 340 341 </style> 342
343<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
343 344 <!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/brandAgents_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea --> 345 346 347
348<script type="text/javascript"> 349 (function(d){ 350 var s = d.createElement('script'); 351 s.async = true; 352 s.src = "https://adsagentclientafd-b7hqhjdrf3fpeqh2.b01.azurefd.net/frontendInjection.js"; 353 var firstScript = d.getElementsByTagName('script')[0]; 354 firstScript.parentNode.insertBefore(s, firstScript); 355 })(document); 356</script>
356 357 358 359 360<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 --> 361 362 363 364 365 366 367 368 369 370 371 372 373
373<script async src="https://static.klaviyo.com/onsite/js/RKQEJZ/klaviyo.js?company_id=RKQEJZ"></script>
373 374
374<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>
374 375 376 377 378 379 380 381
381<script> 382 window.klaviyoReviewsProductDesignMode = false 383 </script>
383 384 385 386 387 388 389 390 391 392 393<!-- END app block --><!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/clarity_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea -->
394<script type="text/javascript"> 395 (function (c, l, a, r, i, t, y) { 396 c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); }; 397 t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i + "?ref=shopify"; 398 y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y); 399 400 c.Shopify.loadFeatures([{ name: "consent-tracking-api", version: "0.1" }], error => { 401 if (error) { 402 console.error("Error loading Shopify features:", error); 403 return; 404 } 405 406 c[a]('consentv2', { 407 ad_Storage: c.Shopify.customerPrivacy.marketingAllowed() ? "granted" : "denied", 408 analytics_Storage: c.Shopify.customerPrivacy.analyticsProcessingAllowed() ? "granted" : "denied", 409 source: 101, 410 }); 411 }); 412 413 l.addEventListener("visitorConsentCollected", function (e) { 414 c[a]('consentv2', { 415 ad_Storage: e.detail.marketingAllowed ? "granted" : "denied", 416 analytics_Storage: e.detail.analyticsAllowed ? "granted" : "denied", 417 source: 101, 418 }); 419 }); 420 })(window, document, "clarity", "script", "y9v58pvmlj"); 421</script>
421 422 423 424 425<!-- END app block --><!-- BEGIN app block: shopify://apps/gorgias-live-chat-helpdesk/blocks/gorgias/a66db725-7b96-4e3f-916e-6c8e6f87aaaa -->
426<script defer data-gorgias-loader-chat src="https://config.gorgias.chat/bundle-loader/shopify/saltycaptain-co.myshopify.com"></script>
426 427 428
429<script defer data-gorgias-loader-convert src="https://content.9gtb.com/loader.js"></script>
429 430 431
432<script defer data-gorgias-loader-mailto-replace src="https://config.gorgias.help/api/contact-forms/replace-mailto-script.js?shopName=saltycaptain-co"></script>
432 433 434 435<!-- END app block --><!-- BEGIN app block: shopify://apps/eg-auto-add-to-cart/blocks/app-embed/0f7d4f74-1e89-4820-aec4-6564d7e535d2 --> 436 437 438 439 440 441 442 443 444 445 446 447 448
448<script 449 async 450 type="text/javascript" 451 src="https://cdn.506.io/eg/script.js?shop=saltycaptain-co.myshopify.com&v=12" 452 ></script>
452 453 454 455 456 457 <meta id="easygift-shop" itemid="c2hvcF8kXzE3OTEwODI0NjQ=" content="{"isInstalled":true,"installedOn":"2026-09-28T06:03:33.715Z","appVersion":"3.0","subscriptionName":"Unlimited","cartAnalytics":true,"freeTrialEndsOn":null,"settings":{"reminderBannerStyle":{"position":{"horizontal":"right","vertical":"bottom"},"primaryColor":"#000000","backgroundColor":"#FFFFFF","borderRadius":null,"padding":"","headerFontSize":"","subHeaderFontSize":"","cssStyles":"","headerText":"Click here to reopen missed deals","subHeaderText":null,"showImage":false,"imageUrl":"https:\/\/cdn.506.io\/eg\/eg_notification_default_512x512.png","displayAfter":5,"closingMode":"doNotAutoClose","selfcloseAfter":5,"reshowBannerAfter":"everyNewSession","fontFamily":null},"addedItemIdentifier":"_Gifted","ignoreOtherAppLineItems":null,"customVariantsInfoLifetimeMins":1440,"redirectPath":null,"ignoreNonStandardCartRequests":false,"bannerStyle":{"position":{"horizontal":"right","vertical":"bottom"},"primaryColor":"#000000","backgroundColor":"#FFFFFF","borderRadius":null,"padding":"","headerFontSize":"","subHeaderFontSize":"","cssStyles":"","fontFamily":null},"themePresetId":"0","notificationStyle":{"position":{"horizontal":"right","vertical":"bottom"},"primaryColor":"#3A3A3A","backgroundColor":"#FFFFFF","borderRadius":null,"duration":"3.0","headerFontSize":"","subHeaderFontSize":"","padding":"","cssStyles":null,"hasCustomizations":false,"fontFamily":null},"fetchCartData":false,"useLocalStorage":{"enabled":false,"expiryMinutes":null},"popupStyle":{"priceShowZeroDecimals":true,"primaryColor":"#3A3A3A","secondaryColor":"#3A3A3A","buttonTextColor":null,"backgroundColor":"#FFFFFF","borderRadius":null,"padding":"","headerFontSize":"","subHeaderFontSize":"","bodyColor":null,"bodyFontSize":"","cssStyles":"Ðа мобилке модалка ÑиÑе, Ñ ÐºÐ°ÑÑоÑек менÑÑе внÑÑÑенние оÑÑÑÑÐ¿Ñ â ÑоваÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ Ð±Ð¾Ð»ÑÑе ÑиÑинÑ. Ðамени CSS Ñеликом:\n\n```css\n#aca-modal {\n background: rgba(21, 20, 23, 0.72) !important;\n font-family: \"Poppins\", sans-serif !important;\n color: #151417 !important;\n -webkit-font-smoothing: antialiased;\n}\n\n#aca-modal-wrapper {\n width: min(920px, calc(100% - 48px)) !important;\n max-width: 920px !important;\n margin: 24px auto !important;\n min-height: calc(100% - 48px) !important;\n}\n\n#aca-modal-container {\n margin: 0 !important;\n padding: 40px 40px 28px !important;\n border: 0 !important;\n border-radius: 20px !important;\n background: #ffffff !important;\n box-shadow:\n 0 5px 10px rgba(0, 0, 0, 0.06),\n 0 18px 18px rgba(0, 0, 0, 0.05),\n 0 41px 25px rgba(0, 0, 0, 0.03) !important;\n max-width: none !important;\n}\n\n#aca-close-icon-container {\n display: flex !important;\n align-items: center;\n justify-content: center;\n top: 16px !important;\n right: 16px !important;\n width: 32px !important;\n height: 32px !important;\n padding: 0 !important;\n border: 0 !important;\n background: transparent !important;\n}\n\n#aca-close-icon-container svg {\n width: 22px;\n height: 22px;\n}\n\n#aca-close-icon {\n stroke: #151417 !important;\n stroke-width: 3px !important;\n}\n\n#aca-modal-headline {\n margin: 0 36px 8px !important;\n font-family: \"Archivo\", sans-serif !important;\n font-size: 28px !important;\n font-weight: 800 !important;\n line-height: 1.15 !important;\n letter-spacing: 0 !important;\n text-transform: uppercase !important;\n color: #151417 !important;\n}\n\n#aca-modal-subheadline {\n margin: 0 0 24px !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 16px !important;\n font-weight: 500 !important;\n line-height: 1.4 !important;\n color: rgba(21, 20, 23, 0.55) !important;\n}\n\n#aca-products-container {\n display: flex !important;\n align-items: stretch !important;\n justify-content: center !important;\n flex-wrap: wrap !important;\n width: 100% !important;\n gap: 16px;\n}\n\n#aca-products-container .aca-product {\n display: flex !important;\n flex-direction: column !important;\n align-self: stretch !important;\n width: 220px !important;\n margin: 0 !important;\n padding: 16px 16px 18px !important;
457\n border-radius: 17px !important;\n background: #f3f3f3 !important;\n box-sizing: border-box;\n}\n\n.aca-product-image {\n height: 180px !important;\n margin-bottom: 12px !important;\n border-radius: 12px;\n overflow: hidden;\n background: #ffffff !important;\n}\n\n.aca-product-name,\n.aca-subscription-name {\n margin: 0 !important;\n font-family: \"Archivo\", sans-serif !important;\n font-size: 15px !important;\n font-weight: 800 !important;\n line-height: 1.25 !important;\n text-transform: uppercase !important;\n color: #151417 !important;\n}\n\n.aca-product-variant-name {\n margin: 6px 0 0 !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 13px !important;\n font-weight: 500 !important;\n color: rgba(21, 20, 23, 0.55) !important;\n}\n\n.aca-product-price {\n margin-top: 10px !important;\n margin-bottom: 0 !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 16px !important;\n font-weight: 600 !important;\n color: #151417 !important;\n}\n\n.aca-product-original-price {\n color: rgba(21, 20, 23, 0.4) !important;\n font-weight: 500 !important;\n}\n\n.aca-product-discounted-price {\n color: #2cafdb !important;\n font-weight: 700 !important;\n}\n\n.aca-product-price.aca-product-discounted-price,\n.aca-product-price:last-of-type {\n margin-bottom: 20px !important;\n}\n\n.aca-subscription-label {\n margin: 0 0 6px !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 12px !important;\n font-weight: 600 !important;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: rgba(21, 20, 23, 0.55) !important;\n}\n\n.aca-product-dropdown {\n height: 42px !important;\n margin-top: 0 !important;\n margin-bottom: 10px !important;\n background: transparent !important;\n}\n\n.aca-product-dropdown select {\n border: 1.5px solid rgba(21, 20, 23, 0.12) !important;\n border-radius: 100px !important;\n background: #ffffff !important;\n color: #151417 !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 13px !important;\n font-weight: 500 !important;\n padding: 0 32px 0 14px !important;\n}\n\n.aca-product-dropdown select:focus {\n border-color: #151417 !important;\n}\n\nbutton.aca-product-button {\n margin-top: auto !important;\n min-height: 44px !important;\n padding: 10px 16px !important;\n border: 0 !important;\n border-radius: 22px !important;\n background: #b6d333 !important;\n color: #ffffff !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 14px !important;\n font-weight: 700 !important;\n letter-spacing: 0.04em !important;\n text-transform: uppercase !important;\n box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15);\n transition: background-color 0.2s ease;\n}\n\nbutton.aca-product-button:hover {\n background: #9fba2a !important;\n}\n\n.aca-product-button.aca-product-out-of-stock-button {\n background: #ffffff !important;\n color: #151417 !important;\n border: 1.5px solid #151417 !important;\n box-shadow: none !important;\n cursor: not-allowed !important;\n}\n\n.aca-button-loader {\n border-top-color: #ffffff !important;\n}\n\n.aca-button-tick {\n border-bottom-color: #ffffff !important;\n border-right-color: #ffffff !important;\n}\n\n#aca-bottom-close {\n margin-top: 20px !important;\n padding: 12px 28px !important;\n border: 0 !important;\n background: transparent !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 14px !important;\n font-weight: 600 !important;\n color: #151417 !important;\n text-decoration: underline;\n text-underline-offset: 3px;\n}\n\n#aca-bottom-close:hover {\n color: #2cafdb !important;\n}\n\n@media screen and (max-width: 950px) {\n #aca-products-container {\n gap: 8px;\n }\n\n #aca-products-container .aca-product {\n width: calc(50% - 4px) !important;\n max-width: none !important;\n margin: 0 !important;\n padding: 10px 8px 12px !important;\n }\n}\n\n@media screen and (max-width: 767px) {\n #aca-modal-wrapper {\n width: calc(100% - 12px) !important;\n margin: 6px auto !important;\n min-height: calc(100% - 12px) !important;\n }\n\n #aca-modal-container {\n padding: 20px 8px 12px !important;\n border-radius: 14px !important;\n }\n\n #aca-close-icon-container {\n top: 8px !important;\n right: 8px !important;\n }\n\n #aca-modal-headline {\n margin: 4px 28px 6px !important;\n font-size: 18px !important;\n line-height: 22px !important;\n }\n\n #aca-modal-subheadline {\n margin: 0 0 12px !important;\n font-size: 13px !important;\n }\n\n #aca-products-container {\n gap: 6px;\n width: 100% !important;\n }\n\n #aca-products-container .aca-product {\n width: calc(50% - 3px) !important;\n padding: 8px 6px 10px !important;\n border-radius: 12px !important;\n }\n\n .aca-product-image {\n height: 110px !important;\n margin-bottom: 8px !important;\n border-radius: 8px;\n }\n\n .aca-product-name,\n .aca-subscription-name {\n font-size: 12px !important;\n }\n\n .aca-product-price.aca-product-discounted-price,\n .aca-product-price:last-of-type {\n margin-bottom: 12px !important;\n }\n\n .aca-product-dropdown {\n height: 32px !important;\n margin-bottom: 6px !important;\n }\n\n button.aca-product-button {\n min-height: 34px !important;\n padding: 6px 8px !important;\n font-size: 12px !important;\n border-radius: 22px !important;\n }\n\n #aca-bottom-close {\n margin-top: 10px !important;\n padding: 8px 12px !important;\n }\n}","hasCustomizations":true,"addButtonText":"Select","
457dismissButtonText":"Close","outOfStockButtonText":"Out of Stock","imageUrl":null,"showProductLink":false,"subscriptionLabel":"Subscription Plan","closeModalOutsideClick":true,"headerFontFamily":null,"bodyFontFamily":null},"refreshAfterBannerClick":false,"disableReapplyRules":false,"disableReloadOnFailedAddition":false,"autoReloadCartPage":false,"ajaxRedirectPath":null,"allowSimultaneousRequests":false,"applyRulesOnCheckout":false,"enableCartCtrlOverrides":true,"customRedirectFromCart":null,"scriptSettings":{"branding":{"removalRequestSent":null,"show":false},"productPageRedirection":{"products":[],"redirectionURL":"\/","enabled":false},"debugging":{"enabled":false,"enabledOn":null,"stringifyObj":false},"removeEGPropertyFromSplitActionLineItems":false,"fetchProductInfoFromSavedDomain":false,"reApplyValueBasedRulesInCart":false,"useFinalPriceGetEntireCart":false,"hideGiftedPropertyText":false,"fetchCartDataBeforeRequest":false,"disableRedirectAfterFormSubmit":false,"customCSS":null,"decodePayload":false,"delayUpdates":2000,"hideAlertsOnFrontend":false,"enableBuyNowInterceptions":true,"removeProductsAddedFromExpiredRules":true,"useFinalPrice":false},"promoCodeMessageStyle":{"message":"Free gift added!"},"egDiscount":{"cartValueStopCollectionCheck":false},"accessToEnterprise":false},"translations":null,"defaultLocale":"en","shopDomain":"saltycaptain.com.au"}"> 458 459
460<script defer> 461 (async function() { 462 try { 463 464 const blockVersion = "v3" 465 if (blockVersion != "v3") { 466 return 467 } 468 469 let metaErrorFlag = false; 470 if (metaErrorFlag) { 471 return 472 } 473 474 // Parse metafields as JSON 475 const metafields = {"easygift-rule-6abc527bef270c4675e789b1":{"schedule":{"enabled":false,"starts":null,"ends":null},"trigger":{"productTags":{"targets":[],"sellingPlan":null},"hybrid":null,"promoCode":null,"promoCodeDiscount":null,"type":"cartValue","minCartValue":50,"upperCartValue":null,"products":[],"collections":[],"condition":null,"conditionMin":null,"conditionMax":null,"collectionSellingPlanType":null,"cartValueExcludedVariants":[]},"action":{"notification":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":""},"discount":{"issue":null,"type":"app","id":"gid:\/\/shopify\/DiscountAutomaticNode\/1768078573932","title":"Pop Up Offer","createdByEasyGift":true,"easygiftAppDiscount":true,"discountType":"percentage","value":100},"popupOptions":{"showVariantsSeparately":false,"headline":"You've unlocked a FREE Chemical!","subHeadline":"Choose any FREE 500ml or 1L Chemical from the choices below ","showItemsPrice":true,"popupDismissable":false,"imageUrl":null,"persistPopup":false,"rewardQuantity":1,"showDiscountedPrice":true,"hideOOSItems":false},"banner":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":null,"displayAfter":"5","closingMode":"doNotAutoClose","selfcloseAfter":"5","reshowBannerAfter":"everyNewSession","redirectLink":null},"showPromoCodeMessage":false,"type":"offerToCustomer","products":[{"id":"7195436187806","title":"4WD \u0026 RV Wash Detergent","handle":"refill-of-4wd-wash-bundle","variants":[{"id":"41792911605918","showVariantName":false}]},{"id":"7503110832286","title":"All Purpose Cleaner","handle":"all-purpose-cleaner-500ml","variants":[{"id":"54141219176812","showVariantName":false}]},{"id":"7249174757534","title":"Automotive Wheel Wash","handle":"wheel-wash","variants":[{"id":"54178885206380","showVariantName":false}]},{"id":"15023790653804","title":"Bilge Cleaner","handle":"bilge-bandit-1l","variants":[{"id":"53179771617644","showVariantName":false}]},{"id":"15231385567596","title":"Boat Wash \u0026 Wax","handle":"boatie-wash-wax-1l","variants":[{"id":"54141510844780","showVariantName":false}]},{"id":"7648609730718","title":"Captain Clears Polish","handle":"captain-clears-polish-500ml","variants":[{"id":"54141237461356","alerts":[{"type":"outOfStock","triggered":true}],"showVariantName":false}]},{"id":"15239863501164","title":"Captain Clears Protective Cleaner","handle":"captain-clears-protective-cleaner-500ml","variants":[{"id":"54165813166444","showVariantName":false}]},{"id":"7216902144158","title":"Captain Seal Lanolin Spray 500ml","handle":"lanolin-500ml","variants":[{"id":"41701342707870","showVariantName":false}]},{"id":"7195423244446","title":"Car Wash Detergent","handle":"refill-of-car-wash-1l","variants":[{"id":"41792922222750","showVariantName":false}]},{"id":"7549998301342","title":"Chassis Champ | Chassis Protection Coating","handle":"chassis-champ-500ml","variants":[{"id":"54141223666028","showVariantName":false}]},{"id":"14685401809260","title":"Chassis Flush Solution 1L","handle":"chassis-flush-solution-1l","variants":[{"id":"51852885000556","showVariantName":false}]},{"id":"8037725962398","title":"Drip Dry | Post Wash Hydro Coat","handle":"drip-dry-1l","variants":[{"id":"54141218914668","showVariantName":false}]},{"id":"7216908992670","title":"Duck Off | Glass Ceramic Sealant","handle":"rain-repel-500ml","variants":[{"id":"54141225238892","showVariantName":false}]},{"id":"15023790686572","title":"Fabric Water Proofing Spray","handle":"fabric-water-proofing-spray","variants":[{"id":"53179771650412","showVariantName":false}]},{"id":"7249174659230","title":"Final Touch | Ceramic Detailer","handle":"final-touch","variants":[{"id":"54141225566572","showVariantName":false}]},{"id":"7337774645406","title":"Glass Cleaner","handle":"glass-cleaner","variants":[{"id":"54141223174508","showVariantName":false}]}
475,{"id":"8059028373662","title":"Grease Attack | Citrus Degreaser","handle":"grease-attack-1","variants":[{"id":"44262114361502","showVariantName":false}]},{"id":"14746976354668","title":"Hull Cleaner","handle":"hull-cleaner-1l","variants":[{"id":"54141233168748","showVariantName":false}]},{"id":"15023790948716","title":"Hydro Spot | Water Spot Remover","handle":"hydro-spot-cleaner-1l","variants":[{"id":"53179772338540","showVariantName":false}]},{"id":"7249173577886","title":"Interior Cleaner","handle":"interior-cleaner","variants":[{"id":"54141220323692","showVariantName":false}]},{"id":"7965464985758","title":"Lazy Bum 500ml","handle":"lazy-bum-500ml","variants":[{"id":"44030717952158","showVariantName":false}]},{"id":"15023790752108","title":"Marine Vinyl Cleaner 1L","handle":"marine-vinyl-cleaner-1l","variants":[{"id":"53179771781484","showVariantName":false}]},{"id":"15023790981484","title":"Marine Vinyl Protectant 1L","handle":"marine-vinyl-protectant-1l","variants":[{"id":"53179772371308","alerts":[{"type":"outOfStock","triggered":false}],"showVariantName":false}]},{"id":"7002383450270","title":"Outboard \u0026 PWC Engine Flush Detergent","handle":"refill-of-engine-flush","variants":[{"id":"40927992676510","showVariantName":false}]},{"id":"4440466555016","title":"Salt Wash Detergent","handle":"1-litre-refill-of-salt-wash-detergent","variants":[{"id":"36833150337182","showVariantName":false}]},{"id":"15239865401708","title":"Sea Spray | Rod \u0026 Reel Cleaner","handle":"sea-spray-tackle-cleaner-500ml","variants":[{"id":"54165816770924","showVariantName":false}]},{"id":"7549991813278","title":"Soft Clay Bar","handle":"soft-clay-bar","variants":[{"id":"42790409240734","showVariantName":false}]},{"id":"7492905599134","title":"Spit 'n' Lick | Spray Wax","handle":"spit-n-lick-500ml","variants":[{"id":"54141225828716","showVariantName":false}]},{"id":"7648620282014","title":"Sun Stroke 500ml","handle":"sun-stroke-500ml","variants":[{"id":"43124286357662","showVariantName":false}]},{"id":"7628927893662","title":"Tyre Shine","handle":"tyre-shine","variants":[{"id":"54141217538412","showVariantName":false}]}],"limit":1,"preventProductRemoval":false,"addAvailableProducts":false},"targeting":{"link":{"destination":"home","data":null,"cookieLifetime":5},"additionalCriteria":{"geo":{"include":[],"exclude":[]},"type":null,"customerTags":[],"customerTagsExcluded":[],"customerId":[],"orderCount":null,"hasOrderCountMax":false,"orderCountMax":null,"totalSpent":null,"hasTotalSpentMax":false,"totalSpentMax":null},"type":"link"},"settings":{"worksInReverse":true,"runsOncePerSession":false,"preventAddedItemPurchase":false,"showReminderBanner":false},"_id":"6abc527bef270c4675e789b1","name":"Pop Up Offer","active":true,"translations":null,"testMode":false}}; 476 477 // Process metafields in JavaScript 478 let savedRulesArray = []; 479 for (const [key, value] of Object.entries(metafields)) { 480 if (value) { 481 for (const prop in value) { 482 // avoiding Object.Keys for performance gain -- no need to make an array of keys. 483 savedRulesArray.push(value); 484 break; 485 } 486 } 487 } 488 489 const metaTag = document.createElement('meta'); 490 metaTag.id = 'easygift-rules'; 491 metaTag.content = JSON.stringify(savedRulesArray); 492 metaTag.setAttribute('itemid', 'cnVsZXNfJF8xNzkxMDgyNDY0'); 493 494 document.head.appendChild(metaTag); 495 } catch (err) { 496 497 } 498 })(); 499</script>
499 500 501 502
502<script 503 type="text/javascript" 504 defer 505 > 506 507 (function () { 508 try { 509 window.EG_INFO = window.EG_INFO || {}; 510 var shopInfo = {"isInstalled":true,"installedOn":"2026-09-28T06:03:33.715Z","appVersion":"3.0","subscriptionName":"Unlimited","cartAnalytics":true,"freeTrialEndsOn":null,"settings":{"reminderBannerStyle":{"position":{"horizontal":"right","vertical":"bottom"},"primaryColor":"#000000","backgroundColor":"#FFFFFF","borderRadius":null,"padding":"","headerFontSize":"","subHeaderFontSize":"","cssStyles":"","headerText":"Click here to reopen missed deals","subHeaderText":null,"showImage":false,"imageUrl":"https:\/\/cdn.506.io\/eg\/eg_notification_default_512x512.png","displayAfter":5,"closingMode":"doNotAutoClose","selfcloseAfter":5,"reshowBannerAfter":"everyNewSession","fontFamily":null},"addedItemIdentifier":"_Gifted","ignoreOtherAppLineItems":null,"customVariantsInfoLifetimeMins":1440,"redirectPath":null,"ignoreNonStandardCartRequests":false,"bannerStyle":{"position":{"horizontal":"right","vertical":"bottom"},"primaryColor":"#000000","backgroundColor":"#FFFFFF","borderRadius":null,"padding":"","headerFontSize":"","subHeaderFontSize":"","cssStyles":"","fontFamily":null},"themePresetId":"0","notificationStyle":{"position":{"horizontal":"right","vertical":"bottom"},"primaryColor":"#3A3A3A","backgroundColor":"#FFFFFF","borderRadius":null,"duration":"3.0","headerFontSize":"","subHeaderFontSize":"","padding":"","cssStyles":null,"hasCustomizations":false,"fontFamily":null},"fetchCartData":false,"useLocalStorage":{"enabled":false,"expiryMinutes":null},"popupStyle":{"priceShowZeroDecimals":true,"primaryColor":"#3A3A3A","secondaryColor":"#3A3A3A","buttonTextColor":null,"backgroundColor":"#FFFFFF","borderRadius":null,"padding":"","headerFontSize":"","subHeaderFontSize":"","bodyColor":null,"bodyFontSize":"","cssStyles":"Ðа мобилке модалка ÑиÑе, Ñ ÐºÐ°ÑÑоÑек менÑÑе внÑÑÑенние оÑÑÑÑÐ¿Ñ â ÑоваÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ Ð±Ð¾Ð»ÑÑе ÑиÑинÑ. Ðамени CSS Ñеликом:\n\n```css\n#aca-modal {\n background: rgba(21, 20, 23, 0.72) !important;\n font-family: \"Poppins\", sans-serif !important;\n color: #151417 !important;\n -webkit-font-smoothing: antialiased;\n}\n\n#aca-modal-wrapper {\n width: min(920px, calc(100% - 48px)) !important;\n max-width: 920px !important;\n margin: 24px auto !important;\n min-height: calc(100% - 48px) !important;\n}\n\n#aca-modal-container {\n margin: 0 !important;\n padding: 40px 40px 28px !important;\n border: 0 !important;\n border-radius: 20px !important;\n background: #ffffff !important;\n box-shadow:\n 0 5px 10px rgba(0, 0, 0, 0.06),\n 0 18px 18px rgba(0, 0, 0, 0.05),\n 0 41px 25px rgba(0, 0, 0, 0.03) !important;\n max-width: none !important;\n}\n\n#aca-close-icon-container {\n display: flex !important;\n align-items: center;\n justify-content: center;\n top: 16px !important;\n right: 16px !important;\n width: 32px !important;\n height: 32px !important;\n padding: 0 !important;\n border: 0 !important;\n background: transparent !important;\n}\n\n#aca-close-icon-container svg {\n width: 22px;\n height: 22px;\n}\n\n#aca-close-icon {\n stroke: #151417 !important;\n stroke-width: 3px !important;\n}\n\n#aca-modal-headline {\n margin: 0 36px 8px !important;\n font-family: \"Archivo\", sans-serif !important;\n font-size: 28px !important;\n font-weight: 800 !important;\n line-height: 1.15 !important;\n letter-spacing: 0 !important;\n text-transform: uppercase !important;\n color: #151417 !important;\n}\n\n#aca-modal-subheadline {\n margin: 0 0 24px !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 16px !important;\n font-weight: 500 !important;\n line-height: 1.4 !important;\n color: rgba(21, 20, 23, 0.55) !important;\n}\n\n#aca-products-container {\n display: flex !important;\n align-items: stretch !important;\n justify-content: center !important;\n flex-wrap: wrap !important;\n width: 100% !important;\n gap: 16px;\n}\n\n#aca-products-container .aca-product {\n display: flex !important;\n flex-direction: column !important;\n align-self: stretch !important;\n width: 220px !important;\n margin: 0 !important;\n padding: 16px 16px 18px !important;
510\n border-radius: 17px !important;\n background: #f3f3f3 !important;\n box-sizing: border-box;\n}\n\n.aca-product-image {\n height: 180px !important;\n margin-bottom: 12px !important;\n border-radius: 12px;\n overflow: hidden;\n background: #ffffff !important;\n}\n\n.aca-product-name,\n.aca-subscription-name {\n margin: 0 !important;\n font-family: \"Archivo\", sans-serif !important;\n font-size: 15px !important;\n font-weight: 800 !important;\n line-height: 1.25 !important;\n text-transform: uppercase !important;\n color: #151417 !important;\n}\n\n.aca-product-variant-name {\n margin: 6px 0 0 !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 13px !important;\n font-weight: 500 !important;\n color: rgba(21, 20, 23, 0.55) !important;\n}\n\n.aca-product-price {\n margin-top: 10px !important;\n margin-bottom: 0 !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 16px !important;\n font-weight: 600 !important;\n color: #151417 !important;\n}\n\n.aca-product-original-price {\n color: rgba(21, 20, 23, 0.4) !important;\n font-weight: 500 !important;\n}\n\n.aca-product-discounted-price {\n color: #2cafdb !important;\n font-weight: 700 !important;\n}\n\n.aca-product-price.aca-product-discounted-price,\n.aca-product-price:last-of-type {\n margin-bottom: 20px !important;\n}\n\n.aca-subscription-label {\n margin: 0 0 6px !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 12px !important;\n font-weight: 600 !important;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: rgba(21, 20, 23, 0.55) !important;\n}\n\n.aca-product-dropdown {\n height: 42px !important;\n margin-top: 0 !important;\n margin-bottom: 10px !important;\n background: transparent !important;\n}\n\n.aca-product-dropdown select {\n border: 1.5px solid rgba(21, 20, 23, 0.12) !important;\n border-radius: 100px !important;\n background: #ffffff !important;\n color: #151417 !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 13px !important;\n font-weight: 500 !important;\n padding: 0 32px 0 14px !important;\n}\n\n.aca-product-dropdown select:focus {\n border-color: #151417 !important;\n}\n\nbutton.aca-product-button {\n margin-top: auto !important;\n min-height: 44px !important;\n padding: 10px 16px !important;\n border: 0 !important;\n border-radius: 22px !important;\n background: #b6d333 !important;\n color: #ffffff !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 14px !important;\n font-weight: 700 !important;\n letter-spacing: 0.04em !important;\n text-transform: uppercase !important;\n box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15);\n transition: background-color 0.2s ease;\n}\n\nbutton.aca-product-button:hover {\n background: #9fba2a !important;\n}\n\n.aca-product-button.aca-product-out-of-stock-button {\n background: #ffffff !important;\n color: #151417 !important;\n border: 1.5px solid #151417 !important;\n box-shadow: none !important;\n cursor: not-allowed !important;\n}\n\n.aca-button-loader {\n border-top-color: #ffffff !important;\n}\n\n.aca-button-tick {\n border-bottom-color: #ffffff !important;\n border-right-color: #ffffff !important;\n}\n\n#aca-bottom-close {\n margin-top: 20px !important;\n padding: 12px 28px !important;\n border: 0 !important;\n background: transparent !important;\n font-family: \"Poppins\", sans-serif !important;\n font-size: 14px !important;\n font-weight: 600 !important;\n color: #151417 !important;\n text-decoration: underline;\n text-underline-offset: 3px;\n}\n\n#aca-bottom-close:hover {\n color: #2cafdb !important;\n}\n\n@media screen and (max-width: 950px) {\n #aca-products-container {\n gap: 8px;\n }\n\n #aca-products-container .aca-product {\n width: calc(50% - 4px) !important;\n max-width: none !important;\n margin: 0 !important;\n padding: 10px 8px 12px !important;\n }\n}\n\n@media screen and (max-width: 767px) {\n #aca-modal-wrapper {\n width: calc(100% - 12px) !important;\n margin: 6px auto !important;\n min-height: calc(100% - 12px) !important;\n }\n\n #aca-modal-container {\n padding: 20px 8px 12px !important;\n border-radius: 14px !important;\n }\n\n #aca-close-icon-container {\n top: 8px !important;\n right: 8px !important;\n }\n\n #aca-modal-headline {\n margin: 4px 28px 6px !important;\n font-size: 18px !important;\n line-height: 22px !important;\n }\n\n #aca-modal-subheadline {\n margin: 0 0 12px !important;\n font-size: 13px !important;\n }\n\n #aca-products-container {\n gap: 6px;\n width: 100% !important;\n }\n\n #aca-products-container .aca-product {\n width: calc(50% - 3px) !important;\n padding: 8px 6px 10px !important;\n border-radius: 12px !important;\n }\n\n .aca-product-image {\n height: 110px !important;\n margin-bottom: 8px !important;\n border-radius: 8px;\n }\n\n .aca-product-name,\n .aca-subscription-name {\n font-size: 12px !important;\n }\n\n .aca-product-price.aca-product-discounted-price,\n .aca-product-price:last-of-type {\n margin-bottom: 12px !important;\n }\n\n .aca-product-dropdown {\n height: 32px !important;\n margin-bottom: 6px !important;\n }\n\n button.aca-product-button {\n min-height: 34px !important;\n padding: 6px 8px !important;\n font-size: 12px !important;\n border-radius: 22px !important;\n }\n\n #aca-bottom-close {\n margin-top: 10px !important;\n padding: 8px 12px !important;\n }\n}","hasCustomizations":true,"addButtonText":"Select","dismissButtonText":"Close","outOfStockButtonText":"Out of Stock","imageUrl":null,"showProductLink":false,"subscriptionLabel":"Subscription Plan","closeModalOutsideClick":true,"headerFontFamily":null,"bodyFontFamily":null},"refreshAfterBannerClick":false,"disableReapplyRules":false,"disableReloadOnFailedAddition":false,"autoReloadCartPage":false,"ajaxRedirectPath":null,"allowSimultaneousRequests":false,"applyRulesOnCheckout":false,"enableCartCtrlOverrides":true,"customRedirectFromCart":null,"scriptSettings":{"branding":{"removalRequestSent":null,"show":false},"productPageRedirection":{"products":[],"redirectionURL":"\/","enabled":false},"debugging":{"enabled":false,"enabledOn":null,"stringifyObj":false},"removeEGPropertyFromSplitActionLineItems":false,"fetchProductInfoFromSavedDomain":false,"reApplyValueBasedRulesInCart":false,"useFinalPriceGetEntireCart":false,"hideGiftedPropertyText":false,"fetchCartDataBeforeRequest":false,"disableRedirectAfterFormSubmit":false,"customCSS":null,"decodePayload":false,"delayUpdates":2000,"hideAlertsOnFrontend":false,"enableBuyNowInterceptions":true,"removeProductsAddedFromExpiredRules":true,"useFinalPrice":false},"promoCodeMessageStyle":{"message":"Free gift added!"},"egDiscount":{"cartValueStopCollectionCheck":false},"accessToEnterprise":false},"translations":null,"defaultLocale":"en","shopDomain":"saltycaptain.com.au"}; 511 var productRedirectionEnabled = shopInfo.settings.scriptSettings.productPageRedirection.enabled; 512 if (["Unlimited", "Enterprise"].includes(shopInfo.subscriptionName) && productRedirectionEnabled) { 513 var products = shopInfo.settings.scriptSettings.productPageRedirection.products; 514 if (products.length > 0) { 515 var productIds = products.map(function(prod) { 516 var productGid = prod.id; 517 var productIdNumber = parseInt(productGid.split('/').pop()); 518 return productIdNumber; 519 }); 520 var productInfo = null; 521 var isProductInList = productIds.includes(productInfo.id); 522 if (isProductInList) { 523 var redirectionURL = shopInfo.settings.scriptSettings.productPageRedirection.redirectionURL; 524 if (redirectionURL) { 525 window.location = redirectionURL; 526 } 527 } 528 } 529 } 530 531 532 } catch(err) { 533 return 534 }}
534)() 535 </script>
535 536 537 538 539<!-- END app block -->
539<script src="https://cdn.shopify.com/extensions/01a0fdff-2b95-7a42-80bb-495e663795ed/forms-2610/assets/shopify-forms-loader.js" type="text/javascript" defer="defer"></script>
539 540<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
541<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: 28845277320,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "search"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 541
541
542<script> 543 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 544</script>
vendor: 1 bytes, line 544
544
545<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}
545).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: 28845277320,storefrontBaseUrl: "https://saltycaptain.com.au",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://saltycaptain.com.au/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"2884796780","configuration":"{\"shopId\":\"b0690a5a-54cf-44ab-a8b3-04ef1cbfbdf1\",\"analyticsUrl\":\"https:\\\/\\\/shogun-abc-production.global.ssl.fastly.net\",\"appType\":\"ab_testing\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"6d2b8445c58f7ac1a1dfccce276de7aa","type":"APP","apiClientId":214825828353,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]}
545,"dataSharingState":"unrestricted"},{"id":"2627404140","configuration":"{\"projectId\":\"y9v58pvmlj\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d8a2bb2ccbb513dc8e8b6937f4b8033e","type":"APP","apiClientId":240074326017,"privacyPurposes":[],"capabilities":["advanced_dom_events"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"2349465964","configuration":"{\"shopId\":\"130348\",\"env\":\"production\",\"metaData\":\"[]\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8323bee30e1ec3ae135ae5e0cef4ab6d","type":"APP","apiClientId":2773553,"privacyPurposes":[],"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":"2282127724","configuration":"{\n \"accountID\":\"saltycaptain-co.myshopify.com\",\n \"environment\":\"production\",\n \"apiURL\":\"https:\/\/api.quizkitapp.com\"\n }","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8b4008b7d9cf69ef6aab7ff3dbda8179","type":"APP","apiClientId":4291957,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2185134444","configuration":"{\"accountID\":\"33882\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"1da53b93db3244cc6da67a42e8ad6fc5","type":"APP","apiClientId":3247471,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2152563052","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-JJEGZ83R3Q\\\",\\\"AW-633202703\\\",\\\"GT-TBNM78DK\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-JJEGZ83R3Q\\\",\\\"AW-633202703\\\/hcK5CNHErpAcEI_Q960C\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-JJEGZ83R3Q\\\",\\\"AW-633202703\\\/Zuc2CPjPwJAcEI_Q960C\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-JJEGZ83R3Q\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-JJEGZ83R3Q\\\",\\\"AW-633202703\\\/K7fhCPXPwJAcEI_Q960C\\\",\\\"MC-B5XQ5G40X4\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-JJEGZ83R3Q\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-JJEGZ83R3Q\\\",\\\"AW-633202703\\\/cBVRCM7ErpAcEI_Q960C\\\",\\\"MC-B5XQ5G40X4\\\",\\\"AW-633202703\\\/a8XjCKPFpoYbEI_Q960C\\\",\\\"AW-633202703\\\/kZmVCJOZ-OAZEI_Q960C\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-JJEGZ83R3Q\\\",\\\"AW-633202703\\\/_mIPCNfErpAcEI_Q960C\\\",\\\"MC-B5XQ5G40X4\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-JJEGZ83R3Q\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-JJEGZ83R3Q\\\",\\\"AW-633202703\\\/4AV9CPvPwJAcEI_Q960C\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-JJEGZ83R3Q\\\",\\\"AW-633202703\\\/gbuKCNTErpAcEI_Q960C\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-JJEGZ83R3Q\\\"}],\\\"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":"1160905068","configuration":"{\"pixel_id\":\"853940821677920\",\"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"]}
545,{"id":"1073840492","configuration":"{\"shopId\":\"saltycaptain-co.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":"955613548","configuration":"{\"accountID\":\"selleasy-metrics-track\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"50acfdcd7b118f50e52df83f64624d06","type":"APP","apiClientId":5519923,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"952369516","configuration":"{\"accountID\":\"RKQEJZ\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"cbf4a80740670c5ae93d33dc67925b9a","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":"35029150","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"2","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Landing Page A\/B Testing"},{"id":"116883820","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Data Layer "},{"id":"117571948","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["SALE_OF_DATA"],"name":"Google Conv. Tracking "},{"id":"127795564","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS"],"name":"Google Analytics tag (migrated)"}
545,{"id":"151716204","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["SALE_OF_DATA"],"name":"[BSD] Google Tracking Pixel"},{"id":"159449452","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Hotjar Tracking Script"},{"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":"Salty Captain","paymentSettings":{"currencyCode":"AUD"},"myshopifyDomain":"saltycaptain-co.myshopify.com","countryCode":"AU","storefrontUrl":"https:\/\/saltycaptain.com.au"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://saltycaptain.com.au/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"192598049132","themePublished":"true","eventMetadataId":"06f655da-3a69-471b-8333-1e459578c6d6","pageType":"searchresults","shopId":"28845277320","storefrontBaseUrl":"https:\/\/saltycaptain.com.au","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}],[\"search_submitted\",{\"searchResult\":{\"query\":\"\",\"productVariants\":[]}}]]"});})();</script>
545<script> 546 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 547 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 548 window.ShopifyAnalytics.meta.currency = 'AUD'; 549 var meta = {"products":[],"page":{"pageType":"searchresults","requestId":"456e2517-f662-40b0-8d95-a4a8028c40c3-1791082464"}}; 550 for (var attr in meta) { 551 window.ShopifyAnalytics.meta[attr] = meta[attr]; 552 } 553</script>
vendor: 1 bytes, line 553
553
554<script class="analytics"> 555 (function () { 556 var customDocumentWrite = function(content) { 557 var jquery = null; 558 559 if (window.jQuery) { 560 jquery = window.jQuery; 561 } else if (window.Checkout && window.Checkout.$) { 562 jquery = window.Checkout.$; 563 } 564 565 if (jquery) { 566 jquery('body').append(content); 567 } 568 }; 569 570 var hasLoggedConversion = function(token) { 571 if (token) { 572 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 573 } 574 return false; 575 } 576 577 var setCookieIfConversion = function(token) { 578 if (token) { 579 var twoMonthsFromNow = new Date(Date.now()); 580 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 581 582 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 583 } 584 } 585 586 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 587 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 588 if (trekkie.integrations) { 589 return; 590 } 591 trekkie.methods = [ 592 'identify', 593 'page', 594 'ready', 595 'track', 596 'trackForm', 597 'trackLink' 598 ]; 599 trekkie.factory = function(method) { 600 return function() { 601 var args = Array.prototype.slice.call(arguments); 602 args.unshift(method); 603 trekkie.push(args); 604 if (method == 'track' || method == 'page') { 605 var pageUrl; 606 try { 607 pageUrl = window.location.href; 608 } catch (e) {} 609 var pageReferrer; 610 try { 611 pageReferrer = document.referrer; 612 } catch (e) {} 613 try { 614 if (window.__TREKKIE_SHIM_QUEUE == null) { 615 window.__TREKKIE_SHIM_QUEUE = []; 616 } 617 window.__TREKKIE_SHIM_QUEUE.push({ 618 from: 'trekkie-stub', 619 method: method, 620 args: args.slice(1), 621 pageContext: { 622 url: pageUrl, 623 referrer: pageReferrer 624 } 625 }); 626 } catch (e) { 627 // no-op 628 } 629 } 630 return trekkie; 631 }; 632 }; 633 for (var i = 0; i < trekkie.methods.length; i++) { 634 var key = trekkie.methods[i]; 635 trekkie[key] = trekkie.factory(key); 636 } 637 trekkie.load = function(config) { 638 trekkie.config = config || {}; 639 trekkie.config.initialDocumentCookie = document.cookie; 640 var first = document.getElementsByTagName('script')[0]; 641var script = document.createElement('script'); 642script.type = 'text/javascript'; 643script.onerror = function(e) { 644 var scriptFallback = document.createElement('script'); 645 scriptFallback.type = 'text/javascript'; 646 scriptFallback.onerror = function(error) { 647 var Monorail = { 648 produce: function produce(monorailDomain, schemaId, payload) { 649 var currentMs = new Date().getTime(); 650 var event = { 651 schema_id: schemaId, 652 payload: payload, 653 metadata: { 654 event_created_at_ms: currentMs, 655 event_sent_at_ms: currentMs 656 } 657 }; 658 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 659 }, 660 sendRequest: function sendRequest(endpointUrl, payload) { 661 // Try the sendBeacon API 662 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 663 var blobData = new window.Blob([payload], { 664 type: 'text/plain' 665 }); 666 667 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 668 return true; 669 } // sendBeacon was not successful 670 671 } // XHR beacon 672 673 var xhr = new XMLHttpRequest(); 674 675 try { 676 xhr.open('POST', endpointUrl); 677 xhr.setRequestHeader('Content-Type', 'text/plain'); 678 xhr.send(payload); 679 } catch (e) { 680 console.log(e); 681 } 682 683 return false; 684 }, 685 isIos12: function isIos12() { 686 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 687 } 688 }; 689 Monorail.produce('monorail-edge.shopifysvc.com', 690 'trekkie_storefront_load_errors/1.1', 691 {shop_id: 28845277320, 692 theme_id: 192598049132, 693 app_name: "storefront", 694 context_url: window.location.href, 695 source_url: "//saltycaptain.com.au/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 696 697 }; 698 scriptFallback.async = true; 699 scriptFallback.src = '//saltycaptain.com.au/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 700 first.parentNode.insertBefore(scriptFallback, first); 701}; 702script.async = true; 703script.src = '//saltycaptain.com.au/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 704first.parentNode.insertBefore(script, first); 705 706 }; 707 trekkie.load( 708 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":28845277320,"isMerchantRequest":null,"themeId":192598049132,"themeCityHash":"11891024802574446163","contentLanguage":"en","currency":"AUD","eventMetadataId":"06f655da-3a69-471b-8333-1e459578c6d6"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 709 ); 710 711 var loaded = false;
712 trekkie.ready(function() { 713 if (loaded) return; 714 loaded = true; 715 716 window.ShopifyAnalytics.lib = window.trekkie; 717 718 var originalDocumentWrite = document.write; 719 document.write = customDocumentWrite; 720 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 721 document.write = originalDocumentWrite; 722 723 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 724 var token = match? match[1]: undefined; 725 if (!hasLoggedConversion(token)) { 726 setCookieIfConversion(token); 727 window.ShopifyAnalytics.lib.track("Performed Search",{"query":null},undefined,undefined,{"shopifyEmitted":true}); 728 } 729 }); 730 731 window.ShopifyAnalytics.lib.page(null,{"pageType":"searchresults","requestId":"456e2517-f662-40b0-8d95-a4a8028c40c3-1791082464","shopifyEmitted":true}); 732 733 var eventsListenerScript = document.createElement('script'); 734 eventsListenerScript.async = true; 735 eventsListenerScript.src = "//saltycaptain.com.au/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 736 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 737})();</script>
737 738
738<script> 739 if (!window.ga || (window.ga && typeof window.ga !== 'function')) { 740 window.ga = function ga() { 741 (window.ga.q = window.ga.q || []).push(arguments); 742 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 743 window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); 744 } 745 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."); 746 }; 747 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 748 window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); 749 } 750 } 751</script>
vendor: 1 bytes, line 751
751
752<script 753 defer 754 src="https://saltycaptain.com.au/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 755 data-application="storefront-renderer" 756 data-shop-id="28845277320" 757 data-render-region="gcp-us-central1" 758 data-page-type="search" 759 data-theme-instance-id="192598049132" 760 data-theme-name="Glow" 761 data-theme-version="0.1.0" 762 data-monorail-region="shop_domain" 763 data-resource-timing-sampling-rate="10" 764 data-shs="true" 765 data-shs-beacon="true" 766 data-shs-export-with-fetch="true" 767 data-shs-logs-sample-rate="1" 768 data-shs-beacon-endpoint="https://saltycaptain.com.au/api/collect" 769></script>
769 770<meta name="shopify-y" content="b83d17ac-8f36-4b83-84cb-21270627056a" data-expiration="1822640064000"><meta name="shopify-s" content="7d273728-fd1d-4bcb-ad3e-b7d1697a63c9" data-expiration="1791084264000"><meta name="new-cookie-storage-activated" content="t"> 771</head> 772 773 <body class=""> 774 <div class="wrapper"> 775 <header class="header"> 776 <div id="shopify-section-header" class="shopify-section"> 777 778<header class="header header--no-inline-search" data-header> 779 780 <div class="header__announcement" data-announcement-bar> 781 <div class="header__announcement-track" data-announcement-track> 782 783 <p class="header__announcement-text" > 784 1800W Pressure Washer <b> <u>Now Available!</u></b> 785 </p> 786 787 </div> 788 </div> 789 790 791 <div class="header__main"> 792 <div class="header__inner container"> 793 <button 794 class="header__burger" 795 type="button" 796 data-header-menu 797 aria-expanded="false" 798 aria-controls="header-drawer" 799 aria-label="Open menu" 800 > 801 <img src="//saltycaptain.com.au/cdn/shop/t/212/assets/icon-menu.svg?v=81051655424226754681790801601" alt="" width="24" height="25" /> 802 </button> 803 804 <a class="header__logo" href="/" aria-label="Salty Captain"> 805 806 <img 807 class="header__logo-img" 808 src="//saltycaptain.com.au/cdn/shop/files/Salty_Text_White_Logo.png?v=1788147991&width=300" 809 alt="Salty Captain" 810 width="150" 811 height="auto" 812 loading="eager" 813 > 814 815 </a> 816 817 <nav class="header__nav" aria-label="Main"> 818 <ul class="header__nav-list"> 819 820 <li class="header__nav-item"> 821 <a 822 class="header__nav-link" 823 href="/collections/car-care" 824 825 > 826 <span>Car</span> 827 828 </a> 829 830 </li> 831 832 <li class="header__nav-item"> 833 <a 834 class="header__nav-link" 835 href="/collections/4wd-care" 836 837 > 838 <span>4WD</span> 839 840 </a> 841 842 </li> 843 844 <li class="header__nav-item"> 845 <a 846 class="header__nav-link" 847 href="/collections/marine" 848 849 > 850 <span>Marine</span> 851 852 </a> 853 854 </li> 855 856 <li class="header__nav-item"> 857 <a 858 class="header__nav-link" 859 href="/collections/washers" 860 861 > 862 <span>Pressure washers</span> 863 864 </a> 865 866 </li> 867 868 <li class="header__nav-item"> 869 <a 870 class="header__nav-link" 871 href="/pages/build-your-own-bundle" 872 873 > 874 <span>Build your own bundle</span> 875 876 </a> 877 878 </li> 879 880 <li class="header__nav-item"> 881 <a 882 class="header__nav-link" 883 href="/pages/build-your-subscription" 884 885 > 886 <span>Build your subscription</span> 887 888 </a> 889 890 </li> 891 892 </ul> 893 </nav> 894 895 <div class="header__actions"> 896 <a class="header__icon header__icon--search" href="/search" aria-label="Search"> 897 <img src="//saltycaptain.com.au/cdn/shop/t/212/assets/icon-search.svg?v=67654945571305855071790801601" alt="" width="25" height="25" /> 898 </a> 899 <a class="header__icon" href="/account" aria-label="Account"> 900 <img src="//saltycaptain.com.au/cdn/shop/t/212/assets/icon-account.svg?v=166889357054165663071790801601" alt="" width="25" height="25" /> 901 </a> 902 <button class="header__icon header__icon--cart" type="button" data-cart-toggle aria-label="Cart"> 903 <img src="//saltycaptain.com.au/cdn/shop/t/212/assets/icon-cart.svg?v=113054386401267283651790801601" alt="" width="25" height="25" />
904 <span class="header__cart-count" data-cart-count aria-hidden="true">0</span> 905 </button> 906 </div> 907 </div> 908 </div> 909 910 <div class="header__drawer" id="header-drawer" data-header-drawer aria-hidden="true"> 911 <button 912 class="header__drawer-overlay" 913 type="button" 914 data-header-drawer-close 915 aria-label="Close menu" 916 ></button> 917 918 <div class="header__drawer-panel"> 919 <button 920 class="header__drawer-close" 921 type="button" 922 data-header-drawer-close 923 aria-label="Close menu" 924 > 925 <img src="//saltycaptain.com.au/cdn/shop/t/212/assets/icon-close.svg?v=14924850476636504031790801601" alt="" width="24" height="24" /> 926 </button> 927 928 <nav class="header__drawer-nav" aria-label="Mobile"> 929 <ul class="header__drawer-list"> 930 931 <li class="header__drawer-item"> 932 933 <a class="header__drawer-link" href="/collections/car-care">Car</a> 934 935 </li> 936 937 <li class="header__drawer-item"> 938 939 <a class="header__drawer-link" href="/collections/4wd-care">4WD</a> 940 941 </li> 942 943 <li class="header__drawer-item"> 944 945 <a class="header__drawer-link" href="/collections/marine">Marine</a> 946 947 </li> 948 949 <li class="header__drawer-item"> 950 951 <a class="header__drawer-link" href="/collections/washers">Pressure washers</a> 952 953 </li> 954 955 <li class="header__drawer-item"> 956 957 <a class="header__drawer-link" href="/pages/build-your-own-bundle">Build your own bundle</a> 958 959 </li> 960 961 <li class="header__drawer-item"> 962 963 <a class="header__drawer-link" href="/pages/build-your-subscription">Build your subscription</a> 964 965 </li> 966 967 </ul> 968 </nav> 969 </div> 970 </div> 971</header> 972 973 974</div> 975 </header> 976 977 <main id="main-content"> 978 <section id="shopify-section-template--28926808064364__main" class="shopify-section collection-section"> 979<div class="collection" data-collection> 980 <div class="container collection__inner"><div class="collection__header"> 981 <div class="collection__heading"> 982 <h1 class="collection__title">Search</h1></div> 983 984 <div class="collection__toolbar"> 985 <div class="collection__search-form"> 986 <form action="/search" method="get" role="search" class="collection__search-input-wrap"> 987 <input type="hidden" name="type" value="product"> 988 <input 989 class="collection__search-input" 990 type="search" 991 name="q" 992 value="" 993 placeholder="Search products..." 994 autocomplete="off" 995 > 996 <button class="collection__search-btn" type="submit" aria-label="Search"> 997 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 998 <path d="M9.16667 15.8333C12.8486 15.8333 15.8333 12.8486 15.8333 9.16667C15.8333 5.48477 12.8486 2.5 9.16667 2.5C5.48477 2.5 2.5 5.48477 2.5 9.16667C2.5 12.8486 5.48477 15.8333 9.16667 15.8333Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 999 <path d="M17.5 17.5L13.875 13.875" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 1000 </svg> 1001 </button> 1002 </form> 1003 </div> 1004 </div> 1005 </div></div> 1006</div> 1007 1008 1009 1010</section> 1011 </main> 1012 1013 <div id="shopify-section-footer" class="shopify-section"> 1014 1015 1016 <section class="cleaning-systems"> 1017 1018 <img 1019 class="cleaning-systems__bg" 1020 src="//saltycaptain.com.au/cdn/shop/files/Boat-Brushes-081_65c24dd5-545b-4d09-a2d1-4838d0762d33.jpg?v=1787182643&width=2880" 1021 alt="" 1022 width="3000" 1023 height="2000" 1024 loading="lazy" 1025 > 1026 1027 <div class="cleaning-systems__overlay" aria-hidden="true"></div> 1028 1029 <div class="cleaning-systems__inner container"> 1030 <div class="cleaning-systems__content"> 1031
1032 <span class="cleaning-systems__label">Australian made</span> 1033 1034 1035 <h2 class="cleaning-systems__title h1">Cleaning systems for cars, boats, 4WDs.</h2> 1036 1037 </div> 1038 1039 <div class="cleaning-systems__actions"> 1040 1041 <a class="btn btn--light" href="/collections"> 1042 Shop by need 1043 </a> 1044 1045 1046 </div> 1047 1048 </div> 1049 </section> 1050 1051 1052<footer class="footer" data-footer> 1053 <div class="footer__container container"> 1054 <div class="footer__inner"> 1055 <div class="footer__top"> 1056 <div class="footer__subscribe"> 1057 1058 <p class="footer__subscribe-title">Get 5% off your first order!</p> 1059 1060 <form method="post" action="/contact#contact_form" id="contact_form" accept-charset="UTF-8" class="footer__form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="â" /> 1061 <input type="hidden" name="contact[tags]" value="newsletter"> 1062 <input 1063 class="footer__input" 1064 type="email" 1065 name="contact[email]" 1066 placeholder="Enter your email" 1067 required 1068 autocomplete="email" 1069 > 1070 <button class="footer__submit" type="submit">Subscribe</button> 1071 </form> 1072 1073 <div class="footer__note"><p>By clicking "Subscribe" I consent to receiving commercial information to the above e-mail and to having my data processed in connection with the newsletter. I have read and<br/>accept the <a href="/policies/privacy-policy">Privacy Policy</a>.</p></div> 1074 1075 </div> 1076 1077 1078 <nav class="footer__nav" aria-label="Footer"> 1079 1080 1081 <div class="footer__col is-open" data-footer-col data-default-open> 1082 <p class="footer__col-title">Shop</p> 1083 <button 1084 class="footer__col-toggle" 1085 type="button" 1086 data-footer-col-toggle 1087 aria-expanded="true" 1088 aria-controls="footer-col-shop" 1089 > 1090 <span>Shop</span> 1091 <svg class="footer__col-caret" width="22" height="22" viewBox="0 0 22 22" fill="none" aria-hidden="true"> 1092 <path d="M6 9l5 5 5-5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 1093 </svg> 1094 </button> 1095 <div class="footer__collapse" id="footer-col-shop" > 1096 <div class="footer__collapse-inner"> 1097 <ul class="footer__col-list"> 1098 1099 <li><a class="footer__link" href="/collections/marine">Marine</a></li> 1100 1101 <li><a class="footer__link" href="/collections/4wd-care">4WD</a></li> 1102 1103 <li><a class="footer__link" href="/collections/car-care">CAR</a></li> 1104 1105 </ul> 1106 </div> 1107 </div> 1108 </div> 1109 1110 1111 <div class="footer__col" data-footer-col > 1112 <p class="footer__col-title">Info</p> 1113 <button 1114 class="footer__col-toggle" 1115 type="button" 1116 data-footer-col-toggle 1117 aria-expanded="false" 1118 aria-controls="footer-col-info" 1119 > 1120 <span>Info</span> 1121 <svg class="footer__col-caret" width="22" height="22" viewBox="0 0 22 22" fill="none" aria-hidden="true"> 1122 <path d="M6 9l5 5 5-5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 1123 </svg> 1124 </button> 1125 <div class="footer__collapse" id="footer-col-info" hidden> 1126 <div class="footer__collapse-inner"> 1127 <ul class="footer__col-list"> 1128 1129 <li><a class="footer__link" href="/pages/a-bit-about-us">Our Story</a></li> 1130 1131 <li><a class="footer__link" href="/pages/contact-us">Contact Us</a></li> 1132 1133 <li><a class="footer__link" href="/pages/wholesale-signup">Wholesale</a></li> 1134 1135 <li><a class="footer__link" href="/blogs/journal">Journal</a></li> 1136 1137 </ul> 1138 </div> 1139 </div> 1140 </div> 1141 1142
1143 <div class="footer__col" data-footer-col > 1144 <p class="footer__col-title">Terms</p> 1145 <button 1146 class="footer__col-toggle" 1147 type="button" 1148 data-footer-col-toggle 1149 aria-expanded="false" 1150 aria-controls="footer-col-terms" 1151 > 1152 <span>Terms</span> 1153 <svg class="footer__col-caret" width="22" height="22" viewBox="0 0 22 22" fill="none" aria-hidden="true"> 1154 <path d="M6 9l5 5 5-5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 1155 </svg> 1156 </button> 1157 <div class="footer__collapse" id="footer-col-terms" hidden> 1158 <div class="footer__collapse-inner"> 1159 <ul class="footer__col-list"> 1160 1161 <li><a class="footer__link" href="/policies/shipping-policy">Shipping Policy</a></li> 1162 1163 <li><a class="footer__link" href="/policies/refund-policy">Returns & Refunds</a></li> 1164 1165 <li><a class="footer__link" href="/policies/privacy-policy">Privacy Policy</a></li> 1166 1167 <li><a class="footer__link" href="/policies/terms-of-service">Terms of Service</a></li> 1168 1169 </ul> 1170 </div> 1171 </div> 1172 </div> 1173 1174 </nav> 1175 1176 </div> 1177 1178 <div class="footer__meta"> 1179 1180 <div class="footer__social"> 1181 1182 <a class="footer__social-link" href="https://www.facebook.com/saltycaptain.co/" aria-label="" > 1183 1184 <img src="//saltycaptain.com.au/cdn/shop/files/Facebook.svg?v=1784376815&width=48" alt="" width="24" height="24" loading="lazy" /> 1185 1186 </a> 1187 1188 <a class="footer__social-link" href="https://www.instagram.com/saltycaptain.co/" aria-label="" > 1189 1190 <img src="//saltycaptain.com.au/cdn/shop/files/Instagram.svg?v=1784376809&width=48" alt="" width="24" height="24" loading="lazy" /> 1191 1192 </a> 1193 1194 <a class="footer__social-link" href="https://www.youtube.com/channel/UCwWQN3pVVAUXIa624BojbxQ" aria-label="" > 1195 1196 <img src="//saltycaptain.com.au/cdn/shop/files/tiktok.svg?v=1784376820&width=48" alt="" width="24" height="24" loading="lazy" /> 1197 1198 </a> 1199 1200 <a class="footer__social-link" href="https://www.youtube.com/channel/UCwWQN3pVVAUXIa624BojbxQ" aria-label="" > 1201 1202 <img src="//saltycaptain.com.au/cdn/shop/files/youtube.svg?v=1784376820&width=48" alt="" width="24" height="24" loading="lazy" /> 1203 1204 </a> 1205 1206 </div> 1207 1208 1209 <div class="footer__payments" aria-label="Payment methods"> 1210 1211 1212 1213 <img 1214 class="footer__payment" 1215 src="//saltycaptain.com.au/cdn/shop/files/Item_9.svg?v=1784560192&width=64" 1216 alt="Payment method" 1217 width="32" 1218 height="20" 1219 loading="lazy" 1220 1221 > 1222 1223 1224 1225 <img 1226 class="footer__payment" 1227 src="//saltycaptain.com.au/cdn/shop/files/Item_8.svg?v=1784560178&width=64" 1228 alt="Payment method" 1229 width="32" 1230 height="20" 1231 loading="lazy" 1232 1233 > 1234 1235 1236 1237 <img 1238 class="footer__payment" 1239 src="//saltycaptain.com.au/cdn/shop/files/Item_7.svg?v=1784560158&width=64" 1240 alt="Payment method" 1241 width="32" 1242 height="20" 1243 loading="lazy" 1244 1245 > 1246 1247 1248 1249 <img 1250 class="footer__payment" 1251 src="//saltycaptain.com.au/cdn/shop/files/Item_6.svg?v=1784560142&width=64" 1252 alt="Payment method" 1253 width="32" 1254 height="20" 1255 loading="lazy" 1256 1257 > 1258 1259 1260 1261 <img 1262 class="footer__payment" 1263 src="//saltycaptain.com.au/cdn/shop/files/Item_margin.svg?v=1784560124&width=64" 1264 alt="Payment method" 1265 width="32" 1266 height="20" 1267 loading="lazy" 1268 1269 > 1270 1271 1272 1273 <img 1274 class="footer__payment" 1275 src="//saltycaptain.com.au/cdn/shop/files/Item_5.svg?v=1784560106&width=64" 1276 alt="Payment method" 1277 width="32" 1278 height="20" 1279 loading="lazy" 1280 1281 > 1282 1283 1284 1285 <img 1286 class="footer__payment" 1287 src="//saltycaptain.com.au/cdn/shop/files/Item_4.svg?v=1784560090&width=64" 1288 alt="Payment method" 1289 width="32" 1290 height="20" 1291 loading="lazy" 1292 1293 > 1294 1295 1296 1297 <img 1298 class="footer__payment" 1299 src="//saltycaptain.com.au/cdn/shop/files/Item_3.svg?v=1784560076&width=64" 1300 alt="Payment method" 1301 width="32" 1302 height="20" 1303 loading="lazy" 1304 1305 > 1306 1307 1308 1309 <img 1310 class="footer__payment" 1311 src="//saltycaptain.com.au/cdn/shop/files/Item_2.svg?v=1784560059&width=64" 1312 alt="Payment method" 1313 width="32" 1314 height="20" 1315 loading="lazy" 1316 1317 > 1318 1319 1320 1321 <img 1322 class="footer__payment" 1323 src="//saltycaptain.com.au/cdn/shop/files/Item_1.svg?v=1784560033&width=64" 1324 alt="Payment method" 1325 width="32" 1326 height="20" 1327 loading="lazy" 1328 1329 > 1330 1331 1332 1333 </div> 1334 </div> 1335 1336 <div class="footer__bottom"> 1337 <a class="footer__logo" href="/" aria-label="Salty Captain"> 1338 1339 <img 1340 src="//saltycaptain.com.au/cdn/shop/files/Salty_Text_Black_Logo.png?v=1788148145&width=400" 1341 alt="Salty Captain" 1342 width="320" 1343 height="auto" 1344 loading="lazy" 1345 > 1346 1347 </a> 1348 <div class="footer__info"> 1349 1350 <p class="footer__tagline">Clean. Protect. Refill.</p> 1351
1352 <p class="footer__copy">© 2026 Salty Captain Pty Ltd All Rights Reserved.</p> 1353 </div> 1354 </div> 1355 </div> 1356 </div> 1357</footer> 1358 1359 1360</div> 1361 <section id="shopify-section-bottom-bar" class="shopify-section bottom-bar-section"><nav class="bottom-bar" data-bottom-bar aria-label="Mobile navigation"><a 1362 class="bottom-bar__item" 1363 href="/collections/car-care" 1364 1365 1366 ><img 1367 class="bottom-bar__icon" 1368 src="//saltycaptain.com.au/cdn/shop/files/lucide_car_734daab5-71dd-4fe0-949d-f2059ebe94d4.svg?v=1787003994&width=72" 1369 width="18" 1370 height="18" 1371 alt="" 1372 loading="eager" 1373 data-bottom-bar-svg 1374 ><span class="bottom-bar__label">Car</span></a><a 1375 class="bottom-bar__item" 1376 href="/collections/4wd-care" 1377 1378 1379 ><img 1380 class="bottom-bar__icon" 1381 src="//saltycaptain.com.au/cdn/shop/files/ion_water-outline_1_c22148ee-7213-4d92-8028-e1e258979ef5.svg?v=1787048401&width=72" 1382 width="18" 1383 height="18" 1384 alt="" 1385 loading="eager" 1386 data-bottom-bar-svg 1387 ><span class="bottom-bar__label">4WD</span></a><a 1388 class="bottom-bar__item" 1389 href="/collections/marine" 1390 1391 1392 ><img 1393 class="bottom-bar__icon" 1394 src="//saltycaptain.com.au/cdn/shop/files/hugeicons_boat_d1c45ba1-e41a-42b4-b8ae-2a2f42e34738.svg?v=1787004009&width=72" 1395 width="18" 1396 height="18" 1397 alt="" 1398 loading="eager" 1399 data-bottom-bar-svg 1400 ><span class="bottom-bar__label">Marine</span></a><a 1401 class="bottom-bar__item" 1402 href="/collections/washers" 1403 1404 1405 ><img 1406 class="bottom-bar__icon" 1407 src="//saltycaptain.com.au/cdn/shop/files/Washer_Icon_9f5afc3d-a32e-4f28-8cfb-1f42c09bf259.svg?v=1787004251&width=72" 1408 width="18" 1409 height="18" 1410 alt="" 1411 loading="eager" 1412 data-bottom-bar-svg 1413 ><span class="bottom-bar__label">Washers</span></a></nav> 1414</section> 1415 </div> 1416 <div id="shopify-section-cart-drawer" class="shopify-section"> 1417 1418<div class="cart-drawer" data-cart-drawer-root aria-hidden="true" data-section-id="cart-drawer"> 1419 <div class="cart-drawer__overlay" data-cart-drawer-overlay></div> 1420 1421 <aside class="cart-drawer__panel" role="dialog" aria-modal="true" aria-label="Cart drawer"> 1422 <div class="cart-drawer__header"> 1423 <div class="cart-drawer__title"> 1424 <h2> Your cart </h2> 1425 <p> 1426 <span class="cart-drawer__count" data-cart-count>0</span> 1427 items 1428 </p> 1429 </div> 1430 1431 <button 1432 type="button" 1433 class="cart-drawer__close" 1434 data-cart-drawer-close 1435 aria-label="Close cart drawer" 1436 > 1437 <svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"> 1438 <rect x="0.5" y="0.5" width="27" height="27" rx="13.5" stroke="#151417" stroke-opacity="0.5"/> 1439 <path d="M9.28773 9.28844L17.8646 17.8653M17.8646 9.28844L9.28773 17.8653" stroke="#151417" stroke-opacity="0.46" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 1440 </svg> 1441 </button> 1442 </div> 1443 1444 <div class="cart-drawer__body" data-cart-drawer-body> 1445 1446 1447 1448<div class="cart-empty" data-cart-empty> 1449 <div class="cart-empty__inner"> 1450 <div class="cart-empty__icon"> 1451 <svg width="55" height="55" viewBox="0 0 55 55" fill="none" xmlns="http://www.w3.org/2000/svg"> 1452 <rect width="55" height="55" rx="27.5" fill="#151417" fill-opacity="0.08"/> 1453 <path d="M21.7317 28.4615H37.4647C37.6901 28.4646 37.9092 28.3867 38.0821 28.242C38.255 28.0973 38.3704 27.8955 38.4071 27.6731L39.9843 19.9808C40.0096 19.8424 40.0043 19.7002 39.9686 19.5642C39.933 19.4281 39.868 19.3015 39.7781 19.1934C39.6883 19.0852 39.5758 18.998 39.4485 18.938C39.3213 18.878 39.1825 18.8467 39.0419 18.8462H19.8084M35.1952 33.2692H23.482C23.2603 33.2693 23.0454 33.1927 22.8736 33.0526C22.7019 32.9124 22.5839 32.7172 22.5395 32.5L21.7317 28.4615L19.8084 18.8462M19.8084 18.8462L19.0006 15.7692C18.9562 15.552 18.8382 15.3568 18.6665 15.2167C18.4947 15.0765 18.2798 15 18.0581 15H15M34.2335 40C33.9784 40 33.7338 39.8987 33.5535 39.7184C33.3731 39.538 33.2718 39.2935 33.2718 39.0385C33.2718 38.7834 33.3731 38.5389 33.5535 38.3586C33.7338 38.1782 33.9784 38.0769 34.2335 38.0769C34.4885 38.0769 34.7331 38.1782 34.9135 38.3586C35.0938 38.5389 35.1952 38.7834 35.1952 39.0385C35.1952 39.2935 35.0938 39.538 34.9135 39.7184C34.7331 39.8987 34.4885 40 34.2335 40ZM24.6167 40C24.3617 40 24.1171 39.8987 23.9367 39.7184C23.7564 39.538 23.6551 39.2935 23.6551 39.0385C23.6551 38.7834 23.7564 38.5389 23.9367 38.3586C24.1171 38.1782 24.3617 38.0769 24.6167 38.0769C24.8718 38.0769 25.1164 38.1782 25.2967 38.3586C25.4771 38.5389 25.5784 38.7834 25.5784 39.0385C25.5784 39.2935 25.4771 39.538 25.2967 39.7184C25.1164 39.8987 24.8718 40 24.6167 40Z" stroke="#151417" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1454 </svg> 1455 1456 </div> 1457 <h2 class="cart-empty__title">Your cart is empty</h2> 1458 <p class="cart-empty__text">Looks like you haven't added anything yet.</p> 1459 <a href="/collections/all" class="cart-empty__btn" data-cart-drawer-close> 1460 Continue shopping 1461 </a> 1462 </div> 1463 1464 1465 <div class="cart-empty__popular"> 1466 <div class="cart-empty__popular-header"> 1467 <h3 class="cart-empty__popular-title">Popular Right Now</h3> 1468 <div class="cart-empty__popular-nav"> 1469 <button type="button" class="cart-empty__popular-arrow" data-cart-empty-prev aria-label="Previous">
1470 <svg width="13" height="11" viewBox="0 0 13 11" fill="none"> 1471 <path d="M5.5 1L1 5.5L5.5 10M1 5.5H11.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1472 </svg> 1473 </button> 1474 <button type="button" class="cart-empty__popular-arrow" data-cart-empty-next aria-label="Next"> 1475 <svg width="13" height="11" viewBox="0 0 13 11" fill="none"> 1476 <path d="M7 1L11.5 5.5L7 10M11.5 5.5H1" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1477 </svg> 1478 </button> 1479 </div> 1480 </div> 1481 1482 <div class="cart-empty__popular-swiper swiper" data-cart-empty-swiper> 1483 <div class="swiper-wrapper"> 1484 1485 <div class="swiper-slide"> 1486 <div class="cart-rec-card"> 1487 <div class="cart-rec-card__content"> 1488 <a href="/products/1-litre-refill-of-salt-wash-detergent" class="cart-rec-card__image-wrap"> 1489 1490 <img 1491 src="//saltycaptain.com.au/cdn/shop/files/Salt-Wash-1L_7514850e-e906-4e7a-8b8f-63d069b07a0f.jpg?v=1721003681&width=120" 1492 alt="Salt Wash Detergent" 1493 class="cart-rec-card__image" 1494 width="50" 1495 height="50" 1496 loading="lazy" 1497 > 1498 1499 </a> 1500 <a href="/products/1-litre-refill-of-salt-wash-detergent" class="cart-rec-card__title">Salt Wash Detergent</a> 1501 </div> 1502 <div class="cart-rec-card__bottom"> 1503 <span class="cart-rec-card__price"><span class=money>$31.82</span></span> 1504 <button 1505 type="button" 1506 class="cart-rec-card__atc" 1507 data-cart-rec-add 1508 data-variant-id="36833150337182" 1509 aria-label="Add Salt Wash Detergent to cart" 1510 > 1511 <svg width="22" height="22" viewBox="0 0 22 22" fill="none"> 1512 <path d="M6.11611 12.2308H18.0732C18.2445 12.2331 18.411 12.1739 18.5424 12.0639C18.6738 11.954 18.7615 11.8006 18.7894 11.6315L19.9881 5.78538C20.0073 5.68025 20.0032 5.57217 19.9762 5.46877C19.9491 5.36538 19.8997 5.26917 19.8314 5.18695C19.7631 5.10473 19.6776 5.03849 19.5809 4.99289C19.4842 4.9473 19.3787 4.92347 19.2718 4.92308H4.65436M6.11611 12.2308L4.65436 4.92308M6.11611 12.2308L6.73004 15.3C6.76374 15.4651 6.85344 15.6134 6.98396 15.7199C7.11448 15.8265 7.27781 15.8846 7.44629 15.8846H16.3483M4.65436 4.92308L4.04043 2.58462C4.00673 2.41955 3.91703 2.2712 3.78651 2.16467C3.65599 2.05814 3.49266 1.99997 3.32417 2H1M15.6174 21C15.4236 21 15.2377 20.923 15.1006 20.786C14.9636 20.6489 14.8866 20.463 14.8866 20.2692C14.8866 20.0754 14.9636 19.8895 15.1006 19.7525C15.2377 19.6155 15.4236 19.5385 15.6174 19.5385C15.8113 19.5385 15.9972 19.6155 16.1343 19.7525C16.2713 19.8895 16.3483 20.0754 16.3483 20.2692C16.3483 20.463 16.2713 20.6489 16.1343 20.786C15.9972 20.923 15.8113 21 15.6174 21ZM8.30872 21C8.11488 21 7.92898 20.923 7.79192 20.786C7.65485 20.6489 7.57785 20.463 7.57785 20.2692C7.57785 20.0754 7.65485 19.8895 7.79192 19.7525C7.92898 19.6155 8.11488 19.5385 8.30872 19.5385C8.50256 19.5385 8.68846 19.6155 8.82553 19.7525C8.96259 19.8895 9.0396 20.0754 9.0396 20.2692C9.0396 20.463 8.96259 20.6489 8.82553 20.786C8.68846 20.923 8.50256 21 8.30872 21Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1513 </svg> 1514 </button> 1515 </div> 1516 </div> 1517 </div> 1518 1519 <div class="swiper-slide"> 1520 <div class="cart-rec-card"> 1521 <div class="cart-rec-card__content"> 1522 <a href="/products/refill-of-4wd-wash-bundle" class="cart-rec-card__image-wrap"> 1523 1524 <img 1525 src="//saltycaptain.com.au/cdn/shop/files/4WD-_-RV-Wash-1L_bcb8343e-86b4-4a3f-b68e-cf4f0ef2fc8f.jpg?v=1721003843&width=120" 1526 alt="4WD & RV Wash Detergent" 1527 class="cart-rec-card__image" 1528 width="50" 1529 height="50" 1530 loading="lazy" 1531 > 1532 1533 </a> 1534 <a href="/products/refill-of-4wd-wash-bundle" class="cart-rec-card__title">4WD & RV Wash Detergent</a> 1535 </div> 1536 <div class="cart-rec-card__bottom">
1537 <span class="cart-rec-card__price"><span class=money>$26.36</span></span> 1538 <button 1539 type="button" 1540 class="cart-rec-card__atc" 1541 data-cart-rec-add 1542 data-variant-id="41792911605918" 1543 aria-label="Add 4WD & RV Wash Detergent to cart" 1544 > 1545 <svg width="22" height="22" viewBox="0 0 22 22" fill="none"> 1546 <path d="M6.11611 12.2308H18.0732C18.2445 12.2331 18.411 12.1739 18.5424 12.0639C18.6738 11.954 18.7615 11.8006 18.7894 11.6315L19.9881 5.78538C20.0073 5.68025 20.0032 5.57217 19.9762 5.46877C19.9491 5.36538 19.8997 5.26917 19.8314 5.18695C19.7631 5.10473 19.6776 5.03849 19.5809 4.99289C19.4842 4.9473 19.3787 4.92347 19.2718 4.92308H4.65436M6.11611 12.2308L4.65436 4.92308M6.11611 12.2308L6.73004 15.3C6.76374 15.4651 6.85344 15.6134 6.98396 15.7199C7.11448 15.8265 7.27781 15.8846 7.44629 15.8846H16.3483M4.65436 4.92308L4.04043 2.58462C4.00673 2.41955 3.91703 2.2712 3.78651 2.16467C3.65599 2.05814 3.49266 1.99997 3.32417 2H1M15.6174 21C15.4236 21 15.2377 20.923 15.1006 20.786C14.9636 20.6489 14.8866 20.463 14.8866 20.2692C14.8866 20.0754 14.9636 19.8895 15.1006 19.7525C15.2377 19.6155 15.4236 19.5385 15.6174 19.5385C15.8113 19.5385 15.9972 19.6155 16.1343 19.7525C16.2713 19.8895 16.3483 20.0754 16.3483 20.2692C16.3483 20.463 16.2713 20.6489 16.1343 20.786C15.9972 20.923 15.8113 21 15.6174 21ZM8.30872 21C8.11488 21 7.92898 20.923 7.79192 20.786C7.65485 20.6489 7.57785 20.463 7.57785 20.2692C7.57785 20.0754 7.65485 19.8895 7.79192 19.7525C7.92898 19.6155 8.11488 19.5385 8.30872 19.5385C8.50256 19.5385 8.68846 19.6155 8.82553 19.7525C8.96259 19.8895 9.0396 20.0754 9.0396 20.2692C9.0396 20.463 8.96259 20.6489 8.82553 20.786C8.68846 20.923 8.50256 21 8.30872 21Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1547 </svg> 1548 </button> 1549 </div> 1550 </div> 1551 </div> 1552 1553 <div class="swiper-slide"> 1554 <div class="cart-rec-card"> 1555 <div class="cart-rec-card__content"> 1556 <a href="/products/refill-of-car-wash-1l" class="cart-rec-card__image-wrap"> 1557 1558 <img 1559 src="//saltycaptain.com.au/cdn/shop/files/Car-Wash-1L_296903ef-9d58-4577-8c91-2d832a13b3f9.jpg?v=1721016800&width=120" 1560 alt="Car Wash Detergent" 1561 class="cart-rec-card__image" 1562 width="50" 1563 height="50" 1564 loading="lazy" 1565 > 1566 1567 </a> 1568 <a href="/products/refill-of-car-wash-1l" class="cart-rec-card__title">Car Wash Detergent</a> 1569 </div> 1570 <div class="cart-rec-card__bottom"> 1571 <span class="cart-rec-card__price"><span class=money>$26.36</span></span> 1572 <button 1573 type="button" 1574 class="cart-rec-card__atc" 1575 data-cart-rec-add 1576 data-variant-id="41792922222750" 1577 aria-label="Add Car Wash Detergent to cart" 1578 > 1579 <svg width="22" height="22" viewBox="0 0 22 22" fill="none"> 1580 <path d="M6.11611 12.2308H18.0732C18.2445 12.2331 18.411 12.1739 18.5424 12.0639C18.6738 11.954 18.7615 11.8006 18.7894 11.6315L19.9881 5.78538C20.0073 5.68025 20.0032 5.57217 19.9762 5.46877C19.9491 5.36538 19.8997 5.26917 19.8314 5.18695C19.7631 5.10473 19.6776 5.03849 19.5809 4.99289C19.4842 4.9473 19.3787 4.92347 19.2718 4.92308H4.65436M6.11611 12.2308L4.65436 4.92308M6.11611 12.2308L6.73004 15.3C6.76374 15.4651 6.85344 15.6134 6.98396 15.7199C7.11448 15.8265 7.27781 15.8846 7.44629 15.8846H16.3483M4.65436 4.92308L4.04043 2.58462C4.00673 2.41955 3.91703 2.2712 3.78651 2.16467C3.65599 2.05814 3.49266 1.99997 3.32417 2H1M15.6174 21C15.4236 21 15.2377 20.923 15.1006 20.786C14.9636 20.6489 14.8866 20.463 14.8866 20.2692C14.8866 20.0754 14.9636 19.8895 15.1006 19.7525C15.2377 19.6155 15.4236 19.5385 15.6174 19.5385C15.8113 19.5385 15.9972 19.6155 16.1343 19.7525C16.2713 19.8895 16.3483 20.0754 16.3483 20.2692C16.3483 20.463 16.2713 20.6489 16.1343 20.786C15.9972 20.923 15.8113 21 15.6174 21ZM8.30872 21C8.11488 21 7.92898 20.923 7.79192 20.786C7.65485 20.6489 7.57785 20.463 7.57785 20.2692C7.57785 20.0754 7.65485 19.8895 7.79192 19.7525C7.92898 19.6155 8.11488 19.5385 8.30872 19.5385C8.50256 19.5385 8.68846 19.6155 8.82553 19.7525C8.96259 19.8895 9.0396 20.0754 9.0396 20.2692C9.0396 20.463 8.96259 20.6489 8.82553 20.786C8.68846 20.923 8.50256 21 8.30872 21Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1581 </svg> 1582 </button> 1583 </div> 1584 </div> 1585 </div> 1586 1587 <div class="swiper-slide"> 1588 <div class="cart-rec-card"> 1589 <div class="cart-rec-card__content"> 1590 <a href="/products/wheel-wash" class="cart-rec-card__image-wrap"> 1591 1592 <img 1593 src="//saltycaptain.com.au/cdn/shop/files/Wheel-Wash-500ml_dbead488-ba06-4b22-8952-abedcd53513b.jpg?v=1748916960&width=120" 1594 alt="Automotive Wheel Wash" 1595 class="cart-rec-card__image" 1596 width="50" 1597 height="50" 1598 loading="lazy" 1599 > 1600 1601 </a> 1602 <a href="/products/wheel-wash" class="cart-rec-card__title">Automotive Wheel Wash</a> 1603 </div> 1604 <div class="cart-rec-card__bottom">
1605 <span class="cart-rec-card__price"><span class=money>$22.73</span></span> 1606 <button 1607 type="button" 1608 class="cart-rec-card__atc" 1609 data-cart-rec-add 1610 data-variant-id="54178885206380" 1611 aria-label="Add Automotive Wheel Wash to cart" 1612 > 1613 <svg width="22" height="22" viewBox="0 0 22 22" fill="none"> 1614 <path d="M6.11611 12.2308H18.0732C18.2445 12.2331 18.411 12.1739 18.5424 12.0639C18.6738 11.954 18.7615 11.8006 18.7894 11.6315L19.9881 5.78538C20.0073 5.68025 20.0032 5.57217 19.9762 5.46877C19.9491 5.36538 19.8997 5.26917 19.8314 5.18695C19.7631 5.10473 19.6776 5.03849 19.5809 4.99289C19.4842 4.9473 19.3787 4.92347 19.2718 4.92308H4.65436M6.11611 12.2308L4.65436 4.92308M6.11611 12.2308L6.73004 15.3C6.76374 15.4651 6.85344 15.6134 6.98396 15.7199C7.11448 15.8265 7.27781 15.8846 7.44629 15.8846H16.3483M4.65436 4.92308L4.04043 2.58462C4.00673 2.41955 3.91703 2.2712 3.78651 2.16467C3.65599 2.05814 3.49266 1.99997 3.32417 2H1M15.6174 21C15.4236 21 15.2377 20.923 15.1006 20.786C14.9636 20.6489 14.8866 20.463 14.8866 20.2692C14.8866 20.0754 14.9636 19.8895 15.1006 19.7525C15.2377 19.6155 15.4236 19.5385 15.6174 19.5385C15.8113 19.5385 15.9972 19.6155 16.1343 19.7525C16.2713 19.8895 16.3483 20.0754 16.3483 20.2692C16.3483 20.463 16.2713 20.6489 16.1343 20.786C15.9972 20.923 15.8113 21 15.6174 21ZM8.30872 21C8.11488 21 7.92898 20.923 7.79192 20.786C7.65485 20.6489 7.57785 20.463 7.57785 20.2692C7.57785 20.0754 7.65485 19.8895 7.79192 19.7525C7.92898 19.6155 8.11488 19.5385 8.30872 19.5385C8.50256 19.5385 8.68846 19.6155 8.82553 19.7525C8.96259 19.8895 9.0396 20.0754 9.0396 20.2692C9.0396 20.463 8.96259 20.6489 8.82553 20.786C8.68846 20.923 8.50256 21 8.30872 21Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1615 </svg> 1616 </button> 1617 </div> 1618 </div> 1619 </div> 1620 1621 <div class="swiper-slide"> 1622 <div class="cart-rec-card"> 1623 <div class="cart-rec-card__content"> 1624 <a href="/products/refill-of-engine-flush" class="cart-rec-card__image-wrap"> 1625 1626 <img 1627 src="//saltycaptain.com.au/cdn/shop/files/Engine-Flush-1L_94f17df9-768f-49c5-a43b-af008250759c.jpg?v=1721003772&width=120" 1628 alt="Outboard & PWC Engine Flush Detergent" 1629 class="cart-rec-card__image" 1630 width="50" 1631 height="50" 1632 loading="lazy" 1633 > 1634 1635 </a> 1636 <a href="/products/refill-of-engine-flush" class="cart-rec-card__title">Outboard & PWC Engine Flu...</a> 1637 </div> 1638 <div class="cart-rec-card__bottom"> 1639 <span class="cart-rec-card__price"><span class=money>$31.82</span></span> 1640 <button 1641 type="button" 1642 class="cart-rec-card__atc" 1643 data-cart-rec-add 1644 data-variant-id="40927992676510" 1645 aria-label="Add Outboard & PWC Engine Flush Detergent to cart" 1646 > 1647 <svg width="22" height="22" viewBox="0 0 22 22" fill="none"> 1648 <path d="M6.11611 12.2308H18.0732C18.2445 12.2331 18.411 12.1739 18.5424 12.0639C18.6738 11.954 18.7615 11.8006 18.7894 11.6315L19.9881 5.78538C20.0073 5.68025 20.0032 5.57217 19.9762 5.46877C19.9491 5.36538 19.8997 5.26917 19.8314 5.18695C19.7631 5.10473 19.6776 5.03849 19.5809 4.99289C19.4842 4.9473 19.3787 4.92347 19.2718 4.92308H4.65436M6.11611 12.2308L4.65436 4.92308M6.11611 12.2308L6.73004 15.3C6.76374 15.4651 6.85344 15.6134 6.98396 15.7199C7.11448 15.8265 7.27781 15.8846 7.44629 15.8846H16.3483M4.65436 4.92308L4.04043 2.58462C4.00673 2.41955 3.91703 2.2712 3.78651 2.16467C3.65599 2.05814 3.49266 1.99997 3.32417 2H1M15.6174 21C15.423
16486 21 15.2377 20.923 15.1006 20.786C14.9636 20.6489 14.8866 20.463 14.8866 20.2692C14.8866 20.0754 14.9636 19.8895 15.1006 19.7525C15.2377 19.6155 15.4236 19.5385 15.6174 19.5385C15.8113 19.5385 15.9972 19.6155 16.1343 19.7525C16.2713 19.8895 16.3483 20.0754 16.3483 20.2692C16.3483 20.463 16.2713 20.6489 16.1343 20.786C15.9972 20.923 15.8113 21 15.6174 21ZM8.30872 21C8.11488 21 7.92898 20.923 7.79192 20.786C7.65485 20.6489 7.57785 20.463 7.57785 20.2692C7.57785 20.0754 7.65485 19.8895 7.79192 19.7525C7.92898 19.6155 8.11488 19.5385 8.30872 19.5385C8.50256 19.5385 8.68846 19.6155 8.82553 19.7525C8.96259 19.8895 9.0396 20.0754 9.0396 20.2692C9.0396 20.463 8.96259 20.6489 8.82553 20.786C8.68846 20.923 8.50256 21 8.30872 21Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1649 </svg> 1650 </button> 1651 </div> 1652 </div> 1653 </div> 1654 1655 <div class="swiper-slide"> 1656 <div class="cart-rec-card"> 1657 <div class="cart-rec-card__content"> 1658 <a href="/products/interior-cleaner" class="cart-rec-card__image-wrap"> 1659 1660 <img 1661 src="//saltycaptain.com.au/cdn/shop/files/Interior-Cleaner-500ml_eac4e817-1a55-45cc-bd05-1cd5e748eca2.jpg?v=1721781508&width=120" 1662 alt="Interior Cleaner" 1663 class="cart-rec-card__image" 1664 width="50" 1665 height="50" 1666 loading="lazy" 1667 > 1668 1669 </a> 1670 <a href="/products/interior-cleaner" class="cart-rec-card__title">Interior Cleaner</a> 1671 </div> 1672 <div class="cart-rec-card__bottom"> 1673 <span class="cart-rec-card__price"><span class=money>$20.00</span></span> 1674 <button 1675 type="button" 1676 class="cart-rec-card__atc" 1677 data-cart-rec-add 1678 data-variant-id="54141220323692" 1679 aria-label="Add Interior Cleaner to cart" 1680 > 1681 <svg width="22" height="22" viewBox="0 0 22 22" fill="none"> 1682 <path d="M6.11611 12.2308H18.0732C18.2445 12.2331 18.411 12.1739 18.5424 12.0639C18.6738 11.954 18.7615 11.8006 18.7894 11.6315L19.9881 5.78538C20.0073 5.68025 20.0032 5.57217 19.9762 5.46877C19.9491 5.36538 19.8997 5.26917 19.8314 5.18695C19.7631 5.10473 19.6776 5.03849 19.5809 4.99289C19.4842 4.9473 19.3787 4.92347 19.2718 4.92308H4.65436M6.11611 12.2308L4.65436 4.92308M6.11611 12.2308L6.73004 15.3C6.76374 15.4651 6.85344 15.6134 6.98396 15.7199C7.11448 15.8265 7.27781 15.8846 7.44629 15.8846H16.3483M4.65436 4.92308L4.04043 2.58462C4.00673 2.41955 3.91703 2.2712 3.78651 2.16467C3.65599 2.05814 3.49266 1.99997 3.32417 2H1M15.6174 21C15.4236 21 15.2377 20.923 15.1006 20.786C14.9636 20.6489 14.8866 20.463 14.8866 20.2692C14.8866 20.0754 14.9636 19.8895 15.1006 19.7525C15.2377 19.6155 15.4236 19.5385 15.6174 19.5385C15.8113 19.5385 15.9972 19.6155 16.1343 19.7525C16.2713 19.8895 16.3483 20.0754 16.3483 20.2692C16.3483 20.463 16.2713 20.6489 16.1343 20.786C15.9972 20.923 15.8113 21 15.6174 21ZM8.30872 21C8.11488 21 7.92898 20.923 7.79192 20.786C7.65485 20.6489 7.57785 20.463 7.57785 20.2692C7.57785 20.0754 7.65485 19.8895 7.79192 19.7525C7.92898 19.6155 8.11488 19.5385 8.30872 19.5385C8.50256 19.5385 8.68846 19.6155 8.82553 19.7525C8.96259 19.8895 9.0396 20.0754 9.0396 20.2692C9.0396 20.463 8.96259 20.6489 8.82553 20.786C8.68846 20.923 8.50256 21 8.30872 21Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1683 </svg> 1684 </button> 1685 </div> 1686 </div> 1687 </div> 1688 1689 <div class="swiper-slide"> 1690 <div class="cart-rec-card"> 1691 <div class="cart-rec-card__content"> 1692 <a href="/products/glass-cleaner" class="cart-rec-card__image-wrap"> 1693 1694 <img 1695 src="//saltycaptain.com.au/cdn/shop/files/Glass-Cleaner-500ml_593cffaa-475d-4924-8922-694c2296995a.jpg?v=1721781474&width=120" 1696 alt="Glass Cleaner" 1697 class="cart-rec-card__image" 1698 width="50" 1699 height="50" 1700 loading="lazy" 1701 > 1702 1703 </a> 1704 <a href="/products/glass-cleaner" class="cart-rec-card__title">
1704Glass Cleaner</a> 1705 </div> 1706 <div class="cart-rec-card__bottom"> 1707 <span class="cart-rec-card__price"><span class=money>$13.64</span></span> 1708 <button 1709 type="button" 1710 class="cart-rec-card__atc" 1711 data-cart-rec-add 1712 data-variant-id="54141223174508" 1713 aria-label="Add Glass Cleaner to cart" 1714 > 1715 <svg width="22" height="22" viewBox="0 0 22 22" fill="none"> 1716 <path d="M6.11611 12.2308H18.0732C18.2445 12.2331 18.411 12.1739 18.5424 12.0639C18.6738 11.954 18.7615 11.8006 18.7894 11.6315L19.9881 5.78538C20.0073 5.68025 20.0032 5.57217 19.9762 5.46877C19.9491 5.36538 19.8997 5.26917 19.8314 5.18695C19.7631 5.10473 19.6776 5.03849 19.5809 4.99289C19.4842 4.9473 19.3787 4.92347 19.2718 4.92308H4.65436M6.11611 12.2308L4.65436 4.92308M6.11611 12.2308L6.73004 15.3C6.76374 15.4651 6.85344 15.6134 6.98396 15.7199C7.11448 15.8265 7.27781 15.8846 7.44629 15.8846H16.3483M4.65436 4.92308L4.04043 2.58462C4.00673 2.41955 3.91703 2.2712 3.78651 2.16467C3.65599 2.05814 3.49266 1.99997 3.32417 2H1M15.6174 21C15.4236 21 15.2377 20.923 15.1006 20.786C14.9636 20.6489 14.8866 20.463 14.8866 20.2692C14.8866 20.0754 14.9636 19.8895 15.1006 19.7525C15.2377 19.6155 15.4236 19.5385 15.6174 19.5385C15.8113 19.5385 15.9972 19.6155 16.1343 19.7525C16.2713 19.8895 16.3483 20.0754 16.3483 20.2692C16.3483 20.463 16.2713 20.6489 16.1343 20.786C15.9972 20.923 15.8113 21 15.6174 21ZM8.30872 21C8.11488 21 7.92898 20.923 7.79192 20.786C7.65485 20.6489 7.57785 20.463 7.57785 20.2692C7.57785 20.0754 7.65485 19.8895 7.79192 19.7525C7.92898 19.6155 8.11488 19.5385 8.30872 19.5385C8.50256 19.5385 8.68846 19.6155 8.82553 19.7525C8.96259 19.8895 9.0396 20.0754 9.0396 20.2692C9.0396 20.463 8.96259 20.6489 8.82553 20.786C8.68846 20.923 8.50256 21 8.30872 21Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1717 </svg> 1718 </button> 1719 </div> 1720 </div> 1721 </div> 1722 1723 <div class="swiper-slide"> 1724 <div class="cart-rec-card"> 1725 <div class="cart-rec-card__content"> 1726 <a href="/products/final-touch" class="cart-rec-card__image-wrap"> 1727 1728 <img 1729 src="//saltycaptain.com.au/cdn/shop/files/Final-Touch-500ml_d2e141f5-22ad-4c8c-bf26-42da4ad7c180.jpg?v=1730853750&width=120" 1730 alt="Final Touch | Ceramic Detailer" 1731 class="cart-rec-card__image" 1732 width="50" 1733 height="50" 1734 loading="lazy" 1735 > 1736 1737 </a> 1738 <a href="/products/final-touch" class="cart-rec-card__title">Final Touch | Ceramic Det...</a> 1739 </div> 1740 <div class="cart-rec-card__bottom"> 1741 <span class="cart-rec-card__price"><span class=money>$27.27</span></span> 1742 <button 1743 type="button" 1744 class="cart-rec-card__atc" 1745 data-cart-rec-add 1746 data-variant-id="54141225566572" 1747 aria-label="Add Final Touch | Ceramic Detailer to cart" 1748 > 1749 <svg width="22" height="22" viewBox="0 0 22 22" fill="none"> 1750 <path d="M6.11611 12.2308H18.0732C18.2445 12.2331 18.411 12.1739 18.5424 12.0639C18.6738 11.954 18.7615 11.8006 18.7894 11.6315L19.9881 5.78538C20.0073 5.68025 20.0032 5.57217 19.9762 5.46877C19.9491 5.36538 19.8997 5.26917 19.8314 5.18695C19.7631 5.10473 19.6776 5.03849 19.5809 4.99289C19.4842 4.9473 19.3787 4.92347 19.2718 4.92308H4.65436M6.11611 12.2308L4.65436 4.92308M6.11611 12.2308L6.73004 15.3C6.76374 15.4651 6.85344 15.6134 6.98396 15.7199C7.11448 15.8265 7.27781 15.8846 7.44629 15.8846H16.3483M4.65436 4.92308L4.04043 2.58462C4.00673 2.41955 3.91703 2.2712 3.78651 2.16467C3.65599 2.05814 3.49266 1.99997 3.32417 2H1M15.6174 21C15.423
17506 21 15.2377 20.923 15.1006 20.786C14.9636 20.6489 14.8866 20.463 14.8866 20.2692C14.8866 20.0754 14.9636 19.8895 15.1006 19.7525C15.2377 19.6155 15.4236 19.5385 15.6174 19.5385C15.8113 19.5385 15.9972 19.6155 16.1343 19.7525C16.2713 19.8895 16.3483 20.0754 16.3483 20.2692C16.3483 20.463 16.2713 20.6489 16.1343 20.786C15.9972 20.923 15.8113 21 15.6174 21ZM8.30872 21C8.11488 21 7.92898 20.923 7.79192 20.786C7.65485 20.6489 7.57785 20.463 7.57785 20.2692C7.57785 20.0754 7.65485 19.8895 7.79192 19.7525C7.92898 19.6155 8.11488 19.5385 8.30872 19.5385C8.50256 19.5385 8.68846 19.6155 8.82553 19.7525C8.96259 19.8895 9.0396 20.0754 9.0396 20.2692C9.0396 20.463 8.96259 20.6489 8.82553 20.786C8.68846 20.923 8.50256 21 8.30872 21Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1751 </svg> 1752 </button> 1753 </div> 1754 </div> 1755 </div> 1756 1757 <div class="swiper-slide"> 1758 <div class="cart-rec-card"> 1759 <div class="cart-rec-card__content"> 1760 <a href="/products/tyre-shine" class="cart-rec-card__image-wrap"> 1761 1762 <img 1763 src="//saltycaptain.com.au/cdn/shop/files/Tyre-Shine-500ml.jpg?v=1715814054&width=120" 1764 alt="Tyre Shine" 1765 class="cart-rec-card__image" 1766 width="50" 1767 height="50" 1768 loading="lazy" 1769 > 1770 1771 </a> 1772 <a href="/products/tyre-shine" class="cart-rec-card__title">Tyre Shine</a> 1773 </div> 1774 <div class="cart-rec-card__bottom"> 1775 <span class="cart-rec-card__price"><span class=money>$22.73</span></span> 1776 <button 1777 type="button" 1778 class="cart-rec-card__atc" 1779 data-cart-rec-add 1780 data-variant-id="54141217538412" 1781 aria-label="Add Tyre Shine to cart" 1782 > 1783 <svg width="22" height="22" viewBox="0 0 22 22" fill="none"> 1784 <path d="M6.11611 12.2308H18.0732C18.2445 12.2331 18.411 12.1739 18.5424 12.0639C18.6738 11.954 18.7615 11.8006 18.7894 11.6315L19.9881 5.78538C20.0073 5.68025 20.0032 5.57217 19.9762 5.46877C19.9491 5.36538 19.8997 5.26917 19.8314 5.18695C19.7631 5.10473 19.6776 5.03849 19.5809 4.99289C19.4842 4.9473 19.3787 4.92347 19.2718 4.92308H4.65436M6.11611 12.2308L4.65436 4.92308M6.11611 12.2308L6.73004 15.3C6.76374 15.4651 6.85344 15.6134 6.98396 15.7199C7.11448 15.8265 7.27781 15.8846 7.44629 15.8846H16.3483M4.65436 4.92308L4.04043 2.58462C4.00673 2.41955 3.91703 2.2712 3.78651 2.16467C3.65599 2.05814 3.49266 1.99997 3.32417 2H1M15.6174 21C15.4236 21 15.2377 20.923 15.1006 20.786C14.9636 20.6489 14.8866 20.463 14.8866 20.2692C14.8866 20.0754 14.9636 19.8895 15.1006 19.7525C15.2377 19.6155 15.4236 19.5385 15.6174 19.5385C15.8113 19.5385 15.9972 19.6155 16.1343 19.7525C16.2713 19.8895 16.3483 20.0754 16.3483 20.2692C16.3483 20.463 16.2713 20.6489 16.1343 20.786C15.9972 20.923 15.8113 21 15.6174 21ZM8.30872 21C8.11488 21 7.92898 20.923 7.79192 20.786C7.65485 20.6489 7.57785 20.463 7.57785 20.2692C7.57785 20.0754 7.65485 19.8895 7.79192 19.7525C7.92898 19.6155 8.11488 19.5385 8.30872 19.5385C8.50256 19.5385 8.68846 19.6155 8.82553 19.7525C8.96259 19.8895 9.0396 20.0754 9.0396 20.2692C9.0396 20.463 8.96259 20.6489 8.82553 20.786C8.68846 20.923 8.50256 21 8.30872 21Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1785 </svg> 1786 </button> 1787 </div> 1788 </div> 1789 </div> 1790 1791 </div> 1792 </div> 1793 </div> 1794 1795</div> 1796 1797 1798 </div> 1799 1800 1801 </aside> 1802</div> 1803 1804 1805</div> 1806 1807
1807<script> 1808 window.__glowRoutes = { 1809 cartUrl: "\/cart" 1810 }; 1811 window.Shopify = window.Shopify || {}; 1812 window.Shopify.currency = { active: "AUD" }; 1813 window.Shopify.locale = "en"; 1814 </script>
1814 1815 1816 1817
1817<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
1817 1818
1818<script src="//saltycaptain.com.au/cdn/shop/t/212/assets/cart.js?v=139707659002880097591790801601" defer></script>
1818 1819
1819<script src="//saltycaptain.com.au/cdn/shop/t/212/assets/header.js?v=162936248025271564991790803719" defer></script>
1819 1820
1820<script src="//saltycaptain.com.au/cdn/shop/t/212/assets/footer.js?v=155360951795416454921790801601" defer></script>
1820 1821
1821<script src="//saltycaptain.com.au/cdn/shop/t/212/assets/bottom-bar.js?v=124125469192109723531790801601" defer></script>
1821 1822
1822<script src="//saltycaptain.com.au/cdn/shop/t/212/assets/complete-kit.js?v=177672127645542437121790801601" defer></script>
1822 1823 1824
1824<script src="https://a.klaviyo.com/media/js/onsite/onsite.js"></script>
1824 1825
1825<script> 1826 var klaviyo = klaviyo || []; 1827 klaviyo.init({ 1828 account: "RKQEJZ", 1829 list: "S5gWfj", 1830 platform: "shopify", 1831 collection_urls: [".*"] 1832 }); 1833 klaviyo.enable("backinstock", { 1834 collection_urls: [".*"], 1835 trigger: { 1836 product_page_text: "Notify Me When Available", 1837 product_page_class: "product-page__add-to-cart product-page__add-to-cart--notify", 1838 product_page_text_align: "center", 1839 product_page_margin: "0px", 1840 replace_anchor: false 1841 }, 1842 modal: { 1843 headline: "{product_name}", 1844 body_content: "Register to receive a notification when this item comes back in stock.", 1845 email_field_label: "Email", 1846 button_label: "Notify me when available", 1847 subscription_success_label: "You're in! We'll let you know when it's back.", 1848 footer_content: "", 1849 additional_styles: "html,body{height:100%!important;min-height:100%!important;margin:0!important;padding:0!important}body.klaviyo-bis-close,body.fadein{display:flex!important;align-items:center!important;justify-content:center!important;min-height:100vh!important;box-sizing:border-box!important;padding:16px!important}#klaviyo-bis-modal{position:relative!important;top:auto!important;left:auto!important;right:auto!important;bottom:auto!important;transform:none!important;margin:0 auto!important;width:100%!important;max-width:420px!important;border-radius:16px!important;overflow:hidden!important;background:#fff!important;box-shadow:0 16px 40px rgba(21,20,23,.18)!important}#klaviyo-bis-modal #container{position:relative!important;box-sizing:border-box!important;margin-top:0!important;padding:30px 18px 18px!important;border-radius:16px!important;overflow:hidden!important;text-align:center!important;background:#fff!important}#klaviyo-bis-modal .modal-title,#klaviyo-bis-modal h3,#klaviyo-bis-modal p{text-align:center!important}#klaviyo-bis-modal .form-group,#klaviyo-bis-modal .col-sm-12,#klaviyo-bis-modal .control-group,#klaviyo-bis-modal .submit-container{float:none!important;width:100%!important;max-width:100%!important;margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important}#klaviyo-bis-modal #variants,#klaviyo-bis-modal select.form-control,#klaviyo-bis-modal .selectpicker{display:block!important;width:100%!important;height:48px!important;margin:0 0 12px!important;padding:10px 36px 10px 14px!important;box-sizing:border-box!important;border:1px solid rgba(21,20,23,.18)!important;border-radius:10px!important;background:#fff!important;font-size:15px!important;color:#222!important;text-align:center!important;text-align-last:center!important}#klaviyo-bis-modal #email,#klaviyo-bis-modal input[type=email],#klaviyo-bis-modal input.form-control{display:block!important;width:100%!important;height:48px!important;margin:0 0 12px!important;padding:10px 14px!important;box-sizing:border-box!important;border:1px solid rgba(21,20,23,.18)!important;border-radius:10px!important;font-size:15px!important;color:#222!important;text-align:center!important}#klaviyo-bis-modal #newsletter_subscription{margin:4px 0 14px!important}#klaviyo-bis-modal #newsletter_subscription p{display:flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;margin:0!important}#klaviyo-bis-modal #subscribe_for_newsletter{position:static!important;margin:0!important;flex-shrink:0!important;width:16px!important;height:16px!important}#klaviyo-bis-modal #newsletter_subscription label{margin:0!important;padding:0!important;line-height:1.3!important;font-weight:400!important}#klaviyo-bis-modal button.btn,#klaviyo-bis-modal button[type=submit]{float:none!important;display:block!important;width:100%!important;border:0!important;border-radius:22px!important;padding:12px 16px!important;font-size:15px!important;font-weight:600!important}#klaviyo-bis-modal .close{position:absolute!important;top:8px!important;right:12px!important;z-index:2!important;opacity:.55!important;font-size:28px!important;line-height:1!important;background:transparent!important;border:0!important}", 1850 drop_background_color: "#000", 1851 background_color: "#fff", 1852 text_color: "#222", 1853 button_text_color: "#fff", 1854 button_background_color: "#2CAFDB", 1855 close_button_color: "#ccc", 1856 error_background_color: "#fcd6d7", 1857 error_text_color: "#C72E2F", 1858 success_background_color: "#d3efcd", 1859 success_text_color: "#1B9500" 1860 } 1861 }); 1862 </script>
1862 1863 1864 <input type="hidden" id="klaviyo-bis-selected-variant" value=""> 1865 1866
1866<script> 1867 (function () { 1868 var accountId = "RKQEJZ"; 1869 var listId = "S5gWfj"; 1870 var overlay = null; 1871 1872 function isProductPage() { 1873 return /\/products\//.test(window.location.href); 1874 } 1875 1876 function closeModal() { 1877 if (!overlay) return; 1878 overlay.remove(); 1879 overlay = null; 1880 document.body.style.overflow = ""; 1881 } 1882 1883 function showError(form, message) { 1884 var el = form.querySelector("[data-bis-error]"); 1885 if (!el) return; 1886 el.textContent = message || "Something went wrong. Please try again."; 1887 el.hidden = false; 1888 } 1889 1890 function openModal(product, variantId) { 1891 closeModal(); 1892 var variants = product.variants || []; 1893 var unavailable = variants.filter(function (variant) { return !variant.available; }); 1894 var options = unavailable.length ? unavailable : variants; 1895 var selected = options.filter(function (variant) { 1896 return String(variant.id) === String(variantId); 1897 })[0] || options[0]; 1898 if (!selected) return; 1899 1900 overlay = document.createElement("div"); 1901 overlay.className = "sc-bis"; 1902 overlay.innerHTML = 1903 '<div class="sc-bis__backdrop" data-bis-close></div>' + 1904 '<div class="sc-bis__modal" role="dialog" aria-modal="true" aria-labelledby="sc-bis-title">' + 1905 '<button class="sc-bis__close" type="button" data-bis-close aria-label="Close">×</button>' + 1906 '<h3 class="sc-bis__title" id="sc-bis-title"></h3>' + 1907 '<p class="sc-bis__body">Register to receive a notification when this item comes back in stock.</p>' + 1908 '<form class="sc-bis__form" novalidate>' + 1909 '<select class="sc-bis__select" data-bis-variant></select>' + 1910 '<input class="sc-bis__email" type="email" name="email" autocomplete="email" placeholder="Email" required>' + 1911 '<label class="sc-bis__newsletter"><input type="checkbox" data-bis-newsletter checked> Add me to your email list.</label>' + 1912 '<button class="sc-bis__submit" type="submit">Notify me when available</button>' + 1913 '<p class="sc-bis__error" data-bis-error hidden></p>' + 1914 '<p class="sc-bis__success" data-bis-success hidden>
1914You\'re in! We\'ll let you know when it\'s back.</p>' + 1915 '</form>' + 1916 '</div>'; 1917 1918 var title = overlay.querySelector("#sc-bis-title"); 1919 var select = overlay.querySelector("[data-bis-variant]"); 1920 var form = overlay.querySelector("form"); 1921 title.textContent = product.title || ""; 1922 1923 options.forEach(function (variant) { 1924 var option = document.createElement("option"); 1925 option.value = String(variant.id); 1926 option.textContent = variant.title || variant.name || product.title; 1927 if (String(variant.id) === String(selected.id)) option.selected = true; 1928 select.appendChild(option); 1929 }); 1930 if (options.length < 2) select.hidden = true; 1931 1932 overlay.addEventListener("click", function (event) { 1933 if (event.target.closest("[data-bis-close]")) closeModal(); 1934 }); 1935 document.body.style.overflow = "hidden"; 1936 document.body.appendChild(overlay); 1937 overlay.querySelector(".sc-bis__email").focus(); 1938 1939 form.addEventListener("submit", function (event) { 1940 event.preventDefault(); 1941 var email = form.querySelector(".sc-bis__email").value.trim(); 1942 var variant = select.value; 1943 var submit = form.querySelector(".sc-bis__submit"); 1944 var success = form.querySelector("[data-bis-success]"); 1945 if (!/@/.test(email)) { 1946 showError(form, "Please enter a valid email."); 1947 return; 1948 } 1949 1950 submit.disabled = true; 1951 form.querySelector("[data-bis-error]").hidden = true; 1952 1953 fetch("https://a.klaviyo.com/client/back-in-stock-subscriptions/?company_id=" + accountId, { 1954 method: "POST", 1955 headers: { 1956 revision: "2024-02-15", 1957 "Content-Type": "application/json", 1958 "X-Klaviyo-Onsite": "1" 1959 }, 1960 body: JSON.stringify({ 1961 data: { 1962 type: "back-in-stock-subscription", 1963 attributes: { 1964 profile: { data: { type: "profile", attributes: { email: email } } }, 1965 channels: ["EMAIL"] 1966 }, 1967 relationships: { 1968 variant: { data: { type: "catalog-variant", id: "$shopify:::$default:::" + variant } } 1969 } 1970 } 1971 }) 1972 }).then(function (response) { 1973 if (!response.ok) throw new Error("bis"); 1974 var newsletter = form.querySelector("[data-bis-newsletter]"); 1975 if (newsletter && newsletter.checked && listId) { 1976 fetch("https://a.klaviyo.com/client/subscriptions/?company_id=" + accountId, { 1977 method: "POST", 1978 headers: { 1979 revision: "2024-02-15", 1980 "Content-Type": "application/json", 1981 "X-Klaviyo-Onsite": "1" 1982 }, 1983 body: JSON.stringify({ 1984 data: { 1985 type: "subscription", 1986 attributes: { 1987 profile: { 1988 data: { 1989 type: "profile", 1990 attributes: { email: email, properties: { $source: "Back in Stock" } } 1991 } 1992 } 1993 }, 1994 relationships: { list: { data: { type: "list", id: listId } } } 1995 } 1996 }) 1997 }).catch(function () {}); 1998 } 1999 submit.hidden = true; 2000 success.hidden = false; 2001 setTimeout(closeModal, 2500); 2002 }).catch(function () { 2003 submit.disabled = false; 2004 showError(form); 2005 }); 2006 }); 2007 } 2008 2009 document.addEventListener("keydown", function (event) { 2010 if (event.key === "Escape") closeModal(); 2011 }); 2012 2013 document.addEventListener("click", function (event) { 2014 var trigger = event.target.closest(".klaviyo-bis-trigger"); 2015 if (!trigger) return; 2016 2017 var variantInput = document.getElementById("klaviyo-bis-selected-variant"); 2018 var variantId = trigger.getAttribute("data-variant-id"); 2019 if (variantInput && variantId) variantInput.value = variantId; 2020 2021 if (isProductPage()) return; 2022 2023 event.preventDefault(); 2024 event.stopImmediatePropagation(); 2025 2026 var handle = trigger.getAttribute("data-klaviyo-handle") || trigger.getAttribute("data-product-handle"); 2027 if (!handle) return; 2028 2029 fetch("/products/" + encodeURIComponent(handle) + ".js") 2030 .then(function (response) { 2031 if (!response.ok) throw new Error("product"); 2032 return response.json(); 2033 }) 2034 .then(function (product) { 2035 openModal(product, variantId); 2036 }) 2037 .catch(function () {}); 2038 }, true); 2039 })(); 2040 </script>
2040 2041 2042 <style> 2043 .sc-bis { position: fixed; inset: 0; z-index: 999999; display: flex; align-items: center; justify-content: center; padding: 16px; } 2044 .sc-bis__backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.65); } 2045 .sc-bis__modal { position: relative; width: 100%; max-width: 420px; padding: 30px 18px 18px; border-radius: 16px; background: #fff; box-shadow: 0 16px 40px rgba(21,20,23,.18); text-align: center; } 2046 .sc-bis__close { position: absolute; top: 8px; right: 12px; border: 0; background: transparent; color: #ccc; font-size: 28px; line-height: 1; cursor: pointer; } 2047 .sc-bis__title { margin: 0 0 8px; font-size: 24px; line-height: 1.3; color: #222; } 2048 .sc-bis__body { margin: 0 0 16px; color: #222; } 2049 .sc-bis__select, 2050 .sc-bis__email { display: block; width: 100%; height: 48px; margin: 0 0 12px; padding: 10px 14px; box-sizing: border-box; border: 1px solid rgba(21,20,23,.18); border-radius: 10px; font-size: 15px; color: #222; text-align: center; } 2051 .sc-bis__newsletter { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 4px 0 14px; font-weight: 400; color: #222; } 2052 .sc-bis__submit { display: block; width: 100%; border: 0; border-radius: 22px; padding: 12px 16px; font-size: 15px; font-weight: 600; color: #fff; background: #2CAFDB; cursor: pointer; } 2053 .sc-bis__submit:disabled { opacity: .6; cursor: default; } 2054 .sc-bis__error { margin: 12px 0 0; padding: 6px 11px; border-radius: 2px; background: #fcd6d7; color: #C72E2F; } 2055 .sc-bis__success { margin: 12px 0 0; padding: 6px 11px; border-radius: 2px; background: #d3efcd; color: #1B9500; } 2056 </style> 2057 2058
2058<script> 2059 var _learnq = window._learnq || []; 2060 window.addEventListener("klaviyoForms", function(e) { 2061 if (e.detail.type == 'open' || e.detail.type == 'embedOpen') { 2062 _learnq.push(['track', 'Viewed Form - Tracked Profile', { 2063 'formId' : e.detail.formId 2064 }]); 2065 } 2066 if (e.detail.type == 'submit') { 2067 _learnq.push(['track', 'Submitted Form - Tracked Profile', { 2068 'formId' : e.detail.formId 2069 }]); 2070 } 2071 }); 2072 </script>
2072 2073 2074
2074<script> 2075 var _learnq = _learnq || []; 2076 var page = window.location.href; 2077 _learnq.push(['track', 'Viewed Page', 2078 {url: page} 2079 ]); 2080 </script>
2080 2081 2082
2082<script type="text/javascript"> 2083 var siteUrl = document.location.host; 2084 var referralUrl = document.referrer; 2085 var pageVisited = document.location.href; 2086 2087 var params = new URL(document.location).searchParams; 2088 var utm_source = params.get("utm_source"); 2089 var utm_medium = params.get("utm_medium"); 2090 var utm_campaign = params.get("utm_campaign"); 2091 2092 if(referralUrl === "") { 2093 if(utm_medium) { 2094 var referrer = utm_medium 2095 } else { 2096 var referrer = "Direct" 2097 } 2098 2099 } else { 2100 var referrer = referralUrl 2101 } 2102 2103 if (referralUrl.indexOf(siteUrl) === -1) { 2104 _learnq.push(["track", "Referral URL",{ 2105 "Referrer": referrer, 2106 "PageVisited": pageVisited, 2107 "UtmSource": utm_source, 2108 "UtmMedium": utm_medium, 2109 "UtmCampaign": utm_campaign 2110 }]); 2111 } 2112 </script>
2112 2113 <div id="shopify-block-AZFd6aGFnS21FS1hVa__13768625480086291342" class="shopify-block shopify-app-block">
2113<script> 2114 window['ShopifyForms'] = { 2115 ...window['ShopifyForms'], 2116 currentPageType: "search" 2117 }; 2118</script>
2118 2119 2120 2121</div>
2121<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
2121 2122</body> 2123</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.