1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17<!DOCTYPE html> 18<html lang="en"> 19<head> 20 21
21<script type="text/javascript" async src="https://na.shgcdn3.com/pixel-collector.js"></script>
21 22 23 <!-- OneTrust Cookies Consent Notice start for bushnellgolf.com -->
24<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" async type="text/javascript" charset="UTF-8" data-domain-script="6dc80972-8ca6-414a-a7c5-a260885539e8" ></script>
vendor: 2 bytes, line 24
24
25<script type="text/javascript"> 26function OptanonWrapper() { } 27</script>
27 28<!-- OneTrust Cookies Consent Notice end for bushnellgolf.com --> 29<meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> 30<meta name="viewport" content="width=device-width,initial-scale=1"> 31<meta name="view-transition" content="same-origin"> 32<meta name="theme-color" content=""> 33<meta property="og:site_name" content="Bushnell Golf"> 34<meta property="og:url" content="https://www.bushnellgolf.com/pages/contact"> 35<meta property="og:title" content="Contact Us | Bushnell Golf"> 36<meta property="og:type" content="website"> 37<meta property="og:description" content="Bushnell Golf customer service team is here to help Mon-Fri, 8:00am to 4:30pm CST. Click here to contact Bushnell Golf customer service."><meta property="og:image" content="https://www.bushnellgolf.com/cdn/shop/files/bushnell_logo.webp?v=1786469888&width=1200"> 38 <meta property="og:image:secure_url" content="https://www.bushnellgolf.com/cdn/shop/files/bushnell_logo.webp?v=1786469888&width=1200"><meta property="og:image:width" content="1200"> 39 <meta property="og:image:height" content="628"><meta name="twitter:card" content="summary_large_image"> 40<meta name="twitter:title" content="Contact Us | Bushnell Golf"> 41<meta name="twitter:description" content="Bushnell Golf customer service team is here to help Mon-Fri, 8:00am to 4:30pm CST. Click here to contact Bushnell Golf customer service."><meta name="twitter:image" content="https://www.bushnellgolf.com/cdn/shop/files/bushnell_logo.webp?v=1786469888&width=1200"><title> 42 Contact Us | Bushnell Golf�</title> 43<link rel="canonical" href="https://www.bushnellgolf.com/pages/contact"> 44<meta name="description" content="Bushnell Golf customer service team is here to help Mon-Fri, 8:00am to 4:30pm CST. Click here to contact Bushnell Golf customer service."> 45<meta name="google-site-verification" content="QB7OV1rk3Q8aMLza38ldv-0AnjJm4Ld5fvuDhJTsmyA" /> 46<meta name="google-site-verification" content="maaQ54rgAe6kxaZNZo1U2leDgbetgtxqL1NlLS6E5_o" /> 47<link rel="preconnect" href="https://cdn.cookielaw.org"> 48 <link rel="preconnect" href="https://cdn-4.convertexperiments.com"> 49 <link rel="preconnect" href="https://edge.cofra.me"> 50 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 51 <link rel="dns-prefetch" href="https://cdn.jsdelivr.net"> 52 <link rel="dns-prefetch" href="https://sdk.helloextend.com"> 53 <link rel="preconnect" href="https://api.helloextend.com" crossorigin>
53<script type="application/ld+json"> 54{ 55 "@context": "https://schema.org", 56 "@type": "Corporation", 57 "name": "Bushnell Golf", 58 "url": "https://www.bushnellgolf.com", 59 "description": "Bushnell Golf â The #1 Rangefinder in Golf. Laser rangefinders, GPS devices, and launch monitors.", 60 "brand": { "@type": "Brand", "name": "Bushnell Golf" }, 61 "sameAs": [ 62 "https://www.facebook.com/bushnellgolf", 63 "https://www.instagram.com/bushnellgolf", 64 "https://www.twitter.com/bushnellgolf", 65 "https://www.youtube.com/bushnellgolf" 66 ], 67 "contactPoint": { 68 "@type": "ContactPoint", 69 "contactType": "Customer Support", 70 "url": "https://www.bushnellgolf.com/pages/contact" 71 } 72} 73</script>
73 74
75<script type="application/ld+json"> 76{ 77 "@context": "https://schema.org", 78 "@type": "WebSite", 79 "name": "Bushnell Golf", 80 "url": "https://www.bushnellgolf.com", 81 "potentialAction": { 82 "@type": "SearchAction", 83 "target": { 84 "@type": "EntryPoint", 85 "urlTemplate": "https://www.bushnellgolf.com/search?q={search_term_string}" 86 }, 87 "query-input": "required name=search_term_string" 88 } 89} 90</script>
vendor: 2 bytes, line 90
90
91<script defer src="https://cdn-4.convertexperiments.com/v1/js/10034870-10034482.js?environment=production"></script>
91 92 93 94<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/venobox.min.css" media="print" onload="this.media='all'"> 95<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/venobox.min.css"></noscript> 96��
96<script src="/cdn/shopifycloud/consent-tracking-api/v0.1/consent-tracking-api.js" defer></script>
96 97
98<script type="text/javascript"> 99 100;(function() { 101 var ht=Object.defineProperty;var ut=(v,f,w)=>f in v?ht(v,f,{enumerable:!0,configurable:!0,writable:!0,value:w}):v[f]=w;var a=(v,f,w)=>ut(v,typeof f!="symbol"?f+"":f,w);(function(){"use strict";class v{constructor(t,e){a(this,"CACHE_KEY","_shg_audience_cache");a(this,"CACHE_EXPIRATION_DAYS",7);a(this,"DEVICE_MOBILE_BREAKPOINT",768);a(this,"cache",{timestamp:Date.now(),data:{}});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(s=>({type:s.audience_type,evaluation:this.evaluate(s)}));return{status:(e==="every"?i.every(s=>s.evaluation.status==="match"):i.some(s=>s.evaluation.status==="match"))?"eligible":"not_eligible",condition:e,expected:t.reduce((s,r)=>(s[r.audience_type]={condition:r.condition,value:r.value},s),{}),actual:i.reduce((s,r)=>(s[r.type]=r.evaluation.actual,s),{})}}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}}}locationMatches(t){if(!this.cache.data.location){const h=new XMLHttpRequest;h.open("GET",this.locationApiUrl,!1),h.send(null);const l=h.status===200?JSON.parse(h.responseText):null;l&&(this.cache.data.location={country:l==null?void 0:l.country,region:l==null?void 0:l.region,city:l==null?void 0:l.city,timestamp:Date.now()}
101,this.saveCache())}const e={condition:t.condition,value:t.value},i=this.cache.data.location;if(!e||!e.value||!e.value.type||!e.value.country_code||!i)return{status:"no_match",expected:e,actual:i?{value:i}:null};const{type:n,country_code:s,toponym_name:r,parent_name:o}=e.value;let d=!1;switch(n){case"country":d=i.country===s;break;case"region":d=i.region===r&&i.country===s;break;case"city":d=i.city===r&&i.region===o&&i.country===s;break;default:d=!1}return{status:(t.condition==="is_not"?!d:d)?"match":"no_match",expected:e,actual:{value:i}}}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.details)return{status:"no_match",expected:{condition:t.condition,value:t.value},actual:null,reason:"No visitor details available"};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 n=this.visitor.details.first_visit_timestamp,s=Date.now();if(i==="within"){const r=n+e>s;return{status:(t.condition==="is_not"?!r:r)?"match":"no_match",expected:{condition:t.condition,value:t.value},actual:{value:n}}}else{const r=n+e<s;return{status:(t.condition==="is_not"?!r:r)?"match":"no_match",expected:{condition:t.condition,value:t.value},actual:{value:n}}}}newVisitorMatches(t){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=localStorage.getItem(this.CACHE_KEY);if(t)try{const e=JSON.parse(t);e.timestamp<=Date.now()-this.CACHE_EXPIRATION_DAYS*24*60*60*1e3?(localStorage.removeItem(this.CACHE_KEY),this.cache.data={}):this.cache=e}catch{try{localStorage.removeItem(this.CACHE_KEY)}catch{}this.cache.data={}}}saveCache(){this.cache.timestamp=Date.now(),localStorage.setItem(this.CACHE_KEY,JSON.stringify(this.cache))}snakeCaseKeys(t){if(t==null||typeof t!="object")return t;const e={};for(const[i,n]of Object.entries(t)){const s=i.replace(/[A-Z]/g,r=>`_${r.toLowerCase()}`);e[s]=n}return e}}/*! js-cookie v3.0.8 | MIT */function f(c){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var i in e)i!=="__proto__"&&(c[i]=e[i])}return c}var w={read:function(c){return c[0]==='"'&&(c=c.slice(1,-1)),c.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(c){return encodeURIComponent(c).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}};function N(c,t){function e(n,s,r){if(!(typeof document>"u")){r=f({},t,r),typeof r.expires=="number"&&(r.expires=new Date(Date.now()+r.expires*864e5)),r.expires&&(r.expires=r.expires.toUTCString()),n=encodeURIComponent(n).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var o="";for(var d in r)r[d]&&(o+="; "+d,r[d]!==!0&&(o+="="+r[d].split(";")[0]));return document.cookie=n+"="+c.write(s,n)+o}}function i(n){if(!(typeof document>"u"||arguments.length&&!n)){for(var s=document.cookie?document.cookie.split("; "):[],r={},o=0;o<s.length;o++){var d=s[o].split("="),u=d.slice(1).join("=");try{var h=decodeURIComponent(d[0]);if(h in r||(r[h]=c.read(u,h)),n===h)break}catch{}}return n?r[n]:r}}return Object.create({set:e,get:i,remove:function(n,s){e(n,"",f({},s,{expires:-1}))},withAttributes:function(n){return N(this.converter,f({},this.attributes,n))},withConverter:function(n){return N(f({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(t)},converter:{value:Object.freeze(c)}})}var C=N(w,{path:"/"});const p=class p{constructor(t){a(this,"customerId");a(this,"isB2B");a(this,"details",null);a(this,"sessionId",null);a(this,"id",null);this.context=t,this.sessionId=t.sessionId,this.customerId=t.customerId,this.isB2B=t.isB2B,this.loadCachedDetails(),this.loadAndStoreVisitorId(),this.loadAndStoreSessionId()}get bin(){return this.sessionId?this.hashWithDjb2(this.sessionId)%p.DEFAULT_NUMBER_OF_BINS:0}
101get firstVisitTimestamp(){var t;return((t=this.details)==null?void 0:t.first_visit_timestamp)??Date.now()}get isFirstVisit(){return this.firstVisitTimestamp>=Date.now()-p.NEW_VISITOR_THRESHOLD_MINUTES*60*1e3}get isLoggedIn(){return!!this.customerId}loadCachedDetails(){var t;try{const e=localStorage.getItem(p.DETAILS_KEY);e?(this.details=JSON.parse(e),typeof((t=this.details)==null?void 0:t.first_visit_timestamp)!="number"&&(console.warn("Invalid visitor details found in storage, resetting."),this.details=null)):(this.details={first_visit_timestamp:Date.now()},localStorage.setItem(p.DETAILS_KEY,JSON.stringify(this.details)))}catch(e){console.error("Error loading visitor details from storage:",e),this.details=null}finally{!this.details&&typeof localStorage<"u"&&(this.details={first_visit_timestamp:Date.now()},localStorage.setItem(p.DETAILS_KEY,JSON.stringify(this.details)))}}loadAndStoreSessionId(){const t=this.sessionId||C.get(p.SESSION_ID_KEY)||null;t?this.sessionId=t:this.sessionId=crypto.randomUUID(),C.set(p.SESSION_ID_KEY,this.sessionId,{expires:1/48,path:"/"})}loadAndStoreVisitorId(){const t=C.get(p.VISITOR_ID_KEY)||null;t?this.id=t:(this.id=crypto.randomUUID(),C.set(p.VISITOR_ID_KEY,this.id,{expires:365,path:"/"}))}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)}};a(p,"DETAILS_KEY","_shg_ab_visitor_details"),a(p,"SESSION_ID_KEY","_shg_ab_session_id"),a(p,"VISITOR_ID_KEY","_shg_ab_visitor_id"),a(p,"DEFAULT_NUMBER_OF_BINS",1e4),a(p,"NEW_VISITOR_THRESHOLD_MINUTES",30);let x=p;const _=class _{constructor(t){a(this,"buyItNowHandlerAttached",!1);this.config=t}run(){typeof document<"u"&&document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{this.attachBuyItNowHandler()}):setTimeout(()=>{this.attachBuyItNowHandler()},100)}attachBuyItNowHandler(){var n;const t=(n=this.config)==null?void 0:n.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(s,r)=>{var h,l,V,O;const o=(r==null?void 0:r.formData)??new FormData(s);let d=(r==null?void 0:r.variantId)??this.extractVariantIdFromFormData(o);if(!d){console.debug("shogun: no product variant ID found for buy-it-now, interception skipped");return}const u=(r==null?void 0:r.quantity)??(parseInt(o.get("quantity")||"1",10)||1);if(console.debug("shogun: buy-it-now details:",{productVariantId:d,quantity:u,cartVariantId:t,storefrontAccessToken:(h=this.config)!=null&&h.storefrontAccessToken?"***":null,shopDomain:(l=this.config)==null?void 0:l.shopDomain}),(V=this.config)!=null&&V.storefrontAccessToken&&((O=this.config)!=null&&O.shopDomain)){console.debug("shogun: attempting cartCreate with merchandiseId:",`gid://shopify/ProductVariant/${d}`);const R=await this.createCartAndGetCheckoutUrl(d,u,t);if(R){console.debug("shogun: redirecting to cartCreate checkoutUrl (original cart preserved)"),window.location.href=R;return}}console.debug("shogun: falling back to cart add with cart variant"),await this.addToCartAndCheckout(d,u,t)};typeof document<"u"&&(()=>{document.addEventListener("click",s=>{const r=s.target;if(!r)return;const o=this.findPaymentElementFromClick(s,r);if(!o)return;const d=this.findFormForPaymentElement(o,r,s);if(!d)return;
101const u=this.getBuyItNowDetailsFromForm(d);u&&(s.preventDefault(),s.stopPropagation(),s.stopImmediatePropagation(),e(d,u))},{capture:!0})})()}async createCartAndGetCheckoutUrl(t,e,i){var d,u,h,l,V,O,R;if(!((d=this.config)!=null&&d.storefrontAccessToken)||!((u=this.config)!=null&&u.shopDomain))return null;const n=` 102 mutation cartCreate($input: CartInput!) { 103 cartCreate(input: $input) { 104 cart { 105 id 106 checkoutUrl 107 } 108 userErrors { 109 field 110 message 111 } 112 } 113 } 114 `,s=i?[{key:"shogun_variant_id",value:i}]:[];let r=[];i&&this.config.lineItemLevelVariant&&(r=[{key:"_shogun_variant_id",value:i}]);const o={input:{lines:[{merchandiseId:`gid://shopify/ProductVariant/${t}`,quantity:e,attributes:r}],attributes:s}};try{const F=JSON.stringify({query:n,variables:o}),W=`https://${this.config.shopDomain}/api/2025-10/graphql.json`;console.debug("shogun: cartCreate request URL:",W),console.debug("shogun: cartCreate request body:",F);const I=await(await fetch(W,{method:"POST",headers:{"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":this.config.storefrontAccessToken},body:F})).json();return console.debug("shogun: cartCreate full response:",JSON.stringify(I,null,2)),(V=(l=(h=I.data)==null?void 0:h.cartCreate)==null?void 0:l.cart)!=null&&V.checkoutUrl?(console.debug("shogun: cartCreate successful, checkoutUrl:",I.data.cartCreate.cart.checkoutUrl),I.data.cartCreate.cart.checkoutUrl):(console.error("shogun: cartCreate failed:",((R=(O=I.data)==null?void 0:O.cartCreate)==null?void 0:R.userErrors)||I.errors),null)}catch(F){return console.error("shogun: cartCreate error:",F),null}}async addToCartAndCheckout(t,e,i){var s;const n={items:[{id:t,quantity:e,properties:{}}]};i&&(n.attributes={shogun_variant_id:i},(s=this.config)!=null&&s.lineItemLevelVariant&&(n.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(n)});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(_.SHOPIFY_PAYMENT_BUTTON_SELECTOR);if(i)return i;const n=typeof t.composedPath=="function"?t.composedPath():[];for(const s of n)if(s instanceof HTMLElement&&s.matches(_.SHOPIFY_PAYMENT_BUTTON_SELECTOR))return s;return null}findFormForPaymentElement(t,e,i){const n=t.closest("form");if(n)return n;const s=e==null?void 0:e.closest("form");if(s)return s;const r=(e==null?void 0:e.closest("[form]"))||t.closest("[form]")||t.querySelector("[form]"),o=r==null?void 0:r.getAttribute("form");if(o){const l=document.getElementById(o);if(l instanceof HTMLFormElement)return l}const d=typeof(i==null?void 0:i.composedPath)=="function"?i.composedPath():[];for(const l of d)if(l instanceof HTMLFormElement)return l;const u=document.querySelectorAll("form");let h=null;for(const l of u)if(l.querySelector(_.SHOPIFY_PAYMENT_BUTTON_SELECTOR)){if(h)return console.debug("shogun: multiple payment-button forms found; skipping ambiguous buy-it-now form mapping"),null;h=l}return h}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}
114getBuyItNowDetailsFromForm(t){const e=new FormData(t),i=this.extractVariantIdFromFormData(e);if(!i)return null;const n=parseInt(e.get("quantity")||"1",10)||1;return{formData:e,variantId:i,quantity:n}}};a(_,"SHOPIFY_PAYMENT_BUTTON_SELECTOR",'shopify-buy-it-now-button, shopify-accelerated-checkout, [data-shopify="payment-button"], .shopify-payment-button');let k=_;class b{constructor(t,e,i){a(this,"id");a(this,"name");a(this,"type");a(this,"scope");a(this,"config");a(this,"variants");a(this,"assignedVariantId");a(this,"state");a(this,"eligibility");a(this,"context");a(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.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,n])=>n.status==="eligible").map(([i,n])=>i);return this.variantsByPosition().find(i=>t.includes(i.id)&&!i.config.original)||null}get inReview(){return this.type==="review"}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(),n=[t,e].every(r=>r.status==="eligible"||r.status==="match")&&(Object.keys(i).length===0||Object.values(i).some(r=>r.status==="eligible")),s=[t,e,...Object.values(i)].some(r=>r.status==="error");this.eligibility={status:n?"eligible":s?"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,n=e.position||0;return i-n})}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 z extends b{constructor(e,i,n){super(e,i,n);a(this,"buyItNowFinalizer",null);this.buyItNowFinalizer=new k({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}}
114dispatch(){this.dispatchCartAssignment(new URL(window.location.href))}dispatchCartAssignment(e){var s;const i=this.assignedVariant;if(!i){console.error(`shogun: Cannot dispatch ${this.scope} optimization because assigned variant is not set`,this.assignedVariant);return}const n=new XMLHttpRequest;if(n.open("POST","/cart/update.js",!1),n.setRequestHeader("Content-Type","application/json"),n.send(JSON.stringify({attributes:{shogun_variant_id:i==null?void 0:i.id}})),n.status===200){const r=(s=i==null?void 0:i.config)==null?void 0:s.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 console.error(`shogun: failed to update cart for ${this.scope} optimization dispatch`,{status:n.status,response:n.responseText})}finalize(){var e;(this.isEligible||this.inReview)&&((e=this.buyItNowFinalizer)==null||e.run())}}class G extends z{}class X extends b{get currentVariant(){return this.variantForCurrentTemplate()}evaluateScopeEligibility(){const{page_type:t,page_id:e}=this.config,i=!t||t===this.context.page.pageType,n=!e||e===this.context.page.pageId,s=new URLSearchParams(window.location.search).get("view");return s&&!this.variants.some(r=>this.extractViewParamFromFullTemplateKey(r.config.full_template_key)===s)?{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()&&i&&n?"match":"no_match",expected:{page_type:t,page_id:e},actual:{page_type:this.context.page.pageType,page_id:this.context.page.pageId}}}dispatch(){var i,n,s;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: ${(n=this.assignedVariant)==null?void 0:n.config.full_template_key}, variant: ${(s=this.assignedVariant)==null?void 0:s.id}`);t.searchParams.set("view",e),console.debug("shogun: Dispatching page optimization by redirecting to ",t.toString()),this.redirect(t)}}class J extends z{}class Z extends z{}const L="_shogun_variant_id",E=`properties[${L}]`,Q=/\/cart\/add(\.js)?$/;class tt{constructor(t){a(this,"addToCartHandlerAttached",!1);a(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=E,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(n,s){try{const r=((s==null?void 0:s.method)??(n instanceof Request?n.method:"GET")).toUpperCase(),o=n instanceof Request?n.url:String(n);if(r==="POST"&&i.isCartAddUrl(o)&&(s==null?void 0:s.body)!=null){const d=i.withShogunVariantProperty(s.body,t);if(d!==null)return e.call(this,n,{...s,body:d})}}catch(r){console.debug("shogun: failed to inject cart variant into fetch cart add request:",r)}return e.call(this,n,s)}}interceptXhrCartAdd(t){if(typeof XMLHttpRequest>"u")return;const e=XMLHttpRequest.prototype.open,i=XMLHttpRequest.prototype.send,n=this;XMLHttpRequest.prototype.open=function(s,r,o=!0,d,u){return this.__shogunIsCartAdd=(s==null?void 0:s.toUpperCase())==="POST"&&n.isCartAddUrl(String(r)),e.call(this,s,r,o,d,u)},XMLHttpRequest.prototype.send=function(s){if(this.__shogunIsCartAdd&&s!=null&&!(s instanceof Document))try{const r=n.withShogunVariantProperty(s,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,s)}}isCartAddUrl(t){try{const e=new URL(t,window.location.origin);return e.origin===window.location.origin&&Q.test(e.pathname)}catch{return!1}}withShogunVariantProperty(t,e){return t instanceof FormData||t instanceof URLSearchParams?(t.has(E)||t.append(E,e),t):typeof t=="string"?this.withShogunVariantPropertyInString(t,e):null}withShogunVariantPropertyInString(t,e){try{const n=JSON.parse(t);return n&&typeof n=="object"&&!Array.isArray(n)?JSON.stringify(this.withShogunVariantPropertyInPayload(n,e)):null}catch{}if(!t.includes("="))return null;const i=new URLSearchParams(t);return i.has(E)||i.append(E,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[L]!=null?i:{...i,[L]:e}}}const S=class S{constructor(){a(this,"observer",null)}removePreviewBar(t){t instanceof Element&&t.matches(S.PREVIEW_BAR_IFRAME_SELECTOR)&&(console.debug(`shogun: Removing preview bar iframe with id: ${t.id}`),t.remove(),this.stop()),t.querySelectorAll(S.PREVIEW_BAR_IFRAME_SELECTOR).forEac
114h(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 n of i.addedNodes)n instanceof Element&&this.removePreviewBar(n)}),this.observer.observe(t,{childList:!0,subtree:!0}),this.removePreviewBar(document))}stop(){var t;(t=this.observer)==null||t.disconnect(),this.observer=null}};a(S,"PREVIEW_BAR_IFRAME_SELECTOR","#preview-bar-iframe, #PBarNextFrameWrapper");let D=S;class et extends z{constructor(e,i,n){super(e,i,n);a(this,"addToCartFinalizer",null);a(this,"themePreviewFinalizer",null);this.buyItNowFinalizer=new k({currentCartVariantId:this.context.page.currentCartVariantId,shopDomain:this.context.shop.shopDomain,storefrontAccessToken:this.context.shop.storefrontAccessToken,lineItemLevelVariant:!0}),this.addToCartFinalizer=new tt({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 n;const e=new URL(window.location.href),i=(n=this.assignedVariant)==null?void 0:n.config.theme_id;i&&i!==this.context.page.themeId&&e.searchParams.set("preview_theme_id",i),this.dispatchCartAssignment(e)}finalize(){var e,i,n,s;(this.isEligible||this.inReview)&&((e=this.addToCartFinalizer)==null||e.run(),(i=this.buyItNowFinalizer)==null||i.run()),this.isOnAssignedVariant&&((n=this.assignedVariant)!=null&&n.config.theme_id)&&(this.themePreviewFinalizer||(this.themePreviewFinalizer=new D),(s=this.themePreviewFinalizer)==null||s.run())}}class it extends b{get currentVariant(){return this.variantForCurrentTemplate()}evaluateScopeEligibility(){const t=this.pagePartialTemplateKey();return{status:this.matchesCurrentTemplate()?"match":"no_match",expected:t,actual:t}}dispatch(){var i,n,s;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: ${(n=this.assignedVariant)==null?void 0:n.config.full_template_key}, variant: ${(s=this.assignedVariant)==null?void 0:s.id}`);t.searchParams.set("view",e),console.debug("shogun: Dispatching template optimization by redirecting to ",t.toString()),this.redirect(t)}}class Y extends b{constructor(e,i,n){super(e,i,n);a(this,"themePreviewFinalizer",null);this.themePreviewFinalizer=new D}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"}}
114get needsDispatch(){return this.isEligible&&!this.isOnAssignedVariant&&this.isFirstView}async dispatch(){var i,n,s;const e=new URL(window.location.href);if((i=this.assignedVariant)!=null&&i.config.theme_id)e.searchParams.set("preview_theme_id",this.assignedVariant.config.theme_id),console.debug("shogun: Dispatching theme optimization by redirecting to ",e.toString()),this.redirect(e);else throw new Error(`Assigned variant does not have a valid theme_id for dispatching theme: ${(n=this.assignedVariant)==null?void 0:n.config.theme_id}, variant: ${(s=this.assignedVariant)==null?void 0:s.id}`)}finalize(){var e;this.isOnAssignedVariant&&((e=this.themePreviewFinalizer)==null||e.run())}}a(Y,"PREVIEW_BAR_IFRAME_IDS",["preview-bar-iframe","PBarNextFrameWrapper"]);class st extends b{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 n=this.getCurrentPathWithoutLanguagePrefix(),s=decodeURIComponent(n);return{status:decodeURIComponent(e)===s?"match":"no_match",expected:e,actual:s}}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)}dispatch(){var e,i,n,s,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: ${(n=this.assignedVariant)==null?void 0:n.id}`);t.pathname=this.context.page.languageRootUrl!=="/"?this.context.page.languageRootUrl+((s=this.assignedVariant)==null?void 0:s.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 j(c,t,e){switch(c.scope){case"page":return new X(c,t,e);case"template":return new it(c,t,e);case"theme":return new Y(c,t,e);case"url_redirect":return new st(c,t,e);case"price":return new J(c,t,e);case"product_details":return new Z(c,t,e);case"checkout":return new G(c,t,e);case"shipping":return new et(c,t,e);default:throw new Error(`Unsupported optimization scope: ${c.scope}`)}}class U{constructor(t){a(this,"visitorBin");this.visitorBin=t}getRandomVariantForVisitorBin(t){let e=null,i=0;for(const n of t)if(i+=x.DEFAULT_NUMBER_OF_BINS*this.trafficForVariant(n)/100,this.visitorBin<i){e=n;break}return e||null}trafficForVariant(t){return t.config.percentage||0}}const P=class P extends U{assign(t){var n,s;if(t.length===0)return null;const e=this.sortOptimizationsByPriority(t),i=e.find(r=>r.firstNonDefaultEligibleVariant!==null);return i?(i.assignedVariantId=(n=i.firstNonDefaultEligibleVariant)==null?void 0:n.id,i):(e[0].assignedVariantId=(s=e[0].originalVariant)==null?void 0:s.id,e[0])}sortOptimizationsByPriority(t){return t.sort((e,i)=>{const n=this.scopePriority(e.scope),s=this.scopePriority(i.scope);return n-s})}scopePriority(t){return P.SCOPE_PRIORITIES[t||"page"]??P.SCOPE_PRIORITIES.page}};a(P,"SCOPE_PRIORITIES",{theme:1,template:2,page:3,url_redirect:4,price:5,product_details:6,checkout:7,shipping:8});let M=P;class q extends U{assign(t){const e=t.filter(s=>s.isEligible);if(e.length===0)return null;const i=e[Math.floor(Math.random()*e.length)],n=this.getRandomVariantForVisitorBin(i.variants);return n?(i.assignedVariantId=n.id,i):null}}class nt extends U{assign(t){const e=t.flatMap(s=>s.variants),i=this.getRandomVariantForVisitorBin(e),n=t.find(s=>
114s.variants.some(r=>r.id===(i==null?void 0:i.id)))||null;return n&&i?(n.assignedVariantId=i.id,n):null}trafficForVariant(t){return t.traffic_percentage||0}}const y=class y{save(){if(!(typeof document>"u"||typeof sessionStorage>"u"))try{sessionStorage.setItem(y.STORAGE_KEY,document.referrer)}catch(t){console.debug("shogun: failed to persist retained referrer to sessionStorage"),console.error(t)}}restore(){if(typeof sessionStorage>"u")return typeof document<"u"&&document.referrer||null;const t=sessionStorage.getItem(y.STORAGE_KEY);return t===null?typeof document<"u"&&document.referrer||null:(this.overrideDocumentReferrer(t),t||null)}clear(){typeof sessionStorage>"u"||sessionStorage.removeItem(y.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)}}}};a(y,"STORAGE_KEY","_shg_referrer");let $=y;const g=class g{constructor(t,e){a(this,"previewLinkHandlerAttached",!1);a(this,"_optimizationInReview");a(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?j({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(g.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(g.REVIEW_OPTIMIZATION_VARIANT_ID_PARAM),i=window.sessionStorage.getItem(g.PREVIEW_VARIANT_ID_STORAGE_KEY);return e&&e!==i?(console.debug(`shogun: theme review in progress, setting variant: ${e}`),window.sessionStorage.setItem(g.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(g.REVIEW_OPTIMIZATION_SCOPE_PARAM),i=window.sessionStorage.getItem(g.PREVIEW_OPTIMIZATION_SCOPE_STORAGE_KEY);return e&&e!==i?(console.debug(`shogun: theme review in progress, setting scope: ${e}`),window.sessionStorage.setItem(g.PREVIEW_OPTIMIZATION_SCOPE_STORAGE_KEY,e),e):i?(console.debug(`shogun: theme review in progress, using scope: ${i}`),i):g.DEFAULT_REVIEW_SCOPE}attachPreviewLinkClickHandler(){this.previewLinkHandlerAttached||(this.previewLinkHandlerAttached=!0,document.addEventListener("click",t=>{var s,r;const e=(r=(s=t.target).closest)==null?void 0:r.call(s,'a[id^="shg-preview-btn-"]'),i=e==null?void 0:e.dataset.variantId;if(!i)return;t.preventDefault();const n=new URLSearchParams(window.location.search);n.set(g.REVIEW_OPTIMIZATION_VARIANT_ID_PARAM,i),window.location.href=`${window.location.pathname}?${n.toString()}`}))}};a(g,"PANEL_TEMPLATE_ID","shogun-price-test-preview"),a(g,"PREVIEW_VARIANT_ID_STORAGE_KEY","_shg_preview_variant_id"),a(g,"PREVIEW_OPTIMIZATION_SCOPE_STORAGE_KEY","_shg_preview_optimization_scope"),a(g,"REVIEW_OPTIMIZATION_VARIANT_ID_PARAM","shgpvid"),a(g,"REVIEW_OPTIMIZATION_SCOPE_PARAM","shgsc"),a(g,"DEFAULT_REVIEW_SCOPE","product_details");let B=g;var rt=" daum[ /]| deusu/|(?:^|[^g])news(?!sapphire)|(?<! (?:channel/|google/))google(?!(app|/google| pixel))|(?<! cu)bots?(?:\\b|_)|(?<!(?:lib))http|(?<!cam)scan|24x7|@[a-z][\\w-]+\\.|\\(\\)|\\.com\\b|\\b\\w+\\.ai|\\bcursor/|\\bmanus-user/|\\bort/|\\bperl\\b|\\bplaywright\\b|\\bsecurityheaders\\b|\\bselenium\\b|\\btime/|\\||^[\\w \\.\\-\\(?:\\):%]+(?:/v?\\d+(?:\\.\\d+)?(?:\\.\\d{1,10})*?)?(?:,|$)|^[\\w\\-]+/[\\w]+$|^[^ ]{50,}$|^\\d+\\b|^\\W|^\\w*search\\b|^\\w+/[\\w\\(\\)]*$|^\\w+/\\d\\.\\d\\s\\([\\w@]+\\)$|^active|^ad muncher|^amaya|^apache/|^avsdevicesdk/|^azure|^biglotron|^bot|^bw/|^clamav[ /]|^claude-code/|^client/|^cobweb/|^custom|^ddg[_-]android|^discourse|^dispatch/\\d|^downcast/|^duckduckgo|^email|^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|^python|^rank|^read|^reed|^rest|^rss|^snapchat|^space bison|^svn|^swcd |^taringa|^thumbor/|^track|^w3c|^webbandit/|^webcopier|^wget|^whatsapp|^wordpress|^xenu link sleuth|^yahoo|^yandex|^zdm/\\d|^zoom marketplace/|advisor|agent\\b|analyzer|archive|ask jeeves/teoma|audit|bit\\.ly/|bluecoat drtr|browsex|burpcollaborator|capture|catch|check\\b|checker|chrome-lighthouse|chromeframe|classifier|cloudflare|convertify|crawl|cypress/|dareboost|datanyze|dejaclick|detect|dmbrowser|download|exaleadcloudview|feed|fetcher|firephp|functionize|grab|headless|httrack|hubspot marketing grader|ibisbrowser|infrawatch|insight|inspect|iplabel|java(?!;)|library|linkcheck|mail\\.ru/|manager|measure|monitor\\b|neustar wpm|node\\b|nutch|offbyone|onetrust|optimize|pageburst|pagespeed|parser|phantomjs|pingdom|powermarks|preview|proxy|ptst[ /]\\d|retriever|rexx;|rigor|rss\\b|scrape|server|sogou|sparkler/|speedcurve|spider|splash|statuscake|supercleaner|synapse|synthetic|tools|torrent|transcoder|url|validator|virtuoso|wappalyzer|webglance|webkit2png|whatcms/|xtate/",at=/bot|crawl|http|lighthouse|scan|search|spider/i,A;function ot(){if(A instanceof RegExp)return A;try{A=new RegExp(rt,"i")}catch{A=at}return A}var ct=c=>typeof c=="string"&&c!=="";function dt(c){return ct(c)&&ot().test(c)}const m=class m{constructor(t){this.publishedOptimizationIds=t}get(t){const e=this.getState()[t];return!e||typeof e=="string"?void 0:{...e,state:e.state??"started"}}update(t){var n,s,r,o;
114if(t.type!=="ab_test"||t.inReview)return;console.debug(`shogun: Caching assignment for optimization: '${t.name}' (${t.id}) to variant: '${(n=t.assignedVariant)==null?void 0:n.name}' (${(s=t.assignedVariant)==null?void 0:s.id})'`);const e=this.getState(),i=t.state??"assigned";window.localStorage.setItem(m.STORAGE_KEY,JSON.stringify({...e,[t.id]:{variantId:t.assignedVariantId,themeId:(o=(r=t.assignedVariant)==null?void 0:r.config)==null?void 0:o.theme_id,state:i}}))}clearExpired(){if(!this.hasExpiredEntries())return!1;console.debug("shogun: clearing expired optimization state, redirecting to default theme");const t=new URL(window.location.href);return t.searchParams.set(m.PREVIEW_THEME_PARAM,""),window.localStorage.removeItem(m.STORAGE_KEY),window.location.replace(t.toString()),!0}hasExpiredEntries(){const t=Object.entries(this.getState()).filter(([e,i])=>typeof i=="string"?!0:!!i.themeId).map(([e])=>e);return t.length>0&&t.some(e=>!this.publishedOptimizationIds.includes(e))}getState(){try{const t=JSON.parse(window.localStorage.getItem(m.STORAGE_KEY)||"{}");return!t||typeof t!="object"||Array.isArray(t)?{}:t}catch{return{}}}};a(m,"STORAGE_KEY","_shg_ab_optimizations_cache"),a(m,"PREVIEW_THEME_PARAM","preview_theme_id");let H=m;class lt{constructor(t){a(this,"pixelTrackingStarted",!1);a(this,"assignedOptimization",null);a(this,"pageViewId",crypto.randomUUID());this.context=t}get storewideCollectionAllowed(){return this.assignedOptimization||this.context.publishedOptimizations.some(t=>t.type==="ab_test")?!0:!!this.context.shop.storewideEventCollection}async track(t,e,i){var s,r;if(e!=null&&e.inReview)return;console.debug(`shogun: tracking event '${t}' for optimization '${(e==null?void 0:e.name)||"none"}' (${(e==null?void 0:e.id)||"none"}) ${i!=null&&i.reason?`with reason '${i.reason}'`:""}`),this.assignedOptimization=e??this.assignedOptimization,(t=="started"||t=="viewed"||t=="skipped")&&this.startPixelTracking();const n=(s=window.Shopify)==null?void 0:s.customerPrivacy;try{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:(r=e==null?void 0:e.assignedVariant)==null?void 0:r.id,details:{optimization_ids:this.context.publishedOptimizations.map(o=>o.id),distribution_method:this.context.assignmentStrategy,context:this.context.page,optimizations:this.context.publishedOptimizations.map(o=>({id:o.id,assigned_variant_id:o.assignedVariantId,first_assignment:o.isFirstAssignment,eligibility:o.eligibility})),consented:(n==null?void 0:n.analyticsProcessingAllowed())??!1,consent_api:n?"available":"unavailable",...i}}),keepalive:!0})}catch(o){console.error("shogun: failed to send tracking event",o)}}async startPixelTracking(){var i,n,s,r,o;
114if(console.debug("shogun: attempting to start pixel tracking for optimizations"),this.pixelTrackingStarted)return;if(!this.storewideCollectionAllowed){console.debug("shogun: no optimization assigned and store-wide event collection is disabled, skipping pixel tracking");return}const t=await this.getCustomerPrivacy(),e=await this.getAnalytics();if(t.analyticsProcessingAllowed()||(console.debug("shogun: Visitor has not consented to tracking, unable to start pixel tracking for optimizations, waiting for consent..."),await this.waitForConsent(t),this.track("consented")),!(e!=null&&e.publish)){console.debug("shogun: Shopify analytics object is not available, unable to start pixel tracking for optimizations");return}this.pixelTrackingStarted=!0,console.debug("shogun: Visitor has consented to tracking, starting pixel tracking for optimizations"),e.publish("shogun:load",{app_type:((i=this.assignedOptimization)==null?void 0:i.type)=="personalization"?"personalization":"ab_testing",page_type:this.context.page.pageType,page_id:this.context.page.pageId,optimization_id:((n=this.assignedOptimization)==null?void 0:n.id)??null,variant_id:((r=(s=this.assignedOptimization)==null?void 0:s.assignedVariant)==null?void 0:r.id)??null,on_assigned_variant:((o=this.assignedOptimization)==null?void 0:o.isOnAssignedVariant)??!1,session_id:this.context.visitor.sessionId,visitor_id:this.context.visitor.id,pageview_id:this.pageViewId,original_referrer:this.context.originalReferrer})}async getShopify(){return this.until(()=>window.Shopify,"Timed out waiting for Shopify API")}
114async 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")}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"))}loadConsentTrackingApi(){return new Promise((t,e)=>{const i=window.Shopify;if(!(i!=null&&i.loadFeatures)){e(new Error("Shopify.loadFeatures is not available"));return}i.loadFeatures([{name:"consent-tracking-api",version:"0.1"}],n=>{n&&n.length>0?e(n[0]):t()})})}waitForConsent(t){return t.analyticsProcessingAllowed()?Promise.resolve():new Promise((e,i)=>{let n=!1;const s=()=>{document.removeEventListener("visitorConsentCollected",r)},r=()=>{n=t.analyticsProcessingAllowed()};document.addEventListener("visitorConsentCollected",r),this.until(()=>n?!0:void 0,"Timed out waiting for user consent").then(()=>{s(),e()}).catch(o=>{s(),i(o)})})}until(t,e,{intervalMs:i=250,timeoutMs:n=15e3}={}){return new Promise((s,r)=>{const o=t();if(o){s(o);return}const d=Date.now(),u=window.setInterval(()=>{const h=t();if(h){window.clearInterval(u),s(h);return}Date.now()-d>n&&(window.clearInterval(u),r(new Error(e)))},i)})}}const T=class T{constructor(t){a(this,"visitor");a(this,"audienceEvaluator");a(this,"retainedReferrer");a(this,"originalReferrer");a(this,"optimizationReview");a(this,"optimizationCache");a(this,"tracker");a(this,"_publishedOptimizations");a(this,"_assignedOptimization");this.context=t,this.retainedReferrer=new $,this.originalReferrer=this.retainedReferrer.restore(),this.visitor=new x(t.session),this.optimizationCache=new H(t.publishedOptimizations.map(e=>e.id)),this.audienceEvaluator=new v(this.visitor,t.shop.geoLocationApi),this.optimizationReview=new B(t,this.audienceEvaluator)}get publishedOptimizations(){return this._publishedOptimizations||(this._publishedOptimizations=this.context.publishedOptimizations.map(t=>{var s,r;const e=this.optimizationCache.get(t.id),i=(e==null?void 0:e.variantId)||t.assignedVariantId,n=(e==null?void 0:e.state)||t.state;if(i){const o=((r=(s=t.variants)==null?void 0:s.find(d=>d.id===i))==null?void 0:r.name)||i;console.debug(`shogun: Found cached optimization for optimization: '${t.name}' (${t.id}), with variant: '${o}' (${i})`)}return j({...t,assignedVariantId:i,state:n},{page:this.context.page,shop:this.context.shop},this.audienceEvaluator)})),this._publishedOptimizations}get abTestStrategy(){switch(this.context.assignmentStrategy){case"greedy":return new q(this.visitor.bin);case"even":return new nt(this.visitor.bin);default:return new q(this.visitor.bin)}}get personalizationStrategy(){return new M(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 dt(navigator.userAgent)}get dispatchAttempts(){return Number(sessionStorage.getItem("_shg_dispatch_attempts")||"0")}get trackingService(){return this.tracker||(this.tracker=new lt({shop:this.context.shop,page:this.context.page,visitor:this.visitor,assignmentStrategy:this.context.assignmentStrategy,publishedOptimizations:this.publishedOptimizations,originalReferrer:this.originalReferrer})),this.tracker}get isThemePreview(){var i,n,s;if(this.optimizationReview.inReview)return!1;const t=this.context.page.themeId!=this.context.shop.defaultThemeId,e=(s=(n=(i=this.previouslyAssignedOptimization)==null?void 0:i.assignedVariant)==null?void 0:n.config)==null?void 0:s.theme_id;return t&&(e===void 0||e!==this.context.page.themeId)}set dispatchAttempts(t){sessionStorage.setItem("_shg_dispatch_attempts",t.toString())}run(){var t,e,i,n;try{if(this.isBot){console.debug("shogun: Visitor identified as bot, skipping optimization assignment and execution.");return}if(this.dispatchAttempts>=T.MAX_DISPATCH_ATTEMPTS)throw new Error(`Maximum dispatch attempts of ${T.MAX_DISPATCH_ATTEMPTS} exceeded. Possible redirect loop detected.`);if(this.optimizationCache.clearExpired())return;if(this.isThemePreview){console.debug("shogun: Visitor identified as theme preview, skipping optimization assignment and execution.");return}this.publishedOptimizations.forEach(r=>
114r.evaluateEligibility()),console.debug(`shogun: Running dispatcher with ${this.publishedOptimizations.length} published optimizations (${this.publishedOptimizations.map(r=>r.name).join(", ")})`);const s=this.assignedOptimization;if(s){if(this.optimizationCache.update(s),s.isFirstAssignment&&this.trackingService.track("assigned",s),s.needsDispatch){console.debug(`shogun: Dispatching optimization: ${s.name} (${s.id}) with variant: ${(t=s.assignedVariant)==null?void 0:t.name} (${(e=s.assignedVariant)==null?void 0:e.id}) [attempt ${this.dispatchAttempts+1}]`),this.dispatchAttempts==0&&this.retainedReferrer.save(),this.trackingService.track("dispatched",s),this.dispatchAttempts=this.dispatchAttempts+1,s.dispatch();return}console.debug(`shogun: Running optimization: '${s.name}' (${s.id}) with variant: '${(i=s.assignedVariant)==null?void 0:i.name}' (${(n=s.assignedVariant)==null?void 0:n.id})`),s.inReview?(console.debug("shogun: Optimization is in review, running optimization review flow for optimization"),this.optimizationReview.run()):s.isFirstView?(console.debug("shogun: This is the first view for this optimization, tracking started event."),s.state="started",this.optimizationCache.update(s),this.trackingService.track("started",s)):s.isOnAssignedVariant?(console.debug("shogun: This is not the first view for this optimization, tracking viewed event."),this.trackingService.track("viewed",s)):(console.debug("shogun: Visitor is not eligible for the assigned optimization, skipping view tracking and finalization."),this.trackingService.track("skipped",s,{reason:"not_eligible"})),s.finalize(),this.dispatchAttempts=0}else console.debug("shogun: No optimization assigned to this visitor."),this.trackingService.track("skipped",void 0,{reason:"no_assigned_variant"});this.retainedReferrer.clear()}catch(s){console.error("shogun: Error running optimizations",s),this.trackingService.track("errored",void 0,{error:s
114instanceof Error?{message:s.message,stack:s.stack}:String(s)}),this.retainedReferrer.clear()}}};a(T,"MAX_DISPATCH_ATTEMPTS",5);let K=T;window.ShogunDispatcher=K})(); 115 116})(); 117 118</script>
118<script type="text/javascript"> 119 ;(function() { 120 const designMode = false; 121 if (designMode) { 122 console.debug("shogun: Design mode is enabled, skipping optimizer initialization"); 123 return; 124 } 125 126 // 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 127 // This is used to remove the preview bar from the page for shoppers 128 const referrer = document.referrer 129 const merchantDomains = ['admin.shopify.com', 'ab.shgapi.com', 'abc.shogun.dev'] 130 if (!localStorage.getItem('_shg_is_merchant') && merchantDomains.some(domain => referrer.includes(domain))) { 131 console.debug('shogun: Setting shg_is_merchant to true') 132 localStorage.setItem('_shg_is_merchant', 'true') 133 } 134 135 // Check for optimization disable flags 136 const urlParams = new URLSearchParams(window.location.search); 137 const optimizationDisabled = urlParams.get('shg') === "false" || window.location.hostname.includes('shopifypreview'); 138 139 if (optimizationDisabled) { 140 console.debug("shogun: Optimization is disabled, skipping optimizer initialization"); 141 return; 142 } 143 144 // Load shop metafield configuration 145 146 const shopMetafieldConfig = {"default_theme_id":191087509688,"method":"greedy","optimizations":[],"expires_at":1788892296000,"env":"production"}; 147 148 if (!shopMetafieldConfig) { 149 console.debug("shogun: Shop metafield configuration for optimizations is missing. Skipping optimizer initialization."); 150 return; 151 } 152 153 const optimizationsData = shopMetafieldConfig.expires_at > Date.now() ? (shopMetafieldConfig.optimizations || []) : []; 154 155 // These ID should match. It is possible for them to be different if a theme is copied from a different shop. 156 const intendedShopifyId = "94598496440"; // The hard coded shopify ID when this snippet was pushed to the theme. 157 const currentShopifyId = "94598496440"; // The current shopify ID that this theme is rendered in. 158 if (intendedShopifyId !== currentShopifyId) { 159 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.`); 160 return; 161 } else { 162 console.debug(`shogun: Shopify ID verified: ${intendedShopifyId}`); 163 } 164 165 166 if (typeof ShogunDispatcher === 'undefined') { 167 console.error("shogun: Dispatcher is not defined. Please ensure the shogun optimizer script is properly loaded."); 168 return; 169 } 170 171 const dispatcherConfig = { 172 shop: { 173 shopId: "57f1285e-8e9b-4a81-a60f-fa678b392b91", 174 shopDomain: "1zkvfh-xt.myshopify.com", 175 analyticsUrl: "https://shogun-abc-production.global.ssl.fastly.net", 176 geoLocationApi: "https://ipinfo.io/json?token=f2ae3a557d807b", 177 storefrontAccessToken: null, 178 defaultThemeId: shopMetafieldConfig.default_theme_id ? shopMetafieldConfig.default_theme_id.toString() : null, 179 storewideEventCollection: false, 180 }, 181 page: { 182 pageId: "162554970296", 183 pageType: "page", 184 templateName: "page", 185 templateSuffix: "contact.bushnell", 186 templateDirectory: "", 187 themeId: "190609653944", 188 languageRootUrl: "/", 189 path: window.location.pathname, 190 currentCartVariantId: null, 191 }, 192 session: { 193 sessionId: urlParams.get('shgSessionId'), 194 customerId: "", 195 isB2B: false, 196 }, 197 assignmentStrategy: shopMetafieldConfig.method, 198 publishedOptimizations: optimizationsData 199 } 200 201 console.debug("shogun: Initializing ShogunOptimizer v2"); 202 const dispatcher = new ShogunDispatcher(dispatcherConfig); 203 dispatcher.run(); 204 205 })(); 206 207</script>
207 208�<link 209 rel="icon" 210 type="image/png" 211 href="//www.bushnellgolf.com/cdn/shop/files/favicon.png?crop=center&height=32&v=1784050590&width=32" 212 ><style data-shopify>�@font-face { 213 font-family: Inter; 214 font-weight: 400; 215 font-style: normal; 216 font-display: swap; 217 src: url("//www.bushnellgolf.com/cdn/fonts/inter/inter_n4.b2a3f24c19b4de56e8871f609e73ca7f6d2e2bb9.woff2") format("woff2"), 218 url("//www.bushnellgolf.com/cdn/fonts/inter/inter_n4.af8052d517e0c9ffac7b814872cecc27ae1fa132.woff") format("woff"); 219} 220@font-face { 221 font-family: Inter; 222 font-weight: 700; 223 font-style: normal; 224 font-display: swap; 225 src: url("//www.bushnellgolf.com/cdn/fonts/inter/inter_n7.02711e6b374660cfc7915d1afc1c204e633421e4.woff2") format("woff2"), 226 url("//www.bushnellgolf.com/cdn/fonts/inter/inter_n7.6dab87426f6b8813070abd79972ceaf2f8d3b012.woff") format("woff"); 227} 228@font-face { 229 font-family: Inter; 230 font-weight: 400; 231 font-style: italic; 232 font-display: swap; 233 src: url("//www.bushnellgolf.com/cdn/fonts/inter/inter_i4.feae1981dda792ab80d117249d9c7e0f1017e5b3.woff2") format("woff2"), 234 url("//www.bushnellgolf.com/cdn/fonts/inter/inter_i4.62773b7113d5e5f02c71486623cf828884c85c6e.woff") format("woff"); 235} 236@font-face { 237 font-family: Inter; 238 font-weight: 700; 239 font-style: italic; 240 font-display: swap; 241 src: url("//www.bushnellgolf.com/cdn/fonts/inter/inter_i7.b377bcd4cc0f160622a22d638ae7e2cd9b86ea4c.woff2") format("woff2"), 242 url("//www.bushnellgolf.com/cdn/fonts/inter/inter_i7.7c69a6a34e3bb44fcf6f975857e13b9a9b25beb4.woff") format("woff"); 243} 244@font-face { 245 font-family: Inter; 246 font-weight: 500; 247 font-style: normal; 248 font-display: swap; 249 src: url("//www.bushnellgolf.com/cdn/fonts/inter/inter_n5.d7101d5e168594dd06f56f290dd759fba5431d97.woff2") format("woff2"), 250 url("//www.bushnellgolf.com/cdn/fonts/inter/inter_n5.5332a76bbd27da00474c136abb1ca3cbbf259068.woff") format("woff"); 251} 252@font-face { 253 font-family: Inter; 254 font-weight: 500; 255 font-style: italic; 256 font-display: swap; 257 src: url("//www.bushnellgolf.com/cdn/fonts/inter/inter_i5.4474f48e6ab2b1e01aa2b6d942dd27fa24f2d99f.woff2") format("woff2"), 258 url("//www.bushnellgolf.com/cdn/fonts/inter/inter_i5.493dbd6ee8e49f4ad722ebb68d92f201af2c2f56.woff") format("woff"); 259} 260 261 262 :root { 263 /* Page Layout */ 264 --sidebar-width: 25rem; 265 --narrow-content-width: 36rem; 266 --normal-content-width: 42rem; 267 --wide-content-width: 46rem; 268 --narrow-page-width: 90rem; 269 --normal-page-width: 120rem; 270 --wide-page-width: 150rem; 271 272 /* Section Heights */ 273 --section-height-small: 15rem; 274 --section-height-medium: 25rem; 275 --section-height-large: 35rem; 276 277 @media screen and (min-width: 40em) { 278 --section-height-small: 40svh; 279 --section-height-medium: 55svh; 280 --section-height-large: 70svh; 281 } 282 283 @media screen and (min-width: 60em) { 284 --section-height-small: 50svh; 285 --section-height-medium: 65svh; 286 --section-height-large: 80svh; 287 } 288 289 /* Letter spacing */ 290 --letter-spacing-sm: 0.06em; 291 --letter-spacing-md: 0.13em; 292 293 /* Font families */ 294 --font-body--family: Inter, sans-serif; 295 --font-body--style: normal; 296 --font-body--weight: 400; 297 --font-subheading--family: Inter, sans-serif; 298 --font-subheading--style: normal; 299 --font-subheading--weight: 500; 300 --font-heading--family: Inter, sans-serif; 301 --font-heading--style: normal; 302 --font-heading--weight: 700; 303 --font-accent--family: Inter, sans-serif; 304 --font-accent--style: normal; 305 --font-accent--weight: 700; 306 307 /* Margin sizes */ 308 --font-heading--spacing: 0.25em; 309 --font-h1--spacing: var(--font-heading--spacing); 310 --font-h2--spacing: var(--font-heading--spacing); 311 --font-h3--spacing: var(--font-heading--spacing); 312 --font-h4--spacing: var(--font-heading--spacing); 313 --font-h5--spacing: var(--font-heading--spacing); 314 --font-h6--spacing: var(--font-heading--spacing); 315 --font-paragraph--spacing: 0.5em; 316 317 /* Heading colors */ 318 --font-h1--color: var(--color-foreground-heading); 319 --font-h2--color: var(--color-foreground-heading); 320 --font-h3--color: var(--color-foreground-heading); 321 --font-h4--color: var(--color-foreground-heading); 322 --font-h5--color: var(--color-foreground-heading); 323 --font-h6--color: var(--color-foreground-heading); 324 325 /** Z-Index / Layering */ 326 --layer-section-background: -2; 327 --layer-lowest: -1; 328 --layer-base: 0; 329 --layer-flat: 1; 330 --layer-raised: 2; 331 --layer-heightened: 4; 332 --layer-sticky: 8; 333 --layer-window-overlay: 10; 334 --layer-header-menu: 12; 335 --layer-overlay: 16; 336 --layer-menu-drawer: 18; 337 --layer-temporary: 20;
338 339 /* Max-width / Measure */ 340 --max-width--body-normal: 32.5em; 341 --max-width--body-narrow: 22.75em; 342 343 --max-width--heading-normal: 32.5em; 344 --max-width--heading-narrow: 19.5em; 345 346 --max-width--display-normal: 13em; 347 --max-width--display-narrow: 9.75em; 348 --max-width--display-tight: 3.25em; 349 350 /* Letter-spacing / Tracking */ 351 --letter-spacing--display-tight: -0.03em; 352 --letter-spacing--display-normal: 0em; 353 --letter-spacing--display-loose: 0.03em; 354 355 --letter-spacing--heading-tight: -0.03em; 356 --letter-spacing--heading-normal: 0em; 357 --letter-spacing--heading-loose: 0.03em; 358 359 --letter-spacing--body-tight: -0.03em; 360 --letter-spacing--body-normal: 0em; 361 --letter-spacing--body-loose: 0.03em; 362 363 /* Line height / Leading */ 364 --line-height: 1; 365 366 --line-height--display-tight: 1; 367 --line-height--display-normal: 1.1; 368 --line-height--display-loose: 1.2; 369 370 --line-height--heading-tight: 1.15; 371 --line-height--heading-normal: 1.25; 372 --line-height--heading-loose: 1.35; 373 374 --line-height--body-tight: 1.2; 375 --line-height--body-normal: 1.4; 376 --line-height--body-loose: 1.6; 377 378 /* Typography presets */ 379 --font-size--paragraph: 0.875rem;--font-size--h1: clamp(3.0rem, 5.6vw, 3.5rem);--font-size--h2: clamp(2.25rem, 4.8vw, 3.0rem);--font-size--h3: 2.0rem;--font-size--h4: 1.5rem;--font-size--h5: 0.875rem;--font-size--h6: 0.75rem;--font-paragraph--weight: 400;--font-paragraph--letter-spacing: var(--letter-spacing--body-normal);--font-paragraph--size: var(--font-size--paragraph);--font-paragraph--family: var(--font-body--family);--font-paragraph--style: var(--font-body--style);--font-paragraph--case: ;--font-paragraph--line-height: var(--line-height--body-loose);--font-h1--weight: var(--font-heading--weight);--font-h1--letter-spacing: var(--letter-spacing--heading-normal);--font-h1--size: var(--font-size--h1);--font-h1--family: var(--font-heading--family);--font-h1--style: var(--font-heading--style);--font-h1--case: none;--font-h1--line-height: var(--line-height--display-tight);--font-h2--weight: var(--font-heading--weight);--font-h2--letter-spacing: var(--letter-spacing--heading-normal);--font-h2--size: var(--font-size--h2);--font-h2--family: var(--font-heading--family);--font-h2--style: var(--font-heading--style);--font-h2--case: none;--font-h2--line-height: var(--line-height--display-tight);--font-h3--weight: var(--font-heading--weight);--font-h3--letter-spacing: var(--letter-spacing--heading-normal);--font-h3--size: var(--font-size--h3);--font-h3--family: var(--font-heading--family);--font-h3--style: var(--font-heading--style);--font-h3--case: none;--font-h3--line-height: var(--line-height--display-normal);--font-h4--weight: var(--font-heading--weight);--font-h4--letter-spacing: var(--letter-spacing--heading-normal);--font-h4--size: var(--font-size--h4);--font-h4--family: var(--font-heading--family);--font-h4--style: var(--font-heading--style);--font-h4--case: none;--font-h4--line-height: var(--line-height--display-tight);--font-h5--weight: var(--font-subheading--weight);--font-h5--letter-spacing: var(--letter-spacing--heading-normal);--font-h5--size: var(--font-size--h5);--font-h5--family: var(--font-subheading--family);--font-h5--style: var(--font-subheading--style);--font-h5--case: none;--font-h5--line-height: var(--line-height--display-loose);--font-h6--weight: var(--font-subheading--weight);--font-h6--letter-spacing: var(--letter-spacing--heading-normal);--font-h6--size: var(--font-size--h6);--font-h6--family: var(--font-subheading--family);--font-h6--style: var(--font-subheading--style);--font-h6--case: none;--font-h6--line-height: var(--line-height--display-loose); 380 381 /* Hardcoded font sizes */ 382 --font-size--3xs: 0.625rem; 383 --font-size--2xs: 0.75rem; 384 --font-size--xs: 0.8125rem; 385 --font-size--sm: 0.875rem; 386 --font-size--md: 1rem; 387 --font-size--lg: 1.125rem; 388 --font-size--xl: 1.25rem; 389 --font-size--2xl: 1.5rem; 390 --font-size--3xl: 2rem; 391 --font-size--4xl: 2.5rem; 392 --font-size--5xl: 3rem; 393 --font-size--6xl: 3.5rem; 394 395 /* Menu font sizes */ 396 --menu-font-sm--size: 0.875rem; 397 --menu-font-sm--line-height: calc(1.1 + 0.5 * min(16 / 14)); 398 --menu-font-md--size: 1rem; 399 --menu-font-md--line-height: calc(1.1 + 0.5 * min(16 / 16)); 400 --menu-font-lg--size: 1.125rem; 401 --menu-font-lg--line-height: calc(1.1 + 0.5 * min(16 / 18));
402 --menu-font-xl--size: 1.25rem; 403 --menu-font-xl--line-height: calc(1.1 + 0.5 * min(16 / 20)); 404 --menu-font-2xl--size: 1.75rem; 405 --menu-font-2xl--line-height: calc(1.1 + 0.5 * min(16 / 28)); 406 407 /* Colors */ 408 --color-error: #8B0000; 409 --color-success: #006400; 410 --color-white: #FFFFFF; 411 --color-white-rgb: 255 255 255; 412 --color-black: #000000; 413 --color-instock: #3ED660; 414 --color-lowstock: #EE9441; 415 --color-outofstock: #C8C8C8; 416 417 /* Opacity */ 418 --opacity-5: 0.05; 419 --opacity-8: 0.08; 420 --opacity-10: 0.1; 421 --opacity-15: 0.15; 422 --opacity-20: 0.2; 423 --opacity-25: 0.25; 424 --opacity-30: 0.3; 425 --opacity-40: 0.4; 426 --opacity-50: 0.5; 427 --opacity-60: 0.6; 428 --opacity-70: 0.7; 429 --opacity-80: 0.8; 430 --opacity-85: 0.85; 431 --opacity-90: 0.9; 432 --opacity-subdued-text: var(--opacity-70); 433 434 --shadow-button: 0 2px 3px rgb(0 0 0 / 20%); 435 --gradient-image-overlay: linear-gradient(to top, rgb(0 0 0 / 0.5), transparent); 436 437 /* Spacing */ 438 --margin-3xs: 0.125rem; 439 --margin-2xs: 0.3rem; 440 --margin-xs: 0.5rem; 441 --margin-sm: 0.7rem; 442 --margin-md: 0.8rem; 443 --margin-lg: 1rem; 444 --margin-xl: 1.25rem; 445 --margin-2xl: 1.5rem; 446 --margin-3xl: 1.75rem; 447 --margin-4xl: 2rem; 448 --margin-5xl: 3rem; 449 --margin-6xl: 5rem; 450 451 --scroll-margin: 50px; 452 453 --padding-3xs: 0.125rem; 454 --padding-2xs: 0.25rem; 455 --padding-xs: 0.5rem; 456 --padding-sm: 0.7rem; 457 --padding-md: 0.8rem; 458 --padding-lg: 1rem; 459 --padding-xl: 1.25rem; 460 --padding-2xl: 1.5rem; 461 --padding-3xl: 1.75rem; 462 --padding-4xl: 2rem; 463 --padding-5xl: 3rem; 464 --padding-6xl: 4rem; 465 466 --gap-3xs: 0.125rem; 467 --gap-2xs: 0.3rem; 468 --gap-xs: 0.5rem; 469 --gap-sm: 0.7rem; 470 --gap-md: 0.9rem; 471 --gap-lg: 1rem; 472 --gap-xl: 1.25rem; 473 --gap-2xl: 2rem; 474 --gap-3xl: 3rem; 475 476 --spacing-scale-sm: 0.6; 477 --spacing-scale-md: 0.7; 478 --spacing-scale-default: 1.0; 479 480 /* Checkout buttons gap */ 481 --checkout-button-gap: 10px; 482 483 /* Borders */ 484 --style-border-width: 1px; 485 --style-border-radius-xs: 0.2rem; 486 --style-border-radius-sm: 0.6rem; 487 --style-border-radius-md: 0.8rem; 488 --style-border-radius-50: 50%; 489 --style-border-radius-lg: 1rem; 490 --style-border-radius-pills: 40px; 491 --style-border-radius-inputs: 4px; 492 --style-border-radius-buttons-primary: 14px; 493 --style-border-radius-buttons-secondary: 14px; 494 --style-border-width-primary: 0px; 495 --style-border-width-secondary: 1px; 496 --style-border-width-inputs: 1px; 497 --style-border-radius-popover: 14px; 498 --style-border-popover: 1px none rgb(var(--color-border-rgb) / 50%); 499 --style-border-drawer: 1px none rgb(var(--color-border-rgb) / 50%); 500 --style-border-swatch-opacity: 10%; 501 --style-border-swatch-width: 1px; 502 --style-border-swatch-style: solid; 503 504 /* Animation */ 505 --ease-out-cubic: cubic-bezier(0.33, 1, 0.68, 1); 506 --ease-out-quad: cubic-bezier(0.32, 0.72, 0, 1); 507 --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955); 508 --animation-speed-fast: 0.0625s; 509 --animation-speed: 0.125s; 510 --animation-speed-slow: 0.2s; 511 --animation-speed-medium: 0.15s; 512 --animation-easing: ease-in-out; 513 --animation-slideshow-easing: cubic-bezier(0.4, 0, 0.2, 1); 514 --drawer-animation-speed: 0.2s; 515 --animation-values-slow: var(--animation-speed-slow) var(--animation-easing); 516 --animation-values: var(--animation-speed) var(--animation-easing); 517 --animation-values-fast: var(--animation-speed-fast) var(--animation-easing); 518 --animation-values-allow-discrete: var(--animation-speed) var(--animation-easing) allow-discrete; 519 --animation-timing-hover: cubic-bezier(0.25, 0.46, 0.45, 0.94); 520 --animation-timing-active: cubic-bezier(0.5, 0, 0.75, 0); 521 --animation-timing-bounce: cubic-bezier(0.34, 1.56, 0.64, 1); 522 --animation-timing-default: cubic-bezier(0, 0, 0.2, 1); 523 --animation-timing-fade-in: cubic-bezier(0.16, 1, 0.3, 1); 524 --animation-timing-fade-out: cubic-bezier(0.4, 0, 0.2, 1); 525 /* Spring definitions suffixed with perceptual duration (d<ms>) and bounce (b<%>)*/ 526 --spring-d300-b0-easing: linear(0, 0.0033 0.81%, 0.027 2.42%, 0.0916 4.84%, 0.4745 15.32%, 0.6422 20.97%, 0.7175, 0.7789, 0.8283 30.64%, 0.876, 0.9111 38.71%, 0.941, 0.9611 48.39%, 0.9707, 0.978 54.84%, 0.9885 62.1%, 0.9949 70.97%, 0.9982 82.26%, 0.9997 100%); 527 --spring-d300-b0-duration: 0.4980s; 528 --spring-d280-b0-easing: linear(0, 0.0044, 0.0164 1.85%, 0.085 4.63%, 0.4571 14.81%, 0.575 18.52%, 0.6505, 0.7148 24.07%, 0.7849, 0.8393, 0.8809 35.18%, 0.9189, 0.9453 44.44%, 0.9662, 0.9793 55.55%, 0.9894 62.95%, 0.995 71.28%, 0.9982 82.39%, 0.9997 99.98%); 529 --spring-d280-b0-duration: 0.4648s; 530 --spring-d260-b0-easing: linear(0, 0.0058, 0.0216 2.15%, 0.0748 4.29%, 0.4646 15.03%, 0.5673, 0.655, 0.7279, 0.7872, 0.8349, 0.8727 34.36%, 0.9107, 0.9379 42.95%, 0.9609 48.31%, 0.9778 54.76%, 0.9887 62.27%, 0.9948 70.86%, 0.9983 82.67%, 0.9997 99.85%); 531 --spring-d260-b0-duration: 0.4316s; 532 --spring-d220-b0-easing: linear( 533 0, 534 0.0093 1.37%, 535 0.0696 4.12%, 536 0.4667 15.09%, 537 0.6322 20.58%, 538 0.6986 23.32%, 539 0.7793 27.44%, 540 0.8219 30.18%, 541 0.8721, 542 0.9089 38.42%, 543 0.9427, 544 0.9644, 545 0.978 54.88%, 546 0.9881 61.74%, 547 0.9944 69.97%, 548 0.998 80.95%, 549 0.9996 98.78% 550 ); 551 --spring-d220-b0-duration: 0.3818s; 552 --spring-d180-b0-easing: linear(0, 0.0234, 0.0805 4.48%, 0.4865 15.68%, 0.6211 20.16%, 0.7696 26.88%, 0.8064 29.12%, 0.8646, 0.9063, 0.9358, 0.9563 47.04%, 0.9757, 0.9867 60.48%, 0.9941 69.44%, 0.9979 80.64%, 0.9996 98.56%); 553 --spring-d180-b0-duration: 0.2988s; 554 555 /* View transitions */ 556 /* View transition old */ 557 --view-transition-old-main-content: var(--animation-speed) var(--animation-easing) both fadeOut; 558 559 /* View transition new */ 560 --view-transition-new-main-content: var(--animation-speed) var(--animation-easing) both fadeIn, var(--animation-speed) var(--animation-easing) both slideInTopViewTransition; 561 562 /* Focus */ 563 --focus-outline-width: 0.09375rem; 564 --focus-outline-offset: 0.2em; 565 566 /* Badges */ 567 --badge-blob-padding-block: 1px; 568 --badge-blob-padding-inline: 12px 8px; 569 --badge-rectangle-padding-block: 1px; 570 --badge-rectangle-padding-inline: 6px; 571 @media screen and (min-width: 750px) { 572 --badge-blob-padding-block: 4px; 573 --badge-blob-padding-inline: 16px 12px; 574 --badge-rectangle-padding-block: 4px; 575 --badge-rectangle-padding-inline: 10px; 576 } 577 578 /* Icons */ 579 --icon-size-2xs: 0.6rem; 580 --icon-size-xs: 0.85rem; 581 --icon-size-sm: 1.25rem; 582 --icon-size-md: 1.375rem; 583 --icon-size-lg: 1.5rem; 584 --icon-stroke-width: 1.5px; 585 586 /* Input */ 587 --input-email-min-width: 200px; 588 --input-search-max-width: 650px; 589 --input-padding-y: 0.8rem; 590 --input-padding-x: 0.8rem; 591 --input-padding: var(--input-padding-y) var(--input-padding-x); 592 --input-box-shadow-width: var(--style-border-width-inputs); 593 --input-box-shadow: 0 0 0 var(--input-box-shadow-width) var(--color-input-border); 594 --input-box-shadow-focus: 0 0 0 calc(var(--input-box-shadow-width) + 0.5px) var(--color-input-border); 595 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 596 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5)); 597 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50));
598 --input-textarea-min-height: 55px; 599 600 /* Checkbox */ 601 --checkbox-size: 22px; 602 --checkbox-border-radius: 7px; 603 --checkbox-border: 1px solid rgb(var(--color-foreground-rgb) / var(--opacity-35-55)); 604 --checkbox-label-padding: 8px; 605 606 @media screen and (min-width: 750px) { 607 --checkbox-size: 16px; 608 --checkbox-border-radius: 5px; 609 --checkbox-label-padding: 6px; 610 } 611 612 /* Button size */ 613 --button-size-sm: 30px; 614 --button-size-md: 36px; 615 --button-size: var(--minimum-touch-target); 616 --button-padding-inline: 24px; 617 --button-padding-block: 16px; 618 619 /* Button font-family */ 620 --button-font-family-primary: var(--font-body--family); 621 --button-font-family-secondary: var(--font-body--family); 622 623 /* Button text case */ 624 --button-text-case: ; 625 --button-text-case-primary: default; 626 --button-text-case-secondary: default; 627 628 /* Borders */ 629 --border-color: rgb(var(--color-border-rgb) / var(--opacity-50)); 630 --border-width-sm: 1px; 631 --border-width-md: 2px; 632 --border-width-lg: 5px; 633 --border-radius-sm: 0.25rem; 634 635 /* Drawers */ 636 --drawer-inline-padding: 25px; 637 --drawer-menu-inline-padding: 2.5rem; 638 --drawer-header-block-padding: 20px; 639 --drawer-content-block-padding: 10px; 640 --drawer-header-desktop-top: 0rem; 641 --drawer-padding: calc(var(--padding-sm) + 7px); 642 --drawer-height: 100dvh; 643 --drawer-width: 95vw; 644 --drawer-max-width: 500px; 645 646 /* Variant Picker Swatches */ 647 --variant-picker-swatch-width-unitless: 34; 648 --variant-picker-swatch-height-unitless: 34; 649 --variant-picker-swatch-width: 34px; 650 --variant-picker-swatch-height: 34px; 651 --variant-picker-swatch-radius: 32px; 652 --variant-picker-border-width: 1px; 653 --variant-picker-border-style: solid; 654 --variant-picker-border-opacity: 10%; 655 656 /* Variant Picker Buttons */ 657 --variant-picker-button-radius: 14px; 658 --variant-picker-button-border-width: 1px; 659 660 /* Slideshow */ 661 --slideshow-controls-size: 3.5rem; 662 --slideshow-controls-icon: 2rem; 663 --peek-next-slide-size: 3rem; 664 665 /* Utilities */ 666 --backdrop-opacity: 0.15; 667 --backdrop-color-rgb: var(--color-shadow-rgb); 668 --minimum-touch-target: 44px; 669 --disabled-opacity: 0.5; 670 --skeleton-opacity: 0.025; 671 672 /* Shapes */ 673 --shape--circle: circle(50% at center); 674 --shape--sunburst: polygon(100% 50%,94.62% 55.87%,98.3% 62.94%,91.57% 67.22%,93.3% 75%,85.7% 77.39%,85.36% 85.36%,77.39% 85.7%,75% 93.3%,67.22% 91.57%,62.94% 98.3%,55.87% 94.62%,50% 100%,44.13% 94.62%,37.06% 98.3%,32.78% 91.57%,25% 93.3%,22.61% 85.7%,14.64% 85.36%,14.3% 77.39%,6.7% 75%,8.43% 67.22%,1.7% 62.94%,5.38% 55.87%,0% 50%,5.38% 44.13%,1.7% 37.06%,8.43% 32.78%,6.7% 25%,14.3% 22.61%,14.64% 14.64%,22.61% 14.3%,25% 6.7%,32.78% 8.43%,37.06% 1.7%,44.13% 5.38%,50% 0%,55.87% 5.38%,62.94% 1.7%,67.22% 8.43%,75% 6.7%,77.39% 14.3%,85.36% 14.64%,85.7% 22.61%,93.3% 25%,91.57% 32.78%,98.3% 37.06%,94.62% 44.13%); 675 --shape--diamond: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); 676 --shape--blob: polygon(85.349% 11.712%, 87.382% 13.587%, 89.228% 15.647%, 90.886% 17.862%, 92.359% 20.204%, 93.657% 22.647%, 94.795% 25.169%, 95.786% 27.752%, 96.645% 30.382%, 97.387% 33.048%, 98.025% 35.740%, 98.564% 38.454%, 99.007% 41.186%, 99.358% 43.931%, 99.622% 46.685%, 99.808% 49.446%, 99.926% 52.210%, 99.986% 54.977%, 99.998.4% 57.744%, 99.975% 60.511%, 99.923% 63.278%, 99.821% 66.043%, 99.671% 68.806%, 99.453% 71.565%, 99.145% 74.314%, 98.724% 77.049%, 98.164% 79.759%, 97.433% 82.427%, 96.495% 85.030%, 95.311% 87.529%, 93.841% 89.872%, 92.062% 91.988%, 89.972% 93.796%, 87.635% 95.273%, 85.135% 96.456%, 82.532% 97.393%, 79.864% 98.127%, 77.156% 98.695%, 74.424% 99.129%, 71.676% 99.452%, 68.918% 99.685%, 66.156% 99.844%, 63.390% 99.942%, 60.624% 99.990%, 57.856% 99.998.4%, 55.089% 99.978%, 52.323% 99.929%, 49.557% 99.847%, 46.792% 99.723%, 44.031% 99.549%, 41.273% 99.317%, 38.522% 99.017%, 35.781% 98.639%, 33.054% 98.170%, 30.347% 97.598.4%, 27.667% 96.911%, 25.024% 96.091%, 22.432% 95.123%, 19.907% 93.994%, 17.466% 92.690%, 15.126% 91.216%, 12.902% 89.569%, 10.808% 87.761%, 8.854% 85.803%, 7.053% 83.703%, 5.418% 81.471%, 3.962% 79.119%, 2.702% 76.656%, 1.656% 74.095%, 0.846% 71.450%, 0.294% 68.740%, 0.024% 65.987%, 0.050% 63.221%, 0.343% 60.471%, 0.858% 57.752%, 1.548% 55.073%, 2.370% 52.431%, 3.283% 49.819%, 4.253% 47.227%, 5.249% 44.646%, 6.244% 42.063%, 7.211% 39.471%, 8.124% 36.858%, 8.958% 34.220%, 9.711% 31.558%, 10.409% 28.880%, 11.083% 26.196%, 11.760% 23.513%, 12.474% 20.839%, 13.259% 18.186%, 14.156% 15.569%, 15.214% 13.012%, 16.485% 10.556%, 18.028% 8.261%, 19.883
676% 6.211%, 22.041% 4.484%, 24.440% 3.110%, 26.998% 2.057%, 29.651% 1.275%, 32.360% 0.714%, 35.101% 0.337%, 37.859% 0.110%, 40.624% 0.009%, 43.391% 0.016%, 46.156% 0.113%, 48.918% 0.289%, 51.674% 0.533%, 54.425% 0.837%, 57.166% 1.215%, 59.898% 1.654%, 62.618% 2.163%, 65.322% 2.750%, 68.006% 3.424%, 70.662% 4.197%, 73.284% 5.081%, 75.860% 6.091%, 78.376% 7.242%, 80.813% 8.551%, 83.148% 10.036%, 85.349% 11.712%); 677 678 /* Buy buttons */ 679 --height-buy-buttons: calc(var(--padding-lg) * 2 + var(--icon-size-sm)); 680 681 /* Card image width and height variables */ 682 --card-width-small: 10rem; 683 684 --height-small: 10rem; 685 --height-medium: 11.5rem; 686 --height-large: 13rem; 687 --height-full: 100vh; 688 689 @media screen and (min-width: 750px) { 690 --height-small: 17.5rem; 691 --height-medium: 21.25rem; 692 --height-large: 25rem; 693 } 694 695 /* Modal */ 696 --modal-max-height: 65dvh; 697 --quick-add-modal-height: min(38.5rem, 96vh); 698 --quick-add-modal-width: min(54rem, 96vw); 699 --quick-add-modal-gallery-width: 24rem; 700 701 /* Card styles for search */ 702 --card-bg-hover: rgb(var(--color-foreground-rgb) / var(--opacity-5)); 703 --card-border-hover: rgb(var(--color-foreground-rgb) / var(--opacity-30)); 704 --card-border-focus: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 705 706 /* Cart */ 707 --cart-primary-font-family: var(--font-body--family); 708 --cart-primary-font-style: var(--font-body--style); 709 --cart-primary-font-weight: var(--font-body--weight); 710 --cart-secondary-font-family: var(--font-secondary--family); 711 --cart-secondary-font-style: var(--font-secondary--style); 712 --cart-secondary-font-weight: var(--font-secondary--weight); 713 } 714</style> 715<style data-shopify> 716 717 718 :root, 719 720 721 722 .color-scheme-1 { 723 --color-background: rgb(255 255 255 / 1.0); 724 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 725 --color-background-rgb: 255 255 255; 726 --opacity-5-15: 0.05; 727 --opacity-10-25: 0.1; 728 --opacity-35-55: 0.35; 729 --opacity-40-60: 0.4; 730 --opacity-30-60: 0.3; 731 --color-foreground: rgb(0 0 0 / 0.81); 732 --color-foreground-rgb: 0 0 0; 733 --color-foreground-heading: rgb(0 0 0 / 1.0); 734 --color-foreground-heading-rgb: 0 0 0; 735 --color-primary: rgb(0 0 0 / 0.81); 736 --color-primary-rgb: 0 0 0; 737 --color-primary-hover: rgb(0 0 0 / 1.0); 738 --color-primary-hover-rgb: 0 0 0; 739 --color-border: rgb(0 0 0 / 0.06); 740 --color-border-rgb: 0 0 0; 741 --color-shadow: rgb(0 0 0 / 1.0); 742 --color-shadow-rgb: 0 0 0; 743 --color-primary-button-text: rgb(255 255 255 / 1.0); 744 --color-primary-button-background: rgb(0 0 0 / 1.0); 745 --color-primary-button-border: rgb(0 0 0 / 1.0); 746 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 747 --color-primary-button-hover-background: rgb(51 51 51 / 1.0); 748 --color-primary-button-hover-border: rgb(0 0 0 / 1.0); 749 --color-secondary-button-text: rgb(0 0 0 / 1.0); 750 --color-secondary-button-background: rgb(0 0 0 / 0.0); 751 --color-secondary-button-border: rgb(0 0 0 / 1.0); 752 --color-secondary-button-hover-text: rgb(51 51 51 / 1.0); 753 --color-secondary-button-hover-background: rgb(250 250 250 / 1.0); 754 --color-secondary-button-hover-border: rgb(51 51 51 / 1.0); 755 --color-input-background: rgb(255 255 255 / 0.78); 756 --color-input-text: rgb(51 51 51 / 1.0); 757 --color-input-text-rgb: 51 51 51; 758 --color-input-border: rgb(223 223 223 / 1.0); 759 --color-input-hover-background: rgb(0 0 0 / 0.01); 760 --color-variant-background: rgb(255 255 255 / 1.0); 761 --color-variant-border: rgb(0 0 0 / 0.13); 762 --color-variant-text: rgb(0 0 0 / 1.0); 763 --color-variant-text-rgb: 0 0 0; 764 --color-variant-hover-background: rgb(245 245 245 / 1.0); 765 --color-variant-hover-text: rgb(0 0 0 / 1.0); 766 --color-variant-hover-border: rgb(230 230 230 / 1.0); 767 --color-selected-variant-background: rgb(0 0 0 / 1.0); 768 --color-selected-variant-border: rgb(0 0 0 / 1.0); 769 --color-selected-variant-text: rgb(255 255 255 / 1.0); 770 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 771 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 772 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 773 774 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 775 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 776 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 777 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 778 --font-h1--color: var(--color-foreground-heading); 779 --font-h2--color: var(--color-foreground-heading); 780 --font-h3--color: var(--color-foreground-heading); 781 --font-h4--color: var(--color-foreground-heading); 782 --font-h5--color: var(--color-foreground-heading); 783 --font-h6--color: var(--color-foreground-heading); 784 785 /* Shadows */ 786 787 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 788 789 790 --shadow-blur: 20px; 791 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 792 793 } 794 795 796 797 798 .color-scheme-2 { 799 --color-background: rgb(254 80 0 / 1.0); 800 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 801 --color-background-rgb: 254 80 0; 802 --opacity-5-15: 0.05; 803 --opacity-10-25: 0.1; 804 --opacity-35-55: 0.35; 805 --opacity-40-60: 0.4; 806 --opacity-30-60: 0.3; 807 --color-foreground: rgb(0 0 0 / 0.81); 808 --color-foreground-rgb: 0 0 0; 809 --color-foreground-heading: rgb(0 0 0 / 1.0); 810 --color-foreground-heading-rgb: 0 0 0; 811 --color-primary: rgb(0 0 0 / 0.81); 812 --color-primary-rgb: 0 0 0; 813 --color-primary-hover: rgb(255 255 255 / 1.0); 814 --color-primary-hover-rgb: 255 255 255; 815 --color-border: rgb(223 223 223 / 1.0); 816 --color-border-rgb: 223 223 223; 817 --color-shadow: rgb(0 0 0 / 1.0); 818 --color-shadow-rgb: 0 0 0; 819 --color-primary-button-text: rgb(255 255 255 / 1.0); 820 --color-primary-button-background: rgb(0 0 0 / 1.0); 821 --color-primary-button-border: rgb(0 0 0 / 1.0); 822 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 823 --color-primary-button-hover-background: rgb(51 51 51 / 1.0); 824 --color-primary-button-hover-border: rgb(51 51 51 / 1.0); 825 --color-secondary-button-text: rgb(0 0 0 / 1.0); 826 --color-secondary-button-background: rgb(0 0 0 / 0.0); 827 --color-secondary-button-border: rgb(0 0 0 / 1.0); 828 --color-secondary-button-hover-text: rgb(0 0 0 / 1.0); 829 --color-secondary-button-hover-background: rgb(255 255 255 / 0.36); 830 --color-secondary-button-hover-border: rgb(51 51 51 / 0.73); 831 --color-input-background: rgb(0 0 0 / 0.0); 832 --color-input-text: rgb(0 0 0 / 0.53); 833 --color-input-text-rgb: 0 0 0; 834 --color-input-border: rgb(0 0 0 / 0.13); 835 --color-input-hover-background: rgb(255 255 255 / 0.36); 836 --color-variant-background: rgb(255 255 255 / 1.0); 837 --color-variant-border: rgb(230 230 230 / 1.0); 838 --color-variant-text: rgb(0 0 0 / 1.0); 839 --color-variant-text-rgb: 0 0 0; 840 --color-variant-hover-background: rgb(245 245 245 / 1.0); 841 --color-variant-hover-text: rgb(0 0 0 / 1.0); 842 --color-variant-hover-border: rgb(230 230 230 / 1.0); 843 --color-selected-variant-background: rgb(0 0 0 / 1.0); 844 --color-selected-variant-border: rgb(0 0 0 / 1.0); 845 --color-selected-variant-text: rgb(255 255 255 / 1.0); 846 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 847 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 848 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 849 850 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 851 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 852 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 853 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 854 --font-h1--color: var(--color-foreground-heading); 855 --font-h2--color: var(--color-foreground-heading); 856 --font-h3--color: var(--color-foreground-heading); 857 --font-h4--color: var(--color-foreground-heading); 858 --font-h5--color: var(--color-foreground-heading); 859 --font-h6--color: var(--color-foreground-heading); 860 861 /* Shadows */ 862 863 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 864 865 866 --shadow-blur: 20px; 867 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 868 869 } 870 871 872 873 874 .color-scheme-3 { 875 --color-background: rgb(238 241 234 / 1.0); 876 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 877 --color-background-rgb: 238 241 234; 878 --opacity-5-15: 0.05; 879 --opacity-10-25: 0.1; 880 --opacity-35-55: 0.35; 881 --opacity-40-60: 0.4; 882 --opacity-30-60: 0.3; 883 --color-foreground: rgb(0 0 0 / 0.81); 884 --color-foreground-rgb: 0 0 0; 885 --color-foreground-heading: rgb(0 0 0 / 1.0); 886 --color-foreground-heading-rgb: 0 0 0; 887 --color-primary: rgb(0 0 0 / 0.81); 888 --color-primary-rgb: 0 0 0; 889 --color-primary-hover: rgb(0 0 0 / 1.0); 890 --color-primary-hover-rgb: 0 0 0; 891 --color-border: rgb(0 0 0 / 0.81); 892 --color-border-rgb: 0 0 0; 893 --color-shadow: rgb(0 0 0 / 1.0); 894 --color-shadow-rgb: 0 0 0; 895 --color-primary-button-text: rgb(255 255 255 / 1.0); 896 --color-primary-button-background: rgb(0 0 0 / 1.0); 897 --color-primary-button-border: rgb(0 0 0 / 1.0); 898 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 899 --color-primary-button-hover-background: rgb(51 51 51 / 1.0); 900 --color-primary-button-hover-border: rgb(51 51 51 / 1.0); 901 --color-secondary-button-text: rgb(0 0 0 / 1.0); 902 --color-secondary-button-background: rgb(0 0 0 / 0.0); 903 --color-secondary-button-border: rgb(0 0 0 / 1.0); 904 --color-secondary-button-hover-text: rgb(0 0 0 / 0.81); 905 --color-secondary-button-hover-background: rgb(255 255 255 / 0.36); 906 --color-secondary-button-hover-border: rgb(0 0 0 / 0.81); 907 --color-input-background: rgb(0 0 0 / 0.0); 908 --color-input-text: rgb(0 0 0 / 0.81); 909 --color-input-text-rgb: 0 0 0; 910 --color-input-border: rgb(0 0 0 / 0.81); 911 --color-input-hover-background: rgb(255 255 255 / 0.36); 912 --color-variant-background: rgb(255 255 255 / 1.0); 913 --color-variant-border: rgb(230 230 230 / 1.0); 914 --color-variant-text: rgb(0 0 0 / 1.0); 915 --color-variant-text-rgb: 0 0 0; 916 --color-variant-hover-background: rgb(245 245 245 / 1.0); 917 --color-variant-hover-text: rgb(0 0 0 / 1.0); 918 --color-variant-hover-border: rgb(230 230 230 / 1.0); 919 --color-selected-variant-background: rgb(0 0 0 / 1.0); 920 --color-selected-variant-border: rgb(0 0 0 / 1.0); 921 --color-selected-variant-text: rgb(255 255 255 / 1.0); 922 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 923 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 924 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 925 926 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 927 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 928 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 929 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 930 --font-h1--color: var(--color-foreground-heading); 931 --font-h2--color: var(--color-foreground-heading); 932 --font-h3--color: var(--color-foreground-heading); 933 --font-h4--color: var(--color-foreground-heading); 934 --font-h5--color: var(--color-foreground-heading); 935 --font-h6--color: var(--color-foreground-heading); 936 937 /* Shadows */ 938 939 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 940 941 942 --shadow-blur: 20px; 943 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 944 945 } 946 947 948 949 950 .color-scheme-4 { 951 --color-background: rgb(225 237 245 / 1.0); 952 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 953 --color-background-rgb: 225 237 245; 954 --opacity-5-15: 0.05; 955 --opacity-10-25: 0.1; 956 --opacity-35-55: 0.35; 957 --opacity-40-60: 0.4; 958 --opacity-30-60: 0.3; 959 --color-foreground: rgb(0 0 0 / 0.81); 960 --color-foreground-rgb: 0 0 0; 961 --color-foreground-heading: rgb(0 0 0 / 1.0); 962 --color-foreground-heading-rgb: 0 0 0; 963 --color-primary: rgb(0 0 0 / 0.81); 964 --color-primary-rgb: 0 0 0; 965 --color-primary-hover: rgb(0 0 0 / 1.0); 966 --color-primary-hover-rgb: 0 0 0; 967 --color-border: rgb(29 54 134 / 0.5); 968 --color-border-rgb: 29 54 134; 969 --color-shadow: rgb(0 0 0 / 1.0); 970 --color-shadow-rgb: 0 0 0; 971 --color-primary-button-text: rgb(255 255 255 / 1.0); 972 --color-primary-button-background: rgb(0 0 0 / 1.0); 973 --color-primary-button-border: rgb(29 54 134 / 1.0); 974 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 975 --color-primary-button-hover-background: rgb(51 51 51 / 1.0); 976 --color-primary-button-hover-border: rgb(0 0 0 / 1.0); 977 --color-secondary-button-text: rgb(0 0 0 / 1.0); 978 --color-secondary-button-background: rgb(0 0 0 / 0.0); 979 --color-secondary-button-border: rgb(0 0 0 / 1.0); 980 --color-secondary-button-hover-text: rgb(0 0 0 / 0.81); 981 --color-secondary-button-hover-background: rgb(255 255 255 / 0.36); 982 --color-secondary-button-hover-border: rgb(0 0 0 / 0.81); 983 --color-input-background: rgb(0 0 0 / 0.0); 984 --color-input-text: rgb(0 0 0 / 0.81); 985 --color-input-text-rgb: 0 0 0; 986 --color-input-border: rgb(0 0 0 / 0.81); 987 --color-input-hover-background: rgb(255 255 255 / 0.36); 988 --color-variant-background: rgb(255 255 255 / 1.0); 989 --color-variant-border: rgb(230 230 230 / 1.0); 990 --color-variant-text: rgb(0 0 0 / 1.0); 991 --color-variant-text-rgb: 0 0 0; 992 --color-variant-hover-background: rgb(245 245 245 / 1.0); 993 --color-variant-hover-text: rgb(0 0 0 / 1.0); 994 --color-variant-hover-border: rgb(230 230 230 / 1.0); 995 --color-selected-variant-background: rgb(0 0 0 / 1.0); 996 --color-selected-variant-border: rgb(0 0 0 / 1.0); 997 --color-selected-variant-text: rgb(255 255 255 / 1.0); 998 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 999 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 1000 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1001 1002 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1003 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1004 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1005 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1006 --font-h1--color: var(--col
1006or-foreground-heading); 1007 --font-h2--color: var(--color-foreground-heading); 1008 --font-h3--color: var(--color-foreground-heading); 1009 --font-h4--color: var(--color-foreground-heading); 1010 --font-h5--color: var(--color-foreground-heading); 1011 --font-h6--color: var(--color-foreground-heading); 1012 1013 /* Shadows */ 1014 1015 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1016 1017 1018 --shadow-blur: 20px; 1019 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1020 1021 } 1022 1023 1024 1025 1026 .color-scheme-5 { 1027 --color-background: rgb(51 51 51 / 1.0); 1028 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1029 --color-background-rgb: 51 51 51; 1030 --opacity-5-15: 0.15; 1031 --opacity-10-25: 0.25; 1032 --opacity-35-55: 0.55; 1033 --opacity-40-60: 0.6; 1034 --opacity-30-60: 0.6; 1035 --color-foreground: rgb(255 255 255 / 1.0); 1036 --color-foreground-rgb: 255 255 255; 1037 --color-foreground-heading: rgb(255 255 255 / 1.0); 1038 --color-foreground-heading-rgb: 255 255 255; 1039 --color-primary: rgb(255 255 255 / 1.0); 1040 --color-primary-rgb: 255 255 255; 1041 --color-primary-hover: rgb(255 255 255 / 0.69); 1042 --color-primary-hover-rgb: 255 255 255; 1043 --color-border: rgb(255 255 255 / 0.69); 1044 --color-border-rgb: 255 255 255; 1045 --color-shadow: rgb(0 0 0 / 1.0); 1046 --color-shadow-rgb: 0 0 0; 1047 --color-primary-button-text: rgb(0 0 0 / 1.0); 1048 --color-primary-button-background: rgb(255 255 255 / 1.0); 1049 --color-primary-button-border: rgb(255 255 255 / 1.0); 1050 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1051 --color-primary-button-hover-background: rgb(0 0 0 / 1.0); 1052 --color-primary-button-hover-border: rgb(0 0 0 / 1.0); 1053 --color-secondary-button-text: rgb(255 255 255 / 1.0); 1054 --color-secondary-button-background: rgb(0 0 0 / 0.0); 1055 --color-secondary-button-border: rgb(255 255 255 / 0.69); 1056 --color-secondary-button-hover-text: rgb(255 255 255 / 0.93); 1057 --color-secondary-button-hover-background: rgb(255 255 255 / 0.04); 1058 --color-secondary-button-hover-border: rgb(255 255 255 / 0.69); 1059 --color-input-background: rgb(51 51 51 / 1.0); 1060 --color-input-text: rgb(255 255 255 / 0.93); 1061 --color-input-text-rgb: 255 255 255; 1062 --color-input-border: rgb(255 255 255 / 0.69); 1063 --color-input-hover-background: rgb(255 255 255 / 0.04); 1064 --color-variant-background: rgb(255 255 255 / 1.0); 1065 --color-variant-border: rgb(230 230 230 / 1.0); 1066 --color-variant-text: rgb(0 0 0 / 1.0); 1067 --color-variant-text-rgb: 0 0 0; 1068 --color-variant-hover-background: rgb(245 245 245 / 1.0); 1069 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1070 --color-variant-hover-border: rgb(230 230 230 / 1.0); 1071 --color-selected-variant-background: rgb(0 0 0 / 1.0); 1072 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1073 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1074 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1075 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 1076 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1077 1078 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1079 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1080 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1081 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1082 --font-h1--color: var(--color-foreground-heading); 1083 --font-h2--color: var(--color-foreground-heading); 1084 --font-h3--color: var(--color-foreground-heading); 1085 --font-h4--color: var(--color-foreground-heading); 1086 --font-h5--color: var(--color-foreground-heading); 1087 --font-h6--color: var(--color-foreground-heading); 1088 1089 /* Shadows */ 1090 1091 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1092 1093 1094 --shadow-blur: 20px; 1095 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1096 1097 } 1098 1099 1100 1101 1102 .color-scheme-6 { 1103 --color-background: rgb(0 0 0 / 0.0); 1104 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1105 --color-background-rgb: 0 0 0; 1106 --opacity-5-15: 0.15; 1107 --opacity-10-25: 0.25; 1108 --opacity-35-55: 0.55; 1109 --opacity-40-60: 0.6; 1110 --opacity-30-60: 0.6; 1111 --color-foreground: rgb(255 255 255 / 1.0); 1112 --color-foreground-rgb: 255 255 255; 1113 --color-foreground-heading: rgb(255 255 255 / 1.0); 1114 --color-foreground-heading-rgb: 255 255 255; 1115 --color-primary: rgb(255 255 255 / 1.0); 1116 --color-primary-rgb: 255 255 255; 1117 --color-primary-hover: rgb(255 255 255 / 0.69); 1118 --color-primary-hover-rgb: 255 255 255; 1119 --color-border: rgb(230 230 230 / 1.0); 1120 --color-border-rgb: 230 230 230; 1121 --color-shadow: rgb(0 0 0 / 1.0); 1122 --color-shadow-rgb: 0 0 0; 1123 --color-primary-button-text: rgb(0 0 0 / 1.0); 1124 --color-primary-button-background: rgb(255 255 255 / 1.0); 1125 --color-primary-button-border: rgb(255 255 255 / 1.0); 1126 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1127 --color-primary-button-hover-background: rgb(0 0 0 / 1.0); 1128 --color-primary-button-hover-border: rgb(0 0 0 / 1.0); 1129 --color-secondary-button-text: rgb(255 255 255 / 1.0); 1130 --color-secondary-button-background: rgb(0 0 0 / 0.0); 1131 --color-secondary-button-border: rgb(255 255 255 / 1.0); 1132 --color-secondary-button-hover-text: rgb(255 255 255 / 1.0); 1133 --color-secondary-button-hover-background: rgb(255 255 255 / 0.08); 1134 --color-secondary-button-hover-border: rgb(255 255 255 / 1.0); 1135 --color-input-background: rgb(255 255 255 / 1.0); 1136 --color-input-text: rgb(0 0 0 / 0.53); 1137 --color-input-text-rgb: 0 0 0; 1138 --color-input-border: rgb(0 0 0 / 0.13); 1139 --color-input-hover-background: rgb(250 250 250 / 1.0); 1140 --color-variant-background: rgb(255 255 255 / 1.0); 1141 --color-variant-border: rgb(230 230 230 / 1.0); 1142 --color-variant-text: rgb(0 0 0 / 1.0); 1143 --color-variant-text-rgb: 0 0 0; 1144 --color-variant-hover-background: rgb(245 245 245 / 1.0); 1145 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1146 --color-variant-hover-border: rgb(230 230 230 / 1.0); 1147 --color-selected-variant-background: rgb(0 0 0 / 1.0); 1148 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1149 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1150 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1151 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 1152 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1153 1154 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1155 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1156 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1157 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1158 --font-h1--color: var(--color-foreground-heading); 1159 --font-h2--color: var(--color-foreground-heading); 1160 --font-h3--color: var(--color-foreground-heading); 1161 --font-h4--color: var(--color-foreground-heading); 1162 --font-h5--color: var(--color-foreground-heading); 1163 --font-h6--color: var(--color-foreground-heading); 1164 1165 /* Shadows */ 1166 1167 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1168 1169 1170 --shadow-blur: 20px; 1171 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1172 1173 } 1174 1175 1176 1177 1178 .color-scheme-58084d4c-a86e-4d0a-855e-a0966e5043f7 { 1179 --color-background: rgb(0 0 0 / 0.0); 1180 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1181 --color-background-rgb: 0 0 0; 1182 --opacity-5-15: 0.15; 1183 --opacity-10-25: 0.25; 1184 --opacity-35-55: 0.55; 1185 --opacity-40-60: 0.6; 1186 --opacity-30-60: 0.6; 1187 --color-foreground: rgb(0 0 0 / 1.0); 1188 --color-foreground-rgb: 0 0 0; 1189 --color-foreground-heading: rgb(0 0 0 / 1.0); 1190 --color-foreground-heading-rgb: 0 0 0; 1191 --color-primary: rgb(0 0 0 / 1.0); 1192 --color-primary-rgb: 0 0 0; 1193 --color-primary-hover: rgb(0 0 0 / 0.53); 1194 --color-primary-hover-rgb: 0 0 0; 1195 --color-border: rgb(230 230 230 / 1.0); 1196 --color-border-rgb: 230 230 230; 1197 --color-shadow: rgb(0 0 0 / 1.0); 1198 --color-shadow-rgb: 0 0 0; 1199 --color-primary-button-text: rgb(255 255 255 / 1.0); 1200 --color-primary-button-background: rgb(0 0 0 / 1.0); 1201 --color-primary-button-border: rgb(0 0 0 / 1.0); 1202 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1203 --color-primary-button-hover-background: rgb(51 51 51 / 1.0); 1204 --color-primary-button-hover-border: rgb(51 51 51 / 1.0); 1205 --color-secondary-button-text: rgb(0 0 0 / 1.0); 1206 --color-secondary-button-background: rgb(0 0 0 / 0.0); 1207 --color-secondary-button-border: rgb(0 0 0 / 1.0); 1208 --color-secondary-button-hover-text: rgb(51 51 51 / 1.0); 1209 --color-secondary-button-hover-background: rgb(250 250 250 / 1.0); 1210 --color-secondary-button-hover-border: rgb(51 51 51 / 1.0); 1211 --color-input-background: rgb(255 255 255 / 1.0); 1212 --color-input-text: rgb(0 0 0 / 0.53); 1213 --color-input-text-rgb: 0 0 0; 1214 --color-input-border: rgb(0 0 0 / 0.13); 1215 --color-input-hover-background: rgb(250 250 250 / 1.0); 1216 --color-variant-background: rgb(255 255 255 / 1.0); 1217 --color-variant-border: rgb(230 230 230 / 1.0); 1218 --color-variant-text: rgb(0 0 0 / 1.0); 1219 --color-variant-text-rgb: 0 0 0; 1220 --color-variant-hover-background: rgb(245 245 245 / 1.0); 1221 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1222 --color-variant-hover-border: rgb(230 230 230 / 1.0); 1223 --color-selected-variant-background: rgb(0 0 0 / 1.0); 1224 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1225 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1226 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1227 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 1228 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1229 1230 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1231 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1232 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1233 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1234 --font-h1--color: var(--color-foreground-heading); 1235 --font-h2--color: var(--color-foreground-heading); 1236 --font-h3--color: var(--color-foreground-heading); 1237 --font-h4--color: var(--color-foreground-heading); 1238 --font-h5--color: var(--color-foreground-heading); 1239 --font-h6--color: var(--color-foreground-heading); 1240 1241 /* Shadows */ 1242 1243 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1244 1245 1246 --shadow-blur: 20px; 1247 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1248 1249 } 1250 1251 1252 body, .color-scheme-1, .color-scheme-2, .color-scheme-3, .color-scheme-4, .color-scheme-5, .color-scheme-6, .color-scheme-58084d4c-a86e-4d0a-855e-a0966e5043f7 { 1253 color: var(--color-foreground); 1254 background-color: var(--color-background); 1255 } 1256</style>
1257<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
vendor: 1 bytes, line 1257
1257
1258<script type="importmap"> 1259 { 1260 "imports": { 1261 "@theme/overflow-list": "//www.bushnellgolf.com/cdn/shop/t/133/assets/overflow-list.js?v=103972619002749600251790611765", 1262 "@theme/product-title": "//www.bushnellgolf.com/cdn/shop/t/133/assets/product-title-truncation.js?v=171142440647363214041790611764", 1263 "@theme/component": "//www.bushnellgolf.com/cdn/shop/t/133/assets/component.js?v=2871837290084333401790611765", 1264 "@theme/dialog": "//www.bushnellgolf.com/cdn/shop/t/133/assets/dialog.js?v=98420710104516085021790611765", 1265 "@theme/events": "//www.bushnellgolf.com/cdn/shop/t/133/assets/events.js?v=81602296892335704251790611765", 1266 "@theme/focus": "//www.bushnellgolf.com/cdn/shop/t/133/assets/focus.js?v=78592351534870363931790611764", 1267 "@theme/morph": "//www.bushnellgolf.com/cdn/shop/t/133/assets/morph.js?v=28947075772200326741790611765", 1268 "@theme/paginated-list": "//www.bushnellgolf.com/cdn/shop/t/133/assets/paginated-list.js?v=128606916275786253511790611765", 1269 "@theme/performance": "//www.bushnellgolf.com/cdn/shop/t/133/assets/performance.js?v=76000260998028458051790611765", 1270 "@theme/product-form": "//www.bushnellgolf.com/cdn/shop/t/133/assets/product-form.js?v=65688817668972432781790611764", 1271 "@theme/recently-viewed-products": "//www.bushnellgolf.com/cdn/shop/t/133/assets/recently-viewed-products.js?v=39343464552543927101790611764", 1272 "@theme/scrolling": "//www.bushnellgolf.com/cdn/shop/t/133/assets/scrolling.js?v=56944800252707256061790611764", 1273 "@theme/section-renderer": "//www.bushnellgolf.com/cdn/shop/t/133/assets/section-renderer.js?v=157579674837333786411790611765", 1274 "@theme/section-hydration": "//www.bushnellgolf.com/cdn/shop/t/133/assets/section-hydration.js?v=725126219061066681790611765", 1275 "@theme/money-formatting": "//www.bushnellgolf.com/cdn/shop/t/133/assets/money-formatting.js?v=27089427827183356751790611765", 1276 "@theme/utilities": "//www.bushnellgolf.com/cdn/shop/t/133/assets/utilities.js?v=1621211302821184481790611765", 1277 "@theme/variant-picker": "//www.bushnellgolf.com/cdn/shop/t/133/assets/variant-picker.js?v=6469487693213381221790611765", 1278 "@theme/media-gallery": "//www.bushnellgolf.com/cdn/shop/t/133/assets/media-gallery.js?v=88799770645515588651790611765", 1279 "@theme/quick-add": "//www.bushnellgolf.com/cdn/shop/t/133/assets/quick-add.js?v=139210347678326180991790611764", 1280 "@theme/paginated-list-aspect-ratio": "//www.bushnellgolf.com/cdn/shop/t/133/assets/paginated-list-aspect-ratio.js?v=105612802989813080971790611765", 1281 "@theme/popover-polyfill": "//www.bushnellgolf.com/cdn/shop/t/133/assets/popover-polyfill.js?v=87956549048087295091790611765", 1282 "@theme/component-quantity-selector": "//www.bushnellgolf.com/cdn/shop/t/133/assets/component-quantity-selector.js?v=9159700773030885271790611765", 1283 "@theme/comparison-slider": "//www.bushnellgolf.com/cdn/shop/t/133/assets/comparison-slider.js?v=54290423415165392741790611765", 1284 "@theme/sticky-add-to-cart": "//www.bushnellgolf.com/cdn/shop/t/133/assets/sticky-add-to-cart.js?v=178695681353592012341790611765", 1285 "@theme/fly-to-cart": "//www.bushnellgolf.com/cdn/shop/t/133/assets/fly-to-cart.js?v=65654735866222019691790611764" 1286 } 1287 } 1288</script>
1288 1289
1290<script 1291 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/view-transitions.js?v=29934355952596568961790611765" 1292 async 1293 1294></script>
1294 1295 1296<link 1297 rel="modulepreload" 1298 href="//www.bushnellgolf.com/cdn/shop/t/133/assets/utilities.js?v=1621211302821184481790611765" 1299 fetchpriority="low" 1300> 1301<link 1302 rel="modulepreload" 1303 href="//www.bushnellgolf.com/cdn/shop/t/133/assets/component.js?v=2871837290084333401790611765" 1304 fetchpriority="low" 1305> 1306<link 1307 rel="modulepreload" 1308 href="//www.bushnellgolf.com/cdn/shop/t/133/assets/section-renderer.js?v=157579674837333786411790611765" 1309 fetchpriority="low" 1310> 1311<link 1312 rel="modulepreload" 1313 href="//www.bushnellgolf.com/cdn/shop/t/133/assets/section-hydration.js?v=725126219061066681790611765" 1314 fetchpriority="low" 1315> 1316<link 1317 rel="modulepreload" 1318 href="//www.bushnellgolf.com/cdn/shop/t/133/assets/morph.js?v=28947075772200326741790611765" 1319 fetchpriority="low" 1320> 1321 1322 1323 1324<link 1325 rel="modulepreload" 1326 href="//www.bushnellgolf.com/cdn/shop/t/133/assets/focus.js?v=78592351534870363931790611764" 1327 fetchpriority="low" 1328> 1329<link 1330 rel="modulepreload" 1331 href="//www.bushnellgolf.com/cdn/shop/t/133/assets/recently-viewed-products.js?v=39343464552543927101790611764" 1332 fetchpriority="low" 1333> 1334<link 1335 rel="modulepreload" 1336 href="//www.bushnellgolf.com/cdn/shop/t/133/assets/scrolling.js?v=56944800252707256061790611764" 1337 fetchpriority="low" 1338> 1339<link 1340 rel="modulepreload" 1341 href="//www.bushnellgolf.com/cdn/shop/t/133/assets/events.js?v=81602296892335704251790611765" 1342 fetchpriority="low" 1343>
1344<script 1345 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/popover-polyfill.js?v=87956549048087295091790611765" 1346 type="module" 1347 fetchpriority="low" 1348></script>
vendor: 2 bytes, line 1348
1348
1349<script 1350 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/overflow-list.js?v=103972619002749600251790611765" 1351 type="module" 1352 fetchpriority="low" 1353></script>
vendor: 2 bytes, line 1353
1353
1354<script 1355 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/quick-add.js?v=139210347678326180991790611764" 1356 type="module" 1357 fetchpriority="low" 1358></script>
1358 1359 1360
1360<script 1361 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/cart-discount.js?v=138861295263764935711790611765" 1362 type="module" 1363 fetchpriority="low" 1364 ></script>
1364 1365 1366
1367<script 1368 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/dialog.js?v=98420710104516085021790611765" 1369 type="module" 1370 fetchpriority="low" 1371></script>
vendor: 2 bytes, line 1371
1371
1372<script 1373 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/variant-picker.js?v=6469487693213381221790611765" 1374 type="module" 1375 fetchpriority="low" 1376></script>
vendor: 2 bytes, line 1376
1376
1377<script 1378 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/product-card.js?v=177636412167985402681790611764" 1379 type="module" 1380 fetchpriority="low" 1381></script>
vendor: 2 bytes, line 1381
1381
1382<script 1383 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/product-form.js?v=65688817668972432781790611764" 1384 type="module" 1385 fetchpriority="low" 1386></script>
vendor: 2 bytes, line 1386
1386
1387<script 1388 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/fly-to-cart.js?v=65654735866222019691790611764" 1389 type="module" 1390 fetchpriority="low" 1391></script>
vendor: 2 bytes, line 1391
1391
1392<script 1393 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/accordion-custom.js?v=109161695428116401221790611766" 1394 type="module" 1395 fetchpriority="low" 1396></script>
vendor: 2 bytes, line 1396
1396
1397<script 1398 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/media.js?v=125180963674196456411790611765" 1399 type="module" 1400 fetchpriority="low" 1401></script>
vendor: 2 bytes, line 1401
1401
1402<script 1403 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/product-price.js?v=56949708730051287511790611764" 1404 type="module" 1405 fetchpriority="low" 1406></script>
vendor: 2 bytes, line 1406
1406
1407<script 1408 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/product-sku.js?v=12707995544342967231790611764" 1409 type="module" 1410 fetchpriority="low" 1411></script>
vendor: 2 bytes, line 1411
1411
1412<script 1413 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/product-title-truncation.js?v=171142440647363214041790611764" 1414 type="module" 1415 fetchpriority="low" 1416></script>
vendor: 2 bytes, line 1416
1416
1417<script 1418 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/product-inventory.js?v=97482887429145606201790611764" 1419 type="module" 1420 fetchpriority="low" 1421></script>
vendor: 2 bytes, line 1421
1421
1422<script 1423 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/show-more.js?v=70689597587884376891790611765" 1424 type="module" 1425 fetchpriority="low" 1426></script>
vendor: 2 bytes, line 1426
1426
1427<script 1428 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/slideshow.js?v=135511145289867776151790611765" 1429 type="module" 1430 fetchpriority="low" 1431></script>
vendor: 2 bytes, line 1431
1431
1432<script 1433 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/layered-slideshow.js?v=150049425201492448951790611765" 1434 type="module" 1435 fetchpriority="low" 1436></script>
vendor: 2 bytes, line 1436
1436
1437<script 1438 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/anchored-popover.js?v=168929214168724352541790611766" 1439 type="module" 1440 fetchpriority="low" 1441></script>
vendor: 2 bytes, line 1441
1441
1442<script 1443 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/floating-panel.js?v=134624273071112507821790611764" 1444 type="module" 1445 fetchpriority="low" 1446></script>
vendor: 2 bytes, line 1446
1446
1447<script 1448 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/video-background.js?v=125155869468546408071790611765" 1449 type="module" 1450 fetchpriority="low" 1451></script>
vendor: 2 bytes, line 1451
1451
1452<script 1453 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/component-quantity-selector.js?v=9159700773030885271790611765" 1454 type="module" 1455 fetchpriority="low" 1456></script>
vendor: 2 bytes, line 1456
1456
1457<script 1458 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/media-gallery.js?v=88799770645515588651790611765" 1459 type="module" 1460 fetchpriority="low" 1461></script>
vendor: 2 bytes, line 1461
1461
1462<script 1463 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/rte-formatter.js?v=50196128441411127351790611764" 1464 type="module" 1465 fetchpriority="low" 1466></script>
vendor: 2 bytes, line 1466
1466
1467<script 1468 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/volume-pricing.js?v=130575904330974358741790611765" 1469 type="module" 1470 fetchpriority="low" 1471></script>
vendor: 2 bytes, line 1471
1471
1472<script 1473 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/price-per-item.js?v=40571194438189935441790611764" 1474 type="module" 1475 fetchpriority="low" 1476></script>
vendor: 2 bytes, line 1476
1476
1477<script 1478 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/volume-pricing-info.js?v=16866589937000989531790611765" 1479 type="module" 1480 fetchpriority="low" 1481></script>
1481 1482 1483 1484 1485 1486
1487<script 1488 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/auto-close-details.js?v=46360069785536700841790611766" 1489 defer="defer" 1490></script>
1490 1491
1492<script> 1493 const Theme = { 1494 translations: { 1495 placeholder_image: `Placeholder image`, 1496 added: `Added`, 1497 recipient_form_fields_visible: `Recipient form fields are now visible`, 1498 recipient_form_fields_hidden: `Recipient form fields are now hidden`, 1499 recipient_form_error: `There was an error with the form submission`, 1500 items_added_to_cart_one: `1 item added to cart`, 1501 items_added_to_cart_other: `{{ count }} items added to cart`, 1502 }, 1503 routes: { 1504 cart_add_url: '/cart/add.js', 1505 cart_change_url: '/cart/change', 1506 cart_update_url: '/cart/update', 1507 cart_url: '/cart', 1508 predictive_search_url: '/search/suggest', 1509 search_url: '/search', 1510 }, 1511 template: { 1512 name: 'page.contact.bushnell', 1513 }, 1514 }; 1515</script>
1515 1516<link rel="preload" as="font" href="//www.bushnellgolf.com/cdn/shop/t/133/assets/acumin-pro.woff2?v=102240913865752762161790611765" type="font/woff2" crossorigin><link href="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell.css?v=28925328111356423891790611765" rel="stylesheet" type="text/css" media="all" /> 1517 <link href="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell-buy-now-patch.css?v=85352361508442732821790611764" rel="stylesheet" type="text/css" media="all" /> 1518 <link href="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell-cro-patch.css?v=162323756666457044951790611765" rel="stylesheet" type="text/css" media="all" /> 1519 <link href="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell-fitcheck.css?v=97541241949286130371790611765" rel="stylesheet" type="text/css" media="all" />�<link rel="preload" as="font" href="//www.bushnellgolf.com/cdn/shop/t/133/assets/industry-medium.woff2?v=132185208873765463631790611765" type="font/woff2" crossorigin fetchpriority="low"> 1520<link rel="preload" as="font" href="//www.bushnellgolf.com/cdn/shop/t/133/assets/industry-bold.woff2?v=110081505489078479111790611765" type="font/woff2" crossorigin> 1521 1522<style> 1523 @font-face { 1524 font-family: 'Acumin Pro'; 1525 src: url('//www.bushnellgolf.com/cdn/shop/t/133/assets/acumin-pro.woff2?v=102240913865752762161790611765') format('woff2'); 1526 font-weight: 400; 1527 font-style: normal; 1528 font-display: swap; 1529 } 1530 1531 @font-face { 1532 font-family: 'Acumin Pro Medium'; 1533 src: url('//www.bushnellgolf.com/cdn/shop/t/133/assets/acumin-pro-medium.woff2?v=90873278444693665241790611765') format('woff2'); 1534 font-weight: 500; 1535 font-style: normal; 1536 font-display: swap; 1537 } 1538 1539 @font-face { 1540 font-family: 'Acumin Pro Bold'; 1541 src: url('//www.bushnellgolf.com/cdn/shop/t/133/assets/acumin-pro-bold.woff2?v=16147239003615737331790611765') format('woff2'); 1542 font-weight: 700; 1543 font-style: normal; 1544 font-display: swap; 1545 } 1546 1547 @font-face { 1548 font-family: 'Industry Light'; 1549 src: url('//www.bushnellgolf.com/cdn/shop/t/133/assets/industry-light.woff2?v=45057905669618413361790611764') format('woff2'); 1550 font-weight: 300; 1551 font-style: normal; 1552 font-display: swap; 1553 } 1554 @font-face { 1555 font-family: 'Industry'; 1556 src: url('//www.bushnellgolf.com/cdn/shop/t/133/assets/industry-medium.woff2?v=132185208873765463631790611765') format('woff2'); 1557 font-weight: 500; 1558 font-style: normal; 1559 font-display: swap; 1560 } 1561 @font-face { 1562 font-family: 'Industry Medium'; 1563 src: url('//www.bushnellgolf.com/cdn/shop/t/133/assets/industry-medium.woff2?v=132185208873765463631790611765') format('woff2'); 1564 font-weight: 500; 1565 font-style: normal; 1566 font-display: swap; 1567 } 1568 1569 @font-face { 1570 font-family: 'Industry Bold'; 1571 src: url('//www.bushnellgolf.com/cdn/shop/t/133/assets/industry-bold.woff2?v=110081505489078479111790611765') format('woff2'); 1572 font-weight: 700; 1573 font-style: normal; 1574 font-display: swap; 1575 } 1576 1577 @font-face { 1578 font-family: 'Industry'; 1579 src: url('//www.bushnellgolf.com/cdn/shop/t/133/assets/industry-medium.woff2?v=132185208873765463631790611765') format('woff2'); 1580 font-weight: 500; 1581 font-style: normal; 1582 font-display: swap; 1583 } 1584 1585 1586 1587 :root { 1588 /* ââ Per-heading Shopify theme CSS variables ââ */ 1589 --font-h1--family: 'Industry Bold', sans-serif; 1590 --font-h2--family: 'Industry Bold', sans-serif; 1591 --font-h3--family: 'Industry Bold', sans-serif; 1592 --font-h4--family: 'Industry Medium', sans-serif; 1593 --font-h5--family: 'Industry Medium', sans-serif; 1594 --font-h6--family: 'Industry Medium', sans-serif; 1595 1596 /* ââ General heading/body Shopify variables ââ */ 1597 --font-heading--family: 'Industry Bold', sans-serif; 1598 --font-subheading--family: 'Industry Bold', sans-serif; 1599 --font-body--family: 'Acumin Pro', sans-serif; 1600 --font-paragraph--family: 'Acumin Pro', sans-serif; 1601 --font-accent--family: 'Acumin Pro', sans-serif; 1602 1603 /* ââ Bushnell UI kit variables (bushnell.css) ââ */ 1604 --font-display: 'Industry Bold', sans-serif; 1605 --font-ui: 'Industry Bold', sans-serif; 1606 --font-body: 'Acumin Pro', sans-serif; 1607 } 1608 1609 /* ââ Direct element overrides for full coverage ââ */ 1610 h1 { font-family: 'Industry Bold', sans-serif; } 1611 h2 { font-family: 'Industry Bold', sans-serif; } 1612 h3 { font-family: 'Industry Bold', sans-serif; } 1613 h4 { font-family: 'Industry Medium', sans-serif; } 1614 h5 { font-family: 'Industry Medium', sans-serif; } 1615 h6 { font-family: 'Industry Medium', sans-serif; } 1616 body, p { font-family: 'Acumin Pro', sans-serif; } 1617</style> 1618 1619
1619<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
1619<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/94598496440/digital_wallets/dialog"> 1620<meta id="in-context-paypal-metadata" data-shop-id="94598496440" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> 1621<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
1621<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=4716069048"></script>
1621 1622<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
1623<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=4716069048&shop_id=94598496440" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1623
1623
1624<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":94598496440,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/94598496440","merchantName":"Bushnell Golf","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Bushnell Golf","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 1624
1624
1625<script id="shopify-features" type="application/json">{"accessToken":"c0757fe088970775118d58865578e6d4","betas":["rich-media-storefront-analytics"],"domain":"www.bushnellgolf.com","predictiveSearch":true,"shopId":94598496440,"locale":"en"}</script>
vendor: 1 bytes, line 1625
1625
1626<script>var Shopify = Shopify || {}; 1627Shopify.shop = "1zkvfh-xt.myshopify.com"; 1628Shopify.locale = "en"; 1629Shopify.currency = {"active":"USD","rate":"1.0"}; 1630Shopify.country = "US"; 1631Shopify.theme = {"name":"09-28-2026-foresight-plus-copy-update","id":191993970872,"schema_name":"Horizon","schema_version":"3.4.0","theme_store_id":null,"role":"main"}; 1632Shopify.theme.handle = "null"; 1633Shopify.theme.style = {"id":null,"handle":null}; 1634Shopify.cdnHost = "www.bushnellgolf.com/cdn"; 1635Shopify.routes = Shopify.routes || {}; 1636Shopify.routes.root = "/"; 1637Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 1638Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 1639Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 1640Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 1640
1640
1641<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 1641
1641
1642<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 1642
1642
1643<script> 1644 window.ShopifyPay = window.ShopifyPay || {}; 1645 window.ShopifyPay.apiHost = "shop.app\/pay"; 1646 window.ShopifyPay.redirectState = null; 1647</script>
vendor: 1 bytes, line 1647
1647
1648<script> 1649 window.Shopify = window.Shopify || {}; 1650 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 1651 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 1652 window.Shopify.SignInWithShop.eligible = true; 1653</script>
vendor: 1 bytes, line 1653
1653
1654<script id="shop-js-analytics" type="application/json">{"pageType":"page"}</script>
vendor: 1 bytes, line 1654
1654
1655<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 1655
1655
1656<script type="module"> 1657 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 1658 1659 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 1660 1661</script>
vendor: 1 bytes, line 1661
1661
1662<script> 1663 window.Shopify = window.Shopify || {}; 1664 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 1665 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"]}; 1666</script>
vendor: 1 bytes, line 1666
1666
1667<script>(function() { 1668 var isLoaded = false; 1669 function asyncLoad() { 1670 if (isLoaded) return; 1671 isLoaded = true; 1672 var urls = ["\/\/cdn.shopify.com\/proxy\/97cd65ac45fbe7fdf6a885e2ab658a9e3163e2b1e786e17a38330ef45486114f\/cdn-scripts.signifyd.com\/shopify\/script-tag.js?shop=1zkvfh-xt.myshopify.com\u0026sp-cache-control=cHVibGljLCBtYXgtYWdlPTkwMA"]; 1673 for (var i = 0; i < urls.length; i++) { 1674 var s = document.createElement('script'); 1675 s.type = 'text/javascript'; 1676 s.async = true; 1677 s.src = urls[i]; 1678 var x = document.getElementsByTagName('script')[0]; 1679 x.parentNode.insertBefore(s, x); 1680 } 1681 }; 1682 if(window.attachEvent) { 1683 window.attachEvent('onload', asyncLoad); 1684 } else { 1685 window.addEventListener('load', asyncLoad, false); 1686 } 1687})();</script>
vendor: 1 bytes, line 1687
1687
1688<script id="__st">var __st={"a":94598496440,"offset":-25200,"reqid":"e00e36e2-321e-490d-b594-771422cf29e3-1790853879","pageurl":"www.bushnellgolf.com\/pages\/contact","s":"pages-162554970296","u":"31a8b96e1a29","p":"page","rtyp":"page","rid":162554970296};</script>
vendor: 1 bytes, line 1688
1688
1689<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 1689
1689
1690<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 1690
1690
1691<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//www.bushnellgolf.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1691
1691
1692<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 = "//www.bushnellgolf.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
1692<script crossorigin="anonymous" defer="defer" src="//www.bushnellgolf.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 1692
1692
1693<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 1693
1693
1694<script> 1695 window.Shopify = window.Shopify || {}; 1696 window.Shopify.MCP = window.Shopify.MCP || {}; 1697 window.Shopify.MCP.enabled = true; 1698 window.Shopify.MCP.shop = "1zkvfh-xt.myshopify.com"; 1699 window.Shopify.MCP.mcpEndpoint = "https:\/\/www.bushnellgolf.com\/api\/mcp"; 1700 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"]}}]; 1701</script>
vendor: 1 bytes, line 1701
1701
1702<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("\/\/www.bushnellgolf.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 1703</script>
vendor: 1 bytes, line 1703
1703
1704<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://www.bushnellgolf.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 1705</script>
vendor: 1 bytes, line 1705
1705
1706<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 1707 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); 1708</script>
vendor: 1 bytes, line 1708
1708
1709<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})}})); 1710</script>
1710 1711<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://www.bushnellgolf.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 1712<style id="shopify-accelerated-checkout-cart"> 1713 #shopify-buyer-consent { 1714 margin-top: 1em; 1715 display: inline-block; 1716 width: 100%; 1717} 1718 1719#shopify-buyer-consent.hidden { 1720 display: none; 1721} 1722 1723#shopify-subscription-policy-button { 1724 background: none; 1725 border: none; 1726 padding: 0; 1727 text-decoration: underline; 1728 font-size: inherit; 1729 cursor: pointer; 1730} 1731 1732#shopify-subscription-policy-button::before { 1733 box-shadow: none; 1734} 1735 1736 </style> 1737<link rel="stylesheet" media="screen" href="//www.bushnellgolf.com/cdn/shop/t/133/compiled_assets/styles.css?v=160800271737863426111790611776">
1738<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
1738 1739 1740 1741 1742 1743 1744 1745
1745<script type="text/javascript"> 1746 1747 window.__shgMoneyFormat = window.__shgMoneyFormat || {"USD":{"currency":"USD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","}}; 1748 1749 window.__shgCurrentCurrencyCode = window.__shgCurrentCurrencyCode || { 1750 currency: "USD", 1751 currency_symbol: "$", 1752 decimal_separator: ".", 1753 thousands_separator: ",", 1754 decimal_places: 2, 1755 currency_symbol_location: "left" 1756 }; 1757 </script>
1757 1758 1759 1760 1761 1762 1763
1764<script type="text/javascript"> 1765 1766 window.SHG_CUSTOMER = null; 1767 1768</script>
1768 1769 1770 1771 1772 1773 1774 1775 1776 <!-- Extend -- Load Extend SDK Configuration script --> 1777 <!-- Extend - Add necessary SDK script tags and configure the store -->
1778<script src='https://sdk.helloextend.com/extend-sdk-client/v1/extend-sdk-client.min.js' defer='defer'></script>
vendor: 2 bytes, line 1778
1778
1779<script src='https://sdk.helloextend.com/extend-sdk-client-shopify-addon/v1/extend-sdk-client-shopify-addon.min.js' defer='defer'></script>
1779 1780
1781<script> 1782 window.addEventListener('DOMContentLoaded', function () { 1783 // Set store ID 1784 const storeId = '1bb870ec-2d72-437e-94ce-7159cce5aeae'; 1785 // Set environment (production, demo, or development) 1786 const env = 'production'; 1787 1788 window.Extend.config({ storeId: storeId, environment: env }); 1789 1790 // Only sets window variables if Extend and ExtendShopify is defined 1791 if (window.Extend && window.ExtendShopify) { 1792 // Contains window variables used in integration 1793 window.Extend.integration = {}; 1794 1795 // Configurables - Start 1796 // Set currency required to display offers (USD or CAD) 1797 window.Extend.integration.currency = 'USD'; 1798 // PDP Visible Offer 1799 window.Extend.integration.pdpOffer = true; 1800 // PDP Modal Offer 1801 window.Extend.integration.pdpModalOffer = false; 1802 // PDP Offer Properties 1803 window.Extend.integration.offerProperties = {}; 1804 // Cart Offers 1805 window.Extend.integration.cartOffer = true; 1806 // Sidecart Offers 1807 window.Extend.integration.sidecartOffer = true; 1808 // Cart Balancing 1809 window.Extend.integration.cartBalancing = true; 1810 // Aftermarket Modal 1811 window.Extend.integration.aftermarketModal = true; 1812 // ATC Modal Offer 1813 window.Extend.integration.atcOffer = true; 1814 // Quickview visible offer 1815 window.Extend.integration.quickviewOffer = true; 1816 // Quickview modal offer 1817 window.Extend.integration.quickviewModalOffer = true; 1818 // Cart SP 1819 window.Extend.integration.cartSP = false; 1820 // Configurables - End 1821 1822 // Aftermarket Code 1823 if (Shopify && Shopify.currency && Shopify.currency.active === Extend.integration.currency && Extend.integration.aftermarketModal) { 1824 try { 1825 // Get params from URL 1826 const params = (new URL(document.location)).searchParams; 1827 1828 // Check if leadToken or leadtoken is in the URL 1829 let leadToken = params.get('leadToken') 1830 ? params.get('leadToken') 1831 : params.get('leadtoken'); 1832 1833 if (leadToken) { 1834 Extend.aftermarketModal.open({ 1835 leadToken: leadToken, 1836 onClose: function (plan, product, quantity) { 1837 if (plan && product) { 1838 ExtendShopify.addPlanToCart({ 1839 plan: plan, 1840 product: product, 1841 leadToken: leadToken, 1842 quantity: quantity || 1 1843 }, function () { 1844 location = '/cart' 1845 }) 1846 } 1847 } 1848 }); 1849 } 1850 } catch (error) { 1851 console.error("EXTEND: " + error); 1852 } 1853 } 1854 } 1855 }, { once: true }); 1856</script>
1856 1857 1858<!-- Optional --> 1859<!-- Extend - Render cart shipping protection --> 1860 1861<!-- Extend - Render checkout plus --> 1862 1863 1864<!-- Extend - Render product page -->
1865<script> 1866 1867 // Run scripts on DOMContentLoaded to avoid affecting site load time 1868 window.addEventListener('DOMContentLoaded', function () { 1869 // Checks if Extend lives in the window and the active currency is USD before showing Extend offers 1870 if (Extend && ExtendShopify && Shopify && Shopify.currency && Shopify.currency.active === Extend.integration.currency && meta.page.pageType == 'product') { 1871 1872 /************************/ 1873 /* Initial Variables */ 1874 /************************/ 1875 const productForm = document.querySelector('form[action="/cart/add"]'); // Change this to the product form element 1876 const addToCartButton = productForm.querySelector('.bpdp-atc-btn'); // Change this to the Add-To-Cart element 1877 const dispatchSideCart = true; // Set to true if a sidecart opens after adding to cart via pdp 1878 const productCategory = (meta && meta.product) ? meta.product.type : null; // Grabs product category from meta object, works on most themes 1879 1880 // Handles creating and prepending Extend offer div 1881 const extendOffer = document.createElement('div'); 1882 if (!Extend.integration.pdpOffer) extendOffer.style.display = 'none'; 1883 extendOffer.className = 'extend-offer'; 1884 addToCartButton.before(extendOffer); 1885 1886 /************************/ 1887 /* initProductOffer */ 1888 /************************/ 1889 // Initializes product offers and handles ATC button functionality for the main PDP ATC 1890 async function initProductOffer() { 1891 try { 1892 1893 // Fail safes 1894 if (!productForm || !addToCartButton || !extendOffer) { 1895 throw new Error("Exiting - missing productForm, addToCartButton, or extendOffer") 1896 } 1897 1898 // Disables ATC if product is Extend 1899 if (meta && meta.product && meta.product.vendor === 'Extend') addToCartButton.disabled = true; 1900 1901 // Grabs the variantId from the productForm and renders the initial offers for it 1902 let variantId = productForm.id.value; 1903 1904 // Grabs the product price from the metadata, works on most themes 1905 let productPrice = (meta && meta.product && meta.product.variants) ? parseInt(meta.product.variants.filter(variant => variant.id.toString() === variantId.toString())[0].price) : null; 1906 1907 // Saves the offer properties to an easily accessible window object that is initialized in the config 1908 Extend.integration.offerProperties = {variant: variantId, category: productCategory, price: productPrice} 1909 1910 // Fetches bundle components, empty array if non-bundle 1911 const { components } = await ExtendShopify.getBundleComponents({ 1912 variantId: `gid://shopify/ProductVariant/${variantId}` 1913 }) || {}; 1914 1915 // Renders bundle offer or regular offer as needed 1916 Extend.buttons.render(extendOffer, components?.length > 0 1917 ? { referenceId: variantId, products: components } 1918 : { referenceId: variantId, price: productPrice, category: productCategory } 1919 ); 1920 1921 // Listens for changes to the productForm and sets the activeProduct for extend via variantID 1922 productForm.addEventListener('change', async function () { 1923 variantId = productForm.id.value; 1924 productPrice = meta?.product?.variants?.find(v => v.id.toString() === variantId.toString())?.price ? parseInt(meta.product.variants.find(v => v.id.toString() === variantId.toString()).price) : null; 1925 const { components } = await ExtendShopify.getBundleComponents({ 1926 variantId: `gid://shopify/ProductVariant/${variantId}` 1927 }) || {}; 1928 if (!variantId) return; 1929 Extend.setActiveProduct(extendOffer, components?.length > 0 1930 ? { referenceId: variantId, products: components } 1931 : { referenceId: variantId, price: productPrice, category: productCategory } 1932 ); 1933 }); 1934 1935 document.querySelector('button.header-actions__action').addEventListener('click', function () { 1936 console.log("Extend: click listener"); 1937 setTimeout(function () { window.dispatchEvent(new Event('resize')) }, 500) 1938 }) 1939 1940 1941 // Immediate loading feedback on the ATC button (uses the PDP's own 1942 // .bpdp-atc-btn.is-loading spinner styles) so there's instant feedback 1943 // on click for BOTH flows: plan selected (Extend takes a moment to add 1944 // the plan) and no plan (Extend opens its upsell popup). 1945 function setAtcLoading(on) { 1946 if (!addToCartButton) return; 1947 if (on) { 1948 try { 1949 var c = getComputedStyle(addToCartButton).color; 1950 if (!c || c === 'transparent' || c.indexOf('rgba(0, 0, 0, 0)') !== -1) c = '#1c1c1c'; 1951 addToCartButton.style.setProperty('--bpdp-spin', c); 1952 } catch (e) {} 1953 addToCartButton.classList.add('is-loading'); 1954 } else { 1955 addToCartButton.classList.remove('is-loading'); 1956 addToCartButton.style.removeProperty('--bpdp-spin'); 1957 } 1958 } 1959 1960 // click simulation handling add to cart 1961 function handleAddToCart(e) { 1962 e.preventDefault(); 1963 e.stopImmediatePropagation(); 1964 1965 // Instant feedback for both flows. 1966 setAtcLoading(true); 1967 clearTimeout(window.__bnAtcLoaderT); 1968 window.__bnAtcLoaderT = setTimeout(function () { setAtcLoading(false); }, 12000); 1969 1970 const quantityEl = productForm.querySelector('[name="quantity"]'); 1971 const quantity = quantityEl && quantityEl.value ? quantityEl.value : 1; 1972 1973 ExtendShopify.handleAddToCart(extendOffer, { 1974 quantity: quantity, 1975 modal: Extend.integration.pdpModalOffer, 1976 done: function () { 1977 // keep the loader on through the actual add-to-cart 1978 setAtcLoading(true); 1979 // remove default click listener 1980 addToCartButton.removeEventListener('click', handleAddToCart, true); 1981 // click atc button 1982 addToCartButton.click(); 1983 // add default click listener back 1984 addToCartButton.addEventListener('click', handleAddToCart, true); 1985 // If variable set to true, dispatches Extend side cart integration to run after adding to cart via pdp
1986 if (dispatchSideCart) window.setTimeout(function () { window.dispatchEvent(new Event('refreshAjaxSideCart')) }, 1000) 1987 } 1988 }); 1989 } 1990 // run handleCaddtoCart when we click ATC, capturing event 1991 addToCartButton.addEventListener('click', handleAddToCart, true); 1992 1993 // The sticky bar's Add-to-Cart submits the form directly, so it bypasses 1994 // the Extend flow (no protection popup). Route its click through the main 1995 // ATC so Extend runs (popup / plan add) for the sticky button too. 1996 const stickyAtc = document.querySelector('.bpdp-sticky__atc'); 1997 if (stickyAtc) { 1998 stickyAtc.addEventListener('click', function (e) { 1999 e.preventDefault(); 2000 e.stopImmediatePropagation(); 2001 // mirror the loading spinner on the sticky button for feedback 2002 try { stickyAtc.style.setProperty('--bpdp-spin', getComputedStyle(stickyAtc).color); } catch (err) {} 2003 stickyAtc.classList.add('is-loading'); 2004 clearTimeout(window.__bnStickyAtcT); 2005 window.__bnStickyAtcT = setTimeout(function () { stickyAtc.classList.remove('is-loading'); }, 12000); 2006 // trigger the main ATC's Extend handler (shows popup / adds plan) 2007 addToCartButton.click(); 2008 }, true); 2009 // clear the sticky spinner once the cart updates 2010 document.addEventListener('cart:update', function () { stickyAtc.classList.remove('is-loading'); }); 2011 } 2012 } catch (error) { 2013 console.error("EXTEND:", error) 2014 } 2015 } 2016 // Initial product offer render 2017 if (!Extend.buttons.instance(extendOffer)) { 2018 initProductOffer(); 2019 } 2020 } 2021 }, { once: true }); 2022</script>
2022 2023 2024<style> 2025 .extend-offer { 2026 margin: 0 !important; 2027 } 2028</style> 2029<!-- Extend - Render cart -->
2030<script> 2031 2032 // run scripts on DOMContentLoaded to avoid affecting site load time 2033 window.addEventListener('DOMContentLoaded', function () { 2034 2035 // Only run ajax integration if Extend and ExtendShopify is defined, and the currency is set to USD 2036 if (!Extend || !ExtendShopify || !Shopify || !Shopify.currency || Shopify.currency.active !== Extend.integration.currency) { 2037 return; 2038 } 2039 2040 // Checks url if page is main cart 2041 const isMainCart = location.pathname.includes('/cart'); 2042 2043 if (!isMainCart && !window.Extend.integration.sidecartOffer) return; 2044 2045 // store value to know if script initialized already 2046 let init = false; 2047 2048 /*****************************************/ 2049 /* Global Variables - THEME SPECIFIC */ 2050 /*****************************************/ 2051 let cartRowItem, cartRowItemTitle, cartRowItemImage, cartRowItemQuantity, warrantyContainer, warrantyOriginalMeta, metadataContainer; 2052 if (isMainCart) { 2053 // Main cart variables 2054 cartRowItem = '.bgc-item-row'; // This is the container element for each item in the cart 2055 cartRowItemImage = '.bgc-item-img a'; // This is the product image or image anchor element 2056 cartRowItemTitle = '.bgc-item-name'; // This is the title anchor element for the product 2057 cartRowItemQuantity = '.bgc-qty span'; // This is the input element containing the product quantity 2058 warrantyOriginalMeta = '.bgc-item-variant'; // Each warranty metadata item we want to remove. 2059 warrantyContainer = '.bgc-item-name'; // This is the container where the offer will be appended 2060 metadataContainer = '.bgc-item-name'; // This is where warranty metadata will be appended (Product and Term) 2061 } else { 2062 // Side cart variables 2063 cartRowItem = '.cart-items__table-row--full-width-variants'; // This is the container element for each item in the cart 2064 cartRowItemImage = '.cart-items__media-container'; // This is the product image or image anchor element 2065 cartRowItemTitle = '.cart-items__title'; // This is the title anchor element for the product 2066 cartRowItemQuantity = 'input'; // This is the input element containing the product quantity 2067 warrantyOriginalMeta = '.cart-items__variants-wrapper'; // Each warranty metadata item we want to remove. 2068 warrantyContainer = '.cart-items__product-info'; // This is the container where the offer will be appended 2069 metadataContainer = '.cart-items__product-info'; // This is where warranty metadata will be appended (Product and Term) 2070 } 2071 2072 // Add quantity wrapper selector to disable use of quantity selector on Extend items, ignored if empty string 2073 const quantityWrapper = isMainCart ? '.bgc-qty' : '.quantity-selector'; 2074 2075 const offerClass = !isMainCart ? 'extend-side-cart-offer' : 'extend-cart-offer'; // This is the class that will be assigned to each Extend offer 2076 const cartEvent = !isMainCart ? 'refreshAjaxSideCart' : 'refreshAjaxCart'; 2077 const regEx = /\d+$/; 2078 let localCart = {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}; // Shopify Cart Object on initial load 2079 2080 // Fail safe for cart 2081 if (!localCart) { 2082 console.error("EXTEND: Exiting - localCart unavailable") 2083 return false; 2084 } 2085 2086 /**************************************/ 2087 /* refreshCart - THEME SPECIFIC */ 2088 /**************************************/ 2089 // Refresh the cart (hard refresh by default) 2090 async function refreshCart(cart) { 2091 if (isMainCart) { 2092 // Main cart specific refresh 2093 location.reload(); 2094 } else { 2095 // Sidecart specific refresh 2096 const res = await fetch('/cart.js'); 2097 localCart = await res.json(); 2098 2099 const cartItemsEl = document.querySelector('cart-items-component[data-drawer]'); 2100 if (!cartItemsEl) return; 2101 const sectionId = cartItemsEl.dataset.sectionId; 2102 const sectionsRes = await fetch(`${window.location.pathname}?sections=${sectionId}`); 2103 const sections = await sectionsRes.json(); 2104 document.dispatchEvent(new CustomEvent('cart:update', { 2105 bubbles: true, 2106 detail: { data: { sections } } 2107 })); 2108 await new Promise(resolve => setTimeout(resolve, 300)); 2109 2110 handleStyling(); 2111 //location.reload(); 2112 } 2113 } 2114 2115 /* Full-screen loader shown while a protection plan is being added to the cart. */ 2116 function showExtendLoader() { 2117 if (document.getElementById('bn-extend-loader')) return; 2118 const o = document.createElement('div'); 2119 o.id = 'bn-extend-loader'; 2120 o.setAttribute('style', 'position:fixed;inset:0;z-index:2147483647;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,0.45);'); 2121 o.innerHTML = '<div style="width:46px;height:46px;border:4px solid rgba(255,255,255,0.35);border-top-color:#fff;border-radius:50%;animation:bn-extend-spin 0.7s linear infinite;"></div>'; 2122 document.body.appendChild(o); 2123 } 2124 function hideExtendLoader() { 2125 const o = document.getElementById('bn-extend-loader'); 2126 if (o) o.remove(); 2127 } 2128 /* Reopen the cart drawer (used after a plan is added, since we close it when the modal opens). */ 2129 function openCartDrawer() { 2130 const drawer = document.querySelector('cart-drawer-component'); 2131 if (!drawer) return; 2132 try { if (typeof drawer.open === 'function') { drawer.open(); return; } } catch (e) {} 2133 const trigger = document.querySelector('[data-testid="cart-drawer-trigger"]') || 2134 document.querySelector('.header-actions__cart-icon, a[href$="/cart"]'); 2135 if (trigger) trigger.click(); 2136 } 2137 /* Called from onAddToCart: show loader, then after the cart refreshes, reopen the drawer. */ 2138 function afterPlanAdded() { 2139 Promise.resolve(refreshCart()).then(function () { 2140 hideExtendLoader(); 2141 if (!isMainCart) setTimeout(openCartDrawer, 150); 2142 }).catch(function () { hideExtendLoader(); }); 2143 } 2144 2145 function renderCartOffer(el, variantId, quantity, index) { 2146 // Grabs the product category and price from the current item metadata 2147 let productCategory = localCart.items[index].product_type; 2148 let productPrice = localCart.items[index].price; 2149 2150 2151 if (ExtendShopify.warrantyAlreadyInCart(parseInt(variantId), localCart.items) || ExtendShopify.warrantyAlreadyInCart(variantId.toString(), localCart.items)) { 2152 return; 2153 } else { 2154 2155 // Return if this is a cart snippet and cart offers are disabled 2156 if (isMainCart && !Extend.integration.cartOffer) return; 2157 // Return if this is a sidecart snippet and sidecart offers are disabled 2158 if (!isMainCart && !Extend.integration.sidecartOffer) return; 2159 2160 // Bundle logic 2161 2162 2163 // Gather bundle components 2164 //const bundleComponents = await getBundleComponents(variantId) 2165 let isBundle = false;
2166 //if (bundleComponents && bundleComponents.components && bundleComponents.components.length > 0) isBundle = true; 2167 // Renders Extend offer 2168 if (!isBundle) { 2169 // Render all other buttons 2170 Extend.buttons.renderSimpleOffer(el, { 2171 referenceId: variantId, 2172 price: productPrice, 2173 category: productCategory, 2174 onAddToCart: function (options) { 2175 if (!isMainCart) showExtendLoader(); 2176 ExtendShopify.addPlanToCart({ 2177 plan: options.plan, 2178 product: options.product, 2179 quantity: quantity 2180 }, function (err) { 2181 // An error occurred 2182 if (err) { 2183 hideExtendLoader(); 2184 throw new Error({ "Exiting - Error in onAddToCart": error }); 2185 } else { 2186 afterPlanAdded(); 2187 } 2188 }); 2189 } 2190 }); 2191 } else { 2192 // Render all button offer button 2193 Extend.buttons.renderSimpleOffer(el, { 2194 referenceId: variantId, 2195 products: bundleComponents.components, 2196 onAddToCart: function (options) { 2197 if (!isMainCart) showExtendLoader(); 2198 ExtendShopify.addPlanToCart({ 2199 plan: options.plan, 2200 product: options.product, 2201 products: options.products, 2202 quantity: quantity 2203 }, function (err) { 2204 // An error occurred 2205 if (err) { 2206 hideExtendLoader(); 2207 throw new Error({ "Exiting - Error in onAddToCart": error }); 2208 } else { 2209 afterPlanAdded(); 2210 } 2211 }); 2212 } 2213 }); 2214 } 2215 } 2216 } 2217 2218 /***********************/ 2219 /* createElement */ 2220 /***********************/ 2221 // createElement(product) - Takes in the product element, and creates the Extend offer element + appends the offer 2222 function createElement(product, index) { 2223 // Grab URL from title anchor href 2224 let url = product.querySelector(cartRowItemTitle).href; 2225 2226 // Grabs variant ID from URL if available, otherwise from localCart 2227 let variantId = (url && url.match(regEx)) ? url.match(regEx)[0] : localCart.items[index].id; 2228 2229 // Select quantity value 2230 let quantityEl = product.querySelector(cartRowItemQuantity); 2231 let quantity = quantityEl ? parseInt(quantityEl.value ?? quantityEl.innerText) : 1; 2232 2233 if (!variantId || quantity.length > 0) { 2234 throw new Error("Exiting - Error with variantId {0} or quantity {1}", variantId, quantity); 2235 } 2236 2237 // Removes existing offer elements before creating new ones 2238 let extendOffer = product.querySelector('.' + offerClass); 2239 if (extendOffer) { 2240 if (extendOffer.dataset.extendVariant !== variantId || extendOffer.dataset.extendQuantity !== quantity) { 2241 extendOffer.remove(); 2242 } else { 2243 return; 2244 } 2245 } 2246 2247 // Parent container to append ajax offer 2248 let container = product.querySelector(warrantyContainer); 2249 2250 // Fail safes 2251 if (!variantId || !quantity || !container) { 2252 throw new Error("Exiting - variant, quantity or container unavailable"); 2253 } 2254 2255 // Create new element & set class, data-extend-variant, and data-extend-quantity attributes 2256 let newExtendOffer = document.createElement('div'); 2257 newExtendOffer.className = offerClass; 2258 newExtendOffer.setAttribute('data-extend-variant', variantId); 2259 newExtendOffer.setAttribute('data-extend-quantity', quantity); 2260 2261 // Append the offer to the container element (THEME SPECIFIC) 2262 container.append(newExtendOffer); 2263 2264 renderCartOffer(newExtendOffer, variantId, quantity, index); 2265 2266 // The Extend widget renders asynchronously (after the drawer grid has already 2267 // laid out), so the item row can stay too short and clip the offer until the 2268 // user interacts. Watch the offer for its render/size change and nudge the row 2269 // to reflow + repaint so it shows correctly straight away. 2270 if ('ResizeObserver' in window) { 2271 let ro = new ResizeObserver(function () { 2272 let row = newExtendOffer.closest(cartRowItem) || newExtendOffer.closest('.cart-items__table-row'); 2273 if (!row) return; 2274 void row.offsetHeight; // force reflow (grow the grid row) 2275 row.style.transform = 'translateZ(0)'; // force a repaint of the clipped row 2276 requestAnimationFrame(function () { row.style.transform = ''; }); 2277 }); 2278 ro.observe(newExtendOffer); 2279 // Stop observing once the widget has settled to avoid ongoing overhead. 2280 setTimeout(function () { ro.disconnect(); }, 6000); 2281 } 2282 } 2283 2284 /************************/ 2285 /* Handle Styling */ 2286 /************************/ 2287 // Finds all cartRowItems and styles only Extend warranties 2288 function handleStyling() { 2289 2290 document.querySelectorAll(cartRowItem).forEach(function (el, index) { 2291 try { 2292 // Grab the title of the current item 2293 let title = el.querySelector(cartRowItemTitle); 2294 2295 // Title fail safe 2296 if (!title) { 2297 throw new Error("Exiting - title unavailable"); 2298 } 2299 2300 // If it's a warranty set isExtend to true and remove links
2301 if (title.innerText.toLowerCase().indexOf('extend protection') > -1) { // Grab the image of the current item and fail safe 2302 // Select and remove pointerEvents from warranty title 2303 title.style.pointerEvents = 'none'; 2304 2305 let image = el.querySelector(cartRowItemImage); 2306 2307 if (!image) { 2308 throw new Error("Exiting - image unavailable"); 2309 } 2310 2311 // Select and remove pointerEvents from warranty image 2312 image.style.pointerEvents = 'none'; 2313 2314 /**************************************/ 2315 /* THEME SPECIFIC STYLING START */ 2316 /**************************************/ 2317 // Removes old metadata 2318 if (el.querySelector(warrantyOriginalMeta)) { 2319 el.querySelectorAll(warrantyOriginalMeta).forEach(function (each) { 2320 each.remove(); 2321 }) 2322 } 2323 2324 if (quantityWrapper && quantityWrapper != '' && el.querySelector(quantityWrapper)) { 2325 el.querySelectorAll(quantityWrapper).forEach((each) => { 2326 each.style.opacity = '75%'; 2327 each.style.pointerEvents = 'none'; 2328 }) 2329 } 2330 2331 // Selects where to append warranty metadata 2332 let contentContainer = el.querySelector(metadataContainer) 2333 let warrantyProductData; 2334 let warrantyTermData; 2335 2336 if (!localCart.items[index]) return; 2337 2338 if (localCart.items[index].options_with_values && localCart.items[index].options_with_values[1]) { // Finds the ref id string in the product info string and replaces with an empty string 2339 let regexReplace = localCart.items[index].options_with_values[0].value.match(/\-\d{5,}/g); 2340 warrantyProductData = localCart.items[index].options_with_values[0].value.replace(regexReplace, ''); 2341 warrantyTermData = localCart.items[index].options_with_values[1].value; 2342 } else { 2343 warrantyProductData = localCart.items[index].properties.Product; 2344 warrantyTermData = localCart.items[index].properties.Term; 2345 } 2346 2347 // For category offers, fetch title by filtering through cart for warranted product refId 2348 if (warrantyProductData === "Covered Product") { 2349 const coveredProdId = localCart.items[index].properties['_Extend.ProductId']; 2350 const coveredProdTitle = localCart.items.filter((item) => item.id.toString() == coveredProdId)[0].title; 2351 warrantyProductData = coveredProdTitle; 2352 } 2353 2354 // Appends Product and Term metadata 2355 if (el.querySelector(metadataContainer)) { 2356 let warrantyProductName = document.createElement('p'); 2357 warrantyProductName.className = 'extend-warranty-info extend-warranty-info-product'; 2358 warrantyProductName.innerHTML = '<b>Product: </b>' + warrantyProductData; 2359 warrantyProductName.setAttribute('data-cy', 'warranty-description-product'); 2360 let warrantyProductTerm = document.createElement('p') 2361 warrantyProductTerm.className = 'extend-warranty-info extend-warranty-info-term'; 2362 warrantyProductTerm.innerHTML = '<b>Term: </b>' + warrantyTermData; 2363 warrantyProductTerm.setAttribute('data-cy', 'warranty-description-term'); 2364 2365 // Only append the metadata if it's not already there 2366 if (!el.querySelector('.extend-warranty-info')) { 2367 contentContainer.append(warrantyProductName, warrantyProductTerm) 2368 } 2369 } 2370 2371 /**************************************/ 2372 /* THEME SPECIFIC STYLING END */ 2373 /**************************************/ 2374 2375 } else { // Create an offer element for each product 2376 createElement(el, index); 2377 } 2378 } catch (error) { 2379 console.error("EXTEND:", error); 2380 } 2381 }); 2382 } 2383 2384 function initEventListeners() { 2385 if (init) return; 2386 2387 function refreshCartOffer() { 2388 fetch('/cart.js', { 2389 credentials: 'same-origin', 2390 method: 'GET', 2391 headers: { 2392 'Content-Type': 'application/json', 2393 'X-Requested-With': 'XMLHttpRequest'
2394 } 2395 }) 2396 .then((e) => e.json()) 2397 .then((e) => { 2398 localCart = e; 2399 initializeCartOffer(); 2400 }) 2401 .catch((error) => { 2402 console.error("EXTEND:", error) 2403 }); 2404 } 2405 2406 // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Multiple_identical_event_listeners 2407 window.addEventListener(cartEvent, refreshCartOffer); 2408 2409 // Listen for SP dispatching refresh 2410 window.addEventListener('refreshSP', refreshCart); 2411 2412 } 2413 2414 /************************/ 2415 /* initializeCartOffer */ 2416 /************************/ 2417 // Invokes handleStyling and finds all offers in the cart, handling both normalization and balancing 2418 function initializeCartOffer() { 2419 2420 // ** Checkout Plus Init - Uncomment if using Checkout Plus ** 2421 // let cartSpLocation; 2422 // cartSpLocation = isMainCart ? 'main' : 'side'; 2423 // window.Extend.integration.SPHelper.RenderOrUpdate(localCart, cartSpLocation); 2424 // window.Extend.integration.SPHelper.addOrUpdateCheckoutPlusOffer(localCart); 2425 2426 // Runs this normalization from extend-shipping.liquid if using cart SP 2427 if (Extend.integration.cartSP && Extend.integration.normalizeCartSP) { 2428 Extend.integration.normalizeCartSP() 2429 } 2430 2431 // Handles styling and creates offer elements 2432 handleStyling(); 2433 2434 initEventListeners(); 2435 2436 init = true; 2437 2438 // Use standard normalization if SP is not present in cart 2439 if (!window.Extend.integration.cartSP) { 2440 // Normalization ensures there is a 1:1 relationship between the product and the warranty 2441 ExtendShopify.normalizeCart({ 2442 cart: localCart, 2443 balance: Extend.integration.cartBalancing 2444 }, function (err, data) { 2445 try { 2446 // An error occurred 2447 if (err) { 2448 throw new Error({ "Exiting - Error in normalizeCart": error }); 2449 } else if (data && data.updates) { // Calls refreshCart to update the cart for normalization 2450 refreshCart(); 2451 } 2452 } catch (error) { 2453 console.error("EXTEND:", error) 2454 } 2455 }); 2456 } 2457 } 2458 2459 try { 2460 // initializeCartOffer when script is initially rendered 2461 initializeCartOffer(); 2462 2463 // The side-cart offer is often rendered while the drawer is still hidden 2464 // (display:none / off-screen), so Extend measures it at ~0 height and it 2465 // stays collapsed until the user interacts. When the drawer opens, nudge the 2466 // widgets to recompute and, if any are still collapsed, re-render them while 2467 // the drawer is visible so they show at full height immediately. 2468 if (!isMainCart) { 2469 function fixCollapsedSideCartOffers() { 2470 window.dispatchEvent(new Event('resize')); 2471 setTimeout(function () { 2472 let collapsed = false; 2473 document.querySelectorAll('.' + offerClass).forEach(function (el) { 2474 if (el.offsetHeight > 0 && el.offsetHeight < 30) collapsed = true; 2475 }); 2476 if (collapsed) { 2477 document.querySelectorAll('.' + offerClass).forEach(function (el) { el.remove(); }); 2478 handleStyling(); 2479 } 2480 }, 150); 2481 } 2482 2483 const drawerEl = document.querySelector('cart-drawer-component'); 2484 if (drawerEl) { 2485 // Fires when the drawer <dialog> opens. 2486 drawerEl.addEventListener('dialog:open', fixCollapsedSideCartOffers); 2487 // Fallback: watch the dialog's `open` attribute directly. 2488 const dlg = drawerEl.querySelector('dialog, .cart-drawer__dialog'); 2489 if (dlg && 'MutationObserver' in window) { 2490 new MutationObserver(function () { 2491 if (dlg.open || dlg.hasAttribute('open')) fixCollapsedSideCartOffers(); 2492 }).observe(dlg, { attributes: true, attributeFilter: ['open'] }); 2493 } 2494 } 2495 } 2496 2497 // When the shopper clicks the Extend offer in the drawer, Extend opens its 2498 // protection modal over the page. Close the cart drawer so the modal isn't 2499 // hidden behind it. 2500 function closeCartDrawer() { 2501 const drawer = document.querySelector('cart-drawer-component'); 2502 if (!drawer) return; 2503 try { 2504 if (typeof drawer.close === 'function') { drawer.close(); return; } 2505 } catch (e) {} 2506 const closeBtn = drawer.querySelector('.cart-drawer__close-button, [ref="closeButton"], [aria-label*="close" i]'); 2507 if (closeBtn) closeBtn.click(); 2508 } 2509 if (!isMainCart) { 2510 // The offer button is often a cross-origin iframe, so a click on it does 2511 // not bubble to the page. Instead, watch for Extend's protection modal 2512 // (added to <body>, or a pre-existing hidden modal being shown) and close 2513 // the drawer when it becomes visible. 2514 const isModalVisible = function (el) { 2515 if (!el) return false; 2516 const r = el.getBoundingClientRect(); 2517 const cs = getComputedStyle(el); 2518 return r.height > 80 && r.width > 80 && 2519 cs.display !== 'none' && cs.visibility !== 'hidden' && cs.opacity !== '0'; 2520 }; 2521 const watchModal = function (el) { 2522 if (!el || el.__bnModalWatch) return; 2523 el.__bnModalWatch = true; 2524 const check = function () { if (isModalVisible(el)) closeCartDrawer(); }; 2525 check(); 2526 if ('MutationObserver' in window) { 2527 new MutationObserver(check).observe(el, { 2528 attributes: true, 2529 attributeFilter: ['style', 'class', 'hidden', 'aria-hidden', 'open'] 2530 }); 2531 } 2532 };
2533 const MODAL_SEL = '#extend-offers-modal-iframe, #extend-learn-more-modal-iframe, [id*="extend"][id*="modal"], [class*="extend"][class*="modal"]'; 2534 document.querySelectorAll(MODAL_SEL).forEach(watchModal); 2535 if ('MutationObserver' in window) { 2536 new MutationObserver(function (muts) { 2537 muts.forEach(function (m) { 2538 m.addedNodes.forEach(function (n) { 2539 if (n.nodeType !== 1) return; 2540 if (n.matches && n.matches(MODAL_SEL)) watchModal(n); 2541 if (n.querySelectorAll) n.querySelectorAll(MODAL_SEL).forEach(watchModal); 2542 }); 2543 }); 2544 }).observe(document.body, { childList: true, subtree: true }); 2545 } 2546 2547 // Also try the direct click path (works when the offer is a normal DOM button). 2548 document.addEventListener('click', function (e) { 2549 if (e.target && e.target.closest && e.target.closest('.' + offerClass)) { 2550 setTimeout(closeCartDrawer, 0); 2551 } 2552 }, true); 2553 } 2554 2555 // Use this to refresh the sidecart when the mini cart trigger or quantity selectors/remove buttons are clicked 2556 document.addEventListener('click', function(e) { 2557 if (e.target.closest('.quantity-plus') || e.target.closest('.quantity-minus') || e.target.closest('.cart-items__remove')) { // Replace with your click listen selector 2558 window.setTimeout(function () { 2559 window.dispatchEvent(new Event('refreshAjaxSideCart')); 2560 }, 2000); 2561 } 2562 }) 2563 2564 document.addEventListener('click', function(e) { 2565 if (e.target.closest('button[data-bgc-action="qty-plus"]') || e.target.closest('button[data-bgc-action="qty-minus"]') || e.target.closest('.bgc-remove')) { // Replace with your click listen selector 2566 console.log("Extend: main cart quant") 2567 window.setTimeout(function () { 2568 window.dispatchEvent(new Event('refreshAjaxCart')); 2569 }, 2000); 2570 } 2571 }) 2572 2573 } catch (err) { 2574 console.error('EXTEND: ', err); 2575 } 2576 2577 }, { once: true }); 2578</script>
2578 2579 2580<style> 2581 .extend-cart-offer { 2582 margin: 0; 2583 } 2584 2585 .extend-side-cart-offer { 2586 margin: 10px 0; 2587 } 2588 2589 @keyframes bn-extend-spin { to { transform: rotate(360deg); } } 2590 2591 /* Side cart (drawer): render the offer as a full-width block under the title 2592 so it lays out cleanly and the item row grows to fit it (no clipping). */ 2593 .cart-drawer .extend-side-cart-offer { 2594 display: block; 2595 width: 100%; 2596 margin: 8px 0 4px; 2597 clear: both; 2598 } 2599 .cart-drawer .extend-side-cart-offer:empty { 2600 display: none; 2601 } 2602 2603 .extend-warranty-info { 2604 margin: 0 !important; 2605 } 2606 2607 .extend-warranty-info-product {} 2608 2609 .extend-warranty-info-term {} 2610 2611 #extend-offers-modal-iframe { 2612 z-index: 99999999999 !important; 2613 } 2614 2615 #extend-learn-more-modal-iframe { 2616 z-index: 99999999999 !important; 2617 } 2618</style> 2619 2620<!-- Optional --> 2621<!-- Extend - Render atc --> 2622 2623<!-- Extend - Render quickview --> 2624 2625 <!-- Extend -- End Extend code --> 2626<!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 --> 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639
2639<script async src="https://static.klaviyo.com/onsite/js/XDCv4C/klaviyo.js?company_id=XDCv4C"></script>
2639 2640
2640<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>
2640 2641 2642 2643 2644 2645 2646 2647
2647<script> 2648 window.klaviyoReviewsProductDesignMode = false 2649 </script>
2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659<!-- END app block --><!-- BEGIN app block: shopify://apps/triplewhale/blocks/triple_pixel_snippet/483d496b-3f1a-4609-aea7-8eee3b6b7a2a --><link rel='preconnect dns-prefetch' href='https://api.config-security.com/' crossorigin /> 2660<link rel='preconnect dns-prefetch' href='https://conf.config-security.com/' crossorigin />
2661<script> 2662/* >> TriplePixel :: start*/ 2663window.TriplePixelData={TripleName:"1zkvfh-xt.myshopify.com",ver:"2.16",plat:"SHOPIFY",isHeadless:false,src:'SHOPIFY_EXT',product:{id:"",name:``,price:"",variant:"",av:{ }},search:"",collection:"",cart:"drawer",template:"page",curr:"USD" || "USD", market:"97117700280"},function(W,H,A,L,E,_,B,N){function O(U,T,P,H,R){void 0===R&&(R=!1),H=new XMLHttpRequest,P?(H.open("POST",U,!0),H.setRequestHeader("Content-Type","text/plain")):H.open("GET",U,!0),H.send(JSON.stringify(P||{})),H.onreadystatechange=function(){4===H.readyState&&200===H.status?(R=H.responseText,U.includes("/first")?eval(R):P||(N[B]=R)):(299<H.status||H.status<200)&&T&&!R&&(R=!0,O(U,T-1,P))}}if(N=window,!N[H+"sn"]){N[H+"sn"]=1,L=function(){return Date.now().toString(36)+"_"+Math.random().toString(36)};try{A.setItem(H,1+(0|A.getItem(H)||0)),(E=JSON.parse(A.getItem(H+"U")||"[]")).push({u:location.href,r:document.referrer,t:Date.now(),id:L()}),A.setItem(H+"U",JSON.stringify(E))}catch(e){}var i,m,p;A.getItem('"!nC`')||(_=A,A=N,A[H]||(E=A[H]=function(t,e,i){return void 0===i&&(i=[]),"State"==t?E.s:(W=L(),(E._q=E._q||[]).push([W,t,e].concat(i)),W)},E.s="Installed",E._q=[],E.ch=W,B="configSecurityConfModel",N[B]=1,O("https://conf.config-security.com/model",5),i=L(),m=A[atob("c2NyZWVu")],_.setItem("di_pmt_wt",i),p={id:i,action:"profile",avatar:_.getItem("auth-security_rand_salt_"),time:m[atob("d2lkdGg=")]+":"+m[atob("aGVpZ2h0")],host:A.TriplePixelData.TripleName,plat:A.TriplePixelData.plat,url:window.location.href.slice(0,500),ref:document.referrer,ver:A.TriplePixelData.ver},O("https://api.config-security.com/event",5,p),O("https://api.config-security.com/first?host=".concat(p.host,"&plat=").concat(p.plat),5)))}}("","TriplePixel",localStorage); 2664/* << TriplePixel :: end*/ 2665</script>
2665 2666 2667 2668 2669<!-- END app block --><!-- BEGIN app block: shopify://apps/coframe/blocks/coframe/019f3a40-3aa2-70f5-b75e-ee2ca0be8280 -->
2670<script> 2671 (function () { 2672 var d = document; 2673 // `cf_disable` is the kill switch the SDK and the hand-installed snippet 2674 // both honour, and it is what LCP benchmarking uses for its "Coframe 2675 // off" arm. Hiding here anyway would put a blank page in that arm and 2676 // make the comparison meaningless. 2677 if (/cf_disable/.test(location.search)) return; 2678 // Another integration on this page already hides it â the hand-installed 2679 // snippet uses this same element id, and a store can carry both it and 2680 // the app embed. Two hides do not stack (both read --cf-show, so the 2681 // first reveal un-hides both), but only one should own the element. 2682 if (d.getElementById('coframe-antiflicker')) return; 2683 var s = d.createElement('style'); 2684 s.id = 'coframe-antiflicker'; 2685 s.textContent = ':root{--cf-show:0}body{opacity:var(--cf-show)!important}'; 2686 (d.head || d.documentElement).appendChild(s); 2687 setTimeout(function () { 2688 var r = d.documentElement; 2689 r.style.setProperty('--cf-show', '1'); 2690 r.style.setProperty('--cf-visibility', 'visible'); 2691 if (s.parentNode) s.parentNode.removeChild(s); 2692 }, 1000); 2693 })(); 2694 </script>
2694<script async src="https://shop.coframe.com/coframe-storefront.js?shop=1zkvfh-xt.myshopify.com"></script>
2694 2695 2696 2697<!-- END app block --><!-- BEGIN app block: shopify://apps/bushnell-sale-automation/blocks/sale-collection-control/019ffd7a-8c8a-7a7c-bdeb-ed3ef47858b1 --><style> 2698 a[href$="/collections/sale"], 2699 a[href*="/collections/sale?"], 2700 a[href*="/collections/sale/"] { display: none !important; } 2701 </style> 2702<!-- END app block --><!-- BEGIN app block: shopify://apps/yotpo-product-reviews/blocks/settings/eb7dfd7d-db44-4334-bc49-c893b51b36cf --> 2703 2704 2705
2705<script type="text/javascript" src="https://cdn-widgetsrepository.yotpo.com/v1/loader/m2djy7T11NLc8kN2FyPVbHo7xpNI2IQ4yhET0ca9?languageCode=en" async></script>
2705 2706 2707 2708 2709 2710<!-- END app block --><link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
2711<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: 94598496440,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "page"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 2711
2711
2712<script> 2713 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 2714</script>
vendor: 1 bytes, line 2714
2714
2715<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}
2715).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: 94598496440,storefrontBaseUrl: "https://www.bushnellgolf.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://www.bushnellgolf.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"2886140088","configuration":"{\"vibePixelId\":\"dlziuF\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"72859894ec8aa8d5e0246c40aaed9466","type":"APP","apiClientId":132266098689,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2880995512","configuration":"{\"storeId\":\"bf76c0df-fca6-4f5e-b65c-2fe873f7a65d\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"9b5c7e9eba54366aed35e340586c8163","type":"APP","apiClientId":274629623809,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"}
2715,{"id":"2869592248","configuration":"{\"pixel_id\":\"2tFoSPhFieY73nNhnmrSPE\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"494c214c3e1e2dea2c94ffa97cf51a83","type":"APP","apiClientId":411130036225,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2795241656","configuration":"{\"shop\":\"1zkvfh-xt.myshopify.com\",\"projectId\":\"69cea0d90db02b3cc2b51877\",\"ingestUrl\":\"https:\/\/ingest.app.coframe.com\/ingest\/v2\/batched_events\/69cea0d90db02b3cc2b51877\/\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"27e42a1a1a8f90b0bfce6ce93f32df83","type":"APP","apiClientId":376669110273,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2770731192","configuration":"{\"shopId\":\"1zkvfh-xt.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":"2764996792","configuration":"{\"campaignID\":\"43462\",\"externalExecutionURL\":\"https:\/\/engine.saasler.com\/api\/v1\/webhook_executions\/0442a54891f774312a521fc6f8d6fff2\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"4d2ae310e7f99f154f33560b5c81cfa9","type":"APP","apiClientId":3546795,"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":"2753855672","configuration":"{\"ti\":\"211076447\",\"endpoint\":\"https:\/\/bat.bing.com\/action\/0\",\"tagIds\":\"[\\\"-1\\\"]\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"58a904981d2724b937c16718aa2f1aee","type":"APP","apiClientId":2997493,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2747859128","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-YEJ1EQ502M\\\",\\\"AW-791379230\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-YEJ1EQ502M\\\",\\\"AW-791379230\\\/DzybCN3ml-AcEJ76rfkC\\\"]},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-YEJ1EQ502M\\\",\\\"AW-791379230\\\/0Y-fCNHml-AcEJ76rfkC\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-YEJ1EQ502M\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-YEJ1EQ502M\\\",\\\"AW-791379230\\\/B7r3CNrml-AcEJ76rfkC\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-YEJ1EQ502M\\\",\\\"AW-791379230\\\/5TPqCM7ml-AcEJ76rfkC\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-YEJ1EQ502M\\\"},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-YEJ1EQ502M\\\",\\\"AW-791379230\\\/lxT0CNfml-AcEJ76rfkC\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-YEJ1EQ502M\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-YEJ1EQ502M\\\",\\\"AW-791379230\\\/HhY-CODml-AcEJ76rfkC\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-YEJ1EQ502M\\\",\\\"AW-791379230\\\/9pjcCNTml-AcEJ76rfkC\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-YEJ1EQ502M\\\"}],\\\"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":"2721710264","configuration":"{\"partnerId\":\"bushnell\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"af1c8d508ab35da0347db9e4cc555741","type":"APP","apiClientId":397
2715737066497,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data","read_customer_address","read_customer_email","read_customer_name","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2708242616","configuration":"{\"yotpoStoreId\":\"m2djy7T11NLc8kN2FyPVbHo7xpNI2IQ4yhET0ca9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c5c2579aac465eb24ca7bc0501a6000d","type":"APP","apiClientId":70132,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2659156152","configuration":"{\"pixel_id\":\"580491339402695\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"2525659320","configuration":"{\"accountID\":\"XDCv4C\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c63c5b72c8d77be5f2d27d14c081da38","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"2451079352","configuration":"{\"site_id\":\"a2d7b46f-6832-4637-907f-1bf09faa9896\",\"analytics_endpoint\":\"https:\\\/\\\/na.shgcdn3.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"695709fc3f146fa50a25299517a954f2","type":"APP","apiClientId":1158168,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"164593848","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"PostHog","dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"167968952","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"3","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"AudioHook","dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"168001720","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Criteo","dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"168034488","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"MNTN","dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"168067256","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Quora","dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"}
2715,{"id":"168100024","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Triple Whale","dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"173015224","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"10","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Google tag manager","dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Bushnell Golf","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"1zkvfh-xt.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/www.bushnellgolf.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"10358022930616","handle":"pro-x3-link","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53271988469944","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10358021292216","handle":"tour-hybrid","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53271985750200","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10358022504632","handle":"tour-v7-shift","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53271987749048","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10358021456056","handle":"a1-slope","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53271986110648","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10358021488824","handle":"launch-pro","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53271986143416","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10362618839224","handle":"lpi-personal-launch-monitor","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53281601945784","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10358021652664","handle":"launch-pro-simulator-bundle","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53458011029688","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10364598223032","handle":"launch-pro-i-simulator-bundle","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53287034388664","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10358021947576","handle":"wingman-hd","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53271986831544","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10358021619896","handle":"wingman-view","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53271986274488","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}
2715,{"id":"10358022963384","handle":"wingman-2-gps-speaker","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53271988764856","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10358022537400","handle":"wingman-mini-gps-speaker","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53458024661176","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10358022340792","handle":"ion-elite","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53458024923320","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10358023127224","handle":"phantom-3-slope-gps","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53458018926776","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://www.bushnellgolf.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"191993970872","themePublished":"true","eventMetadataId":"4c06c567-b3e5-41f7-baf1-f6b808a742f9","pageType":"page","resourceId":"162554970296","shopId":"94598496440","storefrontBaseUrl":"https:\/\/www.bushnellgolf.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
2715<script> 2716 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 2717 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 2718 window.ShopifyAnalytics.meta.currency = 'USD'; 2719 var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":162554970296,"requestId":"e00e36e2-321e-490d-b594-771422cf29e3-1790853879"}}; 2720 for (var attr in meta) { 2721 window.ShopifyAnalytics.meta[attr] = meta[attr]; 2722 } 2723</script>
vendor: 1 bytes, line 2723
2723
2724<script class="analytics"> 2725 (function () { 2726 var customDocumentWrite = function(content) { 2727 var jquery = null; 2728 2729 if (window.jQuery) { 2730 jquery = window.jQuery; 2731 } else if (window.Checkout && window.Checkout.$) { 2732 jquery = window.Checkout.$; 2733 } 2734 2735 if (jquery) { 2736 jquery('body').append(content); 2737 } 2738 }; 2739 2740 var hasLoggedConversion = function(token) { 2741 if (token) { 2742 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 2743 } 2744 return false; 2745 } 2746 2747 var setCookieIfConversion = function(token) { 2748 if (token) { 2749 var twoMonthsFromNow = new Date(Date.now()); 2750 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 2751 2752 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 2753 } 2754 } 2755 2756 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 2757 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 2758 if (trekkie.integrations) { 2759 return; 2760 } 2761 trekkie.methods = [ 2762 'identify', 2763 'page', 2764 'ready', 2765 'track', 2766 'trackForm', 2767 'trackLink' 2768 ]; 2769 trekkie.factory = function(method) { 2770 return function() { 2771 var args = Array.prototype.slice.call(arguments); 2772 args.unshift(method); 2773 trekkie.push(args); 2774 if (method == 'track' || method == 'page') { 2775 var pageUrl; 2776 try { 2777 pageUrl = window.location.href; 2778 } catch (e) {} 2779 var pageReferrer; 2780 try { 2781 pageReferrer = document.referrer; 2782 } catch (e) {} 2783 try { 2784 if (window.__TREKKIE_SHIM_QUEUE == null) { 2785 window.__TREKKIE_SHIM_QUEUE = []; 2786 } 2787 window.__TREKKIE_SHIM_QUEUE.push({ 2788 from: 'trekkie-stub', 2789 method: method, 2790 args: args.slice(1), 2791 pageContext: { 2792 url: pageUrl, 2793 referrer: pageReferrer 2794 } 2795 }); 2796 } catch (e) { 2797 // no-op 2798 } 2799 } 2800 return trekkie; 2801 }; 2802 }; 2803 for (var i = 0; i < trekkie.methods.length; i++) { 2804 var key = trekkie.methods[i]; 2805 trekkie[key] = trekkie.factory(key); 2806 } 2807 trekkie.load = function(config) { 2808 trekkie.config = config || {}; 2809 trekkie.config.initialDocumentCookie = document.cookie; 2810 var first = document.getElementsByTagName('script')[0]; 2811var script = document.createElement('script'); 2812script.type = 'text/javascript'; 2813script.onerror = function(e) { 2814 var scriptFallback = document.createElement('script'); 2815 scriptFallback.type = 'text/javascript'; 2816 scriptFallback.onerror = function(error) { 2817 var Monorail = { 2818 produce: function produce(monorailDomain, schemaId, payload) { 2819 var currentMs = new Date().getTime(); 2820 var event = { 2821 schema_id: schemaId, 2822 payload: payload, 2823 metadata: { 2824 event_created_at_ms: currentMs, 2825 event_sent_at_ms: currentMs 2826 } 2827 }; 2828 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 2829 }, 2830 sendRequest: function sendRequest(endpointUrl, payload) { 2831 // Try the sendBeacon API 2832 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 2833 var blobData = new window.Blob([payload], { 2834 type: 'text/plain' 2835 }); 2836 2837 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 2838 return true; 2839 } // sendBeacon was not successful 2840 2841 } // XHR beacon 2842 2843 var xhr = new XMLHttpRequest(); 2844 2845 try { 2846 xhr.open('POST', endpointUrl); 2847 xhr.setRequestHeader('Content-Type', 'text/plain'); 2848 xhr.send(payload); 2849 } catch (e) { 2850 console.log(e); 2851 } 2852 2853 return false; 2854 }, 2855 isIos12: function isIos12() { 2856 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 2857 } 2858 }; 2859 Monorail.produce('monorail-edge.shopifysvc.com', 2860 'trekkie_storefront_load_errors/1.1', 2861 {shop_id: 94598496440, 2862 theme_id: 191993970872, 2863 app_name: "storefront", 2864 context_url: window.location.href, 2865 source_url: "//www.bushnellgolf.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 2866 2867 }; 2868 scriptFallback.async = true; 2869 scriptFallback.src = '//www.bushnellgolf.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 2870 first.parentNode.insertBefore(scriptFallback, first); 2871}; 2872script.async = true; 2873script.src = '//www.bushnellgolf.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 2874first.parentNode.insertBefore(script, first); 2875 2876 }; 2877 trekkie.load( 2878 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":94598496440,"isMerchantRequest":null,"themeId":191993970872,"themeCityHash":"3767458484850086570","contentLanguage":"en","currency":"USD","eventMetadataId":"4c06c567-b3e5-41f7-baf1-f6b808a742f9"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 2879 ); 2880 2881 var loaded = false;
2882 trekkie.ready(function() { 2883 if (loaded) return; 2884 loaded = true; 2885 2886 window.ShopifyAnalytics.lib = window.trekkie; 2887 2888 var originalDocumentWrite = document.write; 2889 document.write = customDocumentWrite; 2890 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 2891 document.write = originalDocumentWrite; 2892 2893 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 2894 var token = match? match[1]: undefined; 2895 if (!hasLoggedConversion(token)) { 2896 setCookieIfConversion(token); 2897 2898 } 2899 }); 2900 2901 window.ShopifyAnalytics.lib.page(null,{"pageType":"page","resourceType":"page","resourceId":162554970296,"requestId":"e00e36e2-321e-490d-b594-771422cf29e3-1790853879","shopifyEmitted":true}); 2902 2903 var eventsListenerScript = document.createElement('script'); 2904 eventsListenerScript.async = true; 2905 eventsListenerScript.src = "//www.bushnellgolf.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 2906 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 2907})();</script>
vendor: 1 bytes, line 2907
2907
2908<script 2909 defer 2910 src="https://www.bushnellgolf.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 2911 data-application="storefront-renderer" 2912 data-shop-id="94598496440" 2913 data-render-region="gcp-europe-west1" 2914 data-page-type="page" 2915 data-theme-instance-id="191993970872" 2916 data-theme-name="Horizon" 2917 data-theme-version="3.4.0" 2918 data-monorail-region="shop_domain" 2919 data-resource-timing-sampling-rate="10" 2920 data-shs="true" 2921 data-shs-beacon="true" 2922 data-shs-export-with-fetch="true" 2923 data-shs-logs-sample-rate="1" 2924 data-shs-beacon-endpoint="https://www.bushnellgolf.com/api/collect" 2925></script>
vendor: 1 bytes, line 2925
2925
2926<script src="https://cdn.shopify.com/storefront/web-components/account.js" type="module" crossorigin fetchpriority="low" async></script>
2926<script id="shopify-customer-account-data" type="application/json">{"customer":null,"shop":{"id":"94598496440","customerAccountTranslations":[{"key":"account_menu.signed_out_state.sheet_title","value":"Sign in or create account"},{"key":"account_menu.signed_out_state.section_divider","value":"More ways to sign in"},{"key":"account_menu.signed_out_state.alternate_divider","value":"OR"},{"key":"account_menu.signed_out_state.email_field_label","value":"Email"},{"key":"account_menu.signed_out_state.orders_button","value":"Orders"},{"key":"account_menu.signed_out_state.profile_button","value":"Profile"},{"key":"account_menu.signed_out_state.shop_login_button","value":"Sign in with Shop"},{"key":"account_menu.signed_out_state.continue_with_google","value":"Continue with Google"},{"key":"account_menu.signed_out_state.continue_with_facebook","value":"Continue with Facebook"},{"key":"account_menu.signed_out_state.marketing_consent_label","value":"Email me with news and offers"},{"key":"account_menu.signed_in_state.greeting_with_name","value":"Hi, {{first_name}}"},{"key":"account_menu.signed_in_state.greeting_without_name","value":"Account"},{"key":"account_menu.signed_in_state.orders_button","value":"Orders"},{"key":"account_menu.signed_in_state.profile_button","value":"Profile"},{"key":"account_menu.location_picker.sheet_title","value":"Locations"},{"key":"account_menu.location_picker.search_field_placeholder","value":"Search"},{"key":"account_menu.aria_labels.close_menu","value":"Close menu"},{"key":"account_menu.aria_labels.back_to_main_menu","value":"Back to main menu from {{title}}"},{"key":"account_menu.aria_labels.open_submenu","value":"{{title}}, opens submenu"},{"key":"account_menu.aria_labels.loading_menu","value":"Loading menu"},{"key":"account_menu.aria_labels.account","value":"Account"},{"key":"account_menu.aria_labels.sign_in_with_email","value":"Sign in with email"},{"key":"account_menu.aria_labels.sign_in","value":"Sign in"}],"socialLoginProviders":[{"handle":"Shop"}],"legacyCustomerAccounts":false,"signInLinksVisible":true,"b2bEnabled":false,"marketingConsentSigninEnabled":false},"visitor":{"country":"US","language":"en"}}</script>
2926 2927<meta name="shopify-y" content="91450ecc-89f4-43d5-8f64-9ddcaf49de06" data-expiration="1822411479000"><meta name="shopify-s" content="0fa2d132-a6dd-4892-a8f1-081f65d903ab" data-expiration="1790855679000"><meta name="new-cookie-storage-activated" content="t"> 2928</head> 2929<body class="template-page bushnell-theme">
vendor: 67 bytes, line 2929
2929<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
2929GTM-W2RQBLD
vendor: 84 bytes, line 2929
2929" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
2930<div id="shopify-section-bushnell-utility-bar" class="shopify-section"><style> 2931 #shopify-section-bushnell-utility-bar h1, 2932 #shopify-section-bushnell-utility-bar h2, 2933 #shopify-section-bushnell-utility-bar h3, 2934 #shopify-section-bushnell-utility-bar h4, 2935 #shopify-section-bushnell-utility-bar h5, 2936 #shopify-section-bushnell-utility-bar h6 { font-family: 'Industry Bold', sans-serif; } 2937 #shopify-section-bushnell-utility-bar p, 2938 #shopify-section-bushnell-utility-bar li, 2939 #shopify-section-bushnell-utility-bar span, 2940 #shopify-section-bushnell-utility-bar a { font-family: 'Acumin Pro', sans-serif; } 2941 #shopify-section-bushnell-utility-bar .utility-links > a, 2942#shopify-section-bushnell-utility-bar .utility-links > .utility-account > a, 2943#shopify-section-bushnell-utility-bar .utility-links .bn-region-trigger { 2944 font-family: 'Industry Bold', sans-serif; 2945} 2946 @media screen and (max-width: 749px) { 2947 #shopify-section-bushnell-utility-bar .main-nav { 2948 padding-top: 8px; 2949 padding-bottom: 8px; 2950 } 2951 } 2952 @media screen and (min-width: 750px) and (max-width: 989px) { 2953 #shopify-section-bushnell-utility-bar .utility-bar { 2954 padding-top: 8px; 2955 padding-bottom: 8px; 2956 } 2957 } 2958 /* Fix: mega menu dropdown must size to its content, not the full viewport. */ 2959 .mega-menu-dropdown { 2960 height: auto !important; 2961 min-height: 0 !important; 2962 max-height: none !important; 2963 overflow: visible !important; 2964 } 2965 .mega-menu-dropdown > .container { 2966 height: auto !important; 2967 max-height: none !important; 2968 overflow: visible !important; 2969 } 2970 .mega-menu-grid { 2971 height: auto !important; 2972 min-height: 0 !important; 2973 max-height: none !important; 2974 overflow: visible !important; 2975 align-items: flex-start !important; 2976 } 2977 .mega-menu-columns { 2978 height: auto !important; 2979 max-height: none !important; 2980 overflow: visible !important; 2981 } 2982 /* Full-width mega-menu sheet: span the whole viewport under the nav. */ 2983 .mega-menu-dropdown { 2984 left: 0 !important; 2985 right: 0 !important; 2986 width: 100% !important; 2987 max-width: none !important; 2988 border-radius: 0 !important; 2989 border-left: none !important; 2990 border-right: none !important; 2991 border-bottom: 1px solid #e5e1dc; 2992 box-shadow: 0 12px 40px rgba(30, 37, 43, 0.18); 2993 } 2994 /* Accessories panel: every link is an unmistakable row â 2995 hairline separators + chevron affordance (name + sub read as one unit). */ 2996 [data-mega-panel="accessories"] .mega-menu-col-links li { 2997 border-top: 1px solid #e5e1dc; 2998 } 2999 [data-mega-panel="accessories"] .mega-menu-col-links li a { 3000 position: relative; 3001 display: block; 3002 padding: 14px 26px 14px 0; 3003 } 3004 [data-mega-panel="accessories"] .mega-menu-col-links li a::after { 3005 content: ""; 3006 position: absolute; 3007 right: 4px; 3008 top: 50%; 3009 width: 8px; 3010 height: 8px; 3011 border-top: 2px solid #9b968f; 3012 border-right: 2px solid #9b968f; 3013 transform: translateY(-50%) rotate(45deg); 3014 } 3015 /* Compact collection hero: match the approved mockups \u2014 slim padding, 3016 smaller title and stat scale. Overrides the tall base-CSS hero. */ 3017 .collection-hero { 3018 padding: 44px 40px 40px !important; 3019 min-height: 0 !important; 3020 } 3021 .collection-hero-inner { 3022 padding: 0 !important; 3023 } 3024 .collection-hero h1 { 3025 font-size: 36px !important; 3026 letter-spacing: 2px !important; 3027 margin: 0 !important; 3028 } 3029 .collection-hero p { 3030 font-size: 15px !important; 3031 margin: 8px 0 0 !important; 3032 } 3033 .collection-stats { 3034 margin-top: 26px !important; 3035 gap: 48px !important; 3036 } 3037 .collection-stat-value { 3038 font-size: 28px !important; 3039 } 3040 .collection-stat-label { 3041 font-size: 11px !important; 3042 letter-spacing: 1.5px !important; 3043 } 3044 @media screen and (max-width: 749px) { 3045 .collection-hero { padding: 32px 20px 28px !important; } 3046 .collection-hero h1 { font-size: 26px !important; } 3047 .collection-stats { gap: 24px !important; margin-top: 18px !important; } 3048 .collection-stat-value { font-size: 22px !important; } 3049 } 3050 /* Product-card styling moved to bushnell.css */ 3051 /* Comparison charts (custom-liquid): price shown under the product name 3052 in the header row â the JS below moves it there from a "Price" line item. */ 3053 #lrf-comparison-chart .product-price { 3054 display: block; 3055 font-family: "acumin-pro-condensed", "Helvetica Neue", Arial, sans-serif; 3056 font-weight: bold; 3057 color: #000000; 3058 font-size: 1.2rem; 3059 margin-top: 0.25rem; 3060 } 3061 /* Account state â signed-out shows SIGN IN; signed-in shows pip + first name 3062 with a hover/focus dropdown (Orders, Profile, Register, Support, Sign out). */ 3063 .utility-account { position: relative; display:contents; } 3064 .utility-account > a { display: inline-flex; align-items: center; gap: 7px; } 3065 .bn-acct-pip {
3066 width: 20px; height: 20px; border-radius: 50%; 3067 background: #fe5000; color: #ffffff !important; 3068 display: inline-flex; align-items: center; justify-content: center; 3069 font-family: 'Industry Bold', 'Oswald', sans-serif; 3070 font-size: 10px; font-weight: 700; line-height: 1; 3071 } 3072 .bn-acct-caret { width: 10px; height: 10px; transition: transform 0.2s ease; } 3073 .bn-acct-menu { 3074 position: fixed; z-index: 200; 3075 width: 240px; padding-top: 8px; 3076 opacity: 0; visibility: hidden; transform: translateY(-4px); 3077 transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s; 3078 } 3079 .utility-account.bn-open .bn-acct-menu { 3080 opacity: 1; visibility: visible; transform: translateY(0); 3081 } 3082 .utility-account.bn-open .bn-acct-caret { transform: rotate(180deg); } 3083 .bn-acct-menu-card { 3084 background: #ffffff; border: 1px solid #e5e1dc; border-radius: 12px; 3085 box-shadow: 0 12px 40px rgba(30,37,43,0.18); overflow: hidden; 3086 } 3087 .bn-acct-menu-head { padding: 14px 18px 12px; border-bottom: 1px solid #f0ece7; } 3088 .bn-acct-menu-name { 3089 font-family: 'Industry Bold', 'Oswald', sans-serif; 3090 font-size: 13px; font-weight: 600; letter-spacing: 0.5px; 3091 text-transform: uppercase; color: #1e252b; 3092 } 3093 .bn-acct-menu-email { 3094 font-family: 'Acumin Pro', 'DM Sans', sans-serif; 3095 font-size: 12px; color: #6b6b6b; 3096 overflow: hidden; text-overflow: ellipsis; white-space: nowrap; 3097 } 3098 .bn-acct-menu-list { padding: 6px 0; } 3099 .bn-acct-menu-list + .bn-acct-menu-list { border-top: 1px solid #f0ece7; } 3100 .bn-acct-menu a.bn-acct-item { 3101 display: flex !important; align-items: center; gap: 10px; 3102 padding: 10px 18px !important; 3103 font-family: 'Industry Bold', 'Oswald', sans-serif; 3104 font-size: 12px; font-weight: 600; letter-spacing: 1px; 3105 text-transform: uppercase; color: #1e252b !important; 3106 text-decoration: none; transition: background 0.2s ease, color 0.2s ease; 3107 } 3108 .bn-acct-menu a.bn-acct-item:hover { background: #f7f3ee; color: #fe5000 !important; } 3109 .bn-acct-menu a.bn-acct-item--muted { color: #6b6b6b !important; } 3110 .bn-acct-menu a.bn-acct-item--muted:hover { color: #1e252b !important; } 3111 .bn-acct-menu a.bn-acct-item svg { width: 15px; height: 15px; flex-shrink: 0; } 3112 @media screen and (max-width: 749px) { 3113 .bn-acct-menu { display: none; } 3114 } 3115 /* Region selector â flag + REGION:/country stacked, click dropdown with 3116 US/Europe/Canada storefront links. Same fixed-position pattern as the 3117 account menu so it survives ancestor overflow/stacking contexts. */ 3118 .utility-region { position: relative; display: flex; align-items: center; } 3119 .bn-region-trigger { 3120 display: inline-flex; align-items: center; gap: 8px; 3121 background: none; border: none; padding: 2px 0; cursor: pointer; 3122 color: #ffffff; text-align: left; 3123 font-family: inherit; letter-spacing: inherit; text-transform: inherit; 3124 } 3125 .bn-region-flag { flex-shrink: 0; } 3126 .bn-region-txt { display: flex; flex-direction: column; line-height: 1.25; } 3127 .bn-region-label { 3128 font-size: 9px; letter-spacing: 0.12em; opacity: 0.75; 3129 } 3130 .bn-region-current { 3131 display: inline-flex; align-items: center; gap: 4px; 3132 font-size: 11px; font-weight: 700; 3133 font-family: 'Industry Bold', 'Oswald', sans-serif; 3134 } 3135 .bn-region-caret { width: 10px; height: 10px; transition: transform 0.2s ease; } 3136 .utility-region.bn-open .bn-region-caret { transform: rotate(180deg); } 3137 .bn-region-menu { 3138 position: fixed; z-index: 200; 3139 width: 190px; padding-top: 8px; 3140 opacity: 0; visibility: hidden; transform: translateY(-4px); 3141 transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s; 3142 } 3143 .utility-region.bn-open .bn-region-menu { 3144 opacity: 1; visibility: visible; transform: translateY(0); 3145 } 3146 .bn-region-menu-card { 3147 background: #ffffff; border: 1px solid #e5e1dc; border-radius: 10px; 3148 box-shadow: 0 12px 40px rgba(30,37,43,0.18); overflow: hidden; 3149 padding: 6px 0; 3150 } 3151 .bn-region-menu a.bn-region-item { 3152 display: flex !important; align-items: center; gap: 8px; 3153 padding: 10px 16px !important; 3154 font-family: 'Acumin Pro', 'DM Sans', sans-serif; 3155 font-size: 13px; text-transform: none; letter-spacing: 0; 3156 color: #1e252b !important; text-decoration: none; 3157 transition: background 0.2s ease, color 0.2s ease; 3158 } 3159 .bn-region-menu a.bn-region-item:hover { background: #f7f3ee; color: #fe5000 !important; } 3160 .bn-region-menu a.bn-region-item.is-active { font-weight: 700; } 3161 .bn-region-check { 3162 width: 14px; height: 14px; flex-shrink: 0; 3163 display: inline-flex; align-items: center; justify-content: center; 3164 } 3165 .bn-region-check svg { width: 13px; height: 13px; } 3166 /* Mobile: base CSS hides .utility-links under 769px â bring the group back 3167 but show only the region selector; contact/support/account move into the 3168 header's user-icon menu at this width. */ 3169 @media screen and (max-width: 768px) { 3170 .utility-links { display: flex !important; } 3171 .utility-links > a, 3172 .utility-links .utility-account { display: none !important; } 3173 } 3174 /* Promo link inherits the bar's text colour;
3174 the highlight keeps its orange. */ 3175 .utility-promo__link { color: inherit; text-decoration: none; } 3176 .utility-promo__link:hover { text-decoration: underline; } 3177</style> 3178<div class="utility-bar"> 3179 <div class="container"> 3180 <div class="utility-promo"><strong>FREE SHIPPING</strong> ON ORDERS OVER $99 + FREE 30-DAY RETURNS�</div> 3181 <div class="utility-links"> 3182 3183 <a href="/pages/support"> 3184 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/></svg> 3185 SUPPORT 3186 </a> 3187 �<a href="/account"> 3188 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg> 3189 SIGN IN 3190 </a></div> 3191 </div> 3192</div> 3193
3194<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell-utility-bar.js?v=176354384251886478481790611765" defer></script>
3194 3195 3196 3197</div><div id="shopify-section-bushnell-header" class="shopify-section"><style> 3198 #shopify-section-bushnell-header h1, 3199 #shopify-section-bushnell-header h2, 3200 #shopify-section-bushnell-header h3, 3201 #shopify-section-bushnell-header h4, 3202 #shopify-section-bushnell-header h5, 3203 #shopify-section-bushnell-header h6 { font-family: 'Industry Bold', sans-serif; } 3204/* Main navigation */ 3205#shopify-section-bushnell-header .nav-links > li > a { 3206 font-family: 'Industry Bold', sans-serif; 3207} 3208 3209/* Mega menu product names */ 3210#shopify-section-bushnell-header .mega-link-name { 3211 font-family: 'Industry Bold', sans-serif; 3212} 3213 3214/* Featured product title */ 3215#shopify-section-bushnell-header .mega-menu-featured-name, 3216#shopify-section-bushnell-header .mega-menu-featured-name a { 3217 font-family: 'Industry Bold', sans-serif; 3218} 3219 3220/* Featured cards laid out in a row (wrap to next line if many) */ 3221#shopify-section-bushnell-header .mega-menu-featured-wrap { 3222 display: flex; 3223 flex-direction: row; 3224 flex-wrap: wrap; 3225 gap: 24px; 3226 flex-shrink: 0; 3227} 3228 @media screen and (max-width: 749px) { 3229 #shopify-section-bushnell-header .main-nav { 3230 padding-top: 8px; 3231 padding-bottom: 8px; 3232 } 3233 #shopify-section-bushnell-header .nav-links a { 3234 font-size: 24px; 3235 } 3236 } 3237 @media screen and (min-width: 750px) and (max-width: 989px) { 3238 #shopify-section-bushnell-header .main-nav { 3239 padding-top: 12px; 3240 padding-bottom: 12px; 3241 } 3242 #shopify-section-bushnell-header .nav-links a { 3243 font-size: 28px; 3244 } 3245 } 3246 #shopify-section-bushnell-header .logo img { 3247 object-fit: contain; 3248 height: 40px; 3249 width: auto; 3250 } 3251 @media screen and (min-width: 750px) { 3252 #shopify-section-bushnell-header .logo img { 3253 height: 33px; 3254 } 3255 } 3256 @media screen and (max-width: 749px) { 3257 .hide-mobile { display: none !important; } 3258 } 3259 .mobile-featured-cards { display: flex; flex-wrap: wrap; gap: 12px; padding: 8px 0 4px; } 3260 .mobile-featured-card { flex: 0 0 100%; min-width: 0; } 3261 .mobile-featured-card--half { flex: 0 0 calc(50% - 6px); } 3262 .mobile-featured-card__img { display: block; width: 100%; border-radius: 4px; margin-bottom: 6px; } 3263 .mobile-featured-card__badge { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; padding: 2px 6px; border-radius: 2px; display: inline-block; margin-bottom: 4px; } 3264 .mobile-featured-card__badge--new { background: var(--orange, #FE5000); color: #fff;position:absolute; } 3265 .mobile-featured-card__badge--bestseller { background: #000; color: #fff; position:absolute; } 3266 .mobile-featured-card__badge--sale { background: #e53; color: #fff;position:absolute; } 3267 .mobile-featured-card__name { font-size: 13px; font-weight: 600; color: inherit; text-decoration: none; display: block; margin-bottom: 2px; } 3268 .mobile-featured-card__price { font-size: 12px; color: var(--grey-500, #666); margin-bottom: 6px; } 3269 .mobile-featured-card__cta { font-size: 11px; font-weight: 700; color: var(--orange, #FE5000); text-transform: uppercase; letter-spacing: 0.05em; } 3270 #shopify-section-bushnell-header .bn-cart-actions { display: flex; align-items: center; } 3271 #shopify-section-bushnell-header .bn-cart-actions header-actions { display: flex; align-items: center; } 3272 #shopify-section-bushnell-header .bn-cart-actions .account-button { display: none !important; } 3273 #shopify-section-bushnell-header .bn-cart-actions .header-actions__cart-icon { color: currentColor; } 3274 /* Mobile/tablet user menu: person icon between search and cart; click opens 3275 My Account / Contact / Support. Desktop keeps these in the utility bar. 3276 Also unhide the search icon at this width â the search overlay is global. */ 3277 .bn-user-wrap { position: relative; display: none; align-items: center; } 3278 @media (max-width: 768px) { 3279 .bn-user-wrap { display: flex; } 3280 #shopify-section-bushnell-header .nav-search-btn { display: flex !important; } 3281 } 3282 .bn-user-btn { background: none; border: none; cursor: pointer; padding: 0; } 3283 .bn-user-menu { 3284 position: absolute; top: calc(100% + 12px); right: -10px; z-index: 300; 3285 width: 210px; 3286 opacity: 0; visibility: hidden; transform: translateY(-4px); 3287 transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s; 3288 } 3289 .bn-user-wrap.bn-open .bn-user-menu { opacity: 1; visibility: visible; transform: translateY(0); } 3290 .bn-user-menu-card { 3291 background: #ffffff; border: 1px solid #e5e1dc; border-radius: 10px; 3292 box-shadow: 0 12px 40px rgba(30,37,43,0.18); overflow: hidden; padding: 6px 0; 3293 }
3294 .bn-user-menu a.bn-user-item { 3295 display: flex; align-items: center; gap: 10px; 3296 padding: 11px 16px; 3297 font-family: 'Industry Bold', 'Oswald', sans-serif; 3298 font-size: 12px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; 3299 color: #1e252b; text-decoration: none; 3300 transition: background 0.2s ease, color 0.2s ease; 3301 } 3302 .bn-user-menu a.bn-user-item:hover { background: #f7f3ee; color: #fe5000; } 3303 .bn-user-menu a.bn-user-item svg { width: 15px; height: 15px; flex-shrink: 0; } 3304 .bn-user-menu a.bn-user-item--muted { color: #6b6b6b; border-top: 1px solid #f0ece7; margin-top: 6px; padding-top: 12px; } 3305 .bn-user-menu a.bn-user-item--muted:hover { color: #1e252b; } 3306 .bn-user-pip { 3307 width: 24px; height: 24px; border-radius: 50%; 3308 background: #fe5000; color: #ffffff; 3309 display: inline-flex; align-items: center; justify-content: center; 3310 font-family: 'Industry Bold', 'Oswald', sans-serif; 3311 font-size: 11px; font-weight: 700; line-height: 1; 3312 } 3313 .bn-user-menu-head { padding: 12px 16px 10px; border-bottom: 1px solid #f0ece7; margin-bottom: 6px; } 3314 .bn-user-menu-name { 3315 font-family: 'Industry Bold', 'Oswald', sans-serif; 3316 font-size: 13px; font-weight: 600; letter-spacing: 0.5px; 3317 text-transform: uppercase; color: #1e252b; 3318 } 3319 .bn-user-menu-email { 3320 font-family: 'Acumin Pro', 'DM Sans', sans-serif; 3321 font-size: 12px; color: #6b6b6b; 3322 overflow: hidden; text-overflow: ellipsis; white-space: nowrap; 3323 } 3324 /* ============================================ 3325 NAV v2 (CRO) â whole-card featured links, quiet 3326 CTAs on multi-card panels, secondary Shop-all 3327 button, comparison cards, Greenbooks accent. 3328 ============================================ */ 3329 /* Featured card: entire card is one link (stretched overlay); inner 3330 links/CTAs sit above it so they still work. */ 3331 .mega-menu-featured { transition: transform 0.3s ease, box-shadow 0.3s ease; } 3332 .mega-menu-featured:hover { transform: translateY(-4px); box-shadow: 0 12px 40px rgba(30,37,43,0.10); } 3333 .mega-menu-featured-link { position: absolute; inset: 0; z-index: 1; border-radius: inherit; } 3334 .mega-menu-featured .mega-menu-featured-name a, 3335 .mega-menu-featured .mega-menu-featured-img a, 3336 .mega-menu-featured .mega-menu-featured-cta { position: relative; z-index: 2; } 3337 /* Multi-card panels (e.g. Rangefinders): the orange button per card 3338 becomes a quiet "View details" affordance â one CTA style, no four 3339 competing primaries. Single-card panels keep their orange CTA. */ 3340 .mega-menu-featured-cta--quiet, 3341 .mega-menu-featured-cta--quiet:hover { 3342 background: transparent; 3343 color: var(--orange, #FE5000); 3344 padding: 0; 3345 border-radius: 0; 3346 cursor: pointer; 3347 } 3348 /* Shop-all: visible secondary button instead of a quiet text link. */ 3349 .mega-menu-shop-all { 3350 border: 2px solid var(--midnight, #1E252B); 3351 border-radius: 6px; 3352 padding: 12px 24px; 3353 transition: border-color 0.2s ease, color 0.2s ease; 3354 } 3355 .mega-menu-shop-all:hover { border-color: var(--orange, #FE5000); color: var(--orange, #FE5000); } 3356 /* Comparison cards (2-SKU categories: Launch Monitors, Simulators). 3357 Equal cards with differentiator rows â the menu becomes the 3358 "which one?" step. Whole card is the link. */ 3359 .mega-menu-compare { 3360 display: grid; 3361 grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); 3362 gap: 20px; 3363 max-width: 920px; 3364 margin: 0 auto; 3365 width: 100%; 3366 } 3367 .mega-menu-compare-card { 3368 position: relative; 3369 display: flex; 3370 flex-direction: column; 3371 background: var(--cream, #F7F3EE); 3372 border: 1px solid var(--hairline, #E5E1DC); 3373 border-radius: var(--radius-lg, 12px); 3374 padding: 20px 24px 24px; 3375 color: var(--midnight, #1E252B); 3376 text-decoration: none; 3377 transition: transform 0.3s ease, box-shadow 0.3s ease; 3378 } 3379 .mega-menu-compare-card:hover { transform: translateY(-4px); box-shadow: 0 12px 40px rgba(30,37,43,0.10); } 3380 .mega-menu-compare-badge { 3381 position: absolute; top: 14px; left: 14px; 3382 font-family: var(--font-ui, 'Oswald', sans-serif); 3383 font-size: 10px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; 3384 padding: 5px 10px; border-radius: 4px; z-index: 1; 3385 } 3386 .mega-menu-compare-badge--bestseller { background: var(--midnight, #1E252B); color: #fff; } 3387 .mega-menu-compare-badge--new { background: var(--orange, #FE5000); color: #fff; } 3388 .mega-menu-compare-badge--sale { background: #C62828; color: #fff; } 3389 .mega-menu-compare-img { height: 150px; display: flex; align-items: center; justify-content: center; overflow: hidden; } 3390 .mega-menu-compare-img img { max-width: 80%; max-height: 100%; object-fit: contain; } 3391 .mega-menu-compare-head { 3392 display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-top: 14px; 3393 } 3394 .mega-menu-compare-name { 3395 font-family: var(--font-ui, 'Oswald', sans-serif); 3396 font-size: 16px; font-weight: 600; letter-spacing: 0.03em; text-transform: uppercase; 3397 } 3398 .mega-menu-compare-price { font-family: var(--font-ui, 'Oswald', sans-serif); font-size: 16px; font-weight: 600; white-space: nowrap; } 3399 .mega-menu-compare-desc { display: block; margin-top: 8px; font-size: 13px; line-height: 1.45; color: var(--grey-500, #6B6B6B); } 3400 .mega-menu-compare-specs { 3401 display: flex; flex-direction: column; gap: 8px; 3402 margin-top: 12px; padding-top: 12px; 3403 border-top: 1px solid var(--hairline, #E5E1DC); 3404 } 3405 .mega-menu-compare-spec { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; font-size: 13px; } 3406 .mega-menu-compare-spec-label { color: var(--grey-500, #888); } 3407 .mega-menu-compare-spec-value { font-weight: 500; text-align: right; } 3408 .mega-menu-compare-view { 3409 display: inline-flex; align-items: center; gap: 8px; margin-top: 14px; 3410 font-family: var(--font-ui, 'Oswald', sans-serif); 3411 font-size: 12px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; 3412 color: var(--orange, #FE5000); 3413 } 3414 .mega-menu-compare-view svg { width: 14px; height: 14px; } 3415 /* Mockup parity: cream featured cards, left-aligned, name+price on one 3416 row, dark badge top-left, trust promo moved into the footer row. */ 3417 .mega-menu-featured { 3418 position: relative; 3419 background: var(--cream, #F7F3EE); 3420 border: 1px solid var(--hairline, #E5E1DC); 3421 border-radius: 12px; 3422 text-align: left !important; 3423 display: flex; 3424 flex-direction: column; 3425 } 3426 /* Title on its own line, price below it. */ 3427 .mega-menu-featured-head { display: block; margin-top: 16px; } 3428 .mega-menu-featured-head .mega-menu-featured-name { 3429 margin: 0; 3430 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 3431 } 3432 .mega-menu-featured-head .mega-menu-featured-price { 3433 margin: 4px 0 0; white-space: nowrap; 3434 font-family: var(--font-ui, 'Oswald', sans-serif); 3435 font-size: 17px; font-weight: 600; color: var(--midnight, #1E252B); 3436 } 3437 .mega-menu-featured-tagline { text-align: left; margin: 6px 0 0; color: var(--muted, #6B6B6B); } 3438 .mega-menu-featured .mega-menu-featured-cta { margin-top: auto; padding-top: 14px; justify-content: flex-start; align-self: flex-start; } 3439 .mega-menu-featured-badge { 3440 position: absolute; top: 14px; left: 14px; right: auto; z-index: 2; 3441 background: var(--midnight, #1E252B); color: #fff; 3442 font-family: var(--font-ui, 'Oswald', sans-serif); 3443 font-size: 10px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; 3444 padding: 5px 10px; border-radius: 4px; 3445 } 3446 .mega-menu-featured-badge--new { background: var(--orange, #FE5000); } 3447 .mega-menu-featured-badge--sale { background: #C62828; } 3448 .mega-menu-footer { display: flex; align-items: center; justify-content: space-between; gap: 20px; } 3449 .mega-menu-footer .mega-menu-promo { 3450 background: none; border: none; padding: 0; margin: 0; 3451 display: inline-flex; align-items: center; gap: 10px; 3452 color: var(--orange, #FE5000); 3453 font-family: var(--font-ui, 'Oswald', sans-serif); 3454 font-size: 12px; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; 3455 } 3456 /* Greenbooks is a sub-brand: give its accessories row the green accent. */ 3457 [data-mega-panel="accessories"] .mega-menu-col-links a[href*="greenbook" i] .mega-link-name { color: var(--green, #4CAF50); } 3458 [data-mega-panel="accessories"] .mega-menu-col-links li a[href*="greenbook" i]::after { border-color: var(--green, #4CAF50); } 3459 3460 /* When an accessory link has a thumbnail, the image stacks on top so the 3461 row is tall. Move the chevron off the whole-link center and onto the 3462 name line instead, so it reads with the title (not floating by the image). */ 3463 [data-mega-panel="accessories"] .mega-menu-col-links li a.mega-link--has-img::after { content: none; } 3464 [data-mega-panel="accessories"] .mega-menu-col-links li a.mega-link--has-img .mega-link-name { 3465 position: relative; 3466 padding-right: 22px; 3467 } 3468 [data-mega-panel="accessories"] .mega-menu-col-links li a.mega-link--has-img .mega-link-name::after { 3469 content: ""; 3470 position: absolute; 3471 right: 4px; 3472 top: 50%; 3473 width: 8px; 3474 height: 8px; 3475 border-top: 2px solid #9b968f; 3476 border-right: 2px solid #9b968f; 3477 transform: translateY(-50%) rotate(45deg); 3478 } 3479 [data-mega-panel="accessories"] .mega-menu-col-links li a[href*="greenbook" i].mega-link--has-img .mega-link-name::after { border-color: var(--green, #4CAF50); } 3480</style><nav class="main-nav" data-mega-nav> 3481 <div class="container"><button class="mobile-hamburger" aria-label="Open menu" data-drawer-open> 3482 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg> 3483 </button> 3484 3485 <a class="logo" href="/"><img src="//www.bushnellgolf.com/cdn/shop/files/Bushnell.png?v=1781040317&
3485width=600" alt="Bushnell Golf" srcset="//www.bushnellgolf.com/cdn/shop/files/Bushnell.png?v=1781040317&width=352 352w, //www.bushnellgolf.com/cdn/shop/files/Bushnell.png?v=1781040317&width=600 600w" width="600" height="213" loading="eager" class="logo__image">�</a><ul class="nav-links"><li 3486 data-mega-trigger="rangefinders" 3487 style="text-align:left;padding:0px 0px 0px 0px;" 3488 > 3489 <a href="/collections/golf-rangefinders">RANGEFINDERS</a> 3490 </li><li 3491 data-mega-trigger="launch-monitors" 3492 style="text-align:left;padding:0px 0px 0px 0px;" 3493 > 3494 <a href="/collections/launch-monitors">LAUNCH MONITORS</a> 3495 </li><li 3496 data-mega-trigger="SIMULATOR" 3497 style="text-align:left;padding:0px 0px 0px 0px;" 3498 > 3499 <a href="/collections/golf-simulators">SIMULATORS</a> 3500 </li><li 3501 data-mega-trigger="speakers" 3502 style="text-align:left;padding:0px 0px 0px 0px;" 3503 > 3504 <a href="/collections/golf-gps-speakers">Speakers</a> 3505 </li><li 3506 data-mega-trigger="gps" 3507 style="text-align:left;padding:0px 0px 0px 0px;" 3508 > 3509 <a href="/collections/golf-gps">GPS</a> 3510 </li><li 3511 data-mega-trigger="accessories" 3512 style="text-align:left;padding:0px 0px 0px 0px;" 3513 > 3514 <a href="/collections/accessories">ACCESSORIES</a> 3515 </li><li 3516 3517 style="text-align:left;padding:0px 0px 0px 0px;" 3518 > 3519 <a href="/collections/sale">Sale</a> 3520 </li></ul> 3521 3522 <div class="nav-actions"> 3523 <button aria-label="Search" class="nav-search-btn" data-search-toggle> 3524 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg> 3525 </button> 3526 <div class="bn-user-wrap" data-bn-user> 3527 <button type="button" aria-label="Account and support menu" class="bn-user-btn" aria-haspopup="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg></button> 3528 <div class="bn-user-menu"> 3529 <div class="bn-user-menu-card"><a class="bn-user-item" href="/account"> 3530 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg> 3531 Sign In 3532 </a><a class="bn-user-item" href="/pages/contact"> 3533 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><path d="M22 6l-10 7L2 6"/></svg> 3534 Contact 3535 </a> 3536 <a class="bn-user-item" href="/pages/support"> 3537 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/></svg> 3538 Support 3539 </a></div> 3540 </div> 3541 </div> 3542 <div class="bn-cart-actions"> 3543
3543<script 3544 type="module" 3545 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/cart-icon.js?v=149223991140032574051790611765" 3546 fetchpriority="low" 3547></script>
3547 3548
3549<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell-ajax-cart.js?v=161944157569204579171790611764" defer></script>
vendor: 2 bytes, line 3549
3549
3550<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell-drag-scroll.js?v=110690801177579278971790611765" defer></script>
3550 3551 3552 3553 3554 3555 3556<header-actions 3557 �> 3558 3559 3560 <div 3561 class="account-button header-actions__action color-scheme-1" 3562 > 3563 <shopify-store store-domain="https://www.bushnellgolf.com" country="US" language="en"></shopify-store> 3564<shopify-account 3565 menu="" 3566 3567 > 3568 3569 <span 3570 slot="signed-out-avatar" 3571 class="account-button__text header-actions__text-style hidden" 3572 > 3573 Account 3574 </span> 3575 3576 <span 3577 slot="signed-out-avatar" 3578 class="" 3579 aria-hidden="true" 3580 > 3581 3582 <svg 3583 xmlns="http://www.w3.org/2000/svg" 3584 width="15" 3585 height="17" 3586 viewBox="0 0 15 17" 3587 fill="none" 3588 slot="signed-out-avatar" 3589 class="account-button__icon" 3590 > 3591 <path 3592 stroke="currentColor" 3593 stroke-linejoin="round" 3594 stroke-width="var(--icon-stroke-width)" 3595 d="M10.375 3.813a3.063 3.063 0 1 1-6.125 0 3.063 3.063 0 0 1 6.125 0ZM7.313 9.5c-3.667 0-6.24 2.691-6.563 6.125h13.125C13.552 12.191 10.979 9.5 7.312 9.5Z" 3596 /> 3597 </svg> 3598 3599 </span> 3600 3601 </shopify-account> 3602 </div> 3603 3604 3605 3606
3606<script 3607 src="//www.bushnellgolf.com/cdn/shop/t/133/assets/cart-drawer.js?v=40387549154824438721790611765" 3608 type="module" 3609 fetchpriority="low" 3610 ></script>
3610 3611 3612 3613 3614 <cart-drawer-component 3615 class="cart-drawer" 3616 3617 3618 > 3619 <template id="empty-cart-template"> 3620 3621 <div class="cart-drawer__header"> 3622 <button 3623 ref="closeButton" 3624 on:click="cart-drawer-component/close" 3625 class="button close-button cart-drawer__close-button button-unstyled" 3626 aria-label="Close dialog" 3627 > 3628 <span class="svg-wrapper"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 3629 <path d="M12 2L2 12" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3630 <path d="M12 12L2 2" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3631</svg> 3632</span> 3633 </button> 3634 </div> 3635 3636 <div 3637 class="cart-drawer__content bn-empty" 3638 aria-label="Cart" 3639 > 3640 <div class="bn-empty__inner"> 3641 <div class="bn-empty__icon"> 3642 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/></svg> 3643 </div> 3644 <div class="bn-empty__title" id="cart-drawer-heading-empty">Your cart is empty</div> 3645 <p class="bn-empty__text">Nothing here yet â explore the gear trusted by 98.4% of PGA Tour pros.</p> 3646 <button 3647 type="button" 3648 on:click="cart-drawer-component/close" 3649 class="bn-empty__cta button-unstyled" 3650 > 3651 Continue shopping 3652 </button> 3653 3654 <div class="bn-empty__cats"> 3655 <div class="bn-empty__eyebrow">Shop by category</div> 3656 <div class="bn-empty__grid"> 3657 <a href="/collections/golf-rangefinders" class="bn-empty__tile"> 3658 <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"><circle cx="12" cy="12" r="9"/><line x1="12" y1="2" x2="12" y2="6"/><line x1="12" y1="18" x2="12" y2="22"/><line x1="2" y1="12" x2="6" y2="12"/><line x1="18" y1="12" x2="22" y2="12"/><circle cx="12" cy="12" r="2.4"/></svg> 3659 <span>Rangefinders</span> 3660 </a> 3661 <a href="/collections/launch-monitors" class="bn-empty__tile"> 3662 <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg> 3663 <span>Launch Monitors</span> 3664 </a> 3665 <a href="/collections/golf-gps" class="bn-empty__tile"> 3666 <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg> 3667 <span>GPS</span> 3668 </a> 3669 <a href="/collections/accessories" class="bn-empty__tile"> 3670 <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"/><line x1="7" y1="7" x2="7.01" y2="7"/></svg> 3671 <span>Accessories</span> 3672 </a> 3673 </div> 3674 </div> 3675 </div> 3676 </div> 3677 3678 </template> 3679 <button 3680 class="header-actions__action button-unstyled" 3681 on:click="/open" 3682 aria-haspopup="dialog" 3683 aria-label="Cart" 3684 aria-describedby="cart-bubble-text" 3685 data-testid="cart-drawer-trigger" 3686 > 3687 3688 <cart-icon 3689 class="header-actions__cart-icon" 3690 data-testid="cart-icon" 3691 > 3692 <span class="hidden"> 3693 Cart 3694 </span> 3695 3696 <span 3697 class="svg-wrapper " 3698 aria-hidden="true" 3699 > 3700 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="M3.392 6.875h13.216v8.016c0 .567-.224 1.112-.624 1.513-.4.402-.941.627-1.506.627H5.522a2.13 2.13 0 0 1-1.506-.627 2.15 2.15 0 0 1-.624-1.513zM8.818 2.969h2.333c.618 0 1.211.247 1.649.686a2.35 2.35 0 0 1 .683 1.658v1.562H6.486V5.313c0-.622.246-1.218.683-1.658a2.33 2.33 0 0 1 1.65-.686"/></svg> 3701 3702 </span> 3703 3704 <div 3705 ref="cartBubble" 3706 class="cart-bubble visually-hidden" 3707 3708 3709 data-maintain-ratio 3710 3711> 3712 <span class="cart-bubble__background"></span> 3713 <span 3714 ref="cartBubbleText" 3715 id="cart-bubble-text" 3716 class="cart-bubble__text" 3717 3718 role="status" 3719 3720 > 3721 <span class="visually-hidden">Total items in cart: 0 3722 </span> 3723 <span 3724 class="cart-bubble__text-count hidden" 3725 ref="cartBubbleCount" 3726 aria-hidden="true" 3727 data-testid="cart-bubble" 3728 >�0</span> 3729 </span> 3730</div> 3731 3732 </cart-icon> 3733 3734 </button> 3735 3736 <dialog 3737 ref="dialog" 3738 class="cart-drawer__dialog dialog-modal dialog-drawer color-scheme-1 cart-drawer--empty" 3739 data-testid="cart-drawer-dialog" 3740 aria-labelledby="cart-drawer-heading-empty" 3741 scroll-lock 3742 cart-summary-sticky="true" 3743 > 3744 <div 3745 class="cart-drawer__inner" 3746 data-hydration-key="cart-drawer-inner" 3747 > 3748 <cart-items-component 3749 class="cart-items-component" 3750 data-drawer 3751 data-section-id="bushnell-header" 3752 > 3753 <div class="cart-drawer__header"> 3754 <button 3755 ref="closeButton" 3756 on:click="cart-drawer-component/close" 3757 class="button close-button cart-drawer__close-button button-unstyled" 3758 aria-label="Close dialog" 3759 >
3760 <span class="svg-wrapper"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 3761 <path d="M12 2L2 12" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3762 <path d="M12 12L2 2" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3763</svg> 3764</span> 3765 </button> 3766 </div> 3767 3768 <div 3769 class="cart-drawer__content bn-empty" 3770 aria-label="Cart" 3771 > 3772 <div class="bn-empty__inner"> 3773 <div class="bn-empty__icon"> 3774 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/></svg> 3775 </div> 3776 <div class="bn-empty__title" id="cart-drawer-heading-empty">Your cart is empty</div> 3777 <p class="bn-empty__text">Nothing here yet â explore the gear trusted by 98.4% of PGA Tour pros.</p> 3778 <button 3779 type="button" 3780 on:click="cart-drawer-component/close" 3781 class="bn-empty__cta button-unstyled" 3782 > 3783 Continue shopping 3784 </button> 3785 3786 <div class="bn-empty__cats"> 3787 <div class="bn-empty__eyebrow">Shop by category</div> 3788 <div class="bn-empty__grid"> 3789 <a href="/collections/golf-rangefinders" class="bn-empty__tile"> 3790 <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"><circle cx="12" cy="12" r="9"/><line x1="12" y1="2" x2="12" y2="6"/><line x1="12" y1="18" x2="12" y2="22"/><line x1="2" y1="12" x2="6" y2="12"/><line x1="18" y1="12" x2="22" y2="12"/><circle cx="12" cy="12" r="2.4"/></svg> 3791 <span>Rangefinders</span> 3792 </a> 3793 <a href="/collections/launch-monitors" class="bn-empty__tile"> 3794 <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg> 3795 <span>Launch Monitors</span> 3796 </a> 3797 <a href="/collections/golf-gps" class="bn-empty__tile"> 3798 <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg> 3799 <span>GPS</span> 3800 </a> 3801 <a href="/collections/accessories" class="bn-empty__tile"> 3802 <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"/><line x1="7" y1="7" x2="7.01" y2="7"/></svg> 3803 <span>Accessories</span> 3804 </a> 3805 </div> 3806 </div> 3807 </div> 3808 </div> 3809 �</cart-items-component> 3810 </div> 3811 </dialog> 3812 </cart-drawer-component> 3813 3814</header-actions> 3815 3816 3817 3818 </div> 3819 </div> 3820 </div><div class="mega-menu-dropdown" data-mega-panel="rangefinders" hidden> 3821 <div class="container"><div class="mega-menu-grid"> 3822 <div class="mega-menu-columns"></div><div class="mega-menu-featured-wrap"><div class="mega-menu-featured" 3823 style="text-align:center;padding:20px 20px 20px 20px;" 3824 > 3825 <a class="mega-menu-featured-link" href="/products/pro-x3-link" aria-label="View Pro X3+LINK"></a><div class="mega-menu-featured-badge mega-menu-featured-badge--bestseller">Best Seller</div><div class="mega-menu-featured-img"> 3826 <a href="/products/pro-x3-link"> 3827 <img src="//www.bushnellgolf.com/cdn/shop/files/BG-DTC-202450-Pro-X3-Plus-Hero__38872.1748636017.386.513_08b9b827-7cea-42e0-b245-c8d6f0546c09.webp?v=1789408607&width=600" alt="Pro X3+LINK" width="600" height="200" loading="lazy"> 3828 </a> 3829 </div><div class="mega-menu-featured-head"> 3830 <div class="mega-menu-featured-name"><a href="/products/pro-x3-link">Pro X3+LINK</a></div> 3831 <div class="mega-menu-featured-price">$599.99</div> 3832 </div><div class="mega-menu-featured-tagline">The most accurate rangefinder that Bushnell Golf has ever made.</div><a class="mega-menu-featured-cta mega-menu-featured-cta--quiet" href="/products/pro-x3-link"> 3833 View details 3834 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3835 </a></div><div class="mega-menu-featured" 3836 style="text-align:center;padding:20px 20px 20px 20px;" 3837 > 3838 <a class="mega-menu-featured-link" href="/products/tour
3838-hybrid" aria-label="View Tour Hybrid"></a><div class="mega-menu-featured-img"> 3839 <a href="/products/tour-hybrid"> 3840 <img src="//www.bushnellgolf.com/cdn/shop/files/tour-hybrid-carousel-image__72261.png?v=1780538602&width=600" alt="Tour Hybrid" width="600" height="200" loading="lazy"> 3841 </a> 3842 </div><div class="mega-menu-featured-head"> 3843 <div class="mega-menu-featured-name"><a href="/products/tour-hybrid">Tour Hybrid</a></div> 3844 <div class="mega-menu-featured-price">$499.99</div> 3845 </div><div class="mega-menu-featured-tagline">Slope Compensated Laser and GPS Distances in the display</div><a class="mega-menu-featured-cta mega-menu-featured-cta--quiet" href="/products/tour-hybrid"> 3846 View details 3847 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3848 </a></div><div class="mega-menu-featured" 3849 style="text-align:center;padding:20px 20px 20px 20px;" 3850 > 3851 <a class="mega-menu-featured-link" href="/products/tour-v7-shift" aria-label="View Tour V7 Shift"></a><div class="mega-menu-featured-badge mega-menu-featured-badge--new">New</div><div class="mega-menu-featured-img"> 3852 <a href="/products/tour-v7-shift"> 3853 <img src="//www.bushnellgolf.com/cdn/shop/files/TOUR_V7_Carousel_Image_1__03665.1773382564.386.513_fa921b3e-6d9e-4449-9297-a97d5faa0802.png?v=1781021526&width=600" alt="Tour V7 Shift" width="600" height="200" loading="lazy"> 3854 </a> 3855 </div><div class="mega-menu-featured-head"> 3856 <div class="mega-menu-featured-name"><a href="/products/tour-v7-shift">Tour V7 Shift</a></div> 3857 <div class="mega-menu-featured-price">$399.99</div> 3858 </div><div class="mega-menu-featured-tagline">All-new Dual Color (red and green) OLED Display with Slope-Switch Technology.</div><a class="mega-menu-featured-cta mega-menu-featured-cta--quiet" href="/products/tour-v7-shift"> 3859 View details 3860 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3861 </a></div><div class="mega-menu-featured" 3862 style="text-align:center;padding:20px 20px 20px 20px;" 3863 > 3864 <a class="mega-menu-featured-link" href="/products/a1-slope" aria-label="View A1-Slope"></a><div class="mega-menu-featured-img"> 3865 <a href="/products/a1-slope"> 3866 <img src="//www.bushnellgolf.com/cdn/shop/files/a1-slope-feature-image__34701.png?v=1782349159&width=600" alt="A1-Slope" width="600" height="200" loading="lazy"> 3867 </a> 3868 </div><div class="mega-menu-featured-head"> 3869 <div class="mega-menu-featured-name"><a href="/products/a1-slope">A1-Slope</a></div> 3870 <div class="mega-menu-featured-price">$299.99</div> 3871 </div><div class="mega-menu-featured-tagline">Precision and Slope gone ultra-compact.</div><a class="mega-menu-featured-cta mega-menu-featured-cta--quiet" href="/products/a1-slope"> 3872 View details 3873 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3874 </a></div></div></div><div class="mega-menu-footer"><div class="mega-menu-promo"> 3875 Trusted by 98.4% of PGA Tour pros. 3876 </div><a href="/collections/golf-rangefinders" class="mega-menu-shop-all"> 3877 SHOP ALL RANGEFINDERS 3878 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3879 </a></div></div> 3880 </div><div class="mega-menu-dropdown" data-mega-panel="launch-monitors" hidden> 3881 <div class="container"><div class="mega-menu-compare"><a class="mega-menu-compare-card" href="/products/launch-pro" ><span class="mega-menu-compare-badge mega-menu-compare-badge--bestseller">Best Seller</span><span class="mega-menu-compare-img"> 3882 <img src="//www.bushnellgolf.com/cdn/shop/files/LP_Product_Carousel_1_2_1__62065.1762889085.386.513_4c815453-5a18-4f6b-b55d-5e161ad7ab2a.png?v=1781021541&width=600" alt="Launch Pro" width="600" height="300" loading="lazy"> 3883 </span><span class="mega-menu-compare-head">
3884 <span class="mega-menu-compare-name">Launch Pro</span> 3885 <span class="mega-menu-compare-price">$2,999.99</span> 3886 </span><span class="mega-menu-compare-specs"><span class="mega-menu-compare-spec"><span class="mega-menu-compare-spec-label">Where</span><span class="mega-menu-compare-spec-value">Indoor + Outdoor</span></span><span class="mega-menu-compare-spec"><span class="mega-menu-compare-spec-label">Data</span><span class="mega-menu-compare-spec-value">Club + Ball</span></span><span class="mega-menu-compare-spec"><span class="mega-menu-compare-spec-label">Best for</span><span class="mega-menu-compare-spec-value">Full sim + range use</span></span></span> 3887 <span class="mega-menu-compare-view"> 3888 View details 3889 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3890 </span> 3891 </a><a class="mega-menu-compare-card" href="/products/lpi-personal-launch-monitor" ><span class="mega-menu-compare-img"> 3892 <img src="//www.bushnellgolf.com/cdn/shop/files/LPi_Product_Carousel_1_1__92363.1762888626.386.513.png?v=1781021499&width=600" alt="Launch Pro Indoor" width="600" height="300" loading="lazy"> 3893 </span><span class="mega-menu-compare-head"> 3894 <span class="mega-menu-compare-name">Launch Pro Indoor</span> 3895 <span class="mega-menu-compare-price">$1,999.99</span> 3896 </span><span class="mega-menu-compare-specs"><span class="mega-menu-compare-spec"><span class="mega-menu-compare-spec-label">Where</span><span class="mega-menu-compare-spec-value">Indoor only</span></span><span class="mega-menu-compare-spec"><span class="mega-menu-compare-spec-label">Data</span><span class="mega-menu-compare-spec-value">Club + Ball</span></span><span class="mega-menu-compare-spec"><span class="mega-menu-compare-spec-label">Best for</span><span class="mega-menu-compare-spec-value">Home simulator setups</span></span></span> 3897 <span class="mega-menu-compare-view"> 3898 View details 3899 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3900 </span> 3901 </a></div><div class="mega-menu-footer"><span></span><a href="/collections/launch-monitors" class="mega-menu-shop-all"> 3902 SHOP ALL LAUNCH MONITORS 3903 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3904 </a></div></div> 3905 </div><div class="mega-menu-dropdown" data-mega-panel="SIMULATOR" hidden> 3906 <div class="container"><div class="mega-menu-compare"><a class="mega-menu-compare-card" href="/products/launch-pro-simulator-bundle" ><span class="mega-menu-compare-badge mega-menu-compare-badge--bestseller">Best Seller</span><span class="mega-menu-compare-img"> 3907 <img src="//www.bushnellgolf.com/cdn/shop/files/LP_Simulator_Package_Carousel_8.png?v=1789702490&width=600" alt="Launch Pro Simulator Bundle" width="600" height="300" loading="lazy"> 3908 </span><span class="mega-menu-compare-head"> 3909 <span class="mega-menu-compare-name">Launch Pro Simulator Bundle</span> 3910 <span class="mega-menu-compare-price">$6,499.99</span> 3911 </span><span class="mega-menu-compare-specs"><span class="mega-menu-compare-spec"><span class="mega-menu-compare-spec-label">Monitor</span><span class="mega-menu-compare-spec-value">Launch Pro (indoor + outdoor)</span></span><span class="mega-menu-compare-spec"><span class="mega-menu-compare-spec-label">Includes</span><span class="mega-menu-compare-spec-value">Screen + enclosure</span></span><span class="mega-menu-compare-spec"><span class="mega-menu-compare-spec-label">Best for</span><span class="mega-menu-compare-spec-value">The complete build</span></span></span>
3912 <span class="mega-menu-compare-view"> 3913 View details 3914 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3915 </span> 3916 </a><a class="mega-menu-compare-card" href="/products/launch-pro-i-simulator-bundle" ><span class="mega-menu-compare-img"> 3917 <img src="//www.bushnellgolf.com/cdn/shop/files/LP_Simulator_Package_Carousel_7.png?v=1789702153&width=600" alt="Launch Pro i Simulator Bundle" width="600" height="300" loading="lazy"> 3918 </span><span class="mega-menu-compare-head"> 3919 <span class="mega-menu-compare-name">Launch Pro i Simulator Bundle</span> 3920 <span class="mega-menu-compare-price">$5,499.99</span> 3921 </span><span class="mega-menu-compare-specs"><span class="mega-menu-compare-spec"><span class="mega-menu-compare-spec-label">Monitor</span><span class="mega-menu-compare-spec-value">Launch Pro i (indoor)</span></span><span class="mega-menu-compare-spec"><span class="mega-menu-compare-spec-label">Includes</span><span class="mega-menu-compare-spec-value">Full sim setup</span></span><span class="mega-menu-compare-spec"><span class="mega-menu-compare-spec-label">Best for</span><span class="mega-menu-compare-spec-value">Dedicated indoor rooms</span></span></span> 3922 <span class="mega-menu-compare-view"> 3923 View details 3924 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3925 </span> 3926 </a></div><div class="mega-menu-footer"><div class="mega-menu-promo"> 3927 Your home course, open 365 days a year. 3928 </div><a href="/collections/golf-simulators" class="mega-menu-shop-all"> 3929 SHOP ALL SIMULATORS 3930 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3931 </a></div></div> 3932 </div><div class="mega-menu-dropdown" data-mega-panel="speakers" hidden> 3933 <div class="container"><div class="mega-menu-grid"> 3934 <div class="mega-menu-columns"></div><div class="mega-menu-featured-wrap"><div class="mega-menu-featured" 3935 style="text-align:center;padding:20px 20px 20px 20px;" 3936 > 3937 <a class="mega-menu-featured-link" href="/products/wingman-hd" aria-label="View Wingman HD"></a><div class="mega-menu-featured-badge mega-menu-featured-badge--new">New</div><div class="mega-menu-featured-img"> 3938 <a href="/products/wingman-hd"> 3939 <img src="//www.bushnellgolf.com/cdn/shop/files/WINGMAN_HD_Carousel_Image_1__93749.1760039492.386.513_c2959888-8393-49f9-bd6a-77908e835669.png?v=1781021521&width=600" alt="Wingman HD" width="600" height="200" loading="lazy"> 3940 </a> 3941 </div><div class="mega-menu-featured-head"> 3942 <div class="mega-menu-featured-name"><a href="/products/wingman-hd">Wingman HD</a></div> 3943 <div class="mega-menu-featured-price">$249.99</div> 3944 </div><div class="mega-menu-featured-tagline">3.5ⳠHD touchscreen + 360° audio</div><a class="mega-menu-featured-cta mega-menu-featured-cta--quiet" href="/products/wingman-hd"> 3945 View details 3946 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3947 </a></div><div class="mega-menu-featured" 3948 style="text-align:center;padding:20px 20px 20px 20px;" 3949 > 3950 <a class="mega-menu-featured-link" href="/products/wingman-view" aria-label="View Wingman View"></a><div class="mega-menu-featured-img"> 3951 <a href="/products/wingman-view"> 3952 <img src="//www.bushnellgolf.com/cdn/shop/files/BG-DTC-362210-Wingman-View-Hero__83017.1713450886.386.513_d34b0b06-c47d-454a-a114-e8bb9c6a3649.png?v=1781021539&width=600" alt="Wingman View" width="600" height="200" loading="lazy"> 3953 </a> 3954 </div><div class="mega-menu-featured-head"> 3955 <div class="mega-menu-featured-name"><a href="/products/wingman-view">Wingman View</a></div> 3956 <div class="mega-menu-featured-price">$199.99</div> 3957 </div><div class="mega-menu-featured-tagline">Visual + audible GPS · speaker</div><a class="mega-menu-featured-cta mega-menu-featured-cta--quiet" href="/products/wingman-view"> 3958 View details 3959 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3960 </a></div><div class="mega-menu-featured" 3961 style="text-align:center;padding:20px 20px 20px 20px;" 3962 > 3963 <a class="mega-menu-featured-link" href="/products/wingman-2-gps-speaker" aria-label="View Wingman 2 GPS Speaker"></a><div class="mega-menu-featured-img"> 3964 <a href="/products/wingman-2-gps-speaker"> 3965 <img src="//www.bushnellgolf.com/cdn/shop/files/Wingman-2-Front-Three-Quarter__93889.1709586394.386.513_4e7f15ab-16ad-4aed-8329-7491ef314e42.png?v=1781021505&width=600" alt="Wingman 2 GPS Speaker" width="600" height="200" loading="lazy"> 3966 </a> 3967 </div><div class="mega-menu-featured-head"> 3968 <div class="mega-menu-featured-name"><a href="/products/wingman-2-gps-speaker">Wingman 2</a></div> 3969 <div class="mega-menu-featured-price">$169.99</div> 3970 </div><div class="mega-menu-featured-tagline">Audible GPS · BITE magnetic speaker</div><a class="mega-menu-featured-cta mega-menu-featured-cta--quiet" href="/products/wingman-2-gps-speaker"> 3971 View details 3972 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3973 </a></div><div class="mega-menu-featured" 3974 style="text-align:center;padding:20px 20px 20px 20px;" 3975 > 3976 <a class="mega-menu-featured-link" href="/products/wingman-mini-gps-speaker" aria-label="View Wingman Mini GPS Speaker"></a><div class="mega-menu-featured-img"> 3977 <a href="/products/wingman-mini-gps-speaker"> 3978 <img src="//www.bushnellgolf.com/cdn/shop/files/BG-DTC-362310-362311-Wingman-Mini-Group__46217.1713452376.386.513_70382c1b-115c-4dbe-8885-57e83f36d0da.png?v=1775581314&width=600" alt="Wingman Mini GPS Speaker" width="600" height="200" loading="lazy"> 3979 </a> 3980 </div><div class="mega-menu-featured-head"> 3981 <div class="mega-menu-featured-name"><a href="/products/wingman-mini-gps-speaker">Wingman Mini</a></div> 3982 <div class="mega-menu-featured-price">$109.99</div> 3983 </div><div class="mega-menu-featured-tagline">Compact GPS speaker · walkers & riders</div><a class="mega-menu-featured-cta mega-menu-featured-cta--quiet" href="/products/wingman-mini-gps-speaker"> 3984 View details 3985 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3986 </a></div></div></div><div class="mega-menu-footer"><div class="mega-menu-promo"> 3987 Premium Audio for Every Adventure. 3988 </div><a href="/collections/golf-gps-speakers" class="mega-menu-shop-all"> 3989 SHOP ALL SPEAKERS 3990 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 3991 </a></div></div> 3992 </div><div class="mega-menu-dropdown" data-mega-panel="gps" hidden> 3993 <div class="container"><div class="mega-menu-grid"> 3994 <div class="mega-menu-columns"></div><div class="mega-menu-featured-wrap"><div class="mega-menu-featured" 3995 style="text-align:center;padding:20px 20px 20px 20px;" 3996 > 3997 <a class="mega-menu-featured-link" href="/products/ion-elite" aria-label="View iON Elite"></a><div class="mega-menu-featured-img"> 3998 <a href="/products/ion-elite"> 3999 <img src="//www.bushnellgolf.com/cdn/shop/files/BG-DTC-362150-362151-iON-Elite-Group__84330.1713454139.386.513_834afcd4-d363-4826-a310-1d5a1a8e1ffd.png?v=1775581209&width=600" alt="iON Elite" width="600" height="200" loading="lazy"> 4000 </a> 4001 </div><div class="mega-menu-featured-head"> 4002 <div class="mega-menu-featured-name"><a href="/products/ion-elite">iON Elite</a></div> 4003 <div class="mega-menu-featured-price">$219.99</div> 4004 </div><div class="mega-menu-featured-tagline">Slope GPS watch · preloaded courses</div><a class="mega-menu-featured-cta mega-menu-featured-cta--quiet" href="/products/ion-elite"> 4005 View details 4006 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 4007 </a></div><div class="mega-menu-featured" 4008 style="text-align:center;padding:20px 20px 20px 20px;" 4009 > 4010 <a class="mega-menu-featured-link" href="/products/phantom-3-slope-gps" aria-label="View Phantom 3 Slope GPS"></a><div class="mega-menu-featured-img"> 4011 <a href="/products/phantom-3-slope-gps"> 4012 <img src="//www.bushnellgolf.com/cdn/shop/files/BG-DTC-362401-362402-362403-362404-Phantom-3-Group__06111.1718293560.386.513_d002f9f9-db04-4721-abad-50909e1ccdc3.png?v=1775581452&width=600" alt="Phantom 3 Slope GPS" width="600" height="200" loading="lazy"> 4013 </a> 4014 </div><div class="mega-menu-featured-head"> 4015 <div class="mega-menu-featured-name"><a href="/products/phantom-3-slope-gps">Phantom 3</a></div> 4016 <div class="mega-menu-featured-price">$169.99</div> 4017 </div><div class="mega-menu-featured-tagline">Slope touchscreen GPS · front/center/back</div><a class="mega-menu-featured-cta mega-menu-featured-cta--quiet" href="/products/phantom-3-slope-gps"> 4018 View details 4019 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 4020 </a></div></div></div><div class="mega-menu-footer"><div class="mega-menu-promo"> 4021 Find the Perfect GPS for Every Round. 4022 </div><a href="/collections/golf-gps" class="mega-menu-shop-all"> 4023 SHOP ALL GPS 4024 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 4025 </a></div></div> 4026 </div><div class="mega-menu-dropdown" data-mega-panel="accessories" hidden> 4027 <div class="container"><div class="mega-menu-grid"> 4028 <div class="mega-menu-columns"><div class="mega-menu-col" 4029 style="text-align:left;padding:0px 0px 0px 0px;" 4030 > 4031 <div class="mega-menu-col-heading">Shop</div><ul class="mega-menu-col-links"><li 4032 style="text-align:left;padding:0px 0px 0px 0px;" 4033 > 4034 <a href="/collections/accessories"><span class="mega-link-text">
4035 <span class="mega-link-name"> 4036 Cases & Mounts�</span><span class="mega-link-sub">Protect and secure your gear.</span></span> 4037 </a> 4038 </li><li 4039 style="text-align:left;padding:0px 0px 0px 0px;" 4040 > 4041 <a href="/collections/replacement-parts"><span class="mega-link-text"> 4042 <span class="mega-link-name"> 4043 Replacement Parts�</span><span class="mega-link-sub">Genuine parts + Extend Protection Plan</span></span> 4044 </a> 4045 </li></ul> 4046 </div><div class="mega-menu-col" 4047 style="text-align:left;padding:0px 0px 0px 0px;" 4048 > 4049 <div class="mega-menu-col-heading">Resources</div><ul class="mega-menu-col-links"><li 4050 style="text-align:left;padding:0px 0px 0px 0px;" 4051 > 4052 <a href="https://greenbooks.com/?utm_source=Website&utm_medium=product&utm_campaign=sales&utm_content=learn+more" class="mega-link--has-img" target="_blank" rel="noopener noreferrer"><img class="mega-link-img" src="//www.bushnellgolf.com/cdn/shop/files/green-books-menu__66107.original.png?v=1785443625&width=320" alt="Greenbooks" width="160" height="160" style="width:160px;height:auto;" loading="lazy"><span class="mega-link-text"> 4053 <span class="mega-link-name"> 4054 Greenbooks�</span><span class="mega-link-sub">The #1 course guide, used by tour caddies.</span></span> 4055 </a> 4056 </li></ul> 4057 </div></div></div><div class="mega-menu-footer"><div class="mega-menu-promo"> 4058 Genuine Bushnell parts and guides 4059 </div><a href="/collections/accessories" class="mega-menu-shop-all"> 4060 SHOP ALL ACCESSORIES 4061 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 4062 </a></div></div> 4063 </div> 4064</nav><div class="mobile-overlay" data-drawer-overlay></div> 4065<div class="mobile-drawer" data-mobile-drawer> 4066 <div class="mobile-drawer-header"> 4067 <a class="logo" href="/"><img src="//www.bushnellgolf.com/cdn/shop/files/Bushnell.png?v=1781040317&width=600" alt="Bushnell Golf" srcset="//www.bushnellgolf.com/cdn/shop/files/Bushnell.png?v=1781040317&width=352 352w, //www.bushnellgolf.com/cdn/shop/files/Bushnell.png?v=1781040317&width=600 600w" width="600" height="213" loading="eager" class="logo__image">�</a> 4068 <button class="mobile-drawer-close" aria-label="Close menu" data-drawer-close> 4069 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg> 4070 </button> 4071 </div> 4072 <div class="mobile-drawer-search"> 4073 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg> 4074 <form action="/search" method="get"> 4075 <input type="text" name="q" placeholder="Search products..." autocomplete="off" aria-label="Search products"> 4076 </form> 4077 </div> 4078 <div class="mobile-drawer-nav"><div class="mobile-accordion"> 4079 <button class="mobile-accordion-trigger" data-accordion-trigger> 4080 <span>RANGEFINDERS</span> 4081 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg> 4082 </button> 4083 <div class="mobile-accordion-panel" hidden><a class="mobile-accordion-link" href="/products/pro-x3-link" > 4084 <span class="mobile-accordion-link-row">
4085 <span class="mobile-accordion-link-name"> 4086 Pro X3+LINK�<span class="mega-link-badge mega-link-badge--bestseller">Best Seller</span></span> 4087 <span class="mobile-accordion-link-price">$599.99</span> 4088 </span><span class="mobile-accordion-link-sub">The most accurate rangefinder that Bushnell Golf has ever made.</span></a><a class="mobile-accordion-link" href="/products/tour-hybrid" > 4089 <span class="mobile-accordion-link-row"> 4090 <span class="mobile-accordion-link-name"> 4091 Tour Hybrid�</span> 4092 <span class="mobile-accordion-link-price">$499.99</span> 4093 </span><span class="mobile-accordion-link-sub">Slope Compensated Laser and GPS Distances in the display</span></a><a class="mobile-accordion-link" href="/products/tour-v7-shift" > 4094 <span class="mobile-accordion-link-row"> 4095 <span class="mobile-accordion-link-name"> 4096 Tour V7 Shift�<span class="mega-link-badge mega-link-badge--new">New</span></span> 4097 <span class="mobile-accordion-link-price">$399.99</span> 4098 </span><span class="mobile-accordion-link-sub">All-new Dual Color (red and green) OLED Display with Slope-Switch Technology.</span></a><a class="mobile-accordion-link" href="/products/a1-slope" > 4099 <span class="mobile-accordion-link-row"> 4100 <span class="mobile-accordion-link-name"> 4101 A1-Slope�</span> 4102 <span class="mobile-accordion-link-price">$299.99</span> 4103 </span><span class="mobile-accordion-link-sub">Precision and Slope gone ultra-compact.</span></a><a class="mobile-accordion-shopall" href="/collections/golf-rangefinders"> 4104 SHOP ALL RANGEFINDERS 4105 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 4106 </a></div> 4107 </div><div class="mobile-accordion"> 4108 <button class="mobile-accordion-trigger" data-accordion-trigger> 4109 <span>LAUNCH MONITORS</span> 4110 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg> 4111 </button> 4112 <div class="mobile-accordion-panel" hidden><a class="mobile-accordion-link" href="/products/launch-pro"> 4113 <span class="mobile-accordion-link-row"> 4114 <span class="mobile-accordion-link-name"> 4115 Launch Pro�<span class="mega-link-badge mega-link-badge--bestseller">Best Seller</span></span><span class="mobile-accordion-link-price">$2,999.99</span> 4116 </span><span class="mobile-accordion-link-sub">Indoor + Outdoor, Club + Ball</span></a><a class="mobile-accordion-link" href="/products/lpi-personal-launch-monitor"> 4117 <span class="mobile-accordion-link-row"> 4118 <span class="mobile-accordion-link-name"> 4119 Launch Pro Indoor�</span><span class="mobile-accordion-link-price">$1,999.99</span> 4120 </span><span class="mobile-accordion-link-sub">Indoor only, Club + Ball</span></a><a class="mobile-accordion-shopall" href="/collections/launch-monitors"> 4121 SHOP ALL LAUNCH MONITORS 4122 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 4123 </a></div> 4124 </div><div class="mobile-accordion"> 4125 <button class="mobile-accordion-trigger" data-accordion-trigger> 4126 <span>SIMULATORS</span> 4127 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg> 4128 </button> 4129 <div class="mobile-accordion-panel" hidden><a class="mobile-accordion-link" href="/products/launch-pro-simulator-bundle">
4130 <span class="mobile-accordion-link-row"> 4131 <span class="mobile-accordion-link-name"> 4132 Launch Pro Simulator Bundle�<span class="mega-link-badge mega-link-badge--bestseller">Best Seller</span></span><span class="mobile-accordion-link-price">$6,499.99</span> 4133 </span><span class="mobile-accordion-link-sub">Launch Pro (indoor + outdoor), Screen + enclosure</span></a><a class="mobile-accordion-link" href="/products/launch-pro-i-simulator-bundle"> 4134 <span class="mobile-accordion-link-row"> 4135 <span class="mobile-accordion-link-name"> 4136 Launch Pro i Simulator Bundle�</span><span class="mobile-accordion-link-price">$5,499.99</span> 4137 </span><span class="mobile-accordion-link-sub">Launch Pro i (indoor), Full sim setup</span></a><a class="mobile-accordion-shopall" href="/collections/golf-simulators"> 4138 SHOP ALL SIMULATORS 4139 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 4140 </a></div> 4141 </div><div class="mobile-accordion"> 4142 <button class="mobile-accordion-trigger" data-accordion-trigger> 4143 <span>Speakers</span> 4144 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg> 4145 </button> 4146 <div class="mobile-accordion-panel" hidden><a class="mobile-accordion-link" href="/products/wingman-hd" > 4147 <span class="mobile-accordion-link-row"> 4148 <span class="mobile-accordion-link-name"> 4149 Wingman HD�<span class="mega-link-badge mega-link-badge--new">New</span></span> 4150 <span class="mobile-accordion-link-price">$249.99</span> 4151 </span><span class="mobile-accordion-link-sub">3.5ⳠHD touchscreen + 360° audio</span></a><a class="mobile-accordion-link" href="/products/wingman-view" > 4152 <span class="mobile-accordion-link-row"> 4153 <span class="mobile-accordion-link-name"> 4154 Wingman View�</span> 4155 <span class="mobile-accordion-link-price">$199.99</span> 4156 </span><span class="mobile-accordion-link-sub">Visual + audible GPS · speaker</span></a><a class="mobile-accordion-link" href="/products/wingman-2-gps-speaker" > 4157 <span class="mobile-accordion-link-row"> 4158 <span class="mobile-accordion-link-name"> 4159 Wingman 2 GPS Speaker�</span> 4160 <span class="mobile-accordion-link-price">$169.99</span> 4161 </span><span class="mobile-accordion-link-sub">Audible GPS · BITE magnetic speaker</span></a><a class="mobile-accordion-link" href="/products/wingman-mini-gps-speaker" > 4162 <span class="mobile-accordion-link-row"> 4163 <span class="mobile-accordion-link-name"> 4164 Wingman Mini GPS Speaker�</span> 4165 <span class="mobile-accordion-link-price">$109.99</span> 4166 </span><span class="mobile-accordion-link-sub">Compact GPS speaker · walkers & riders</span></a><a class="mobile-accordion-shopall" href="/collections/golf-gps-speakers"> 4167 SHOP ALL SPEAKERS 4168 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 4169 </a></div> 4170 </div><div class="mobile-accordion"> 4171 <button class="mobile-accordion-trigger" data-accordion-trigger> 4172 <span>GPS</span> 4173 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg> 4174 </button> 4175 <div class="mobile-accordion-panel" hidden><a class="mobile-accordion-link" href="/products/ion-elite" >
4176 <span class="mobile-accordion-link-row"> 4177 <span class="mobile-accordion-link-name"> 4178 iON Elite�</span> 4179 <span class="mobile-accordion-link-price">$219.99</span> 4180 </span><span class="mobile-accordion-link-sub">Slope GPS watch · preloaded courses</span></a><a class="mobile-accordion-link" href="/products/phantom-3-slope-gps" > 4181 <span class="mobile-accordion-link-row"> 4182 <span class="mobile-accordion-link-name"> 4183 Phantom 3 Slope GPS�</span> 4184 <span class="mobile-accordion-link-price">$169.99</span> 4185 </span><span class="mobile-accordion-link-sub">Slope touchscreen GPS · front/center/back</span></a><a class="mobile-accordion-shopall" href="/collections/golf-gps"> 4186 SHOP ALL GPS 4187 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 4188 </a></div> 4189 </div><div class="mobile-accordion"> 4190 <button class="mobile-accordion-trigger" data-accordion-trigger> 4191 <span>ACCESSORIES</span> 4192 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg> 4193 </button> 4194 <div class="mobile-accordion-panel" hidden><div class="mobile-accordion-group"> 4195 <div class="mobile-accordion-heading">Shop</div><a class="mobile-accordion-link" href="/collections/accessories"><span class="mobile-accordion-link-text"> 4196 <span class="mobile-accordion-link-row"> 4197 <span class="mobile-accordion-link-name"> 4198 Cases & Mounts�</span></span><span class="mobile-accordion-link-sub">Protect and secure your gear.</span></span> 4199 </a><a class="mobile-accordion-link" href="/collections/replacement-parts"><span class="mobile-accordion-link-text"> 4200 <span class="mobile-accordion-link-row"> 4201 <span class="mobile-accordion-link-name"> 4202 Replacement Parts�</span></span><span class="mobile-accordion-link-sub">Genuine parts + Extend Protection Plan</span></span> 4203 </a></div><div class="mobile-accordion-group"> 4204 <div class="mobile-accordion-heading">Resources</div><a class="mobile-accordion-link mobile-accordion-link--has-img" href="https://greenbooks.com/?utm_source=Website&utm_medium=product&utm_campaign=sales&utm_content=learn+more" target="_blank" rel="noopener noreferrer"><img class="mobile-accordion-link-img" src="//www.bushnellgolf.com/cdn/shop/files/green-books-menu__66107.original.png?v=1785443625&width=88" alt="Greenbooks" width="44" height="44" style="width:44px;height:auto;" loading="lazy"><span class="mobile-accordion-link-text"> 4205 <span class="mobile-accordion-link-row"> 4206 <span class="mobile-accordion-link-name"> 4207 Greenbooks�</span></span><span class="mobile-accordion-link-sub">The #1 course guide, used by tour caddies.</span></span> 4208 </a></div><a class="mobile-accordion-shopall" href="/collections/accessories"> 4209 SHOP ALL ACCESSORIES 4210 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 4211 </a></div> 4212 </div><a class="mobile-drawer-link" href="/pages/contact">Contact Us</a><a class="mobile-drawer-link" href="/pages/support">Support</a><a class="mobile-drawer-link" href="/collections/sale">Sale</a></div> 4213 <div class="mobile-drawer-footer"> 4214 FREE SHIPPING on orders over $99 4215 </div> 4216</div> 4217
4218<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell-header-user-menu.js?v=136142066710242377001790611765" defer></script>
4218 4219 4220 4221</div><div class="search-overlay-backdrop" data-search-backdrop></div> 4222 <div class="search-overlay" data-search-overlay> 4223 <div class="search-overlay-inner"> 4224 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="20" height="20" style="color:var(--grey-500);flex-shrink:0;"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg> 4225 <form action="/search" method="get" style="flex:1;display:flex;"> 4226 <input type="text" name="q" class="search-overlay-input" placeholder="Search rangefinders, GPS, launch monitors..." autocomplete="off"> 4227 <input type="hidden" name="type" value="product"> 4228 </form> 4229 <button class="search-overlay-close" data-search-close aria-label="Close search"> 4230 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg> 4231 </button> 4232 </div> 4233 </div> 4234 4235 <main id="MainContent" role="main"> 4236 <section id="shopify-section-template--28919389880504__main" class="shopify-section bushnell-contact"><style> 4237 #shopify-section-template--28919389880504__main h1, 4238 #shopify-section-template--28919389880504__main h2, 4239 #shopify-section-template--28919389880504__main h3 { font-family: 'Industry Bold', sans-serif; } 4240 #shopify-section-template--28919389880504__main p, 4241 #shopify-section-template--28919389880504__main span, 4242 #shopify-section-template--28919389880504__main a, 4243 #shopify-section-template--28919389880504__main button, 4244 #shopify-section-template--28919389880504__main label, 4245 #shopify-section-template--28919389880504__main input, 4246 #shopify-section-template--28919389880504__main select, 4247 #shopify-section-template--28919389880504__main textarea, 4248 #shopify-section-template--28919389880504__main div { font-family: 'Acumin Pro', sans-serif; } 4249 4250 .bgct-wrap { background: #F7F3EE; } 4251 .bgct-inner { max-width: 1200px; margin: 0 auto; padding: 0 40px; } 4252 .bgct-hero { background: #1E252B; background-image: radial-gradient(circle at 85% 10%, rgba(254,80,0,0.08), transparent 55%); padding: 64px 0 56px; } 4253 .bgct-hero-stack { display: flex; flex-direction: column; gap: 18px; }
4254 .bgct-eyebrow { font-size: 11px; font-weight: 500; letter-spacing: 2px; text-transform: uppercase; color: #FE5000; } 4255 .bgct-h1 { margin: 0; font-size: 56px; line-height: 1.05; letter-spacing: 1px; text-transform: uppercase; color: #fff; } 4256 .bgct-h1 em { font-style: normal; color: #FE5000; } 4257 .bgct-hero-sub { margin: 0; font-size: 16px; line-height: 1.6; color: rgba(255,255,255,0.6); max-width: 60ch; } 4258 .bgct-stats { display: flex; gap: 28px; flex-wrap: wrap; margin-top: 10px; } 4259 .bgct-stat { display: flex; flex-direction: column; gap: 4px; } 4260 .bgct-stat b { font-family: 'Industry Bold', sans-serif; font-weight: 400; font-size: 30px; line-height: 1; color: #FE5000; } 4261 .bgct-stat span { font-size: 11px; font-weight: 500; letter-spacing: 1.5px; text-transform: uppercase; color: rgba(255,255,255,0.45); } 4262 4263 .bgct-section { padding-top: 56px; } 4264 .bgct-section-last { padding-bottom: 56px; } 4265 .bgct-h2 { margin: 0 0 6px; font-size: 34px; line-height: 1.1; letter-spacing: 1px; text-transform: uppercase; color: #1E252B; } 4266 .bgct-h2 em { font-style: normal; color: #FE5000; } 4267 .bgct-sub { margin: 0 0 24px; font-size: 15px; line-height: 1.6; color: #6B6B6B; max-width: 70ch; } 4268 4269 .bgct-channels { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 14px; } 4270 .bgct-chan { display: flex; flex-direction: column; gap: 10px; background: #fff; border: 1px solid #E5E1DC; border-radius: 12px; padding: 24px 22px; transition: box-shadow 0.3s ease, transform 0.3s ease; } 4271 .bgct-chan:hover { transform: translateY(-4px); box-shadow: 0 12px 40px rgba(30,37,43,0.10); } 4272 .bgct-chan-scope { font-size: 10px; font-weight: 500; letter-spacing: 1.5px; text-transform: uppercase; color: #999; } 4273 .bgct-chan h3 { margin: 0; font-size: 17px; line-height: 1.25; letter-spacing: 0.5px; text-transform: uppercase; color: #1E252B; } 4274 .bgct-chan p { margin: 0; font-size: 13px; line-height: 1.55; color: #6B6B6B; flex: 1; } 4275 .bgct-chan-tel { display: flex; align-items: center; gap: 10px; font-size: 15px; font-weight: 600; color: #1E252B; text-decoration: none; } 4276 .bgct-chan-tel:hover { color: #FE5000; } 4277 .bgct-chan-tel svg { width: 15px; height: 15px; fill: none; stroke: #FE5000; stroke-width: 2; } 4278 .bgct-chan-mail { font-size: 11px; font-weight: 500; letter-spacing: 1.5px; text-transform: uppercase; color: #FE5000; text-decoration: none; } 4279 4280 .bgct-notices { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 14px; margin-top: 14px; } 4281 .bgct-notice { display: flex; gap: 14px; align-items: flex-start; background: #fff; border: 1px solid #E5E1DC; border-radius: 12px; padding: 18px 20px; } 4282 .bgct-notice.bgct-warn { background: rgba(254,80,0,0.06); border-color: rgba(254,80,0,0.30); } 4283 .bgct-notice svg { width: 20px; height: 20px; flex-shrink: 0; fill: none; stroke: #FE5000; stroke-width: 2; margin-top: 2px; } 4284 .bgct-notice b { display: block; font-size: 13px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; color: #1E252B; margin-bottom: 4px; } 4285 .bgct-notice p { margin: 0; font-size: 13px; line-height: 1.55; color: #6B6B6B; } 4286 .bgct-notice a { color: #FE5000; font-weight: 600; text-decoration: none; } 4287 4288 .bgct-grid { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 24px; align-items: start; } 4289 .bgct-intl-panel { background: #fff; border: 1px solid #E5E1DC; border-radius: 16px; padding: 28px; display: flex; flex-direction: column; gap: 18px; min-width: 0; } 4290 .bgct-intl-panel h2 { margin: 0; font-size: 26px; line-height: 1.15; letter-spacing: 0.5px; text-transform: uppercase; color: #1E252B; } 4291 .bgct-intl-panel .bgct-formsub { margin: 0; font-size: 14px; line-height: 1.6; color: #6B6B6B; } 4292 .bgct-intl-dept { background: #F7F3EE; border: 1px solid #E5E1DC; border-radius: 12px; padding: 20px 22px; display: flex; flex-direction: column; gap: 10px; } 4293 .bgct-intl-dept .bgct-org { font-size: 13px; line-height: 1.55; color: #6B6B6B; overflow-wrap: anywhere; } 4294 .bgct-intl-dept-rows { display: flex; flex-direction: column; } 4295 .bgct-intl-h3 { margin: 0 0 4px; font-size: 15px; font-weight: 600; letter-spacing: 0.5px; text-transform: uppercase; color: #1E252B; } 4296 .bgct-intl-card .bgct-web { display: inline-block; margin-top: 2px; font-size: 11px; font-weight: 500; letter-spacing: 1.5px; color: #FE5000; text-decoration: none;
4296 overflow-wrap: anywhere; } 4297 .bgct-rail { display: flex; flex-direction: column; gap: 16px; min-width: 0; } 4298 .bgct-card { background: #fff; border: 1px solid #E5E1DC; border-radius: 12px; padding: 24px 22px; display: flex; flex-direction: column; gap: 12px; } 4299 .bgct-card .bgct-cardsub { font-size: 14px; line-height: 1.6; color: #6B6B6B; } 4300 .bgct-phone-row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; border-bottom: 1px solid #F0ECE7; padding-bottom: 10px; flex-wrap: wrap; } 4301 .bgct-phone-row span { font-size: 13px; color: #6B6B6B; } 4302 .bgct-phone-row a { font-size: 14px; font-weight: 600; color: #1E252B; text-decoration: none; overflow-wrap: anywhere; } 4303 .bgct-phone-row a:hover { color: #FE5000; } 4304 .bgct-mail { background: #1E252B; border: 0; } 4305 .bgct-mail .bgct-addr { font-size: 14px; line-height: 1.7; color: rgba(255,255,255,0.6); } 4306 .bgct-mail .bgct-mailnote { font-size: 12px; line-height: 1.5; color: rgba(255,255,255,0.3); } 4307 .bgct-card .bgct-link { font-size: 11px; font-weight: 500; letter-spacing: 1.5px; text-transform: uppercase; color: #FE5000; text-decoration: none; } 4308 4309 .bgct-intl { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; } 4310 .bgct-intl-card { display: flex; flex-direction: column; gap: 6px; background: #fff; border: 1px solid #E5E1DC; border-radius: 12px; padding: 20px; min-width: 0; } 4311 .bgct-intl-card b { font-size: 14px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; color: #1E252B; } 4312 .bgct-intl-card .bgct-org { font-size: 13px; line-height: 1.55; color: #6B6B6B; overflow-wrap: anywhere; } 4313 .bgct-intl-card .bgct-ph { font-size: 13px; color: #1E252B; } 4314 .bgct-intl-card .bgct-em { font-size: 13px; color: #FE5000; overflow-wrap: anywhere; text-decoration: none; } 4315 .bgct-intl-card .bgct-em:hover { text-decoration: underline; } 4316 4317 @media screen and (min-width: 990px) { 4318 .bgct-rail { position: sticky; top: 24px; } 4319 } 4320 @media screen and (max-width: 989px) { 4321 .bgct-inner { padding: 0 20px; } 4322 .bgct-h1 { font-size: 42px; } 4323 .bgct-grid { grid-template-columns: minmax(0, 1fr); } 4324 .bgct-rail { order: -1; } 4325 } 4326 @media screen and (max-width: 749px) { 4327 .bgct-hero { padding: 44px 0 40px; } 4328 .bgct-h1 { font-size: 32px; } 4329 .bgct-h2 { font-size: 26px; } 4330 .bgct-section { padding-top: 40px; } 4331 .bgct-section-last { padding-bottom: 40px; } 4332 .bgct-intl-panel { padding: 22px; } 4333 .bgct-intl { grid-template-columns: 1fr; } 4334 } 4335</style> 4336 4337<div class="bgct-wrap"> 4338 4339 <div class="bgct-hero"> 4340 <div class="bgct-inner bgct-hero-stack"> 4341 <span class="bgct-eyebrow">Support</span> 4342 <h1 class="bgct-h1">Contact Us</h1> 4343 <p class="bgct-hero-sub">We're here to help. You'll talk to representatives who understand your passion for the game of golf.</p> 4344 <div class="bgct-stats"> 4345 <div class="bgct-stat"><a href="tel:8448750045"><b>(844) 875-0045</b></a><span>General Support</span></div> 4346 <div class="bgct-stat"><b>MonâFri</b><span>MonâThu 9:00 amâ4:00 pm · Fri 9:00 amâ2:00 pm CST</span></div> 4347 <div class="bgct-stat"><b>24â48 hrs</b><span>Email Response Time</span></div> 4348 </div> 4349 </div> 4350 </div> 4351 4352 <div class="bgct-inner bgct-section"> 4353 <h2 class="bgct-h2">Choose your support team</h2> 4354 <p class="bgct-sub">Each product line is supported by its own team. Select the one that matches your product.</p> 4355 4356 <div class="bgct-channels"> 4357 <div class="bgct-chan"> 4358 <span class="bgct-chan-scope">Rangefinders · GPS · Accessories</span> 4359 <h3>Bushnell Golf General Support</h3> 4360 <p>Devices, orders, returns, repairs, and the Bushnell Golf Mobile app.</p> 4361 <a class="bgct-chan-tel" href="tel:8448750045"><svg viewBox="0 0 24 24"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.9
43611.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z"/></svg>(844) 875-0045</a><a class="bgct-chan-tel" href="https://bushnellgolf.zendesk.com/hc/en-us/requests/new?ticket_form_id=43846546595731" target="_blank" rel="noopener"><svg viewBox="0 0 24 24"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/></svg>Email general support</a></div> 4362 <div class="bgct-chan"> 4363 <span class="bgct-chan-scope">Greenbooks · Course Guides</span> 4364 <h3>Greenbooks & Mapping Support</h3> 4365 <p>Course guide orders, mapping questions, and course updates.</p> 4366 <a class="bgct-chan-tel" href="tel:8779770162"><svg viewBox="0 0 24 24"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z"/></svg>(877) 977-0162</a><a class="bgct-chan-tel" href="https://www.golflogix.com/page/contact-us-2/" target="_blank" rel="noopener"><svg viewBox="0 0 24 24"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/></svg>Email Greenbooks and Mapping support</a></div> 4367 <div class="bgct-chan"> 4368 <span class="bgct-chan-scope">Launch Pro · LPi · Foresight+</span> 4369 <h3>Launch Pro Support</h3> 4370 <p>Launch monitors, simulator bundles, and Foresight+ software.</p> 4371 <a class="bgct-chan-tel" href="tel:8584444440"><svg viewBox="0 0 24 24"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z"/></svg>(858) 444-4440</a><a class="bgct-chan-tel" href="https://www.foresightsports.com/contact-support" target="_blank" rel="noopener"><svg viewBox="0 0 24 24"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/></svg>Email Launch Pro support</a></div> 4372 </div> 4373 4374 <div class="bgct-notices"> 4375 <div class="bgct-notice bgct-warn"> 4376 <svg viewBox="0 0 24 24"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg> 4377 <div><b>Returning a product? Contact us first.</b> 4378 <p>Return addresses vary by product type, and all returns must be approved by a customer service team member before shipping. <a href="/pages/returns">See the returns process</a></p></div> 4379 </div> 4380 <div class="bgct-notice"> 4381 <svg viewBox="0 0 24 24"><rect x="5" y="2" width="14" height="20" rx="2"/><line x1="12" y1="18" x2="12.01" y2="18"/></svg> 4382 <div><b>Wingman users: legacy app discontinued</b> 4383 <p>The orange legacy app has ended support. Download the new Bushnell Golf Mobile app , create a new account, and remove the Wingman from your phone's Bluetooth settings before re-pairing.</p></div> 4384 </div> 4385 </div> 4386 </div> 4387 4388 <div class="bgct-inner bgct-section bgct-section-last"> 4389 <div class="bgct-grid"> 4390 <div class="bgct-intl-panel"> 4391 <div> 4392 <span class="bgct-eyebrow">International</span> 4393 <h2 style="margin-top: 4px;">Outside the U.S.?</h2> 4394 <p class="bgct-formsub" style="margin-top: 6px;">Non-U.S. based distributors or retailers looking to reach our International customer support or sales team can contact our International Department below. Retailers and consumers looking for their local distributor can find territory contacts further down.</p> 4395 </div> 4396 4397 <div class="bgct-intl-dept"> 4398 <span class="bgct-intl-h3">International Department</span> 4399 <span class="bgct-org">Bushnell Corporation<br>9955 Black Mountain Rd, San Diego, CA 92126</span> 4400 <div class="bgct-intl-dept-rows"><div class="bgct-phone-row"><span>Phone</span><a href="tel:9137523400">(913) 752-3400</a></div><div class="bgct-phone-row"><span>Fax</span><a href="tel:9137523572">(913) 752-3572</a></div><div class="bgct-phone-row" style="border-bottom: 0; padding-bottom: 0;"><span>Contact</span><a href="mailto:[email protected]">[email protected]</a></div></div> 4401 </div><div>
4402 <span class="bgct-intl-h3">Distributor Territories</span> 4403 <div class="bgct-intl"><div class="bgct-intl-card" > 4404 <b>United Kingdom</b> 4405 <span class="bgct-org">Bushnell-UK â Optimum Golf Technologies Ltd, The Pines Trading Estate, 16 Broad St, Guildford GU3 3BH</span><span class="bgct-ph">+44 1483 779225</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a><a class="bgct-web" href="https://bushnellgolfeurope.com" target="_blank" rel="noopener">bushnellgolfeurope.com</a></div><div class="bgct-intl-card" > 4406 <b>Europe</b> 4407 <span class="bgct-org">Bushnell-Europe â Optimum Golf Technologies Ltd, The Pines Trading Estate, 16 Broad St, Guildford GU3 3BH</span><span class="bgct-ph">+44 1483 779225</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a><a class="bgct-web" href="https://bushnellgolfeurope.com" target="_blank" rel="noopener">bushnellgolfeurope.com</a></div><div class="bgct-intl-card" > 4408 <b>Scandinavia</b> 4409 <span class="bgct-org">PAR Golf â Terminalgatan 2, 235 39 Vellinge</span><span class="bgct-ph">040 - 641 72 00</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a><a class="bgct-web" href="https://pargolf.se" target="_blank" rel="noopener">pargolf.se</a></div><div class="bgct-intl-card" > 4410 <b>Australia</b> 4411 <span class="bgct-org">Champion Sports PTY LTD â 1b Myer Court, Beverley, South Australia 5009</span><span class="bgct-ph">08 8268 5841</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a></div><div class="bgct-intl-card" > 4412 <b>New Zealand</b> 4413 <span class="bgct-org">New Zealand Golf Distributors â 200 Broadway Avenue, PO Box 277, Palmerston North 4410</span><span class="bgct-ph">(06) 357 4749</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a></div><div class="bgct-intl-card" > 4414 <b>Southeast Asia</b> 4415 <span class="bgct-org">Sun Golf Pte Ltd â 68 Kallang Pudding Road, #03-01 SYH Logistics Building, Singapore 349327</span><span class="bgct-ph">+65 9836 6062</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a></div><div class="bgct-intl-card" > 4416 <b>Korea</b> 4417 <span class="bgct-org">KANE Co., Ltd â 6F, 156, Nonhyeon-ro, Gangnam-gu, Seoul</span><span class="bgct-ph">(+82) 1644-4006, (+82) 2-6214-9521</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a><a class="bgct-web" href="https://bushnellgolfkorea.co.kr" target="_blank" rel="noopener">bushnellgolfkorea.co.kr</a></div><div class="bgct-intl-card" > 4418 <b>Japan</b> 4419 <span class="bgct-org">Hanshin Commercial â New Kyoei Bldg, 2-5-6 Shibata, Kita-ku, Osaka 530-0012</span><span class="bgct-ph">+81-6-6371-8548</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a></div><div class="bgct-intl-card" > 4420 <b>UAE</b> 4421 <span class="bgct-org">Prosports International â PO Box 26723, Dubai, UAE</span><span class="bgct-ph">+971 4 347 7737</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a></div><div class="bgct-intl-card" > 4422 <b>South Africa</b> 4423 <span class="bgct-org">ULTIMO / BPO SA LTD â B4 Avant-Garde Ave, Northlands Deco Park, North Riding 2169</span><span class="bgct-ph">+27 (0) 11 785 4700</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a></div><div class="bgct-intl-card" > 4424 <b>India</b> 4425 <span class="bgct-org">Zaverchand Sports Pvt Ltd â Unit 61/62, 6th Floor, Shanti Bldg, Banaji St, Mumbai 400 001</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a></div><div class="bgct-intl-card" > 4426 <b>Switzerland</b>
4427 <span class="bgct-org">OptiLink AG â Poststrasse 10 / Rue de la poste 10, 2504 Biel/Bienne</span><span class="bgct-ph">+41 32 323 56 66</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a></div><div class="bgct-intl-card" > 4428 <b>Slovakia</b> 4429 <span class="bgct-org">Golf in One, s.r.o. â Galvaniho 35a, 82104 Bratislava</span><span class="bgct-ph">+421 948 012 233</span><a class="bgct-em" href="mailto:[email protected]">[email protected]</a></div></div> 4430 </div></div> 4431 <div class="bgct-rail"> 4432 <div class="bgct-card"> 4433 <span class="bgct-eyebrow">By Phone</span> 4434 <span class="bgct-cardsub">MonâThu 9:00 amâ4:00 pm · Fri 9:00 amâ2:00 pm CST. Calling about a product issue? <strong>Have the product within reach.</strong></span> 4435 <div class="bgct-phone-row"><span>General Support</span><a href="tel:8448750045">(844) 875-0045</a></div> 4436 <div class="bgct-phone-row"><span>Greenbooks & Mapping</span><a href="tel:8779770162">(877) 977-0162</a></div> 4437 <div class="bgct-phone-row"><span>Launch Pro Support</span><a href="tel:8584444440">(858) 444-4440</a></div> 4438 <div class="bgct-phone-row"><span>Kansas City Area</span><a href="tel:9137523400">(913) 752-3400</a></div> 4439 <div class="bgct-phone-row"><span>Dealers</span><a href="tel:8002219035">(800) 221-9035</a></div> 4440 <div class="bgct-phone-row" style="border-bottom: 0; padding-bottom: 0;"><span>Fax</span><a href="tel:9137523550">(913) 752-3550</a></div> 4441 </div> 4442 4443 <div class="bgct-card bgct-mail"> 4444 <span class="bgct-eyebrow">By Mail</span> 4445 <span class="bgct-addr">ATTN: Bushnell Golf Support<br>9955 Black Mountain Rd<br>San Diego, CA 92126</span> 4446 <span class="bgct-mailnote">Do not mail a return without prior approval from a customer service agent â return addresses vary by product type.</span> 4447 </div> 4448 4449 <div class="bgct-card"> 4450 <span class="bgct-eyebrow">Replacement Parts</span> 4451 <span class="bgct-cardsub" style="font-size: 13px;">Battery doors, straps, and covers are available for purchase online â no support request needed.</span></div> 4452 </div> 4453 </div> 4454 </div> 4455 4456 4457</div> 4458 4459 4460</section> 4461 </main><div id="shopify-section-bushnell-footer" class="shopify-section"><link href="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell-footer-global.css?v=29849340986093782691790611765" rel="stylesheet" type="text/css" media="all" />�<style> 4462 /* ââ Typography ââ */ 4463 #shopify-section-bushnell-footer h1, #shopify-section-bushnell-footer h2, #shopify-section-bushnell-footer h3, 4464 #shopify-section-bushnell-footer h4, #shopify-section-bushnell-footer h5, #shopify-section-bushnell-footer h6 { 4465 font-family: 'Industry Bold', sans-serif; 4466 } 4467 #shopify-section-bushnell-footer p, #shopify-section-bushnell-footer li, 4468 #shopify-section-bushnell-footer span, #shopify-section-bushnell-footer a { 4469 font-family: 'Acumin Pro Medium', sans-serif; 4470 } 4471 4472 /* ââ Root ââ */ 4473 #shopify-section-bushnell-footer .bfooter { 4474 background-color: #1e252b; 4475 } 4476 4477 /* ââ Newsletter ââ */ 4478 #shopify-section-bushnell-footer .bfooter__nl-heading { font-family: 'Industry Bold', sans-serif; } 4479 #shopify-section-bushnell-footer .bfooter__nl-btn { font-family: 'Industry Bold', sans-serif; } 4480 4481 /* ââ Logo text fallback ââ */ 4482 #shopify-section-bushnell-footer .bfooter__logo { font-family: 'Industry Bold', sans-serif; } 4483 4484 /* ââ Main section padding (desktop) ââ */ 4485 #shopify-section-bushnell-footer .bfooter__main { 4486 padding-top: 64px; 4487 padding-bottom: 56px; 4488 } 4489 4490 /* ââ Desktop grid ââ */ 4491 #shopify-section-bushnell-footer .bfooter__grid { 4492 grid-template-columns: 1.6fr 1fr 1fr 1fr; 4493 gap: 40px; 4494 } 4495 4496 /* ââ Logo image width (desktop) ââ */ 4497 #shopify-section-bushnell-footer .bfooter__logo-img { width: 320px; } 4498 4499 /* ââ Tagline ââ */ 4500 #shopify-section-bushnell-footer .bfooter__tagline { 4501 font-size: 14px; 4502 color: #8899aa; 4503 } 4504 4505 /* ââ Column headings ââ */
4506 #shopify-section-bushnell-footer .bfooter__col-heading { 4507 font-family: 'Industry Bold', sans-serif; 4508 color: #fe5000; 4509 font-size: 11px; 4510 border-bottom-color: #2d3a44; 4511 } 4512 4513 /* ââ Column links ââ */ 4514 #shopify-section-bushnell-footer .bfooter__col-list a { 4515 color: #8899aa; 4516 font-size: 18px; 4517 } 4518 #shopify-section-bushnell-footer .bfooter__col-list a:hover { color: #ffffff; } 4519 4520 /* ââ Bottom bar ââ */ 4521 #shopify-section-bushnell-footer .bfooter__bottom { 4522 border-top-color: #2d3a44; 4523 padding-top: 20px; 4524 padding-bottom: 20px; 4525 } 4526 #shopify-section-bushnell-footer .bfooter__bottom-inner { 4527 flex-direction: column; 4528 align-items: center; 4529 justify-content: flex-start; 4530 } 4531 #shopify-section-bushnell-footer .bfooter__copyright { 4532 color: #dfdfdf; 4533 font-size: 16px; 4534 } 4535 #shopify-section-bushnell-footer .bfooter__policy-list a { 4536 color: #dfdfdf; 4537 font-size: 16px; 4538 } 4539 #shopify-section-bushnell-footer .bfooter__policy-list a:hover { color: #aabbcc; } 4540 #shopify-section-bushnell-footer .bfooter__policy-list li + li::before { background: #2d3a44; } 4541 #shopify-section-bushnell-footer .bfooter__copyright, 4542 #shopify-section-bushnell-footer .bfooter__policy-list { text-align: center; } 4543 4544 /* ââ Tablet ââ */ 4545 @media screen and (min-width: 750px) and (max-width: 989px) { 4546 #shopify-section-bushnell-footer .bfooter__main { 4547 padding-top: 48px; 4548 padding-bottom: 44px; 4549 } 4550 #shopify-section-bushnell-footer .bfooter__grid { 4551 grid-template-columns: 1fr 1fr; 4552 gap: 32px; 4553 } 4554 #shopify-section-bushnell-footer .bfooter__logo-img { width: 140px; } 4555 } 4556 4557 /* ââ Mobile ââ */ 4558 @media screen and (max-width: 749px) { 4559 #shopify-section-bushnell-footer .bfooter__main { 4560 padding-top: 40px; 4561 padding-bottom: 36px; 4562 } 4563 #shopify-section-bushnell-footer .bfooter__grid { 4564 grid-template-columns: 1fr; 4565 gap: 28px; 4566 } 4567 #shopify-section-bushnell-footer .bfooter__logo-img { width: 200px; } 4568 #shopify-section-bushnell-footer .bfooter__brand, 4569 #shopify-section-bushnell-footer .bfooter__col { text-align: center; } 4570 #shopify-section-bushnell-footer .bfooter__social { justify-content: center; } 4571 } 4572 4573 /* ââ Desktop alignment (min-width guard prevents overriding mobile/tablet) ââ */ 4574 @media screen and (min-width: 990px) { 4575 #shopify-section-bushnell-footer .bfooter__brand, 4576 #shopify-section-bushnell-footer .bfooter__col { text-align: left; } 4577 #shopify-section-bushnell-footer .bfooter__social { justify-content: flex-start; } 4578 } 4579 4580 /* ââ Tablet alignment ââ */ 4581 @media screen and (min-width: 750px) and (max-width: 989px) { 4582 #shopify-section-bushnell-footer .bfooter__brand, 4583 #shopify-section-bushnell-footer .bfooter__col { text-align: center; } 4584 #shopify-section-bushnell-footer .bfooter__social { justify-content: center; } 4585 } 4586 4587 /* ââ Per-block: Social & Newsletter column ââ */#bfooter-snl-social_newsletter_ntQEeN .bfooter__social-link { 4588 width: 46px; 4589 height: 46px; 4590 border-color: #2d3a44; 4591 color: #8899aa; 4592 } 4593 #bfooter-snl-social_newsletter_ntQEeN .bfooter__social-link svg { 4594 width: 24px; 4595 height: 24px; 4596 } 4597 #bfooter-snl-social_newsletter_ntQEeN .bfooter__social-link:hover { 4598 border-color: #fe5000; 4599 color: #fe5000; 4600 background-color: #1a1f24; 4601 } 4602 #bfooter-snl-social_newsletter_ntQEeN .bfooter__col-nl-label { 4603 color: #7a8ea0; 4604 font-size: 16px; 4605 } 4606 #bfooter-snl-social_newsletter_ntQEeN .bfooter__col-nl-input { 4607 background: #262f37; 4608 border-color: #2d3a44; 4609 color: #ffffff; 4610 font-size: 14px; 4611 } 4612 #bfooter-snl-social_newsletter_ntQEeN .bfooter__col-nl-btn { 4613 background: #fe5000; 4614 color: #ffffff; 4615 font-size: 14px; 4616 } 4617 #bfooter-snl-social_newsletter_ntQEeN .bfooter__col-nl-btn:hover { 4618 background: #d94500; 4619 } 4620 #bfooter-snl-social_newsletter_ntQEeN .bfooter__kl-btn { 4621 background-color: #fe5000; 4622 color: #ffffff; 4623 border: 0px solid #fe5000; 4624 border-radius: 4px; 4625 font-size: 14px; 4626 font-weight: 700; 4627 text-transform: uppercase; 4628 padding: 12px 24px; 4629 width: auto; 4630 } 4631 #bfooter-snl-social_newsletter_ntQEeN .bfooter__kl-btn:hover { 4632 background-color: #d94500; 4633 color: #ffffff; 4634 }/* Klaviyo popup trigger button â shared structural rules */ 4635 #shopify-section-bushnell-footer .bfooter__kl-btn { 4636 display: inline-block; 4637 cursor: pointer; 4638 line-height: 1; 4639 letter-spacing: 0.05em; 4640 text-decoration: none; 4641 transition: background-color 0.2s ease, color 0.2s ease; 4642 } 4643</style> 4644 4645<footer class="bfooter" id="footer" role="contentinfo"><div class="bfooter__main">
4646 <div class="bfooter__container"> 4647 <div class="bfooter__grid"><div class="bfooter__brand"><a href="/" class="bfooter__logo-img-link" aria-label="Bushnell Golf home"> 4648 <img 4649 src="//www.bushnellgolf.com/cdn/shop/files/Bushnell_logo_In_Golf.png?v=1780518942&width=320" 4650 srcset="//www.bushnellgolf.com/cdn/shop/files/Bushnell_logo_In_Golf.png?v=1780518942&width=320 1x, //www.bushnellgolf.com/cdn/shop/files/Bushnell_logo_In_Golf.png?v=1780518942&width=640 2x" 4651 alt="Bushnell Golf" 4652 class="bfooter__logo-img" 4653 width="320" 4654 height="290" 4655 loading="lazy" 4656 > 4657 </a></div><div class="bfooter__col bfooter__col--wide" ><ul class="bfooter__col-list" role="list"><li><a href="/pages/media">Media</a></li><li><a href="/collections/golf-simulators">Simulator Bundles</a></li><li><a href="/pages/contact">Contact Us</a></li><li><a href="/pages/support">Support</a></li><li><a href="https://customers.extend.com/en-US/warranty_terms/10001-misc-elec-adh-replace-1y" target="_blank" rel="noopener noreferrer">Extend Protection Plan</a></li><li><a href="/pages/military-discount">Military Discount</a></li><li><a href="/pages/product-registration">Product Registration</a></li><li><a href="/collections/all-products">All Products</a></li><li><a href="/pages/returns">Returns</a></li><li><a href="/pages/shipping-delivery">Shipping & Delivery</a></li><li><a href="/pages/affiliate-program">Affiliate Program</a></li><li><a href="/pages/about-bushnell-golf">About Bushnell Golf</a></li><li><a href="/collections/previous-generations">Previous Generations</a></li><li><a href="/pages/cookie-policy">Cookie Policy</a></li></ul></div><div class="bfooter__col" id="bfooter-snl-social_newsletter_ntQEeN" ><nav class="bfooter__social" aria-label="Social media"><a href="https://www.facebook.com/BushnellGolf" class="bfooter__social-link" aria-label="Facebook" target="_blank" rel="noopener noreferrer"> 4658 <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"/></svg> 4659 </a><a href="https://www.instagram.com/bushnellgolf/" class="bfooter__social-link" aria-label="Instagram" target="_blank" rel="noopener noreferrer"> 4660 <svg viewBox="0 0 24 24" aria-hidden="true"><rect x="2" y="2" width="20" height="20" rx="5"/><path d="M16 11.37A4 4 0 1112.63 8 4 4 0 0116 11.37z"/><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"/></svg> 4661 </a><a href="https://www.youtube.com/user/BushnellGolf/featured" class="bfooter__social-link" aria-label="YouTube" target="_blank" rel="noopener noreferrer"> 4662 <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M22.54 6.42a2.78 2.78 0 00-1.94-1.96C18.88 4 12 4 12 4s-6.88 0-8.59.46a2.78 2.78 0 00-1.95 1.96A29 29 0 001 12a29 29 0 00.46 5.58A2.78 2.78 0 003.41 19.6C5.12 20 12 20 12 20s6.88 0 8.59-.4a2.78 2.78 0 001.95-1.98A29 29 0 0023 12a29 29 0 00-.46-5.58z"/><polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"/></svg> 4663 </a></nav>
4663<div class="bfooter__col-nl bfooter__col-nl--spaced"><p class="bfooter__col-nl-label">Get the latest golf tips and exclusive deals.</p><button type="button" class="bfooter__kl-btn" data-kl-form="XeLsMZ">Subscribe</button></div></div></div> 4664 </div> 4665 </div> 4666 4667 <div class="bfooter__bottom"> 4668 <div class="bfooter__container"> 4669 <div class="bfooter__bottom-inner"> 4670 4671 <p class="bfooter__copyright"> 4672 © 2026 Bushnell Golf. All Rights Reserved. 4673 </p><ul class="bfooter__policy-list" role="list" aria-label="Legal links"><li><a href="https://www.revelyst.com/privacy-policy.html" target="_blank" rel="noopener noreferrer">Privacy Policy</a></li><li><a href="https://www.revelyst.com/termsconditions.html" target="_blank" rel="noopener noreferrer">Terms & Conditions</a></li><li><a href="https://www.revelyst.com/supply-chain-disclosure.html" target="_blank" rel="noopener noreferrer">California/UK Supply Chain Disclosure</a></li><li><a href="https://www.revelyst.com/do-not-sell-or-share-my-info.html" target="_blank" rel="noopener noreferrer">Do Not Sell or Share My Info</a></li><li><a href="https://www.revelyst.com/accessibility.html" target="_blank" rel="noopener noreferrer">Accessibility</a></li><li><a href="https://www.revelyst.com/patents.html" target="_blank" rel="noopener noreferrer">Patents</a></li></ul></div> 4674 </div> 4675 </div> 4676 4677</footer> 4678
4679<script> 4680 document.querySelectorAll('.bfooter__kl-btn[data-kl-form]').forEach(function(btn) { 4681 btn.addEventListener('click', function() { 4682 window._klOnsite = window._klOnsite || []; 4683 window._klOnsite.push(['openForm', btn.getAttribute('data-kl-form')]); 4684 }); 4685 }); 4686</script>
4686 4687 4688 4689</div>
4689<script>window.BN_GP_PCT = 0;</script>
4689<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell.js?v=104067278944737574051790611765" defer></script>
4689 4690
4690<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell-buy-now-patch.js?v=119937881875179874721790611764" defer></script>
4690 4691
4691<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell-cro-patch.js?v=107937624809619826151790611765" defer></script>
4691 4692
4692<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/bushnell-fitcheck.js?v=163253238342203939681790611765" defer></script>
4692<!-- === Bushnell Golf Body Scripts === --><!-- VenoBox lightbox -->
4692<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/venobox.min.js" defer></script>
vendor: 2 bytes, line 4692
4692
4693<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/venobox-modal.js?v=133750148818771280501790611765" defer></script>
4693<!-- AddShoppers sharing/referral pixel -->
4693<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/addshoppers-pixel.js?v=148152654428339958861790611766" defer></script>
4693<!-- AudioHook visitor ID + IP tag -->
4693<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/audiohook-img-tag.js?v=174756476640014750461790611766" defer></script>
4693<!-- IE browser detection (adds ie-browser class to <body>) -->
4693<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/ie-browser-detect.js?v=90317604072761044421790611764" defer></script>
4693<!-- Geo "Visiting from Europe?" popup --><link href="//www.bushnellgolf.com/cdn/shop/t/133/assets/country-popup.css?v=103088157342459723301790611765" rel="stylesheet" type="text/css" media="all" /> 4694 4695<div class="popup-overlay" id="popup-overlay" aria-hidden="true"></div> 4696 4697<div 4698 class="country-popup" 4699 id="pwraper" 4700 role="dialog" 4701 aria-modal="true" 4702 aria-labelledby="popup-messege-head" 4703 aria-describedby="popup-messege-body" 4704> 4705 <button class="country-popup__close" id="popup-close" type="button" aria-label="Close"> 4706 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="20" height="20" stroke-linecap="round"> 4707 <line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/> 4708 </svg> 4709 </button> 4710 4711 <img id="country-flag" class="country-popup__flag" src="" alt="" width="72" height="48" loading="lazy"> 4712 4713 <h2 class="country-popup__head" id="popup-messege-head"></h2> 4714 <p class="country-popup__body" id="popup-messege-body"></p> 4715 4716 <div class="country-popup__actions"> 4717 <a id="site-link" class="country-popup__cta" href="#" target="_blank" rel="noopener">Visit Global Store</a> 4718 <button id="popup-stay" class="country-popup__stay" type="button">Stay on US site</button> 4719 </div> 4720</div> 4721
4722<script src="//www.bushnellgolf.com/cdn/shop/t/133/assets/country-popup.js?v=150122749862362957461790611765" defer></script>
4722 4723<div id="shopify-block-AVjlXQmhCU0dqeWtte__13851707123811236908" class="shopify-block shopify-app-block">
4724<script> 4725 var Needle = window.Needle || {}; 4726 Object.defineProperty(Needle, 'scheme', { 4727 get: function() { return 'https'; }, 4728 set: function() {}, 4729 configurable: false 4730 }); 4731 window.Needle = Needle; 4732</script>
vendor: 1 bytes, line 4732
4732
4733<script 4734 async 4735 defer 4736 src="https://bushnell.needle.com/needle_service.js?ver=1" 4737></script>
4737 4738
4739<script> 4740(function() { 4741 var syncAttempts = 0; 4742 var MAX_ATTEMPTS = 30; 4743 4744 function isNeedleReady() { 4745 return typeof Needle !== 'undefined' && Needle.np; 4746 } 4747 4748 function getNeedleAttributes() { 4749 return { 4750 '_needlepin': Needle.np, 4751 '_needle_service': Needle.service, 4752 '_needle_version': Needle.version, 4753 '_needle_nps': Needle.nps || '' 4754 }; 4755 } 4756 4757 function isCartModifyUrl(url) { 4758 return url && (url.includes('/cart/add') || url.includes('/cart/change')); 4759 } 4760 4761 // Returns true on a 2xx response so callers can decide whether to retry. 4762 function syncToCartSync() { 4763 if (!isNeedleReady()) return false; 4764 var xhr = new XMLHttpRequest(); 4765 xhr.open('POST', '/cart/update.js', false); 4766 xhr.setRequestHeader('Content-Type', 'application/json'); 4767 xhr.send(JSON.stringify({ attributes: getNeedleAttributes() })); 4768 return xhr.status >= 200 && xhr.status < 300; 4769 } 4770 4771 function syncNeedlepinToCart() { 4772 syncAttempts++; 4773 if (isNeedleReady()) { 4774 fetch('/cart/update.js', { 4775 method: 'POST', 4776 headers: { 'Content-Type': 'application/json' }, 4777 body: JSON.stringify({ attributes: getNeedleAttributes() }) 4778 }); 4779 return; 4780 } 4781 if (syncAttempts < MAX_ATTEMPTS) { 4782 setTimeout(syncNeedlepinToCart, 500); 4783 } 4784 } 4785 4786 setTimeout(syncNeedlepinToCart, 300); 4787 4788 // Selector covers: 4789 // - .shopify-payment-button container (keyboard tab + Enter lands here) 4790 // - button/div descendants for pointer/touch activation 4791 // - [data-shopify="payment-button"] for headless/custom themes 4792 var EXPRESS_BTN_SELECTOR = [ 4793 '[name="buy_now"]', 4794 '.shopify-payment-button', 4795 '.shopify-payment-button button', 4796 '.shopify-payment-button__button', 4797 '[data-shopify="payment-button"]', 4798 '[data-shopify="payment-button"] button', 4799 '.dynamic-checkout__content button', 4800 '.dynamic-checkout__content [role="button"]' 4801 ].join(', '); 4802 4803 // Dedup timestamp. Only updated on confirmed XHR success so a failed sync 4804 // does not block immediate retry on the next event. 4805 var lastExpressSyncAt = 0; 4806 function maybeSyncExpress(target) { 4807 if (!isNeedleReady()) return; 4808 if (!target || !target.closest(EXPRESS_BTN_SELECTOR)) return; 4809 var now = Date.now(); 4810 if (now - lastExpressSyncAt < 500) return; 4811 if (syncToCartSync()) lastExpressSyncAt = Date.now(); 4812 } 4813 4814 // mousedown fires before click for pointer devices (mouse, trackpad, stylus). 4815 document.addEventListener('mousedown', function(e) { 4816 maybeSyncExpress(e.target); 4817 }, true); 4818 4819 // For touch: touchstart/touchmove track whether the gesture is a scroll; 4820 // touchend fires the sync only on confirmed taps (no significant move). 4821 // All three use passive: true â we never call preventDefault(). 4822 var _touchOnExpress = false; 4823 var _touchMoved = false; 4824 document.addEventListener('touchstart', function(e) { 4825 _touchMoved = false; 4826 _touchOnExpress = !!(e.target && e.target.closest(EXPRESS_BTN_SELECTOR)); 4827 }, { capture: true, passive: true }); 4828 document.addEventListener('touchmove', function() { 4829 _touchMoved = true; 4830 }, { capture: true, passive: true }); 4831 document.addEventListener('touchend', function(e) { 4832 if (_touchOnExpress && !_touchMoved) maybeSyncExpress(e.target); 4833 _touchOnExpress = false; 4834 _touchMoved = false; 4835 }, { capture: true, passive: true }); 4836 4837 var originalFetch = window.fetch; 4838 window.fetch = function(url) { 4839 var result = originalFetch.apply(this, arguments); 4840 if (typeof url === 'string' && isCartModifyUrl(url)) { 4841 result.then(function() { setTimeout(syncNeedlepinToCart, 100); }); 4842 } 4843 return result; 4844 }; 4845 4846 var originalXHROpen = XMLHttpRequest.prototype.open; 4847 XMLHttpRequest.prototype.open = function(method, url) { 4848 this._needleUrl = url; 4849 return originalXHROpen.apply(this, arguments); 4850 }; 4851 4852 var originalXHRSend = XMLHttpRequest.prototype.send; 4853 XMLHttpRequest.prototype.send = function() { 4854 var xhr = this; 4855 if (isCartModifyUrl(xhr._needleUrl)) { 4856 xhr.addEventListener('load', function() { setTimeout(syncNeedlepinToCart, 100); }); 4857 } 4858 return originalXHRSend.apply(this, arguments); 4859 }; 4860 4861 // pagehide fires only on true page unload (navigate away, tab close), 4862 // not on tab switches or screen lock. keepalive lets the request survive 4863 // after the document is torn down. 4864 window.addEventListener('pagehide', function() { 4865 if (!isNeedleReady()) return; 4866 fetch('/cart/update.js', { 4867 method: 'POST', 4868 headers: { 'Content-Type': 'application/json' }, 4869 body: JSON.stringify({ attributes: getNeedleAttributes() }), 4870 keepalive: true 4871 }).catch(function() {}); 4872 }); 4873 4874 document.addEventListener('submit', function(e) { 4875 var form = e.target; 4876 if (!form) return; 4877 var hasBuyNow = form.querySelector('[name="buy_now"]'); 4878 var isCartAction = form.action && (form.action.includes('/cart') || form.action.includes('/cart/add')); 4879 if (hasBuyNow || isCartAction) { 4880 if (isNeedleReady()) { 4881 syncToCartSync(); 4882 } else { 4883 setTimeout(syncNeedlepinToCart, 500); 4884 } 4885 } 4886 }, true); 4887 4888 document.addEventListener('click', function(e) { 4889 var addToCartBtn = e.target.closest('[name="add"], [data-add-to-cart], .add-to-cart, .product-form__submit'); 4890 if (addToCartBtn) { 4891 setTimeout(syncNeedlepinToCart, 500); 4892 return; 4893 } 4894 4895 var checkoutLink = e.target.closest('a[href*="/checkout"], a[href*="/cart"]'); 4896 if (checkoutLink && isNeedleReady()) { 4897 syncToCartSync(); 4898 return; 4899 } 4900 4901 // Catches keyboard (Enter/Space) activation of express checkout buttons. 4902 // maybeSyncExpress dedupes if mousedown/touchend already fired
4902within 500 ms. 4903 maybeSyncExpress(e.target); 4904 }, true); 4905})(); 4906</script>
4906 4907 4908 4909 4910</div>
4910<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
4910 4911</body> 4912</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.